diff options
-rw-r--r-- | AUTHORS | 9 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | omins.lv2/adenv.ttl | 59 | ||||
-rw-r--r-- | omins.lv2/adenv_lvl.ttl | 92 | ||||
-rw-r--r-- | omins.lv2/comparison.ttl | 60 | ||||
-rw-r--r-- | omins.lv2/dahdsr_fexp.ttl | 99 | ||||
-rw-r--r-- | omins.lv2/dahdsr_hexp.ttl | 99 | ||||
-rw-r--r-- | omins.lv2/fast_crossfade.ttl | 45 | ||||
-rw-r--r-- | omins.lv2/formant_filter.ttl | 41 | ||||
-rw-r--r-- | omins.lv2/hz_voct.ttl | 31 | ||||
-rw-r--r-- | omins.lv2/manifest.ttl.in | 112 | ||||
-rw-r--r-- | omins.lv2/masher.ttl | 51 | ||||
-rw-r--r-- | omins.lv2/multiplexer.ttl | 40 | ||||
-rw-r--r-- | omins.lv2/prob_switch.ttl | 45 | ||||
-rw-r--r-- | omins.lv2/range_trans.ttl | 63 | ||||
-rw-r--r-- | omins.lv2/sample_and_hold.ttl | 53 | ||||
-rw-r--r-- | omins.lv2/signal_abs.ttl | 40 | ||||
-rw-r--r-- | omins.lv2/slew_limiter.ttl | 48 | ||||
-rw-r--r-- | omins.lv2/slide.ttl | 48 | ||||
-rw-r--r-- | omins.lv2/waveguide_mesh.ttl | 70 | ||||
-rw-r--r-- | omins.spec | 41 | ||||
-rw-r--r-- | src/adenv.c | 250 | ||||
-rw-r--r-- | src/adenv_lvl.c | 299 | ||||
-rw-r--r-- | src/comparison.c | 135 | ||||
-rw-r--r-- | src/dahdsr_fexp.c | 342 | ||||
-rw-r--r-- | src/dahdsr_hexp.c | 344 | ||||
-rw-r--r-- | src/fast_crossfade.c | 139 | ||||
-rw-r--r-- | src/formant_filter.c | 213 | ||||
-rw-r--r-- | src/hz_voct.c | 117 | ||||
-rw-r--r-- | src/masher.c | 244 | ||||
-rw-r--r-- | src/multiplexer.c | 120 | ||||
-rw-r--r-- | src/prob_switch.c | 130 | ||||
-rw-r--r-- | src/range_trans.c | 131 | ||||
-rw-r--r-- | src/sample_and_hold.c | 150 | ||||
-rw-r--r-- | src/signal_abs.c | 124 | ||||
-rw-r--r-- | src/slew_limiter.c | 149 | ||||
-rw-r--r-- | src/slide.c | 170 | ||||
-rw-r--r-- | src/waveguide_mesh.c | 274 | ||||
-rwxr-xr-x | waf | 171 | ||||
-rw-r--r-- | waflib/.gitignore (renamed from .gitignore) | 0 | ||||
-rw-r--r-- | waflib/Build.py (renamed from Build.py) | 0 | ||||
-rw-r--r-- | waflib/COPYING (renamed from COPYING) | 0 | ||||
-rw-r--r-- | waflib/ConfigSet.py (renamed from ConfigSet.py) | 0 | ||||
-rw-r--r-- | waflib/Configure.py (renamed from Configure.py) | 0 | ||||
-rw-r--r-- | waflib/Context.py (renamed from Context.py) | 0 | ||||
-rw-r--r-- | waflib/Errors.py (renamed from Errors.py) | 0 | ||||
-rw-r--r-- | waflib/Logs.py (renamed from Logs.py) | 0 | ||||
-rw-r--r-- | waflib/Node.py (renamed from Node.py) | 0 | ||||
-rw-r--r-- | waflib/Options.py (renamed from Options.py) | 0 | ||||
-rw-r--r-- | waflib/README.md (renamed from README.md) | 0 | ||||
-rw-r--r-- | waflib/Runner.py (renamed from Runner.py) | 0 | ||||
-rw-r--r-- | waflib/Scripting.py (renamed from Scripting.py) | 0 | ||||
-rw-r--r-- | waflib/Task.py (renamed from Task.py) | 0 | ||||
-rw-r--r-- | waflib/TaskGen.py (renamed from TaskGen.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/__init__.py (renamed from Tools/__init__.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/ar.py (renamed from Tools/ar.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/asm.py (renamed from Tools/asm.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/bison.py (renamed from Tools/bison.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/c.py (renamed from Tools/c.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/c_aliases.py (renamed from Tools/c_aliases.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/c_config.py (renamed from Tools/c_config.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/c_osx.py (renamed from Tools/c_osx.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/c_preproc.py (renamed from Tools/c_preproc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/c_tests.py (renamed from Tools/c_tests.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/ccroot.py (renamed from Tools/ccroot.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/clang.py (renamed from Tools/clang.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/clangxx.py (renamed from Tools/clangxx.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/compiler_c.py (renamed from Tools/compiler_c.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/compiler_cxx.py (renamed from Tools/compiler_cxx.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/compiler_d.py (renamed from Tools/compiler_d.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/compiler_fc.py (renamed from Tools/compiler_fc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/cs.py (renamed from Tools/cs.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/cxx.py (renamed from Tools/cxx.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/d.py (renamed from Tools/d.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/d_config.py (renamed from Tools/d_config.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/d_scan.py (renamed from Tools/d_scan.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/dbus.py (renamed from Tools/dbus.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/dmd.py (renamed from Tools/dmd.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/errcheck.py (renamed from Tools/errcheck.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/fc.py (renamed from Tools/fc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/fc_config.py (renamed from Tools/fc_config.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/fc_scan.py (renamed from Tools/fc_scan.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/flex.py (renamed from Tools/flex.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/g95.py (renamed from Tools/g95.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/gas.py (renamed from Tools/gas.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/gcc.py (renamed from Tools/gcc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/gdc.py (renamed from Tools/gdc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/gfortran.py (renamed from Tools/gfortran.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/glib2.py (renamed from Tools/glib2.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/gnu_dirs.py (renamed from Tools/gnu_dirs.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/gxx.py (renamed from Tools/gxx.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/icc.py (renamed from Tools/icc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/icpc.py (renamed from Tools/icpc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/ifort.py (renamed from Tools/ifort.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/intltool.py (renamed from Tools/intltool.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/irixcc.py (renamed from Tools/irixcc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/javaw.py (renamed from Tools/javaw.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/ldc2.py (renamed from Tools/ldc2.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/lua.py (renamed from Tools/lua.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/md5_tstamp.py (renamed from Tools/md5_tstamp.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/msvc.py (renamed from Tools/msvc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/nasm.py (renamed from Tools/nasm.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/nobuild.py (renamed from Tools/nobuild.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/perl.py (renamed from Tools/perl.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/python.py (renamed from Tools/python.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/qt5.py (renamed from Tools/qt5.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/ruby.py (renamed from Tools/ruby.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/suncc.py (renamed from Tools/suncc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/suncxx.py (renamed from Tools/suncxx.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/tex.py (renamed from Tools/tex.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/vala.py (renamed from Tools/vala.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/waf_unit_test.py (renamed from Tools/waf_unit_test.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/winres.py (renamed from Tools/winres.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/xlc.py (renamed from Tools/xlc.py) | 0 | ||||
-rw-r--r-- | waflib/Tools/xlcxx.py (renamed from Tools/xlcxx.py) | 0 | ||||
-rw-r--r-- | waflib/Utils.py (renamed from Utils.py) | 0 | ||||
-rw-r--r-- | waflib/__init__.py (renamed from __init__.py) | 0 | ||||
-rw-r--r-- | waflib/ansiterm.py (renamed from ansiterm.py) | 0 | ||||
-rw-r--r-- | waflib/extras/__init__.py (renamed from extras/__init__.py) | 0 | ||||
-rw-r--r-- | waflib/extras/autowaf.py (renamed from extras/autowaf.py) | 0 | ||||
-rw-r--r-- | waflib/extras/batched_cc.py (renamed from extras/batched_cc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/biber.py (renamed from extras/biber.py) | 0 | ||||
-rw-r--r-- | waflib/extras/bjam.py (renamed from extras/bjam.py) | 0 | ||||
-rw-r--r-- | waflib/extras/blender.py (renamed from extras/blender.py) | 0 | ||||
-rw-r--r-- | waflib/extras/boo.py (renamed from extras/boo.py) | 0 | ||||
-rw-r--r-- | waflib/extras/boost.py (renamed from extras/boost.py) | 0 | ||||
-rw-r--r-- | waflib/extras/build_file_tracker.py (renamed from extras/build_file_tracker.py) | 0 | ||||
-rw-r--r-- | waflib/extras/build_logs.py (renamed from extras/build_logs.py) | 0 | ||||
-rw-r--r-- | waflib/extras/buildcopy.py (renamed from extras/buildcopy.py) | 0 | ||||
-rw-r--r-- | waflib/extras/c_bgxlc.py (renamed from extras/c_bgxlc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/c_dumbpreproc.py (renamed from extras/c_dumbpreproc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/c_emscripten.py (renamed from extras/c_emscripten.py) | 0 | ||||
-rw-r--r-- | waflib/extras/c_nec.py (renamed from extras/c_nec.py) | 0 | ||||
-rw-r--r-- | waflib/extras/cabal.py (renamed from extras/cabal.py) | 0 | ||||
-rw-r--r-- | waflib/extras/cfg_altoptions.py (renamed from extras/cfg_altoptions.py) | 0 | ||||
-rw-r--r-- | waflib/extras/clang_compilation_database.py (renamed from extras/clang_compilation_database.py) | 0 | ||||
-rw-r--r-- | waflib/extras/codelite.py (renamed from extras/codelite.py) | 0 | ||||
-rw-r--r-- | waflib/extras/color_gcc.py (renamed from extras/color_gcc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/color_rvct.py (renamed from extras/color_rvct.py) | 0 | ||||
-rw-r--r-- | waflib/extras/compat15.py (renamed from extras/compat15.py) | 0 | ||||
-rw-r--r-- | waflib/extras/cppcheck.py (renamed from extras/cppcheck.py) | 0 | ||||
-rw-r--r-- | waflib/extras/cpplint.py (renamed from extras/cpplint.py) | 0 | ||||
-rw-r--r-- | waflib/extras/cross_gnu.py (renamed from extras/cross_gnu.py) | 0 | ||||
-rw-r--r-- | waflib/extras/cython.py (renamed from extras/cython.py) | 0 | ||||
-rw-r--r-- | waflib/extras/dcc.py (renamed from extras/dcc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/distnet.py (renamed from extras/distnet.py) | 0 | ||||
-rw-r--r-- | waflib/extras/doxygen.py (renamed from extras/doxygen.py) | 0 | ||||
-rw-r--r-- | waflib/extras/dpapi.py (renamed from extras/dpapi.py) | 0 | ||||
-rw-r--r-- | waflib/extras/eclipse.py (renamed from extras/eclipse.py) | 0 | ||||
-rw-r--r-- | waflib/extras/erlang.py (renamed from extras/erlang.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fast_partial.py (renamed from extras/fast_partial.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_bgxlf.py (renamed from extras/fc_bgxlf.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_cray.py (renamed from extras/fc_cray.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_nag.py (renamed from extras/fc_nag.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_nec.py (renamed from extras/fc_nec.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_open64.py (renamed from extras/fc_open64.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_pgfortran.py (renamed from extras/fc_pgfortran.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_solstudio.py (renamed from extras/fc_solstudio.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fc_xlf.py (renamed from extras/fc_xlf.py) | 0 | ||||
-rw-r--r-- | waflib/extras/file_to_object.py (renamed from extras/file_to_object.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fluid.py (renamed from extras/fluid.py) | 0 | ||||
-rw-r--r-- | waflib/extras/freeimage.py (renamed from extras/freeimage.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fsb.py (renamed from extras/fsb.py) | 0 | ||||
-rw-r--r-- | waflib/extras/fsc.py (renamed from extras/fsc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/gccdeps.py (renamed from extras/gccdeps.py) | 0 | ||||
-rw-r--r-- | waflib/extras/gdbus.py (renamed from extras/gdbus.py) | 0 | ||||
-rw-r--r-- | waflib/extras/gob2.py (renamed from extras/gob2.py) | 0 | ||||
-rw-r--r-- | waflib/extras/halide.py (renamed from extras/halide.py) | 0 | ||||
-rwxr-xr-x | waflib/extras/javatest.py (renamed from extras/javatest.py) | 0 | ||||
-rw-r--r-- | waflib/extras/kde4.py (renamed from extras/kde4.py) | 0 | ||||
-rw-r--r-- | waflib/extras/local_rpath.py (renamed from extras/local_rpath.py) | 0 | ||||
-rw-r--r-- | waflib/extras/lv2.py (renamed from extras/lv2.py) | 0 | ||||
-rw-r--r-- | waflib/extras/make.py (renamed from extras/make.py) | 0 | ||||
-rw-r--r-- | waflib/extras/midl.py (renamed from extras/midl.py) | 0 | ||||
-rw-r--r-- | waflib/extras/msvcdeps.py (renamed from extras/msvcdeps.py) | 0 | ||||
-rw-r--r-- | waflib/extras/msvs.py (renamed from extras/msvs.py) | 0 | ||||
-rw-r--r-- | waflib/extras/netcache_client.py (renamed from extras/netcache_client.py) | 0 | ||||
-rw-r--r-- | waflib/extras/objcopy.py (renamed from extras/objcopy.py) | 0 | ||||
-rw-r--r-- | waflib/extras/ocaml.py (renamed from extras/ocaml.py) | 0 | ||||
-rw-r--r-- | waflib/extras/package.py (renamed from extras/package.py) | 0 | ||||
-rw-r--r-- | waflib/extras/parallel_debug.py (renamed from extras/parallel_debug.py) | 0 | ||||
-rw-r--r-- | waflib/extras/pch.py (renamed from extras/pch.py) | 0 | ||||
-rw-r--r-- | waflib/extras/pep8.py (renamed from extras/pep8.py) | 0 | ||||
-rw-r--r-- | waflib/extras/pgicc.py (renamed from extras/pgicc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/pgicxx.py (renamed from extras/pgicxx.py) | 0 | ||||
-rw-r--r-- | waflib/extras/proc.py (renamed from extras/proc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/protoc.py (renamed from extras/protoc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/pyqt5.py (renamed from extras/pyqt5.py) | 0 | ||||
-rw-r--r-- | waflib/extras/pytest.py (renamed from extras/pytest.py) | 0 | ||||
-rw-r--r-- | waflib/extras/qnxnto.py (renamed from extras/qnxnto.py) | 0 | ||||
-rw-r--r-- | waflib/extras/qt4.py (renamed from extras/qt4.py) | 0 | ||||
-rw-r--r-- | waflib/extras/relocation.py (renamed from extras/relocation.py) | 0 | ||||
-rw-r--r-- | waflib/extras/remote.py (renamed from extras/remote.py) | 0 | ||||
-rw-r--r-- | waflib/extras/resx.py (renamed from extras/resx.py) | 0 | ||||
-rw-r--r-- | waflib/extras/review.py (renamed from extras/review.py) | 0 | ||||
-rw-r--r-- | waflib/extras/rst.py (renamed from extras/rst.py) | 0 | ||||
-rw-r--r-- | waflib/extras/run_do_script.py (renamed from extras/run_do_script.py) | 0 | ||||
-rw-r--r-- | waflib/extras/run_m_script.py (renamed from extras/run_m_script.py) | 0 | ||||
-rw-r--r-- | waflib/extras/run_py_script.py (renamed from extras/run_py_script.py) | 0 | ||||
-rw-r--r-- | waflib/extras/run_r_script.py (renamed from extras/run_r_script.py) | 0 | ||||
-rw-r--r-- | waflib/extras/sas.py (renamed from extras/sas.py) | 0 | ||||
-rw-r--r-- | waflib/extras/satellite_assembly.py (renamed from extras/satellite_assembly.py) | 0 | ||||
-rw-r--r-- | waflib/extras/scala.py (renamed from extras/scala.py) | 0 | ||||
-rw-r--r-- | waflib/extras/slow_qt4.py (renamed from extras/slow_qt4.py) | 0 | ||||
-rw-r--r-- | waflib/extras/softlink_libs.py (renamed from extras/softlink_libs.py) | 0 | ||||
-rw-r--r-- | waflib/extras/stale.py (renamed from extras/stale.py) | 0 | ||||
-rw-r--r-- | waflib/extras/stracedeps.py (renamed from extras/stracedeps.py) | 0 | ||||
-rw-r--r-- | waflib/extras/swig.py (renamed from extras/swig.py) | 0 | ||||
-rw-r--r-- | waflib/extras/syms.py (renamed from extras/syms.py) | 0 | ||||
-rw-r--r-- | waflib/extras/ticgt.py (renamed from extras/ticgt.py) | 0 | ||||
-rw-r--r-- | waflib/extras/unity.py (renamed from extras/unity.py) | 0 | ||||
-rw-r--r-- | waflib/extras/use_config.py (renamed from extras/use_config.py) | 0 | ||||
-rw-r--r-- | waflib/extras/valadoc.py (renamed from extras/valadoc.py) | 0 | ||||
-rw-r--r-- | waflib/extras/waf_xattr.py (renamed from extras/waf_xattr.py) | 0 | ||||
-rw-r--r-- | waflib/extras/why.py (renamed from extras/why.py) | 0 | ||||
-rw-r--r-- | waflib/extras/win32_opts.py (renamed from extras/win32_opts.py) | 0 | ||||
-rw-r--r-- | waflib/extras/wix.py (renamed from extras/wix.py) | 0 | ||||
-rw-r--r-- | waflib/extras/xcode6.py (renamed from extras/xcode6.py) | 0 | ||||
-rw-r--r-- | waflib/fixpy2.py (renamed from fixpy2.py) | 0 | ||||
-rwxr-xr-x | waflib/processor.py (renamed from processor.py) | 0 | ||||
-rwxr-xr-x | waflib/waf | 16 | ||||
-rw-r--r-- | wscript | 116 |
223 files changed, 4777 insertions, 9 deletions
@@ -0,0 +1,9 @@ +Authors: + +David Robillard <d .a.t. drobilla.net> + +Loki Davison <loki .a.t. berlios.de> + +Lars Luthman <larsl .a.t. users.sourceforge.net> + +Thorsten Wilms <t_w_ .a.t. freenet.de> @@ -0,0 +1,5 @@ +omins (0.0.0) unstable; + + * Initial release + + -- David Robillard <d@drobilla.net> Fri, 09 Jun 2006 10:34:20 -0400 @@ -0,0 +1 @@ +Omins is a collection of LADSPA plugins, aimed at modular synthesizers. diff --git a/omins.lv2/adenv.ttl b/omins.lv2/adenv.ttl new file mode 100644 index 0000000..b3f8e56 --- /dev/null +++ b/omins.lv2/adenv.ttl @@ -0,0 +1,59 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<http://drobilla.net/plugins/omins/adenv> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Gate" ; + lv2:symbol "port0" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Trigger" ; + lv2:symbol "port1" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 2 ; + lv2:minimum 0 ; + lv2:name "Attack Time" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 3 ; + lv2:minimum 0 ; + lv2:name "Decay Time" ; + lv2:symbol "port3" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:index 4 ; + lv2:name "Envelope Out" ; + lv2:symbol "port4" ; + a lv2:AudioPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Percussive AD Envelope" ; + a lv2:Plugin . diff --git a/omins.lv2/adenv_lvl.ttl b/omins.lv2/adenv_lvl.ttl new file mode 100644 index 0000000..d6831be --- /dev/null +++ b/omins.lv2/adenv_lvl.ttl @@ -0,0 +1,92 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<http://drobilla.net/plugins/omins/adenv_lvl> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Gate" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort + ] , [ + lv2:index 1 ; + lv2:name "Trigger" ; + lv2:symbol "port1" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 2 ; + lv2:minimum 0 ; + lv2:name "Initial Level" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 3 ; + lv2:minimum 0 ; + lv2:name "Attack to Level" ; + lv2:symbol "port3" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 4 ; + lv2:minimum 0 ; + lv2:name "Decay to Level" ; + lv2:symbol "port4" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + units:unit units:s ; + lv2:default 0 ; + lv2:index 5 ; + lv2:minimum 0 ; + lv2:name "Attack Time" ; + lv2:symbol "port5" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + units:unit units:s ; + lv2:default 0 ; + lv2:index 6 ; + lv2:minimum 0 ; + lv2:name "Decay Time" ; + lv2:symbol "port6" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 7 ; + lv2:name "Envelope Out" ; + lv2:symbol "port7" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] , [ + lv2:index 8 ; + lv2:name "Reset Level" ; + lv2:symbol "port8" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Percussive AD Envelope with levels" ; + a lv2:Plugin . diff --git a/omins.lv2/comparison.ttl b/omins.lv2/comparison.ttl new file mode 100644 index 0000000..392e526 --- /dev/null +++ b/omins.lv2/comparison.ttl @@ -0,0 +1,60 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/comparison> + lv2:binary <file:///usr/local/lib/lv2/naspro-ladspa.lv2/ladspa.so> ; + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "A" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "B" ; + lv2:symbol "port1" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 2 ; + lv2:name "Larger" ; + lv2:symbol "port2" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] , [ + lv2:index 3 ; + lv2:name "Smaller" ; + lv2:symbol "port3" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] , [ + lv2:index 4 ; + lv2:name "A > B" ; + lv2:symbol "port4" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] , [ + lv2:index 5 ; + lv2:name "A = B" ; + lv2:symbol "port5" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Comparison" ; + a lv2:Plugin . diff --git a/omins.lv2/dahdsr_fexp.ttl b/omins.lv2/dahdsr_fexp.ttl new file mode 100644 index 0000000..b7feef9 --- /dev/null +++ b/omins.lv2/dahdsr_fexp.ttl @@ -0,0 +1,99 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<http://drobilla.net/plugins/omins/dahdsr_fexp> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Gate" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Trigger" ; + lv2:symbol "port1" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 2 ; + lv2:minimum 0 ; + lv2:name "Delay Time" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 3 ; + lv2:minimum 0 ; + lv2:name "Attack Time" ; + lv2:symbol "port3" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 4 ; + lv2:minimum 0 ; + lv2:name "Hold Time" ; + lv2:symbol "port4" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 5 ; + lv2:minimum 0 ; + lv2:name "Decay Time" ; + lv2:symbol "port5" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 1 ; + lv2:index 6 ; + lv2:maximum 1 ; + lv2:minimum 0 ; + lv2:name "Sustain Level" ; + lv2:symbol "port6" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 7 ; + lv2:minimum 0 ; + lv2:name "Release Time" ; + lv2:symbol "port7" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:index 8 ; + lv2:name "Envelope Out" ; + lv2:symbol "port8" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Exponential DAHDSR Envelope" ; + a lv2:Plugin . diff --git a/omins.lv2/dahdsr_hexp.ttl b/omins.lv2/dahdsr_hexp.ttl new file mode 100644 index 0000000..ebd8cba --- /dev/null +++ b/omins.lv2/dahdsr_hexp.ttl @@ -0,0 +1,99 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<http://drobilla.net/plugins/omins/dahdsr_hexp> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Gate" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Trigger" ; + lv2:symbol "port1" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 2 ; + lv2:minimum 0 ; + lv2:name "Delay Time" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 3 ; + lv2:minimum 0 ; + lv2:name "Attack Time" ; + lv2:symbol "port3" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 4 ; + lv2:minimum 0 ; + lv2:name "Hold Time" ; + lv2:symbol "port4" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 0 ; + lv2:index 5 ; + lv2:minimum 0 ; + lv2:name "Decay Time" ; + lv2:symbol "port5" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:default 1 ; + lv2:index 6 ; + lv2:maximum 1 ; + lv2:minimum 0 ; + lv2:name "Sustain Level" ; + lv2:symbol "port6" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 7 ; + lv2:minimum 0 ; + lv2:name "Release Time" ; + lv2:symbol "port7" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:index 8 ; + lv2:name "Envelope Out" ; + lv2:symbol "port8" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "DAHDSR Envelope (Linear A, Exponential DR)" ; + a lv2:Plugin . diff --git a/omins.lv2/fast_crossfade.ttl b/omins.lv2/fast_crossfade.ttl new file mode 100644 index 0000000..1fce775 --- /dev/null +++ b/omins.lv2/fast_crossfade.ttl @@ -0,0 +1,45 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/fast_crossfade> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Level" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "A" ; + lv2:symbol "port1" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 2 ; + lv2:name "B" ; + lv2:symbol "port2" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 3 ; + lv2:name "Output" ; + lv2:symbol "port3" ; + a lv2:AudioPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Fast Crossfade" ; + a lv2:Plugin . diff --git a/omins.lv2/formant_filter.ttl b/omins.lv2/formant_filter.ttl new file mode 100644 index 0000000..6bcf6f2 --- /dev/null +++ b/omins.lv2/formant_filter.ttl @@ -0,0 +1,41 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/formant_filter> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:default 0 ; + lv2:index 0 ; + lv2:maximum 4 ; + lv2:minimum 0 ; + lv2:name "Vowel" ; + lv2:symbol "port0" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Input" ; + lv2:symbol "port1" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 2 ; + lv2:name "Output" ; + lv2:symbol "port2" ; + a lv2:AudioPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Formant Filter" ; + a lv2:Plugin . diff --git a/omins.lv2/hz_voct.ttl b/omins.lv2/hz_voct.ttl new file mode 100644 index 0000000..7acd149 --- /dev/null +++ b/omins.lv2/hz_voct.ttl @@ -0,0 +1,31 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/hz_voct> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Output" ; + lv2:symbol "port1" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Hz to V/Oct" ; + a lv2:Plugin . diff --git a/omins.lv2/manifest.ttl.in b/omins.lv2/manifest.ttl.in new file mode 100644 index 0000000..7b4de37 --- /dev/null +++ b/omins.lv2/manifest.ttl.in @@ -0,0 +1,112 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . + +<http://drobilla.net/drobilla#me> + a foaf:Person ; + foaf:name "David Robillard" ; + foaf:mbox <mailto:d@drobilla.net> ; + rdfs:seeAlso <http://drobilla.net/drobilla> . + +_:lfactor + a foaf:Person ; + foaf:name "Loki Davison" ; + foaf:mbox <mailto:loki@berlios.de> . + +omins: + a doap:Project ; + lv2:symbol "omins" ; + doap:name "Omins" ; + doap:shortdesc "A set of LV2 plugins for modular synthesizers." ; + doap:license <http://www.gnu.org/licenses/gpl-2.0> ; + doap:homepage <http://drobilla.net/software/omins> ; + doap:maintainer <http://drobilla.net/drobilla#me> ; + doap:developer <http://drobilla.net/drobilla#me> , + _:lfactor . + +omins:adenv_lvl + a lv2:Plugin ; + rdfs:seeAlso <adenv_lvl.ttl> ; + lv2:binary <adenv_lvl@LIB_EXT@> . + +omins:adenv + a lv2:Plugin ; + rdfs:seeAlso <adenv.ttl> ; + lv2:binary <adenv@LIB_EXT@> . + +omins:comparison + a lv2:Plugin ; + rdfs:seeAlso <comparison.ttl> ; + lv2:binary <comparison@LIB_EXT@> . + +omins:dahdsr_fexp + a lv2:Plugin ; + rdfs:seeAlso <dahdsr_fexp.ttl> ; + lv2:binary <dahdsr_fexp@LIB_EXT@> . + +omins:dahdsr_hexp + a lv2:Plugin ; + rdfs:seeAlso <dahdsr_hexp.ttl> ; + lv2:binary <dahdsr_hexp@LIB_EXT@> . + +omins:fast_crossfade + a lv2:Plugin ; + rdfs:seeAlso <fast_crossfade.ttl> ; + lv2:binary <fast_crossfade@LIB_EXT@> . + +omins:formant_filter + a lv2:Plugin ; + rdfs:seeAlso <formant_filter.ttl> ; + lv2:binary <formant_filter@LIB_EXT@> . + +omins:hz_voct + a lv2:Plugin ; + rdfs:seeAlso <hz_voct.ttl> ; + lv2:binary <hz_voct@LIB_EXT@> . + +omins:masher + a lv2:Plugin ; + rdfs:seeAlso <masher.ttl> ; + lv2:binary <masher@LIB_EXT@> . + +omins:multiplexer + a lv2:Plugin ; + rdfs:seeAlso <multiplexer.ttl> ; + lv2:binary <multiplexer@LIB_EXT@> . + +omins:prob_switch + a lv2:Plugin ; + rdfs:seeAlso <prob_switch.ttl> ; + lv2:binary <prob_switch@LIB_EXT@> . + +omins:range_trans + a lv2:Plugin ; + rdfs:seeAlso <range_trans.ttl> ; + lv2:binary <range_trans@LIB_EXT@> . + +omins:sample_and_hold + a lv2:Plugin ; + rdfs:seeAlso <sample_and_hold.ttl> ; + lv2:binary <sample_and_hold@LIB_EXT@> . + +omins:signal_abs + a lv2:Plugin ; + rdfs:seeAlso <signal_abs.ttl> ; + lv2:binary <signal_abs@LIB_EXT@> . + +omins:slew_limiter + a lv2:Plugin ; + rdfs:seeAlso <slew_limiter.ttl> ; + lv2:binary <slew_limiter@LIB_EXT@> . + +omins:slide + a lv2:Plugin ; + rdfs:seeAlso <slide.ttl> ; + lv2:binary <slide@LIB_EXT@> . + +omins:waveguide_mesh + a lv2:Plugin ; + rdfs:seeAlso <waveguide_mesh.ttl> ; + lv2:binary <waveguide_mesh@LIB_EXT@> . diff --git a/omins.lv2/masher.ttl b/omins.lv2/masher.ttl new file mode 100644 index 0000000..be628e0 --- /dev/null +++ b/omins.lv2/masher.ttl @@ -0,0 +1,51 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/masher> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input" ; + lv2:symbol "port0" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 1 ; + lv2:maximum 10 ; + lv2:minimum 1 ; + lv2:name "Grain Pitch" ; + lv2:symbol "port1" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 400 ; + lv2:index 2 ; + lv2:maximum 800 ; + lv2:minimum 0 ; + lv2:name "Density" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 3 ; + lv2:name "Output" ; + lv2:symbol "port3" ; + a lv2:AudioPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Masher" ; + a lv2:Plugin . diff --git a/omins.lv2/multiplexer.ttl b/omins.lv2/multiplexer.ttl new file mode 100644 index 0000000..7238b4d --- /dev/null +++ b/omins.lv2/multiplexer.ttl @@ -0,0 +1,40 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/multiplexer> + a lv2:Plugin ; + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + a lv2:CVPort , + lv2:InputPort ; + lv2:index 0 ; + lv2:name "Gate" ; + lv2:symbol "gate" ; + ] , [ + a lv2:CVPort , + lv2:InputPort ; + lv2:index 1 ; + lv2:name "Off" ; + lv2:symbol "off" ; + ] , [ + a lv2:CVPort , + lv2:InputPort ; + lv2:index 2 ; + lv2:name "On" ; + lv2:symbol "on" ; + ] , [ + a lv2:CVPort , + lv2:OutputPort ; + lv2:index 3 ; + lv2:name "Output" ; + lv2:symbol "output" ; + ] ; + doap:name "Multiplexer" . diff --git a/omins.lv2/prob_switch.ttl b/omins.lv2/prob_switch.ttl new file mode 100644 index 0000000..547f79f --- /dev/null +++ b/omins.lv2/prob_switch.ttl @@ -0,0 +1,45 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/prob_switch> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input 1" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Input 2" ; + lv2:symbol "port1" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 2 ; + lv2:name "Probability" ; + lv2:symbol "port2" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 3 ; + lv2:name "Output" ; + lv2:symbol "port3" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Probability Switch" ; + a lv2:Plugin . diff --git a/omins.lv2/range_trans.ttl b/omins.lv2/range_trans.ttl new file mode 100644 index 0000000..9e57d20 --- /dev/null +++ b/omins.lv2/range_trans.ttl @@ -0,0 +1,63 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/range_trans> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:default 0 ; + lv2:index 0 ; + lv2:name "Input Min" ; + lv2:symbol "port0" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 1 ; + lv2:name "Input Max" ; + lv2:symbol "port1" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 0 ; + lv2:index 2 ; + lv2:name "Output Min" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 3 ; + lv2:name "Output Max" ; + lv2:symbol "port3" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 4 ; + lv2:name "Input" ; + lv2:symbol "port4" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 5 ; + lv2:name "Output" ; + lv2:symbol "port5" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Range Translator" ; + a lv2:Plugin . diff --git a/omins.lv2/sample_and_hold.ttl b/omins.lv2/sample_and_hold.ttl new file mode 100644 index 0000000..e131fa1 --- /dev/null +++ b/omins.lv2/sample_and_hold.ttl @@ -0,0 +1,53 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/sample_and_hold> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input" ; + lv2:symbol "in" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Trigger" ; + lv2:symbol "trigger" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 2 ; + lv2:name "Threshold" ; + lv2:symbol "threshold" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 3 ; + lv2:name "Continuous Triggering" ; + lv2:portProperty lv2:toggled ; + lv2:symbol "continuous" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 4 ; + lv2:name "Output" ; + lv2:symbol "out" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Sample and Hold" ; + a lv2:Plugin . diff --git a/omins.lv2/signal_abs.ttl b/omins.lv2/signal_abs.ttl new file mode 100644 index 0000000..a3f89a2 --- /dev/null +++ b/omins.lv2/signal_abs.ttl @@ -0,0 +1,40 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/signal_abs> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input" ; + lv2:symbol "port0" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 1 ; + lv2:name "Sign" ; + lv2:portProperty lv2:toggled ; + lv2:symbol "port1" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 2 ; + lv2:name "Output" ; + lv2:symbol "port2" ; + a lv2:AudioPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Signed Absolute Value" ; + a lv2:Plugin . diff --git a/omins.lv2/slew_limiter.ttl b/omins.lv2/slew_limiter.ttl new file mode 100644 index 0000000..f56985d --- /dev/null +++ b/omins.lv2/slew_limiter.ttl @@ -0,0 +1,48 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<http://drobilla.net/plugins/omins/slew_limiter> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input" ; + lv2:symbol "in" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Rise rate" ; + lv2:symbol "rise_rate" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port ; + units:unit units:hz + ] , [ + lv2:index 2 ; + lv2:name "Fall rate" ; + lv2:symbol "fall_rate" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port ; + units:unit units:hz + ] , [ + lv2:index 3 ; + lv2:name "Output" ; + lv2:symbol "out" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Slew Limiter" ; + a lv2:Plugin . diff --git a/omins.lv2/slide.ttl b/omins.lv2/slide.ttl new file mode 100644 index 0000000..90f21be --- /dev/null +++ b/omins.lv2/slide.ttl @@ -0,0 +1,48 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . +@prefix units: <http://lv2plug.in/ns/extensions/units#> . + +<http://drobilla.net/plugins/omins/slide> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Input" ; + lv2:symbol "in" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Rise time" ; + lv2:symbol "rise_time" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:index 2 ; + lv2:name "Fall time" ; + lv2:symbol "fall_time" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port ; + units:unit units:s + ] , [ + lv2:index 3 ; + lv2:name "Output" ; + lv2:symbol "out" ; + a lv2:CVPort , + lv2:OutputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Slide" ; + a lv2:Plugin . diff --git a/omins.lv2/waveguide_mesh.ttl b/omins.lv2/waveguide_mesh.ttl new file mode 100644 index 0000000..01e502f --- /dev/null +++ b/omins.lv2/waveguide_mesh.ttl @@ -0,0 +1,70 @@ +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix omins: <http://drobilla.net/plugins/omins/> . +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . + +<http://drobilla.net/plugins/omins/waveguide_mesh> + lv2:microVersion 0 ; + lv2:minorVersion 0 ; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:port [ + lv2:index 0 ; + lv2:name "Trigger" ; + lv2:symbol "port0" ; + a lv2:CVPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 1 ; + lv2:name "Output" ; + lv2:symbol "port1" ; + a lv2:AudioPort , + lv2:OutputPort , + lv2:Port + ] , [ + lv2:default 0.11005 ; + lv2:index 2 ; + lv2:maximum 0.22 ; + lv2:minimum 0.0001 ; + lv2:name "Tension" ; + lv2:symbol "port2" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:index 3 ; + lv2:name "Power" ; + lv2:symbol "port3" ; + a lv2:AudioPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 4 ; + lv2:maximum 7.01 ; + lv2:minimum 0.95 ; + lv2:name "Excitation X" ; + lv2:portProperty lv2:integer ; + lv2:symbol "port4" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] , [ + lv2:default 1 ; + lv2:index 5 ; + lv2:maximum 7.01 ; + lv2:minimum 0.95 ; + lv2:name "Excitation Y" ; + lv2:portProperty lv2:integer ; + lv2:symbol "port5" ; + a lv2:ControlPort , + lv2:InputPort , + lv2:Port + ] ; + lv2:project omins: ; + doap:name "Simple Waveguide Mesh" ; + a lv2:Plugin . diff --git a/omins.spec b/omins.spec new file mode 100644 index 0000000..4e6d3ef --- /dev/null +++ b/omins.spec @@ -0,0 +1,41 @@ +Summary: A collection of plugins useful for modular synths. +Name: omins +Version: 0.0.1 +Release: 1 +License: GPL +Group: Applications/Multimedia +URL: http://www.nongnu.org/om-synth/ +Source0: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot +Requires: ladspa +BuildRequires: ladspa-devel + +%description +Omins is a collection of ladspa plugins that are useful for modular synths. This includes a formant filter, envelope generators, probalistic switches, and rate converters. + +%prep +%setup -q + +%build +%configure +make + +%install +%{__rm} -rf %{buildroot} +%{__make} install \ + DESTDIR="%{buildroot}" + + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root,root,-) +%{_libdir}/ladspa/*.so +%doc AUTHORS ChangeLog COPYING NEWS README + + +%changelog +* Tue Apr 26 2005 Loki Davison <loki@berlios.de> +- initial package, v0.0.1 + diff --git a/src/adenv.c b/src/adenv.c new file mode 100644 index 0000000..dabca16 --- /dev/null +++ b/src/adenv.c @@ -0,0 +1,250 @@ +/* + adenv.c - A LV2 plugin to generate percussive (i.e no sustain time), linear AD envelopes. + + Copyright 2005 Loki Davison + based on ADENV by Mike Rawes + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> +#include <stdio.h> +#include <math.h> + +#define ADENV_BASE_ID 2661 + +#define ADENV_GATE 0 +#define ADENV_TRIGGER 1 +#define ADENV_ATTACK 2 +#define ADENV_DECAY 3 +#define ADENV_OUTPUT 4 + +LV2_Descriptor **dahdsr_descriptors = 0; + +typedef enum { + IDLE, + ATTACK, + DECAY, +} ADENVState; + +typedef struct { + float *gate; + float *trigger; + float *attack; + float *decay; + float *output; + float srate; + float inv_srate; + float last_gate; + float last_trigger; + float from_level; + float level; + ADENVState state; + unsigned long samples; +} Dahdsr; + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + switch (port) { + case ADENV_GATE: + plugin->gate = (float*)data; + break; + case ADENV_TRIGGER: + plugin->trigger = (float*)data; + break; + case ADENV_ATTACK: + plugin->attack = (float*)data; + break; + case ADENV_DECAY: + plugin->decay = (float*)data; + break; + case ADENV_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr)); + + plugin->srate = (float) sample_rate; + plugin->inv_srate = 1.0f / plugin->srate; + + return (LV2_Handle) plugin; +} + +static void +activate(LV2_Handle instance) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + plugin->last_gate = 0.0f; + plugin->last_trigger = 0.0f; + plugin->from_level = 0.0f; + plugin->level = 0.0f; + plugin->state = IDLE; + plugin->samples = 0; +} + +static void +run(LV2_Handle instance, uint32_t sample_count) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + /* Gate */ + float *gate = plugin->gate; + + /* Trigger */ + float *trigger = plugin->trigger; + + /* Attack Time (s) */ + float attack = *(plugin->attack); + + /* Decay Time (s) */ + float decay = *(plugin->decay); + + /* Envelope Out */ + float *output = plugin->output; + + /* Instance Data */ + float srate = plugin->srate; + float inv_srate = plugin->inv_srate; + float last_gate = plugin->last_gate; + float last_trigger = plugin->last_trigger; + float from_level = plugin->from_level; + float level = plugin->level; + ADENVState state = plugin->state; + unsigned long samples = plugin->samples; + + float gat, trg, att, dec; + float elapsed; + unsigned long s; + + /* Convert times into rates */ + att = attack > 0.0f ? inv_srate / attack : srate; + dec = decay > 0.0f ? inv_srate / decay : srate; + /* cuse's formula ... + * ReleaseCoeff = (ln(EndLevel) - ln(StartLevel)) / (EnvelopeDuration * SampleRate) + * + * while (currentSample < endSample) Level += Level * ReleaseCoeff; + */ + + float ReleaseCoeff = log(0.001) / (decay * srate); + + for (s = 0; s < sample_count; s++) { + gat = gate[s]; + trg = trigger[s]; + + /* Initialise delay phase if gate is opened and was closed, or + we received a trigger */ + if ((trg > 0.0f && !(last_trigger > 0.0f)) || + (gat > 0.0f && !(last_gate > 0.0f))) { + //fprintf(stderr, "triggered in control \n"); + if (att <= srate) { + state = ATTACK; + } + samples = 0; + } + + if (samples == 0) + from_level = level; + + /* Calculate level of envelope from current state */ + switch (state) { + case IDLE: + level = 0; + break; + case ATTACK: + samples++; + elapsed = (float) samples *att; + + if (elapsed > 1.0f) { + state = DECAY; + level = 1.0f; + samples = 0; + } else { + level = from_level + elapsed * (1.0f - from_level); + } + break; + case DECAY: + samples++; + elapsed = (float) samples *dec; + + if (elapsed > 1.0f) { + state = IDLE; + level = 0.0f; + samples = 0; + } else { + //fprintf(stderr, "decay, dec %f elapsed %f from level %f level %f\n", dec, elapsed, from_level, level); + level += level * ReleaseCoeff; + + } + break; + default: + /* Should never happen */ + fprintf(stderr, "bugger!!!"); + level = 0.0f; + } + + output[s] = level; + last_gate = gat; + last_trigger = trg; + } + + plugin->last_gate = last_gate; + plugin->last_trigger = last_trigger; + plugin->from_level = from_level; + plugin->level = level; + plugin->state = state; + plugin->samples = samples; +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/adenv", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/adenv_lvl.c b/src/adenv_lvl.c new file mode 100644 index 0000000..4fb6a9c --- /dev/null +++ b/src/adenv_lvl.c @@ -0,0 +1,299 @@ +/* + adenv.c - A LV2 plugin to generate percussive (i.e no sustain time), linear AD envelopes. + This one takes in levels to make filter sweeps/etc easier. + + Copyright 2005 Loki Davison + based of DADSR by Mike Rawes + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> +#include <stdio.h> +#include <math.h> + +#define ADENVLVL_BASE_ID 2662 +#define ADENVLVL_VARIANT_COUNT 1 + +#define ADENVLVL_GATE 0 +#define ADENVLVL_TRIGGER 1 +#define ADENVLVL_START_LEVEL 2 +#define ADENVLVL_ATTACK_LEVEL 3 +#define ADENVLVL_DECAY_LEVEL 4 +#define ADENVLVL_ATTACK 5 +#define ADENVLVL_DECAY 6 +#define ADENVLVL_OUTPUT 7 +#define ADENVLVL_RESET 8 + +typedef enum { + IDLE, + ATTACK, + DECAY, +} ADENVLVLState; + +typedef struct { + float *gate; + float *trigger; + float *attack; + float *reset; + float *decay; + float *start_level; + float *attack_level; + float *decay_level; + float *output; + float srate; + float inv_srate; + float last_gate; + float last_trigger; + float last_reset; + float level; + ADENVLVLState state; + unsigned long samples; +} Dahdsr; + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static void +connect_port(LV2_Handle instance, + uint32_t port, void * data) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + switch (port) { + case ADENVLVL_GATE: + plugin->gate = (float*)data; + break; + case ADENVLVL_TRIGGER: + plugin->trigger = (float*)data; + break; + case ADENVLVL_START_LEVEL: + plugin->start_level = (float*)data; + break; + case ADENVLVL_ATTACK_LEVEL: + plugin->attack_level = (float*)data; + break; + case ADENVLVL_DECAY_LEVEL: + plugin->decay_level = (float*)data; + break; + case ADENVLVL_ATTACK: + plugin->attack = (float*)data; + break; + case ADENVLVL_DECAY: + plugin->decay = (float*)data; + break; + case ADENVLVL_RESET: + plugin->reset = (float*)data; + break; + case ADENVLVL_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr)); + + plugin->srate = (float) sample_rate; + plugin->inv_srate = 1.0f / plugin->srate; + + return (LV2_Handle) plugin; +} + +static void +activate(LV2_Handle instance) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + plugin->last_gate = 0.0f; + plugin->last_trigger = 0.0f; + plugin->last_reset = 0.0f; + plugin->level = 0.0f; + plugin->state = IDLE; + plugin->samples = 0; +} + +static void +run(LV2_Handle instance, uint32_t sample_count) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + /* Gate */ + float *gate = plugin->gate; + + /* Trigger */ + float *trigger = plugin->trigger; + + /* Reset */ + float *reset = plugin->reset; + + /* Start Level */ + float start_level = *(plugin->start_level); + + /* Attack Level */ + float attack_level = *(plugin->attack_level); + + /* Decay Level */ + float decay_level = *(plugin->decay_level); + + /* Attack Time (s) */ + float attack = *(plugin->attack); + + /* Decay Time (s) */ + float decay = *(plugin->decay); + + /* Envelope Out */ + float *output = plugin->output; + + /* Instance Data */ + float srate = plugin->srate; + float inv_srate = plugin->inv_srate; + float last_gate = plugin->last_gate; + float last_trigger = plugin->last_trigger; + float last_reset = plugin->last_reset; + float level = plugin->level; + ADENVLVLState state = plugin->state; + unsigned long samples = plugin->samples; + + float gat, trg, att, dec; + float elapsed; + unsigned long s; + + /* Convert times into rates */ + att = attack > 0.0f ? inv_srate / attack : srate; + dec = decay > 0.0f ? inv_srate / decay : srate; + /* cuse's formula ... + * ReleaseCoeff = (ln(EndLevel) - ln(StartLevel)) / (EnvelopeDuration * SampleRate) + * + * while (currentSample < endSample) Level += Level * ReleaseCoeff; + */ + /* check params don't cause div by zero */ + if (start_level == 0) { + start_level = 0.0000001; + } + if (attack_level == 0) { + attack_level = 0.0000001; + } + if (decay_level == 0) { + decay_level = 0.0000001; + } + float ReleaseCoeff_att = + (log(attack_level) - log(start_level)) / (attack * srate); + float ReleaseCoeff_dec = + (log(decay_level) - log(attack_level)) / (decay * srate); + + for (s = 0; s < sample_count; s++) { + gat = gate[s]; + trg = trigger[s]; + + /* Initialise delay phase if gate is opened and was closed, or + we received a trigger */ + if ((trg > 0.0f && !(last_trigger > 0.0f)) || + (gat > 0.0f && !(last_gate > 0.0f))) { + //fprintf(stderr, "triggered in control \n"); + if (att < srate) { + state = ATTACK; + } + samples = 0; + } + /* if we got a reset */ + + if (reset[s] > 0.0f && !(last_reset > 0.0f)) { + level = start_level; + /*fprintf(stderr, "got reset start level %f \n", start_level); */ + } + + /* Calculate level of envelope from current state */ + switch (state) { + case IDLE: + /* might need to fix this... */ + break; + case ATTACK: + /* fix level adding prob */ + if (samples == 0) { + level = start_level; + } + samples++; + elapsed = (float) samples *att; + + if (elapsed > 1.0f) { + state = DECAY; + samples = 0; + //fprintf(stderr, "finished attack, RC %f, level %f attack_level %f start %f\n", ReleaseCoeff_att, level, attack_level, start_level); + } else { + level += level * ReleaseCoeff_att; + } + break; + case DECAY: + samples++; + elapsed = (float) samples *dec; + + if (elapsed > 1.0f) { + //fprintf(stderr, "finished decay, RC %f , level %f decay_level %f start %f\n", ReleaseCoeff_dec, level, decay_level, start_level); + state = IDLE; + samples = 0; + } else { + level += level * ReleaseCoeff_dec; + } + break; + default: + /* Should never happen */ + fprintf(stderr, "bugger!!!"); + level = 0.0f; + } + + output[s] = level; + last_gate = gat; + last_trigger = trg; + last_reset = reset[s]; + } + + plugin->last_gate = last_gate; + plugin->last_trigger = last_trigger; + plugin->last_reset = last_reset; + plugin->level = level; + plugin->state = state; + plugin->samples = samples; +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/adenv_lvl", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/comparison.c b/src/comparison.c new file mode 100644 index 0000000..009989b --- /dev/null +++ b/src/comparison.c @@ -0,0 +1,135 @@ +/* Comparison plugin. + * Copyright 2005 Thorsten Wilms. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#include "lv2.h" + +#define COMP_BASE_ID 4440 + +#define COMP_NUM_PORTS 6 + +/* Port Numbers */ +#define COMP_A 0 +#define COMP_B 1 +#define COMP_LARGER 2 +#define COMP_SMALLER 3 +#define COMP_A_LARGER 4 +#define COMP_EQUAL 5 + +/* All state information for plugin */ +typedef struct { + /* Ports */ + float *a_buffer; + float *b_buffer; + float *larger_buffer; + float *smaller_buffer; + float *a_larger_buffer; + float *equal_buffer; +} Comp; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + Comp* plugin = (Comp*)calloc(1, sizeof(Comp)); + + return (LV2_Handle)plugin; +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + Comp* plugin = (Comp*)instance; + switch (port) { + case COMP_A: + plugin->a_buffer = (float*)data; + break; + case COMP_B: + plugin->b_buffer = (float*)data; + break; + case COMP_LARGER: + plugin->larger_buffer = (float*)data; + break; + case COMP_SMALLER: + plugin->smaller_buffer = (float*)data; + break; + case COMP_A_LARGER: + plugin->a_larger_buffer = (float*)data; + break; + case COMP_EQUAL: + plugin->equal_buffer = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + Comp* const plugin = (Comp*)instance; + const float* const a = plugin->a_buffer; + const float* const b = plugin->b_buffer; + float* const larger = plugin->larger_buffer; + float* const smaller = plugin->smaller_buffer; + float* const a_larger = plugin->a_larger_buffer; + float* const equal = plugin->equal_buffer; + unsigned long i; + + for (i = 0; i < nframes; i++) { + equal[i] = (a[i] == b[i]) ? 1.0 : 0.0; + larger[i] = (a[i] > b[i]) ? a[i] : b[i]; + smaller[i] = (a[i] < b[i]) ? a[i] : b[i]; + a_larger[i] = (a[i] > b[i]) ? 1.0 : 0.0; + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/comparison", + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/dahdsr_fexp.c b/src/dahdsr_fexp.c new file mode 100644 index 0000000..7e92c09 --- /dev/null +++ b/src/dahdsr_fexp.c @@ -0,0 +1,342 @@ +/* + dahdsr_fexp.c - A LV2 plugin to generate DAHDSR envelopes + exponential attack, decay and release version. + Copyright 2005 Loki Davison, based on DAHDSR by Mike Rawes + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> +#include <math.h> + +#define DAHDSR_GATE 0 +#define DAHDSR_TRIGGER 1 +#define DAHDSR_DELAY 2 +#define DAHDSR_ATTACK 3 +#define DAHDSR_HOLD 4 +#define DAHDSR_DECAY 5 +#define DAHDSR_SUSTAIN 6 +#define DAHDSR_RELEASE 7 +#define DAHDSR_OUTPUT 8 + +typedef enum { + IDLE, + DELAY, + ATTACK, + HOLD, + DECAY, + SUSTAIN, + RELEASE +} DAHDSRState; + +typedef struct { + float *gate; + float *trigger; + float *delay; + float *attack; + float *hold; + float *decay; + float *sustain; + float *release; + float *output; + float srate; + float inv_srate; + float last_gate; + float last_trigger; + float from_level; + float level; + DAHDSRState state; + unsigned long samples; +} Dahdsr; + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + switch (port) { + case DAHDSR_GATE: + plugin->gate = (float*)data; + break; + case DAHDSR_TRIGGER: + plugin->trigger = (float*)data; + break; + case DAHDSR_DELAY: + plugin->delay = (float*)data; + break; + case DAHDSR_ATTACK: + plugin->attack = (float*)data; + break; + case DAHDSR_HOLD: + plugin->hold = (float*)data; + break; + case DAHDSR_DECAY: + plugin->decay = (float*)data; + break; + case DAHDSR_SUSTAIN: + plugin->sustain = (float*)data; + break; + case DAHDSR_RELEASE: + plugin->release = (float*)data; + break; + case DAHDSR_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr)); + + plugin->srate = (float) sample_rate; + plugin->inv_srate = 1.0f / plugin->srate; + + return (LV2_Handle) plugin; +} + +static void +activate(LV2_Handle instance) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + plugin->last_gate = 0.0f; + plugin->last_trigger = 0.0f; + plugin->from_level = 0.0f; + plugin->level = 0.0f; + plugin->state = IDLE; + plugin->samples = 0; +} + +static void +run(LV2_Handle instance, uint32_t sample_count) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + /* Gate */ + float *gate = plugin->gate; + + /* Trigger */ + float *trigger = plugin->trigger; + + /* Delay Time (s) */ + float delay = *(plugin->delay); + + /* Attack Time (s) */ + float attack = *(plugin->attack); + + /* Hold Time (s) */ + float hold = *(plugin->hold); + + /* Decay Time (s) */ + float decay = *(plugin->decay); + + /* Sustain Level */ + float sustain = *(plugin->sustain); + + /* Release Time (s) */ + float release = *(plugin->release); + + /* Envelope Out */ + float *output = plugin->output; + + /* Instance Data */ + float srate = plugin->srate; + float inv_srate = plugin->inv_srate; + float last_gate = plugin->last_gate; + float last_trigger = plugin->last_trigger; + float from_level = plugin->from_level; + float level = plugin->level; + DAHDSRState state = plugin->state; + unsigned long samples = plugin->samples; + + float gat, trg, del, att, hld, dec, sus, rel; + float elapsed; + unsigned long s; + + /* Convert times into rates */ + del = delay > 0.0f ? inv_srate / delay : srate; + att = attack > 0.0f ? inv_srate / attack : srate; + hld = hold > 0.0f ? inv_srate / hold : srate; + dec = decay > 0.0f ? inv_srate / decay : srate; + rel = release > 0.0f ? inv_srate / release : srate; + sus = sustain; + + if (sus == 0.0f) { + sus = 0.001f; + } + if (sus > 1.0f) { + sus = 1.0f; + } + + float ReleaseCoeff_att = (0 - log(0.001)) / (attack * srate); + float ReleaseCoeff_dec = (log(sus)) / (decay * srate); + float ReleaseCoeff_rel = + (log(0.001) - log(sus)) / (release * srate); + + for (s = 0; s < sample_count; s++) { + gat = gate[s]; + trg = trigger[s]; + + /* Initialise delay phase if gate is opened and was closed, or + we received a trigger */ + if ((trg > 0.0f && !(last_trigger > 0.0f)) || + (gat > 0.0f && !(last_gate > 0.0f))) { + if (del < srate) { + state = DELAY; + } else if (att < srate) { + state = ATTACK; + } else { + state = hld < srate ? HOLD + : (dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN + : (rel < srate ? RELEASE : IDLE))); + level = 1.0f; + } + samples = 0; + } + + /* Release if gate was open and now closed */ + if (state != IDLE && state != RELEASE && + last_gate > 0.0f && !(gat > 0.0f)) { + state = rel < srate ? RELEASE : IDLE; + samples = 0; + } + + if (samples == 0) + from_level = level; + + /* Calculate level of envelope from current state */ + switch (state) { + case IDLE: + level = 0; + break; + case DELAY: + samples++; + elapsed = (float) samples *del; + + if (elapsed > 1.0f) { + state = att < srate ? ATTACK + : (hld < srate ? HOLD + : (dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN + : (rel < srate ? RELEASE : IDLE)))); + samples = 0; + } + break; + case ATTACK: + samples++; + elapsed = (float) samples *att; + + if (elapsed > 1.0f) { + state = hld < srate ? HOLD + : (dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN + : (rel < srate ? RELEASE : IDLE))); + level = 1.0f; + samples = 0; + } else { + level += level * ReleaseCoeff_att; + } + break; + case HOLD: + samples++; + elapsed = (float) samples *hld; + + if (elapsed > 1.0f) { + state = dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE)); + samples = 0; + } + break; + case DECAY: + samples++; + elapsed = (float) samples *dec; + + if (elapsed > 1.0f) { + state = gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE); + level = sus; + samples = 0; + } else { + level += level * ReleaseCoeff_dec; + } + break; + case SUSTAIN: + level = sus; + break; + case RELEASE: + samples++; + elapsed = (float) samples *rel; + + if (elapsed > 1.0f) { + state = IDLE; + level = 0.0f; + samples = 0; + } else { + level += level * ReleaseCoeff_rel; + } + break; + default: + /* Should never happen */ + level = 0.0f; + } + + output[s] = level; + + last_gate = gat; + last_trigger = trg; + } + + plugin->last_gate = last_gate; + plugin->last_trigger = last_trigger; + plugin->from_level = from_level; + plugin->level = level; + plugin->state = state; + plugin->samples = samples; +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/dahdsr_fexp", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/dahdsr_hexp.c b/src/dahdsr_hexp.c new file mode 100644 index 0000000..8f45fc9 --- /dev/null +++ b/src/dahdsr_hexp.c @@ -0,0 +1,344 @@ +/* + dahdsr.so.c - A LV2 plugin to generate DAHDSR envelopes + linear attack, exponential decay and release version. + Copyright 2005 Loki Davison, based on DAHDSR by Mike Rawes + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +*/ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> +#include <math.h> + +#define DAHDSR_GATE 0 +#define DAHDSR_TRIGGER 1 +#define DAHDSR_DELAY 2 +#define DAHDSR_ATTACK 3 +#define DAHDSR_HOLD 4 +#define DAHDSR_DECAY 5 +#define DAHDSR_SUSTAIN 6 +#define DAHDSR_RELEASE 7 +#define DAHDSR_OUTPUT 8 + +LV2_Descriptor **dahdsr_descriptors = 0; + +typedef enum { + IDLE, + DELAY, + ATTACK, + HOLD, + DECAY, + SUSTAIN, + RELEASE +} DAHDSRState; + +typedef struct { + float *gate; + float *trigger; + float *delay; + float *attack; + float *hold; + float *decay; + float *sustain; + float *release; + float *output; + float srate; + float inv_srate; + float last_gate; + float last_trigger; + float from_level; + float level; + DAHDSRState state; + unsigned long samples; +} Dahdsr; + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + switch (port) { + case DAHDSR_GATE: + plugin->gate = (float*)data; + break; + case DAHDSR_TRIGGER: + plugin->trigger = (float*)data; + break; + case DAHDSR_DELAY: + plugin->delay = (float*)data; + break; + case DAHDSR_ATTACK: + plugin->attack = (float*)data; + break; + case DAHDSR_HOLD: + plugin->hold = (float*)data; + break; + case DAHDSR_DECAY: + plugin->decay = (float*)data; + break; + case DAHDSR_SUSTAIN: + plugin->sustain = (float*)data; + break; + case DAHDSR_RELEASE: + plugin->release = (float*)data; + break; + case DAHDSR_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + Dahdsr *plugin = (Dahdsr *) malloc(sizeof(Dahdsr)); + + plugin->srate = (float) sample_rate; + plugin->inv_srate = 1.0f / plugin->srate; + + return (LV2_Handle) plugin; +} + +static void +activate(LV2_Handle instance) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + plugin->last_gate = 0.0f; + plugin->last_trigger = 0.0f; + plugin->from_level = 0.0f; + plugin->level = 0.0f; + plugin->state = IDLE; + plugin->samples = 0; +} + +static void +run(LV2_Handle instance, uint32_t sample_count) +{ + Dahdsr *plugin = (Dahdsr *) instance; + + /* Gate */ + float *gate = plugin->gate; + + /* Trigger */ + float *trigger = plugin->trigger; + + /* Delay Time (s) */ + float delay = *(plugin->delay); + + /* Attack Time (s) */ + float attack = *(plugin->attack); + + /* Hold Time (s) */ + float hold = *(plugin->hold); + + /* Decay Time (s) */ + float decay = *(plugin->decay); + + /* Sustain Level */ + float sustain = *(plugin->sustain); + + /* Release Time (s) */ + float release = *(plugin->release); + + /* Envelope Out */ + float *output = plugin->output; + + /* Instance Data */ + float srate = plugin->srate; + float inv_srate = plugin->inv_srate; + float last_gate = plugin->last_gate; + float last_trigger = plugin->last_trigger; + float from_level = plugin->from_level; + float level = plugin->level; + DAHDSRState state = plugin->state; + unsigned long samples = plugin->samples; + + float gat, trg, del, att, hld, dec, sus, rel; + float elapsed; + unsigned long s; + + /* Convert times into rates */ + del = delay > 0.0f ? inv_srate / delay : srate; + att = attack > 0.0f ? inv_srate / attack : srate; + hld = hold > 0.0f ? inv_srate / hold : srate; + dec = decay > 0.0f ? inv_srate / decay : srate; + rel = release > 0.0f ? inv_srate / release : srate; + sus = sustain; + + if (sus == 0) { + sus = 0.001; + } + if (sus > 1.0f) { + sus = 1.0f; + } + + //float ReleaseCoeff_att = (0 - log(0.001)) / (attack * srate); + float ReleaseCoeff_dec = (log(sus)) / (decay * srate); + float ReleaseCoeff_rel = + (log(0.001) - log(sus)) / (release * srate); + + for (s = 0; s < sample_count; s++) { + gat = gate[s]; + trg = trigger[s]; + + /* Initialise delay phase if gate is opened and was closed, or + we received a trigger */ + if ((trg > 0.0f && !(last_trigger > 0.0f)) || + (gat > 0.0f && !(last_gate > 0.0f))) { + if (del < srate) { + state = DELAY; + } else if (att < srate) { + state = ATTACK; + } else { + state = hld < srate ? HOLD + : (dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN + : (rel < srate ? RELEASE : IDLE))); + level = 1.0f; + } + samples = 0; + } + + /* Release if gate was open and now closed */ + if (state != IDLE && state != RELEASE && + last_gate > 0.0f && !(gat > 0.0f)) { + state = rel < srate ? RELEASE : IDLE; + samples = 0; + } + + if (samples == 0) + from_level = level; + + /* Calculate level of envelope from current state */ + switch (state) { + case IDLE: + level = 0; + break; + case DELAY: + samples++; + elapsed = (float) samples *del; + + if (elapsed > 1.0f) { + state = att < srate ? ATTACK + : (hld < srate ? HOLD + : (dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN + : (rel < srate ? RELEASE : IDLE)))); + samples = 0; + } + break; + case ATTACK: + samples++; + elapsed = (float) samples *att; + + if (elapsed > 1.0f) { + state = hld < srate ? HOLD + : (dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN + : (rel < srate ? RELEASE : IDLE))); + level = 1.0f; + samples = 0; + } else { + level = from_level + elapsed * (1.0f - from_level); + } + break; + case HOLD: + samples++; + elapsed = (float) samples *hld; + + if (elapsed > 1.0f) { + state = dec < srate ? DECAY + : (gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE)); + samples = 0; + } + break; + case DECAY: + samples++; + elapsed = (float) samples *dec; + + if (elapsed > 1.0f) { + state = gat > 0.0f ? SUSTAIN : (rel < srate ? RELEASE : IDLE); + level = sus; + samples = 0; + } else { + level += level * ReleaseCoeff_dec; + } + break; + case SUSTAIN: + level = sus; + break; + case RELEASE: + samples++; + elapsed = (float) samples *rel; + + if (elapsed > 1.0f) { + state = IDLE; + level = 0.0f; + samples = 0; + } else { + level += level * ReleaseCoeff_rel; + } + break; + default: + /* Should never happen */ + level = 0.0f; + } + + output[s] = level; + + last_gate = gat; + last_trigger = trg; + } + + plugin->last_gate = last_gate; + plugin->last_trigger = last_trigger; + plugin->from_level = from_level; + plugin->level = level; + plugin->state = state; + plugin->samples = samples; +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/dahdsr_hexp", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/fast_crossfade.c b/src/fast_crossfade.c new file mode 100644 index 0000000..0e4389b --- /dev/null +++ b/src/fast_crossfade.c @@ -0,0 +1,139 @@ +/* Crossfade with AR Level plugin. + * Copyright 2005 Thorsten Wilms. + * + * Based on David Robillard's "Hz to AMS style V/Oct" plugin for the skeleton. + * Thanks to Florian Schmidt for explaining how to calculate the scale values + * before I could work it out myself! ;-) + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define XFADE_LEVEL_ID 4410 + +#define XFADE_NUM_PORTS 4 + +/* Port Numbers */ +#define XFADE_LEVEL 0 +#define XFADE_A 1 +#define XFADE_B 2 +#define XFADE_OUTPUT 3 + +/* All state information for plugin */ +typedef struct { + /* Ports */ + float *level_buffer; + float *a_buffer; + float *b_buffer; + float *output_buffer; +} XFADE; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(XFADE)); +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + XFADE* plugin; + + plugin = (XFADE*) instance; + switch (port) { + case XFADE_LEVEL: + plugin->level_buffer = (float*)data; + break; + case XFADE_A: + plugin->a_buffer = (float*)data; + break; + case XFADE_B: + plugin->b_buffer = (float*)data; + break; + case XFADE_OUTPUT: + plugin->output_buffer = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + float* level; + float* a; + float* b; + float* output; + XFADE* plugin; + unsigned long i; + float l; + + plugin = (XFADE*)instance; + + level = plugin->level_buffer; + a = plugin->a_buffer; + b = plugin->b_buffer; + output = plugin->output_buffer; + + for (i = 0; i < nframes; i++) { + /* transfer multiplication value to 0 to 1 range */ + if (level[i] < -1) { + l = 0; + } else if (level[i] > 1) { + l = 1; + } else { + l = (level[i] + 1) / 2; + } + + output[i] = a[i] * l + b[i] * (1 - l); + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/fast_crossfade", + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/formant_filter.c b/src/formant_filter.c new file mode 100644 index 0000000..afbf4f7 --- /dev/null +++ b/src/formant_filter.c @@ -0,0 +1,213 @@ +/* Formant filter plugin. Copyright 2005-2011 David Robillard. + * + * Based on SSM formant filter, + * Copyright 2001 David Griffiths <dave@pawfal.org> + * + * Based on public domain code from alex@smartelectronix.com + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define FORMANT_BASE_ID 4300 + +#define FORMANT_NUM_PORTS 3 + +/* Port Numbers */ +#define FORMANT_VOWEL 0 +#define FORMANT_INPUT 1 +#define FORMANT_OUTPUT 2 + +/* Vowel Coefficients */ +const double coeff[5][11] = { + { /* A */ 8.11044e-06, + 8.943665402, -36.83889529, 92.01697887, -154.337906, 181.6233289, + -151.8651235, 89.09614114, -35.10298511, 8.388101016, -0.923313471 + }, + { /* E */ 4.36215e-06, + 8.90438318, -36.55179099, 91.05750846, -152.422234, 179.1170248, + -149.6496211, 87.78352223, -34.60687431, 8.282228154, -0.914150747 + }, + { /* I */ 3.33819e-06, + 8.893102966, -36.49532826, 90.96543286, -152.4545478, 179.4835618, + -150.315433, 88.43409371, -34.98612086, 8.407803364, -0.932568035 + }, + { /* O */ 1.13572e-06, + 8.994734087, -37.2084849, 93.22900521, -156.6929844, 184.596544, + -154.3755513, 90.49663749, -35.58964535, 8.478996281, -0.929252233 + }, + { /* U */ 4.09431e-07, + 8.997322763, -37.20218544, 93.11385476, -156.2530937, 183.7080141, + -153.2631681, 89.59539726, -35.12454591, 8.338655623, -0.910251753 + } +}; + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* vowel; + float* input; + float* output; + + double memory[5][10]; +} Formant; + +/* Linear interpolation */ +inline static float +linear(float bot, float top, float pos, float val1, float val2) +{ + float t = (pos - bot) / (top - bot); + return val1 * t + val2 * (1.0f - t); +} + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(Formant)); +} + +/** Activate an instance */ +static void +activate(LV2_Handle instance) +{ + Formant* plugin = (Formant*)instance; + int i, j; + + for (i = 0; i < 5; ++i) + for (j = 0; j < 10; ++j) + plugin->memory[i][j] = 0.0; +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + Formant* plugin = (Formant*)instance; + switch (port) { + case FORMANT_VOWEL: + plugin->vowel = (float*)data; + break; + case FORMANT_INPUT: + plugin->input = (float*)data; + break; + case FORMANT_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + Formant* plugin = (Formant*)instance; + float vowel; + float in; + float* out; + float res; + float o[5]; + size_t n, v; + + for (n=0; n < nframes; ++n) { + vowel = plugin->vowel[0]; + in = plugin->input[n]; + out = plugin->output; + + for (v=0; v < 5; ++v) { + res = (float) (coeff[v][0] * (in * 0.1f) + + coeff[v][1] * plugin->memory[v][0] + + coeff[v][2] * plugin->memory[v][1] + + coeff[v][3] * plugin->memory[v][2] + + coeff[v][4] * plugin->memory[v][3] + + coeff[v][5] * plugin->memory[v][4] + + coeff[v][6] * plugin->memory[v][5] + + coeff[v][7] * plugin->memory[v][6] + + coeff[v][8] * plugin->memory[v][7] + + coeff[v][9] * plugin->memory[v][8] + + coeff[v][10] * plugin->memory[v][9] ); + + plugin->memory[v][9] = plugin->memory[v][8]; + plugin->memory[v][8] = plugin->memory[v][7]; + plugin->memory[v][7] = plugin->memory[v][6]; + plugin->memory[v][6] = plugin->memory[v][5]; + plugin->memory[v][5] = plugin->memory[v][4]; + plugin->memory[v][4] = plugin->memory[v][3]; + plugin->memory[v][3] = plugin->memory[v][2]; + plugin->memory[v][2] = plugin->memory[v][1]; + plugin->memory[v][1] = plugin->memory[v][0]; + plugin->memory[v][0] = (double)res; + + o[v] = res; + } + + // Mix between formants + if (vowel <= 0) + out[n] = o[0]; + else if (vowel > 0 && vowel < 1) + out[n] = linear(0.0f, 1.0f, vowel, o[1], o[0]); + else if (vowel == 1) + out[n] = o[1]; + else if (vowel > 1 && vowel < 2) + out[n] = linear(0.0f, 1.0f, vowel - 1.0f, o[2], o[1]); + else if (vowel == 2) + out[n] = o[2]; + else if (vowel > 2 && vowel < 3) + out[n] = linear(0.0f, 1.0f, vowel - 2.0f, o[3], o[2]); + else if (vowel == 3) + out[n] = o[3]; + else if (vowel > 3 && vowel < 4) + out[n] = linear(0.0f, 1.0f, vowel - 3.0f, o[4], o[3]); + else //if (vowel >= 4) + out[n] = o[4]; + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/formant_filter", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/hz_voct.c b/src/hz_voct.c new file mode 100644 index 0000000..b272425 --- /dev/null +++ b/src/hz_voct.c @@ -0,0 +1,117 @@ +/* Hz to AMS style V/Oct plugin. Copyright 2005-2011 David Robillard. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define HZVOCT_BASE_ID 4200 + +#define HZVOCT_NUM_PORTS 2 + +/* Port Numbers */ +#define HZVOCT_INPUT 0 +#define HZVOCT_OUTPUT 1 + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* input_buffer; + float* output_buffer; +} HzVoct; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + HzVoct* plugin = (HzVoct*)calloc(1, sizeof(HzVoct)); + return (LV2_Handle)plugin; +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + HzVoct* plugin; + + plugin = (HzVoct*)instance; + switch (port) { + case HZVOCT_INPUT: + plugin->input_buffer = (float*)data; + break; + case HZVOCT_OUTPUT: + plugin->output_buffer = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + float* input; + float* output; + HzVoct* plugin; + unsigned long i; + float log2inv; + float eighth = 1.0f/8.0f; + const float offset = 5.0313842; // + octave, ... -1, 0, 1 ... + + plugin = (HzVoct*)instance; + log2inv = 1.0f/logf(2.0); + + input = plugin->input_buffer; + output = plugin->output_buffer; + + // Inverse of the formula used in AMS's converter module (except the 1/8 part) + for (i = 0; i < nframes; i++) + *output++ = logf((*input++) * eighth) * log2inv - offset; +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/hz_voct", + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/masher.c b/src/masher.c new file mode 100644 index 0000000..0a9eeda --- /dev/null +++ b/src/masher.c @@ -0,0 +1,244 @@ +/* Masher + * Copyright 2001 David Griffiths <dave@pawfal.org> + * LV2fication 2005 David Robillard <drobilla@connect.carelton.ca> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* NOTE: This is a very dirty hack full of arbitrary limits and assumptions. + * It needs fixing/completion */ + +#define _XOPEN_SOURCE 600 /* posix_memalign */ +#include <stdlib.h> +#include <math.h> +#include <string.h> +#include <stdbool.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define MASHER_BASE_ID 4310 + +#define MASHER_NUM_PORTS 4 + +/* Port Numbers */ +#define MASHER_INPUT 0 +#define MASHER_GRAINPITCH 1 +#define MASHER_DENSITY 2 +#define MASHER_OUTPUT 3 + +#define GRAINSTORE_SIZE 1000 +#define OVERLAPS_SIZE 1000 +#define MAX_GRAIN_SIZE 2048 + +typedef struct { + float* data; + size_t length; +} Sample; + +typedef struct { + int pos; + int grain; +} GrainDesc; + +/* All state information for plugin */ +typedef struct { + /* Ports */ + float *input; + float *grain_pitch; + float *density; + float *output; + + Sample grain_store[GRAINSTORE_SIZE]; + GrainDesc overlaps[OVERLAPS_SIZE]; + size_t overlaps_size; + + size_t write_grain; +} Masher; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(Masher)); +} + +/** Activate an instance */ +static void +activate(LV2_Handle instance) +{ + Masher *plugin = (Masher*)instance; + int i = 0; + + plugin->overlaps_size = 0; + plugin->write_grain = 0; + + for (i=0; i < GRAINSTORE_SIZE; ++i) { +#ifdef HAVE_POSIX_MEMALIGN + posix_memalign((void**)&plugin->grain_store[i].data, 16, MAX_GRAIN_SIZE * sizeof(float)); +#else + plugin->grain_store[i].data = (float*)calloc(MAX_GRAIN_SIZE, sizeof(float)); +#endif + plugin->grain_store[i].length = 0; + } +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void * data) +{ + Masher *plugin = (Masher *) instance; + + switch (port) { + case MASHER_INPUT: + plugin->input = (float*)data; + break; + case MASHER_GRAINPITCH: + plugin->grain_pitch = (float*)data; + break; + case MASHER_DENSITY: + plugin->density = (float*)data; + break; + case MASHER_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static void +mix_pitch(Sample* src, Sample* dst, size_t pos, float pitch) +{ + float n = 0; + size_t p = pos; + + while (n < src->length && p < dst->length) { + dst->data[p] = dst->data[p] + src->data[(size_t)n]; + n += pitch; + p++; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + Masher* plugin = (Masher*)instance; + + static const int randomness = 1.0; // FIXME: make a control port + int read_grain = 0; // FIXME: what is this? + int grain_store_size = 100; // FIXME: what is this? (max 1000) + + const float grain_pitch = *plugin->grain_pitch; + const float density = *plugin->density; + + const float* const in = plugin->input; + float* const out = plugin->output; + + Sample out_sample = { out, nframes }; + + size_t n = 0; + float s = in[0]; + int last = 0; + bool first = true; + size_t grain_index = 0; + size_t next_grain = 0; + + // Zero output buffer + for (n = 0; n < nframes; ++n) + out[n] = 0.0f; + + // Paste any overlapping grains to the start of the buffer. + for (n = 0; n < plugin->overlaps_size; ++n) { + mix_pitch(&plugin->grain_store[plugin->overlaps[n].grain], &out_sample, + plugin->overlaps[n].pos - nframes, grain_pitch); + } + plugin->overlaps_size = 0; + + // Chop up the buffer and put the grains in the grainstore + for (n = 0; n < nframes; n++) { + if ((s < 0 && in[n] > 0) || (s > 0 && in[n] < 0)) { + // Chop the bits between zero crossings + if (!first) { + if (n - last <= MAX_GRAIN_SIZE) { + grain_index = plugin->write_grain % grain_store_size; + memcpy(plugin->grain_store[grain_index].data, in, nframes); + plugin->grain_store[grain_index].length = n - last; + } + plugin->write_grain++; // FIXME: overflow? + } else { + first = false; + } + + last = n; + s = in[n]; + } + } + + for (n = 0; n < nframes; n++) { + if (n >= next_grain || rand() % 1000 < density) { + size_t grain_num = read_grain % grain_store_size; + mix_pitch(&plugin->grain_store[grain_num], &out_sample, n, grain_pitch); + size_t grain_length = (plugin->grain_store[grain_num].length * grain_pitch); + + next_grain = n + plugin->grain_store[grain_num].length; + + // If this grain overlaps the buffer + if (n + grain_length > nframes) { + if (plugin->overlaps_size < OVERLAPS_SIZE) { + GrainDesc new_grain; + + new_grain.pos = n; + new_grain.grain = grain_num; + plugin->overlaps[plugin->overlaps_size++] = new_grain; + } + } + + if (randomness) + read_grain += 1 + rand() % randomness; + else + read_grain++; + } + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/masher", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/multiplexer.c b/src/multiplexer.c new file mode 100644 index 0000000..151302d --- /dev/null +++ b/src/multiplexer.c @@ -0,0 +1,120 @@ +/* Multiplxer plugin. + * Copyright 2005 Thorsten Wilms. + * Based on David Robillard's "Hz to AMS style V/Oct" plugin for the skeleton. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define MUX_GATE_ID 4420 + +#define MUX_NUM_PORTS 4 + +/* Port Numbers */ +#define MUX_GATE 0 +#define MUX_OFF 1 +#define MUX_ON 2 +#define MUX_OUTPUT 3 + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* gate_buffer; + float* off_buffer; + float* on_buffer; + float* output_buffer; +} MUX; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(MUX)); +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + MUX* plugin; + + plugin = (MUX*)instance; + switch (port) { + case MUX_GATE: + plugin->gate_buffer = (float*)data; + break; + case MUX_OFF: + plugin->off_buffer = (float*)data; + break; + case MUX_ON: + plugin->on_buffer = (float*)data; + break; + case MUX_OUTPUT: + plugin->output_buffer = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + const MUX* const plugin = (MUX*)instance; + const float* const gate = plugin->gate_buffer; + const float* const off = plugin->off_buffer; + const float* const on = plugin->on_buffer; + float* const output = plugin->output_buffer; + unsigned long i; + + for (i = 0; i < nframes; i++) + output[i] = (gate[i] <= 0) ? off[i] : on[i]; +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/multiplexer", + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/prob_switch.c b/src/prob_switch.c new file mode 100644 index 0000000..ae5d508 --- /dev/null +++ b/src/prob_switch.c @@ -0,0 +1,130 @@ +/* This file is an audio plugin. + * Copyright 2005 Loki Davison. + * + * Probability parameter is the prob of input 1 being the output value. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define PROBSWITCH_BASE_ID 2667 + +#define PROBSWITCH_NUM_PORTS 4 + +/* Port Numbers */ +#define PROBSWITCH_INPUT1 0 +#define PROBSWITCH_INPUT2 1 +#define PROBSWITCH_PROB 2 +#define PROBSWITCH_OUTPUT 3 + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* input2; + float* prob; + float* input1; + float* output; +} ProbSwitch; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(ProbSwitch)); +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + ProbSwitch* plugin; + + plugin = (ProbSwitch*)instance; + switch (port) { + case PROBSWITCH_INPUT2: + plugin->input2 = (float*)data; + break; + case PROBSWITCH_PROB: + plugin->prob = (float*)data; + break; + case PROBSWITCH_INPUT1: + plugin->input1 = (float*)data; + break; + case PROBSWITCH_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + ProbSwitch* plugin = (ProbSwitch*)instance; + float* input2 = plugin->input2; + float* prob = plugin->prob; + float* input1 = plugin->input1; + float* output = plugin->output; + size_t i; + + for (i = 0; i < nframes; ++i) + { + if((rand()/RAND_MAX) <= prob[i]) + { + output[i] = input1[i]; + } + else + { + output[i] = input2[i]; + } + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/prob_switch", + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/range_trans.c b/src/range_trans.c new file mode 100644 index 0000000..26b5272 --- /dev/null +++ b/src/range_trans.c @@ -0,0 +1,131 @@ +/* This file is an audio plugin. Copyright 2005-2011 David Robillard. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define RANGETRANS_BASE_ID 4210 + +#define RANGETRANS_NUM_PORTS 6 + +/* Port Numbers */ +#define RANGETRANS_IN_MIN 0 +#define RANGETRANS_IN_MAX 1 +#define RANGETRANS_OUT_MIN 2 +#define RANGETRANS_OUT_MAX 3 +#define RANGETRANS_INPUT 4 +#define RANGETRANS_OUTPUT 5 + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* in_min; + float* in_max; + float* out_min; + float* out_max; + float* input; + float* output; +} RangeTrans; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(RangeTrans)); +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + RangeTrans* plugin; + + plugin = (RangeTrans*)instance; + switch (port) { + case RANGETRANS_IN_MIN: + plugin->in_min = (float*)data; + break; + case RANGETRANS_IN_MAX: + plugin->in_max = (float*)data; + break; + case RANGETRANS_OUT_MIN: + plugin->out_min = (float*)data; + break; + case RANGETRANS_OUT_MAX: + plugin->out_max = (float*)data; + break; + case RANGETRANS_INPUT: + plugin->input = (float*)data; + break; + case RANGETRANS_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + const RangeTrans* const plugin = (RangeTrans*)instance; + const float* const in_min = plugin->in_min; + const float* const in_max = plugin->in_max; + const float* const out_min = plugin->out_min; + const float* const out_max = plugin->out_max; + const float* const input = plugin->input; + float* const output = plugin->output; + unsigned long i; + + for (i = 0; i < nframes; ++i) + output[i] = ((input[i] - in_min[i]) / (in_max[i] - in_min[i])) + * (out_max[i] - out_min[i]) + out_min[i]; +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/range_trans", + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/sample_and_hold.c b/src/sample_and_hold.c new file mode 100644 index 0000000..6b0abeb --- /dev/null +++ b/src/sample_and_hold.c @@ -0,0 +1,150 @@ +/* Sample and Hold. + * Copyright 2005 Thorsten Wilms. + * Based on David Robillard's "Hz to AMS style V/Oct" plugin for the skeleton. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define ID 4430 + +#define NUM_PORTS 5 + +/* Port Numbers */ +#define INPUT 0 +#define TRIGGER 1 +#define THRESHOLD 2 +#define CONTINUOUS 3 +#define OUTPUT 4 + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* input_buffer; + float* trigger_buffer; + float* threshold_buffer; + float* continuous_buffer; + float* output_buffer; + + float hold; /* the value sampled and held */ + float last_trigger; /* trigger port value from the previous frame */ +} SH; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(SH)); +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + SH* plugin = (SH*)instance; + + switch (port) { + case INPUT: + plugin->input_buffer = (float*)data; + break; + case TRIGGER: + plugin->trigger_buffer = (float*)data; + break; + case THRESHOLD: + plugin->threshold_buffer = (float*)data; + break; + case CONTINUOUS: + plugin->continuous_buffer = (float*)data; + break; + case OUTPUT: + plugin->output_buffer = (float*)data; + break; + } +} + +static void +activate(LV2_Handle instance) +{ + SH* plugin = (SH*)instance; + + plugin->hold = 0; + plugin->last_trigger = 0; +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + SH* const plugin = (SH*)instance; + const float* const input = plugin->input_buffer; + const float* const trigger = plugin->trigger_buffer; + const float* const threshold = plugin->threshold_buffer; + const float* const continuous = plugin->continuous_buffer; + float* const output = plugin->output_buffer; + + unsigned long i; + + for (i = 0; i < nframes; i++) { + if (continuous[0] != 0) { + /* Continuous triggering on (sample while trigger > threshold) */ + if (trigger[i] >= threshold[i]) + plugin->hold = input[i]; + } else { + /* Continuous triggering off + * (only sample on first frame with trigger > threshold) */ + if (plugin->last_trigger < threshold[i] && trigger[i] >= threshold[i]) + plugin->hold = input[i]; + } + + plugin->last_trigger = trigger[i]; + output[i] = plugin->hold; + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/sample_and_hold", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/signal_abs.c b/src/signal_abs.c new file mode 100644 index 0000000..90ad59c --- /dev/null +++ b/src/signal_abs.c @@ -0,0 +1,124 @@ +/* Absolute value audio plugin. + * Copyright 2005 Loki Davison. + * + * Sign parameter is the sign of the output, 0 being negative and >0 begin positive. + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define SIGNAL_ABS_BASE_ID 2669 + +#define SIGNAL_ABS_NUM_PORTS 3 + +/* Port Numbers */ +#define SIGNAL_ABS_INPUT1 0 +#define SIGNAL_ABS_SIGN 1 +#define SIGNAL_ABS_OUTPUT 2 + +/* All state information for plugin */ +typedef struct +{ + /* Ports */ + float* sign; + float* input1; + float* output; +} SignalAbs; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + return (LV2_Handle)malloc(sizeof(SignalAbs)); +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + SignalAbs* plugin; + + plugin = (SignalAbs*)instance; + switch (port) { + case SIGNAL_ABS_SIGN: + plugin->sign = (float*)data; + break; + case SIGNAL_ABS_INPUT1: + plugin->input1 = (float*)data; + break; + case SIGNAL_ABS_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +static void +run_ar(LV2_Handle instance, uint32_t nframes) +{ + SignalAbs* plugin = (SignalAbs*)instance; + float* sign = plugin->sign; + float* input1 = plugin->input1; + float* output = plugin->output; + size_t i; + + for (i = 0; i < nframes; ++i) + { + if(sign[i] > 0.5) + { + output[i] = fabs(input1[i]); + } + else + { + output[i] = fabs(input1[i]) * -1; + } + } +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/signal_abs", + instantiate, + connect_port, + NULL, + run_ar, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/slew_limiter.c b/src/slew_limiter.c new file mode 100644 index 0000000..7fe0ee5 --- /dev/null +++ b/src/slew_limiter.c @@ -0,0 +1,149 @@ +/* slew_limiter - A LV2 plugin that limits the rate of change of a + * signal. Increases and decreases in the signal can be + * limited separately. + * + * Copyright 2005 Lars Luthman + * LV2 skeleton code taken from dahdsr_fexp.c by Loki Davison + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> +#include <math.h> + +/* These are the port numbers */ +#define SLIM_INPUT 0 +#define SLIM_MAXRISE 1 +#define SLIM_MAXFALL 2 +#define SLIM_OUTPUT 3 + +/* This is an array pointer to the descriptors of the different variants */ +LV2_Descriptor** slim_descriptors = 0; + +/* This is the data for a single instance of the plugin */ +typedef struct +{ + float* input; + float* maxrise; + float* maxfall; + float* reset; + float* output; + float srate; + float last_output; +} +SLim; + +/* Clean up after a plugin instance */ +static void cleanup (LV2_Handle instance) +{ + free(instance); +} + +/* This is called when the hosts connects a port to a buffer */ +static void connect_port(LV2_Handle instance, + uint32_t port, void* data) +{ + SLim* plugin = (SLim *)instance; + + switch (port) { + case SLIM_INPUT: + plugin->input = (float*)data; + break; + case SLIM_MAXRISE: + plugin->maxrise = (float*)data; + break; + case SLIM_MAXFALL: + plugin->maxfall = (float*)data; + break; + case SLIM_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +/* The host uses this function to create an instance of a plugin */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + SLim* plugin = (SLim*)calloc(1, sizeof(SLim)); + plugin->srate = (float)sample_rate; + return (LV2_Handle)plugin; +} + +/* This is called before the hosts starts to use the plugin instance */ +static void activate(LV2_Handle instance) +{ + SLim* plugin = (SLim*)instance; + plugin->last_output = 0; +} + +/* The run function! */ +static void run(LV2_Handle instance, uint32_t sample_count) +{ + SLim* plugin = (SLim*)instance; + + if (plugin->input && plugin->output) { + unsigned long i; + float maxrise, maxfall; + for (i = 0; i < sample_count; ++i) { + + if (plugin->maxrise) + maxrise = plugin->maxrise[i]; + else + maxrise = 0; + + if (plugin->maxfall) + maxfall = plugin->maxfall[i]; + else + maxfall = 0; + + float maxinc = maxrise / plugin->srate; + float maxdec = maxfall / plugin->srate; + float increment = plugin->input[i] - plugin->last_output; + if (increment > maxinc) + increment = maxinc; + else if (increment < -maxdec) + increment = -maxdec; + + plugin->output[i] = plugin->last_output + increment; + plugin->last_output = plugin->output[i]; + } + } +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/slew_limiter", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/slide.c b/src/slide.c new file mode 100644 index 0000000..fe026f7 --- /dev/null +++ b/src/slide.c @@ -0,0 +1,170 @@ +/* slide.c - A LV2 plugin that "slides" the output signal between + * the current and the previous input value, taking the given + * number of seconds to reach the current input value. + * + * Copyright 2005 Lars Luthman + * LV2 skeleton code taken from dahdsr_fexp.c by Loki Davison + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> +#include <math.h> + +/* These are the port numbers */ +#define SLIDE_INPUT 0 +#define SLIDE_RISETIME 1 +#define SLIDE_FALLTIME 2 +#define SLIDE_OUTPUT 3 + +/* This is the data for a single instance of the plugin */ +typedef struct +{ + float* input; + float* risetime; + float* falltime; + float* output; + float srate; + float from; + float to; + float last_output; +} Slide; + +/* Clean up after a plugin instance */ +static void cleanup (LV2_Handle instance) +{ + free(instance); +} + +/* This is called when the hosts connects a port to a buffer */ +static void connect_port(LV2_Handle instance, + uint32_t port, void* data) +{ + Slide* plugin = (Slide *)instance; + + switch (port) { + case SLIDE_INPUT: + plugin->input = (float*)data; + break; + case SLIDE_RISETIME: + plugin->risetime = (float*)data; + break; + case SLIDE_FALLTIME: + plugin->falltime = (float*)data; + break; + case SLIDE_OUTPUT: + plugin->output = (float*)data; + break; + } +} + +/* The host uses this function to create an instance of a plugin */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + Slide* plugin = (Slide*)calloc(1, sizeof(Slide)); + plugin->srate = (float)sample_rate; + return (LV2_Handle)plugin; +} + +/* This is called before the hosts starts to use the plugin instance */ +static void activate(LV2_Handle instance) +{ + Slide* plugin = (Slide*)instance; + plugin->last_output = 0; + plugin->from = 0; + plugin->to = 0; +} + +/* The run function! */ +static void run(LV2_Handle instance, uint32_t sample_count) +{ + Slide* plugin = (Slide*)instance; + + if (plugin->input && plugin->output) { + unsigned long i; + float risetime, falltime; + for (i = 0; i < sample_count; ++i) { + + if (plugin->risetime) + risetime = plugin->risetime[i]; + else + risetime = 0; + + if (plugin->falltime) + falltime = plugin->falltime[i]; + else + falltime = 0; + + /* If the signal changed, start sliding to the new value */ + if (plugin->input[i] != plugin->to) { + plugin->from = plugin->last_output; + plugin->to = plugin->input[i]; + } + + float time; + int rising; + if (plugin->to > plugin->from) { + time = risetime; + rising = 1; + } else { + time = falltime; + rising = 0; + } + + /* If the rise/fall time is 0, just copy the input to the output */ + if (time == 0) + plugin->output[i] = plugin->input[i]; + + /* Otherwise, do the portamento */ + else { + float increment = + (plugin->to - plugin->from) / (time * plugin->srate); + plugin->output[i] = plugin->last_output + increment; + if ((plugin->output[i] > plugin->to && rising) || + (plugin->output[i] < plugin->to && !rising)) { + plugin->output[i] = plugin->to; + } + } + + plugin->last_output = plugin->output[i]; + } + } +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/slide", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} diff --git a/src/waveguide_mesh.c b/src/waveguide_mesh.c new file mode 100644 index 0000000..5232ff5 --- /dev/null +++ b/src/waveguide_mesh.c @@ -0,0 +1,274 @@ +/* This file is an audio plugin. + * Copyright 2005 Loki Davison. + * + * Based on code by Brook Eaton and a couple of papers... + * + * Implements a Waveguide Mesh drum. FIXME to be extended, to have rimguides, power normalisation and all + * manner of other goodies. + * + * Tension is well, drum tension + * power is how hard you hit it. + * + * + * This plugin is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This plugin is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define _XOPEN_SOURCE 600 /* strdup */ +#include <stdlib.h> +#include <string.h> +#include <math.h> + +#include <lv2/lv2plug.in/ns/lv2core/lv2.h> + +#define MESH_BASE_ID 2670 + +#define MESH_NUM_PORTS 6 + +/* Port Numbers */ +#define MESH_INPUT1 0 +#define MESH_OUTPUT 1 +#define MESH_TENSION 2 +#define MESH_POWER 3 +#define MESH_EX_X 4 +#define MESH_EX_Y 5 + +#define LENGTH 8 // must be divisible by 4!! +#define WIDTH 8 +#define SIZE LENGTH*WIDTH // Size of mesh +#define INITIAL 0 // initial values stored at junctions +#define LOSS 0.2 // loss in wave propagation +#define INIT_DELTA 6 // initial values +#define INIT_T 0.1 // for the impedances +#define INIT_GAMMA 8 // +#define PORTS 8 //for the initialization of junction velocities from excitation + +// 2D array of junctions. +// The important function of the junction is to store +// the velocities of travelling waves so that adjacent junction's +// velocities can be calculated. +typedef struct _junction +{ + float v_junction; // junction velocity + float n_junction; // velocity heading north into junction + float s_junction; // velocity heading south into junction + float e_junction; // velocity heading east into junction + float w_junction; // velocity heading west into junction + float c_junction; // velocity heading back into the junction (delayed) + float s_temp; // these two 'temp' values are used because calculation + float e_temp; // of the mesh updates s/e values before they are used +} _junction; // to calculate north and south velocities! + +/* All state information for plugin */ + +typedef struct +{ + /* Ports */ + float* input1; + float* output; + float* tension; + float* power; + float* ex_x; + float* ex_y; + + /* vars */ + _junction mesh[LENGTH][WIDTH]; + float last_trigger; + +} WgMesh; + +/* Construct a new plugin instance */ +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double sample_rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + WgMesh * plugin = (WgMesh *) malloc (sizeof (WgMesh)); + + return (LV2_Handle)plugin; +} + +static void +activate(LV2_Handle instance) +{ + WgMesh * plugin = (WgMesh *) instance; + for (int i=0; i<LENGTH; i++) { + for (int j=0; j<WIDTH; j++) { + plugin->mesh[i][j].v_junction = INITIAL; + plugin->mesh[i][j].n_junction = INITIAL; + plugin->mesh[i][j].s_junction = INITIAL; + plugin->mesh[i][j].e_junction = INITIAL; + plugin->mesh[i][j].w_junction = INITIAL; + plugin->mesh[i][j].c_junction = INITIAL; + plugin->mesh[i][j].s_temp = INITIAL; + plugin->mesh[i][j].e_temp = INITIAL; + } + } + plugin->last_trigger = 0.0; +} + +/* Connect a port to a data location */ +static void +connect_port(LV2_Handle instance, + uint32_t port, + void* data) +{ + WgMesh* plugin; + + plugin = (WgMesh*)instance; + switch (port) { + case MESH_INPUT1: + plugin->input1 = (float*)data; + break; + case MESH_OUTPUT: + plugin->output = (float*)data; + break; + case MESH_TENSION: + plugin->tension = (float*)data; + break; + case MESH_POWER: + plugin->power = (float*)data; + break; + case MESH_EX_X: + plugin->ex_x = (float*)data; + break; + case MESH_EX_Y: + plugin->ex_y = (float*)data; + break; + } +} + +inline static void excite_mesh(WgMesh* plugin, float power, float ex_x, float ex_y) +{ + int i=ex_x,j=ex_y; + float temp; + float Yj; + + Yj = 2*(INIT_DELTA*INIT_DELTA/((INIT_T*INIT_T)*(INIT_GAMMA*INIT_GAMMA))); // junction admittance + temp = power*2/(LENGTH+WIDTH); + plugin->mesh[i][j].v_junction = plugin->mesh[i][j].v_junction + temp; + plugin->mesh[i][j].n_junction = plugin->mesh[i][j].n_junction + Yj*temp/PORTS; + // All velocities leaving the junction are equal to + plugin->mesh[i][j].s_junction = plugin->mesh[i][j].s_junction + Yj*temp/PORTS; + // the total velocity in the junction * the admittance + plugin->mesh[i][j].e_junction = plugin->mesh[i][j].e_junction + Yj*temp/PORTS; + // divided by the number of outgoing ports. + plugin->mesh[i][j].w_junction = plugin->mesh[i][j].w_junction + Yj*temp/PORTS; + //mesh[i][j].c_junction = 0; +} + +static void +run(LV2_Handle instance, uint32_t nframes) +{ + WgMesh* plugin = (WgMesh*)instance; + float tension = *(plugin->tension); + float ex_x = *(plugin->ex_x); + float ex_y = *(plugin->ex_y); + float* input = plugin->input1; + float* out = plugin->output; + float* power = plugin->power; + float last_trigger = plugin->last_trigger; + size_t i,j,k; + float filt, trg, oldfilt; + float Yc,Yj,tempN,tempS,tempE,tempW; + + // Set input variables // + oldfilt = plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction; + + for (k=0; k<nframes; k++) { + if (tension==0) + tension=0.0001; + trg = input[k]; + + if (trg > 0.0f && !(last_trigger > 0.0f)) + { + //printf("got trigger, exciting mesh, %f \n", tension); + excite_mesh(plugin, power[k], ex_x, ex_y); + } + + //junction admitance + Yj = 2*INIT_DELTA*INIT_DELTA/(( (tension)*((tension) )*(INIT_GAMMA*INIT_GAMMA))); + Yc = Yj-4; // junction admittance (left shift is for multiply by 2!) + //plugin->v_power = power[k]; + + for (i=1; i<LENGTH-1; i++) { + // INNER MESH // + for (j=1; j<WIDTH-1; j++) { // to multiply by 2 - simply shift to the left by 1! + plugin->mesh[i][j].v_junction = 2.0*(plugin->mesh[i][j].n_junction + plugin->mesh[i][j].s_junction + + plugin->mesh[i][j].e_junction + plugin->mesh[i][j].w_junction + Yc*plugin->mesh[i][j].c_junction)/Yj; + + plugin->mesh[i][j+1].s_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].n_junction; + plugin->mesh[i][j-1].n_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].s_temp; + + plugin->mesh[i+1][j].e_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].w_junction; + plugin->mesh[i-1][j].w_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].e_temp; + + plugin->mesh[i][j].c_junction = plugin->mesh[i][j].v_junction - plugin->mesh[i][j].c_junction; + + plugin->mesh[i][j].s_temp = plugin->mesh[i][j].s_junction; // + plugin->mesh[i][j].e_temp = plugin->mesh[i][j].e_junction; // update current values in the temp slots! + } + // BOUNDARY // + tempS = plugin->mesh[i][0].s_junction; + plugin->mesh[i][0].s_junction = -plugin->mesh[i][0].n_junction; + plugin->mesh[i][1].s_junction = plugin->mesh[i][1].s_temp = tempS; + tempN = plugin->mesh[i][WIDTH-1].n_junction; + plugin->mesh[i][WIDTH-1].n_junction = -plugin->mesh[i][WIDTH-1].s_junction; + plugin->mesh[i][WIDTH-2].n_junction = tempN; + // 'i's in the neplugint few lines are really 'j's! + tempE = plugin->mesh[0][i].e_junction; + plugin->mesh[0][i].e_junction = -plugin->mesh[0][i].w_junction; + plugin->mesh[1][i].e_junction = plugin->mesh[1][i].e_temp = tempE; + tempW = plugin->mesh[WIDTH-1][i].w_junction; + plugin->mesh[WIDTH-1][i].w_junction = -plugin->mesh[WIDTH-1][i].e_junction; + plugin->mesh[WIDTH-2][i].w_junction = tempW; + } + + filt = LOSS*(plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction + oldfilt); + oldfilt = plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction; + plugin->mesh[LENGTH-LENGTH/4][WIDTH-WIDTH/4].v_junction = filt; + + out[k] = plugin->mesh[WIDTH/4][WIDTH/4-1].v_junction; + last_trigger = trg; + } + plugin->last_trigger = last_trigger; + +} + +static void +cleanup(LV2_Handle instance) +{ + free(instance); +} + +static const LV2_Descriptor descriptor = { + "http://drobilla.net/plugins/omins/waveguide_mesh", + instantiate, + connect_port, + activate, + run, + NULL, + cleanup, + NULL, +}; + +LV2_SYMBOL_EXPORT const LV2_Descriptor* +lv2_descriptor(uint32_t index) +{ + switch (index) { + case 0: return &descriptor; + default: return NULL; + } +} @@ -1,16 +1,169 @@ #!/usr/bin/env python +# encoding: latin-1 +# Thomas Nagy, 2005-2017 +# +""" +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: -# Minimal waf script for projects that include waflib directly +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. -from waflib import Context, Scripting +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. -import inspect -import os +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. -def main(): - script_path = os.path.abspath(inspect.getfile(inspect.getmodule(main))) - project_path = os.path.dirname(script_path) - Scripting.waf_entry_point(os.getcwd(), Context.WAFVERSION, project_path) +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +""" + +import os, sys, inspect + +VERSION="2.0.4" +REVISION="7cbb714529fb8ebf6acd59fd281ce525" +GIT="x" +INSTALL='' +C1='#/' +C2='#,' +C3='#*' +cwd = os.getcwd() +join = os.path.join + + +WAF='waf' +def b(x): + return x +if sys.hexversion>0x300000f: + WAF='waf3' + def b(x): + return x.encode() + +def err(m): + print(('\033[91mError: %s\033[0m' % m)) + sys.exit(1) + +def unpack_wafdir(dir, src): + f = open(src,'rb') + c = 'corrupt archive (%d)' + while 1: + line = f.readline() + if not line: err('run waf-light from a folder containing waflib') + if line == b('#==>\n'): + txt = f.readline() + if not txt: err(c % 1) + if f.readline() != b('#<==\n'): err(c % 2) + break + if not txt: err(c % 3) + txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) + + import shutil, tarfile + try: shutil.rmtree(dir) + except OSError: pass + try: + for x in ('Tools', 'extras'): + os.makedirs(join(dir, 'waflib', x)) + except OSError: + err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) + + os.chdir(dir) + tmp = 't.bz2' + t = open(tmp,'wb') + try: t.write(txt) + finally: t.close() + + try: + t = tarfile.open(tmp) + except: + try: + os.system('bunzip2 t.bz2') + t = tarfile.open('t') + tmp = 't' + except: + os.chdir(cwd) + try: shutil.rmtree(dir) + except OSError: pass + err("Waf cannot be unpacked, check that bzip2 support is present") + + try: + for x in t: t.extract(x) + finally: + t.close() + + for x in ('Tools', 'extras'): + os.chmod(join('waflib',x), 493) + + if sys.hexversion<0x300000f: + sys.path = [join(dir, 'waflib')] + sys.path + import fixpy2 + fixpy2.fixdir(dir) + + os.remove(tmp) + os.chdir(cwd) + + try: dir = unicode(dir, 'mbcs') + except: pass + try: + from ctypes import windll + windll.kernel32.SetFileAttributesW(dir, 2) + except: + pass + +def test(dir): + try: + os.stat(join(dir, 'waflib')) + return os.path.abspath(dir) + except OSError: + pass + +def find_lib(): + src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) + base, name = os.path.split(src) + + #devs use $WAFDIR + w=test(os.environ.get('WAFDIR', '')) + if w: return w + + #waf-light + if name.endswith('waf-light'): + w = test(base) + if w: return w + err('waf-light requires waflib -> export WAFDIR=/folder') + + dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) + for i in (INSTALL,'/usr','/usr/local','/opt'): + w = test(i + '/lib/' + dirname) + if w: return w + + #waf-local + dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) + w = test(dir) + if w: return w + + #unpack + unpack_wafdir(dir, src) + return dir + +wafdir = find_lib() +sys.path.insert(0, wafdir) if __name__ == '__main__': - main() + + from waflib import Scripting + Scripting.waf_entry_point(cwd, VERSION, wafdir) + +#==> +#BZh91AY&SYÝÚcš¤ÿÿÿ°ÐÿÿÿÿÿÿÿÿÿÿÿE ‚„ 0Á#*ˆ¨bD{Ô´@#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*\ú¦Õ¶£XkP;šK²j¶WÝÎIÓi½Û¶ÍQ«Ðj®ÌÞpä_xÜú}xk{o»S©KÕ{w¾^÷Û»çsµ“Ox¤Œ€#,i¥ënî¶#,ܧ*ÞÀâô»vÏvw-¹½†KÐß;<Æ'»v6õÛÀî{¥uökÂYJSÓ»»½íóÛï¾W½€õÞ×Ç‹ÝÎÝÞéÜ#¯½XM·ßg#*#*#*#*4o`›#**¸¡ÃÓ¡ÝÍîà#/{³Ý0ÓÛ¹è;ÙG–ë Ð4(ë¾õí£röõéé£G¶ »ÒB¨¡‘£l=ìp#/ª¢‚T¤€ ¹ƒvÑ$ºÅP¢…$óÝ×mì#,PÞ¾ÚïMhìÃëîÏÔï±åÜ5ͺé+“¸+v0Ûˆšë®÷ßuסõví#*]»î_v«§¯MïnºÔx9›Ü½Ï5õ’{y̻﷧·¾ÚêúÙö‰»rõöÞž·Ývs·6Ù³¯q›¾÷»GEûSÞÅ°aIU$E ô#,[w6š£ÞÎöwunÝw'mÖƒÒã'»p{eÓ*"•Sžï{—è#* iTˆ*^ÁȘè¼ÎBãh÷»Öñ«E÷»î÷{¾gß}÷ÃÈô}€i^ùÎH´Ç§rÊ5N ô#,ÛÞ»©VÍd¾gx÷AÐ{yíx4×ÜæàÎXúN»öq×G»jöó{Zè‰í÷½ÔUO·vîgÞ< =â[iâñkâ>åöÛwUºwF滜ÜbÇ^÷n÷{»£&mßcyV÷.뻤¹®îRíëzò¾ÕÜÅ ÖÑÎæmÛ¯phØ»zˆÉÐÑÎÁkSkÎ7¶ë>·væÆíÇϽíï=ì{ÛêÇÞÞª½‹î»ìÄïu³˜¶ôdz×{Iæ½KÍÚ.Ûsx¶#*#,ÎÙz÷µ:·±öw±ÞÝÛWŽˆP (* ¨„’FÚÛ—iÐåØ¥Z#,Mlλ})îô:íäé Ú7q›oO+Õ ©Û•”SŽ^=æP§{ÞºÝG!»&o»¾ÛÍð#*ÕÔ€#*%o=ÛtæÝ÷7/|ö]Žw•÷]Û}Æö½ÝÇuÇc}Ö™Ï{ÞUÎé#,º÷kÒïpzù4úò9zÏG•˜6&®tØ0eb¹Ý·×lxœïßoy½mŸ#*I:2öãGk#*÷¶xtûg§Õ}Á£z.Á϶ç³ï©¬ÜÛ®å˜fÅæàõ·mßu³ZÍw>/sË«+:íç¾¾{壹ÎÁ°3]ÀäôÝO{nÇÞiåiï7nº®°G.ÓÂÝ/T·ws«™:oU½³žÎ`UompUVž÷;2½{³Ë0lzÞm°‡wŽy§W××ßGÛOœúö#,ñîÞÚ’¥7rÝöû¯sã7»tÀ€ôÂìnLjW;±çìÝš{Ü°^ðiÕ5¤ê·.ׯW†}ç»ë€n·ˆ@èšÅì¹@zíyWžÚûâf¯ºÊ¾ƒ #*èÙîó^ç^÷ufØg[Þ+“³5Ø…g·¦¹}îW¯.·[G‘¨Š*Ý9ªé;iJÙÝÚûóZ™÷}ëÆuYgÊÛ‘&3Ùç#,œÇSß-Úñî‰îri5¾¨Ù[2}ö×Þ¹Ü0SY¯{·gs¶'=㺆_'¾÷;>ÖÔ`;wn:xº¼¼o(÷6¯·ÅÁ¦ˆ#*€@4#*CF€y4hIéLQä€#Ôõ<¦‚S@„ òÕ=¦©ú§”ýQ£Fž£&F†Pi #*#*#*#* ˆMFiO"SMSñM¦£Òšd5¦›ÒCÒh#*#*Ð#*#*“Õ)"&D#,E7©””ôÔÓA‘ #*hzš#*É#*#*#*#*B#*#*ÈÚhLbOF“52jyOPd¨#,#*#* 54ÄȦ#B2)ä'é6©êyOHf£Ôzƒ@#*€#*?þùëÛV»‰]΃r¶®ä¿NÕ¥Ô"b#ãµkºA0Œ…¨Õ–Ù—½VÚåmµFTÅ ‰î=¾ÿu±î¬^þò^X¬WjÅZÆó!nžoôÚåÉ.ø®\ãxiqªøÖ÷r¶^A<é‘1UnÐ%_Š¨D B# Gg[ñ&üZüLY©wsZQǬÜÍ—g8âZZ®fø3$7›×SY¾ªb@ˆÑ>ýÕ·äB·Ä(R1Xª#/De[Y6Õ™¶´–µbô¶×!jÔD”#/£Pd£!\ç9a (ƒ¡XL#*¨9D,¨EÄQ@õÀ #,‚Ûi«Wv§E±X·µÝµ&ÚÖÛkß[m¶©™™%šM16"X ¢Ii653%„Õ2Æ@3JQ¥ÛIŒ4I@M-KE±¨0¶ŒÒY4²1a-„#/61R”i#*5K4ÅŒLb¥bÉ›H¤Ù-Q%–ZSµDBËHlÐL(ÍF5£QZ0#/ƒI²"„©6)Œ” †Æ™¦ZF0"”Ú5)FÂ[M¶²Ö´ RT3bM™&BQdÛM¶šmjJ6RTÖÆZ–Ù•2Òe2Q#`Y¡ÍY¢’RÆ‚–E1L„ÆЉ2¢Í#h¤ÂX¨BÆÅ&¤1šTD)ˆ£b…ˆÊcÐÈŒ’6¤Á‹,D³4%(@D2’R4iY@fhÈ ‘DRÉY61£bZEˆd²‘cYJHM‰)20R‰ŒšC1 ©4iŒi2²*,I‰™KLE3#*ØÛ$3b$Æi¦l$ÂÄmI° ,¬!$”›DDšŒPRBX‚DÑ ŠAD °TDÃ(c$¤#P™D¤¬jf£b°–“RD“ˆKJT IKbH²Ì¢‘fI¢lÊDlb$Ø™J3dL6Í1’¥,XÅHli¤4b#R²Y#`²¤&‰²HH&¤DHÙ¦¤-BHK2›(ÊZ)3HÚ#AÒƉmL‰#,(4–c!²RYLE‚i”Å(£FaƒQM#/LTH2HaRf0$’4hÄD†XLPFÉ2¦f¬ÆŠ¥*‰DLÈjF˜…"3b¥#,²š6HÑD¤’M’(ÔÀÆM›#S4XØŠi2“2˜¥‘•›L‰XˆÁS2Ô¤Ó$†2ˆ¤54Z[FÍJ”É…1)#$dÉ)Y4XÉXŒeIÌEcI¢M&Êj6ME’H¡¤l ˆÆ –Í&&ÐhÑSi ¤Ê(‹fCfD’›%24 ™²d&¬ÙXµ’ÀdÄše’$±mÆ Ö#/e°¤I„£‰”jK0”Í4¦#,’²šS&´hI1JLf¡–M‘L)eF™aÒ ¡)3F‰¶ÔªÚ0IBjfŒ¦FÍ(¤”ÌDVƒR–À¥š,Å&˜ÊË*l²lA¦[fŒL1MˆÊQ,4„¥¯ÜktBjj‘FŒÚ(ÅF¶ ’hÒj6²H¥”¨•#,Ñ4´…FÆÂ6I¨ÚÈŒ´j2ÉŒ£$YL©1¤A†&f”Öf¬bM*ÆÔRŒšaÆU$™‘šÂÆÐ(iYE2dËI¨6,ÛE±HÑSeÚÈ™dU1¬ÔS#/lØÊLͲ[M,&4mh±dF¶M2²%L²›Y5¢›e)M1iŠÔ$d¤mEŠVX“I©%*#hªÁµA£Em*"Ål[I¬”[Q´TTš±4ÉbÄTEj,2Ñ« ÚM%#,šÔ0’ŠA6ƒ-)&)Zk±£i‰¬j’Á¢ÚH-S[lÓJ¨HL¦jjÉ¢M‘‰”´Š,‘[RÖmŒR›M²Í*c4Ój™m¥RÉ&f©R1f˜[BA™’e²Æ„ÓÒY6ÊÊ´kD²ŒaF*,H`‰˜Ðb“,,D‰Ú#, ŒCe´ÍS0!*(dÚŠÉ4ѲdÑE‘#,–)ÙH6DVjE‘™’XRQf)˜š…fHDeb›I’ˆÆ²#*%!¦DÉ!¨É€ÐÒÆQ4š‚ȘZBh2PËEŠ&”Ȧ4–i@Ö”„Lb˜JY&Y!5Œ‘Q¦ZŒQ³)$£ …Œ…Qe+#L6Š“’Œ›#RE¥„Š2mFƒFÌdѤٔٔ”³6™IX¦#,#,HÔC’ZŠ£f´fˆÔ4T¦“a¦6XÖe£@‘Œ„LR#,16$©-&P£e4ÅI¶JeF ªeM’ÉL¡1Q&’@D¡¥+2KhÚÈ…¦f@È•a!²ÌQɱ³HØ£D#,f“d36&"jHH54[ QQ¨£±™l4˜b„”24²dlb”Al ¨+,²Y…X´fJl¡*Hƒm QXÑ&‹¥Q¢ƒb‚#&¤ª5L%ÂÂ#,R”51¦l¥Qª#Ji¥¢‹d¶dZ$Z‹ØŒ¥U-4UÆ“E’Ä‘M2•”+QH12J›ˆ™¤«Q°IŠ™¨©-0¦,ÒÔd¬ZÚLRViT‰DÐ6%2”Ô–$’ÅIFÉ¢HŒIT”†¨¤™cVd#,5R¦TÄSmIY-’4…4“Q ˆÁDÙZM¢ÙI,l˜ÒcFÑ‹’FÕ(K-Š±&ÖŠ´e(ÚJ©BÔ[F¤¢Å"š$¦F`Li©PjfÉ3j5IbÕ%K6ÒkBV€‹cRTQ$[b™¶imEccZ‹m&dË(„²ÙX–ÑTY•Q´ÙQJj”S’ƒ#)52P64X"M(ÄÒf±¶53bH±I[M²šk-FѬf‘¨ÉF‹%¶ZÖ)*1%Š†XÑQM$21’U±m‹LÕ´cZËISC-l¥’Úš›d-¨ÓV&Œ¢ˆ‹FÒJ(6ÍI¨Û›6TE ¢1$™I2#"ˆÈIÊÙöÿÕ©?ÙüTþÇ÷žf„ŸáþPV‘ %XÀ=–¾+ûZ=5Š¹X4i6zºõ:Å\kû¶,bƘ5#q’÷ofªlþß¼‚6Ñé¢;ÜœbQ `ÅA‚áÑÆ—DÕ$ªªª‚®Œ¤{Ïãê½^Úÿ5ÚËñ.¿Ñýž/ò6ÚkÆ@nx%„ŒEôsÑ£ýÛlvÚE‡¯×N-ÁÖZX%'uÑÝêŧlNNï2##‰F61ukŽÏEcýÓ—Z|Ä£'ütz䬚€I¥áv7§^šèÏepòrhë²wB*35S4™³(¶‘Vª©"ñן‘Ög5r#&ÃßµÌV÷x3Fe:ãK™@¤¤)€‰$HÅæ×bÈkÒ3ˆ`Wd@ÛLå¹dfôÜÒX,‘’‹×ž¼†@Öö¯þ,?ÎÀ7p‡ÓXѧÐnk¦Ä¿2æ’Wz H±b‚>ï÷Vˆv¼^˜D˳b(¦¦Ð¤Y;ø䬱É"˜Ò¼lÑ1ʤ”á÷éW‰AþáÄ,x»¡j4A¡¬°Ý³Ü}ŸèקC•=”+9P[îãF€ÑÖèæî]P ¬smžbŽr車esn–CEsnžw6*'×uôKol[í~…x¿\Še|\ŠÛÅÍã¤Oöµ^9ÍÂøüûZë¬;÷Ì!³iå”#6Ìzeq#,¶Ó`7¯ÇçZ÷oOvÛsI´guÊ<sm±‹ª#/CLÕ‰l¦h…0X#/´£®¹]çv9GJåÌ”RëºH‹M14 eÔÿ¾qf©‰5JE èQR"ÃR°ZwmŒºdâ2Õ‚¿*)ÕSOÖÔÁ¥mOÅ鉼"WûjR2sÓª€¨â¡ÿ"j˜ˆdf$“í©‹™4¶‚1Æw×Ó8æ†k–¹¿úG ¡cŠ"©l¶‰÷UuÞãb§z£MzõØä‘A‘LÞ³‚‰àK+:+«'ß«æ\§0rpÕ{x˜F»¾ôfÚ]FrÅ|OªÎi)—Ÿ‡±·ÝÎgÚѬƒ#/Ô`òªŠS÷kõ¿SžwÐÁíNÍÚÝ95ò¨STëF¸ÚTj/&[:5䢒~N1mË&³!<ØY*2®ŠVe‹)…°´æÒ wQJ#/9Ï+ÇÜü±S¢¹Hº&¬²ª>Ü]Á¤¡ $}Ì¡_hM>]adMŽCRßó°úš¬[Òé™ýGhfLRùõ×ãë¢:eˆošÛµ|Q8((UFx¡ÄZXÇ-'“3{iXžlï‡áïºÞ½ù×SFÈTQWË&£xÚ¹Vÿk÷{y1§ÖêM¯erÉ„ýç×üÞ¯¹íÖ)Ý[›JOÃùþmzQ²&1‰$ÔR|Ôa6àAqŠ3Éž¹`ÎÞÍ;–=.4\·5ÛÎû7¯[”’ÚJ‡½Ü±h¯×-ÖEõQKH ¨ÎTi®AOh•WG\£bѲUô¾ú¼bÐh$òhUE‚‘v£×z{q^Zms#*Éójb¡HÓ–µ%ˆþ5]#/"1Íkf¬üL ‚õ´>º$¨ÅFHŒŠj lÖÍL+ž÷/#,A#”…K–¾<êäåÓkæå—à °dÕSƒºTx¦7J)”"’ê)ë½ZÈßÆ®x:&þ”äå—§uØ1fÂj/•×Eñká+Æø9i-Ý“…âb-#/ŸÆ(ÑÝ¢4¶ÒÓV¾Ô¥Ý„S²ŠŸFÇÉlV–ŠEFRpg©˜L’5ª:T ©:ö·çAëÛ? {áÓ%Yáðçy7¾ø„jÅÄ(‹'/õYêÏ?®!kÁ4ntáAb3Q½ç˜wEúC<Bc²î 2‚Ó×™%lœH:‹k•II˜Q™F”ÏÎéæÃâ»ÉÂvCPIÝ…;´CþVx¾T_^àé;Òwa¼‘òÕZdnDF"#âÐ<¨§¥M«£Ût{ïžûð³…QÈz䬥tñÍûòP3T%!«enbÞçÜÕu6ãZ÷Ì$¹cr#‹4Ñ,íaöå¦È0ƒg‚Ô†~ô[»ç ú>Zo_9œTbtNlžLÑÛçÆÎxQçTîPëUæPœ¹ß80âè¢shú²…;Óõõ¾¿“©¨Í‘0Οx¶ÌµêùÍBúgŠä¾UPµ:ƒÆq‰=Þ”§Óh„PíOÑ‹!jÂ3ÞOzüÚÌ8`³a#,îBÉô;¨#/÷#5K~5Ûa$^l¡zÇóŒf:ãÓ4KåQŽÑ©1é}©Ò‡Î\_'„W¯ÝÆoxÃp‰z27W3†\2¶çhömï)Œ®O±R4?¶c²=vñúöÖ˜jV£_–RuÚvT9¥ ,U†(ÿgÛíîÉ ¥ 6bᓺª]§Î0+6H#/B…!¬/;©Èä¶.<Ñ:zxºº/숡ÇL!ST×ÂŽlÏ#/Òè)ø³®ÙÝ!ƒJ‡Õ-"܆0#+‰È£×á”Æœ‚ÊØiÐztVÐÞu™ú¦Â>®þwµÕHا>®G豑ä=×”ÅQJ±Üöݽ;,š<ê¦ÙÓÅÀ ŒúH&ÚÛ:á1úEßNœÕáÒÖ«ƒ¶*#,·©4ÑãÔâí4<kÜíÝBAopÔ¡x4ða¸v”„ÿ²àø ¬¹×¾*ߟ‹áã²IeTÓ·á×KIóëJEÖ• N¿)z.ÞGr\ÓÒƒºùsŒ_©¨ì"~;ýHé³ÝŸ9ñé¦q„ÜŸ˜„±GßÛŸ‘Î×T -ñ#,®>.™iÍÈùœ @ï+[qþj/m˜ÛCZÐwÅ"œ3vDsSBþ?*ŸÌõéÍÆ£µœÍ_}7íöâúd6CU"¦é>ù_×ÞzúW^¾½ÌI0UJÙ²…D©}îño?¢i÷;Ü®½uؼÙKÛP @ˆ¨‡Þ”)†Œð²Ýšòi™euKTW?ùl²*‹¡<*<ïúî¿'òÿ®êZ|ÿ?ÇV¿¢¾ör[y'ÙEZ((ªE¾Ê)Ÿ6x ùöæñÇòûp«ž•7sf±GrŸ¶|†ØíĨ{«K$O÷šÛWʸIM¸—ó¤`ýU55Á)™ïÅÌxÔÒëæ—aÃLlÀY¬ÒÖLa>ìµ»Òf~T”þGÈÏ]ÃE‘¶Î¡B.¿4»)†¬û“«•Y–£ÎÇ,e„?<®Ñ^ÓÌä‹“„¿Ž„`Ýf3yÑüé´,ŸÄw[ºÄ8G àDL4vzÖèã¥<6ÛÃ;rûì8°:°(m)UER`gìÜ}TT^&j¬#/b‘dm§eٜǟfá£øuuO»~Ýð=´B(û˜U^;vŃ8™“֯ȱ£Î(×ÔM¾†ý‘xôܶ»°0¤NóOÖâmL3Âßi™e×´”ˆv³åì––%#/]L‚Ž¼Ü厰¡Hlê!Ð~7=ÓjøqC"±*™—Í®£† ÁáPË|o|Ã)”…FgÇ‘Œ¦_bBøÕ/krSÛåµÌ>£çF7̹–ÀAAîÚ€»Ó]¼kxÌÄES#/z¥¶×eÝ0ðMó HêÚbØqJ}™É)I¥t½›“µ™!ž"Tm¶³óUAä>6ƒ]¬ŽqœÔc8`Bü©Ùâæ½zÙ¨Cà Æ#,¾•OnlàÊTˆŒ^•%"Ñ[z±|ùÙz'+?Ù<*š#,°;–ž)rÊPV&ìêÊŒ,¶sÛnÏÝÃdt¾Lo˜aÄ4VÍ2’q¸ùö÷ÙAóÄMX¿$™Ë+£–Ž§ô[þ‘&yÖYñ¯;f™Š+”ßcŒã=ºrõãƒùÑKêìæÏH„ÈánÇ+Ò#¯³Ô΄2L‹J\85ˆ±%®ƒ±ØOÿuؽ;®wyÑÌqÌâGag,¼¦2:LçÑeEÄãçN,ã¤á¾tß>‘oÛm鯙¥5 ËÚcÉ#,3D…D3[ÿ1g¸øhrÁB(ªÆ¡º²,é8^Õs5¯˜Âa#,…‚+Tîºûºiªö›[ž–Lýî×—DîK%ws«å’Pýóó(,EYoUeðÍÍs’[ËD8Y…B,U„Ò‘Ëö!£v²¹hð°*/Ò´)R-šÔ¸¹–¦Qä/g1$†.º´ÛÅ#,øчƒ£†Ü'‡@»J?‘”èЛ+êž_žã2@Z¾n9wiL„Ïáå4%å:ÕQn:úVfXʇ½¸^{ÎzÐö¢Vòã`[¦ü·vÇêzXT/šÍÆß^ñ(œGo,¿‹ô»©ûLH…¨x±D|eðåïÄ«ñåp¿žPOlÙ…äRª9Ƥ®¦Ö}RQŽ®v¸öz>¾<ÁÝ)óvØNéÇp¼;)¢8¶>å(ˆ½1ðÏ»2“ú?vºúÖÇ,ë<Pú<ߎ§íûq#,®‡Î}ïlíüñzµFN!µe±V&5Oò‡bð¥Óžc¹ŒA÷Në ²™c:–öQŽukB…•TpòÅÉò@WJøPy=½ü2ݘ÷Ì°Ò#,j¤¾^Þ›ð!œ¢íûhÊoÒ3c®4äDª¢>,`Æ®;[’èõC®¹ÓL7ªRðÕt«ÁOÅ”¤P×^ÇMjë)oáTøs¬ÚÏ-ZëüÝ0aC7rs‰Ôs¦÷^º§«÷2mŠu¡V±F{(–‘‡ƒöü(õæËMêéÝ,ð*xC¡„ªb߬7i [;H–§R9‡B^×ó¿;¥wV—¿[pØœgG¶¨™åYTòXGÃmw’ sÁ&sµÅ¯Wkˆ< ”%”Ö˜÷YGòV‹|C—ni<·ìˆû“ª½Aq«”®Ô £SÖbί¾,g_¼soøUÊlm‚‡nü?¢(†‡ð¡XÔâFŒT&]ªËÛùþüO3J;Y¬ ‹?LÛØ•U–'+ !¨I+ˆå϶ƒ*~‡‚i蜣)àÒ§$?}nÍOh¶}È]ë»òï屌W«TñMœÊˆ«ø÷{·rfª•ìͼ)òN/ÐvSo¬_ëò¬¾Ñh6C¢9OU¾û#,;ógz„ͱIüuró¯ñ£3?žÎÜÈB>‰ª[o®øíAúã-ýú˜Ê¿xQhVô¿•M–ÿâwÔ¨bj•Á¢†plXŸ/£oõsÒ`Øßf5Ÿ^éŒÁÇZ’¹Þ‹XŠ"ÍÙ]Ù W,V6¦ý`“õ0+ÖºòáàÄ£÷¶n‚~ʘM{ò`²ÞF#/ò®vP¢}Sµ˜ÄæÛXñÚ¸s,³TX*#/‘RlÂOÀ£y@Q}xÒ#*ùúv¸újWë4梌^lM(k•‰ðÌ"s—8ñwÎ|±¡E¸ Ýšá9t%2& DbÅbÖ˜ÁŠ•u.ì[Š°7]J=¹©è”ÌUçèêÌÕAüšì“§flóaÇZ˜,Þª¢pacVBµªæ-B&Zj H³â6U’´ODßTX[¿w?†¸\®èã.j8Ú…Ù<‹>PÍö&ºL®zYÛ.°ú\¢’»¥•Ÿ‘qÖ{õs6½Ýˆ´úMŽ^ì¯"áW`Ø¢f OŽ^ùXÚ6ø{mõŸ#/FŽŽ¹#7ìî¡(ü‚¬}ØßìÃ3*0i0¶ïo N?Lª<M`¨¨šþDÁx¤ƒPj'5$84©Õ˜Î-]Ô=·Z e"35%w[£yë÷=qëªö»Õ)YSWŽÝÛ›Äír)qÕw']e}$XUbŒ'Ö±m1Rßéû|lõŽ@!×àîmøÙÅùlVëFðíbIÄ©$—$Èã%…ëi·ê+oðÛþæ$Œ´GoðôÝ’Þ«süô3jPNœ¾<¸ÆîùžÞÃôôQ¤É«ÑDÕx}ßïùÄÿŽ\¢õ<Š5Ÿ&µ³Ï"Þ|0c?¢¤èLÍ=BÁÛ, îIö0š3ꇃ«/JÑ(×6_}½Õ×Ê2¥1²lÛà“B#,Ÿeã¹52)áÖ3¹oÓ¶24äÕ«ñm®ö-GÕ Ðzµüús®âÛèÄØ¡$çwOË\ÓÄQ¢0`h´0}$@5*øúY(E+êdX(–#/-(Ä8¦D<‡²Åœ[àçò»e¾ñd<Yãz63T¬j^TËâÐý¨¶Â¶„E+=B`äŸcjÎu‹ŽŠD“5‘¦…DºQq{×yS¥ï6höeGŒZ«ó™—‘g¹@‹–¯»ÏVûø¹üÖªiøuxýwv³Ä‡¹÷½jÖËðüÙv@l7’¥ÞEÛv‡Ûô‹¦nö¼?¦³£â×ÚÏ|§Ç8èåèÅHàFúaºq¿‰£4Ú¾×QòJH¢¬¤ÑA&ü%ƦíT „#,yQ|¡º+µiþØ&‡wj§‘hÒü’G²Ìüñ#,×p#,µY;z@å¥mãóÍs4ÑX8Œ ìÎë«‘¿CoÍÁht‘§ü8Ÿ‡‡ŒÙ„wW3¿öݸd#/V#/ÌÑêJoìÍ^^÷‚¦X.ž5‡ª¢šEî®â¬ ·T‡³:€•›Ãì@øùú~ÐÁ`øóßTâùWGvƒë™Âá?Çήyü†Å/_H‰s”÷M³÷|-çD~Ò#,eÔèÏdÁøç=ƒe²°ÜÆm5Jõ‚#/\eÚ´ñKœ" %`ÁƒSg¡2d–TK†ç|õ5ëÏ·„û¿UoÏ”ùeŸ-…ïSʦ¾g(^ÔþØTI@¼3ŠÐIR$0$X=+p_(®,·éµº1¹¯ûoVzÔºýöÇG–ÅíóFzîåV’é(&\RdPù]ƒóï™k…ª¼rmšoF#,1UÌÈúyx«å#Ètò¶ÌVÝT½ƒÛEH3½OȈ½J MFþÝ´ÿ7‡ Ûlq‚@¤¢ÍUcPð®2Š°p5ÿ5NÞGm3Ñ»[»¼ûØ'®iŽYÄ2‘Kóm6àö‹þýŸõ×e#>ì”Rùrñ¾#/é€Ù""0=ô õÑÓèÎÊÑ ‡ûà†Þt<$!&©ÓcºË——«Íòòí×å͉*÷iÿ4Ãñò®«y±Ö×5Ük@ÛñFŽIS[Àu‘Ùí˜ðƒ@MãÕYÁa@°ð¤#,üÔtÖ2£–—Ü‚Q7ÎS™³%‘,ë¢ÿô‡'ÄJ´rùCONÉ×£˜êí‹€´r¸F–|¦W“íÒ¡½<`u¬ï^·XNźiDb¼·ÍyÔgï×(í«ê„]G‚ä£P¹ab‹¸YŠÚ:DÀ–¿» GA~;Zùf@¿ôGIÖ–DyÚí ÝŠCK6»ÕyµÒ>í®{•#,^ÈìHÎ#…jž1{D,êœ_âëa®Jƒ`Ä(…F¶r”/r³Å~ztÄ›Ðt¨&ëå¤-gÔÛ…X[ÅŒð6ÕDnvôϟÖÚÆÍ@I‹óª']¨òš+'^ç¦x©CšnC{qe¼‹,#/J"\ÇoÚõÁÓŸ:î;Ô3À!ÞåÔ:ä{p^ÍZ2r]pé"³¹”8ôã lvŽ…±ÊOúk[œ_ÁF×Q_Õœ€‡>°:怤ï–ܾ¾L¼H™°'*X>£êzúÀó‘åÿÔÓ‰#£’ï?õ„}ÝLàðBI ‚UmNg³K(d1ëGKÕ“ÄSw’ä“À%ŸÔïÌØaà#r\/*¸û#/9Î[Ùú|ö9rèÞ~•Û»ô¨&ï#,P“/ðý#*”#*”ˆ=¿×¾hOò\·½—<Åvú+¬ìÊÿ.Š[>¦ãâúìù<uÈÁ¦°Iù¬%/—¯ mÕe-Ë¡‡aÏÙ«Õ㪡ÝìÆÀ/_ódp—?2¯w¶Ì">BzëؽŒC¯ ܪJ(°!#/,MÔÆy§ñj:”"µ í B‚ 'Óùë¿›ñk‚&Ýêlß`þõè|üq^3mTÇÈ8R±“ôb]¢_“…«[Õÿª#,ÍQGh*"BŽØÝs‡ÿáË3 ×ß*ÊéE̹iãT&b",ƒöŸmH€#/Þëà抌½#,£§2#®Øœ“§îõ™œ«¿^ñ\ÿo§ŒŽ¿gÊgôE»íq¦¢‚ÛY à3ÖÿU®‘+ûÎSL|gÔ»68Q4@¹è D.j›tW6!?RÙŽ}«eøäkÐìJloM#,‡êJ#/zdm/v–Æßvxˆf²_Z‚[>zúè)邇ä}®`] Ù«Ù8$üÞÚÂt¨›å—û~pû¿ìÔuÍp¡Ð0-wÂ1ŽûuÃß,{7‚¦f ×fÙSåðÚ¦X¬¾)â ´„ü°sú¹O4@/?Y³þÁ+œ.é$\|¿[Ð#*éþY#P‹Ñø‡¬»-HóMÑôÖç¸.C¡²›ÞßNáö|¾§Œy.®û/çé¸Ø¦våßbJ܉Èj]Óý’>ë'_ï>¯ß Q¡ô룶Y¡§£áÃ+w]PïœH>ûøzÔ#,šãg¯¢d1H÷ÿdc’ƾ,Õ~B"ÑYñÌ=Ñöôôë×íñ¢ëŠh Š@©Aà×iU€ìróßpn•›Ü‰.ëniü¼sñxÎ<XɺQTéî=9éý+;JkÛ~s_‘ûûñûìI¸eôËAb™ˆ„<ã‚Åÿ};0êœÝúyiáÓ—ù8“§gx`Mj—k¶èAb]—v÷p#üåÅ]]ËAyžßÕ·¯.§ þ;3ÚyK¢ª]q-ÂB`¶¶C»¶Ñü4Y:E\ÀÌŸK"KQ”Óxoîäx`P ’…¾íÎ"”[†Wæš/Pý˸G#*©F!)qIÑfâNÓÏåïí©\ègдãós-çý˜ŠL2Þ9É+D˜#ƒˆLÎo{<8itñÍ°rµ“@úâÀ@’,~nÿ3Ïb°p–Fmèâ]ðþ-#/!Î#/rfžöÙjµÛëåôt™Diô¢›j¥c´(ñ–¨/ðhªïY‚÷|¢¸ß¯?[³G©-;ìb‚6Ö‰4d‚Û#,¯hªcW¦~ãj#,0Î_ÇÊ©!WúI%¸N¾|µ4°I³3‹ÄóŠ¿›?ûm‰ è·uèCƒSŽª8¶ÆAi*së|ÊF,DÔ3Î$÷M¤Ø°Œ^]~ìœ-¼d7àè‡ÆájN™ü{ÈPe>HË)~Tw’ÂÜ‘Bc~=6ÃaÑÒw÷‰4UUH#/Âr[“EÆçt¾6¹æøÞŽæ"ö#*ßãEâ±ýs0 –#*CÍ%Á7Äý›i\š€T¤Œ=Ú™îÃð«…p2óÎÈzc Fk#iÄî•Ð1sNFÉ÷¯§@ÛJÜä°¿Ei˜£oŽ¾Íiâ½_C‡Ï´ÆïO·ÿ‚vð³¾MD6㱋͗ŸlY,'yŒf)VÕûÞíRzNša£É¤ƒÛ¶©~¥y:&)Þ<ͺ⛪`תËV°…S8çtn_od›å|>839 #,fçÓZIQ³¶ª„±ÈFGF!´ê¾°ÞüßåqmÄ?AÄ/p™Ú7ýMHI%õÁ®\jÁQ3±ñ¸)_ô{½VD¹4›a}“-±Ap"ÆéƯIÌÞj¿ð=è4ß!äi"F/cÇhí8²¿ÉaÆî[õ™M&G>ö)Œ¬Žˆñ⬒…¸ïà7T㦒`h_Uñ?´óA¬¯úî†Jô#)&…4œü#ëÄ:*7å¥6ÂfŽŒ.†žªÅ'¬ÌIL„°5uîP!]{í¶¾¦Á#,ôsÄ÷‚ˆr“$Å.3&=ßÖoÓj“ÂmÓœð;’aתÍcFm=MAbÐ#†éUD`o]h/uãOŸÈ宓¤ h&¬Opšˆq¡Í w)Œ…DË.îrÇÖDTDRÄô©å¡6”\®:`Ìh1ÓJ? q¯-<Ä|*¡´:sk‡åL†=þyÏeÏ@ÜUá*1•E‚ƒVÚ^oZ+bÌC¦AUÎUhÌX5û?@Qè¬@Ô‚PÚ6°u~{f”Õñµ3O7ø(Žµjå#òÛÍì?ÛwäÆþ¿Ú?#*¤ÀnóY?ÀÅ‚êBù·ñÌÌ2È3m$þjן˜@º#‘·ihQgbåGÃ<<¸iƒ(‘•í"Q‡f1áEС`ƒ÷-ªÑHÓy©é¦UW‡Þ©F!kj„|:ëÍ;iUâàÎÇ0)1- #*2#/6c=$Ç7jœÜÁ™óeLÖa$A6.”aQAJg}D$ëžÊ:S·EÚ=eépÞÏÂBå:3£Ï¬µXæÂöó~Õ×Æզ߼ñßD¦?’\,éÙ„h,÷g#&œïÓ[…Ž‹À‹#/#0+iÉœÙ=IÐõ*¶`ûh±†ˆÚRË0IRp´Mù‹„i[”ˆzxž.:à‡F»/(áÁ¹Ýl^ø;Ùßc¯ÉV-S¹ÞgÞCXA·–hîC£.˜sèhr'3u—¸JaÍ–…BPó×O«v)×?W-K·*o7ÍÝtÑêúöÊYÕzÜòÇ#,JBG¬vv©»†²^æþâMÒa-pIÙðÍÇŸ_–5ë€î–Ý.éƒ+Û‘Öê£SÎ*Ë&ßVQdóáýŽš®¯§¶Lí¸¢Ró‘àpLªŠ¡®#*ü_ò÷2–Qc>vKU¾œOÎ_å!öÓ>Å=NÕ:ìúÕ¯óG”éÝ·¶¡qmà¦pèÔUØäíS•ÐB}j:ÈP׌Ņ°;ÅÝ@{j!Y»dº¡a‰zî×wžKµÅ§ŽÃ1€7H¸msX¢Š<>>zâ°{,ÀæzHófÑ_>WÒ¥zßFãì\ Ã0ÓN„Qdj uT,f%à³Ï3™e˜ŽQ#=š÷`˜š&#,*‘Zi@6²;È™ Ã{†¢ŠEòóò×2lÞ#½Ã,c¸¹hÔ$l;^Õp‘^Ñ¥bÈžÒ‹O(Dþ3²§,v<WGÇò€ÊÉøפ0u¹VO)r™ n)¤›Õ¤–¡u ÍraØÀ°!ÞÛîp/ÎzDœq“ƒ†á{MdÀ~—µCt·ìçš,0p¨¨S"Ðoœ*ñ“!WTðCyp2b2£k“Æëuç¬4ImÇ0XjkT£®µ‘‘‘éqíÚ+ b!Èj#,§Ôš#çÑᎦ”oöɽªsµmÌq÷÷ôœ”´ìåsþ\ã¡kΔ }°Â±A' ?EÛ``,\;ßGéIHYz$Ìð©2SgÒëdGJZÓoý¿ÞÕäÒ‰Èlîí(PÞ{>è•cº.uYÁ8cÆ#,µw3s³0Ìܤ‚éW‘ÛÆ v+!£@÷jhê1m&pÁD5ÐÔ:ÚdJ0(Ä0ÃçhÐ؉ý0¨ŒÄ#,¥Ë#6PºËlˆÇYbD0Nè÷Õn)±vö~´ìÿ«¿^6äRðŲ#/2J`±@GPÀÃ.ªº½{õ· ‹cLŒQ`š1 ²e!£%°Y`]Q5Cž[…dÍÐ1‚É˨Eb+aQW¡ÍJmdŠ£h·ÃçÛèõ÷;RîX‹$ê€àÕÓ–ë ¥ú53#*ñZ3+Š12“˜Nó¨ôÊh¦5`±|]£m„Ê—sV÷$ïAÞÚr+q›eeé°„º,å€#*DÅ‘1è¨8íÍ‚pðvîò§òÐ4Ù•NMÖÓÙñV"tpÁÒ€ÜOº5â1”A”ËÃF±ýÇÁÌz,uèý,–g«ë|Ç¡þ~ªŠä6Èò¼„ÞöŽµS¶!tm#/mD¼ ùHõ£œ¦È³.ŽTKB™m#/Ú)HË#cJX†ìƒ’£[ÔÁ¯«açsÇŸê©rÚÑ8r&Aõ…r®¹Š¥‰ÁµZ¦}òÖnb:^;QM…MølÎÁò»’µgŽSâ7}„;LØA"A#»ãQ'â+v“8Y)ETßB‡ýƒÕº~1‹Û&ÂôJ)—špÂåJÜ£Åâ¤cI·“É¡’f(L| Yœ,gR¯õ¹Ù(@æ Q4°…#/FÌd«lǪ#*cWéÐÖgÄÊI%]-¢à~ÍV’§é5Ζsë´ËÈkrMj’ˆ(©ÂDÄ#,Éâq#lø©.ÝŒ‘ü3²éƒ#/ß°§éÈÁ–btÞ®pš¨¬ãfˆÂuXT¢ÖžÄ±`Œ–Ÿæ÷ÿv{„#,#,^)sËŸç¯øËæ×ÝiÄxBœº¥ri€4ùë:-#_b‘¸….U»1¹÷¾Ååð/:1±zcõ{64#*ÂTÁb%…2lí&YY›9t¦jb¢Â¬1M#µ’Pȳ"$èëE„4“€ë#®bšjŠ1Ò(£‚Þ66 “x†[ü.…ÀMH†Ò+J‡,µÆŠ) PÞ]°J"íECF•‹#¡FFà™"d´©0ÔV†ÜŒêÈÔDcÓ1iHÛb!‹M).É/éçŠÆïã.M3#*œ†„›ÜŸáQMæJ祃Çr+åΟŸ<ùóÇE1¤ÞEÁCJá^°òÔJXÇžt{šî¼ß:œK¬/¬÷Yîóªz §no¶µ|áî>Ú|÷NF7”‚S•"ÝËÐÏùéÅUÕúïµ2Œ£×‹Ü9ÜLá¸ãL–[!§s\†‰`¶V+²ùo.ÊœSïÃ<ûK1Æp&ݱh†MŸV>7"<úôQ·èrÐ,”$¹NÝ®Xk|\ùŸ^ñ{¤(3Ç9§èu!Ç.󎺸Hñ.>Y¦è¤`í…fKLµíQe¤w|«;TD¦»„øCørš›nC¾#/6_)t©òØm²£kÛßTiÛ6nÍÁ€çÄÌVõ£Š‡‘µg"ª0–0Xw$|¤h”èÌT;KŸ ûó:»:/GêÇãÛt™1Üy’@Ê`Ÿæ™]¸‹,.%’?èN5ðÑ=ÛÝn³}‰´†?2Ä(áa0R£è¥x¶D±¯g_>x8¯‹œF‰ÚtõË÷ÆlªuÕªžC’¢Ò¡ó{爽ªcu$\P”`Çp¹Œj¢~yµy玟–`cöxÎÀöìêç‚„Œ"dhgÒèÒÛ—&U¤ˆÅ+5PÅ1{;*ݵ—4þÏ´›êdÚ2‘OSª\¬’TÂ'\‹Ïz@þ½uÎ8dù»ßgÜy;öSÝŠ09ïÅ_×_=¦Óÿh8ˆ:i|)qÍz[}¿ÝÕ/Z 킬`º×ã\!Ñ\~²0劄Ü4Šlr̈;·ºýjòNmÁ,‡[ØÍe˜ì›±¯S®î…#,x*¶™tƒc%hÃwX«]6#W5É6¢·-·MY¥»¬ù{MyÞµÄaŒdv–Èx±êÒ/€¶`ÐD¡’Ö³÷«£·í©µ´ÇOÄ-ª·Ëf7ªÆ°ÓzêéúÖl“VSÝô#/ƒê}CÚͤPO¼)A7z<:ýõ¾ÎUËåÒrô³Oâ}¯ßÒSÐt"Àë*.=#,_TÚnßç/k#*ÓÏuz»@ÍC†°:okª:fu°5gèÃóÜ?wï¼Í¿ÉŽÞÏg½êƒ§•$9Dý08ÃÒüó>'§æÒ ‡³ùyº9e—¿“¹rÐ1ö`€‰i@ š{Óƒ¬å Ô×ù‹µÓê‹OÏCˆŠ7ß_ ÓŸïÜogox½‰{ÖØoô_”¥Œ#Œ±¥ñírÄàJì#/ACšQ¤]q¢½”4|ŠD÷ËküÝ©ãä_ØÓܺ»Lè0IcÝÏÃòý’çìú¸%|Ør#*äEP-F³72²1NÈ#/{Ç rùŸº–0›77ªwõt[KÕg Úœ ܖϯV~Êãæãë¿d¶zH¨µµ ã#,çÅÃÓñzÉSû|¿~+íŸ&bè·¯Â^»ÄÇæfÄúu²Aàjf.*£%^y½#/@ê—Ñgâ2Óu2–©øœ“»!ü%ÙYÉÕõêDÎÕÍô8.Ò㸅UG3ƒ)@Ä«]°±Üµ…»vîwêÜÁÛ¬?ÞM" }Ãþ#/ówˆÈ zŠÞ2‡®eS:¸!61ÐŒb·¯&dt“ÃQµBN€Ó¥Í3ƒ¬}ÿ·wêTe4vëPL_ïZ²ú¿oÃRmûþ¿·çæ·¡RüY*ªUT¦Ž¿6»ð…š©Üá õŸ®Q÷òúß³_£ØfôÈvØꇚ>Œ-ß󷥒¡E±êvØ°E3jK&‰˜€Í•,eí8ÌMlUýÒôvݨ£Yn¦Š”0)…ª ö~S‹Ú¿¼?´ó¿wÜsãŸWüGPÿ(šo6ç¬ÞpL¸~¼pÚŠ`ª¦’a[Ö)(G#/iŸõ¹–,E`ÅÊ»®Ô³9ˤü‹`ß›8ñúçð*ãÇøy?yþJaÜtX¡EáñŠO¥Sh)Ïç¸Uq>”ß'åV„Ê(ËËHÄÝ'Þ”T@?Ä) J©‡‹à {Ò“ö2MYL˜Ñ#/-óÕËêV¾Ïó:½”mשWËxB ꂈ#/nUECÊ#,ˤµût˜ûg+æÙ©ZgTÅ–ÿmVZøŠÔ#,Ò‚“ª…IåæVÒÿ,D@'Ó- ZWüÊàà¼\É¡¿ƒ’èZ˜s.\e—úå§ñjÅ‹çƒà{K¨ucBfD%ÏyZØ¢Âù ò6·ÀlWoÅPuˆùKJ"K;¡|Æe•ÏGOBäq(Ê/På#/”Š#,«©ÔÛËß™ÏòS]èhl§!ï¦é$<5ÂbŒ9¤À§²Oò¥®+é×NXjÛ|>úæòOš>!(¾T(`£î¹4ãU1R(¼P &ÂdÜ‚ÅZZ‡eÖh;jÿá#,S8êçt¿¥Í'Ú’èãÁ¥œ(èeþF’(pMÝ(¬$*áýv¢,QVÉüéI&Ã7ìÿåĨ {X)::|¾ãîå›kþï6?IæùíþæýŽüà#ìíú~Ÿ¨Yëè_'žgÔy¡ýÝd…¼Ao;¿_³oHÛ;1ˆºØv_hþØðµ63Àð=Oý+³Óòh”Ãõ¸ýrÈ¿#*.øÄJÀý¦¸-‡>p»èGád?Gx}¹wØÁ¶ô“n‰#,]ß².˜€äAÉ2Gƒñw2í¼_×e´§1”‡9½Æ…|tß4½íùÁGåÝ|m6%¨X×Ì¿(§öÓqãøD;‹/!ÖåîÿHðÈÛuVW?÷j¿½ÏÔM—r¹+©‡/ç¤i^4ÆDÞUHIêžÎ¿žÜ¶€¨¿•0c¾€ô÷^¥ïPÊí8jßuÖÑnv5åã( H†T9ðl+œ±pf!žƒ†3”Ñ"RXfß•‹´¹ÎçÕGûû/ãTYÅ»Nœ#òÇÉž¿TÁšW‹§•À馛µlÊï)#,¤)#/¨ó°p¸X2Ö@xä—T]Ṉ̃)iYÂÅ‘ØGÚ;ǬOꈇî÷{¶}zØÇøƒÈR(ÿÈž†ÅãMhª£”¡‡÷þ«Ö¾Áˆ¨ÕbJ`€”˜“Ý:üâ“ÖœV'—Då;ytí+,ìÙ“¹˜`)‹©l6º8•ÑR48¿NBgÆôÕxˆYþè–A#*¾Ïó䆕ûûç¿`FS©v~>}ë¡<®—íiÍ)fjè=WX›2²ÍœÌ/!@W¸1:T®‰ñðÆ{Å=Ö9@ý°:† i9#̳¦sX&ba ’„ÇiWx¨ÃWâÁ÷aô»’Á„•Éa…~B‘F±Â,åå$DF¨ "…àý*©ë]ˆiçþÿ{¤E&%Ÿ Kbø`–vû€öûÓ*ýõOÙF×JÔJ&,«3Ç馬´Õ…D”U2ãb#}=©ýcôw0ÏV6ëÍ~_ÇãŽî:œñ3ÆˀĎ+út0¶jˆbWÖ¬I®˜—¦#/ÕáZÕ|2âÄþ®žOŸçÚ«¢˜#/O9v‹²´´ó«xÓÎÀO¿4»¶ž“ÊþÎ<ÿ‡bÿ`0ÿ-¬#,;ûkúA·óòêC©“akÁ,–0¤´…”À-`!,òO)#*Œ˜O$…AE@7ý»~ó}´„ˆ©jù #*£Ü‰"‚ 2è뇙˜±Û¿·ÿÓ³Çêû¼Üôø¾ï¹Çã6né—ÛÑñ>êe©)³ëûí¶ÎNOWé³Üìç쵂½vºñ§Õ1¤¥«]çEË]Ž÷2-‚~þõï÷Ï~Ûí±ù[£³_ßÛúFi¿wËN_«’ñ W¦1œ´sh›#/nµíü¿ÁùOµª\-ó/§½n_O=ÏÉõh¥õ;Ü5û0råŠû¥7ùH´x;wχNaïÛíü;GF±«Ö[öf!ɧgëýßkÏŒXµ.FO‹céÝ:ËVΟV· Ø>/¾Þ·ç¸exÐ=rañvÉ)¹=ÿÎ_T‚üèô ó¤q#ió}þ¨g%ÓäÚöêϧ\§ÄÄ[Ž<Ãï×æÑôyÿßœÇZ–¨¦êÑŸ»#^6ûí¬øáÔ¼¸w_ì²mðíòA°…úqçr;¾ÊløáF3…¶xÂNþª8:=ÿ6Ïȵ§£N)Õ>Ïë;ci«jÞñÕ®gº¼û·P¾çÌkXõ?¡Þgä-À-ÄqG:>ä±»«ã;0ß‚ÙÚÑØ<²s¢E§Ÿ÷jùÛ#*n²Í’¶ÎØ›l½€ÝϰƱÙɲ˜—¦Þ,>èØ9;¼û¼Öö¬š¦xã´[·”B.`±s6ºV03/{ž®iû~G8˜Ù§m’w/·Ÿ—öù¸óáçßÃØwn&éc½Þ’%ñü\#]ïúïÃÉlxql÷í¹¡æPÃœÅ-“uÜz÷Lpã_}ëÃãº{ÓÖq!ÞŽ :xA<f¬R§»™EJ¸lÿƒžnäø½;Î|¬±®½óì${¹5Œ”u+¿cÆÿ¸&±Ÿ£Óн¿°ÏäóùGÄì˜|ØŒö_IÄwrfñ]ƒE²öwï•ÿ`úy(;ב.9-íÚúvÚîÊÞ½¯¿#,¢ë>¬òª¿Ü¾*ìÂ.õåÁ“íáý<ÒðªwÃ&Ç‘v÷èûƒgé8¨ 5½Û¦Ï?Û7‹ô¶Î]8Ë’Ô—+|C°GE?NþŸÓ\}\aï8gjŽ¯æ¢…4Þdzïú[ðÛÏŸÕÿvæ=ø»ã^Tö‡Ñ h³ôkÚ]§+ãŠ'ú…£ûs«í¾#*I/üLuüÏÕ„zùG'ÏÏý7g#/3£·àï£J,@—1]ÁGf]ß]¿¡Ù#,Ú™}ë`ú¶qwÕÑXÙ³ã–s³Ðõ±£’¿Æÿ¾G#* ãwÁ¿Ï²3ÿÐÐ×úsÐAã#/isÑɇ3<ÝÀy.çòƺïù~/ñŸ}–~nmOO°ý§è?_Ú߸êïÓ·}¸ñŠhî~Ÿw’µ³öZJN¸~¿¸"¤+èûz3øËÎÙ4»<íþ–¦§ñù?(>5B¨¨›€W*¢‚P¤Å]žoÂËÈ/ü'éñÉtãûJšÍ½W.ÇïAf,hB¡€PŒ¿B,u*HG«›àÑ/€ý¶å#*€¢âôX}vj;ÿPû:Ò¬W$Ÿ“û¾ÐŸÃÈ:môö#/}{¿…ýóê?gËžœ;sðò~bæfÙäìØgéžÇ?aßúˆî¿7'Ztë×¥uìøj¿ŸÐjBëЉËú—êO‹ÁA«¸tŽÎì ?Ÿ70Ü<¾?-;ù{#üÆ¿Ñò;¡G¼~#¨w8ᜲ·É(üÂSÇšeqú'²™¯0ñ£ù?CF§[ý1¿ŽZ¬~¥Dp?Í~ì0ÃïoáÁ.—¸on)án½Ýãô¿ökݪÙ߻箷#,ÉÇÙ«wíù¯ì°n#,ÿ"t]OÃ>¹ïŠeÛ)⸨ýÃÔyϳǗZxîa´yÇ8°/XþR@Ö$ OÊ#³Û×ÑËÐÊ> û’Ôò®QÍÏG*·ÂA‡ÖVžh¸#*SøÐmgîåjû‚B˜'毫¿Ž£gN•çñêûpæ¾E¿Öú=<ýX;8r…ÿ“?"ó7Ño^ŽŠ™¯åaê•>rÅ&åv`ú0ðæ]\îýÓä¬É’ü‡ÆvÓÏ4Qô<ßÏøa#,#ˆôrž•QŽœ<ÓÝölëéÉ×óó$µÃ„†Æ 0=òÆÁOŠzf‹U!ûZ'Ùdܼð¯áE¹ù|¶®gXí9®ê/LpÊ׃ çõ-ßêLZOò8,†È¿“#Y^‰þâ'¥¹ƒèšW£M3¬±•ãä‡/¾â÷g+Ó?#¯€iPÇj‘Ö̧×lpzüê%ÙÇñãDºLùhâ,༉tÌàI,uü·‚ÔtŽ›#*‡Ö›ÿ_vzg«ê·ÜˆÑ|=Ü?PÃäî¬8´šýÏèp€-Ék§ƒ¯ „W´y]1üg$ëejŠáÏʲqŸF|]{ì"Ÿ*Êm#/‡- NÚØÃââ+Š'ìnîZåe5¬mŒKÌPŠÔÇöÏkÍÞ<yv\Uõ®½¦¶yô2ùÌpòd65;™Ñ©²[-ãX—Tto®!Õ´P#*ƒºÛl]&ÞIü}¯³Ü’ºcœ°ÃJ¼6‚–4À½³#,¯J#,M‚ýâv™[A¢Wa¢|‘W#,>ŒkÅãWÊ(ñõ™/¥þ[ÝŽ»æM¢H!%'q!;5¾ =ã¼ì=;@Ó¨:Ræns1`*çíã!H£ÌÖ4WŽl‚`@jâ>oáÂ#*‚«ÃâýÖÛõò_ØþñÍA¸wûðì>7ñ‡#,‹dWƒy,¾¦s@±#,ÈÑêŸtDhê:lõ$7ISQEG˜[Ö“‡ÓN÷BC‘Gv@VýviéÑg—òøÛ³¿³ò„0zý_iÖZ<ŽÑ=õø>t-Äôé&LÏÄ°>2àÍŽó×±{ñù~Î!ÇÙò²eäö#,ÀŽ)“ô[ˆÅç¸j?»Û&ØÃÒy]çѵv¸Ñås?èÃéÉ4ݦýÞ›ý‰ê©LRI͵ôÇŠUòuŒ¤öÆ/ulu³ÜYÌrs~qzúñÂNïþyÃW¶£MþÁ ;Íä‡(#,©%WªL#Ф’-t#,ã온þÿäÉT§>™OWñ¨ƒÙ%<£æú½cmø4£#*þÎylÁ¨6ÇX(àï&4ÿgÔƒëXQÀ2§©QÈÊ¡#/?ˆf@ç9œs×ðwâó®ë1¹[—JåxO¸cf¡ iDlTŽ Ž`¢´T¢M;b4CC™ÈÆ4ž%UiAÆàQQÔÛ`H^íO"Cf®îSVe™ªŽ‰B!ÁR]”¶…±Ø£¦¨ƒšÃŒ4É)5b‰¡¡º¤µY#,X‚0Ì£m¦© qEvz²iÕá‚aE!Â2`lRDuý:Wz®®»‡%З#[!Û¨´%~Ø‹`äY6i´þŸ²÷[Ñß"+œ8ÎHÁ0#oŸöù‡ˆÖ¬µã²ƒy…1>ÿð–†jKQgõçn{#,±»‘Á¸#,+S#.¥!„Àãù÷qý¿Ï}ùú|_ˆ3¸EäÏg™M+h1’ŽŽª‚&q‰Ë$Ì\Ð"JL#,ÉbRTb"aCV ±6Ç#f’J¤ƒÿLˆ* WI›}~3¯ïÖš'¾G—+–v¨¯GÌšpíý8÷K¨áƒ#^¬©|:ÈŠèx¸k§a¶ÝrÊsÊÕ®Á—6ë<þ÷Ž#*Ž5›<Ý_5†î‰Û·?·€—¤Z«×åÃBþÒ0êsþ=\œ9¾ðÐNQ<ÓÃöÿ~·;>¼?nR?ÓÕ í¼Duä,l¹.ÃG螥”%öJ¯õ<EÔªÁ¯…í²ëpú+¶:Jß÷hèÉÝœŽ¾1Qx¿ÚPò@8h)åpÙŸŠhH$‰ íÁÞ%Úìpõx{ÿoæ¿w/Ç«_»Ä¢Z„yÊñ<\h5U6ú88m:¾ÏrðígôJî<>!Ó’óÇg¹y´ ÂÂwÿÝûŽ.s™îWZæ˜aˆ`~ïìÆ=á·E¦å2þ¾_ÇkOËM¾fÝý÷mæÙ>bmÅ}ÖþéïÓß1l–@L/î‹í ôÏJ°(¤}èüáìÖ‹ŽûNó†ÙìæîMyÍÄÃ*Q"·Ÿ÷ÙªGŒb”í’ú»`“ZPÑm ìMa#/Á³Ý¾\Ûw7ždñÍfR¤ÙHE:P01CbGVnµ…]Ú“PÃUEöR6bq‹Q$E…®¡‘Æ•re+-Ÿ×ª-"4<åU«œÔ1¾Io:+#/•³[(D±R²’`£$éÚN3‹Y…#ïÈJ”¿³#,#/ãB742#,.DH+F"•‹Æ^“K®Ê¼¨-F„nT‹2KbMo1´áj-!ñi«Œ®!ñI‚Õ-®kD´8ož) ¢#,”i¯èÂc:´´q½,)׺èg)‚œjJ"È–Ÿö0 ÝC‹OÅDloJ£AiP+Æ¢rQÕZ ÏÐn´UÞ™QŽeu’‘ŒcdöÌèüÒ¨çƒ<‚½l8šm¶µ©ZÆ2R„õaA‚¼–#*… Èij”6(ƒD¶; .ÞÓ‹ (+]ÆŸ€ÊÊ×þ#,ËÑEØ`XÚUëKE®{yÂØ°tꬿø{“¼Ì|»eôª)éÕbèîÏêü,Ot~_©ÙÙ¤ßë¿ÑM#*‘-2J§‰çÿÏ#,H¶¸|°úoWggÀ{¶tíŠ …\ÜžaŠA¨÷)ÿ(ošóLéÑŽe¿ ýZŸ¿ÝÝÍytŸ-ñؾåùËõKŽ˜ÈÛ!!JóyW®{)ņ[“Ú»m4êìÛÚ~ž¯ŠBDláþMQ$ë÷JÁÚœ»¿Áq²º?–àèuÕ5+ïzȯZ|Ôq.³ñg܈Ûèü´ÁÙÓ¹ÁÛÚ}ÜÊGFþj >x÷ž~Hç<« Vé…§/»Ò\ËÁAëf$’ç*«ƒ9t`ÃíŠSÌ(P@fä³ Âr4zVÒ#zz™éª¡DüǨæ‡êÿ)Èu>€ìTWÒ÷‰à5ÿFߤqÔ¡Žs¹Îì¶Îh#¨îÆ,óôô¹ô¥óm¶ÆˆâÿO*b“õ¸o8ç¤õ1í¨%ççì|7ݨƆãÔ\„køíû›‚2!©QH6 ¨Ú²¯q›$4±§’ðäx¾ÑŠe¢¦*·¹ä“¼‘0ïà:¶ììEÿ64òÑ×/mLúœœâCÚk\>¿^§úh¯5e2Ð?x±Bª`¢¬¯ê•¦Ë›j‘±’Ädˆ±#,D¿ŠØþœºo6Ñ/ŽÅ# ÝŠYdJ©ež¯T¿®?A5Ÿ/`êü¼ «~#÷w|ðó¼oŠ”#bÍb¤±%Îß›ãëÊûµöÌÊìÁmêâh&7pÄ`É24U.Âhf¤3уh¦b\ÃSU#/6EÆ*1±„D'©cÖ³{è«Á£Pdi°¯$`Öpfa”#/6Pu13b2WÉèzæÒñ/nF&˜W»h=ÓxŒÇ‘Àµ§G]:ý˜VŒAØíã”6#,“qV5U#,ø0ÍX(ÜO¹jcÄD³vçÈ[ˆPŽ^3#•DsV‡Æª+™6òtêë àFݬt²(DΗQ,eP)*(˜-†Ó‘2ņ a¶P1í½ƒFÅ£¹v#,uiNÝ‘EÂcm'[C®Ù`Ø2©º%Èe“ÓA,éÔAýŸìQEkN¤¹Om×@a¯Nõ.]оãÏ/^AÖĪƒm‰=²*ÛÍL<ní ¡qŒÌüðbÊÂBÒƒ§“~½?#òäþ÷ì"R€…*#,½7mãÅñÚñ›úÇw©B¶¢ñâ?Î#,É#ÓøhÐâ$¡#/Ze2CÍAO›¶þpÿps«„#Ô¨*ÌïßÑÏ4 ŒøÑƼ¦ìtÍÒOW/™£Ú õŸ€–[4óêôâ:“© ê´ír¹g\¹#*ùǃ4FYd¶(Å‹JªŸª•T@Á§Gßw†=سòàÑÄD\Üatá¥Ò!S§ã1QEQ#Ȳ:‘RŒ‰6TÂÌúìj·L§h¶š$vD´å;ªîŸ/¼:ÂÃ×®i¬KÇ‹‰¦øz#/*ìy®½ÀÒIh•·¥¢#,ð¨ÁÙc£b‹€³#*ÜçuuJªÑT"ÜgÏëú~Û;çQ#/úÚ¥"“p6ç*‰—ë0Ò†CôêßþCù<þÜïÙëø¹ÿ‡Î¨NY;ßר_ž¾ñš|2ïòFŸ£E>õù¡9ŠS_„#/<?5ÑÄš -+A‘¸·B&:;Hž¯§¥Aœ°åŠŠJ«ºõ7N»ˆË>‹¹Ž®´Â@ƒÌimÆßZ¨ÊNЮ£ªâl17$n(ðq°ý&nÇ”huA¶œEtn9â¥èrDcxâVDi59™¢â‹g3702•SdˆÂˆâ„",š0,!L¬À`U;‚/‰%#*PõDŒ¥J31›ˆÝ9È0;-äèÈbæÉSGg*1±ó!¡Få]ßÍ«[jMÄ‹¬’dTtúå6ÁuhU›@p.70Ȉ›1t¹ÉŒV¤*Êø°4µ#,8´†˜úž1Ôf¤ý…my±‘Dâãp+cvÅ`j0t¡–H²ÙdŒaL„¡&q5¬þ«Ë¿¡výÜÅîÞ½?,t€×~ŽXŠ€×5\žðCªøJRsâŠ@äEcY ª XˆÉ¨aFòÏOFh&Rcõû@oÉŸ/w×Ëf”ÊáÐ¥;ÑI1iÍŠÁÍŒï£É¡ØÆ*ë{®9“¿¾lÚm¿i«=DLP͹Ì4³·öÜSÉ"¬PˆÕAm”Åëž1¡Nj—Øî#,qs4Õuë·æfÛ{p„'”ŽRãã¦øfFÜ›’+[])n1V6«XËið&ƒ$M·É;û#*ž:—i™£_%äѼh½ôµÖ§®2¬ejˆcùbÀÌnpdÜ…2Q™6Íæ)‹ùÖ|ÑW¶¬Íí§Ö>Ë¥?^#,ð4cM¬ h¡$Þã¢ã(gÊà:< Náõ(Œ¿Û§2[P™›XÒmŽsmt(qŽf8qĘ´æ9‡÷~òI^8ÔA"û\hV;%d¾·öE*Éà/§KÛÖœÉ,êÓíFIîŒÞµƒÆã8o™–.¯”àų‡#,¿A¥ƒÍA#,¨òpŸ¹ŒX8™¡·/©© QÃph-36“1âÛ¾(¡}ÝsµçvŒuk}×{ gMk¾¼5.¡¥±·9¿[¬ŽöªI,³RIÝ÷9Ë=;3™#Ç-Ÿ`§…²ÇƒßL¿S-¨¨2C¹˜äe„#/¥(·‹|âÁ7VÖ»WEùÉuh̆·[‚!B ŽŒæC‚—‹6èuÜQ¶ÔvtNAY7˜–JÇpÞNq°QÍ峺jß#,K¦.2a?*#,bÃ` ;mkz‡F>+¤V¬v„NŒSuÕ×ÌògeËÌ÷Z[ò{©htkv8Õ¹ÓŽ—fašm– -9мäTØvŒßg$Ï9D¡.™šÑ]®íaZu`ØåͶ2rH'’mjMˆ0Úy›3]ö{ŽV6&<t¬[ô½™¶m¸ƒçaú̺߽ØzwÕ ziÚ\DïìÛòñÁŸ†VP§]U/ðªB’{ÌxØ÷ùí–ÔåÍŸU½äËÝ‘ÆŒD*£LR¦«mºJÿ׸ȓ‰È‰ÆÅuͦOÔʛ߮7œîùUÎ$ý˜¹®;®Ü\lÔ-Þe“›Öt|:ˆµŒ9RM|Tal¦ã ‡Fk& h‚&2Sn—|w-ai,‹Í=ÉE¡N "wÄ!eÌ*>{\˾iá@Ò‘^Ù¶§(• Ôy¾¡0BBd˜wæè¢Ïú=-ºtwI^ùó¬:&†šlû^å†4üÿ°ö.·×ò„±É=y¬+ãÉë¶4@úŽˆ4ÔÅŽ.÷›ËâÇS—iÑÕim;'Ây€Ô= ¦åœ•²ç8ÈW”“í“_ÚŒo(ˆ|¾óJ’˼Îø6ò.Î[h*•Îg¦˜ˆŠAf¬Ù²Jؾۓ¶Å\$Z²(ã9j/xdîØX§¥…âÝ*I7ª˜Ú#/!Õ”e«¢×¢mÒ¼…êí›j¾LÓÛ“nŽlnFpüªúåÒÜ-ØxŸs¨ŽµZ}غ £ÝblÓcMæáZoÉaF3Wã±f½;àjo±Í&é³MŒ-…±T ëŒb[LÑÅÔb0WVše(÷Û[äîë$âè'½û|†øKëÃyÆÎë××"M¢˜4d¼¬p,q!Nzµf嚉œ³¦®Y¼F&%mþ ½¨(ê6â÷fü[àC-|#/½›¨ Þ¤}}~ÿ¥áçúqÖºçI„‡È÷gtê¼*8z!iÄ¢“pò˜J'YB’R±Úç̉—q¨ÏÁW§ù_ô?~–§P‡_{‘é,œ.´ñó‡}aÒüM=ÀBiUSì5›y=\Â4•Ø[ö¥XnFW6¨±^h?€7xG‘o4¼R}^G;r‰0#/äôýØÊ˪ÀˆŒõ Ú_ûú=Çü)zŽüÜvx¾ªáì\Û3å>;Ý¡x†|n×s Ó¿Òÿ1i%å$ËÓ3€#Ûû|$6§ñås›Ÿ¢gfõ뙊aØøD»–@ÏI”4ͦ‘g™˜Å¶´›Ç#,µøþðÓ¯R+,;òþKâ+Ž~Þûl@!EÚ‹1#/ƒðí–@ð<”ÃÏ€ÏúêÝ\Û±ŽQ°0L÷¼<AF€°Q¨#*„:ä cáb€x×h0¬¬¶Oë¶v‘õ2Á•°9n(3ƒ=ps¯´ exæçèn«‰ª‰a¦ÁûF“û#/^ÄIÓOA[ÖøŒÁpê`”5‰µ#/i~¢ŠÇ {ØüÚìtàz\þ‘vÁŒ¡Öñï$| ù姳´äÍA#,D¡àFìØÄݘ‚ò`\e¾R`?‡¹ÉN¡Î]ßë¸i8Ho0;CÏ=¿Ñ:6,¯¨YבD`ÚóšÙ‡Ý²QÃyg²)_ˆ~-'4æ$(AFó«À»½Ü!·6&iX¹Mµ×½kÄž?¦Æ3Aòa‡vÊqàkì#áv×6GÄ_.ýúNç«ëS¯`‹ÂÄÇ%>Káß“ŒÔ|<;™nJsÇÊèM±ÆvÂZ‹"šbMVÊw05ª-V:¯=\;µç¬”„*^‘[ Ó-‘/ð‚¡>Žì¯|ܱ(˜Á@°@"oû+¼¹õ¨#/+r-;t<6+4羫béó†™õd*w_‰GÀVÞÈ뿦Ó:#¬ð©cSO”e$l½P¶o÷`¨ù?|>ñmÜÑÛêœÓCó_'ÚH¼ÔÑ솸ɻÊH^ØÊ$tø„Øt‰ ç0/)’îímç0´ì¹:¦¢NG²>}„ï&½Aé’’zê½PY±GvqamÙ1]‡BLÆrLVzž™Àßs©bãb=.½á1#,tß©¦´MhA»XŒ®¬Xñ¸]g˜ñ®˜Ûiþ–Fkl"†œM<»Ô”£ï¨žœ¿ºoFÅÓ9gö«ï¢#/™õv”ˬDBwòB˜Ä¯nŒÙ¼ºüÄZÔºXðÞ ØköcOzú¹øClô*Rzö…Äœjixz9ÂÆÌP\.Ñl©:ŠäìstC/ÉÞøÚ>͘4&]I!ŽðG#/QÓ ò‰Á=+• Ÿâ¹#,ÍqrݧXŽå“OÓm-&$vÛ#/#/M(ÂcÑAF1DÐuazë}p<3R˜tZ€ýúšÐyG9ùe¾;eºôØè±±nY,Pʹ®#,U±Ÿ÷#/g-†Ÿµ¥ÃãX^˜ŒÈ[Bì¼…¦y©Cx=}ÓŠÁd‚1 ‹y½alt°Ÿ)…°Û–{Ñk¹ã͆[ƒ¶éËk …ÈÁ…ÎG†s¾Y¾,ftS‘èm‘¶…ÍÒ[T%¶ôë“×ÍñàbµçkdžäÃýÞgôñMÅž¯ÉXpvêŸªÌ …G_•-_Å#,ð¾'O:òØгÝàRÜrúLgR$š.jXóµ©*–éÞ*o‰X&•®d„)ÿ4™„ãêÜGg'/ÔõvðŽ$vÊEÃÀ°´]ÔYK^< yÙîÍGàWí8ßvRtèîéƒoÙÕóh!]¼áAR¿d^(õy!ɹŸ·9àÀJ¢ ølô‚hzÜÂí…¨ê’Ò€!6ýU#/4ª*—ÄpÔçOKÙL%«´ VÍ\)uC»u‡'aí=ê ˆºdi¯ã]"óéþ„>ŸÏ®ŒõŒ1µd,t«/7ó\¤NǨ²…§¬ˆžA³66õíñh”}ƒåÄuÚäåëµT”¤·Ô÷@y#/>;æ5ìÒÕbÒ–¬ ó,¡ãm/|WX×]°,§V©O”~1P;¤ñ^'VKè³óP;ñÃÉ!Vº¾i¨Õ¼2M÷^^ö:Û|“:ÂgËòlù[@Ù¬æjwr…jrGEÓ/•ÇAôµº!ý\”N†K#qb̸ÙGG‘šÍ\fúBºtåe6(àJézétÍ¥æö(áZG¯®ÖIôïïÛ°€Ì€ jDiÍnMdf¡[Ã#Ö¸EŽ5·A¤ ñmÈŽ‚(ꪲ¥¸Ù*¢ðЛ <f›Î½–%'»C¶”?”CNsèõ5õí±m³†ë¢Õ˽C¼Ì;wìdp—Mh¸³'ºiÕôFǦ´n¨ZãmÂR¡ªœ½Ù°¬å§Ci|#, ¨ÆY—=5xx#ÍõoÑúܼY{;ˆÁ‰ ã6)4jO'9×%ž“6#c2m·}ù’Ý3âöŽ."[km³èu¸}½»Zê¾/&û„Q«Çƒ™è¸›Ñ§q}M̘m¶Iö0ŠRûÖO•ÞúNÝS¬:ñ[cu¥1¿faê‹ÇŒ"² [O2,ÕèoÒï`üyÓæôšE9‡”'æøÇŸO(Ï~ÔDwr%¶¾B®;”fò]Ʋªà‘eëg‡ó¦©Ò_=àÖ}úç¶àHÞŽ#Œ9#*»TµöÍQ<<§éŠØ>Ò5ûæv66Ìg_Ã1x±³Œßð#,ƒFÏv‘á(Ž#/äo‡©É¥«p¹(VŘórïøð9erþØãˆw¶j¨Á³}Ñ櫲‘͈§ó3|N>›HÛØ¡Ì#:–E¦çvÓ6ͧn'jVËà±èˆ%ÝØ‹´”Ùƒ›Áó©rñwut¯r(zµžÅðûŒ0ßBþïÎ[œqoF¼Zhå"¼Çáq8ÕVŒ¬jU°¦¡ jïЉl¡ü¼ý#,§lo´ÈšY<;ö‘áÈÛÎZC-lŸÄÏŒSxªñ¿n¸ê¸Ù²>ÛJ`ƒÀšt©aÝÌ–x6·ÆÐâ«Ë#,#/[ÖÇ]¿^ü<#a´tr÷(‚y×-»Š Ò„M@oÏÀÈ8B¸†ÓÕíØ^§‹Ö5¯’o·£éW31’ÚW»³±EŒìí³Läæ4e³8rz;:™ÁŠ¬×ÌXúlðf§YÐ#/‡¶‡†e¡>ܱÄ0xƒåz½ˆÄ<Ÿ|OÓ;öõ‚ðÛЄ‰Gw•-OlÑ`³ÓÒ#,¬‰jIw¢y,ûÌ9Ö—V×9ÿ!h)?-TyžúI {ÈR#/#/èAãËùÍ¢ýk:N#*uœ…Žxìý£f/y +#,pʳ§Í:^\«s–ÒŠ#,õV±õë4¤G0X¦òÒÉ°ô´%•Æ¸B˾ÂÂitZ×YƼŒ’Žû©¹°gÛË=7Ø‚—5…Ù0+UæoÖž-[l䣌BÂñ<G~‹³rؘX<û!¨¬Å«'\Ú¹nhªâ¢c`(±û^Žˆjbêã_#Ö—Dö²Ê¢¿éï±#]¯ë£š°åÓ BRË*äQÆøÕ×®ÓÁøÍœ.¤T௶º&V¿~PªØ#l-±¿Ûß'ÅfûxœE./UßNÑMªW’qI\e`!ñ³—Œï¶^úèöºŽkyaÉmF¼sžf]y`Ùªù’q‚(rk?~£ç¦y½º_5–èË™Ü&<{l¾c1„±R/5>Ž}‰„—•{–÷ÇïÇíÑõ¯—aÚ©°uàúß_Ào+ƒƒÏ›WÎÄ(ÆöMt¤idÅ—A\”Okéàè¸Pe…Q»’ÆÔþ¾‡—Zãú3šÄ]zH•¿‹tª”x[SÊ(E.xýpü[Œú³êÂ×FNv÷©ˆvÅò²MîÑ#*:a…Ãz¨²üì“åat¬Ž¾ª|Â"C_5“ª/ñÊçá£K«Û³;9ˆÂ!ÌÕÕÑØŠ¥´sY²ûí³wÏŽËA:-J0±š/óíΤx£š£×σ.Ìx¬Ñ›x¿»ÄøÖß_ÛïŒk0Ã+†š‹lï×Ã!1##%}˜Àè,|äº\ø‚³UÔ\ØâÌã¦ÑûFç>çÜ\C“Ê£ÌÕa{ÞºôQ´d4´‰äsÝ#/@¸t¹åêøAúõ6Ìc=’¤W”±ßº.ŽbsÓRb)¼‡3/#*ÇLXYc<÷ê²yØê Rû™ þ+LXXe9”6;´:ÀÔ9„diÜE[˜OƒËÝÑøn™}2yÞé'zˆ·,Ƹ™0üe³Á³`°÷»Çì뉜۹ÝçsÚþ•=—[_6EMKðõÁØù27Ý: Óé8w³¢âpÇð²?Uש-'žO½y¼m¡·ý¶WiÞ#/–~G¼2)¥Ë+,˜ÓzöÌ]A ð(F7"ã€c›ÅþµÚMå§t»á#*tý±#,]¢M«’ÐÊìaM+â¶Î'zÃuöߙԙßn*KWDþwÄá}Q”¹º@:H·5WÜÖÇ0¬ ñÁDßÊÂØ÷Y„6tÚüaäV©äQ„{øÙá=#κØ;5Y™®ûr/j´…:ÇŒzm&<Ðþ9Œñ‰½ñ÷He{Î?>°Ç í÷•L¼‘N™ãvPµ§˜Ÿñ¼õÆÐÆ»¸ë·€ô]ÊaHR0¾ß›KÜófWãMÒ{ªØ¬´xÍÅÒÑK_…_¶/YSQe`à{©(êJD8ÉÔ~.zóáx…#›p|œ–‹^BÑtôÂÇãÒë{Nvì#eiˆ3ÅÍ"Ñ/¹–Ž‹––?a‹ê¡RAÜÊœÍ|ÕÈïÎR{ñ:]W>YôÊ€ÝâÕ9I9°ša¯\EE&’Xã°GeqçÑ;yáòßDÔä–òYD’8¿eK#ÉÐ%g5¹©o7ÏžRÚüòbœÄ-3s“ã–‚>^·?ÛÎø£´o²)±4ûs²ú¾1m·fA3¼ß€«èéÎ6)k4ðà',…ƒ#*µ¥cd²i*⬑C¡kXZÍæQ(Ü…"$xÁG#/]×K§MŽ×Éd¥k'0î]qBŒ/šÐòZ¶Êª6Eß²m-Üs¤œÂ@Ä4Îzj‰À‰L-¶êXÁÕáÙ§@HŽÍp¬šÊáÕ®·.ë+×aõß÷‚GãªÖq*^MkUt{]d¸Ê{š-z®‚¨t®6b±,ü#ÓM˺iY\jQ•óÅIJ‘#,P‰mFcËKtÖCFæ€ë1šƒRê°ŠB„r—æí‘Ÿ"àçò;†<–ÀJж˜¬#hXFêgÁð}ËÀÝÆâ#,.‹ß»Ÿd/3–Œ"÷+½…C9H2ƒ¸4&î““±²£u”Ù=QWç 9ϬM«:æ‚™Ö×óôOQiN®´¹ÒáƒÁ½ÁšñN–¬2¨•f'HÆ2‹´æã}“¶R´&NÔ?WŃšœÉ—¯Ò¤7z¹ƒÉ@ˆ=*M~xúYguŒ÷Æø¯^‡®G;á±Q‰Ë¿Ú—nO¸r–_˜ÁOí{gÏ´à<Nß ˜ÇƒÆpZuàuŽ~ÅÄî9à^¡nü¾Ë*6XˆHZUÅ뱎߆X¿pskÅfk¿4Gä³g1#/°æ5ò=c¾Ž#,§S0õ•©¡DG-9\)-aƒU‚Ëáu°™#/ªª!%PÁÐÞûð”Œ<UÎmX=e~PI¦ÖQaç¥å®e´î¥¦ ¬î¶d‚ |6Úá;„jîÊA¬…)ãy7ü׎Yª§ÐoÂcÖ›óÄoKi™Ú§ek]um*{CS™ýX†A8ß¹#,<Ý?'%ü´øY«œÐ/ª÷Mí›C¬‘Á®¹j)êôK"mv²rŠ‡_ŒC4ãïVf½ÚÛSö\ÃçÅÊp§j˜×Ow™¢WÝǵÞdÄÛ½&%rx`õƒE|øœ2ÒÂ[>*¦cÇI™Ap:üúF¢ïœ„Kþ(2S=I´ç#*,º-n®ÜÖÞ÷J6OˆÎBsQecwcuÕM‘–“®•nµ[TJ`MrÌ¿4',X“Í@éˆ"ᵑ ¥ðû¶³ðÛ#,Ÿj,4|>…\xT¿X´½„Ò•[úì¢ÃÔ·…6sççè¬#à°tŸŽ'D`ý7ï‹ã9dÀA»1¸ÆNuÝŽ…,XÀk±Xª|dt¾øªSÏc:1S;ú ׿.W˜¡#øIuÏFîçžç&ò/¶‚ÝËç ßÏ+EÌŽ‹áŽ¿d¥^fºCf3ÌÅ£:ë´ÛÅÄ™Û:–¤¢6m‹›èÐ9M"Ìe¥ï/ƒo9‰bç¾rÂZš•S .èîãÂÇí‚ÅI”§G%ÐWòŠÃ‡éìjN#(ÿ¢"m!ˆÄîi²kÚ%#*¸ˆl.ðÂõÐÓs³Á_=ÜЈ°™¶NÅqÞ±·Dz!qæ"bhþ{cÇv÷¨çKÀˆì÷ö{mtú8ørêÝ#/a5ÞëPMåþ$k>‚—ÂŒ+˱“¯[Å®ÔKih‚‚òžªfyß}o×#,T (gG¯µNVçfêT1§O{:¥ÉÉw){”©HtU¦®cÄJ.âоšF¨[^e¶mÄØ‹{šš&Ñx]pí/¿Ü£À{Ÿ£DÆàRRÁ¿|<*/ªªx/ )ÒTÑ`»výø@æáöè®ÓáëøIé.UÆQ³cÀ©®aØU^ŸÛïοa¬ÆÛ®UŸßè%Ø`éu/~¾’ü¯¬Z9~£êpÅk¬%ŽMË-ÚôqÒ¬/˜í×DK»žöÃyÆKE]cÔ®AƼüîI97Ì`Î\¯W3àï¤ô°²˜ã+„žv-‘ž›Í[sIÅÓ%4¿¬#/'IÙ3OUΙ£‡GKî´Z!'bMØÙ¥”o!M6(Rþ7È¿;°(gü¯´ãËœêšúl^žQ§ŒÏ* §§GZ1>¯rð³)Œ¬£3-0<}îŽ×ßÞ1Ú%É*ó›Þf¼J¿7e®èEòaŦÉI_HÜ]Zä¬ÁSC•H³æV“Ú¶#|oâ÷¼äÍèÃ㌅}þ|¹-°@Ϩdk¬a‹Ýºô€•S´ÿm}]#Ž<ã#,Øü£=G£ÚèÚ¦<u˜ÏhÛ^ñRælù_ÛÒ½3ƒ;ï8œZ•Ïu}ËÛ@l”/à¬ÆËsÂwDøe‹ª‰jÁWTƒ}Íg磟#òE̸ÎTóAϘ#/úÍÁHç/ã¾}?¯ñÂZÙÛ|9îFÇ×8…GïÛ:çºc*ª¤)çÚ#·øwÌÊa5*ÅûÛ Ïm~ǙՈó[$™B„ecÐ=n³0ûú¼²ðù†Ž“áp¢VÖ+9,>:›º\¯OšËŽj(2 ŠýyŸ*€È–€?®-=hÛRûäˆÅúȳ^€ì0§§±ÛÈ1#*…*¡%îàÔã%ÖåÉ×øº;„UŽŽ]n¸ÑÐòÚÖ—wÕ…—uƒÇ±t趈B‚¨L#/h_…\d×ažédòÕp˜#4à›u|ï©#, \B(`•Ðuèݨé åŽýl#ÂcXÑ|º¹°s’ÒƒxPHÒ÷¢|ÃÈC9#,Óda)æ7’QÇ(z²Ä_4iC V”ã½]³>‡yú!#J»cŒÔ*Y_Áü[Û(Ä#Q6謃žÎkOé‡cgøLKJß®k—~û+ð~Ǹ£ïpbC˜N¬Ø´4—Â]p—Dó”mRœçNŒLw·ì—uàM¬¹Æ&yŒÑ¥6åÌŒFÐ6ŠßÒœôJßnNmpÙúó–ßÏÄqˆŽÝ¦#*‹¯hÿGÜåõÐhžNô®3ÇÙŸ5cúã"Žtdµ“‹ô½ä6úÉ¢HqZq§7Vº³E÷ÅÆ"ø¾1Ž©É•hŒûà|Säùà‘Þá4Ì?Å—æôÓð³§óÍuÝwz‘J1è›·7P.êºMgÄÝ»\=:Å:cì½üå½~x"ú÷õn¶ÝgƳ] «GSA3Ùåæyöòê¾ÝTîÎG®8Ø’Û«ãyLéÜÖ5ÄZpW(æÔ·¨Y_[)Ì=N;~GŽh…nFŸºðŽ-'WXp_M¬?qزÓ7`O—ãg åßekì$³ÏF1XÆ&$‚OilQ\Lcs¶wvS¤ÉÇ\‘ (²i\ŒŸ!}¯†:ïŸ.Ñ"Bdq„âý-”bwézÇ2çŠf¢éÍî]:hitQÑ[Kê•#„¥Càât[ζL"%&ínTÿŽtùæcÕ¾ìEZ¿^°Óû¢o0T{´¯(.}±ïí|ïŸ_7!VI{D¤©qÎ&¿\ÏätÚ—÷ÝÎ'Ö|T1¼;pŒ@;'g»B8¿Áøã~1ƒÔ‡Pœ7ÝÜGá>¿Lo= À!óÒ|u¿5'ÒT£:¹èœÇ]$Šoåý‚^.a@:äëðøN<Žó·ÏKãD<¹ï³Ë%—k±Ò”'êÿìÕÄ1²Mµ ìÄxðj["^îhF#ÅQ¯Ž¨jƒ[ӡ脱ä–V(C±±¢#*ale(vÀ»^ØÙ´&įF4 ¬:tÎz&rÎÄ^îÓÖDä=Þ(cÆžM8ÉnyÁïLXÐœW§ˆõÌ‚<))KN=ojŽ—ˆ¸¥ë¨¼”Ø”ü(™¿žÒAØöäû ;!(žÈ¿Nºãª´µÜ aíÒ¡FxQˆšwbž ^VÖÌRÓ"!ªf#,.Tç^Ìg6íî›t‰ñÆò{ŠhÜ1îæbróR«àü{gÅ}Uw¡ˆk ЌՃ#*H¿Ñ^!à5;…ÈšÙå=‡`¤:Þ]"ût—F¬úxŒIèý=§Ó‡ÀÀ‘ª€²Êó¶Ù@Þâ¿.ðÙVå¯àžáßÙÓp#/ÛßgÃ]È;y¶ßm÷&žÅA4!;‹³á™ÈRöE$3õºÒ¿—Êùq^ᯇ‚‡‚ ¤QdíŽÉ½ãna*:ž§›¤RïR©æTì ˜›kÓÂ/vü2Û>`ÖºÞÃòx¥¦æPÓ:k€W‡!HFÃÝÃç¼'ÅÖ¼‹Vxþׂ>«‡me¸uèl‡>,ÄuÜ¡´©ù5‹’1•_±LzÇô¤#/@î•}&àD#/ÕE¥Ò2;…ϹL¬`1£gšbÙa(˜xÄ~¥áOèýM¦0ï3f•~öc± ä’¸#*ZD\€uRnN5ó¿°â!%$±0…´7étM*ÒLôçèy)ò@®ý·b(ÌÅÃ.Í¡,ÐÓ1JÍ©WÚ*NclÄJµÚCJ<¬Õg˜`ú)°„‚ÏÛéaÅ|ã^f8Fëý|Aà—ÃÏ}_w‚wÄõqêügÆRÒ½ü¼J#*õª}>µ#*iýÉúSõý y{"„‚ZwŽzï¯0ü¥ Q…•p¿tp¬KÎåM?¯f¼ÂDÄò‡ˆ_*‰ Ÿ¿ëÎĨ‹êô¼4K¦KüŽ {8ƒUËûŠ@©ETB*%o’Yh("ĤZ“l›ÖÑ]un|ôûw*œÕÚ§œaÜl$¶*0üøPoÀ8Ôkú}9ÄŒÞá=Wß–74óì°DÕið¹wHpUH²FE (1XÀ€ˆ‘Jn#,uâƒ|¤”J…©Ê9@àR™vëé¶ñ†s0àžlܘø»#,›ÑÊJܘ*½¤K½IÌÈ "êé”ýf7°U{ïhú*N%"D¾Ë^ðýÁþ›Hˆa‹HUV`·ÇÏòŸÔ*¹T)P¦˜j¨@nTÁýó‡í¨âûw,T\ö"°Ðæº#*>ÊÑ›&»Ê…Ÿò‚ôã_GuÖ£#/kb¶0Qî )s—Ëêƒß2Y°ŠBNfb>n.Z^ÏiÜÐE!R!Qedž¾š‰²å* ï³çþDg/(Ü{/;'èú@յбOUÈLsÌm1ÕR&Ä—wBSbíioE®xyFU#*Yê-ö]Ó?ÕKº1ÿ$…ü滦›O=›d”¥4" ZzË/ÎC霘aÄ„OÚýjhW¥maµ:H9l›æY‹=ê5GR'üƒ‡ºcdØS꜄nKNµ¢½@ *«0[ÅhÒ†¿©~ý^ïÈ•s<7E‰a'[C“Ÿ™ÊËö;,â=›¢ã#,¡Bÿ7lgsZ(¨Ôd×…ï3çå°H<´ÈZá ?gûàî2[}±ÂµÙ¤#*ì0ÝG‡-y!#/Ñ¿»|û`yš<†sNöhn”]È°´#,þ•:½ŒPËõ¿Tüœ“)LwD5ª#/GT#,ÿ?í¶ÈD#*âi@sŠµxA=Þ5¼GŠ¿‰ä¢(¢’ÆÈH>Î*e;â0Bµ»Ë9Ä)å#*lÓA©>6cÞ¡’V|ZŒ‡–T†Ýréku%Ðb'‰àB€4×r䩽#,VÔ–t]<b/®!”doëç¯fŽv²?ÕKhvÅ8Ñãý\èo³11›hʺ{@ð«óqä÷vŒ¡!ññ{A#¸wF鸯±Bþ·ü¯Þh>û‚ÛÈÃdCPì„Ùxä‘Çô±šÑŸ(/Œ<ùS‚zî{¼bߤ‘‹éÙ¢L;øÑÜŽ<ÏáÛ¹¢ÀÊEšÝ÷ ‰½B™@+7äÊ·-4!¸Å²^ÓÆ”ÔiœK“à«|>Þ9wÖKÞvSöÖêÉl¨+¿—R«óζ.nº†žºÏëu;Ú8•HCY£6ø‹~‰ì‹ü÷×f¢æO#,+”½áÎÆ[‹†ž~1æuñÂjåtHeZ7¢äP.ckS'…ȶˆÜ÷÷瀔rëþþ¹è¢ºußmyºd¡÷STOaRî™àUM‹õ·=oÍphŠ7(ö¢ž¦÷¢b'?RÛXÁ{ºÕU3@2Â’¹íâú¬Ióƒ.D•kª¶Nã„í¿Ý2†³lAý£M ò€´¦ûïŒNò¸·S©3s vkuuŒHé@dcOF@šGHH¦A¨Qßçž|ïmëI×øê^cÄéü¢*´¥B«ÈÀ:Vëî‹õtuCZïÙ²ˆÍš3¡‚@ë…Ž!Q”ˆMèX³TVPxSŸ»¼q³ ù¾n׸Ñp#*_\z/wì€<g£ußSºäàÂî.KÞ¯~<à‚@Â×o‹ç¿ÇôØhÎ(v½ßÎUxzï®(‚„> „B˜e¡®¶¨2(KPÁ2¯*#/WÖe;zôâ–ÁˆE¦sÇÊùÅÀýó\ C"†¦”ŠMÚÃÐ?ð~ñÑïŠ=Ëa„“/Ä©Â=ÌùÙ5KëA5IRjuªY8 ªJ:³s 8Îöb[éÛÄ_~Útâ•ÕÐOÂÜ`Ã×ÐÑïsÌzb%¡j*°N⛸Uvz³Æu)[/$"ª„@,”³‹7VõünpЉªˆÙ-Ç?]ÄÆðCò•;'ŽSøë“´˜Êû0,€ÉáéE/)©Ëd/{7\‚åhM»#\â¦BÕ{XñvHµ#*˜pæmAá.¯#/;Š¸\qÔêPè^ðtÅögiЈW!t—6ÞXï9}ï&z</'žYºÖ'Uƒù~_¼òî3Êe‰?”9züyJ`i‚'0ÔEÜÔ%útºd]ù‘N±³9‹~¾Ú¾‘H•ÎcïvÚ#,û‹½~%ºK¡™¡0B6jÊX3Tàê[ñ*±Ëçx陼܋7)¢#ùFRH¢ˆ¢Zbü!y~©ƒÏ“êþánÜ–ú“Ùæ–»¡‹rö?LoW RÓªH9váÚ3^îó;›"¿×‡6;#_~{·ßªËfÜnL Ûãý¬×žG>WHxpmË"ñ¹èò÷I©Ó€PC#/&J\ºñŒ¦!™.ÆÉžX)j(°#/ɹS0"ÜÖ´€á—BÚ„.Ñä~®W1)* v÷F(N‰&QâU¬w8AÁúîrð†èɆ#/'†QÜS`"%yÂØþ,·½È,@éÜÃ#*äç7ÍÀ±Û¥‚UÕ¥ÀW‘h{7Éîƒh±XY¡TÅP(!æˆW¾³ì®z9z©×cH²¯+Úý„a¥ž{ë´pÎÞks^GlÞ=#ª^\ï4íé?ºó£ågd5ž•øø¾*=¡éÏ>zï7÷ŸZ‚ɳ)U†ž·©ÏyY‰Ýy”7,#,C£ž5@ùr°ße£ˆ7°EH„6h„Ë^è¿Ž†jRÁ…40E"7Þ ”9Øà#'ÐZˆJ‹ÃŸ*¾ì‚ì$–ºÛž#Ì/‚ú¹šÊ=#,ºuG“ÖyáXþ÷xúA‰Íi§‹)“OD”–ˆ—ÑáËÅ<›Ãû£©‚ãÙÚ;0æ¸ò¾0ç~æÆîΈú¦ªbpùîýxé#,”„èÊønæè´Å3#”] ¬ÏL²Û8ök® œšÏR\6pÁ#*¶€PŒ‚‚˜N68 ‘óŠEÚ—PqAÝXK-;6¯•ùõtî³Âˆå™ÎýÜÄ·'ßÆO¦_œ;ä’Òs=¹xàæ_PìáŠùëlb)ÒìÞÞÐ&G®+ó+#,¼·Ó×´ÓÒ²Hí4ù)H'!áË\‚‰ò,"ŠlÛÆiA5ÅC΋ÂzÃ#/AÓÀEävªº+×É»¨[:I¬ ÷9sÎ[ž #/R#ÌäLh# „S ¸ R.kaªÒî;3VûòéÞ’K[K72òc¾iQnÈÀM#/g›OÚ)Bô~»s°B'·ÇßP)¬³b“‡’dU1¹y=gîÅöÄeZHñNƒÕ $^\zóþ[GåÙ>«žêh´Iµ´ÏÝþµ´±w¨øKÞmrªm6Ÿ#/C”aàê<Ï5ŠHN㬅(àÊ5uíÍÅUPáæN1¥€ÜyÍÇQF7"8ªâH¹‘wFÔHį'$AÎԩƒқP¢†ÛÍŒ•Â^ÖÈ”Ï/Y\¨/º¹1Fó?šc>1i½ðzMÚcI>mŒ*aéçÃE¾,¿äTÜ„Ôé-ƒcù½—GG׿o?þ)óß‘¿®;6©RaCRL‘ƒ‡©ÓU·«eb„Ý÷/·÷½µ©õd$8„WŸ:6E~l†…§vÖ·ë9´£•},ÅàˆvÒŸØÂ#/—Õ#*ŸNlÉ„³Zçôþo;ù&þ£^]é9àÉÒ„ÆÕ‘z ìÍÚp§)ÙÂ;þ½ž¬ƒÄã¥jt½ˆjR›ã´xã)K¿Wr¦:ŠûPm9]‡C‰”TÙ¥’'ÆÀÂœ'^í¦¼GNr˜j·^#,rgqžÑ >x_Eø#/Ê8wkcÁI°`¶\&QžXŽÍqšFWV 5+°€Éš¢jXk]oÉÈÙ~jVĦ5æa?¤…s#ëxhB7©³¾èÆšHU3oF…²W¹ÖUîdõ¡ÿ0¨UB©çëº7ùOí”.tl‚3vZÿ[ÿ)ÿv°/÷;ŸzU¸yg˜¶Fb¨Â2)Ø8 ‹hPi°aJ6äCú¿Ÿû}S¸:ê¥GÆ¡ŸõwGn&w·¢©?‘ £¨1F0…}‡æ|Ú_ß~úÓTu÷PUTöì Ÿí‹'µ~„éóñ<ÙNÏÿÀ/ý°{䇧÷‘„«ÒßÑWÜW‹WÎ]—ô&W&¶†`Ô_õ¾ÄÑý“ﶼGöò1gˆ´¦ú#ÀO\„AcàB<€÷¯®Û›ä"@]ììß¼&úZç7C–ܱÀ)I â£MJ¥„&“?C#/òÁÇÔ„1’ü(ÁæÊ`¢1®¼†¬]7-Ó0ü9t8cÏ–§Nuúò±ò¯Â‰‡ïü¼›1ïi†‰Pëig*§ÙÓÇG=Æö^ÞË'; öÑÎb¤ÄažUï³’ÈN–V£FÙº^ÏE6ÌöïeÇw&êV2T”'ðr—F=d¼r<[áÑ?3ù;wàãÕe¾" TñD#,Ëý~!†õ÷Ç‘¯Ç©—¥uŸW†Ã¬gB³çÈÒ{˜jhsi–”$–Ý Zp¦¯¨C7ÙƒõQþ“ìôààûÜ>µ%úí‹´Âo §Hß]~_Ýd ȸ·J¢¥†Âê‰êA/ëüpZNî•wÓa»2†‰##/¿zK5 |ðùŒû¡Q˜éû0àþOgWn>ÉÀ7t…B6#*=,€OòˆY(ù?QJ×sO6U}¥óÿÚ0<;}‘âðBb_Äí.y”cÐ#,óhÐÀ+P@r#/½À…ˆsˆY‡¥ˆ©ª(vDro±CšP«"•È´¸YHênѬ f !ce,2Å^‰@…ÂÓaBf—!$àÃ]Ë#©Fí”,ŒQt(~VÀ6¡4\,/ÑÀ`[#*b"Û&´£MâðK•ŒÄÑbŒ%”LaH³H”`ƒAÐõå@åo9A,S”jCÒIw³Èʶýº¼G¨¥˜q`ƒÑÞžgTše:ëÓûâŠ=~0ñêËúºUÿ#,%ß(¦5Un3ÀkýЛ¦†º[ý›ªÅË¥.:%̆‚D’@âÌO„@OWÂÑí#,gMmþ—÷µ+1Pm)܆í5•Ó¾µFéÚIv:zÑùk9¯=£ÄM&JïPR~n¥íÉͳd•¦·#ú8g ›ÜÐ~KÞΕÏG¢¾ÚVÖMËò0‚ì„›Dj‘q];vºî®åÓ6ëwy(ÅçTÔC†õ„DÝömw&¬‚·)ªvoŠ:TëêOY¥ÀýêzúõïqR¸ëŒ«ú¤á{ÑNøåt…yávl•Õ,⣀¹«QØÆØÍ4}/RŠup÷EŽOu¨ÈÔ•—.Œº¨pdïfŒÕ¬°õÕ‘Ç¥SäÓ,Aº'Ò <7Wè{L6#,‡‹AŽÊŠ–Ý÷Ú±c¥×7]·ºzº¥#â@'„šñ~ÏsÒBÖšiOõ<!Á¿Z=™/p‡f*Éûƒaò²e›B÷÷&ÃbWO˜„„2Þˆzò矰¹èX¯fK4*•"(H¦i²ÊÓ2S>·Ÿzûž£04UU#LPZbUCÓ·_f³0™d7Ï\ôèw&îÏ1æ…¦³ˆJ9šX,œ 07ѽ…ºmíÑÆúCåª(Ñ"1°iˆážhg†Q¨˜)ï,ŠìøP-iöOÛÜóÖ‚‘“Ö#I Ûq3B#/B+Ðl7Q`Lúk¦&c\a·Êê´xäbËSj›ãCoox¦‡Jd†¡âdäÈšR#4 3G£VVDÁ3ÄÌ0‚²i‹£6‚ep&¶©R¶rÓ]Ž:Ê0#h ¾[ ëóc†¨|Óg.öx™à2‡5ì{³#,µ®¤y`gÅÉprHž‡”$<Âò»‘ìˆg ¸3z{',g}l&áÛù7j\¶¼;õ÷8¢yžÝ#*Md \§4ðO/*,‰Å¹ŠÉC#*”$ÔI!¢KM²mljÞ:ÍY-«É[ÅWe¼k^-ªåY6«•]6®[^¬Æ»®ü;½z×zcT$öîtÜÖ#uë·‹cm}2l”š0W¶tRl¬ ¹®&DßUôÊ®áôÂ#*øzÀŒƒ±£çW¤@ÒÍžW`Ã’_†+ãÁfýqNR)j5ïia¹ÜgÔpæîè^ bE‹P×ÈOŽùþ5Ä‚t¯¶åw”¾=|ë&úJÏ•MòŸ?+‚ÜÛ}KI ²mØÙ*ÅÌ6C#@y d›2+T=9²Ê´®¾™#,u¹âm/ôè«â5‘KîM ʺñrlÒŽT:«ƒU¶(ØFi$“UõÉ¢!,»¨n”)Éo÷V°vì¯ÆÅIå ˜‡ÏͦZèÕàI[©Ï%£XŒÖ⨈òÖêmh¨MÖ·¶yüûà,mµï.”iwjݲ×àóè¦ÿðxV¢ñöÑ8ç[ø'díêO#*TAi#/ª×‡f"*ÂɵORˆÎ»&F(¦“]Ê,ÂM6\lg—Ît[Ô÷‹ñÝÅ‘CÔ£(vt±Cp0 !¢˜ßÔGLñ"³ÝjÞG>´ÚÈtÍ0 PRû0&Ï&,Æ¢Pù×%¥.’ØlcùÓêÛŽ{¹jï:9·z‚a…M÷-5Æ$9#,v½47ÜPkƒÒ‘\ΛÞ(])ÍX©Û®W–h3Ç•ûS@éD*DZaH°R¡(:ñõÐѶ§‰JÅBmj‚†ÞŽyÜ;yVfþý³×X,†Ñˆm`ïÞ†¾u'¤êÆÝPFLWÜÖM÷*íuÃìco©ÂBFKÎCáæ¤QHPU—èQXcRAªšê\3×——ãÎnÍWwJl– º1³ÄWj5/£á~ñÉÈíP-ENÙ•øÑÁ>Uœf/3épÐÚSá’mdТe]㓺äèñØ—¹°õ¹Žù‚Tn϶§*Jˆ{‡q `ÎŽžo©š¤”ÀiDÆtÒ· È2);ž£' ƒ>öpAÇ*45œÎ6Fª€©Dò…òÌߪžL[p6ƒëFØ;nÀhœ/‡V0ȶ[‡CäÒY¶Û¿J-vÊjµåf4÷5I$Âp.÷SØƘÂH` š€ý_ŽfÑžärîI ¾£C&íãó¥‡>’ Ó¡¦sú=|MŽd‘Æ„j¤T&eMûñ¥U;7Ç#,ög~Ú³ÓåÀÞ¶Ô;·éNÙ–q×ÄQ_!ùE(ü;UÓátd;#,.”u«ója¶ûãseÓ¤2àϳ+¢þþ‡"HÃn¶†üD¢ƒ:vtéÖú%µe¶I©§{ž#*…$:"À—NlýçÏOWJ%ðe“¦é#r9#Œ‘±èg¢UЛTÒÊ|û\RW‹ëó³çW•È‹yºlXƒÂ¡/Z¨ùq9g–5‰ÙÂTz7åäZGù¦ö†Â|¾|\Û)åep…Ðtstê“£8¥•]“Nëömݦ³Q×UˆÐ@¨Ji@KE”ÐÙPƒmI"¤_y(žjäÆ#,Þç] ÷Á2î*Ñ Ë»\aóÍ\½úµwß¾Š4׿¾‡z‹×FùP0‚@Å’{Š±E/[Â#,äs“^M¢õ‡ì©7csà—{K좎#/PP`ª‹ÈÀt’bZÑ)$ f—<-uå%ÄÓ¶×Xn~p_éWÒÅ« ÊîŽJ½ñà_'-˜òAóËò¤ !sÙ®±´Å›3ï|ÞûË3ýùÄõú}‹Þ¹¨iåhÛØø„ÌúHÄù&p¡(foÃ#*=OŠcU:²tCµ¾ÊÞ³ÕöBôL|¬“#¡°;áø6‘æß7úÜ7ÊGý“ÜžµÌ3£¢Ù,~“‚ËÄæeÓ¿ß7“Óf+øç•#/[¸?°C‡’A[nSM…ùP6HŒCA¥Ð38JœÉú•Bµ)Ùh~Ý”"CÙ§%Y3©(³%QF-hñj¤È„A8^½þVJo“geA¶PQI#ÊR™ÃϨ¿~`ø$,|UU8ùÍ$ÝÚð·`ÅöétLóŒíäl²‹ú0ÿFñÁѾ3ð€”vã"mÑÙ÷Ѳà‰j-ÅÓf!š˜ÀvølBoŠN‚•AÈàÙAÁû¹#/ªÆFn82€š:@èVÖŠëŽx:pû/F½ûM„=]#,»É¼‡@Î×|Öˆ¾jÛ9˜·%BBóÌ2p'ÕÞÀÝ#/¼ç·€[LY6tå‹õu”‡Leô6š×äýYÆèm#/9!«Hä“Á€¥²s|Ò&Àû#8]·®m¡Øˆ:6<L1©ÅN:M‹›ˆ 6*«‹ÐŠ¨‚ŒI麨ÒkMŒÖøX¬_¡µedDkgŒÝ=¿5“Œù•ÔT‡\Ž%ÌB*ƒÞÑ8Ý̈f0½?®ÔýÖ–Ášzz0Óm®²ëfH_zw¶¬<zÀñGƤ'&Af¼(zYiáSÁd‰ÝÙƒƒáUùúî2qëP±ÉØÙw¢L)Èâ1>Ï é®;ŒqòßWœ€{jŽœÊ#*>\Urå–ι*ï&|bhXÉœN£F>c½¾Î#,¯H;náàä@2ͯ–‘¤~ Žz"Ìðfƒ‡{’zãÝ8²HŽdÜIFÍtpöìçÏ~ìhÄ}Ê#,_NS€Ï²ËvߦΠ³_ßx.ÆX~̃4JÐ ?Š#öæˆXÓY|ø–W²«ç%——ìýí3*9ÖË’}¼6~=J ×úóÑA8=¶^øꉺ&¢‚öüý^ÅïË-¼ÖÎôeÎÙÛ{#/!#Ïxß÷3Þ–>oÔÑG–Ð~èO½QâÁ£óÑßÛåGVÇ5®¡‹#ç©Kf¶9Ž‡8’þë‘RÿkO¯n0ÏV2@Rƒ…tØ÷å]ÕðLŽ¢>Q’ÕI–ïYçž´šÁС‹Fò;þŸÂ«ý)蘺¼ý?«Í3ˆ@#*þÏòC‚nÀ¤H¤2®SrŒŠy~äÜÍk…+01MD[ª|Žb¿Ô88¹/!úŽqáüiP5ñ¤¸^IPû*ÍB§ÖWéê£ïéÌ=Ûµ“pÚÙnüqØÇë?¼Ì׫³Ÿ‡¿†sFÂ8o“ @#*˨†@#*—ôçü½?ïýœÿŸÍü$?‰|Ø/ü?ÕŒ,ƒëC7Ëqbûš‹Y3Ÿ¨«§ùFœéª…²Õ\*ô[fËß'¼÷NÞ“²€¬€¿ö($ES2ï±Þg4…ò½²¯,WîÔ ™ú]3è¾6m‰ßõûpÒ¶£<4G)¥j1©˜0®âHåiZxu‚A(‡Îª#/ª•R\@Áèú=8Ð÷IEÎ÷ctµïðÿvóÁ$i©’—•ÊÏÚj蓧}»:+˜ÊªÝÚ$]Ñ*ñ"ÑVEŠL]Oó¶1n"Ó(|¿ÅwÞ8ð½¿?ݥϺ!°#¥PþÜ®Ÿ¶ÿå "Vÿ9{‹¦¤¾Fš0ߊŒLþx¶:ë=rý=¾wxˆÝï&”Œ0uDÄï¾à϶®‚tP¦|ÃòéÄö¨’UC¸åÇ¢ü´í禧d~úW“ýÁ®èÞ™™ò¨§WMw-™[N¡§[¶ø"#*‚xE/"ûqrLq´¢J‰h#wÒqÏf*eÊl¹ŸSwþ»ÖéZh€šï(Û®ö?éwbmÓ_÷/°úûÞDG•‹±öÌ÷]šz&‘÷3åeív/šBážéAEž}Þï‡/Ôº#ò*”·ý˜`y «÷—6kæݨ©I3UØ×mùb<~»@ÏûtÎ\Ü먬Y\Í©µ¦Ü¾.Žn“.eB)E’üH‡?©çaí‰ß(šˆ¹x#,ھݳ?÷BZ}w?/ói>ÆSõq êÃèÎnŒDH±A?\3뇡2ª»‹]zŠÑ’ØûÙA™vý¬,˜ýbrpuÞ½üâÿ¨p»ÕËo“ù‰`3Ís„MZ'´óóyv¢#**#/µHŸBÓš¯¨#,]‡·×Îz›·€ìñt3ôú´iˆv*.Z€bk#,ü¹Qlõx¢®\‰{—ÅZ÷SžÁœ¢CòªãýEñ°]WÕÉf{ífR¿½™œ[s™¶2)ë@ÞÇð#*t„ìòÖ@¤¤@+o`_à<´jyÿO©#*ùƒÑ1ð'ËæP¡8•$â±X¹+òr¹ó|߯Íw¬2C?ÎÇmÃ×>æ©@÷Å#*(\ѹD:V½ãÎLLÏD™O¨©Ë£ì·ôWÂQ{€£Çò¬êО¤sßærfF÷cããò:<#*ðÅ~Ò„Ž‘ðñæz;úpùœÑ^Þ8ÓÕ[cæ'’Gq|SÉ.;‹¿‰m“;¡”E²Ðœ?/z‚y?£A~šù°Óçà‰oG0²Ñèp[¤—òó<uJÄ…©æ~DXN¢6µû>8bw«pÛ$¼ïmèoG•*fŠw§GϽÚuz±D#׌6‹i¹buåmG)@“(¢Ç©QÅ^жèR©ý»¶H{ÆV'Ÿ™@ÇV»é¸tu•Äe4þʽ8_ó<±ªûñ0¤ZO—ïøé.°#/ëOsô³ËÄšXYÑTs$ïÓö‡¢ý_{ñ€Þ)Ç—§N(5&äù&à(@ž•Äim//r¸½µrYšÎÞ‡¥û ÷-Ècôm‡ôn’¨šþ/á¤Bö³8!K~á×à #/ØBC3â³ê¹€%”=[©óVX=ê§RôÂrS-ŒU˜˜µ ]èLL,Ñ8ÀWeŒ)‹OÓ0À0›<ßïñùýM½§#¨HH„;X¥µ‘Ë~ÝõŽã…^pv§J\Ü<sDGMWHt'_/uΕ›v«nÊÊÊ~èÉÔ#,3Ð#*ƒ8IËùû5 ÷TÚž±è÷xÄD9=´šj–ÀšîøÑ4òä#*ØŸ¡Xg˜0@®½«·#,‡¦ 'vr¤ã™Y^¥žùð®Í¦·×™AçCnÝÕ[ë—åÊ•¯”6†¿‹hÏôîGŽ9³há0q ZÇ¿E„!&‰âùm•!CÂOb)n¾<B>1„VÆošjúyê_^Ù]—z !P 1@OVxÀWéÞþ{ãú·tPzÒôá¶ad@vQdgiOòWH–[wE¹åní.tvK-d#*Ù€¥—b9?*Q‘1Ô„H5¶ö-wß·3–t.w/ÐR>µ»{}¿açÁ‘Þ` z{Gº£àRGѵ\óñÕÃâ}\%$“Wq„¬ûX]IO¥Þ»Æ±py¬õKÛÒ뵆¼wO]rá³#*ìQ™QE%¯¿Ñû÷ƹ)ÌÚÕrFê™Ç+D±³Ù¿ç±ñÈB–2!rW|Ûv´Né-lQ”)«›ªDŽßæ¶Ì–tƒz‹:Sż(ø¾û¿Ùñ9[ˆs0;ʼnßóUUå§S±óV3qãû\×5iL¤¼öƒcÚÞ¾GÎ#,¾ê!%²ê‡õå÷—E¤Du½¯8º¤ýþNŠÞö÷¬åú¾7˜Ì«í-Ð`*w‘30P¤RAI*HÈ+į~Ö§±Àk“QBœMr›å}MÜÚb+ÃümÅ»T"ðõHx{—IJƒ0R\|Š#®[ZÿWÃFûëáõû,¤QÄF9oxh>€lp&#,ÂÉtÛÈ'RÚ¬Ç઄‘Ê'©ºô,µ¥vRÊø>MÉ%̉Nz]#/ˆÑF-\IÿíÙ1˜ÿKŸfÔ ìºá§‘ñõ¾!ɽ:`½þcœ}X[óÀhç¶'æäõå–Ê›|Þ›M^þXºÁÙÑäû ż‘ýöNÇ¥šßÆ6¯ïŽÎÞU°êñqïFnžnÐÚ?J¬~“PAK3,HeƒZXÜt1râ:–Wa|qí³–ŸøzĦXt´¾JZrù_–.)3‰«™ýûÔqdvåÈ®ÐæÂqzôvD:çÖEÛ|ÛØÒ#/°ŒÚÉ[r¸cÕ¯X,kåq¤mŒ˜I4:‚(!dC«×7K÷MŽT°µ%Ìc¹bÊ,f½jÎ9¢•ß•Ù#,^›O\¸ Æ1NªGøˆ!T+æ›Ë¨îûgFcÆ'so(1Î0N0qån~ŽLNïˆzük1Åä§#/wòŠ:ô×ë:ísª Ǽ#Iò`Èø†Êö~j¸h“1.nÔ/uð¦+Iúb‚€H„V+{Üœbì17˜”7¶ÙìŒkƒ$’I™Äµ]{”ƒ‚¬4ÅÎJ_¥œ©Í§ˆÀP!pa.}^¾5·º>o3y³ìL¹áò{gßAG¥ÞÓˆtÊà]opÖª¢ÑlY¤#/Ý#,¹I£ç£‘Ê4Oœ¿))$w²¶PFyQ^ÈB²5—ýZŠmTZ”ÊD:eøTJaˆSŸ¼éDï¶cã¿´;lì&9¸Ëœ[¯ñM¢hÿƒhi”S›DŠ_‰¹oÚG}Íj“¿¦ó¹{g^4–Ìæzü±=m/Š!Ç_¾º'<Q38|’ß·Ùgãc¤¿„,SNí—óãƒg~®%s6!éëàííL_]ö¨Yê.IMÕ"NüÇTyñÆ·ãl÷ÇZu‡c<.SÔô’x|6)ËüÅ6Ññí3’ïNéÝçˆt%s†Ÿ#lââÁ„åx?–ÞëÙÛe÷SËlü¦8L4¡&Lèž=fõпê çNaa×øT”’œx§?»h‡œeãß-«µKº"90ûñ1Ø Ž»ÁNTdÿ³UèùÎ_µÆZG¦¸Qï¯rç)c¯c×o§Ž¶KàöäÔ¸Üö\°…ÏXLuZéñ8²QLÞÙŠX]ÑÇîßZ¾¹¢\ÙUÛ´"=bjk¦MiÉÉâ ^EJH@®d7a}«Ú¯Ä€+%]ѱ¹+]ø»¥zÜòxÞE#,ÚÅJhÕ‹ñÄÎ#,ôûj‘Ã$íãbëîÇ‚³ÏÝ·wÌÇ—“Ác¬`Óå³O °Ü¹'ˆ{8àw|{‡,àú§S·9”cįJnФWUa#*·óƒ£Ú|œœŠ÷)m˜æŒ>úÒ)§E•âô‡M,æ#,°ãu{E.Ù¾õ£Šr¼Áëis“b<í®Ü²î&~·Öãïç/»ãt=ÄR§ë ~†¹*£"Òø›w0™Äsøy?š›ºÇÇç`ê±I£u04ȼ¡}²õð}!‰Ï¾¤xÏ_V`ôÖ«Ç·õéƒýÓ£\úZå}ms¢£|0g”_„Cü=2A¶ö9ÎoåðÞ·c"gõøÄ>ñ“Å’–·ù%=ãP»˜fDHÀ,Ë”8s@ç…îx9“Yæëöºôò"RØì}ÒOú¢Ñ¹ƒÜö7²Jsˆõ͵MFÌŽÉE›ý,Ÿ Ä „¶'?…WÅöû^F.!³9©GåÏ1¸æŒ'ËÇæàë•Ž'ãñÀ¾þÜì)²‰º~knçFdݨTC)¨~ojhè3‹;X¦í†¯›º[ߥXšö¾S¯ˆ†-<þÏÖ_2á§g~¤?GM;l¥ÜVîƒ/0VêúÌrí¶;8¬m%Èãñ?Õ=3¡pr1ÃÀ†ˆ°ª…å#/Ž4Þ¢‹Òª{”(aÒCMvQ‡tí‰ujnC_?Õ¿/ØuæÌ?Ù4J¡â–Ëúþ—hòw±˜Be.(xr]æz}œxÅvÉ®<EËÙOôHƒåá˦õ¬ÚmBÁ=3¡¿7s—gÊdý&õ¸Í‰ýr@{{vâ'ù_¢rìG½Iƒ”Õ.ÃŽí,œœb¤üPªzf¡š ¡^ô›½¼(ººúã]§™šØKŽÉ0àìE¹ˆlÐû8‚‡†ZƒØÊîB¡‚âeΞ,’ƒˆé·ÝÞž2L|Ïo‰2“ÞÅígºl¢+êÀõk¥“?R:aŽêÛØZe…%1O¿'å}Ü(~…Hvo½…§_¶g¯ÅK†>!Œ;Í´˜ž¶ažl<¦Œ…¤õ¡x¢ŸÔäEbB"}÷°jA «w…»Ðs¡œâ»TtŒªX6ås‚ÂÀàãÍ;òÇQÂîR>ÿJ¬EÌק\f®‰D$’¾µ$òR‹™F6#*\Æš¤–VÐŒ`%ˆ`Aý´ $$Þ«(C/•T<#,®‚ EäÔ¶ž°È6úñiÛ õyeGÙËäÊÁÈûcòÕjAž„ÞZ‚âó‰¬<~šû ãÇÊ7yØsâ(N&:9„Dó-^å2BÞ*™Éiüw3Ú‰ä1xësôÂÑs–3È‚‚áp½ú££=!B#*GçøRyFkW˜—nÑ»¼¶†(€”1Ñg[™·ç’‡"#ˆ÷tÀ`Ûøzÿ‰ÃÈÖyÞ@‰g7pj þMQ!áËpÿ1g?õqN‹'ñ%D±öqóõUÇÌÝRŠÇÌ«ý⟢)¬”Àþë•ýmm6uþ£üC͈ð_ÀñíP8:ÕÞ £pQ… ˜…ã–AwØ>Pë?Ú6ÛH[þ&, yÈ܉°Úg9üçñÕðù–u¿ƒ 1æ•y>qé·OóƒCðeŽý#*8„qo0þ|©Ì:L—fíî›>ßñ»’Õææû ƒ7¤HoØFrǨoìW>ß·ô|¹ëÐ;#/HzC)!‚ã§HòÅð:ŸW>pZg(”ýÊzÜÓ£C¨*H€Ö(Ix ì÷ çü:ÃF@*Ô‚‰•®aÉAÖ]j(Û• ¹z0úb0I%ûHV0`ˆDÙßü:¾Ü~ßÈ%£ñBЈ‡Çbôrx#,¼PŠ0Gº§Ä,ЬP¾.%š6¹J¼÷bu$¢çüy\Ïþ+uäù?¹JP$§™†2ÃgÉg}ëÔß·U¤Ìúg¥úŠ_¬y³\Š~¨Hi¨ñÜþ¡€ç*1"Ú/ŸVŽ×¹ëäìçÊ·œx€>˜ë‚=Á#*‘Ù”½uêÐ\20`ûïÚákf£"Å–%ës5Ó#*~!8Õsz‘?ÈÓA|»™Ù¥Å9(öG#,J€í^Pà¨ü¨ç¨)”éZl¤7ŽÔçP¥H!4#,´][o3:”ŵr®œì¨h ø’—Z`)-”r\€€Àö\¶%AC³³ìÂë˜\¤<ðrã#ÐFŽ‹ÐBÄÐòBŽË²4!ðÒ¢öTÄ0e^'Ƹã!…}ªO˜ùîÁ¹F–d*#*Qâ“@IÑ1ˆ"±ƒyxÌîTÛ]ðbGXf&i´›\ÑŸ<VîZ .ê£ùÛ#*톉¾3ÄšüôbÁé6ÖÇç¥Öîh6þÀNWU®û¼¢ƒ/øàyã_|fÐü@çàê€\à£t]r[28«H[‹õòÍE X¹ÿ‰Óˆ”wxQöä™[ºw6y ‚+´`ŠÉ@XY«i/›’XwÇŸ‡kPK–ÁÃ9X§w€äGN}ß³œ–Ág&øž0œw婹šfÙeq5Ê“ÀÙß»0¦»3œãÑÊÞ§|¤ˆï‹åÓȨü<Ó…¯:µ9ë+šXá#,'ßtŠq‰SR«Þ ›¡åF·Ëæ¶×[¢º3¨fÎäæƒõ┣‚bT€ªœä]#,#,K\£0ä¬îÄ[éƒI…9låÉÉqPo¶àÕ(À;‚Ü€ç±öãÓä6#*û5c~>AtSxŒQ9üºà§»7tY1í[mâ;y™iÅÙ"ƒn_Døér‚íTb|"ÙµšDL$Dç#*êRo«7!šß=8èŒ{i¢Ëÿ»ÐÚæ ǵ~UL˜$JýQeUìå`¯gtþÎú;âZ9Uq¤íJWÄUï´ÏRÊl!û\Pÿ‚>i·—>ïê½Ý¹h‚«ªc³”6‘šÍ1jëÆ°Ãõßî…þ½‰Ô4hx¼¤¸Å´oµ¡úS;—EG [{èôÑ‹Õò‹oð"ÞÆårÇhJþßÛ4#="P„Â15E|1dRl/e¼õŒ–rÛ`øjÙOçÔÕÉݦÖÅ•øuÅTãGî„渼‹³¡GΔd¾"é öüÕŸeþ§gbë>Ä•„Çu&çõÉûçAü±›9ïÌ[]b®Q ‡”ÁÌ2QPÊÛtRïiÒD®2Äa)1J©$FRÓÀÄ©%#/*’ò¯Š<¤Æâ¢ê9Íѱe)§Lá#úÊÕK´&9h?žçZéž´ÆWÓ¦ ö°íŽ|ËX•³‡¯¸zrmYæ„Ô…Ï´Çœ Hæo¥ÉÂËÉÃ#”Ûä±ëRÍ8抪£ßíÄxZZ-Ï»é_;Km߄ꮾÍq/ge±ÀÜ6ˆãÈ&šRÔFú›ÚâçgÚ®_U, §v¬¸÷OÙš"aEó†Òn²ýp~Ú%Ö¿Ü:AŸtP_®™ôµ6A©¨ ¬Kk;KÙËs.¹Äš`ÐhŒ†©sSFÌ(ë"‹fg*ïnBð6Qø>Y…ZX C:z(];hÍz-Ö‹C¤µtâ#OØß={û°@™a7ƒ‚èߢÒà÷·PŠü±xöPÏ:H?wJ“sÀ[žoyÑ=uœ£;–ÇÒªª*µ$$Ī)œöCé¤!ÏondªÅtMëôŽh¾ß¼ùx ÜÅ›Ærf‚9ož½¥WY4Ù¾µŽJ×TiÉqƒ\ÅalÊÈ.D‹©äŽÙŒ÷X„ûkÎ!ܦ]‹rÌïV‰ló)2š1´ uÆÆRŽj–u—‹®ãU+šo™]kÀpùÖÉ£B·ˆ‡ÑÌ?…(î‹M¯çŠmÃv0° Hpð#,žÍ·úØ-²§áÙæ.k¿€ê?5‹¸ò>€ôVÆU‡Ì¬D:#,¿}Y.@åú¿5´Øp?>ÿÍ,]ð]Ñìöõõ4KÅóƒŸ#/~îv´¹ų̂Ë}jê´?ÝœÜêÌæbó+«±˜™ªTµLÁT&”4|{*pÏÖN©³<¾U£Á#,Øpª†£7z9*g¬CvæYÿ\¡·Z9Ú`ð"$é?E¾ÙÏ_‚;žÈ.éÇcûˆ@L\=dȼݳÈßŇWÕø‘CC^”Xa|`Šv>]#,4Óþ+€}çÞa‹¦tǹ#,«WLÛ%åu5#,çÕÒ¡è©}Œ˜£rA6•¨)™â«ÚZ§é³s~?@t¶<5ÂÔ#,ŠÐGžá]T…¡¦Ü¾ºÞ={êpyÃTXî´Väù}::qº”Ä9@µÑs›0ÐÃÚç2a£÷Qþ«‹rp\4hóî[™,ÑßÞ¿ßúºÚz–,#0Jp¹à”噓ÏbW×^ôòùö_³¬¢[°*×ñ€M±™~Ý…!X#*ýçG·ÃÆ£ÄEh&#*¥0Öü?_Ä„8k7ª>>\#,¿»uL*,UO5—¤#*¯ŒÄ„q…þ‰æëònß(¦bç6¢rª£†ng#/UøkÀ\å°l#U•XRø^G|†Ç;¹ÎÚj¼‹ÈU .&¡.sKnù¹5´2 QhéÒ2J¿IítN‚@žÚžqML#> ¯ÂÖn¥àLß#*›¦3|!‡ º1Ü´òíw‡’¹ÌM!UUd•·é×'cÅ“Èè|ûØÙ޼ׇqÐÚyàmÌ’òI*„„{.îk·cÆáÞÓuG‹®ý® ‘AS0¹v÷µIAÈ[Ó¶«:Ìá,_…E NI+^ì”.¬"4—¾ÀzÜòOMªØ¿›{Ÿ’LG<÷äü3Äbj-A%¶NÓ ¥ðœ©ß}Ú\ÍÝaî8ÀK$`êÜ2¿À0G½FÉî(°‚ͱ@th–hŽ‚†c JØÙyHÏ\´»e«—³¹ûŒ3÷¶™_ží%ˆÃ<DffQ+%}3QK×1xfrŽ]öR’P/"Ù°la!Šä¾†œíGv¨#ª8eñoŸb®sÎv¦î´4G‘ñÞç—!kÞ‡IBƒr†Ým#,ÅC„Ji1píä#*ò-®¾¸]„okß!ås\|™N¹ vgnÓ´fð6ar½Æ[3ïK¿›åø³¡Àº6X´Á`‡[b0|N”“÷“Úþ+®ÌwÚ}-œMѬsuöy3§¹ORصÙt}¦[™ ³¦OCîü‹¸NÆDôú9ÅnÂþb?ßØß+÷’kÐÅ[¹ô©;×[šë×ì¢4zfjs¡.64±•k{ØõÝH«> ‰Ù=$p)ËÌþ„ȯT”òç¼ðßÑë…h©¼†…E²Î‡+iˆ²:Ï@r:Ëéä)’¸xË°an£y³;N~G©ùuõ߃WTb'\—¯@–åk:YqtÇ#£±`¸jú;§¤YlëY¹yÔ”ïŒ(g󬺡f÷YŒÁNé¬8ÝkNèX®CÚõà&Ïèk9\Ò!×¢3Ý"«ót΂{{‡Zçb^C Œ.*ÕQ§n2¦/´a-Ur]h±oŸ?Wu”GÑnÅ°“œý%U°GD‹B-CQ#Ô#,:©¾ý¸'CAÔ#xkÄ“˜H¦nß6¬œœ‚£#*O#›†÷¢6ÅS™¹ØööÁƒÑ*6à/!*a;Ũ@Vå"VË¡Ú=±k#,·-½ 1#,FDtu>Äm‹^ë%a¬QO^;t½¬QÅs³#,X>ÄQo-×ç]Û/"¤Õ ίáœf·,3\Ci½H¶ô!Õ Üe¾S{Â1*ÉœW$Iæ[_ö”dìíâ+ÃOˆgJ7÷Ç¥º¥éœ‚ÀBÜ7@k¤¬r#,™*'9@îe´X岸hú7幋€9-¤ ÷èmhÅ»]JwRU”q¶ÎvŒyõ¥oÄ9ƒÏ³´ë#‡›4º v·Ç²”/ÞX·— §¬O†CÓ›/¦G>fG?~¼Oõ¨Ú¸š×¥W¡Û¿CTý»¼\–›ÄͲÒ#A#*‡EF ¥(È6à.`]F6Žåœë€pKÀNîr%ÙånE¼–²åg“VÄÎô[÷^TY_c¨šÇ"‹ö냹/ÔŒ#]zõ½úօЧDQ2ÖP]!¾’¶T–ç¥áºÀù<¨¼žïYg‚s„)±p‡€†=è1$rCˆxRQã¬C9ñúý~Þ½Œs¸¿i†èíÜÑzè?!#£Ÿš=pÁ®ä8Yp¶@Ø‘oDD÷ÎêF9tè³Mü,¿_¹árä÷sÑ7¨ÐôÊóçÌÞhˆÎ7ùÓ ï¿x”ž(£”#*y#,0pŽŽ²à¬«“™*PmþÿÕ·›ð÷ûG¿Ì>/¯@¸è:érýAÝÔúj£ëÒ $ú¬ô¿·©WÊ¢‰(û쵞Åü¢ô‘#/ʳ_+Þ®À‘¢Á˜ãRÅN¾Î¿^Òvò>[âcò°V^þ°ƒñÑËKE°¾ÃÀq#*“úþjÚž.sß´rs0ð‡Ï>ÎT^ÂÌ#,Õ£N'Ôe:ä®Ï÷¯W}½ypýcãYþ¾±âužXb2ÊÄ·än„-#,í[],ðg ±ö#,~ÆX¢“µŽOÚ1ìgc§?ŸéXÛ÷e¿ûúzïoº#*³e©ÖU„äP§`Bpú#/õ¯»ú ïþxÝ0žàoÔj ýÈæ„÷ A€ašùˆYÃbs?äÚ%¨ßùZª…Oî,“øIJYEC·ùMjù¢<?© ‘£h¼B;@.J,ƒ€Ö™#*±PŠõ–„00Ð2gû˜ÿAm§–›ÞË-ó¤)»Û Xmþ3}’KýÕnæÁsôo‚hz:AŸGb,/¿«¼à*jLÐÚvÌ#*À‡”Ž\įg3jNïG›Ï-Áaã‰B©ŸøLcT%x²}ð#/2Rq9r°[°—ˆ¼„Ãþèfc9f@©»¬#,^#,Y±íxuƒ‹õ¹û°öõÓ}¿Üú\ô!ô_gÚkfÈhf_ØŽè- '÷ÀÿdnÜ »“ç'h›*–ÈäÂ÷.ÝaššÌÀsÒacø^Øk)#,p$d¬éý¹'œaê^cH!µøl*&_ï¯fÓ·ºÖºœ›ÆþêðþªìªýRÛ:^™X¦¨[þ˜yþÙx=ð8Z·¾Yɹ¦\’B8šjUz½_ òþü„G2\@•‘ #*5bÂÂTJò;5Ãïÿÿ7·éú#/þÜAËÚÁ©k ·EÂÁ‹ÒHÑÛèêó|庿‹ìEǪýV8à´¾È<èè IVK%UkRÅß‚®Þ}åµ0RùÒÔQ°-¯á«´“´«úÀ¤·÷!zC`Âx„Škôþ¯Ü\½!¿] T0´#/ä.Á)rœ±»Žl¤néÐ-#/þvâT#,N–ÍIaÐì„C‘\÷&#,;ÂÔV(»†m!àeÕ%“?æpXBÚáS»””rí+î!QÓË«ÍMVë6ç.Iëùwh5Ô,äOaQì:@Âï:{›umZ?ù•5fÔmQ¿zž„uãqè5ßG²ÁhÂÃ$ jl#b1“ƒ#/R%Ø'Rs×á#*åsÐÈFÏ¥(À—Ò«lÙNaÎåŒvÐßM—OÉ·#¶AhNï°‚MröŒ% Uµ†ôú ú¾Äíz®€ŠÈO¶¼¯^‘²É>ï°/rxÿˆí˜¨*¬&ÝÖðÔ»ÿ0i˜d•xð~j. mÈׯþV2#,þ#* ù<É Ù%¸ºßŸúxöç·ù+˜;#,²È»#ÛI³ƒú¸]0ƒü”:ë.²j†A‚•…<Ó×úözúñÂáN«óibÙd^×3è"„VIû§ËDZ:ŽúJV=~ßÓ*½¶÷@ö⚊ûÀÖÿvQǪ|'Ðþ'±"ꜙQ8ÖnлêꆉÄkXe×AL‡užïçõgàùºÍoìÞ¿¨ûÌï.ý»CU³ê>Ãi!ÂhåÐIÛ£F£‘¢A£O‹h,#,ä´ƒ$÷#,'·ÄáÐê9ˆD4õ~âªà‘â-#—æ%;Ê‚J¦j ÝW:Mî`žA6a°LÏú®Ù#,æÚ—,œ_íyØœê™ß¤ü«ÇÊë+5›¿íYI0à&.Ò¿–Šbƒ#¤Ö§Ov9K.:D ±nŒsŒS;$–#/BªªwI$’Þ"0ôÿ³ßvja¼õUÛ°~'#*¦Ä|ÅÏ]lá³4ú#,^ƒ_¢‚l=ÜáÖ1Hˆyλ#*xèšš§#¡ÄžÀn“¤éôÕ˜v¥›dæQfåãχòµÏyéO‘ÎæGõµ÷P¯éüÇúa&fùˆ ?ôõ}zÞ—Üs:ÈTŒÕÞ7öÀ’6§ö:äýoÌL¢†˜ÜÎpxß'#/q’R©Zf_ °aP¬¿…ÊŠÀ-üé·Çm@ýa1”‚$y× Ãd(kwü_ÓýÏòXnmãGâŒNÚüOK‹†ÇfÊXQ2myŽÍ•0y*ÆÔO„?›p#,¡™ÚB@1¯üÆå$¿Ù—©µi•¥d`ŒLNËšË.sšXÚg–y|Å‚ÚÞ’ÁÂ4#/D ƃGêÞ³h¤Lînò—dš#,u¬!çál¾ÿ¿ý¹¡·íuýÝZÈ$(i‘^Ž¥7Óòäñ"Àñó9¡rwÕ¬1ÆvP„ Ù;àu†H#*§Žö“%#*Ôj!cû¡f'¬Ì8ȧÒûì¨;ý(µNzt¹Ê.®iÅOÝšÂSbêP„›tÓRq„Û¸\š²6âT£u0ǘ33b¡™fî²3· “·¤{Ž»ýÁ¹´cÑ÷“Û0¨#,Æ¢‰5Öç÷ì’NðÍÔk‡.Ô^arÈÆžó£±t©#*Ž¦ÈduQaÍ€jÓa©ëd”h]*„5†ÂI¹¨°`mЇäoWì´ìðÉ~ÏÝGò à`32ç®õ þ—Ë£%¥¿»çðUüÞk§¯]RoFJLÌ‹û•(1±ƒ`ý8RÍßó~ýÌFçvKK½Fá2™¢WYY£Y§2'¨6C¬k9 Z]`Þ:Ë2¹JD1Y7k¯$’I3Uk˜©šÖµ%¥¶žf®jË^³™Y„uã.¡Ž½aGƒo{ÂkzDhhk%Ü7‡±ëXìÅëušibÊ‚Rh¬gù+Ÿ_¯ÖB˜È„„„@*<à/Ûø楑äG<Ÿµ€MŠƒö‚û&¬RÁ¿!ÓËÊÜãªq à1wÆŸ?Rô{/S>¥£ƒ9§D$‡ì]ÂgTORÆÛýpÁ«¤F3Ï.ó%%ùõû÷VñC³»>´}_béãÄ3UàZi}ö„¶Có éÛSãJª¹&àÔEd&}¯AõôןÄû?Ù¹µÌ ÷Ë}…+è´.”ÊDÉ“ŽîZ‹dN…I]êìÖD@<]A Û/p[ÂI$¡´} Ñdéÿ–ÜkÉ¡dÏ#,/KUYÀ¸|#/¶Äh)"ƒÔ¡F!¤cÑ^nëM·¤×§ |ºu›™~%>GŒbrØzb’)ûuã»[®/‰¡X>àeè{²Ss•#,#,O@SûBÍ‹68 ê}è]:7P%ÎÝü7³’D‘b¦ÎûoÛ®œfíJW,Q¦Pƒd#/Õ~:iuø˜Eíö íîð—€ñ#*H¾)¬V)ÄU#/Paëöˆ@^·Ë¶!‡Ïæ !OŸñöýf+0Ô#,…:R‘è¹ø ¯Ý·#þ¶æÀýŸ¶ä Ü¡‡ãJá…¾G#ÙŽn»¾â©¢–¤*Ù·3Zš!¥ÀõML·P뺳#*Ñ/vkK*Šƒ”šYÒ•#ôìéÌ:¹ö•Ý¨¨U¶ãöıA<C)" ý'q;^öIë,BÅ%Ä`{ÀŪš2Å!뉊IÌIÈÜ#Ç„¿ˆ_%Ì5§K‹mÁÞ}W#*¾HjÔ>ÒÈGí .V~¹aMœ>Û-Ý#/‚#* Kü|}ÿ`\›Ü}Îó¡|·qòU»/ÀR“Þö(€ûëëµIõâðkÔ’Þ—°l÷Ð*Ñ=ÑQLn7"yË[ñ%J“ÔCî»r`»ø éƒéûßäîw9ï“ÞŽó¤©mŸ`ØËŸ†ß:#,Ù2(D$V#*yÎ ‡ÖÐgØèrÜøœïƒŸuB,cN@wöþóô;P@òÚZΑv¤HÝE~p=ŽÝ¾)øœ:Ä=â¤T ‰£¼#,¯—h¢LLÒcùÊÁ‚ z·óé®ïyæ.æŒcÐwšrÚµ;AÙ@îõ¾š-iÿIË°=äÜ¡ö÷Q¦•E¤ÍŒ&£bŒ#!ÞuƒHYÖ¯ïu{ÖdR)³ÇUÎäâø}ú›ø ^‚>KÑy¤]o(uœ•=äþjµ¾Ï¬B¯ú‰÷ýf^ãWÔ?ÇGäåüa¼ýF²ßxû_l›¾Ž3%‰[£CäŸ+¾&Zˆ=ÿtÏöCÕ‚¯ªÖ G ÂšÒ {ºv!!êÄd’Iî@¸#*ú@ö¾µ#,›¿ƒZ…\£1C`m`ÕçòWò¤RO³¬DëŽ[Ú]½$-=åšîýmžGÂP„;¥cÃszaSJ3¤ÐK¸éôÖóá2µÍ,lÒ¦(Á;ì'z#*&ÂÞ?o¦èìŒ+•}Ǫ¤¬Psù†›Ì°,Fu¶³êUCãÐcMIôDb-’‰ÖNáa_a̼àSs‹‰¨5– µ|Ì qñ;IݲXçŸäð2fKõ&ñÉ: ²Ï|< †‰D™XﺘÇæ™Tú’Ý;ê&#/¿¼†PgGÛ·'–pdeþÚTN[;Ô*2`‚Ò«î÷üž¥QÈ$Š¢T…œuzæùóvÄ4hɘµÖ-ÈÛ0ÑèE¹½„Ér;Þ²ºCSêáêM½œÈ¦aûS<a‘$Ed¿À(‚Û%4ËùöOrxž£¤»Æ‰#,¶0`‡êí;ÌDùÄj¹P]Š6U+¹wï:w ú žnŸC™éï¡<Mç›ÖŠàìßÂt²#/(=¦Ó^ãWw ¥8½Ù0ðüÉmÎ#,„"…<Ë™U(½Íg·Ãàí}ßR|“ôÇOw`SƒìªLʨD.•ú-ý¡ýÊ€~M$‰¡É?ªmQÿmRR±¿õ8Ør+¼4 £)$PXuÚðÅɌڕ¥(d*‡{˜£ËÏÖüZú?¼ŸÌ~ú_(™‘9 h”ä^°öž¤Jãd«[áÙUVÔ‘Ê*æ#//ÿBgîw!¼·VxÍî"vl÷Ú⧴#/«dâCfãoÏèo~3h‡HHw‘œŠ)eÊ×fÜÏßÚþ6¾õüª2û³T3‹ºàuT§Qñ&cçùé'A^¯lSòÈí»ÄÓ¦¿uß»gNŸ,åyž'€F>:Ï/Wçïö1?@a÷P¥(CÔ(T-w!¬À‰î«`3%Ë°°?Œèi¢>ÓϯOçš báßÁŸ3°h´”{YåpÊK2{Õ‘ìšÞj4õ¹s2Aa¹ª·¬Q¤ŒýÉu±yP4UŒU‚U©“8—‰˜G ¾ÕD}åÒÉ"q?µÌØ:Ú¬#*§` ;Ã÷Õ;¦–ž@ƒcc%&D½•$ôD^Ã*B"rbQTÔ¼CУ$:@H:&À!©©kõž8vÐõú#,>Q FÆGFhþ÷ìÔÎ¥ETÖpEŠœ¨#/€#/AØÂ’E:oµ#,›¼?,Jwn5)©À(üøšÕ…xˆÇʂĉ"ýïá=³ñ?{u'ÖuòV÷~iUúê© ‘^ª.Þ{½”‰~›I;(Ñ[…àeryc#*šB|zäØl…6%34¯—y¶ù4k•^šæéµÙ#,• ˆ+-KnëË̺¬òv´KH¬ SwöS¥=>¿_ßœ¿Öóƒ.û½3ÛésìÞ]‚‡zùîº|™È_¸ kÕˆ"#ƒíó=Ãc˜Ç ÐÜcN³cøÀµ˜‡ëÐ, èä…ˆ-ꔑŒT‘#* 3 ˜!¨“«¤tÀÖ<riÄÀNœ®ÀÒ-´SÅKÉå(ºïæíáÚz)uÂKžm:ιÓÔ/!ÂýõB¥èãHÍzœ:ó+·pþ©î¢’sqBpïÌuPó€°âàQØDèû6”m;â¸w6ÉÑÌ]®†£¯×;o®ß…¶¸!ÈSŠPÍ’ãCvÕ#/¨aïóî2íwd£Ô{?5›vÂåßd²Ðy²þÞzCÁÁétÝr(›º¥99>à?‡¸ù°à-*WœõöTöýgÏ õGö¨s_¤:ŸFÖŽæôzêT?Ä$‡ô"lûÅ¡V–žiš¬Ðôä/#/]ÐÂe#,êYêY%Y$‘÷þÉ ƒìÆÈÝÝ ;E· a¥¬S#,eKCÆ6È@ß`’ÿ“Úó»iªJbÏ}R*—Tñý…÷Ÿ}¿BÈ#ÙGVIÅÏ!C'$/Ÿcülób‚$ò!<d™#J)ß#,ò(Åú€éì²ùŽ :º¾_hõ•%¦âŠà/¿`·æ†ô,¤ÇW}Zà@’é- ʶ(õ¢3¤âŸ˜oãÞ¢Š¸?¥3¼åÛŸÃz¾®¯ë„9q¡|ÈFÖ>íàĬƒ‘“¨tˆ$VF1AIgƒ;®$‹½=7FÍ#,Æ8;‹êKôšÊ}'ãû~ÙýŠíûÁµ}†¡ÐÕ¦Pü3²ÉW€hGõÇÚjÆ¿ÌV4Õ)‰úÈSý³ï1sbwá5È‹(¢ úŠUZ*`æ1œ(0#,‡nD²zHöDß Gªåxé “bLmˆL!÷0¤ÉCÕ8¬2âÊpㄈ .b©@Á ‹ü)ù’*ÈRúœ¾`ôP{þ]½‡^–Ëž°a#/Nh…"”°Y.-“CŠÄÁw¾çvføE `zN}#/:“R)¨/Ø;.'ê…ÓžþÓgyAS|!žõ{ïy©©l×ñû¬—#*€©DÏDQæë9)Ò>}º‡©Né Þô@ì`ösT øÜ “!À8MçP÷ÙRx`ç`rÀb*6â,™{ŽA<CS $[˜"Uš#,^¤ÝóRŸœöy~óáN>ˆËÝÏ-ËçEYÀžìô Ó¤ª„¡@‰³³2âÌ~ŽUù"qa7uÒ ÞÅ’”…dÐG¨ÌÚLíý¹8æÉüD‡ß’©è¶U”’ö¾_†÷¡$U#*M?+aܤ¸™“¶Ø8M^Ž1—5é¢_e:³5d©M1Ç"üú@”Hÿ²¸?çIÆYÄm2c×gpº½@õ‚*ªU'l›Š+”ä½%–Jf¥¬(A©|»„o*8¹hÅFÁßÜ>ÿ‘,~¶©Ÿx>YØ<<¼{pv›Ìdö|Gsx5Ö휇!¦Ð[®MÑÐôðâ#4›Rêy#/¾EyuéË£‹°¦+&qGbd^®›H¥x[‚„õSþNã,pß78l#*Äx‡zþ}šõcg,MHömÌ3¡é•#,t?a6ƒ¨ïNƒ‹q¤bB:1äA«ÀFÑ,1@)X'3…Ê+‰ò„ó‡“ÉQòùúŽ «Ø#,ª´hlD›2Ú<m*¶žî®žD;veÑ„Xm#(#*è?!®úêƒ^“Å#*=Ž¤(ç¥xé]»Õ3ÝGòÑÚ1#,þ#ãc"žICÇÜJN—nóBV$I 6ÒâwÝ»¨Þgº(êû“ëüçðíœëúÀ#/“P}‡ÄËÍ÷möÿ°Ö.»C'?ð?{ èÓ˜[?lOÇõÖ"šÉ1ñ‡{\æp‡•[¼»”§9oñsù/ÙGãùBëN¶†ÐÌâù¿.vkõ¹ûÒSŸ°Å3šãg'Ÿû˜ürnìë+Ž,ßXÎ#*sáöaú«¶wúÎÜ~ÚÚ²×Ï`ݤvþÆIÏ#/sáN*j€JHˆÝ’¥òÔÂa»BƒhîÀêb*ßS#*ºÁdKøC®’NÏ´'Øyý=ŸªUW< lA;áAÍàR£H{0ÚöKƒ@!Æè\öx*k̸ýñ÷ò3*÷'±˜ÑùÔ‚Ç¢##Ÿ¢ ,€ÀŸÅÚ(ø‡pÀ6$éyx&J@2ƒ¤L h«Ú$#*l½IÁÛÏWV‚ÑÝßúw›Hd?¨öXnŸ-{{˜AY¬úçØèý*{ɬ6CÇÜLÒ/úò2'èGÖW›j¡Zƒ½û lbU6á#/{‘‚8Ãgcq¿¢ôÍ^Ðà`#*ØÕHnhn¬UTX&†”Öìû½_½öÿwÆ&GñÕµz¼Y#*#/½À‚‘½ô»®Þvê5ãvëm?~ý/Fð?µÄâ(Ä}ïž#/ÈR9®q!5ÀÿÜS!ÎȹçŽ#,W$Ð[È£Mù/ß_xg6)Ù¶PS(c¬> V›ÄâbV>_Âñ ˆa$³}øƒ€C"X &hÆß»®}î¹[œÙzgžo)$ƒô€?œ5Ô?#/ÓÛîôûÙ\®ÛX}¡õiðü¶„O`Ðõ Ä>Ôt#/ôK„#*ËäžRǼÑÓ‰Ä@ÀùÆL×åßîº<1Å8ƒ˜»±òK9ðú¨èïÚT$$ÜÀ¤®Ÿì8ŽÄ:÷#,6Û«uý¡¡ 謅¶ýWä°îâ=ÀvÕ«-Cí"(¨ˆ¨¢«/F¡EUTCï¨Ð3ýêüö1-¨`»üfk‡êÅ+Ûšœt‹ÁkѬFÚz"R8°l-Š¦Û,º¯È»À˜ª‚1ˆ2$¸à*-ŒÓâsê?ÔW÷åcÅ\q;•ééóT%4ÂÔôþ¬4H*üÂãó<s&Ä¥ü' ïžÓe¨$;a¿rÉR½´ ¹Önw¬ln9¾ÓNS’_ã–O'ÊUfÞmçæ8(ýióȃmfP?×#*û‹Ãf[» JõUu_D#óGh"duwNÅÍÇì„Œ>×½P¹âec»¿QÊ^r«ÿ³‰ì#/¬ÀBCLʆt«ð÷Os«ù5÷#’#¯ôU–k2¥¯t=é¯õ½F$ÙÛfð.B³Œš_m“ꊋ#/eFŸÁ>Ý]¼ªœÆ»{Ší2W´Pk4£Ä¢Ñ„ˆ’H#*Ñ€\˜#;X`™çÄ#/ Laö¤£ù/Ïü°ñ67#*l‰b/?§ûæHäg·ó?WÕ˧Ÿ¤×v°0™3U¼µ[]ÂuhïD¤’Ø*1',ŸCÄù>ðê‰ Ë¹í¾è¹+0ßùm‚\ý»:ž¤æ|>ðr§4ìý¨}Ê?˳¬¹}ÃüÀKš/õ9P·r¦Iüª‡Åú˯ðþêùîh©Ýˆ+),¢i1H@MXášbLtiË)%·"¢ÉE§è*ð BM-ÀÉ¡‰±¦*"Ó!uC”›ÐÁ\Ë,‰If,´±L¨¢daE$`2¨#,„Šô‰µ?Ëõ³øŠ°†þ33Ì8"BºÙ’Wˆ)j1ð/ñÄ@Ö´°+@Óö¬Eý¿ïn“…mÆDdòstNûítLß#,°LÆs8ÜåbvÙ6q,š%¡v 4ˆC$b9KZCjnb5ˆÿ€ÌCŒGöV{`i}”HÛ1¤Ú|P#,Xã¼*ªðMþöýo]™°ÓÈD2ÂBÃbô[õ§ëÔHÞµ;O×±˜d¸³™ ©þéÿ…‡m}jÄÈW›¨#ÏùÒwŠýÍK™œÏ¥¿á6æ>>ÙýŒj fué׳¦L¤‡ð?©PhRZ,P´–ÁRc#×±xAùˆÀó5=N)ÏûI¨¹Â#*-BÓÄ¿Ïì7ô ôí®w¦Þ󈟥K³²æ»LpÖÕ¶Mˆ-}ým†p«µ™Í@¢dEïP÷3Ùˆb+Ü/pÂ6civ”àJ¯{ƒh#Kìv\rÆZ"-$,-E‚‡’C‘ýø‰B‚;ƒ#½ÞÐkZ÷•jŸ3ágî ¤FñÊiŒÆ $”‡o¬~ŠI–l„%¥«`§ìàáÁÀ#*Ae^a#*¯Ï&Å™ÁAåèi‡¨¯©C!,·“ðñj§ÈŪ—>‰üv+»¯a_ãŒZåƒX=1DxÛ#*XÑôoå""6ØÂ’:3‹Ð¾&…à Þ?ËøRó|傳åA«e®ú¾4ÞŒÄßü¯“¢é9öñð3i¯½À$ŒtŠQžžÖIlQÔ-=Ànå#/øÜ“˜šâaIAò7Æ,ã´3Û?Ó¦NëàmŠìêºúežYÓ^.#/aD¢k{©ˆ¦c†s©ß4X'â(#éÒqºm}âkCeû0å:Ö‘àóáK›²Y’x½ötÕ,»=Z¸w¬h?ÊPñ+™àEعìÿi舩ãcdCÝËWóIì3‹³ˆï@¯èk¹;ì} ÆUÖ‹@ŸÑ;ùv¼ÐJú‰Âˆ#*ðÁîf’£|¾ixÍýNõl%@!0!òåªÿòÿñå³Ôößèï†xìü”¡£=¤?99ÀCõú[o£r2—ñâª;C†Â5UF`„‡¹fw_7áƒâò‹à#,èðýJ½¾íE8döŸÑ¯ç¼€3D\&V¢`SœÙ°bÎßÍÖuâ÷k‰@¢mµÊ¡U—´6ôHGåÀne!ë×ú¿Ô”ÈÚ¡^G•ÚÄÞô?Û«òÊÁA;ìc€Ò&&÷Ù µCÈO9—ࡲp¶ ò–oT#/@HÏ`T¯ªŒyÛLtÂcãpv#/Š;:d÷ÁGýVŽqÕô?3KDmÊÍø÷\:_¤Š>`õ@À£*§Í˜ê6]b àÎ÷¢1Ìû€äuÍäò}j‡üë;à$ËÑØYgô\±ª(O±â{ß?¿„‚ÑÑÊõ½DÝú#/r¾ïؾÎQlÍ•Á¬:—bä!Çoh¼QÛÓ¦ÞÇjø¹hËÕ;/wó{¼Ø"øNZ²XêþË×7Vçým;å-5}ùLjºZXu@#íQ ØdUë…Ûv™ÀVÉ~§Ž±îe´Zˆv*b`Bn¬ÙŽSÒÅÊ3QÚmr‹MGȽKŹSDÅ&$Û¥÷*ãCŽ™ÄÏRNº¿Æv¾†ú¾Y/)ãI¿°›²Ý„a ˜tÙÛ8~¦"ð«à£vpȶO. Rå½óMÐì:¦Âøðú^üãcŽ.z@šÙ±Øºm`†âÿE°+”¥ñzÚo8”¾04¶ÁU.Šƒ‚ŒíT$bù–M¡²¶6Å%¦KŸ—Šxâ#,{`‚G!Å:?#,cóȺ¾3à å/¨îtËôÎS,Óf^Z(Û¾S™Oe;·ÅÔyÓJJ”bh©š47 ¡’0IʵžIË^Z轕²k‰( UaVDp'•BÕP[í[hXÏ'¿öªÐ¶‘ÏÏÞS÷ ò^Ý´×Ó>¾Þ©w?õXr#*˜…x‡í³Íïi韬Ùz:ŒEƒMÍžþâCB<Û½z‹Yø¼šbçå_Šž;—ýú¨¿.÷YáwúkÄÜm_³j²áÔøKmGä¥m³—‡u_–øRR/û»f2þ4>çϤÞn19×PëhTg´Ñ–Wœ‹LW*ú¡vÒéÚ³RU#,…I#*.#,ßaSnï+Ó(Ì›òHÂÈìaÙû ³˜En™»®¨¾½qó˜ÞVø5Ú¨ÁÀ R˜„ìc— c¢ð¾Éð£g8/•ÒC)¾õË€ñ¸<;£È £)×½˜t*‡æÁ¿vðÇÝððÒÀ})ö}éÙámñTwçè—|Eâ\Ýw^#,8Íw£¢ëƒ»Ä4&æÛЧzìb#*NšUü‘æ}T†»&‹ô–ÒÜ¡rÈ;!~íAs@q©üz>#*?ýâ2™ ÊÍÖŒô¾)NIøêQêLö¡Á#/BÙÍw°Œ¿}äèÂ_-@° ¿"³ì+ªA‘8 qp;] ‰VìÜS˹òãÊ=÷_×´´kMÅkþ\ð¾;ððìÅÒ?HÔ/98j‰Ÿ3Îï!¶#*°&÷¿‡ožo}† ¾MëÚb¦M4ÐXɲ+Þ…ª~i'uôÀôF6c¸÷KÛáíìïÂ[¤ÑNg¦p—pöᤆî€Óæ&ôÙèG:ÞïíÊÌJ4þÿâ‡=¼n#žb÷2î-+‘Õú@Á†´XÂ’U"ë fbj«§å8Cdn¬™^&4‡ÞŠâJ„åpâ=,+!»ž#´Ð‘b©µ¹Y.«$yyÄb…ëÑÑ0È›õ¬FZ’è€ê{®`Ó°»œ¨Ñ®L…«ör£õÏn2£‘b‹0î<ˆ„ŒŠ}?Ëçÿ\{ßñü|tz¿¯ûëWÄ#È€g[8ÿ§z‡ø¬[Þ?!ôåYB) à#,Žw²n%„|Š(¼Óù£?gqÕmF£Yý¶Y#*j#ù‹ÆOËò®ç@$PÉ”‘<åŠ?f¼»»_óø þÿëþGÄn!ü‡‚j#,-èIoÏýf[ÑUUaÿ9èb7Sý€û4¬à“o¶€rÜð2 HpäLÃgIüÀuìÚ=òovMž¹Ã`~У6ã|‰G5#M!%"F(Dcþ4þ»/ Ý®jt7*}¦YØ’Kàí‰)u¹´ƒ#*ðÌ7Û«µ»pUâ0xCÒB|’Á:è!7-àn‘ŽÂ‚A¤kès;éDzÐ}¬pàè,v$kp÷o€á#,aáƒàð¼Éì7€ÜÎç¯Ip'HN{#,!‰è¨oTÈ”ÔÌó3!©•³?¸Øï8ýM€½"%JÆJ¥j©TjŠl;3`:¨5#,äg&€N#*=ðuòdj¨ònaÄ*Â|žgì>ßáJû«·ø§#*³bRˆhß9ñ燗3Êd(èê5ÙE¾ã¦„ó-'B„ à\Ë»èq¾vᆸГßÓ7äÃ’Ï.g=ÄõT«”TeƦj›MÞÝžPk"ÔL!ÍA†°ÄB1ˆp¥ƒ4´X8!±†ü#*Ê;FŽ†kš7aHgƒ1(Ì°®*ó¸¼Atx8 ±b‹Q!Ï”± ;x$<y£!’Ý{–$€„©0µ©D &·f"Éö¤Þ7"x‚ŸzýeΟr7³‡§ÍÍɲÂBÚ»¹ÚÉغ/]î—"~øFÎ]±7ÕîîõÔYž‹;7¨T8§¡Å (¨~¡=L&ž§!l'*¨†jlŲAƒ®ÆãBÍ«Lm“V‰T‚¨d)C´—`Q‹Ã¨I¹eïO–UÛ[¹n$Jÿ)·&D—•þGôÿ«íoi-™£F±¬oáÞ÷X^kÙÈi»£uÕý맕–ýŸÅq‡Ô*IòÚŒø"1®í»<ä¼ïïïŒ#*∂ôÞPjlyéÃ×4#*Ái¤™Àœ¿¯©¿ÒX|z^¦ª±Xˆ<¦Œÿ#Ç‘cÄ8ÞH-ÍzÂË¡sPýÄ688:šÆÚ ‚+VBGŠpŒ=«Ý[W'#*½´d<ÇÆlÿ¨»ü^$Ñìg†–#,å ©c|¨e{B†ç 'AÄaÄÓ-¡ÉÇR0ÞpŒIÂÐ,; Àr'ÚþÂ) µW©ìëˆÃðF†˜ÀÙ"Tþ’›r"hÈ<HÆf,@ϱå#/#Aïê²1»òðñÀÍÈš—‚A -Æ96·vÛ°\ü¤(ß íå*`ïWâb W`œð±€dÛ3ô^%·kfûdÈkK&÷ïãúoK#/«_–:·‘pèã!ÌßYa63>EÀÞMHé7ÀÄÖdòKò'KÁÊD¨®ÿ$]c°ÎÇ_F«›:2«ßV®1ûáƒYÒsž%ç¬XóÅä’:zß“¶O|²O=2Ý¿ yvJ8r‹T˜¤Ñìnµ¼›»ïºqÅ(tèç¦i髹…8gk0›wŒé˜I±Ää®»5mÝ#ìôu†NxG@]¶—ÖwÐcôVñ×6»_3…õ“Š;Š80¢8«Œ6ñzw~Þ‚ª÷räi¿qê3G·/5§³Ýž§¯PÄNƒ´7œižA0CYàÝ^.fæ@¬šæÃ'P ðþš¦ŠÛÝêö\ÔNÍî´ä\%™ÜYšXÐ:|° ’ºôÉ#,}<wgßÝÏÓÇ_"BíB÷)Gc;hhÃUÔèã»#/.GG²:ÖÃ{@#ÜåÓ¹[9¾Ø§{Ç™ŽŠ#,eA*&”Ìì§Z±aõ!ÁÖÞ‘ŽÃg a’›‚0¢¼Ög@˜i^a–Ô-ƒwníŒ>z›$ÈÉ-x¢@,8ÐCH\œ{YÀc‘<}½‘ïH¢ã£è,ós…&»ÂøÑ µ–)Ǹò´©Ê=|PuhžgAf.šHN±Ì¢uQ/e\ÍAëö¯GˆX“A5š8%€€=†À7B8x£Â99Ö-~Ú¼¾3Œç*‘p…*hÒS·U‚ˆ08úÃ%ï–¶ÃJT‘ƒ“w:Mz[®Ñ2¹r¯/σ’ööÛ’÷aˆö÷÷uÐ;Ù£ñNz1Cžá·“ð4º@ø`À¨ðvä\‹tlLˆæ;l ¬è[–ê…0í(*º]cÃ#2´6¢¦É¨:¿‚ª#±ä#/Oa¶)DÚoß™6–,rS¥²YÚ&ð¤vŒ»„SrÄ›ú¾;·“Q9I,3‹Ç…©´2Pe›{1MÚrâ,`z{L™æXì#E¥<½|«”Ù‚Î]ýЇ©fó³L6cÔÖ.rJ‚É#*`ŠJdVoå®ÅïXHcxUš¦–Þ©»K¦–TqI„…ˆÉ¨wNþ„`ú™9+[Õø5rÔm“ABòùºî‚;a0jCkŽ± ¨$ˆqÔèÔMzIÅœŽrŽ§öQMìëƒâ#,‡Ä‚ù4ÎËߢͷÜ|µÍ\îDÊÆJh5¤æÂTIÔ£¡é4£³”9a-:¹À€Lpçïš™‚Qí#/fbTÎdË™™™clƲ¬Ë3$•c¶gšç½[rüñÅ$PÙ«…äÖÖ©ÈdÁú¥Leq¼*èf&_>ºvÖnMœ#,À퀽Ä6O8<òËrLðié÷ˆ•»Û®ôxÒŒhlÔ„]{@mx¨>Ù>9z§geº8ÄT³:ð¸:O"Œf°&Áœ•ÅØÊ4ë«jI…"fB´ˆ miÇÎN¶W¨6Èé›°Ãü–p4ÉÓ”eÞD)vz‚öß®dÕÙÂX>P:|û%ÜbÁ@J¢„—T²Å¢¢"^%œ´˜]ûo1h+wn™|¶é{PÖ£ ‘´¸…›5;$·%ôæ“c[6û¾v˺Î!Ô9kOæZ¡TCQÔ˳¯§¬5“NIã1¦ŠPQ¸—¸Ýn“ý Ž“~ôTU£~…y‰ËR#*pª¦,Û#£öû(ÿyàÐzè#*òؤœo#,cS#,΂ÝüŠ¨b2 Ó‡`jž)d#,HDrßÐ\!2h±O쨖‚¯‚H4må,dAváiO©ºÓS˜·|‹orbÌ<rúQÐݵG(tÕ˜wà:`s‰ÀMé,˜d!üV(Õ¶ËzÔ5ÖwØ:”„€Ž_‘“´¹ÔbΪ:5©5·KÜ#,ÚâÄ$%Áȉ¯]ªVØòË—"ËuÕÎØØjå§ð"è^O´¦0Z;69ê‰Þ¸â¼#,®†lÚѺ̪µBZ&žP“!Ø*ƶÍÆÚ0m#,fiìÑŠP…œÿ³ùaž#*çÚÜD.…áÓM‡b\Ô uà™ IÍ“ïrØ1–/+ï(“©ÕT™B=Yì–c¤ÍAãÀânWˆ÷¢H‹BŒ2xœDœbGÁ.ÉsÉ0wO€ÍtJ(oäÝÆþQ¸HÈâqkkªL;$†6öEíF¸#,Y‚3EÒ"¿§¡C~DÒ‘ƒ¥’BgÂYÖ1F0¦Æ³ˆ¼<#*LYV õ7Õ3Þ¢ÝÈz`E*Od5lÃv±£Ñæ¸7]ÃœM¹»É»Ñ„ ƒÐìc¡Ø5ÇH(Ô#,°a!S©,nRP÷ÙÛELu©¶ŒdS3 #*c$†' ÐTÕnS³àÂw2šT#*ÂkQÔ¸$Ic"9aMVÉŒÄdÅÙœæøfÐÑÙE׫݉iˆfš‚›…·;ýÈÁXC¬ÎˆÔ¼ÛŽÐ5Ñ ûWJwxÒ’½À´!ñ|‚Ügäp‰S²@‡û²`vˆ ‘,‚ŠEˆŒäÌ¢jÞ%ÐóœÇC!ÑŠÍî 3@<!±6â±:o̦ø}ïqë†[˜¬ƒmêvVö0ç¯È$Ödk)ll^¢#@“©÷x]¹Öñ#/x=R=H#KpaÏ9ؾò[q\ ¤Sç¹'¥ûîkƒ²ògÓQa²§ªž\ûyn¼7R¾\=û/(´x°HA$aç—€w‡ÇÒèlÍÍ0‚¡Ò7ÜÞ7ÒÄDš¢%:øÏÜÛ3ÊWí|:æñyË3d$yêh21à÷#,·bþQ@o $Ý,«$’À%¸n¨ G¬±¦¶0 °~îÓƒ¼€rgýý†vºÈÌ/N(¦‡×rý§¬ 4|™„ÝD´§oû(Ê欮é5â‡\\Ç;úiª,‰„pjnO×?•¹ëÏák¾Ð}ü;l—ZÄÏ0ý^†d`Pô®ûÓœ{䮿M5XßÔèPPKBnI;C³í|×5îßìü?í_äÒ‘ÓléÝö]†ÿ†YÎÇ€Þûü;óØ¡¬ ô‹`¢ÄFÉEòû»¤´qþ8ßÒ3y™™gçGÙB°ƒÄÐ\`»¦éRä`vèy¨õíO8 #/QÈóãýÏ`ˆ{¢†¡OtAb¤,Ph§Þ|~/wDõópV:⟧ߋ/‡þ¸~o÷³þ_§TµùâÕ‘—el6i[ý_aÖ…Q‚Á'ÌTETBO#Ûê>Â#/ø#*è.¤J-™²J4í«ü¶Û:û;½xõP2}xuÙüì\Ž„öP³kþû—áÕüšRbÙVdªiGA!ŸÕ¡Œ`@9#,<6lŒKÉmÀilmA&+ßP}*ˆû>p€,‘B8¥Wd¡EQT°”]{0c¿·‘Ì’º \î„„”^±~iŠJ<¬©ûÌùä‹v©E2$HZÔ€¶@ÀÛH ZƒèOûÜì¾4tÙS.«ÄÑòÁYMtC[UDßÔx¡L)¤Q#/a3B·ùr¯ÌU-#,.S›sH81T”JB Õ ÈtWé‘é! „;çóD‰,:©X}S×.SA¤(±‚…ÁSZ;Tˆ(qPäf@>H‰ì¤9ŒA$‚ª@:‡Š°>|/À5’}h,Ó¿lm¦½wª+x’QkB1JvºÜfwV.ŠL>‡#,/o~õ½o40TH¢ÄH^Ó’T¬š¤Í’7(ÀÿƒtE²û;Îò•“•9|l~Ès6DFÛ#,¼$$êæn&Ú¡æN«R܉éŒ%ûXÑUÙæ£h„/H¤=F‡XK"?e>¸I›*|HTp€›ÉA ¸àjÞšï{Ä€„bùÁ¯ñ²Ê}»W€KhÀvçÖ#n|¹l{Z+ç €¯˜Ç©ã(Ä #*46ôÌž`ŒU}JÆÕËERÒY´©(£é!ÜG#/Ù#*þXŠ,Šˆ%EID#*„‘ElG"âP Ý YV*p2âüCž~I'ªÜí¾ÉSXDáõ=šÙK÷ÄQnA´£>àVVÚÐ<R±:Ô#,a¬TÒ0r"d&&"HG¨Æ§Ò4Í¿¦ÉW¦/è·.¤’-êîÞ=*¹^¦åêoìM£ˆ´ÆRFX+üö¥YƒÈÈ7 £Q€Æ „ˆo,”rJÀ´R„‚º”ÏéÏŒ 0jfÛM¦þŽúflƒ@› ×i~ ÙتÀ ì‹’#,?¦RØ2Źž'ˆŠ¨+Àö>AÌžÌ/Çå?£'oÞW&ÚV’ç}TH÷²2ÈQÇÓñÎG±Ó§±_;Ñäg·õU±bÆ„cŠ0Y„o™ã˜b9_xغJŽ;Ÿ§¢ŸO]yxó^‚ûï‰àð[òCä•$…ó¹Y›cÿåÚZøO–ù«oúiì87Š™°MQ#*i*2€ Y]y#eµê°ÈÀ‰È‰Ÿ¿½6}7Ù$CGõ¯N»»ê‰Ò=ŸjÝê ëùÊ ÙTòjíiy鯰·¯f#,Ý“ÑBæKÚî.Ø"Êp!Ly×H’fC&ºn´p2AVb†4¶†›¨G{¡‚šRÉq¸L.¥ˆ‚D2ì°vŽþ-ÁëÃÇ+U‡å1rÝ‚œ«²hþÿ¦n㿇¼¥Ên#,"BiÇ£Îm·R{ÃÆ'¼,6ìãrG˜ï«UX.qÅï’â‹À.u“¯}¤„³Ëµµ‡èÝ>DXD‘DT>!ëÐ÷ÉßáL‘`¿×D˜aüžž`„óåÕTÓ&Ìíÿ‰'D’³t},ÃÏ#,GŸšç¦K%Y!·ñƒQš6ÎË÷nø›c–P[3ÐçwLU:> ÒÌ?™$Ÿ§çÞ EÕ5MWgÐ:÷§QâÑE£¬ØžšMT½|ç™ÈQê€H‚4#,j¯ºB#¸Ùš…#H‘ôóG™#”’¾%'Dl\ªV©i…E™\juód'mcÅS؉Çî’¢6ÄØ3ï¿gà³’¦ºbYϸÕsâ#Ãdžœ+@ðÓãî;c%U:º¯ËGNeç»Îi;v5¡û*÷¡B@K𠪀yv-)Q_ˇ»ˆFšÆÚ¶ÉZ²A³V4“eTdÚ+--«J¤´ÚÅiš¬Œ@„c#*K#*ZEª1€ ÒqI8ÏœåoªTœáÃh‰ä‡ ŠDóĨ"Œ‚½6· l#*À Žaïl‰J‡ÍþÔ×ÄÜöxÙ»hƒ\ØhŸÃ.d(`<46:â¨æ¢#,Bí80bÉ‹ e<AàU–E.mˆ …`æÁIN™&™×+ò„¼«ž»Ñ`‰DC7 l“C%hâ¡+-–š?®ævÈÈ¥m6¡‘0°@WЬnÃ#*LH¹-*òè{ÖêÁU:â¨#$Š2#*Š©³j¥*– $€»Q^^|Ô3ÚÃ|¹JŨ¢!líiÄÝqL™–7@€Éˆ”ŒÊ„#,ˆ’ M¾7‡·¤SÙä=™DÙ*F#*¡UJoU6oãL@T HÏ€…xãZDá #*‘‰$YG~jæ±mŠÕ͹ͮi•#/h¦h¶f#,EI(ÓH °Y÷æ~Sɬvl©xtÌÔ¡¹xÂ@#*!‘rNõ6 s¾¾/Ÿpý÷¾ïQøü1nTj°†p´no–ÐÍÅÂ&ïš+™õÈ<#/óâv©Ýv¥PÔ÷ÄÖà2¤8Z|d=§åîü¿—íþ/¿ÇüÝ°Ù«YdPò‰#å8eD «æb#*YÝê³Á/#/„bª*¤0ÀÝém¼ß›áÚÙeüÑl¨WL×#*Ù*,a=UTšŸS•áÇ3Ìððî³I7@ÔèÒ…à&ÉÿT]yÒåô“á¼}Ùk̨#/Ÿ[?®´:«C®™Ñ_¤#,³–m|[l½ZÈe1Fø¤:ˆ[û)9ôNÝçó¯*?U»`B&Œ@„ÃM(…E÷úÎC#/AéãŽíÙ‚xÉÒÛ¨…:Aû% J©ÀÛàÿFOiھ͡±Q›Áÿ<Ü.W x)™#,ýæÚGlØ(,ƒp±Àj!E10šÒíŒ&þ—¡:YÓõÑÚWfìÉ,.ÈôÌÐ!Ò3šƒWAÏnvÙwì΃(h¹AìÂ5«ÅÔõL»Û½ü°9!Ðéõºµ88¾ºÅ¶–QW(•;%ç\×®¸ë|>YL’ª„šÒlŸ¥²‚dJ-ŸššÄCòuV¡ç¢:Í!¦~¿KK§Òq Ó™ÕpÖmÔ û6ù‹ÑŒ¹ÿUÍ£zÔ_ð «³¯¨ yr6ê]˜-Ëí¶ôƒ‹³§T)DÝ«™i\2™õAÄ¥Ä9¼xQ†_Âñd¶pcú¦!öó·ŠÐÉÜ&ήðÛ˜²¨q«œ9k%–0ªq¯ö3{ÙÇ<oZ\ˆ(Ñ`È#/¶žHêÊâ㙈Åh]ïv“°CÌ@ ÁU=m&«R¡ë0y¨ñPM†ãÓàü8nØ0Æ”´8iÄåYŠíþæ¢Ò$!gùÏèïĨA«)¢¨¨4£QX>Ô³ïèyßÌI±ömÝÚîR‹ÖéQBôzSDp"¦jQXž¬Ð'WRyºûúöw&jiŒÅëy¿|ƒŽ°$*pGäÑLXÜ’“ÕÒÀ€FR#²AÐÏÐñâUWMeèáUÔXXXiœèèrø|Wû&œ(˯@¹F1¬ýzÎÆòäjzÜ#,(éZNÅM#™5ì}‡G[ï×^Ëà¸bæ 0á±Î·8Ä@m‹xh¿å½Cí‹Ã2†!ÄX‡’Øð¸.¬±_A`eíÇ+î€#%KMà‚å.L4ü7ÇG"cB’}E®‘hP¡Ú_¥×æ,4°tLM‘“Bœ«®r YÅcWhmbðI@#/ÔFùx$ã“äqÑ0ÜÁâµÑäôuå[qÓµv\ôòæ#¶¹åpçqF;jÌt,ß0ëf¡·U˜U)°.iœíÃí®:G!;í<ÖU6ø3CÑÑr£Ãaºt¾¢ëÛž>ʉl7<Ï2AËE’r –ô¨FNL^ç[:òk;PhÕÃg#,óØ+ÙÜìØÁ»ôű©·|ûE©ÚŒLÐ(+«vP鱆<{¯ÊßÚà•^«š Gƈ£p9#/äæfÓ3‹èN·QälÊÄ0(õ4|¾XœØué¼ûqÀb쇈6âõ`»XAÏ+†ÞêÚn×ÝÑs>ÜÄßÞÓœÝãEwoz‰åê}0ý§Èúy%Oçtêp#*„¾”F}"(ReÕõÞ/´?BYžP;K².…‘áR±ÒW~;Ô»'˜=…ùxÍZ¸ ZÖLê>¸té“#%ƒØº<#fH<HE^ŒwqžpÁ‹lýpCó‚§-•ólÿ™ffÓn„ߨ”ZÏÔ#Höág3×-ªƒP‚€‘Ýˈæ5ãt=¡ªætì>šÌª#*Û¯CY½³ÆâöŽéÃN6±Þ÷í0˜7Är¹¬…Ð6m ¯©“µ¹5ÊèqÙƽ<#,®ò›\í¡Ñ&ÌyøÜ”&7sžÊ[÷9èy”*²ƒ&ç%:ò"ÕT©b‚DÀqÞqè}›õä0ÅÜ73¢¡!ëµuH°ˆŒvi¢²YTÝPžêÆ'¿ß¹Q芔zøorg" †&=ÆA@šž9Ð#,Ÿuõ¬BìS"cŒ`«Ã‡¼–€G)”qÛ·û8+fºÁçêÇ©·ÁÅÅ“È¢Y#/8<»Uä•Ñ¤! ”GuÜ0]ÍÖ7Rv‰=ŸöÉ$‹âÎìR,÷¢¥„:¤:ÔѼÔÔ¹ù÷ùÄ¿~¦¡´Ç4ä®k©}9büš\‹yÅsã¯FU`ÂâÀ›#,‡@þOVÍ¢·«§ZóÛP ¾!ÓNŸfMumP9èMiÈ;dí¥j Ð:Òs”D/$Ž»%‹U-4+UÕ\Æ–F†l•®—6@wWRénä\–5 ƒ"øÚëÖ©!PdaÚ#/á`¨ÈX«$ˆ!¡J"(!¥ÜïÝbØд–ÅA*;>=¶V4Q#*HA"°À:7Q×Áµ$hjkÌ3j”¤Ö´TáÃptçÇó¯VÂÃçÎÐÖgÑ‹Óæ#/_Ÿ”ùó÷“Z6§f={“î<”JTAðõZ©€m%Êé`dÚévKê!êa '¾ÇD3ÛB#/ "$…àêP:aUï·d^3ó•GÆŸkÖ™»•ÖŒ’?‰s7ÂA…öQ2"ftÀLO'P¸ÓYF?Š¤ƒÃÂR»@s[)ŒpT5›B°+)#/gvàbXk#/ e3,5ÑóW©)³n7^ÑVšÛ±<t€Íû#,a2@ût¬°* ¤6•#Q-Ƴ{@ªÇK´öi¦®[O-¢w¡æ„ú`éòü;ô-ïq"·§†xnëFµÍpœ‚ˆ€¢"T¥°…T)vÖí‚¢ˆYb%,@ #R"–K>fí'5mŠf©à,Ãé@6xÌC𧻂&y#/6â‹ ))¡$B#/C\Cè&QBN¿&ô#,Q]Ÿ§G_„æ¼pÉ!1ßÄ:ó®Õ…´ ³æÓûþ†ÄE56Æç]7€dÁå†àtŒö>ËÑ°Ò§‘_ƒ™¯%¹2ÒÓ-5ŒmµÌÚªªPcÔLÂLÉ“#*ÕÔ¦„ã›<¿èÖG5âÐÏ)ÖîNÉØËióổµ[Q˜Ò¡æÃK@¦€PH;˜Ó|Úí‚ž#,I™].½Õ!„–²r6I¡¬@DPE=í¨Z3䄪£EýÜܽ‰âü¢OU¹›!¶¨õ>ÞÇ£.eW˜#,ý&ù*M§÷¹²ƒàÏííáöã¡ÁÑ7±b,(mÛEŒuÆ™òפg/ÎXíñU’5äÍ•N›ôàN}EQ(æQ8dã· ‡¿ŒÔæ“ä4&š;!d2¨êF¼»s€ <ÕÌŒ'¯™À|lêœÃ<}—½¯ ´݅$¨R3¬mFõØëyêúM¶ðŠáÌåܹÂ8)ʦÜ$fœÆá¤RX‚àœ´ßš¨Ç÷ó«aÛI0cüºç°Å¬e'_“ƒ)&ÛÜ[®l#/̉k—dZÜ4›¨lñÆ…$$ Í#,†¼jU#,$CëÒ2¤a2u!ó ŽPàˆ<‡³P5¡B^jÓ¡.rð¨#/,2<²Dâÿ'7»+Ø|8ÃãDAfx!¨ ]gr¼‡2Ê=@+ E×ÒVb 낶òÕ×Õºï1Ù•œ6×_µè#/#©€V¡äàliƒ"a¡BÒ¹èEÜK».BqÂn]ÙPÜ0ª„¾¤ƒÆÒòi±"›Ð`” 6Æ1°"wœµ¥s…X#,,[©MD2–çVß+«¶Þz¢‹(ÜaK©K;î·dy'9s_f/ËåÔ‰÷{jóÕ’6‹lJS>,’î1YÒq°§tµR}à¶;Ã^Þ,õ[èh"‡³l)(‘›oJ…A-¥9>“H®–0›€ý–üðdG‹'‚cw>SêÅ>óÕ 4&IƒV|wu@#ÜÜýD—Ð’ÉZhAòæ¦W7qÙ™¸ù9&ð${`î±®Ì-"K\d6s>7rÉ.0åYB¹Sá#/ÝEÆ‘ÒêÒÛ<8"Ÿw¿M>ßd'Ì“I=Þ‰¹Ë¼ýÉ0Ó¤\öוýÝ„`Š4åÔØ•!ËrÇôu³Ò'Y;x‡#/0ZMŠ("•TŠ0dÛìð?ˆÈ¬‹"1€š—¤‰¡R#[§»c¾þÝÉ›¿Qöb_´Î.Þs}íý\Lmç»ætì¾gžªŠI>J‰žo#eBdˆ3àŠN³}^דÑfÊc˜>½MÿÜ~Ö¥SB˜N¶Pˆªim¾¶ôx×_¼¯ÎØÕLþ6D¢R6Ú,dEº”Ɔaßæ³8-šèL¤VbÄQE0’”£!B2]ƒÂÕÒffN~–x”+%$Š$ÿ:%è¾3ì¶00\ bšäˆÅ‰<ƒ¥Ï¤äd@„Ë¥«RVuk@ô¦ëô4÷+a¤¬»›Ð&jƒ¼Y~Î Áõ¤¨ŒU¤gBB6Æ‹ðúhÃ#*ˆžV˜ÿD{ˆi‰o&¢‡d<4T#–V‡†RŽñ#/MP“ÄÌÀ R½<¥UMÅCch,#Ô£dëÎN3k(lÔ•ÇZ¦€ò1ï”ƯéˆQ‡#F#ì…8m&ë•öGka¶²Ž=xÉ#X°3ç‚Ë“Æ<Ù´Sr$ª£¡QìsFƒ…Œ_&ýŸÉ<ØÖ„FÏ|Hšì›ÅåÖ´|þv%ŒÎ ê˜kSZÏ8›h ±“]-0-f“KbŠhÓ‘Ü05‰‘ŠJÖ?f“Ó4`KXR*B4Ô±ÐüÞ4l}5ÅQœ0°>×é êÖØxfk#/QÁ5éÔ´Ôj‡±y2·BFN´'HmcæÈÔ„ôçyÚõ4©¬±²ÀÆ7#,¹Èg:üÓE=‘F,憬ÂSGK*Ó¡gQ‰#€ÛìѹÃÞPFÊuªF¥þgˆæ«z«Bw;9)Ùlœ—X½áä•^®Uwn…1áÔÄÓª—§×Š#/.0°Ñ¯ùùŽkðn7Ôºö¸¥J‰.<¹9t‚¢âN×Ñ«Û&5¾×£Œ.ðÎÈçq!*w~ŒÄXÚ£cü°tá‚;ïÏPËY»YÈ¥¢› ½ÕõM«åkz·Kî¹.jke$ !‡R¹ÃWÊÒ˜7Ñ—%tnŽKQ^#/(4”¾ ÃFÎ…øüBh±F…¶ŽÐ¼èÅMõ§ &‰–SBRkFæƒ)&¢S#,ØhÁ‚\#,#–#,.]ËÞ,Äû0‡wIàãm.[¼Rs:èÎå™+IÁ‘’)Pv0ËC"É,Í%T´7CGƒD&Œˆ*ÃCvØttˆGOÚoósË|C;Ÿ(¾qºº•&g•(uÓX‚’Ë‘{ê,ÔcR1»˜½Þ®#/‰ÓB—´|‘¶z‘¸Ã¯~|6¶3§d^µÏèB©Á<#/ÀˆsEÉ$¥ÖN8r(‰TÁ($6Ca79 @Õz6—þŒ`]Žvlç#,zSÂÊR“H,)¾8óå’ƒ‘Ü[€`±ÎÒ8%B¢4D:bŽ²!"ï26øxî6…Ù”KÆñ9³ÓYè&Ókhca7™–Îowc•!ÕÀoõ_‚Çch™ÖÖ–jÖnkæã]›ÖvQv%#§=°k|9ñiËÃ0PQDÑ6ò¶@”Hû›kåTm˜A+⪬ÁDÛôÙ±>¢#/B-Ìkó–Ü\°[>}ñ—9¸ck‡Œ½IÍh×7füß}©aÍ-ë„ؖû‚!†™m‘€ëñlÎww(1T£G7¶LTañ%˜B8_ˆS¼;ÍÙnÈþê&/¦D¿y¿N“,ìvt#, 6€)ÅŽÓg»Ë¨zÂ{w8œ0Âây¢,EFÌìzD´ ¨¹[%ð°IŒû½Ô±X[ØÜ@ ŽmÍm¬Ü•¦ ¹1£¦I#˜„jšÐ„P¡SÏ¥FŸBüuJšD€c<sM†Îœ(#,b Û1T‚4ÙÄ2 BôK6>5¥Ã4L#/¹Å#,ûøk#*8J/pŒà¡¿^€!ƒð°ÛðouDƒkÐ~ÿÁªf¯!wJ¾ß«_6gæ÷Dü”Œè€š3jÙžÚ×ßj¥ï›Œk‡d?Š76MÚ—ÂheñkµXÑ€,Ãuøª‡9#sÙQ¼_Àäe¢™™zv™t‘~)s@ÊSƒ¤ÉfeÅebÛÎnüÝÏÝg‹#* H¢-ÎÙ×` ¾™ç§©ùÀ„!(Tկ̹âÛ¢j5j6×E·+m±µkF«úëm¼kolkUg]iu»[龟#,xyÜOE¨ˆ†^-bˆÛ»*1#/‡šàì¾Ð[YvPø ?aóï<ƒsÂÂ÷¿dûñºm«~XÌD#ˆ%)2S1š¥,Ì•”¦˜¤Ú¤ËIúÝIL6´„ Š‰¥L›4DÀ¢Úh×ÓÛ˜d©1d”JR¶hS&&i™)Ti‰¥Kèî #bÈÐ ¦4’’Ë#,PLš*©QE"˜EcÉZQ²ØÙ L’ Ó)°e*3Y ¦VLÙ‘½ïwÕ_ZsÕÊžD9^YSzó)eB 29˜Ù¦a7åciŠê]¢^Mßfcú÷_gôë+Hqågž¬›f*\ˆÇÀä¶&°²ÀKJŽÝÖMN³†MàºÏ¿pS(hÆô–à3µ.ÁGVg>£XvoFïCEF£?-–LOSŽ!ð…ËŠH8#*>M‚™—m3³F}‰e»Z™ïŸàN™Áž¶’§§ësdRÄáÇ7“úDäcÓæö¤œ¨°ZÝK^î;$Òm°ÆR·#U²8†¹#/u.\€ƒ‘¥ƒ®,„$dFÚ#,#R²kˆÙ•™F(ªŠ"$Og{:×|Áà&&fh¿eRã&DW)¾SOÁ¦²4í-ÔM&/–™_<Ò³ä;Z>ÓZG¬©‹S%™”IÈῧ-M?Uu;rö;W¡éù‰íi•#]9ì( #/FXL Evì<ÝIóÚ¿ZCªxçmG")’êAÉ#/—ØÆ‹Á>!µC—Áx_âýPÑ7&š'LpKrÅ%Œˆ»r>-õ¢÷rºÁŒøI*U‡Y¤Hb Ø#*›#<äÒ3äÇêñýx=™‡ÔþßµÖúýÖ>k§¬ÙÖ!Œ¼~ª«Ï‚"b8(ܶâ°hÜž$°™húz댜yÞϯ^®%;ýoüÁ¦ƒ³M›1i¥¥ð‹MašƒÆaG–e´Ûµ8ØÌ{ÙÙ¬j߬÷Å<OºvÉ‹îmNʽIe©ídÚ›»®Xã;o°‡V9CV’@¶ö’,7ÕÆé‡m ‹ “ic³4X¸=·œëo·æüàÚ÷l9Á‹PK¢ÊÒwO/¨íã²ùÌiË~ÄOÊ'zt‡ÖΔÅCØ·6iàOy¥o¯4º´#,²max5É5„Ûa? ¡,;b“—O¹ìóªrÞR,½¸ì{ <óá&‘Z)í õ`¯nu="ès|nÚ<Í0!@Œ‹õ#,3Оd]“XšÎNÜUE*7•ûîŒå8#/Þ.ô&%óØÔ½á–ÚH›Qð|Äü°*~÷®j²û:5êž»ü»<y#*r6RE·|IÔU¾N¡=µÛÚo®»W¨°Z>!8}Ÿ]q½ÿQÑi:R$àô¨Ö{|³Ðéva±µ°}”g²_1°]w¢^Uh‡KQÉ檀ĔñDö€"©rPoÛ¥9ï;ÐÕøž3rÕçMkgœ¨à<¼½Øù0܉:„§ðÒ¡lÂS¤x†!¸ãuì.£u#,áÏ—LU5Tn)ýü±ÚKBð$EMnÜP–tÓZfDÔiš“¬“”:2z߇Ä}´›s%×i^ý:"ºŸ¸H@" œ 8•ÁRµi¥#mÿ¥/Ñßc¿®ÆC×éúÏ5Q‡ÛU¿ÁîJºŒÜ+)@<ŸcDtj1GjF8ÞV\ÌÙ1¶dÕD¡•ÂŒk:7¹¬Àm?^31o+ŸllÃnj7Nf>f˜óP×ì„©wwH´úyU.B4"b^ÓÂo,¶c'–R<8s1Ú²io5¬DâdZ.Œ7™3#9Öý™&ð¦ÕÕ“Pçkoœv»²pòweÌ"Ò–ñ?ƒ5£ rq†]50Îlcªtî)º\,@øuCTI¬3>š÷ºD䂉™¨ÔÓ‹IíTbæe –•Df]¨²”& M) ¹$\]Åqˆ”h\^'jk["§acqó§Gìt!åî^ÔšˆÂÑ’ï5½çkÚÍrvìb€èù0BŒâAm‰'bŽ´‘çS ?ƒGjÉž¹¹®œ'—#vØFŽ®ì$!qvaIËÌ&*_3Z8†%_WhmŸ\Ø8©!píµøó€AÇHz7hFág^®±§7Q$i‘Ýé‚uŒ.†ìÀPQú³£Wt«Xd-%ðø440iÕ⩤vFæÆöщ“¶61d>ˆu¡õ#,9*>xï¼Ý¬.eó¿Yáñ¸!9Îvånª¹Œm¨€x¥Õ3Ú~™ŠLi34'ÃMFÅ,îåã„Ë¥®Nx̵â¥ÿ7nb`c@¢~Žù‚“"¢¥àÄ;P›e“e)Ô£38j¥Š ÉQ„&ÂMþ+ϺƒÓþQ¿dbõÆ x‹@ìIÑEç*4˦öaè‰Z»ÆøÖ+y3cs7ÕõSÆûÙØzJHÚœD«±‘vÎÑñ¨]Ýw¿pûôà<ssížç[Ä‹§C}n&9=Û‚ˆOßé'Iñ¡)0±Ã™ãU9ßÈ>q¶pI";ôÚõ[ß5ÉÙ¶´oJf…ľ÷U-|'—Šß/sKtyƽޡ*³’tûÛss9ØlíŒÞÕ(O˜‰åTîžöj‰+#/J….¢“‚\<…ƙՑÖóa#/Áæ7#,w2f£å6“H„#©ÕH3 ðÖÑ·Ù¦l4Aô$ÎÍ3¬Ì09¤1Mª† DÐÈ%q’d‚=ùhˆÎZ]0Áqˆ(2§ì,H¬ º5 јXûé¨"#/—0õII:mÕËø¬ªr`iYݾq![jâ*És-ŽbbT>Îåí#,©‰4€HB,ÊÁsY#c`¨Q¿&NëCÄòaDEº‘òí¦—«¹ª`˜Z¨R¦\Á`NÁÔ¶˜Ø`8CA“wÙI®èy¢JMÄÁ[=`ëD„U2dÜñ+}UlòXéÉ4Iª+Fž7…³¸ŒrûFËtÅ.#,ºÁkKGMéÉcrS^¸Ñ½ÙÓ,™©ÀÄ$lj¦7v„4hIt:h@„4Þ”§ëáš#,æíD•¢-‘f™uÙDÚݯÉÁ-ë!ã*}mßÝ3žÐïf›;Vï8"ógX=é&2ô™á‡&YZ몸Ò+=>UˆVÑy"žv᧬9Y|¸mºbL U±AÐÔz\];æY¡š‰rï)²¦EW<&zár99‹T-JO5Ì,Ì΀ᅫg+m‡lm±xåÄ+æV0êè¶"¸ $3‡ÕÝÞþø¢ñ…t(‚1qM&]9ûÙ.2Ýó™tjFÛpó Ü#5&©_èãFäÙò¾'cdÌ}Ã|GÃXܳK#,c×)Î-tû7+ºÍ7׃{ÈÍãngWZÌ8°¸Mäë&Èûa0êÞ¤ÄÕ2†LÉLïOKTøÃÂB ‡j×OS¢¤…k¤‰O.a0æ7¦²‹‡µ2RTócºÖn1¾vvGC7Û3Nl̬Õo#/Þ˜Ìeô´¬ÜÕ#ϯ5X)xùçŠÍãJaCœËõ&‹s¥DÍEÕU<„Ò¨x“QâËñÃÖÀ¨®"6H<Öļ¥•ÁP_wã‘o„kŒy+m¹ Új8Êàmù<k$#,&¨3 9¶jÉ«ˆÉYÄ#ÆàܺÔÏašÐcÁÌLšÜ£G57V䇧‡á&¨6«zešÌÌÔèi$ÞknmÖfMÛ53—N½Fcelvj˜1<“’‰ÓD¹§MuÖrÈÛ2rÄW^ßU4öÐØ°×¾ÊY7la;5ÛFr³«U>ú¥á°ÙmdëÞ gÃ’5l÷(³² “äRš¹ÃR˜©D¦ÈmÁíñ®Ú9ZãE2ò@ÓŽN7#/ÆÂ1Ã8²˜pr9àâÕÄ#,ªÁû‰Ç8Q£˜!9…Itw‹Rö06"K@J#/hØ”R«’–4ùi#/d†E tÀlV(yaW›I’âIÂolfjWÞÔ±ªÑIÑT3|óÅ$ºhÉ*БåpV1Š‡M‹-UM0ö憆IjË£ODÓj8*ÖÓÙŒ*ížüB£o]s)ÊHìø#/ƒÀ–—¾¨ÕJ’-ž-GTlM»Lõò¹–Ó[¬P¥FÒR•)%kcezÎ,³ m¾Î˜BmÎf7-aa–629'È!¢ÆÙ3-àðàlë#*G†4aäÅRí»èÒ45´=‘t¦ç¡Asɲ‘QŒbõ0„æ(àÑÇàPCvwꎛWg1ÕDžíÊH¢$P8ïuCÁ’ën…i+åØŽ#:1oqGÓ™–d±3š†ÉXñÎ!i4`[d#,zU;0Ê¡É…<i«Hî Ñ›³€#h¹CBh˜ƒÆŠ\‰Q†”¢ÔxU)DÏehÌàIB…ˆæ‚ÝÃz4‘´0!l&î®™©²Jd0±Pxë{³’KH¶8iStÕâÍdI«'6mƧÂI«-‹–M2ÀÑÍÂ?²m&©&÷ÌtG;ùt£[;Ö#¿N$Ò›v¥)G4)yY£’‘¹—&mÐ$#8¡¾E×|`]ê¢YZ—*HnbÁ4ÔgG§!é™rðõÀWH ö0ƒÒÙ‰¶P”½8yÆÙÏ#,Ý.œ<nÕ“´:œ¡á÷]çn…¶‡Ö#hå6Ü-#LÜmWœlÌkJ7sÎËt9¹Á96R³dg4C#8µJ.ô£cèrtÅÕk“™1^%ë§Á”ɵFq[I³‘Æ5“#,—áq×k“L1c€D‚ª/)¡#,³µ °"Ü1±ˆÞÕÎk/)‰Ã¡Þ¶xœwÆ4Êý™0ÄÎ\b‚fwvq5¢ÁT<§µw¾cÖ‡&ù8MÜ®7æ2áÊ¡Õà7:´Á’ÌÈMN¢iŽ^F!7xÀ[Ù6B˜&ÃLŒÁV€Á ,¸`£Œb±#[x¼£‹b óhMw;ÃŒj>º³©Ð§tª6vˆð2e‘Œmµ$`1³„»÷¼~Zæ¹luã¬kÖmד‰þ•HÆwu»PÐ1ìu ¬`³ÞB8±œ|>[À #**vBú†ŽLðÚƒò1TmÀ‡Cu.)lÀrš÷¥YK 0q3$1¹2I¨¦{œÉ `Ê-Ó|¬'°ÕÀ*”DAÎQ`jÄHÌÊÊÑc7nܘ€ßvä†0˜Ê4:b8Bc‚8Aª£¢#~§$(AÝ4f@M¦óc¥ßVqAE&HÁs2ÒFîæ“.S8Éq›Ã\¡#,ÆDLºÅ1Ñ‹ FÃ9²4SlÁdÏ”¨*S»Ž$¶4@5eöJ‡ee°;8nÒ`m«‚èkCfBdê`ÉÉ…ÓRR:#*k¶R9kcŒ%Á†,Õäw€·jI0–ÔV¶pv6L©ii$t4ð¡RU`s†ÕàØÖ“¤¸àM*‚#*d!ÆK-¦fÖ¯â›Iº«;ê»_âI„TMDÔgxîÖPŽQCÉ)D`"5þ³/ÕÀ=¼Ü!Æ-¨ß*ü¿—l»\#,cws;¹$ òª7Ÿ1þ Ì`“šŠ±AÄÞÌtn‘OáGœm„Ò•]B‰p*,Uc"!œd#*È#*Ê»“#/<à´÷e¼Áø×¼ÒÀi°Qc‘ÚÄŸ:9§m[«L>YÍ”}â[#Ÿ/<àý3²ÛI:Bv^æ^[LæàÖe)šÑÆ2ný…´‚È´¥Xs5§×Kn)V«¾ÑÏ-áG9´àÙ³X`ø:Õo× Hø¼ÌÃÉ&âm›ÔÆû@äŵÂQ[Ès´74á„d`ež6œBûÎAÃ6NYe¬ðÆB°ì.Ý>):z`Ñâr*;Ÿãl.ŠKBˆ“´èŽ'aŠDB$‚PGp<öñ¸m“nKDU3n“§7‰åÎëŽï<®]–·ØÅ™m¬šõW.®›^*Õtª\ÐP(l¬‹!œ<`›,7TAø¯žhP;„ÎË«“ãÁ"f&A¹éÔÆÆ>µ¥QØNÇ´ÍÁ hÃfÝog³W€)šâÑ×1ÓïÉzÕ~A#*6ûöƒHz`Tí¨PUWwmÙn»³.nºn¨5sdõÂÈBÇÞÕ0‘Hí5]ôè/±æK*¥ì:ûHî”Çj¨ð#*w¨p‰ú0 !ÍgÌâ‡>•ö^p9î‡2V¤LŒàŠ{Om~µwi ú¬j?¤È»øŸæ3 ír~¦Â‡³Ïöûý§¨áÇp]¤/»ÝÃna®Z¯@Ú´E²Ò¤©W“r©/;u»ÓÏ(ͤˆÞ'Ð72à\ß(cÜ6Í”‰§4˜ìF#/i‰@ŽGÁW#,‚F«QeFŒ'1D%Á‚Ö¶ÄDaåû‡Ÿ‡8°ë#/DJ†±¥{ÈÄ3#*þ$à~ÿ¼,¢ÞD„,{«’ö Äù>?«µøÕjm )5±llZ-hµ“ˆ”6ŒÓ2Ѩ*5±c^5ñ«\ÕÕñ@ xTOzïõðÕZ€{@ï" –ëSnÛõw&A’ð.Ž³¶›#,]¢…EFšX?‹wB"k\" ÄnŠ˜I$ªºj5Êçekã¦íî¶Ü²öZÙÓYnIâë2;’T9'yAŒ^øb»ŸÙNC£ô?L"[sŽK»¬6®ŠSѺàð{h´™ÍõÚÀv G²hÐm°½X¨Ñ쵈˅†òOb‚ug¨i/B`ÙÜòç•Y…µÖG‘¸A¬˜+¸Hó¤}L=§#/°ÒÇb¥ªšƒ1HÉP¼*DT[ƃcb˜*ÒWdÆÌ¥,€ØAŒ…°¤–ɪc%4ªAI”G=Æe"fÆ83ŠîPEbæ÷Â$x,»)áU$‘VµRYFÚLWí¥½ûæ4oQóÇ’vîɘznøÕ`µxãZ_VhÜ$Í11T1¶4>;të‹‘Hdƒ’#‡R—#ÖˆVºR6‘Ôf2†™Ö¡CÛµu@ɽaÊCdœ5*NŒ–$þ„Üa¢ã6tqPƵ5Ô1˜qÈ"Â#*°&r‚ì‰dÈdŒÕ•çF-—ãæäÉ<aÚ1žžâ¦#/1I"ˆ–À«(—AAt¦àÜl}ªK®¡J~$BÖTK6hBðøYvÄ#*ÍU ž”2kþI˜2†>®ðž±^¤™_:1zgU#,j–a²ïòÆX¬e?-*²˜ƒ[èêäaæöpVÑL‹»#/3‡®¹3ð)M9 LRâá:ΧGÚr.C¯8ØŽùðĦ°)wQhÔFŠ¡Ý©7¨6#,a§-»"øZZVÖj(-„Wù7 't9`vhU#/‰¶i!KábÇgØÌ>&ƒS2B¬Hb‰P¬IClor˜ÃÄÖH8 ¤áÈÌæCÃà\D:}÷Á„[øA”Ѥáš`ý]lŒå$Ç#·c¥ìç1¹ÃäÆe²g3Œ,$B>•‰®´ÒðA»Ò²œ-¹x[IH¦SR.†B6¡ÑÍeÁeÚ¸Mæ›%¨è׊.1#J ÏGx¸‡kÈDÔëy¤YÆYÚ·¦4!ìÄ1›#/#/ÄÃõa0Š0Ù Yc¦Œ£vêìa˜h$0Žˆ¥–‘â7B…0ªHC"€…У*#,Ì#*»qY5oX…ˆAVT¹uÈv foàä³6掱MmLÔH¹Küa#*#/ #¸#,›‚ÀcÐuá¨|/z¿æW)§Š,OeðVéDÁ¯Ì0õU€³sÈŸ³:𣥰†k†;úmkC§ótP,LBˆ”z¨¯W†5k±v*Ò^ŽIÁñSA…J%UTj¥1#¼µã_Ò[AmFÆÔZÉ´jÖ-¶T–ÛWíZ–š"ô=êf‡ÑC3ͪòT¬yë°XÓÆ/O®i+]Ãî'}‰ÅÓ£JïDVÎñöóU祔¡¾ýⲿ¼¤Ö#/Ü[AÙ[Äu9V’W"†É½õÓ†³¼J6S=£K#/æaÈ}'Râ–[jS®V›i80Ù&èfVø»–½”£UÒ–1›6m.tìÃI€¶‹¶Uxšpȸx©Š‚6ð’Âæo$Ã8Áá‘å2=Idæn!ÕøšïQŠÊÆÛÞ¯’7•Šiȉ3Ìð͙ۜTÉ•«-&ºÄc¼ç›h4MÊ4m®b˜ßSœn© óǬÓGŒ¬MW>:Íœ;ŽÆ¸DAÇqIÜàOy!ÈO ζñV›”äcP^åP…ª¤Æ&êÙ¦#*ë[t–ÖÅD6Îkj‡©§ÞæTîí©BÉ-2u‡B·Ã¡Ú2ÌìúŒÊÍbp§k’LßVw½xf;œNÕo‹L’jV 2ºT¡6ŽE¤"K´6¬’l±äw$ùT=ÐûS##,“bË#,C˜`¿c?›9L“¢g…n±Q„dMJm/°BùV’Ô]XÖ5µÙTª[›vS-©¤¤hÔ>{}·–•e-0±‘V£#Ga6#,oª&‡d˜X%‚aÀ`@’‹¡Aa‹ÒH,²$BH’@‹"¶5œÆá@J!0`É&J6FÙ-éUÕT¿¹2Øø(=H@‰ŒbµcRAmMwh»-Ò£bîêô“žR²·dŒ‘¸AvAÑÙUmN]zÏ:ínóM5ãn†®Ö[˜ÜÝ“zeÝëºÅwk™›NÓÍ×y•y‘¹¹![©[“Ï+26LBE$HÀ#fSýÚd¤HáÂ4ShÙ¨@ÂÔŸ8‚Ü‚HÀ€“6Ì¥(›+bÖl™JYy]k¥¬RÓ&´°Í›mO»¯§oŸ¯FZ-P`±©‰E&ÕEj„¨¶ÀHŠÂ-ìôyÊÑÉ:u(üãs^ F¸—öëb¨ÖÎA2=AT–ƒÀâÙ`E$ nÄ¢%ŠpTjw#,#*p‚ùâ;Ò!é;ÏeƒÕž'œ„aqקï0 aÛòã!u4#,#,}Æ߯4OŠ&(w#/ÁvÙÜHHQ#/áTÙ„Òfg/!Ň~zfa@ÎV±nЉFßÒžƒ’‹‚&Ze³$:ÞxÔíÁÔ=z“aŠTâŸkøYP:˜·½*UPI*#,”ˆUýè€+M‚*Ì #/Œ¬H#Iuêw„íØš˜éÜ‚á¤ÚkICú¹9ñÒ—öð¹S•O͆úZ·Ù&é†ï†øýNc#Å›aR•lZÔÊf>0;Ñ Q5z:É $@¹´†îý_¹åm{ùìM¯¸¬pÎÇ0ŽÄ:@0#/Á‘+f‰%ƒÜ… Ìx“Þôsªð¥QAã"ä@EX¹qÆðxRµü~2¥œÜ¡0¦3p0…¤ÚÂH„ˆÙËb%(v-LŸ¹–Cd%}±ƒ]Ù÷(KƉÜâ4@Ý×$årC9œ‰r¸(…ŒHjÅWü>¬@¼'5Bxú¾äÔ–¼x4´ñ¥CV‡Š]j“Î^pù$@"#*Å#*" }›Õõ®³Ü}Ý&Æðч›bVO³0BÏ×€S#,pC¯Ëù˜WðÍÚ§}~½2ôì•£ZCýNꊲI¼ë¦š3i=º×DHJMãs[L‹0š’k$ŶyMrY¬¶2–Òl1´šIã”Ó4;t²™4ÚŠb–V„R"_•®°¤j²™†Ëf‘¦%›Eµ5¶hžœQ´T¥Ë¦Ô%õms]q¬Õí×cELBPLÍU˜•^§R&¶"-,ceWð6Û¶¾NÈ›½wl“dQkDÖM[m‘$Ò©«[›-LÖöWI©m½zï#/h›M¦Ê)…MX¨ª[-&ôëZ¥j1ŠtVlÛή¼îL¦Ö™#,\×m5I¼Û5xÚëJ%V5^\˜‹SVÓkÆÃ^?[ÉT\xå“ì×ì[MyøôtýDéD.ZõÙ?OéøO·ÝÓÇV'Ìé&Æ4èG츥É&C§Ù4ŨŒ†~>½ÞÄÄ/î ö6ša«bæ€{a”]“¬´#,.î´bŠ#„Õhï΀@›³m¾6Úƒ¦jZm*f›a#*A#*… ìã¾f y $ˆ(ŠÙ¥lÓm{ªÕÒÖÅJb1!f’ E*²¨KD¢4m·lªîíŠ-%‹cm‚ pŠb*·$R(_0êQM)Ú`G^â€GE ©°HE#*$XAÛ-›1,Åc#&%µõ«¢„£R“T¦Õ´Û6e´›l4¦ŠT¦ßJÜ¡†ËQY¶%£’”i¥$(°Úm”¥‘6’21°ÌÆXØ*##/Q)šŠRbM&D´&´¢š,¥”ØÕ)l)¤Ê”¦DÙ±‹E2Y4•$¦)*Å’-J&ÔmfÓJ¡%&,™I„Ó$Ó%K-SlcTEY+E,LÚ“$‹5Z–k&MS%¥6Ùf¶¤µ|kZî6Õ&Ò³VšÉe²K|&ÐÚ*Ø‹ T#*#/€0Š"T*”Bë#C"Ê0ÁF@M|ÚÜÕ)lÔjÚDÖ©"ÀST¢&D(Ó_i<ƒ6ámxVJd:è¬ìÉI>%ß9çTuäºÎ]1“:Šøé€fÿ+81AMÝ.¾ÛŒ¿Ö¨›Yô|lè?Ô9#*Òݹï#,-N8eÓ¥ƒäÛ_Ì-ödjƆ£§xüI‘¡±Ÿ¿°ßן1™n#*CÙïòÆÊ#²=PÅžÐÈ9,ŒWåá»±®uÝ‹f€Íµ”1é.ŽÍÑT߃’”nÒPîäR•Úb]WÑ-|—BÏõj0÷fû1Áìë”:ýæÂŒ„P’ãM¡„†ò@¼À§3™¬$4ÆäãÙ›l`Á¢K>`©&z€zRWê(-ç#*©nt%ÁïT|š®n£¢k#,N\‚•¨AR¿Owl°¢wç°M±3‡ÜhTɵÁ±ü«mÓÍNßa?œ#/$S\P{4Ì"„$]ú|ë¸f_y{è„ßsšU#,†Ó±±Oh;#JaÁr0™È6&"ÇØeÀD3P¶¼ù¶Á¥c¡Ã,€°JKâÃJ®§O‹=Ý©Í49¨ÏÕð£úô×v¦s3Þ&™TZ‡ÑRä`ðªtJZ~éÂðä+g~½NC|À‹$Œì«X§ jzpßy"á†Ùòu6Ú >4H6õÓG"Å3Ì>|FÆÞí”q„s³PÕµ"ˆË€µ©ƒDê~ÆAfaÇF>‡JÙ]Ä@ÂöŒ$@ï¨n™]\RN,T˜]À#*±¶ÆÕF#,·ÎUÝt”Šài\´˜Bd:nɉö(TP"¤Š%dN»E—H1(œhšï}„mÕÒZÂýÖ#/,ë÷ãÈëBȬ$Y:îp–ˆô…VŠ*MîÆŽ€Ø‡#£6U¦«¾;1´mΟA¯ÐÉÑ#,¡Š~<ömǵPdbA<ú ¿Åî{YëÌóŸ±å][{éLcØ:ÃRô‘P••¦`}~¾w¾è3¶›ñžÛ¢ÙÿOð²X#/³V¦¾óÍ0bŽhÜÅüw¯;'ó{;9ÔWªXÙLjñ®¥â+tŸÌÓ«-†3V—u)‚Z]TÈÞ±Q4#,5¦ˆd™l#/Û´C2Iš¨µÃ˜#,¡±¡rÔ±ªÄ(‰b,jF”ËñëF#3†¥°Ü‘MœUV6pãPbmÊíRœÙÅA@Ä@¤––ãXâ–*2ÝÆ…UH¤T®Û¤“KV‡šEÑteS8¨¥!®)ž•&ˆ#»#*"ýîÕ'”¹¤çÌf&ý5¦š0ðB)Á5Ú5H'rm‚÷U„JÓ¸¤hÕ%c˜àùèú˜#»„ZÕÛ¦IR»=[Œô18žˆu79…bÏ1ÔÑ;PmäåGÓc]\O)ç9â;QŸpÖ!V/Ð,²+h µculA;rß >µmë)Ýmu^‹ÉðvýSæB(ëEhع¿³vçáÑóúH}Z‡Án„1¤Çîš_ —ò†¤5!±‚•®“5…y+n->.µV-œ›ä„3y‚¯†ÈÔñ–’æWÀæÝ(Ö@|ÑËRiHRhg¡3n˜ W¾¤³dT%eL¨Œ¿_ |rŒÂÛÞ¯±a¹ei#*‚9.ê/ ‚8I×äúÉÁz|ò üžºÎ 'åR:4W`Ðä>»´Å¾¿¶¤pÀyÅ#/Â9ÇQ;÷o>ha¤i#8æ€z°l#\aÍ:Š_øµ#,º?Ky&'u÷Ô÷g$:<k8¨7kF˜\2É 4Ð#,ƒMJJO6Ž¢+!¡¸M@(Xä#/4É”Ññ™Àngcƒêç§ÊuIp'Ä].¸˜ý•(dшU†R&y'€õ‹]÷Œy†EA¦ìqJ™ Ï_l0sZ¤d£º_:.Œ)$#á—\BãP9Lg%ãÎl¸ž·#/{Û;ë÷ÁT;ON!‡fT*©z2‚8¼Z˜•:(Óž7tvÂæ>É„@`’#¯'%™F;Šb›J&‡Š»I0`ÙÃ#*³D%¬²Ýü̽ÜùÀó§j¤}‡,ãxê.UDy£ÁcÍ;y¥L“¤!”"ø¢µ" IÙ§¡Êä~Þ"ÄÌ~ï(NqvÚšŒ-úVj#Q…74Lo¦‰¢:8#*B#gË.$I£°w^?‹äCÉt1áÀXlìb™9]ÚÜÕ« æ1.…÷ç˜ÈµØf=^hFÃnUfÉ° ‚š·(Ø%ÔCDÔO‹‘À::©]›ä‹WÒŠUäIë/Q`G§yÃ;ºÍålÎåBãNó©&}Î'¥;N¡Ô@QHÀ±J$)T#,(²@l¢ˆUñ;}§Q¬_<©SCì;˜—-؇¬`ª8#*3ÞÌã£pYAÂþyŒ£ÔïÜÈ$ˆDॡÁ#*ØôJDBÄRF„†*¯ ˆ”]û@"ÄV,ÉA‚K+¼h"bl]e¥³—;µÜË×v3œ{×s1¬„z³Hj¶‡¬Q§u#ùôèp,è¹1€‚ðc²û=ï/ùbU'#/§mIºcg#/*]£³5¹w§;®î¼ó°¥x×9¸Ì1×w.)Éf—<ó‰áçgí–&XFÓpI6 ”’#,‘œ5¬†"Eƽ$o™#,HØƤ‹FÑд5ˆ$¶Øö÷s3þD%B¼ƒ©vúö^äµ'@HEHvëU×wî°GÞ8G>˜ñÓ¯—«ë€mœ/«@œàfØtÛ¦¾%Ô*ðÂÜ/å‹TÅ5ZÃc²ÁQ ×ÁÒ´.mØHHëw s÷¶gbe:}!èå`Æ:'O.>]¢U@‘½ò]çW«,OPv%x½¢›DDíàÓ¦RåÚ~8;qœt¥üì½Ù0džîÚEËQéSghÌ¢áúQH–ÀÞÅ“pˆÈªKª`«##/©Ú·³'?·Î‘ ±@`SÙU(ÌLÊ#,Àêã’DEÚD’l-´—µîåå˼]^;9·ÖÞR&S$0ç•ç«SWI+ÊDÕI$7#*8 …‰€#,€ÁÙEÞÝÕã®uÛˆ™.Y²1Â&á¦0°hPÔEb´±E26kè…Ü$C˜£¾+Þ]Mݺ`bãf)añû6ñˆˆ0.“¸CÃû<g^Öwª\i®0;NÆE;Zí¢1¤Ïw5~™z^0kñ.³™1’zšÒ“m0P¿V±Õ£VMª²3ùÒ‚ ëGK¦M`l Â+{¶ibeovÛUâÀfÙ¦“MY]t\ßB¼—ŠbK"ÆѪ-¯ÎÚ¹ŒTF¬k_*Qµ^—¥êV׊欘¿ÍýfŠ)Šª^ÑÑù/b`Z£Ë†®ÍHa<V*9¡fYüYº‘§Ç4ÖÓZI´*ÀŒ‰„[ÐÆtÁ¶µ2‚¤#/šÏ,ÈIc;zZB$a}VðÄUa˜ØÁY#/LDÅ„n‰‚j+¿?Nf¾0ÒqÔk„áÒ-‚ÃØs6:N8®È}ŠMàCþ$RrÖJPÞq†®TÑdÆ¢;ê¿Ð©1óøÂþGpY½~~)*Õ"®©Ä0S.LX1<ȆݮOE6šóCõí¨Tj!QH#/ª„IdTi6Š£hím³j×ξ¯Ë¢°nv,dnìºqQp‘üa˜!y#[ì\Ã# 2ý0ÛzÚØÑÉ®h'ÑÓÌI|Z@€€DR‰™(Qýø_׌ú¹¾ÀÞð'ÑzÔYãI@A„Y#*hì fên/w¨3OfîH™ÁÓ?6>ïøa‹¹ÒÙ°0…¡…'G»ämÆ2#*´˜–Tçª%Çe³WC¯ÏmúÛ“`ñ<#ƪ‘–x§#*ïE’mM¤@êèìبðÛ*{õ\b" #/’. *_”H>4-+öz¿ƒÔŸ'ƒ:ˆÅö#/)À3Ý–M¿Ð~Nva&£ÞCѾEÿžEdF«gQQþϟ燰 ¦“v[«l±^;˹hV9îèåŒQ=‹Ýۺ̳SWO¶-Ù¿òüC—^Ö»«°<a#,„F~`ø"Û8ÁÏŒ)ª)±Äò¤üP>ž€ô„_æ;×¾„O9S…‰B©i"2#*Ä#*æ×6ÛWJª‹[%sZæЂ$4€¶,À»¨ "bLI±.#*"Œ×,>wØDîƳ2ãþD0m¿dÝŽ°f¥t`¬P[i,X)Á[#ÌchÙÌ"dv Ð|,x=j~ÃhòØÒ}cÍ ÄÚždõ¥!Åàh/8+ ý@ïæîr’H#*È#Kªh•A!ÖüK"üªw#îdµH¡l)Ðiy”æÀÏoÇwÈùi¼R¨ÄÅgìÝß;4׺°õà(.ëO¥ÆóVƒ3qBc› t#,!È -œm@Ѓ}—x”hÐÔâÞBüÔö#,†œ²íËÓßG¥?"v‘P0vI ¡‚ ¬6ì>;X0¯Æ‹#/©M°‚æªWõÑ–Öe&šï=˜Õ¯w¶iÝ´awW6½¿¡ëÇ®uÚÊPcL… ^J¤ÃÙk#*Ibn„Åül´!he–…AH(ëFÿë©ÿÃrÝ•#/@))Œ€)½Ôœ²#*6³ ‹Ø"Ž¹gFr$´ÆÛM¡ñz`cºÄ´Ä±3FÐÙ2i²aÍ-I„H„]Øa¨i¥â“ ØÐ[Ue‰`ô½#D—¯xÊ»›®÷ïHÞ,ZwUsmŠönj¾wö¹ *Å s› i«%8ÅÄ`º¥™©íA¢L¤%0¦RJTe²"’ZE“F@«£”ÊM±m]:! `MYi4r¢M0––°[)e²©½—’³WK—#/dU¢°Æ´V‹z¨zÊ°&î²u{µóõׯ~Õx"1¯'wNèå±smJîŒn[–æ$ÅyÝâãCË®ªø 6æcyÄKlÒo…»N’†cV`ÌbŽ0Æ‘ZNŒêEÛþfe„7ÉpÁÍŒ9b…˜yA®4(lê‹FªËbn@ 8PÚÏñä0aáªig\["ÅM¨„¤ˆ„5f3J×Ó^6Oë#,;O@Œ'R@è# dåø›h|€ùÒÛdžj“4Miú<¡ÅØCÚG”Z"þJ»je2Õ%f7Žª»Î»E„–)bD¡0K£ã¦?¦’˜@Ž”†AÛ4ONVàqãìz>#,áÝ£ §-Âø¼B¨˜uèa?7ö$¡.# …> <íðµflke,šÛKJÔ›MmóÿM^¥µ§q¨Ü¼Ûx¶ìÔ´Ù˜±¥«ËTcu\œì—-Ò[lVwSºéV×R±F‹UË6mË*¤´ÔR.ˆ)ÁZÂ#®7AXŒµ*H#/H#/ˆŸ‰dÞý`d9 š‚#/BɈƒ@Ù¼à}Ï_2Àj×Xör«±ËÃìñí÷xåiëm0orû|æ‹’}B!ˆB’Ê*¤%-?ÛRÂØ€’‚6Ä‘D”X2àÑ8ÎÍÍ™44ztéÇòã¶uÛgî~^ŽóÍç4ñ‹®×71>¸çð/UQ C ø6ÙD©02%$¤Ý–Ê2ZÉInt¦TŠZ¹·6Þ+}ֵ嗧DQlšÖFÒQÓX±·UÝQkÓWµØ,Q1D¨À¦@à€Kd.UÁaf%$›j5ªI¦Ò^Þü€6ÆÀ44õ¨ l"2<ã }[¸Çy±£Hu4Cýâ-mî#*f;tŸš!"‘€ÔV\jÉRˆ†)>. ÂȦHÂe0l`eaFŽÍ´V·PD’Iö¤íÉ#/&¤¶E™¨äÔÈ*A.BC ˆ¶ö»ƒºÄ²'À{U@d(<.e$7ÈObûd‚;Ãj¥Çfß--Ûòñ:”…|9xqÛõ¯„@¬ÅäÕRqFó‡O>~±v}°}u“åÜG%õ‰(ZwB&êuéž]ˆ\°æX4ËžuÖŸT^È)QPÒ¾!‹¢8"";-”œÃä}œ¢op5s!êPL¤µ†î];vØyЇxÙë+ÂZòs«¶]†4ÖE¥)j5Ñ&Ù¯y]TiZÍ6ËíÒïi]FÐF&h†!!¦ý—8fó#*n;y÷Ù1.WlØÞÛ´|š¥Š•g2!{§Ü¼>Ê®kQíû‹ïɘŸ‰çfq©ZÑ´÷•»úp5NÉ™n]ÝéËe‘‡È‚©‹„ÿ¾!¹yŒç–0H'·gÂçMæËdÃ9I11¡”¢Ja GkŠ Åc`Óy(È#«¦vV©Øi6`p´‘”¶ŽÏR6ÈåD´±„ÌG!ðô°xx¢'ŠyÞï0’y#/ª°EÞÁ’?¥–`ÒhTr#,ᛸʧOêPÐ$*=â–dQà‰jHïå‘Õ¤$ ©Q/ó{¶ˆ‡8I6tt9ý+ÔÏ#*gQÒUɳšb?}ŽHìÄ›GÏÓFŠëV×#‘#/ÒtÄb5)¢CyÓ‚94µÑ¶»›aPJ»>1¥t(Ò&2!#04ˆ ƒ#/6ÄHJK•5Ó|£*¥:ª¼”PÏ옹Z¸X÷É$÷s5ÏFƒ„59ÑœlIz ô‹ó:xêÔ‡_õ²ƒàÛÆð†¸ª£ý=¿ÇsEv›Êm,0xÇêvï®ÇÚQŒêO¤52uõ ôO@ z_bjÑyW#,a’‡Ëà£À#Qà¶2áä"²$‰É‘¶1¬ V˜bÌ©¦b¨Ú¥U-M6$Ö#/3¥5üi]ˆH,fm!´³õ6·*Œ•‹feSEH´P²š¤–Ô¢©‘‹Sm²¬´VÍL¶Ê•SD›X©DU5¦Q6j³DÓT´UZ5 #-!#,6{Öú/ænª¿e"~çèüË',ù´Hí«ç©!®ÕN¸‡/Ú”B#*ÔU‘Dh%E6Ñ[ck©Z×-»3Î*ó#/Œ¿¶ÔצÚ/«yib'Þ¶[°zŽþ®:"q@¶"5#*©PF¢È20”ðå…C®@‚~$dWò— z"¾´›Æ1(¨¹’¡ ÅÇ0ú0Œe>õ†›0ûV‡ùl| µ¨E!=þ~'MÁÝÈ£³yvÐÄ…:PñÀ¦¿þàÓ’ECŒ#*‘Bˆ#,@Ùò åQìNjíÚÄix}¤zm"UÓ‰oÄßÙ‹Iâ¶ÔXÛoh†ÞK¦¯Wt^eW-"íKdãJž´&Obí¯bØÎ<ÇyôöñÕ¦ý{ÊÝsfYºeEÔÿ\díu#*›óE/Jaŵ!³Ž#*¾Atch1Ú\×4½ff`ò8G/ÃôVSHæ…°°4.¡k‘#/à|ïoYñ€‰À‰ÞS#6sy¯ÓÎÞŽ‹•éÜÉÔŽjí€kNñ¢mfËUkHEÕ-éñ8˜N:C·qܬ4xxE“ôÃP»Î5XMp5#|µU…ÎÞìMætFÑɵ‘ƒŽJsòGFþVXO8ŠÖ0†¢+&†) ákbãüEç£485EY‚D8˜4º÷οÑí;–ù0,öÀý¿ÀÄš2"M6~èg!I{J¾î>ȧß'Ýк(}æ[Q°š{p‚w:Gú1%z¶Œ‚$ˆ`é‹cÿD!&a""¡" {ÿ#,xqÏ·õ>Kͧ!=ÀG”ÖVüŽÝù:>YžµÊ³‹i·í9z0:°'ɾ42jªhLd,ŠÊJ””%¡EB¤P0|‰¦:íµ»É+võád¯b3)eb¨Å›G¹ÌqÅöñ™ƒåÍ8‡g¡zUˆ–ßÿ‚èifÍbË‹AÂ0rRHLÀ`ÄÓKß#,ˆâ†å²B4Ó ªeR±Æ¼½Ÿ[‚Ì.1ã€ÀÄ_FN9ali7’)#qéãH¬ @cax}L„ i]ÅØ&µi︷“©í¹Ä0ѳ&?DªÐ™lGo“d± —è Z…™Šå%áÔ:íLýÅ :㈠ֱ£œh‘"b‡ÕtÁB5צ0ÕKU7W†:xœýô6q—@ðìdÃÁ§RɹÞ46§&` 6¨ÑFaйˆ@{Ù#*œ;7SªqĨ‘(ÏB \i¸¹¶ª#/Œ-¼h½aÛ½ #*äE2cÀ.P¥•cDV0…B’‚Ä#*„RÈD!a#/b#*H4ñlpR#Ô)âªÙ¡óù¼)yK‚uìTuÀ“Ä¥>¾}îß'}UˆIL‹5BA¢Š‹E£Âj¬T;ìž´üéŽå\öYR#,{u¼#,£&Zi‚ÏK-Ô§0ú•ä᣻¦¾ÓR)Ñ¡¬½Ù»!JÈr]íâÞ‘p©1ï×EdÙ*ôÂ’Ê ŒBÚ¸”ƒHm‘õ7öé<±>$7ñJˆTIj¨öƈŠ»d$FƱµø¼¯3Ö÷¡Kž:Jòå2Ryç˜m÷Ý$Yë»â‡£85CíãeEƒ\Hˆañ*… 2!ÖtË»MD#,¦tÑi€Ç’rô´pÀ‰«¹AÕd…ý=SE#,ºBFا4œët“)Çep¾Ÿ#*îiŒ´Ä÷‘cwrŠû§ƒXf#/Ç/º#/*ãÐ.Û#f#*Á¥š¹RÊ8@€KaËÖ“æï7r´äH‘ñ7Cm´ìeøi5ª#/ m|Ê؟²ßEšZO¿…ûóÊë Š¹Ta®+Ó0$- Lœpˆ˜¡HRZ˜ÑT:,®‹v=AäjYGí’±•…òdÔ׈F~R|ôRºáº©pJ蹯-¥Ðw„DßÚªÍ4³ƒ¡#,S¥Cæu/'›ˆ£EÍ–ñ·O‘õ—©Ùõ¨t=I½%,fÛ<r΀biZåSEѵÁÅ?YWtPi«º¸h\=5Z>•m®ÎKƒ8',6,£q‚[(;<3³šÄ’ú¦t›ý_Á”Ú0ù{ýzàÒΉS®#/*±‘‰UO#–·wZ¥"UzÍ̺š]¯"Ù`‰½.Y,Š@"©'QŒa[ãÞPuê¦AOY#*/w.ˆÜXˆnãÛ:þ±#,½Â#/dq7ñ('‘—ók4»¿4(Žýe8Ò+_V¯^zLÝÜ΃îl29p5özLƒ¢#*,ˆ,Œ rNZ4u øù¡!œ´-ûO—À€Ü²Ž‡E–í \(rH= aCcñ‚jëëóìW=›Ží3& õa÷ça}³Ðê×70(ÜXßËÝ·by+Õ1‡Œ¢'‘L#/J%ã¯FXD3&*ñ^yÓuç›x¼çmu‰YTª“mµ&ÛKHîuÓ¶òíuäÑt”…¨‚ÁOÃå¸Üo( ¶d+?Šý!Z½X–ÒR¸A@~ I#!¿Ø#,ýÒ_ö>+¶4 +4©… ωV†[Ha¤”Ì2‘dD™ªŸFL“âœoêë#/nK½·f²#,å.™p¸±‡ÄVŒ}ZÐÆ2¦V†Á°Ò¥q¹fˆÚdebÀ™rÈ5ÂØf¨Ê²S„4ÛÞ‘³·%™ð´Ž¥ÕÕ뮽KzéEÓ±¦&#,t›T›Ý1`VtIœPhˆäYLg6t|:Óiµ¶Gnña§ˆmãÆ,xͲ6²„$lÔ¼pÖ!vm:‰¨<4…¼8d°ØzÌXF"ź€ØÆ4ƒKª y˜†m–ÌS#*K7(Õ¹}q#*þN&Ú¤NÀâ®~wRÈLl²–#´ªF@\s ¦1à§7™a¶UAoóÊ'Ý襥‹¬Qêôˆ"åþEåãÓ/@n"lŸåÞïðÙ¾ Í8:œM¥ÜIÓÖ>ª”ê€bHˆh×y•šK*5’¶&Z6-&¶£T¥ö®Uù—+])_`²#*û°Ø[ ¤´L”…+, A}fCÞ‘]8îOËÀc£¦5Ë)EÍýMª`åô{€P#*!èíµš²tÐv˜ïêoã·CÁçul#*Xáó@ÿx¿L;ú²§ù$ƒ#,îI±¦êT2'ΦÚ×[½ëݾ+÷mñÿ×]k„¸hÔáUü¯Éd[JËÍîŸ9m›°öñÔÍn6˜I6ö5cpß«2™B$îôM™ó&WÛæ7¹öhúÉ…dDñØJ¢ØLR"j$n@äudñÅ&/m¥Ç÷S}ZÆBa™$&L›|æ}zìcŠ3ÕY¾ÞFZj¤‰TÅ ,8ç¤Ü÷\°ºD¹–ÖK\ö¦þ/=€bÚ)–ä°å~…/¤»–úé†ËÓâyÐ$/áç¯ÛmØÎÔpCÝì1k{O+½Ì ¶¿ÉˆƒI3×î”äñ£óGuô¤éݬ}.xý+4OÇ]‹>ØÛ¼á컈TQ•©7þ^ÇÄSfÀÌx¢‹íÁF˜è±w¿oGÙ„÷EçQñPT6Ô2ˆgÓ˜©¡¥„1^Š7O~Æ£Þf8ù×ÝìMG牦¾©9²6‰¾Y›ÛbšË«£…JÎDÑÐ;>©O#/ÌjjíÓØc ïì¢Ñˆúb9d}Üeõïxù\–7NˆÝbg[yÂ}ƒ öà XÔ#îÐÑ`8#ö¡˜ÜFN[þ–ÙØeðX –çiÏVú».¥”™ùÝ]„cL>·0‰pÓªAk €nÛµ„X#/UL J`¢2Ë%Ã5CÛz$‘,„‹ ¼ˆ& ¼å-hi#,þ:^ýE·VýJo¨ÞÕ͘Ãþ£&×Ø_³ ]T,Dˆ·x±Êˆ´˜ˆI¡•å”eˆ¨°H$7[a;‘ÁHá€TF"€£LDo#*J"#/|H+‹‚ B#b7DÔRŽ6šÏë™sÄëëäsË ô§!ðâêÑè w~Ÿæº^wU3±kmVº%ÓŠ#/ø1÷qL¼ÀêùðÝÓÓ€2æi->q<O]¾‘#,~áõ´4èÓwR`†ÚÔXXÎB<¤ËSDé]=x4°Á×Qkˆhè:Ó„nâäy -VÄ[Ëô@áQš|Ð 5ç—<Á4zÑǵ㴧3`,_Ö#,¡"ŠKת%Gh‘ÌÐÙÐMï®qiˆQMCTlÙFUs(V‚ &Ú#q „h‘Fˆ šI¦´¦Ö»UÔ›5ª™WU±¢¹™x¹ywi[Ík|¦È‘a"@ #*E@Då침ç#,`÷Õ<¼ŠË0>¾¯‚R´×°¥1´ÍÒen¦GBØÑ+F¾ú$ßÛâ02“qãO£Iôfâ#,®¿K²œ#/—T¶ùÜ% Ñ“”œƒcPÖ)Ž'-ªMù´E¨+j“ê8–Ã<?ªálxÐl6%²Ë³#È—#, tÅCà;ä87;¢å÷3!eÕVX"1Ü3·<‡ŸñèOOb%â†q-vÞM¹”dmЯIÞ†± lëàø›2ed^àiÎo÷×a·Xø"ŒTñ?e½GÓz¾Ç¯j33ÛŬZfáæ:ï@ܶ•»^£Ìñ#*É€C¹¶šŠµj·¯h××ø·]ÍUb$Ve r§#,ꟲ³®ŒØ²A#/_ht˜¶L1üX¤6F#,£|ie‘C#*ñ'Û#,Ÿ?çû¿Ïý?“@¸y¥-NuF½Í1}·IÞšöøæðMñµ¬6=‡¥BéJzŽ¼öÕÕ»¬¡¤”$55@^òAyÈ*CõÊÁa¸Uƒ¯«31ë_•ÁëP¸B¼‘¶ôÛIE`¡I±>ïo"â‘Ó#,ê.ˆ.þ¼8‹ÐÎðÑÂâ”áÔm)Øô^F–ÆÓ`úÀnh¡’¿ê|Ž:ÐÊiÓlpÙîÉŠ¶@ê ?.éÿ Ì5;ï |øœm@×R¨¨ãòý¹Ï3•Uð¶x<fƒLËm÷¨Êq¯-úKDÄZ\&¶dfê‡@:ñ†J_#*ÃÔ)š§‚#*ØFBçRÄ:x¼lã´Ø½¶†ñ?6#Œ;þî^-¶û:c(˜ÒÉC̺ëd¤À£>A›*²é$¼v‡@üuqÈ·~òj|çðÙ4³ÓfMèQ@#, }™¡ª'Õ‘ÿ<„vS3Îz<•f,+¡©ß Mµ#,,â\4æ)#,R(ý?¯˜fÉ#dB¦œVÅhóÞ¿ªŸ©†þ÷áΛÂ8 èÌdén槤DUNçĶÝ#†Ð´"¼V£GÙ#*h(Ñé)‹x£ÛL1íf&g#/ëÃNœ•c¡Ðžk‰žÔ2 r@²þ;Î.wèúl|¸éèÄ4ô# Š"i;!“ÙÖC@×dž#*É!ÚÈ‚·Vêkc[§ßT^6ŠÖe¢µklZ±ª6¢¶ÔhŲ́µ’ÛdÔVƶ׋PR@RB’@”'š6 ànQ;Oâ¾ËŒž уIÚªdb 0dH?˜4&•W¢ÊBÁ#/’\¼:vÎÆÛ®íÃ8!¸€rÎ;e©¿¤Á`ºvU½†`†0¶a—×@‡ñ;•ÁL1°küTqv…c¯îž¿mµL|@:é«¡ä#,ÛËl›l`¹fØÖjMP9LÆËó•’vå ¢¢žà÷A#,žG£+åý# AAEH±8emæÁ³0ô(&Õ6R¢P»Jœ=9—#*¤«ò©ã¦iÔº?›A7aOæ!7[ÔìØD ÜÀí¾÷9‰Ál€vH?iÀ8åߦŠ_BCÐDêšÇ+qQ#*ïˆf-æo;cD·7|PP´&©«[4«ŽÑŒ\Œâ$Êl·@>§'ɘ)…†À¨”>ˆTMqJÀÕ~¹*ªJ<\¡Ý${»jõÞÎs/H™çBQªš‰¤@´yA~¨Z)YÂY‰R7‡Ü#*îH®§2FÊTý‘F‚…l5¥Ãòç¨Þ¾ù™À´„Ì‚Cd'Tà23ˆoHÉ6eT‚hªÕ#/€×Š}}ž#,÷§¯åêàmÒ5žfA˜ˆJ#/'Üî»·«|h)Œ›[à¶Å/›>Sé¬Â÷ËG’µ^ˆ~Ãå³^I·É ønWÐÕ°¬5nç*"a,“22©rå93ɳC;P¡[r!{n˯Å4ž6²Lbø?Uع`±#*˜ ª£‹.êLóéÛ@tÏôiè]Tü½(ËØP›@ oÈÙ~Aä(>“Ö7g§au9ùΧLFeþ¥«¶6‹j¢IYYªC\V®‰jÈS!I#/ªF¹6#,sai³ƒÒ˜Ì¸ÐG2—rLo#/@©¦ÁÆÄ"d ^¦íåºëgsI–·uÚRM©Fm#,qwQ¯f©æÒþ#ã2Øx…”3x``6qÁƒ2K-c"ŒF‰hÀqCRB7ƒhdq¸4e´N<…8:5£*hU0‚$A‘1§¨‘+kñ„Æ!°k´#Œ†ýû‰'é-jöì½f°¦©Œ!uÎÍx¢®oœ®™l›jM®t“æîÒnR£iU‹±¸¸¥¶#/!*†##/Œl¢3A,,¬æ¡i#b£i™1‚˜Õ,qÑkDHb†ša`†Á©ª”Ô43(ØÆ©$4¦ÓbK6ÌÄȔԽuvòí\–îw8mÉ“}-ÛË®[sGeï75æ󼉣B¥¨dn[çë½ÞÌØf`c[0¥”kSIy’â‹ Á¬<b3A±´ƒUÒâ"T„XÁá6jÕ† ŠÀ Á€Üv;ŠjÆ3Œšcy‘SC[y&j*ÓcϘg1#,0ØqöÕZÆ,äËa# ¶E’‰>xÇ Ûa3áQÆM¦ÅÍÀ—t¾è-´°È1œå6†ûiFÚ—¦9Ó>¸¼½xÓvÚh$#,«Ö×KF‰ø73®ÕÞäÁ«-0ŽaËNlÌ,–«ÛÎÊ»s¤ÍÈöëµ¼QW³$ÌŽöþKŽÂ“]“8¦ƒ+‚ÁQK-+L#i¶œ–¶DíJØf:¬ «#/6“Ç‘¸Ò-¥Œ„I˜Ùhí‘•¡F‚h‰*ÐRGŒ‰ÍmŒcbMÙƆ32KkLa›ë—8á„iäx±#,[2’XÙpÃ1xâ¼@âæ–î¸ò•©a ‰ #s&#,ç¾Ñ±µ©>ÆG¦~#L“aB]/s‰iÖn„m7dÜÒ–P9åLÖêjÆßçs[s{žJˆ€wŸ#,%c/9ŒY<èA vâ|¬K$¤ÜÚÚ0qÃ3zÂ4¸i#v#,0W#,¤ÌbÛ1½½Pƒ©°óòÒÈ#/û †|ÊÕÈÌÅ,Î6êþ¦ÆR\10ìK #,ÄpdÇܾ‰†Ð½ÏáÜÙ°DðîcI%.dûÏKñbç™=ïnž^ìt´›ÑÎ$ÞH¨Ìm»9a]ÈWÑŠ¸Ì{]dÃó[JdÀá0Æ2#*³6É*mVoŒº]GºqÅÈLJo‹Æõ!±&s€®hÙµ†•ZÌdUG-‰Ò„<#,êQ‹Ð$#-‹ÃqéïäùE5û¬0Іb¨l†û]?v<¬ dðª u ošÀÑà‘‰±6“ÜÅA²Ü,eeU»mƒz@Ú›‹å(ü´ß:á†Ð¦Á¢* œÄf"1EF’{éçsµsh«¥l«Ë«‡”Õ¢¦PÐô "â#,±Ð`ÇHQBbÄ1Œ a#/6¢Ú1"¶B¦ÏùeÞ#*oÜyyŸ)çðâ‚r<Yø~Ý,Ë8¤èèyŸÛ"[÷ÁD..ÿ9·¸PÞ?¯ñŠ¡ýS¶ðgðAQ ¤s ù¿wf½õáºÅÖº´£6OäK¥ˆœÅ](«ô~+´ñºÂçx«ËÎÍ"ƒéç6õŠ=Ò½»#,XÚo¼Öæ¥%+Ý‘½ÝËåÇç̸ùãŽfŽsCão8Ñ‹O’¼«Y¶fºÈ4K*Ì—scÞhD#0¯FtvŸÐ¾gÄe Ráe÷ˆ«_ç\!€%-—¤ˆI!ÉÌQÍèSóÔWª¿Þz›çæS‹Þwiä"‰£#`DF$ž’v›£éÐmUPÅ„0òzH³:–Ï 'L8é·Œá¸N›a$b²ž§kÏsào“zÖÄÅ»ks}þf‡ [óà],o~÷‚B5S»á[†²o%þÒŒ^Æ(¸Ãð8†–r<eaîAÓëé|êañg>\–íÛ..áš„,n\·èä›&=ýP?ÃP<9‰¢”¶X8kºL ‡Ài×-ûjGŒq‘Ž¶‹ü—±õÀ踱³˜(z-ÃF’V%¤àŒ§GôB0øƒ"(Â)ñýn~ß} ðÔŸ#*8 H"#*©¦¯~÷²±[šµÒÅkKrŒ(…¡.d,ò‰ #/l"AùÒ#/ÈŒ²™\3K5bUEÛ¸Úiç›Éæµã¥FñUÙkpªºkWŽ–¯wE¬jó®]5vªé·vé¹v¯QOÒX´¤b¥KsŽí»»m¤Õ-M|[UãkÆKZMÍÛuç›Æ+Z«ÆÔZ`‡½Ã†ÇÖ˪(Cש¥ù ¶’ÄsJˆäˆ’ü1N“ã„ÖE´%Ä CB²ëVm”¶®i’íjìÕ¢ bÈŠó°HB”n…!#*Wƒy²øÚë]{Ú¼B]"µÚöµ‘D‘0ŒD>=ôöká…nUÒê³]kÙmDTV¥$”k(¿©Ý-ƒE6hEH&iJűª*5™¢Ø‰5Ñ£f´›$S43&Vš4Ei¦Ó@lÃV¨…©‰U ”°„øІóáÛ ¦gWìøä&DÞk¾u[^¼ƒIµR)$ ’$ˆ–_yѲþé÷y¯Ýäô<Võæüô§ùòýxCÃúŠƒJæŽÇ,w½–Þí8[çG U ȧŒE$B$u¤¦Q£hß‘Íôï]~i¸³FµtªüŠÛpÕbÉöñ]€Ú7¬®ÅcI§w[¥®í×kXE£Y#/MQãy庛JSmi«ezíÙ¬H’#/”¥RƪÍGüd7ìS‘“,À>E’y($Âd@ÞC(a"ÆIF1ß!¡d!RíÝ’ˆÃ*¨$ &ñŠJ²¨‘™åÝ°|&8ÂÈM(9•àå7#*9+ˆCRëÙÈëÆCZØ„ÒyÓÒóY÷a©ïŸšŸÓÃ,}º)Õ½Ž“ýSå˜U,Û•B}3M„!ø"06l=UQý,ácG7µLÌf7?~Ëlc]Ì“MB`ƒ#/a!`Í©¦èà“L3$È>—µ¥æ*ˆQ‰1S<¼OîÅçÏÇjÈ„$Ûiá1°<¦ˆt2b²tÙóJßÕ<˜ã §wXTžD6C™?"ºK±•ö;Þ7B˜²^l3&$¼‰æG;䶤œù qòÖôž3Z6×_B•×W¶Q´ž¢ÓEá;Œ8`Ë,˜iîö{ž °Uþ2r¢HƃÖ;â&ô¹Çùj+ïš2Õåa;v©³ÆËgòãiü8øØÿάø`¨Ø«ôË)Õ+j¥b†ž¸%úöÑG¾Ø¡ÒâÉë#,adPO”Ea$Ö¶+F©-¾X_ZÚºVL?ØÇûH†W #*Ê ¶&p± wQ¶JÖÆòm¹Zñ¯«ÐX¾ï+c#*JÛÛz¹Z¿ÙÈ8廦‹Œú©A#*0Ä@µùٿĨ¼üa{zåïÎ#/`ªò[%Y®ºÏ~,ZØ̨(@ûÐ0À’8ž÷ºL‚l%”\gZ›†Ô‘h04OÏ6i„6"æáÄ\Q’AXÁ1’kÍd¼öÉUçu]°RˆŠ","S,©LžX§ V0°ÆB pg8ÒðZ84U¦Ù2 ™ƒlíjÔ¥"PÐKd*n¥Ì¥KR˜ˆP (€ª!B¡B±XňG÷ORMP,0³%›Ÿ@RZ°*$#/#,#‘q@ÔaÚa1æºöºŽP$EcŒ=äÞQ æÿ?_d¨^sx–‡²’ëò?<õ¦’Í]Læ´øµÆYÍ:–.ÈÙƒ·n³lô]Á(Æ3Éj6íÓá¿=Ú s:Î`YPAäE@ ü—„À-oV¯ÅWZÞÌEwéë<4Ïì>d`tW¤#/3µG›Oñýaád^ž5@ûc)£ìeì#,#,(žÃûTF/#œÉûY#,7¢©J¦•EÒV¶výšq>’ô±¨üd7Ï‘á:ÕÖ³æìß©A‹9/·Í6ÙÛÓl7@p?½—p¶\¼d 1QfÚÑÊRt^àî6HhnûTí5g¬Ü}ÎϪQ³DHk¤!Q$´>Ó©ÅÔofNF§TPHmð#,ƒœÃÙHØÙy’æ¨Ún¤+XÛBbÕ[Ã’ƒk8(#,H†ð²‹Ø‹Ú!“)ˆER@#/X+Æ©jJS$Âêl,ˆ‚b¸0àr€–t+Íѳ¶wöû{KÁ(LGí|žÑ=\#Vß}TøFÆrÞív=ÊñEÊ“zž]¢Þàcì?ÈÀ|s†`cÛͦü9A¹µ]©DZ§5–àªdb CJl%Ÿî»ßIB †GÌ2ÇõÙð¸›Á#,’ð•!#*ª–¤$Tb¨„*"ü‚åág|X²,‚t•w`ÕÕ,A)•q4£®ïØ”£/+’Å›,‰Iš„ÙKQä«›-*“h¤¤ØÁãpÐa.mÊå·3‡tÞo.Üu×jc•ÝÛ¤WvÛ¯ç“lr–[Éä·W.æ³,huÑæÛM<æZ¦¥nnmtÛ¥¶ºm²–6ºÅ6îÛ´›%oѺsS™-ɩݺjë.vËE£G6«®ëTù„R¶" óÒÚÅ#/.ö€RÀ zSÑ#*¸mÂk" önôp•ÄOXvˆ…ˆy@pÜôw|/VF¡( B"v±ÂØ‚¢ðûQ<AÞz(?ºqžÅTìAßp}p¨wÀ‘H,Uå£éw„'¨5†¿[<²CáÔÓHz¶ˆyö÷ŠOº„#/Ñî⟧¼év‡_r]⤈Æ2HHff›é×·5W´µmµÌ´A3RÖ¿âSi:½œl(¦%%F¶MXZ´3VùDC"'êõ”²Z‚A4¨RHÈÉ\ÚíίKWxuÎR͢ƔÂX´–#<n\XÆRJ‚x„7rBXq"#/ПàD’G#1‰(ÖéO:Ûà1 ]Ò’’fÊ(#/(hÈI” q²QC X˜!¯UÞnv׶zQ¤ˆ£^7¨ˆ–#"ÑHÒ±f¸¶`…#/Š´ÆV*#/K†£¦åÀ™)ðJμ·Ñ`„?¾Ç¨2Ǧ0Ò# F#*@hÅ™î?‡øf£×X#,KºEÎØšEà ‘`ÙSC)UYµJªSA!À·cäf#¨ë Ž‚9ŠÁa)6m‘¦Ó&Vµ°Õ«ùu@uy&Å#,j ÇË–N•B‰CRZf&oé5iZŒÖ†ÌEbÀË-â#*é#*CýP¨E«hpÅGÒŽÞ4çâ’#/PlÚå‚€#,ÕÐôöÄò]¢ª¥Un#,…¾î7ÖǤéôÜ6ßôÅO_É##äÂO"Ï/>VÿãŸ1x¤3±¤Ì`˜s(¢¸C2ÖäÀIÚÎ8 Õ!>wrpa2ÂnìŠ,’ª‚ª–ªµ4¨Ñ×]ÍŒï¹5:ÉŠDH¿º®k?ž£šÄ2Û¥Ò@é'Y×#,]ŠÚK×rÖÛ*S÷°®ÁÀ#i!™ ‘,aY$¬QŒN< D)j #,ÈB£ŠDd ¹ª3€¶\ #ý¥Â„%0(D`R #/G:X*7ZÔ„¨„ Ð*Â3ŒªïD°F#/ã#,…ËBÉ-„¶Jiïj¼bôÛ•%¹{Ù«kÅko&‘ĄÙüŽÎUx]—YÅÖÐδU|œIíö¼PîÎÊ«!ýmb@$K0†€M¶—Qáwˆ"zfI^¿X&Y‚`Éš]÷°™Ä‹rŔ¬œÕ¦î`´#*–$•(@XHÈ(Ш9Íù4Õu͹¦™t€#/Mû÷†À¸A&ÃË#*O’tð)‚ƒvJï+Úœ$þYŽ¡ ÐgïD+DÂ@ à††´)F mØrfå÷C±daó`§ðCFÝeAâHÆ@ÚNj{ ÑQYT#*@ ăD¨UÍNAOÆ(9@ Q"F$#/.$¥Š•lÁ²5ø6°HE:eÝŒHÄV†šçPñŸ$X{áá2d ±O™Oú6¼yÀ>ŸßgLhZ‡6AÊR±1m€ÖºYq8Ïã‡#,ýpÅöµÀAü=LÆé÷fbþÿ‚Y#,jÒ4bA ÜÓ4ƉÁ"ÐñÖ›Ó"m¼„²d$ÉEI#P#j¸Ìx2<jŒ¹[nÉ©] ð3Ucú²pͳk`EZÕxñ‘¨ùeàÙÀj¡V^[m…{´Â?Úx=©{W¤M4Â=a¢HÁížD<úÛÃi¡ÜdðTõèÙˆÝ)PCfÚ?D£¨‚¬7…&ãžb#/o‘üñ@‘QL@T¨X ˆ“×CLT#*…Ùì–D,`Qè#*¦<)Ì¡òw™sAÕfá¹ü !•¾óN‘€è¬‡ºwývþ‰Ë#c«jèàþP&GsØŸ€@„"HÁ¤,3FŸ¯Zýj“éÞoÅÁEÔ0SõD##*ÖýŽÎ={úôñnË1ê+èÝ9]*PWð*"¨Øß-4d×î¢ MvãÃĹ6 ŠGÚóTPšœ¡lýÕz0ÁÀ2Ò%AŶ#/del Üßó4j\¥ò£VÞÖ³ L1¶Ð墡8¬6e¢Ã“õe7ËFâÅÝÌtðŽìÊ· 07É„ÅŠÑLäåuÌŽ+Uâéq(3‚¸7Ò#,EW…“4dD´…¾Y©ùûD{Ó½D7–#*òˆð8þNNe#*ÕÕ說ߓEÅŒ´RÐùQ¢92J Pn£DØ¥ïÀ¸yyxšík'\m$~oOx£à¯Úñ"GßwÇ¥ÞeóÞk/çŽ-9nahª¥ƒï».Qo»‚8USv9”‰{)ÐÓ§¥h”#ú• ·¯ë”;7æ"É;VÜ%mKtZ9Èö4=Kþ ¡gv„Æœº©±M¦–1M+¾‹Òºf÷j]QTÕæìRœ1T¤ êâ#*‰´ƒÞšÁ5¥…«DÞ#Lz„4š1SAØü'w‹'4ƒ²çãs×%ÞïÇtéÎÓ|@Å[t¼Sçž:[Êá4–Ù¥1¬òÓµ)æ—±ý/ZO6o'Nqô!¯YæÀxc¾ÌV=Œž-¨ž4søË5åÛaòdíBÞî¸ñÓ^Ý,)ÊŽ išÎñ¿~Ò»<ðmâ°# »KÊŒ|>Ѫ «°S³¦Z]Zĺ$žêC{¶‡§²SXÐU:W[Šb_«élÅå!³Í\¿Y~÷#/›ÇõY¥ã½ru÷O µptï½;":7#,0¬D1"ñ%‚Àf“ie¹w ín\ˆKƒ²œÔÌ€”nÏ·™à=g°ð%p†']¨•^ì`Ï×®ÿæUÞ/OßÉ™¸â©‡4;¸wcãåççÎp~%ŠëBåœ<Ç•¹z´q™~^4í0ké¹änL!ºT”6ß¾ÚE*‡LuÓH†“¼"QŠ)ƒ¸7uÿ]KùT’Ð!6\Ö|›¦4óÕ<¨Ý˜S )R@Úh‡#©G_.•9Þ4%0P>®¡Ð© Ì[s÷㘎²ƒI©¡ušÕù ~Öoå[Œª«Rª«6»{kI%Ôß©µÊ¿qã•«†¢Ûy,’H‰L#/kx ÒK¥Š¢[V4GsWokWxŒ¯ßêByÏ…dÛºD³0îÕìr¼žtøÃÓVï¨#/¢ÃÉRfIç©C3ݯ/F©;i5¯ä\5ÔØ“ÅT(;À¾W§oKdžp&PƒÚgzÇÛâŽÃÎy#,„Î+`(0Ic@[š•¬ÃBÐUŠbBÒŒåoãêÒúòs&uRÓ=1U‚áP#‡3âXÙ‡tRï&{7z:rJGÁö÷¼îg&¢äПÛÅHÙ$53hžŽBd»“8’ì¶G?#,Ò2wë–›ºy[5½!`T/È#,ì߆XTã’I¢lºC~da…€‚™ùÁ#*M*—k9BL¥÷#N‚÷eЈ?Ja@5ôbÀ^3ˆtþ=ߟ@¬M•=²€†ðàü»#*‰‘KÁFFA¿¼„B$>(Jtãß“jÿÛ-í¿<µ[D[°$E”;÷—«‚íTƒñáÏHöVãòWœó¦C37PNq ÛG1æý£´ë£Zrå=>VllúÏjwK¢¿C›#,Án€ñ‰‘nÜËt(èzNÞ±qÏhðøp:£Ý7Ÿ¸Ú5ë¥øxu^áiÜÜÆß0àVÝ#*1¼34r³`\F¹2îæŽØàÉ£sMDY´ ‘8+´6§˜¡j‚gö"¢‰ L~z÷p!UÇŸ3Æ<•Põs#/9m9=Ôz,¼Š™šßWEáÊÖh£âvñ–9“Ó¤ÄÁ–U§Ô,è€ìUÆùñò˼QL@Q‡"€¢'„#*"„B‘‚j.ƒ]š›žøÀO†ëŽâMGp€ìß¹gÔ9(ù U®Ä™ï;K²-í¢%4¬$3Š#,”ák¿¿ö?¿èñ¸+$GÕOÚ:cD°"@L#`!üÙZ¯›g¼_£¿oÛÞìfÚµ¹5fƵñM5mYCPóEß#/o=ô†#,”>]±!‰ËöÌl;ÝP£¤Žg¹·úo×MÌÏ£«2špãAéšóWiI‘OJ!R‰þé¶45ƒP’Gú˜kÄ׬=ñnÜ/Ç’}w‰wžo‹É•w`?È©ŒOw?5¿ÌÿÛ:ýÈJGþ>‹kê7-g{PJèKõtÞ;$&ñì}wn˜½°ì¬$⪆~)´xÐxÀNQ¡‚±‹‡«®ùa+Òcà‚… yò¿ò}{«rÇ_Ë^Áʾíxm¬;õŽ£ßú³ò¿»ÐÂôUASöÓc;Õ‰ztI#Rù²ë˜îO=ùŽé½c*©Ç#/îýúàº2ækÖæy½QMVf÷ãÆÂàÑ0'ëò0ÍüÎÖuó;v(I ìî0üžg¹VÌjxÑHäîÈX ÓB²d„‹@D LèC§/†ÝÔd¨)JmE%‘0CgFaîÊ#*›?‹Ö:Wu§š²üž4•ùÑQ®"KÜ|¾“PÚ~¡"ØP#*P¬bÒ]?‡]µI‹cUKfÛ4µ-@ ŠE$#;wí°»Þu©$ŠŒÐè\Ö.]¶4ø};ZŠ!@|B3–ÅEŠ×ûÿ=ëÑúÿkÃÌ„#/ŒÈÍ’#fM›DÄÔY1 1FQˆ)²2lM#/L›6MDXÅH~rqàüOwC^awŸIÅ’ÅYñfOš{èãñÓ<ÂòàÁÂq›a'p¸Tèf¦Ã„B6˜ÔFp±¬\Þ9äK‰pDÄ#*Û@yáªíí=•fû}§Ð¾é¼¢hT©´ù….¼³lÇ8™@¨#//mH¤jUg¹zÒ·Ÿ)Éû}™{hóg ¦Q:ÞÒb ¡‰¶ñœLÆô¸_¦mtÒjªrùº¢“ÓY¸ô‚ñ ÈGºãêZ†Ž»´:ºbÄÓв;çG8l–ÚVévO<î¨üþ=¡Ê¥äp" ~uúÃO¹Æ´eÎÙB1uè±ñªIüŒ“/û<ÿ—]ôv¼>d*$zœ´Ÿ±$#,²Ø*˜ÉJ«m6Ç6çUz³tØ[Ã5k¯^w®÷öÛW¥g³\º¾nj¼lî¹)\Õ]®é¹º¤º®‘Þ÷ä+f$¥4´›æüƒªaH¬0”˜I#*š™C#,±"øh€!•C#/ˆ{ª6è‘Æ©d½RµßJ¼E’DRAdB-¼mÀ«—K–w[—²ÖÛy¯o‚_£ØŸ&/#,eFZb8σÀÑ"´¹d#/‘ÔÐÄ2"†Z¸ÓÝMkUŠ‰©ªË†) ¢æi©aý,0¯Üýåêp³¼B2ãcbâÓX3•QFÐÃ;‡†?+÷œg8†ÑÒ·‘m Ôm¢VÞHFB#ÈìÖÍ&ÁäJ´«[6h¨¶qˆD„II,"‘HJ`,€RŒ«€³5A”«§s"D<]æÛ¹i:[Å/FÞ8ÔD€¥=66ah’iB0OiŒ.¢œÑPLlÚqN9 È@F2ËmM6¦œM3xˆ5 ŒcpÑ-#/ÕbÈʆńc`éTª+rªÐéIrŽÌ#l®·€&m„UÅ¡4A(ê‘Fä¨W#/ËhÆ:#,‰²¸È™J*7˜JQ£QÊ%#,@Á°id:Yf½Xæî<M·c»Ý7°†¢®nªä‰†´¤¡3ˆiR #/âeJæE¶²¼‹k7¨þc#Ì$æѽlc4sFöjJèèÝì\å)ZEiÙ¬FYB²Hì2"ReXÔcp$¼ôÃkOK ·ÛéjgFuªÁóðµ¬YädÓ×V+bOƒ¬-p‘¡è½CTÓºY‹"’@‘¤c#,ªµ<®ÛAš6<2XVƒ¼™©(79#/TiñÄ´‚xQ§údUâiy(ÁH#/ЀwêŒ+(ß)Á‹JÖ“Œ(ÀÐȆ•è\4E‘]–45¡C4+5I)23¤LëFPÒ: F©(C ÇgÐ{l9äXÌ»AtcR1¨Ö•hHXÅ‚Óz£8«@¤¦X”®u¨LÆL+"†##,3›‚¬PÃFˆÄÓFX„QÆ#/"8¬U‚ Ð9AŠ#,#7¸ ¨çÝ4ôÅ_)›x`›|ɧ‚9&1TÐD˜• ˆ›CŽY¼R®RQ7£ÚÃf¤Qn·HÃvT](»gm2tš ·iE/(%ª›$©"ÔbɈšfŠECWæQYžVàÖé†È(ø“ÒF¶Ðµx#/Jùž¦YÊŒM’ï‹ìu¦÷Â…}0'ƒ:fI[}™2”º#*ÆÐÚUDUŽµ)v°K<+†#,!iT[³šÇYŒhbði)µ–Ä."&˜ãójc€6/'NûˆÁ£`Š¢H€ˆFÄÓ:˜SDD4–ƒb„#/ Ĺ€Æe#, óoÆÙ(ŒšË/[oVë^¥&#,i2·RÅ@Chd‚ái£íJÔ”©d'#*èä®74k¼w8nî¼û;˦5FM®õÕÒßËë‰êäwiÜ–Žú/…¾Zü;IAV¶ÅSfÑ‹„AÖTý¬«Bê!øj§ëCý9/!è2ÌPÍ#/v#ª<§éáF:Å*(µ• ÷ç#*ò\îÉAÔx·ÝzJŠ>üP8Ž¸OEXÙõIU¡]£öŠÔ–ªJÆÖšf²´[%€pDK–Ù¥ìœä‰í©IQ'…yÁ„ÐœÝtûìã#,*$¨E“éøqÏg>ò`Çã;“}™«0WQF r†·æÅ=ÄIÂÙY áGü¬Y’7EÝÛ×WW6¶ö×]4;º¬ œ¥Qc(PŘR7Åj•BCZ©Sf,¦ òaÚ¥—‰Ss]Ù£–F7‚š€k†m¨’†ÏEüþa°°ØY›(1‰vw’ƸKÊœåöÙ®¼íá÷f‡Ó;È$±Ýª”¾h^^Ô©zÈÞbÐOxjTª/ª; ÝÄÖKÞ¤vé‹éŽŸ6ÜÎ/»W†‰^”D£éP5}º‰:¶’$ÉÚý3Ø`¤âaÁx(aª(Cȉ‰¤ØZשè#*txi¨}_ß÷â;¯«•ób±Ÿ2…2A4<"ÂLméh]v›fúk¬åSéÕû»#,°Oâ>£ê,ÇêÍ^îÜ<ƒôŒ$‰GÏzwéâ#/=“äè·œH¯·u_tå‡×a1´É¥ŠoŸ?¾Ébóbvš)Õ^Îþß^‘nï†3¼3#,-_•„#,º§·ª³¼>'¤‰„";®gЮ:dƒQ*$+‡ØŠdç£SZxH\ÛŠa;*‡ªP½à©$C…ÀÃ/Íñ›¶.¾Ò—¢*ÌulÚk¬¶ØàR;ù}EíĪuçmr1Bô´X<I´äX3h½»[ì—}—±ŠQ¬}_º°b8Už±²FÆȵÏäÊ´ˆ¾Žu7§#*ĉ¸†Ÿ\L ³)#,\ÕR@—mE„ýg‘¾#,Α9`8™¹±jIÁ#*¤‚;Œá€ÛÏ‘†¢DVeh.‘wmŤ¢‹^9[%¬[Æ*݉ncZ¹¬UÑ£›šÝ-mÓVCX¨µÒÚåd×75«•;½›‘£jJ×ïwâô³º±Zþt·Lm‡eìvÆAÚQ¢á¤º†´Ð»Øùëžµl°0æÌFE.Çm}XÆsö‡ÈÐ߸o"¸5R9 ‘S#*Wë"«š€qH>—ãF$\È@Š))ˆmá¿W»”CñÑñuÐóxPTúàìhøŠ¹þE#*úˆ)©ˆÈÌË’Xø)…M+“º Â#*I0t}¾’î4F4…C#i(I‰D"2Šª»À¸WΑKKªAHÅÁÀdkPL1 «m&¶‹ºÕ«t›#*XDèØäK·#*”™ v÷y5}M›kmøµ¥š£I¬„‰ €‚"üG‰óA°h¨:‚ÿàPOR‚jü"nŠ›s(Ū¬Ð/¸o"FÒ¾FñÇ÷VG–ýR‡Wˆ„ƒGÅTÖÛ›<s~Ëì¶ßÊmlfm&¡M„¶5¤ïó›Ò²#,ädp'QÕ‘_J:¨z^°ÍÐ ==m(TYdÒ>d…á•L¦ÒHK40XÅ¥’´i6,ÐÚ™¢Ôl¥&II6#/mÔ[XÖÔmjm+LªQ£S*m¬[IµšÞ~‹×Ùá[’1ºÃ2"‘hmÉ+‘"q….M¶Â<«)ÈÜaˆP—òpعIQ¼ÐÉ,#/m†ˆ†G”BA´ˆ’™c!0T-"Á‚R"T4ÅÓ†ÄLUÊÂL``bƒ`èÁmˆ6M]Y©ºmn³šÚíZåµ"(U®ÓB‹ä#*’"@¡ŒúÿVv¨Ž<)KH-H4F›»§vbáÚŸ¥]¦õÖêõݚŰ#/#*I#I,f[dZz€åqPÛ]ÚxÜ£8D#'ÊÏÞ:wIÒŸŒ¿Ùëϲ´¹å¢ŠU¯`BB#/ɆùgoîÉ”!h³è×ä8¸Pš8í½õ9;;'Ój—,1Z%ë–¶2iU""†QÑîQ,C4Á¿bU!›5?>œ³‹ÒÓƒ!äÈaAC%[cΘBˆÒ.c‚ŒTKÏü:#/~„z#êEöZÝ}gHQ;šêgvó˼ë·tv–ò˲¦Ò™ú:áé–ÕÍFÚÅ¢ÑmmmrÖË ¶º;«©zÛVòZ¿ºfx‰6jz²K1SÓLðmÔC)XRWÑý:mYÄgëŠGg)öb#,-h#/1"¯›tý‚ á'̇MQ%° Þéô3î—]Ô„¾Ä\ÌX†tÝv{ŸîãÏÚöƺ!žt’¡ÖÏÛÒ¥ÚWWß2ZÏgŒ;mX·ßÏû©–]9!¨EŽY,ëUa7_ŸI[ìkÓ•Îþ}üÞ&úôDNÝŒ:×\•&6RÚÔ›ã¡\ùPVÝï·:uÊÃDÎœ¶S’z÷Y#/™ÏëΞÊcC¨Â}ì ’aŽ(%‰3Œ'‚^JRñÕJ‡'Ó¬ô·+>ÎÔ‰Û»¶s!Êî±oãOͳÚ.åâ¡Ä€u_#,öæ3†´d#*ÍzëŌְÁÓ6Û{ÇY*ÌOR͘—Ä.:ã[nÌͧ#,åÜíš3Õñ¬ûjñŠ\Âéès1柮Fgîó†~NnpK(INÇGm"xÓØ N¶ÙùŽ~‚¶ÅÁ⩳J·r°ñÅ Ë4Š¹¥a½5ˆHôW¶5)…dí*#,ªz¿¬\5®YòÔ! ÒñçŠ÷V uÈo1ìÈ2ÝZ dC3¾æø™Ö çñ<*Ö®Â$<¾}#t\Ø£ ÙH„‘öXFF‘àaœ#*tŠE¹#,±]ÐÁÑ8§õÿLzÉÈR9AŵáÉ]Ogmp™éçã¹µÝ|#,®RÀÑór<of}˜lMhŸ”œ<J«ºjÀ…6ò+·EÕx:±`è4zo•…7;$º”‰Æ¬Ö–”ƒbã4¼qkº”!r®èÉ å%IPC®ˆqê=Ãt äBY¿L<-Mš‘ùÖd÷¨Îu,ÙLòçAœxR/ŒV-øÓ†]¢áG0gåÛ¶÷ÓYã´:FÏ3å3¥€ EËTÕÏé%±ÔZ¬á©1¬µŽ#,çKC)%˜½—×¾ÙàòYÞ\Û[ND#/n+š•Åý›í¶-šÆL$ƒ¢fb6߈¸á¯Mo¤NGöwvvnVÓ]‘éXxæâ6¥¥9ŨBzxBI$;¸‹àæyʪͼè±>7µ7@"È#,èð0î ¿ÉµSú,·7¡³fWÑh‰ÓÌ„ášU¹{âlC"´s9•—.ö<W£;/o(Gnk#*û;8‡êãÖ¼k›#˜³.ÒûakÊC;±‡u´'vÚxáÌó¿Ëj=¶ÂÞxëÁÞS”SÉ$ôx34ÑÄsDœiñ/I^Ù¯,bäC‰uòqHrÈg[ZNqEïº+X̘¶È„ŠÌçseSÍ{å9jÜÅj»ÅkB“Õ{‰º£¶ÇhÊcj[KN_ösJ+×å׿–õÑ÷ö`²íÍâàŘæCÎ8-hù*1º}M CÌt9Î#/ª#/ì\[<uFpê¤^Tªc ûÏ ÝÐÄÀ¼àn³àÛãxÉá>—ˆàDz®™×j8:eŸl“Zxô‚%Ýåü¦[gʘwwBÚº¼ª®øºó|m7Të+žz=˜¤ÇvæWlˆ~N×0³ÃÜ»íþphGdÛ®é¤ËƃÛf¼½~§•óäìê½Ö²—^³ñëío\ñà+ÊØD³ŒÃ»Á5Ñóð'®Æƒ"–1±ÖœQØÎ#±ÄÒÊ.&ý‰é\aïX#,³¦#Úr6¥š.@ƒÕßFãv%½…”Ývx—}ØzñП6»hd'(O(im¶æn¼F×ÐŽ4&d¶êK§z¦IáâqÓ}¶5=}tTnœâO‰e3ç½(W;2Å´ƒ|è0¨P;Q®Áài%œa†…Mؤ"Ðt4Ãm®€ÙÁ»‘ºÉîAq<b¥CžÑ—òÄ#,hU6.F>½c¨ŽsJhR:„åqÙ†E°³KeØÏvb»°×(–Nоã¸H:´ã¦{fŠN@í°S#/Ÿõúõ(6+€caP¦ ã¿žú7Jç[%^¶‡gM³=¼ªCf×.h¼01º±Ô`vÞÀj~¶zvë4§Ïüç—Ù:*gw$¶ D;¨©¹‚f¼¦ºgaAKÕ¢X,ЊS7#*"‚‘‚Â*böW£qÂòv*æéÝ]›ôË-ÚXÎÈîè …¥›¤…hÚŽœ³7q•(®ýfµ44z2¸Èl»e‰1¶yL°jÙŽµ9YF£¥Ä™áUíLRg»#Ys¹÷«Ë¾?šëoÈruª‡Ž´’Ž!ˆJRÀ-ÛTÚ5 [û‰»mÃ+Q$•7n|I˜sÐí¨%eØÚ{âزøOb ƒ„TûM0"Uò¥Lá7ÅhקÇl‹l!#,Âí<Ki}—ѪåÉo(©¥ÚÝlÂFsbCVÛqkÍÓì¨ø=;…Ú:TPŠ*¦Òˆªššr8㟸vœ‹L…‡×âW\7®œ¡rº.gÄy/,¹Ò_«æ9òÅoC<o>œçÜl&ÒóòàP a‰›ªÆÉåesC\tû0Ùw1¤Ý3ˆjT¥ã º&%°ÄA™§ò8r!E˜ây™ÇP<¯¥ôñMŽ‹¶Åí5Yž(²Óí¦[E7{û¨}u#ÇAÛŒ>ÆøåÎ#,Æ0YVAK_-JR6W;N¸õÇn'¼™6:)!vï@¹#Oé°FëJ®µLŽo‡Þ]±n`C‰ÐDZV#‰X×ÚídSÑcâ+²—:e£¦µ½h1®ýq#/»7,í!Ço^§®g¡²ÅsÆÔûø9šË©ëÉújk/\ÁÛ ¡Ð»®ºË|Pr‚ŸsmuërÒÜzùøÁã¡ÔΆ¦²=o³v2`=w+sÒ_âcU07«¹®+Î]-àË,S^•Ó¼úáõŽÈ[ù(ê§ÍÃD.!/)ëlxÄ–ä§0‡>p™áoÑÒ?NøŒ×Œùr_èõ¼ˆòîûIc TEdg°È•4hø}>M‰MAÑ¥«ÓCï3¦“Ð9ÅÛ#,h«»›³¨þ-#/a2x÷ù…ĬàÁñÁ…@lîœ*"Ú䈀ÅCBkVÀ½MË2*-Ý7=}›ÇSGÉÎOÔwÃ3 yQÌu4éxïl2=Ù©#/‘•WŽïú"[Y!¬*ÃѬ橱òÐ(Cµ{ˆiÀ€˜Î0ª˜aô;¼†&–ÓךÅñUv˜GÍZ j(±Í‰µ¶ðëËr·ëK‹0c8MëESÐcÝܶU#Uu#/†¦ÜTzÓ·0äi¬/#r§ºÕi,ÛsÈ+¼jM‚S&n(3pR;@©z’p€rž"3IÊ£Ù"ºá‰Þ‡†@è8š×bœÂ#*À+ZçE+³+ä`ƒ»ÎÒü#”Ún¬$È%ˆ€>¦ SΞWñ)×ØnôVf,Š\Så[ˆ„#¬ »~ñ…#/E³î#/ã³%½†?S…ÖÇ"u à‚O7à¼#/ïcg®Ö[mÆ¿Õ°Æ1fýºú¹ÉD¼:ïöR&°Ï Ðy€r2¥¬¬¤’¦º¯Ñ˜X ç¡]@k´z såé—Zt#/y¢o±ÝÊ\Ù£ë+ãÙ˜ØT×öŠ«ô’í¡(ÐIøL=—yÖÒ§³&‡¦ÝÒpC’A10%M–Ä¢ƒT!!aDÚ2HÚ@•dÈ(ÒÇ[š6II´[›^7’w\’JÌÕׯ6»zÍsš½^’©h#*阈¥ˆ ƒ x‰ «PE¨£‚‚Ħíì^Õ#‘@éX,m5€ÔPXPUŠ‰Cd±#/,´ FÅ/j‡Fëé~Ó/í5WŽÄ}§bÖL2€t9êׯíñ˜7K\eàd‚¢#Òl(©è4°ÂЖ·#’Æ´ÚÕ¯Û[Em¢ÚÁL„ #*a”’r³DÓ9}kT™Çƃ® ¡¤Õ,mð~ƒÙöÝãÔÕ™e©ÐRßãôŠ±Œc`ÒÅ#/ÝD2†º>œ(ÖŠ«wmkƒPg&ÄËø#,Å1h‘]…2¸™øMO‹7“lTé¸ÃVbã+«†#/RñÚ×ÐK£!#/HRUÐe!Ã)TE|¸ÓâopÇjê›Æ³‘, ,ÊŤÍÐÔq͉¨Òm6–5$RÂ]ÔV6&šcD0€J墣ܔYÈdÛ{‘§„M¶=po™×•Á8ÐhÍàŽB‚Ù7T€²bCš‚Ôxb2Çw.S5—¬2&àiC¡%#/ÄF©Ñ!Óc3aR÷.¢sSFíуMÜU=6µS Ü!µ—IÖÃZº¼âÙη–Vñ“m¤†6X*‘£fäEÓJ#,©¥Ãv¦ÓÑš#&›j#,YÁ¶Ød™ÒZü÷Ƶ:s“³v´ÀXVC3”ﳯ$ÃÁ&´žþonÛÈó»Ét«¬œäÈŒ{±â®±‹W"ˆs#m2‰l4²©½\Êøf•“%+XIwÜ&]J&0gHnÀot†Ú4ë;bµÍ¥"NÁ8Â7N8ë¨ã×gÇ*Lá‘9lw“£4<þlÀ{é1658‚/*N·T!#CLäè†JÇB-£pÊR#/”*à Ѹ)¡ÃHi4ØÄÔ ^5hÛÍÅ·“%ŽºíéÎÃ6¶réñ †@u¨lŠ•®¯4†®®ÖÒj0Ã(ÕYÍ–mÝF?'r%ÆcAÔæNiàÛ}zñ Žã Ó”¿J„FÓDu5OéÊËÜ‘ùÉyTlæWz:DÀšY¦ÆγŒÇv~i€¤WµßlPË`”¬iªª½–†BŒ„#/Ój²°<#,#hÆi-hœŒÆ¹0ôLÎmª"fæ`éÞÐhÆ>TºwÅFñ†FóHtë4ÛmºÒ æ(¬ÿRV£â¼ÃpÊ(øD#/14”{‘hÂ(ëvSNÐ4Ò1êÀÜ€ù$¯´Ðñ¤‹š$‰ÃÓoÌ¥08âd€ÓZ±™Ù6ôÁ—}X¥d#3»¸HÈmÝ&47,ÍÜhZ#,2j“#*Š…”l› „•5$ÈÄDÚ*‡6‘ð©5Œ;.©PÄ`Íjs¥#,4´ñ˜“C#Q©ùÖbË8ÈÇX3§aÈù…Š,^\Õ²¾LÖìê@^Ç´2ózåÏœªj,DAHŒ£´²î¡ÀÀbm¯™áèõëþü×~×k¢Êd“Y²nŸm«õÙI¾óÄvºÎ±&îM_··Ç÷ï’¡å8#*œ'}ª0O´¾ìÜ,äŸ[ɾÊxÌe¹¼yE€e¾ŸX>ã²@—Í3:ì^Ž‡ïá¹½½SvFµ4C·#/1²³mlºqáôÄÈ«õ=A_RCÍü@’ïêõ‡èéO¶Š §*×% ¤03‡ÏÃõyÁש‡/0<üSÍc5A8÷wùUc—dî‘€¥8MeøÚÁ#,‚âg¥þùQüú´5 ›fª¥pyr˜gÓy½ÏM¸Þ1µ7tÝÉ„D@täîÝ™ULm=ñ„–;£×è®Ï.CÐ>‰G¤Gh t6aÎèÙY‹h¦¨Ú @Ÿ¯‡Øtøuäc::‡§tò¦ T$hEÍ⢆HvÀC#/ÊE´L—-‰u×[¥^j™M¶ñ¶LmQu×W+NíWuÖ£mNud«DE±A@U"¾"êÀ?¶†³OÓhT'ôqò}<ªúŸÊ+‚‹#*"2aIZØlcHFHÄL”i¢i(Z¦VÂkÉ°[V)(ª$¬‘†3eE¢‘–…4Ù&”›%(¦Q *#CZ#/‰H–ŒÅ3E)¤R©FÉ0Û6a”$˜ÖÚH5ypé<åy¦£°ätPÈ_dN0=¼çc9n?$Ü/³eÍöï~g'Q¯ó"HH3‡p‡¡<~~—Æ^Ó—Ç%A÷8$´R8 ¸ÌP¨PÃè0/Z£†Y.#/²ÄLl^ì&>bm¿0C”m{Y²M+N${fkC"`Íq>:Ÿ…é¶í°AÚ—~Gy A$H¬&½»—ÀÈ8Ší:¶ö+‡I F"ÆÀå…U1w.üO¯£Ë0÷jêÏGl`^ª5MHm)ÞT¯¯…мÑI“7¨ôÑdÆ+00#/Ú?¨¨Á¿j5Q&Ûb©DmIkEuª×+/ÕÝnUÔ)51c>»ªæ2¼–š…ÊPJ¤}ibÒEŠÃ€À¸dË#/E…J!ì–~ݳAKQŸ¦å.¸ßÐÍ¡‹>mŒÄG©m@Û1q?º5[cJ¸º<j*(àÉZSR•[(ñ@Ùƒ’#,‚*!wNRš›¡`€(dX±Þ'’#*± ¬XëàÕhÇMî¼™gg+ÛÎ×—;F2•Ñšö•å%ãrÉ6ºíÚ Ópó/ÙËTÜ’ÑpyŒ ¼£ížq¦V‘®Q*Ú”¨'QÕFÌ„Îg›Òyè4%CÕ/3kš¾¦ýM£G½y«¾=À×:í¶û—®¼‡;”Ú6ù5»cM60ŒDlcŒHàÑ…Ÿ×yÀ‘xjpØŒòu·u#ªDèã‹i4Øóôê#˜Þ(È¢'DÍ! xCÂc êG˜Æô’ŒRÉÖØYU&Bà&&€X‚A‘ ™Xš–È,C“1—’D’I"s¸*‡KPõr¾ù0§B‚i¢`#JWÛ¢ZkXHª×§µ²ž‡òcn;ò;HVìûàNîîCÑV?ÙP÷´LGÃO‚1L~ÜãõdS!»HÏ(0¯x–gq7Ë‚Û²“ÓÚ@AÉùœÂu' ›Ð²JªAƒ¿››°d=…,’–’áŒ3Ê‚t‚&ž!ž~b!ï>3'†ý…Y5‘X»¾ª-xýšéû7¹ŠÑéwŒdÅgãá匪(ßoàÑ$#lç„÷÷`Gæ¿#*¢:ïÄi1#/šCKè.󅶤‰èý€ ›Oó4D}ô~‘EAI(>E²P™åBÝ´¢R¹ºC6Ó&T6#,š"J‹Av">èn}®¸#ÎÓ˜eªÐ‹êôž»¨›FuÕ~Ú¿î—Ôú³0NÐãcÔ)¥®l«¼ç¾ª2(B°]êË>TT·ÀdfêAiH2ˆH-H£ÈèÔXwiÇi<eº»äÐú½I7®Ð6¢j̨æïõ)‘’øB‘E¤÷T¶›–Qï8vþ‰›õž†9Aƒqb¥¤L½#/,ƒäÖö°[#,ÒÙ£@¨ï÷üü@“/q¥‰8#/±çˆÐqÂw´-7Òb»eRj93>þ©§º Q<:ÇàôÅ"2@Db`ÓíB÷ømEä̾×ðû7ÁDƒƒh>'ÂÃßc¦Ï§ãûláò×9¦%Éõºgá÷FÍqØéÍAªé¢Ä`C$Smn¬Éë#*;NÔèÖ{Òw‚dd5î`\ÀðdåÞ¸"#*ƒS›±ñÞ#,ÌåT˜H%ó¿h¯—>ÚÝM;½í/—QD9äÊðìk#/¼ûáÜãXëÆòFtd,kRÇ£œ”ˆm²YÜõ†ÞÆÙÞD^ñeyz>âª4"RØÓu´*é™ákYÔÏhg6UWXu…°ÓAI …")#,—[Þ˜–„©#_C+6‚Üdÿš TTZ'L‰0ß#å4w.äÖhßL 8Æc7)•%0æ™âV*TÌ€2N$oJf(n’ÐQÖBâ¢öˆZãfùÍ#, G:‰æm €.jhÎÎgõ,ÌÙõ³r#,£Å°ÆÈ”ãi8€ÔdÚ,K·Ÿ•<ÎÊ ô˜NØFzcf¶a¹êµëeœ“’Ct<’Á5åB`°’&”ÒÂ#*k#/#,ãð0¨J@bf¨F›ìR42´*ò‘>œ^#,“a†p#*Q#/°Ü†Ú¼Œ´*=i{µ…Š˜ˆT)"©¸PÁž¶¿mSð€˜Àcb°wïÒg®»rqBëJ¶˜hbæ^X@z‡H²™©˜W¡ÆtÊb@ô§(zO/kÙÃ9÷PøéƒFŒrv¡ŸZ¸v“-€¥+x¸0‹d&F955:fbZH¨™@œ“²Îؼ~>_î—²Þù‰mmS×L¦g:uqÑ€vXpI—Û²“,™¯Ná¿$ŒrÊoµH•ìÖÄ¥eÀ–xðžÞüp"±Ž Ñ#,Ê‘ZCCbDVÜ4%b Y1Še¤/BV²`’æAZ"ª”q'y˜å•°^ÀW¥™”ŒöÝaš•˜ó#º·KAv÷†=ëy£ÓŠËÁtá0%ÌoF1ÙÒP創ªŽÒ<Ê–27×1çKeh#,bì¢Ç-Nã¯w¥ƒ*#,^kß,<Ê0há‡~Y´ï\Æ`ÚÙêÀGsjs&´…!ßH’Út˜m*XeaLà>‡ªKK{;¤ÌI©0¶Ûm,ÅÉR=s§“™iIeó»K'Ðôå±ç¶#,Œ’úŒ‰Í.IˆfáÛpÞQ{HhM)ïjºlCl‚oO‚ݶةhw%„^Ì Õ-²šu8‚Çd;KÙ.žõeÖψ[m0Zu-eÄ¡ÑJV ‹—Mýš’-º»c¼Ägg…8!9Àû#/UóÚ$T°CóÃÆÖçšaU»ÆD<DC$–Ê0ëN“ŠŽ,9ï4`>ƒ’γܶhÄ\2y”ÖgÛ2F\BÅ>þ´xXX½q-BÕuS(yÄ×^ŒNí¼'×Xªñs&âiÒtîJ¥kŽµ#/µ‘eP#(k—„+r¹Ã•U[^0V$#/˜ké&õ`I’¥G@8…ºŸL½(‡"ß‘kgÌ•šfÚj2n#/)öZZXRZ:.îåÀ÷Œ=õŒ¢÷è"2pk“*Ð"ª}*eÇÄÂfÁÐ7§mÌtàÏÀpûõÇ~3·9B.ñ!ÁÉxuÏ8[sdÝ8|°P8o¡nI\Døéø˸Dp8o¬#/®½4i²5çRŠu#*Å8¤Ú¤<Ì@# c,²Ä´lÀV"„*0aª:³M±@9ÒƵ¥Ëˆ{ Ý-$]ÒA!'>wÂŽ¶³¬×a^pÛÞÌÚÖc4/_L|œÊvÔ`óñãó\ó†4æÏ:äa4µ‘ÏY¢ºÙÞPìÓR3Cj¦:ØÖ+.™&.×Û®¼uÞ…ÒÜ)UÁ9M(è=JdÝ9$Ÿ§_çøÊ4øm9§M¡KÙÃùæ¤ý=4sÚ·ÝÐ>ÁPb@P“sexÑÝÝGÀuóXx맑65;ŽSã? TÔÚ‡ÓŸ,Ì‹ž“Sz_.B=±É5Sœ<’GÁ,-&jeJÁ³†pѼ˜,LŽˆHd–°å Š–›lìþw¦”úmDÓÀª²¥È,PÐö.&Çã_—MÑ l:0‰Ñ¡V‘A ßJ,y#,Žš¡BPtžlÆ\bäù1)’ø½›¹mÒú5eaFUYK·Wiêö¡˜K#/œò±ÍSõÂv"roÏ6Ožç4e;Ñ@L4ÀÓH§ˆªÓ˜6ã‹ÑŽÂhÙ9’‡hôZbmÙ4ÐÖPå½1¼¶çu ^& w0¶YÆ¢/LÜÌÕ„Rï;&m¦ž ®íxnòfœ‰]-Êåë#,Ì#*ük4Ò&§n½§«¨&³[T¶¥‡O]nN2AË«&Ý«&šoÆBÃGåÐË®‘M3w†ÙqX‚ùaÒ7ˆâD²žwd,á´K D#,U)[ÛŽû‘Ö$„ƒ@tG¶.M"]Ĺ5vmM"ÐjvÓI13?~HâÓáÛ#,µ"GÁ†žjWF/#/#,K4m Šæ©CU&Æ;À÷nÀ’øY‡^IF#*¬áÍ0Qds°0bšøP›Ã|1‹šÆá®–ÄA `Œ‚ÜЕa¨»5IBkØfM7L¡ ŽAŒCN‚-.N³03'ÓðòäÇ—vk¡¼gt;Ï{’Œ¬•&ᣙbª%#*˜8é’°¡qŶfj61AHP¥)K‚ÀIŽ4o‰ÝÌÌèÙØ«ÝİѵŠÛXMd9”°ÚD¸q43‰1‹¡P,pĨo¿…Xä$#V’2®[läÀM£”‚1`ºSFΦ‘ÝBFÖêJ€l#/.hE€Æ®•Õ)1⡘”4Eß#/psÏ{¸ãàÄF l4Ðä3tÃD²Å°œ V°†v6ª0*ÂÛ1¤T°ÎÐÑQdn 1*‚†ýy>^w²Äsìp 芃(¢¢"€É]¹Ï»^Šš×vZ¯çë“Ô7#,?w5Š ÂÑv","B@#/‹ kP´UC (#*¶ß€ãVz 9‘—:郸¨\€q#,¯ŠÎ+Ht_¯æ¦ê–Òü¸ßL…*ŽH†v_¨²˜Ò‘6Qš¶ATA³/°Ú»ÀœÏ–fqÏyy,37êi1ÔyMŽ)ôX#,&A¸Ñ)õWVª”©±—fM†g;» k—d \¨C9È×óK5òíé]yë«’ªŸU¨‹ú ›£ g.e+ÙH¬ˆ¼‰¾¤9_®°—ªd ¢‘†’œ)7‡vpÒƈ?–Ýé¦NÁ¡o\I}×,±Þ\©‡+,YÄL"«U?,“LwA™)å+H¾’&™2wäívÇÜÄsVš<º;ÛGìsuÔˆpœa€Í#*µ+öÄC”¸Ù}5S±n‰^Fãs¯mÍkÞç¬Örâ(².nôÎ7ßVeŸ9•s> (A=´`ˇà|Ôè9e¾Dʳ9ß^Ø¢{¢#*ÙöÁ¾ë¡¿78ÃVH'Ö@H3‚5RE<Råj4S‰Á‘!&}Ç…}çlÜÌc¶êà;IZ0i(ÚcHQ;d‹^“!2Jf¼KNñ¹5æîÑš‘]ço^p•éÓÕÒ¹q&8å ÔrK0Ä$(,ƒM4¬´[Êšõ<õºæIK³[n·¶àÛPÒI=ðÏ®,ੲ¥=+K8Ö\†¸í„òàifní5aÅÑŠÌÌÑÔ«3I8…`È2!ñ)†Ç èìíÏ·¿ÌøÃ'†{‘#/Gè€ôÁQìG´6›Œàþf¡$Y9)“絶ŠªŒ@ˆ4:HñÜÂÛ‚#,¡]’&!’˜W‡Ä:o‡(nB¥šë"h¶#/:x‰A¼ ==6 ÌåÄ’ÞÇb<YiÞöÇqœð±Ûñ‡ù¬!êÛÏÊ+uw}•.=~¤žŒÎ‡D‹ú²ní:˜uŸ¬Ù4(PøNk±ƒ·e†Dâ¼äÔã#,T#NþìLɦ•—`píݨÕrd.0)2å“-ö&§æÊ™“n±“w,7¸ù ( ›XMÔ " íŠ2Š>õ¶õÑÖ¢šº±«ŠðIAtÀ¹¡´æQ4pÌ|l¤µE—-"1ÓËÍŒ6‚ò@61ý;}¿K4Úb©¬DõÐR?i¬ã†tÈkÔÒŒ™Ò²iw#,öž ?6PŠ ¿T%R+~¥mÛf[M$¢±l)FM¶Mi•÷f²[^š×,0•*(¸ ¬ 04ˆ‰r#iQRö0YV¢È‹d‚·HŽˆD€°B&h¯LPw($öeèÊŠ•!tËþŒ#*ìTCg†U·¸ÔÀêûlÎ,"`ÈŒŠÀ#/B#*ê½ü|9|_ §Ø¦¥AR†ü.ã0Ô,¢²2Œ‚¯;~{ƒVúÃñצvž¨ãžÏ,kŽ[·Xé#,âèшÍÁ±CÖ<yÖ•ÄêÉ©î$高µÌbΚˆJ)c€p0dX„F‰šBJ#,…j\¤j±D€(ÈÙ\Mp¨‘2YM1:ŒJ±ªÀ²Ó.[jå/[dÚ®ÎÊéWVܼݮ´U<ÜFÛªMkh¢é\@ë9·œ¸oÓdVm6ð¶À8`•ÍU⥅ 72,Às4µ§Ü€=ÁÔñ=<^Ia 1V=¼ý¾êfnNf0šƒ*Ì‚BšÃzÖL‰_\lÜ3ÄžHLë¡ÓÌ;ç›.ƒ¹Ü@ä%‰#* Åó@V‹ºrÙ˜oôÔ%ß2ɢϊ¢Íô0€öP$Yu©%!((ŽY!C4ãRØ/¶ÔQ†ÿ17w´ð›,@#*-„n¨äBŠIóüš¨ù’c–ÁÆ÷€ü ÇÇNƒ|0V!<ÇAD¹ã;04U×;‚‹RIA@ ZlTj"¥xŠíêÌJL°XéùoÄ,%Øþ¾XÀÖÕ—Žvq1úÌÎDßZ#,Šó÷Õ›žGêù@ý ö¢€àpŠÒXb’ ÒS*œ9ÙO߸An‚¹ë9BPR:¤Iû›OR|0§{Áà{ %àåãròI¦³m¢™´š’•K*™1¶%(eªØÕ˜k ¡6Vb«IWð4V®3˜¢2$€ÅŠWž „tó'¦8±UÑ‘ <¶#aà¢N¾™¿Ï59¡¢Þt!¨Ý—GVƒÔ íX!°M¼°îÈ#*‘ #*0}ÑÑŸ28O¯5Kxléön¤œùÚ*‡Á´OYﺂb ª#*¨íbü3×Ó $:N~;øŽõøv–õ×¹7Àk>½f9”¸^Œ2j•h«Íø½>nÏí©Èk ‰ÛDÕ3£vwwHƒraÛ… joJÜPmÈ‘«%—rX>tDÙA«”á ðÑÇH³¤1D’WÎÂ#«ãzÖÄ&‡¤%ÃÐÖ`A•XQ[ÔíÇ1ÂI›`@éi“BJZ·ÅXâÜ ˆÁ¨kÊÄYK’hHM…í£¶RÀÓm©Õ“‚p6¡ÈAH#* ®#…¹CyBUË(nCMdÍ5¡lˆ˜.éÚîôENzé ! ;BÖ‹Fˆƒè2²¹J5 ßäh`}OF´·ZÓ„¿9`3ù“d]S“æX¸@5$×Ûèz”²Yî+¡gwB0T¡W¾ÝÿE êcDR1‚M:î?h*{;!â‚øxxi&;ˆ!¸ Š#CG4U&ç„z.–7ü#Z|<å#*^þó³Öw†#/¶*y25Päx(Î+4S(•ñêöù‚ß{aˆP”•¤TÄ–÷ê}{~yõO·õô2tª“;@-œk4©#/S°ÛBáÞ—g?œœû5fÆÛj±¸”1ŒSfµË<gï?“‡¿wÓÃÛ¹TD*b!p"7sø䊼À¤÷€Ovî»ú.óRtjû;[u\#,›DÔ<€ÀP¸öÒY³^óüô5Ôícš÷y‚çOÞHX´.…>Q´þ;Xˆ«¨vÅ•x(ôÓk, N½ÚÓk5ý”Þ¯«`Hd£3=uÔFÄhÒnuÝrF$Š"ÁJ.*(KHS>bSv\—Š¥ÛNRQ´¥”a¤6ŒQònÚ,äl–5 µ&Ò!.n’K&Æ”A#¿ …G´ýiÚ$Z†âÛ¶}^ãÃÆQAEWȯ¶Ç‘‚ög¬< +5L'œÓé} §¤çÔ__áb,–Òj•f6”²Ú È‚#,Á|#,ÃÔ‚tÈ„„,HTjR66!K2U6üý¯Ñù‘Q¾ö«é¿‘†‘hÄØØj™¶*Åe)RªyÀ>^®üfDEØ4aú#*ˆšþÈJZá¾{‰™…"ò!’žLâ™Á5$`äNPd2Ò5EEŒScXZÊØ¢ØÙ‘‹c+M(¶h1=7ÚMµ "@ˆg —€„^§ù å~‘TØ»ü:ÝAçú~ùw_q$ð#*ñ½aÅ£'¼}›êÙS^eMW!aWÛ²’b|á˜7‡`á"F=¡«Á®´-ÌQÓIŽ½¨¾'¥Ï¢}´ÕxÛô^öT©mŠ6ûÎWö3û¿:$Š›ò]ìö)0ï €PÞÈPŒXD#,ÃùPÞ›:5ñö`-1¶ ØõªlúrAÎÈ™ )îZ€B„‚ô#/&» ‹çÑ·›Ö¸¦µ&®nª‰kIe¦u6W¾íå1¯V1!s[}6yNÍAþ$6PF…`65‘/*4øÐ #4ˆÈf÷Ø¿M¼¿4~iÑ󬌘eë„ÝáË^ *I¯Ni`MÄÆhvø([;3‰iHÚy—ËíÈ+«`šŸ”"MÎ%«YkfJ8Ô™§óÑñEËz¯‹{SßÎãÿm$sÒÄ}²fh‡ä#,At±Ì~oÀE#/A(óóm¾Y}¼nÉAªY¦•$%"£-ŒTPj#j“j…-û[oµ«ÆV©1‚¬Š 0ˆÏ󧳶ÎÙf„‘¸’)THÂmB®¯À.mˆ±„^q°ˆš6™²AòvîC¨T#,úÀ=ŒúãžõÛ²ô;®:‘Hÿ`‘W–ѪŒmAjPª4&Úl±±V£)k6¿n¿!Ã=:›üݽ´ªË%$å5öãùYõB†@ÇEõ9ÆÚûÚk‹ox„‘µ%)”p‹,*²Ä¿Hð7;ç‘V"´¥·÷žIdní™bJ8,,ŒN(&xݬlÁÉÑUÿ³²¨ØØÀ;!…^X¯:×Mãò[¬Òjh¥KzÍ…vÓ»6»»+ƼÞVº¦Ñd¶ôÖ䨷›ºÊnÌÊ®¹»j*çjl™e«Ë»i“k»«»µ²l©*dJlÚCE„ˆ#/1rR,$0uyvºr¯"o%¶a¦õåÄUJilš“*UéZê×AEÝ@…°‹$AÆ ‰#/$R×®î[µÝºË[.šé+‚"g\6<Õ0(ѯhFÑöÕÊ6'î%øI7øƒqd8о4d-‘QŠ ™’1À*ˆ’þ:"9‡ôokÌÜ1Ãp¯àbÛM$CFÔI7œb€ÃP8ÀÝã³ÄÞÜíuêÓªæ‹r1îEÛün_¶à†Ô‹˜Ñ|JžÏ—|óoŠvpáŒ#/fo‰¬7 ƒ•)·uF±±êÜn%Ä…»ñãÁöþ¢Ó#cÔ‰¡ª©S‹¥ñ:3¬[À¦³M4ÀeÂßg‘™‡®B†vÇœA$QGÊ)‰Ä¼.#,õêLqá)Ñ®b~l"‹±$H;Ø`ȵR]@ÝÒbz}7˜º²"îü‹ïÊIy#*ˆ;r¿Õô:}ÒV]×J“×[Ø7ëM#/ØvòÜÄÜï´G#†˜G¼‰4û}áÄÏY5y7jÀùE’ hŠTp7ÃmuS©ï5ps.1û§¬–[!P?s°ì\ø0†”2|З~¥~ÈfÒHý´V0Ô䎦蔤OTê>Ä¢qfª›”ÈÙAJÒu2Ø*Ø„Ïq!¥µQ{†´Ìö'X›GS„½ºÙ€Bˆé†G%±Žß!®ÔÙ´“¦¬RòÒ4S*M¢¯â”¦h"QQ‹V!¥pýÓ‰«Îùçž_æJÉv˜ÑÑÉ#±U¬mœáÖA.îqµÿ/£˜m‘^hΙ-S¬ÔgÌÑÐB»{œ'9—[ýô!D¹kšgÏ2Žë-“=Vmá6[dS)„Õ#C“÷$ ¶""³=ÕvÎÖßÆ[$“…ŒGX ÒÿXÕûê«À0ÚˆŒ‹G¡[eopŠ®¾)ã¾”(‡ÜØç#*p0a9QõdìJgÜO*Óc4ÃŽ˜v+iã#,nlA‚rËCzY”Ê-4\Ž!!Òx£–»ò“pú™²À’˜ccò4s·ŠÛYø€…cïIÊÁ##Üj/´yÒq^’ E0{ag3´òöèd@Þæe¼§²Q½Vü½ä;¾ÿmµ`4Ö%k¤ûlî<b”º(‰>Üà„Ð?#,_Àx€ÈA6Ídméˆ,¤Aê#*kßÀ|ÖY…<ò^õ”€„qqÝ3æÏ·[ù¤üw¿NÝ€|‘eyô5 lT&¯×aVÑgöÿèÿåÿwýÿüÚ¿øÿÏÿý¿Ãþ¯ùÿøÿŸþ#,–]ÿòéÿ·þ?ñÿÏþûðúýßFñú>Oÿ??ÓÙùÿãü¼ŸþïòÿÿÏû¿·ü¿û¿þ_ôù9Oý=/‡ýßóéÿ§ÿîíþÿŸþ}ý?WÝöSæPû~dÀüCðˆóð?*&J^!d$Ì«‡ötŠ¤#¼…AÜD¢#*áÁª`ñ”ÄJÕ‘q?èdÐ'÷$‚¨¨CCtºŒþ£þ@ž©îëHfgÕóÚ›kð*ºÄ¢9g\„‚=Zí.Í6ˆk3’BšÌAÄFÙ`þ‹<8ÞÊàY:Çü7ïÚ™›Jš¡ý‚Û¡âÄG«ûÉî‹þ´c¢FG¸Å.f;k·½î?Ñ[›°TŸóNXs‘Œ÷rûm1¬öæS¬€½ z®#,E˜£ëý¸ÏV¸ÿ|úŽÙÔŸéðŽg¹gõ_Ï1x·¸QCâUË*À†˜ ÁþëJ’”X.–H‰&RHCD$wû1ýPÜ'ƒCŽ o÷µ‹ž=ÿKáaN–&„Ìs+j²3Á[3?Úâí,{R¦¤ˆo½)žz\L¢ŒÒë!TøÞÕn(ÎJ‡—šW#,ÂŽO݃FÈ8žõ‹ï‡Ž½¹˜ø¢3Á´¥RreºpÐÒðe–%²ØÁª%ƒ”>m=³z*(íZ¦Ãn:.k,°F™ Õʉš–6‚XŒb‰bµÒa!&aÅåGÊY°²]É`Ë«vL„“‘•MÅ°×Â!bàÞŠFîîÝ4A#,hÆó)¥&%aËÞÖKF5n¡ðCA§×\ÆQê™°›=NŽîì6P®"”Å’#.H²F#¹yÛÈÌ1—CŸ®ù Û‰™ùåžN~‚¶y”ë³y.‚u§HØÑ®Á’À¡ w!†<±DÎ-sÐõŸëVvú¨áç‹À@ºõ›5NØ–ºµš©ŠïIdÁ:1b‘q#‚êðÂ]ÂŽ3d0UÊñóöû¡¿ªp»kÈÁUE¤™åt#,ãû}<¾ïÖGñ#,/•íNÃ4DTdôÅ#*ŒP¤ÆÜ»ºàÔÛu—Àˆ9™BFA5íwK†Ç54ÿxÒ–#/€ø H!.wwz<ǯ°LÍ]Ölk’„‰D†½C)—˜Pߟ N¥.$ 壯åÄfgßÿœM&†a~«FN½Æ|®îÛ"ˆ°"aŸ=¶t5hl-ßÓZÄé`Ôj$ ª@”Lh¡xÜME(mA¶6Ô²fÛE²V2F’aF2#/šúnÚ»m¶ø|:Õº"xióù#/‹œüHýqURÔU¼à Š#/[N‡´ 2âS@FHÀØ)ÑÒ5áõ~“Ig·¶‹Á~¹|-p~™Æ¸˜§B¶?ðãS9>#óò_ª’"ŒøˆuÁ0W^ÎŽßðÉËå’´]Lô¢aͲ6r]ÔCã#/¿÷OòÂ>‚'Ëû}à ÝÇZBwn.7ÅPJâ„›‚t€;35v礀uÙÅ+,mD2€HÎΕ=ÛCéÓËmO˜ÏFœè‰óÔnñó˜Ú”6aƒ(idÇj¾V&è#,³QÄVa~Ú-€Ÿu›w…,øÍÁ [¢²ZûºWØf%¤ßÝršÑ¢ß·Í»,kx´[ëkš’±ô5]5£Å¶ôÑ«ÙjÞ¦µ&Å Ö¯|Ö¹h4Â’ O?fóL4ë'elÖæôP8LÉá¡5EiMŒþZéÖÜÿÎPÇõ‚s’)ÝD#,Ç{£V.xŽ¿$&Z÷øð7‰gÔ=ñ1^×æ^í©ë¥£€P\‚wÚt‡¢ýÑPh5É@$gY¼ti¡oøý“¿Ãì”têzUÞ¡©ö‡1|¡u?±€Qn*u>SR?ûb«¬#*P ˆ"A‘gMr=8m»¶¹²Ú²[i™®Ýµ]–¯’Å6jM{^Õ~‰mH¡(9#Þ{;>¿–šÈ¶|ÄÕ„éÝïOz/§£îùºiÚf_-?{Öq2c®k$Šz¢|eˆ2Ýø‡åÿ¹Cóm½ÿÞçû·…JÐx^'Å$‚ÀYÿŸd#/B#/ÿÚ%MdÃßû©ÿqÿã#*H*ž°C.¾¿ü'g/ýí£ÿ˜\‡ùòeÐpØ,òÅh?ññ‡þ_îm~…ú|Þÿ±ØiæÐìŽ\Ä<éwtzñã‡mø½N0ØzK½þž#;â3Þ8×ÿ-§×æ:ÿî2ð¤ý1ûˆ—ŽQH@ü¿ò¥ßï—ùX2)Á†É“øÙïóÚkÿŽ¶wmá‹p¡]DÝ«þ^Á¿#*Ê =þfb~-`†¸©q$ BßÆ¥øhµœ•ÛÄ⨊gßf«…ÆY̘wÈânÓ§m3 ÊÊÇòç,Má†/-„±¿Ñ8¨–¼§0aw<~_o,Áм²L¸ÙB·9Á—††Š$\ 0Zpá¬8Cè Ãr†¾‚§@ùdyòöΰM…Mð„vE½Rh{Ìx¶’HÀ„œÃ‹×³g«gìÿ™¦çñ?oê5~oÛÿ‹¹"œ(Hní±€ +#<== diff --git a/.gitignore b/waflib/.gitignore index 8d35cb3..8d35cb3 100644 --- a/.gitignore +++ b/waflib/.gitignore diff --git a/Build.py b/waflib/Build.py index 1afcba6..1afcba6 100644 --- a/Build.py +++ b/waflib/Build.py diff --git a/ConfigSet.py b/waflib/ConfigSet.py index b300bb5..b300bb5 100644 --- a/ConfigSet.py +++ b/waflib/ConfigSet.py diff --git a/Configure.py b/waflib/Configure.py index d0a4793..d0a4793 100644 --- a/Configure.py +++ b/waflib/Configure.py diff --git a/Context.py b/waflib/Context.py index bb47c92..bb47c92 100644 --- a/Context.py +++ b/waflib/Context.py diff --git a/Errors.py b/waflib/Errors.py index bf75c1b..bf75c1b 100644 --- a/Errors.py +++ b/waflib/Errors.py diff --git a/Options.py b/waflib/Options.py index ad802d4..ad802d4 100644 --- a/Options.py +++ b/waflib/Options.py diff --git a/README.md b/waflib/README.md index c5361b9..c5361b9 100644 --- a/README.md +++ b/waflib/README.md diff --git a/Runner.py b/waflib/Runner.py index 261084d..261084d 100644 --- a/Runner.py +++ b/waflib/Runner.py diff --git a/Scripting.py b/waflib/Scripting.py index 749d4f2..749d4f2 100644 --- a/Scripting.py +++ b/waflib/Scripting.py diff --git a/TaskGen.py b/waflib/TaskGen.py index a74e643..a74e643 100644 --- a/TaskGen.py +++ b/waflib/TaskGen.py diff --git a/Tools/__init__.py b/waflib/Tools/__init__.py index 079df35..079df35 100644 --- a/Tools/__init__.py +++ b/waflib/Tools/__init__.py diff --git a/Tools/ar.py b/waflib/Tools/ar.py index b39b645..b39b645 100644 --- a/Tools/ar.py +++ b/waflib/Tools/ar.py diff --git a/Tools/asm.py b/waflib/Tools/asm.py index b6f26fb..b6f26fb 100644 --- a/Tools/asm.py +++ b/waflib/Tools/asm.py diff --git a/Tools/bison.py b/waflib/Tools/bison.py index eef56dc..eef56dc 100644 --- a/Tools/bison.py +++ b/waflib/Tools/bison.py diff --git a/Tools/c.py b/waflib/Tools/c.py index effd6b6..effd6b6 100644 --- a/Tools/c.py +++ b/waflib/Tools/c.py diff --git a/Tools/c_aliases.py b/waflib/Tools/c_aliases.py index c9d5369..c9d5369 100644 --- a/Tools/c_aliases.py +++ b/waflib/Tools/c_aliases.py diff --git a/Tools/c_config.py b/waflib/Tools/c_config.py index d2b3c0d..d2b3c0d 100644 --- a/Tools/c_config.py +++ b/waflib/Tools/c_config.py diff --git a/Tools/c_osx.py b/waflib/Tools/c_osx.py index f70b128..f70b128 100644 --- a/Tools/c_osx.py +++ b/waflib/Tools/c_osx.py diff --git a/Tools/c_preproc.py b/waflib/Tools/c_preproc.py index 7e04b4a..7e04b4a 100644 --- a/Tools/c_preproc.py +++ b/waflib/Tools/c_preproc.py diff --git a/Tools/c_tests.py b/waflib/Tools/c_tests.py index f858df5..f858df5 100644 --- a/Tools/c_tests.py +++ b/waflib/Tools/c_tests.py diff --git a/Tools/ccroot.py b/waflib/Tools/ccroot.py index cfef8bf..cfef8bf 100644 --- a/Tools/ccroot.py +++ b/waflib/Tools/ccroot.py diff --git a/Tools/clang.py b/waflib/Tools/clang.py index 3828e39..3828e39 100644 --- a/Tools/clang.py +++ b/waflib/Tools/clang.py diff --git a/Tools/clangxx.py b/waflib/Tools/clangxx.py index 152013c..152013c 100644 --- a/Tools/clangxx.py +++ b/waflib/Tools/clangxx.py diff --git a/Tools/compiler_c.py b/waflib/Tools/compiler_c.py index 2dba3f8..2dba3f8 100644 --- a/Tools/compiler_c.py +++ b/waflib/Tools/compiler_c.py diff --git a/Tools/compiler_cxx.py b/waflib/Tools/compiler_cxx.py index 1af65a2..1af65a2 100644 --- a/Tools/compiler_cxx.py +++ b/waflib/Tools/compiler_cxx.py diff --git a/Tools/compiler_d.py b/waflib/Tools/compiler_d.py index 43bb1f6..43bb1f6 100644 --- a/Tools/compiler_d.py +++ b/waflib/Tools/compiler_d.py diff --git a/Tools/compiler_fc.py b/waflib/Tools/compiler_fc.py index 96b58e7..96b58e7 100644 --- a/Tools/compiler_fc.py +++ b/waflib/Tools/compiler_fc.py diff --git a/Tools/cs.py b/waflib/Tools/cs.py index aecca6d..aecca6d 100644 --- a/Tools/cs.py +++ b/waflib/Tools/cs.py diff --git a/Tools/cxx.py b/waflib/Tools/cxx.py index 194fad7..194fad7 100644 --- a/Tools/cxx.py +++ b/waflib/Tools/cxx.py diff --git a/Tools/d.py b/waflib/Tools/d.py index e4cf73b..e4cf73b 100644 --- a/Tools/d.py +++ b/waflib/Tools/d.py diff --git a/Tools/d_config.py b/waflib/Tools/d_config.py index 6637556..6637556 100644 --- a/Tools/d_config.py +++ b/waflib/Tools/d_config.py diff --git a/Tools/d_scan.py b/waflib/Tools/d_scan.py index 14c6c31..14c6c31 100644 --- a/Tools/d_scan.py +++ b/waflib/Tools/d_scan.py diff --git a/Tools/dbus.py b/waflib/Tools/dbus.py index d520f1c..d520f1c 100644 --- a/Tools/dbus.py +++ b/waflib/Tools/dbus.py diff --git a/Tools/dmd.py b/waflib/Tools/dmd.py index 8917ca1..8917ca1 100644 --- a/Tools/dmd.py +++ b/waflib/Tools/dmd.py diff --git a/Tools/errcheck.py b/waflib/Tools/errcheck.py index de8d75a..de8d75a 100644 --- a/Tools/errcheck.py +++ b/waflib/Tools/errcheck.py diff --git a/Tools/fc.py b/waflib/Tools/fc.py index d9e8d8c..d9e8d8c 100644 --- a/Tools/fc.py +++ b/waflib/Tools/fc.py diff --git a/Tools/fc_config.py b/waflib/Tools/fc_config.py index 222f3a5..222f3a5 100644 --- a/Tools/fc_config.py +++ b/waflib/Tools/fc_config.py diff --git a/Tools/fc_scan.py b/waflib/Tools/fc_scan.py index 12cb0fc..12cb0fc 100644 --- a/Tools/fc_scan.py +++ b/waflib/Tools/fc_scan.py diff --git a/Tools/flex.py b/waflib/Tools/flex.py index 2256657..2256657 100644 --- a/Tools/flex.py +++ b/waflib/Tools/flex.py diff --git a/Tools/g95.py b/waflib/Tools/g95.py index f69ba4f..f69ba4f 100644 --- a/Tools/g95.py +++ b/waflib/Tools/g95.py diff --git a/Tools/gas.py b/waflib/Tools/gas.py index 77afed7..77afed7 100644 --- a/Tools/gas.py +++ b/waflib/Tools/gas.py diff --git a/Tools/gcc.py b/waflib/Tools/gcc.py index acdd473..acdd473 100644 --- a/Tools/gcc.py +++ b/waflib/Tools/gcc.py diff --git a/Tools/gdc.py b/waflib/Tools/gdc.py index d89a66d..d89a66d 100644 --- a/Tools/gdc.py +++ b/waflib/Tools/gdc.py diff --git a/Tools/gfortran.py b/waflib/Tools/gfortran.py index 1050667..1050667 100644 --- a/Tools/gfortran.py +++ b/waflib/Tools/gfortran.py diff --git a/Tools/glib2.py b/waflib/Tools/glib2.py index 949fe37..949fe37 100644 --- a/Tools/glib2.py +++ b/waflib/Tools/glib2.py diff --git a/Tools/gnu_dirs.py b/waflib/Tools/gnu_dirs.py index 2847071..2847071 100644 --- a/Tools/gnu_dirs.py +++ b/waflib/Tools/gnu_dirs.py diff --git a/Tools/gxx.py b/waflib/Tools/gxx.py index 22c5d26..22c5d26 100644 --- a/Tools/gxx.py +++ b/waflib/Tools/gxx.py diff --git a/Tools/icc.py b/waflib/Tools/icc.py index b6492c8..b6492c8 100644 --- a/Tools/icc.py +++ b/waflib/Tools/icc.py diff --git a/Tools/icpc.py b/waflib/Tools/icpc.py index 8a6cc6c..8a6cc6c 100644 --- a/Tools/icpc.py +++ b/waflib/Tools/icpc.py diff --git a/Tools/ifort.py b/waflib/Tools/ifort.py index 74934f3..74934f3 100644 --- a/Tools/ifort.py +++ b/waflib/Tools/ifort.py diff --git a/Tools/intltool.py b/waflib/Tools/intltool.py index af95ba8..af95ba8 100644 --- a/Tools/intltool.py +++ b/waflib/Tools/intltool.py diff --git a/Tools/irixcc.py b/waflib/Tools/irixcc.py index c3ae1ac..c3ae1ac 100644 --- a/Tools/irixcc.py +++ b/waflib/Tools/irixcc.py diff --git a/Tools/javaw.py b/waflib/Tools/javaw.py index f6fd20c..f6fd20c 100644 --- a/Tools/javaw.py +++ b/waflib/Tools/javaw.py diff --git a/Tools/ldc2.py b/waflib/Tools/ldc2.py index a51c344..a51c344 100644 --- a/Tools/ldc2.py +++ b/waflib/Tools/ldc2.py diff --git a/Tools/lua.py b/waflib/Tools/lua.py index 15a333a..15a333a 100644 --- a/Tools/lua.py +++ b/waflib/Tools/lua.py diff --git a/Tools/md5_tstamp.py b/waflib/Tools/md5_tstamp.py index 6428e46..6428e46 100644 --- a/Tools/md5_tstamp.py +++ b/waflib/Tools/md5_tstamp.py diff --git a/Tools/msvc.py b/waflib/Tools/msvc.py index 17b347d..17b347d 100644 --- a/Tools/msvc.py +++ b/waflib/Tools/msvc.py diff --git a/Tools/nasm.py b/waflib/Tools/nasm.py index 411d582..411d582 100644 --- a/Tools/nasm.py +++ b/waflib/Tools/nasm.py diff --git a/Tools/nobuild.py b/waflib/Tools/nobuild.py index 2e4b055..2e4b055 100644 --- a/Tools/nobuild.py +++ b/waflib/Tools/nobuild.py diff --git a/Tools/perl.py b/waflib/Tools/perl.py index 32b03fb..32b03fb 100644 --- a/Tools/perl.py +++ b/waflib/Tools/perl.py diff --git a/Tools/python.py b/waflib/Tools/python.py index 25841d0..25841d0 100644 --- a/Tools/python.py +++ b/waflib/Tools/python.py diff --git a/Tools/qt5.py b/waflib/Tools/qt5.py index 4f9c690..4f9c690 100644 --- a/Tools/qt5.py +++ b/waflib/Tools/qt5.py diff --git a/Tools/ruby.py b/waflib/Tools/ruby.py index 8d92a79..8d92a79 100644 --- a/Tools/ruby.py +++ b/waflib/Tools/ruby.py diff --git a/Tools/suncc.py b/waflib/Tools/suncc.py index 33d34fc..33d34fc 100644 --- a/Tools/suncc.py +++ b/waflib/Tools/suncc.py diff --git a/Tools/suncxx.py b/waflib/Tools/suncxx.py index 3b384f6..3b384f6 100644 --- a/Tools/suncxx.py +++ b/waflib/Tools/suncxx.py diff --git a/Tools/tex.py b/waflib/Tools/tex.py index eaf9fdb..eaf9fdb 100644 --- a/Tools/tex.py +++ b/waflib/Tools/tex.py diff --git a/Tools/vala.py b/waflib/Tools/vala.py index 822ec50..822ec50 100644 --- a/Tools/vala.py +++ b/waflib/Tools/vala.py diff --git a/Tools/waf_unit_test.py b/waflib/Tools/waf_unit_test.py index a71ed1c..a71ed1c 100644 --- a/Tools/waf_unit_test.py +++ b/waflib/Tools/waf_unit_test.py diff --git a/Tools/winres.py b/waflib/Tools/winres.py index 586c596..586c596 100644 --- a/Tools/winres.py +++ b/waflib/Tools/winres.py diff --git a/Tools/xlc.py b/waflib/Tools/xlc.py index 134dd41..134dd41 100644 --- a/Tools/xlc.py +++ b/waflib/Tools/xlc.py diff --git a/Tools/xlcxx.py b/waflib/Tools/xlcxx.py index 76aa59b..76aa59b 100644 --- a/Tools/xlcxx.py +++ b/waflib/Tools/xlcxx.py diff --git a/Utils.py b/waflib/Utils.py index b4665c4..b4665c4 100644 --- a/Utils.py +++ b/waflib/Utils.py diff --git a/__init__.py b/waflib/__init__.py index 079df35..079df35 100644 --- a/__init__.py +++ b/waflib/__init__.py diff --git a/ansiterm.py b/waflib/ansiterm.py index 0d20c63..0d20c63 100644 --- a/ansiterm.py +++ b/waflib/ansiterm.py diff --git a/extras/__init__.py b/waflib/extras/__init__.py index c8a3c34..c8a3c34 100644 --- a/extras/__init__.py +++ b/waflib/extras/__init__.py diff --git a/extras/autowaf.py b/waflib/extras/autowaf.py index a4a06ba..a4a06ba 100644 --- a/extras/autowaf.py +++ b/waflib/extras/autowaf.py diff --git a/extras/batched_cc.py b/waflib/extras/batched_cc.py index aad2872..aad2872 100644 --- a/extras/batched_cc.py +++ b/waflib/extras/batched_cc.py diff --git a/extras/biber.py b/waflib/extras/biber.py index fd9db4e..fd9db4e 100644 --- a/extras/biber.py +++ b/waflib/extras/biber.py diff --git a/extras/bjam.py b/waflib/extras/bjam.py index 8e04d3a..8e04d3a 100644 --- a/extras/bjam.py +++ b/waflib/extras/bjam.py diff --git a/extras/blender.py b/waflib/extras/blender.py index e5efc28..e5efc28 100644 --- a/extras/blender.py +++ b/waflib/extras/blender.py diff --git a/extras/boo.py b/waflib/extras/boo.py index 06623d4..06623d4 100644 --- a/extras/boo.py +++ b/waflib/extras/boo.py diff --git a/extras/boost.py b/waflib/extras/boost.py index c2aaaa9..c2aaaa9 100644 --- a/extras/boost.py +++ b/waflib/extras/boost.py diff --git a/extras/build_file_tracker.py b/waflib/extras/build_file_tracker.py index c4f26fd..c4f26fd 100644 --- a/extras/build_file_tracker.py +++ b/waflib/extras/build_file_tracker.py diff --git a/extras/build_logs.py b/waflib/extras/build_logs.py index cdf8ed0..cdf8ed0 100644 --- a/extras/build_logs.py +++ b/waflib/extras/build_logs.py diff --git a/extras/buildcopy.py b/waflib/extras/buildcopy.py index a6d9ac8..a6d9ac8 100644 --- a/extras/buildcopy.py +++ b/waflib/extras/buildcopy.py diff --git a/extras/c_bgxlc.py b/waflib/extras/c_bgxlc.py index 6e3eaf7..6e3eaf7 100644 --- a/extras/c_bgxlc.py +++ b/waflib/extras/c_bgxlc.py diff --git a/extras/c_dumbpreproc.py b/waflib/extras/c_dumbpreproc.py index ce9e1a4..ce9e1a4 100644 --- a/extras/c_dumbpreproc.py +++ b/waflib/extras/c_dumbpreproc.py diff --git a/extras/c_emscripten.py b/waflib/extras/c_emscripten.py index e1ac494..e1ac494 100644 --- a/extras/c_emscripten.py +++ b/waflib/extras/c_emscripten.py diff --git a/extras/c_nec.py b/waflib/extras/c_nec.py index 96bfae4..96bfae4 100644 --- a/extras/c_nec.py +++ b/waflib/extras/c_nec.py diff --git a/extras/cabal.py b/waflib/extras/cabal.py index e10a0d1..e10a0d1 100644 --- a/extras/cabal.py +++ b/waflib/extras/cabal.py diff --git a/extras/cfg_altoptions.py b/waflib/extras/cfg_altoptions.py index 47b1189..47b1189 100644 --- a/extras/cfg_altoptions.py +++ b/waflib/extras/cfg_altoptions.py diff --git a/extras/clang_compilation_database.py b/waflib/extras/clang_compilation_database.py index 4d9b5e2..4d9b5e2 100644 --- a/extras/clang_compilation_database.py +++ b/waflib/extras/clang_compilation_database.py diff --git a/extras/codelite.py b/waflib/extras/codelite.py index 523302c..523302c 100644 --- a/extras/codelite.py +++ b/waflib/extras/codelite.py diff --git a/extras/color_gcc.py b/waflib/extras/color_gcc.py index b68c5eb..b68c5eb 100644 --- a/extras/color_gcc.py +++ b/waflib/extras/color_gcc.py diff --git a/extras/color_rvct.py b/waflib/extras/color_rvct.py index f89ccbd..f89ccbd 100644 --- a/extras/color_rvct.py +++ b/waflib/extras/color_rvct.py diff --git a/extras/compat15.py b/waflib/extras/compat15.py index 0e74df8..0e74df8 100644 --- a/extras/compat15.py +++ b/waflib/extras/compat15.py diff --git a/extras/cppcheck.py b/waflib/extras/cppcheck.py index 13ff424..13ff424 100644 --- a/extras/cppcheck.py +++ b/waflib/extras/cppcheck.py diff --git a/extras/cpplint.py b/waflib/extras/cpplint.py index e3302e5..e3302e5 100644 --- a/extras/cpplint.py +++ b/waflib/extras/cpplint.py diff --git a/extras/cross_gnu.py b/waflib/extras/cross_gnu.py index 309f53b..309f53b 100644 --- a/extras/cross_gnu.py +++ b/waflib/extras/cross_gnu.py diff --git a/extras/cython.py b/waflib/extras/cython.py index 481d6f4..481d6f4 100644 --- a/extras/cython.py +++ b/waflib/extras/cython.py diff --git a/extras/dcc.py b/waflib/extras/dcc.py index c1a57c0..c1a57c0 100644 --- a/extras/dcc.py +++ b/waflib/extras/dcc.py diff --git a/extras/distnet.py b/waflib/extras/distnet.py index 09a31a6..09a31a6 100644 --- a/extras/distnet.py +++ b/waflib/extras/distnet.py diff --git a/extras/doxygen.py b/waflib/extras/doxygen.py index 28f56e9..28f56e9 100644 --- a/extras/doxygen.py +++ b/waflib/extras/doxygen.py diff --git a/extras/dpapi.py b/waflib/extras/dpapi.py index b94d482..b94d482 100644 --- a/extras/dpapi.py +++ b/waflib/extras/dpapi.py diff --git a/extras/eclipse.py b/waflib/extras/eclipse.py index bb78741..bb78741 100644 --- a/extras/eclipse.py +++ b/waflib/extras/eclipse.py diff --git a/extras/erlang.py b/waflib/extras/erlang.py index 49f6d5b..49f6d5b 100644 --- a/extras/erlang.py +++ b/waflib/extras/erlang.py diff --git a/extras/fast_partial.py b/waflib/extras/fast_partial.py index b3af513..b3af513 100644 --- a/extras/fast_partial.py +++ b/waflib/extras/fast_partial.py diff --git a/extras/fc_bgxlf.py b/waflib/extras/fc_bgxlf.py index cca1810..cca1810 100644 --- a/extras/fc_bgxlf.py +++ b/waflib/extras/fc_bgxlf.py diff --git a/extras/fc_cray.py b/waflib/extras/fc_cray.py index da733fa..da733fa 100644 --- a/extras/fc_cray.py +++ b/waflib/extras/fc_cray.py diff --git a/extras/fc_nag.py b/waflib/extras/fc_nag.py index edcb218..edcb218 100644 --- a/extras/fc_nag.py +++ b/waflib/extras/fc_nag.py diff --git a/extras/fc_nec.py b/waflib/extras/fc_nec.py index 67c8680..67c8680 100644 --- a/extras/fc_nec.py +++ b/waflib/extras/fc_nec.py diff --git a/extras/fc_open64.py b/waflib/extras/fc_open64.py index 413719f..413719f 100644 --- a/extras/fc_open64.py +++ b/waflib/extras/fc_open64.py diff --git a/extras/fc_pgfortran.py b/waflib/extras/fc_pgfortran.py index afb2817..afb2817 100644 --- a/extras/fc_pgfortran.py +++ b/waflib/extras/fc_pgfortran.py diff --git a/extras/fc_solstudio.py b/waflib/extras/fc_solstudio.py index 53766df..53766df 100644 --- a/extras/fc_solstudio.py +++ b/waflib/extras/fc_solstudio.py diff --git a/extras/fc_xlf.py b/waflib/extras/fc_xlf.py index 5a3da03..5a3da03 100644 --- a/extras/fc_xlf.py +++ b/waflib/extras/fc_xlf.py diff --git a/extras/file_to_object.py b/waflib/extras/file_to_object.py index 1393b51..1393b51 100644 --- a/extras/file_to_object.py +++ b/waflib/extras/file_to_object.py diff --git a/extras/fluid.py b/waflib/extras/fluid.py index 4814a35..4814a35 100644 --- a/extras/fluid.py +++ b/waflib/extras/fluid.py diff --git a/extras/freeimage.py b/waflib/extras/freeimage.py index f27e525..f27e525 100644 --- a/extras/freeimage.py +++ b/waflib/extras/freeimage.py diff --git a/extras/fsb.py b/waflib/extras/fsb.py index 1b8f398..1b8f398 100644 --- a/extras/fsb.py +++ b/waflib/extras/fsb.py diff --git a/extras/fsc.py b/waflib/extras/fsc.py index c67e70b..c67e70b 100644 --- a/extras/fsc.py +++ b/waflib/extras/fsc.py diff --git a/extras/gccdeps.py b/waflib/extras/gccdeps.py index d9758ab..d9758ab 100644 --- a/extras/gccdeps.py +++ b/waflib/extras/gccdeps.py diff --git a/extras/gdbus.py b/waflib/extras/gdbus.py index 0e0476e..0e0476e 100644 --- a/extras/gdbus.py +++ b/waflib/extras/gdbus.py diff --git a/extras/gob2.py b/waflib/extras/gob2.py index b4fa3b9..b4fa3b9 100644 --- a/extras/gob2.py +++ b/waflib/extras/gob2.py diff --git a/extras/halide.py b/waflib/extras/halide.py index 6078e38..6078e38 100644 --- a/extras/halide.py +++ b/waflib/extras/halide.py diff --git a/extras/javatest.py b/waflib/extras/javatest.py index 979b8d8..979b8d8 100755 --- a/extras/javatest.py +++ b/waflib/extras/javatest.py diff --git a/extras/kde4.py b/waflib/extras/kde4.py index e49a9ec..e49a9ec 100644 --- a/extras/kde4.py +++ b/waflib/extras/kde4.py diff --git a/extras/local_rpath.py b/waflib/extras/local_rpath.py index b2507e1..b2507e1 100644 --- a/extras/local_rpath.py +++ b/waflib/extras/local_rpath.py diff --git a/extras/lv2.py b/waflib/extras/lv2.py index 815987f..815987f 100644 --- a/extras/lv2.py +++ b/waflib/extras/lv2.py diff --git a/extras/make.py b/waflib/extras/make.py index 933d9ca..933d9ca 100644 --- a/extras/make.py +++ b/waflib/extras/make.py diff --git a/extras/midl.py b/waflib/extras/midl.py index 43e6cf9..43e6cf9 100644 --- a/extras/midl.py +++ b/waflib/extras/midl.py diff --git a/extras/msvcdeps.py b/waflib/extras/msvcdeps.py index fc1ecd4..fc1ecd4 100644 --- a/extras/msvcdeps.py +++ b/waflib/extras/msvcdeps.py diff --git a/extras/msvs.py b/waflib/extras/msvs.py index 8aa2db0..8aa2db0 100644 --- a/extras/msvs.py +++ b/waflib/extras/msvs.py diff --git a/extras/netcache_client.py b/waflib/extras/netcache_client.py index dc49048..dc49048 100644 --- a/extras/netcache_client.py +++ b/waflib/extras/netcache_client.py diff --git a/extras/objcopy.py b/waflib/extras/objcopy.py index 82d8359..82d8359 100644 --- a/extras/objcopy.py +++ b/waflib/extras/objcopy.py diff --git a/extras/ocaml.py b/waflib/extras/ocaml.py index afe73c0..afe73c0 100644 --- a/extras/ocaml.py +++ b/waflib/extras/ocaml.py diff --git a/extras/package.py b/waflib/extras/package.py index c06498e..c06498e 100644 --- a/extras/package.py +++ b/waflib/extras/package.py diff --git a/extras/parallel_debug.py b/waflib/extras/parallel_debug.py index 35883a3..35883a3 100644 --- a/extras/parallel_debug.py +++ b/waflib/extras/parallel_debug.py diff --git a/extras/pch.py b/waflib/extras/pch.py index 103e752..103e752 100644 --- a/extras/pch.py +++ b/waflib/extras/pch.py diff --git a/extras/pep8.py b/waflib/extras/pep8.py index 676beed..676beed 100644 --- a/extras/pep8.py +++ b/waflib/extras/pep8.py diff --git a/extras/pgicc.py b/waflib/extras/pgicc.py index 9790b9c..9790b9c 100644 --- a/extras/pgicc.py +++ b/waflib/extras/pgicc.py diff --git a/extras/pgicxx.py b/waflib/extras/pgicxx.py index eae121c..eae121c 100644 --- a/extras/pgicxx.py +++ b/waflib/extras/pgicxx.py diff --git a/extras/proc.py b/waflib/extras/proc.py index 764abec..764abec 100644 --- a/extras/proc.py +++ b/waflib/extras/proc.py diff --git a/extras/protoc.py b/waflib/extras/protoc.py index f3cb4d8..f3cb4d8 100644 --- a/extras/protoc.py +++ b/waflib/extras/protoc.py diff --git a/extras/pyqt5.py b/waflib/extras/pyqt5.py index c21dfa7..c21dfa7 100644 --- a/extras/pyqt5.py +++ b/waflib/extras/pyqt5.py diff --git a/extras/pytest.py b/waflib/extras/pytest.py index 7dd5a1a..7dd5a1a 100644 --- a/extras/pytest.py +++ b/waflib/extras/pytest.py diff --git a/extras/qnxnto.py b/waflib/extras/qnxnto.py index 1158124..1158124 100644 --- a/extras/qnxnto.py +++ b/waflib/extras/qnxnto.py diff --git a/extras/qt4.py b/waflib/extras/qt4.py index 90cae7e..90cae7e 100644 --- a/extras/qt4.py +++ b/waflib/extras/qt4.py diff --git a/extras/relocation.py b/waflib/extras/relocation.py index 7e821f4..7e821f4 100644 --- a/extras/relocation.py +++ b/waflib/extras/relocation.py diff --git a/extras/remote.py b/waflib/extras/remote.py index 3b038f7..3b038f7 100644 --- a/extras/remote.py +++ b/waflib/extras/remote.py diff --git a/extras/resx.py b/waflib/extras/resx.py index caf4d31..caf4d31 100644 --- a/extras/resx.py +++ b/waflib/extras/resx.py diff --git a/extras/review.py b/waflib/extras/review.py index 561e062..561e062 100644 --- a/extras/review.py +++ b/waflib/extras/review.py diff --git a/extras/rst.py b/waflib/extras/rst.py index f3c3a5e..f3c3a5e 100644 --- a/extras/rst.py +++ b/waflib/extras/rst.py diff --git a/extras/run_do_script.py b/waflib/extras/run_do_script.py index f3c5812..f3c5812 100644 --- a/extras/run_do_script.py +++ b/waflib/extras/run_do_script.py diff --git a/extras/run_m_script.py b/waflib/extras/run_m_script.py index b5f27eb..b5f27eb 100644 --- a/extras/run_m_script.py +++ b/waflib/extras/run_m_script.py diff --git a/extras/run_py_script.py b/waflib/extras/run_py_script.py index 3670381..3670381 100644 --- a/extras/run_py_script.py +++ b/waflib/extras/run_py_script.py diff --git a/extras/run_r_script.py b/waflib/extras/run_r_script.py index b0d8f2b..b0d8f2b 100644 --- a/extras/run_r_script.py +++ b/waflib/extras/run_r_script.py diff --git a/extras/sas.py b/waflib/extras/sas.py index 754c614..754c614 100644 --- a/extras/sas.py +++ b/waflib/extras/sas.py diff --git a/extras/satellite_assembly.py b/waflib/extras/satellite_assembly.py index 005eb07..005eb07 100644 --- a/extras/satellite_assembly.py +++ b/waflib/extras/satellite_assembly.py diff --git a/extras/scala.py b/waflib/extras/scala.py index a9880f0..a9880f0 100644 --- a/extras/scala.py +++ b/waflib/extras/scala.py diff --git a/extras/slow_qt4.py b/waflib/extras/slow_qt4.py index ec7880b..ec7880b 100644 --- a/extras/slow_qt4.py +++ b/waflib/extras/slow_qt4.py diff --git a/extras/softlink_libs.py b/waflib/extras/softlink_libs.py index 50c777f..50c777f 100644 --- a/extras/softlink_libs.py +++ b/waflib/extras/softlink_libs.py diff --git a/extras/stale.py b/waflib/extras/stale.py index cac3f46..cac3f46 100644 --- a/extras/stale.py +++ b/waflib/extras/stale.py diff --git a/extras/stracedeps.py b/waflib/extras/stracedeps.py index 37d82cb..37d82cb 100644 --- a/extras/stracedeps.py +++ b/waflib/extras/stracedeps.py diff --git a/extras/swig.py b/waflib/extras/swig.py index fd3d6d2..fd3d6d2 100644 --- a/extras/swig.py +++ b/waflib/extras/swig.py diff --git a/extras/syms.py b/waflib/extras/syms.py index dfa0059..dfa0059 100644 --- a/extras/syms.py +++ b/waflib/extras/syms.py diff --git a/extras/ticgt.py b/waflib/extras/ticgt.py index f43a7ea..f43a7ea 100644 --- a/extras/ticgt.py +++ b/waflib/extras/ticgt.py diff --git a/extras/unity.py b/waflib/extras/unity.py index 78128ed..78128ed 100644 --- a/extras/unity.py +++ b/waflib/extras/unity.py diff --git a/extras/use_config.py b/waflib/extras/use_config.py index ef5129f..ef5129f 100644 --- a/extras/use_config.py +++ b/waflib/extras/use_config.py diff --git a/extras/valadoc.py b/waflib/extras/valadoc.py index c50f69e..c50f69e 100644 --- a/extras/valadoc.py +++ b/waflib/extras/valadoc.py diff --git a/extras/waf_xattr.py b/waflib/extras/waf_xattr.py index 351dd63..351dd63 100644 --- a/extras/waf_xattr.py +++ b/waflib/extras/waf_xattr.py diff --git a/extras/why.py b/waflib/extras/why.py index 1bb941f..1bb941f 100644 --- a/extras/why.py +++ b/waflib/extras/why.py diff --git a/extras/win32_opts.py b/waflib/extras/win32_opts.py index 9f7443c..9f7443c 100644 --- a/extras/win32_opts.py +++ b/waflib/extras/win32_opts.py diff --git a/extras/wix.py b/waflib/extras/wix.py index d87bfbb..d87bfbb 100644 --- a/extras/wix.py +++ b/waflib/extras/wix.py diff --git a/extras/xcode6.py b/waflib/extras/xcode6.py index 91bbff1..91bbff1 100644 --- a/extras/xcode6.py +++ b/waflib/extras/xcode6.py diff --git a/fixpy2.py b/waflib/fixpy2.py index 24176e0..24176e0 100644 --- a/fixpy2.py +++ b/waflib/fixpy2.py diff --git a/processor.py b/waflib/processor.py index 2eecf3b..2eecf3b 100755 --- a/processor.py +++ b/waflib/processor.py diff --git a/waflib/waf b/waflib/waf new file mode 100755 index 0000000..e22930a --- /dev/null +++ b/waflib/waf @@ -0,0 +1,16 @@ +#!/usr/bin/env python + +# Minimal waf script for projects that include waflib directly + +from waflib import Context, Scripting + +import inspect +import os + +def main(): + script_path = os.path.abspath(inspect.getfile(inspect.getmodule(main))) + project_path = os.path.dirname(script_path) + Scripting.waf_entry_point(os.getcwd(), Context.WAFVERSION, project_path) + +if __name__ == '__main__': + main() @@ -0,0 +1,116 @@ +#!/usr/bin/env python +import os +import shutil +import subprocess +from waflib.extras import autowaf as autowaf + +# Version of this package (even if built as a child) +OMINS_VERSION = '0.0.0' + +# Variables for 'waf dist' +APPNAME = 'omins.lv2' +VERSION = OMINS_VERSION + +# Mandatory variables +top = '.' +out = 'build' + +def options(opt): + opt.load('compiler_c') + opt.load('lv2') + autowaf.set_options(opt) + +def configure(conf): + autowaf.display_header('Omins.LV2 Configuration') + conf.load('compiler_c', cache=True) + conf.load('lv2', cache=True) + conf.load('autowaf', cache=True) + autowaf.set_c_lang(conf, 'c99') + + autowaf.check_pkg(conf, 'lv2', atleast_version='1.0.0', uselib_store='LV2') + + autowaf.check_function(conf, 'c', 'posix_memalign', + defines = '_POSIX_C_SOURCE=200809L', + header_name = 'stdlib.h', + define_name = 'HAVE_POSIX_MEMALIGN', + mandatory = False) + + # Set env.pluginlib_PATTERN + pat = conf.env.cshlib_PATTERN + if pat[0:3] == 'lib': + pat = pat[3:] + conf.env.pluginlib_PATTERN = pat + conf.env.pluginlib_EXT = pat[pat.rfind('.'):] + + autowaf.display_summary(conf) + autowaf.display_msg(conf, "LV2 bundle directory", conf.env.LV2DIR) + print('') + +def build_plugin(bld, lang, bundle, name, source, defines=None): + # Build plugin library + penv = bld.env.derive() + penv.cshlib_PATTERN = bld.env.pluginlib_PATTERN + lib = [] + if not bld.env.MSVC_COMPILER: + lib = ['m'] + obj = bld(features = '%s %sshlib' % (lang,lang), + env = penv, + source = source, + includes = ['.', 'src/include'], + name = name, + target = os.path.join(bundle, name), + uselib = ['LV2'], + install_path = '${LV2DIR}/' + bundle, + lib = lib) + if defines != None: + obj.defines = defines + + # Install data file + data_file = '%s.ttl' % name + bld.install_files('${LV2DIR}/' + bundle, os.path.join(bundle, data_file)) + +def build(bld): + # Copy data files to build bundle (build/omins.lv2) + def do_copy(task): + src = task.inputs[0].abspath() + tgt = task.outputs[0].abspath() + return shutil.copy(src, tgt) + + for i in bld.path.ant_glob('omins.lv2/*.ttl'): + bld(features = 'subst', + is_copy = True, + source = i, + target = 'omins.lv2/%s' % i.name, + install_path = '${LV2DIR}/omins.lv2') + + bld(features = 'subst', + source = 'omins.lv2/manifest.ttl.in', + target = bld.path.get_bld().make_node('omins.lv2/manifest.ttl'), + LIB_EXT = bld.env.pluginlib_EXT, + install_path = '${LV2DIR}/omins.lv2') + + plugins = ['adenv', + 'adenv_lvl', + 'comparison', + 'dahdsr_fexp', + 'dahdsr_hexp', + 'fast_crossfade', + 'formant_filter', + 'hz_voct', + 'masher', + 'multiplexer', + 'prob_switch', + 'range_trans', + 'sample_and_hold', + 'signal_abs', + 'slew_limiter', + 'slide', + 'waveguide_mesh'] + + for i in plugins: + build_plugin(bld, 'c', 'omins.lv2', i, + ['src/%s.c' % i]) + +def lint(ctx): + subprocess.call('cpplint.py --filter=+whitespace/comments,-whitespace/tab,-whitespace/braces,-whitespace/labels,-build/header_guard,-readability/casting,-readability/todo,-build/include src/* serd/*', shell=True) + |