diff --git a/abstractions/Makefile b/abstractions/Makefile index b85a753079ff4424e9e1596aa54ccd5c7ec99f68..32d35c025a7d082e6f8f13499355ff441a583385 100644 --- a/abstractions/Makefile +++ b/abstractions/Makefile @@ -379,33 +379,6 @@ pd-wavelet_install: $(DESTDIR)$(readmesdir)/$(PDWAVELET_NAME).txt -#==============================================================================# -# -# DEVELOPER'S TARGETS -# -#==============================================================================# - -# make the symlinks necessary to simulate the installed environment -devsymlinks: -# make symlinks for help patches - test -e $(abstractions_src)/../2.control.examples || \ - ln -s $(pd_src)/doc/2.control.examples \ - $(abstractions_src)/../2.control.examples - test -e $(abstractions_src)/../3.audio.examples || \ - ln -s $(pd_src)/doc/3.audio.examples \ - $(abstractions_src)/../3.audio.examples -# pd <= 0.38-4 has 4.fft.examples - test -e $(abstractions_src)/../4.fft.examples || \ - ln -s $(pd_src)/doc/4.fft.examples $(abstractions_src)/../4.fft.examples -# pd > 0.38-4 has 4.data.structures - test -e $(abstractions_src)/../4.data.structures || \ - ln -s $(pd_src)/doc/4.data.structures \ - $(abstractions_src)/../4.data.structures - test -e $(abstractions_src)/../7.stuff || \ - ln -s $(pd_src)/doc/7.stuff $(abstractions_src)/../7.stuff - test -e $(abstractions_src)/../sound || \ - ln -s $(pd_src)/doc/sound $(abstractions_src)/../sound - #==============================================================================# # # CLEAN TARGETS diff --git a/doc/Makefile b/doc/Makefile index 8035e521edb38cd02f869b9fcf01d4bc5f8a3841..2b09e75d43b43948c2efb8722bbc6f4732306d10 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -235,32 +235,6 @@ tutorials_clean: -rmdir -- $(DESTDIR)$(manualsdir)/4.Physical -#==============================================================================# -# -# DEVELOPER'S TARGETS -# -#==============================================================================# - -# make the symlinks necessary to simulate the installed environment -devsymlinks: - test -e $(doc_src)/2.control.examples || \ - ln -sf $(pd_src)/doc/2.control.examples $(doc_src)/2.control.examples - test -e $(doc_src)/3.audio.examples || \ - ln -sf $(pd_src)/doc/3.audio.examples $(doc_src)/3.audio.examples -# pd <= 0.38-4 has 4.fft.examples - test -e $(doc_src)/4.fft.examples || \ - ln -sf $(pd_src)/doc/4.fft.examples $(doc_src)/4.fft.examples -# pd > 0.38-4 has 4.data.structures - test -e $(doc_src)/4.data.structures || \ - ln -sf $(pd_src)/doc/4.data.structures $(doc_src)/4.data.structures - test -e $(doc_src)/7.stuff || \ - ln -sf $(pd_src)/doc/7.stuff $(doc_src)/7.stuff - test -e $(doc_src)/sound || \ - ln -sf $(pd_src)/doc/sound $(doc_src)/sound -# put the pddp support objects in the path - test -e $(doc_src)/pddp/pddp || \ - ln -sf $(externals_src)/pddp $(doc_src)/pddp/pddp - #==============================================================================# # # CLEAN TARGETS diff --git a/externals/Makefile b/externals/Makefile index 26f1cbf5f66c976c41320aef951a45d2f75251c7..01eb4672cb8357c8be607e44bbf3c95efe413ecb 100644 --- a/externals/Makefile +++ b/externals/Makefile @@ -2379,9 +2379,6 @@ earplug_clean: # #==============================================================================# -# make the symlinks necessary to simulate the installed environment -devsymlinks: - TAGS: etags etags: diff --git a/packages/Makefile b/packages/Makefile index de8d933ff37f9f4f2cd72ccb30fdf42096b7d020..775420ca3f57ca631cffc6e14c1eeb8c749fbcb1 100644 --- a/packages/Makefile +++ b/packages/Makefile @@ -220,10 +220,6 @@ noncvs_install: -install -p $(packages_src)/noncvs/$(OS_NAME)/bin/*.* $(DESTDIR)$(bindir) -install -p $(packages_src)/noncvs/$(OS_NAME)/doc/5.reference/*.* $(DESTDIR)$(helpdir) -install -p $(packages_src)/noncvs/$(OS_NAME)/extra/*.* $(DESTDIR)$(objectsdir) - -test -d $(packages_src)/noncvs/$(OS_NAME)/gripd && \ - install -d $(DESTDIR)$(prefix)/gripd - -install -p $(packages_src)/noncvs/$(OS_NAME)/gripd/*.* \ - $(DESTDIR)$(prefix)/gripd #==============================================================================# @@ -380,94 +376,6 @@ doc_format: -find $(DESTDIR) -name .svn -print0 | xargs -0 rm -rf -#==============================================================================# -# -# DEVELOPER TARGETS -# -#==============================================================================# - -devsymlinks: devsymlinks_$(OS_NAME) - - - -devsymlinks_windows: - - -devsymlinks_linux: - - -TCLTK_VERSION=8.4 -devsymlinks_darwin: devsymlinks_clean -# this makes /usr/local symlinks to the Tcl/Tk frameworks so that ./configure -# can find them. -# headers - test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tcl.h && \ - sudo ln -s \ - /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tcl.h \ - /usr/local/include/tcl.h - test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclDecls.h && \ - sudo ln -s \ - /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclDecls.h \ - /usr/local/include/tclDecls.h - test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclPlatDecls.h && \ - sudo ln -s \ - /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclPlatDecls.h \ - /usr/local/include/tclPlatDecls.h -# libs - test -e /Library/Frameworks/Tcl.framework/tclConfig.sh && \ - sudo ln -s /Library/Frameworks/Tcl.framework/tclConfig.sh /usr/local/lib - test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Tcl && \ - sudo ln -s \ - /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Tcl \ - /usr/local/lib/libtcl$(TCLTK_VERSION).dylib - test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/libtclstub$(TCLTK_VERSION).a && \ - sudo ln -s \ - /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/libtclstub$(TCLTK_VERSION).a \ - /usr/local/lib/libtclstub$(TCLTK_VERSION).a - test -e /usr/local/lib/libtcl$(TCLTK_VERSION).dylib && \ - sudo ln -s /usr/local/lib/libtcl$(TCLTK_VERSION).dylib /usr/local/lib/libtcl.dylib -# headers - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tk.h && \ - sudo ln -s \ - /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tk.h \ - /usr/local/include/tk.h - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkDecls.h && \ - sudo ln -s \ - /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkDecls.h \ - /usr/local/include/tkDecls.h - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkIntXlibDecls.h && \ - sudo ln -s \ - /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkIntXlibDecls.h \ - /usr/local/include/tkIntXlibDecls.h - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkMacOSX.h && \ - sudo ln -s \ - /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkMacOSX.h \ - /usr/local/include/tkMacOSX.h - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkPlatDecls.h && \ - sudo ln -s \ - /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkPlatDecls.h \ - /usr/local/include/tkPlatDecls.h -# libs - test -e /Library/Frameworks/Tk.framework/tkConfig.sh && \ - sudo ln -s /Library/Frameworks/Tk.framework/tkConfig.sh /usr/local/lib - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Tk && \ - sudo ln -s /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Tk \ - /usr/local/lib/libtk$(TCLTK_VERSION).dylib - test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/libtkstub$(TCLTK_VERSION).a && \ - sudo ln -s \ - /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/libtkstub$(TCLTK_VERSION).a \ - /usr/local/lib/libtkstub$(TCLTK_VERSION).a - test -e /usr/local/lib/libtk$(TCLTK_VERSION).dylib && \ - sudo ln -s /usr/local/lib/libtk$(TCLTK_VERSION).dylib /usr/local/lib/libtk.dylib - - - -devsymlinks_clean: - -sudo rm -f /usr/local/include/tcl*.h /usr/local/include/tk*.h - -sudo rm -f /usr/local/lib/tclConfig.sh /usr/local/lib/tkConfig.sh - -sudo rm -f /usr/local/lib/libtcl*.dylib /usr/local/lib/libtk*.dylib - -sudo rm -f /usr/local/lib/libtclstub*.a /usr/local/lib/libtkstub*.a - # AG: The set_version target is broken since it modifies m_pd.h in-place # during the build, which is a bad thing to do to files which are supposed to # be kept in a source code repository. Instead, we create s_stuff.h from @@ -494,93 +402,6 @@ unset_version: mv m_pd.h.tmp m_pd.h -patch_pd: - @echo pd_src $(pd_src) -# apply all platform-neutral patches - for patch in $(shell ls -1 $(CWD)/patches/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 < $$patch; \ - done -# apply all platform-specific patches (is broken on MINGW/Windows) -ifneq ($(OS_NAME),windows) - for patch in $(shell ls -1 $(CWD)/patches/$(OS_NAME)/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 < $$patch; \ - done -endif - -rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile - @echo " " - @echo "patching completed." - - -unpatch_pd: -# apply all platform-specific patches (is broken on MINGW/Windows) -ifneq ($(OS_NAME),windows) - for patch in $(shell ls -1r $(CWD)/patches/$(OS_NAME)/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 -R < $$patch; \ - done -endif -# apply all platform-neutral patches - for patch in $(shell ls -1r $(CWD)/patches/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 -R < $$patch; \ - done - -rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile \ - $(pd_src)/src/makefile.dependencies - @echo " " - @echo "unpatching completed." - - -patch: patch_pd set_version - -unpatch: unset_version unpatch_pd - - - -patch_pd_devel: - @echo pd_src $(pd_src) -# apply all platform-neutral patches - for patch in $(shell ls -1 $(CWD)/patches/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 < $$patch; \ - done -# apply all platform-specific patches - for patch in $(shell ls -1 $(CWD)/patches/$(OS_NAME)/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 < $$patch; \ - done - -rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile -# change Pd's version number to reflect the extended build -# this needs the complete_version_defines patch to work - cd $(pd_src)/src/ && \ - sed 's|^\(#define PD_TEST_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' m_pd.h > \ - m_pd.h.tmp && mv m_pd.h.tmp m_pd.h - @echo " " - @echo "patching completed." - - -unpatch_pd_devel: -# change the version number back to the original -# this needs the complete_version_defines patch to work - cd $(pd_src)/src && \ - sed 's|^\(#define PD_TEST_VERSION ".*\)$(PD_BUILD_VERSION)"|\1"|' \ - m_pd.h > m_pd.h.tmp && \ - mv m_pd.h.tmp m_pd.h -# apply all platform-specific patches - for patch in $(shell ls -1r $(CWD)/patches/$(OS_NAME)/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 -R < $$patch; \ - done -# apply all platform-neutral patches - for patch in $(shell ls -1r $(CWD)/patches/*.patch); do \ - echo "Applying $$patch"; \ - cd $(pd_src)/src/ && patch -p0 -R < $$patch; \ - done - -rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile - @echo " " - @echo "unpatching completed." - #==============================================================================# # # CLEAN TARGETS diff --git a/packages/linux_make/Makefile b/packages/linux_make/Makefile index 5b9cf1ff67bec595d1d8f0d9f28d6ee576836346..f47e205d30b1b3014e7b6e6dd2af85270596da0e 100644 --- a/packages/linux_make/Makefile +++ b/packages/linux_make/Makefile @@ -142,7 +142,6 @@ debstage: $(bindir) $(DESTDIR)/usr/share/emacs/site-lisp/ # Pd-related scripts #install -p $(scripts_src)/pd-diff $(DESTDIR)$(bindir) - #install -p $(scripts_src)/config-switcher.sh $(DESTDIR)$(bindir) deb: DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH) deb: DEB_PD_VERSION := $(shell echo $(PD_VERSION) | sed 's|\(.*\)-l2ork-\(.*\)|\1-\2|') diff --git a/packages/linux_make/debian/control b/packages/linux_make/debian/control index edd128f2f5505ca37f31a1ef482be3f5d21a12c3..eb6ca665652a5e42f65aca033542f961171d1741 100644 --- a/packages/linux_make/debian/control +++ b/packages/linux_make/debian/control @@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu> Homepage: http://l2ork.music.vt.edu Package: pd-l2ork Architecture: i386 -Depends: libc6, xterm | x-terminal-emulator, tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew-dev, libmagick++-dev, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, libstk0-dev, libsndobj-dev, libfluidsynth-dev, tclxapian, fluid-soundfont-gm, python-tk, byacc +Depends: libc6, xterm | x-terminal-emulator, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, libflite1, libgsm1, libxv1, fluid-soundfont-gm, byacc Provides: pd-l2ork Installed-Size: 90624 -Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 +Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 Conflicts: Replaces: pd-l2ork Description: Interactive multimedia programming environment diff --git a/packages/linux_make/debian/control.desktop b/packages/linux_make/debian/control.desktop index edd128f2f5505ca37f31a1ef482be3f5d21a12c3..eb6ca665652a5e42f65aca033542f961171d1741 100644 --- a/packages/linux_make/debian/control.desktop +++ b/packages/linux_make/debian/control.desktop @@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu> Homepage: http://l2ork.music.vt.edu Package: pd-l2ork Architecture: i386 -Depends: libc6, xterm | x-terminal-emulator, tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew-dev, libmagick++-dev, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, libstk0-dev, libsndobj-dev, libfluidsynth-dev, tclxapian, fluid-soundfont-gm, python-tk, byacc +Depends: libc6, xterm | x-terminal-emulator, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, libflite1, libgsm1, libxv1, fluid-soundfont-gm, byacc Provides: pd-l2ork Installed-Size: 90624 -Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 +Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 Conflicts: Replaces: pd-l2ork Description: Interactive multimedia programming environment diff --git a/packages/linux_make/debian/control.raspbian b/packages/linux_make/debian/control.raspbian index 58dcd8b0c43624f90a33f1f28c46f6fb8d5b432c..b758c52de69cc1750dec551450fc09dcc80c7894 100644 --- a/packages/linux_make/debian/control.raspbian +++ b/packages/linux_make/debian/control.raspbian @@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu> Homepage: http://l2ork.music.vt.edu Package: pd-l2ork Architecture: i386 -Depends: xterm | x-terminal-emulator, tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, libstk0-dev, libsndobj-dev, libfluidsynth-dev, tclxapian, fluid-soundfont-gm, python-tk, byacc +Depends: xterm | x-terminal-emulator, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, fluid-soundfont-gm, byacc Provides: pd-l2ork Installed-Size: 90624 -Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 +Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 Conflicts: Replaces: pd-l2ork Description: Interactive multimedia programming environment diff --git a/packages/linux_make/debian/control.ubuntu b/packages/linux_make/debian/control.ubuntu index 3ef3c4c438942dde0829c905ba5906bb95df6a1d..b203e170b31b2e312758f97e98d742b577902201 100644 --- a/packages/linux_make/debian/control.ubuntu +++ b/packages/linux_make/debian/control.ubuntu @@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu> Homepage: http://l2ork.music.vt.edu Package: pd-l2ork Architecture: i386 -Depends: xterm | x-terminal-emulator, libc6 (>= 2.1.5), tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew1.5, libmagick++4, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1 +Depends: xterm | x-terminal-emulator, libc6 (>= 2.1.5), libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew1.5, libmagick++4, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, libflite1, libgsm1 Provides: pd-l2ork Installed-Size: 90624 -Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 +Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2 Conflicts: pd-l2ork, puredata, pd-extended, puredata-utils, puredata-extra, gem, puredata-core, puredata-gui, puredata-doc Replaces: pd-l2ork Description: Interactive multimedia programming environment diff --git a/packages/patches/add_string_support.patch b/packages/patches/add_string_support.patch deleted file mode 100644 index 80988458d9c986b58773dba96b4d82f4c402fa91..0000000000000000000000000000000000000000 --- a/packages/patches/add_string_support.patch +++ /dev/null @@ -1,444 +0,0 @@ -Index: pd/src/g_text.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_text.c,v -retrieving revision 1.15 -diff -u -w -r1.15 g_text.c ---- g_text.c 4 Oct 2006 19:35:06 -0000 1.15 -+++ g_text.c 12 Feb 2007 03:45:43 -0000 -@@ -276,6 +276,11 @@ - outlet_symbol(x->mr_outlet, s); - } - -+static void messresponder_blob(t_messresponder *x, t_blob *st) -+{ /* MP 20070107 blob type */ -+ outlet_blob(x->mr_outlet, st); -+} -+ - static void messresponder_list(t_messresponder *x, - t_symbol *s, int argc, t_atom *argv) - { -@@ -307,6 +312,13 @@ - binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at); - } - -+static void message_blob(t_message *x, t_blob *st) -+{ -+ t_atom at; -+ SETBLOB(&at, st); -+ binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at); -+} -+ - static void message_list(t_message *x, t_symbol *s, int argc, t_atom *argv) - { - binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, argc, argv); -@@ -1333,6 +1345,7 @@ - class_addbang(message_class, message_bang); - class_addfloat(message_class, message_float); - class_addsymbol(message_class, message_symbol); -+ class_addblob(message_class, message_blob); - class_addlist(message_class, message_list); - class_addanything(message_class, message_list); - -Index: pd/src/m_atom.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_atom.c,v -retrieving revision 1.4 -diff -u -w -r1.4 m_atom.c ---- m_atom.c 11 Aug 2006 20:09:07 -0000 1.4 -+++ m_atom.c 12 Feb 2007 03:45:43 -0000 -@@ -28,6 +28,14 @@ - else return (&s_float); - } - -+t_blob *atom_getblob(t_atom *a) /* MP 20070108 */ -+{ -+ static unsigned char c = 0;/* a default blob to avoid null pointers. This should be somewhere else...? */ -+ static t_blob st = {1L, &c}; -+ if (a->a_type == A_BLOB) return (a->a_w.w_blob); -+ else return (&st); -+} -+ - t_symbol *atom_gensym(t_atom *a) /* this works better for graph labels */ - { - char buf[30]; -Index: pd/src/m_binbuf.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_binbuf.c,v -retrieving revision 1.13 -diff -u -w -r1.13 m_binbuf.c ---- m_binbuf.c 4 Oct 2006 19:35:06 -0000 1.13 -+++ m_binbuf.c 12 Feb 2007 03:45:44 -0000 -@@ -672,6 +672,10 @@ - case A_SYMBOL: - typedmess(target, stackwas->a_w.w_symbol, nargs-1, stackwas+1); - break; -+ case A_BLOB: /* MP 20070106 blob type */ -+ if (nargs == 1) pd_blob(target, stackwas->a_w.w_blob); -+ else pd_list(target, 0, nargs, stackwas); -+ break; - case A_FLOAT: - if (nargs == 1) pd_float(target, stackwas->a_w.w_float); - else pd_list(target, 0, nargs, stackwas); -Index: pd/src/m_class.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_class.c,v -retrieving revision 1.7 -diff -u -w -r1.7 m_class.c ---- m_class.c 15 Aug 2006 04:54:15 -0000 1.7 -+++ m_class.c 12 Feb 2007 03:45:44 -0000 -@@ -20,6 +20,7 @@ - - static t_symbol *class_loadsym; /* name under which an extern is invoked */ - static void pd_defaultfloat(t_pd *x, t_float f); -+static void pd_defaultblob(t_pd *x, t_blob *st); /* MP20061226 blob type */ - static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv); - t_pd pd_objectmaker; /* factory for creating "object" boxes */ - t_pd pd_canvasmaker; /* factory for creating canvases */ -@@ -38,6 +39,11 @@ - else (*(*x)->c_anymethod)(x, &s_bang, 0, 0); - } - -+static void pd_defaultblob(t_pd *x, t_blob *st) /* MP 20061226 blob type */ -+{ /* for now just reject it, later convert to symbol/float/list */ -+ pd_error(x, "%s: no method for blob so far...", (*x)->c_name->s_name); -+} -+ - static void pd_defaultpointer(t_pd *x, t_gpointer *gp) - { - if (*(*x)->c_listmethod != pd_defaultlist) -@@ -205,6 +211,7 @@ - c->c_pointermethod = pd_defaultpointer; - c->c_floatmethod = pd_defaultfloat; - c->c_symbolmethod = pd_defaultsymbol; -+ c->c_blobmethod = pd_defaultblob; /* MP 20061226 blob type */ - c->c_listmethod = pd_defaultlist; - c->c_anymethod = pd_defaultanything; - c->c_wb = (typeflag == CLASS_PATCHABLE ? &text_widgetbehavior : 0); -@@ -288,6 +295,12 @@ - if (argtype != A_SYMBOL || va_arg(ap, t_atomtype)) goto phooey; - class_addsymbol(c, fn); - } -+ else if (sel == &s_blob) /* MP 20070106 blob type */ -+ { -+ post("class_addmethod: %p", fn); -+ if (argtype != A_BLOB || va_arg(ap, t_atomtype)) goto phooey; -+ class_addblob(c, fn); -+ } - else if (sel == &s_list) - { - if (argtype != A_GIMME) goto phooey; -@@ -346,6 +359,11 @@ - c->c_symbolmethod = (t_symbolmethod)fn; - } - -+void class_addblob(t_class *c, t_method fn) /* MP 20061226 blob type */ -+{ -+ c->c_blobmethod = (t_blobmethod)fn; -+} -+ - void class_addlist(t_class *c, t_method fn) - { - c->c_listmethod = (t_listmethod)fn; -@@ -564,9 +582,10 @@ - t_symbol s_x = {"x", 0, 0}; - t_symbol s_y = {"y", 0, 0}; - t_symbol s_ = {"", 0, 0}; -+t_symbol s_blob = {"blob", 0, 0}; /* MP 20061223 blob type */ - - static t_symbol *symlist[] = { &s_pointer, &s_float, &s_symbol, &s_bang, -- &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_}; -+ &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_, &s_blob}; /* MP 20061223 added s_blob */ - - void mess_init(void) - { -@@ -654,6 +673,13 @@ - (*c->c_symbolmethod)(x, &s_); - return; - } -+ if (s == &s_blob) /* MP 20061226 blob type */ -+ { -+ /*post("pd_typedmess argc = %d\n", argc);*//* MP 20061226 debug */ -+ if (argc == 1) (*c->c_blobmethod)(x, argv->a_w.w_blob); -+ else goto badarg; -+ return; -+ } - for (i = c->c_nmethod, m = c->c_methods; i--; m++) - if (m->me_name == s) - { -@@ -698,6 +724,19 @@ - } - dp++; - break; -+ case A_BLOB:/* MP 20070106 blob type */ -+ /*post("pd_typedmess A_BLOB");*/ -+ if (!argc) goto badarg; -+ if (argv->a_type == A_BLOB) -+ { -+ /*post("argv->a_type == A_BLOB, argc = %d, narg= %d", argc, narg);*/ -+ *ap = (t_int)(argv->a_w.w_blob); -+ } -+ argc--; -+ argv++; -+ narg++; -+ ap++; -+ break; - case A_SYMBOL: - if (!argc) goto badarg; - case A_DEFSYM: -@@ -772,6 +811,10 @@ - { - case 'f': SETFLOAT(at, va_arg(ap, double)); break; - case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break; -+ case 't': -+ SETBLOB(at, va_arg(ap, t_blob *)); -+ /*post("pd_vmess: arg[0].a_w.w_blob = %p", arg[0].a_w.w_blob);*/ -+ break; /* MP 20061226 blob type */ - case 'i': SETFLOAT(at, va_arg(ap, t_int)); break; - case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break; - default: goto done; -Index: pd/src/m_imp.h -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_imp.h,v -retrieving revision 1.4 -diff -u -w -r1.4 m_imp.h ---- m_imp.h 19 Aug 2005 23:28:03 -0000 1.4 -+++ m_imp.h 12 Feb 2007 03:45:44 -0000 -@@ -25,6 +25,7 @@ - typedef void (*t_pointermethod)(t_pd *x, t_gpointer *gp); - typedef void (*t_floatmethod)(t_pd *x, t_float f); - typedef void (*t_symbolmethod)(t_pd *x, t_symbol *s); -+typedef void (*t_blobmethod)(t_pd *x, t_blob *st); /* MP20061226 blob type */ - typedef void (*t_listmethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv); - typedef void (*t_anymethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv); - -@@ -41,6 +42,7 @@ - t_pointermethod c_pointermethod; - t_floatmethod c_floatmethod; - t_symbolmethod c_symbolmethod; -+ t_blobmethod c_blobmethod; /* MP20061226 blob type */ - t_listmethod c_listmethod; - t_anymethod c_anymethod; - struct _widgetbehavior *c_wb; /* "gobjs" only */ -Index: pd/src/m_obj.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_obj.c,v -retrieving revision 1.4 -diff -u -w -r1.4 m_obj.c ---- m_obj.c 18 May 2005 04:28:51 -0000 1.4 -+++ m_obj.c 12 Feb 2007 03:45:44 -0000 -@@ -15,6 +15,7 @@ - t_gpointer *iu_pointerslot; - t_float *iu_floatslot; - t_symbol **iu_symslot; -+ t_blob **iu_blobslot; /* MP 20061226 blob type */ - t_sample iu_floatsignalvalue; - }; - -@@ -32,9 +33,10 @@ - #define i_pointerslot i_un.iu_pointerslot - #define i_floatslot i_un.iu_floatslot - #define i_symslot i_un.iu_symslot -+#define i_blobslot i_un.iu_blobslot /* MP 20061226 blob type */ - - static t_class *inlet_class, *pointerinlet_class, *floatinlet_class, -- *symbolinlet_class; -+ *symbolinlet_class, *blobinlet_class; /* MP 20061226 added blobinlet_class */ - - #define ISINLET(pd) ((*(pd) == inlet_class) || \ - (*(pd) == pointerinlet_class) || \ -@@ -111,6 +113,26 @@ - else inlet_wrong(x, &s_symbol); - } - -+static void inlet_blob(t_inlet *x, t_blob *st) /* MP20061226 blob type */ -+{ -+ /*post("inlet_blob (%p): st %p", &inlet_blob, st);*/ -+ if (x->i_symfrom == &s_blob) -+ { -+ /*post("inlet_blob calling pd_vmess");*/ -+ pd_vmess(x->i_dest, x->i_symto, "t", st); -+ } -+ else if (!x->i_symfrom) -+ { -+ /*post("inlet_blob calling pd_blob");*/ -+ pd_blob(x->i_dest, st); -+ } -+ else -+ { -+ /*post("inlet_blob calling inlet_wrong");*/ -+ inlet_wrong(x, &s_blob); -+ } -+} -+ - static void inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv) - { - t_atom at; -@@ -192,6 +214,23 @@ - return (x); - } - -+t_inlet *blobinlet_new(t_object *owner, t_blob **stp) /* MP 20061226 blob type */ -+{ -+ t_inlet *x = (t_inlet *)pd_new(blobinlet_class), *y, *y2; -+ x->i_owner = owner; -+ x->i_dest = 0; -+ x->i_symfrom = &s_blob; -+ x->i_blobslot = stp; -+ x->i_next = 0; -+ if (y = owner->ob_inlet) -+ { -+ while (y2 = y->i_next) y = y2; -+ y->i_next = x; -+ } -+ else owner->ob_inlet = x; -+ return (x); -+} -+ - static void symbolinlet_symbol(t_inlet *x, t_symbol *s) - { - *(x->i_symslot) = s; -@@ -244,6 +283,7 @@ - class_addpointer(inlet_class, inlet_pointer); - class_addfloat(inlet_class, inlet_float); - class_addsymbol(inlet_class, inlet_symbol); -+ class_addblob(inlet_class, inlet_blob); /* MP 20061226 blob type */ - class_addlist(inlet_class, inlet_list); - class_addanything(inlet_class, inlet_anything); - -@@ -366,6 +406,18 @@ - --stackcount; - } - -+void outlet_blob(t_outlet *x, t_blob *st) /* MP 20061226 blob type */ -+{ -+ /*post("outlet_blob %p %lu", st, st->s_length);*/ -+ t_outconnect *oc; -+ if(++stackcount >= STACKITER) -+ outlet_stackerror(x); -+ else -+ for (oc = x->o_connections; oc; oc = oc->oc_next) -+ pd_blob(oc->oc_to, st); -+ --stackcount; -+} -+ - void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv) - { - t_outconnect *oc; -Index: pd/src/m_pd.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_pd.c,v -retrieving revision 1.4 -diff -u -w -r1.4 m_pd.c ---- m_pd.c 28 Nov 2004 21:20:42 -0000 1.4 -+++ m_pd.c 12 Feb 2007 03:45:44 -0000 -@@ -284,6 +284,12 @@ - (*(*x)->c_symbolmethod)(x, s); - } - -+void pd_blob(t_pd *x, t_blob *st) /* MP20061226 blob type */ -+{ -+ /*post("pd_blob: st %p length %lu (*x)->c_blobmethod %p", st, st->s_length, (*x)->c_blobmethod);*/ -+ (*(*x)->c_blobmethod)(x, st); -+} -+ - void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv) - { - (*(*x)->c_listmethod)(x, &s_list, argc, argv); -Index: pd/src/m_pd.h -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v -retrieving revision 1.17 -diff -u -w -r1.17 m_pd.h ---- m_pd.h 22 Oct 2006 21:46:11 -0000 1.17 -+++ m_pd.h 12 Feb 2007 03:45:44 -0000 -@@ -102,6 +102,16 @@ - t_gstub *gp_stub; /* stub which points to glist/array */ - } t_gpointer; - -+#define PD_BLOBS 1 /* MP20070211 Use this to test for blob capability */ -+/* MP20061223 blob type: */ -+typedef struct _blob /* pointer to a blob */ -+{ -+ unsigned long s_length; /* length of blob in bytes */ -+ unsigned char *s_data; /* pointer to 1st byte of blob */ -+} t_blob; -+/* ...MP20061223 blob type */ -+ -+ - typedef union word - { - t_float w_float; -@@ -110,6 +120,7 @@ - t_array *w_array; - struct _glist *w_list; - int w_index; -+ t_blob *w_blob; /* MP20061223 blob type */ - } t_word; - - typedef enum -@@ -125,7 +136,8 @@ - A_DOLLAR, - A_DOLLSYM, - A_GIMME, -- A_CANT -+ A_CANT, -+ A_BLOB /* MP20061223 blob type */ - } t_atomtype; - - #define A_DEFSYMBOL A_DEFSYM /* better name for this */ -@@ -212,6 +224,7 @@ - EXTERN t_symbol s_pointer; - EXTERN t_symbol s_float; - EXTERN t_symbol s_symbol; -+EXTERN t_symbol s_blob; - EXTERN t_symbol s_bang; - EXTERN t_symbol s_list; - EXTERN t_symbol s_anything; -@@ -255,6 +268,7 @@ - #define SETFLOAT(atom, f) ((atom)->a_type = A_FLOAT, (atom)->a_w.w_float = (f)) - #define SETSYMBOL(atom, s) ((atom)->a_type = A_SYMBOL, \ - (atom)->a_w.w_symbol = (s)) -+#define SETBLOB(atom, st) ((atom)->a_type = A_BLOB, (atom)->a_w.w_blob = (st)) /* MP 20061226 blob type */ - #define SETDOLLAR(atom, n) ((atom)->a_type = A_DOLLAR, \ - (atom)->a_w.w_index = (n)) - #define SETDOLLSYM(atom, s) ((atom)->a_type = A_DOLLSYM, \ -@@ -263,6 +277,7 @@ - EXTERN t_float atom_getfloat(t_atom *a); - EXTERN t_int atom_getint(t_atom *a); - EXTERN t_symbol *atom_getsymbol(t_atom *a); -+EXTERN t_blob *atom_getblob(t_atom *a);/* MP 20070108 blob type */ - EXTERN t_symbol *atom_gensym(t_atom *a); - EXTERN t_float atom_getfloatarg(int which, int argc, t_atom *argv); - EXTERN t_int atom_getintarg(int which, int argc, t_atom *argv); -@@ -326,6 +341,7 @@ - EXTERN void pd_pointer(t_pd *x, t_gpointer *gp); - EXTERN void pd_float(t_pd *x, t_float f); - EXTERN void pd_symbol(t_pd *x, t_symbol *s); -+EXTERN void pd_blob(t_pd *x, t_blob *st); /* MP 20061226 blob type */ - EXTERN void pd_list(t_pd *x, t_symbol *s, int argc, t_atom *argv); - EXTERN void pd_anything(t_pd *x, t_symbol *s, int argc, t_atom *argv); - #define pd_class(x) (*(x)) -@@ -350,6 +366,7 @@ - EXTERN void outlet_pointer(t_outlet *x, t_gpointer *gp); - EXTERN void outlet_float(t_outlet *x, t_float f); - EXTERN void outlet_symbol(t_outlet *x, t_symbol *s); -+EXTERN void outlet_blob(t_outlet *x, t_blob *st); /* MP 20061226 blob type */ - EXTERN void outlet_list(t_outlet *x, t_symbol *s, int argc, t_atom *argv); - EXTERN void outlet_anything(t_outlet *x, t_symbol *s, int argc, t_atom *argv); - EXTERN t_symbol *outlet_getsymbol(t_outlet *x); -@@ -404,6 +421,7 @@ - EXTERN void class_addpointer(t_class *c, t_method fn); - EXTERN void class_doaddfloat(t_class *c, t_method fn); - EXTERN void class_addsymbol(t_class *c, t_method fn); -+EXTERN void class_addblob(t_class *c, t_method fn);/* MP 20061226 blob type */ - EXTERN void class_addlist(t_class *c, t_method fn); - EXTERN void class_addanything(t_class *c, t_method fn); - EXTERN void class_sethelpsymbol(t_class *c, t_symbol *s); -@@ -432,6 +450,7 @@ - #define class_addpointer(x, y) class_addpointer((x), (t_method)(y)) - #define class_addfloat(x, y) class_doaddfloat((x), (t_method)(y)) - #define class_addsymbol(x, y) class_addsymbol((x), (t_method)(y)) -+#define class_addblob(x, y) class_addblob((x), (t_method)(y)) /* MP20061226 blob type */ - #define class_addlist(x, y) class_addlist((x), (t_method)(y)) - #define class_addanything(x, y) class_addanything((x), (t_method)(y)) - #endif diff --git a/packages/patches/arrow_keys_update_scrollbars-0.40.3.patch b/packages/patches/arrow_keys_update_scrollbars-0.40.3.patch deleted file mode 100644 index ad9ad44c2e500d7b2f751ec68dacdb01dfd21fe8..0000000000000000000000000000000000000000 --- a/packages/patches/arrow_keys_update_scrollbars-0.40.3.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: g_editor.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v -retrieving revision 1.20.6.3 -diff -u -w -r1.20.6.3 g_editor.c ---- g_editor.c 9 Nov 2007 06:28:44 -0000 1.20.6.3 -+++ g_editor.c 26 Nov 2007 22:51:05 -0000 -@@ -1420,8 +1420,6 @@ - gobj_activate(x->gl_editor->e_selection->sel_what, - x, 1); - } -- if (x->gl_editor->e_onmotion != MA_NONE) -- sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); - - x->gl_editor->e_onmotion = MA_NONE; - } -@@ -1446,6 +1444,7 @@ - } - if (resortin) canvas_resortinlets(x); - if (resortout) canvas_resortoutlets(x); -+ sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); - canvas_dirty(x, 1); - } - diff --git a/packages/patches/closeinitbang-0.40-0test03.patch b/packages/patches/closeinitbang-0.40-0test03.patch deleted file mode 100644 index 684b315f49ccd1ea264aa23fbdfb3697c0c7324e..0000000000000000000000000000000000000000 --- a/packages/patches/closeinitbang-0.40-0test03.patch +++ /dev/null @@ -1,186 +0,0 @@ -diff -Naur src.org/g_canvas.c src/g_canvas.c ---- g_canvas.c 2006-08-15 21:50:14.000000000 +0200 -+++ g_canvas.c 2006-08-22 16:19:17.000000000 +0200 -@@ -1040,6 +1040,52 @@ - canvas_loadbangabstractions(x); - canvas_loadbangsubpatches(x); - } -+/* JMZ: -+ * initbang is emitted after the canvas is done, but before the parent canvas is done -+ * therefore, initbangs cannot reach to the outlets -+ */ -+void canvas_initbang(t_canvas *x) -+{ -+ t_gobj *y; -+ t_symbol *s = gensym("initbang"); -+ /* run "initbang" for all subpatches, but NOT for the child abstractions */ -+ for (y = x->gl_list; y; y = y->g_next) -+ if (pd_class(&y->g_pd) == canvas_class) -+ { -+ if (!canvas_isabstraction((t_canvas *)y)) -+ canvas_initbang((t_canvas *)y); -+ } -+ -+ /* call the initbang()-method for objects that have one */ -+ for (y = x->gl_list; y; y = y->g_next) -+ { -+ if ((pd_class(&y->g_pd) != canvas_class) && zgetfn(&y->g_pd, s)) -+ { -+ pd_vmess(&y->g_pd, s, ""); -+ } -+ } -+} -+/* JMZ: -+ * closebang is emitted before the canvas is destroyed -+ * and BEFORE subpatches/abstractions in this canvas are destroyed -+ */ -+void canvas_closebang(t_canvas *x) -+{ -+ t_gobj *y; -+ t_symbol *s = gensym("closebang"); -+ -+ /* call the closebang()-method for objects that have one -+ * but NOT for subpatches/abstractions: these are called separately -+ * from g_graph:glist_delete() -+ */ -+ for (y = x->gl_list; y; y = y->g_next) -+ { -+ if ((pd_class(&y->g_pd) != canvas_class) && zgetfn(&y->g_pd, s)) -+ { -+ pd_vmess(&y->g_pd, s, ""); -+ } -+ } -+} - - /* When you ask a canvas its size the result is 2 pixels more than what - you gave it to open it; perhaps there's a 1-pixel border all around it -diff -Naur src.org/g_graph.c src/g_graph.c ---- g_graph.c 2006-03-01 03:00:13.000000000 +0100 -+++ g_graph.c 2006-08-22 16:20:55.000000000 +0200 -@@ -62,6 +62,9 @@ - return (ret); - } - -+/* JMZ: emit a closebang message */ -+void canvas_closebang(t_canvas *x); -+ - /* delete an object from a glist and free it */ - void glist_delete(t_glist *x, t_gobj *y) - { -@@ -71,7 +74,12 @@ - t_canvas *canvas = glist_getcanvas(x); - int drawcommand = class_isdrawcommand(y->g_pd); - int wasdeleting; -- -+ -+ if (pd_class(&y->g_pd) == canvas_class) { -+ /* JMZ: send a closebang to the canvas */ -+ canvas_closebang((t_canvas *)y); -+ } -+ - wasdeleting = canvas_setdeleting(canvas, 1); - if (x->gl_editor) - { -diff -Naur src.org/m_class.c src/m_class.c ---- m_class.c 2006-08-12 07:06:47.000000000 +0200 -+++ m_class.c 2006-08-22 16:19:17.000000000 +0200 -@@ -509,6 +509,8 @@ - static int tryingalready; - - void canvas_popabstraction(t_canvas *x); -+void canvas_initbang(t_canvas *x); -+ - extern t_pd *newest; - - t_symbol* pathsearch(t_symbol *s,char* ext); -@@ -543,9 +545,11 @@ - { - canvas_setargs(argc, argv); - binbuf_evalfile(gensym(nameptr), gensym(dirbuf)); -+ canvas_initbang((t_canvas *)(s__X.s_thing));/* JMZ*/ - if (s__X.s_thing != current) - canvas_popabstraction((t_canvas *)(s__X.s_thing)); - canvas_setargs(0, 0); -+ - } - else error("%s: can't load abstraction within itself\n", s->s_name); - } -diff -Naur src.org/x_misc.c src/x_misc.c ---- x_misc.c 2005-12-31 21:08:38.000000000 +0100 -+++ x_misc.c 2006-08-22 16:19:17.000000000 +0200 -@@ -111,6 +111,66 @@ - gensym("loadbang"), 0); - } - -+ -+/* -------------------------- JMZ: initbang ------------------------------ */ -+static t_class *initbang_class; -+ -+typedef struct _initbang -+{ -+ t_object x_obj; -+} t_initbang; -+ -+static void *initbang_new(void) -+{ -+ t_initbang *x = (t_initbang *)pd_new(initbang_class); -+ outlet_new(&x->x_obj, &s_bang); -+ return (x); -+} -+ -+static void initbang_initbang(t_initbang *x) -+{ -+ if (!sys_noloadbang) /* JMZ: hmm, not sure whether we should respect sys_noloadbang here... */ -+ outlet_bang(x->x_obj.ob_outlet); -+} -+ -+static void initbang_setup(void) -+{ -+ initbang_class = class_new(gensym("initbang"), (t_newmethod)initbang_new, 0, -+ sizeof(t_initbang), CLASS_NOINLET, 0); -+ class_addmethod(initbang_class, (t_method)initbang_initbang, -+ gensym("initbang"), 0); -+} -+ -+ -+/* -------------------------- JMZ: closebang ------------------------------ */ -+static t_class *closebang_class; -+ -+typedef struct _closebang -+{ -+ t_object x_obj; -+} t_closebang; -+ -+static void *closebang_new(void) -+{ -+ t_closebang *x = (t_closebang *)pd_new(closebang_class); -+ outlet_new(&x->x_obj, &s_bang); -+ return (x); -+} -+static void closebang_closebang(t_closebang *x) -+{ -+ if (!sys_noloadbang) /* JMZ: hmm, not sure whether we should respect sys_noloadbang here... */ -+ outlet_bang(x->x_obj.ob_outlet); -+} -+ -+static void closebang_setup(void) -+{ -+ closebang_class = class_new(gensym("closebang"), (t_newmethod)closebang_new, 0, -+ sizeof(t_closebang), CLASS_NOINLET, 0); -+ class_addmethod(closebang_class, (t_method)closebang_closebang, -+ gensym("closebang"), 0); -+} -+ -+ - /* ------------- namecanvas (delete this later) --------------------- */ - static t_class *namecanvas_class; - -@@ -314,6 +374,8 @@ - { - random_setup(); - loadbang_setup(); -+ initbang_setup(); -+ closebang_setup(); - namecanvas_setup(); - serial_setup(); - cputime_setup(); diff --git a/packages/patches/color_scheme_support-0.40.3.patch b/packages/patches/color_scheme_support-0.40.3.patch deleted file mode 100644 index d3eed10826d74bc21539c7fc9067f962063cc295..0000000000000000000000000000000000000000 --- a/packages/patches/color_scheme_support-0.40.3.patch +++ /dev/null @@ -1,392 +0,0 @@ -Index: g_canvas.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v -retrieving revision 1.11.2.1 -diff -u -w -r1.11.2.1 g_canvas.c ---- g_canvas.c 19 Dec 2006 05:55:44 -0000 1.11.2.1 -+++ g_canvas.c 4 Nov 2007 07:14:17 -0000 -@@ -895,13 +895,15 @@ - { - t_linetraverser t; - t_outconnect *oc; -- { -+ int issignal; -+ - linetraverser_start(&t, x); - while (oc = linetraverser_next(&t)) -- sys_vgui(".x%lx.c create line %d %d %d %d -width %d -tags l%lx\n", -- glist_getcanvas(x), -- t.tr_lx1, t.tr_ly1, t.tr_lx2, t.tr_ly2, -- (outlet_getsymbol(t.tr_outlet) == &s_signal ? 2:1), -+ { -+ issignal = (outlet_getsymbol(t.tr_outlet) == &s_signal ? 1 : 0); -+ sys_vgui(".x%lx.c create line %d %d %d %d -width %d -fill %s -tags l%lx\n", -+ glist_getcanvas(x), t.tr_lx1, t.tr_ly1, t.tr_lx2, t.tr_ly2, -+ (issignal ? 2:1), (issignal ? "$signal_cord" : "$msg_cord"), - oc); - } - } -Index: g_editor.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v -retrieving revision 1.13.2.1 -diff -u -w -r1.13.2.1 g_editor.c ---- g_editor.c 19 Dec 2006 05:55:44 -0000 1.13.2.1 -+++ g_editor.c 4 Nov 2007 07:14:18 -0000 -@@ -108,7 +108,7 @@ - x->gl_editor->e_selectline_index2 = index2; - x->gl_editor->e_selectline_inno = inno; - x->gl_editor->e_selectline_tag = oc; -- sys_vgui(".x%lx.c itemconfigure l%lx -fill blue\n", -+ sys_vgui(".x%lx.c itemconfigure l%lx -fill $select_color\n", - x, x->gl_editor->e_selectline_tag); - } - } -@@ -117,9 +117,21 @@ - { - if (x->gl_editor) - { -+ t_linetraverser t; -+ t_outconnect *oc; - x->gl_editor->e_selectedline = 0; -- sys_vgui(".x%lx.c itemconfigure l%lx -fill black\n", -- x, x->gl_editor->e_selectline_tag); -+ linetraverser_start(&t, glist_getcanvas(x)); -+ do { -+ oc = linetraverser_next(&t); -+ } while (oc && oc != x->gl_editor->e_selectline_tag); -+ int issignal; -+ if(outlet_getsymbol(t.tr_outlet) == &s_signal) -+ issignal = 1; -+ else -+ issignal = 0; -+ sys_vgui(".x%lx.c itemconfigure l%lx -fill %s\n", -+ x, x->gl_editor->e_selectline_tag, -+ (issignal ? "$signal_cord" : "$msg_cord")); - } - } - -@@ -1149,7 +1161,11 @@ - x, xpos, ypos, xpos, ypos, - (issignal ? 2 : 1)); - } -- else canvas_setcursor(x, CURSOR_EDITMODE_CONNECT); -+ else -+ { -+ canvas_setcursor(x, CURSOR_EDITMODE_CONNECT); -+ } -+ - } - else if (doit) - goto nooutletafterall; -@@ -1319,6 +1335,7 @@ - } - if (doit) - { -+ int issignal = obj_issignaloutlet(ob1, closest1); - oc = obj_connect(ob1, closest1, ob2, closest2); - lx1 = x11 + (noutlet1 > 1 ? - ((x12-x11-IOWIDTH) * closest1)/(noutlet1-1) : 0) -@@ -1328,10 +1345,12 @@ - ((x22-x21-IOWIDTH) * closest2)/(ninlet2-1) : 0) - + IOMIDDLE; - ly2 = y21; -- sys_vgui(".x%lx.c create line %d %d %d %d -width %d -tags l%lx\n", -+ sys_vgui(".x%lx.c create line %d %d %d %d -fill %s -width %d -tags l%lx\n", - glist_getcanvas(x), - lx1, ly1, lx2, ly2, -- (obj_issignaloutlet(ob1, closest1) ? 2 : 1), oc); -+ (issignal ? "$signal_cord" : "$msg_cord"), -+ (issignal ? 2 : 1), -+ oc); - canvas_setundo(x, canvas_undo_connect, - canvas_undo_set_connect(x, - canvas_getindex(x, &ob1->ob_g), closest1, -Index: g_rtext.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_rtext.c,v -retrieving revision 1.5.2.4 -diff -u -w -r1.5.2.4 g_rtext.c ---- g_rtext.c 19 May 2007 04:04:30 -0000 1.5.2.4 -+++ g_rtext.c 4 Nov 2007 07:14:18 -0000 -@@ -248,7 +248,7 @@ - dispx + LMARGIN, dispy + TMARGIN, - outchars, tempbuf, sys_hostfontsize(font), - (glist_isselected(x->x_glist, -- &x->x_glist->gl_gobj)? "blue" : "black")); -+ &x->x_glist->gl_gobj)? "$select_color" : "$text_color")); - else if (action == SEND_UPDATE) - { - sys_vgui("pdtk_text_set .x%lx.c %s {%.*s}\n", -@@ -384,7 +384,7 @@ - t_glist *glist = x->x_glist; - t_canvas *canvas = glist_getcanvas(glist); - sys_vgui(".x%lx.c itemconfigure %s -fill %s\n", canvas, -- x->x_tag, (state? "blue" : "black")); -+ x->x_tag, (state? "$select_color" : "$text_color")); - canvas_editing = canvas; - } - -Index: g_scalar.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_scalar.c,v -retrieving revision 1.8 -diff -u -w -r1.8 g_scalar.c ---- g_scalar.c 21 Aug 2005 17:46:52 -0000 1.8 -+++ g_scalar.c 4 Nov 2007 07:14:19 -0000 -@@ -215,7 +215,7 @@ - scalar_getrect(z, owner, &x1, &y1, &x2, &y2); - x1--; x2++; y1--; y2++; - sys_vgui(".x%lx.c create line %d %d %d %d %d %d %d %d %d %d \ -- -width 0 -fill blue -tags select%lx\n", -+ -width 0 -fill $select_color -tags select%lx\n", - glist_getcanvas(owner), x1, y1, x1, y2, x2, y2, x2, y1, x1, y1, - x); - } -Index: g_text.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_text.c,v -retrieving revision 1.11.2.1 -diff -u -w -r1.11.2.1 g_text.c ---- g_text.c 19 Dec 2006 05:55:44 -0000 1.11.2.1 -+++ g_text.c 4 Nov 2007 07:14:19 -0000 -@@ -803,7 +803,7 @@ - (double)x1, (double)y1, - canvas_realizedollar(x->a_glist, x->a_label)->s_name, - sys_hostfontsize(glist_getfont(glist)), -- "black"); -+ "$text_color"); - } - else sys_vgui(".x%lx.c delete %lx.l\n", glist_getcanvas(glist), x); - } -@@ -936,7 +936,7 @@ - int font = glist_getfont(glist); - int fontwidth = sys_fontwidth(font), fontheight = sys_fontheight(font); - width = (x->te_width > 0 ? x->te_width : 6) * fontwidth + 2; -- height = fontheight + 1; /* borrowed from TMARGIN, etc, in g_rtext.c */ -+ height = fontheight + 2; /* borrowed from TMARGIN, etc, in g_rtext.c */ - } - /* if we're invisible we don't know our size so we just lie about - it. This is called on invisible boxes to establish order of inlets -@@ -984,10 +984,15 @@ - { - t_text *x = (t_text *)z; - t_rtext *y = glist_findrtext(glist, x); -+ char *outline; - rtext_select(y, state); -+ if (pd_class(&x->te_pd) == text_class) -+ outline = "$dash_outline"; -+ else -+ outline = "$box_outline"; - if (glist_isvisible(glist) && text_shouldvis(x, glist)) -- sys_vgui(".x%lx.c itemconfigure %sR -fill %s\n", glist, -- rtext_gettag(y), (state? "blue" : "black")); -+ sys_vgui(".x%lx.c itemconfigure %sR -outline %s\n", glist, -+ rtext_gettag(y), (state? "$select_color" : outline)); - } - - static void text_activate(t_gobj *z, t_glist *glist, int state) -@@ -1166,19 +1171,24 @@ - { - int n = obj_noutlets(ob), nplus = (n == 1 ? 1 : n-1), i; - int width = x2 - x1; -+ int issignal; - for (i = 0; i < n; i++) - { - int onset = x1 + (width - IOWIDTH) * i / nplus; - if (firsttime) -- sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %so%d\n", -- glist_getcanvas(glist), -- onset, y2 - 1, -- onset + IOWIDTH, y2, -+ { -+ issignal = obj_issignaloutlet(ob,i); -+ sys_vgui(".x%lx.c create rectangle %d %d %d %d \ -+ -fill %s -outline %s -tags %so%d\n", -+ glist_getcanvas(glist), onset, y2 - 2, onset + IOWIDTH, y2, -+ (issignal ? "$signal_nlet" : "$msg_nlet"), -+ (issignal ? "$signal_cord" : "$msg_cord"), - tag, i); -+ } - else - sys_vgui(".x%lx.c coords %so%d %d %d %d %d\n", - glist_getcanvas(glist), tag, i, -- onset, y2 - 1, -+ onset, y2 - 2, - onset + IOWIDTH, y2); - } - n = obj_ninlets(ob); -@@ -1187,11 +1197,15 @@ - { - int onset = x1 + (width - IOWIDTH) * i / nplus; - if (firsttime) -- sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %si%d\n", -- glist_getcanvas(glist), -- onset, y1, -- onset + IOWIDTH, y1 + EXTRAPIX, -+ { -+ issignal = obj_issignalinlet(ob,i); -+ sys_vgui(".x%lx.c create rectangle %d %d %d %d \ -+ -fill %s -outline %s -tags %si%d\n", -+ glist_getcanvas(glist), onset, y1, onset + IOWIDTH, y1 + EXTRAPIX, -+ (issignal ? "$signal_nlet" : "$msg_nlet"), -+ (issignal ? "$signal_cord" : "$msg_cord"), - tag, i); -+ } - else - sys_vgui(".x%lx.c coords %si%d %d %d %d %d\n", - glist_getcanvas(glist), tag, i, -@@ -1204,57 +1218,74 @@ - char *tag, int width2, int height2, int firsttime) - { - t_object *ob; -- int x1, y1, x2, y2, width, height; -+ int x1, y1, x2, y2, width, height, msg_draw_const, atom_draw_const; - text_getrect(&x->te_g, glist, &x1, &y1, &x2, &y2); - width = x2 - x1; - height = y2 - y1; - if (x->te_type == T_OBJECT) - { -- char *pattern = ((pd_class(&x->te_pd) == text_class) ? "-" : "\"\""); -+ char *pattern; char *outline; -+ if (pd_class(&x->te_pd) == text_class) -+ { -+ pattern = "-"; -+ outline = "$dash_outline"; -+ } -+ else -+ { -+ pattern = "\"\""; -+ outline = "$box_outline"; -+ } - if (firsttime) -- sys_vgui(".x%lx.c create line\ -- %d %d %d %d %d %d %d %d %d %d -dash %s -tags %sR\n", -+ sys_vgui(".x%lx.c create polygon %d %d %d %d %d %d %d %d %d %d \ -+ -dash %s -outline %s -fill $obj_box_fill -tags %sR\n", - glist_getcanvas(glist), -- x1, y1, x2, y1, x2, y2, x1, y2, x1, y1, pattern, tag); -+ x1, y1, x2, y1, x2, y2, x1, y2, x1, y1, -+ pattern, outline, tag); - else - { -- sys_vgui(".x%lx.c coords %sR\ -- %d %d %d %d %d %d %d %d %d %d\n", -+ sys_vgui(".x%lx.c coords %sR %d %d %d %d %d %d %d %d %d %d\n", - glist_getcanvas(glist), tag, - x1, y1, x2, y1, x2, y2, x1, y2, x1, y1); -- sys_vgui(".x%lx.c itemconfigure %sR -dash %s\n", -- glist_getcanvas(glist), tag, pattern); -+ sys_vgui(".x%lx.c itemconfigure %sR -dash %s -outline %s\n", -+ glist_getcanvas(glist), tag, pattern, outline); - } - } - else if (x->te_type == T_MESSAGE) - { -+ msg_draw_const = ((y2-y1)/4); -+ if (msg_draw_const > 10) msg_draw_const = 10; /* looks bad if too big */ - if (firsttime) -- sys_vgui(".x%lx.c create line\ -- %d %d %d %d %d %d %d %d %d %d %d %d %d %d -tags %sR\n", -+ sys_vgui(".x%lx.c create polygon \ -+ %d %d %d %d %d %d %d %d %d %d %d %d %d %d \ -+ -outline $box_outline -fill $msg_box_fill -tags %sR\n", - glist_getcanvas(glist), -- x1, y1, x2+4, y1, x2, y1+4, x2, y2-4, x2+4, y2, -+ x1, y1, x2+msg_draw_const, y1, x2, y1+msg_draw_const, -+ x2, y2-msg_draw_const, x2+msg_draw_const, y2, - x1, y2, x1, y1, - tag); - else - sys_vgui(".x%lx.c coords %sR\ - %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n", - glist_getcanvas(glist), tag, -- x1, y1, x2+4, y1, x2, y1+4, x2, y2-4, x2+4, y2, -- x1, y2, x1, y1); -+ x1, y1, x2+msg_draw_const, y1, x2, y1+msg_draw_const, -+ x2, y2-msg_draw_const, x2+msg_draw_const, y2, x1, y2, x1, y1); - } - else if (x->te_type == T_ATOM) - { -+ atom_draw_const = ((y2-y1)/3); - if (firsttime) -- sys_vgui(".x%lx.c create line\ -- %d %d %d %d %d %d %d %d %d %d %d %d -tags %sR\n", -+ sys_vgui(".x%lx.c create polygon %d %d %d %d %d %d %d %d %d %d %d %d \ -+ -outline $box_outline -fill $atom_box_fill -tags %sR\n", - glist_getcanvas(glist), -- x1, y1, x2-4, y1, x2, y1+4, x2, y2, x1, y2, x1, y1, -+ x1, y1, x2-atom_draw_const, y1, x2, y1+atom_draw_const, -+ x2, y2, x1, y2, x1, y1, - tag); - else - sys_vgui(".x%lx.c coords %sR\ - %d %d %d %d %d %d %d %d %d %d %d %d\n", - glist_getcanvas(glist), tag, -- x1, y1, x2-4, y1, x2, y1+4, x2, y2, x1, y2, x1, y1); -+ x1, y1, x2-atom_draw_const, y1, x2, y1+atom_draw_const, -+ x2, y2, x1, y2, x1, y1); - } - /* draw inlets/outlets */ - -Index: u_main.tk -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v -retrieving revision 1.25 -diff -u -w -r1.25 u_main.tk ---- u_main.tk 9 Oct 2006 04:36:12 -0000 1.25 -+++ u_main.tk 4 Nov 2007 07:15:20 -0000 -@@ -31,6 +31,24 @@ - set pd_array_listview_page(0) 0 - # end jsarlo - -+# color scheme -+set text_color "#000" -+set select_color "#00f" -+set dash_outline "#f00" -+set dash_fill "#fff" -+set box_outline "#ccc" -+set graph_outline "#777" -+set atom_box_fill "#eee" -+set msg_box_fill "#f8f8f6" -+set obj_box_fill "#f6f8f8" -+set signal_cord_highlight "#58a" -+set signal_cord "#558" -+set signal_nlet $signal_cord -+set msg_cord_highlight "#474" -+set msg_cord "#121" -+set msg_nlet "#fff" -+set mixed_nlet "#88aaff" -+ - if {$pd_nt == 1} { - global pd_guidir - global pd_tearoff -Index: g_graph.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_graph.c,v -retrieving revision 1.10 -diff -u -w -r1.10 g_graph.c ---- g_graph.c 3 Jun 2006 19:13:07 -0000 1.10 -+++ g_graph.c 4 Nov 2007 07:26:20 -0000 -@@ -729,7 +729,7 @@ - t_garray *ga; - /* draw a rectangle around the graph */ - sys_vgui(".x%lx.c create line\ -- %d %d %d %d %d %d %d %d %d %d -tags %s\n", -+ %d %d %d %d %d %d %d %d %d %d -fill $graph_outline -tags %s\n", - glist_getcanvas(x->gl_owner), - x1, y1, x1, y2, x2, y2, x2, y1, x1, y1, tag); - -@@ -950,9 +950,10 @@ - if (canvas_showtext(x)) - rtext_select(y, state); - sys_vgui(".x%lx.c itemconfigure %sR -fill %s\n", glist, -- rtext_gettag(y), (state? "blue" : "black")); -+ rtext_gettag(y), (state? "$select_color" : "black")); - sys_vgui(".x%lx.c itemconfigure graph%lx -fill %s\n", -- glist_getcanvas(glist), z, (state? "blue" : "black")); -+ glist_getcanvas(glist), z, -+ (state? "$select_color" : "$graph_outline")); - } - } - diff --git a/packages/patches/default_and_embedded_plist-0.41.4.patch b/packages/patches/default_and_embedded_plist-0.41.4.patch deleted file mode 100644 index c5c7119cc485094ef0435db860dd6bc06b193a39..0000000000000000000000000000000000000000 --- a/packages/patches/default_and_embedded_plist-0.41.4.patch +++ /dev/null @@ -1,50 +0,0 @@ -Index: s_file.c -=================================================================== ---- s_file.c (revision 9789) -+++ s_file.c (working copy) -@@ -235,17 +235,35 @@ - { - char cmdbuf[256]; - int nread = 0, nleft = size; -- char embedded_prefs[MAXPDSTRING]; -- char user_prefs[MAXPDSTRING]; -- char *homedir = getenv("HOME"); -+ char default_prefs[MAXPDSTRING]; // default prefs embedded in the package -+ char embedded_prefs[MAXPDSTRING]; // overrides others for standalone app -+ char embedded_prefs_file[MAXPDSTRING]; -+ char user_prefs_file[MAXPDSTRING]; -+ char *homedir = getenv("HOME"); - struct stat statbuf; -- /* the 'defaults' command expects the filename without .plist at the end */ -- snprintf(embedded_prefs, MAXPDSTRING, "%s/../org.puredata.pd", sys_libdir->s_name); -- snprintf(user_prefs, MAXPDSTRING, "%s/Library/Preferences/org.puredata.pd.plist", homedir); -- if (stat(user_prefs, &statbuf) == 0) -- snprintf(cmdbuf, 256, "defaults read org.puredata.pd %s 2> /dev/null\n", key); -- else -- snprintf(cmdbuf, 256, "defaults read %s %s 2> /dev/null\n", embedded_prefs, key); -+ /* the 'defaults' command expects the filename without .plist at the end */ -+ snprintf(default_prefs, MAXPDSTRING, "%s/../org.puredata.pd.default", -+ sys_libdir->s_name); -+ snprintf(embedded_prefs, MAXPDSTRING, "%s/../org.puredata.pd", -+ sys_libdir->s_name); -+ snprintf(embedded_prefs_file, MAXPDSTRING, "%s.plist", embedded_prefs); -+ snprintf(user_prefs_file, MAXPDSTRING, -+ "%s/Library/Preferences/org.puredata.pd.plist", homedir); -+ if (stat(embedded_prefs_file, &statbuf) == 0) -+ { -+ snprintf(cmdbuf, 256, -+ "defaults read %s %s 2> /dev/null\n", embedded_prefs, key); -+ } -+ else if (stat(user_prefs_file, &statbuf) == 0) -+ { -+ snprintf(cmdbuf, 256, -+ "defaults read org.puredata.pd %s 2> /dev/null\n", key); -+ } -+ else -+ { -+ snprintf(cmdbuf, 256, -+ "defaults read %s %s 2> /dev/null\n", default_prefs, key); -+ } - FILE *fp = popen(cmdbuf, "r"); - while (nread < size) - { diff --git a/packages/patches/disable_close_confirm-0.39.2.patch b/packages/patches/disable_close_confirm-0.39.2.patch deleted file mode 100644 index 1b954322fe1a28bb657ba3dafbd7d28cd9bd75e8..0000000000000000000000000000000000000000 --- a/packages/patches/disable_close_confirm-0.39.2.patch +++ /dev/null @@ -1,21 +0,0 @@ -Index: g_editor.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v -retrieving revision 1.13 -diff -u -w -r1.13 g_editor.c ---- g_editor.c 15 Sep 2005 03:17:27 -0000 1.13 -+++ g_editor.c 28 Apr 2006 22:40:57 -0000 -@@ -1688,9 +1688,10 @@ - } - else - { -- sys_vgui( --"pdtk_check {Close this window??} {.x%lx menuclose 1;\n} yes\n", -- x); -+/* sys_vgui( */ -+/* "pdtk_check {Close this window??} {.x%lx menuclose 1;\n} yes\n", */ -+/* x); */ -+ pd_free(&x->gl_pd); - } - } - else if (force == 1) diff --git a/packages/patches/make_sizes_pixel_accurate_on_every_platform-0.40.3.patch b/packages/patches/make_sizes_pixel_accurate_on_every_platform-0.40.3.patch deleted file mode 100644 index ec2315dfbe76cdec687c9ad92a6412be2057dd3f..0000000000000000000000000000000000000000 --- a/packages/patches/make_sizes_pixel_accurate_on_every_platform-0.40.3.patch +++ /dev/null @@ -1,1686 +0,0 @@ -Index: g_all_guis.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_all_guis.c,v -retrieving revision 1.9 -diff -u -w -r1.9 g_all_guis.c ---- g_all_guis.c 11 Aug 2006 20:09:07 -0000 1.9 -+++ g_all_guis.c 3 Aug 2007 06:36:34 -0000 -@@ -438,7 +438,7 @@ - else - { - f = 0; -- strcpy(iemgui->x_font, "courier"); -+ strcpy(iemgui->x_font, sys_font); - } - iemgui->x_fsf.x_font_style = f; - f = (int)atom_getintarg(1, ac, av); -@@ -446,8 +446,9 @@ - f = 4; - iemgui->x_fontsize = f; - if(glist_isvisible(iemgui->x_glist)) -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold}\n", -- glist_getcanvas(iemgui->x_glist), x, iemgui->x_font, iemgui->x_fontsize); -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s}\n", -+ glist_getcanvas(iemgui->x_glist), x, iemgui->x_font, -+ iemgui->x_fontsize, sys_fontweight); - } - - void iemgui_size(void *x, t_iemgui *iemgui) -@@ -622,7 +623,7 @@ - else - { - f = 0; -- strcpy(iemgui->x_font, "courier"); -+ strcpy(iemgui->x_font, sys_font); - } - iemgui->x_fsf.x_font_style = f; - if(fs < 4) -Index: g_all_guis.h -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_all_guis.h,v -retrieving revision 1.5 -diff -u -w -r1.5 g_all_guis.h ---- g_all_guis.h 16 Aug 2005 04:06:28 -0000 1.5 -+++ g_all_guis.h 3 Aug 2007 06:36:34 -0000 -@@ -144,7 +144,7 @@ - int x_w; - int x_ldx; - int x_ldy; -- char x_font[16]; -+ char x_font[MAXPDSTRING]; /* font names can be long! */ - t_iem_fstyle_flags x_fsf; - int x_fontsize; - t_iem_init_symargs x_isa; -Index: g_bang.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_bang.c,v -retrieving revision 1.5 -diff -u -w -r1.5 g_bang.c ---- g_bang.c 8 Sep 2006 23:45:30 -0000 1.5 -+++ g_bang.c 3 Aug 2007 06:36:34 -0000 -@@ -55,11 +55,12 @@ - xpos + x->x_gui.x_w-1, ypos + x->x_gui.x_h-1, - x->x_flashed?x->x_gui.x_fcol:x->x_gui.x_bcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xpos+x->x_gui.x_ldx, - ypos+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", - canvas, xpos, -@@ -115,8 +116,8 @@ - { - t_canvas *canvas=glist_getcanvas(glist); - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - sys_vgui(".x%lx.c itemconfigure %lxBASE -fill #%6.6x\n", canvas, x, x->x_gui.x_bcol); -@@ -237,7 +238,7 @@ - t_symbol *srl[3]; - - iemgui_properties(&x->x_gui, srl); -- sprintf(buf, "pdtk_iemgui_dialog %%s BANG \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |bang| \ - ----------dimensions(pix):----------- %d %d size: 0 0 empty \ - --------flash-time(ms)(ms):--------- %d intrrpt: %d hold: %d \ - %d empty empty %d %d empty %d \ -@@ -481,7 +482,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - - if (x->x_gui.x_fsf.x_rcv_able) - pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); -Index: g_graph.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_graph.c,v -retrieving revision 1.10 -diff -u -w -r1.10 g_graph.c ---- g_graph.c 3 Jun 2006 19:13:07 -0000 1.10 -+++ g_graph.c 3 Aug 2007 06:36:35 -0000 -@@ -741,9 +741,9 @@ - { - i -= sys_fontheight(glist_getfont(x)); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor nw\ -- -font -*-courier-bold--normal--%d-* -tags %s\n", -- (long)glist_getcanvas(x), x1, i, arrayname->s_name, -- sys_hostfontsize(glist_getfont(x)), tag); -+ -font {{%s} %d %s} -tags %s\n", -+ (long)glist_getcanvas(x), x1, i, arrayname->s_name, sys_font, -+ sys_hostfontsize(glist_getfont(x)), sys_fontweight, tag); - } - - /* draw ticks on horizontal borders. If lperb field is -@@ -823,21 +823,22 @@ - /* draw x labels */ - for (i = 0; i < x->gl_nxlabels; i++) - sys_vgui(".x%lx.c create text\ -- %d %d -text {%s} -font -*-courier-bold--normal--%d-* -tags %s\n", -+ %d %d -text {%s} -font {{%s} %d %s} -tags %s\n", - glist_getcanvas(x), - (int)glist_xtopixels(x, atof(x->gl_xlabel[i]->s_name)), -- (int)glist_ytopixels(x, x->gl_xlabely), x->gl_xlabel[i]->s_name, -- glist_getfont(x), tag); -+ (int)glist_ytopixels(x, x->gl_xlabely), -+ x->gl_xlabel[i]->s_name, sys_font, -+ glist_getfont(x), sys_fontweight, tag); - - /* draw y labels */ - for (i = 0; i < x->gl_nylabels; i++) - sys_vgui(".x%lx.c create text\ -- %d %d -text {%s} -font -*-courier-bold--normal--%d-* -tags %s\n", -+ %d %d -text {%s} -font {{%s} %d %s} -tags %s\n", - glist_getcanvas(x), - (int)glist_xtopixels(x, x->gl_ylabelx), - (int)glist_ytopixels(x, atof(x->gl_ylabel[i]->s_name)), -- x->gl_ylabel[i]->s_name, -- glist_getfont(x), tag); -+ x->gl_ylabel[i]->s_name, sys_font, -+ glist_getfont(x), sys_fontweight, tag); - - /* draw contents of graph as glist */ - for (g = x->gl_list; g; g = g->g_next) -Index: g_hdial.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_hdial.c,v -retrieving revision 1.7 -diff -u -w -r1.7 g_hdial.c ---- g_hdial.c 8 Sep 2006 23:45:30 -0000 1.7 -+++ g_hdial.c 3 Aug 2007 06:36:35 -0000 -@@ -73,10 +73,10 @@ - x->x_drawn = x->x_on; - } - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xx11b+x->x_gui.x_ldx, yy11+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", -@@ -141,8 +141,8 @@ - t_canvas *canvas=glist_getcanvas(glist); - int n=x->x_number, i; - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - for(i=0; i<n; i++) -@@ -264,7 +264,7 @@ - iemgui_properties(&x->x_gui, srl); - if (pd_class(&x->x_gui.x_obj.ob_pd) == hradio_old_class) - hchange = x->x_change; -- sprintf(buf, "pdtk_iemgui_dialog %%s hradio \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |hradio| \ - ----------dimensions(pix):----------- %d %d size: 0 0 empty \ - empty 0.0 empty 0.0 empty %d \ - %d new-only new&old %d %d number: %d \ -@@ -589,7 +589,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if(num < 1) - num = 1; - if(num > IEM_RADIO_MAX) -Index: g_hslider.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_hslider.c,v -retrieving revision 1.6 -diff -u -w -r1.6 g_hslider.c ---- g_hslider.c 8 Sep 2006 23:45:30 -0000 1.6 -+++ g_hslider.c 3 Aug 2007 06:36:35 -0000 -@@ -76,11 +76,12 @@ - canvas, r, ypos+1, r, - ypos + x->x_gui.x_h, x->x_gui.x_fcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xpos+x->x_gui.x_ldx, - ypos+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", - canvas, xpos-3, ypos + x->x_gui.x_h-1, -@@ -136,8 +137,8 @@ - { - t_canvas *canvas=glist_getcanvas(glist); - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - sys_vgui(".x%lx.c itemconfigure %lxKNOB -fill #%6.6x\n", canvas, x, x->x_gui.x_fcol); -@@ -285,7 +286,7 @@ - t_symbol *srl[3]; - - iemgui_properties(&x->x_gui, srl); -- sprintf(buf, "pdtk_iemgui_dialog %%s HSLIDER \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |hsl| \ - --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ - -----------output-range:----------- %g left: %g right: %g \ - %d lin log %d %d empty %d \ -@@ -586,7 +587,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if(x->x_gui.x_fsf.x_rcv_able) - pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); - x->x_gui.x_ldx = ldx; -Index: g_mycanvas.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_mycanvas.c,v -retrieving revision 1.5 -diff -u -w -r1.5 g_mycanvas.c ---- g_mycanvas.c 6 Sep 2004 20:20:34 -0000 1.5 -+++ g_mycanvas.c 3 Aug 2007 06:36:35 -0000 -@@ -44,10 +44,11 @@ - xpos + x->x_gui.x_w, ypos + x->x_gui.x_h, - x->x_gui.x_bcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - } - - void my_canvas_draw_move(t_my_canvas *x, t_glist *glist) -@@ -84,8 +85,9 @@ - x->x_gui.x_bcol, x->x_gui.x_bcol); - sys_vgui(".x%lx.c itemconfigure %lxBASE -outline #%6.6x\n", canvas, x, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_bcol); -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - } - -@@ -152,7 +154,7 @@ - t_symbol *srl[3]; - - iemgui_properties(&x->x_gui, srl); -- sprintf(buf, "pdtk_iemgui_dialog %%s MY_CANVAS \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |cnv| \ - ------selectable_dimensions(pix):------ %d %d size: 0.0 0.0 empty \ - ------visible_rectangle(pix)(pix):------ %d width: %d height: %d \ - %d empty empty %d %d empty %d \ -@@ -331,7 +333,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if (x->x_gui.x_fsf.x_rcv_able) - pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); - x->x_gui.x_ldx = ldx; -Index: g_numbox.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_numbox.c,v -retrieving revision 1.8 -diff -u -w -r1.8 g_numbox.c ---- g_numbox.c 8 Sep 2006 23:45:30 -0000 1.8 -+++ g_numbox.c 3 Aug 2007 06:36:35 -0000 -@@ -195,15 +195,17 @@ - xpos, ypos + x->x_gui.x_h, - x->x_gui.x_fcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - my_numbox_ftoa(x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxNUMBER\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxNUMBER\n", - canvas, xpos+half+2, ypos+half+d, -- x->x_buf, x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_fcol, x); -+ x->x_buf, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_fcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", - canvas, -@@ -269,12 +271,12 @@ - { - t_canvas *canvas=glist_getcanvas(glist); - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); -- sys_vgui(".x%lx.c itemconfigure %lxNUMBER -font {%s %d bold} -fill #%6.6x \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxNUMBER -font {{%s} %d %s} -fill #%6.6x \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_fcol); - sys_vgui(".x%lx.c itemconfigure %lxBASE1 -fill #%6.6x\n", canvas, - x, x->x_gui.x_bcol); -@@ -451,7 +453,7 @@ - sys_queuegui(x, x->x_gui.x_glist, my_numbox_draw_update); - - } -- sprintf(buf, "pdtk_iemgui_dialog %%s NUMBERBOX \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |nbx| \ - -------dimensions(digits)(pix):------- %d %d width: %d %d height: \ - -----------output-range:----------- %g min: %g max: %d \ - %d lin log %d %d log-height: %d \ -@@ -806,7 +808,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if (x->x_gui.x_fsf.x_rcv_able) - pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); - x->x_gui.x_ldx = ldx; -Index: g_rtext.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_rtext.c,v -retrieving revision 1.6 -diff -u -w -r1.6 g_rtext.c ---- g_rtext.c 11 Aug 2006 20:09:07 -0000 1.6 -+++ g_rtext.c 3 Aug 2007 06:36:35 -0000 -@@ -15,10 +15,16 @@ - #include "g_canvas.h" - #include "t_tk.h" - --#define LMARGIN 1 --#define RMARGIN 1 --#define TMARGIN 2 --#define BMARGIN 2 -+#define LMARGIN 2 -+#define RMARGIN 2 -+/* for some reason, it draws text 1 pixel lower on Mac OS X */ -+#ifdef __APPLE__ -+#define TMARGIN 3 -+#define BMARGIN 1 -+#else -+#define TMARGIN 4 -+#define BMARGIN 0 -+#endif - - #define SEND_FIRST 1 - #define SEND_UPDATE 2 -Index: g_template.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_template.c,v -retrieving revision 1.18 -diff -u -w -r1.18 g_template.c ---- g_template.c 9 Oct 2006 04:36:12 -0000 1.18 -+++ g_template.c 3 Aug 2007 06:36:36 -0000 -@@ -2126,8 +2126,8 @@ - drawnumber_sprintf(x, buf, &at); - sys_vgui(".x%lx.c create text %d %d -anchor nw -fill %s -text {%s}", - glist_getcanvas(glist), xloc, yloc, colorstring, buf); -- sys_vgui(" -font -*-courier-bold--normal--%d-*", -- sys_hostfontsize(glist_getfont(glist))); -+ sys_vgui(" -font {{%s} %d %s}", sys_font, -+ sys_hostfontsize(glist_getfont(glist)), sys_fontweight); - sys_vgui(" -tags drawnumber%lx\n", data); - } - else sys_vgui(".x%lx.c delete drawnumber%lx\n", glist_getcanvas(glist), data); -Index: g_toggle.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_toggle.c,v -retrieving revision 1.5 -diff -u -w -r1.5 g_toggle.c ---- g_toggle.c 8 Sep 2006 23:45:30 -0000 1.5 -+++ g_toggle.c 3 Aug 2007 06:36:36 -0000 -@@ -61,11 +61,12 @@ - canvas, xx+w+1, yy + x->x_gui.x_h-w-1, xx + x->x_gui.x_w-w, yy+w, w, - (x->x_on!=0.0)?x->x_gui.x_fcol:x->x_gui.x_bcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xx+x->x_gui.x_ldx, - yy+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", - canvas, xx, yy + x->x_gui.x_h-1, xx + IOWIDTH, yy + x->x_gui.x_h, x, 0); -@@ -120,8 +121,8 @@ - { - t_canvas *canvas=glist_getcanvas(glist); - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - sys_vgui(".x%lx.c itemconfigure %lxBASE -fill #%6.6x\n", canvas, x, -@@ -225,7 +226,7 @@ - t_symbol *srl[3]; - - iemgui_properties(&x->x_gui, srl); -- sprintf(buf, "pdtk_iemgui_dialog %%s TOGGLE \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |tgl| \ - ----------dimensions(pix):----------- %d %d size: 0 0 empty \ - -----------non-zero-value:----------- %g value: 0.0 empty %g \ - -1 lin log %d %d empty %d \ -@@ -407,7 +408,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - x->x_nonzero = (nonzero!=0.0)?nonzero:1.0; - if(x->x_gui.x_isa.x_loadinit) - x->x_on = (on!=0.0)?nonzero:0.0; -Index: g_vdial.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_vdial.c,v -retrieving revision 1.6 -diff -u -w -r1.6 g_vdial.c ---- g_vdial.c 8 Sep 2006 23:45:30 -0000 1.6 -+++ g_vdial.c 3 Aug 2007 06:36:36 -0000 -@@ -75,10 +75,10 @@ - x->x_drawn = x->x_on; - } - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xx11+x->x_gui.x_ldx, yy11b+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", -@@ -141,8 +141,8 @@ - t_canvas *canvas=glist_getcanvas(glist); - int n=x->x_number, i; - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - for(i=0; i<n; i++) -@@ -265,7 +265,7 @@ - iemgui_properties(&x->x_gui, srl); - if(pd_class(&x->x_gui.x_obj.ob_pd) == vradio_old_class) - hchange = x->x_change; -- sprintf(buf, "pdtk_iemgui_dialog %%s vradio \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |vradio| \ - ----------dimensions(pix):----------- %d %d size: 0 0 empty \ - empty 0.0 empty 0.0 empty %d \ - %d new-only new&old %d %d number: %d \ -@@ -590,7 +590,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if(num < 1) - num = 1; - if(num > IEM_RADIO_MAX) -Index: g_vslider.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_vslider.c,v -retrieving revision 1.6 -diff -u -w -r1.6 g_vslider.c ---- g_vslider.c 8 Sep 2006 23:45:30 -0000 1.6 -+++ g_vslider.c 3 Aug 2007 06:36:36 -0000 -@@ -59,10 +59,11 @@ - canvas, xpos+1, r, - xpos + x->x_gui.x_w, r, x->x_gui.x_fcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", - canvas, -@@ -122,8 +123,8 @@ - { - t_canvas *canvas=glist_getcanvas(glist); - -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - sys_vgui(".x%lx.c itemconfigure %lxKNOB -fill #%6.6x\n", canvas, -@@ -277,7 +278,7 @@ - - iemgui_properties(&x->x_gui, srl); - -- sprintf(buf, "pdtk_iemgui_dialog %%s VSLIDER \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |vsl| \ - --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ - -----------output-range:----------- %g bottom: %g top: %d \ - %d lin log %d %d empty %d \ -@@ -562,7 +563,7 @@ - if(x->x_gui.x_fsf.x_font_style == 1) strcpy(x->x_gui.x_font, "helvetica"); - else if(x->x_gui.x_fsf.x_font_style == 2) strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if(x->x_gui.x_fsf.x_rcv_able) pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); - x->x_gui.x_ldx = ldx; - x->x_gui.x_ldy = ldy; -Index: g_vumeter.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_vumeter.c,v -retrieving revision 1.5 -diff -u -w -r1.5 g_vumeter.c ---- g_vumeter.c 16 Aug 2005 04:06:28 -0000 1.5 -+++ g_vumeter.c 3 Aug 2007 06:36:36 -0000 -@@ -116,17 +116,19 @@ - canvas, quad1, yyy, quad3, yyy, x->x_led_size, iemgui_color_hex[led_col], x, i); - if(((i+2)&3) && (x->x_scale)) - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", -- canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, -- x->x_gui.x_lcol, x, i); -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxSCALE%d\n", -+ canvas, end, yyy+k3, iemgui_vu_scale_str[i], -+ x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_fontweight, x->x_gui.x_lcol, x, i); - } - if(x->x_scale) - { - i=IEM_VU_STEPS+1; - yyy = k4 + k1*(k2-i); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", -- canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxSCALE%d\n", -+ canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, -+ x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_lcol, x, i); - } - sys_vgui(".x%lx.c create rectangle %d %d %d %d -fill #%6.6x -outline #%6.6x -tags %lxRCOVER\n", -@@ -136,10 +138,11 @@ - canvas, mid, ypos+10, - mid, ypos+10, x->x_led_size, x->x_gui.x_bcol, x); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxLABEL\n", -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxLABEL\n", - canvas, xpos+x->x_gui.x_ldx, ypos+x->x_gui.x_ldy, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:"", -- x->x_gui.x_font, x->x_gui.x_fontsize, x->x_gui.x_lcol, x); -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ x->x_gui.x_lcol, x); - if(!x->x_gui.x_fsf.x_snd_able) - { - sys_vgui(".x%lx.c create rectangle %d %d %d %d -tags %lxOUT%d\n", -@@ -274,19 +277,21 @@ - sys_vgui(".x%lx.c itemconfigure %lxRLED%d -width %d\n", canvas, x, i, - x->x_led_size); - if(((i+2)&3) && (x->x_scale)) -- sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {%s %d bold} -fill #%6.6x\n", -- canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {{%s} %d %s} -fill #%6.6x\n", -+ canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, -+ x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol); - } - if(x->x_scale) - { - i=IEM_VU_STEPS+1; -- sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {%s %d bold} -fill #%6.6x\n", -- canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxSCALE%d -text {%s} -font {{%s} %d %s} -fill #%6.6x\n", -+ canvas, x, i, iemgui_vu_scale_str[i], x->x_gui.x_font, -+ x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol); - } -- sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n", -- canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_vgui(".x%lx.c itemconfigure %lxLABEL -font {{%s} %d %s} -fill #%6.6x -text {%s} \n", -+ canvas, x, x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, - x->x_gui.x_fsf.x_selected?IEM_GUI_COLOR_SELECTED:x->x_gui.x_lcol, - strcmp(x->x_gui.x_lab->s_name, "empty")?x->x_gui.x_lab->s_name:""); - -@@ -476,16 +481,18 @@ - yyy = k4 + k1*(k2-i); - if((i+2)&3) - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", -- canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, -- x->x_gui.x_lcol, x, i); -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxSCALE%d\n", -+ canvas, end, yyy+k3, iemgui_vu_scale_str[i], -+ x->x_gui.x_font, x->x_gui.x_fontsize, -+ sys_fontweight, x->x_gui.x_lcol, x, i); - } - i=IEM_VU_STEPS+1; - yyy = k4 + k1*(k2-i); - sys_vgui(".x%lx.c create text %d %d -text {%s} -anchor w \ -- -font {%s %d bold} -fill #%6.6x -tags %lxSCALE%d\n", -- canvas, end, yyy+k3, iemgui_vu_scale_str[i], x->x_gui.x_font, x->x_gui.x_fontsize, -- x->x_gui.x_lcol, x, i); -+ -font {{%s} %d %s} -fill #%6.6x -tags %lxSCALE%d\n", -+ canvas, end, yyy+k3, iemgui_vu_scale_str[i], -+ x->x_gui.x_font, x->x_gui.x_fontsize, sys_fontweight, -+ sys_fontweight, x->x_gui.x_lcol, x, i); - } - } - } -@@ -497,7 +504,7 @@ - t_symbol *srl[3]; - - iemgui_properties(&x->x_gui, srl); -- sprintf(buf, "pdtk_iemgui_dialog %%s VU-METER \ -+ sprintf(buf, "pdtk_iemgui_dialog %%s |vu| \ - --------dimensions(pix)(pix):-------- %d %d width: %d %d height: \ - empty 0.0 empty 0.0 empty %d \ - %d no_scale scale %d %d empty %d \ -@@ -627,7 +634,7 @@ - t_vu *x = (t_vu *)pd_new(vu_class); - int bflcol[]={-66577, -1, -1}; - int w=IEM_GUI_DEFAULTSIZE, h=IEM_VU_STEPS*IEM_VU_DEFAULTSIZE; -- int ldx=-1, ldy=-8, f=0, fs=8, scale=1; -+ int ldx=-1, ldy=-8, f=0, fs=10, scale=1; - int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME; - char str[144]; - -@@ -667,7 +674,7 @@ - else if(x->x_gui.x_fsf.x_font_style == 2) - strcpy(x->x_gui.x_font, "times"); - else { x->x_gui.x_fsf.x_font_style = 0; -- strcpy(x->x_gui.x_font, "courier"); } -+ strcpy(x->x_gui.x_font, sys_font); } - if(x->x_gui.x_fsf.x_rcv_able) - pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv); - x->x_gui.x_ldx = ldx; -Index: m_pd.h -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v -retrieving revision 1.16.2.2 -diff -u -w -r1.16.2.2 m_pd.h ---- m_pd.h 18 Jul 2007 00:20:12 -0000 1.16.2.2 -+++ m_pd.h 3 Aug 2007 06:36:36 -0000 -@@ -368,6 +368,8 @@ - EXTERN void canvas_makefilename(t_glist *c, char *file, - char *result,int resultsize); - EXTERN t_symbol *canvas_getdir(t_glist *x); -+EXTERN char sys_font[]; /* default typeface set in s_main.c */ -+EXTERN char sys_fontweight[]; /* default font weight set in s_main.c */ - EXTERN int sys_fontwidth(int fontsize); - EXTERN int sys_fontheight(int fontsize); - EXTERN void canvas_dataproperties(t_glist *x, t_scalar *sc, t_binbuf *b); -Index: s_inter.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/s_inter.c,v -retrieving revision 1.18.2.1 -diff -u -w -r1.18.2.1 s_inter.c ---- s_inter.c 18 Jul 2007 00:20:12 -0000 1.18.2.1 -+++ s_inter.c 3 Aug 2007 06:36:36 -0000 -@@ -87,7 +87,6 @@ - - extern char *pd_version; - extern int sys_guisetportnumber; --extern char sys_font[]; /* tb: typeface */ - - static int sys_nfdpoll; - static t_fdpoll *sys_fdpoll; -@@ -844,7 +843,8 @@ - - #define FIRSTPORTNUM 5400 - --static int defaultfontshit[] = { -+#define MAXFONTS 21 -+static int defaultfontshit[MAXFONTS] = { - 8, 5, 9, 10, 6, 10, 12, 7, 13, 14, 9, 17, 16, 10, 19, 24, 15, 28, - 24, 15, 28}; - #define NDEFAULTFONT (sizeof(defaultfontshit)/sizeof(*defaultfontshit)) -@@ -1248,8 +1248,8 @@ - #endif - sys_get_audio_apis(buf); - sys_get_midi_apis(buf2); -- sys_vgui("pdtk_pd_startup {%s} %s %s {%s}\n", pd_version, buf, buf2, -- sys_font); -+ sys_vgui("pdtk_pd_startup {%s} %s %s {%s} %s\n", pd_version, buf, buf2, -+ sys_font, sys_fontweight); - } - return (0); - -Index: s_main.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/s_main.c,v -retrieving revision 1.28 -diff -u -w -r1.28 s_main.c ---- s_main.c 4 Oct 2006 19:35:06 -0000 1.28 -+++ s_main.c 3 Aug 2007 06:36:37 -0000 -@@ -58,7 +58,12 @@ - int sys_midiindevlist[MAXMIDIINDEV] = {1}; - int sys_midioutdevlist[MAXMIDIOUTDEV] = {1}; - --char sys_font[100] = "courier"; /* tb: font name */ -+#ifdef __APPLE__ -+char sys_font[] = "Monaco"; /* tb: font name */ -+#else -+char sys_font[] = "Bitstream Vera Sans Mono"; /* tb: font name */ -+#endif -+char sys_fontweight[] = "normal"; /* currently only used for iemguis */ - static int sys_main_srate; - static int sys_main_advance; - static int sys_listplease; -@@ -106,8 +111,8 @@ - in the six fonts. */ - - static t_fontinfo sys_fontlist[] = { -- {8, 6, 10, 0, 0, 0}, {10, 7, 13, 0, 0, 0}, {12, 9, 16, 0, 0, 0}, -- {16, 10, 20, 0, 0, 0}, {24, 15, 25, 0, 0, 0}, {36, 25, 45, 0, 0, 0}}; -+ {8, 5, 11, 8, 5, 11}, {10, 6, 13, 10, 6, 13}, {12, 7, 16, 12, 7, 16}, -+ {16, 10, 19, 16, 10, 19}, {24, 14, 29, 24, 14, 29}, {36, 23, 44, 36, 23, 44}}; - #define NFONT (sizeof(sys_fontlist)/sizeof(*sys_fontlist)) - - /* here are the actual font size structs on msp's systems: -@@ -158,11 +163,7 @@ - } - - int sys_defaultfont; --#ifdef MSW --#define DEFAULTFONT 12 --#else - #define DEFAULTFONT 10 --#endif - - static void openit(const char *dirname, const char *filename) - { -@@ -206,11 +207,6 @@ - atom_getintarg(3 * j + 3, argc, argv) <= wantwidth) - best = j; - } -- /* best is now the host font index for the desired font index i. */ -- sys_fontlist[i].fi_hostfontsize = -- atom_getintarg(3 * best + 2, argc, argv); -- sys_fontlist[i].fi_width = atom_getintarg(3 * best + 3, argc, argv); -- sys_fontlist[i].fi_height = atom_getintarg(3 * best + 4, argc, argv); - } - #if 0 - for (i = 0; i < 6; i++) -@@ -382,8 +378,9 @@ - "-helppath <path> -- add to help file search path\n", - "-open <file> -- open file(s) on startup\n", - "-lib <file> -- load object library(s)\n", --"-font <n> -- specify default font size in points\n", --"-typeface <name> -- specify default font (default: courier)\n", -+"-font-size <n> -- specify default font size in points\n", -+"-font-face <name> -- specify default font (default: Bitstream Vera Sans Mono)\n", -+"-font-weight <name>-- specify default font weight (normal or bold)\n", - "-verbose -- extra printout on startup and when searching for files\n", - "-version -- don't run Pd; just print out which version it is \n", - "-d <n> -- specify debug level\n", -@@ -737,21 +734,25 @@ - sys_externlist = namelist_append_files(sys_externlist, argv[1]); - argc -= 2; argv += 2; - } -- else if (!strcmp(*argv, "-font") && argc > 1) -+ else if ((!strcmp(*argv, "-font-size") || !strcmp(*argv, "-font")) && argc > 1) - { - sys_defaultfont = sys_nearestfontsize(atoi(argv[1])); - argc -= 2; - argv += 2; - } -- /* tb: font name { */ -- else if (!strcmp(*argv, "-typeface") && argc > 1) -+ else if ((!strcmp(*argv, "-font-face") || !strcmp(*argv, "-typeface")) && argc > 1) - { - strncpy(sys_font,*(argv+1),sizeof(sys_font)-1); - sys_font[sizeof(sys_font)-1] = 0; - argc -= 2; - argv += 2; - } -- /* } tb */ -+ else if (!strcmp(*argv, "-font-weight") && argc > 1) -+ { -+ strcpy(sys_fontweight,*(argv+1)); -+ argc -= 2; -+ argv += 2; -+ } - else if (!strcmp(*argv, "-verbose")) - { - sys_verbose++; -Index: u_main.tk -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v -retrieving revision 1.25 -diff -u -w -r1.25 u_main.tk ---- u_main.tk 9 Oct 2006 04:36:12 -0000 1.25 -+++ u_main.tk 3 Aug 2007 06:36:37 -0000 -@@ -1,14 +1,4 @@ - #!/usr/bin/wish -- --# set pd_nt (bad name) 0 for unix, 1 for microsoft, and 2 for Mac OSX. --if { $tcl_platform(platform) == "windows" } { -- set pd_nt 1 --} elseif { $tcl_platform(os) == "Darwin" } { -- set pd_nt 2 --} else { -- set pd_nt 0 --} -- - # Copyright (c) 1997-1999 Miller Puckette. - # For information on usage and redistribution, and for a DISCLAIMER OF ALL - # WARRANTIES, see the file, "LICENSE.txt," in this distribution. -@@ -21,6 +11,35 @@ - # - # all this changes are labeled with #######iemlib########## - -+# set pd_nt (bad name) 0 for unix, 1 for microsoft, and 2 for Mac OSX. -+if { $tcl_platform(platform) == "windows" } { -+ set pd_nt 1 -+ set defaultFontFamily {Bitstream Vera Sans Mono} -+ font create menuFont -family Tahoma -size 11 -+} elseif { $tcl_platform(os) == "Darwin" } { -+ set pd_nt 2 -+ set defaultFontFamily Monaco -+} else { -+ set pd_nt 0 -+ set defaultFontFamily {Bitstream Vera Sans Mono} -+} -+ -+# start Pd-extended font hacks ----------------------------- -+ -+# Pd-0.39.2-extended hacks to make font/box sizes the same across platform -+puts stderr "tk scaling is [tk scaling]" -+tk scaling 1 -+ -+# this font is for the Pd Window console text -+font create console_font -family $defaultFontFamily -size 12 -weight normal -+# this font is for text in Pd windows -+font create text_font -family {Times} -size 14 -weight normal -+# for text in Properties Panels and other panes -+font create highlight_font -family $defaultFontFamily -size 14 -weight bold -+ -+# end Pd-extended font hacks ----------------------------- -+ -+ - # Tearoff is set to true by default: - set pd_tearoff 1 - -@@ -44,12 +63,8 @@ - if {$pd_nt == 2} { - # turn on James Tittle II's fast drawing - set tk::mac::useCGDrawing 1 -- # set minimum line size for anti-aliasing. If set to 1 or 0, then every -- # line will be anti-aliased. While this makes connections and circles in -- # [bng] and such look really good, it makes boxes and messages look out of -- # focus. Setting this to 2 makes it so the thick audio rate connections -- # are anti-aliased. <hans@at.or.at> 2005-06-09 -- set tk::mac::CGAntialiasLimit 2 -+# anti-alias all lines that need it -+ set tk::mac::CGAntialiasLimit 0 - global pd_guidir - global pd_tearoff - set pd_gui2 [string range $argv0 0 [expr [string last / $argv0 ] - 1]] -@@ -132,6 +147,15 @@ - .mbar add cascade -label "Help" -menu .mbar.help - } - -+# fix menu font size on Windows with tk scaling = 1 -+if {$pd_nt == 1} { -+ .mbar.file configure -font menuFont -+ .mbar.find configure -font menuFont -+ .mbar.windows configure -font menuFont -+ .mbar.audio configure -font menuFont -+ .mbar.help configure -font menuFont -+} -+ - set ctrls_audio_on 0 - set ctrls_meter_on 0 - set ctrls_inlevel 0 -@@ -175,7 +199,7 @@ - - - frame .printout --text .printout.text -relief raised -bd 2 -font -*-courier-bold--normal--12-* \ -+text .printout.text -relief raised -bd 2 -font console_font \ - -yscrollcommand ".printout.scroll set" -width 80 - # .printout.text insert end "\n\n\n\n\n\n\n\n\n\n" - scrollbar .printout.scroll -command ".printout.text yview" -@@ -364,7 +388,7 @@ - global pd_myversion - set name [format ".help%d" $doc_number] - toplevel $name -- text $name.text -relief raised -bd 2 -font -*-times-regular--normal--14-* \ -+ text $name.text -relief raised -bd 2 -font text_font \ - -yscrollcommand "$name.scroll set" -background white - scrollbar $name.scroll -command "$name.text yview" - pack $name.scroll -side right -fill y -@@ -1142,6 +1166,18 @@ - $name.popup add command -label {Help} \ - -command [concat popup_action $name 2] - -+# fix menu font size on Windows with tk scaling = 1 -+if {$pd_nt == 1} { -+ $name.m.file configure -font menuFont -+ $name.m.edit configure -font menuFont -+ $name.m.find configure -font menuFont -+ $name.m.put configure -font menuFont -+ $name.m.windows configure -font menuFont -+ $name.m.audio configure -font menuFont -+ $name.m.help configure -font menuFont -+ $name.popup configure -font menuFont -+} -+ - # WM protocol - wm protocol $name WM_DELETE_WINDOW [concat menu_close $name] - -@@ -1266,6 +1302,7 @@ - global pd_nt - global pd_array_listview_page - global pd_array_listview_id -+ global fontname fontweight - set pd_array_listview_page($arrayName) $page - set pd_array_listview_id($arrayName) $id - set windowName [format ".%sArrayWindow" $arrayName] -@@ -1279,8 +1316,7 @@ - set $windowName.lb [listbox $windowName.lb -height 20 -width 25\ - -selectmode extended \ - -relief solid -background white -borderwidth 1 \ -- -font [format -*-courier-bold--normal--%d-* \ -- $font] \ -+ -font [format {{%s} %d %s} $fontname $font $fontweight]\ - -yscrollcommand "$windowName.lb.sb set"] - set $windowName.lb.sb [scrollbar $windowName.lb.sb \ - -command "$windowName.lb yview" -orient vertical] -@@ -1384,9 +1420,7 @@ - proc pdtk_array_listview_edit {arrayName page font} { - global pd_array_listview_entry - global pd_nt -- if {$pd_nt == 0} { -- set font [expr $font - 2] -- } -+ global fontname fontweight - set lbName [format ".%sArrayWindow.lb" $arrayName] - if {[winfo exists $lbName.entry]} { - pdtk_array_listview_update_entry \ -@@ -1398,7 +1432,7 @@ - set bbox [$lbName bbox $itemNum] - set y [expr [lindex $bbox 1] - 4] - set $lbName.entry [entry $lbName.entry \ -- -font [format -*-courier-bold--normal--%d-* $font]] -+ -font [format {{%s} %d %s} $fontname $font $fontweight]] - $lbName.entry insert 0 [] - place configure $lbName.entry -relx 0 -y $y -relwidth 1 - lower $lbName.entry -@@ -1874,6 +1908,8 @@ - - set vid [string trimleft $id .] - -+ global pd_nt -+ - set var_gatomwidth [concat gatomwidth_$vid] - global $var_gatomwidth - set var_gatomlo [concat gatomlo_$vid] -@@ -1898,87 +1934,96 @@ - set $var_gatomsymto [gatom_unescape $symto] - - toplevel $id -- wm title $id {Atom} -+ wm title $id "atom box properties" -+ wm resizable $id 0 0 - wm protocol $id WM_DELETE_WINDOW [concat dogatom_cancel $id] - -- frame $id.buttonframe -- pack $id.buttonframe -side bottom -fill x -pady 2m -+ frame $id.params -height 7 -+ pack $id.params -side top -+ label $id.params.entryname -text "width" -+ entry $id.params.entry -textvariable $var_gatomwidth -width 4 -+ pack $id.params.entryname $id.params.entry -side left -+ -+ labelframe $id.limits -text "limits" -padx 15 -pady 4 -borderwidth 1 \ -+ -font highlight_font -+ pack $id.limits -side top -fill x -+ frame $id.limits.lower -+ pack $id.limits.lower -side left -+ label $id.limits.lower.entryname -text "lower" -+ entry $id.limits.lower.entry -textvariable $var_gatomlo -width 8 -+ pack $id.limits.lower.entryname $id.limits.lower.entry -side left -+ frame $id.limits.upper -+ pack $id.limits.upper -side left -+ frame $id.limits.upper.spacer -width 20 -+ label $id.limits.upper.entryname -text "upper" -+ entry $id.limits.upper.entry -textvariable $var_gatomhi -width 8 -+ pack $id.limits.upper.spacer $id.limits.upper.entryname \ -+ $id.limits.upper.entry -side left -+ -+ frame $id.spacer1 -height 7 -+ pack $id.spacer1 -side top -+ -+ labelframe $id.label -text "label" -padx 5 -pady 4 -borderwidth 1 \ -+ -font highlight_font -+ pack $id.label -side top -fill x -+ frame $id.label.name -+ pack $id.label.name -side top -+ entry $id.label.name.entry -textvariable $var_gatomlabel -width 33 -+ pack $id.label.name.entry -side left -+ frame $id.label.radio -+ pack $id.label.radio -side top -+ radiobutton $id.label.radio.left -value 0 \ -+ -variable $var_gatomwherelabel \ -+ -text "left " -justify left -+ radiobutton $id.label.radio.right -value 1 \ -+ -variable $var_gatomwherelabel \ -+ -text "right" -justify left -+ radiobutton $id.label.radio.top -value 2 \ -+ -variable $var_gatomwherelabel \ -+ -text "top" -justify left -+ radiobutton $id.label.radio.bottom -value 3 \ -+ -variable $var_gatomwherelabel \ -+ -text "bottom" -justify left -+ pack $id.label.radio.left -side left -anchor w -+ pack $id.label.radio.right -side right -anchor w -+ pack $id.label.radio.top -side top -anchor w -+ pack $id.label.radio.bottom -side bottom -anchor w -+ -+ frame $id.spacer2 -height 7 -+ pack $id.spacer2 -side top -+ -+ labelframe $id.s_r -text "messages" -padx 5 -pady 4 -borderwidth 1 \ -+ -font highlight_font -+ pack $id.s_r -side top -fill x -+ frame $id.s_r.paramsymto -+ pack $id.s_r.paramsymto -side top -anchor e -+ label $id.s_r.paramsymto.entryname -text "send symbol" -+ entry $id.s_r.paramsymto.entry -textvariable $var_gatomsymto -width 21 -+ pack $id.s_r.paramsymto.entry $id.s_r.paramsymto.entryname -side right -+ -+ frame $id.s_r.paramsymfrom -+ pack $id.s_r.paramsymfrom -side top -anchor e -+ label $id.s_r.paramsymfrom.entryname -text "receive symbol" -+ entry $id.s_r.paramsymfrom.entry -textvariable $var_gatomsymfrom -width 21 -+ pack $id.s_r.paramsymfrom.entry $id.s_r.paramsymfrom.entryname -side right -+ -+ frame $id.buttonframe -pady 5 -+ pack $id.buttonframe -side top -fill x -pady 2m - button $id.buttonframe.cancel -text {Cancel}\ - -command "dogatom_cancel $id" -+ pack $id.buttonframe.cancel -side left -expand 1 - button $id.buttonframe.apply -text {Apply}\ - -command "dogatom_apply $id" -+ pack $id.buttonframe.apply -side left -expand 1 - button $id.buttonframe.ok -text {OK}\ - -command "dogatom_ok $id" -- pack $id.buttonframe.cancel -side left -expand 1 -- pack $id.buttonframe.apply -side left -expand 1 - pack $id.buttonframe.ok -side left -expand 1 - -- frame $id.paramsymto -- pack $id.paramsymto -side bottom -- label $id.paramsymto.entryname -text {send symbol} -- entry $id.paramsymto.entry -textvariable $var_gatomsymto -width 20 -- pack $id.paramsymto.entryname $id.paramsymto.entry -side left -- -- frame $id.paramsymfrom -- pack $id.paramsymfrom -side bottom -- label $id.paramsymfrom.entryname -text {receive symbol} -- entry $id.paramsymfrom.entry -textvariable $var_gatomsymfrom -width 20 -- pack $id.paramsymfrom.entryname $id.paramsymfrom.entry -side left -- -- frame $id.radio -- pack $id.radio -side bottom -- label $id.radio.label -text {show label on:} -- frame $id.radio.l -- frame $id.radio.r -- pack $id.radio.label -side top -- pack $id.radio.l $id.radio.r -side left -- radiobutton $id.radio.l.radio0 -value 0 \ -- -variable $var_gatomwherelabel \ -- -text "left" -- radiobutton $id.radio.l.radio1 -value 1 \ -- -variable $var_gatomwherelabel \ -- -text "right" -- radiobutton $id.radio.r.radio2 -value 2 \ -- -variable $var_gatomwherelabel \ -- -text "top" -- radiobutton $id.radio.r.radio3 -value 3 \ -- -variable $var_gatomwherelabel \ -- -text "bottom" -- pack $id.radio.l.radio0 $id.radio.l.radio1 -side top -anchor w -- pack $id.radio.r.radio2 $id.radio.r.radio3 -side top -anchor w -- -- -- frame $id.paramlabel -- pack $id.paramlabel -side bottom -- label $id.paramlabel.entryname -text label -- entry $id.paramlabel.entry -textvariable $var_gatomlabel -width 20 -- pack $id.paramlabel.entryname $id.paramlabel.entry -side left -- -- frame $id.paramhi -- pack $id.paramhi -side bottom -- label $id.paramhi.entryname -text "upper limit" -- entry $id.paramhi.entry -textvariable $var_gatomhi -width 8 -- pack $id.paramhi.entryname $id.paramhi.entry -side left -- -- frame $id.paramlo -- pack $id.paramlo -side bottom -- label $id.paramlo.entryname -text "lower limit" -- entry $id.paramlo.entry -textvariable $var_gatomlo -width 8 -- pack $id.paramlo.entryname $id.paramlo.entry -side left -- -- frame $id.params -- pack $id.params -side bottom -- label $id.params.entryname -text width -- entry $id.params.entry -textvariable $var_gatomwidth -width 4 -- pack $id.params.entryname $id.params.entry -side left -- -- -- -- bind $id.paramhi.entry <KeyPress-Return> [concat dogatom_ok $id] -- bind $id.paramlo.entry <KeyPress-Return> [concat dogatom_ok $id] -+ bind $id.limits.upper.entry <KeyPress-Return> [concat dogatom_ok $id] -+ bind $id.limits.lower.entry <KeyPress-Return> [concat dogatom_ok $id] - bind $id.params.entry <KeyPress-Return> [concat dogatom_ok $id] -- pdtk_standardkeybindings $id.paramhi.entry -- pdtk_standardkeybindings $id.paramlo.entry -+ pdtk_standardkeybindings $id.limits.upper.entry -+ pdtk_standardkeybindings $id.limits.lower.entry - pdtk_standardkeybindings $id.params.entry - $id.params.entry select from 0 - $id.params.entry select adjust end -@@ -2131,7 +2176,7 @@ - - if {[eval concat $$var_iemgui_gn_fs] < $iemgui_define_min_fontsize} { - set $var_iemgui_gn_fs $iemgui_define_min_fontsize -- $id.gnfs.fs_ent configure -textvariable $var_iemgui_gn_fs -+ $id.label.fs_ent configure -textvariable $var_iemgui_gn_fs - } - } - -@@ -2145,20 +2190,20 @@ - set var_iemgui_lcol [concat iemgui_lcol_$vid] - global $var_iemgui_lcol - -- $id.col_example_choose.lb_bk configure \ -+ $id.colors.sections.lb_bk configure \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \ - -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] - - if { [eval concat $$var_iemgui_fcol] >= 0 } { -- $id.col_example_choose.fr_bk configure \ -+ $id.colors.sections.fr_bk configure \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \ - -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] - } else { -- $id.col_example_choose.fr_bk configure \ -+ $id.colors.sections.fr_bk configure \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -@@ -2242,17 +2287,27 @@ - } - } - --proc iemgui_toggle_font {id} { -+proc iemgui_toggle_font {id gn_f} { - set vid [string trimleft $id .] - - set var_iemgui_gn_f [concat iemgui_gn_f_$vid] - global $var_iemgui_gn_f -+ global fontname fontweight - -- set $var_iemgui_gn_f [expr [eval concat $$var_iemgui_gn_f] + 1] -- if {[eval concat $$var_iemgui_gn_f] > 2} {set $var_iemgui_gn_f 0} -- if {[eval concat $$var_iemgui_gn_f] == 0} {$id.gnfs.fb configure -text "courier" -font {courier 10 bold}} -- if {[eval concat $$var_iemgui_gn_f] == 1} {$id.gnfs.fb configure -text "helvetica" -font {helvetica 10 bold}} -- if {[eval concat $$var_iemgui_gn_f] == 2} {$id.gnfs.fb configure -text "times" -font {times 10 bold}} -+ set $var_iemgui_gn_f $gn_f -+ -+ switch -- $gn_f { -+ 0 { set current_font $fontname} -+ 1 { set current_font "Helvetica" } -+ 2 { set current_font "Times" } -+ } -+ set current_font_spec "{$current_font} 12 $fontweight" -+ -+ $id.label.fontpopup_label configure -text $current_font \ -+ -font $current_font_spec -+ $id.label.name_entry configure -font $current_font_spec -+ $id.colors.sections.fr_bk configure -font $current_font_spec -+ $id.colors.sections.lb_bk configure -font $current_font_spec - } - - proc iemgui_lb {id} { -@@ -2398,6 +2453,9 @@ - - set vid [string trimleft $id .] - -+ global pd_nt -+ global fontname fontweight -+ - set var_iemgui_wdt [concat iemgui_wdt_$vid] - global $var_iemgui_wdt - set var_iemgui_min_wdt [concat iemgui_min_wdt_$vid] -@@ -2485,7 +2543,8 @@ - set $var_iemgui_l2_f1_b0 0 - - toplevel $id -- wm title $id [format "%s-PROPERTIES" $mainheader] -+ wm title $id [format "%s Properties" $mainheader] -+ wm resizable $id 0 0 - wm protocol $id WM_DELETE_WINDOW [concat iemgui_cancel $id] - - frame $id.dim -@@ -2518,7 +2577,7 @@ - $id.rng.max_lab $id.rng.max_ent -side left} } - - if { [eval concat $$var_iemgui_lin0_log1] >= 0 || [eval concat $$var_iemgui_loadbang] >= 0 || [eval concat $$var_iemgui_num] > 0 || [eval concat $$var_iemgui_steady] >= 0 } { -- label $id.space1 -text "---------------------------------" -+ label $id.space1 -text "" - pack $id.space1 -side top } - - frame $id.para -@@ -2547,157 +2606,189 @@ - pack $id.para.dummy3 $id.para.num_lab $id.para.num_ent -side left -expand 1} - if {[eval concat $$var_iemgui_steady] >= 0} { - pack $id.para.dummy3 $id.para.stdy_jmp -side left -expand 1} -- if { $snd != "nosndno" || $rcv != "norcvno" } { -- label $id.space2 -text "---------------------------------" -- pack $id.space2 -side top } -- -- frame $id.snd -- pack $id.snd -side top -- label $id.snd.dummy1 -text "" -width 2 -- label $id.snd.lab -text "send-symbol:" -width 12 -- entry $id.snd.ent -textvariable $var_iemgui_snd -width 20 -+ -+ frame $id.spacer0 -height 4 -+ pack $id.spacer0 -side top -+ -+ labelframe $id.s_r -borderwidth 1 -pady 4 -text "messages" \ -+ -font highlight_font -+ pack $id.s_r -side top -fill x -ipadx 5 -+ frame $id.s_r.send -+ pack $id.s_r.send -side top -+ label $id.s_r.send.lab -text " send-symbol:" -width 12 -justify right -+ entry $id.s_r.send.ent -textvariable $var_iemgui_snd -width 22 - if { $snd != "nosndno" } { -- pack $id.snd.dummy1 $id.snd.lab $id.snd.ent -side left} -+ pack $id.s_r.send.lab $id.s_r.send.ent -side left} - -- frame $id.rcv -- pack $id.rcv -side top -- label $id.rcv.lab -text "receive-symbol:" -width 15 -- entry $id.rcv.ent -textvariable $var_iemgui_rcv -width 20 -+ frame $id.s_r.receive -+ pack $id.s_r.receive -side top -+ label $id.s_r.receive.lab -text "receive-symbol:" -width 12 -justify right -+ entry $id.s_r.receive.ent -textvariable $var_iemgui_rcv -width 22 - if { $rcv != "norcvno" } { -- pack $id.rcv.lab $id.rcv.ent -side left} -+ pack $id.s_r.receive.lab $id.s_r.receive.ent -side left} - -- frame $id.gnam -- pack $id.gnam -side top -- label $id.gnam.head -text "--------------label:---------------" -- label $id.gnam.dummy1 -text "" -width 1 -- label $id.gnam.lab -text "name:" -width 6 -- entry $id.gnam.ent -textvariable $var_iemgui_gui_nam -width 29 -- label $id.gnam.dummy2 -text "" -width 1 -- pack $id.gnam.head -side top -- pack $id.gnam.dummy1 $id.gnam.lab $id.gnam.ent $id.gnam.dummy2 -side left -- -- frame $id.gnxy -- pack $id.gnxy -side top -- label $id.gnxy.x_lab -text "x_off:" -width 6 -- entry $id.gnxy.x_ent -textvariable $var_iemgui_gn_dx -width 5 -- label $id.gnxy.dummy1 -text " " -width 10 -- label $id.gnxy.y_lab -text "y_off:" -width 6 -- entry $id.gnxy.y_ent -textvariable $var_iemgui_gn_dy -width 5 -- pack $id.gnxy.x_lab $id.gnxy.x_ent $id.gnxy.dummy1 \ -- $id.gnxy.y_lab $id.gnxy.y_ent -side left -- -- frame $id.gnfs -- pack $id.gnfs -side top -- label $id.gnfs.f_lab -text "font:" -width 6 -- if {[eval concat $$var_iemgui_gn_f] == 0} { -- button $id.gnfs.fb -text "courier" -font {courier 10 bold} -width 7 -command "iemgui_toggle_font $id" } -- if {[eval concat $$var_iemgui_gn_f] == 1} { -- button $id.gnfs.fb -text "helvetica" -font {helvetica 10 bold} -width 7 -command "iemgui_toggle_font $id" } -- if {[eval concat $$var_iemgui_gn_f] == 2} { -- button $id.gnfs.fb -text "times" -font {times 10 bold} -width 7 -command "iemgui_toggle_font $id" } -- label $id.gnfs.dummy1 -text "" -width 1 -- label $id.gnfs.fs_lab -text "fontsize:" -width 8 -- entry $id.gnfs.fs_ent -textvariable $var_iemgui_gn_fs -width 5 -- pack $id.gnfs.f_lab $id.gnfs.fb $id.gnfs.dummy1 \ -- $id.gnfs.fs_lab $id.gnfs.fs_ent -side left -- -- label $id.col_head -text "--------------colors:--------------" -- pack $id.col_head -side top -- -- frame $id.col_select -- pack $id.col_select -side top -- radiobutton $id.col_select.radio0 -value 0 -variable $var_iemgui_l2_f1_b0 \ -- -text "backgd" -width 5 -- radiobutton $id.col_select.radio1 -value 1 -variable $var_iemgui_l2_f1_b0 \ -- -text "front" -width 5 -- radiobutton $id.col_select.radio2 -value 2 -variable $var_iemgui_l2_f1_b0 \ -- -text "label" -width 5 -+# get the current font name from the int given from C-space (gn_f) -+ set current_font $fontname -+ if {[eval concat $$var_iemgui_gn_f] == 1} \ -+ { set current_font "Helvetica" } -+ if {[eval concat $$var_iemgui_gn_f] == 2} \ -+ { set current_font "Times" } -+ -+ frame $id.spacer1 -height 7 -+ pack $id.spacer1 -side top -+ -+ labelframe $id.label -borderwidth 1 -text "label" -pady 4 \ -+ -font highlight_font -+ pack $id.label -side top -fill x -+ entry $id.label.name_entry -textvariable $var_iemgui_gui_nam -width 30 \ -+ -font [list $current_font 12 $fontweight] -+ pack $id.label.name_entry -side top -expand yes -fill both -padx 5 -+ -+ frame $id.label.xy -padx 27 -pady 1 -+ pack $id.label.xy -side top -+ label $id.label.xy.x_lab -text "x offset" -width 6 -+ entry $id.label.xy.x_entry -textvariable $var_iemgui_gn_dx -width 5 -+ label $id.label.xy.dummy1 -text " " -width 2 -+ label $id.label.xy.y_lab -text "y offset" -width 6 -+ entry $id.label.xy.y_entry -textvariable $var_iemgui_gn_dy -width 5 -+ pack $id.label.xy.x_lab $id.label.xy.x_entry $id.label.xy.dummy1 \ -+ $id.label.xy.y_lab $id.label.xy.y_entry -side left -anchor e -+ -+ label $id.label.fontpopup_label -text $current_font \ -+ -relief groove -font [list $current_font 12 $fontweight] -padx 5 -+ pack $id.label.fontpopup_label -side left -anchor w -expand yes -fill x -+ label $id.label.fontsize_label -text "size" -width 4 -+ entry $id.label.fontsize_entry -textvariable $var_iemgui_gn_fs -width 5 -+ pack $id.label.fontsize_entry $id.label.fontsize_label \ -+ -side right -anchor e -padx 5 -pady 5 -+ menu $id.popup -+ $id.popup add command \ -+ -label $fontname \ -+ -font [format {{%s} 12 %s} $fontname $fontweight] \ -+ -command "iemgui_toggle_font $id 0" -+ $id.popup add command \ -+ -label "Helvetica" \ -+ -font [format {Helvetica 12 %s} $fontweight] \ -+ -command "iemgui_toggle_font $id 1" -+ $id.popup add command \ -+ -label "Times" \ -+ -font [format {Times 12 %s} $fontweight] \ -+ -command "iemgui_toggle_font $id 2" -+ bind $id.label.fontpopup_label <Button> \ -+ [list tk_popup $id.popup %X %Y] -+ -+ frame $id.spacer2 -height 7 -+ pack $id.spacer2 -side top -+ -+ labelframe $id.colors -borderwidth 1 -text "colors" -font highlight_font -+ pack $id.colors -fill x -ipadx 5 -ipady 4 -+ -+ frame $id.colors.select -+ pack $id.colors.select -side top -+ radiobutton $id.colors.select.radio0 -value 0 -variable \ -+ $var_iemgui_l2_f1_b0 -text "background" -width 10 -justify left -+ radiobutton $id.colors.select.radio1 -value 1 -variable \ -+ $var_iemgui_l2_f1_b0 -text "front" -width 5 -justify left -+ radiobutton $id.colors.select.radio2 -value 2 -variable \ -+ $var_iemgui_l2_f1_b0 -text "label" -width 5 -justify left - if { [eval concat $$var_iemgui_fcol] >= 0 } { -- pack $id.col_select.radio0 $id.col_select.radio1 $id.col_select.radio2 -side left -- } else {pack $id.col_select.radio0 $id.col_select.radio2 -side left} -+ pack $id.colors.select.radio0 $id.colors.select.radio1 \ -+ $id.colors.select.radio2 -side left -+ } else { -+ pack $id.colors.select.radio0 $id.colors.select.radio2 -side left \ -+ } - -- frame $id.col_example_choose -- pack $id.col_example_choose -side top -- button $id.col_example_choose.but -text "compose color" -width 10 \ -+ frame $id.colors.sections -+ pack $id.colors.sections -side top -+ button $id.colors.sections.but -text "compose color" -width 12 \ - -command "iemgui_choose_col_bkfrlb $id" -- label $id.col_example_choose.dummy1 -text "" -width 1 -+ pack $id.colors.sections.but -side left -anchor w -padx 10 -pady 5 \ -+ -expand yes -fill x - if { [eval concat $$var_iemgui_fcol] >= 0 } { -- button $id.col_example_choose.fr_bk -text "o=||=o" -width 5 \ -+ label $id.colors.sections.fr_bk -text "o=||=o" -width 6 \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \ -- -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] -pady 2 -+ -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_fcol]] \ -+ -font [list $current_font 12 $fontweight] -padx 2 -pady 2 -relief ridge - } else { -- button $id.col_example_choose.fr_bk -text "o=||=o" -width 5 \ -+ label $id.colors.sections.fr_bk -text "o=||=o" -width 6 \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -- -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] -pady 2} -- button $id.col_example_choose.lb_bk -text "testlabel" -width 7 \ -+ -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ -+ -font [list $current_font 12 $fontweight] -padx 2 -pady 2 -relief ridge -+ } -+ label $id.colors.sections.lb_bk -text "testlabel" -width 9 \ - -background [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -activebackground [format "#%6.6x" [eval concat $$var_iemgui_bcol]] \ - -foreground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \ -- -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] -pady 2 -- -- pack $id.col_example_choose.but $id.col_example_choose.dummy1 \ -- $id.col_example_choose.fr_bk $id.col_example_choose.lb_bk -side left -- -- label $id.space3 -text "------or click color preset:-------" -- pack $id.space3 -side top -+ -activeforeground [format "#%6.6x" [eval concat $$var_iemgui_lcol]] \ -+ -font [list $current_font 12 $fontweight] -padx 2 -pady 2 -relief ridge -+ pack $id.colors.sections.lb_bk $id.colors.sections.fr_bk \ -+ -side right -anchor e -expand yes -fill both -pady 7 -+ -+# color scheme by Mary Ann Benedetto http://piR2.org -+ frame $id.colors.r1 -+ pack $id.colors.r1 -side top -+ foreach i { 0 1 2 3 4 5 6 7 8 9} \ -+ hexcol { 0xFFFFFF 0xDFDFDF 0xBBBBBB 0xFFC7C6 0xFFE3C6 \ -+ 0xFEFFC6 0xC6FFC7 0xc6FEFF 0xC7C6FF 0xE3C6FF } \ -+ { -+ label $id.colors.r1.c$i -background [format "#%6.6x" $hexcol] \ -+ -activebackground [format "#%6.6x" $hexcol] -relief ridge \ -+ -padx 7 -pady 0 -+ bind $id.colors.r1.c$i <Button> [format "iemgui_preset_col %s %d" $id $hexcol] -+ } -+ pack $id.colors.r1.c0 $id.colors.r1.c1 $id.colors.r1.c2 $id.colors.r1.c3 \ -+ $id.colors.r1.c4 $id.colors.r1.c5 $id.colors.r1.c6 $id.colors.r1.c7 \ -+ $id.colors.r1.c8 $id.colors.r1.c9 -side left -+ -+ frame $id.colors.r2 -+ pack $id.colors.r2 -side top -+ foreach i { 0 1 2 3 4 5 6 7 8 9 } \ -+ hexcol { 0x9F9F9F 0x7C7C7C 0x606060 0xFF0400 0xFF8300 \ -+ 0xFAFF00 0x00FF04 0x00FAFF 0x0400FF 0x9C00FF } \ -+ { -+ label $id.colors.r2.c$i -background [format "#%6.6x" $hexcol] \ -+ -activebackground [format "#%6.6x" $hexcol] -relief ridge \ -+ -padx 7 -pady 0 -+ bind $id.colors.r2.c$i <Button> \ -+ [format "iemgui_preset_col %s %d" $id $hexcol] -+ } -+ pack $id.colors.r2.c0 $id.colors.r2.c1 $id.colors.r2.c2 $id.colors.r2.c3 \ -+ $id.colors.r2.c4 $id.colors.r2.c5 $id.colors.r2.c6 $id.colors.r2.c7 \ -+ $id.colors.r2.c8 $id.colors.r2.c9 -side left -+ -+ frame $id.colors.r3 -+ pack $id.colors.r3 -side top -+ foreach i { 0 1 2 3 4 5 6 7 8 9 } \ -+ hexcol { 0x404040 0x202020 0x000000 0x551312 0x553512 \ -+ 0x535512 0x0F4710 0x0E4345 0x131255 0x2F004D } \ -+ { -+ label $id.colors.r3.c$i -background [format "#%6.6x" $hexcol] \ -+ -activebackground [format "#%6.6x" $hexcol] -relief ridge \ -+ -padx 7 -pady 0 -+ bind $id.colors.r3.c$i <Button> \ -+ [format "iemgui_preset_col %s %d" $id $hexcol] -+ } -+ pack $id.colors.r3.c0 $id.colors.r3.c1 $id.colors.r3.c2 $id.colors.r3.c3 \ -+ $id.colors.r3.c4 $id.colors.r3.c5 $id.colors.r3.c6 $id.colors.r3.c7 \ -+ $id.colors.r3.c8 $id.colors.r3.c9 -side left - -- frame $id.bcol -- pack $id.bcol -side top -- foreach i { 0 1 2 3 4 5 6 7 8 9 } hexcol { 16579836 14737632 12369084 \ -- 16572640 16572608 16579784 14220504 14220540 14476540 16308476 } { -- button $id.bcol.c$i -background [format "#%6.6x" $hexcol] \ -- -activebackground [format "#%6.6x" $hexcol] \ -- -font {courier 2 normal} -padx 7 -pady 6 \ -- -command [format "iemgui_preset_col %s %d" $id $hexcol] } -- pack $id.bcol.c0 $id.bcol.c1 $id.bcol.c2 $id.bcol.c3 $id.bcol.c4 \ -- $id.bcol.c5 $id.bcol.c6 $id.bcol.c7 $id.bcol.c8 $id.bcol.c9 -side left -- -- frame $id.fcol -- pack $id.fcol -side top -- foreach i { 0 1 2 3 4 5 6 7 8 9 } hexcol { 10526880 8158332 6316128 \ -- 16525352 16559172 15263784 1370132 2684148 3952892 16003312 } { -- button $id.fcol.c$i -background [format "#%6.6x" $hexcol] \ -- -activebackground [format "#%6.6x" $hexcol] \ -- -font {courier 2 normal} -padx 7 -pady 6 \ -- -command [format "iemgui_preset_col %s %d" $id $hexcol] } -- pack $id.fcol.c0 $id.fcol.c1 $id.fcol.c2 $id.fcol.c3 $id.fcol.c4 \ -- $id.fcol.c5 $id.fcol.c6 $id.fcol.c7 $id.fcol.c8 $id.fcol.c9 -side left -- -- frame $id.lcol -- pack $id.lcol -side top -- foreach i { 0 1 2 3 4 5 6 7 8 9 } hexcol { 4210752 2105376 0 \ -- 9177096 5779456 7874580 2641940 17488 5256 5767248 } { -- button $id.lcol.c$i -background [format "#%6.6x" $hexcol] \ -- -activebackground [format "#%6.6x" $hexcol] \ -- -font {courier 2 normal} -padx 7 -pady 6 \ -- -command [format "iemgui_preset_col %s %d" $id $hexcol] } -- pack $id.lcol.c0 $id.lcol.c1 $id.lcol.c2 $id.lcol.c3 $id.lcol.c4 \ -- $id.lcol.c5 $id.lcol.c6 $id.lcol.c7 $id.lcol.c8 $id.lcol.c9 -side left -- -- -- label $id.space4 -text "---------------------------------" -- pack $id.space4 -side top -- -- frame $id.cao -+ frame $id.cao -pady 10 - pack $id.cao -side top - button $id.cao.cancel -text {Cancel} -width 6 \ - -command "iemgui_cancel $id" - label $id.cao.dummy1 -text "" -width 3 -- button $id.cao.apply -text {Apply} -width 6 \ -- -command "iemgui_apply $id" -+ button $id.cao.apply -text {Apply} -width 6 -command "iemgui_apply $id" - label $id.cao.dummy2 -text "" -width 3 - button $id.cao.ok -text {OK} -width 6 \ - -command "iemgui_ok $id" -- pack $id.cao.cancel $id.cao.dummy1 \ -- $id.cao.apply $id.cao.dummy2 \ -- $id.cao.ok -side left - -- label $id.space5 -text "" -- pack $id.space5 -side top -+ pack $id.cao.cancel $id.cao.dummy1 -side left -+ pack $id.cao.apply $id.cao.dummy2 -side left -+ pack $id.cao.ok -side left - - if {[info tclversion] < 8.4} { - bind $id <Key-Tab> {tkTabToWindow [tk_focusNext %W]} -@@ -2712,24 +2803,24 @@ - bind $id.rng.min_ent <KeyPress-Return> [concat iemgui_ok $id] - bind $id.rng.max_ent <KeyPress-Return> [concat iemgui_ok $id] - bind $id.para.num_ent <KeyPress-Return> [concat iemgui_ok $id] -- bind $id.snd.ent <KeyPress-Return> [concat iemgui_ok $id] -- bind $id.rcv.ent <KeyPress-Return> [concat iemgui_ok $id] -- bind $id.gnam.ent <KeyPress-Return> [concat iemgui_ok $id] -- bind $id.gnxy.x_ent <KeyPress-Return> [concat iemgui_ok $id] -- bind $id.gnxy.y_ent <KeyPress-Return> [concat iemgui_ok $id] -- bind $id.gnfs.fs_ent <KeyPress-Return> [concat iemgui_ok $id] -+ bind $id.s_r.send.ent <KeyPress-Return> [concat iemgui_ok $id] -+ bind $id.s_r.receive.ent <KeyPress-Return> [concat iemgui_ok $id] -+ bind $id.label.name_entry <KeyPress-Return> [concat iemgui_ok $id] -+ bind $id.label.xy.x_entry <KeyPress-Return> [concat iemgui_ok $id] -+ bind $id.label.xy.y_entry <KeyPress-Return> [concat iemgui_ok $id] -+ bind $id.label.fontsize_entry <KeyPress-Return> [concat iemgui_ok $id] - bind $id.cao.ok <KeyPress-Return> [concat iemgui_ok $id] - pdtk_standardkeybindings $id.dim.w_ent - pdtk_standardkeybindings $id.dim.h_ent - pdtk_standardkeybindings $id.rng.min_ent - pdtk_standardkeybindings $id.rng.max_ent - pdtk_standardkeybindings $id.para.num_ent -- pdtk_standardkeybindings $id.snd.ent -- pdtk_standardkeybindings $id.rcv.ent -- pdtk_standardkeybindings $id.gnam.ent -- pdtk_standardkeybindings $id.gnxy.x_ent -- pdtk_standardkeybindings $id.gnxy.y_ent -- pdtk_standardkeybindings $id.gnfs.fs_ent -+ pdtk_standardkeybindings $id.s_r.send.ent -+ pdtk_standardkeybindings $id.s_r.receive.ent -+ pdtk_standardkeybindings $id.label.name_entry -+ pdtk_standardkeybindings $id.label.xy.x_entry -+ pdtk_standardkeybindings $id.label.xy.y_entry -+ pdtk_standardkeybindings $id.label.fontsize_entry - pdtk_standardkeybindings $id.cao.ok - - $id.dim.w_ent select from 0 -@@ -2807,6 +2898,7 @@ - - toplevel $id - wm title $id {array} -+ wm resizable $id 0 0 - wm protocol $id WM_DELETE_WINDOW [concat array_cancel $id] - - frame $id.name -@@ -3264,18 +3356,21 @@ - # seven "useful" font sizes. - - # tb: user defined typefaces --proc pdtk_pd_startup {version apilist midiapilist fontname} { -+proc pdtk_pd_startup {version apilist midiapilist fontname_from_pd fontweight_from_pd} { - # puts stderr [concat $version $apilist $fontname] -- global pd_myversion pd_apilist pd_midiapilist -+ global pd_myversion pd_apilist pd_midiapilist pd_nt - set pd_myversion $version - set pd_apilist $apilist - set pd_midiapilist $midiapilist -+ global fontname fontweight -+ set fontname $fontname_from_pd -+ set fontweight $fontweight_from_pd - global pd_fontlist - set pd_fontlist {} - - set fontlist "" - foreach i {8 9 10 12 14 16 18 24 30 36} { -- set font [concat $fontname -$i bold] -+ set font [format {{%s} %d %s} $fontname_from_pd $i $fontweight_from_pd] - set pd_fontlist [linsert $pd_fontlist 100000 $font] - set width0 [font measure $font x] - set height0 [lindex [font metrics $font] 5] -@@ -3522,8 +3617,12 @@ - - # create a popup menu - proc audio_popup {name buttonname varname devlist} { -+ global pd_nt - if [winfo exists $name.popup] {destroy $name.popup} - menu $name.popup -tearoff false -+ if {$pd_nt == 1} { -+ $name.popup configure -font menuFont -+ } - # puts stderr [concat $devlist ] - for {set x 0} {$x<[llength $devlist]} {incr x} { - $name.popup add command -label [lindex $devlist $x] \ -@@ -3798,8 +3897,12 @@ - - # create a popup menu - proc midi_popup {name buttonname varname devlist} { -+ global pd_nt - if [winfo exists $name.popup] {destroy $name.popup} - menu $name.popup -tearoff false -+ if {$pd_nt == 1} { -+ $name.popup configure -font menuFont -+ } - # puts stderr [concat $devlist ] - for {set x 0} {$x<[llength $devlist]} {incr x} { - $name.popup add command -label [lindex $devlist $x] \ diff --git a/packages/patches/proxy_icon_and_modified_state-0.41.4.patch b/packages/patches/proxy_icon_and_modified_state-0.41.4.patch deleted file mode 100644 index 1ee7bb41cf6245904fbdc3e016804cdd589f5bb0..0000000000000000000000000000000000000000 --- a/packages/patches/proxy_icon_and_modified_state-0.41.4.patch +++ /dev/null @@ -1,20 +0,0 @@ -Index: g_canvas.c -=================================================================== ---- g_canvas.c (revision 9721) -+++ g_canvas.c (working copy) -@@ -598,9 +598,15 @@ - strcat(namebuf, ")"); - } - else namebuf[0] = 0; -+#ifdef __APPLE__ -+ sys_vgui("wm attributes .x%lx -modified %d -titlepath {%s/%s}\n", -+ x, x->gl_dirty, canvas_getdir(x)->s_name, x->gl_name->s_name); -+ sys_vgui("wm title .x%lx {%s%s}\n", x, x->gl_name->s_name, namebuf); -+#else - sys_vgui("wm title .x%lx {%s%c%s - %s}\n", - x, x->gl_name->s_name, (x->gl_dirty? '*' : ' '), namebuf, - canvas_getdir(x)->s_name); -+#endif - } - - void canvas_dirty(t_canvas *x, t_int n) diff --git a/packages/patches/set_cursors_in_tcl-0.41-test06.patch b/packages/patches/set_cursors_in_tcl-0.41-test06.patch deleted file mode 100644 index b34cce6858962ed5f4af14b2c7d0709145f750fd..0000000000000000000000000000000000000000 --- a/packages/patches/set_cursors_in_tcl-0.41-test06.patch +++ /dev/null @@ -1,76 +0,0 @@ -Index: u_main.tk -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v -retrieving revision 1.28 -diff -u -w -r1.28 u_main.tk ---- u_main.tk 18 Aug 2007 23:32:44 -0000 1.28 -+++ u_main.tk 6 Nov 2007 02:10:48 -0000 -@@ -31,6 +31,36 @@ - set pd_array_listview_page(0) 0 - # end jsarlo - -+# set up mouse cursors individually on each platform -+switch -- $pd_nt { 0 { -+ # GNU/Linux -+ set cursor_runmode_nothing "left_ptr" -+ set cursor_runmode_clickme "arrow" -+ set cursor_runmode_thicken "sb_v_double_arrow" -+ set cursor_runmode_addpoint "plus" -+ set cursor_editmode_nothing "hand2" -+ set cursor_editmode_connect "circle" -+ set cursor_editmode_disconnect "X_cursor" -+} 1 { -+ # Windows -+ set cursor_runmode_nothing "rigth_ptr" -+ set cursor_runmode_clickme "arrow" -+ set cursor_runmode_thicken "sb_v_double_arrow" -+ set cursor_runmode_addpoint "plus" -+ set cursor_editmode_nothing "hand2" -+ set cursor_editmode_connect "circle" -+ set cursor_editmode_disconnect "X_cursor" -+} 2 { -+ # Mac OS X -+ set cursor_runmode_nothing "arrow" -+ set cursor_runmode_clickme "center_ptr" -+ set cursor_runmode_thicken "sb_v_double_arrow" -+ set cursor_runmode_addpoint "plus" -+ set cursor_editmode_nothing "hand2" -+ set cursor_editmode_connect "circle" -+ set cursor_editmode_disconnect "X_cursor" -+} } -+ - if {$pd_nt == 1} { - global pd_guidir - global pd_tearoff -Index: g_editor.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v -retrieving revision 1.20 -diff -u -w -r1.20 g_editor.c ---- g_editor.c 9 Oct 2006 04:36:12 -0000 1.20 -+++ g_editor.c 6 Nov 2007 02:10:48 -0000 -@@ -729,17 +729,13 @@ - /* ------------------------ event handling ------------------------ */ - - static char *cursorlist[] = { --#ifdef MSW -- "right_ptr", /* CURSOR_RUNMODE_NOTHING */ --#else -- "left_ptr", /* CURSOR_RUNMODE_NOTHING */ --#endif -- "arrow", /* CURSOR_RUNMODE_CLICKME */ -- "sb_v_double_arrow", /* CURSOR_RUNMODE_THICKEN */ -- "plus", /* CURSOR_RUNMODE_ADDPOINT */ -- "hand2", /* CURSOR_EDITMODE_NOTHING */ -- "circle", /* CURSOR_EDITMODE_CONNECT */ -- "X_cursor" /* CURSOR_EDITMODE_DISCONNECT */ -+ "$cursor_runmode_nothing", -+ "$cursor_runmode_clickme", -+ "$cursor_runmode_thicken", -+ "$cursor_runmode_addpoint", -+ "$cursor_editmode_nothing", -+ "$cursor_editmode_connect", -+ "$cursor_editmode_disconnect" - }; - - void canvas_setcursor(t_canvas *x, unsigned int cursornum) diff --git a/packages/patches/show_whole_subpatch_name_in_window_title-0.41.4.patch b/packages/patches/show_whole_subpatch_name_in_window_title-0.41.4.patch deleted file mode 100644 index 1b5f1d6f152b36f1172886d567e8ae7ff8202b37..0000000000000000000000000000000000000000 --- a/packages/patches/show_whole_subpatch_name_in_window_title-0.41.4.patch +++ /dev/null @@ -1,39 +0,0 @@ -Index: g_canvas.c -=================================================================== ---- g_canvas.c (revision 9910) -+++ g_canvas.c (working copy) -@@ -1133,10 +1133,22 @@ - - /* -------------------------- subcanvases ---------------------- */ - --static void *subcanvas_new(t_symbol *s) -+static void *subcanvas_new(t_symbol *s, int argc, t_atom *argv) - { - t_atom a[6]; - t_canvas *x, *z = canvas_getcurrent(); -+ if (argc) -+ { -+ int bufsize; -+ char *buf; -+ t_binbuf *bb = binbuf_new(); -+ binbuf_addv(bb, "s", s); -+ binbuf_add(bb, argc, argv); -+ binbuf_gettext(bb, &buf, &bufsize); -+ buf[bufsize] = '\0'; -+ binbuf_free(bb); -+ s = gensym(buf); -+ } - if (!*s->s_name) s = gensym("/SUBPATCH/"); - SETFLOAT(a, 0); - SETFLOAT(a+1, GLIST_DEFCANVASYLOC); -@@ -1750,8 +1762,8 @@ - A_NULL); - - /* ----- subcanvases, which you get by typing "pd" in a box ---- */ -- class_addcreator((t_newmethod)subcanvas_new, gensym("pd"), A_DEFSYMBOL, 0); -- class_addcreator((t_newmethod)subcanvas_new, gensym("page"), A_DEFSYMBOL, 0); -+ class_addcreator((t_newmethod)subcanvas_new, gensym("pd"), A_GIMME, 0); -+ class_addcreator((t_newmethod)subcanvas_new, gensym("page"), A_GIMME, 0); - - class_addmethod(canvas_class, (t_method)canvas_click, - gensym("click"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); diff --git a/packages/patches/sine_cosine_sum_memory_leak_fix-0.41.4.patch b/packages/patches/sine_cosine_sum_memory_leak_fix-0.41.4.patch deleted file mode 100644 index 2763f42fc00cdf854219c1225abee95e3148ca4b..0000000000000000000000000000000000000000 --- a/packages/patches/sine_cosine_sum_memory_leak_fix-0.41.4.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: g_array.c -=================================================================== ---- g_array.c (revision 9700) -+++ g_array.c (working copy) -@@ -1207,7 +1207,7 @@ - - static void garray_sinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv) - { -- t_float *svec = (t_float *)t_getbytes(sizeof(t_float) * argc); -+ t_float *svec; - int npoints, i; - if (argc < 2) - { -@@ -1230,7 +1230,7 @@ - - static void garray_cosinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv) - { -- t_float *svec = (t_float *)t_getbytes(sizeof(t_float) * argc); -+ t_float *svec; - int npoints, i; - if (argc < 2) - { diff --git a/packages/patches/use_FILENAME_MAX_for_file_operations-0.41.4.patch b/packages/patches/use_FILENAME_MAX_for_file_operations-0.41.4.patch deleted file mode 100644 index fe6c2f0b5f0d28b74794d18b31e431b9ca71b3e4..0000000000000000000000000000000000000000 --- a/packages/patches/use_FILENAME_MAX_for_file_operations-0.41.4.patch +++ /dev/null @@ -1,582 +0,0 @@ -Index: m_pd.h -=================================================================== ---- m_pd.h (revision 9725) -+++ m_pd.h (working copy) -@@ -51,7 +51,7 @@ - #include <stddef.h> /* just for size_t -- how lame! */ - #endif - --#define MAXPDSTRING 1000 /* use this for anything you want */ -+#define MAXPDSTRING 1000 /* must be >= FILENAME_MAX */ - #define MAXPDARG 5 /* max number of args we can typecheck today */ - - /* signed and unsigned integer types the size of a pointer: */ -Index: g_editor.c -=================================================================== ---- g_editor.c (revision 9725) -+++ g_editor.c (working copy) -@@ -979,7 +979,7 @@ - "open," or "help." */ - static void canvas_done_popup(t_canvas *x, t_float which, t_float xpos, t_float ypos) - { -- char pathbuf[MAXPDSTRING], namebuf[MAXPDSTRING]; -+ char pathbuf[FILENAME_MAX], namebuf[FILENAME_MAX]; - t_gobj *y; - for (y = x->gl_list; y; y = y->g_next) - { -@@ -1011,7 +1011,7 @@ - t_atom *av = binbuf_getvec(ob->te_binbuf); - if (ac < 1) - return; -- atom_string(av, namebuf, MAXPDSTRING); -+ atom_string(av, namebuf, FILENAME_MAX); - dir = canvas_getdir((t_canvas *)y)->s_name; - } - else -Index: s_file.c -=================================================================== ---- s_file.c (revision 9725) -+++ s_file.c (working copy) -@@ -43,23 +43,23 @@ - - static void sys_initloadpreferences( void) - { -- char filenamebuf[MAXPDSTRING], *homedir = getenv("HOME"); -+ char filenamebuf[FILENAME_MAX], *homedir = getenv("HOME"); - int fd, length; -- char user_prefs_file[MAXPDSTRING]; /* user prefs file */ -+ char user_prefs_file[FILENAME_MAX]; /* user prefs file */ - /* default prefs embedded in the package */ -- char default_prefs_file[MAXPDSTRING]; -+ char default_prefs_file[FILENAME_MAX]; - struct stat statbuf; - -- snprintf(default_prefs_file, MAXPDSTRING, "%s/default.pdsettings", -+ snprintf(default_prefs_file, FILENAME_MAX, "%s/default.pdsettings", - sys_libdir->s_name); - if (homedir) -- snprintf(user_prefs_file, MAXPDSTRING, "%s/.pdsettings", homedir); -+ snprintf(user_prefs_file, FILENAME_MAX, "%s/.pdsettings", homedir); - if (stat(user_prefs_file, &statbuf) == 0) -- strncpy(filenamebuf, user_prefs_file, MAXPDSTRING); -+ strncpy(filenamebuf, user_prefs_file, FILENAME_MAX); - else if (stat(default_prefs_file, &statbuf) == 0) -- strncpy(filenamebuf, default_prefs_file, MAXPDSTRING); -+ strncpy(filenamebuf, default_prefs_file, FILENAME_MAX); - else return; -- filenamebuf[MAXPDSTRING-1] = 0; -+ filenamebuf[FILENAME_MAX-1] = 0; - if ((fd = open(filenamebuf, 0)) < 0) - { - if (sys_verbose) -@@ -128,17 +128,17 @@ - - static void sys_initsavepreferences( void) - { -- char filenamebuf[MAXPDSTRING], errbuf[MAXPDSTRING], -+ char filenamebuf[FILENAME_MAX], errbuf[FILENAME_MAX], - *homedir = getenv("HOME"); - FILE *fp; - - if (!homedir) - return; -- snprintf(filenamebuf, MAXPDSTRING, "%s/.pdsettings", homedir); -- filenamebuf[MAXPDSTRING-1] = 0; -+ snprintf(filenamebuf, FILENAME_MAX, "%s/.pdsettings", homedir); -+ filenamebuf[FILENAME_MAX-1] = 0; - if ((sys_prefsavefp = fopen(filenamebuf, "w")) == NULL) - { -- snprintf(errbuf, MAXPDSTRING, "%s: %s",filenamebuf, strerror(errno)); -+ snprintf(errbuf, FILENAME_MAX, "%s: %s",filenamebuf, strerror(errno)); - pd_error(0, errbuf); - } - } -@@ -228,15 +228,15 @@ - { - char cmdbuf[256]; - int nread = 0, nleft = size; -- char embedded_prefs[MAXPDSTRING]; -- char user_prefs[MAXPDSTRING]; -+ char embedded_prefs[FILENAME_MAX]; -+ char user_prefs[FILENAME_MAX]; - char *homedir = getenv("HOME"); - struct stat statbuf; - /* the 'defaults' command expects the filename without .plist at the - end */ -- snprintf(embedded_prefs, MAXPDSTRING, "%s/../org.puredata.pd", -+ snprintf(embedded_prefs, FILENAME_MAX, "%s/../org.puredata.pd", - sys_libdir->s_name); -- snprintf(user_prefs, MAXPDSTRING, -+ snprintf(user_prefs, FILENAME_MAX, - "%s/Library/Preferences/org.puredata.pd.plist", homedir); - if (stat(user_prefs, &statbuf) == 0) - snprintf(cmdbuf, 256, "defaults read org.puredata.pd %s 2> /dev/null\n", -Index: configure.in -=================================================================== ---- configure.in (revision 9725) -+++ configure.in (working copy) -@@ -347,11 +347,11 @@ - OSNUMBER=2 - if test x$jack = "xyes"; - then -- LDFLAGS=$LDFLAGS" -weak_framework Jack" -+ LDFLAGS=$LDFLAGS" -weak_framework Jackmp" - fi - if test x$jack = "xrun"; - then -- LDFLAGS=$LDFLAGS" -weak_framework Jack" -+ LDFLAGS=$LDFLAGS" -weak_framework Jackmp" - fi - fi - -Index: s_main.c -=================================================================== ---- s_main.c (revision 9725) -+++ s_main.c (working copy) -@@ -177,9 +177,9 @@ - - static void openit(const char *dirname, const char *filename) - { -- char dirbuf[MAXPDSTRING], *nameptr; -+ char dirbuf[FILENAME_MAX], *nameptr; - int fd = open_via_path(dirname, filename, "", dirbuf, &nameptr, -- MAXPDSTRING, 0); -+ FILENAME_MAX, 0); - if (fd >= 0) - { - close (fd); -@@ -430,7 +430,7 @@ - INSTALL_PREFIX. In MSW, we don't try to use INSTALL_PREFIX. */ - void sys_findprogdir(char *progname) - { -- char sbuf[MAXPDSTRING], sbuf2[MAXPDSTRING], *sp; -+ char sbuf[FILENAME_MAX], sbuf2[FILENAME_MAX], *sp; - char *lastslash; - #ifdef UNISTD - struct stat statbuf; -@@ -439,12 +439,12 @@ - /* find out by what string Pd was invoked; put answer in "sbuf". */ - #ifdef MSW - GetModuleFileName(NULL, sbuf2, sizeof(sbuf2)); -- sbuf2[MAXPDSTRING-1] = 0; -+ sbuf2[FILENAME_MAX-1] = 0; - sys_unbashfilename(sbuf2, sbuf); - #endif /* MSW */ - #ifdef UNISTD -- strncpy(sbuf, progname, MAXPDSTRING); -- sbuf[MAXPDSTRING-1] = 0; -+ strncpy(sbuf, progname, FILENAME_MAX); -+ sbuf[FILENAME_MAX-1] = 0; - #endif - lastslash = strrchr(sbuf, '/'); - if (lastslash) -@@ -491,16 +491,16 @@ - sys_libdir = gensym(sbuf2); - sys_guidir = &s_; /* in MSW the guipath just depends on the libdir */ - #else -- strncpy(sbuf, sbuf2, MAXPDSTRING-30); -- sbuf[MAXPDSTRING-30] = 0; -+ strncpy(sbuf, sbuf2, FILENAME_MAX-30); -+ sbuf[FILENAME_MAX-30] = 0; - strcat(sbuf, "/lib/pd"); - if (stat(sbuf, &statbuf) >= 0) - { - /* complicated layout: lib dir is the one we just stat-ed above */ - sys_libdir = gensym(sbuf); - /* gui lives in .../lib/pd/bin */ -- strncpy(sbuf, sbuf2, MAXPDSTRING-30); -- sbuf[MAXPDSTRING-30] = 0; -+ strncpy(sbuf, sbuf2, FILENAME_MAX-30); -+ sbuf[FILENAME_MAX-30] = 0; - strcat(sbuf, "/lib/pd/bin"); - sys_guidir = gensym(sbuf); - } -@@ -509,8 +509,8 @@ - /* simple layout: lib dir is the parent */ - sys_libdir = gensym(sbuf2); - /* gui lives in .../bin */ -- strncpy(sbuf, sbuf2, MAXPDSTRING-30); -- sbuf[MAXPDSTRING-30] = 0; -+ strncpy(sbuf, sbuf2, FILENAME_MAX-30); -+ sbuf[FILENAME_MAX-30] = 0; - strcat(sbuf, "/bin"); - sys_guidir = gensym(sbuf); - } -@@ -525,7 +525,6 @@ - - int sys_argparse(int argc, char **argv) - { -- char sbuf[MAXPDSTRING]; - int i; - while ((argc > 0) && **argv == '-') - { -@@ -901,7 +900,7 @@ - from command-line arguments */ - static void sys_afterargparse(void) - { -- char sbuf[MAXPDSTRING]; -+ char sbuf[FILENAME_MAX]; - int i; - int naudioindev, audioindev[MAXAUDIOINDEV], chindev[MAXAUDIOINDEV]; - int naudiooutdev, audiooutdev[MAXAUDIOOUTDEV], choutdev[MAXAUDIOOUTDEV]; -@@ -909,13 +908,13 @@ - int nmidiindev = 0, midiindev[MAXMIDIINDEV]; - int nmidioutdev = 0, midioutdev[MAXMIDIOUTDEV]; - /* add "extra" library to path */ -- strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30); -- sbuf[MAXPDSTRING-30] = 0; -+ strncpy(sbuf, sys_libdir->s_name, FILENAME_MAX-30); -+ sbuf[FILENAME_MAX-30] = 0; - strcat(sbuf, "/extra"); - sys_setextrapath(sbuf); - /* add "doc/5.reference" library to helppath */ -- strncpy(sbuf, sys_libdir->s_name, MAXPDSTRING-30); -- sbuf[MAXPDSTRING-30] = 0; -+ strncpy(sbuf, sys_libdir->s_name, FILENAME_MAX-30); -+ sbuf[FILENAME_MAX-30] = 0; - strcat(sbuf, "/doc/5.reference"); - sys_helppath = namelist_append_files(sys_helppath, sbuf); - /* correct to make audio and MIDI device lists zero based. On -Index: s_path.c -=================================================================== ---- s_path.c (revision 9725) -+++ s_path.c (working copy) -@@ -256,10 +256,10 @@ - #endif - ) - { -- char dirbuf[MAXPDSTRING]; -+ char dirbuf[FILENAME_MAX]; - int dirlen = (strrchr(name, '/') - name); -- if (dirlen > MAXPDSTRING-1) -- dirlen = MAXPDSTRING-1; -+ if (dirlen > FILENAME_MAX-1) -+ dirlen = FILENAME_MAX-1; - strncpy(dirbuf, name, dirlen); - dirbuf[dirlen] = 0; - *fdp = sys_trytoopenone(dirbuf, name+(dirlen+1), ext, -@@ -326,32 +326,32 @@ - search attempts. */ - void open_via_helppath(const char *name, const char *dir) - { -- char realname[MAXPDSTRING], dirbuf[MAXPDSTRING], *basename; -+ char realname[FILENAME_MAX], dirbuf[FILENAME_MAX], *basename; - /* make up a silly "dir" if none is supplied */ - const char *usedir = (*dir ? dir : "./"); - int fd; - - /* 1. "objectname-help.pd" */ -- strncpy(realname, name, MAXPDSTRING-10); -- realname[MAXPDSTRING-10] = 0; -+ strncpy(realname, name, FILENAME_MAX-10); -+ realname[FILENAME_MAX-10] = 0; - if (strlen(realname) > 3 && !strcmp(realname+strlen(realname)-3, ".pd")) - realname[strlen(realname)-3] = 0; - strcat(realname, "-help.pd"); - if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, -- MAXPDSTRING, 0, sys_helppath)) >= 0) -+ FILENAME_MAX, 0, sys_helppath)) >= 0) - goto gotone; - - /* 2. "help-objectname.pd" */ - strcpy(realname, "help-"); -- strncat(realname, name, MAXPDSTRING-10); -- realname[MAXPDSTRING-1] = 0; -+ strncat(realname, name, FILENAME_MAX-10); -+ realname[FILENAME_MAX-1] = 0; - if ((fd = do_open_via_path(dir, realname, "", dirbuf, &basename, -- MAXPDSTRING, 0, sys_helppath)) >= 0) -+ FILENAME_MAX, 0, sys_helppath)) >= 0) - goto gotone; - - /* 3. "objectname.pd" */ - if ((fd = do_open_via_path(dir, name, "", dirbuf, &basename, -- MAXPDSTRING, 0, sys_helppath)) >= 0) -+ FILENAME_MAX, 0, sys_helppath)) >= 0) - goto gotone; - post("sorry, couldn't find help patch for \"%s\"", name); - return; -@@ -379,7 +379,7 @@ - int rcargc; - char* rcargv[NUMARGS]; - char* buffer; -- char fname[MAXPDSTRING], buf[1000], *home = getenv("HOME"); -+ char fname[FILENAME_MAX], buf[1000], *home = getenv("HOME"); - int retval = 1; /* that's what we will return at the end; for now, let's think it'll be an error */ - - /* initialize rc-arg-array so we can safely clean up at the end */ -@@ -391,7 +391,7 @@ - - *fname = '\0'; - -- strncat(fname, home? home : ".", MAXPDSTRING-10); -+ strncat(fname, home? home : ".", FILENAME_MAX-10); - strcat(fname, "/"); - - strcat(fname, STARTUPNAME); -Index: g_canvas.c -=================================================================== ---- g_canvas.c (revision 9725) -+++ g_canvas.c (working copy) -@@ -1543,7 +1543,6 @@ - { - t_namelist *nl, thislist; - int fd = -1; -- char listbuf[MAXPDSTRING]; - t_canvas *y; - - /* first check if "name" is absolute (and if so, try to open) */ -@@ -1563,12 +1562,12 @@ - dir = (x2 ? canvas_getdir(x2)->s_name : "."); - for (nl = y->gl_env->ce_path; nl; nl = nl->nl_next) - { -- char realname[MAXPDSTRING]; -- strncpy(realname, dir, MAXPDSTRING); -- realname[MAXPDSTRING-3] = 0; -+ char realname[FILENAME_MAX]; -+ strncpy(realname, dir, FILENAME_MAX); -+ realname[FILENAME_MAX-3] = 0; - strcat(realname, "/"); -- strncat(realname, nl->nl_string, MAXPDSTRING-strlen(realname)); -- realname[MAXPDSTRING-1] = 0; -+ strncat(realname, nl->nl_string, FILENAME_MAX-strlen(realname)); -+ realname[FILENAME_MAX-1] = 0; - if ((fd = sys_trytoopenone(realname, name, ext, - dirresult, nameresult, size, bin)) >= 0) - return (fd); -Index: s_loader.c -=================================================================== ---- s_loader.c (revision 9725) -+++ s_loader.c (working copy) -@@ -86,7 +86,7 @@ - - static int sys_do_load_lib(t_canvas *canvas, char *objectname) - { -- char symname[MAXPDSTRING], filename[MAXPDSTRING], dirbuf[MAXPDSTRING], -+ char symname[MAXPDSTRING], filename[FILENAME_MAX], dirbuf[FILENAME_MAX], - *classname, *nameptr, altsymname[MAXPDSTRING]; - void *dlobj; - t_xxx makeout = NULL; -@@ -137,23 +137,23 @@ - #endif - /* try looking in the path for (objectname).(sys_dllextent) ... */ - if ((fd = canvas_open(canvas, objectname, sys_dllextent, -- dirbuf, &nameptr, MAXPDSTRING, 1)) >= 0) -+ dirbuf, &nameptr, FILENAME_MAX, 1)) >= 0) - goto gotone; - /* same, with the more generic sys_dllextent2 */ - if ((fd = canvas_open(canvas, objectname, sys_dllextent2, -- dirbuf, &nameptr, MAXPDSTRING, 1)) >= 0) -+ dirbuf, &nameptr, FILENAME_MAX, 1)) >= 0) - goto gotone; - /* next try (objectname)/(classname).(sys_dllextent) ... */ -- strncpy(filename, objectname, MAXPDSTRING); -+ strncpy(filename, objectname, FILENAME_MAX); - filename[MAXPDSTRING-2] = 0; - strcat(filename, "/"); -- strncat(filename, classname, MAXPDSTRING-strlen(filename)); -- filename[MAXPDSTRING-1] = 0; -+ strncat(filename, classname, FILENAME_MAX-strlen(filename)); -+ filename[FILENAME_MAX-1] = 0; - if ((fd = canvas_open(canvas, filename, sys_dllextent, -- dirbuf, &nameptr, MAXPDSTRING, 1)) >= 0) -+ dirbuf, &nameptr, FILENAME_MAX, 1)) >= 0) - goto gotone; - if ((fd = canvas_open(canvas, filename, sys_dllextent2, -- dirbuf, &nameptr, MAXPDSTRING, 1)) >= 0) -+ dirbuf, &nameptr, FILENAME_MAX, 1)) >= 0) - goto gotone; - return (0); - gotone: -@@ -161,11 +161,11 @@ - class_set_extern_dir(gensym(dirbuf)); - - /* rebuild the absolute pathname */ -- strncpy(filename, dirbuf, MAXPDSTRING); -- filename[MAXPDSTRING-2] = 0; -+ strncpy(filename, dirbuf, FILENAME_MAX); -+ filename[FILENAME_MAX-2] = 0; - strcat(filename, "/"); -- strncat(filename, nameptr, MAXPDSTRING-strlen(filename)); -- filename[MAXPDSTRING-1] = 0; -+ strncat(filename, nameptr, FILENAME_MAX-strlen(filename)); -+ filename[FILENAME_MAX-1] = 0; - - #ifdef DL_OPEN - dlobj = dlopen(filename, RTLD_NOW | RTLD_GLOBAL); -Index: m_binbuf.c -=================================================================== ---- m_binbuf.c (revision 9725) -+++ m_binbuf.c (working copy) -@@ -740,7 +740,7 @@ - - static int binbuf_doopen(char *s, int mode) - { -- char namebuf[MAXPDSTRING]; -+ char namebuf[FILENAME_MAX]; - #ifdef MSW - mode |= O_BINARY; - #endif -@@ -750,7 +750,7 @@ - - static FILE *binbuf_dofopen(char *s, char *mode) - { -- char namebuf[MAXPDSTRING]; -+ char namebuf[FILENAME_MAX]; - sys_bashfilename(s, namebuf); - return (fopen(namebuf, mode)); - } -@@ -761,7 +761,7 @@ - int fd; - int readret; - char *buf; -- char namebuf[MAXPDSTRING]; -+ char namebuf[FILENAME_MAX]; - - namebuf[0] = 0; - if (*dirname) -@@ -814,9 +814,9 @@ - int crflag) - { - int filedesc; -- char buf[MAXPDSTRING], *bufptr; -+ char buf[FILENAME_MAX], *bufptr; - if ((filedesc = canvas_open(canvas, filename, "", -- buf, &bufptr, MAXPDSTRING, 0)) < 0) -+ buf, &bufptr, FILENAME_MAX, 0)) < 0) - { - error("%s: can't open", filename); - return (1); -@@ -832,9 +832,9 @@ - int crflag) - { - int filedesc; -- char buf[MAXPDSTRING], *bufptr; -+ char buf[FILENAME_MAX], *bufptr; - if ((filedesc = open_via_path( -- dirname, filename, "", buf, &bufptr, MAXPDSTRING, 0)) < 0) -+ dirname, filename, "", buf, &bufptr, FILENAME_MAX, 0)) < 0) - { - error("%s: can't open", filename); - return (1); -@@ -853,7 +853,7 @@ - int binbuf_write(t_binbuf *x, char *filename, char *dir, int crflag) - { - FILE *f = 0; -- char sbuf[WBUFSIZE], fbuf[MAXPDSTRING], *bp = sbuf, *ep = sbuf + WBUFSIZE; -+ char sbuf[WBUFSIZE], fbuf[FILENAME_MAX], *bp = sbuf, *ep = sbuf + WBUFSIZE; - t_atom *ap; - int indx, deleteit = 0; - int ncolumn = 0; -Index: d_soundfile.c -=================================================================== ---- d_soundfile.c (revision 9725) -+++ d_soundfile.c (working copy) -@@ -400,9 +400,9 @@ - int *p_bytespersamp, int *p_bigendian, int *p_nchannels, long *p_bytelimit, - long skipframes) - { -- char buf[OBUFSIZE], *bufptr; -+ char buf[FILENAME_MAX], *bufptr; - int fd; -- fd = open_via_path(dirname, filename, "", buf, &bufptr, MAXPDSTRING, 1); -+ fd = open_via_path(dirname, filename, "", buf, &bufptr, FILENAME_MAX, 1); - if (fd < 0) - return (-1); - else return (open_soundfile_via_fd(fd, headersize, p_bytespersamp, -@@ -416,9 +416,9 @@ - int *p_bytespersamp, int *p_bigendian, int *p_nchannels, long *p_bytelimit, - long skipframes) - { -- char buf[OBUFSIZE], *bufptr; -+ char buf[FILENAME_MAX], *bufptr; - int fd; -- fd = canvas_open(canvas, filename, "", buf, &bufptr, MAXPDSTRING, 1); -+ fd = canvas_open(canvas, filename, "", buf, &bufptr, FILENAME_MAX, 1); - if (fd < 0) - return (-1); - else return (open_soundfile_via_fd(fd, headersize, p_bytespersamp, -@@ -738,15 +738,15 @@ - int filetype, int nframes, int bytespersamp, - int bigendian, int nchannels, int swap, t_float samplerate) - { -- char filenamebuf[MAXPDSTRING], buf2[MAXPDSTRING]; -+ char filenamebuf[FILENAME_MAX], buf2[FILENAME_MAX]; - char headerbuf[WRITEHDRSIZE]; - t_wave *wavehdr = (t_wave *)headerbuf; - t_nextstep *nexthdr = (t_nextstep *)headerbuf; - t_aiff *aiffhdr = (t_aiff *)headerbuf; - int fd, headersize = 0; - -- strncpy(filenamebuf, filename, MAXPDSTRING-10); -- filenamebuf[MAXPDSTRING-10] = 0; -+ strncpy(filenamebuf, filename, FILENAME_MAX-10); -+ filenamebuf[FILENAME_MAX-10] = 0; - - if (filetype == FORMAT_NEXT) - { -@@ -812,7 +812,7 @@ - headersize = sizeof(t_wave); - } - -- canvas_makefilename(canvas, filenamebuf, buf2, MAXPDSTRING); -+ canvas_makefilename(canvas, filenamebuf, buf2, FILENAME_MAX); - sys_bashfilename(buf2, buf2); - if ((fd = open(buf2, BINCREATE, 0666)) < 0) - return (-1); -Index: m_class.c -=================================================================== ---- m_class.c (revision 9725) -+++ m_class.c (working copy) -@@ -498,7 +498,7 @@ - - static t_symbol *addfileextent(t_symbol *s) - { -- char namebuf[MAXPDSTRING], *str = s->s_name; -+ char namebuf[FILENAME_MAX], *str = s->s_name; - int ln = strlen(str); - if (!strcmp(str + ln - 3, ".pd")) return (s); - strcpy(namebuf, str); -@@ -520,7 +520,7 @@ - { - t_pd *current; - int fd; -- char dirbuf[MAXPDSTRING], *nameptr; -+ char dirbuf[FILENAME_MAX], *nameptr; - if (tryingalready) return; - newest = 0; - class_loadsym = s; -@@ -534,9 +534,9 @@ - class_loadsym = 0; - current = s__X.s_thing; - if ((fd = canvas_open(canvas_getcurrent(), s->s_name, ".pd", -- dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0 || -+ dirbuf, &nameptr, FILENAME_MAX, 0)) >= 0 || - (fd = canvas_open(canvas_getcurrent(), s->s_name, ".pat", -- dirbuf, &nameptr, MAXPDSTRING, 0)) >= 0) -+ dirbuf, &nameptr, FILENAME_MAX, 0)) >= 0) - { - close (fd); - if (!pd_setloadingabstraction(s)) -Index: g_array.c -=================================================================== ---- g_array.c (revision 9725) -+++ g_array.c (working copy) -@@ -1384,7 +1384,7 @@ - { - int nelem, filedesc, i; - FILE *fd; -- char buf[MAXPDSTRING], *bufptr; -+ char buf[FILENAME_MAX], *bufptr; - int yonset, elemsize; - t_array *array = garray_getarray_floatonly(x, &yonset, &elemsize); - if (!array) -@@ -1394,7 +1394,7 @@ - } - nelem = array->a_n; - if ((filedesc = canvas_open(glist_getcanvas(x->x_glist), -- filename->s_name, "", buf, &bufptr, MAXPDSTRING, 0)) < 0 -+ filename->s_name, "", buf, &bufptr, FILENAME_MAX, 0)) < 0 - || !(fd = fdopen(filedesc, "r"))) - { - error("%s: can't open", filename->s_name); diff --git a/packages/patches/use_individual_help_patches_for_midi-0.41.0-test04.patch b/packages/patches/use_individual_help_patches_for_midi-0.41.0-test04.patch deleted file mode 100644 index 2f03b82869eb0947f7ba1416f80f340b03e449e2..0000000000000000000000000000000000000000 --- a/packages/patches/use_individual_help_patches_for_midi-0.41.0-test04.patch +++ /dev/null @@ -1,72 +0,0 @@ -Index: x_midi.c -=================================================================== -RCS file: /cvsroot/pure-data/pd/src/x_midi.c,v -retrieving revision 1.2 -retrieving revision 1.2.10.1 -diff -u -w -r1.2 -r1.2.10.1 ---- x_midi.c 6 Sep 2004 20:20:36 -0000 1.2 -+++ x_midi.c 14 May 2007 18:31:31 -0000 1.2.10.1 -@@ -160,7 +160,6 @@ - notein_class = class_new(gensym("notein"), (t_newmethod)notein_new, - (t_method)notein_free, sizeof(t_notein), CLASS_NOINLET, A_DEFFLOAT, 0); - class_addlist(notein_class, notein_list); -- class_sethelpsymbol(notein_class, gensym("midi")); - notein_sym = gensym("#notein"); - } - -@@ -234,7 +233,6 @@ - (t_method)ctlin_free, sizeof(t_ctlin), - CLASS_NOINLET, A_GIMME, 0); - class_addlist(ctlin_class, ctlin_list); -- class_sethelpsymbol(ctlin_class, gensym("midi")); - ctlin_sym = gensym("#ctlin"); - } - -@@ -301,7 +299,6 @@ - (t_method)pgmin_free, sizeof(t_pgmin), - CLASS_NOINLET, A_DEFFLOAT, 0); - class_addlist(pgmin_class, pgmin_list); -- class_sethelpsymbol(pgmin_class, gensym("midi")); - pgmin_sym = gensym("#pgmin"); - } - -@@ -366,7 +363,6 @@ - bendin_class = class_new(gensym("bendin"), (t_newmethod)bendin_new, - (t_method)bendin_free, sizeof(t_bendin), CLASS_NOINLET, A_DEFFLOAT, 0); - class_addlist(bendin_class, bendin_list); -- class_sethelpsymbol(bendin_class, gensym("midi")); - bendin_sym = gensym("#bendin"); - } - -@@ -725,7 +721,6 @@ - noteout_class = class_new(gensym("noteout"), (t_newmethod)noteout_new, 0, - sizeof(t_noteout), 0, A_DEFFLOAT, 0); - class_addfloat(noteout_class, noteout_float); -- class_sethelpsymbol(noteout_class, gensym("midi")); - } - - -@@ -765,7 +760,6 @@ - ctlout_class = class_new(gensym("ctlout"), (t_newmethod)ctlout_new, 0, - sizeof(t_ctlout), 0, A_DEFFLOAT, A_DEFFLOAT, 0); - class_addfloat(ctlout_class, ctlout_float); -- class_sethelpsymbol(ctlout_class, gensym("midi")); - } - - -@@ -805,7 +799,6 @@ - pgmout_class = class_new(gensym("pgmout"), (t_newmethod)pgmout_new, 0, - sizeof(t_pgmout), 0, A_DEFFLOAT, 0); - class_addfloat(pgmout_class, pgmout_float); -- class_sethelpsymbol(pgmout_class, gensym("midi")); - } - - -@@ -842,7 +835,6 @@ - bendout_class = class_new(gensym("bendout"), (t_newmethod)bendout_new, 0, - sizeof(t_bendout), 0, A_DEFFLOAT, 0); - class_addfloat(bendout_class, bendout_float); -- class_sethelpsymbol(bendout_class, gensym("midi")); - } - - /* -------------------------- touch -------------------------- */ diff --git a/packages/redhat_rpm/pd-extended.spec b/packages/redhat_rpm/pd-extended.spec index c82fcc0548bc805741401072a2824d685b6929aa..c7e779bd0c775678e2b48f993f9f4046eb7b0918 100644 --- a/packages/redhat_rpm/pd-extended.spec +++ b/packages/redhat_rpm/pd-extended.spec @@ -498,9 +498,7 @@ find externals/pdp externals/pidip -type f -exec perl -p -i -e "s|<quicktime/|<l perl -p -i -e "s|pdp pidip||g" externals/Makefile %endif -# patch the official pd source cd packages -make patch_pd # make and install pd and externals cd linux_make @@ -551,9 +549,6 @@ for library in ${EXTERNALS} ; do ${DESTDIR_ROOT}/${library}%{_prefix}/lib/pd/extra/ fi make -C externals DESTDIR=${DESTDIR} prefix=${prefix} libpddir=${libpddir} libpdbindir=${libpdbindir} ${library}_install - if [ -d "${libpddir}/doc/5.reference/" ] ; then - (cd ${libpddir}/doc/5.reference/ ; ${buildhome}/scripts/convert-help-to-standard.sh) - fi find ${DESTDIR_ROOT}/${library} -type f | sed "s|${DESTDIR_ROOT}/${library}||g" > ${buildhome}/files-subpackage-${library} done @@ -566,9 +561,6 @@ for abstraction in ${ABSTRACTIONS} ; do libpddir=${libdir}/pd libpdbindir=${libpddir}/bin make -C abstractions DESTDIR=${DESTDIR} prefix=${prefix} libpddir=${libpddir} libpdbindir=${libpdbindir} ${abstraction}_install - if [ -d "${libpddir}/doc/5.reference/" ] ; then - (cd ${libpddir}/doc/5.reference/ ; ${buildhome}/scripts/convert-help-to-standard.sh) - fi find ${DESTDIR_ROOT}/${abstraction} -type f | sed "s|${DESTDIR_ROOT}/${abstraction}||g" > ${buildhome}/files-subpackage-${abstraction} done @@ -799,8 +791,6 @@ install: cannot stat `/usr/src/rpm/BUILD/pure-data/packages/linux_make/../../pac install: cannot stat `/usr/src/rpm/BUILD/pure-data/packages/linux_make/../../packages/noncvs/linux/extra/*.*': No such file or directory -install: cannot stat `/usr/src/rpm/BUILD/pure-data/packages/linux_make/../../packages/noncvs/linux/gripd/*.*': No such file or directory - * Tue Jul 25 2006 Fernando Lopez-Lezcano <nando@ccrma.stanford.edu> 0.39.2 - changed package name to pd-extended, build all of it, both pd and the external collection diff --git a/pd/README b/pd/README deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/scripts/auto-build/auto-build-common b/scripts/auto-build/auto-build-common deleted file mode 100644 index f76c683f3d52ae253214c6fe33c0dc2cb36035fe..0000000000000000000000000000000000000000 --- a/scripts/auto-build/auto-build-common +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# these are common variables for the auto-build scripts - -SYSTEM=$(uname -s | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|') -DATE=$(date +%Y-%m-%d) -TIME=$(date +%H.%M.%S) -HOSTNAME=$(hostname | sed 's|\([a-zA-Z0-9-]\)\..*|\1|' | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|') - -# use the hostname from /etc/hostname in case we are a chroot build enviroment -if [ -e /etc/hostname ]; then - HOSTNAME=`cat /etc/hostname` -else - HOSTNAME=$(hostname | sed 's|\([a-zA-Z0-9-]\)\..*|\1|' | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|') -fi - -## the following creates a spam-bot that sends emails to an address that has not asked for it -## because of the spam-problem, i (jmz) have disabled it -# recipient of any emails set from the scripts -#RECIPIENT=pd-cvs@iem.at - - -## if you want to send emails about the success of your build, -## please create a file "auto-build-common.local" in this directory -## and set the "RECIPIENT" address to some valid email-address -# -## please do NOT check your auto-build-common.local into the CVS -# -## another possibility is to set the "RECIPIENT" environmental variable before running -## the autobuilder - -if [ -e ${SCRIPT_DIR}/auto-build-common.local ]; then - . ${SCRIPT_DIR}/auto-build-common.local -else - echo "Could not find local configuration in \"${SCRIPT_DIR}/auto-build-common.local\"" - echo "Skipping... (see ${SCRIPT_DIR}/auto-build-common for instructions)" - echo -fi - -# cygwin/Mingw don't have 'mail', but do have 'email' which is close enough. -# To get around the troubles with mail servers, we'll contact the SMTP server -# of the mailing lists directly (mail.iem.at). -if [ -x /usr/bin/mail ]; then - MAIL_COMMAND=/usr/bin/mail -elif [ -x /bin/mail ]; then - MAIL_COMMAND=/bin/mail -else - MAIL_COMMAND="email --smtp-server mail.iem.at" -fi - - -#------------------------------------------------------------------------------# -# print out ip addresses for debugging -print_ip_address() -{ - echo -n "hostname: " - hostname - echo "---------------------------" - if [ -x /sbin/ifconfig ]; then - /sbin/ifconfig - else - ipconfig - fi -} - - -rsync_distro() -{ -# let rsync handle the cleanup with --delete - DISTRO=$(basename $1) - echo "rsyncing $DISTRO to ${1}:" - RSYNC_COMMAND="rsync -a --delete-before rsync://128.238.56.50/distros/${DISTRO}/ ${1}/" - case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c "$RSYNC_COMMAND" - ;; - *) - $RSYNC_COMMAND - ;; - esac -} diff --git a/scripts/auto-build/create-latest-build-listing.py b/scripts/auto-build/create-latest-build-listing.py deleted file mode 100755 index f7d97a88e46b754805f68a46943a98880a861e10..0000000000000000000000000000000000000000 --- a/scripts/auto-build/create-latest-build-listing.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/python - -import string -import os,sys,errno -import re -import StringIO - - -for root, dirs, files in os.walk('/var/www/auto-build/'): - dirs.sort() - if 'latest' in dirs: - dirs.remove('latest') - for name in files: - m = re.search('^Pd-[01]\.[0-9][0-9].*[^5]$', name) - if m: - commonbuildname = re.sub('-20[01][0-9][01][0-9][0-9][0-9]', '', name) - commonbuildpath = os.path.join('/var/www/auto-build/latest', commonbuildname) - buildtarball = os.path.join(root, m.string) - #print "link: ", buildtarball, commonbuildpath - try: - os.symlink(buildtarball, commonbuildpath) - except OSError, e: - if e.errno == errno.EEXIST: - #print "removing ", commonbuildpath - os.remove(commonbuildpath) - os.symlink(buildtarball, commonbuildpath) - - diff --git a/scripts/auto-build/extra-rsync.bat b/scripts/auto-build/extra-rsync.bat deleted file mode 100644 index 0db0c86e076723fbeadedb8866c58e331724c892..0000000000000000000000000000000000000000 --- a/scripts/auto-build/extra-rsync.bat +++ /dev/null @@ -1,18 +0,0 @@ -REM uses http://setacl.sourceforge.net/ - -cd \msys\1.0\home\pd\ - -REM echo y|cacls c:\msys\1.0\home\pd\auto-build /C /T /G pd:F everyone:R - -setacl -on c:\msys\1.0\home\pd\auto-build -ot file -actn ace -ace "n:pd;p:full,write_owner;i:so,sc;m:set" -ace "n:everyone;p:read;i:so,sc;m:set" - -REM Cygwin rsync seems to be unhappy with SVN's .svn file permissions, so -REM ignore SVN files first to get all the 'meat' -rsync -av --progress --whole-file --exclude='*inv\**' --cvs-exclude --timeout=60 rsync://128.238.56.50/distros/pd-extended/ /home/pd/auto-build/pd-extended/ -rsync -av --progress --whole-file --exclude='*inv\**' --cvs-exclude --timeout=60 rsync://128.238.56.50/distros/pd-devel/ /home/pd/auto-build/pd-devel/ - -sleep 60 - -REM now get the SVN changes, this might fail a lot, especially on '.svn/entries' -rsync -av --progress --whole-file --delete-before --exclude='*inv\**' --timeout=60 rsync://128.238.56.50/distros/pd-extended/ /home/pd/auto-build/pd-extended/ -rsync -av --progress --whole-file --delete-before --exclude='*inv\**' --timeout=60 rsync://128.238.56.50/distros/pd-devel/ /home/pd/auto-build/pd-devel/ diff --git a/scripts/auto-build/mail-mingw-log-hack.sh b/scripts/auto-build/mail-mingw-log-hack.sh deleted file mode 100755 index 30b237bc41ee6b9ceaf4aa04dc222dd136eff769..0000000000000000000000000000000000000000 --- a/scripts/auto-build/mail-mingw-log-hack.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -mailbody_on_failure () { - ## this is a somewhat simplistic expression to detect error-lines - cat "$1" | grep -i "error: " | tail -20 - echo "" - echo "the full logfile can be viewed at" - echo "http://autobuild.puredata.info/auto-build/${DATE}/logs/${LOGFILE##*/}" -} - - -for logfile in $(ls -1 /var/www/auto-build/${DATE}/logs/${DATE}_*_mingw*.txt); do - completion_test=$(tail -1 "${logfile}") - if [ "x${completion_test}" != "xSUCCESS" ]; then - if [ "x${RECIPIENT}" != "x" ]; then - SUBJECT="autobuild: $distro $HOSTNAME $DATE $TIME" - mailbody_on_failure "${logfile}" | mail -s "autobuild: $logfile" ${RECIPIENT} - fi - fi -done diff --git a/scripts/auto-build/pd-devel-auto-builder.sh b/scripts/auto-build/pd-devel-auto-builder.sh deleted file mode 100755 index cf8a0909d94c985d39f1389dd17e0214eb396350..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pd-devel-auto-builder.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -## this could be done more easily with ${0%/*} -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -## this could be done more easily with ${0##*/} -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=linux_make - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=darwin_app - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - ;; - mingw*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# convert into absolute path -## shouldn't this use the ${SCRIPT_DIR} variable rather than call an external program? -cd $(echo $0 | sed 's|\(.*\)/.*$|\1|')/../.. -auto_build_root_dir=$(pwd) -echo "root: $auto_build_root_dir" - -# let rsync handle the cleanup with --delete -case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links --delete rsync://128.238.56.50/distros/pd-devel/ ${auto_build_root_dir}/" - ;; - *) - rsync -a --delete rsync://128.238.56.50/distros/pd-devel/ ${auto_build_root_dir}/ - ;; -esac - -cd "${auto_build_root_dir}/packages/$BUILD_DIR" -make -C "${auto_build_root_dir}/packages" set_version PD-EXTENDED_VERSION_PREFIX=devel -make test_locations -mount -print_ip_address -make package_clean -make install PD-EXTENDED_VERSION_PREFIX=devel -make package PD-EXTENDED_VERSION_PREFIX=devel - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive=$(ls -1 ${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format} | tail -1) - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - if [ -e ${archive} ]; then - case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links --chmod=a+r ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" && \ - md5sum ${archive} > ${archive}.md5 && \ - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive}.md5 rsync://128.238.56.50/upload/${DATE}/${upload_filename}.md5" && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - rsync -a --chmod=a+r ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - md5sum ${archive} > ${archive}.md5 && \ - rsync -a ${archive}.md5 rsync://128.238.56.50/upload/${DATE}/${upload_filename}.md5 && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac - fi -} - - -case $SYSTEM in - linux) - if [ -x /usr/bin/dpkg-deb ]; then - upload_build linux_make . deb - else - upload_build linux_make build tar.bz2 - fi - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/auto-build/pd-extended-auto-builder.sh b/scripts/auto-build/pd-extended-auto-builder.sh deleted file mode 100755 index 723645fdfb5602491f28fc25de11aa44a452fa3d..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pd-extended-auto-builder.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -## this could be done more easily with ${0%/*} -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -## this could be done more easily with ${0##*/} -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=linux_make - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=darwin_app - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - ;; - mingw*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# convert into absolute path -cd "${SCRIPT_DIR}/../.." -auto_build_root_dir=`pwd` -echo "build root: $auto_build_root_dir" -rsync_distro "$auto_build_root_dir" - -cd "${auto_build_root_dir}/packages/$BUILD_DIR" -make -C "${auto_build_root_dir}/packages" set_version -make test_locations -echo "mounts ----------------------------------------" -mount -print_ip_address -make package_clean -make install && make package - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive=$(ls -1 ${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format} | tail -1) - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - if [ -e ${archive} ]; then - case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links --chmod=a+r ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" && \ - md5sum ${archive} > ${archive}.md5 && \ - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive}.md5 rsync://128.238.56.50/upload/${DATE}/${upload_filename}.md5" && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - rsync -a --chmod=a+r ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - md5sum ${archive} > ${archive}.md5 && \ - rsync -a ${archive}.md5 rsync://128.238.56.50/upload/${DATE}/${upload_filename}.md5 && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac - fi -} - - -case $SYSTEM in - linux) - if [ -x /usr/bin/dpkg-deb ]; then - upload_build linux_make . deb - else - upload_build linux_make build tar.bz2 - fi - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/auto-build/pd-extended-release-auto-builder.sh b/scripts/auto-build/pd-extended-release-auto-builder.sh deleted file mode 100755 index 723645fdfb5602491f28fc25de11aa44a452fa3d..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pd-extended-release-auto-builder.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -## this could be done more easily with ${0%/*} -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -## this could be done more easily with ${0##*/} -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=linux_make - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=darwin_app - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - ;; - mingw*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# convert into absolute path -cd "${SCRIPT_DIR}/../.." -auto_build_root_dir=`pwd` -echo "build root: $auto_build_root_dir" -rsync_distro "$auto_build_root_dir" - -cd "${auto_build_root_dir}/packages/$BUILD_DIR" -make -C "${auto_build_root_dir}/packages" set_version -make test_locations -echo "mounts ----------------------------------------" -mount -print_ip_address -make package_clean -make install && make package - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive=$(ls -1 ${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format} | tail -1) - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - if [ -e ${archive} ]; then - case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links --chmod=a+r ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" && \ - md5sum ${archive} > ${archive}.md5 && \ - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive}.md5 rsync://128.238.56.50/upload/${DATE}/${upload_filename}.md5" && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - rsync -a --chmod=a+r ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - md5sum ${archive} > ${archive}.md5 && \ - rsync -a ${archive}.md5 rsync://128.238.56.50/upload/${DATE}/${upload_filename}.md5 && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac - fi -} - - -case $SYSTEM in - linux) - if [ -x /usr/bin/dpkg-deb ]; then - upload_build linux_make . deb - else - upload_build linux_make build tar.bz2 - fi - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/auto-build/pd-main+libs-auto-builder.sh b/scripts/auto-build/pd-main+libs-auto-builder.sh deleted file mode 100755 index 7cbdbf027420a22c3179cf920c2652b046fdac4b..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pd-main+libs-auto-builder.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=linux_make - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=darwin_app - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - ;; - mingw*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# convert into absolute path -cd $(echo $0 | sed 's|\(.*\)/.*$|\1|')/../.. -auto_build_root_dir=$(pwd) -echo "root: $auto_build_root_dir" - -# let rsync handle the cleanup with --delete -case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links --delete rsync://128.238.56.50/distros/pd-main+libs/ ${auto_build_root_dir}/" - ;; - *) - rsync -a --delete rsync://128.238.56.50/distros/pd-main+libs/ ${auto_build_root_dir}/ - ;; -esac - -cd "${auto_build_root_dir}/packages/$BUILD_DIR" -make -C "${auto_build_root_dir}/packages" set_version PD-EXTENDED_VERSION_PREFIX=vanilla+libs -make test_locations -mount -make package_clean -make install PD-EXTENDED_VERSION_PREFIX=vanilla+libs -make package PD-EXTENDED_VERSION_PREFIX=vanilla+libs - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive="${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format}" - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - case $SYSTEM in - mingw*) - test -e ${archive} && /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - test -e ${archive} && rsync -a ${archive} \ - rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac -} - - -case $SYSTEM in - linux) - if [ -x /usr/bin/dpkg-deb ]; then - upload_build linux_make . deb - else - upload_build linux_make build tar.bz2 - fi - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/auto-build/pd-main-auto-builder.sh b/scripts/auto-build/pd-main-auto-builder.sh deleted file mode 100755 index c494b029bc68533baeac1a1987c8f97746af4282..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pd-main-auto-builder.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -case $SYSTEM in - linux) - configure_options="--enable-alsa --enable-jack" - platform_name=$(uname -m) - ;; - darwin) - configure_options="" - platform_name=$(uname -p) - ;; - mingw*) - configure_options="" - platform_name=i386 - ;; - cygwin*) - configure_options="" - platform_name=i386 - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - -# convert into absolute path -cd $(echo $0 | sed 's|\(.*\)/.*$|\1|')/../.. -auto_build_root_dir=$(pwd) -echo "root: $auto_build_root_dir" - - -# let rsync handle the cleanup with --delete -rsync -av --delete rsync://128.238.56.50/distros/pd-main/ \ - ${auto_build_root_dir}/ - -case $SYSTEM in - darwin) - archive_format=dmg - archive=$(ls -1 ${auto_build_root_dir}/packages/darwin_app/Pd*.dmg) - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - cd ${auto_build_root_dir}/packages/darwin_app/ - make package_clean - make test_locations - make darwin_app_core && \ - make readme_install && \ - make package && \ - rsync -a ${archive} \ - rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - package_name="/tmp/pd-${DATE}-${SYSTEM}-${HOSTNAME}-${platform_name}.tar.bz2" - cd ${auto_build_root_dir}/pd/src && \ - autoconf && \ - ./configure $configure_options && \ - make && \ - cd ../../ && \ - tar cjf $package_name pd && \ - rsync -a ${package_name} rsync://128.238.56.50/upload/${DATE}/ && \ - rm -f -- ${package_name} && \ - echo "successfully uploaded: ${package_name}" && \ - echo SUCCESS - ;; -esac - diff --git a/scripts/auto-build/pd-puredyne-auto-builder.sh b/scripts/auto-build/pd-puredyne-auto-builder.sh deleted file mode 100755 index d06ef7ad879174d0a9541773856dfa8b1bd95562..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pd-puredyne-auto-builder.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=linux_make - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=darwin_app - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - ;; - mingw*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win32_inno - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# convert into absolute path -cd $(echo $0 | sed 's|\(.*\)/.*$|\1|')/../.. -auto_build_root_dir=$(pwd) -echo "root: $auto_build_root_dir" - -# let rsync handle the cleanup with --delete -rsync -a --delete rsync://128.238.56.50/distros/pd-puredyne/ \ - ${auto_build_root_dir}/ - -cd "${auto_build_root_dir}/packages/$BUILD_DIR" -make -C "${auto_build_root_dir}/packages" set_version PD-EXTENDED_VERSION_PREFIX=puredyne -make test_locations -make package_clean -make install PD-EXTENDED_VERSION_PREFIX=puredyne -make package PD-EXTENDED_VERSION_PREFIX=puredyne - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive="${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format}" - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - case $SYSTEM in - mingw*) - test -e ${archive} && /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" &&\ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - test -e ${archive} && rsync -a ${archive} \ - rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac -} - - -case $SYSTEM in - linux) - if [ -x /usr/bin/dpkg-deb ]; then - upload_build linux_make . deb - else - upload_build linux_make build tar.bz2 - fi - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/auto-build/pdvanilla-hcs.git-auto-builder.sh b/scripts/auto-build/pdvanilla-hcs.git-auto-builder.sh deleted file mode 100755 index 387b2855a551623f520a293433e0bdb0e0eb0311..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pdvanilla-hcs.git-auto-builder.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# the source dir where this script is -## this could be done more easily with ${0%/*} -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -## this could be done more easily with ${0##*/} -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -# convert into absolute path -cd "${SCRIPT_DIR}/../.." -auto_build_root_dir=`pwd` -echo "build root: $auto_build_root_dir" -rsync_distro "$auto_build_root_dir" - - -cd "${auto_build_root_dir}" -echo "--------------------------------------------------------------------------------" -git pull -echo "--------------------------------------------------------------------------------" -./autogen.sh -echo "--------------------------------------------------------------------------------" -./configure -echo "--------------------------------------------------------------------------------" -make -echo "--------------------------------------------------------------------------------" -mkdir "${auto_build_root_dir}/testinstall" -make DESTDIR="${auto_build_root_dir}/testinstall" install -echo "--------------------------------------------------------------------------------" -make dist - - -# since the above test can cause this script to exit with an error, force it -# to be happy to prevent getting automated error emails to root -true diff --git a/scripts/auto-build/prep-auto-build-upload b/scripts/auto-build/prep-auto-build-upload deleted file mode 100755 index 0bcc123409686c3b451bff21d5d9ed11a516a0f3..0000000000000000000000000000000000000000 --- a/scripts/auto-build/prep-auto-build-upload +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh - -# prepare a directory per date for the auto-builders to upload to - -HOSTNAME=`hostname` -SYSTEM=`uname -s` -DATE=`date +%Y-%m-%d` -TIME=`date +%H.%M.%S` -SCRIPT=`echo $0| sed 's|.*/\(.*\)|\1|g'` -LOGFILE=/home/pd/logs/${DATE}_${TIME}_-_${SCRIPT}_-_${SYSTEM}.txt - -#BUILD_ROOT="/var/www/auto-build" - -prep_project() -{ - PROJECT=$1 - BUILD_ROOT="$2" - TODAYS_ROOT="${BUILD_ROOT}/${DATE}" - chown -R root.root "${BUILD_ROOT}" >> $LOGFILE 2>&1 - chown -R pd "${BUILD_ROOT}/latest" >> $LOGFILE 2>&1 - mkdir "${TODAYS_ROOT}" >> $LOGFILE 2>&1 - mkdir "${TODAYS_ROOT}/logs" >> $LOGFILE 2>&1 - chown -R nobody.nogroup "${TODAYS_ROOT}" >> $LOGFILE 2>&1 - - chown -R ${PROJECT}.${PROJECT} /home/${PROJECT}/ >> $LOGFILE 2>&1 - chmod -R u+rw /home/${PROJECT}/ >> $LOGFILE 2>&1 -} - - -prep_project pd /var/www/auto-build -prep_project arduino /var/www/arduino diff --git a/scripts/auto-build/pure-data-rsync b/scripts/auto-build/pure-data-rsync deleted file mode 100755 index 9fed6bcc6822d2ed1e4a43df678129fd08cea415..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pure-data-rsync +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -# rsync the CVS source files from SourceForge to make a local copy - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -LOGFILE=/home/pd/logs/${DATE}_${TIME}_-_${SCRIPT}_-_${SYSTEM}.txt - -VERBOSE_FLAGS=-v -#VERBOSE_FLAGS="-v --progress" - -touch $LOGFILE - -echo "rsync pure-data" >> $LOGFILE 2>&1 -echo "----------------------------------------------------------------------" >> $LOGFILE 2>&1 -(/usr/bin/rsync -ax $VERBOSE_FLAGS --delete pure-data.svn.sourceforge.net::svn/pure-data/ /home/pd/svnroot/pure-data/ || /usr/bin/logger -i -p local6.warning -t "$0" "rsync pure-data SVN FAILED") >> $LOGFILE 2>&1 - -echo "rsync pd-gem" >> $LOGFILE 2>&1 -echo "----------------------------------------------------------------------" >> $LOGFILE 2>&1 -(/usr/bin/rsync -ax $VERBOSE_FLAGS --delete rsync://pd-gem.cvs.sourceforge.net/cvsroot/p/pd/pd-gem/ /home/pd/cvsroot/pd-gem || /usr/bin/logger -i -p local6.warning -t "$0" "rsync pd-gem CVS FAILED") >> $LOGFILE 2>&1 - -echo "chown -R pd.pd /home/pd/cvsroot" >> $LOGFILE 2>&1 -echo "----------------------------------------------------------------------" >> $LOGFILE 2>&1 -chown -R pd.pd /home/pd/cvsroot >> $LOGFILE 2>&1 - -echo "chown -R pd.pd /home/pd/svnroot" >> $LOGFILE 2>&1 -echo "----------------------------------------------------------------------" >> $LOGFILE 2>&1 -chown -R pd.pd /home/pd/svnroot >> $LOGFILE 2>&1 - - diff --git a/scripts/auto-build/pure-data-rsync-checkout b/scripts/auto-build/pure-data-rsync-checkout deleted file mode 100755 index e5e4256b586ca614df75bfc45e9d8c33e54fbe9e..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pure-data-rsync-checkout +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh -# update from the local CVS repository - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') -LOGFILE=/home/pd/logs/${DATE}_${TIME}_-_${SCRIPT}_-_${SYSTEM}.txt - -update_distro () -{ - distro=$1 - echo "------------------------------------------------------------" >> $LOGFILE 2>&1 - echo "$distro" >> $LOGFILE 2>&1 - echo "------------------------------------------------------------" >> $LOGFILE 2>&1 - /home/pd/rsync/$distro/scripts/update-developer-layout.sh >> $LOGFILE 2>&1 -} - -touch $LOGFILE - -for dir in /home/pd/rsync/*; do - dirname=$(echo $dir | sed 's|.*/\(.*\)|\1|') - test -e $dir/scripts/update-developer-layout.sh && \ - update_distro $dirname -done - -for dir in /home/pd/rsync/*.git; do - cd $dir - git pull >> $LOGFILE 2>&1 - cd scripts - svn --ignore-externals update >> $LOGFILE 2>&1 -done - -# since the above test can cause this script to exit with an error, force it -# to be happy to prevent getting automated error emails to root -true diff --git a/scripts/auto-build/pure-data.git-auto-builder.sh b/scripts/auto-build/pure-data.git-auto-builder.sh deleted file mode 100755 index 387b2855a551623f520a293433e0bdb0e0eb0311..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pure-data.git-auto-builder.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# the source dir where this script is -## this could be done more easily with ${0%/*} -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -## this could be done more easily with ${0##*/} -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -# convert into absolute path -cd "${SCRIPT_DIR}/../.." -auto_build_root_dir=`pwd` -echo "build root: $auto_build_root_dir" -rsync_distro "$auto_build_root_dir" - - -cd "${auto_build_root_dir}" -echo "--------------------------------------------------------------------------------" -git pull -echo "--------------------------------------------------------------------------------" -./autogen.sh -echo "--------------------------------------------------------------------------------" -./configure -echo "--------------------------------------------------------------------------------" -make -echo "--------------------------------------------------------------------------------" -mkdir "${auto_build_root_dir}/testinstall" -make DESTDIR="${auto_build_root_dir}/testinstall" install -echo "--------------------------------------------------------------------------------" -make dist - - -# since the above test can cause this script to exit with an error, force it -# to be happy to prevent getting automated error emails to root -true diff --git a/scripts/auto-build/pure-data.umlaeute.git-auto-builder.sh b/scripts/auto-build/pure-data.umlaeute.git-auto-builder.sh deleted file mode 100755 index 387b2855a551623f520a293433e0bdb0e0eb0311..0000000000000000000000000000000000000000 --- a/scripts/auto-build/pure-data.umlaeute.git-auto-builder.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh - -# the source dir where this script is -## this could be done more easily with ${0%/*} -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -## this could be done more easily with ${0##*/} -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -# convert into absolute path -cd "${SCRIPT_DIR}/../.." -auto_build_root_dir=`pwd` -echo "build root: $auto_build_root_dir" -rsync_distro "$auto_build_root_dir" - - -cd "${auto_build_root_dir}" -echo "--------------------------------------------------------------------------------" -git pull -echo "--------------------------------------------------------------------------------" -./autogen.sh -echo "--------------------------------------------------------------------------------" -./configure -echo "--------------------------------------------------------------------------------" -make -echo "--------------------------------------------------------------------------------" -mkdir "${auto_build_root_dir}/testinstall" -make DESTDIR="${auto_build_root_dir}/testinstall" install -echo "--------------------------------------------------------------------------------" -make dist - - -# since the above test can cause this script to exit with an error, force it -# to be happy to prevent getting automated error emails to root -true diff --git a/scripts/auto-build/run-automated-build.bat b/scripts/auto-build/run-automated-build.bat deleted file mode 100644 index a46d4750e5166fa381a0551aaa5c7fb2bc24d2ec..0000000000000000000000000000000000000000 --- a/scripts/auto-build/run-automated-build.bat +++ /dev/null @@ -1,4 +0,0 @@ -@echo off - -C:\msys\1.0\bin\sh.exe --login -i -c /home/pd/auto-build/pd-extended/scripts/auto-build/run-automated-builder - diff --git a/scripts/auto-build/run-automated-build.cygwin.sh b/scripts/auto-build/run-automated-build.cygwin.sh deleted file mode 100755 index 0fdb0a36f210d3656c976cd0313f2f55106616f1..0000000000000000000000000000000000000000 --- a/scripts/auto-build/run-automated-build.cygwin.sh +++ /dev/null @@ -1,2 +0,0 @@ -/cygdrive/c/msys/1.0/bin/sh --login -i -c /home/pd/auto-build/pd-extended/scripts/auto-build/run-automated-builder - diff --git a/scripts/auto-build/run-automated-builder b/scripts/auto-build/run-automated-builder deleted file mode 100755 index 911e25ac794734095af5891a0380da84d23bc685..0000000000000000000000000000000000000000 --- a/scripts/auto-build/run-automated-builder +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh - - -## TODO: -# - change the logfile name -# - use a wrapper for rsync to handle platform specifics -# - check whether rsync (or any other upload mechanism) is present -# and mail accordingly - -cd / - -# On Mac OS X, there are some handy things in Fink, but don't override the -# built-in tools -PATH="${PATH}:/sw/bin:/sw/sbin" -export PATH - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - -mailbody_on_failure () { - ## this is a somewhat simplistic expression to detect error-lines - echo "last 20 errors ----------------------------------------" - cat ${LOGFILE} | grep -i -e "error: " -e "cannot find" | tail -20 - echo "last 15 lines ----------------------------------------" - tail -15 ${LOGFILE} - echo "" - echo "the full logfile - if it has been succesfully uploaded - can be viewed at:" - echo "http://autobuild.puredata.info/auto-build/${DATE}/logs/${LOGFILE##*/}" -} - -run_build_script () -{ - distro=$1 - chroot=$2 - - BUILDSCRIPT="${HOME}/auto-build/${distro}/scripts/auto-build/${distro}-auto-builder.sh" - ## LATER: make the uploaded ${LOGFILE} (name) be consistent with the uploaded package-file (name) - LOGFILE="${HOME}/logs/${DATE}_${TIME}_${SYSTEM}_${HOSTNAME}_${distro}.txt" - touch "${LOGFILE}" - - if [ -d /var/chroot/$chroot ]; then - echo "----------------------------------------" >> "$LOGFILE" 2>&1 - echo "Building in dchroot $chroot" >> "$LOGFILE" 2>&1 - echo "----------------------------------------" >> "$LOGFILE" 2>&1 - dchroot -c $chroot -d "$BUILDSCRIPT" >> "$LOGFILE" 2>&1 - else - echo "----------------------------------------" >> "$LOGFILE" 2>&1 - echo "Building on native system" >> "$LOGFILE" 2>&1 - echo "----------------------------------------" >> "$LOGFILE" 2>&1 - sh "$BUILDSCRIPT" >> "$LOGFILE" 2>&1 - fi - - case $SYSTEM in - mingw*) - /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${LOGFILE} rsync://128.238.56.50/upload/${DATE}/logs/" - ;; - *) - rsync -a "$LOGFILE" rsync://128.238.56.50/upload/${DATE}/logs/ - ;; - esac - -# send status report if something failed - completion_test=$(tail -1 ${LOGFILE}) - if [ "x${completion_test}" != "xSUCCESS" ]; then - if [ "x${RECIPIENT}" != "x" ]; then - SUBJECT="autobuild: $distro $HOSTNAME $DATE $TIME" - mailbody_on_failure | $MAIL_COMMAND -s "${SUBJECT}" ${RECIPIENT} - fi - fi -} - -for distrodir in ${HOME}/auto-build/*; do - distro=$(echo $distrodir | sed 's|.*/\(.*\)|\1|') - if [ -e $distrodir/scripts/auto-build/${distro}-auto-builder.sh ]; then - run_build_script $distro IGNORE_CHROOT_USE_SYSTEM - if [ -e /var/chroot ]; then - for chrootdir in /var/chroot/*; do - chroot=$(echo $chrootdir | sed 's|.*/\(.*\)|\1|') - HOSTNAME=`cat /var/chroot/$chroot/etc/hostname` - run_build_script $distro $chroot - done - fi - fi -done - -# since the above test can cause this script to exit with an error, force it -# to be happy to prevent getting automated error emails to root -true diff --git a/scripts/auto-build/tcltk_core-8-4-branch_auto-builder.sh b/scripts/auto-build/tcltk_core-8-4-branch_auto-builder.sh deleted file mode 100755 index ac92a254c81707f66f4c607e56e022ce125f9380..0000000000000000000000000000000000000000 --- a/scripts/auto-build/tcltk_core-8-4-branch_auto-builder.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - - -# convert into absolute path -cd $(echo $0 | sed 's|\(.*\)/.*$|\1|') -auto_build_root_dir=$(pwd) -echo "root: $auto_build_root_dir" - -# let rsync handle the cleanup with --delete -rsync -a --delete rsync://128.238.56.50/distros/tcltk_core-8-4-branch/ \ - ${auto_build_root_dir}/ - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=unix - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=macosx - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - export PATH=/bin:/sbin:/usr/bin:/usr/sbin -# export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 \ -# -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" - make -C tcl/${BUILD_DIR} deploy - make -C tk/${BUILD_DIR} deploy - ;; - mingw*) - BUILD_DIR=win - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# not used (yet...) -exit - - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive="${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format}" - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - case $SYSTEM in - mingw*) - test -e ${archive} && /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" &&\ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - test -e ${archive} && rsync -a ${archive} \ - rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac -} - - -case $SYSTEM in - linux) - upload_build linux_make build tar.bz2 - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/auto-build/tcltk_core-8-5-branch_auto-builder.sh b/scripts/auto-build/tcltk_core-8-5-branch_auto-builder.sh deleted file mode 100755 index effc0dc0443a0ac102b99e480f8970b12e97df3e..0000000000000000000000000000000000000000 --- a/scripts/auto-build/tcltk_core-8-5-branch_auto-builder.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/sh -# this script is the first attempt to have an automated updater and builder - -# the source dir where this script is -SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|') -. $SCRIPT_DIR/auto-build-common - -# the name of this script -SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g') - - -# convert into absolute path -cd $(echo $0 | sed 's|\(.*\)/.*$|\1|') -auto_build_root_dir=$(pwd) -echo "root: $auto_build_root_dir" - -# let rsync handle the cleanup with --delete -rsync -a --delete rsync://128.238.56.50/distros/tcltk_core-8-5-branch/ \ - ${auto_build_root_dir}/ - -BUILD_DIR=. -case $SYSTEM in - linux) - BUILD_DIR=unix - echo "Configuring to use $BUILD_DIR on GNU/Linux" - ;; - darwin) - BUILD_DIR=macosx - echo "Configuring to use $BUILD_DIR on Darwin/Mac OS X" - export PATH=/bin:/sbin:/usr/bin:/usr/sbin - export CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 \ - -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4" - make -C tcl/${BUILD_DIR} deploy - make -C tk/${BUILD_DIR} deploy - ;; - mingw*) - BUILD_DIR=win - echo "Configuring to use $BUILD_DIR on MinGW/Windows" - ;; - cygwin*) - BUILD_DIR=win - echo "Configuring to use $BUILD_DIR on Cygwin/Windows" - ;; - *) - echo "ERROR: Platform $SYSTEM not supported!" - exit - ;; -esac - - -# not used (yet...) -exit - - - -upload_build () -{ - platform_folder=$1 - build_folder=$2 - archive_format=$3 - - archive="${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format}" - - echo "upload specs $1 $2 $3" - echo "Uploading $archive" - upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|") - case $SYSTEM in - mingw*) - test -e ${archive} && /c/cygwin/bin/sh -c \ - "rsync --archive --no-links --copy-links ${archive} rsync://128.238.56.50/upload/${DATE}/${upload_filename}" &&\ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - *) - test -e ${archive} && rsync -a ${archive} \ - rsync://128.238.56.50/upload/${DATE}/${upload_filename} && \ - echo "successfully uploaded: ${upload_filename}" && \ - echo SUCCESS - ;; - esac -} - - -case $SYSTEM in - linux) - upload_build linux_make build tar.bz2 - ;; - darwin) - upload_build darwin_app . dmg - ;; - mingw*) - upload_build win32_inno Output exe - ;; - cygwin*) - upload_build win32_inno Output exe - ;; -esac - diff --git a/scripts/build-libs-for-pd-on-mingw.sh b/scripts/build-libs-for-pd-on-mingw.sh deleted file mode 100755 index 621af2a8130e242fcbeb3b3a422a4b2246d3fce8..0000000000000000000000000000000000000000 --- a/scripts/build-libs-for-pd-on-mingw.sh +++ /dev/null @@ -1,169 +0,0 @@ -#!/bin/sh - -# this script is no longer maintained, instead use the 'sources tree and this script: -# https://pure-data.svn.sourceforge.net/svnroot/pure-data/sources/build-libs-on-mingw.sh - -# This script builds everything needed to build Pd-extended on MinGW. You -# need to download all of the source files listed on -# http://puredata.org/docs/developer/win first, put them all into one -# directory, then run this script in that directory. It should build and -# install everything. Make sure you have this line in your -# c:\msys\1.0\etc\fstab: - -# c:\MinGW /usr/local - -# This ensures that everything will be installed in the right -# place. <hans@eds.org> - -# pthreads -testfile=/usr/local/bin/pthreadGC2.dll -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - cd pthreads.2 - make clean GC-inlined - cp libpthreadGC2.a /usr/local/lib - cp pthreadGC2.dll /usr/local/bin - cp pthread.h sched.h semaphore.h /usr/local/include/ - cd .. -fi - -# Tcl -testfile=/usr/local/bin/tcl84.dll -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf tcl8.4.*-src.tar.gz - cd tcl8.4.*/win - ./configure && make CYGPATH=echo && make install - cd ../.. -fi - -# Tk -testfile=/usr/local/bin/tk84.dll -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf tk8.4.*-src.tar.gz - cd tk8.4.*/win - ./configure && make CYGPATH=echo && make install - cd ../.. -fi - -# ogg -testfile=/usr/local/lib/libogg.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf libogg-1.1.*.tar.gz - cd libogg-1.1.* - ./configure && make && make install - cd .. -fi - - -# GNU regex -testfile=/usr/local/lib/libregex.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf regex-0.12.tar.gz - cd regex-0.12 - ./configure && make - ar ru libregex.a regex.o - cp libregex.a /usr/local/lib - cp regex.h /usr/local/include - cd .. -fi - - -# vorbis -testfile=/usr/local/lib/libvorbisfile.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf libvorbis-1.1.*.tar.gz - cd libvorbis-1.1.* - ./configure && make - cd lib - /bin/sh ../libtool --tag=CC --mode=link gcc -O20 -D__NO_MATH_INLINES \ - -fsigned-char -DUSE_MEMORY_H -o libvorbisfile.la -rpath \ - /usr/local/lib -no-undefined -version-info 4:0:1 vorbisfile.lo \ - libvorbis.la /usr/local/lib/libogg.la - cd .. - make && make install - cd .. -fi - -# LAME -testfile=/usr/local/bin/libmp3lame-0.dll -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf lame-398-2.tar.gz - cd lame-398-2 - ./configure --disable-frontend \ - && make \ - && make install - cd .. -fi - -# speex -testfile=/usr/local/lib/libspeex.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf speex-*.tar.gz - cd speex-* - ./configure --enable-sse && make && make install - cd .. -fi - -# FLAC -testfile=/usr/local/lib/libFLAC.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf flac-1.1.*.tar.gz && cd flac-1.1.* - ./configure && make && make install || echo -e "\n\n$testfile failed!!\n\n" -# the compilation bombs, but builds most of what we need, so install anyway - make -k install - cd .. -fi - -# libsndfile -# the FLAC build bombs, so disable FLAC support in libsndfile -testfile=/usr/local/lib/libsndfile.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf libsndfile-1.0.19.tar.gz - cd libsndfile-1.0.19 - ./configure --disable-alsa --enable-sqlite - && make && make check && make install - cd .. -fi - -# fftw3 -testfile=/usr/local/lib/libfftw3.a -if [ -e "$testfile" ]; then - echo "$testfile exists, skipping..." -else - echo "Building everything for $testfile" - tar xzf fftw-3.1.*.tar.gz - cd fftw-3.1.* - ./configure --with-our-malloc16 --with-windows-f77-mangling --enable-shared --disable-static --enable-threads --with-combined-threads --enable-portable-binary --enable-float --enable-sse && \ - make && make install - cd .. -fi - diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh deleted file mode 100644 index 8b2898217accac3759041182e2ff9fa31263f253..0000000000000000000000000000000000000000 --- a/scripts/build-packages.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# this script builds the apt repo for http://apt.puredata.info/releases - -cd /var/www/releases - -# delete old ones -find dists -name Packages.gz -delete -find dists -name Packages.bz2 -delete - -# make new Packages files -for dir in dists/*/*/binary-*; do - dpkg-scanpackages ${dir} /dev/null | gzip -9c > ${dir}/Packages.gz - dpkg-scanpackages ${dir} /dev/null | bzip2 -9c > ${dir}/Packages.bz2 -done - -for dir in dists/*; do - apt-ftparchive contents $dir | gzip -9c > ${dir}/Contents.gz - apt-ftparchive release $dir > ${dir}/Release -done - - diff --git a/scripts/checkout-developer-layout.sh b/scripts/checkout-developer-layout.sh deleted file mode 100755 index 18ad419756fd2d8d37e00d03cc769ee516da3711..0000000000000000000000000000000000000000 --- a/scripts/checkout-developer-layout.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -# this script automatically generates a directory with all of the Pd code out -# of CVS in the standard developer's layout. <hans@at.or.at> - -# Usage: -# - with no arguments, it will check out the code using anonymous CVS. -# - to check out using your SourceForge ID, add that as the argument - -URL="https://pure-data.svn.sourceforge.net/svnroot/pure-data/trunk/" -GEMURL="https://pd-gem.svn.sourceforge.net/svnroot/pd-gem/trunk/" -PDAUTH="" -SVNOPTIONS="--ignore-externals" - -print_usage () -{ - echo " " - echo "Usage: $0 [sourceforge ID]" - echo " if no ID is given, it will check out anonymously" - echo " " - exit -} - -if [ $# -eq 0 ]; then - echo "Checking out anonymously. Give your SourceForge ID if you don't want that." -elif [ "$1" == "--help" ]; then - print_usage -elif [ "$1" == "-h" ]; then - print_usage -elif [ $# -eq 1 ]; then - PDAUTH="--username $1" -else - print_usage -fi - -echo "checking out pure-data" -svn checkout $SVNOPTIONS $PDAUTH $URL pure-data - -cd pure-data - -for section in Gem videoIO; do - echo "checking out Gem::${section}" - svn checkout $SVNOPTIONS ${PDAUTH} ${GEMURL}/${section} ${section} -done - - -# make the symlinks which simulate the files being installed into the packages -cd packages && make devsymlinks diff --git a/scripts/config-switcher.sh b/scripts/config-switcher.sh deleted file mode 100755 index 783dfaf2aed35c024b365f6867590fa47af92ca7..0000000000000000000000000000000000000000 --- a/scripts/config-switcher.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/sh - - -#==============================================================================# -# functions - -print_usage() { - echo "Usage: " - echo "To load a config file:" - echo " $0 load CONFIG_NAME" - echo " " - echo "To save the current config to file:" - echo " $0 save CONFIG_NAME" - echo " " - echo "To delete the current config:" - echo " $0 delete CONFIG_NAME" - echo " " - echo "To list existing configs:" - echo " $0 list" - echo " " - echo "To print the contents of a config:" - echo " $0 print CONFIG_NAME" - echo " " - echo "To see the difference between the current config and another:" - echo " $0 diff CONFIG_NAME" - echo " " - echo "To use the .pdrc instead, add '--pdrc':" - echo " $0 --pdrc load CONFIG_NAME" - echo " $0 --pdrc save CONFIG_NAME" - echo " $0 --pdrc delete CONFIG_NAME" - echo " $0 --pdrc list" - echo " $0 --pdrc print CONFIG_NAME" - echo " $0 --pdrc diff CONFIG_NAME" - exit -} - -#==============================================================================# -# THE PROGRAM - -if [ $# -lt 1 ]; then - print_usage -else - # get the command line arguments - if [ $1 == "--pdrc" ]; then - CONFIG_DIR=~ - CONFIG_FILE=.pdrc - COMMAND=$2 - CONFIG_NAME=$3 - else - COMMAND=$1 - CONFIG_NAME=$2 - # location of pref file that Pd reads - case `uname` in - Darwin) - CONFIG_DIR=~/Library/Preferences - CONFIG_FILE=org.puredata.pdextended.plist - ;; - Linux) - CONFIG_DIR=~ - CONFIG_FILE=.pdextended - ;; - *) - echo "Not supported on this platform." - exit - ;; - esac - fi - - # everything happens in this dir - cd $CONFIG_DIR - - selected_file="$CONFIG_DIR/$CONFIG_FILE-$CONFIG_NAME" - case $COMMAND in - load) - if [ -e "$selected_file" ]; then - test -e "$CONFIG_FILE" && mv -f "$CONFIG_FILE" /tmp - cp "$selected_file" "$CONFIG_FILE" && \ - echo "Pd config \"$selected_file\" loaded." - else - echo "\"$selected_file\" doesn't exist. No action taken." - fi - ;; - save) - if [ -e "$CONFIG_FILE" ]; then - cp -f "$CONFIG_FILE" "$selected_file" && \ - echo "Pd config \"$CONFIG_NAME\" saved." - else - echo "\"$CONFIG_FILE\" doesn't exist. No action taken." - fi - ;; - delete) - if [ -e "$selected_file" ]; then - rm -f "$selected_file" && \ - echo "Pd config \"$selected_file\" deleted." - else - echo "\"$selected_file\" doesn't exist. No action taken." - fi - ;; - list) - echo "Available configs:" - pwd - ls -1 "${CONFIG_FILE}"* -pwd - ;; - print) - if [ "${CONFIG_NAME}" == "" ]; then - cat "${CONFIG_FILE}" - else - cat "$selected_file" - fi - ;; - diff) - diff -uw "${CONFIG_FILE}" "$selected_file" - ;; - *) print_usage ;; - esac -fi diff --git a/scripts/convert-help-to-standard.sh b/scripts/convert-help-to-standard.sh deleted file mode 100755 index 56175fd16e73698f5755ecadf8bf473f2216e1bb..0000000000000000000000000000000000000000 --- a/scripts/convert-help-to-standard.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh - -# this script renames help patches that don't follow the OBJECTNAME-help.pd -# format that has become the standard. -# -# for more info on the standard, check this thread: -# http://lists.puredata.info/pipermail/pd-dev/2003-09/001519.html -# -# this script is a hack to take care of this until all of the files get -# renamed by their respective maintainers. - -for helpfile in help-*.pd ; do - if [ -e $helpfile ]; then - newhelpfile=`echo $helpfile | sed 's/^help\-\(.*\)\.pd$/\1-help.pd/'` - if [ "$helpfile" != "$newhelpfile" ]; then - echo " swap $helpfile" "$newhelpfile" - mv "$helpfile" "$newhelpfile" - else - echo "SAMEFILE $helpfile" - fi - fi -done - -# this isn't used yet -#NON_STANDARD_HELP_FILES=`ls -1 *.pd | \ -# grep -v '^.*-help.pd$' | \ -# grep -v '^help-.*.pd$' | \ -# grep -v '^externals.pd$' | \ -# grep -v 'test' | \ -# grep -v 'example' | \ -# grep -v 'demo' | \ -# grep -v 'x_all_guis' | \ -# grep -v 'all_about_' | \ -# grep -v 'pddp' | \ -# grep -v 'readme' | \ -# grep -v '^.*-list.pd$' | \ -# grep -v '^.*-joystick.pd$'` - -#for helpfile in $NON_STANDARD_HELP_FILES ; do -# echo NONE $helpfile -#done - diff --git a/scripts/download-pd-archives.sh b/scripts/download-pd-archives.sh deleted file mode 100755 index 1d80583c6116a38c500e8e07f1c87004a39a2f72..0000000000000000000000000000000000000000 --- a/scripts/download-pd-archives.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# This script downloads mbox archives of the Pd lists and sets them up at -# Apple Mail.app local mailboxes. -# <hans@at.or.at> - -# which lists you want to download. The lists hosted on this server are: -# gem-dev pd-announce pd-cvs pd-dev pd-list pd-ot pdweb -LISTS="pd-announce pd-dev pd-list pd-ot pdweb" -MAILBOX_ROOT=~/Library/Mail/Mailboxes/Pd - -for listname in $LISTS ; do - echo " " - echo " " - echo Downloading $listname: - if [ ! -d $MAILBOX_ROOT/$listname.mbox ]; then - mkdir $MAILBOX_ROOT/$listname.mbox - fi - cd $MAILBOX_ROOT/$listname.mbox - wget http://lists.puredata.info/pipermail/$listname.mbox/$listname.mbox && \ - (rm mbox table_of_contents; mv $listname.mbox mbox) -done diff --git a/scripts/find-wish.app.sh b/scripts/find-wish.app.sh deleted file mode 100755 index 6ea50da95e9cd533d0b108d3389e21128e480e21..0000000000000000000000000000000000000000 --- a/scripts/find-wish.app.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -cvs_root_dir=`echo $0 | sed 's|\(.*\)/.*$|\1|'`/.. -cd $cvs_root_dir -cvs_root_dir=`pwd` - -TCLTK="$1" - -if [ "x${TCLTK}" != "x" ]; then - test -d /Volumes/${TCLTK} || \ - hdiutil mount -quiet ${cvs_root_dir}/packages/darwin_app/${TCLTK}.dmg - echo "/Volumes/${TCLTK}" -else - if [ -d "/Library/Frameworks/Tk.framework/Resources" ]; then - echo "/Library/Frameworks/Tk.framework/Resources" - else - if [ -d "/System/Library/Frameworks/Tk.framework/Resources" ]; then - echo "/System/Library/Frameworks/Tk.framework/Resources" - fi - fi -fi - diff --git a/scripts/guiplugins/buttonbar/buttonbar-plugin.tcl b/scripts/guiplugins/buttonbar/buttonbar-plugin.tcl deleted file mode 100644 index 2fe0cab40b8a1d886f083060d61048a4c87948b9..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/buttonbar/buttonbar-plugin.tcl +++ /dev/null @@ -1,1212 +0,0 @@ -# this plugin creates a buttonbar on a patch window when that patch -# window is in Edit Mode - -# this GUI plugin removes the menubars from any patch window that is -# not in Edit Mode. Also, if a patch is switched to Run Mode, the -# menubar will be removed. - -package require base64 - -proc make_pd_button {mytoplevel name} { - button $mytoplevel.buttonbar.$name -image buttonimage$name \ - -relief flat -borderwidth 0 -highlightthickness 0 \ - -highlightcolor grey -highlightbackground grey -padx 0 -pady 0 \ - -command "menu_send_float \$::focused_window $name 0" - pack $mytoplevel.buttonbar.$name -side left -padx 0 -pady 0 -} - -proc make_iemgui_button {mytoplevel name} { - button $mytoplevel.buttonbar.$name -image buttonimage$name \ - -relief sunken -borderwidth 0 -highlightthickness 0 \ - -highlightcolor grey -highlightbackground grey -padx 0 -pady 0 \ - -command "menu_send \$::focused_window $name" - pack $mytoplevel.buttonbar.$name -side left -padx 0 -pady 0 -} - -proc showhide_buttonbar {mytoplevel} { - if { ! [winfo exists $mytoplevel.buttonbar]} { - frame $mytoplevel.buttonbar -cursor arrow -background grey \ - -pady 0 - make_pd_button $mytoplevel obj - make_pd_button $mytoplevel msg - make_pd_button $mytoplevel floatatom - make_pd_button $mytoplevel symbolatom - make_pd_button $mytoplevel text - make_iemgui_button $mytoplevel bng - make_iemgui_button $mytoplevel toggle - make_iemgui_button $mytoplevel numbox - make_iemgui_button $mytoplevel hslider - make_iemgui_button $mytoplevel vslider - make_iemgui_button $mytoplevel hradio - make_iemgui_button $mytoplevel vradio - make_iemgui_button $mytoplevel vumeter - make_iemgui_button $mytoplevel mycnv - make_iemgui_button $mytoplevel menuarray - } - if {$::editmode($mytoplevel)} { - set tkcanvas [tkcanvas_name $mytoplevel] - pack forget $tkcanvas - pack $mytoplevel.buttonbar -side top -fill x - pack $tkcanvas -side top -expand 1 -fill both - } else { - pack forget $mytoplevel.buttonbar - } -} - -bind PatchWindow <FocusIn> {+showhide_buttonbar %W} -bind PatchWindow <<EditMode>> {+showhide_buttonbar %W} - -#set imgdir "/Users/hans/Desktop/buttonbar" -#image create photo buttonimageobj -file $imgdir/obj.gif.pgm -#image create photo buttonimagemsg -file $imgdir/msg.gif.pgm -#image create photo buttonimagefloatatom -file $imgdir/floatatom.gif -#image create photo buttonimagesymbolatom -file $imgdir/symbolatom.gif -#image create photo buttonimagetext -file $imgdir/text.gif - -#image create photo buttonimagebng -file $imgdir/bng.gif -#image create photo buttonimagetoggle -file $imgdir/toggle.gif -#image create photo buttonimagenumbox -file $imgdir/numbox.gif -#image create photo buttonimagehslider -file $imgdir/hslider.gif.pgm -#image create photo buttonimagevslider -file $imgdir/vslider.gif.pgm -#image create photo buttonimagehradio -file $imgdir/hradio.gif.pgm -#image create photo buttonimagevradio -file $imgdir/vradio.gif.pgm -#image create photo buttonimagevumeter -file $imgdir/vumeter.gif -#image create photo buttonimagemycnv -file $imgdir/mycnv.gif - -#image create photo buttonimagemenuarray -file $imgdir/array.gif - -set menuarraydata { -R0lGODlhHAATAMQAAAAAAAsLCxISEh0dHSQkJDMzMzs7O0ZGRlJSUnFxcXl5eZGRkaCgoK2trbu7 -u8bGxtjY2OLi4unp6f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQA -AAAAIf/8SUNDUkdCRzEwMTIAAA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3Nw -QVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAA -ABRiWFlaAAABVAAAABR3dHB0AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAAB -uAAAAA5iVFJDAAAByAAAAA52Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNj -bQAADpAAAACmbW1vZAAADzgAAAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVog -AAAAAAAAcEsAALBzAAAij1hZWiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9z -ZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHN -AABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0A -Zf8A0gF8AkoDHgQIBSMGXAeyCSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8n -MSh9KcgrDixTLZMu0DAJMT8ybTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYM -RwRH/kj3Se9K6EvhTNxN1k7RT81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYglj -E2QeZSpmNmdCaE9pW2poa3ZshG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBP -gVKCVYNWhFeFV4ZWh1SIUolQik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxF -nUmeTJ9QoFShWKJco1+kYqVmpmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25 -VrpNu0O8Ob0tvh+/EMAAwO3B2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC -0ofTStQN1M7VjNZK1wjXxNh+2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm -3OeV6E/pCunH6ojrTOwU7OLtt+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc -/wBiAMoBZgIoAucDzgTNBfYHNQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOF -JMEl+ycuKF4pjSq4K+AtAy4iLzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9B -IUIBQuJDw0SkRYZGaUdNSDBJFkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZ -W8tcvV2uXqBfkGCBYXJiY2NUZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ2 -03fPeMx5yHrCe7x8tn2ufqd/n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGS -DpMLlAiVBZYClv+X/Zj6mfea9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62y -rrevvLDDscuy1LPdtOa18Lb4uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrK -hctwzFjNQM4mzwvP79DS0bPSk9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe -5JrlmOaZ55von+mk6qrrsey57cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ -ABYATgCiARIBqQJNAvgDxwStBagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob -1hzOHcMeth+oIJchhCJvI1ckPCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0 -MxszwDRlNQo1rjZTNvY3mjg+OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNF -C0W0Rl9HCke3SGVJFEnDSnNLJUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+Viz -WW1aKFriW51cWF0TXc5eil9GYAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3F -bpNvYXAwcP9xz3Kgc3F0QnUVded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF -3oa5h5WIcYlNiiqLCIvmjMSNo46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57w -n+eg4aHdotyj36Tkpeym+KgHqRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+ -w7/6wTXCdcO8xRDGbsfayV7K9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8A -AG5kaW4AAAAAAAAGNgAAlvAAAFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuF -AAMBAAACAAAAGwAwAEoAZQB+AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowC -sALWAv0DJgNRA34DrAPdBBAERQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2 -ChgKfgrmC1MLwww2DK0NJw2kDiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8Z -VRn8GqUbUBv7HKkdVx4HHrgfayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQt -oC5uLz0wDjDhMbUyizNjND01GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cw -SDtJSEpXS2dMeE2LTqBPtVDLUeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltn -jWjBafdrL2xpbaVu43AjcWVyqnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0K -jpqQMZHPk3SVIJbTmI6aT5wYneifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MO -xU3Hj8nUzBzOaNC30wjVWNel2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7 -lP0P/ob//wAAABwAMwBQAGsAhwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLG -Au8DGgNHA3cDqAPdBBMETASHBMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4L -MwusDCoMrA0zDb0OSw7dD3IQChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzs -HageZR8kH+UgqCFtIjQi/iPKJJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRI -NTI2HDcJN/Y45TnWOsg7vTy0Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR -1lL3VBlVO1ZfV4RYqlnRWvlcI11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQ -dN12Knd3eMV6EntffKx9+H9EgJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2a -vpxEnc6fXKDuooWkIKXAp2SpDaq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK -28yazlTQC9G+027VG9bG2HDaGNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD -+yb8x/5m//8AAAAjAEIAZwCJAKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD -/wRGBJIE4QU0BYoF5AZBBqEHBQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLC -E6YUkBV/FnMXbBhqGWwacxuAHJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMy -vzP9NT42gDfFOQw6VzujPPM+RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hY -wlotW5ldBl50X+RhVWLHZDplr2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJc -g+uFe4cNiJ+KMovFjViO7JB/khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGv -abDeslKzwrUxtp+4C7l2uuC8Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar -1/rZQdqB27nc6d4M3yfgOuE+4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K -8CDwsfFD8dPyXfLo83Pz+PR99QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+ -Nv6o/xr/jf//AABkZXNjAAAAAAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1 -YwAAAAAAAAAFAAAADGVuVVMAAAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAAS -AAAAgGl0SVQAAAAUAAAAkgBDAG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBh -AHIAYgAtAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QA -AAAAAAAGEAAAnGEAAAAAwF3/AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBs -ZSwgSW5jLiwgMjAxMAAALAAAAAAcABMAAAWO4CSOZGmeE6CubOu2IoDOp5zS+GgDxmn0ox9K9lBF -ShKVRBQx1iYJVUMkLAIGPYdUOCpODirFxMpgsB4LFULFEJl3gIMhoCIoWPRXgaCKtQQAgC8qgioF -O3wAAQZvKwIDdSoQExIFBUkxbw8ihytHP5VAJDsTXJQFP6I0pDk4rK0zr7BPN7NDfoO5L7atIQA7 -} -image create photo buttonimagemenuarray -data $menuarraydata - -set bngdata { -R0lGODlhEgASAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABIAEgAAAjOMj4nA7Q8MfE -setqINWqtueQpH -ctgonSeatqy7sqqIznTShG8Elt/mia06k9wlVYS8WAUAOw== -} -image create photo buttonimagebng -data $bngdata - -set floatatomdata { -R0lGODlhEQARANUAAAAAAAAAkQBPkQoKChMTEy5BgkEAT09PLk+CyE+JzU+f0lxcQXAuLnm97oJB -cILI7okuXJjc/6WlsatcALdmALd5XL3Ckb3CpcDAwMju/9KRLtLq+9L35eDg4OX7/+7cwvLSn/vS -kf7//v/lq//uzf//7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQKAAAAIf/8SUNDUkdCRzEwMTIA -AA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0 -AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52 -Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgA -AAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZ -WiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///z -JgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAA -Y3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAey -CSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8y -bTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7R -T81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3Zs -hG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQ -ik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVm -pmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B -2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+ -2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLt -t+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYH -NQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4i -LzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJ -Fkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NU -ZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/ -n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea -9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4 -uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPS -k9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey5 -7cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwSt -BagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ck -PCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+ -OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNL -JUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9G -YAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUV -ded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSN -o46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgH -qRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K -9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAA -AFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+ -AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAE -RQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2k -DiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgf -ayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01 -GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDL -UeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVy -qnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wY -neifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel -2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsA -hwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASH -BMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQ -ChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPK -JJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0 -Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlc -I11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9E -gJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2Sp -Daq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDa -GNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJ -AKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEH -BQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuA -HJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+ -RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDpl -r2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/ -khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8 -Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+ -4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR9 -9QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAA -AAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMA -AAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBD -AG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBE -ACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/ -AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAA -AAARABEAAAZcQJFwSCwaj0iAcqkcdI4AIwBDwEiZSxHVSoyKPpINcdsVgQoXQ4bYGZQnkRFAUfQK -ASUIx2FB1MsVBw0hCX9DURoBIhQPhnciJAwLAh6OIlhZh12YmEien6ChQ0EAOw== -} -image create photo buttonimagefloatatom -data $floatatomdata - -set hradiodata { -R0lGODlhEwASAPABAP///wAAACH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABMAEgAAAieEj6nL7Q9jCrTaSw2uK2hwgd0X -eorplaOonqQluuBmThpNS/rO6wUAOw== -} -image create photo buttonimagehradio -data $hradiodata - -set hsliderdata { -R0lGODlhFwATAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABcAEwAAAjOMj6nL7Q+jAbTaiycGqCYegI3X -TQ95gCKDmuFJfe4Yl6/T3uuSq1tXS2k2RIvkiEwqIwUAOw== -} -image create photo buttonimagehslider -data $hsliderdata - -set msgdata { -R0lGODlhGgARAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABoAEQAAAjCMj6kK7Q+jM4CtVam8KVMOeh+I -WaSJiOeYrh3qBqocH/N83rX97qy8WXkkxKKPUwAAOw== -} -image create photo buttonimagemsg -data $msgdata - -set mycnvdata { -R0lGODlhEgATAIAAAODg4P///yH5BAQAAAAAIf/8SUNDUkdCRzEwMTIAAA+EYXBwbAIAAABtbnRy -UkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYA -AQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0AAABaAAAABRjaGFkAAAB -fAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52Y2d0AAAB2AAABhJu/2Rp -bgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgAAAAoY3BydAAAD2AAAAAk -WFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZWiAAAAAAAAAlgQAAF1cA -AKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov// -/aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0A -AHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAeyCSQKswxdDg4P0xGeE2UV -LBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8ybTOXNLw13Tb2OA05HTop -OzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7RT81QylHIUsdTx1THVchW -ylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3ZshG2Sbp9vrXC6cchy1XPi -dO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQik2LSoxHjUOOQI//PZA7 -kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVmpmmnbKhvqXGqdKt1rHet -eK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B2cLDw6rEj8VxxlHHL8gK -yOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+2TjZ8tqq22LcGtzS3Yre -Qt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLtt+6S73XwX/FR8kzzT/Rb -9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYHNQiUCgULmQ0xDtcQhxIv -E9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4iLzswTjFdMmQzaDRmNWA2 -VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJFkn8SuRLzUy3TaNOkk+A -UHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NUZEZlOGYrZyBoFGkKagJq -+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/n4CWgY2Cg4N6hP9vhWWG -XIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea9JvwnOyd6J7jn9+g2qHU -os6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4uAG5CboPuxS8GL0avhq/ -GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPSk9Ny1FHVL9YN1uvXydin -2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey57cHuyu/U8N7x6vL39AT1 -FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwStBagGuQfeCRcKWAuhDPEO -Qw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ckPCUdJfsm1CepKHkpRioO -KtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+OOE5hDooOss7bzwSPLU9 -WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNLJUvWTIlNPE3wTqRPWVAO -UMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9GYAJgvmF7Yjli//djtWR1 -ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUVded2uneOeGJ5N3oMeuF7 -uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSNo46Dj2SQRpEokguS8JPV -lLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgHqRiqLKtDrFutdq6Tr7Gw -0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K9MynznzQcdKM1MzXQNnY -3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAAAFjoAABTGAAAil4AACeX -AAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+AJcAsADJAOIA+wEUAS0B -RgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAERQR8BLYE8QUuBW0FrgXx -BjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2kDiUOqA8uD7YQQRDPEV4R -8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgfayAeINQhiiL/QiL7I7Uk -cSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01GTX4Ntg3ujifOYc6cDtc -PEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDLUeNS+1QUVS5WSldmWIRZ -olrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVyqnPxdTt2h3fWeSd6fHvT -fS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wYneifv6Gdo4GlbadhqVur -Xa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel2ezcKd5Z4HriieSG5nLo -Tuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsAhwChALwA1gDxAQwBJgFB -AV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASHBMQFBAVGBYoF0AYZBmQG -sAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQChClEUMR4xKHEywT1RR/ -FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPKJJglaCY7J/8PJ+YowCmb -KngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0Pa0+qD+lQKZBqEKtQ7VE -vkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlcI11OXntfqWDZYgpjPmRz -Zatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9EgJGB3YMqhHiFx4cXiGqJ -vosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2SpDaq6rGyuIq/dsZ2zYbUp -tvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDaGNvB3WnfEeC54mLkDOW1 -51/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJAKsAzQDvAREBMwFWAXoB -nwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEHBQdsB9cIRwi7CTQJswo4 -CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuAHJEdpx7BH+AhASIlI0sk -ciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+RT+bQPNC/05DrEUMRm5H -00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDplr2claJ1qFWuPbQpuhnAE -cYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/khOTppU5lsyYX5nym4Sd -Fp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8Sr2yvxvAg8Hqw1LEucYf -x4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+4j7jL+Qc5P3l2ear53ro -PukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR99QH1hPYE9oX3BfeI+Ar4 -jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAAAAAAAApDb2xvciBMQ0QA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMAAAASAAAATGZyRlIAAAAS -AAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBDAG8AbAChbwByACAATABD -AEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAEwA -QwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/AAAAAAAAAAAAAAAAAAAA -AAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAAAAASABMAAAIljI+JwO0P -DJxN0mnvy7qGvn2gN5JlJJYcuHat9l4xNWPKjedKAQA7 -} -image create photo buttonimagemycnv -data $mycnvdata - -set numboxdata { -R0lGODlhFgATANUAAAAAAAAAZQAAeABbqQBvrwkJCRISEiUlJS14ry2Iyjo6OkCAtUCWylRUVFsA -AGWv4nNzc4gAAIi7xYvF64/P75OTk6Pe/KlbLa9lAK+dZa+vr7WAQLuALb29vcDAwM+PLc+WTtT0 -/Nzc3N7i7eDg4OKvZerq6uvKi+3k3vT8/PX19fjZnfznr/z41Pz89P39/QAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQAAAAAIf/8SUNDUkdCRzEwMTIA -AA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0 -AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52 -Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgA -AAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZ -WiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///z -JgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAA -Y3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAey -CSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8y -bTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7R -T81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3Zs -hG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQ -ik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVm -pmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B -2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+ -2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLt -t+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYH -NQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4i -LzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJ -Fkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NU -ZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/ -n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea -9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4 -uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPS -k9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey5 -7cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwSt -BagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ck -PCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+ -OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNL -JUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9G -YAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUV -ded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSN -o46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgH -qRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K -9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAA -AFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+ -AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAE -RQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2k -DiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgf -ayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01 -GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDL -UeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVy -qnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wY -neifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel -2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsA -hwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASH -BMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQ -ChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPK -JJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0 -Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlc -I11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9E -gJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2Sp -Daq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDa -GNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJ -AKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEH -BQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuA -HJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+ -RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDpl -r2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/ -khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8 -Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+ -4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR9 -9QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAA -AAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMA -AAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBD -AG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBE -ACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/ -AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAA -AAAWABMAAAaXwJdwSCwahYCkcskskIpM5bFj8BAB1M6xSLUiX1kjakTsfsEGrdC1SS5SQ1HhjFaf -AiEWYHKl118fCS8cAAx9LwBFHgYvGA8rAhkDcGeJcQYaLhcSERQlk0OWli8mBxVCIAAEgIKhZyoK -EEMnABYtDnyuiEINDURsSQiUlS8QCipiZFBIFQcmW0eiUaNb0tPXUtDa29xCQQA7 -} -image create photo buttonimagenumbox -data $numboxdata - -set objdata { -R0lGODlhFgARAPABAP///wAAACH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABYAEQAAAiWEj6kW7emaCqtOaynQ+O6+aBx4 -jCRinurKtpDLtKLMmJEtwUYBADs= -} -image create photo buttonimageobj -data $objdata - -set symbolatomdata { -R0lGODlhEQARANUAAAAAAAAALgAAkQoKChMTEy4ueS5BcC5cn0FBLk8AAFxmXFyJt2aYwokuAJFc -QZG915jI6pjX959cT6uCXLGCT7HS5beYn8DAwMiRQdLu+9f38uDg4OXIpez9//LSmPL/8vfSkff/ -//v38v7////y4P/94v//8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQAAAAAIf/8SUNDUkdCRzEwMTIA -AA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0 -AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52 -Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgA -AAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZ -WiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///z -JgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAA -Y3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAey -CSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8y -bTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7R -T81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3Zs -hG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQ -ik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVm -pmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B -2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+ -2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLt -t+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYH -NQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4i -LzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJ -Fkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NU -ZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/ -n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea -9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4 -uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPS -k9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey5 -7cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwSt -BagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ck -PCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+ -OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNL -JUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9G -YAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUV -ded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSN -o46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgH -qRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K -9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAA -AFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+ -AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAE -RQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2k -DiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgf -ayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01 -GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDL -UeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVy -qnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wY -neifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel -2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsA -hwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASH -BMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQ -ChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPK -JJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0 -Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlc -I11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9E -gJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2Sp -Daq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDa -GNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJ -AKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEH -BQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuA -HJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+ -RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDpl -r2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/ -khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8 -Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+ -4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR9 -9QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAA -AAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMA -AAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBD -AG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBE -ACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/ -AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAA -AAARABEAAAZfwJFwSCwaj0iAcqkcbI4AI+BCuEiZyxHVSowit12kcDMIlxyIw8eSGXqFUZCgI+Qk -FvT3KGqiABghQhgAEHpRIiMlDREkEwYVe2EeAQoFGhIPbl1YSmFunJxioqOko0EAOw== -} -image create photo buttonimagesymbolatom -data $symbolatomdata - -set textdata { -R0lGODlhGwARAPAAAP///wAAACH5BAAAAAAAIf8LSUNDUkdCRzEwMTL/AAAPhGFwcGwCAAAAbW50 -clJHQiBYWVogB9oACQABAA8AEwAfYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbW -AAEAAAAA0y1hcHBs2S6BsfMyXumJcebqTFAPNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA -AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRp -bgAAB+wAAAY+ZGVz/2MAAA4sAAAAZGRzY20AAA6QAAAApm1tb2QAAA84AAAAKGNwcnQAAA9gAAAA -JFhZWiAAAAAAAABhCgAAOFEAAAdYWFlaIAAAAAAAAHBLAACwcwAAIo9YWVogAAAAAAAAJYEAABdX -AACpPlhZWiAAAAAAAADzUgABAAAAARbPc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L/ -//2jAAAD3AAAwGxjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHN -AAB2Y2d0AAAAAAAAAAAAAwEAAAIAAAAdAGUA0gF8AkoDHgQIBSMGXP8HsgkkCrMMXQ4OD9MRnhNl -FSwW7RieGkQb3x1rHu4gYyHOIzEkiSXfJzEofSnIKw4sUy2TLtAwCTE/Mm0zlzS8Nd029jgNOR06 -KTszPDc9Oj46PzdAM0EuQilDIkQaRRRGDEcER/5I90nvSuhL4UzcTdZO0U/NUMpRyFLHU8dUx1XI -VspXzFjPWdNa11vdXOJd6V7wX/hhAGIJYxNkHmUqZjZnQmhPaVtqaGt2bIRtkm6fb61wunHIctVz -4nTvdfx3B3gSeRx6J3swfDd9P35Ff0qAT4FSglWDVoRXhVeGVodUiFKJUIpNi0qMR41DjkCPPZA7 -kTiSN5M2lDWVNZb/Npc3mDmZO5o+m0KcRZ1JnkyfUKBUoViiXKNfpGKlZqZpp2yob6lxqnSrdax3 -rXiuea95sHmxeLJ2s3S0cbVutmm3Y7hduVa6TbtDvDm9Lb4fvxDAAMDtwdnCw8OqxI/FccZRxy/I -CsjkybzKkMtkzDXNBc3Tzp/PatAz0PzRwtKH00rUDdTO1YzWStcI18TYftk42fLaqtti3Brc0t2K -3kLe+d+x4GjhIOHY4o/jR+P/5LblbeYl5tznlehP6Qrpx+qI60zsFOzi7bfuku918F/xUfJM80/0 -W/Vt9of3p/jN+fj7I/xU/Yr+xP//AAAAHABiAMoBZgIoAucDzgTN/wX2BzUIlAoFC5kNMQ7XEIcS -LxPcFX0XFRikGicbmR0EHl0fsiD/IkcjhSTBJfsnLiheKY0quCvgLQMuIi87ME4xXTJkM2g0ZjVg -NlY3Rzg2OR86CDrvO9M8tz2aPnw/XkA/QSFCAULiQ8NEpEWGRmlHTUgwSRZJ/ErkS81Mt02jTpJP -gFBwUWFSU1NFVDhVK1YeVxBYA1j2Weda2VvLXL1drl6gX5BggWFyYmNjVGRGZThmK2cgaBRpCmoC -avpr9Gzubepu5m/jcOFx33Ldc9t02XXWdtN3z3jMech6wnu8fLZ9rn6nf5+AloGNgoODeoRvhWWG -XIdTiEmJQYo5i/8xjCqNJY4fjxqQFZERkg6TC5QIlQWWApb/l/2Y+pn3mvSb8Jzsneie45/foNqh -1KLOo8ikw6W+prmntaixqa+qrauurK+tsq63r7yww7HLstSz3bTmtfC2+LgBuQm6D7sUvBi9Gr4a -vxjAFcEQwgnDAcP2xOvF3cbPx7/IrcmayoXLcMxYzUDOJs8Lz+/Q0tGz0pPTctRR1S/WDdbr18nY -p9mF2mXbRtwp3Q7d9d7f38zgvOGv4qXjnuSa5Zjmmeeb6J/ppOqq67Hsue3B7srv1PDe8ery9/QE -9RT2Jfc3+Er5YPp3+478pv3A/t3//wAAABYATgCiARIBqQJNAvj/A8cErQWoBrkH3gkXClgLoQzx -DkMPjBDWEhYTThR6FZ4WuBfKGNYZ2hraG9Yczh3DHrYfqCCXIYQibyNXJDwlHSX7JtQnqSh5KUYq -DirRK5EsTi0HLbsuby8gL80weTElMcwydDMbM8A0ZTUKNa42Uzb2N5o4PjjhOYQ6KDrLO288Ejy1 -PVg9+j6dP0A/40CGQSlBzUJxQxZDvERjRQtFtEZfRwpHt0hlSRRJw0pzSyVL1kyJTTxN8E6kT1lQ -DlDEUXtSMlLpU6FUWlUSVcxWhVc/V/lYs1ltWiha4ludXFhdE13OXopfRmACYL5he2I5YvdjtWR1 -ZTVl92a5Z31o/0JpCGnPaphrYmwtbPhtxW6Tb2FwMHD/cc9yoHNxdEJ1FXXndrp3jnhieTd6DHrh -e7h8j31lfjx/FH/sgMWBnYJ3g1CEKoUEhd6GuYeViHGJTYoqiwiL5ozEjaOOg49kkEaRKJILkvCT -1ZS8laOWjJd2mGCZTJo6myicF50Infue8J/noOGh3aLco9+k5KXspvioB6kYqiyrQ6xbrXauk6+x -sNKx87MWtDq1X7aHt6+42boEuzG8X72QvsO/+sE1wnXDvMUQxm7H2sleyvTMp8580HHSjNTM10DZ -2Nyl35jis+X36Wfs8vB29CP39Pvw//8AAG5kaW4AAAAAAAAGNv8AAJbwAABY6AAAUxgAAIpeAAAn -lwAAFqgAAFANAABUOQACQo8AAfCjAAFrhQADAQAAAgAAABsAMABKAGUAfgCXALAAyQDiAPsBFAEt -AUYBYQF7AZYBsQHOAesCCQIoAkgCaQKMArAC1gL9AyYDUQN+A6wD3QQQBEUEfAS2BPEFLgVtBa4F -8QY1BnwGxAcOB1sHqQf6CE0Iowj8CVgJtgoYCn4K5gtTC8MMNgytDScNpA4lDqgPLg+2EEEQzxFe -EfAShBMZE7EUSxTnFYQWIxbEF2YYChivGVUZ/BqlG1Ab+xypHVceBx64H2sgHiDUIYoiQiL7I7Uk -cSUtJesmqif/aigsKO8ptCp6K0EsCizULaAubi89MA4w4TG1MoszYzQ9NRk1+DbYN7o4nzmHOnA7 -XDxLPTw+MD8mQB9BGkIYQxhEG0UgRidHMEg7SUhKV0tnTHhNi06gT7VQy1HjUvtUFFUuVkpXZliE -WaJaw1vkXQdeLF9SYHpho2LPY/xlKmZbZ41owWn3ay9saW2lbuNwI3Flcqpz8XU7dod31nknenx7 -030tfop/64FPgreEIoWShwaIf4n9i4CNCo6akDGRz5N0lSCW05iOmk+cGJ3on7+hnaOBpW2nYalb -q12taK95sZGzsLXVuAC6L7xivpjA0sMOxU3Hj8nUzBzOaNC3/9MI1VjXpdns3CneWeB64onkhuZy -6E7qG+vZ7YvvM/DS8mnz+fWE9wr4k/oW+5T9D/6G//8AAAAcADMAUABrAIcAoQC8ANYA8QEMASYB -QQFdAXkBlgGzAdEB8QIRAjICVQJ5Ap8CxgLvAxoDRwN3A6gD3QQTBEwEhwTEBQQFRgWKBdAGGQZk -BrAHAAdRB6UH/AhWCLMJFAl4CeEKTQq+CzMLrAwqDKwNMw29DksO3Q9yEAoQpRFDEeMShxMsE9UU -fxUrFdkWiRc6F+0YoBlVGgsawRt5HDIc7B2oHmUfJB/lIKghbSI0Iv4jyiSYJWgmOycPJ+YowCmb -KngrVyw3Lf8ZLfsu3y/EMKoxkDJ3M180SDUyNhw3CTf2OOU51jrIO708tD2tPqg/pUCmQahCrUO1 -RL5Fy0baR+tI/koTSytMRE1eTnpPmFC2UdZS91QZVTtWX1eEWKpZ0Vr5XCNdTl57X6lg2WIKYz5k -c2WrZuRoIGleap1r320jbmlvsXD6ckVzkHTddip3d3jFehJ7X3ysffh/RICRgd2DKoR4hceHF4hq -ib6LFYxujcuPK5CPkfeTY5TTlkeXwJk9mr6cRJ3On1yg7qKFpCClwKdkqQ2quqxsriKv3bGds2G1 -Kbb0uMO6lLxnvjvAEMHjw7XFhMdQyRfK28yazlTQC9G+027/1RvWxthw2hjbwd1p3xHgueJi5Azl -tedf6Qjqsexa7gHvqPFP8vT0mPY799/5g/sm/Mf+Zv//AAAAIwBCAGcAiQCrAM0A7wERATMBVgF6 -AZ8BxQHsAhYCQQJuAp4C0AMGAz4DewO7A/8ERgSSBOEFNAWKBeQGQQahBwUHbAfXCEcIuwk0CbMK -OArEC1cL8gyUDT8N8g6sD28QORELEeMSwhOmFJAVfxZzF2wYahlsGnMbgByRHacewR/gIQEiJSNL -JHIlmybEJ+4pGipIK3csqC3cLxEwSTGDMr8z/TU+NoA3xTkMOlc7ozzzPkU/m0DzQk5DrEUMRm5H -00k5SqFM/wpNc07dUEdRsVMbVIRV7ldYWMJaLVuZXQZedF/kYVVix2Q6Za9nJWidahVrj20KboZw -BHGEcwR0h3YLd5B5F3qffCl9tH9AgM2CXIPrhXuHDYifijKLxY1YjuyQf5ITk6aVOZbMmF+Z8puE -nRaeqKA5ocijVqTipmyn86l3qvisdq3xr2mw3rJSs8K1MbafuAu5drrgvEq9sr8bwIPB6sNSxLnG -H8eGyOzKUcu2zRvOf8/i0UPSotP+1VfWq9f62UHagdu53OneDN8n4DrhPuI+4y/kHOT95dnmq+d6 -6D7pAum56nDrIOvL7HftGO257lju8e+K8CDwsfFD8dPyXf/y6PNz8/j0ffUB9YT2BPaF9wX3iPgK -+I35DfmJ+gb6g/r8+3X77fxm/Nr9Tv3C/jb+qP8a/43//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENE -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAABQAAAAxlblVTAAAAEgAAAExmckZSAAAA -EgAAAF5kZURFAAAAEAAAAHBlc0VTAAAAEgAAAIBpdElUAAAAFAAAAJIAQwBvAGwAbwByACAATABD -AEQAyQCTYwByAGEAbgAgAEwAQwBEAEYAYQByAGIALQBMAEMARABMAEMARAAgAGMAbwBsAG8AcgBM -AEMARAAgAGMAbwBsAG8AcgBpAABtbW9kAAAAAAAABhAAAJxhAAAAAMBd/wAAAAAAAAAAAAAAAAAA -AAAAdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTAAACwAAAAAGwARAAACMYSPqcvt -D6Oc1IR6V54bhb+B1nGB3UimQKkqnRl6zKvJ9YqjrO6GH5pbnSrEovH4KAAAOw== -} -image create photo buttonimagetext -data $textdata - -set toggledata { -R0lGODlhFAATAPMAAP///wAAAAEBAfz8/N3d3YeHh729vRISEg0NDQ4ODgAAAAAAAAAAAAAAAAAA -AAAAACH5BAAAAAAAIf8LSUNDUkdCRzEwMTL/AAAPhGFwcGwCAAAAbW50clJHQiBYWVogB9oACQAB -AA8AEwAfYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBs2S6B -sfMyXumJcebqTFAPNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAU -Z1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagA -AAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVz/2MA -AA4sAAAAZGRzY20AAA6QAAAApm1tb2QAAA84AAAAKGNwcnQAAA9gAAAAJFhZWiAAAAAAAABhCgAA -OFEAAAdYWFlaIAAAAAAAAHBLAACwcwAAIo9YWVogAAAAAAAAJYEAABdXAACpPlhZWiAAAAAAAADz -UgABAAAAARbPc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAAwGxjdXJ2 -AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAAB2Y2d0AAAAAAAAAAAA -AwEAAAIAAAAdAGUA0gF8AkoDHgQIBSMGXP8HsgkkCrMMXQ4OD9MRnhNlFSwW7RieGkQb3x1rHu4g -YyHOIzEkiSXfJzEofSnIKw4sUy2TLtAwCTE/Mm0zlzS8Nd029jgNOR06KTszPDc9Oj46PzdAM0Eu -QilDIkQaRRRGDEcER/5I90nvSuhL4UzcTdZO0U/NUMpRyFLHU8dUx1XIVspXzFjPWdNa11vdXOJd -6V7wX/hhAGIJYxNkHmUqZjZnQmhPaVtqaGt2bIRtkm6fb61wunHIctVz4nTvdfx3B3gSeRx6J3sw -fDd9P35Ff0qAT4FSglWDVoRXhVeGVodUiFKJUIpNi0qMR41DjkCPPZA7kTiSN5M2lDWVNZb/Npc3 -mDmZO5o+m0KcRZ1JnkyfUKBUoViiXKNfpGKlZqZpp2yob6lxqnSrdax3rXiuea95sHmxeLJ2s3S0 -cbVutmm3Y7hduVa6TbtDvDm9Lb4fvxDAAMDtwdnCw8OqxI/FccZRxy/ICsjkybzKkMtkzDXNBc3T -zp/PatAz0PzRwtKH00rUDdTO1YzWStcI18TYftk42fLaqtti3Brc0t2K3kLe+d+x4GjhIOHY4o/j -R+P/5LblbeYl5tznlehP6Qrpx+qI60zsFOzi7bfuku918F/xUfJM80/0W/Vt9of3p/jN+fj7I/xU -/Yr+xP//AAAAHABiAMoBZgIoAucDzgTN/wX2BzUIlAoFC5kNMQ7XEIcSLxPcFX0XFRikGicbmR0E -Hl0fsiD/IkcjhSTBJfsnLiheKY0quCvgLQMuIi87ME4xXTJkM2g0ZjVgNlY3Rzg2OR86CDrvO9M8 -tz2aPnw/XkA/QSFCAULiQ8NEpEWGRmlHTUgwSRZJ/ErkS81Mt02jTpJPgFBwUWFSU1NFVDhVK1Ye -VxBYA1j2Weda2VvLXL1drl6gX5BggWFyYmNjVGRGZThmK2cgaBRpCmoCavpr9Gzubepu5m/jcOFx -33Ldc9t02XXWdtN3z3jMech6wnu8fLZ9rn6nf5+AloGNgoODeoRvhWWGXIdTiEmJQYo5i/8xjCqN -JY4fjxqQFZERkg6TC5QIlQWWApb/l/2Y+pn3mvSb8Jzsneie45/foNqh1KLOo8ikw6W+prmntaix -qa+qrauurK+tsq63r7yww7HLstSz3bTmtfC2+LgBuQm6D7sUvBi9Gr4avxjAFcEQwgnDAcP2xOvF -3cbPx7/IrcmayoXLcMxYzUDOJs8Lz+/Q0tGz0pPTctRR1S/WDdbr18nYp9mF2mXbRtwp3Q7d9d7f -38zgvOGv4qXjnuSa5Zjmmeeb6J/ppOqq67Hsue3B7srv1PDe8ery9/QE9RT2Jfc3+Er5YPp3+478 -pv3A/t3//wAAABYATgCiARIBqQJNAvj/A8cErQWoBrkH3gkXClgLoQzxDkMPjBDWEhYTThR6FZ4W -uBfKGNYZ2hraG9Yczh3DHrYfqCCXIYQibyNXJDwlHSX7JtQnqSh5KUYqDirRK5EsTi0HLbsuby8g -L80weTElMcwydDMbM8A0ZTUKNa42Uzb2N5o4PjjhOYQ6KDrLO288Ejy1PVg9+j6dP0A/40CGQSlB -zUJxQxZDvERjRQtFtEZfRwpHt0hlSRRJw0pzSyVL1kyJTTxN8E6kT1lQDlDEUXtSMlLpU6FUWlUS -VcxWhVc/V/lYs1ltWiha4ludXFhdE13OXopfRmACYL5he2I5YvdjtWR1ZTVl92a5Z31o/0JpCGnP -aphrYmwtbPhtxW6Tb2FwMHD/cc9yoHNxdEJ1FXXndrp3jnhieTd6DHrhe7h8j31lfjx/FH/sgMWB -nYJ3g1CEKoUEhd6GuYeViHGJTYoqiwiL5ozEjaOOg49kkEaRKJILkvCT1ZS8laOWjJd2mGCZTJo6 -myicF50Infue8J/noOGh3aLco9+k5KXspvioB6kYqiyrQ6xbrXauk6+xsNKx87MWtDq1X7aHt6+4 -2boEuzG8X72QvsO/+sE1wnXDvMUQxm7H2sleyvTMp8580HHSjNTM10DZ2Nyl35jis+X36Wfs8vB2 -9CP39Pvw//8AAG5kaW4AAAAAAAAGNv8AAJbwAABY6AAAUxgAAIpeAAAnlwAAFqgAAFANAABUOQAC -Qo8AAfCjAAFrhQADAQAAAgAAABsAMABKAGUAfgCXALAAyQDiAPsBFAEtAUYBYQF7AZYBsQHOAesC -CQIoAkgCaQKMArAC1gL9AyYDUQN+A6wD3QQQBEUEfAS2BPEFLgVtBa4F8QY1BnwGxAcOB1sHqQf6 -CE0Iowj8CVgJtgoYCn4K5gtTC8MMNgytDScNpA4lDqgPLg+2EEEQzxFeEfAShBMZE7EUSxTnFYQW -IxbEF2YYChivGVUZ/BqlG1Ab+xypHVceBx64H2sgHiDUIYoiQiL7I7UkcSUtJesmqif/aigsKO8p -tCp6K0EsCizULaAubi89MA4w4TG1MoszYzQ9NRk1+DbYN7o4nzmHOnA7XDxLPTw+MD8mQB9BGkIY -QxhEG0UgRidHMEg7SUhKV0tnTHhNi06gT7VQy1HjUvtUFFUuVkpXZliEWaJaw1vkXQdeLF9SYHph -o2LPY/xlKmZbZ41owWn3ay9saW2lbuNwI3Flcqpz8XU7dod31nknenx7030tfop/64FPgreEIoWS -hwaIf4n9i4CNCo6akDGRz5N0lSCW05iOmk+cGJ3on7+hnaOBpW2nYalbq12taK95sZGzsLXVuAC6 -L7xivpjA0sMOxU3Hj8nUzBzOaNC3/9MI1VjXpdns3CneWeB64onkhuZy6E7qG+vZ7YvvM/DS8mnz -+fWE9wr4k/oW+5T9D/6G//8AAAAcADMAUABrAIcAoQC8ANYA8QEMASYBQQFdAXkBlgGzAdEB8QIR -AjICVQJ5Ap8CxgLvAxoDRwN3A6gD3QQTBEwEhwTEBQQFRgWKBdAGGQZkBrAHAAdRB6UH/AhWCLMJ -FAl4CeEKTQq+CzMLrAwqDKwNMw29DksO3Q9yEAoQpRFDEeMShxMsE9UUfxUrFdkWiRc6F+0YoBlV -GgsawRt5HDIc7B2oHmUfJB/lIKghbSI0Iv4jyiSYJWgmOycPJ+YowCmbKngrVyw3Lf8ZLfsu3y/E -MKoxkDJ3M180SDUyNhw3CTf2OOU51jrIO708tD2tPqg/pUCmQahCrUO1RL5Fy0baR+tI/koTSytM -RE1eTnpPmFC2UdZS91QZVTtWX1eEWKpZ0Vr5XCNdTl57X6lg2WIKYz5kc2WrZuRoIGleap1r320j -bmlvsXD6ckVzkHTddip3d3jFehJ7X3ysffh/RICRgd2DKoR4hceHF4hqib6LFYxujcuPK5CPkfeT -Y5TTlkeXwJk9mr6cRJ3On1yg7qKFpCClwKdkqQ2quqxsriKv3bGds2G1Kbb0uMO6lLxnvjvAEMHj -w7XFhMdQyRfK28yazlTQC9G+027/1RvWxthw2hjbwd1p3xHgueJi5Azltedf6Qjqsexa7gHvqPFP -8vT0mPY799/5g/sm/Mf+Zv//AAAAIwBCAGcAiQCrAM0A7wERATMBVgF6AZ8BxQHsAhYCQQJuAp4C -0AMGAz4DewO7A/8ERgSSBOEFNAWKBeQGQQahBwUHbAfXCEcIuwk0CbMKOArEC1cL8gyUDT8N8g6s -D28QORELEeMSwhOmFJAVfxZzF2wYahlsGnMbgByRHacewR/gIQEiJSNLJHIlmybEJ+4pGipIK3cs -qC3cLxEwSTGDMr8z/TU+NoA3xTkMOlc7ozzzPkU/m0DzQk5DrEUMRm5H00k5SqFM/wpNc07dUEdR -sVMbVIRV7ldYWMJaLVuZXQZedF/kYVVix2Q6Za9nJWidahVrj20KboZwBHGEcwR0h3YLd5B5F3qf -fCl9tH9AgM2CXIPrhXuHDYifijKLxY1YjuyQf5ITk6aVOZbMmF+Z8puEnRaeqKA5ocijVqTipmyn -86l3qvisdq3xr2mw3rJSs8K1MbafuAu5drrgvEq9sr8bwIPB6sNSxLnGH8eGyOzKUcu2zRvOf8/i -0UPSotP+1VfWq9f62UHagdu53OneDN8n4DrhPuI+4y/kHOT95dnmq+d66D7pAum56nDrIOvL7Hft -GO257lju8e+K8CDwsfFD8dPyXf/y6PNz8/j0ffUB9YT2BPaF9wX3iPgK+I35DfmJ+gb6g/r8+3X7 -7fxm/Nr9Tv3C/jb+qP8a/43//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENEAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAG1sdWMAAAAAAAAABQAAAAxlblVTAAAAEgAAAExmckZSAAAAEgAAAF5kZURFAAAAEAAA -AHBlc0VTAAAAEgAAAIBpdElUAAAAFAAAAJIAQwBvAGwAbwByACAATABDAEQAyQCTYwByAGEAbgAg -AEwAQwBEAEYAYQByAGIALQBMAEMARABMAEMARAAgAGMAbwBsAG8AcgBMAEMARAAgAGMAbwBsAG8A -cgBpAABtbW9kAAAAAAAABhAAAJxhAAAAAMBd/wAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5 -cmlnaHQgQXBwbGUsIEluYy4sIDIwMTAAACwAAAAAFAATAAAEWhDISau92IbNuxeUxw0kSRRBOBRE -6Q7GYaRTAMvvbQy0ZOuu2I6nIgmNOFIP8EMajqVl04hIDKPFkiGBuCqzOui3pk2Kpc5gEi0u79Cs -nFMqmg5O9LoIlOlLIgA7 -} -image create photo buttonimagetoggle -data $toggledata - -set vradiodata { -R0lGODlhEgATAPABAP///wAAACH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABIAEwAAAiyEj6kW7b7YexEES2+801aefRik -LSApKqU6QZuZJqsMv2qMzHltts3n01UWBQA7 -} -image create photo buttonimagevradio -data $vradiodata - -set vsliderdata { -R0lGODlhFQAXAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABUAFwAAAjOMj6kJ7Q/Wgc5EGe7SG3P1IaHo -YVnpUY+prmk7TqgUnzPI3jid8zr5kwUtLBXx1TIpEwUAOw== -} -image create photo buttonimagevslider -data $vsliderdata - -set vumeterdata { -R0lGODlhHQAQAKIAAAAAAEBAQOjoKPwoKPysRP///wAAAAAAACH5BAQAAAAAIf/8SUNDUkdCRzEw -MTIAAA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3 -dHB0AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAA -AA52Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAA -DzgAAAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAi -j1hZWiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe -///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEB -zQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMG -XAeyCSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJ -MT8ybTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN -1k7RT81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2po -a3ZshG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SI -UolQik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+k -YqVmpmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAA -wO3B2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjX -xNh+2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU -7OLtt+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTN -BfYHNQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+At -Ay4iLzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdN -SDBJFkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJi -Y2NUZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2u -fqd/n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6 -mfea9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa1 -8Lb4uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS -0bPSk9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrr -sey57cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgD -xwStBagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJv -I1ckPCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3 -mjg+OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnD -SnNLJUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5e -il9GYAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0 -QnUVded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvm -jMSNo46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym -+KgHqRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfa -yV7K9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAA -lvAAAFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoA -ZQB+AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPd -BBAERQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0N -Jw2kDiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4H -HrgfayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNj -ND01GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBP -tVDLUeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43Aj -cWVyqnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6a -T5wYneifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjV -WNel2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQ -AGsAhwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBME -TASHBMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7d -D3IQChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi -/iPKJJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7 -vTy0Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnR -WvlcI11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9 -+H9EgJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXA -p2SpDaq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG -2HDaGNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIA -ZwCJAKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZB -BqEHBQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwa -cxuAHJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6Vzuj -PPM+RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLH -ZDplr2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO -7JB/khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2 -uuC8Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfg -OuE+4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz -+PR99QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNj -AAAAAAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVu -VVMAAAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAA -kgBDAG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwA -QwBEACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAA -wF3/AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAA -LAAAAAAdABAAAANeWAXR/gEoJeeyy43NWwUgSGEZBFVjijEN10UWGoqUeZJTGGvu4OEXFcv2w31k -PFeRJGnmiA7U6vNsEK7Y4swphC5XuWoAm4UBdWKidCodCt7wbyxc866NYnjcDAwmAAA7 -} -image create photo buttonimagevumeter -data $vumeterdata - -pdtk_post "Finished loading buttonbar-plugin.tcl\n" - - diff --git a/scripts/guiplugins/buttonbar/images/bng.gif b/scripts/guiplugins/buttonbar/images/bng.gif deleted file mode 100644 index c1d880c471358436bfe8103d6c1d0470e3dcd59c..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/bng.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/floatatom.gif b/scripts/guiplugins/buttonbar/images/floatatom.gif deleted file mode 100644 index d52d608d8ecda7d9f3384f45ad537c8f9c69fd9d..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/floatatom.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.bng.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.bng.gif deleted file mode 100644 index 9670581c682b4eb9db16c317dc2a4b2c5dac0287..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.bng.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.hradio.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.hradio.gif deleted file mode 100644 index 4654ba91cb80ac0a2105e60445f957874122ab93..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.hradio.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.hslider.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.hslider.gif deleted file mode 100644 index f8760fea22c35bb91151fe482d7469e3c5261fa6..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.hslider.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.msg.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.msg.gif deleted file mode 100644 index a7e4fc32e5a39d56e01705d0d06d20abdffef497..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.msg.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.obj.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.obj.gif deleted file mode 100644 index 8be904808fdea926141de891b9ec697a88ba8899..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.obj.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.text.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.text.gif deleted file mode 100644 index f5eb519037c255259fe397d3faa60a5df7701f89..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.text.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.vradio.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.vradio.gif deleted file mode 100644 index 17f43472c340cd84d3eb5712cf1c91c130b354c0..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.vradio.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hi-bit/old.vslider.gif b/scripts/guiplugins/buttonbar/images/hi-bit/old.vslider.gif deleted file mode 100644 index a194f87822648ce120b91f66dd05196bb089f048..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hi-bit/old.vslider.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hradio.gif b/scripts/guiplugins/buttonbar/images/hradio.gif deleted file mode 100644 index c0d8aa8734f16d163d3633ce2fce6159b09f9257..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hradio.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/hslider.gif b/scripts/guiplugins/buttonbar/images/hslider.gif deleted file mode 100644 index 9fd9a817ca805f211fd9253161dd43b88671106d..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/hslider.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/images.txt b/scripts/guiplugins/buttonbar/images/images.txt deleted file mode 100644 index f35265225b627006290631d88d22a25429ba0d42..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/buttonbar/images/images.txt +++ /dev/null @@ -1,1116 +0,0 @@ -set arraydata { -R0lGODlhHAATAMQAAAAAAAsLCxISEh0dHSQkJDMzMzs7O0ZGRlJSUnFxcXl5eZGRkaCgoK2trbu7 -u8bGxtjY2OLi4unp6f7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQA -AAAAIf/8SUNDUkdCRzEwMTIAAA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3Nw -QVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAA -ABRiWFlaAAABVAAAABR3dHB0AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAAB -uAAAAA5iVFJDAAAByAAAAA52Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNj -bQAADpAAAACmbW1vZAAADzgAAAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVog -AAAAAAAAcEsAALBzAAAij1hZWiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9z -ZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHN -AABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0A -Zf8A0gF8AkoDHgQIBSMGXAeyCSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8n -MSh9KcgrDixTLZMu0DAJMT8ybTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYM -RwRH/kj3Se9K6EvhTNxN1k7RT81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYglj -E2QeZSpmNmdCaE9pW2poa3ZshG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBP -gVKCVYNWhFeFV4ZWh1SIUolQik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxF -nUmeTJ9QoFShWKJco1+kYqVmpmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25 -VrpNu0O8Ob0tvh+/EMAAwO3B2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC -0ofTStQN1M7VjNZK1wjXxNh+2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm -3OeV6E/pCunH6ojrTOwU7OLtt+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc -/wBiAMoBZgIoAucDzgTNBfYHNQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOF -JMEl+ycuKF4pjSq4K+AtAy4iLzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9B -IUIBQuJDw0SkRYZGaUdNSDBJFkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZ -W8tcvV2uXqBfkGCBYXJiY2NUZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ2 -03fPeMx5yHrCe7x8tn2ufqd/n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGS -DpMLlAiVBZYClv+X/Zj6mfea9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62y -rrevvLDDscuy1LPdtOa18Lb4uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrK -hctwzFjNQM4mzwvP79DS0bPSk9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe -5JrlmOaZ55von+mk6qrrsey57cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ -ABYATgCiARIBqQJNAvgDxwStBagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob -1hzOHcMeth+oIJchhCJvI1ckPCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0 -MxszwDRlNQo1rjZTNvY3mjg+OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNF -C0W0Rl9HCke3SGVJFEnDSnNLJUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+Viz -WW1aKFriW51cWF0TXc5eil9GYAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3F -bpNvYXAwcP9xz3Kgc3F0QnUVded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF -3oa5h5WIcYlNiiqLCIvmjMSNo46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57w -n+eg4aHdotyj36Tkpeym+KgHqRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+ -w7/6wTXCdcO8xRDGbsfayV7K9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8A -AG5kaW4AAAAAAAAGNgAAlvAAAFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuF -AAMBAAACAAAAGwAwAEoAZQB+AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowC -sALWAv0DJgNRA34DrAPdBBAERQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2 -ChgKfgrmC1MLwww2DK0NJw2kDiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8Z -VRn8GqUbUBv7HKkdVx4HHrgfayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQt -oC5uLz0wDjDhMbUyizNjND01GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cw -SDtJSEpXS2dMeE2LTqBPtVDLUeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltn -jWjBafdrL2xpbaVu43AjcWVyqnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0K -jpqQMZHPk3SVIJbTmI6aT5wYneifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MO -xU3Hj8nUzBzOaNC30wjVWNel2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7 -lP0P/ob//wAAABwAMwBQAGsAhwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLG -Au8DGgNHA3cDqAPdBBMETASHBMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4L -MwusDCoMrA0zDb0OSw7dD3IQChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzs -HageZR8kH+UgqCFtIjQi/iPKJJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRI -NTI2HDcJN/Y45TnWOsg7vTy0Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR -1lL3VBlVO1ZfV4RYqlnRWvlcI11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQ -dN12Knd3eMV6EntffKx9+H9EgJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2a -vpxEnc6fXKDuooWkIKXAp2SpDaq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK -28yazlTQC9G+027VG9bG2HDaGNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD -+yb8x/5m//8AAAAjAEIAZwCJAKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD -/wRGBJIE4QU0BYoF5AZBBqEHBQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLC -E6YUkBV/FnMXbBhqGWwacxuAHJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMy -vzP9NT42gDfFOQw6VzujPPM+RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hY -wlotW5ldBl50X+RhVWLHZDplr2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJc -g+uFe4cNiJ+KMovFjViO7JB/khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGv -abDeslKzwrUxtp+4C7l2uuC8Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar -1/rZQdqB27nc6d4M3yfgOuE+4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K -8CDwsfFD8dPyXfLo83Pz+PR99QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+ -Nv6o/xr/jf//AABkZXNjAAAAAAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1 -YwAAAAAAAAAFAAAADGVuVVMAAAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAAS -AAAAgGl0SVQAAAAUAAAAkgBDAG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBh -AHIAYgAtAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QA -AAAAAAAGEAAAnGEAAAAAwF3/AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBs -ZSwgSW5jLiwgMjAxMAAALAAAAAAcABMAAAWO4CSOZGmeE6CubOu2IoDOp5zS+GgDxmn0ox9K9lBF -ShKVRBQx1iYJVUMkLAIGPYdUOCpODirFxMpgsB4LFULFEJl3gIMhoCIoWPRXgaCKtQQAgC8qgioF -O3wAAQZvKwIDdSoQExIFBUkxbw8ihytHP5VAJDsTXJQFP6I0pDk4rK0zr7BPN7NDfoO5L7atIQA7 -} -image create photo buttonimagearray -data $arraydata -set bngdata { -R0lGODlhEgASAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABIAEgAAAjOMj4nA7Q8MfEsetqINWqtueQpH -ctgonSeatqy7sqqIznTShG8Elt/mia06k9wlVYS8WAUAOw== -} -image create photo buttonimagebng -data $bngdata -set floatatomdata { -R0lGODlhEQARANUAAAAAAAAAkQBPkQoKChMTEy5BgkEAT09PLk+CyE+JzU+f0lxcQXAuLnm97oJB -cILI7okuXJjc/6WlsatcALdmALd5XL3Ckb3CpcDAwMju/9KRLtLq+9L35eDg4OX7/+7cwvLSn/vS -kf7//v/lq//uzf//7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQKAAAAIf/8SUNDUkdCRzEwMTIA -AA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0 -AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52 -Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgA -AAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZ -WiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///z -JgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAA -Y3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAey -CSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8y -bTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7R -T81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3Zs -hG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQ -ik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVm -pmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B -2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+ -2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLt -t+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYH -NQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4i -LzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJ -Fkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NU -ZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/ -n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea -9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4 -uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPS -k9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey5 -7cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwSt -BagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ck -PCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+ -OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNL -JUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9G -YAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUV -ded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSN -o46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgH -qRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K -9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAA -AFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+ -AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAE -RQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2k -DiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgf -ayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01 -GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDL -UeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVy -qnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wY -neifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel -2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsA -hwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASH -BMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQ -ChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPK -JJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0 -Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlc -I11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9E -gJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2Sp -Daq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDa -GNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJ -AKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEH -BQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuA -HJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+ -RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDpl -r2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/ -khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8 -Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+ -4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR9 -9QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAA -AAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMA -AAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBD -AG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBE -ACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/ -AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAA -AAARABEAAAZcQJFwSCwaj0iAcqkcdI4AIwBDwEiZSxHVSoyKPpINcdsVgQoXQ4bYGZQnkRFAUfQK -ASUIx2FB1MsVBw0hCX9DURoBIhQPhnciJAwLAh6OIlhZh12YmEien6ChQ0EAOw== -} -image create photo buttonimagefloatatom -data $floatatomdata -set hradiodata { -R0lGODlhEwASAPABAP///wAAACH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABMAEgAAAieEj6nL7Q9jCrTaSw2uK2hwgd0X -eorplaOonqQluuBmThpNS/rO6wUAOw== -} -image create photo buttonimagehradio -data $hradiodata -set hsliderdata { -R0lGODlhFwATAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABcAEwAAAjOMj6nL7Q+jAbTaiycGqCYegI3X -TQ95gCKDmuFJfe4Yl6/T3uuSq1tXS2k2RIvkiEwqIwUAOw== -} -image create photo buttonimagehslider -data $hsliderdata -set msgdata { -R0lGODlhGgARAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABoAEQAAAjCMj6kK7Q+jM4CtVam8KVMOeh+I -WaSJiOeYrh3qBqocH/N83rX97qy8WXkkxKKPUwAAOw== -} -image create photo buttonimagemsg -data $msgdata -set mycnvdata { -R0lGODlhEgATAIAAAODg4P///yH5BAQAAAAAIf/8SUNDUkdCRzEwMTIAAA+EYXBwbAIAAABtbnRy -UkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYA -AQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0AAABaAAAABRjaGFkAAAB -fAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52Y2d0AAAB2AAABhJu/2Rp -bgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgAAAAoY3BydAAAD2AAAAAk -WFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZWiAAAAAAAAAlgQAAF1cA -AKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov// -/aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0A -AHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAeyCSQKswxdDg4P0xGeE2UV -LBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8ybTOXNLw13Tb2OA05HTop -OzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7RT81QylHIUsdTx1THVchW -ylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3ZshG2Sbp9vrXC6cchy1XPi -dO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQik2LSoxHjUOOQI//PZA7 -kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVmpmmnbKhvqXGqdKt1rHet -eK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B2cLDw6rEj8VxxlHHL8gK -yOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+2TjZ8tqq22LcGtzS3Yre -Qt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLtt+6S73XwX/FR8kzzT/Rb -9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYHNQiUCgULmQ0xDtcQhxIv -E9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4iLzswTjFdMmQzaDRmNWA2 -VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJFkn8SuRLzUy3TaNOkk+A -UHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NUZEZlOGYrZyBoFGkKagJq -+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/n4CWgY2Cg4N6hP9vhWWG -XIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea9JvwnOyd6J7jn9+g2qHU -os6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4uAG5CboPuxS8GL0avhq/ -GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPSk9Ny1FHVL9YN1uvXydin -2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey57cHuyu/U8N7x6vL39AT1 -FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwStBagGuQfeCRcKWAuhDPEO -Qw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ckPCUdJfsm1CepKHkpRioO -KtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+OOE5hDooOss7bzwSPLU9 -WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNLJUvWTIlNPE3wTqRPWVAO -UMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9GYAJgvmF7Yjli//djtWR1 -ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUVded2uneOeGJ5N3oMeuF7 -uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSNo46Dj2SQRpEokguS8JPV -lLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgHqRiqLKtDrFutdq6Tr7Gw -0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K9MynznzQcdKM1MzXQNnY -3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAAAFjoAABTGAAAil4AACeX -AAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+AJcAsADJAOIA+wEUAS0B -RgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAERQR8BLYE8QUuBW0FrgXx -BjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2kDiUOqA8uD7YQQRDPEV4R -8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgfayAeINQhiiL/QiL7I7Uk -cSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01GTX4Ntg3ujifOYc6cDtc -PEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDLUeNS+1QUVS5WSldmWIRZ -olrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVyqnPxdTt2h3fWeSd6fHvT -fS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wYneifv6Gdo4GlbadhqVur -Xa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel2ezcKd5Z4HriieSG5nLo -Tuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsAhwChALwA1gDxAQwBJgFB -AV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASHBMQFBAVGBYoF0AYZBmQG -sAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQChClEUMR4xKHEywT1RR/ -FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPKJJglaCY7J/8PJ+YowCmb -KngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0Pa0+qD+lQKZBqEKtQ7VE -vkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlcI11OXntfqWDZYgpjPmRz -Zatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9EgJGB3YMqhHiFx4cXiGqJ -vosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2SpDaq6rGyuIq/dsZ2zYbUp -tvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDaGNvB3WnfEeC54mLkDOW1 -51/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJAKsAzQDvAREBMwFWAXoB -nwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEHBQdsB9cIRwi7CTQJswo4 -CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuAHJEdpx7BH+AhASIlI0sk -ciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+RT+bQPNC/05DrEUMRm5H -00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDplr2claJ1qFWuPbQpuhnAE -cYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/khOTppU5lsyYX5nym4Sd -Fp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8Sr2yvxvAg8Hqw1LEucYf -x4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+4j7jL+Qc5P3l2ear53ro -PukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR99QH1hPYE9oX3BfeI+Ar4 -jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAAAAAAAApDb2xvciBMQ0QA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMAAAASAAAATGZyRlIAAAAS -AAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBDAG8AbAChbwByACAATABD -AEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBEACAAYwBvAGwAbwByAEwA -QwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/AAAAAAAAAAAAAAAAAAAA -AAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAAAAASABMAAAIljI+JwO0P -DJxN0mnvy7qGvn2gN5JlJJYcuHat9l4xNWPKjedKAQA7 -} -image create photo buttonimagemycnv -data $mycnvdata -set numboxdata { -R0lGODlhFgATANUAAAAAAAAAZQAAeABbqQBvrwkJCRISEiUlJS14ry2Iyjo6OkCAtUCWylRUVFsA -AGWv4nNzc4gAAIi7xYvF64/P75OTk6Pe/KlbLa9lAK+dZa+vr7WAQLuALb29vcDAwM+PLc+WTtT0 -/Nzc3N7i7eDg4OKvZerq6uvKi+3k3vT8/PX19fjZnfznr/z41Pz89P39/QAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQAAAAAIf/8SUNDUkdCRzEwMTIA -AA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0 -AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52 -Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgA -AAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZ -WiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///z -JgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAA -Y3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAey -CSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8y -bTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7R -T81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3Zs -hG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQ -ik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVm -pmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B -2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+ -2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLt -t+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYH -NQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4i -LzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJ -Fkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NU -ZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/ -n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea -9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4 -uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPS -k9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey5 -7cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwSt -BagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ck -PCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+ -OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNL -JUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9G -YAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUV -ded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSN -o46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgH -qRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K -9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAA -AFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+ -AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAE -RQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2k -DiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgf -ayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01 -GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDL -UeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVy -qnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wY -neifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel -2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsA -hwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASH -BMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQ -ChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPK -JJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0 -Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlc -I11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9E -gJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2Sp -Daq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDa -GNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJ -AKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEH -BQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuA -HJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+ -RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDpl -r2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/ -khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8 -Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+ -4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR9 -9QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAA -AAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMA -AAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBD -AG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBE -ACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/ -AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAA -AAAWABMAAAaXwJdwSCwahYCkcskskIpM5bFj8BAB1M6xSLUiX1kjakTsfsEGrdC1SS5SQ1HhjFaf -AiEWYHKl118fCS8cAAx9LwBFHgYvGA8rAhkDcGeJcQYaLhcSERQlk0OWli8mBxVCIAAEgIKhZyoK -EEMnABYtDnyuiEINDURsSQiUlS8QCipiZFBIFQcmW0eiUaNb0tPXUtDa29xCQQA7 -} -image create photo buttonimagenumbox -data $numboxdata -set objdata { -R0lGODlhFgARAPABAP///wAAACH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABYAEQAAAiWEj6kW7emaCqtOaynQ+O6+aBx4 -jCRinurKtpDLtKLMmJEtwUYBADs= -} -image create photo buttonimageobj -data $objdata -set symbolatomdata { -R0lGODlhEQARANUAAAAAAAAALgAAkQoKChMTEy4ueS5BcC5cn0FBLk8AAFxmXFyJt2aYwokuAJFc -QZG915jI6pjX959cT6uCXLGCT7HS5beYn8DAwMiRQdLu+9f38uDg4OXIpez9//LSmPL/8vfSkff/ -//v38v7////y4P/94v//8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQAAAAAIf/8SUNDUkdCRzEwMTIA -AA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3dHB0 -AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAAAA52 -Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAADzgA -AAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAij1hZ -WiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///z -JgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAA -Y3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMGXAey -CSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJMT8y -bTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN1k7R -T81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2poa3Zs -hG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SIUolQ -ik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+kYqVm -pmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAAwO3B -2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjXxNh+ -2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU7OLt -t+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTNBfYH -NQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+AtAy4i -LzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdNSDBJ -Fkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJiY2NU -ZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2ufqd/ -n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6mfea -9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa18Lb4 -uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS0bPS -k9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrrsey5 -7cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgDxwSt -BagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJvI1ck -PCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3mjg+ -OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnDSnNL -JUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5eil9G -YAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0QnUV -ded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvmjMSN -o46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym+KgH -qRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfayV7K -9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAAlvAA -AFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoAZQB+ -AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPdBBAE -RQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0NJw2k -DiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4HHrgf -ayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNjND01 -GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBPtVDL -UeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43AjcWVy -qnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6aT5wY -neifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjVWNel -2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQAGsA -hwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBMETASH -BMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7dD3IQ -ChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi/iPK -JJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7vTy0 -Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnRWvlc -I11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9+H9E -gJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXAp2Sp -Daq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG2HDa -GNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIAZwCJ -AKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZBBqEH -BQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwacxuA -HJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6VzujPPM+ -RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLHZDpl -r2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO7JB/ -khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2uuC8 -Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfgOuE+ -4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz+PR9 -9QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNjAAAA -AAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVuVVMA -AAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAAkgBD -AG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwAQwBE -ACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAAwF3/ -AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAALAAA -AAARABEAAAZfwJFwSCwaj0iAcqkcbI4AI+BCuEiZyxHVSowit12kcDMIlxyIw8eSGXqFUZCgI+Qk -FvT3KGqiABghQhgAEHpRIiMlDREkEwYVe2EeAQoFGhIPbl1YSmFunJxioqOko0EAOw== -} -image create photo buttonimagesymbolatom -data $symbolatomdata -set textdata { -R0lGODlhGwARAPAAAP///wAAACH5BAAAAAAAIf8LSUNDUkdCRzEwMTL/AAAPhGFwcGwCAAAAbW50 -clJHQiBYWVogB9oACQABAA8AEwAfYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbW -AAEAAAAA0y1hcHBs2S6BsfMyXumJcebqTFAPNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAA -AXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRp -bgAAB+wAAAY+ZGVz/2MAAA4sAAAAZGRzY20AAA6QAAAApm1tb2QAAA84AAAAKGNwcnQAAA9gAAAA -JFhZWiAAAAAAAABhCgAAOFEAAAdYWFlaIAAAAAAAAHBLAACwcwAAIo9YWVogAAAAAAAAJYEAABdX -AACpPlhZWiAAAAAAAADzUgABAAAAARbPc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L/ -//2jAAAD3AAAwGxjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHN -AAB2Y2d0AAAAAAAAAAAAAwEAAAIAAAAdAGUA0gF8AkoDHgQIBSMGXP8HsgkkCrMMXQ4OD9MRnhNl -FSwW7RieGkQb3x1rHu4gYyHOIzEkiSXfJzEofSnIKw4sUy2TLtAwCTE/Mm0zlzS8Nd029jgNOR06 -KTszPDc9Oj46PzdAM0EuQilDIkQaRRRGDEcER/5I90nvSuhL4UzcTdZO0U/NUMpRyFLHU8dUx1XI -VspXzFjPWdNa11vdXOJd6V7wX/hhAGIJYxNkHmUqZjZnQmhPaVtqaGt2bIRtkm6fb61wunHIctVz -4nTvdfx3B3gSeRx6J3swfDd9P35Ff0qAT4FSglWDVoRXhVeGVodUiFKJUIpNi0qMR41DjkCPPZA7 -kTiSN5M2lDWVNZb/Npc3mDmZO5o+m0KcRZ1JnkyfUKBUoViiXKNfpGKlZqZpp2yob6lxqnSrdax3 -rXiuea95sHmxeLJ2s3S0cbVutmm3Y7hduVa6TbtDvDm9Lb4fvxDAAMDtwdnCw8OqxI/FccZRxy/I -CsjkybzKkMtkzDXNBc3Tzp/PatAz0PzRwtKH00rUDdTO1YzWStcI18TYftk42fLaqtti3Brc0t2K -3kLe+d+x4GjhIOHY4o/jR+P/5LblbeYl5tznlehP6Qrpx+qI60zsFOzi7bfuku918F/xUfJM80/0 -W/Vt9of3p/jN+fj7I/xU/Yr+xP//AAAAHABiAMoBZgIoAucDzgTN/wX2BzUIlAoFC5kNMQ7XEIcS -LxPcFX0XFRikGicbmR0EHl0fsiD/IkcjhSTBJfsnLiheKY0quCvgLQMuIi87ME4xXTJkM2g0ZjVg -NlY3Rzg2OR86CDrvO9M8tz2aPnw/XkA/QSFCAULiQ8NEpEWGRmlHTUgwSRZJ/ErkS81Mt02jTpJP -gFBwUWFSU1NFVDhVK1YeVxBYA1j2Weda2VvLXL1drl6gX5BggWFyYmNjVGRGZThmK2cgaBRpCmoC -avpr9Gzubepu5m/jcOFx33Ldc9t02XXWdtN3z3jMech6wnu8fLZ9rn6nf5+AloGNgoODeoRvhWWG -XIdTiEmJQYo5i/8xjCqNJY4fjxqQFZERkg6TC5QIlQWWApb/l/2Y+pn3mvSb8Jzsneie45/foNqh -1KLOo8ikw6W+prmntaixqa+qrauurK+tsq63r7yww7HLstSz3bTmtfC2+LgBuQm6D7sUvBi9Gr4a -vxjAFcEQwgnDAcP2xOvF3cbPx7/IrcmayoXLcMxYzUDOJs8Lz+/Q0tGz0pPTctRR1S/WDdbr18nY -p9mF2mXbRtwp3Q7d9d7f38zgvOGv4qXjnuSa5Zjmmeeb6J/ppOqq67Hsue3B7srv1PDe8ery9/QE -9RT2Jfc3+Er5YPp3+478pv3A/t3//wAAABYATgCiARIBqQJNAvj/A8cErQWoBrkH3gkXClgLoQzx -DkMPjBDWEhYTThR6FZ4WuBfKGNYZ2hraG9Yczh3DHrYfqCCXIYQibyNXJDwlHSX7JtQnqSh5KUYq -DirRK5EsTi0HLbsuby8gL80weTElMcwydDMbM8A0ZTUKNa42Uzb2N5o4PjjhOYQ6KDrLO288Ejy1 -PVg9+j6dP0A/40CGQSlBzUJxQxZDvERjRQtFtEZfRwpHt0hlSRRJw0pzSyVL1kyJTTxN8E6kT1lQ -DlDEUXtSMlLpU6FUWlUSVcxWhVc/V/lYs1ltWiha4ludXFhdE13OXopfRmACYL5he2I5YvdjtWR1 -ZTVl92a5Z31o/0JpCGnPaphrYmwtbPhtxW6Tb2FwMHD/cc9yoHNxdEJ1FXXndrp3jnhieTd6DHrh -e7h8j31lfjx/FH/sgMWBnYJ3g1CEKoUEhd6GuYeViHGJTYoqiwiL5ozEjaOOg49kkEaRKJILkvCT -1ZS8laOWjJd2mGCZTJo6myicF50Infue8J/noOGh3aLco9+k5KXspvioB6kYqiyrQ6xbrXauk6+x -sNKx87MWtDq1X7aHt6+42boEuzG8X72QvsO/+sE1wnXDvMUQxm7H2sleyvTMp8580HHSjNTM10DZ -2Nyl35jis+X36Wfs8vB29CP39Pvw//8AAG5kaW4AAAAAAAAGNv8AAJbwAABY6AAAUxgAAIpeAAAn -lwAAFqgAAFANAABUOQACQo8AAfCjAAFrhQADAQAAAgAAABsAMABKAGUAfgCXALAAyQDiAPsBFAEt -AUYBYQF7AZYBsQHOAesCCQIoAkgCaQKMArAC1gL9AyYDUQN+A6wD3QQQBEUEfAS2BPEFLgVtBa4F -8QY1BnwGxAcOB1sHqQf6CE0Iowj8CVgJtgoYCn4K5gtTC8MMNgytDScNpA4lDqgPLg+2EEEQzxFe -EfAShBMZE7EUSxTnFYQWIxbEF2YYChivGVUZ/BqlG1Ab+xypHVceBx64H2sgHiDUIYoiQiL7I7Uk -cSUtJesmqif/aigsKO8ptCp6K0EsCizULaAubi89MA4w4TG1MoszYzQ9NRk1+DbYN7o4nzmHOnA7 -XDxLPTw+MD8mQB9BGkIYQxhEG0UgRidHMEg7SUhKV0tnTHhNi06gT7VQy1HjUvtUFFUuVkpXZliE -WaJaw1vkXQdeLF9SYHpho2LPY/xlKmZbZ41owWn3ay9saW2lbuNwI3Flcqpz8XU7dod31nknenx7 -030tfop/64FPgreEIoWShwaIf4n9i4CNCo6akDGRz5N0lSCW05iOmk+cGJ3on7+hnaOBpW2nYalb -q12taK95sZGzsLXVuAC6L7xivpjA0sMOxU3Hj8nUzBzOaNC3/9MI1VjXpdns3CneWeB64onkhuZy -6E7qG+vZ7YvvM/DS8mnz+fWE9wr4k/oW+5T9D/6G//8AAAAcADMAUABrAIcAoQC8ANYA8QEMASYB -QQFdAXkBlgGzAdEB8QIRAjICVQJ5Ap8CxgLvAxoDRwN3A6gD3QQTBEwEhwTEBQQFRgWKBdAGGQZk -BrAHAAdRB6UH/AhWCLMJFAl4CeEKTQq+CzMLrAwqDKwNMw29DksO3Q9yEAoQpRFDEeMShxMsE9UU -fxUrFdkWiRc6F+0YoBlVGgsawRt5HDIc7B2oHmUfJB/lIKghbSI0Iv4jyiSYJWgmOycPJ+YowCmb -KngrVyw3Lf8ZLfsu3y/EMKoxkDJ3M180SDUyNhw3CTf2OOU51jrIO708tD2tPqg/pUCmQahCrUO1 -RL5Fy0baR+tI/koTSytMRE1eTnpPmFC2UdZS91QZVTtWX1eEWKpZ0Vr5XCNdTl57X6lg2WIKYz5k -c2WrZuRoIGleap1r320jbmlvsXD6ckVzkHTddip3d3jFehJ7X3ysffh/RICRgd2DKoR4hceHF4hq -ib6LFYxujcuPK5CPkfeTY5TTlkeXwJk9mr6cRJ3On1yg7qKFpCClwKdkqQ2quqxsriKv3bGds2G1 -Kbb0uMO6lLxnvjvAEMHjw7XFhMdQyRfK28yazlTQC9G+027/1RvWxthw2hjbwd1p3xHgueJi5Azl -tedf6Qjqsexa7gHvqPFP8vT0mPY799/5g/sm/Mf+Zv//AAAAIwBCAGcAiQCrAM0A7wERATMBVgF6 -AZ8BxQHsAhYCQQJuAp4C0AMGAz4DewO7A/8ERgSSBOEFNAWKBeQGQQahBwUHbAfXCEcIuwk0CbMK -OArEC1cL8gyUDT8N8g6sD28QORELEeMSwhOmFJAVfxZzF2wYahlsGnMbgByRHacewR/gIQEiJSNL -JHIlmybEJ+4pGipIK3csqC3cLxEwSTGDMr8z/TU+NoA3xTkMOlc7ozzzPkU/m0DzQk5DrEUMRm5H -00k5SqFM/wpNc07dUEdRsVMbVIRV7ldYWMJaLVuZXQZedF/kYVVix2Q6Za9nJWidahVrj20KboZw -BHGEcwR0h3YLd5B5F3qffCl9tH9AgM2CXIPrhXuHDYifijKLxY1YjuyQf5ITk6aVOZbMmF+Z8puE -nRaeqKA5ocijVqTipmyn86l3qvisdq3xr2mw3rJSs8K1MbafuAu5drrgvEq9sr8bwIPB6sNSxLnG -H8eGyOzKUcu2zRvOf8/i0UPSotP+1VfWq9f62UHagdu53OneDN8n4DrhPuI+4y/kHOT95dnmq+d6 -6D7pAum56nDrIOvL7HftGO257lju8e+K8CDwsfFD8dPyXf/y6PNz8/j0ffUB9YT2BPaF9wX3iPgK -+I35DfmJ+gb6g/r8+3X77fxm/Nr9Tv3C/jb+qP8a/43//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENE -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAABQAAAAxlblVTAAAAEgAAAExmckZSAAAA -EgAAAF5kZURFAAAAEAAAAHBlc0VTAAAAEgAAAIBpdElUAAAAFAAAAJIAQwBvAGwAbwByACAATABD -AEQAyQCTYwByAGEAbgAgAEwAQwBEAEYAYQByAGIALQBMAEMARABMAEMARAAgAGMAbwBsAG8AcgBM -AEMARAAgAGMAbwBsAG8AcgBpAABtbW9kAAAAAAAABhAAAJxhAAAAAMBd/wAAAAAAAAAAAAAAAAAA -AAAAdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUsIEluYy4sIDIwMTAAACwAAAAAGwARAAACMYSPqcvt -D6Oc1IR6V54bhb+B1nGB3UimQKkqnRl6zKvJ9YqjrO6GH5pbnSrEovH4KAAAOw== -} -image create photo buttonimagetext -data $textdata -set toggledata { -R0lGODlhFAATAPMAAP///wAAAAEBAfz8/N3d3YeHh729vRISEg0NDQ4ODgAAAAAAAAAAAAAAAAAA -AAAAACH5BAAAAAAAIf8LSUNDUkdCRzEwMTL/AAAPhGFwcGwCAAAAbW50clJHQiBYWVogB9oACQAB -AA8AEwAfYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBs2S6B -sfMyXumJcebqTFAPNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAU -Z1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagA -AAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVz/2MA -AA4sAAAAZGRzY20AAA6QAAAApm1tb2QAAA84AAAAKGNwcnQAAA9gAAAAJFhZWiAAAAAAAABhCgAA -OFEAAAdYWFlaIAAAAAAAAHBLAACwcwAAIo9YWVogAAAAAAAAJYEAABdXAACpPlhZWiAAAAAAAADz -UgABAAAAARbPc2YzMgAAAAAAAQxCAAAF3v//8yYAAAeSAAD9kf//+6L///2jAAAD3AAAwGxjdXJ2 -AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAAB2Y2d0AAAAAAAAAAAA -AwEAAAIAAAAdAGUA0gF8AkoDHgQIBSMGXP8HsgkkCrMMXQ4OD9MRnhNlFSwW7RieGkQb3x1rHu4g -YyHOIzEkiSXfJzEofSnIKw4sUy2TLtAwCTE/Mm0zlzS8Nd029jgNOR06KTszPDc9Oj46PzdAM0Eu -QilDIkQaRRRGDEcER/5I90nvSuhL4UzcTdZO0U/NUMpRyFLHU8dUx1XIVspXzFjPWdNa11vdXOJd -6V7wX/hhAGIJYxNkHmUqZjZnQmhPaVtqaGt2bIRtkm6fb61wunHIctVz4nTvdfx3B3gSeRx6J3sw -fDd9P35Ff0qAT4FSglWDVoRXhVeGVodUiFKJUIpNi0qMR41DjkCPPZA7kTiSN5M2lDWVNZb/Npc3 -mDmZO5o+m0KcRZ1JnkyfUKBUoViiXKNfpGKlZqZpp2yob6lxqnSrdax3rXiuea95sHmxeLJ2s3S0 -cbVutmm3Y7hduVa6TbtDvDm9Lb4fvxDAAMDtwdnCw8OqxI/FccZRxy/ICsjkybzKkMtkzDXNBc3T -zp/PatAz0PzRwtKH00rUDdTO1YzWStcI18TYftk42fLaqtti3Brc0t2K3kLe+d+x4GjhIOHY4o/j -R+P/5LblbeYl5tznlehP6Qrpx+qI60zsFOzi7bfuku918F/xUfJM80/0W/Vt9of3p/jN+fj7I/xU -/Yr+xP//AAAAHABiAMoBZgIoAucDzgTN/wX2BzUIlAoFC5kNMQ7XEIcSLxPcFX0XFRikGicbmR0E -Hl0fsiD/IkcjhSTBJfsnLiheKY0quCvgLQMuIi87ME4xXTJkM2g0ZjVgNlY3Rzg2OR86CDrvO9M8 -tz2aPnw/XkA/QSFCAULiQ8NEpEWGRmlHTUgwSRZJ/ErkS81Mt02jTpJPgFBwUWFSU1NFVDhVK1Ye -VxBYA1j2Weda2VvLXL1drl6gX5BggWFyYmNjVGRGZThmK2cgaBRpCmoCavpr9Gzubepu5m/jcOFx -33Ldc9t02XXWdtN3z3jMech6wnu8fLZ9rn6nf5+AloGNgoODeoRvhWWGXIdTiEmJQYo5i/8xjCqN -JY4fjxqQFZERkg6TC5QIlQWWApb/l/2Y+pn3mvSb8Jzsneie45/foNqh1KLOo8ikw6W+prmntaix -qa+qrauurK+tsq63r7yww7HLstSz3bTmtfC2+LgBuQm6D7sUvBi9Gr4avxjAFcEQwgnDAcP2xOvF -3cbPx7/IrcmayoXLcMxYzUDOJs8Lz+/Q0tGz0pPTctRR1S/WDdbr18nYp9mF2mXbRtwp3Q7d9d7f -38zgvOGv4qXjnuSa5Zjmmeeb6J/ppOqq67Hsue3B7srv1PDe8ery9/QE9RT2Jfc3+Er5YPp3+478 -pv3A/t3//wAAABYATgCiARIBqQJNAvj/A8cErQWoBrkH3gkXClgLoQzxDkMPjBDWEhYTThR6FZ4W -uBfKGNYZ2hraG9Yczh3DHrYfqCCXIYQibyNXJDwlHSX7JtQnqSh5KUYqDirRK5EsTi0HLbsuby8g -L80weTElMcwydDMbM8A0ZTUKNa42Uzb2N5o4PjjhOYQ6KDrLO288Ejy1PVg9+j6dP0A/40CGQSlB -zUJxQxZDvERjRQtFtEZfRwpHt0hlSRRJw0pzSyVL1kyJTTxN8E6kT1lQDlDEUXtSMlLpU6FUWlUS -VcxWhVc/V/lYs1ltWiha4ludXFhdE13OXopfRmACYL5he2I5YvdjtWR1ZTVl92a5Z31o/0JpCGnP -aphrYmwtbPhtxW6Tb2FwMHD/cc9yoHNxdEJ1FXXndrp3jnhieTd6DHrhe7h8j31lfjx/FH/sgMWB -nYJ3g1CEKoUEhd6GuYeViHGJTYoqiwiL5ozEjaOOg49kkEaRKJILkvCT1ZS8laOWjJd2mGCZTJo6 -myicF50Infue8J/noOGh3aLco9+k5KXspvioB6kYqiyrQ6xbrXauk6+xsNKx87MWtDq1X7aHt6+4 -2boEuzG8X72QvsO/+sE1wnXDvMUQxm7H2sleyvTMp8580HHSjNTM10DZ2Nyl35jis+X36Wfs8vB2 -9CP39Pvw//8AAG5kaW4AAAAAAAAGNv8AAJbwAABY6AAAUxgAAIpeAAAnlwAAFqgAAFANAABUOQAC -Qo8AAfCjAAFrhQADAQAAAgAAABsAMABKAGUAfgCXALAAyQDiAPsBFAEtAUYBYQF7AZYBsQHOAesC -CQIoAkgCaQKMArAC1gL9AyYDUQN+A6wD3QQQBEUEfAS2BPEFLgVtBa4F8QY1BnwGxAcOB1sHqQf6 -CE0Iowj8CVgJtgoYCn4K5gtTC8MMNgytDScNpA4lDqgPLg+2EEEQzxFeEfAShBMZE7EUSxTnFYQW -IxbEF2YYChivGVUZ/BqlG1Ab+xypHVceBx64H2sgHiDUIYoiQiL7I7UkcSUtJesmqif/aigsKO8p -tCp6K0EsCizULaAubi89MA4w4TG1MoszYzQ9NRk1+DbYN7o4nzmHOnA7XDxLPTw+MD8mQB9BGkIY -QxhEG0UgRidHMEg7SUhKV0tnTHhNi06gT7VQy1HjUvtUFFUuVkpXZliEWaJaw1vkXQdeLF9SYHph -o2LPY/xlKmZbZ41owWn3ay9saW2lbuNwI3Flcqpz8XU7dod31nknenx7030tfop/64FPgreEIoWS -hwaIf4n9i4CNCo6akDGRz5N0lSCW05iOmk+cGJ3on7+hnaOBpW2nYalbq12taK95sZGzsLXVuAC6 -L7xivpjA0sMOxU3Hj8nUzBzOaNC3/9MI1VjXpdns3CneWeB64onkhuZy6E7qG+vZ7YvvM/DS8mnz -+fWE9wr4k/oW+5T9D/6G//8AAAAcADMAUABrAIcAoQC8ANYA8QEMASYBQQFdAXkBlgGzAdEB8QIR -AjICVQJ5Ap8CxgLvAxoDRwN3A6gD3QQTBEwEhwTEBQQFRgWKBdAGGQZkBrAHAAdRB6UH/AhWCLMJ -FAl4CeEKTQq+CzMLrAwqDKwNMw29DksO3Q9yEAoQpRFDEeMShxMsE9UUfxUrFdkWiRc6F+0YoBlV -GgsawRt5HDIc7B2oHmUfJB/lIKghbSI0Iv4jyiSYJWgmOycPJ+YowCmbKngrVyw3Lf8ZLfsu3y/E -MKoxkDJ3M180SDUyNhw3CTf2OOU51jrIO708tD2tPqg/pUCmQahCrUO1RL5Fy0baR+tI/koTSytM -RE1eTnpPmFC2UdZS91QZVTtWX1eEWKpZ0Vr5XCNdTl57X6lg2WIKYz5kc2WrZuRoIGleap1r320j -bmlvsXD6ckVzkHTddip3d3jFehJ7X3ysffh/RICRgd2DKoR4hceHF4hqib6LFYxujcuPK5CPkfeT -Y5TTlkeXwJk9mr6cRJ3On1yg7qKFpCClwKdkqQ2quqxsriKv3bGds2G1Kbb0uMO6lLxnvjvAEMHj -w7XFhMdQyRfK28yazlTQC9G+027/1RvWxthw2hjbwd1p3xHgueJi5Azltedf6Qjqsexa7gHvqPFP -8vT0mPY799/5g/sm/Mf+Zv//AAAAIwBCAGcAiQCrAM0A7wERATMBVgF6AZ8BxQHsAhYCQQJuAp4C -0AMGAz4DewO7A/8ERgSSBOEFNAWKBeQGQQahBwUHbAfXCEcIuwk0CbMKOArEC1cL8gyUDT8N8g6s -D28QORELEeMSwhOmFJAVfxZzF2wYahlsGnMbgByRHacewR/gIQEiJSNLJHIlmybEJ+4pGipIK3cs -qC3cLxEwSTGDMr8z/TU+NoA3xTkMOlc7ozzzPkU/m0DzQk5DrEUMRm5H00k5SqFM/wpNc07dUEdR -sVMbVIRV7ldYWMJaLVuZXQZedF/kYVVix2Q6Za9nJWidahVrj20KboZwBHGEcwR0h3YLd5B5F3qf -fCl9tH9AgM2CXIPrhXuHDYifijKLxY1YjuyQf5ITk6aVOZbMmF+Z8puEnRaeqKA5ocijVqTipmyn -86l3qvisdq3xr2mw3rJSs8K1MbafuAu5drrgvEq9sr8bwIPB6sNSxLnGH8eGyOzKUcu2zRvOf8/i -0UPSotP+1VfWq9f62UHagdu53OneDN8n4DrhPuI+4y/kHOT95dnmq+d66D7pAum56nDrIOvL7Hft -GO257lju8e+K8CDwsfFD8dPyXf/y6PNz8/j0ffUB9YT2BPaF9wX3iPgK+I35DfmJ+gb6g/r8+3X7 -7fxm/Nr9Tv3C/jb+qP8a/43//wAAZGVzYwAAAAAAAAAKQ29sb3IgTENEAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAG1sdWMAAAAAAAAABQAAAAxlblVTAAAAEgAAAExmckZSAAAAEgAAAF5kZURFAAAAEAAA -AHBlc0VTAAAAEgAAAIBpdElUAAAAFAAAAJIAQwBvAGwAbwByACAATABDAEQAyQCTYwByAGEAbgAg -AEwAQwBEAEYAYQByAGIALQBMAEMARABMAEMARAAgAGMAbwBsAG8AcgBMAEMARAAgAGMAbwBsAG8A -cgBpAABtbW9kAAAAAAAABhAAAJxhAAAAAMBd/wAAAAAAAAAAAAAAAAAAAAAAdGV4dAAAAABDb3B5 -cmlnaHQgQXBwbGUsIEluYy4sIDIwMTAAACwAAAAAFAATAAAEWhDISau92IbNuxeUxw0kSRRBOBRE -6Q7GYaRTAMvvbQy0ZOuu2I6nIgmNOFIP8EMajqVl04hIDKPFkiGBuCqzOui3pk2Kpc5gEi0u79Cs -nFMqmg5O9LoIlOlLIgA7 -} -image create photo buttonimagetoggle -data $toggledata -set vradiodata { -R0lGODlhEgATAPABAP///wAAACH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABIAEwAAAiyEj6kW7b7YexEES2+801aefRik -LSApKqU6QZuZJqsMv2qMzHltts3n01UWBQA7 -} -image create photo buttonimagevradio -data $vradiodata -set vsliderdata { -R0lGODlhFQAXAPAAAAAAAP///yH5BAQAAAAAIf8LSUNDUkdCRzEwMTL/ZGluAAAH7AAABj5kZXNj -AAAOLAAAAGRkc2NtAAAOkAAAAKZtbW9kAAAPOAAAAChjcHJ0AAAPYAAAACRYWVogAAAAAAAAYQoA -ADhRAAAHWFhZWiAAAAAAAABwSwAAsHMAACKPWFlaIAAAAAAAACWBAAAXVwAAqT5YWVogAAAAAAAA -81IAAQAAAAEWz3NmMzIAAAAAAAEMQgAABd7///MmAAAHkgAA/ZH///ui///9owAAA9wAAMBsY3Vy -dgAAAAAAAAABAc0AAGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAdmNndAAAAAAAAAAA -AAMBAAACAAAAHQBl/wDSAXwCSgMeBAgFIwZcB7IJJAqzDF0ODg/TEZ4TZRUsFu0YnhpEG98dax7u -IGMhziMxJIkl3ycxKH0pyCsOLFMtky7QMAkxPzJtM5c0vDXdNvY4DTkdOik7Mzw3PTo+Oj83QDNB -LkIpQyJEGkUURgxHBEf+SPdJ70roS+FM3E3WTtFPzVDKUchSx1PHVMdVyFbKV8xYz1nTWtdb3Vzi -Xele8F/4YQBiCWMTZB5lKmY2Z0JoT2lbamhrdmyEbZJun2+tcLpxyHLVc+J073X8dwd4Enkceid7 -MHw3fT9+RX9KgE+BUoJVg1aEV4VXhlaHVIhSiVCKTYtKjEeNQ45Aj/89kDuROJI3kzaUNZU1ljaX -N5g5mTuaPptCnEWdSZ5Mn1CgVKFYolyjX6RipWamaadsqG+pcap0q3Wsd614rnmvebB5sXiydrN0 -tHG1brZpt2O4XblWuk27Q7w5vS2+H78QwADA7cHZwsPDqsSPxXHGUccvyArI5Mm8ypDLZMw1zQXN -086fz2rQM9D80cLSh9NK1A3UztWM1krXCNfE2H7ZONny2qrbYtwa3NLdit5C3vnfseBo4SDh2OKP -40fj/+S25W3mJebc55XoT+kK6cfqiOtM7BTs4u237pLvdfBf8VHyTPNP9Fv1bfaH96f4zfn4+yP8 -VP2K/sT//wAAABz/AGIAygFmAigC5wPOBM0F9gc1CJQKBQuZDTEO1xCHEi8T3BV9FxUYpBonG5kd -BB5dH7Ig/yJHI4UkwSX7Jy4oXimNKrgr4C0DLiIvOzBOMV0yZDNoNGY1YDZWN0c4NjkfOgg67zvT -PLc9mj58P15AP0EhQgFC4kPDRKRFhkZpR01IMEkWSfxK5EvNTLdNo06ST4BQcFFhUlNTRVQ4VStW -HlcQWANY9lnnWtlby1y9Xa5eoF+QYIFhcmJjY1RkRmU4ZitnIGgUaQpqAmr6a/Rs7m3qbuZv43Dh -cd9y3XPbdNl11nbTd894zHnIesJ7vHy2fa5+p3+fgJaBjYKDg3qE/2+FZYZch1OISYlBijmLMYwq -jSWOH48akBWREZIOkwuUCJUFlgKW/5f9mPqZ95r0m/Cc7J3onuOf36DaodSizqPIpMOlvqa5p7Wo -samvqq2rrqyvrbKut6+8sMOxy7LUs9205rXwtvi4AbkJug+7FLwYvRq+Gr8YwBXBEMIJwwHD9sTr -xd3Gz8e/yK3JmsqFy3DMWM1AzibPC8/v0NLRs9KT03LUUdUv1g3W69fJ2KfZhdpl20bcKd0O3fXe -39/M4Lzhr+Kl457kmuWY5pnnm+if6aTqquux7Lntwe7K79Tw3vHq8vf0BPUU9iX3N/hK+WD6d/uO -/Kb9wP7d//8AAP8AFgBOAKIBEgGpAk0C+APHBK0FqAa5B94JFwpYC6EM8Q5DD4wQ1hIWE04UehWe -FrgXyhjWGdoa2hvWHM4dwx62H6gglyGEIm8jVyQ8JR0l+ybUJ6koeSlGKg4q0SuRLE4tBy27Lm8v -IC/NMHkxJTHMMnQzGzPANGU1CjWuNlM29jeaOD444TmEOig6yztvPBI8tT1YPfo+nT9AP+NAhkEp -Qc1CcUMWQ7xEY0ULRbRGX0cKR7dIZUkUScNKc0slS9ZMiU08TfBOpE9ZUA5QxFF7UjJS6VOhVFpV -ElXMVoVXP1f5WLNZbVooWuJbnVxYXRNdzl6KX0ZgAmC+YXtiOWL/92O1ZHVlNWX3ZrlnfWhCaQhp -z2qYa2JsLWz4bcVuk29hcDBw/3HPcqBzcXRCdRV153a6d454Ynk3egx64Xu4fI99ZX48fxR/7IDF -gZ2Cd4NQhCqFBIXehrmHlYhxiU2KKosIi+aMxI2jjoOPZJBGkSiSC5Lwk9WUvJWjloyXdphgmUya -OpsonBedCJ37nvCf56Dhod2i3KPfpOSl7Kb4qAepGKosq0OsW612rpOvsbDSsfOzFrQ6tV+2h7ev -uNm6BLsxvF+9kL7Dv/rBNcJ1w7zFEMZux9rJXsr0zKfOfNBx0ozUzNdA2djcpd+Y4rPl9+ln7PLw -dvQj9/T78P///wAAbmRpbgAAAAAAAAY2AACW8AAAWOgAAFMYAACKXgAAJ5cAABaoAABQDQAAVDkA -AkKPAAHwowABa4UAAwEAAAIAAAAbADAASgBlAH4AlwCwAMkA4gD7ARQBLQFGAWEBewGWAbEBzgHr -AgkCKAJIAmkCjAKwAtYC/QMmA1EDfgOsA90EEARFBHwEtgTxBS4FbQWuBfEGNQZ8BsQHDgdbB6kH -+ghNCKMI/AlYCbYKGAp+CuYLUwvDDDYMrQ0nDaQOJQ6oDy4PthBBEM8RXhHwEoQTGROxFEsU5xWE -FiMWxBdmGAoYrxlVGfwapRtQG/scqR1XHgceuB9rIB4g1CGKIv9CIvsjtSRxJS0l6yaqJ2ooLCjv -KbQqeitBLAos1C2gLm4vPTAOMOExtTKLM2M0PTUZNfg22De6OJ85hzpwO1w8Sz08PjA/JkAfQRpC -GEMYRBtFIEYnRzBIO0lISldLZ0x4TYtOoE+1UMtR41L7VBRVLlZKV2ZYhFmiWsNb5F0HXixfUmB6 -YaNiz2P8ZSpmW2eNaMFp92svbGltpW7jcCNxZXKqc/F1O3aHd9Z5J3p8e9N9LX6Kf+uBT4K3hCKF -kocGiH+J/YuAjQqOmpAxkc+TdJUgltOYjppPnBid6J+/oZ2jgaVtp2GpW6tdrWivebGRs7C11bgA -ui+8Yr6YwNL/ww7FTcePydTMHM5o0LfTCNVY16XZ7Nwp3lngeuKJ5IbmcuhO6hvr2e2L7zPw0vJp -8/n1hPcK+JP6FvuU/Q/+hv//AAAAHAAzAFAAawCHAKEAvADWAPEBDAEmAUEBXQF5AZYBswHRAfEC -EQIyAlUCeQKfAsYC7wMaA0cDdwOoA90EEwRMBIcExAUEBUYFigXQBhkGZAawBwAHUQelB/wIVgiz -CRQJeAnhCk0KvgszC6wMKgysDTMNvQ5LDt0PchAKEKURQxHjEocTLBPVFH8VKxXZFokXOhftGKAZ -VRoLGsEbeRwyHOwdqB5lHyQf5SCoIW0iNCL+I8okmCVoJjsn/w8n5ijAKZsqeCtXLDctGS37Lt8v -xDCqMZAydzNfNEg1MjYcNwk39jjlOdY6yDu9PLQ9rT6oP6VApkGoQq1DtUS+RctG2kfrSP5KE0sr -TERNXk56T5hQtlHWUvdUGVU7Vl9XhFiqWdFa+VwjXU5ee1+pYNliCmM+ZHNlq2bkaCBpXmqda99t -I25pb7Fw+nJFc5B03XYqd3d4xXoSe198rH34f0SAkYHdgyqEeIXHhxeIaom+ixWMbo3LjyuQj5H3 -k2OU05ZHl8CZPZq+nESdzp9coO6ihaQgpcCnZKkNqrqsbK4ir92xnbNhtSm29LjDupS8Z747wBDB -48O1xYTHUP/JF8rbzJrOVNAL0b7TbtUb1sbYcNoY28Hdad8R4LniYuQM5bXnX+kI6rHsWu4B76jx -T/L09Jj2O/ff+YP7JvzH/mb//wAAACMAQgBnAIkAqwDNAO8BEQEzAVYBegGfAcUB7AIWAkECbgKe -AtADBgM+A3sDuwP/BEYEkgThBTQFigXkBkEGoQcFB2wH1whHCLsJNAmzCjgKxAtXC/IMlA0/DfIO -rA9vEDkRCxHjEsITphSQFX8WcxdsGGoZbBpzG4AckR2nHsEf4CEBIiUjSyRyJZsmxCfuKRoqSCt3 -LKgt3C8RMEkxgzK/M/01PjaAN8U5DDpXO6M88z5FP5tA80L/TkOsRQxGbkfTSTlKoUwKTXNO3VBH -UbFTG1SEVe5XWFjCWi1bmV0GXnRf5GFVYsdkOmWvZyVonWoVa49tCm6GcARxhHMEdId2C3eQeRd6 -n3wpfbR/QIDNglyD64V7hw2In4oyi8WNWI7skH+SE5OmlTmWzJhfmfKbhJ0WnqigOaHIo1ak4qZs -p/Opd6r4rHat8a9psN6yUrPCtTG2n7gLuXa64LxKvbK/G8CDwerDUsS5xh/HhsjsylHLts0bzn/P -4tFD0qLT/tVX1qvX+tlB2oHbudzp3gzfJ+A64T7iPuMv5Bzk/eXZ5qvneug+6QLpuepw6yDry+x3 -7Rjtue5Y/+7x74rwIPCx8UPx0/Jd8ujzc/P49H31AfWE9gT2hfcF94j4CviN+Q35ifoG+oP6/Pt1 -++38Zvza/U79wv42/qj/Gv+N//8AAGRlc2MAAAAAAAAACkNvbG9yIExDRAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAABtbHVjAAAAAAAAAAUAAAAMZW5VUwAAABIAAABMZnJGUgAAABIAAABeZGVERQAAABAA -AABwZXNFUwAAABIAAACAaXRJVAAAABQAAACSAEMAbwBsAKFvAHIAIABMAEMARADJAGMAcgBhAG4A -IABMAEMARABGAGEAcgBiAC0ATABDAEQATABDAEQAIABjAG8AbABvAHIATABDAEQAIABjAG8AbABv -AHIAaQAAbW1vZAAAAAAAAAYQAACcYQAAAADAXf8AAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29w -eXJpZ2h0IEFwcGxlLCBJbmMuLCAyMDEwAAAsAAAAABUAFwAAAjOMj6kJ7Q/Wgc5EGe7SG3P1IaHo -YVnpUY+prmk7TqgUnzPI3jid8zr5kwUtLBXx1TIpEwUAOw== -} -image create photo buttonimagevslider -data $vsliderdata -set vumeterdata { -R0lGODlhHQAQAKIAAAAAAEBAQOjoKPwoKPysRP///wAAAAAAACH5BAQAAAAAIf/8SUNDUkdCRzEw -MTIAAA+EYXBwbAIAAABtbnRyUkdCIFhZWiAH2gAJAAEADwATAB9hY3NwQVBQTAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAA5yWFlaAAABLAAAABRnWFlaAAABQAAAABRiWFlaAAABVAAAABR3 -dHB0AAABaAAAABRjaGFkAAABfAAAACxyVFJDAAABqAAAAA5nVFJDAAABuAAAAA5iVFJDAAAByAAA -AA52Y2d0AAAB2AAABhJu/2RpbgAAB+wAAAY+ZGVzYwAADiwAAABkZHNjbQAADpAAAACmbW1vZAAA -DzgAAAAoY3BydAAAD2AAAAAkWFlaIAAAAAAAAGEKAAA4UQAAB1hYWVogAAAAAAAAcEsAALBzAAAi -j1hZWiAAAAAAAAAlgQAAF1cAAKk+WFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe -///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEB -zQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAB0AZf8A0gF8AkoDHgQIBSMG -XAeyCSQKswxdDg4P0xGeE2UVLBbtGJ4aRBvfHWse7iBjIc4jMSSJJd8nMSh9KcgrDixTLZMu0DAJ -MT8ybTOXNLw13Tb2OA05HTopOzM8Nz06Pjo/N0AzQS5CKUMiRBpFFEYMRwRH/kj3Se9K6EvhTNxN -1k7RT81QylHIUsdTx1THVchWylfMWM9Z01rXW91c4l3pXvBf+GEAYgljE2QeZSpmNmdCaE9pW2po -a3ZshG2Sbp9vrXC6cchy1XPidO91/HcHeBJ5HHonezB8N30/fkV/SoBPgVKCVYNWhFeFV4ZWh1SI -UolQik2LSoxHjUOOQI//PZA7kTiSN5M2lDWVNZY2lzeYOZk7mj6bQpxFnUmeTJ9QoFShWKJco1+k -YqVmpmmnbKhvqXGqdKt1rHeteK55r3mwebF4snazdLRxtW62abdjuF25VrpNu0O8Ob0tvh+/EMAA -wO3B2cLDw6rEj8VxxlHHL8gKyOTJvMqQy2TMNc0FzdPOn89q0DPQ/NHC0ofTStQN1M7VjNZK1wjX -xNh+2TjZ8tqq22LcGtzS3YreQt7537HgaOEg4djij+NH4//ktuVt5iXm3OeV6E/pCunH6ojrTOwU -7OLtt+6S73XwX/FR8kzzT/Rb9W32h/en+M35+Psj/FT9iv7E//8AAAAc/wBiAMoBZgIoAucDzgTN -BfYHNQiUCgULmQ0xDtcQhxIvE9wVfRcVGKQaJxuZHQQeXR+yIP8iRyOFJMEl+ycuKF4pjSq4K+At -Ay4iLzswTjFdMmQzaDRmNWA2VjdHODY5HzoIOu870zy3PZo+fD9eQD9BIUIBQuJDw0SkRYZGaUdN -SDBJFkn8SuRLzUy3TaNOkk+AUHBRYVJTU0VUOFUrVh5XEFgDWPZZ51rZW8tcvV2uXqBfkGCBYXJi -Y2NUZEZlOGYrZyBoFGkKagJq+mv0bO5t6m7mb+Nw4XHfct1z23TZddZ203fPeMx5yHrCe7x8tn2u -fqd/n4CWgY2Cg4N6hP9vhWWGXIdTiEmJQYo5izGMKo0ljh+PGpAVkRGSDpMLlAiVBZYClv+X/Zj6 -mfea9JvwnOyd6J7jn9+g2qHUos6jyKTDpb6muae1qLGpr6qtq66sr62yrrevvLDDscuy1LPdtOa1 -8Lb4uAG5CboPuxS8GL0avhq/GMAVwRDCCcMBw/bE68Xdxs/Hv8ityZrKhctwzFjNQM4mzwvP79DS -0bPSk9Ny1FHVL9YN1uvXydin2YXaZdtG3CndDt313t/fzOC84a/ipeOe5JrlmOaZ55von+mk6qrr -sey57cHuyu/U8N7x6vL39AT1FPYl9zf4Svlg+nf7jvym/cD+3f//AAD/ABYATgCiARIBqQJNAvgD -xwStBagGuQfeCRcKWAuhDPEOQw+MENYSFhNOFHoVnha4F8oY1hnaGtob1hzOHcMeth+oIJchhCJv -I1ckPCUdJfsm1CepKHkpRioOKtErkSxOLQctuy5vLyAvzTB5MSUxzDJ0MxszwDRlNQo1rjZTNvY3 -mjg+OOE5hDooOss7bzwSPLU9WD36Pp0/QD/jQIZBKUHNQnFDFkO8RGNFC0W0Rl9HCke3SGVJFEnD -SnNLJUvWTIlNPE3wTqRPWVAOUMRRe1IyUulToVRaVRJVzFaFVz9X+VizWW1aKFriW51cWF0TXc5e -il9GYAJgvmF7Yjli//djtWR1ZTVl92a5Z31oQmkIac9qmGtibC1s+G3FbpNvYXAwcP9xz3Kgc3F0 -QnUVded2uneOeGJ5N3oMeuF7uHyPfWV+PH8Uf+yAxYGdgneDUIQqhQSF3oa5h5WIcYlNiiqLCIvm -jMSNo46Dj2SQRpEokguS8JPVlLyVo5aMl3aYYJlMmjqbKJwXnQid+57wn+eg4aHdotyj36Tkpeym -+KgHqRiqLKtDrFutdq6Tr7Gw0rHzsxa0OrVftoe3r7jZugS7MbxfvZC+w7/6wTXCdcO8xRDGbsfa -yV7K9MynznzQcdKM1MzXQNnY3KXfmOKz5ffpZ+zy8Hb0I/f0+/D///8AAG5kaW4AAAAAAAAGNgAA -lvAAAFjoAABTGAAAil4AACeXAAAWqAAAUA0AAFQ5AAJCjwAB8KMAAWuFAAMBAAACAAAAGwAwAEoA -ZQB+AJcAsADJAOIA+wEUAS0BRgFhAXsBlgGxAc4B6wIJAigCSAJpAowCsALWAv0DJgNRA34DrAPd -BBAERQR8BLYE8QUuBW0FrgXxBjUGfAbEBw4HWwepB/oITQijCPwJWAm2ChgKfgrmC1MLwww2DK0N -Jw2kDiUOqA8uD7YQQRDPEV4R8BKEExkTsRRLFOcVhBYjFsQXZhgKGK8ZVRn8GqUbUBv7HKkdVx4H -HrgfayAeINQhiiL/QiL7I7UkcSUtJesmqidqKCwo7ym0KnorQSwKLNQtoC5uLz0wDjDhMbUyizNj -ND01GTX4Ntg3ujifOYc6cDtcPEs9PD4wPyZAH0EaQhhDGEQbRSBGJ0cwSDtJSEpXS2dMeE2LTqBP -tVDLUeNS+1QUVS5WSldmWIRZolrDW+RdB14sX1JgemGjYs9j/GUqZltnjWjBafdrL2xpbaVu43Aj -cWVyqnPxdTt2h3fWeSd6fHvTfS1+in/rgU+Ct4QihZKHBoh/if2LgI0KjpqQMZHPk3SVIJbTmI6a -T5wYneifv6Gdo4GlbadhqVurXa1or3mxkbOwtdW4ALovvGK+mMDS/8MOxU3Hj8nUzBzOaNC30wjV -WNel2ezcKd5Z4HriieSG5nLoTuob69nti+8z8NLyafP59YT3CviT+hb7lP0P/ob//wAAABwAMwBQ -AGsAhwChALwA1gDxAQwBJgFBAV0BeQGWAbMB0QHxAhECMgJVAnkCnwLGAu8DGgNHA3cDqAPdBBME -TASHBMQFBAVGBYoF0AYZBmQGsAcAB1EHpQf8CFYIswkUCXgJ4QpNCr4LMwusDCoMrA0zDb0OSw7d -D3IQChClEUMR4xKHEywT1RR/FSsV2RaJFzoX7RigGVUaCxrBG3kcMhzsHageZR8kH+UgqCFtIjQi -/iPKJJglaCY7J/8PJ+YowCmbKngrVyw3LRkt+y7fL8QwqjGQMnczXzRINTI2HDcJN/Y45TnWOsg7 -vTy0Pa0+qD+lQKZBqEKtQ7VEvkXLRtpH60j+ShNLK0xETV5Oek+YULZR1lL3VBlVO1ZfV4RYqlnR -WvlcI11OXntfqWDZYgpjPmRzZatm5GggaV5qnWvfbSNuaW+xcPpyRXOQdN12Knd3eMV6EntffKx9 -+H9EgJGB3YMqhHiFx4cXiGqJvosVjG6Ny48rkI+R95NjlNOWR5fAmT2avpxEnc6fXKDuooWkIKXA -p2SpDaq6rGyuIq/dsZ2zYbUptvS4w7qUvGe+O8AQwePDtcWEx1D/yRfK28yazlTQC9G+027VG9bG -2HDaGNvB3WnfEeC54mLkDOW151/pCOqx7FruAe+o8U/y9PSY9jv33/mD+yb8x/5m//8AAAAjAEIA -ZwCJAKsAzQDvAREBMwFWAXoBnwHFAewCFgJBAm4CngLQAwYDPgN7A7sD/wRGBJIE4QU0BYoF5AZB -BqEHBQdsB9cIRwi7CTQJswo4CsQLVwvyDJQNPw3yDqwPbxA5EQsR4xLCE6YUkBV/FnMXbBhqGWwa -cxuAHJEdpx7BH+AhASIlI0skciWbJsQn7ikaKkgrdyyoLdwvETBJMYMyvzP9NT42gDfFOQw6Vzuj -PPM+RT+bQPNC/05DrEUMRm5H00k5SqFMCk1zTt1QR1GxUxtUhFXuV1hYwlotW5ldBl50X+RhVWLH -ZDplr2claJ1qFWuPbQpuhnAEcYRzBHSHdgt3kHkXep98KX20f0CAzYJcg+uFe4cNiJ+KMovFjViO -7JB/khOTppU5lsyYX5nym4SdFp6ooDmhyKNWpOKmbKfzqXeq+Kx2rfGvabDeslKzwrUxtp+4C7l2 -uuC8Sr2yvxvAg8Hqw1LEucYfx4bI7MpRy7bNG85/z+LRQ9Ki0/7VV9ar1/rZQdqB27nc6d4M3yfg -OuE+4j7jL+Qc5P3l2ear53roPukC6bnqcOsg68vsd+0Y7bnuWP/u8e+K8CDwsfFD8dPyXfLo83Pz -+PR99QH1hPYE9oX3BfeI+Ar4jfkN+Yn6BvqD+vz7dfvt/Gb82v1O/cL+Nv6o/xr/jf//AABkZXNj -AAAAAAAAAApDb2xvciBMQ0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAFAAAADGVu -VVMAAAASAAAATGZyRlIAAAASAAAAXmRlREUAAAAQAAAAcGVzRVMAAAASAAAAgGl0SVQAAAAUAAAA -kgBDAG8AbAChbwByACAATABDAEQAyQBjAHIAYQBuACAATABDAEQARgBhAHIAYgAtAEwAQwBEAEwA -QwBEACAAYwBvAGwAbwByAEwAQwBEACAAYwBvAGwAbwByAGkAAG1tb2QAAAAAAAAGEAAAnGEAAAAA -wF3/AAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAAAENvcHlyaWdodCBBcHBsZSwgSW5jLiwgMjAxMAAA -LAAAAAAdABAAAANeWAXR/gEoJeeyy43NWwUgSGEZBFVjijEN10UWGoqUeZJTGGvu4OEXFcv2w31k -PFeRJGnmiA7U6vNsEK7Y4swphC5XuWoAm4UBdWKidCodCt7wbyxc866NYnjcDAwmAAA7 -} -image create photo buttonimagevumeter -data $vumeterdata diff --git a/scripts/guiplugins/buttonbar/images/make-base64.sh b/scripts/guiplugins/buttonbar/images/make-base64.sh deleted file mode 100644 index 1bcd742a87aecab79535b092dc91cfc7c7da0767..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/buttonbar/images/make-base64.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -rm images.txt -touch images.txt -for file in *.gif; do - name=`echo $file | sed 's|\.gif||'` - echo $name - echo "set ${name}data {" >> images.txt - uuencode -m $name.gif temp | tail -n +2 | head -n -1 >> images.txt - echo "}" >> images.txt - echo "image create photo buttonimage$name -data \$${name}data" >> images.txt -done diff --git a/scripts/guiplugins/buttonbar/images/menuarray.gif b/scripts/guiplugins/buttonbar/images/menuarray.gif deleted file mode 100644 index c446718ef9abea9c3bb83e1d3564f0d920593ed2..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/menuarray.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/msg.gif b/scripts/guiplugins/buttonbar/images/msg.gif deleted file mode 100644 index a337f30de30e769b65950faa64aa84da9fa99fbf..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/msg.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/mycnv.gif b/scripts/guiplugins/buttonbar/images/mycnv.gif deleted file mode 100644 index 61c55aea04b0045adfce48fef11e6990ebb7e3f7..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/mycnv.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/numbox.gif b/scripts/guiplugins/buttonbar/images/numbox.gif deleted file mode 100644 index 415fb06bec7ad43bc03e9e24e6f631cf5bde6ec5..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/numbox.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/obj.gif b/scripts/guiplugins/buttonbar/images/obj.gif deleted file mode 100644 index c5be735c3217c4eb4e47c304852b1de83d1319a1..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/obj.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/symbolatom.gif b/scripts/guiplugins/buttonbar/images/symbolatom.gif deleted file mode 100644 index 4cf64bd679588f8e3963c6b4f1d5417ff50fc2db..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/symbolatom.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/text.gif b/scripts/guiplugins/buttonbar/images/text.gif deleted file mode 100644 index f5eb519037c255259fe397d3faa60a5df7701f89..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/text.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/toggle.gif b/scripts/guiplugins/buttonbar/images/toggle.gif deleted file mode 100644 index a5471bf589ee061770ffe4a538b99ab58efee251..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/toggle.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/vradio.gif b/scripts/guiplugins/buttonbar/images/vradio.gif deleted file mode 100644 index afcb929f7e80cc9a5a1d57dfc4abbdce4c0d334e..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/vradio.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/vslider.gif b/scripts/guiplugins/buttonbar/images/vslider.gif deleted file mode 100644 index f088b8d4a475637455b006e436f7a39f57a6626c..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/vslider.gif and /dev/null differ diff --git a/scripts/guiplugins/buttonbar/images/vumeter.gif b/scripts/guiplugins/buttonbar/images/vumeter.gif deleted file mode 100644 index bc16a52b175c1ca22df695c8ddd3f4a5620bad0a..0000000000000000000000000000000000000000 Binary files a/scripts/guiplugins/buttonbar/images/vumeter.gif and /dev/null differ diff --git a/scripts/guiplugins/file_associations/file_associations-plugin.tcl b/scripts/guiplugins/file_associations/file_associations-plugin.tcl deleted file mode 100644 index b44e162fe75fa3ccb6d4aa71179c6781e8581f66..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/file_associations/file_associations-plugin.tcl +++ /dev/null @@ -1,55 +0,0 @@ -# this is a plugin for Pd 0.43 that adds the ability to associate Pd patches -# with filetypes like .wav, .ogg, etc. - -package provide file_associations 0.1 - -namespace eval ::file_associations:: { - namespace export pdtk_post -} - -proc ::file_associations::load_file_associations {} { - set ::associationsdir "[pwd]/../associations" - # TODO this should search the whole path for 'associations' in order to - # support user-installed associations, not only included ones - puts stderr "find_file_associations $::associationsdir" - if { ! [file isdirectory $::associationsdir]} { return } - foreach filename [glob -directory $::associationsdir -nocomplain -types {f} -- *.pd] { - set extension [file rootname [file tail $filename]] - puts "\tAssociating $filename to $extension" - lset ::filetypes 0 1 [concat [lindex $::filetypes 0 1] ".$extension"] - set ::filetypes [lappend ::filetypes \ - [list "[string toupper $extension] files" ".$extension"]] - } -} - -proc ::file_associations::menu_open {} { - pdtk_post "using menu_open from file_associations.tcl" - if { ! [file isdirectory $::pd_menucommands::menu_open_dir]} { - set ::pd_menucommands::menu_open_dir $::env(HOME) - } - set files [tk_getOpenFile -defaultextension .pd \ - -multiple true \ - -filetypes $::filetypes \ - -initialdir $::pd_menucommands::menu_open_dir] - if {$files ne ""} { - foreach filename $files { - set extension [lindex [split $filename .] end] - if {$extension == "pd"} { - puts "open_file $filename" - open_file $filename - } else { - set assocpatchfile [open [file join $::associationsdir "$extension.pd"]] - set patchcontents [regsub -all -- "\\\$FILENAME" [read $assocpatchfile] $filename] - close $assocpatchfile - pdsend "pd filename [file tail $filename].pd \ - [enquote_path $::pd_menucommands::menu_open_dir]" - pdsend $patchcontents - pdsend "#X pop 1" - } - } - set ::pd_menucommands::menu_open_dir [file dirname $filename] - } -} - -#::file_associations::load_file_associations -# TODO insert code to override built-in menu_open proc diff --git a/scripts/guiplugins/object_db/object_db-plugin.tcl b/scripts/guiplugins/object_db/object_db-plugin.tcl deleted file mode 100644 index 898a0f422881689809728b79974ef5233d022ad8..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/object_db/object_db-plugin.tcl +++ /dev/null @@ -1,182 +0,0 @@ - -set enabled_libraries { - {pd-lib} {boids} {bsaylor} {creb} {cxc} {cyclone} {cyclone (hammer)} {cyclone (sickle)} - {ekext} {fftease} {flatspace} {flib} {freeverb~} {gem} {ggee} {hardware} {hcs} {hid} - {iem_ambi} {iem_bin_ambi} {iemgui} {iemlib} {jasch_lib} {jmmmp} {keyboardkeys} - {la-kitchen} {list-abs} {mapping} {markex} {maxlib} {memento} {mjlib} {motex} {mrpeach} - {nqpoly~} {nqpoly4} {nusmuk} {oscx} {pan} {pddp} {pdjimmies} {pdmtl abstractions} - {pdogg} {pdp} {Percolate} {pidip} {pixeltango} {pmpd} {rradical} {rtc} {sigpack} - {smlib} {toxy} {unauthorized} {vasp} {xsample} {zexy} {zexy Abstraction} -} -# comment the following line to enable all libraries -set enabled_libraries {pd-lib} - -# top level categories (tags) -set tlc {conversion pdmtl cyclone maxlib zexy vasp storage audio control connectivity imaging math misc} - -# second level (in menu) categories -set c2 { - connectivity {osc midi network} - conversion {midi audio} - cyclone {hammer sickle audio math control} - zexy {audio analysis matrix control} - maxlib {control time math glue} - audio {abstraction conversion fftease cyclone math logical analysis filters delay effects tables} - vasp {declaration arithmetic basics functions generators transcendent minmax utilities filters fft displace} - storage {abstraction lists matrix tables} - pdmtl {control convert list edit flow imaging} - imaging {{gem particles} {gem manipulators} {gem pixes} {gem geos} {gem opengl} {pdp image} {pdp processing} {pdp abstraction} {pdp 3d} pidip manipulators wrapper particles automata processing} -} - - - - - -#--------------------------------------------------------------------------------------------- -# object -> tags mapping -array set object_tags {} -# tag reverse mapping -array set objects_with_tag {} - -# load object -> tags mapping from file -set f [open [file join $::current_pathdir object_tags.tcllist]] -set tmp_db [read $f] -close $f -unset f - -foreach {library object tags} $tmp_db { - # skip unwanted libraries - if {[lsearch -exact $enabled_libraries $library] == -1} {continue} - foreach tag $tags {lappend object_tags($object) $tag} -} -unset tmp_db - -foreach k [array names object_tags] { - set object_tags($k) [lsort $object_tags($k)] - foreach tag $object_tags($k) {lappend objects_with_tag($tag) $k} -} - -proc object_db_query {q workingset} { - global object_tags - set q _[join [lsort $q] _.*_]_ - set result [list] - foreach k $workingset { - set v _[join $object_tags($k) __]_ - if {[regexp $q $v]} {lappend result $k} - } - set result -} - -# TODO: benchmark which is faster between the two -proc object_db_query_re {q workingset} { - global object_tags - set q (?b)\\<[join [lsort $q] \\>.*\\<]\\> - set result [list] - foreach k $workingset { - if {[regexp $q $object_tags($k)]} {lappend result $k} - } - set result -} - -proc complement {e s} { - set result [list] - foreach i $e {if {[lsearch -exact $s $i] == -1} {lappend result $i}} - set result -} - -proc merge {args} { - array set tmp {} - foreach arg $args { - foreach k $arg { - set tmp($k) . - } - } - set x [array names tmp] - array unset tmp - set x -} - -proc pdtk_canvas_popup_addObjectBranch {t m lst} { - set n 0 - foreach {k v} $lst { - if {$k == {.}} { - incr n - set cbrk 0 - if {$n > 18} { - set cbrk 1 - set n 1 - } - $m add command -label $v -columnbreak $cbrk \ - -command "pdsend \"\$::focused_window obj \$::popup_xcanvas \$::popup_ycanvas $v\"" - } else { - if {[llength $v] == 0} continue - set sub ${m}.sub[incr ::s] - menu $sub - # fix menu font size on Windows with tk scaling = 1 - if {$::windowingsystem eq "win32"} {$sub configure -font menufont} - $m add cascade -label $k -menu $sub - pdtk_canvas_popup_addObjectBranch $t $sub $v - } - } -} - -proc print_r {l {indent 0}} { - foreach {k v} $l { - if {$k == "."} { - for {set j 0} {$j < $indent} {incr j} {puts -nonewline " "} - puts $v - } else { - for {set j 0} {$j < $indent} {incr j} {puts -nonewline " "} - puts "$k {" - print_r $v [expr {$indent+1}] - for {set j 0} {$j < $indent} {incr j} {puts -nonewline " "} - puts "}" - } - } -} - -proc @ {l} { - set result [list] - set ls [lsort $l] - foreach i $ls {lappend result . $i} - set result -} - -set l [list] -set all [array names object_tags] -# *partition* by tag into top-level-categories -foreach c $tlc { - set c_$c [object_db_query $c $all] - set all [complement $all [set c_$c]] -} -set c_others $all -# *search* by tag in 2nd-level-categories -# add 2-level categories -foreach {tlcn c2l} $c2 { - set ll [list] - set accum [list] - foreach c2i $c2l { - set lll [object_db_query $c2i [set c_$tlcn]] - set accum [merge $accum $lll] - if {[llength $lll] > 0} {lappend ll $c2i [@ $lll]} - } - set others [complement [set c_$tlcn] $accum] - if {[llength $others] > 0} {lappend ll "others" [@ $others]} - lappend l $tlcn $ll -} -# add 1-level-categories -foreach tlci $tlc { - set c2_keys [list] - # can't use dict on 8.4 - foreach {k v} $c2 {lappend c2_keys $k} - if {[lsearch -exact $c2_keys $tlci] != -1} {continue} - set c_1_set [object_db_query $tlci [set c_$tlci]] - lappend l $tlci [@ $c_1_set] -} -# end menu structure builder - -#print_r $l - -.popup add separator -set s 0 -pdtk_canvas_popup_addObjectBranch - .popup $l diff --git a/scripts/guiplugins/object_db/object_tags.tcllist b/scripts/guiplugins/object_db/object_tags.tcllist deleted file mode 100644 index e0398d9f1520b95149bc9aa002a31448b77c855b..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/object_db/object_tags.tcllist +++ /dev/null @@ -1,2685 +0,0 @@ -boids boids2d {boids flock generator modelling simulator} -boids boids3d {boids flock generator modelling simulator} -bsaylor aenv~ {audio bsaylor} -bsaylor partconv~ {audio bsaylor} -bsaylor pvoc~ {audio bsaylor} -bsaylor susloop~ {audio bsaylor} -bsaylor svf~ {audio bsaylor} -bsaylor zhzxh~ {audio bsaylor} -creb 64k {abstraction audio creb} -creb abs~ {audio creb} -creb bdft {abstraction audio creb} -creb bdfts {abstraction audio creb} -creb bdiag~ {audio creb} -creb bfft~ {audio creb} -creb bhip~ {abstraction audio creb} -creb biquadseries~ {audio creb} -creb bitsplit~ {audio creb} -creb blocknorm~ {audio creb} -creb blop~ {abstraction audio creb} -creb blosc~ {audio creb} -creb bpm {abstraction audio creb} -creb bwin~ {audio creb} -creb cadd~ {abstraction audio creb} -creb ccmap~ {abstraction audio creb} -creb cconj~ {abstraction audio creb} -creb cep~ {abstraction audio creb} -creb cheby~ {audio creb} -creb cinv~ {abstraction audio creb} -creb clog~ {audio creb} -creb cmul~ {abstraction audio creb} -creb cosc~ {abstraction audio creb} -creb count {abstraction audio creb} -creb csub~ {abstraction audio creb} -creb diag~ {audio creb} -creb dist~ {audio creb} -creb dsfosc~ {abstraction audio creb} -creb dwt~ {audio creb} -creb dynwav~ {audio creb} -creb ead~ {audio creb} -creb eadh~ {abstraction audio creb} -creb eadsr~ {audio creb} -creb eadsrh~ {abstraction audio creb} -creb ear~ {audio creb} -creb expmap~ {abstraction audio creb} -creb fblock {abstraction audio creb} -creb fdn~ {audio creb} -creb ffpoly {creb math} -creb filterortho~ {audio creb} -creb fmod {abstraction audio creb} -creb fmop~ {abstraction audio creb} -creb frequor~ {abstraction audio creb} -creb fwarp {creb math} -creb icep~ {abstraction audio creb} -creb idsfosc~ {abstraction audio creb} -creb idwt~ {audio creb} -creb inv {abstraction audio creb} -creb junction~ {audio creb} -creb lattice~ {audio creb} -creb lattice3 {abstraction audio creb} -creb lpfft~ {abstraction audio creb} -creb matrix~ {audio creb} -creb pdynwav~ {abstraction audio creb} -creb permut~ {audio creb} -creb qmult~ {audio creb} -creb qnorm~ {audio creb} -creb ramp~ {audio creb} -creb ratio {creb math} -creb resofilt~ {audio creb} -creb sbosc~ {audio creb} -creb scale7 {abstraction audio creb} -creb scrollgrid1D~ {audio creb} -creb statwav~ {audio creb} -creb tabreadmix~ {audio creb} -creb tblock {abstraction audio creb} -creb ti_hihat {abstraction audio creb} -creb ti_snare {abstraction audio creb} -creb ucmod~ {abstraction audio creb} -creb ucnorm~ {abstraction audio creb} -creb vol~ {abstraction audio creb} -creb vols~ {abstraction audio creb} -creb xfm~ {audio creb} -cxc ascseq {cxc unsorted} -cxc ascwave {cxc unsorted} -cxc bfilt {cxc unsorted} -cxc bfilt2 {cxc unsorted} -cxc cxc. {cxc unsorted} -cxc cxc.pr {cxc unsorted} -cxc delta~ {cxc unsorted} -cxc ENV {cxc unsorted} -cxc proc {cxc unsorted} -cxc randomix {cxc unsorted} -cxc reson~ {cxc unsorted} -cxc serialize {cxc unsorted} -cxc stati {cxc unsorted} -cxc utime {cxc unsorted} -cyclone !- {cyclone math} -cyclone !-~ {audio cyclone math} -cyclone !/ {cyclone math} -cyclone !/~ {audio cyclone math} -cyclone !=~ {audio cyclone math} -cyclone %~ {audio cyclone math} -cyclone +=~ {cyclone math} -cyclone <=~ {audio cyclone math} -cyclone <~ {audio cyclone math} -cyclone ==~ {audio cyclone math} -cyclone >=~ {audio cyclone math} -cyclone >~ {audio cyclone math} -{cyclone (hammer)} accum {cyclone hammer misc} -{cyclone (hammer)} acos {cyclone hammer math} -{cyclone (hammer)} active {cyclone gui hammer} -{cyclone (hammer)} anal {cyclone hammer misc} -{cyclone (hammer)} Append {control cyclone glue hammer} -{cyclone (hammer)} asin {cyclone hammer math} -{cyclone (hammer)} bangbang {control cyclone glue hammer} -{cyclone (hammer)} bondo {control cyclone glue hammer} -{cyclone (hammer)} Borax {connectivity cyclone hammer midi} -{cyclone (hammer)} Bucket {cyclone hammer misc} -{cyclone (hammer)} buddy {control cyclone glue hammer} -{cyclone (hammer)} capture {cyclone hammer misc} -{cyclone (hammer)} cartopol {cyclone hammer math} -{cyclone (hammer)} Clip {cyclone hammer math} -{cyclone (hammer)} coll {cyclone hammer misc} -{cyclone (hammer)} comment {cyclone gui hammer} -{cyclone (hammer)} cosh {cyclone hammer math} -{cyclone (hammer)} counter {control cyclone glue hammer} -{cyclone (hammer)} cycle {control cyclone glue hammer} -{cyclone (hammer)} decide {cyclone hammer misc} -{cyclone (hammer)} Decode {control cyclone glue hammer} -{cyclone (hammer)} drunk {cyclone hammer misc} -{cyclone (hammer)} flush {connectivity cyclone hammer midi} -{cyclone (hammer)} forward {control cyclone glue hammer} -{cyclone (hammer)} fromsymbol {control cyclone glue hammer} -{cyclone (hammer)} funbuff {control cyclone glue hammer} -{cyclone (hammer)} funnel {control cyclone glue hammer} -{cyclone (hammer)} gate {control cyclone glue hammer} -{cyclone (hammer)} grab {control cyclone glue hammer} -{cyclone (hammer)} Histo {cyclone hammer misc} -{cyclone (hammer)} iter {control cyclone glue hammer} -{cyclone (hammer)} match {control cyclone glue hammer} -{cyclone (hammer)} maximum {cyclone hammer math} -{cyclone (hammer)} mean {cyclone hammer math} -{cyclone (hammer)} midiflush {connectivity cyclone hammer midi} -{cyclone (hammer)} midiformat {connectivity cyclone hammer midi} -{cyclone (hammer)} midiparse {connectivity cyclone hammer midi} -{cyclone (hammer)} minimum {cyclone hammer math} -{cyclone (hammer)} mousefilter {cyclone gui hammer} -{cyclone (hammer)} MouseState {cyclone gui hammer} -{cyclone (hammer)} mtr {cyclone hammer misc} -{cyclone (hammer)} next {control cyclone glue hammer} -{cyclone (hammer)} offer {control cyclone glue hammer} -{cyclone (hammer)} onebang {control cyclone glue hammer} -{cyclone (hammer)} past {cyclone hammer math} -{cyclone (hammer)} Peak {cyclone hammer math} -{cyclone (hammer)} poltocar {cyclone hammer math} -{cyclone (hammer)} prepend {cyclone hammer math} -{cyclone (hammer)} prob {cyclone hammer misc} -{cyclone (hammer)} pv {control cyclone glue hammer} -{cyclone (hammer)} sinh {cyclone hammer math} -{cyclone (hammer)} speedlim {control cyclone glue hammer} -{cyclone (hammer)} spell {cyclone hammer misc} -{cyclone (hammer)} split {control cyclone glue hammer} -{cyclone (hammer)} spray {control cyclone glue hammer} -{cyclone (hammer)} sprintf {control cyclone glue hammer} -{cyclone (hammer)} substitute {control cyclone glue hammer} -{cyclone (hammer)} sustain {connectivity cyclone hammer midi} -{cyclone (hammer)} switch {control cyclone glue hammer} -{cyclone (hammer)} tanh {cyclone hammer math} -{cyclone (hammer)} thresh {cyclone hammer math} -{cyclone (hammer)} TogEdge {cyclone hammer math} -{cyclone (hammer)} tosymbol {control cyclone glue hammer} -{cyclone (hammer)} Trough {cyclone hammer math} -{cyclone (hammer)} universal {control cyclone glue hammer} -{cyclone (hammer)} urn {cyclone hammer math} -{cyclone (hammer)} Uzi {control cyclone glue hammer} -{cyclone (hammer)} xbendin {connectivity cyclone hammer midi} -{cyclone (hammer)} xbendout {connectivity cyclone hammer midi} -{cyclone (hammer)} xnotein {connectivity cyclone hammer midi} -{cyclone (hammer)} xnoteout {connectivity cyclone hammer midi} -{cyclone (hammer)} zl {cyclone hammer misc} -{cyclone (sickle)} abs~ {audio cyclone math sickle} -{cyclone (sickle)} acos~ {audio cyclone math sickle} -{cyclone (sickle)} allpass~ {audio cyclone filter sickle} -{cyclone (sickle)} asin~ {audio cyclone math sickle} -{cyclone (sickle)} asinh~ {audio cyclone math sickle} -{cyclone (sickle)} atan~ {audio cyclone math sickle} -{cyclone (sickle)} atan2~ {audio cyclone math sickle} -{cyclone (sickle)} atanh~ {audio cyclone math sickle} -{cyclone (sickle)} average~ {audio cyclone math sickle} -{cyclone (sickle)} avg~ {cyclone math sickle} -{cyclone (sickle)} bitand~ {audio cyclone math sickle} -{cyclone (sickle)} bitnot~ {audio cyclone math sickle} -{cyclone (sickle)} bitor~ {audio cyclone math sickle} -{cyclone (sickle)} bitshift~ {audio cyclone math sickle} -{cyclone (sickle)} bitxor~ {audio cyclone math sickle} -{cyclone (sickle)} buffir~ {audio cyclone filter sickle} -{cyclone (sickle)} capture~ {control cyclone glue sickle} -{cyclone (sickle)} cartopol~ {audio cyclone math sickle} -{cyclone (sickle)} change~ {audio cyclone math sickle} -{cyclone (sickle)} click~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} Clip~ {audio cyclone math sickle} -{cyclone (sickle)} comb~ {audio cyclone filter sickle} -{cyclone (sickle)} cosh~ {audio cyclone math sickle} -{cyclone (sickle)} cosx~ {audio cyclone math sickle} -{cyclone (sickle)} count~ {control cyclone glue sickle} -{cyclone (sickle)} curve~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} cycle~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} delay~ {audio cyclone delay sickle} -{cyclone (sickle)} delta~ {control cyclone glue sickle} -{cyclone (sickle)} deltaclip~ {audio cyclone math sickle} -{cyclone (sickle)} edge~ {audio cyclone math sickle} -{cyclone (sickle)} frameaccum~ {audio cyclone math sickle} -{cyclone (sickle)} framedelta~ {audio cyclone math sickle} -{cyclone (sickle)} index~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} kink~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} Line~ {control cyclone sickle time} -{cyclone (sickle)} linedrive {cyclone sickle unsorted} -{cyclone (sickle)} log~ {audio cyclone math sickle} -{cyclone (sickle)} lookup~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} lores~ {audio cyclone filter sickle} -{cyclone (sickle)} maximum~ {audio cyclone math sickle} -{cyclone (sickle)} minimum~ {audio cyclone math sickle} -{cyclone (sickle)} minmax~ {audio cyclone math sickle} -{cyclone (sickle)} mstosamps~ {audio cyclone math sickle} -{cyclone (sickle)} onepole~ {audio cyclone filter sickle} -{cyclone (sickle)} peakamp~ {audio cyclone math sickle} -{cyclone (sickle)} peek~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} phasewrap~ {audio cyclone math sickle} -{cyclone (sickle)} pink~ {audio cyclone sickle} -{cyclone (sickle)} play~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} poke~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} poltocar~ {audio cyclone math sickle} -{cyclone (sickle)} pong~ {audio cyclone math sickle} -{cyclone (sickle)} pow~ {audio cyclone math sickle} -{cyclone (sickle)} rampsmooth~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} rand~ {cyclone math sickle} -{cyclone (sickle)} record~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} reson~ {audio cyclone filter sickle} -{cyclone (sickle)} sah~ {control cyclone glue sickle} -{cyclone (sickle)} sampstoms~ {audio cyclone math sickle} -{cyclone (sickle)} Scope~ {cyclone gui sickle} -{cyclone (sickle)} sinh~ {audio cyclone math sickle} -{cyclone (sickle)} sinx~ {audio cyclone math sickle} -{cyclone (sickle)} slide~ {audio cyclone math sickle} -{cyclone (sickle)} Snapshot~ {control cyclone glue sickle} -{cyclone (sickle)} spike~ {audio cyclone math sickle} -{cyclone (sickle)} svf~ {audio cyclone filter sickle} -{cyclone (sickle)} tanh~ {audio cyclone math sickle} -{cyclone (sickle)} tanx~ {audio cyclone math sickle} -{cyclone (sickle)} train~ {audio cyclone sickle} -{cyclone (sickle)} trapezoid~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} triangle~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} vectral~ {audio cyclone math sickle} -{cyclone (sickle)} wave~ {and audio cyclone oscillators sickle tables} -{cyclone (sickle)} zerox~ {audio cyclone math sickle} -ekext cup {ekext unsorted} -ekext framescore~ {ekext unsorted} -ekext framespect~ {ekext unsorted} -ekext hssc~ {ekext unsorted} -ekext listmoses {ekext unsorted} -ekext maskxor {ekext unsorted} -ekext polymap {ekext unsorted} -ekext polystat {ekext unsorted} -ekext sieve {ekext unsorted} -ekext simile {ekext unsorted} -ekext simile~ {ekext unsorted} -ekext steady {ekext unsorted} -ekext voicing_detector~ {ekext unsorted} -ekext voicing_detector~test3 {ekext unsorted} -ekext zeroxpos~ {ekext unsorted} -fftease bthresher~ {audio fftease glue} -fftease burrow~ {audio fftease filters} -fftease cavoc~ {and audio fftease oscillators tables} -fftease cavoc27~ {and audio fftease oscillators tables} -fftease centerring~ {audio fftease filters} -fftease codepend~ {audio fftease filters} -fftease crossx~ {audio fftease filters} -fftease dentist~ {audio fftease filters} -fftease disarrain~ {audio fftease filters} -fftease disarray~ {audio fftease filters} -fftease drown~ {audio fftease filters} -fftease ether~ {audio fftease filters} -fftease mindwarp~ {audio fftease filters} -fftease morphine~ {audio fftease filters} -fftease multyq~ {audio fftease filters} -fftease presidency~ {audio fftease filters} -fftease pvcompand~ {audio fftease filters} -fftease pvgrain~ {audio fftease filters} -fftease pvharm~ {audio fftease filters} -fftease pvoc~ {audio fftease filters} -fftease pvtuner~ {audio fftease filters} -fftease pvwarp~ {audio fftease filters} -fftease reanimator~ {audio fftease filters} -fftease resent~ {audio fftease filters} -fftease residency~ {audio fftease filters} -fftease scrape~ {audio fftease filters} -fftease shapee~ {audio fftease filters} -fftease swinger~ {audio fftease filters} -fftease taint~ {audio fftease filters} -fftease thresher~ {audio fftease glue} -fftease vacancy~ {audio fftease filters} -fftease xsyn~ {audio fftease filters} -flatspace aenv~ {flatspace unsorted} -flatspace amp~ {flatspace unsorted} -flatspace arraysize {flatspace unsorted} -flatspace ascii0x2d0x3eint {flatspace unsorted} -flatspace atan2~ {flatspace unsorted} -flatspace attract1 {flatspace unsorted} -flatspace autoscale {flatspace unsorted} -flatspace bandpass {flatspace unsorted} -flatspace base {flatspace unsorted} -flatspace bdiag~ {flatspace unsorted} -flatspace beatpipe {flatspace unsorted} -flatspace bfft~ {flatspace unsorted} -flatspace biquadseries~ {flatspace unsorted} -flatspace bird {flatspace unsorted} -flatspace bitsplit~ {flatspace unsorted} -flatspace blocknorm~ {flatspace unsorted} -flatspace blocksize_in_ms {flatspace unsorted} -flatspace blosc~ {flatspace unsorted} -flatspace bmatrix~ {flatspace unsorted} -flatspace bufferoverride~ {flatspace unsorted} -flatspace button {flatspace unsorted} -flatspace buttongate {flatspace unsorted} -flatspace bwin~ {flatspace unsorted} -flatspace cheby~ {flatspace unsorted} -flatspace choice {flatspace unsorted} -flatspace classpath {flatspace unsorted} -flatspace clog~ {flatspace unsorted} -flatspace comport {flatspace unsorted} -flatspace cursor {flatspace unsorted} -flatspace debounce {flatspace unsorted} -flatspace deg2hid {flatspace unsorted} -flatspace deque {flatspace unsorted} -flatspace dist~ {flatspace unsorted} -flatspace dwt~ {flatspace unsorted} -flatspace dynwav~ {flatspace unsorted} -flatspace ead~ {flatspace unsorted} -flatspace eadsr~ {flatspace unsorted} -flatspace ear~ {flatspace unsorted} -flatspace eblosc~ {flatspace unsorted} -flatspace entry {flatspace unsorted} -flatspace envgen {flatspace unsorted} -flatspace equalizer {flatspace unsorted} -flatspace ev {flatspace unsorted} -flatspace ev_abs {flatspace unsorted} -flatspace ev_ff {flatspace unsorted} -flatspace ev_ff_status {flatspace unsorted} -flatspace ev_key {flatspace unsorted} -flatspace ev_led {flatspace unsorted} -flatspace ev_msc {flatspace unsorted} -flatspace ev_rel {flatspace unsorted} -flatspace ev_rep {flatspace unsorted} -flatspace ev_snd {flatspace unsorted} -flatspace ev_syn {flatspace unsorted} -flatspace failsafe {flatspace unsorted} -flatspace fdn~ {flatspace unsorted} -flatspace ff-autocenter {flatspace unsorted} -flatspace ff-constant {flatspace unsorted} -flatspace ff-friction {flatspace unsorted} -flatspace ff-gain {flatspace unsorted} -flatspace ff-periodic {flatspace unsorted} -flatspace ff-spring {flatspace unsorted} -flatspace ffpoly {flatspace unsorted} -flatspace fiddle~ {flatspace unsorted} -flatspace file_type {flatspace unsorted} -flatspace filterortho~ {flatspace unsorted} -flatspace float0x2d0x3eascii {flatspace unsorted} -flatspace folder_list {flatspace unsorted} -flatspace fwarp {flatspace unsorted} -flatspace gcanvas {flatspace unsorted} -flatspace getdir {flatspace unsorted} -flatspace gfsm {flatspace unsorted} -flatspace gfsm_alphabet {flatspace unsorted} -flatspace gfsm_automaton {flatspace unsorted} -flatspace gfsm_markov {flatspace unsorted} -flatspace gfsm_state {flatspace unsorted} -flatspace gid0x2d0x3egroup_name {flatspace unsorted} -flatspace gingerbreadman {flatspace unsorted} -flatspace group {flatspace unsorted} -flatspace group_name0x2d0x3egid {flatspace unsorted} -flatspace henon {flatspace unsorted} -flatspace hid {flatspace unsorted} -flatspace hid_average {flatspace unsorted} -flatspace hid_centered {flatspace unsorted} -flatspace hid_cube {flatspace unsorted} -flatspace hid_cuberoot {flatspace unsorted} -flatspace hid_exp {flatspace unsorted} -flatspace hid_graph {flatspace unsorted} -flatspace hid_invert {flatspace unsorted} -flatspace hid_log {flatspace unsorted} -flatspace hid_lowpass {flatspace unsorted} -flatspace hid_menu {flatspace unsorted} -flatspace hid_one2four {flatspace unsorted} -flatspace hid_one2three {flatspace unsorted} -flatspace hid_one2two {flatspace unsorted} -flatspace hid_polar {flatspace unsorted} -flatspace hid_rel2abs {flatspace unsorted} -flatspace hid_smooth {flatspace unsorted} -flatspace hid_spiral {flatspace unsorted} -flatspace hid_square {flatspace unsorted} -flatspace hid_squareroot {flatspace unsorted} -flatspace hid2deg {flatspace unsorted} -flatspace hid2rad {flatspace unsorted} -flatspace highpass {flatspace unsorted} -flatspace hlshelf {flatspace unsorted} -flatspace hopalong {flatspace unsorted} -flatspace hostname {flatspace unsorted} -flatspace ifeel {flatspace unsorted} -flatspace ikeda {flatspace unsorted} -flatspace image {flatspace unsorted} -flatspace import {flatspace unsorted} -flatspace ISOdate {flatspace unsorted} -flatspace ISOtime {flatspace unsorted} -flatspace joystick {flatspace unsorted} -flatspace junction~ {flatspace unsorted} -flatspace keyboard {flatspace unsorted} -flatspace keygate {flatspace unsorted} -flatspace latoocarfian {flatspace unsorted} -flatspace latoomutalpha {flatspace unsorted} -flatspace latoomutbeta {flatspace unsorted} -flatspace latoomutgamma {flatspace unsorted} -flatspace lattice~ {flatspace unsorted} -flatspace line3 {flatspace unsorted} -flatspace loop~ {flatspace unsorted} -flatspace lorenz {flatspace unsorted} -flatspace lowpass {flatspace unsorted} -flatspace lowshelf {flatspace unsorted} -flatspace lrshift~ {flatspace unsorted} -flatspace martin {flatspace unsorted} -flatspace martin-test {flatspace unsorted} -flatspace matrix~ {flatspace unsorted} -flatspace mixer~ {flatspace unsorted} -flatspace moog~ {flatspace unsorted} -flatspace mouse {flatspace unsorted} -flatspace notch {flatspace unsorted} -flatspace notescale {flatspace unsorted} -flatspace oggamp~ {flatspace unsorted} -flatspace oggcast~ {flatspace unsorted} -flatspace oggread~ {flatspace unsorted} -flatspace oggwrite~ {flatspace unsorted} -flatspace partconv~ {flatspace unsorted} -flatspace passwd {flatspace unsorted} -flatspace pdstring {flatspace unsorted} -flatspace permut~ {flatspace unsorted} -flatspace pi {flatspace unsorted} -flatspace pique {flatspace unsorted} -flatspace plugin~ {flatspace unsorted} -flatspace popcorn {flatspace unsorted} -flatspace popcorn-test {flatspace unsorted} -flatspace popen {flatspace unsorted} -flatspace popup {flatspace unsorted} -flatspace popup-gop {flatspace unsorted} -flatspace pso {flatspace unsorted} -flatspace pvoc~ {flatspace unsorted} -flatspace pwm {flatspace unsorted} -flatspace pwm~ {flatspace unsorted} -flatspace qmult~ {flatspace unsorted} -flatspace qnorm~ {flatspace unsorted} -flatspace quaruptwo {flatspace unsorted} -flatspace quaruptwo-test {flatspace unsorted} -flatspace rad2hid {flatspace unsorted} -flatspace ratio {flatspace unsorted} -flatspace readdir {flatspace unsorted} -flatspace resofilt~ {flatspace unsorted} -flatspace rlshift~ {flatspace unsorted} -flatspace rossler {flatspace unsorted} -flatspace sbosc~ {flatspace unsorted} -flatspace scrollgrid1D~ {flatspace unsorted} -flatspace serialctl {flatspace unsorted} -flatspace serialize {flatspace unsorted} -flatspace sfwrite~ {flatspace unsorted} -flatspace shell {flatspace unsorted} -flatspace silderh {flatspace unsorted} -flatspace ski {flatspace unsorted} -flatspace slider {flatspace unsorted} -flatspace split_my_msgs {flatspace unsorted} -flatspace split_path {flatspace unsorted} -flatspace sprinkler {flatspace unsorted} -flatspace standardmap {flatspace unsorted} -flatspace stat {flatspace unsorted} -flatspace stk {flatspace unsorted} -flatspace streamin~ {flatspace unsorted} -flatspace streamout~ {flatspace unsorted} -flatspace stripdir {flatspace unsorted} -flatspace susloop~ {flatspace unsorted} -flatspace svf~ {flatspace unsorted} -flatspace tabreadmix~ {flatspace unsorted} -flatspace ticker {flatspace unsorted} -flatspace toddle {flatspace unsorted} -flatspace uid0x2d0x3eusername {flatspace unsorted} -flatspace uname {flatspace unsorted} -flatspace username0x2d0x3euid {flatspace unsorted} -flatspace vbap {flatspace unsorted} -flatspace version {flatspace unsorted} -flatspace weightmap {flatspace unsorted} -flatspace xfm~ {flatspace unsorted} -flatspace zhzxh~ {flatspace unsorted} -flib flib {flib unsorted} -flib mfcc {flib unsorted} -flib wdv {flib unsorted} -freeverb~ freeverb~ {audio effects freeverb~} -gem 6GEMglTexCoord1fv {gem imaging opengl wrapper} -gem accumrotate {gem imaging manipulators} -gem alpha {gem imaging manipulators} -gem ambient {gem imaging manipulators} -gem ambientRGB {gem imaging manipulators} -gem camera {gem imaging manipulators} -gem circle {gem geos imaging} -gem color {gem imaging manipulators} -gem colorRGB {gem imaging manipulators} -gem colorSquare {gem geos imaging} -gem cone {gem geos imaging} -gem cube {gem geos imaging} -gem cuboid {gem geos imaging} -gem curve {gem geos imaging} -gem curve3d {gem geos imaging} -gem cylinder {gem geos imaging} -gem depth {gem imaging manipulators} -gem diffuse {gem imaging manipulators} -gem diffuseRGB {gem imaging manipulators} -gem disk {gem geos imaging} -gem emission {gem imaging manipulators} -gem emissionRGB {gem imaging manipulators} -gem GEMglAccum {gem imaging opengl wrapper} -gem GEMglAlphaFunc {gem imaging opengl wrapper} -gem GEMglBegin {gem imaging opengl wrapper} -gem GEMglBitmap {gem imaging opengl wrapper} -gem GEMglBlendFunc {gem imaging opengl wrapper} -gem GEMglCallList {gem imaging opengl wrapper} -gem GEMglClear {gem imaging opengl wrapper} -gem GEMglClearAccum {gem imaging opengl wrapper} -gem GEMglClearColor {gem imaging opengl wrapper} -gem GEMglClearDepth {gem imaging opengl wrapper} -gem GEMglClearIndex {gem imaging opengl wrapper} -gem GEMglClearStencil {gem imaging opengl wrapper} -gem GEMglClipPlane {gem imaging opengl wrapper} -gem GEMglColor3b {gem imaging opengl wrapper} -gem GEMglColor3bv {gem imaging opengl wrapper} -gem GEMglColor3d {gem imaging opengl wrapper} -gem GEMglColor3dv {gem imaging opengl wrapper} -gem GEMglColor3f {gem imaging opengl wrapper} -gem GEMglColor3fv {gem imaging opengl wrapper} -gem GEMglColor3i {gem imaging opengl wrapper} -gem GEMglColor3iv {gem imaging opengl wrapper} -gem GEMglColor3s {gem imaging opengl wrapper} -gem GEMglColor3sv {gem imaging opengl wrapper} -gem GEMglColor3ub {gem imaging opengl wrapper} -gem GEMglColor3ubv {gem imaging opengl wrapper} -gem GEMglColor3ui {gem imaging opengl wrapper} -gem GEMglColor3uiv {gem imaging opengl wrapper} -gem GEMglColor3us {gem imaging opengl wrapper} -gem GEMglColor3usv {gem imaging opengl wrapper} -gem GEMglColor4b {gem imaging opengl wrapper} -gem GEMglColor4bv {gem imaging opengl wrapper} -gem GEMglColor4d {gem imaging opengl wrapper} -gem GEMglColor4dv {gem imaging opengl wrapper} -gem GEMglColor4f {gem imaging opengl wrapper} -gem GEMglColor4fv {gem imaging opengl wrapper} -gem GEMglColor4i {gem imaging opengl wrapper} -gem GEMglColor4iv {gem imaging opengl wrapper} -gem GEMglColor4s {gem imaging opengl wrapper} -gem GEMglColor4sv {gem imaging opengl wrapper} -gem GEMglColor4ub {gem imaging opengl wrapper} -gem GEMglColor4ubv {gem imaging opengl wrapper} -gem GEMglColor4ui {gem imaging opengl wrapper} -gem GEMglColor4uiv {gem imaging opengl wrapper} -gem GEMglColor4us {gem imaging opengl wrapper} -gem GEMglColor4usv {gem imaging opengl wrapper} -gem GEMglColorMask {gem imaging opengl wrapper} -gem GEMglColorMaterial {gem imaging opengl wrapper} -gem GEMglCopyPixels {gem imaging opengl wrapper} -gem GEMglCullFace {gem imaging opengl wrapper} -gem GEMglDepthFunc {gem imaging opengl wrapper} -gem GEMglDepthMask {gem imaging opengl wrapper} -gem GEMglDepthRange {gem imaging opengl wrapper} -gem GEMglDisable {gem imaging opengl wrapper} -gem GEMglDrawBuffer {gem imaging opengl wrapper} -gem GEMglEdgeFlag {gem imaging opengl wrapper} -gem GEMglEnable {gem imaging opengl wrapper} -gem GEMglEnd {gem imaging opengl wrapper} -gem GEMglEndList {gem imaging opengl wrapper} -gem GEMglEvalCoord1d {gem imaging opengl wrapper} -gem GEMglEvalCoord1dv {gem imaging opengl wrapper} -gem GEMglEvalCoord1f {gem imaging opengl wrapper} -gem GEMglEvalCoord1fv {gem imaging opengl wrapper} -gem GEMglEvalCoord2d {gem imaging opengl wrapper} -gem GEMglEvalCoord2dv {gem imaging opengl wrapper} -gem GEMglEvalCoord2f {gem imaging opengl wrapper} -gem GEMglEvalCoord2fv {gem imaging opengl wrapper} -gem GEMglEvalMesh1 {gem imaging opengl wrapper} -gem GEMglEvalMesh2 {gem imaging opengl wrapper} -gem GEMglEvalPoint1 {gem imaging opengl wrapper} -gem GEMglEvalPoint2 {gem imaging opengl wrapper} -gem GEMglFeedbackBuffer {gem imaging opengl wrapper} -gem GEMglFinish {gem imaging opengl wrapper} -gem GEMglFlush {gem imaging opengl wrapper} -gem GEMglFogf {gem imaging opengl wrapper} -gem GEMglFogfv {gem imaging opengl wrapper} -gem GEMglFogi {gem imaging opengl wrapper} -gem GEMglFogiv {gem imaging opengl wrapper} -gem GEMglFrontFace {gem imaging opengl wrapper} -gem GEMglFrustum {gem imaging opengl wrapper} -gem GEMglGenLists {gem imaging opengl wrapper} -gem GEMglGetError {gem imaging opengl wrapper} -gem GEMglGetFloatv {gem imaging opengl wrapper} -gem GEMglGetMapdv {gem imaging opengl wrapper} -gem GEMglGetMapfv {gem imaging opengl wrapper} -gem GEMglGetMapiv {gem imaging opengl wrapper} -gem GEMglGetString {gem imaging opengl wrapper} -gem GEMglHint {gem imaging opengl wrapper} -gem GEMglIndexd {gem imaging opengl wrapper} -gem GEMglIndexdv {gem imaging opengl wrapper} -gem GEMglIndexf {gem imaging opengl wrapper} -gem GEMglIndexfv {gem imaging opengl wrapper} -gem GEMglIndexi {gem imaging opengl wrapper} -gem GEMglIndexiv {gem imaging opengl wrapper} -gem GEMglIndexMask {gem imaging opengl wrapper} -gem GEMglIndexs {gem imaging opengl wrapper} -gem GEMglIndexsv {gem imaging opengl wrapper} -gem GEMglInitNames {gem imaging opengl wrapper} -gem GEMglIsEnabled {gem imaging opengl wrapper} -gem GEMglIsList {gem imaging opengl wrapper} -gem GEMglLightf {gem imaging opengl wrapper} -gem GEMglLighti {gem imaging opengl wrapper} -gem GEMglLightModelf {gem imaging opengl wrapper} -gem GEMglLightModeli {gem imaging opengl wrapper} -gem GEMglLineStipple {gem imaging opengl wrapper} -gem GEMglLineWidth {gem imaging opengl wrapper} -gem GEMglLoadIdentity {gem imaging opengl wrapper} -gem GEMglLoadMatrixd {gem imaging opengl wrapper} -gem GEMglLoadMatrixf {gem imaging opengl wrapper} -gem GEMglLoadName {gem imaging opengl wrapper} -gem GEMglLogicOp {gem imaging opengl wrapper} -gem GEMglMap1d {gem imaging opengl wrapper} -gem GEMglMap1f {gem imaging opengl wrapper} -gem GEMglMap2d {gem imaging opengl wrapper} -gem GEMglMap2f {gem imaging opengl wrapper} -gem GEMglMapGrid1d {gem imaging opengl wrapper} -gem GEMglMapGrid1f {gem imaging opengl wrapper} -gem GEMglMapGrid2d {gem imaging opengl wrapper} -gem GEMglMapGrid2f {gem imaging opengl wrapper} -gem GEMglMaterialf {gem imaging opengl wrapper} -gem GEMglMateriali {gem imaging opengl wrapper} -gem GEMglMatrixMode {gem imaging opengl wrapper} -gem GEMglMultMatrixd {gem imaging opengl wrapper} -gem GEMglMultMatrixf {gem imaging opengl wrapper} -gem GEMglNewList {gem imaging opengl wrapper} -gem GEMglNormal3b {gem imaging opengl wrapper} -gem GEMglNormal3bv {gem imaging opengl wrapper} -gem GEMglNormal3d {gem imaging opengl wrapper} -gem GEMglNormal3dv {gem imaging opengl wrapper} -gem GEMglNormal3f {gem imaging opengl wrapper} -gem GEMglNormal3fv {gem imaging opengl wrapper} -gem GEMglNormal3i {gem imaging opengl wrapper} -gem GEMglNormal3iv {gem imaging opengl wrapper} -gem GEMglNormal3s {gem imaging opengl wrapper} -gem GEMglNormal3sv {gem imaging opengl wrapper} -gem GEMglOrtho {gem imaging opengl wrapper} -gem GEMglPassThrough {gem imaging opengl wrapper} -gem GEMglPixelStoref {gem imaging opengl wrapper} -gem GEMglPixelStorei {gem imaging opengl wrapper} -gem GEMglPixelTransferf {gem imaging opengl wrapper} -gem GEMglPixelTransferi {gem imaging opengl wrapper} -gem GEMglPixelZoom {gem imaging opengl wrapper} -gem GEMglPointSize {gem imaging opengl wrapper} -gem GEMglPolygonMode {gem imaging opengl wrapper} -gem GEMglPopAttrib {gem imaging opengl wrapper} -gem GEMglPopMatrix {gem imaging opengl wrapper} -gem GEMglPopName {gem imaging opengl wrapper} -gem GEMglPushAttrib {gem imaging opengl wrapper} -gem GEMglPushMatrix {gem imaging opengl wrapper} -gem GEMglPushName {gem imaging opengl wrapper} -gem GEMglRasterPos2d {gem imaging opengl wrapper} -gem GEMglRasterPos2dv {gem imaging opengl wrapper} -gem GEMglRasterPos2f {gem imaging opengl wrapper} -gem GEMglRasterPos2fv {gem imaging opengl wrapper} -gem GEMglRasterPos2i {gem imaging opengl wrapper} -gem GEMglRasterPos2iv {gem imaging opengl wrapper} -gem GEMglRasterPos2s {gem imaging opengl wrapper} -gem GEMglRasterPos2sv {gem imaging opengl wrapper} -gem GEMglRasterPos3d {gem imaging opengl wrapper} -gem GEMglRasterPos3dv {gem imaging opengl wrapper} -gem GEMglRasterPos3f {gem imaging opengl wrapper} -gem GEMglRasterPos3fv {gem imaging opengl wrapper} -gem GEMglRasterPos3i {gem imaging opengl wrapper} -gem GEMglRasterPos3iv {gem imaging opengl wrapper} -gem GEMglRasterPos3s {gem imaging opengl wrapper} -gem GEMglRasterPos3sv {gem imaging opengl wrapper} -gem GEMglRasterPos4d {gem imaging opengl wrapper} -gem GEMglRasterPos4dv {gem imaging opengl wrapper} -gem GEMglRasterPos4f {gem imaging opengl wrapper} -gem GEMglRasterPos4fv {gem imaging opengl wrapper} -gem GEMglRasterPos4i {gem imaging opengl wrapper} -gem GEMglRasterPos4iv {gem imaging opengl wrapper} -gem GEMglRasterPos4s {gem imaging opengl wrapper} -gem GEMglRasterPos4sv {gem imaging opengl wrapper} -gem GEMglRectd {gem imaging opengl wrapper} -gem GEMglRectf {gem imaging opengl wrapper} -gem GEMglRecti {gem imaging opengl wrapper} -gem GEMglRects {gem imaging opengl wrapper} -gem GEMglRenderMode {gem imaging opengl wrapper} -gem GEMglRotated {gem imaging opengl wrapper} -gem GEMglScaled {gem imaging opengl wrapper} -gem GEMglScalef {gem imaging opengl wrapper} -gem GEMglScissor {gem imaging opengl wrapper} -gem GEMglSelectBuffer {gem imaging opengl wrapper} -gem GEMglShadeModel {gem imaging opengl wrapper} -gem GEMglStencilFunc {gem imaging opengl wrapper} -gem GEMglStencilMask {gem imaging opengl wrapper} -gem GEMglStencilOp {gem imaging opengl wrapper} -gem GEMglTexCoord1d {gem imaging opengl wrapper} -gem GEMglTexCoord1dv {gem imaging opengl wrapper} -gem GEMglTexCoord1f {gem imaging opengl wrapper} -gem GEMglTexCoord1i {gem imaging opengl wrapper} -gem GEMglTexCoord1iv {gem imaging opengl wrapper} -gem GEMglTexCoord1s {gem imaging opengl wrapper} -gem GEMglTexCoord1sv {gem imaging opengl wrapper} -gem GEMglTexCoord2d {gem imaging opengl wrapper} -gem GEMglTexCoord2dv {gem imaging opengl wrapper} -gem GEMglTexCoord2f {gem imaging opengl wrapper} -gem GEMglTexCoord2fv {gem imaging opengl wrapper} -gem GEMglTexCoord2i {gem imaging opengl wrapper} -gem GEMglTexCoord2iv {gem imaging opengl wrapper} -gem GEMglTexCoord2s {gem imaging opengl wrapper} -gem GEMglTexCoord2sv {gem imaging opengl wrapper} -gem GEMglTexCoord3d {gem imaging opengl wrapper} -gem GEMglTexCoord3dv {gem imaging opengl wrapper} -gem GEMglTexCoord3f {gem imaging opengl wrapper} -gem GEMglTexCoord3fv {gem imaging opengl wrapper} -gem GEMglTexCoord3i {gem imaging opengl wrapper} -gem GEMglTexCoord3iv {gem imaging opengl wrapper} -gem GEMglTexCoord3s {gem imaging opengl wrapper} -gem GEMglTexCoord3sv {gem imaging opengl wrapper} -gem GEMglTexCoord4d {gem imaging opengl wrapper} -gem GEMglTexCoord4dv {gem imaging opengl wrapper} -gem GEMglTexCoord4f {gem imaging opengl wrapper} -gem GEMglTexCoord4fv {gem imaging opengl wrapper} -gem GEMglTexCoord4i {gem imaging opengl wrapper} -gem GEMglTexCoord4iv {gem imaging opengl wrapper} -gem GEMglTexCoord4s {gem imaging opengl wrapper} -gem GEMglTexCoord4sv {gem imaging opengl wrapper} -gem GEMglTexEnvf {gem imaging opengl wrapper} -gem GEMglTexEnvi {gem imaging opengl wrapper} -gem GEMglTexGend {gem imaging opengl wrapper} -gem GEMglTexGenf {gem imaging opengl wrapper} -gem GEMglTexGenfv {gem imaging opengl wrapper} -gem GEMglTexGeni {gem imaging opengl wrapper} -gem GEMglTexParameterf {gem imaging opengl wrapper} -gem GEMglTexParameteri {gem imaging opengl wrapper} -gem GEMglTranslated {gem imaging opengl wrapper} -gem GEMglTranslatef {gem imaging opengl wrapper} -gem GEMglVertex2d {gem imaging opengl wrapper} -gem GEMglVertex2dv {gem imaging opengl wrapper} -gem GEMglVertex2f {gem imaging opengl wrapper} -gem GEMglVertex2fv {gem imaging opengl wrapper} -gem GEMglVertex2i {gem imaging opengl wrapper} -gem GEMglVertex2iv {gem imaging opengl wrapper} -gem GEMglVertex2s {gem imaging opengl wrapper} -gem GEMglVertex2sv {gem imaging opengl wrapper} -gem GEMglVertex3d {gem imaging opengl wrapper} -gem GEMglVertex3dv {gem imaging opengl wrapper} -gem GEMglVertex3f {gem imaging opengl wrapper} -gem GEMglVertex3fv {gem imaging opengl wrapper} -gem GEMglVertex3i {gem imaging opengl wrapper} -gem GEMglVertex3iv {gem imaging opengl wrapper} -gem GEMglVertex3s {gem imaging opengl wrapper} -gem GEMglVertex3sv {gem imaging opengl wrapper} -gem GEMglVertex4d {gem imaging opengl wrapper} -gem GEMglVertex4dv {gem imaging opengl wrapper} -gem GEMglVertex4f {gem imaging opengl wrapper} -gem GEMglVertex4fv {gem imaging opengl wrapper} -gem GEMglVertex4i {gem imaging opengl wrapper} -gem GEMglVertex4iv {gem imaging opengl wrapper} -gem GEMglVertex4s {gem imaging opengl wrapper} -gem GEMglVertex4sv {gem imaging opengl wrapper} -gem GEMglViewport {gem imaging opengl wrapper} -gem gemhead {controls gem imaging} -gem gemkeyboard {controls gem imaging} -gem gemkeyname {controls gem imaging} -gem gemmouse {controls gem imaging} -gem gemorb {controls gem imaging} -gem gemtablet {controls gem imaging} -gem gemwin {controls gem imaging} -gem imageVert {gem geos imaging} -gem light {gem imaging nongeos} -gem linear_path {gem imaging manipulators} -gem model {gem geos imaging} -gem multimodel {gem geos imaging} -gem newWave {gem geos imaging} -gem ortho {gem imaging manipulators} -gem part_color {gem imaging particles} -gem part_damp {gem imaging particles} -gem part_draw {gem imaging particles} -gem part_follow {gem imaging particles} -gem part_gravity {gem imaging particles} -gem part_head {gem imaging particles} -gem part_info {gem imaging particles} -gem part_killold {gem imaging particles} -gem part_killslow {gem imaging particles} -gem part_orbitpoint {gem imaging particles} -gem part_render {gem imaging particles} -gem part_size {gem imaging particles} -gem part_source {gem imaging particles} -gem part_targetcolor {gem imaging particles} -gem part_targetsize {gem imaging particles} -gem part_velocity {gem imaging particles} -gem part_vertex {gem imaging particles} -gem pix_2grey {gem imaging pixes} -gem pix_a_2grey {gem imaging pixes} -gem pix_add {gem imaging pixes} -gem pix_aging {gem imaging pixes} -gem pix_alpha {gem imaging pixes} -gem pix_background {gem imaging pixes} -gem pix_backlight {gem imaging pixes} -gem pix_biquad {gem imaging pixes} -gem pix_bitmask {gem imaging pixes} -gem pix_blob {gem imaging pixes} -gem pix_buf {gem imaging pixes} -gem pix_buffer {gem imaging pixes} -gem pix_buffer_read {gem imaging pixes} -gem pix_buffer_write {gem imaging pixes} -gem pix_chroma_key {gem imaging pixes} -gem pix_color {gem imaging pixes} -gem pix_coloralpha {gem imaging pixes} -gem pix_colormatrix {gem imaging pixes} -gem pix_colorreduce {gem imaging pixes} -gem pix_composite {gem imaging pixes} -gem pix_convolve {gem imaging pixes} -gem pix_coordinate {gem imaging pixes} -gem pix_crop {gem imaging pixes} -gem pix_curve {gem imaging pixes} -gem pix_data {gem imaging pixes} -gem pix_delay {gem imaging pixes} -gem pix_diff {gem imaging pixes} -gem pix_dot {gem imaging pixes} -gem pix_draw {gem imaging pixes} -gem pix_dump {gem imaging pixes} -gem pix_duotone {gem imaging pixes} -gem pix_film {gem imaging pixes} -gem pix_flip {gem imaging pixes} -gem pix_gain {gem imaging pixes} -gem pix_grey {gem imaging pixes} -gem pix_halftone {gem imaging pixes} -gem pix_histo {gem imaging pixes} -gem pix_hsv2rgb {gem imaging pixes} -gem pix_image {gem imaging pixes} -gem pix_imageInPlace {gem imaging pixes} -gem pix_info {gem imaging pixes} -gem pix_invert {gem imaging pixes} -gem pix_kaleidoscope {gem imaging pixes} -gem pix_levels {gem imaging pixes} -gem pix_lumaoffset {gem imaging pixes} -gem pix_mask {gem imaging pixes} -gem pix_metaimage {gem imaging pixes} -gem pix_mix {gem imaging pixes} -gem pix_motionblur {gem imaging pixes} -gem pix_movement {gem imaging pixes} -gem pix_movie {gem imaging pixes} -gem pix_multiimage {gem imaging pixes} -gem pix_multiply {gem imaging pixes} -gem pix_normalize {gem imaging pixes} -gem pix_offset {gem imaging pixes} -gem pix_pix2sig~ {gem imaging pixes} -gem pix_posterize {gem imaging pixes} -gem pix_puzzle {gem imaging pixes} -gem pix_rds {gem imaging pixes} -gem pix_rectangle {gem imaging pixes} -gem pix_refraction {gem imaging pixes} -gem pix_resize {gem imaging pixes} -gem pix_rgb2hsv {gem imaging pixes} -gem pix_rgba {gem imaging pixes} -gem pix_roll {gem imaging pixes} -gem pix_rtx {gem imaging pixes} -gem pix_scanline {gem imaging pixes} -gem pix_set {gem imaging pixes} -gem pix_sig2pix~ {gem imaging pixes} -gem pix_snap {gem imaging pixes} -gem pix_snap2tex {gem imaging pixes} -gem pix_subtract {gem imaging pixes} -gem pix_takealpha {gem imaging pixes} -gem pix_texture {gem imaging pixes} -gem pix_threshold {gem imaging pixes} -gem pix_tIIR {gem imaging pixes} -gem pix_video {gem imaging pixes} -gem pix_write {gem imaging pixes} -gem pix_zoom {gem imaging pixes} -gem polygon {gem geos imaging} -gem polygon_smooth {gem imaging manipulators} -gem primTri {gem geos imaging} -gem rectangle {gem geos imaging} -gem ripple {gem geos imaging} -gem rotate {gem imaging manipulators} -gem rotateXYZ {gem imaging manipulators} -gem rubber {gem geos imaging} -gem scale {gem imaging manipulators} -gem scaleXYZ {gem imaging manipulators} -gem separator {gem imaging manipulators} -gem shininess {gem imaging manipulators} -gem slideSquare {gem geos imaging} -gem specular {gem imaging manipulators} -gem specularRGB {gem imaging manipulators} -gem sphere {gem geos imaging} -gem spline_path {gem imaging manipulators} -gem square {gem geos imaging} -gem teapot {gem geos imaging} -gem text2d {gem geos imaging} -gem text3d {gem geos imaging} -gem textextruded {gem geos imaging} -gem textoutline {gem geos imaging} -gem translate {gem imaging manipulators} -gem translateXYZ {gem imaging manipulators} -gem triangle {gem geos imaging} -gem world_light {gem imaging nongeos} -ggee atan2~ {audio ggee math} -ggee atan2~ {audio ggee math} -ggee bandpass {ggee unsorted} -ggee button {ggee unsorted} -ggee envgen {ggee unsorted} -ggee envgen {ggee storage tables} -ggee equalizer {ggee unsorted} -ggee {exp~ log~} {audio ggee math} -ggee gcanvas {ggee unsorted} -ggee getdir {ggee unsorted} -ggee highpass {ggee unsorted} -ggee hlshelf {ggee unsorted} -ggee image {ggee unsorted} -ggee lowpass {ggee unsorted} -ggee lowshelf {ggee unsorted} -ggee mixer~ {ggee unsorted} -ggee moog~ {ggee unsorted} -ggee notch {ggee unsorted} -ggee prepent {control ggee glue shortcut} -ggee rtout {ggee misc} -ggee scrolllist {control ggee glue} -ggee serialctl {ggee unsorted} -ggee serialize {ggee unsorted} -ggee serialize {control ggee glue} -ggee sfwrite~ {ggee unsorted} -ggee shell {ggee unsorted} -ggee silderh {ggee unsorted} -ggee sinh {ggee misc} -ggee slider {control ggee glue} -ggee slider {ggee unsorted} -ggee state {control ggee glue} -ggee stk {ggee unsorted} -ggee streamin~ {ggee unsorted} -ggee streamout~ {ggee unsorted} -ggee stripdir {ggee misc} -ggee stripdir {ggee unsorted} -ggee ticker {control ggee glue} -ggee ticker {ggee unsorted} -ggee toddle {control ggee glue} -ggee toddle {ggee unsorted} -ggee unwonk {control ggee glue} -ggee vbap {ggee misc} -ggee vbap {ggee unsorted} -ggee wintablet {ggee misc} -hardware lanbox {hardware unsorted} -hardware memPIO {hardware unsorted} -hardware multio {hardware unsorted} -hcs ascii0x2d0x3eint {hcs unsorted} -hcs autoscale {hcs unsorted} -hcs blocksize_in_ms {hcs unsorted} -hcs classpath {hcs unsorted} -hcs cursor {hcs unsorted} -hcs debounce {hcs unsorted} -hcs file_type {hcs unsorted} -hcs float0x2d0x3eascii {hcs unsorted} -hcs folder_list {hcs unsorted} -hcs gid0x2d0x3egroup_name {hcs unsorted} -hcs group {hcs unsorted} -hcs group_name0x2d0x3egid {hcs unsorted} -hcs hostname {hcs unsorted} -hcs ifeel {hcs unsorted} -hcs import {hcs unsorted} -hcs ISOdate {hcs unsorted} -hcs ISOtime {hcs unsorted} -hcs passwd {hcs unsorted} -hcs pi {hcs unsorted} -hcs pwm {hcs unsorted} -hcs pwm~ {hcs unsorted} -hcs split_my_msgs {hcs unsorted} -hcs split_path {hcs unsorted} -hcs stat {hcs unsorted} -hcs uid0x2d0x3eusername {hcs unsorted} -hcs uname {hcs unsorted} -hcs username0x2d0x3euid {hcs unsorted} -hcs version {hcs unsorted} -hid buttongate {hid unsorted} -hid deg2hid {hid unsorted} -hid ev_ff_status {hid unsorted} -hid hid {hid unsorted} -hid hid_average {hid unsorted} -hid hid_centered {hid unsorted} -hid hid_cube {hid unsorted} -hid hid_cuberoot {hid unsorted} -hid hid_exp {hid unsorted} -hid hid_graph {hid unsorted} -hid hid_invert {hid unsorted} -hid hid_log {hid unsorted} -hid hid_lowpass {hid unsorted} -hid hid_menu {hid unsorted} -hid hid_one2four {hid unsorted} -hid hid_one2three {hid unsorted} -hid hid_one2two {hid unsorted} -hid hid_polar {hid unsorted} -hid hid_rel2abs {hid unsorted} -hid hid_smooth {hid unsorted} -hid hid_spiral {hid unsorted} -hid hid_square {hid unsorted} -hid hid_squareroot {hid unsorted} -hid hid2deg {hid unsorted} -hid hid2rad {hid unsorted} -hid joystick {hid unsorted} -hid keyboard {hid unsorted} -hid keygate {hid unsorted} -hid mouse {hid unsorted} -hid notescale {hid unsorted} -hid rad2hid {hid unsorted} -iem_ambi ambi_decode3 {iem_ambi unsorted} -iem_ambi ambi_encode {iem_ambi unsorted} -iem_ambi ambi_rot {iem_ambi unsorted} -iem_bin_ambi ambi_reduced_decode_fft2 {iem_bin_ambi unsorted} -iem_bin_ambi ambi_reduced_decode_fir2 {iem_bin_ambi unsorted} -iemgui knob {control glue iemgui} -iemlib 1p1z {control float glue iemlib operating} -iemlib add2_comma {iemlib misc} -iemlib addl~ {arithmetic audio iemlib math signals} -iemlib any {control glue iemlib} -iemlib ap1~ {audio filters iemlib} -iemlib ap2~ {audio filters iemlib} -iemlib bng {gui iemlib} -iemlib bpe {iemlib misc} -iemlib bpq2~ {audio filters iemlib} -iemlib bpw2~ {audio filters iemlib} -iemlib bsq2~ {audio filters iemlib} -iemlib bsw2~ {audio filters iemlib} -iemlib cnv {gui iemlib} -iemlib db2v {control float glue iemlib operating} -iemlib dbtofad {control conversion float glue iemlib operating} -iemlib default {control iemlib init} -iemlib divl~ {arithmetic audio iemlib math signals} -iemlib dollarg {control iemlib init} -iemlib dsp {control iemlib init} -iemlib exp_inc {control iemlib time} -iemlib f2note {iemlib misc} -iemlib fade~ {audio iemlib misc} -iemlib fadtodb {control conversion float glue iemlib operating} -iemlib fadtorms {control conversion float glue iemlib operating} -iemlib {filter~ } {audio filters iemlib} -iemlib FIR~ {audio filters iemlib} -iemlib float24 {control iemlib init} -iemlib for++ {control iemlib time} -iemlib gate {iemlib misc} -iemlib hdl {gui iemlib} -iemlib hml_shelf~ {audio filters iemlib} -iemlib hp1~ {audio filters iemlib} -iemlib hp10_bess~ {audio filters iemlib} -iemlib hp10_butt~ {audio filters iemlib} -iemlib hp10_cheb~ {audio filters iemlib} -iemlib hp10_crit~ {audio filters iemlib} -iemlib hp2_bess~ {audio filters iemlib} -iemlib hp2_butt~ {audio filters iemlib} -iemlib hp2_cheb~ {audio filters iemlib} -iemlib hp2_crit~ {audio filters iemlib} -iemlib hp2~ {audio filters iemlib} -iemlib hp3_bess~ {audio filters iemlib} -iemlib hp3_butt~ {audio filters iemlib} -iemlib hp3_cheb~ {audio filters iemlib} -iemlib hp3_crit~ {audio filters iemlib} -iemlib hp4_bess~ {audio filters iemlib} -iemlib hp4_butt~ {audio filters iemlib} -iemlib hp4_cheb~ {audio filters iemlib} -iemlib hp4_crit~ {audio filters iemlib} -iemlib hp5_bess~ {audio filters iemlib} -iemlib hp5_butt~ {audio filters iemlib} -iemlib hp5_cheb~ {audio filters iemlib} -iemlib hp5_crit~ {audio filters iemlib} -iemlib hp6_bess~ {audio filters iemlib} -iemlib hp6_butt~ {audio filters iemlib} -iemlib hp6_cheb~ {audio filters iemlib} -iemlib hp6_crit~ {audio filters iemlib} -iemlib hp7_bess~ {audio filters iemlib} -iemlib hp7_butt~ {audio filters iemlib} -iemlib hp7_cheb~ {audio filters iemlib} -iemlib hp7_crit~ {audio filters iemlib} -iemlib hp8_bess~ {audio filters iemlib} -iemlib hp8_butt~ {audio filters iemlib} -iemlib hp8_cheb~ {audio filters iemlib} -iemlib hp8_crit~ {audio filters iemlib} -iemlib hp9_bess~ {audio filters iemlib} -iemlib hp9_butt~ {audio filters iemlib} -iemlib hp9_cheb~ {audio filters iemlib} -iemlib hp9_crit~ {audio filters iemlib} -iemlib hradio {gui iemlib} -iemlib hsl {gui iemlib} -iemlib iem_append {control glue iemlib} -iemlib iem_blocksize~ {audio iemlib misc} -iemlib iem_i_route {iemlib misc} -iemlib iem_pbank_csv {control glue handling iemlib parameter} -iemlib iem_prepend {control glue iemlib} -iemlib iem_receive {iemlib misc} -iemlib iem_route {iemlib misc} -iemlib iem_samplerate~ {audio iemlib misc} -iemlib iem_sel_any {iemlib misc} -iemlib iem_send {iemlib misc} -iemlib init {control iemlib init} -iemlib int_fract~ {audio iemlib misc} -iemlib LFO_noise~ {audio iemlib misc} -iemlib list2send {control glue handling iemlib parameter} -iemlib lp1_t~ {audio filters iemlib} -iemlib lp1~ {audio filters iemlib} -iemlib lp10_bess~ {audio filters iemlib} -iemlib lp10_butt~ {audio filters iemlib} -iemlib lp10_cheb~ {audio filters iemlib} -iemlib lp10_crit~ {audio filters iemlib} -iemlib lp2_bess~ {audio filters iemlib} -iemlib lp2_butt~ {audio filters iemlib} -iemlib lp2_cheb~ {audio filters iemlib} -iemlib lp2_crit~ {audio filters iemlib} -iemlib lp2~ {audio filters iemlib} -iemlib lp3_bess~ {audio filters iemlib} -iemlib lp3_butt~ {audio filters iemlib} -iemlib lp3_cheb~ {audio filters iemlib} -iemlib lp3_crit~ {audio filters iemlib} -iemlib lp4_bess~ {audio filters iemlib} -iemlib lp4_butt~ {audio filters iemlib} -iemlib lp4_cheb~ {audio filters iemlib} -iemlib lp4_crit~ {audio filters iemlib} -iemlib lp5_bess~ {audio filters iemlib} -iemlib lp5_butt~ {audio filters iemlib} -iemlib lp5_cheb~ {audio filters iemlib} -iemlib lp5_crit~ {audio filters iemlib} -iemlib lp6_bess~ {audio filters iemlib} -iemlib lp6_butt~ {audio filters iemlib} -iemlib lp6_cheb~ {audio filters iemlib} -iemlib lp6_crit~ {audio filters iemlib} -iemlib lp7_bess~ {audio filters iemlib} -iemlib lp7_butt~ {audio filters iemlib} -iemlib lp7_cheb~ {audio filters iemlib} -iemlib lp7_crit~ {audio filters iemlib} -iemlib lp8_bess~ {audio filters iemlib} -iemlib lp8_butt~ {audio filters iemlib} -iemlib lp8_cheb~ {audio filters iemlib} -iemlib lp8_crit~ {audio filters iemlib} -iemlib lp9_bess~ {audio filters iemlib} -iemlib lp9_butt~ {audio filters iemlib} -iemlib lp9_cheb~ {audio filters iemlib} -iemlib lp9_crit~ {audio filters iemlib} -iemlib maverage~ {audio filters iemlib} -iemlib mergefilename {control glue iemlib operating symbol} -iemlib modulo_counter {control iemlib time} -iemlib mp3play~ {audio iemlib misc} -iemlib mull~ {arithmetic audio iemlib math signals} -iemlib nbx {gui iemlib} -iemlib once {control iemlib init} -iemlib para_bp2~ {audio filters iemlib} -iemlib peakenv~ {audio iemlib misc} -iemlib pink~ {audio iemlib misc} -iemlib post_netreceive {iemlib obsolete} -iemlib pre_inlet {iemlib misc} -iemlib pre_netsend {iemlib obsolete} -iemlib prepend_ascii {iemlib misc} -iemlib prvu~ {audio converters iemlib} -iemlib pvu~ {audio converters iemlib} -iemlib rbpq2~ {audio filters iemlib} -iemlib rbpw2~ {audio filters iemlib} -iemlib receive2list {control glue handling iemlib parameter} -iemlib rmstofad {control conversion float glue iemlib operating} -iemlib round_zero {control float glue iemlib operating} -iemlib round~ {audio iemlib misc} -iemlib rvu~ {audio converters iemlib} -iemlib sin_phase~ {audio iemlib misc} -iemlib soundfile_info {iemlib misc} -iemlib speedlim {control float glue iemlib operating} -iemlib split {control float glue iemlib operating} -iemlib split3 {control float glue iemlib operating} -iemlib splitfilename {control glue iemlib operating symbol} -iemlib stripfilename {control glue iemlib operating symbol} -iemlib subl~ {arithmetic audio iemlib math signals} -iemlib t3_bpe {control iemlib time} -iemlib t3_delay {control iemlib time} -iemlib t3_line~ {audio iemlib time trigger} -iemlib t3_metro {control iemlib time} -iemlib t3_sig~ {audio iemlib time trigger} -iemlib t3_timer {control iemlib time} -iemlib tgl {gui iemlib} -iemlib toggle_mess {iemlib misc} -iemlib transf_fader {control float glue iemlib operating} -iemlib unsig~ {audio converters iemlib} -iemlib unsymbol {control glue iemlib operating symbol} -iemlib v2db {control float glue iemlib operating} -iemlib vcf_bp2~ {audio filters iemlib} -iemlib vcf_bp4~ {audio filters iemlib} -iemlib vcf_bp6~ {audio filters iemlib} -iemlib vcf_bp8~ {audio filters iemlib} -iemlib vcf_hp2~ {audio filters iemlib} -iemlib vcf_hp4~ {audio filters iemlib} -iemlib vcf_hp6~ {audio filters iemlib} -iemlib vcf_hp8~ {audio filters iemlib} -iemlib vcf_lp2~ {audio filters iemlib} -iemlib vcf_lp4~ {audio filters iemlib} -iemlib vcf_lp6~ {audio filters iemlib} -iemlib vcf_lp8~ {audio filters iemlib} -iemlib vcf_rbp2~ {audio filters iemlib} -iemlib vcf_rbp4~ {audio filters iemlib} -iemlib vcf_rbp6~ {audio filters iemlib} -iemlib vcf_rbp8~ {audio filters iemlib} -iemlib vdl {gui iemlib} -iemlib vradio {gui iemlib} -iemlib vsl {gui iemlib} -iemlib vu {gui iemlib} -iemlib wrap {control float glue iemlib operating} -jasch_lib _ {jasch_lib unsorted} -jasch_lib detox {connectivity html jasch_lib xml} -jmmmp -dsp {jmmmp unsorted} -jmmmp bcf2000 {jmmmp unsorted} -jmmmp clock {jmmmp unsorted} -jmmmp datei-l {jmmmp unsorted} -jmmmp datei-o {jmmmp unsorted} -jmmmp datei-r {jmmmp unsorted} -jmmmp datei-w {jmmmp unsorted} -jmmmp dsp01 {jmmmp unsorted} -jmmmp f+ {jmmmp unsorted} -jmmmp file {jmmmp unsorted} -jmmmp lbang {jmmmp unsorted} -jmmmp m-i {jmmmp unsorted} -jmmmp maat~ {jmmmp unsorted} -jmmmp mat~ {jmmmp unsorted} -jmmmp met~ {jmmmp unsorted} -jmmmp metrum {jmmmp unsorted} -jmmmp mk {jmmmp unsorted} -jmmmp oscD {jmmmp unsorted} -jmmmp oscS {jmmmp unsorted} -jmmmp snaps~ {jmmmp unsorted} -jmmmp stoppuhr {jmmmp unsorted} -jmmmp tastin {jmmmp unsorted} -keyboardkeys keybang {keyboardkeys unsorted} -keyboardkeys keytoggle {keyboardkeys unsorted} -keyboardkeys keyupdown {keyboardkeys unsorted} -la-kitchen amplitude_n {la-kitchen unsorted} -la-kitchen autocal {la-kitchen unsorted} -la-kitchen catch_extremum {la-kitchen unsorted} -la-kitchen catch_extremum2 {la-kitchen unsorted} -la-kitchen change_n {la-kitchen unsorted} -la-kitchen count_n {la-kitchen unsorted} -la-kitchen debounce {la-kitchen unsorted} -la-kitchen debounce_b {la-kitchen unsorted} -la-kitchen fir_filter {la-kitchen unsorted} -la-kitchen fir_hip_n {la-kitchen unsorted} -la-kitchen fir_mean_n {la-kitchen unsorted} -la-kitchen iir_hip {la-kitchen unsorted} -la-kitchen iir_lop {la-kitchen unsorted} -la-kitchen last_n {la-kitchen unsorted} -la-kitchen last_n_matrix {la-kitchen unsorted} -la-kitchen list2matcol {la-kitchen unsorted} -la-kitchen max_n {la-kitchen unsorted} -la-kitchen min_n {la-kitchen unsorted} -la-kitchen one_n {la-kitchen unsorted} -la-kitchen seuil_n {la-kitchen unsorted} -la-kitchen zero_n {la-kitchen unsorted} -list-abs compare-any {list-abs unsorted} -list-abs last-x {list-abs testtag unsorted} -list-abs list-abs {list-abs unsorted} -list-abs list-accum {list-abs unsorted} -list-abs list-add {list-abs unsorted} -list-abs list-apply {list-abs unsorted} -list-abs list-centroid {list-abs unsorted} -list-abs list-clip {list-abs unsorted} -list-abs list-compare {list-abs unsorted} -list-abs list-delete {list-abs unsorted} -list-abs list-dotprod {list-abs unsorted} -list-abs list-drip {list-abs unsorted} -list-abs list-dripslow {list-abs unsorted} -list-abs list-emath {list-abs unsorted} -list-abs list-enumerate {list-abs unsorted} -list-abs list-equalize {list-abs unsorted} -list-abs list-extend {list-abs unsorted} -list-abs list-fifo {list-abs unsorted} -list-abs list-filter {list-abs unsorted} -list-abs list-find {list-abs unsorted} -list-abs list-geometric-mean {list-abs unsorted} -list-abs list-harmonic-mean {list-abs unsorted} -list-abs list-idx {list-abs unsorted} -list-abs list-insert {list-abs unsorted} -list-abs list-inter {list-abs unsorted} -list-abs list-inter-many {list-abs unsorted} -list-abs list-l2s {list-abs unsorted} -list-abs list-lastx {list-abs unsorted} -list-abs list-len {list-abs unsorted} -list-abs list-lifo {list-abs unsorted} -list-abs list-makefilename {list-abs unsorted} -list-abs list-map {list-abs unsorted} -list-abs list-map2 {list-abs unsorted} -list-abs list-math {list-abs unsorted} -list-abs list-mean {list-abs unsorted} -list-abs list-minmax {list-abs unsorted} -list-abs list-moses {list-abs unsorted} -list-abs list-mult {list-abs unsorted} -list-abs list-normalize {list-abs unsorted} -list-abs list-onearg {list-abs unsorted} -list-abs list-reduce {list-abs unsorted} -list-abs list-replace {list-abs unsorted} -list-abs list-rev {list-abs unsorted} -list-abs list-rot {list-abs unsorted} -list-abs list-round {list-abs unsorted} -list-abs list-seek {list-abs unsorted} -list-abs list-sieve {list-abs unsorted} -list-abs list-splat {list-abs unsorted} -list-abs list-sub {list-abs unsorted} -list-abs list-tabdump {list-abs unsorted} -list-abs list-unitvec {list-abs unsorted} -list-abs OSCprepend {list-abs unsorted} -list-abs prepent {list-abs unsorted} -list-abs sroute {list-abs unsorted} -list-abs take-two {list-abs unsorted} -list-abs triple-scale {list-abs unsorted} -mapping amplitude_n {mapping unsorted} -mapping autoscale {mapping unsorted} -mapping breakpoint {mapping unsorted} -mapping buttongate {mapping unsorted} -mapping bytemask {mapping unsorted} -mapping correlation {mapping unsorted} -mapping curve {mapping unsorted} -mapping curve_exp {mapping unsorted} -mapping curve_fade {mapping unsorted} -mapping curve_graph {mapping unsorted} -mapping curve_log {mapping unsorted} -mapping debounce {mapping unsorted} -mapping debytemask {mapping unsorted} -mapping degrees0x2d0x3emapping {mapping unsorted} -mapping delay_n {mapping unsorted} -mapping desegment {mapping unsorted} -mapping desegment12 {mapping unsorted} -mapping desegment3 {mapping unsorted} -mapping desegment4 {mapping unsorted} -mapping diff_n {mapping unsorted} -mapping disjoin {mapping unsorted} -mapping distance {mapping unsorted} -mapping distance_n {mapping unsorted} -mapping distance2d {mapping unsorted} -mapping downsample {mapping unsorted} -mapping env {mapping unsorted} -mapping env- {mapping unsorted} -mapping env+ {mapping unsorted} -mapping fir {mapping unsorted} -mapping gaussian {mapping unsorted} -mapping hysteresis {mapping unsorted} -mapping iir {mapping unsorted} -mapping join {mapping unsorted} -mapping keygate {mapping unsorted} -mapping last_n {mapping unsorted} -mapping listto {mapping unsorted} -mapping local_max {mapping unsorted} -mapping local_min {mapping unsorted} -mapping lop {mapping unsorted} -mapping mapping0x2d0x3edegrees {mapping unsorted} -mapping mapping0x2d0x3eradians {mapping unsorted} -mapping max_n {mapping unsorted} -mapping mean_n {mapping unsorted} -mapping median {mapping unsorted} -mapping median_3 {mapping unsorted} -mapping median_5 {mapping unsorted} -mapping median_7 {mapping unsorted} -mapping median_n {mapping unsorted} -mapping min_n {mapping unsorted} -mapping multi_slider {mapping unsorted} -mapping nl {mapping unsorted} -mapping notescale {mapping unsorted} -mapping oscillo {mapping unsorted} -mapping pmfilter {mapping unsorted} -mapping pmfilter_2d {mapping unsorted} -mapping pmfilter_3d {mapping unsorted} -mapping pmstring_1d {mapping unsorted} -mapping polar {mapping unsorted} -mapping radians0x2d0x3emapping {mapping unsorted} -mapping resample {mapping unsorted} -mapping reverse {mapping unsorted} -mapping rnd-stat {mapping unsorted} -mapping segment {mapping unsorted} -mapping segment4 {mapping unsorted} -mapping sinusoid {mapping unsorted} -mapping spiral {mapping unsorted} -mapping split_n {mapping unsorted} -mapping stepper {mapping unsorted} -mapping stepper12 {mapping unsorted} -mapping stepper24 {mapping unsorted} -mapping stream_check {mapping unsorted} -mapping test_n {mapping unsorted} -mapping timeroll {mapping unsorted} -mapping tolist {mapping unsorted} -mapping upsample {mapping unsorted} -mapping wave {mapping unsorted} -mapping wave_loop {mapping unsorted} -markex abs~ {markex unsorted} -markex alternate {markex unsorted} -markex average {markex unsorted} -markex change {markex unsorted} -markex counter {markex unsorted} -markex hsv2rgb {markex unsorted} -markex invert {markex unsorted} -markex multiselect {markex unsorted} -markex oneshot {markex unsorted} -markex randomF {markex unsorted} -markex reson~ {markex unsorted} -markex rgb2hsv {markex unsorted} -markex strcat {markex unsorted} -markex tripleLine {markex unsorted} -markex tripleRand {markex unsorted} -markex vector- {markex unsorted} -markex vector* {markex unsorted} -markex vector/ {markex unsorted} -markex vector+ {markex unsorted} -markex vectorpack {markex unsorted} -maxlib allow {control glue maxlib} -maxlib arbran {math maxlib} -maxlib arraycopy {buffer maxlib storage} -maxlib average {math maxlib} -maxlib beat {analysis audio maxlib} -maxlib beta {generators math maxlib number random} -maxlib bilex {generators math maxlib number random} -maxlib borax {analysis audio maxlib} -maxlib cauchy {generators math maxlib number random} -maxlib chord {analysis audio maxlib} -maxlib delta {math maxlib} -maxlib dist {connectivity control maxlib misc network remote} -maxlib divide {math maxlib} -maxlib divmod {math maxlib} -maxlib edge {analysis audio maxlib} -maxlib expo {generators math maxlib number random} -maxlib fifo {buffer maxlib storage} -maxlib gauss {generators math maxlib number random} -maxlib gestalt {analysis audio maxlib} -maxlib history {math maxlib} -maxlib ignore {control maxlib time} -maxlib iso {control maxlib time} -maxlib lifo {buffer maxlib storage} -maxlib limit {maxlib unsorted} -maxlib linear {generators math maxlib number random} -maxlib listfifo {buffer maxlib storage} -maxlib listfunnel {edit list maxlib storage} -maxlib match {math maxlib} -maxlib minus {math maxlib} -maxlib mlife {maxlib misc other/experimental} -maxlib multi {math maxlib} -maxlib nchange {control glue maxlib} -maxlib netclient {connectivity control maxlib misc network remote} -maxlib netdist {connectivity control maxlib misc network remote} -maxlib netrec {connectivity control maxlib misc network remote} -maxlib netserver {connectivity control maxlib misc network remote} -maxlib nroute {control glue maxlib} -maxlib pitch {analysis audio maxlib} -maxlib plus {math maxlib} -maxlib poisson {generators math maxlib number random} -maxlib pong {control maxlib time} -maxlib pulse {control maxlib time} -maxlib remote {connectivity control maxlib misc network remote} -maxlib rewrap {math maxlib} -maxlib rythm {analysis audio maxlib} -maxlib scale {math maxlib} -maxlib score {analysis audio maxlib} -maxlib speedlim {control maxlib time} -maxlib split {checking control glue maxlib routing} -maxlib step {control maxlib time} -maxlib subst {maxlib misc other/experimental} -maxlib sync {control maxlib time} -maxlib temperature {control maxlib time} -maxlib tilt {analysis audio maxlib} -maxlib timebang {control maxlib time} -maxlib unroute {control glue maxlib} -maxlib urn {math maxlib} -maxlib velocity {control maxlib time} -maxlib weibull {math maxlib} -maxlib wrap {math maxlib} -memento careGUI {memento unsorted} -memento careOSC {memento unsorted} -memento commun {memento unsorted} -memento originator {memento unsorted} -mjlib {# about} {math mjlib} -mjlib marimba~ {and audio mjlib oscillators tables} -mjlib metroplus {control mjlib time} -mjlib monorhythm {control mjlib time} -mjlib n2m {math mjlib} -mjlib pin~ {audio filters mjlib} -mjlib prob {control mjlib time} -motex getenv {misc motex} -motex ln~ {audio math motex} -motex pan~ {audio filters motex} -motex pansig~ {audio filters motex} -motex pol2rec~ {audio math motex} -motex polygate~ {audio glue motex} -motex rec2pol~ {audio math motex} -motex shuffle {math motex} -motex system {misc motex} -mrpeach midifile {mrpeach unsorted} -mrpeach packOSC {mrpeach unsorted} -mrpeach routeOSC {mrpeach unsorted} -mrpeach sqosc~ {mrpeach unsorted} -mrpeach tcpclient {mrpeach unsorted} -mrpeach tcpreceive {mrpeach unsorted} -mrpeach tcpsend {mrpeach unsorted} -mrpeach tcpserver {mrpeach unsorted} -mrpeach udpreceive {mrpeach unsorted} -mrpeach udpsend {mrpeach unsorted} -nqpoly~ nqpoly~ {nqpoly~ unsorted} -nqpoly4 nqpoly4 {nqpoly4 unsorted} -nusmuk additive {nusmuk unsorted} -nusmuk between {nusmuk unsorted} -nusmuk distortion {nusmuk unsorted} -nusmuk lfo {nusmuk unsorted} -nusmuk many_bang {nusmuk unsorted} -nusmuk oscillo {nusmuk unsorted} -nusmuk rnd_metro {nusmuk unsorted} -nusmuk spatialisation {nusmuk unsorted} -oscx dumpOSC {connectivity osc oscx} -oscx OSC {connectivity osc oscx} -oscx OSCroute {connectivity osc oscx} -oscx sendOSC {connectivity osc oscx} -pan equal_power_pan~ {pan unsorted} -pan gogins_pan~ {pan unsorted} -pan gpan~ {pan unsorted} -pan linear_pan~ {pan unsorted} -pan square_root_pan~ {pan unsorted} -pd-lib - {math pd-lib} -pd-lib -~ {audio math pd-lib} -pd-lib != {math pd-lib} -pd-lib * {math pd-lib} -pd-lib *~ {audio math pd-lib} -pd-lib / {math pd-lib} -pd-lib /~ {audio math pd-lib} -pd-lib & {math pd-lib} -pd-lib && {math pd-lib} -pd-lib % {math pd-lib} -pd-lib + {math pd-lib} -pd-lib +~ {audio math pd-lib} -pd-lib < {math pd-lib} -pd-lib << {math pd-lib} -pd-lib <= {math pd-lib} -pd-lib == {math pd-lib} -pd-lib > {math pd-lib} -pd-lib >= {math pd-lib} -pd-lib >> {math pd-lib} -pd-lib | {math pd-lib} -pd-lib || {math pd-lib} -pd-lib abs {math pd-lib} -pd-lib adc~ {audio glue pd-lib} -pd-lib append {accessing data gui pd-lib} -pd-lib atan {math pd-lib} -pd-lib atan2 {math pd-lib} -pd-lib bag {misc pd-lib} -pd-lib bang {control glue pd-lib} -pd-lib bang~ {audio glue pd-lib} -pd-lib bendin {connectivity midi pd-lib} -pd-lib bendout {connectivity midi pd-lib} -pd-lib biquad~ {audio filters pd-lib} -pd-lib block~ {audio glue pd-lib} -pd-lib bp~ {audio filters pd-lib} -pd-lib catch~ {audio glue pd-lib} -pd-lib change {control glue pd-lib} -pd-lib clip~ {audio math pd-lib} -pd-lib cos {math pd-lib} -pd-lib cos~ {and audio oscillators pd-lib tables} -pd-lib cpole~ {audio filters pd-lib} -pd-lib cputime {control pd-lib time} -pd-lib ctlin {connectivity midi pd-lib} -pd-lib ctlout {connectivity midi pd-lib} -pd-lib czero_rev~ {audio filters pd-lib} -pd-lib czero~ {audio filters pd-lib} -pd-lib dac~ {audio glue pd-lib} -pd-lib dbtopow {conversion math pd-lib} -pd-lib dbtopow~ {audio conversion math pd-lib} -pd-lib dbtorms {conversion math pd-lib} -pd-lib dbtorms~ {audio conversion math pd-lib} -pd-lib declare {misc pd-lib} -pd-lib delay {control pd-lib time} -pd-lib delread~ {audio delay pd-lib} -pd-lib delwrite~ {audio delay pd-lib} -pd-lib div {math pd-lib} -pd-lib drawcurve {data gui pd-lib templates} -pd-lib drawnumber {data gui pd-lib templates} -pd-lib drawpolygon {data gui pd-lib templates} -pd-lib element {accessing data gui pd-lib} -pd-lib env~ {audio filters pd-lib} -pd-lib exp {math pd-lib} -pd-lib fft~ {audio math pd-lib} -pd-lib filledcurve {data gui pd-lib templates} -pd-lib filledpolygon {data gui pd-lib templates} -pd-lib float {control glue pd-lib} -pd-lib framp~ {audio math pd-lib} -pd-lib ftom {conversion math midi pd-lib} -pd-lib ftom~ {audio conversion math midi pd-lib} -pd-lib get {accessing data gui pd-lib} -pd-lib getsize {accessing data gui pd-lib} -pd-lib hip~ {audio filters pd-lib} -pd-lib ifft~ {audio math pd-lib} -pd-lib inlet {control pd-lib subwindows} -pd-lib inlet~ {control pd-lib subwindows} -pd-lib int {control glue pd-lib} -pd-lib key {misc pd-lib} -pd-lib keyname {misc pd-lib} -pd-lib keyup {misc pd-lib} -pd-lib line {control pd-lib time} -pd-lib line~ {audio glue pd-lib} -pd-lib {list append} {lists pd-lib storage} -pd-lib {list prepend} {lists pd-lib storage} -pd-lib {list split} {lists pd-lib storage} -pd-lib {list trim} {lists pd-lib storage} -pd-lib loadbang {misc pd-lib} -pd-lib log {math pd-lib} -pd-lib lop~ {audio filters pd-lib} -pd-lib makefilename {control glue pd-lib} -pd-lib makenote {connectivity midi pd-lib} -pd-lib max {math pd-lib} -pd-lib max~ {audio math pd-lib} -pd-lib metro {control pd-lib time} -pd-lib midiin {connectivity midi pd-lib} -pd-lib midiout {connectivity midi pd-lib} -pd-lib min {math pd-lib} -pd-lib min~ {audio math pd-lib} -pd-lib mod {math pd-lib} -pd-lib moses {control glue pd-lib} -pd-lib mtof {conversion math midi pd-lib} -pd-lib mtof~ {audio conversion math midi pd-lib} -pd-lib namecanvas {obsolete pd-lib} -pd-lib netreceive {connectivity network pd-lib} -pd-lib netsend {connectivity network pd-lib} -pd-lib noise~ {audio filters pd-lib} -pd-lib notein {connectivity midi pd-lib} -pd-lib noteout {connectivity midi pd-lib} -pd-lib openpanel {misc pd-lib} -pd-lib osc~ {and audio oscillators pd-lib tables} -pd-lib outlet {control pd-lib subwindows} -pd-lib outlet~ {control pd-lib subwindows} -pd-lib pack {control glue pd-lib} -pd-lib pd {control pd-lib subwindows} -pd-lib pgmin {connectivity midi pd-lib} -pd-lib pgmout {connectivity midi pd-lib} -pd-lib phasor~ {and audio oscillators pd-lib tables} -pd-lib pipe {control pd-lib time} -pd-lib plot {data gui pd-lib templates} -pd-lib pointer {accessing data gui pd-lib} -pd-lib poly {misc pd-lib} -pd-lib polytouchin {connectivity midi pd-lib} -pd-lib polytouchout {connectivity midi pd-lib} -pd-lib pow {math pd-lib} -pd-lib powtodb {conversion math pd-lib} -pd-lib powtodb~ {audio conversion math pd-lib} -pd-lib print {control glue pd-lib} -pd-lib print~ {audio filters pd-lib} -pd-lib q8_rsqrt~ {audio math pd-lib} -pd-lib q8_sqrt~ {audio math pd-lib} -pd-lib qlist {misc pd-lib sequencer storage} -pd-lib random {math pd-lib} -pd-lib readsf~ {audio glue pd-lib} -pd-lib realtime {control pd-lib time} -pd-lib receive {control glue pd-lib} -pd-lib receive~ {audio glue pd-lib} -pd-lib rfft~ {audio math pd-lib} -pd-lib rifft~ {audio math pd-lib} -pd-lib rmstodb {conversion math pd-lib} -pd-lib rmstodb~ {audio conversion math pd-lib} -pd-lib route {control glue pd-lib} -pd-lib rpole~ {audio filters pd-lib} -pd-lib rzero_rev~ {audio filters pd-lib} -pd-lib rzero~ {audio filters pd-lib} -pd-lib samphold~ {audio filters pd-lib} -pd-lib samplerate~ {audio glue pd-lib} -pd-lib savepanel {misc pd-lib} -pd-lib scalar {obsolete pd-lib} -pd-lib scope {obsolete pd-lib} -pd-lib select {control glue pd-lib} -pd-lib send {control glue pd-lib} -pd-lib send~ {audio glue pd-lib} -pd-lib serial {misc pd-lib} -pd-lib set {accessing data gui pd-lib} -pd-lib setsize {accessing data gui pd-lib} -pd-lib sig~ {audio glue pd-lib} -pd-lib sin {math pd-lib} -pd-lib snapshot~ {audio glue pd-lib} -pd-lib soundfiler {pd-lib storage tables} -pd-lib spigot {control glue pd-lib} -pd-lib sqrt {math pd-lib} -pd-lib stripnote {connectivity midi pd-lib} -pd-lib struct {data gui pd-lib templates} -pd-lib sublist {accessing data gui pd-lib} -pd-lib swap {control glue pd-lib} -pd-lib switch~ {audio glue pd-lib} -pd-lib symbol {control glue pd-lib} -pd-lib sysexin {connectivity midi pd-lib} -pd-lib table {control pd-lib subwindows} -pd-lib tabosc4~ {and audio oscillators pd-lib tables} -pd-lib tabplay~ {and audio oscillators pd-lib tables} -pd-lib tabread {pd-lib storage tables} -pd-lib tabread~ {and audio oscillators pd-lib tables} -pd-lib tabread4 {pd-lib storage tables} -pd-lib tabread4~ {and audio oscillators pd-lib tables} -pd-lib tabreceive~ {and audio oscillators pd-lib tables} -pd-lib tabsend~ {and audio oscillators pd-lib tables} -pd-lib tabwrite {pd-lib storage tables} -pd-lib tabwrite~ {and audio oscillators pd-lib tables} -pd-lib tan {math pd-lib} -pd-lib template {obsolete pd-lib} -pd-lib textfile {io pd-lib storage} -pd-lib threshold~ {audio glue pd-lib} -pd-lib throw~ {audio glue pd-lib} -pd-lib timer {control pd-lib time} -pd-lib touchin {connectivity midi pd-lib} -pd-lib touchout {connectivity midi pd-lib} -pd-lib trigger {control glue pd-lib} -pd-lib unpack {control glue pd-lib} -pd-lib until {control glue pd-lib} -pd-lib value {control glue pd-lib} -pd-lib vcf~ {audio filters pd-lib} -pd-lib vd~ {audio delay pd-lib} -pd-lib vsnapshot~ {audio glue pd-lib} -pd-lib wrap~ {audio math pd-lib} -pd-lib writesf~ {audio glue pd-lib} -pddp +pager {pddp unsorted} -pddp dsp {pddp unsorted} -pddp open {pddp unsorted} -pddp print {pddp unsorted} -pddp print_long {pddp unsorted} -pdjimmies zerocross~ {audio glue pdjimmies} -pdjimmies zscale {math pdjimmies} -{pdmtl abstractions} 2d.angle {2d abstraction edit math pdmtl} -{pdmtl abstractions} 2d.angle.line {2d abstraction edit math pdmtl} -{pdmtl abstractions} 2d.distance {2d abstraction edit math pdmtl} -{pdmtl abstractions} 2d.ratio {2d abstraction edit math pdmtl} -{pdmtl abstractions} 3d.distance {3d abstraction edit math pdmtl} -{pdmtl abstractions} 3d.pan.tilt {3d abstraction edit math pdmtl} -{pdmtl abstractions} anal.center {abstraction anal edit misc pdmtl} -{pdmtl abstractions} anal.change~ {abstraction anal edit misc pdmtl} -{pdmtl abstractions} anal.scope_~ {abstraction anal edit misc pdmtl} -{pdmtl abstractions} anal.sig_~ {abstraction anal edit misc pdmtl} -{pdmtl abstractions} anal.sign {abstraction anal edit misc pdmtl} -{pdmtl abstractions} anal.spectrum_~ {abstraction anal edit misc pdmtl} -{pdmtl abstractions} anal.vu_~ {abstraction anal edit misc pdmtl} -{pdmtl abstractions} convert.2list {abstraction control convert edit list pdmtl wrapper} -{pdmtl abstractions} convert.ascii2pd {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.binary2byte {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.bpm2freq {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.bpm2ms {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.byte2binary {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.degree2radiant {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.fps2ms {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.frames2smpte {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.hex2dec {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.hsv2rgb {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.int2digits {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.lightfreq2wave {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.lightwave2freq {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.list2symbol {abstraction control convert edit list2symbol pdmtl wrapper zexy} -{pdmtl abstractions} convert.m2speed {abstraction control convert edit midi note pdmtl} -{pdmtl abstractions} convert.ms2bpm {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.ms2fps {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.ms2freq {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.ms2smp {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.ms2time {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.num2rgb {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.pd2ascii {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.rgb2hsv {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.rgb2num {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.sig2float~ {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.smp2bpm {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.smp2freq {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.smp2mem {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.smp2ms {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.smp2time {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.smpte2frames {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.sound.freq2wave {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.sound.wave2freq {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.spaces2 {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.speed2m {abstraction control convert edit midi note pdmtl} -{pdmtl abstractions} convert.symbol2chars {abstraction control convert edit pdmtl} -{pdmtl abstractions} convert.symbol2list {abstraction control convert edit iem pdmtl splitfilename symbol2list wrapper zexy} -{pdmtl abstractions} convert.time2ms {abstraction control convert edit pdmtl} -{pdmtl abstractions} count.accum {abstraction accum control count edit pdmtl} -{pdmtl abstractions} count.iter {abstraction control count edit pdmtl} -{pdmtl abstractions} count.modulo {abstraction control count edit pdmtl} -{pdmtl abstractions} count.timed {abstraction control count edit pdmtl} -{pdmtl abstractions} count.up&down {abstraction control count edit pdmtl} -{pdmtl abstractions} data.floats {abstraction data edit pdmtl storage} -{pdmtl abstractions} data.matrix {abstraction data edit pdmtl storage} -{pdmtl abstractions} data.save.msg {abstraction data edit pdmtl storage} -{pdmtl abstractions} file.audio.info {abstraction edit file pdmtl soundfile_info storage wrapper} -{pdmtl abstractions} file.browser_ {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.folder {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.folder.dump {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.folder.panel {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.open.msg {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.path.current {absolute abstraction edit file path pdmtl relative storage} -{pdmtl abstractions} file.path.explode {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.path.merge {abstraction edit file iemlib mergefilename pdmtl storage wrapper} -{pdmtl abstractions} file.path.parent {absolute abstraction edit file path pdmtl relative storage} -{pdmtl abstractions} file.path.split {abstraction edit file pdmtl split_path storage wrapper} -{pdmtl abstractions} file.path.split.extension {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.path.top {absolute abstraction edit file path pdmtl relative storage} -{pdmtl abstractions} file.path.type {abstraction edit file pdmtl storage} -{pdmtl abstractions} file.type {abstraction edit file pdmtl storage} -{pdmtl abstractions} flow.@parse {abstraction control dollarg edit flow pdmtl} -{pdmtl abstractions} flow.any {abstraction control edit flow iem iem_anything pdmtl wrapper} -{pdmtl abstractions} flow.ford {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.gun {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.hold~ {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.in.betweens {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.iter {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.once {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.pre.op {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.prepend {abstraction argument conditional control edit flow list pdmtl prepend type wrapper} -{pdmtl abstractions} flow.receive {abstraction control deprecated edit flow pdmtl} -{pdmtl abstractions} flow.send {abstraction control deprecated edit flow pdmtl} -{pdmtl abstractions} flow.smooth {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.smooth~ {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.speed.fixed {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.speed.limit {abstraction control edit flow limit pdmtl speed} -{pdmtl abstractions} flow.split {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.till.done {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.value.change {abstraction control edit flow pdmtl} -{pdmtl abstractions} flow.wrap~ {abstraction control edit flow pdmtl} -{pdmtl abstractions} fx.biquad.reverb~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.body.resonance~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.cm.reverb~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.delay~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.dist~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.echo~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.eq_~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.gain~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.gate.noise_~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.gate.noise~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.limiter~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.material~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} fx.punch~ {abstraction audio edit fx pdmtl} -{pdmtl abstractions} gems.alpha.mode {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.bars.ntsc {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.color.offset {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.curve.n {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.depth {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.duplicate {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.fit {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.fit.scale {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.get.average.color {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.gl.def {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.glsl.shader {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.i.circle {abstraction edit gems gems.win imaging osxbug pdmtl} -{pdmtl abstractions} gems.images {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.layer {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.light {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.loop {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.mixmode {abstraction deprecated edit gems imaging pdmtl} -{pdmtl abstractions} gems.mouse {abstraction edit gems imaging mouse pdmtl wrapper} -{pdmtl abstractions} gems.movies {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.movies2 {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.multi.crop {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.multi.cube {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.polygon.n {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.scope.geos~ {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.scope~ {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.sobel {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.text {@rguments abstraction edit gem gems imaging pdmtl text3d wrapper} -{pdmtl abstractions} gems.vu~ {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.win {@rguments abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gems.win.feedback {abstraction edit gems imaging pdmtl} -{pdmtl abstractions} gui.browser {abstraction edit gui internal pdmtl} -{pdmtl abstractions} gui.button.color {abstraction edit gui pdmtl} -{pdmtl abstractions} gui.label {abstraction edit gui pdmtl} -{pdmtl abstractions} {gui.popup } {abstraction edit gui pdmtl} -{pdmtl abstractions} init.check.unique {abstraction control edit init pdmtl} -{pdmtl abstractions} init.df {abstraction control edit init pdmtl} -{pdmtl abstractions} init.dollar.zero.top {abstraction control edit init pdmtl} -{pdmtl abstractions} init.ds {abstraction control edit init pdmtl} -{pdmtl abstractions} init.lb {abstraction control edit init pdmtl} -{pdmtl abstractions} init.ldf {abstraction control edit init pdmtl} -{pdmtl abstractions} init.lf {abstraction control edit init pdmtl} -{pdmtl abstractions} init.ls {abstraction control edit init pdmtl} -{pdmtl abstractions} init.post.dollarg {abstraction control edit flow.@parse init pdmtl} -{pdmtl abstractions} input.color.grid_ {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.double.click {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.grid_ {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.hsv_ {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.key.name.learn {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.key.r {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.key.text {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.min.max_ {abstraction edit gui input pdmtl} -{pdmtl abstractions} input.piano_ {@rguments abstraction edit gop gui input pdmtl} -{pdmtl abstractions} list.abs {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.avg {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.bool2pos {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.build {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.cog {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.concatenate {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.contains {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.cut.up {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.cycle {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.delay {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.delete {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.element {abstraction edit list negative packel pdmtl storage wrapper zexy} -{pdmtl abstractions} list.for.each {abstraction alias edit list list.op pdmtl storage} -{pdmtl abstractions} list.last.x {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.length {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.make {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.min.max {abstraction edit list minmax pdmtl storage wrapper zexy} -{pdmtl abstractions} list.op {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.op2 {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.q {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.q.man {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.repack.indexed {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.repetitions.count {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.repetitions.remove {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.reverse {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.speed.limit {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.split {abstraction edit list pdmtl storage} -{pdmtl abstractions} list.sum {abstraction edit list pdmtl storage sum wrapper zexy} -{pdmtl abstractions} list.trim {abstraction edit list pdmtl storage trim wrapper} -{pdmtl abstractions} list.unfold {abstraction drip edit list pdmtl storage wrapper zexy} -{pdmtl abstractions} {list.wait } {abstraction edit list pdmtl storage} -{pdmtl abstractions} math.f.mod {abstraction edit math pdmtl} -{pdmtl abstractions} math.power.of {abstraction edit math pdmtl} -{pdmtl abstractions} midi.chord.guess {abstraction connectivity edit midi pdmtl} -{pdmtl abstractions} midi.note.close {abstraction connectivity edit float midi monophonic pdmtl trigger} -{pdmtl abstractions} midi.note.split {abstraction connectivity edit midi pdmtl} -{pdmtl abstractions} mix.crossfade.stereo~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.crossfade~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.fade~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.nop~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.out_~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.pan.stereo~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.pan~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.switch.nice {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.switch.nice~ {abstraction audio edit mix pdmtl} -{pdmtl abstractions} mix.wet.stereo~ {abstraction audio edit internal mix pdmtl} -{pdmtl abstractions} mix.wet~ {abstraction audio edit internal mix pdmtl} -{pdmtl abstractions} musical.bars {abstraction pdmtl unsorted} -{pdmtl abstractions} musical.closest_note {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.closest.note {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.cycle5 {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.degree2chord {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.dodeca {abstraction audio edit musical note pdmtl serie} -{pdmtl abstractions} musical.fit {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.form {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.isosonic~ {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.m2harm {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.note.index {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.octava {abstraction audio edit musical pdmtl} -{pdmtl abstractions} musical.transpose {abstraction audio edit musical pdmtl} -{pdmtl abstractions} number.fibonacci {abstraction edit math number pdmtl} -{pdmtl abstractions} number.phi {abstraction edit math number pdmtl} -{pdmtl abstractions} number.pi {abstraction edit math number pdmtl} -{pdmtl abstractions} number.prime {abstraction edit math number pdmtl} -{pdmtl abstractions} number.round {abstraction edit math number pdmtl} -{pdmtl abstractions} random.delay {abstraction edit math pdmtl random} -{pdmtl abstractions} random.drunk {abstraction edit math pdmtl random} -{pdmtl abstractions} random.f {abstraction edit math pdmtl random} -{pdmtl abstractions} random.integer {abstraction edit math pdmtl random} -{pdmtl abstractions} random.markov.chain {abstraction edit math pdmtl random} -{pdmtl abstractions} random.offset {abstraction edit math pdmtl random} -{pdmtl abstractions} sample.adsr {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.adsr_ {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.bank {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.bounds {abstraction audio edit pdmtl sample sample_id} -{pdmtl abstractions} sample.bounds_ {abstraction audio edit gui pdmtl sample sample_id} -{pdmtl abstractions} sample.display_ {abstraction audio edit gui pdmtl sample sample_id} -{pdmtl abstractions} sample.drum.machine~ {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.filer {abstraction audio edit pdmtl sample sample_id} -{pdmtl abstractions} sample.generator {abstraction audio edit internal pdmtl sample sample_id} -{pdmtl abstractions} sample.groove.poly~ {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.groove~ {abstraction audio edit pdmtl sample sample_id wrapper xgroove~ xsample} -{pdmtl abstractions} sample.handler {abstraction audio edit internal pdmtl sample sample_id} -{pdmtl abstractions} sample.particular~ {abstraction audio edit pdmtl sample sample_id} -{pdmtl abstractions} sample.pitch {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.pitch_ {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.play~ {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.print {abstraction audio edit pdmtl sample sample_id} -{pdmtl abstractions} sample.r {abstraction audio edit pdmtl sample} -{pdmtl abstractions} sample.record~ {abstraction audio cyclone edit pdmtl record~ sample sample_id wrapper} -{pdmtl abstractions} sample.table {abstraction audio edit pdmtl sample} -{pdmtl abstractions} scale.3point {abstraction control edit pdmtl scale} -{pdmtl abstractions} scale.adaptive {abstraction control edit pdmtl scale} -{pdmtl abstractions} scale.linear {abstraction control edit pdmtl scale} -{pdmtl abstractions} scale.loga {abstraction control edit pdmtl scale} -{pdmtl abstractions} scale.symbol {abstraction control edit pdmtl scale} -{pdmtl abstractions} seq.8x8_ {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.biorythm~ {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.chords {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.every {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.liner {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.markov.machine {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.qtrack {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.tgl8_ {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.timing.master {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.timing.slave {abstraction control edit pdmtl seq} -{pdmtl abstractions} seq.tracker4 {abstraction control edit pdmtl seq} -{pdmtl abstractions} synth.additive12~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.adsr~ {abstraction audio edit midi.note.close pdmtl synth} -{pdmtl abstractions} synth.applause~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.beep~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.bell~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.blip~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.clap~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.colored.noise~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.crackles~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.cranks~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.creator~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.drips~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.dtmf.busy~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.dtmf.hand-up~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.dtmf.hurry.up~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.dtmf.number~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.dtmf.ring~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.frying~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.gun.gas~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.gun.shot~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.hissing~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.lightning~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.low.rumble~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.old.record~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.osc.square.pwm~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.rain~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.simple.osc~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.simple.phasor~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.switch~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} synth.wind~ {abstraction audio edit pdmtl synth} -{pdmtl abstractions} table.play~ {abstraction edit pdmtl storage table} -{pdmtl abstractions} table.read2 {abstraction edit pdmtl storage table} -{pdmtl abstractions} table.size {abstraction edit pdmtl storage table} -{pdmtl abstractions} table.write.next {abstraction edit pdmtl storage table} -{pdmtl abstractions} timing.chronometer {abstraction control edit pdmtl timing} -{pdmtl abstractions} timing.clocker {abstraction control edit pdmtl timing} -{pdmtl abstractions} timing.cues~ {abstraction control edit pdmtl timing} -{pdmtl abstractions} timing.curve~ {abstraction control curve~ cyclone edit pdmtl timing wrapper} -{pdmtl abstractions} timing.line~ {abstraction control edit pdmtl timing} -{pdmtl abstractions} timing.shuffled {abstraction control edit pdmtl timing} -{pdmtl abstractions} timing.tempo {abstraction control edit max pdmtl tempo timing} -{pdmtl abstractions} timing.tempo_ {abstraction control edit pdmtl timing} -pdogg oggamp~ {pdogg unsorted} -pdogg oggcast~ {pdogg unsorted} -pdogg oggread~ {pdogg unsorted} -pdogg oggwrite~ {pdogg unsorted} -pdp 3dp_blend {3d abstraction imaging opengl pdp} -pdp 3dp_dlist {3d imaging opengl pdp} -pdp 3dp_draw {3d imaging opengl pdp} -pdp 3dp_light {3d imaging opengl pdp} -pdp 3dp_mode {3d imaging opengl pdp} -pdp 3dp_mouserotate {3d abstraction imaging opengl pdp} -pdp 3dp_push {3d imaging opengl pdp} -pdp 3dp_snap {3d imaging opengl pdp} -pdp 3dp_toggle {3d imaging opengl pdp} -pdp 3dp_view {3d imaging opengl pdp} -pdp 3dp_windowcontext {3d imaging opengl pdp} -pdp pdp_abs {image imaging pdp processing} -pdp pdp_add {image imaging pdp processing} -pdp pdp_agc {abstraction image imaging pdp} -pdp pdp_alledge {abstraction image imaging pdp} -pdp pdp_and {image imaging pdp processing} -pdp pdp_bitdepth {image imaging pdp processing} -pdp pdp_bitmask {image imaging pdp processing} -pdp pdp_blur {abstraction image imaging pdp} -pdp pdp_blur_hor {abstraction image imaging pdp} -pdp pdp_blur_ver {abstraction image imaging pdp} -pdp pdp_bq {image imaging pdp processing} -pdp pdp_bqt {image imaging pdp processing} -pdp pdp_ca {automata cellular imaging libraries pdp pdp_scaf seperate} -pdp pdp_ca2image {automata cellular imaging libraries pdp pdp_scaf seperate} -pdp pdp_cheby {image imaging pdp processing} -pdp pdp_chrot {image imaging pdp processing} -pdp pdp_cog {image imaging pdp processing} -pdp pdp_constant {image imaging pdp processing} -pdp pdp_contrast {abstraction image imaging pdp} -pdp pdp_conv {image imaging pdp processing} -pdp pdp_conv_emboss {abstraction image imaging pdp} -pdp pdp_conv_sobel_edge {abstraction image imaging pdp} -pdp pdp_conv_sobel_hor {abstraction image imaging pdp} -pdp pdp_conv_sobel_ver {abstraction image imaging pdp} -pdp pdp_convert {imaging misc pdp} -pdp pdp_del {imaging misc pdp} -pdp pdp_description {imaging misc pdp} -pdp pdp_dither {abstraction image imaging pdp} -pdp pdp_flip_lr {image imaging pdp processing} -pdp pdp_flip_tb {image imaging pdp processing} -pdp pdp_gain3 {abstraction image imaging pdp} -pdp pdp_glx {i/o image imaging pdp} -pdp pdp_gradient {abstraction image imaging pdp} -pdp pdp_grey {image imaging pdp processing} -pdp pdp_grey2mask {image imaging pdp processing} -pdp pdp_hthresh {image imaging pdp processing} -pdp pdp_image2ca {automata cellular imaging libraries pdp pdp_scaf seperate} -pdp pdp_invert {abstraction image imaging pdp} -pdp pdp_loop {imaging misc pdp} -pdp pdp_m_+=mm {imaging matrix pdp} -pdp pdp_m_inverse {abstraction imaging matrix pdp} -pdp pdp_m_LU {imaging matrix pdp} -pdp pdp_m_LU_inverse {imaging matrix pdp} -pdp pdp_m_LU_solve {imaging matrix pdp} -pdp pdp_m_mm {imaging matrix pdp} -pdp pdp_m_mv {imaging matrix pdp} -pdp pdp_mix {image imaging pdp processing} -pdp pdp_mix2 {image imaging pdp processing} -pdp pdp_motion_blur {abstraction image imaging pdp} -pdp pdp_motion_phase {abstraction image imaging pdp} -pdp pdp_mul {image imaging pdp processing} -pdp pdp_noise {image imaging pdp processing} -pdp pdp_not {image imaging pdp processing} -pdp pdp_offset {abstraction image imaging pdp} -pdp pdp_or {image imaging pdp processing} -pdp pdp_phase {abstraction image imaging pdp} -pdp pdp_phase_hor {abstraction image imaging pdp} -pdp pdp_phase_ver {abstraction image imaging pdp} -pdp pdp_plasma {image imaging pdp processing} -pdp pdp_png_to {abstraction image imaging pdp} -pdp pdp_pointcloud {image imaging pdp processing} -pdp pdp_positive {image imaging pdp processing} -pdp pdp_pps {abstraction imaging pdp utility} -pdp pdp_qt {i/o image imaging pdp} -pdp pdp_randmix {image imaging pdp processing} -pdp pdp_reg {imaging misc pdp} -pdp pdp_rotate {image imaging pdp processing} -pdp pdp_route {imaging misc pdp} -pdp pdp_saturation {abstraction image imaging pdp} -pdp pdp_scale {image imaging pdp processing} -pdp pdp_scan~ {dsp imaging pdp} -pdp pdp_scanxy~ {dsp imaging pdp} -pdp pdp_scope~ {dsp imaging pdp} -pdp pdp_sign {image imaging pdp processing} -pdp pdp_snap {imaging misc pdp} -pdp pdp_sthresh {image imaging pdp processing} -pdp pdp_sub {abstraction image imaging pdp} -pdp pdp_tag {abstraction image imaging pdp} -pdp pdp_trigger {imaging misc pdp} -pdp pdp_v4l {i/o image imaging pdp} -pdp pdp_xor {image imaging pdp processing} -pdp pdp_xv {i/o image imaging pdp} -pdp pdp_zoom {image imaging pdp processing} -pdp pdp_zrot {image imaging pdp processing} -pdp pdp_zthresh {image imaging pdp processing} -Percolate bamboo~ {and audio oscillators percolate tables} -Percolate blotar~ {and audio oscillators percolate tables} -Percolate bowed~ {and audio oscillators percolate tables} -Percolate bowedbar~ {and audio oscillators percolate tables} -Percolate brass~ {and audio oscillators percolate tables} -Percolate cabasa~ {and audio oscillators percolate tables} -Percolate chase~ {and audio oscillators percolate tables} -Percolate dcblock~ {and audio oscillators percolate tables} -Percolate escalator~ {and audio oscillators percolate tables} -Percolate flute~ {and audio oscillators percolate tables} -Percolate formant~ {and audio oscillators percolate tables} -Percolate gq~ {and audio oscillators percolate tables} -Percolate guiro~ {and audio oscillators percolate tables} -Percolate morse {and audio oscillators percolate tables} -Percolate scrub~ {and audio oscillators percolate tables} -Percolate sleigh~ {and audio oscillators percolate tables} -Percolate vibraphone~ {and audio oscillators percolate tables} -pidip pdp_aging {effectv imaging pdp pidip} -pidip pdp_ascii {imaging pdp pidip} -pidip pdp_baltan {effectv imaging pdp pidip} -pidip pdp_binary {imaging morphology pdp pidip} -pidip pdp_canvas {imaging pdp pidip} -pidip pdp_capture {imaging pdp pidip} -pidip pdp_charcoal {imaging pdp pidip} -pidip pdp_cmap {imaging pdp pidip} -pidip pdp_colorgrid {imaging pdp pidip} -pidip pdp_compose {imaging pdp pidip} -pidip pdp_ctrack {imaging pdp pidip} -pidip pdp_cycle {effectv imaging pdp pidip} -pidip pdp_dice {effectv imaging pdp pidip} -pidip pdp_dilate {imaging morphology pdp pidip} -pidip pdp_disintegration {imaging pdp pidip} -pidip pdp_distance {imaging morphology pdp pidip} -pidip pdp_edge {effectv imaging pdp pidip} -pidip pdp_erode {imaging morphology pdp pidip} -pidip pdp_ffmpeg~ {imaging pdp pidip} -pidip pdp_form {imaging pdp pidip} -pidip pdp_hitandmiss {imaging morphology pdp pidip} -pidip pdp_i {imaging pdp pidip} -pidip pdp_imgloader {imaging pdp pidip} -pidip pdp_intrusion {effectv imaging pdp pidip} -pidip pdp_lens {effectv imaging pdp pidip} -pidip pdp_live~ {imaging pdp pidip} -pidip pdp_mgrid {imaging pdp pidip} -pidip pdp_mosaic {effectv imaging pdp pidip} -pidip pdp_mp4live~ {imaging pdp pidip} -pidip pdp_mp4player~ {imaging pdp pidip} -pidip pdp_nervous {effectv imaging pdp pidip} -pidip pdp_o {imaging pdp pidip} -pidip pdp_pen {imaging pdp pidip} -pidip pdp_puzzle {effectv imaging pdp pidip} -pidip pdp_qt {imaging pdp pidip} -pidip pdp_qt {imaging pdp pidip} -pidip pdp_qt~ {imaging pdp pidip} -pidip pdp_quark {effectv imaging pdp pidip} -pidip pdp_radioactiv {effectv imaging pdp pidip} -pidip pdp_rec~ {imaging pdp pidip} -pidip pdp_rev {effectv imaging pdp pidip} -pidip pdp_ripple {effectv imaging pdp pidip} -pidip pdp_shagadelic {effectv imaging pdp pidip} -pidip pdp_shape {imaging pdp pidip} -pidip pdp_simura {effectv imaging pdp pidip} -pidip pdp_spigot {imaging pdp pidip} -pidip pdp_spiral {effectv imaging pdp pidip} -pidip pdp_spotlight {imaging pdp pidip} -pidip pdp_text {imaging pdp pidip} -pidip pdp_theorin~ {imaging pdp pidip} -pidip pdp_theorout~ {imaging pdp pidip} -pidip pdp_transform {effectv imaging pdp pidip} -pidip pdp_transition {imaging pdp pidip} -pidip pdp_underwatch {effectv imaging pdp pidip} -pidip pdp_vertigo {effectv imaging pdp pidip} -pidip pdp_warhol {effectv imaging pdp pidip} -pidip pdp_warp {effectv imaging pdp pidip} -pidip pdp_yqt {imaging pdp pidip} -pixeltango pt.animate {pixeltango unsorted} -pixeltango pt.entry {pixeltango unsorted} -pixeltango pt.fader {pixeltango unsorted} -pixeltango pt.feedback {pixeltango unsorted} -pixeltango pt.file {pixeltango unsorted} -pixeltango pt.filelist {pixeltango unsorted} -pixeltango pt.interp {pixeltango unsorted} -pixeltango pt.layer {pixeltango unsorted} -pixeltango pt.layerfx {pixeltango unsorted} -pixeltango pt.light {pixeltango unsorted} -pixeltango pt.live {pixeltango unsorted} -pixeltango pt.loop {pixeltango unsorted} -pixeltango pt.model {pixeltango unsorted} -pixeltango pt.presets {pixeltango unsorted} -pixeltango pt.rotate {pixeltango unsorted} -pixeltango pt.scale {pixeltango unsorted} -pixeltango pt.source {pixeltango unsorted} -pixeltango pt.squeeze {pixeltango unsorted} -pixeltango pt.text {pixeltango unsorted} -pixeltango pt.translate {pixeltango unsorted} -pixeltango pt.video {pixeltango unsorted} -pixeltango pt.whatcolour {pixeltango unsorted} -pixeltango pt.window {pixeltango unsorted} -pmpd iAmbient2D {modelling physical pmpd} -pmpd iAmbient3D {modelling physical pmpd} -pmpd iCircle2D {modelling physical pmpd} -pmpd iCircle3D {modelling physical pmpd} -pmpd iCylinder3D {modelling physical pmpd} -pmpd iLine2D {modelling physical pmpd} -pmpd iPlane3D {modelling physical pmpd} -pmpd iSeg2D {modelling physical pmpd} -pmpd iSphere3D {modelling physical pmpd} -pmpd link {modelling physical pmpd} -pmpd link2D {modelling physical pmpd} -pmpd link3D {modelling physical pmpd} -pmpd mass {modelling physical pmpd} -pmpd mass2D {modelling physical pmpd} -pmpd mass3D {modelling physical pmpd} -pmpd pmpd {modelling physical pmpd} -pmpd tCircle2D {modelling physical pmpd} -pmpd tCircle3D {modelling physical pmpd} -pmpd tCube3D {modelling physical pmpd} -pmpd tCylinder3D {modelling physical pmpd} -pmpd tLine2D {modelling physical pmpd} -pmpd tLink2D {modelling physical pmpd} -pmpd tLink3D {modelling physical pmpd} -pmpd tPlane3D {modelling physical pmpd} -pmpd tSeg2D {modelling physical pmpd} -pmpd tSphere3D {modelling physical pmpd} -pmpd tSquare2D {modelling physical pmpd} -rradical memento {rradical unsorted} -rradical OSCprepend {rradical unsorted} -rradical rrad.chorus~ {audio rradical} -rradical rrad.evo33 {rradical unsorted} -rradical rrad.evo33b {rradical unsorted} -rradical rrad.nseq {rradical unsorted} -rradical rrad.pattseq {rradical unsorted} -rradical rrad.scale {rradical unsorted} -rradical rrad.split~ {audio rradical} -rtc 16step-seq {rtc unsorted} -rtc alea-rhythm {rtc unsorted} -rtc anti-interval {rtc unsorted} -rtc anti-octave {rtc unsorted} -rtc anti-octave&prime {rtc unsorted} -rtc anti-osc {rtc unsorted} -rtc between-lin {rtc unsorted} -rtc between-log {rtc unsorted} -rtc between-variations {rtc unsorted} -rtc brown-melody {rtc unsorted} -rtc brown-rhythm {rtc unsorted} -rtc brownian {rtc unsorted} -rtc butfirst {rtc unsorted} -rtc butlast {rtc unsorted} -rtc check-octaves {rtc unsorted} -rtc check-row {rtc unsorted} -rtc choice-rhythm {rtc unsorted} -rtc choose {rtc unsorted} -rtc choose-intervals {rtc unsorted} -rtc count-bang {rtc unsorted} -rtc cp-pan~ {rtc unsorted} -rtc cresc-decresc {rtc unsorted} -rtc crossfade~ {rtc unsorted} -rtc ED-rhythm {rtc unsorted} -rtc ED-trans {rtc unsorted} -rtc ED2EP {rtc unsorted} -rtc first {rtc unsorted} -rtc frq2note {rtc unsorted} -rtc geom {rtc unsorted} -rtc grid-rhythm {rtc unsorted} -rtc group-rhythm {rtc unsorted} -rtc group-rhythm2 {rtc unsorted} -rtc groups {rtc unsorted} -rtc infinity-row {rtc unsorted} -rtc int-or-float {rtc unsorted} -rtc intv2ratio {rtc unsorted} -rtc last {rtc unsorted} -rtc line2 {rtc unsorted} -rtc Lround {rtc unsorted} -rtc make-choice-list {rtc unsorted} -rtc make-ED-scale {rtc unsorted} -rtc make-scale {rtc unsorted} -rtc make-trans-scale {rtc unsorted} -rtc markov {rtc unsorted} -rtc markov-harmony {rtc unsorted} -rtc markov-rhythm {rtc unsorted} -rtc matrix12 {rtc unsorted} -rtc metro-dev% {rtc unsorted} -rtc ms2sec {rtc unsorted} -rtc multiple {rtc unsorted} -rtc neutral-harmony {rtc unsorted} -rtc nname {rtc unsorted} -rtc normalize-row {rtc unsorted} -rtc note2cents {rtc unsorted} -rtc note2frq {rtc unsorted} -rtc note2pitch {rtc unsorted} -rtc note2st {rtc unsorted} -rtc panning {rtc unsorted} -rtc periodic {rtc unsorted} -rtc permutate-row {rtc unsorted} -rtc permute {rtc unsorted} -rtc pitch-from-intervals {rtc unsorted} -rtc pitch-from-row {rtc unsorted} -rtc pitch2note {rtc unsorted} -rtc play-samp~ {rtc unsorted} -rtc play2 {rtc unsorted} -rtc random-ramp {rtc unsorted} -rtc random-ramp-urn {rtc unsorted} -rtc random-row {rtc unsorted} -rtc ratio {rtc unsorted} -rtc ratio2intv {rtc unsorted} -rtc repchord-rhythm {rtc unsorted} -rtc repeat-ED {rtc unsorted} -rtc rit-acc {rtc unsorted} -rtc rota {rtc unsorted} -rtc rotate {rtc unsorted} -rtc row-modus {rtc unsorted} -rtc samp10~ {rtc unsorted} -rtc scale-changer {rtc unsorted} -rtc schweller {rtc unsorted} -rtc scramble {rtc unsorted} -rtc sel-princ {rtc unsorted} -rtc sequence {rtc unsorted} -rtc serial-rhythm {rtc unsorted} -rtc series {rtc unsorted} -rtc show-pitchclass {rtc unsorted} -rtc smooth-line {rtc unsorted} -rtc sneak {rtc unsorted} -rtc sneak-random {rtc unsorted} -rtc sneak-rhythm {rtc unsorted} -rtc sqrt-pan~ {rtc unsorted} -rtc st2pitch {rtc unsorted} -rtc super-rhythm {rtc unsorted} -rtc trans {rtc unsorted} -rtc trans-exp {rtc unsorted} -rtc trans-lin {rtc unsorted} -rtc trans-log {rtc unsorted} -rtc transp-pitch {rtc unsorted} -rtc transpose-row {rtc unsorted} -rtc urne {rtc unsorted} -rtc VolAmb {rtc unsorted} -rtc wave-rhythm {rtc unsorted} -rtc xrandom {rtc unsorted} -sigpack chop~ {audio generators sigpack} -sigpack decimate~ {audio generators sigpack} -sigpack diode~ {audio generators sigpack} -sigpack foldback~ {audio generators sigpack} -sigpack foldover~ {audio generators sigpack} -sigpack freqdiv~ {audio generators sigpack} -sigpack freqshift~ {audio generators sigpack} -sigpack harmgen~ {audio generators sigpack} -sigpack rectify~ {audio generators sigpack} -sigpack round~ {audio generators sigpack} -sigpack saturate~ {audio generators sigpack} -sigpack sieve~ {audio generators sigpack} -sigpack split~ {audio generators sigpack} -sigpack ustep~ {audio generators sigpack} -sigpack vowel~ {audio generators sigpack} -smlib bp {smlib unsorted} -smlib deltas {smlib unsorted} -smlib hip {smlib unsorted} -smlib hist {smlib unsorted} -smlib itov {smlib unsorted} -smlib lavg {smlib unsorted} -smlib lhist {smlib unsorted} -smlib lhisti {smlib unsorted} -smlib linspace {smlib unsorted} -smlib lmax {smlib unsorted} -smlib lmin {smlib unsorted} -smlib lrange {smlib unsorted} -smlib prevl {smlib unsorted} -smlib threshold {smlib unsorted} -smlib vabs {smlib unsorted} -smlib vclip {smlib unsorted} -smlib vcog {smlib unsorted} -smlib vdbtorms {smlib unsorted} -smlib vdelta {smlib unsorted} -smlib vfmod {smlib unsorted} -smlib vftom {smlib unsorted} -smlib vlavg {smlib unsorted} -smlib vlmax {smlib unsorted} -smlib vlmin {smlib unsorted} -smlib vmax {smlib unsorted} -smlib vmin {smlib unsorted} -smlib vmtof {smlib unsorted} -smlib vpow {smlib unsorted} -smlib vrms {smlib unsorted} -smlib vrmstodb {smlib unsorted} -smlib vstd {smlib unsorted} -smlib vsum {smlib unsorted} -smlib vv- {smlib unsorted} -smlib vv+ {smlib unsorted} -smlib vvconv {smlib unsorted} -toxy tot {gui toxy} -unauthorized audience~ {unauthorized unsorted} -unauthorized beatify~ {unauthorized unsorted} -unauthorized blinkenlights {unauthorized unsorted} -unauthorized compressor~ {unauthorized unsorted} -unauthorized cooled~ {unauthorized unsorted} -unauthorized countund {unauthorized unsorted} -unauthorized disto~ {unauthorized unsorted} -unauthorized exciter {unauthorized unsorted} -unauthorized filterbank~ {unauthorized unsorted} -unauthorized formant~ {unauthorized unsorted} -unauthorized graphic-mp3amp~ {audio encoding unauthorized} -unauthorized grid {gui unauthorized} -unauthorized mp3amp~ {audio encoding unauthorized} -unauthorized mp3cast~ {audio encoding unauthorized} -unauthorized mp3live~ {audio encoding unauthorized} -unauthorized mp3write~ {audio encoding unauthorized} -unauthorized pianoroll {gui unauthorized} -unauthorized probalizer {unauthorized unsorted} -unauthorized randomblock~ {unauthorized unsorted} -unauthorized samplebox~ {unauthorized unsorted} -unauthorized scratcher~ {unauthorized unsorted} -unauthorized sonogram~ {unauthorized unsorted} -unauthorized sonograph~ {unauthorized unsorted} -unauthorized speex~ {unauthorized unsorted} -unauthorized spigot~ {unauthorized unsorted} -unauthorized stkdrone~ {unauthorized unsorted} -unauthorized stksitar~ {unauthorized unsorted} -unauthorized vocoder~ {unauthorized unsorted} -unauthorized wahwah~ {unauthorized unsorted} -vasp vasp {declaration vasp} -vasp vasp.- {arithmetic vasp} -vasp vasp.-> {basics vasp} -vasp vasp.! {basics vasp} -vasp vasp.!- {arithmetic vasp} -vasp vasp.!/ {arithmetic vasp} -vasp vasp.!= {arithmetic vasp} -vasp vasp.!window {functions vasp window} -vasp vasp.? {basics vasp} -vasp vasp.?? {basics vasp} -vasp vasp.* {arithmetic vasp} -vasp vasp.*!window {functions vasp window} -vasp vasp.*cosc {generators vasp} -vasp vasp.*osc {generators vasp} -vasp vasp.*phasor {generators vasp} -vasp vasp.*window {functions vasp window} -vasp vasp.*xwindow {functions vasp window} -vasp vasp./ {arithmetic vasp} -vasp vasp.% {arithmetic vasp} -vasp vasp.+ {arithmetic vasp} -vasp vasp.< {arithmetic vasp} -vasp vasp.<= {arithmetic vasp} -vasp vasp.= {arithmetic vasp} -vasp vasp.== {arithmetic vasp} -vasp vasp.> {arithmetic vasp} -vasp vasp.>= {arithmetic vasp} -vasp vasp.a< {arithmetic vasp} -vasp vasp.a<= {arithmetic vasp} -vasp vasp.a> {arithmetic vasp} -vasp vasp.a>= {arithmetic vasp} -vasp vasp.abs {arithmetic vasp} -vasp vasp.amax? {minmax vasp} -vasp vasp.amin? {minmax vasp} -vasp vasp.c- {arithmetic vasp} -vasp vasp.c-> {basics vasp} -vasp vasp.c!- {arithmetic vasp} -vasp vasp.c!/ {arithmetic vasp} -vasp vasp.c!fft {fft objects vasp} -vasp vasp.c* {arithmetic vasp} -vasp vasp.c/ {arithmetic vasp} -vasp vasp.c+ {arithmetic vasp} -vasp vasp.c= {arithmetic vasp} -vasp vasp.cconj {arithmetic vasp} -vasp vasp.cfft {fft objects vasp} -vasp vasp.channel {declaration vasp} -vasp vasp.channel? {declaration vasp} -vasp vasp.check {basics vasp} -vasp vasp.cnoise {generators vasp} -vasp vasp.cnorm {utilities vasp} -vasp vasp.cosc {generators vasp} -vasp vasp.cpowi {transcendent vasp} -vasp vasp.csqr {transcendent vasp} -vasp vasp.dif {arithmetic vasp} -vasp vasp.exp {transcendent vasp} -vasp vasp.fhp {filters vasp} -vasp vasp.fi {utilities vasp} -vasp vasp.flp {filters vasp} -vasp vasp.frames {declaration vasp} -vasp vasp.frames? {declaration vasp} -vasp vasp.frames* {declaration vasp} -vasp vasp.frames/ {declaration vasp} -vasp vasp.frames+ {declaration vasp} -vasp vasp.frames= {declaration vasp} -vasp vasp.gate {utilities vasp} -vasp vasp.gather {basics vasp} -vasp vasp.int {arithmetic vasp} -vasp {vasp.join 2} {basics vasp} -vasp vasp.log {transcendent vasp} -vasp vasp.max {minmax vasp} -vasp vasp.max? {minmax vasp} -vasp vasp.min {minmax vasp} -vasp vasp.min? {minmax vasp} -vasp vasp.minmax? {minmax vasp} -vasp vasp.mirr {displace vasp} -vasp vasp.multi {basics vasp} -vasp vasp.noise {generators vasp} -vasp vasp.offset {declaration vasp} -vasp vasp.offset? {declaration vasp} -vasp vasp.offset+ {declaration vasp} -vasp vasp.offset= {declaration vasp} -vasp vasp.opt {utilities vasp} -vasp vasp.osc {generators vasp} -vasp vasp.part {basics vasp} -vasp vasp.peaks {filters vasp} -vasp vasp.phasor {generators vasp} -vasp vasp.polar {fft objects vasp} -vasp vasp.pow {transcendent vasp} -vasp vasp.pwrap {utilities vasp} -vasp vasp.r!fft {fft objects vasp} -vasp vasp.r+ {arithmetic vasp} -vasp vasp.radio {utilities vasp} -vasp vasp.rect {fft objects vasp} -vasp vasp.rfft {fft objects vasp} -vasp vasp.rgate {utilities vasp} -vasp vasp.rmax {minmax vasp} -vasp vasp.rmax? {minmax vasp} -vasp vasp.rmin {minmax vasp} -vasp vasp.rmin? {minmax vasp} -vasp vasp.ropt {utilities vasp} -vasp vasp.rot {displace vasp} -vasp vasp.rpeaks {filters vasp} -vasp vasp.rpow {transcendent vasp} -vasp vasp.rvalleys {filters vasp} -vasp vasp.shift {displace vasp} -vasp vasp.sign {arithmetic vasp} -vasp vasp.size {declaration vasp} -vasp vasp.size? {declaration vasp} -vasp vasp.size* {declaration vasp} -vasp vasp.size/ {declaration vasp} -vasp vasp.size+ {declaration vasp} -vasp vasp.spit {basics vasp} -vasp {vasp.split 2} {basics vasp} -vasp vasp.sqr {transcendent vasp} -vasp vasp.sqrt {transcendent vasp} -vasp vasp.ssqr {transcendent vasp} -vasp vasp.ssqrt {transcendent vasp} -vasp vasp.sum? {arithmetic vasp} -vasp vasp.sync {basics vasp} -vasp vasp.tilt {displace vasp} -vasp vasp.update {basics vasp} -vasp vasp.valleys {filters vasp} -vasp vasp.vector {declaration vasp} -vasp vasp.vectors? {declaration vasp} -vasp vasp.window {functions vasp window} -vasp vasp.xmirr {displace vasp} -vasp vasp.xrot {displace vasp} -vasp vasp.xshift {displace vasp} -vasp vasp.xtilt {displace vasp} -vasp vasp.xwindow {functions vasp window} -xsample xgroove~ {and audio oscillators tables xsample} -xsample xplay~ {and audio oscillators tables xsample} -xsample xrecord~ {and audio oscillators tables xsample} -zexy . {math zexy} -zexy &&~ {audio binops logical operators zexy} -zexy <~ {audio binops logical operators zexy} -zexy ==~ {audio binops logical operators zexy} -zexy >~ {audio binops logical operators zexy} -zexy ||~ {audio binops logical operators zexy} -zexy abs~ {audio math zexy} -zexy any2list {control glue zexy} -zexy atoi {control glue zexy} -zexy avg~ {analysis audio zexy} -zexy blockmirror~ {audio processing zexy} -zexy blockswap~ {audio processing zexy} -zexy date {control glue zexy} -zexy deg2rad {math zexy} -zexy demultiplex {control glue zexy} -zexy demultiplex~ {audio misc zexy} -zexy dfreq~ {analysis audio zexy} -zexy dirac~ {audio generators zexy} -zexy drip {control glue zexy} -zexy envrms~ {analysis audio zexy} -zexy glue {control glue zexy} -zexy index {control glue zexy} -zexy length {control glue zexy} -zexy limiter~ {audio processing zexy} -zexy list2int {control glue zexy} -zexy list2symbol {control glue zexy} -zexy lister {control glue zexy} -zexy lpt {control glue zexy} -zexy makesymbol {control glue zexy} -zexy matrix {matrix storage zexy} -zexy matrix~ {audio misc zexy} -zexy mavg {math zexy} -zexy minmax {math zexy} -zexy msgfile {control glue zexy} -zexy mtx_.* {matrix storage zexy} -zexy mtx_./ {matrix storage zexy} -zexy mtx_add {matrix storage zexy} -zexy mtx_check {matrix storage zexy} -zexy mtx_col {matrix storage zexy} -zexy mtx_diag {matrix storage zexy} -zexy mtx_diag {matrix storage zexy} -zexy mtx_diegg {matrix storage zexy} -zexy mtx_egg {matrix storage zexy} -zexy mtx_element {matrix storage zexy} -zexy mtx_eye {matrix storage zexy} -zexy mtx_inverse {matrix storage zexy} -zexy mtx_mean {matrix storage zexy} -zexy mtx_mul {matrix storage zexy} -zexy mtx_ones {matrix storage zexy} -zexy mtx_pivot {matrix storage zexy} -zexy mtx_print {matrix storage zexy} -zexy mtx_rand {matrix storage zexy} -zexy mtx_resize {matrix storage zexy} -zexy mtx_roll {matrix storage zexy} -zexy mtx_row {matrix storage zexy} -zexy mtx_scroll {matrix storage zexy} -zexy mtx_size {matrix storage zexy} -zexy mtx_sub {matrix storage zexy} -zexy mtx_trace {matrix storage zexy} -zexy mtx_transpose {matrix storage zexy} -zexy mtx_zeros {matrix storage zexy} -zexy multiline~ {audio misc zexy} -zexy multiplex~ {audio misc zexy} -zexy niagara {control glue zexy} -zexy noish~ {audio generators zexy} -zexy noisi~ {audio generators zexy} -zexy nop {control glue zexy} -zexy nop~ {audio misc zexy} -zexy operating_system {control glue zexy} -zexy pack~ {audio misc zexy} -zexy packel {control glue zexy} -zexy pdf~ {analysis audio zexy} -zexy pol2cart {math zexy} -zexy pol2sph {math zexy} -zexy prime {math zexy} -zexy quantize~ {audio processing zexy} -zexy rad2deg {math zexy} -zexy repack {control glue zexy} -zexy repeat {control glue zexy} -zexy segregate {control glue zexy} -zexy sfplay {audio in out zexy} -zexy sfrecord {audio in out zexy} -zexy sgn~ {audio math zexy} -zexy sigzero~ {analysis audio zexy} -zexy sort {math zexy} -zexy sph2cart {math zexy} -zexy sph2pol {math zexy} -zexy step~ {audio generators zexy} -zexy strcmp {control glue zexy} -zexy swap~ {audio processing zexy} -zexy symbol2list {control glue zexy} -zexy tabdump {control glue tables zexy} -zexy tabset {control glue tables zexy} -zexy tavg~ {analysis audio zexy} -zexy time {control glue zexy} -zexy unpack~ {audio misc zexy} -zexy urn {math zexy} -zexy wrap {math zexy} -zexy z~ {audio processing zexy} -{zexy Abstraction} cart2pol {abstraction math zexy} -{zexy Abstraction} cart2sph {abstraction math zexy} -{zexy Abstraction} deg2rad {abstraction math zexy} -{zexy Abstraction} mean {abstraction math zexy} diff --git a/scripts/guiplugins/quickbindings/quickbindings-plugin.tcl b/scripts/guiplugins/quickbindings/quickbindings-plugin.tcl deleted file mode 100644 index 8f6081a3720f902194bfc157999d10106ad628fa..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/quickbindings/quickbindings-plugin.tcl +++ /dev/null @@ -1,39 +0,0 @@ -# this is a rough attempt to bind keys to little snippets of patches. -# Currently, there are only three keys bound: o r s - -package require pd_connect ;# for pdsend - -namespace eval ::patch_by_key:: { - variable patches - array set patches {} -} - -proc ::patch_by_key::init {} { - variable patches - # map keys to patch snippets - set patches(o) "#X obj 1 2 osc~;" - set patches(r) "#X obj 1 2 r test;" - set patches(s) "#X obj 1 2 s test;" -} - -proc ::patch_by_key::key {tkcanvas key x y} { - pdtk_post "::patch_by_key::key $tkcanvas $key $x $y" - variable patches - set mytoplevel [winfo toplevel $tkcanvas] - - # make sure we have a mapping for the key before continuing - if {[lsearch -exact [array names patches] $key] == -1} {return} - # only do this for PatchWindows, not dialogs, pdwindow, etc. - if {[winfo class $mytoplevel] ne "PatchWindow"} {return} - # only do this if the canvas is in editmode - if {$::editmode($mytoplevel) != 1} {return} - - # regexp magic to replace #X with the current canvas name, and the - # (x,y) with the current mouse location - set x [$tkcanvas canvasx $x] - set y [$tkcanvas canvasy $y] - pdsend [regsub -- {#X (\S+) [0-9]+ [0-9]+} $patches($key) "$mytoplevel \\1 $x $y"] -} - -::patch_by_key::init -bind all <Key> "+::patch_by_key::key %W %K %x %y" diff --git a/scripts/guiplugins/simple_examples/LICENSE.txt b/scripts/guiplugins/simple_examples/LICENSE.txt deleted file mode 100644 index c9d8d7d84ab9c93a69e79c89fa7c8ac675d1565e..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/LICENSE.txt +++ /dev/null @@ -1,29 +0,0 @@ -This code has been put into the public domain - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: - i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); - iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and - vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - -4. Limitations and Disclaimers. - a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. - d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. - diff --git a/scripts/guiplugins/simple_examples/add_item_to_popup_menu-plugin.tcl b/scripts/guiplugins/simple_examples/add_item_to_popup_menu-plugin.tcl deleted file mode 100644 index 04ebd55ab97baa87d556470173a52f767e3029af..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/add_item_to_popup_menu-plugin.tcl +++ /dev/null @@ -1,6 +0,0 @@ - - -# for more info: http://tcl.tk/man/tcl8.5/TkCmd/menu.htm -.popup add separator -.popup add command -label "My Favorite Object" \ - -command {pdsend "$::focused_window obj $::popup_xcanvas $::popup_ycanvas osc~"} diff --git a/scripts/guiplugins/simple_examples/add_menubar_to_popup_menu-plugin.tcl b/scripts/guiplugins/simple_examples/add_menubar_to_popup_menu-plugin.tcl deleted file mode 100644 index ee8149bc761ea5f238af04c4302ffc9fdc3fdeba..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/add_menubar_to_popup_menu-plugin.tcl +++ /dev/null @@ -1,17 +0,0 @@ -# this scriptlet removes the menubars from all canvas windows. You could also -# create your own custom menu and add it to the canvas windows. - -# TODO ::pd_menus::update_window_menu expects to find ::patch_menubar not "" - -# on Mac OS X, no windows have menubars, so no need to remove for 'aqua' -if {$::windowingsystem ne "aqua"} { - set ::patch_menubar "" -} - -set menulist "file edit put find media window help" -.popup add separator -foreach mymenu $menulist { - .menubar.$mymenu clone .popup.$mymenu normal - .popup add cascade -label [_ [string totitle $mymenu]] \ - -menu .popup.$mymenu -} diff --git a/scripts/guiplugins/simple_examples/add_my_patches_to_media_menu-plugin.tcl b/scripts/guiplugins/simple_examples/add_my_patches_to_media_menu-plugin.tcl deleted file mode 100644 index bf9f3ab0a45f201ccae193a3d579bf5665f66524..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/add_my_patches_to_media_menu-plugin.tcl +++ /dev/null @@ -1,11 +0,0 @@ -# this script searches a folder for Pd patches, then adds them to the bottom -# of the Media menu for quick opening - -# you probably want to set this to something that makes sense for you: -set mypatch_dir ~/Documents/Pd - -.menubar.media add separator - -foreach filename [glob -directory $mypatch_dir -nocomplain -types {f} -- *.pd] { - .menubar.media add command -label [file tail $filename] -command "open_file $filename" -} diff --git a/scripts/guiplugins/simple_examples/clone_put_menu_into_popup_menu-plugin.tcl b/scripts/guiplugins/simple_examples/clone_put_menu_into_popup_menu-plugin.tcl deleted file mode 100644 index 0a1de7a34d7546b70e07df1953155f1d0750b0b0..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/clone_put_menu_into_popup_menu-plugin.tcl +++ /dev/null @@ -1,6 +0,0 @@ - - -# for more info: http://tcl.tk/man/tcl8.5/TkCmd/menu.htm -.menubar.put clone .popup.create normal -.popup insert 0 cascade -label [_ "Put"] -menu .popup.create -.popup.create configure -tearoff 1 diff --git a/scripts/guiplugins/simple_examples/editmode_look-plugin.tcl b/scripts/guiplugins/simple_examples/editmode_look-plugin.tcl deleted file mode 100644 index 669d03f165b3f96f110dec761ca746054c31c042..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/editmode_look-plugin.tcl +++ /dev/null @@ -1,33 +0,0 @@ -# this script makes it so that the cords are hidden when not in edit mode - -proc set_cords_by_editmode {mytoplevel} { - if {$mytoplevel eq ".pdwindow"} {return} - set tkcanvas [tkcanvas_name $mytoplevel] - if { ! [winfo exists $mytoplevel] } {return} - if {$::editmode($mytoplevel) == 1} { - $tkcanvas configure -background "#fff" - $tkcanvas itemconfigure graph -fill black - $tkcanvas itemconfigure array -fill black - $tkcanvas itemconfigure array -activefill blue - $tkcanvas itemconfigure label -fill black - $tkcanvas itemconfigure obj -fill black - $tkcanvas itemconfigure msg -activefill black - $tkcanvas itemconfigure atom -activefill black - $tkcanvas itemconfigure cord -fill black - $tkcanvas itemconfigure {inlet || outlet} -outline black - } else { - $tkcanvas configure -background white - $tkcanvas itemconfigure graph -fill magenta - $tkcanvas itemconfigure array -fill cyan - $tkcanvas itemconfigure array -activefill blue - $tkcanvas itemconfigure label -fill "#777777" - $tkcanvas itemconfigure obj -fill grey - $tkcanvas itemconfigure msg -activefill blue - $tkcanvas itemconfigure atom -activefill blue - $tkcanvas itemconfigure cord -fill grey - $tkcanvas itemconfigure {inlet || outlet} -outline white - $tkcanvas lower {inlet || outlet} - } -} - -bind all <<EditMode>> {+set_cords_by_editmode %W} diff --git a/scripts/guiplugins/simple_examples/font_doesnt_follow_focus-plugin.tcl b/scripts/guiplugins/simple_examples/font_doesnt_follow_focus-plugin.tcl deleted file mode 100644 index a822bd573903b559f507f1fdbe2a5df3f69b2799..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/font_doesnt_follow_focus-plugin.tcl +++ /dev/null @@ -1,11 +0,0 @@ -# this plugin disables the following of focused window by overriding a proc - -rename ::dialog_font::update_font_dialog {} -proc ::dialog_font::update_font_dialog {mytoplevel} { - variable canvaswindow - if {[winfo exists .font]} { - wm title .font [format [_ "%s Font"] [lookup_windowname $canvaswindow]] - } else { - set canvaswindow $mytoplevel - } -} diff --git a/scripts/guiplugins/simple_examples/global_editmode_0-plugin.tcl b/scripts/guiplugins/simple_examples/global_editmode_0-plugin.tcl deleted file mode 100644 index 98f7a6a1e9ad734011e0adccb022dfe714ff950d..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/global_editmode_0-plugin.tcl +++ /dev/null @@ -1,15 +0,0 @@ -# -# this plugin maps Ctrl-Shift-E (Cmd-Shift-E) to switch all open patches to -# Interact Mode (i.e. the opposite of Edit Mode) - -proc global_turn_off_editmode {} { - pdtk_post "$::pd_menus::accelerator-Shift-E: Turning off edit mode for all open windows" - foreach window [winfo children .] { - if {[winfo class $window] eq "PatchWindow"} { - pdsend "$window editmode 0" - } - } -} - -# the "E" needs to be upper case, otherwise it gets missed with the 'Shift' -bind all <$::modifier-Shift-Key-E> global_turn_off_editmode diff --git a/scripts/guiplugins/simple_examples/gtklook-plugin.tcl b/scripts/guiplugins/simple_examples/gtklook-plugin.tcl deleted file mode 100644 index 263c6d499f3e512ab97984b1a5ccf1aa4bba6931..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/gtklook-plugin.tcl +++ /dev/null @@ -1,41 +0,0 @@ -# learn more here: http://www.cs.man.ac.uk/~fellowsd/tcl/option-tutorial.html -if { [tk windowingsystem] == "x11" } { - option add *borderWidth 1 widgetDefault - option add *activeBorderWidth 1 widgetDefault - option add *selectBorderWidth 1 widgetDefault - option add *font -adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-* - - option add *padX 2 - option add *padY 4 - - option add *Listbox.background white - option add *Listbox.selectBorderWidth 0 - option add *Listbox.selectForeground white - option add *Listbox.selectBackground #4a6984 - - option add *Entry.background white - option add *Entry.foreground black - option add *Entry.selectBorderWidth 0 - option add *Entry.selectForeground white - option add *Entry.selectBackground #4a6984 - - option add *Text.background white - option add *Text.selectBorderWidth 0 - option add *Text.selectForeground white - option add *Text.selectBackground #4a6984 - - option add *Menu.activeBackground #4a6984 - option add *Menu.activeForeground white - option add *Menu.activeBorderWidth 0 - option add *Menu.highlightThickness 0 - option add *Menu.borderWidth 2 - - option add *MenuButton.activeBackground #4a6984 - option add *MenuButton.activeForeground white - option add *MenuButton.activeBorderWidth 0 - option add *MenuButton.highlightThickness 0 - option add *MenuButton.borderWidth 0 - - option add *highlightThickness 0 - option add *troughColor #bdb6ad -} diff --git a/scripts/guiplugins/simple_examples/hide_cords_in_editmode-plugin.tcl b/scripts/guiplugins/simple_examples/hide_cords_in_editmode-plugin.tcl deleted file mode 100644 index a0cd189544540de282ac3b81f21ed27c45abb9cc..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/hide_cords_in_editmode-plugin.tcl +++ /dev/null @@ -1,16 +0,0 @@ -# this script makes it so that the cords are hidden when not in edit mode - -proc set_cords_by_editmode {mytoplevel} { - if {$mytoplevel eq ".pdwindow"} {return} - set tkcanvas [tkcanvas_name $mytoplevel] - if { ! [winfo exists $mytoplevel] } {return} - if {$::editmode($mytoplevel) == 1} { - $tkcanvas itemconfigure cord -fill black - $tkcanvas raise cord - } else { - $tkcanvas itemconfigure cord -fill white - $tkcanvas lower cord - } -} - -bind all <<EditMode>> {+set_cords_by_editmode %W} diff --git a/scripts/guiplugins/simple_examples/insert_into_popup_menu-plugin.tcl b/scripts/guiplugins/simple_examples/insert_into_popup_menu-plugin.tcl deleted file mode 100644 index 71384f8bac57e64458637ad7c41f648b1f39f5fa..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/insert_into_popup_menu-plugin.tcl +++ /dev/null @@ -1,26 +0,0 @@ - -# for more info: http://tcl.tk/man/tcl8.5/TkCmd/menu.htm - -# create the item, then stick it to the canvas using a 'mouseup' message -proc popup_create_put {putitem} { - pdsend "$::focused_window $putitem" - pdsend "$::focused_window mouseup $::popup_xpix $::popup_ypix 1" -} - -# create our submenu -menu .popup.create -# fix menu font size on Windows with tk scaling = 1 -if {$::windowingsystem eq "win32"} {.popup.create configure -font menufont} - -# add items to our submenu -# (wrapping the label like [_ ""] means that text will be localized) -.popup.create add command -label [_ "Object"] -command {popup_create_put "obj"} -.popup.create add command -label [_ "Message"] -command {popup_create_put "msg"} -.popup.create add command -label [_ "Number"] -command {popup_create_put "floatatom"} -.popup.create add command -label [_ "Symbol"] -command {popup_create_put "symbolatom"} -.popup.create add command -label [_ "Comment"] -command {popup_create_put "text"} -.popup.create add separator -.popup.create add command -label [_ "Array"] -command {pdsend "$::focused_window menuarray"} - -# insert our submenu as the 0th element on the popup -.popup insert 0 cascade -label [_ "Put"] -menu .popup.create diff --git a/scripts/guiplugins/simple_examples/meters_default_on-plugin.tcl b/scripts/guiplugins/simple_examples/meters_default_on-plugin.tcl deleted file mode 100644 index 4e8cbd6b827a9a1985cbb9d624bd153b2587f361..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/meters_default_on-plugin.tcl +++ /dev/null @@ -1,3 +0,0 @@ -# this makes the meters in the Pd window be on by default -set ::meters 1 -pdsend "pd meters 1" diff --git a/scripts/guiplugins/simple_examples/pdwindow_popup_mode-plugin.tcl b/scripts/guiplugins/simple_examples/pdwindow_popup_mode-plugin.tcl deleted file mode 100644 index fd1c296daf8a5d455f375c38984af01428867ae8..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/pdwindow_popup_mode-plugin.tcl +++ /dev/null @@ -1,19 +0,0 @@ -# create an option for a mode where the Pd window pops up whenever anything is -# printed to the text box in the Pd window - -set ::pdwindow::popupmode 0 -rename pdtk_post pdtk_post_original -proc pdtk_post {message} { - if {$::pdwindow::popupmode} { - wm deiconify .pdwindow - raise .pdwindow - } - pdtk_post_original $message -} - -set mymenu .menubar.window -set inserthere [$mymenu index [_ "Parent Window"]] -$mymenu insert $inserthere separator -$mymenu insert $inserthere check -label [_ " Popup mode"] -variable ::pdwindow::popupmode - - diff --git a/scripts/guiplugins/simple_examples/remove_menubar_from_patch_windows-plugin.tcl b/scripts/guiplugins/simple_examples/remove_menubar_from_patch_windows-plugin.tcl deleted file mode 100644 index 124d216b679eea0ae1de9ba3448ceb5230773c88..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/remove_menubar_from_patch_windows-plugin.tcl +++ /dev/null @@ -1,7 +0,0 @@ -# this scriptlet removes the menubars from all canvas windows. You could also -# create your own custom menu and add it to the canvas windows. - -# on Mac OS X, no windows have menubars, so no need to remove for 'aqua' -if {$::windowingsystem ne "aqua"} { - set ::canvas_menubar "" -} diff --git a/scripts/guiplugins/simple_examples/set_canvas_minsize-plugin.tcl b/scripts/guiplugins/simple_examples/set_canvas_minsize-plugin.tcl deleted file mode 100644 index 3b445edc0938da84efd46850d5e3b73962f29b7d..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/set_canvas_minsize-plugin.tcl +++ /dev/null @@ -1,8 +0,0 @@ - -# set the minimum size of canvas windows, so it doesn't hide the menubar -if {$::windowingsystem ne "aqua"} { - set ::canvas_minwidth 310 - set ::canvas_minheight 45 -} - - diff --git a/scripts/guiplugins/simple_examples/set_custom_stored_histories-plugin.tcl b/scripts/guiplugins/simple_examples/set_custom_stored_histories-plugin.tcl deleted file mode 100644 index 13893740343ab49172840060cabb3039a1b71aae..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/set_custom_stored_histories-plugin.tcl +++ /dev/null @@ -1,6 +0,0 @@ -# you can preset the histories of various things like the Tcl entry box in the -# Pd window and the messages in the Message dialog. They are lists of messages -# in order of newness, so the newest item is at the end of the list. - -set ::pdwindow::tclentry_history {"menu_message_dialog" "console hide" "console show"} -set ::dialog_message::message_history {"pd dsp 1" "pd dsp 0" "my very custom message"} diff --git a/scripts/guiplugins/simple_examples/tripleclickobj-plugin.tcl b/scripts/guiplugins/simple_examples/tripleclickobj-plugin.tcl deleted file mode 100644 index 715cd5602d5c41856cd8cd0ddd307650344fdf57..0000000000000000000000000000000000000000 --- a/scripts/guiplugins/simple_examples/tripleclickobj-plugin.tcl +++ /dev/null @@ -1,9 +0,0 @@ -# This is a sketch to demonstrate a Tcl "plugin" for Pd: it binds to -# triple-clicks to trigger the creation of a new object. -proc process_tripleclick {window} { - set mytoplevel [winfo toplevel $window] - if {[winfo class $mytoplevel] == "PatchWindow" && $::editmode($mytoplevel)} { - ::pd_connect::pdsend "$mytoplevel obj" - } -} -bind all <Triple-ButtonRelease-1> {process_tripleclick %W} diff --git a/scripts/insert_declare.py b/scripts/insert_declare.py deleted file mode 100755 index 15e0f58ed9cfb2940813574c6ba6954725d44519..0000000000000000000000000000000000000000 --- a/scripts/insert_declare.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/python - -import string -import os,sys -import re -import StringIO - -library = os.getcwd().split('/')[-1] - -print "current library: " + library + "\n" - -for root, dirs, files in os.walk('.'): - try: - dirs.remove('.svn') - except: - pass -# print "root: " + root - for name in files: - m = re.search(".*\.pd$", name) - if m: - helppatch = os.path.join(root, m.string) - fd = open(helppatch, 'r') - contents = fd.readlines() - fd.close() - firstline = contents[0] - contents.remove(firstline) -# fd = open(helppatch + ".new", 'w') - print helppatch - fd = open(helppatch, 'w') - fd.write(firstline) -# fd.write("#X declare -lib " + library.lower() + ";\n") - fd.write("#X declare -path ..;\n") - fd.writelines(contents) - fd.close() - diff --git a/scripts/parse-help-patches.pl b/scripts/parse-help-patches.pl deleted file mode 100755 index a96b16377a078d4f1ef8b5220760e55bfa982821..0000000000000000000000000000000000000000 --- a/scripts/parse-help-patches.pl +++ /dev/null @@ -1,254 +0,0 @@ -#!/usr/bin/perl - -# WARNING! This script is really ugly! - -# to use: -# 1) make a folder, like en-import -# 2) run ../parse-help-patches.pl in it -# 3) voila! -# -# on the server, run: -# find en-import/ -type f -name \*.txt | ./wiki_import.sh -s 'Top level' - -use strict; -use warnings; -use Text::CSV_PP; - -my $line = ""; -my @lines; -my $lineCount = 0; -my $column; -my $lastColumn = 0; -my $printText = ""; - -my %classnames = (); -my %xyhash = (); - -my $libraryName = ""; -my $objectclassName = ""; -my $fileName = ""; - -my $pageName = ""; -my $abbreviationName = ""; -my $descriptionName = ""; -my $categoryName = ""; -my $datatypeName = ""; - -#------------------------------------------------------------------------------# -# TRANSLATION VARIABLES -#------------------------------------------------------------------------------# - -# wikipedia terms -my $stub = ""; -my $template = ""; -my $category = ""; -my $infobox = ""; - -# pdpedia terms -my $objectclass = ""; - -# page headers -my $inlets = ""; -my $outlets = ""; -my $arguments = ""; -my $messages = ""; - -# infobox -my $name = ""; -my $description = ""; -my $abbreviation = ""; -my $library = ""; -my $author = ""; -my $developer = ""; -my $releaseVersion = ""; -my $releaseDate = ""; -my $dependencies = ""; -my $license = ""; -my $website = ""; -my $programmingLanguage = ""; -my $platform = ""; -my $operatingSystem = ""; -my $language = ""; -my $dataType = ""; -my $distribution = ""; -my $status = ""; -my $caption = ""; - -#------------------------------------------------------------------------------# -# Français - -# wikipedia terms -$stub = "Ébauche"; -$template = "Modèle"; -$category = "Catégorie"; -$infobox = "Infos"; - -# pdpedia terms -$objectclass = "Classe d'objets"; - -# page headers -$inlets = "Entrées"; -$outlets = "Sorties"; -$arguments = "Arguments"; -$messages = "Messages"; - -# infobox -$name = "Nom"; -$description = "Description"; -$abbreviation = "Abréviation"; -$library = "Bibliothèque"; -$author = "Auteur"; -$developer = "Développeur"; -$releaseVersion = "Version"; -$releaseDate = "Date"; -$dependencies = "Dépendances"; -$license = "Licence"; -$website = "Site Web"; -$programmingLanguage = "Langage de programmation"; -$platform = "Plate-forme"; -$operatingSystem = "Système d'exploitation"; -$language = "Langue"; -$dataType = "Type de données"; -$distribution = "Distribution"; - -$status = "État"; -$caption = "Légende"; -$language = "Langue"; - - - - -#------------------------------------------------------------------------------# -# PARSE CSV -#------------------------------------------------------------------------------# -my $csvfile = '/Users/hans/Desktop/TODO/wiki_files_hacked/objectlist.csv'; -my $csv = Text::CSV_PP->new(); -my %csvhash = (); - -open (CSV, "<", $csvfile) or die $!; -my @csvlines = split(/\012\015?|\015\012?/,(join '',<CSV>)); -foreach (@csvlines) { - if ($csv->parse($_)) { - my @columns = $csv->fields(); - $csvhash{ $columns[0] }{ $columns[2] } = "$columns[0],$columns[2],$columns[3],$columns[4],$columns[5],$columns[7]"; - #print("$columns[0],$columns[2] | "); - } else { - my $err = $csv->error_input; - print "Failed to parse line: $err"; - } -} -close CSV; - -#------------------------------------------------------------------------------# -# PARSE HELP FILES -#------------------------------------------------------------------------------# - -foreach (`/sw/bin/find /Users/hans/Desktop/TODO/wiki_files_hacked/5.reference/ -type f -name '*.pd'`) { - chop; - $fileName = ""; - if( (m|.*/5\.reference/([a-zA-Z0-9_-]+)/(.+)-help\.pd|) || (m|.*/5\.reference/([a-zA-Z0-9_-]+)/(.+)\.pd|) ) { -# print("$1 , $2\t"); - if( $1 eq 'zflatspace' ) { $libraryName = "flatspace";} - else {$libraryName = lc($1); } - $objectclassName = $2; - $fileName = $_; - } - -# print "filename: $fileName\n"; - if ($fileName) { - $printText = ""; # init container - %xyhash = (); # init sorting hash - - open(HELPPATCH, "$fileName"); - undef $/; # $/ defines the "end of record" character - $_ = <HELPPATCH>; # read the whole file into the scalar - close HELPPATCH; - $/ = "\n"; # Restore for normal behaviour later in script - - s| \\||g; # remove Pd-style escaping - s|([^;])\n|$1 |g; # remove extra newlines - s|\(http://.*\)\([ \n]\)|[$1]$2|g; - - @lines = split(';\n', $_); - - foreach (@lines) { - if (m|^#X text ([0-9]+) ([0-9]+) (.*)|) { - $xyhash{ $2 }{ $1 } = $3; - # print("$lineCount @ $1,$2: $3\n"); - } - $lineCount++; - } - for ($column = -300; $column < 1501; $column += 300) { - foreach my $yKey ( sort {$a <=> $b} keys(%xyhash) ) { - foreach my $xKey ( keys(%{$xyhash{$yKey}}) ) { - if ( ($xKey > $lastColumn) && ($xKey < $column) ) { - $printText .= "$xyhash{$yKey}{$xKey}\n\n"; - #print("TEST $xKey,$yKey: $xyhash{$yKey}{$xKey}\n"); - } - } - } - $lastColumn = $column; - } - - my $myColumns = $csvhash{$libraryName}{$objectclassName}; - my @myColumns; - if($myColumns) { @myColumns = split(',', $myColumns); } - if($myColumns[2]) { $abbreviationName = $myColumns[2]; } if( $classnames{$objectclassName} ) { - $pageName = "${objectclassName}_(${libraryName})"; - } else { - $pageName = "${objectclassName}"; - } - - - mkdir($libraryName); - if( $classnames{$objectclassName} ) { - $pageName = "${objectclassName}_(${libraryName})"; - } else { - $pageName = "${objectclassName}"; - } - open(OBJECTCLASS, ">$libraryName/${pageName}.txt"); - print(OBJECTCLASS "{{Infobox $objectclass\n"); - print(OBJECTCLASS "| $name = $objectclassName\n"); - if($abbreviationName) { - print(OBJECTCLASS "| $abbreviation = $abbreviationName\n");} - print(OBJECTCLASS "| $description = \n"); - print(OBJECTCLASS "| $dataType = \n"); - print(OBJECTCLASS "| $library = [[$libraryName]]\n"); - print(OBJECTCLASS "| $author = {{$libraryName " . lc(${author}) . "}}\n"); - print(OBJECTCLASS "| $license = {{$libraryName " . lc(${license}) . "}}\n"); - print(OBJECTCLASS "| $status = {{$libraryName " . lc(${status}) . "}}\n"); - print(OBJECTCLASS "| $website = {{$libraryName " . lc(${website}) . "}}\n"); - print(OBJECTCLASS "| $releaseVersion = {{$libraryName " . lc(${releaseVersion}) . "}}\n"); - print(OBJECTCLASS "| $releaseDate = {{$libraryName " . lc(${releaseDate}) . "}}\n"); - print(OBJECTCLASS "| $distribution = {{$libraryName " . lc(${distribution}) . "}}\n"); - print(OBJECTCLASS "| $platform = [[GNU/Linux]], [[Mac OS X]], [[Windows]]\n"); - print(OBJECTCLASS "}}\n\n"); -# print(OBJECTCLASS "\n$printText\n\n\n"); - print(OBJECTCLASS "==$inlets==\n\n\n"); - print(OBJECTCLASS "==$outlets==\n\n\n"); - print(OBJECTCLASS "==$arguments==\n\n\n"); -# print(OBJECTCLASS "==$messages==\n\n\n"); - print(OBJECTCLASS "{{${objectclass}-${stub}}} \n\n"); - print(OBJECTCLASS "[[$category:$objectclass]]\n"); - print(OBJECTCLASS "[[$category:$libraryName]]\n"); -# if($category) { -# print(OBJECTCLASS "[[$category:$categoryName]]\n"); -# } - print(OBJECTCLASS "\n\n"); - print(OBJECTCLASS "[[de:$pageName]]\n"); - print(OBJECTCLASS "[[en:$pageName]]\n"); - print(OBJECTCLASS "[[es:$pageName]]\n"); -# print(OBJECTCLASS "[[fr:$pageName]]\n"); - print(OBJECTCLASS "[[it:$pageName]]\n"); - print(OBJECTCLASS "[[ja:$pageName]]\n"); - print(OBJECTCLASS "[[nl:$pageName]]\n"); - print(OBJECTCLASS "[[pt:$pageName]]\n"); - print(OBJECTCLASS "[[ru:$pageName]]\n"); - print(OBJECTCLASS "[[tr:$pageName]]\n"); - print(OBJECTCLASS "\n\n"); - close(OBJECTCLASS); - - $classnames{$objectclassName} = 1; - } -} - diff --git a/scripts/update-developer-layout.sh b/scripts/update-developer-layout.sh deleted file mode 100755 index cf3ea0697f8675b62a7524d97b0a079c39375702..0000000000000000000000000000000000000000 --- a/scripts/update-developer-layout.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -# this script updates all code from subversion in the standard developer's layout. -# <hans@at.or.at> - -# Usage: just run it and it should find things if you have your stuff layed -# out in the standard dev layout, or used checkout-developer-layout.sh to -# checkout your pd source tree - -cvs_root_dir=$(echo $0 | sed 's|\(.*\)/.*$|\1|')/.. - -SVNOPTIONS="--ignore-externals" - -cd $cvs_root_dir -echo "Running svn update:" -svn update ${SVNOPTIONS} -echo "Running svn update for Gem:" -for section in Gem videoIO; do - echo "$section" - cd $section - svn update ${SVNOPTIONS} - cd .. -done