aboutsummaryrefslogtreecommitdiff
path: root/benchtests
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2013-06-04 16:48:56 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2013-06-11 15:08:13 +0530
commit9702047480d9002522936c5e1e1ebe16f696880d (patch)
tree9b37e288e4d57012a6186c280fd8837deca6dd4c /benchtests
parentc1f75dc386d533806d29b7e94118363a7b50eed8 (diff)
downloadglibc-9702047480d9002522936c5e1e1ebe16f696880d.zip
glibc-9702047480d9002522936c5e1e1ebe16f696880d.tar.gz
glibc-9702047480d9002522936c5e1e1ebe16f696880d.tar.bz2
Copy over string performance tests into benchtests
Copy over already existing string performance tests into benchtests. Bits not related to performance measurements have been omitted.
Diffstat (limited to 'benchtests')
-rw-r--r--benchtests/Makefile5
-rw-r--r--benchtests/bench-bcopy-ifunc.c20
-rw-r--r--benchtests/bench-bcopy.c20
-rw-r--r--benchtests/bench-bzero-ifunc.c20
-rw-r--r--benchtests/bench-bzero.c19
-rw-r--r--benchtests/bench-memccpy-ifunc.c20
-rw-r--r--benchtests/bench-memccpy.c169
-rw-r--r--benchtests/bench-memchr-ifunc.c20
-rw-r--r--benchtests/bench-memchr.c137
-rw-r--r--benchtests/bench-memcmp-ifunc.c20
-rw-r--r--benchtests/bench-memcmp.c183
-rw-r--r--benchtests/bench-memmem-ifunc.c20
-rw-r--r--benchtests/bench-memmem.c172
-rw-r--r--benchtests/bench-memmove-ifunc.c20
-rw-r--r--benchtests/bench-memmove.c187
-rw-r--r--benchtests/bench-mempcpy-ifunc.c20
-rw-r--r--benchtests/bench-mempcpy.c37
-rw-r--r--benchtests/bench-memset-ifunc.c20
-rw-r--r--benchtests/bench-memset.c169
-rw-r--r--benchtests/bench-rawmemchr-ifunc.c20
-rw-r--r--benchtests/bench-rawmemchr.c133
-rw-r--r--benchtests/bench-stpcpy-ifunc.c20
-rw-r--r--benchtests/bench-stpcpy.c36
-rw-r--r--benchtests/bench-stpncpy-ifunc.c20
-rw-r--r--benchtests/bench-stpncpy.c59
-rw-r--r--benchtests/bench-strcasecmp-ifunc.c20
-rw-r--r--benchtests/bench-strcasecmp.c183
-rw-r--r--benchtests/bench-strcasestr-ifunc.c20
-rw-r--r--benchtests/bench-strcasestr.c186
-rw-r--r--benchtests/bench-strcat-ifunc.c20
-rw-r--r--benchtests/bench-strcat.c155
-rw-r--r--benchtests/bench-strchr-ifunc.c20
-rw-r--r--benchtests/bench-strchr.c206
-rw-r--r--benchtests/bench-strchrnul-ifunc.c20
-rw-r--r--benchtests/bench-strchrnul.c20
-rw-r--r--benchtests/bench-strcmp-ifunc.c20
-rw-r--r--benchtests/bench-strcmp.c247
-rw-r--r--benchtests/bench-strcpy-ifunc.c20
-rw-r--r--benchtests/bench-strcpy.c183
-rw-r--r--benchtests/bench-strcspn-ifunc.c20
-rw-r--r--benchtests/bench-strcspn.c59
-rw-r--r--benchtests/bench-strlen-ifunc.c20
-rw-r--r--benchtests/bench-strlen.c149
-rw-r--r--benchtests/bench-strncasecmp-ifunc.c20
-rw-r--r--benchtests/bench-strncasecmp.c213
-rw-r--r--benchtests/bench-strncat-ifunc.c20
-rw-r--r--benchtests/bench-strncat.c168
-rw-r--r--benchtests/bench-strncmp-ifunc.c20
-rw-r--r--benchtests/bench-strncmp.c249
-rw-r--r--benchtests/bench-strncpy-ifunc.c20
-rw-r--r--benchtests/bench-strncpy.c180
-rw-r--r--benchtests/bench-strnlen-ifunc.c20
-rw-r--r--benchtests/bench-strnlen.c139
-rw-r--r--benchtests/bench-strpbrk-ifunc.c20
-rw-r--r--benchtests/bench-strpbrk.c182
-rw-r--r--benchtests/bench-strrchr-ifunc.c20
-rw-r--r--benchtests/bench-strrchr.c190
-rw-r--r--benchtests/bench-strspn-ifunc.c20
-rw-r--r--benchtests/bench-strspn.c174
-rw-r--r--benchtests/bench-strstr-ifunc.c20
-rw-r--r--benchtests/bench-strstr.c183
61 files changed, 4991 insertions, 1 deletions
diff --git a/benchtests/Makefile b/benchtests/Makefile
index 27d83f4..5023c7c 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -24,7 +24,10 @@ bench := acos acosh asin asinh atan atanh cos cosh exp log modf pow rint sin \
sinh tan tanh
# String function benchmarks.
-string-bench := memcpy
+string-bench := bcopy bzero memccpy memchr memcmp memmem memmove mempcpy \
+ memset rawmemchr stpcpy stpncpy strcasecmp strcasestr strcat \
+ strchr strchrnul strcmp strcpy strcspn strlen strncasecmp \
+ strncat strncmp strncpy strnlen strpbrk strrchr strspn strstr
string-bench-ifunc := $(addsuffix -ifunc, $(string-bench))
string-bench-all := $(string-bench) $(string-bench-ifunc)
diff --git a/benchtests/bench-bcopy-ifunc.c b/benchtests/bench-bcopy-ifunc.c
new file mode 100644
index 0000000..66020e9
--- /dev/null
+++ b/benchtests/bench-bcopy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of bcopy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-bcopy.c"
diff --git a/benchtests/bench-bcopy.c b/benchtests/bench-bcopy.c
new file mode 100644
index 0000000..4d0d055
--- /dev/null
+++ b/benchtests/bench-bcopy.c
@@ -0,0 +1,20 @@
+/* Measure bcopy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_BCOPY
+#include "bench-memmove.c"
diff --git a/benchtests/bench-bzero-ifunc.c b/benchtests/bench-bzero-ifunc.c
new file mode 100644
index 0000000..84f1354
--- /dev/null
+++ b/benchtests/bench-bzero-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of bzero function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-bzero.c"
diff --git a/benchtests/bench-bzero.c b/benchtests/bench-bzero.c
new file mode 100644
index 0000000..18e7d17
--- /dev/null
+++ b/benchtests/bench-bzero.c
@@ -0,0 +1,19 @@
+/* Measure bzero functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+#define TEST_BZERO
+#include "bench-memset.c"
diff --git a/benchtests/bench-memccpy-ifunc.c b/benchtests/bench-memccpy-ifunc.c
new file mode 100644
index 0000000..b61050f
--- /dev/null
+++ b/benchtests/bench-memccpy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of memccpy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-memccpy.c"
diff --git a/benchtests/bench-memccpy.c b/benchtests/bench-memccpy.c
new file mode 100644
index 0000000..612513c
--- /dev/null
+++ b/benchtests/bench-memccpy.c
@@ -0,0 +1,169 @@
+/* Measure memccpy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "memccpy"
+#include "bench-string.h"
+
+void *simple_memccpy (void *, const void *, int, size_t);
+void *stupid_memccpy (void *, const void *, int, size_t);
+
+IMPL (stupid_memccpy, 0)
+IMPL (simple_memccpy, 0)
+IMPL (memccpy, 1)
+
+void *
+simple_memccpy (void *dst, const void *src, int c, size_t n)
+{
+ const char *s = src;
+ char *d = dst;
+
+ while (n-- > 0)
+ if ((*d++ = *s++) == (char) c)
+ return d;
+
+ return NULL;
+}
+
+void *
+stupid_memccpy (void *dst, const void *src, int c, size_t n)
+{
+ void *p = memchr (src, c, n);
+
+ if (p != NULL)
+ return mempcpy (dst, src, p - src + 1);
+
+ memcpy (dst, src, n);
+ return NULL;
+}
+
+typedef void *(*proto_t) (void *, const void *, int c, size_t);
+
+static void
+do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len,
+ size_t n)
+{
+ void *expect = len > n ? NULL : (char *) dst + len;
+ if (CALL (impl, dst, src, c, n) != expect)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ CALL (impl, dst, src, c, n), expect);
+ ret = 1;
+ return;
+ }
+
+ if (memcmp (dst, src, len > n ? n : len) != 0)
+ {
+ error (0, 0, "Wrong result in function %s", impl->name);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute__ ((unused));
+ hp_timing_t stop __attribute__ ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, dst, src, c, n);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, int c, size_t len, size_t n,
+ int max_char)
+{
+ size_t i;
+ char *s1, *s2;
+
+ align1 &= 7;
+ if (align1 + len >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + len >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len - 1; ++i)
+ {
+ s1[i] = 32 + 23 * i % (max_char - 32);
+ if (s1[i] == (char) c)
+ --s1[i];
+ }
+ s1[len - 1] = c;
+ for (i = len; i + align1 < page_size && i < len + 64; ++i)
+ s1[i] = 32 + 32 * i % (max_char - 32);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s2, s1, c, len, n);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%28s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, i, 12, 16, 16, 127);
+ do_test (i, i, 23, 16, 16, 255);
+ do_test (i, 2 * i, 28, 16, 16, 127);
+ do_test (2 * i, i, 31, 16, 16, 255);
+ do_test (8 - i, 2 * i, 1, 1 << i, 2 << i, 127);
+ do_test (2 * i, 8 - i, 17, 2 << i, 1 << i, 127);
+ do_test (8 - i, 2 * i, 0, 1 << i, 2 << i, 255);
+ do_test (2 * i, 8 - i, i, 2 << i, 1 << i, 255);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 0, i, 4 << i, 8 << i, 127);
+ do_test (0, 0, i, 16 << i, 8 << i, 127);
+ do_test (8 - i, 2 * i, i, 4 << i, 8 << i, 127);
+ do_test (8 - i, 2 * i, i, 16 << i, 8 << i, 127);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-memchr-ifunc.c b/benchtests/bench-memchr-ifunc.c
new file mode 100644
index 0000000..dd2c39f
--- /dev/null
+++ b/benchtests/bench-memchr-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of memchr function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-memchr.c"
diff --git a/benchtests/bench-memchr.c b/benchtests/bench-memchr.c
new file mode 100644
index 0000000..5470ce6
--- /dev/null
+++ b/benchtests/bench-memchr.c
@@ -0,0 +1,137 @@
+/* Measure memchr functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "memchr"
+#include "bench-string.h"
+
+typedef char *(*proto_t) (const char *, int, size_t);
+char *simple_memchr (const char *, int, size_t);
+
+IMPL (simple_memchr, 0)
+IMPL (memchr, 1)
+
+char *
+simple_memchr (const char *s, int c, size_t n)
+{
+ while (n--)
+ if (*s++ == (char) c)
+ return (char *) s - 1;
+ return NULL;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res)
+{
+ char *res = CALL (impl, s, c, n);
+ if (res != exp_res)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ res, exp_res);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, c, n);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t pos, size_t len, int seek_char)
+{
+ size_t i;
+ char *result;
+
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+
+ for (i = 0; i < len; ++i)
+ {
+ buf1[align + i] = 1 + 23 * i % 127;
+ if (buf1[align + i] == seek_char)
+ buf1[align + i] = seek_char + 1;
+ }
+ buf1[align + len] = 0;
+
+ if (pos < len)
+ {
+ buf1[align + pos] = seek_char;
+ buf1[align + len] = -seek_char;
+ result = (char *) (buf1 + align + pos);
+ }
+ else
+ {
+ result = NULL;
+ buf1[align + len] = seek_char;
+ }
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd:", pos, align);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (char *) (buf1 + align), seek_char, len, result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 2048, 23);
+ do_test (i, 64, 256, 23);
+ do_test (0, 16 << i, 2048, 0);
+ do_test (i, 64, 256, 0);
+ }
+ for (i = 1; i < 32; ++i)
+ {
+ do_test (0, i, i + 1, 23);
+ do_test (0, i, i + 1, 0);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-memcmp-ifunc.c b/benchtests/bench-memcmp-ifunc.c
new file mode 100644
index 0000000..4467164
--- /dev/null
+++ b/benchtests/bench-memcmp-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of memcmp function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-memcmp.c"
diff --git a/benchtests/bench-memcmp.c b/benchtests/bench-memcmp.c
new file mode 100644
index 0000000..053bb50
--- /dev/null
+++ b/benchtests/bench-memcmp.c
@@ -0,0 +1,183 @@
+/* Measure memcmp functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifdef WIDE
+# define TEST_NAME "wmemcmp"
+#else
+# define TEST_NAME "memcmp"
+#endif
+#include "bench-string.h"
+#ifdef WIDE
+# include <inttypes.h>
+# include <wchar.h>
+
+# define MEMCMP wmemcmp
+# define MEMCPY wmemcpy
+# define SIMPLE_MEMCMP simple_wmemcmp
+# define CHAR wchar_t
+# define UCHAR wchar_t
+# define CHARBYTES 4
+# define CHAR__MIN WCHAR_MIN
+# define CHAR__MAX WCHAR_MAX
+int
+simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n)
+{
+ int ret = 0;
+ /* Warning!
+ wmemcmp has to use SIGNED comparison for elements.
+ memcmp has to use UNSIGNED comparison for elemnts.
+ */
+ while (n-- && (ret = *s1 < *s2 ? -1 : *s1 == *s2 ? 0 : 1) == 0) {s1++; s2++;}
+ return ret;
+}
+#else
+# include <limits.h>
+
+# define MEMCMP memcmp
+# define MEMCPY memcpy
+# define SIMPLE_MEMCMP simple_memcmp
+# define CHAR char
+# define MAX_CHAR 255
+# define UCHAR unsigned char
+# define CHARBYTES 1
+# define CHAR__MIN CHAR_MIN
+# define CHAR__MAX CHAR_MAX
+
+int
+simple_memcmp (const char *s1, const char *s2, size_t n)
+{
+ int ret = 0;
+
+ while (n-- && (ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) == 0);
+ return ret;
+}
+#endif
+
+typedef int (*proto_t) (const CHAR *, const CHAR *, size_t);
+
+IMPL (SIMPLE_MEMCMP, 0)
+IMPL (MEMCMP, 1)
+
+static void
+do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len,
+ int exp_result)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2, len);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, int exp_result)
+{
+ size_t i;
+ CHAR *s1, *s2;
+
+ if (len == 0)
+ return;
+
+ align1 &= 63;
+ if (align1 + (len + 1) * CHARBYTES >= page_size)
+ return;
+
+ align2 &= 63;
+ if (align2 + (len + 1) * CHARBYTES >= page_size)
+ return;
+
+ s1 = (CHAR *) (buf1 + align1);
+ s2 = (CHAR *) (buf2 + align2);
+
+ for (i = 0; i < len; i++)
+ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % CHAR__MAX;
+
+ s1[len] = align1;
+ s2[len] = align2;
+ s2[len - 1] -= exp_result;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, len, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 16; ++i)
+ {
+ do_test (i * CHARBYTES, i * CHARBYTES, i, 0);
+ do_test (i * CHARBYTES, i * CHARBYTES, i, 1);
+ do_test (i * CHARBYTES, i * CHARBYTES, i, -1);
+ }
+
+ for (i = 0; i < 16; ++i)
+ {
+ do_test (0, 0, i, 0);
+ do_test (0, 0, i, 1);
+ do_test (0, 0, i, -1);
+ }
+
+ for (i = 1; i < 10; ++i)
+ {
+ do_test (0, 0, 2 << i, 0);
+ do_test (0, 0, 2 << i, 1);
+ do_test (0, 0, 2 << i, -1);
+ do_test (0, 0, 16 << i, 0);
+ do_test ((8 - i) * CHARBYTES, (2 * i) * CHARBYTES, 16 << i, 0);
+ do_test (0, 0, 16 << i, 1);
+ do_test (0, 0, 16 << i, -1);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 0);
+ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 1);
+ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, -1);
+ }
+
+ return ret;
+}
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-memmem-ifunc.c b/benchtests/bench-memmem-ifunc.c
new file mode 100644
index 0000000..6b951d8
--- /dev/null
+++ b/benchtests/bench-memmem-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of memmem function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-memmem.c"
diff --git a/benchtests/bench-memmem.c b/benchtests/bench-memmem.c
new file mode 100644
index 0000000..ca758a8
--- /dev/null
+++ b/benchtests/bench-memmem.c
@@ -0,0 +1,172 @@
+/* Measure memmem functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "memmem"
+#define BUF1PAGES 20
+#define ITERATIONS 500
+#include "bench-string.h"
+
+typedef char *(*proto_t) (const void *, size_t, const void *, size_t);
+void *simple_memmem (const void *, size_t, const void *, size_t);
+
+IMPL (simple_memmem, 0)
+IMPL (memmem, 1)
+
+void *
+simple_memmem (const void *haystack, size_t haystack_len, const void *needle,
+ size_t needle_len)
+{
+ const char *begin;
+ const char *const last_possible
+ = (const char *) haystack + haystack_len - needle_len;
+
+ if (needle_len == 0)
+ /* The first occurrence of the empty string is deemed to occur at
+ the beginning of the string. */
+ return (void *) haystack;
+
+ /* Sanity check, otherwise the loop might search through the whole
+ memory. */
+ if (__builtin_expect (haystack_len < needle_len, 0))
+ return NULL;
+
+ for (begin = (const char *) haystack; begin <= last_possible; ++begin)
+ if (begin[0] == ((const char *) needle)[0] &&
+ !memcmp ((const void *) &begin[1],
+ (const void *) ((const char *) needle + 1),
+ needle_len - 1))
+ return (void *) begin;
+
+ return NULL;
+}
+
+static void
+do_one_test (impl_t *impl, const void *haystack, size_t haystack_len,
+ const void *needle, size_t needle_len, const void *expected)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, haystack, haystack_len, needle, needle_len);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (const char *str, size_t len, size_t idx)
+{
+ char tmpbuf[len];
+
+ memcpy (tmpbuf, buf1 + idx, len);
+ memcpy (buf1 + idx, str, len);
+
+ if (HP_TIMING_AVAIL)
+ printf ("String %s, offset %zd:", str, idx);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, buf1, BUF1PAGES * page_size, str, len, buf1 + idx);
+
+ memcpy (buf1 + idx, tmpbuf, len);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+static void
+do_random_tests (void)
+{
+ for (size_t n = 0; n < ITERATIONS; ++n)
+ {
+ char tmpbuf[32];
+
+ size_t shift = random () % 11;
+ size_t rel = random () % ((2 << (shift + 1)) * 64);
+ size_t idx = MIN ((2 << shift) * 64 + rel, BUF1PAGES * page_size - 2);
+ size_t len = random () % (sizeof (tmpbuf) - 1) + 1;
+ len = MIN (len, BUF1PAGES * page_size - idx - 1);
+ memcpy (tmpbuf, buf1 + idx, len);
+ for (size_t i = random () % len / 2 + 1; i > 0; --i)
+ {
+ size_t off = random () % len;
+ char ch = '0' + random () % 10;
+
+ buf1[idx + off] = ch;
+ }
+
+ if (HP_TIMING_AVAIL)
+ printf ("String %.*s, offset %zd:", (int) len, buf1 + idx, idx);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, buf1, BUF1PAGES * page_size, buf1 + idx, len,
+ buf1 + idx);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+
+ memcpy (buf1 + idx, tmpbuf, len);
+ }
+}
+
+static const char *const strs[] =
+ {
+ "00000", "00112233", "0123456789", "0000111100001111",
+ "00000111110000022222", "012345678901234567890",
+ "abc0", "aaaa0", "abcabc0"
+ };
+
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 0; i < BUF1PAGES * page_size; ++i)
+ buf1[i] = 60 + random () % 32;
+
+ for (i = 0; i < sizeof (strs) / sizeof (strs[0]); ++i)
+ for (size_t j = 0; j < 120; j += 7)
+ {
+ size_t len = strlen (strs[i]);
+
+ do_test (strs[i], len, j);
+ }
+
+ do_random_tests ();
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-memmove-ifunc.c b/benchtests/bench-memmove-ifunc.c
new file mode 100644
index 0000000..345e594
--- /dev/null
+++ b/benchtests/bench-memmove-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of memmove function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-memmove.c"
diff --git a/benchtests/bench-memmove.c b/benchtests/bench-memmove.c
new file mode 100644
index 0000000..dccde5d
--- /dev/null
+++ b/benchtests/bench-memmove.c
@@ -0,0 +1,187 @@
+/* Measure memmove functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifdef TEST_BCOPY
+# define TEST_NAME "bcopy"
+#else
+# define TEST_NAME "memmove"
+#endif
+#include "bench-string.h"
+
+char *simple_memmove (char *, const char *, size_t);
+
+#ifdef TEST_BCOPY
+typedef void (*proto_t) (const char *, char *, size_t);
+void simple_bcopy (const char *, char *, size_t);
+
+IMPL (simple_bcopy, 0)
+IMPL (bcopy, 1)
+
+void
+simple_bcopy (const char *src, char *dst, size_t n)
+{
+ simple_memmove (dst, src, n);
+}
+#else
+typedef char *(*proto_t) (char *, const char *, size_t);
+
+IMPL (simple_memmove, 0)
+IMPL (memmove, 1)
+#endif
+
+char *
+simple_memmove (char *dst, const char *src, size_t n)
+{
+ char *ret = dst;
+ if (src < dst)
+ {
+ dst += n;
+ src += n;
+ while (n--)
+ *--dst = *--src;
+ }
+ else
+ while (n--)
+ *dst++ = *src++;
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, char *dst, char *src, const char *orig_src,
+ size_t len)
+{
+ memcpy (src, orig_src, len);
+#ifdef TEST_BCOPY
+ CALL (impl, src, dst, len);
+#else
+ char *res;
+
+ res = CALL (impl, dst, src, len);
+ if (res != dst)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ res, dst);
+ ret = 1;
+ return;
+ }
+#endif
+
+ if (memcmp (dst, orig_src, len) != 0)
+ {
+ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
+ impl->name, dst, src);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+#ifdef TEST_BCOPY
+ CALL (impl, src, dst, len);
+#else
+ CALL (impl, dst, src, len);
+#endif
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len)
+{
+ size_t i, j;
+ char *s1, *s2;
+
+ align1 &= 63;
+ if (align1 + len >= page_size)
+ return;
+
+ align2 &= 63;
+ if (align2 + len >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0, j = 1; i < len; i++, j += 23)
+ s1[i] = j;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s2, (char *) (buf2 + align1), s1, len);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 0; i < 14; ++i)
+ {
+ do_test (0, 32, 1 << i);
+ do_test (32, 0, 1 << i);
+ do_test (0, i, 1 << i);
+ do_test (i, 0, 1 << i);
+ }
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, 32, i);
+ do_test (32, 0, i);
+ do_test (0, i, i);
+ do_test (i, 0, i);
+ }
+
+ for (i = 3; i < 32; ++i)
+ {
+ if ((i & (i - 1)) == 0)
+ continue;
+ do_test (0, 32, 16 * i);
+ do_test (32, 0, 16 * i);
+ do_test (0, i, 16 * i);
+ do_test (i, 0, 16 * i);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-mempcpy-ifunc.c b/benchtests/bench-mempcpy-ifunc.c
new file mode 100644
index 0000000..4fa93e0
--- /dev/null
+++ b/benchtests/bench-mempcpy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of mempcpy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-mempcpy.c"
diff --git a/benchtests/bench-mempcpy.c b/benchtests/bench-mempcpy.c
new file mode 100644
index 0000000..0e0e3b9
--- /dev/null
+++ b/benchtests/bench-mempcpy.c
@@ -0,0 +1,37 @@
+/* Measure mempcpy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define MEMCPY_RESULT(dst, len) (dst) + (len)
+#define TEST_MAIN
+#define TEST_NAME "mempcpy"
+#include "bench-string.h"
+
+char *simple_mempcpy (char *, const char *, size_t);
+
+IMPL (simple_mempcpy, 0)
+IMPL (mempcpy, 1)
+
+char *
+simple_mempcpy (char *dst, const char *src, size_t n)
+{
+ while (n--)
+ *dst++ = *src++;
+ return dst;
+}
+
+#include "bench-memcpy.c"
diff --git a/benchtests/bench-memset-ifunc.c b/benchtests/bench-memset-ifunc.c
new file mode 100644
index 0000000..1d43eef
--- /dev/null
+++ b/benchtests/bench-memset-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of memset function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-memset.c"
diff --git a/benchtests/bench-memset.c b/benchtests/bench-memset.c
new file mode 100644
index 0000000..92e34f0
--- /dev/null
+++ b/benchtests/bench-memset.c
@@ -0,0 +1,169 @@
+/* Measure memset functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifdef TEST_BZERO
+# define TEST_NAME "bzero"
+#else
+# define TEST_NAME "memset"
+#endif
+#define MIN_PAGE_SIZE 131072
+#include "bench-string.h"
+
+char *simple_memset (char *, int, size_t);
+
+#ifdef TEST_BZERO
+typedef void (*proto_t) (char *, size_t);
+void simple_bzero (char *, size_t);
+void builtin_bzero (char *, size_t);
+
+IMPL (simple_bzero, 0)
+IMPL (builtin_bzero, 0)
+IMPL (bzero, 1)
+
+void
+simple_bzero (char *s, size_t n)
+{
+ simple_memset (s, 0, n);
+}
+
+void
+builtin_bzero (char *s, size_t n)
+{
+ __builtin_bzero (s, n);
+}
+#else
+typedef char *(*proto_t) (char *, int, size_t);
+char *builtin_memset (char *, int, size_t);
+
+IMPL (simple_memset, 0)
+IMPL (builtin_memset, 0)
+IMPL (memset, 1)
+
+char *
+builtin_memset (char *s, int c, size_t n)
+{
+ return __builtin_memset (s, c, n);
+}
+#endif
+
+char *
+simple_memset (char *s, int c, size_t n)
+{
+ char *r = s, *end = s + n;
+ while (r < end)
+ *r++ = c;
+ return s;
+}
+
+static void
+do_one_test (impl_t *impl, char *s, int c __attribute ((unused)), size_t n)
+{
+ char tstbuf[n];
+#ifdef TEST_BZERO
+ simple_bzero (tstbuf, n);
+ CALL (impl, s, n);
+ if (memcmp (s, tstbuf, n) != 0)
+#else
+ char *res = CALL (impl, s, c, n);
+ if (res != s
+ || simple_memset (tstbuf, c, n) != tstbuf
+ || memcmp (s, tstbuf, n) != 0)
+#endif
+ {
+ error (0, 0, "Wrong result in function %s", impl->name);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+#ifdef TEST_BZERO
+ CALL (impl, s, n);
+#else
+ CALL (impl, s, c, n);
+#endif
+
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, int c, size_t len)
+{
+ align &= 7;
+ if (align + len > page_size)
+ return;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (char *) buf1 + align, c, len);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+ int c = 0;
+
+ test_init ();
+
+ printf ("%24s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+#ifndef TEST_BZERO
+ for (c = -65; c <= 130; c += 65)
+#endif
+ {
+ for (i = 0; i < 18; ++i)
+ do_test (0, c, 1 << i);
+ for (i = 1; i < 32; ++i)
+ {
+ do_test (i, c, i);
+ if (i & (i - 1))
+ do_test (0, c, i);
+ }
+ do_test (1, c, 14);
+ do_test (3, c, 1024);
+ do_test (4, c, 64);
+ do_test (2, c, 25);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-rawmemchr-ifunc.c b/benchtests/bench-rawmemchr-ifunc.c
new file mode 100644
index 0000000..b1e86f1
--- /dev/null
+++ b/benchtests/bench-rawmemchr-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of rawmemchr function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-rawmemchr.c"
diff --git a/benchtests/bench-rawmemchr.c b/benchtests/bench-rawmemchr.c
new file mode 100644
index 0000000..a6b29d7
--- /dev/null
+++ b/benchtests/bench-rawmemchr.c
@@ -0,0 +1,133 @@
+/* Measure memchr functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <assert.h>
+
+#define TEST_MAIN
+#define TEST_NAME "rawmemchr"
+#include "bench-string.h"
+
+typedef char *(*proto_t) (const char *, int);
+char *simple_rawmemchr (const char *, int);
+
+IMPL (simple_rawmemchr, 0)
+IMPL (rawmemchr, 1)
+
+char *
+simple_rawmemchr (const char *s, int c)
+{
+ while (1)
+ if (*s++ == (char) c)
+ return (char *) s - 1;
+ return NULL;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s, int c, char *exp_res)
+{
+ char *res = CALL (impl, s, c);
+ if (res != exp_res)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ res, exp_res);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, c);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t pos, size_t len, int seek_char)
+{
+ size_t i;
+ char *result;
+
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+
+ for (i = 0; i < len; ++i)
+ {
+ buf1[align + i] = 1 + 23 * i % 127;
+ if (buf1[align + i] == seek_char)
+ buf1[align + i] = seek_char + 1;
+ }
+ buf1[align + len] = 0;
+
+ assert (pos < len);
+
+ buf1[align + pos] = seek_char;
+ buf1[align + len] = -seek_char;
+ result = (char *) (buf1 + align + pos);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd:", pos, align);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (char *) (buf1 + align), seek_char, result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 7; ++i)
+ {
+ do_test (0, 16 << i, 2048, 23);
+ do_test (i, 64, 256, 23);
+ do_test (0, 16 << i, 2048, 0);
+ do_test (i, 64, 256, 0);
+ }
+ for (i = 1; i < 32; ++i)
+ {
+ do_test (0, i, i + 1, 23);
+ do_test (0, i, i + 1, 0);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-stpcpy-ifunc.c b/benchtests/bench-stpcpy-ifunc.c
new file mode 100644
index 0000000..d36bcb2
--- /dev/null
+++ b/benchtests/bench-stpcpy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of stpcpy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-stpcpy.c"
diff --git a/benchtests/bench-stpcpy.c b/benchtests/bench-stpcpy.c
new file mode 100644
index 0000000..0645298
--- /dev/null
+++ b/benchtests/bench-stpcpy.c
@@ -0,0 +1,36 @@
+/* Measure stpcpy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define STRCPY_RESULT(dst, len) ((dst) + (len))
+#define TEST_MAIN
+#define TEST_NAME "stpcpy"
+#include "bench-string.h"
+
+char *simple_stpcpy (char *, const char *);
+
+IMPL (simple_stpcpy, 0)
+IMPL (stpcpy, 1)
+
+char *
+simple_stpcpy (char *dst, const char *src)
+{
+ while ((*dst++ = *src++) != '\0');
+ return dst - 1;
+}
+
+#include "bench-strcpy.c"
diff --git a/benchtests/bench-stpncpy-ifunc.c b/benchtests/bench-stpncpy-ifunc.c
new file mode 100644
index 0000000..736cac0
--- /dev/null
+++ b/benchtests/bench-stpncpy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of stpncpy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-stpncpy.c"
diff --git a/benchtests/bench-stpncpy.c b/benchtests/bench-stpncpy.c
new file mode 100644
index 0000000..65ed800
--- /dev/null
+++ b/benchtests/bench-stpncpy.c
@@ -0,0 +1,59 @@
+/* Measure stpncpy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define STRNCPY_RESULT(dst, len, n) ((dst) + ((len) > (n) ? (n) : (len)))
+#define TEST_MAIN
+#define TEST_NAME "stpncpy"
+#include "bench-string.h"
+
+char *simple_stpncpy (char *, const char *, size_t);
+char *stupid_stpncpy (char *, const char *, size_t);
+
+IMPL (stupid_stpncpy, 0)
+IMPL (simple_stpncpy, 0)
+IMPL (stpncpy, 1)
+
+char *
+simple_stpncpy (char *dst, const char *src, size_t n)
+{
+ while (n--)
+ if ((*dst++ = *src++) == '\0')
+ {
+ size_t i;
+
+ for (i = 0; i < n; ++i)
+ dst[i] = '\0';
+ return dst - 1;
+ }
+ return dst;
+}
+
+char *
+stupid_stpncpy (char *dst, const char *src, size_t n)
+{
+ size_t nc = strnlen (src, n);
+ size_t i;
+
+ for (i = 0; i < nc; ++i)
+ dst[i] = src[i];
+ for (; i < n; ++i)
+ dst[i] = '\0';
+ return dst + nc;
+}
+
+#include "bench-strncpy.c"
diff --git a/benchtests/bench-strcasecmp-ifunc.c b/benchtests/bench-strcasecmp-ifunc.c
new file mode 100644
index 0000000..bdeb8c5
--- /dev/null
+++ b/benchtests/bench-strcasecmp-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strcasecmp function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strcasecmp.c"
diff --git a/benchtests/bench-strcasecmp.c b/benchtests/bench-strcasecmp.c
new file mode 100644
index 0000000..27250bb
--- /dev/null
+++ b/benchtests/bench-strcasecmp.c
@@ -0,0 +1,183 @@
+/* Measure strcasecmp functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <ctype.h>
+#define TEST_MAIN
+#define TEST_NAME "strcasecmp"
+#include "bench-string.h"
+
+typedef int (*proto_t) (const char *, const char *);
+static int simple_strcasecmp (const char *, const char *);
+static int stupid_strcasecmp (const char *, const char *);
+
+IMPL (stupid_strcasecmp, 0)
+IMPL (simple_strcasecmp, 0)
+IMPL (strcasecmp, 1)
+
+static int
+simple_strcasecmp (const char *s1, const char *s2)
+{
+ int ret;
+
+ while ((ret = ((unsigned char) tolower (*s1)
+ - (unsigned char) tolower (*s2))) == 0
+ && *s1++)
+ ++s2;
+ return ret;
+}
+
+static int
+stupid_strcasecmp (const char *s1, const char *s2)
+{
+ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1;
+ size_t n = ns1 < ns2 ? ns1 : ns2;
+ int ret = 0;
+
+ while (n--)
+ {
+ if ((ret = ((unsigned char) tolower (*s1)
+ - (unsigned char) tolower (*s2))) != 0)
+ break;
+ ++s1;
+ ++s2;
+ }
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result)
+{
+ int result = CALL (impl, s1, s2);
+ if ((exp_result == 0 && result != 0)
+ || (exp_result < 0 && result >= 0)
+ || (exp_result > 0 && result <= 0))
+ {
+ error (0, 0, "Wrong result in function %s %d %d", impl->name,
+ result, exp_result);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, int max_char,
+ int exp_result)
+{
+ size_t i;
+ char *s1, *s2;
+
+ if (len == 0)
+ return;
+
+ align1 &= 7;
+ if (align1 + len + 1 >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + len + 1 >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len; i++)
+ {
+ s1[i] = toupper (1 + 23 * i % max_char);
+ s2[i] = tolower (s1[i]);
+ }
+
+ s1[len] = s2[len] = 0;
+ s1[len + 1] = 23;
+ s2[len + 1] = 24 + exp_result;
+ if ((s2[len - 1] == 'z' && exp_result == -1)
+ || (s2[len - 1] == 'a' && exp_result == 1))
+ s1[len - 1] += exp_result;
+ else
+ s2[len - 1] -= exp_result;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 16; ++i)
+ {
+ do_test (i, i, i, 127, 0);
+ do_test (i, i, i, 127, 1);
+ do_test (i, i, i, 127, -1);
+ }
+
+ for (i = 1; i < 10; ++i)
+ {
+ do_test (0, 0, 2 << i, 127, 0);
+ do_test (0, 0, 2 << i, 254, 0);
+ do_test (0, 0, 2 << i, 127, 1);
+ do_test (0, 0, 2 << i, 254, 1);
+ do_test (0, 0, 2 << i, 127, -1);
+ do_test (0, 0, 2 << i, 254, -1);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 2 * i, 8 << i, 127, 0);
+ do_test (2 * i, i, 8 << i, 254, 0);
+ do_test (i, 2 * i, 8 << i, 127, 1);
+ do_test (2 * i, i, 8 << i, 254, 1);
+ do_test (i, 2 * i, 8 << i, 127, -1);
+ do_test (2 * i, i, 8 << i, 254, -1);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strcasestr-ifunc.c b/benchtests/bench-strcasestr-ifunc.c
new file mode 100644
index 0000000..645f504
--- /dev/null
+++ b/benchtests/bench-strcasestr-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strcasestr function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strcasestr.c"
diff --git a/benchtests/bench-strcasestr.c b/benchtests/bench-strcasestr.c
new file mode 100644
index 0000000..289b490
--- /dev/null
+++ b/benchtests/bench-strcasestr.c
@@ -0,0 +1,186 @@
+/* Measure strcasestr functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strcasestr"
+#include "bench-string.h"
+
+
+#define STRCASESTR simple_strcasestr
+#define NO_ALIAS
+#define __strncasecmp strncasecmp
+#include "../string/strcasestr.c"
+
+
+static char *
+stupid_strcasestr (const char *s1, const char *s2)
+{
+ ssize_t s1len = strlen (s1);
+ ssize_t s2len = strlen (s2);
+
+ if (s2len > s1len)
+ return NULL;
+
+ for (ssize_t i = 0; i <= s1len - s2len; ++i)
+ {
+ size_t j;
+ for (j = 0; j < s2len; ++j)
+ if (tolower (s1[i + j]) != tolower (s2[j]))
+ break;
+ if (j == s2len)
+ return (char *) s1 + i;
+ }
+
+ return NULL;
+}
+
+
+typedef char *(*proto_t) (const char *, const char *);
+
+IMPL (stupid_strcasestr, 0)
+IMPL (simple_strcasestr, 0)
+IMPL (strcasestr, 1)
+
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~(hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+
+static void
+do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ int fail)
+{
+ char *s1 = (char *) (buf1 + align1);
+ char *s2 = (char *) (buf2 + align2);
+
+ static const char d[] = "1234567890abcxyz";
+#define dl (sizeof (d) - 1)
+ char *ss2 = s2;
+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ ss2 = mempcpy (ss2, d, t);
+ }
+ s2[len2] = '\0';
+
+ if (fail)
+ {
+ char *ss1 = s1;
+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ memcpy (ss1, d, t);
+ ++ss1[len2 > 7 ? 7 : len2 - 1];
+ ss1 += t;
+ }
+ }
+ else
+ {
+ memset (s1, '0', len1);
+ for (size_t i = 0; i < len2; ++i)
+ s1[len1 - len2 + i] = toupper (s2[i]);
+ }
+ s1[len1] = '\0';
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:",
+ len1, len2, align1, align2, fail ? "fail" : "found");
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+static int
+test_main (void)
+{
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (size_t klen = 2; klen < 32; ++klen)
+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen)
+ {
+ do_test (0, 0, hlen, klen, 0);
+ do_test (0, 0, hlen, klen, 1);
+ do_test (0, 3, hlen, klen, 0);
+ do_test (0, 3, hlen, klen, 1);
+ do_test (0, 9, hlen, klen, 0);
+ do_test (0, 9, hlen, klen, 1);
+ do_test (0, 15, hlen, klen, 0);
+ do_test (0, 15, hlen, klen, 1);
+
+ do_test (3, 0, hlen, klen, 0);
+ do_test (3, 0, hlen, klen, 1);
+ do_test (3, 3, hlen, klen, 0);
+ do_test (3, 3, hlen, klen, 1);
+ do_test (3, 9, hlen, klen, 0);
+ do_test (3, 9, hlen, klen, 1);
+ do_test (3, 15, hlen, klen, 0);
+ do_test (3, 15, hlen, klen, 1);
+
+ do_test (9, 0, hlen, klen, 0);
+ do_test (9, 0, hlen, klen, 1);
+ do_test (9, 3, hlen, klen, 0);
+ do_test (9, 3, hlen, klen, 1);
+ do_test (9, 9, hlen, klen, 0);
+ do_test (9, 9, hlen, klen, 1);
+ do_test (9, 15, hlen, klen, 0);
+ do_test (9, 15, hlen, klen, 1);
+
+ do_test (15, 0, hlen, klen, 0);
+ do_test (15, 0, hlen, klen, 1);
+ do_test (15, 3, hlen, klen, 0);
+ do_test (15, 3, hlen, klen, 1);
+ do_test (15, 9, hlen, klen, 0);
+ do_test (15, 9, hlen, klen, 1);
+ do_test (15, 15, hlen, klen, 0);
+ do_test (15, 15, hlen, klen, 1);
+ }
+
+ do_test (0, 0, page_size - 1, 16, 0);
+ do_test (0, 0, page_size - 1, 16, 1);
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strcat-ifunc.c b/benchtests/bench-strcat-ifunc.c
new file mode 100644
index 0000000..003dc38
--- /dev/null
+++ b/benchtests/bench-strcat-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strcat function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strcat.c"
diff --git a/benchtests/bench-strcat.c b/benchtests/bench-strcat.c
new file mode 100644
index 0000000..b70a272
--- /dev/null
+++ b/benchtests/bench-strcat.c
@@ -0,0 +1,155 @@
+/* Measure strcat functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strcat"
+#include "bench-string.h"
+
+typedef char *(*proto_t) (char *, const char *);
+char *simple_strcat (char *, const char *);
+
+IMPL (simple_strcat, 0)
+IMPL (strcat, 1)
+
+char *
+simple_strcat (char *dst, const char *src)
+{
+ char *ret = dst;
+ while (*dst++ != '\0');
+ --dst;
+ while ((*dst++ = *src++) != '\0');
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, char *dst, const char *src)
+{
+ size_t k = strlen (dst);
+ if (CALL (impl, dst, src) != dst)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ CALL (impl, dst, src), dst);
+ ret = 1;
+ return;
+ }
+
+ if (strcmp (dst + k, src) != 0)
+ {
+ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"",
+ impl->name, dst, src);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ dst[k] = '\0';
+ HP_TIMING_NOW (start);
+ CALL (impl, dst, src);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len1, size_t len2, int max_char)
+{
+ size_t i;
+ char *s1, *s2;
+
+ align1 &= 7;
+ if (align1 + len1 >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + len1 + len2 >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len1; ++i)
+ s1[i] = 32 + 23 * i % (max_char - 32);
+ s1[len1] = '\0';
+
+ for (i = 0; i < len2; i++)
+ s2[i] = 32 + 23 * i % (max_char - 32);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len1, len2, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ {
+ s2[len2] = '\0';
+ do_one_test (impl, s2, s1);
+ }
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%28s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 0; i < 16; ++i)
+ {
+ do_test (0, 0, i, i, 127);
+ do_test (0, 0, i, i, 255);
+ do_test (0, i, i, i, 127);
+ do_test (i, 0, i, i, 255);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 0, 8 << i, 8 << i, 127);
+ do_test (8 - i, 2 * i, 8 << i, 8 << i, 127);
+ do_test (0, 0, 8 << i, 2 << i, 127);
+ do_test (8 - i, 2 * i, 8 << i, 2 << i, 127);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 2 * i, 8 << i, 1, 127);
+ do_test (2 * i, i, 8 << i, 1, 255);
+ do_test (i, i, 8 << i, 10, 127);
+ do_test (i, i, 8 << i, 10, 255);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strchr-ifunc.c b/benchtests/bench-strchr-ifunc.c
new file mode 100644
index 0000000..0ef1398
--- /dev/null
+++ b/benchtests/bench-strchr-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strchr function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strchr.c"
diff --git a/benchtests/bench-strchr.c b/benchtests/bench-strchr.c
new file mode 100644
index 0000000..710b592
--- /dev/null
+++ b/benchtests/bench-strchr.c
@@ -0,0 +1,206 @@
+/* Measure STRCHR functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifndef WIDE
+# ifdef USE_FOR_STRCHRNUL
+# define TEST_NAME "strchrnul"
+# else
+# define TEST_NAME "strchr"
+# endif
+#else
+# define TEST_NAME "wcschr"
+#endif
+#include "bench-string.h"
+
+#ifndef WIDE
+# ifdef USE_FOR_STRCHRNUL
+# define STRCHR strchrnul
+# define stupid_STRCHR stupid_STRCHRNUL
+# define simple_STRCHR simple_STRCHRNUL
+# else
+# define STRCHR strchr
+# endif
+# define STRLEN strlen
+# define CHAR char
+# define BIG_CHAR CHAR_MAX
+# define MIDDLE_CHAR 127
+# define SMALL_CHAR 23
+# define UCHAR unsigned char
+#else
+# include <wchar.h>
+# define STRCHR wcschr
+# define STRLEN wcslen
+# define CHAR wchar_t
+# define BIG_CHAR WCHAR_MAX
+# define MIDDLE_CHAR 1121
+# define SMALL_CHAR 851
+# define UCHAR wchar_t
+#endif
+
+#ifdef USE_FOR_STRCHRNUL
+# define NULLRET(endptr) endptr
+#else
+# define NULLRET(endptr) NULL
+#endif
+
+
+typedef CHAR *(*proto_t) (const CHAR *, int);
+
+CHAR *
+simple_STRCHR (const CHAR *s, int c)
+{
+ for (; *s != (CHAR) c; ++s)
+ if (*s == '\0')
+ return NULLRET ((CHAR *) s);
+ return (CHAR *) s;
+}
+
+CHAR *
+stupid_STRCHR (const CHAR *s, int c)
+{
+ size_t n = STRLEN (s) + 1;
+
+ while (n--)
+ if (*s++ == (CHAR) c)
+ return (CHAR *) s - 1;
+ return NULLRET ((CHAR *) s - 1);
+}
+
+IMPL (stupid_STRCHR, 0)
+IMPL (simple_STRCHR, 0)
+IMPL (STRCHR, 1)
+
+static void
+do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, c);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
+/* For wcschr: align here means align not in bytes,
+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
+{
+ size_t i;
+ CHAR *result;
+ CHAR *buf = (CHAR *) buf1;
+ align &= 15;
+ if ((align + len) * sizeof (CHAR) >= page_size)
+ return;
+
+ for (i = 0; i < len; ++i)
+ {
+ buf[align + i] = 32 + 23 * i % max_char;
+ if (buf[align + i] == seek_char)
+ buf[align + i] = seek_char + 1;
+ else if (buf[align + i] == 0)
+ buf[align + i] = 1;
+ }
+ buf[align + len] = 0;
+
+ if (pos < len)
+ {
+ buf[align + pos] = seek_char;
+ result = buf + align + pos;
+ }
+ else if (seek_char == 0)
+ result = buf + align + len;
+ else
+ result = NULLRET (buf + align + len);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment in bytes %2zd:",
+ pos, align * sizeof (CHAR));
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, buf + align, seek_char, result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR);
+ }
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR);
+ do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR);
+ do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, 0, MIDDLE_CHAR);
+ do_test (i, 64, 256, 0, BIG_CHAR);
+ }
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, i, i + 1, 0, MIDDLE_CHAR);
+ do_test (0, i, i + 1, 0, BIG_CHAR);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strchrnul-ifunc.c b/benchtests/bench-strchrnul-ifunc.c
new file mode 100644
index 0000000..35c7cb1
--- /dev/null
+++ b/benchtests/bench-strchrnul-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strchrnul function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strchrnul.c"
diff --git a/benchtests/bench-strchrnul.c b/benchtests/bench-strchrnul.c
new file mode 100644
index 0000000..db5680c
--- /dev/null
+++ b/benchtests/bench-strchrnul.c
@@ -0,0 +1,20 @@
+/* Measure strchrnul function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define USE_FOR_STRCHRNUL 1
+#include "bench-strchr.c"
diff --git a/benchtests/bench-strcmp-ifunc.c b/benchtests/bench-strcmp-ifunc.c
new file mode 100644
index 0000000..01a8095
--- /dev/null
+++ b/benchtests/bench-strcmp-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strcmp function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strcmp.c"
diff --git a/benchtests/bench-strcmp.c b/benchtests/bench-strcmp.c
new file mode 100644
index 0000000..63a3cd4
--- /dev/null
+++ b/benchtests/bench-strcmp.c
@@ -0,0 +1,247 @@
+/* Measure strcmp and wcscmp functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifdef WIDE
+# define TEST_NAME "wcscmp"
+#else
+# define TEST_NAME "strcmp"
+#endif
+#include "bench-string.h"
+
+#ifdef WIDE
+# include <wchar.h>
+
+# define L(str) L##str
+# define STRCMP wcscmp
+# define STRCPY wcscpy
+# define STRLEN wcslen
+# define MEMCPY wmemcpy
+# define SIMPLE_STRCMP simple_wcscmp
+# define STUPID_STRCMP stupid_wcscmp
+# define CHAR wchar_t
+# define UCHAR wchar_t
+# define CHARBYTES 4
+# define CHARBYTESLOG 2
+# define CHARALIGN __alignof__ (CHAR)
+# define MIDCHAR 0x7fffffff
+# define LARGECHAR 0xfffffffe
+# define CHAR__MAX WCHAR_MAX
+# define CHAR__MIN WCHAR_MIN
+
+/* Wcscmp uses signed semantics for comparison, not unsigned */
+/* Avoid using substraction since possible overflow */
+
+int
+simple_wcscmp (const wchar_t *s1, const wchar_t *s2)
+{
+ wchar_t c1, c2;
+ do
+ {
+ c1 = *s1++;
+ c2 = *s2++;
+ if (c2 == L'\0')
+ return c1 - c2;
+ }
+ while (c1 == c2);
+
+ return c1 < c2 ? -1 : 1;
+}
+
+int
+stupid_wcscmp (const wchar_t *s1, const wchar_t *s2)
+{
+ size_t ns1 = wcslen (s1) + 1;
+ size_t ns2 = wcslen (s2) + 1;
+ size_t n = ns1 < ns2 ? ns1 : ns2;
+ int ret = 0;
+
+ wchar_t c1, c2;
+
+ while (n--) {
+ c1 = *s1++;
+ c2 = *s2++;
+ if ((ret = c1 < c2 ? -1 : c1 == c2 ? 0 : 1) != 0)
+ break;
+ }
+ return ret;
+}
+
+#else
+# include <limits.h>
+
+# define L(str) str
+# define STRCMP strcmp
+# define STRCPY strcpy
+# define STRLEN strlen
+# define MEMCPY memcpy
+# define SIMPLE_STRCMP simple_strcmp
+# define STUPID_STRCMP stupid_strcmp
+# define CHAR char
+# define UCHAR unsigned char
+# define CHARBYTES 1
+# define CHARBYTESLOG 0
+# define CHARALIGN 1
+# define MIDCHAR 0x7f
+# define LARGECHAR 0xfe
+# define CHAR__MAX CHAR_MAX
+# define CHAR__MIN CHAR_MIN
+
+/* Strcmp uses unsigned semantics for comparison. */
+int
+simple_strcmp (const char *s1, const char *s2)
+{
+ int ret;
+
+ while ((ret = *(unsigned char *) s1 - *(unsigned char*) s2++) == 0 && *s1++);
+ return ret;
+}
+
+int
+stupid_strcmp (const char *s1, const char *s2)
+{
+ size_t ns1 = strlen (s1) + 1;
+ size_t ns2 = strlen (s2) + 1;
+ size_t n = ns1 < ns2 ? ns1 : ns2;
+ int ret = 0;
+
+ while (n--)
+ if ((ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) != 0)
+ break;
+ return ret;
+}
+#endif
+
+typedef int (*proto_t) (const CHAR *, const CHAR *);
+
+IMPL (STUPID_STRCMP, 1)
+IMPL (SIMPLE_STRCMP, 1)
+IMPL (STRCMP, 1)
+
+static void
+do_one_test (impl_t *impl,
+ const CHAR *s1, const CHAR *s2,
+ int exp_result)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, int max_char,
+ int exp_result)
+{
+ size_t i;
+
+ CHAR *s1, *s2;
+
+ if (len == 0)
+ return;
+
+ align1 &= 63;
+ if (align1 + (len + 1) * CHARBYTES >= page_size)
+ return;
+
+ align2 &= 63;
+ if (align2 + (len + 1) * CHARBYTES >= page_size)
+ return;
+
+ /* Put them close to the end of page. */
+ i = align1 + CHARBYTES * (len + 2);
+ s1 = (CHAR *) (buf1 + ((page_size - i) / 16 * 16) + align1);
+ i = align2 + CHARBYTES * (len + 2);
+ s2 = (CHAR *) (buf2 + ((page_size - i) / 16 * 16) + align2);
+
+ for (i = 0; i < len; i++)
+ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char;
+
+ s1[len] = s2[len] = 0;
+ s1[len + 1] = 23;
+ s2[len + 1] = 24 + exp_result;
+ s2[len - 1] -= exp_result;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 32; ++i)
+ {
+ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 0);
+ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 1);
+ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, -1);
+ }
+
+ for (i = 1; i < 10 + CHARBYTESLOG; ++i)
+ {
+ do_test (0, 0, 2 << i, MIDCHAR, 0);
+ do_test (0, 0, 2 << i, LARGECHAR, 0);
+ do_test (0, 0, 2 << i, MIDCHAR, 1);
+ do_test (0, 0, 2 << i, LARGECHAR, 1);
+ do_test (0, 0, 2 << i, MIDCHAR, -1);
+ do_test (0, 0, 2 << i, LARGECHAR, -1);
+ do_test (0, CHARBYTES * i, 2 << i, MIDCHAR, 1);
+ do_test (CHARBYTES * i, CHARBYTES * (i + 1), 2 << i, LARGECHAR, 1);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 0);
+ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 0);
+ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 1);
+ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 1);
+ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, -1);
+ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, -1);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strcpy-ifunc.c b/benchtests/bench-strcpy-ifunc.c
new file mode 100644
index 0000000..d27a4f9
--- /dev/null
+++ b/benchtests/bench-strcpy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strcpy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strcpy.c"
diff --git a/benchtests/bench-strcpy.c b/benchtests/bench-strcpy.c
new file mode 100644
index 0000000..4e024d4
--- /dev/null
+++ b/benchtests/bench-strcpy.c
@@ -0,0 +1,183 @@
+/* Measure strcpy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifdef WIDE
+# include <wchar.h>
+# define CHAR wchar_t
+# define UCHAR wchar_t
+# define sfmt "ls"
+# define BIG_CHAR WCHAR_MAX
+# define SMALL_CHAR 1273
+# define STRCMP wcscmp
+# define MEMCMP wmemcmp
+# define MEMSET wmemset
+#else
+# define CHAR char
+# define UCHAR unsigned char
+# define sfmt "s"
+# define BIG_CHAR CHAR_MAX
+# define SMALL_CHAR 127
+# define STRCMP strcmp
+# define MEMCMP memcmp
+# define MEMSET memset
+#endif
+
+#ifndef STRCPY_RESULT
+# define STRCPY_RESULT(dst, len) dst
+# define TEST_MAIN
+# ifndef WIDE
+# define TEST_NAME "strcpy"
+# else
+# define TEST_NAME "wcscpy"
+# endif
+# include "bench-string.h"
+# ifndef WIDE
+# define SIMPLE_STRCPY simple_strcpy
+# define STRCPY strcpy
+# else
+# define SIMPLE_STRCPY simple_wcscpy
+# define STRCPY wcscpy
+# endif
+
+CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *);
+
+IMPL (SIMPLE_STRCPY, 0)
+IMPL (STRCPY, 1)
+
+CHAR *
+SIMPLE_STRCPY (CHAR *dst, const CHAR *src)
+{
+ CHAR *ret = dst;
+ while ((*dst++ = *src++) != '\0');
+ return ret;
+}
+#endif
+
+typedef CHAR *(*proto_t) (CHAR *, const CHAR *);
+
+static void
+do_one_test (impl_t *impl, CHAR *dst, const CHAR *src,
+ size_t len __attribute__((unused)))
+{
+ if (CALL (impl, dst, src) != STRCPY_RESULT (dst, len))
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ CALL (impl, dst, src), STRCPY_RESULT (dst, len));
+ ret = 1;
+ return;
+ }
+
+ if (STRCMP (dst, src) != 0)
+ {
+ error (0, 0,
+ "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"",
+ impl->name, dst, src);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));;
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, dst, src);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, int max_char)
+{
+ size_t i;
+ CHAR *s1, *s2;
+/* For wcscpy: align1 and align2 here mean alignment not in bytes,
+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
+ align1 &= 7;
+ if ((align1 + len) * sizeof(CHAR) >= page_size)
+ return;
+
+ align2 &= 7;
+ if ((align2 + len) * sizeof(CHAR) >= page_size)
+ return;
+
+ s1 = (CHAR *) (buf1) + align1;
+ s2 = (CHAR *) (buf2) + align2;
+
+ for (i = 0; i < len; i++)
+ s1[i] = 32 + 23 * i % (max_char - 32);
+ s1[len] = 0;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR));
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s2, s1, len);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 0; i < 16; ++i)
+ {
+ do_test (0, 0, i, SMALL_CHAR);
+ do_test (0, 0, i, BIG_CHAR);
+ do_test (0, i, i, SMALL_CHAR);
+ do_test (i, 0, i, BIG_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 0, 8 << i, SMALL_CHAR);
+ do_test (8 - i, 2 * i, 8 << i, SMALL_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 2 * i, 8 << i, SMALL_CHAR);
+ do_test (2 * i, i, 8 << i, BIG_CHAR);
+ do_test (i, i, 8 << i, SMALL_CHAR);
+ do_test (i, i, 8 << i, BIG_CHAR);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strcspn-ifunc.c b/benchtests/bench-strcspn-ifunc.c
new file mode 100644
index 0000000..e257c9b
--- /dev/null
+++ b/benchtests/bench-strcspn-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strcspn function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strcspn.c"
diff --git a/benchtests/bench-strcspn.c b/benchtests/bench-strcspn.c
new file mode 100644
index 0000000..22b3b84
--- /dev/null
+++ b/benchtests/bench-strcspn.c
@@ -0,0 +1,59 @@
+/* Measure strcspn functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define STRPBRK_RESULT(s, pos) (pos)
+#define RES_TYPE size_t
+#define TEST_MAIN
+#define TEST_NAME "strcspn"
+#include "bench-string.h"
+
+typedef size_t (*proto_t) (const char *, const char *);
+size_t simple_strcspn (const char *, const char *);
+size_t stupid_strcspn (const char *, const char *);
+
+IMPL (stupid_strcspn, 0)
+IMPL (simple_strcspn, 0)
+IMPL (strcspn, 1)
+
+size_t
+simple_strcspn (const char *s, const char *rej)
+{
+ const char *r, *str = s;
+ char c;
+
+ while ((c = *s++) != '\0')
+ for (r = rej; *r != '\0'; ++r)
+ if (*r == c)
+ return s - str - 1;
+ return s - str - 1;
+}
+
+size_t
+stupid_strcspn (const char *s, const char *rej)
+{
+ size_t ns = strlen (s), nrej = strlen (rej);
+ size_t i, j;
+
+ for (i = 0; i < ns; ++i)
+ for (j = 0; j < nrej; ++j)
+ if (s[i] == rej[j])
+ return i;
+ return i;
+}
+
+#include "bench-strpbrk.c"
diff --git a/benchtests/bench-strlen-ifunc.c b/benchtests/bench-strlen-ifunc.c
new file mode 100644
index 0000000..fcd4592
--- /dev/null
+++ b/benchtests/bench-strlen-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strlen function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strlen.c"
diff --git a/benchtests/bench-strlen.c b/benchtests/bench-strlen.c
new file mode 100644
index 0000000..63b1e93
--- /dev/null
+++ b/benchtests/bench-strlen.c
@@ -0,0 +1,149 @@
+/* Measure STRLEN functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifndef WIDE
+# define TEST_NAME "strlen"
+#else
+# define TEST_NAME "wcslen"
+#endif
+#include "bench-string.h"
+
+#ifndef WIDE
+# define STRLEN strlen
+# define CHAR char
+# define MAX_CHAR CHAR_MAX
+#else
+# include <wchar.h>
+# define STRLEN wcslen
+# define CHAR wchar_t
+# define MAX_CHAR WCHAR_MAX
+#endif
+
+typedef size_t (*proto_t) (const CHAR *);
+
+size_t
+simple_STRLEN (const CHAR *s)
+{
+ const CHAR *p;
+
+ for (p = s; *p; ++p);
+ return p - s;
+}
+
+#ifndef WIDE
+size_t
+builtin_strlen (const CHAR *p)
+{
+ return __builtin_strlen (p);
+}
+IMPL (builtin_strlen, 0)
+#endif
+
+IMPL (simple_STRLEN, 0)
+IMPL (STRLEN, 1)
+
+
+static void
+do_one_test (impl_t *impl, const CHAR *s, size_t exp_len)
+{
+ size_t len = CALL (impl, s);
+ if (len != exp_len)
+ {
+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name,
+ len, exp_len);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t len)
+{
+ size_t i;
+
+ align &= 63;
+ if (align + sizeof(CHAR) * len >= page_size)
+ return;
+
+ CHAR *buf = (CHAR *) (buf1);
+
+ for (i = 0; i < len; ++i)
+ buf[align + i] = 1 + 11111 * i % MAX_CHAR;
+ buf[align + len] = 0;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd:", len, align);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (CHAR *) (buf + align), len);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ /* Checking with only 4 * N alignments for wcslen, other alignments are wrong for wchar_t type arrays*/
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (sizeof(CHAR) * i, i);
+ do_test (0, i);
+ }
+
+ for (i = 2; i <= 12; ++i)
+ {
+ do_test (0, 1 << i);
+ do_test (sizeof(CHAR) * 7, 1 << i);
+ do_test (sizeof(CHAR) * i, 1 << i);
+ do_test (sizeof(CHAR) * i, (size_t)((1 << i) / 1.5));
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strncasecmp-ifunc.c b/benchtests/bench-strncasecmp-ifunc.c
new file mode 100644
index 0000000..df796e2
--- /dev/null
+++ b/benchtests/bench-strncasecmp-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strncasecmp function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strncasecmp.c"
diff --git a/benchtests/bench-strncasecmp.c b/benchtests/bench-strncasecmp.c
new file mode 100644
index 0000000..5fa9220
--- /dev/null
+++ b/benchtests/bench-strncasecmp.c
@@ -0,0 +1,213 @@
+/* Measure strncasecmp functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <ctype.h>
+#define TEST_MAIN
+#define TEST_NAME "strncasecmp"
+#include "bench-string.h"
+
+typedef int (*proto_t) (const char *, const char *, size_t);
+static int simple_strncasecmp (const char *, const char *, size_t);
+static int stupid_strncasecmp (const char *, const char *, size_t);
+
+IMPL (stupid_strncasecmp, 0)
+IMPL (simple_strncasecmp, 0)
+IMPL (strncasecmp, 1)
+
+static int
+simple_strncasecmp (const char *s1, const char *s2, size_t n)
+{
+ int ret;
+
+ if (n == 0)
+ return 0;
+
+ while ((ret = ((unsigned char) tolower (*s1)
+ - (unsigned char) tolower (*s2))) == 0
+ && *s1++)
+ {
+ if (--n == 0)
+ return 0;
+ ++s2;
+ }
+ return ret;
+}
+
+static int
+stupid_strncasecmp (const char *s1, const char *s2, size_t max)
+{
+ size_t ns1 = strlen (s1) + 1;
+ size_t ns2 = strlen (s2) + 1;
+ size_t n = ns1 < ns2 ? ns1 : ns2;
+ if (n > max)
+ n = max;
+ int ret = 0;
+
+ while (n--)
+ {
+ if ((ret = ((unsigned char) tolower (*s1)
+ - (unsigned char) tolower (*s2))) != 0)
+ break;
+ ++s1;
+ ++s2;
+ }
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n,
+ int exp_result)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2, n);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char,
+ int exp_result)
+{
+ size_t i;
+ char *s1, *s2;
+
+ if (len == 0)
+ return;
+
+ align1 &= 7;
+ if (align1 + len + 1 >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + len + 1 >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len; i++)
+ {
+ s1[i] = toupper (1 + 23 * i % max_char);
+ s2[i] = tolower (s1[i]);
+ }
+
+ s1[len] = s2[len] = 0;
+ s1[len + 1] = 23;
+ s2[len + 1] = 24 + exp_result;
+ if ((s2[len - 1] == 'z' && exp_result == -1)
+ || (s2[len - 1] == 'a' && exp_result == 1))
+ s1[len - 1] += exp_result;
+ else
+ s2[len - 1] -= exp_result;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, n, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 16; ++i)
+ {
+ do_test (i, i, i - 1, i, 127, 0);
+
+ do_test (i, i, i, i, 127, 0);
+ do_test (i, i, i, i, 127, 1);
+ do_test (i, i, i, i, 127, -1);
+
+ do_test (i, i, i + 1, i, 127, 0);
+ do_test (i, i, i + 1, i, 127, 1);
+ do_test (i, i, i + 1, i, 127, -1);
+ }
+
+ for (i = 1; i < 10; ++i)
+ {
+ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0);
+ do_test (0, 0, 2 << i, 2 << i, 254, 0);
+ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0);
+
+ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0);
+
+ do_test (0, 0, 2 << i, 2 << i, 127, 1);
+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1);
+
+ do_test (0, 0, 2 << i, 2 << i, 254, 1);
+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1);
+
+ do_test (0, 0, 2 << i, 2 << i, 127, -1);
+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1);
+
+ do_test (0, 0, 2 << i, 2 << i, 254, -1);
+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0);
+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0);
+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0);
+
+ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0);
+ do_test (2 * i, i, 8 << i, 8 << i, 254, 0);
+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0);
+
+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1);
+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1);
+
+ do_test (2 * i, i, 8 << i, 8 << i, 254, 1);
+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1);
+
+ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1);
+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1);
+
+ do_test (2 * i, i, 8 << i, 8 << i, 254, -1);
+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strncat-ifunc.c b/benchtests/bench-strncat-ifunc.c
new file mode 100644
index 0000000..adcfd22
--- /dev/null
+++ b/benchtests/bench-strncat-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strncat function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strncat.c"
diff --git a/benchtests/bench-strncat.c b/benchtests/bench-strncat.c
new file mode 100644
index 0000000..904daa7
--- /dev/null
+++ b/benchtests/bench-strncat.c
@@ -0,0 +1,168 @@
+/* Measure strncat functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strncat"
+#include "bench-string.h"
+
+typedef char *(*proto_t) (char *, const char *, size_t);
+char *stupid_strncat (char *, const char *, size_t);
+char *simple_strncat (char *, const char *, size_t);
+
+IMPL (stupid_strncat, 0)
+IMPL (strncat, 2)
+
+char *
+stupid_strncat (char *dst, const char *src, size_t n)
+{
+ char *ret = dst;
+ while (*dst++ != '\0');
+ --dst;
+ while (n--)
+ if ( (*dst++ = *src++) == '\0')
+ return ret;
+ *dst = '\0';
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, char *dst, const char *src, size_t n)
+{
+ size_t k = strlen (dst);
+ if (CALL (impl, dst, src, n) != dst)
+ {
+ error (0, 0, "Wrong result in function %s %p != %p", impl->name,
+ CALL (impl, dst, src, n), dst);
+ ret = 1;
+ return;
+ }
+
+ size_t len = strlen (src);
+ if (memcmp (dst + k, src, len + 1 > n ? n : len + 1) != 0)
+ {
+ error (0, 0, "Incorrect cancatination in function %s",
+ impl->name);
+ ret = 1;
+ return;
+ }
+ if (n < len && dst[k + n] != '\0')
+ {
+ error (0, 0, "There is no zero in the end of output string in %s",
+ impl->name);
+ ret = 1;
+ return;
+ }
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ dst[k] = '\0';
+ HP_TIMING_NOW (start);
+ CALL (impl, dst, src, n);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ size_t n, int max_char)
+{
+ size_t i;
+ char *s1, *s2;
+
+ align1 &= 7;
+ if (align1 + len1 >= page_size)
+ return;
+ if (align1 + n > page_size)
+ return;
+ align2 &= 7;
+ if (align2 + len1 + len2 >= page_size)
+ return;
+ if (align2 + len1 + n > page_size)
+ return;
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len1; ++i)
+ s1[i] = 32 + 23 * i % (max_char - 32);
+ s1[len1] = '\0';
+
+ for (i = 0; i < len2; i++)
+ s2[i] = 32 + 23 * i % (max_char - 32);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd, N %4zd:",
+ len1, len2, align1, align2, n);
+
+ FOR_EACH_IMPL (impl, 0)
+ {
+ s2[len2] = '\0';
+ do_one_test (impl, s2, s1, n);
+ }
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+main (void)
+{
+ size_t i, n;
+
+ test_init ();
+
+ printf ("%28s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (n = 2; n <= 2048; n*=4)
+ {
+ do_test (0, 2, 2, 2, n, 127);
+ do_test (0, 0, 4, 4, n, 127);
+ do_test (4, 0, 4, 4, n, 255);
+ do_test (0, 0, 8, 8, n, 127);
+ do_test (0, 8, 8, 8, n, 127);
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 0, 8 << i, 8 << i, n, 127);
+ do_test (8 - i, 2 * i, 8 << i, 8 << i, n, 127);
+ do_test (0, 0, 8 << i, 2 << i, n, 127);
+ do_test (8 - i, 2 * i, 8 << i, 2 << i, n, 127);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 2 * i, 8 << i, 1, n, 127);
+ do_test (2 * i, i, 8 << i, 1, n, 255);
+ do_test (i, i, 8 << i, 10, n, 127);
+ }
+ }
+
+ return ret;
+}
diff --git a/benchtests/bench-strncmp-ifunc.c b/benchtests/bench-strncmp-ifunc.c
new file mode 100644
index 0000000..1cae32b
--- /dev/null
+++ b/benchtests/bench-strncmp-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strncmp function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strncmp.c"
diff --git a/benchtests/bench-strncmp.c b/benchtests/bench-strncmp.c
new file mode 100644
index 0000000..b3af0f9
--- /dev/null
+++ b/benchtests/bench-strncmp.c
@@ -0,0 +1,249 @@
+/* Measure strncmp functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strncmp"
+#include "bench-string.h"
+
+typedef int (*proto_t) (const char *, const char *, size_t);
+int simple_strncmp (const char *, const char *, size_t);
+int stupid_strncmp (const char *, const char *, size_t);
+
+IMPL (stupid_strncmp, 0)
+IMPL (simple_strncmp, 0)
+IMPL (strncmp, 1)
+
+int
+simple_strncmp (const char *s1, const char *s2, size_t n)
+{
+ int ret = 0;
+
+ while (n-- && (ret = *(unsigned char *) s1 - * (unsigned char *) s2++) == 0
+ && *s1++);
+ return ret;
+}
+
+int
+stupid_strncmp (const char *s1, const char *s2, size_t n)
+{
+ size_t ns1 = strnlen (s1, n) + 1, ns2 = strnlen (s2, n) + 1;
+ int ret = 0;
+
+ n = ns1 < n ? ns1 : n;
+ n = ns2 < n ? ns2 : n;
+ while (n-- && (ret = *(unsigned char *) s1++ - * (unsigned char *) s2++) == 0);
+ return ret;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n,
+ int exp_result)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2, n);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ int exp_result)
+{
+ size_t i, align_n;
+ char *s1, *s2;
+
+ if (n == 0)
+ {
+ s1 = (char*)(buf1 + page_size);
+ s2 = (char*)(buf2 + page_size);
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%4zd:", len, n);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, n, 0);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+
+ return;
+ }
+
+ align1 &= 15;
+ align2 &= 15;
+ align_n = (page_size - n) & 15;
+
+ s1 = (char*)(buf1 + page_size - n);
+ s2 = (char*)(buf2 + page_size - n);
+
+ if (align1 < align_n)
+ s1 -= (align_n - align1);
+
+ if (align2 < align_n)
+ s2 -= (align_n - align2);
+
+ for (i = 0; i < n; i++)
+ s1[i] = s2[i] = 1 + 23 * i % max_char;
+
+ if (len < n)
+ {
+ s1[len] = 0;
+ s2[len] = 0;
+ if (exp_result < 0)
+ s2[len] = 32;
+ else if (exp_result > 0)
+ s1[len] = 64;
+ }
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, n, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char,
+ int exp_result)
+{
+ size_t i;
+ char *s1, *s2;
+
+ if (n == 0)
+ return;
+
+ align1 &= 7;
+ if (align1 + n + 1 >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + n + 1 >= page_size)
+ return;
+
+ s1 = (char*)(buf1 + align1);
+ s2 = (char*)(buf2 + align2);
+
+ for (i = 0; i < n; i++)
+ s1[i] = s2[i] = 1 + 23 * i % max_char;
+
+ s1[n] = 24 + exp_result;
+ s2[n] = 23;
+ s1[len] = 0;
+ s2[len] = 0;
+ if (exp_result < 0)
+ s2[len] = 32;
+ else if (exp_result > 0)
+ s1[len] = 64;
+ if (len >= n)
+ s2[n - 1] -= exp_result;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (char*)s1, (char*)s2, n, exp_result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i =0; i < 16; ++i)
+ {
+ do_test (0, 0, 8, i, 127, 0);
+ do_test (0, 0, 8, i, 127, -1);
+ do_test (0, 0, 8, i, 127, 1);
+ do_test (i, i, 8, i, 127, 0);
+ do_test (i, i, 8, i, 127, 1);
+ do_test (i, i, 8, i, 127, -1);
+ do_test (i, 2 * i, 8, i, 127, 0);
+ do_test (2 * i, i, 8, i, 127, 1);
+ do_test (i, 3 * i, 8, i, 127, -1);
+ do_test (0, 0, 8, i, 255, 0);
+ do_test (0, 0, 8, i, 255, -1);
+ do_test (0, 0, 8, i, 255, 1);
+ do_test (i, i, 8, i, 255, 0);
+ do_test (i, i, 8, i, 255, 1);
+ do_test (i, i, 8, i, 255, -1);
+ do_test (i, 2 * i, 8, i, 255, 0);
+ do_test (2 * i, i, 8, i, 255, 1);
+ do_test (i, 3 * i, 8, i, 255, -1);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 0, 8 << i, 16 << i, 127, 0);
+ do_test (0, 0, 8 << i, 16 << i, 127, 1);
+ do_test (0, 0, 8 << i, 16 << i, 127, -1);
+ do_test (0, 0, 8 << i, 16 << i, 255, 0);
+ do_test (0, 0, 8 << i, 16 << i, 255, 1);
+ do_test (0, 0, 8 << i, 16 << i, 255, -1);
+ do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 0);
+ do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 1);
+ do_test (2 * i, i, 8 << i, 16 << i, 255, 0);
+ do_test (2 * i, i, 8 << i, 16 << i, 255, 1);
+ }
+
+ do_test_limit (0, 0, 0, 0, 127, 0);
+ do_test_limit (4, 0, 21, 20, 127, 0);
+ do_test_limit (0, 4, 21, 20, 127, 0);
+ do_test_limit (8, 0, 25, 24, 127, 0);
+ do_test_limit (0, 8, 25, 24, 127, 0);
+
+ for (i = 0; i < 8; ++i)
+ {
+ do_test_limit (0, 0, 17 - i, 16 - i, 127, 0);
+ do_test_limit (0, 0, 17 - i, 16 - i, 255, 0);
+ do_test_limit (0, 0, 15 - i, 16 - i, 127, 0);
+ do_test_limit (0, 0, 15 - i, 16 - i, 127, 1);
+ do_test_limit (0, 0, 15 - i, 16 - i, 127, -1);
+ do_test_limit (0, 0, 15 - i, 16 - i, 255, 0);
+ do_test_limit (0, 0, 15 - i, 16 - i, 255, 1);
+ do_test_limit (0, 0, 15 - i, 16 - i, 255, -1);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strncpy-ifunc.c b/benchtests/bench-strncpy-ifunc.c
new file mode 100644
index 0000000..d4eebe6
--- /dev/null
+++ b/benchtests/bench-strncpy-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strncpy function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strncpy.c"
diff --git a/benchtests/bench-strncpy.c b/benchtests/bench-strncpy.c
new file mode 100644
index 0000000..4065c0a
--- /dev/null
+++ b/benchtests/bench-strncpy.c
@@ -0,0 +1,180 @@
+/* Measure strncpy functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef STRNCPY_RESULT
+# define STRNCPY_RESULT(dst, len, n) dst
+# define TEST_MAIN
+# define TEST_NAME "strncpy"
+# include "bench-string.h"
+
+char *simple_strncpy (char *, const char *, size_t);
+char *stupid_strncpy (char *, const char *, size_t);
+
+IMPL (stupid_strncpy, 0)
+IMPL (simple_strncpy, 0)
+IMPL (strncpy, 1)
+
+char *
+simple_strncpy (char *dst, const char *src, size_t n)
+{
+ char *ret = dst;
+ while (n--)
+ if ((*dst++ = *src++) == '\0')
+ {
+ while (n--)
+ *dst++ = '\0';
+ return ret;
+ }
+ return ret;
+}
+
+char *
+stupid_strncpy (char *dst, const char *src, size_t n)
+{
+ size_t nc = strnlen (src, n);
+ size_t i;
+
+ for (i = 0; i < nc; ++i)
+ dst[i] = src[i];
+ for (; i < n; ++i)
+ dst[i] = '\0';
+ return dst;
+}
+#endif
+
+typedef char *(*proto_t) (char *, const char *, size_t);
+
+static void
+do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n)
+{
+ if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n))
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ CALL (impl, dst, src, n), dst);
+ ret = 1;
+ return;
+ }
+
+ if (memcmp (dst, src, len > n ? n : len) != 0)
+ {
+ error (0, 0, "Wrong result in function %s", impl->name);
+ ret = 1;
+ return;
+ }
+
+ if (n > len)
+ {
+ size_t i;
+
+ for (i = len; i < n; ++i)
+ if (dst [i] != '\0')
+ {
+ error (0, 0, "Wrong result in function %s", impl->name);
+ ret = 1;
+ return;
+ }
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute__ ((unused));
+ hp_timing_t stop __attribute__ ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, dst, src, n);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char)
+{
+ size_t i;
+ char *s1, *s2;
+
+ align1 &= 7;
+ if (align1 + len >= page_size)
+ return;
+
+ align2 &= 7;
+ if (align2 + len >= page_size)
+ return;
+
+ s1 = (char *) (buf1 + align1);
+ s2 = (char *) (buf2 + align2);
+
+ for (i = 0; i < len; ++i)
+ s1[i] = 32 + 23 * i % (max_char - 32);
+ s1[len] = 0;
+ for (i = len + 1; i + align1 < page_size && i < len + 64; ++i)
+ s1[i] = 32 + 32 * i % (max_char - 32);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, n %4zd, alignment %2zd/%2zd:", len, n, align1, align2);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s2, s1, len, n);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%28s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, i, 16, 16, 127);
+ do_test (i, i, 16, 16, 255);
+ do_test (i, 2 * i, 16, 16, 127);
+ do_test (2 * i, i, 16, 16, 255);
+ do_test (8 - i, 2 * i, 1 << i, 2 << i, 127);
+ do_test (2 * i, 8 - i, 2 << i, 1 << i, 127);
+ do_test (8 - i, 2 * i, 1 << i, 2 << i, 255);
+ do_test (2 * i, 8 - i, 2 << i, 1 << i, 255);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 0, 4 << i, 8 << i, 127);
+ do_test (0, 0, 16 << i, 8 << i, 127);
+ do_test (8 - i, 2 * i, 4 << i, 8 << i, 127);
+ do_test (8 - i, 2 * i, 16 << i, 8 << i, 127);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strnlen-ifunc.c b/benchtests/bench-strnlen-ifunc.c
new file mode 100644
index 0000000..05563aa
--- /dev/null
+++ b/benchtests/bench-strnlen-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strnlen function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strnlen.c"
diff --git a/benchtests/bench-strnlen.c b/benchtests/bench-strnlen.c
new file mode 100644
index 0000000..4233f27
--- /dev/null
+++ b/benchtests/bench-strnlen.c
@@ -0,0 +1,139 @@
+/* Measure strlen functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strnlen"
+#include "bench-string.h"
+
+typedef size_t (*proto_t) (const char *, size_t);
+size_t simple_strnlen (const char *, size_t);
+
+IMPL (simple_strnlen, 0)
+IMPL (strnlen, 1)
+
+size_t
+simple_strnlen (const char *s, size_t maxlen)
+{
+ size_t i;
+
+ for (i = 0; i < maxlen && s[i]; ++i);
+ return i;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len)
+{
+ size_t len = CALL (impl, s, maxlen);
+ if (len != exp_len)
+ {
+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name,
+ len, exp_len);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, maxlen);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t len, size_t maxlen, int max_char)
+{
+ size_t i;
+
+ align &= 7;
+ if (align + len >= page_size)
+ return;
+
+ for (i = 0; i < len; ++i)
+ buf1[align + i] = 1 + 7 * i % max_char;
+ buf1[align + len] = 0;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd:", len, align);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen));
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, i, i - 1, 127);
+ do_test (0, i, i, 127);
+ do_test (0, i, i + 1, 127);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, i, i - 1, 127);
+ do_test (i, i, i, 127);
+ do_test (i, i, i + 1, 127);
+ }
+
+ for (i = 2; i <= 10; ++i)
+ {
+ do_test (0, 1 << i, 5000, 127);
+ do_test (1, 1 << i, 5000, 127);
+ }
+
+ for (i = 1; i < 8; ++i)
+ do_test (0, i, 5000, 255);
+
+ for (i = 1; i < 8; ++i)
+ do_test (i, i, 5000, 255);
+
+ for (i = 2; i <= 10; ++i)
+ {
+ do_test (0, 1 << i, 5000, 255);
+ do_test (1, 1 << i, 5000, 255);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strpbrk-ifunc.c b/benchtests/bench-strpbrk-ifunc.c
new file mode 100644
index 0000000..38f9881
--- /dev/null
+++ b/benchtests/bench-strpbrk-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strpbrk function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strpbrk.c"
diff --git a/benchtests/bench-strpbrk.c b/benchtests/bench-strpbrk.c
new file mode 100644
index 0000000..0163de8
--- /dev/null
+++ b/benchtests/bench-strpbrk.c
@@ -0,0 +1,182 @@
+/* Measure strpbrk functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef STRPBRK_RESULT
+# define STRPBRK_RESULT(s, pos) ((s)[(pos)] ? (s) + (pos) : NULL)
+# define RES_TYPE char *
+# define TEST_MAIN
+# define TEST_NAME "strpbrk"
+# include "bench-string.h"
+
+typedef char *(*proto_t) (const char *, const char *);
+char *simple_strpbrk (const char *, const char *);
+char *stupid_strpbrk (const char *, const char *);
+
+IMPL (stupid_strpbrk, 0)
+IMPL (simple_strpbrk, 0)
+IMPL (strpbrk, 1)
+
+char *
+simple_strpbrk (const char *s, const char *rej)
+{
+ const char *r;
+ char c;
+
+ while ((c = *s++) != '\0')
+ for (r = rej; *r != '\0'; ++r)
+ if (*r == c)
+ return (char *) s - 1;
+ return NULL;
+}
+
+char *
+stupid_strpbrk (const char *s, const char *rej)
+{
+ size_t ns = strlen (s), nrej = strlen (rej);
+ size_t i, j;
+
+ for (i = 0; i < ns; ++i)
+ for (j = 0; j < nrej; ++j)
+ if (s[i] == rej[j])
+ return (char *) s + i;
+ return NULL;
+}
+#endif
+
+static void
+do_one_test (impl_t *impl, const char *s, const char *rej, RES_TYPE exp_res)
+{
+ RES_TYPE res = CALL (impl, s, rej);
+ if (res != exp_res)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ (void *) res, (void *) exp_res);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, rej);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t pos, size_t len)
+{
+ size_t i;
+ int c;
+ RES_TYPE result;
+ char *rej, *s;
+
+ align &= 7;
+ if (align + pos + 10 >= page_size || len > 240)
+ return;
+
+ rej = (char *) (buf2 + (random () & 255));
+ s = (char *) (buf1 + align);
+
+ for (i = 0; i < len; ++i)
+ {
+ rej[i] = random () & 255;
+ if (!rej[i])
+ rej[i] = random () & 255;
+ if (!rej[i])
+ rej[i] = 1 + (random () & 127);
+ }
+ rej[len] = '\0';
+ for (c = 1; c <= 255; ++c)
+ if (strchr (rej, c) == NULL)
+ break;
+
+ for (i = 0; i < pos; ++i)
+ {
+ s[i] = random () & 255;
+ if (strchr (rej, s[i]))
+ {
+ s[i] = random () & 255;
+ if (strchr (rej, s[i]))
+ s[i] = c;
+ }
+ }
+ s[pos] = rej[random () % (len + 1)];
+ if (s[pos])
+ {
+ for (i = pos + 1; i < pos + 10; ++i)
+ s[i] = random () & 255;
+ s[i] = '\0';
+ }
+ result = STRPBRK_RESULT (s, pos);
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd, rej len %2zd:", pos, align, len);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s, rej, result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%32s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, 512, i);
+ do_test (i, 512, i);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 4);
+ do_test (i, 16 << i, 4);
+ }
+
+ for (i = 1; i < 8; ++i)
+ do_test (i, 64, 10);
+
+ for (i = 0; i < 64; ++i)
+ do_test (0, i, 6);
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strrchr-ifunc.c b/benchtests/bench-strrchr-ifunc.c
new file mode 100644
index 0000000..06283cd
--- /dev/null
+++ b/benchtests/bench-strrchr-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strrchr function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strrchr.c"
diff --git a/benchtests/bench-strrchr.c b/benchtests/bench-strrchr.c
new file mode 100644
index 0000000..400ac80
--- /dev/null
+++ b/benchtests/bench-strrchr.c
@@ -0,0 +1,190 @@
+/* Measure STRCHR functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#ifdef WIDE
+# define TEST_NAME "wcsrchr"
+#else
+# define TEST_NAME "strrchr"
+#endif
+#include "bench-string.h"
+
+#ifdef WIDE
+# include <wchar.h>
+# define SIMPLE_STRRCHR simple_wcsrchr
+# define STRRCHR wcsrchr
+# define CHAR wchar_t
+# define UCHAR wchar_t
+# define BIG_CHAR WCHAR_MAX
+# define SMALL_CHAR 1273
+#else
+# define SIMPLE_STRRCHR simple_strrchr
+# define STRRCHR strrchr
+# define CHAR char
+# define UCHAR unsigned char
+# define BIG_CHAR CHAR_MAX
+# define SMALL_CHAR 127
+#endif
+
+typedef CHAR *(*proto_t) (const CHAR *, int);
+CHAR *SIMPLE_STRRCHR (const CHAR *, int);
+
+IMPL (SIMPLE_STRRCHR, 0)
+IMPL (STRRCHR, 1)
+
+CHAR *
+SIMPLE_STRRCHR (const CHAR *s, int c)
+{
+ const CHAR *ret = NULL;
+
+ for (; *s != '\0'; ++s)
+ if (*s == (CHAR) c)
+ ret = s;
+
+ return (CHAR *) (c == '\0' ? s : ret);
+}
+
+static void
+do_one_test (impl_t *impl, const CHAR *s, int c, CHAR *exp_res)
+{
+ CHAR *res = CALL (impl, s, c);
+ if (res != exp_res)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ res, exp_res);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, c);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char)
+/* For wcsrchr: align here means align not in bytes,
+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t))
+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */
+{
+ size_t i;
+ CHAR *result;
+ CHAR *buf = (CHAR *) buf1;
+
+ align &= 7;
+ if ( (align + len) * sizeof(CHAR) >= page_size)
+ return;
+
+ for (i = 0; i < len; ++i)
+ {
+ buf[align + i] = (random () * random ()) & max_char;
+ if (!buf[align + i])
+ buf[align + i] = (random () * random ()) & max_char;
+ if (!buf[align + i])
+ buf[align + i] = 1;
+ if ((i > pos || pos >= len) && buf[align + i] == seek_char)
+ buf[align + i] = seek_char + 10 + (random () & 15);
+ }
+ buf[align + len] = 0;
+
+ if (pos < len)
+ {
+ buf[align + pos] = seek_char;
+ result = (CHAR *) (buf + align + pos);
+ }
+ else if (seek_char == 0)
+ result = (CHAR *) (buf + align + len);
+ else
+ result = NULL;
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment in bytes %2zd:", pos, align * sizeof(CHAR));
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, (CHAR *) (buf + align), seek_char, result);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%20s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 2048, 23, SMALL_CHAR);
+ do_test (i, 16 << i, 2048, 23, SMALL_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, 23, SMALL_CHAR);
+ do_test (i, 64, 256, 23, BIG_CHAR);
+ }
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, i, i + 1, 23, SMALL_CHAR);
+ do_test (0, i, i + 1, 23, BIG_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 2048, 0, SMALL_CHAR);
+ do_test (i, 16 << i, 2048, 0, SMALL_CHAR);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (i, 64, 256, 0, SMALL_CHAR);
+ do_test (i, 64, 256, 0, BIG_CHAR);
+ }
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, i, i + 1, 0, SMALL_CHAR);
+ do_test (0, i, i + 1, 0, BIG_CHAR);
+ }
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strspn-ifunc.c b/benchtests/bench-strspn-ifunc.c
new file mode 100644
index 0000000..4040c2f
--- /dev/null
+++ b/benchtests/bench-strspn-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strspn function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strspn.c"
diff --git a/benchtests/bench-strspn.c b/benchtests/bench-strspn.c
new file mode 100644
index 0000000..7cf26f4
--- /dev/null
+++ b/benchtests/bench-strspn.c
@@ -0,0 +1,174 @@
+/* Measure strspn functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strspn"
+#include "bench-string.h"
+
+typedef size_t (*proto_t) (const char *, const char *);
+size_t simple_strspn (const char *, const char *);
+size_t stupid_strspn (const char *, const char *);
+
+IMPL (stupid_strspn, 0)
+IMPL (simple_strspn, 0)
+IMPL (strspn, 1)
+
+size_t
+simple_strspn (const char *s, const char *acc)
+{
+ const char *r, *str = s;
+ char c;
+
+ while ((c = *s++) != '\0')
+ {
+ for (r = acc; *r != '\0'; ++r)
+ if (*r == c)
+ break;
+ if (*r == '\0')
+ return s - str - 1;
+ }
+ return s - str - 1;
+}
+
+size_t
+stupid_strspn (const char *s, const char *acc)
+{
+ size_t ns = strlen (s), nacc = strlen (acc);
+ size_t i, j;
+
+ for (i = 0; i < ns; ++i)
+ {
+ for (j = 0; j < nacc; ++j)
+ if (s[i] == acc[j])
+ break;
+ if (j == nacc)
+ return i;
+ }
+ return i;
+}
+
+static void
+do_one_test (impl_t *impl, const char *s, const char *acc, size_t exp_res)
+{
+ size_t res = CALL (impl, s, acc);
+ if (res != exp_res)
+ {
+ error (0, 0, "Wrong result in function %s %p %p", impl->name,
+ (void *) res, (void *) exp_res);
+ ret = 1;
+ return;
+ }
+
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~ (hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s, acc);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+static void
+do_test (size_t align, size_t pos, size_t len)
+{
+ size_t i;
+ char *acc, *s;
+
+ align &= 7;
+ if (align + pos + 10 >= page_size || len > 240 || ! len)
+ return;
+
+ acc = (char *) (buf2 + (random () & 255));
+ s = (char *) (buf1 + align);
+
+ for (i = 0; i < len; ++i)
+ {
+ acc[i] = random () & 255;
+ if (!acc[i])
+ acc[i] = random () & 255;
+ if (!acc[i])
+ acc[i] = 1 + (random () & 127);
+ }
+ acc[len] = '\0';
+
+ for (i = 0; i < pos; ++i)
+ s[i] = acc[random () % len];
+ s[pos] = random () & 255;
+ if (strchr (acc, s[pos]))
+ s[pos] = '\0';
+ else
+ {
+ for (i = pos + 1; i < pos + 10; ++i)
+ s[i] = random () & 255;
+ s[i] = '\0';
+ }
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd, alignment %2zd, acc len %2zd:", pos, align, len);
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s, acc, pos);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+int
+test_main (void)
+{
+ size_t i;
+
+ test_init ();
+
+ printf ("%32s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (i = 0; i < 32; ++i)
+ {
+ do_test (0, 512, i);
+ do_test (i, 512, i);
+ }
+
+ for (i = 1; i < 8; ++i)
+ {
+ do_test (0, 16 << i, 4);
+ do_test (i, 16 << i, 4);
+ }
+
+ for (i = 1; i < 8; ++i)
+ do_test (i, 64, 10);
+
+ for (i = 0; i < 64; ++i)
+ do_test (0, i, 6);
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
diff --git a/benchtests/bench-strstr-ifunc.c b/benchtests/bench-strstr-ifunc.c
new file mode 100644
index 0000000..b187ca5
--- /dev/null
+++ b/benchtests/bench-strstr-ifunc.c
@@ -0,0 +1,20 @@
+/* Measure IFUNC implementations of strstr function.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_IFUNC 1
+#include "bench-strstr.c"
diff --git a/benchtests/bench-strstr.c b/benchtests/bench-strstr.c
new file mode 100644
index 0000000..91a8dfe
--- /dev/null
+++ b/benchtests/bench-strstr.c
@@ -0,0 +1,183 @@
+/* Measure strstr functions.
+ Copyright (C) 2013 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define TEST_MAIN
+#define TEST_NAME "strstr"
+#include "bench-string.h"
+
+
+#define STRSTR simple_strstr
+#include "../string/strstr.c"
+
+
+static char *
+stupid_strstr (const char *s1, const char *s2)
+{
+ ssize_t s1len = strlen (s1);
+ ssize_t s2len = strlen (s2);
+
+ if (s2len > s1len)
+ return NULL;
+
+ for (ssize_t i = 0; i <= s1len - s2len; ++i)
+ {
+ size_t j;
+ for (j = 0; j < s2len; ++j)
+ if (s1[i + j] != s2[j])
+ break;
+ if (j == s2len)
+ return (char *) s1 + i;
+ }
+
+ return NULL;
+}
+
+
+typedef char *(*proto_t) (const char *, const char *);
+
+IMPL (stupid_strstr, 0)
+IMPL (simple_strstr, 0)
+IMPL (strstr, 1)
+
+
+static void
+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result)
+{
+ if (HP_TIMING_AVAIL)
+ {
+ hp_timing_t start __attribute ((unused));
+ hp_timing_t stop __attribute ((unused));
+ hp_timing_t best_time = ~(hp_timing_t) 0;
+ size_t i;
+
+ for (i = 0; i < 32; ++i)
+ {
+ HP_TIMING_NOW (start);
+ CALL (impl, s1, s2);
+ HP_TIMING_NOW (stop);
+ HP_TIMING_BEST (best_time, start, stop);
+ }
+
+ printf ("\t%zd", (size_t) best_time);
+ }
+}
+
+
+static void
+do_test (size_t align1, size_t align2, size_t len1, size_t len2,
+ int fail)
+{
+ char *s1 = (char *) (buf1 + align1);
+ char *s2 = (char *) (buf2 + align2);
+
+ static const char d[] = "1234567890abcdef";
+#define dl (sizeof (d) - 1)
+ char *ss2 = s2;
+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ ss2 = mempcpy (ss2, d, t);
+ }
+ s2[len2] = '\0';
+
+ if (fail)
+ {
+ char *ss1 = s1;
+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0)
+ {
+ size_t t = l > dl ? dl : l;
+ memcpy (ss1, d, t);
+ ++ss1[len2 > 7 ? 7 : len2 - 1];
+ ss1 += t;
+ }
+ }
+ else
+ {
+ memset (s1, '0', len1);
+ memcpy (s1 + len1 - len2, s2, len2);
+ }
+ s1[len1] = '\0';
+
+ if (HP_TIMING_AVAIL)
+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:",
+ len1, len2, align1, align2, fail ? "fail" : "found");
+
+ FOR_EACH_IMPL (impl, 0)
+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2);
+
+ if (HP_TIMING_AVAIL)
+ putchar ('\n');
+}
+
+static int
+test_main (void)
+{
+ test_init ();
+
+ printf ("%23s", "");
+ FOR_EACH_IMPL (impl, 0)
+ printf ("\t%s", impl->name);
+ putchar ('\n');
+
+ for (size_t klen = 2; klen < 32; ++klen)
+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen)
+ {
+ do_test (0, 0, hlen, klen, 0);
+ do_test (0, 0, hlen, klen, 1);
+ do_test (0, 3, hlen, klen, 0);
+ do_test (0, 3, hlen, klen, 1);
+ do_test (0, 9, hlen, klen, 0);
+ do_test (0, 9, hlen, klen, 1);
+ do_test (0, 15, hlen, klen, 0);
+ do_test (0, 15, hlen, klen, 1);
+
+ do_test (3, 0, hlen, klen, 0);
+ do_test (3, 0, hlen, klen, 1);
+ do_test (3, 3, hlen, klen, 0);
+ do_test (3, 3, hlen, klen, 1);
+ do_test (3, 9, hlen, klen, 0);
+ do_test (3, 9, hlen, klen, 1);
+ do_test (3, 15, hlen, klen, 0);
+ do_test (3, 15, hlen, klen, 1);
+
+ do_test (9, 0, hlen, klen, 0);
+ do_test (9, 0, hlen, klen, 1);
+ do_test (9, 3, hlen, klen, 0);
+ do_test (9, 3, hlen, klen, 1);
+ do_test (9, 9, hlen, klen, 0);
+ do_test (9, 9, hlen, klen, 1);
+ do_test (9, 15, hlen, klen, 0);
+ do_test (9, 15, hlen, klen, 1);
+
+ do_test (15, 0, hlen, klen, 0);
+ do_test (15, 0, hlen, klen, 1);
+ do_test (15, 3, hlen, klen, 0);
+ do_test (15, 3, hlen, klen, 1);
+ do_test (15, 9, hlen, klen, 0);
+ do_test (15, 9, hlen, klen, 1);
+ do_test (15, 15, hlen, klen, 0);
+ do_test (15, 15, hlen, klen, 1);
+ }
+
+ do_test (0, 0, page_size - 1, 16, 0);
+ do_test (0, 0, page_size - 1, 16, 1);
+
+ return ret;
+}
+
+#include "../test-skeleton.c"
Ṱ$h4JtrBGWA^PNw&~V\ʷ cmj3}PZ=;*1D911'q.GĐp{8 u@8QD#$yñ deQ@íY9SCL; @4D[F;Y5˾6;: " yi&Hc 'KT~L"A`z4% "ix\„B4+ Cݎ8|ab":t2DDD(9w:C{dv5kOs/ze ue:$<'N cB~5[ ~֡ @@vɣbL2YtdQxC&o(A'-wJ}gVc("rL2s GK'?v =g$YO Q =q-:0PM>H~# =}gv!: 9\:Jtu (2i+n@dXH:s!h?@ %/>Q@.XdG~tHMlRQ`s3IÃS*bbwcÐo C).,`xp$s{l1ApJCID@ L,ES50TTDQDTERS THA! AL!*0RDE@J- K"I0 ; %#JU>Nw-y=QđI\/0!8~OZE@JQ<+@rJ#@d@_"]H!BKTPwu(R;ʁm P +@0PMDAĈ;nuji֋gDlD0MC4ݵD5 DAESD@%!DACdJ@ *J%R$PSi9<`nq Zh!q&ܱO7aLU"&T!$7D|xICD#Ņ2&? ?ȑ@Q/ZjQQ-!=}v8H0'˧WqUE&'`(Yws5QEJ;Il.pQID`ֹEgKh̉cN B'?K ʩPmT [(5Z}( =dn:1'pxG'@]f@%Ȥw'=J|,A4VHDQG6_?& q:5(&6F7J! 2)R@~O<iqHhHdx,)m3%QPAr3zYD) Or5Cfa:oϱwz}/|X2t=ݛs]CDu@IX$@~8qrN[GP4%;2B'0:rO#jfb䋭r:]BT :94Dw!qm~j-(&H)=ܠ f_iI0HB-!DI%zy6"QbHH"B2TAcY`CHEBDT2T ėj 6?8Z4#LD4@!tޓr9W Jϔ8|/Ot*fϔf(vt=5 H mE_sTTl JV)P?wJBSjG^Ƀ.<Ӟ>Ɨ(pNC{,A4-GH'p%=E '#`LPt PHN~Wziݏ0QѼ"1CMʇL[٠$LOMCwwpt0wP.jZe@p`6ceG0$,NqR H0-P:)jՒѧ4ܛtv87NcQM()5Q)ţ*6G#@by]~NEG?C<@7 DK)ajKuK|}GXvC f$ $"ې&(x_'"6o3Iȓ!H8%)S7<Xa VQ6t;`FBP+:Tl@ZxHs*2wC~i5fZb‘ڢa 4;6dM9A "R1pawk7<@?2 !y^V1vUt~ (#lYf)mM"!U,P! ̿&83Y c&A HR7l/ußon>gGQLB˲2d)$uy1?{/KAœI˸K)ɰi*("xyAŶeDʤ) a*Q ݵ<x& T$ov #;kUxh <^7ˉAK31>AA`[}ҟxvm)L ǭcEQa#COEB7ۗ{1^]lmĹs u ʟBtil jQ #e Ap{A?͆ b*B$~E!:?FƁmeK L N0 xO=?GlOI领y}Nh 2}v1-EX%$IK onXVa ͈ 3p6`p0-S.S iiG<|OVNN !HI}u<>2>]PyAH5ީf$J+C@-- 7G ,'أ$Ļm+DmvqK1KA 9dI^z8L$2!P0 7d CCJߧvbֻĪ{{F{"'Qd"sOR=BW2)/ )%)OdP$<]# 'yZ3i||d=<z ;|F&\Fqá{mxP2H :ۄ>HhWn/ad+@!҇6MJ_fwwAQH4+GTjEԨ{;\Qh( Fa1X^L1`8)mӎ*)th+x= &r< \O'=8'|@m40j3,SGfj"D"cP*닇`&@M UGqKn)Q admF!DZ۳_[@Ju&{p2:FoRu!(%pHZH&Aqn-4pD,TDr` A u@JJґ&+,/!ƮfL`FDFjJR& m*M7 DA A'r"8'TR:wb#6U>0"pra| n)4&`8́BH>NAδ=ؗZN V(36??ߜQAՃUц Dt8mJp @8v}BB/ )&Dr@uB=d80!S⿨~{Ǝ32OvGU4Ec˻8VQ2LPSSL&Y0.>Ռ`Jޮ}{ϰ)¯ D#p0TQfa-/<yVh!!$ 9XE"NϐU xBYGjpđ-;qݮ^nL=ssdsL)ZCIB)QiBPjhq1BOU5*TjeE-KT.0,!ND2)-Ѕk,a DD T!P.]0c7n" مp,ȡ#*Lqj@14+x0`ӊP.I:(})ќ^vaѼa\rm.bZ`}祫^]NY1s H(Q 9墉I("&b;HIv(q@$!?X(8ԠDN2 QuuYrPGɱ8K M^vsV P:)|ٿږPSՆNf㜽[NgB+NGh&R}<޾BS(*"cF-"-/5{`cywآ(Zi/#H|]M{U Phz`(1$qVtvҹ8֊LleDit$oF~ϑO҉Jh锇623mF;7cb $F!HF0*=N.Rr10DDDB?nTXD BblWތ8&$iPm0s ?`"z΃^F &1@<#HD)$q 3P,DTLABU#I/Puu)EjBB3Ðja)kZb<BT L4DmDwqRЦ"$a"h&b5Ei䋄a} 0 {_۔%f~2Վn@$CuajgO8sF[cFI#55m =,%YCP~_7FǎYV-3ǧ 7ɋpY6?xR~{cĝ 0Y r!%2?o%JHJk\a꿆Bt]OO5#f͛6V8s[gFPy.;g9"s3$q̃Xm& >ȒrO/j}˳32iS a:VHg(+$k.}`MMB"DC hK{wU@($;Ͻzj>Q}bytgu^֨;L#q$za*= .^>Wl!=};uHl;`ʧ&n [n;A=+C컏Bۗju)RVz^t=k%K ޱ&uR*U;i%-M>v@Ͼ}{2@PX_[o{g >/U@@RJz8;@IcѢGTth(*@I{`>>[SBPPPQ@}0UB@үteKѭUo>@:)*v}P"(n蝍:݀@ p A}=^ }@dm:ξ=st޻;{w3-@@(vݗ#} /Ts8돶sctYNܩM.s14:}@hj6tKo{5٪P[n{֒OgOT"OG'mj_c|c׉Q rEE}0^S)}u[붅vהT+v|CۍD{d}AkV%ZA3ͲV'cSu]U4^䷸6}\}/l>:'wﯻm|{٦]:(8_aQو_^{{:zzn2otl>nTF$Il.ֻz,S@O^s]V(l88{={us3] zqCuΫ]S(:gTk:Ƕ香 Wݝ_o}ٻc )>v}P 4%û7u^vQOJ.`^Vllرk$;Ͼ ޱwby5u^=y;_{O4r'1N;(7}wז훴(z탔CT^$ =>zZ;h}$ATia;cƭbC׻diώ :C.}T TM]O{]7{1=*.F@v s^ZuɎl$^A^bKrkTSD LD0iLO=M G44 B К&1&F)2M5=Sjx=F4zi=LCѠzLI2&&SdIFSjy!M244z =RRD ѥ1 P4@h!H@ &LiH)#M=&) D2jl)ilm&&1CM 4myČQ`PVCOke4SAWOfQ_iАFw(*_$̍TCq4@I )+;gNH4Myv򾛢R4M%$#~<ġ}QV`"rJv9r=K6޳=q,'sĐrDbH9$M$v>5}} ׌4֨/QSɪ8y$އFcq4q2Ոd1 L- UrBU(hEP(%1pF6@cH(d!B@%"DS!SJ u .(tR,!tHRT+J H"c)U"@ -(^- % #@*((B RR"ʊV2##T)HBՀ"I<$BPMՅIٶ$بiHO_?C%)GځBb7X5Wjw|x8RMaå0)*0]eA׎)(R!G{?y;h3d͘o5ɤ11f?|=b&D!02eYlHʟk%/ƢS5"kkIѰXbѣ`E0!$d٘QJfTk~ne_f쬥bEBiTTDjěEllQlbщ6M(KIb!4j~Mj$&[FyGD4//jE[&}o94y;,շopraVc9hOQ\RqNNoԲs7!#ԣUX_'kAz$e<՝ ~|s}Z?FW>##Mm<3?5h$h(sՀjiMYZ:WNVpp  Z@  󼅷JDȣb)0ԆŖM6&fե6Zj3J)#"YSXf`-DE ^a& @چeJHd4ƢьElD&FMlMBhm$DV!K &*F(j"aEEgj5j5VjJQ&TJTX3Q&b4mfcb6[-5DeQ,R3EFB$e&(ʉV["(]6iF1icSMRi#S6,SeM0_s6pJ@#df Q652hIk!ZUZljTlK* hM%dK%[2j`mPMEƊHRa2ѣHiAfRcIj]44DkA5b6mbR*Xm)5Qj)623# "&Ve':, a4~lw[6@1JTl2U31b,DBX!kQTWWFdo~?~ Df"=0JyD~4fZtdW; fhGűtՏ܆$e]Ϭm)_|˗ ǭq橮hjc֥LmqE&Fa7~@JP$yIߪ׭J-14+2J~?ZfFw(KFq]Y&ZCݒj4[WhhIXJAVUV#nL}iܕʄ8aUn#s Jly?qLrST\\HbL}rH+mm84q$PWN|\բ+TS|DmT`v*g| [[}oƧ 썸=#]-J.e&ZdR? $@CK5'9D=_mt40Ǖ8?( BI48B7w%ܙ2Y̧RXl<3Tk2~;I6->X4CxـA?:Β솦u8l[]uL&7Zd ök 1CeTE/ɉF"?9_ .K|w]ʋ\|tc[) l$qH-BHi-ɭq1o1~ާQTVDFfƐT;/xp2&oWeկ_$&U Ιl!M+{HFR61H-+S dzXB˩Wɥ|MeLom4%Whj*TN1Ϟźړ-gccva-(9hAl✝n*g;=V #~%6c0e18VPeaIXQOM`f]EX6hfdGLSRRă@|3,jBˎIJ/漭6;%ӫyNK00Oxo>?0ii[c-ҒqIh/\O'󑍝?>Džw՜QjV([-o9\'P'nR;2,vd-V?%*|Y#DV>5HNk= 08|` UOJ I'u,gMF9l| I8Q?Ӆ[ TexLWx<6vzKs4_,,irB.^ 0jR 99j1Qi H׼Nʰ>#j#B/9 L8`&cLΑ!v#VyL/XႅD$4廁udHm)?WvdGtesAjy4H5DUgeE?_! *e/ dC!<#FQazOuNB*0t-78MsM@DT ٕ[(\4EGHӑL 76 il0e;2u7 W ;VTZ[f$q AzpCERj2 J(-( VFPR)ݐnyyᏤAOVhǖёjG;l+)RDv㠺Ɓ iWѧl)0@{>IOùkn90> `R(q=- _NPp?5R!`R c; cN-((D@~5CRtS0$$L7^U{Q`m;iB|($aY `ahz8]ՁY3_~L-F+UVԶlH>NrLVl2 }h{U O\ߣ6.(c s>Z9P|f)f$q#= 0YJoϖ|mz. qiփn~WPJVw:B ұ:>^llt&nI$'^q¿1<fb v'2/ SW|<]MYs eG/{믚׌`pBvI_:*<؂H03M&Z>h$$/n/F{f jώmSF>jnM')E D"B'93r`y)꼙 *]MIѭcMR3&SA^ ۙ Jek72&:eX7 S6=Su~YO䟈d&(Ď)Q5V'[FLa5kkyRcKw(hƩ(ѬZmѰmZQo9/30h(57KguQ˲s&}snsZ-'ƺZ( ;&9r( _d&:|<^CxRW9ZSӺs?}+;hƒ517S89C$' rn Zo@+a͚c:0ln'="6^W⮪C<5lckB@.P^?1s"8tUk M-cލ4زMbW1T^#:t*$OiL j4D~̈JV{>%JhѭkXUC]M|v~_0?A5v:FW8}Ҷ) s YG Zb r_.fyԛ7bxal3L(}s\đ.0qC;GFxRA Og'^p")gtFIӡ1Uĸh5r阔./|㬚i|.ݾyS8bHҌkJIBN%?qRm4 $^ NXHN>4yf!t0e+ Ex?uMWYdds9?0c'PlWmtJ=~?29:xC? y_" qfcFXB@2a2=Ͼ%%˵h yM8L#2Dv\˄hv7$l"eݽjHvグq$E4F2]mm!WٽRTQ:as@iݡvn"1}-42SђQCpة+cxj=/NZ&>)0j5)f$Y؞6jUd_V:۲mXrRgpDnPANo~t;sZ̟sM[ҫD:*t{>\{# ܪ'4l!pG϶ODJA_Y:o)sx&씪N'8RLK͐́I :!U*&d" 87Zp+&Jo0}^^o|k~=a8r6n{n 2_zp.'~ڠH>2f#uXqCu4m\cdS^.`k2KQlUS#K9Nw[c1LyL7m/YA(=ɚm9N?+1V7QN8Cd簱S1q1u`{d=o'ieYS!D%nd{p|{$xR#o%taE:u%G UM=+^x&&%eU7IX2'pӌkwԒ;* O xdC 2hjc$rw)mZcq7d\o-բCR\BܚpxoEm ,2A?31ĿgxD:>2yeCq͟!gʹ}iz |N"x$E9'k[oMjSW=hj%mrR???]y+>S\^ڙBB R28Dz`x=# %8H\;͇iW9{-?ZQ8dY[ 5rY6y_=uMN 0ІXh=ĻQMMy\o(tܦ漠|ŞP<̯'4{Uڛ'\Nds)b +!񈒬C},GLmKvHnuSPRC O+`˱+DꜤ&L07Z:+5 i6  ٜH"!e r/YaPO,,aů0\z.$kb*:D#%6~hw?6w Z!#D1QBNDZ2"9'4Zc){.$IVR߁qGi޿h{eK @9<_K E\` C䷳qCql`5V-R{^ *~qȢ"Ko32"%:qX).\us $ThT#ȿ9~5u֭%  Pr@Ag0R{=5l}##kɥc}xg9w'*LpWam)D9HusM8v'(&0ŀʦX95H}}oxmSl[L" 6,iC:LE'Tn-E ؞;~s>sţғ F&ET_iE{;CQbĖIvpP'y!8ѻV J(P-g}Q@PCҼ^/;x56>_;E'rfS߉y?UQRDqdHu'-CCnI)no@UE{v=fg1D4dwӴOŝ =Aۻʢ 2U@ts#7MI[ Q6)97&=47/XTRu'aņ "nD>Eh RI5I7@\k/#|vm Jٗϖ\d1hZtbTZ&gGt'PN*g~h;<i[ݺfؑqոԣ/u=䜼Z\AC9 x,W5ӱ|{My&DZȉ3 o1g섬Gt#w) ҖEړqFݻhD h .^yd=j99Oc/AT!TQw5!rcntN#86O)_m>)BV[W5$VZW䉊Oз2t~_@k쳊AMTf(Nw&zez*剹4#Eޫ&Z]{{cRpr3.h_I_?<"]2 +Kuy3I !_uޚfb|~G XB '%39bDbmlQZ,.9-ۼN``9tt`Sn;vT0UOLLG3^urF8$>[Z0ؙO_*bHH3wK9IcE$@H@ᴘ ~_Frc΋|z*,D۳L\t;扌vzo.q~q?`9Cg`8]հL$5|2SɆ*8Oy9_2wpb8 BNB6'HPwOmLJ? 2(7SD6H&kqG{tJ\"[.g _NA& ,>?n|CI7A[m^j[:Oम&zbt ?oZ˻M~lG/ W=D~N+l˼IvQdHB"F>a}1^DkZ 痎IɌ#(CS$歗t{25mVjl8l2 `,>`±"e7ƷV5% RBU!jk6|{=1 #03: ""ZꔂffC-u3ETnM[HYh h%f$גfm!TXz$>]Ɛr*cdEIBDY"A"?.~ +%ұ"lIƲ5p'%sa[juÔ^dS&a(}8M2Q0rC%rU$P"+ۆƪ%[&(Ͻ͓)~{XseXK3D{u&ck4JZI(Ҕ_|hP@64ѱJiݴmk|^i6У1)&؈U!dPI,+0E~RclQMEw\ݠznHh4dɡL&رj*65EFMfe#M|kݯ?:i$(ZRk)6@hRəGk?k5k zqBE1I2`JJY5K-6ZR D(r=oD)_nڕ30TE$5!'3!h MtHl,Rlk2M+*[4kɭwnMFU6SDdJ1MDmj4MѪ ZeQXRFlF$IKd)26wi"Zb(I~*⑝KLiS#D6\O.%I%&4-cV 6JM1%JrصsEGK[أ)hj%fhh2EE-6J$,M%YA 2Rd3!o᳷Iv2ya 9fѱȸ9\Gr~ Epl dٶld7S 2Qr(v~XdK0 }mBB07MUoW⽴51 < ,Q.69 i&CGIFՓcCP*`f2ST6JDtrH9SS|BFtrSRgB WHr!w/]b( ǩ ZZW1a XF>$R)^jꉎD~#/\};U9 ïoOuFZzNk Z%$,R FEQj$4ݷHVMbDq) B ZR.>IC!sIQ''c=CXg- l4)k06-Xc Wl6j2JeQ|;g0VKkFLe1#L!"6KF ݠ9W_F/I!ш&Xb°\ە,[F"48v40 J'B"EɜBHzͫ#k,c{L2ESM@2SIcHjZ6MbˢXC4,ʩ-IDmhZ 4%S"ECH,±eV2mQJ6%kQQ,UQ Xq@0Zڑߏ]^\6QQZ2*`!&vngRx\_]ay^8]w (ѩ; E˭C h›v{UlAp6đy,t ' ,ǿFQb%ct!@0A,}Gl1FRZkfQkV-s I%Z`3-PۜfQM>~G}8O pQ"V+ Reu-)ɫۦER(p(@r9GicZ&Ϯ ZWe]'`@(!q<"IRdQۓ65E`z4iLO( :-(AZ A=8?½BG g[~ZA(qޣI0>!^nkS'AoA4cL\fyaxUԅ.:fcٌ ID:Efphf 07mSu)&xԒﭚeq&a6%=sGDWΆy 2).rK$df=ēў/ޫb5$`&Sm#`NXb`* ( Vɜ8jƔLӻoIԾ00L=$<ꄸTHKI0aţ(2,Nv1J %"]Ifq:zO嶫&Y4SAjmp';2z6)XC]2IƣB#bdt'F6{#!:y7x{fe=M:7IV@Ltrq͸$6&H)uQV1m3$Gl^oMPbl"&He]odG?o׉ē$N=ȂUgZݯ#>h}\&,SVMVFJ \!mL*w4JeŠGE]3󣄵cyy0[?-@&LS$QBj}D_Gk}9}OwlњD_9mXB#JsiL >!vf ϼ݈"jsJ?}ǭA5?]q)Gf(7lX<]8 ?npĔ8Kcf8%x_(WXleyTqdrܙzKm"5#* Nڏd'iK ob( y4L}`WTA. ԎLS)/caMO_o;KNƧz~2$ȓˬ&z쪨:_Ed`rcbȓLq+ZN52s5{FK.CydOh' I+Fd/~$tÚ0Ar3M|͛&#z $SLؽ9޶^$&Ll( u2iyGFDGcԽ'4CG=L7{1(:C<q:BQi.%Ա/~}W`ik8ݏcd.w>4WE>ݟ[ ;~AUdߝzh6ڛBO: uLs { Lu FCj>[# p}׎kQ HBBYnMڐ߽87Ω>Ah_9LxKG řݭYG%FCh=[ gz e{JpxkIxlI!D.TSZmwlɧl$I tܵE4nNA&FH۰3aYlPĴi\[AvWzt Xs$VCi A2FHN sbp웭FMuhhcČt;{#XV-Ue2G鏂sӷ0}ĢIBah;m;"T4=Iں@ &n Ls;Yacψ;OcT "J#cV\ 9xy7 .@n ?)Rp,O]yNf㹦yikx 9 *h| 1Sw ~3v2^,+*ZD7@MIy&rH! 5Q%唉l&Q{fqE4%hL6]ICO|\ Ҡ}8w[k5ZFŕdƵh*hmh [m:mUKg7zp lz&F(;)%Rb \)dƐHCNVڝк &X1f=X{v|whe uQ5qi秕:m\J5|d+;e)5 ZK(KK ?~]ALBB֧9B;/ o98ap~\u`rփ]q3P`䅺Hf:aDXtQt=p)|gi?ޝEldrLn:p\$/[ۘ_z'_ <{}:)| h 0=|(S=6&٧ ;f{*|c9JiʟNBꟕgi3n*d"`=/ߧAZa_Q Oo oN1ȒNC%3`=I((GO$xtce-G\r6&%DD{>󌿛4%WđАHsaD _W([#{rKq~xb)?BrF]Xx˥)|{]q[JD?V}=i%Gdj]?:<<+gΓc6:k0Y78f"aF5/R9`௲RfNFjKn 0 "hL{hdPϸؕ Vڏ+ 7eq;tf^Mlxu`?Ipdcmskb\"%'i |⣛T*=V 3d3u <|: wuKS vڅʻErC|D's٪IxI7om{:٩O( 6- Yc-sC ?w FH/1AO_Տxr]\I2\埙 -lAb$&T:$7WS &&H/*7I'JD*z\ 3ҍxA't# =aVI&.^xd< I39?u)o|߽DRݞZ''=Ht]o럀f>du.1"w!q*[Уj-$F%*ȦE`Mh_?ux;::35^٣E y9#Y w~nZR*TXJu<PB4Dҳ.ьUkkbԔQWnKudM̛iVc,(>rIi-4lfzM!Av1VNr7FNVYYxƾ}WU2Ei)2ɤrELEJe4I߶{) 3p<:]2v9>>tF2ZF[9TGtaГ""6 )iSѾa56lg?bH" Z/%g ġZ0 7yvmQ97ET|x pɛ?gV6&nNwV%R)ۄ$am;e|[wezP7Fmb;=%uEڇY~Fin %1Q餝cSIv*]4fI#]H'J<"DIo ߙ@gqZP3rMr\Ps9K˪eˎwɭ5ܲ]B&ORe;1 plFrg#`NeR9u)ְ#1T^l' tBL ̻3Qδ6ٕ> pe!#h V:zCN0.ήSO' U[AK(?9N* >"u2KuV0rt& X6TLNJ縶Vη~e@+;vN&J~{TMs0M^K8;-j̦H;L%,_b(}g)c=k&W\*Ł1V|ϩ:k;rJ?) Fxv}vʎ8u4#&eJ-\^h3% :h @n*To9@ͤ)0b+Ay a|_GuU-p<ᔌtU9ն)\ql7^g[=+Yzm;޶l^ԥ,5% %D)A95i4k&։ïPft[i4P%j _KIljMb42x9gj! lv߼YIFԜai9SMcf2x ]bRJ>' :ckga Uk#1ݣϔÑ$EgYQMonRveLl+XnplΪ#,XyMY:ng2 NWT@cÆ$H7 MJ[VROeNz:El G Эwz7灄EX[s1h96fJߦ:<ъ2 y hJu \QTͽeᜤG-BZ]xN,Ͽy ߭a29m\(I Sqlr 9;w9*ovZ# *ukmlN#9RDm,G{jfFS;~$osZSq3G̉1W jd^U#K9ߦ 6nw᭍ 7|JK 68Ja۷7&ʓ=ҫƍ5w \~0W>qXjmc@~{9BMV:UC֗a{P2WJı3ggM>-S7J4 fHq6gcs:\`LKq8w:&8^w-kVkJ&uy?U>,uȩ1 ?`jE-Go^ne1#%qordo񆹋~Gkg؊8Cwo ҋSdj{61˶]0dbb2bf9$Mvd̼JB)@4Źwc\(z5S.3hTHe? =}tN{$enoET8} żõ ۄl^֊m#׿] ? |_5UUUSUEտvA:95<4ǃX `Kz7zzR M.;r 8h,>'fx=F5ll )`, Ag(,Nsh"`ʷr܂A3_D|ɧ>2ShE_lW)ԣ!V"__]ks=+ P /42vc6#$]LU/8l əbB`&K$/w S~Wp<|0[ 'ĨeR")SWpi48H_fXfI$ڎ`1PL{" p2rL7<kۀL%-ݷeRt㞥Dߋ@nq!$hב?)=<]jAG}4"ebB7++3XIՉxAg%cE@$hTz a<ށzݖ[-E1j|ASe|d*V0f79,tv? ***~eΌG S98YK)fj5U_qC~[ ؉˅1Ƀ$M/rR$SyٶrwO4mшv_'xKGUUR~?ew (Jih?WJ ),DN$~Y]zb?w>_6LGN4'"V+kW?Yt~HwYd0 6K{q-:7+˙ ֛Z٥`NB7<] %gT^Arծte9ePv9I&tQl~8PK8:?(NCDvP,sDp=s<;g3c,AAUr{X9o;VQIR Io3R DD'fZ ʘ<4< :C0&\tAFj 23sH踫T3oၬS;W%D(AP>=], ݾ0L͸Akta5^I:o盻%mm<I–Q( L X$6Q$JY-mЍ$lf#IPT*nn~E6RF0+g"ZJapN-lL"UA=D5qb ,}`*3-G #'DI& H"x4|xC#6 r''w&b ʾ})z^+T ӚRBRl[6q=7ʹZ?j%w'jUJrK.&Yb(I qΚ)A?ەh"'Cv(>_b f,^ݨؿZU$Lv}%® MFVU:É4 f==@6u_]嗓[Q*YYlYB WF-; !#j 20ۆ63ܛ,ѣ̃ϨpN.Ihq8"3ՙ?)zqBa ט-&2LtcRK-6}~~\(6G#xpa>^UW-$,y;Y ,J'c/~OA>" kسbk)LgeyczL+}r I*Q٤Wlo0- E #P,.mwcTnQr1KZTtNmX-@ ZK G>*^qLf_?xtֽS, f J>W55+ce44 " PJ.Dʣ*4ga^xQ-.ʢ|p/Ν?!f&Nͬ/>|vpڅ(SL蓧9CV*!V<u\ľ7J5w%A,bDh K},P#ϴv>z0ZERnegR{IH80E\/ha}J|C94e>ҚU#~TItSz^x:1luAӝ^oUԮGkK!ѡ4~^w9w[c&(贪WKֺ(R`v(L&y}3sϟ;_ٔ\Ns<޴@7.{ת3z&jĺzТd@*2# ZƑ׬U=$8zzZ@gzüq=[-ѽ}kw 髣G87΃vɣ %a5wFY.h8F7CwIayPz7܂ MHPeoUV4h;s^yNϠlA0,Y9 {;zŊȞpR) g39ͧ.Nlm{5@7G?ekAŗK4xuODU; rM]њj__~-c#~(b IAbo})eM7ۨ5ETx2ԭeݮKN%^oGZ#OZZ GΎHѮez),65B[Poc.}4lK< $YUre;-)%fr\fNҶ6yVREQ5)Zw}|6 '9E+EF8dO2`|;c`~ ilLUmaօR K|`ҾS5%=MN9ԇܞ|1m>%'aau[{cSA:g%x{w~pruI-sh9T6ׂ%VC;2IݬPE]U)9b7Ei) wx#Fxsh̠j/<,h|b>woz"DQ9I U뮓!7 @Sj֦k_wcvUb>ckÇپbyHC Pc0w".w )N&~r/؝J3|'Ӽ>F-WwtQ%pIU)uo02>KİXeQ7,Ӗ?~ahh:;Ťrglm*:\[9̃ZTVc Jj d u{He3s>)wvv \ 3`L@C25-i{o!#ay*W!thϸֈ{15+MN;5΂6c&kcc;d+ĘzJNe:nD7Am#K4lnn<%gw-us#14L\fT:m>]=ͷLd#Mhb,l=auaU1pʔU2×5M]`I{m)eUswG\Hm c#5#kIUPGE_є%om͘[}O;csbs]Mh@yi hrE1} CNF︆ Hy?Q| OVsʚѧ3UT"H}SH1vr}+iK\2"ݬSf9-QG_{ƈ=jUj>ݦvl7OL,g$r$"Vb^19^WUMHDy!v) ҕ;@0}Jd`W$WA3cR21jdI&&%*Iyper ^tuH0b{$GHǘGౄ@ل"l))\7D 5Atv:Iɚ [tv6B"1fW3]!s!dϑv&3<L4"A0`(HO~ ST78A2G [w̷'rRҕopɀBfB ։du=V" u*ySa˒3ŚP\%gcZm!o;\p& m }ɹrmց&yOr'vaLc g-P Sl9ׂ Irϥnqu->)Lf@4hz z_C9Xp{ }WgXoVo[&IfHQ|4Wve ] A.|l?lafa Н#Pᱜvs[f BQpj4'c[I7`u/DZU,-Ot#e/tag(qշ8_Kha (#MeO"hy)Y@^ZIY:dRtyNB]$O)+R) J,L)g9Vevuc(=ä~Ә Uq5qBNIkd8 rq8 HA!Tpl]4c?'cL qN£:",$ZԹԈMdC}um*Q\ +PrmAxЏ^2?T*;{6-v)2% <$1j?"P[]Sד9t;_::n a7 zpCE(q*ʂfw@ b("㸂i`S?LO۟MkR%qo^T5 lT 3} XhʤRgJL\|kEg.,11ȭfmNda`7vrAd$xj (LBƍp5,& F^%fC[A Hvr^L`KKfPD'pa1daRUi7vv$t\:箚88bH%GgET[4iriehwwy$(5ZT<˰N1Ў_JtKzƿI%c!P?Er,l#t1m2ekq t?}o{ aǶ5"GG|ɼQ4F۳RnhRO>/|)d٧&$i0&4gsj y$C2 ]NKYoպv `DlfOTdrY򔴤oXeU’&c|M:)T16! [Ȧ(1{`)<1(UD*v'"g:DK&lEhyAN#O>\D gU ;题/W>}?nVLD8&G)V}6ߖa"$Pxl $Mklƍ:eS`p2dBh_Isթ5ـtBBAI$I$JRI$I$7WS[(mHRJ81q[V5gCfM ,Gt6 NBp;kռVy7_9ͻ9 ݮ 8a'C&hM Q[~AYkfGCWs<ѷ9pK~S`bPHЏB>q%y2$cItXLk?i]t IuiLalh*wnrlÍ44A;0:lmb޺6+ V..+5tE"D$"BYr=G\Hϴ_:86M&L0DrYLbT.~-@!Ú8g[n#!06=) WAC3GIkd^d!%a@+}/ӯΏvx2}Z#eIyTIoϑ/̼D'HEq )Ō}M fIoNl9Y #9,m~ǫ&M,G|ucQsF'x`:!1ceϩc*n3BG@H b(gS7SwClMk} n4&\lv__wv$+d){˙]>>7LX41rR]3pa?U(jI.+u[y!ͽT" Bu+h#t_/((mHMoZlۙ6j"{' 11L S Ong?g^ZO =v ǻO AN'Ьo[U^dTrfVmeeEdeg!ǫ}GΧ%Ѡs{Wڪ頻҈>6k+EMەlP4 J+髼OU戂 Q)dLg8]½flR0;Rԝз'prd<&.KϞXg(rfj ܌uجgϪ<lPMF?: jA ) 3&,Qj$MuJ` ߪDHt@ 昐,PDUj<%Y stwFNGRVZchjc A(9mYKn" пlǦE[7@D7LV:N֎0IJv-nqS=avuC(bL[ډM=O!Pend(Phz?Lfy1nj!˚lUĞ+;w[g'VLߟq۷ piYw=&srt-)o}A9M>\oʹc Q3{RnCTe*w1D;#9XU6`fQwÐj0͠-5g+JJB_5xMBl_ ҋ"BOa3ZWPA}9Zt{pL `}Jxͨic|Lg5_]9-Ȏ/%&/fnyҮ3lw$dh:^٘Yܣ+1UT"λ,3'O)Aq'"O+4q֛zEnEzLU>N+[T \gm5/`ݓMXcpB b謝Aj&G?}KC ~| ``S ;OiT㔼6AaѲ!:SAR8(=DQaLf'%s,YHBS߮mc]+ɬHRrgBH"̭_áij3NlSE$ѡ(pDg/\$L8,ifV<PݸB;Zwt}ufn.*YrTđ D=9 T$z~O?Ym2z|W' ۽㕧cVPpln^D^.4Ce/}Nsg{y\Pڋ*4Ҳ;/7lhvL=%?Ɠ1x-qpI6pkS_rmAGʤ7!0wn2&knZBPa |{B8n#_~w3h{~lx~3~V$("$fu{w+Yj}ŪSiB }>fSrÊi*iCןJL߱&fxwxv†;Jzl"w~)twwwtӉnüV7լȍz+F5)ѦpbA3WG]Zc%C&Ҍ֤B,>r"MP61l43HfL^L#=S6%_럯V {Їٸ1-6Y͙e.66LK6ek-#|N;o^/->IW[8)L5,4424D򹏍 SLP%'A*Lw +hdZhXc2x! <µ3~՜#C&ᮯtcn|nuδa׾DYA1ݬ,1Nf`Da UvM|\62rGuyֆUa8I$I$ QfeY#9;lJRY|w'fͿp +J! J1 Ǣhj>6JqJ~y t "Z[rAFfn03} #ۉGیc*Tԉo3Z~7&>HxCgos!M~**ң]ȓmM4 J /Ӳ@\?LI3jXqy3tkZ90Rm)8tfB9Nߎ w37[w)5yX;3RA{X[6Y&hQ`L+ƘИa8X~n}lv͛u& CknњLZH̱#)>Q>$p[dĘLj*~|W_?g鿹?N &`$ p0(GI4 $TgaBGժe޼!f A1z/Ehg1ۑ#u?)P7 C:@.ib ;1z+t!D^⒞v;N22 >- phBjkN;瓜Po ں_`uy&v ִlW k\f ›`s?;)=C n6]vSnZ(R^r3ޚZ*vfmȞ>5%3ҽw{_%nO ZwpTC&YNgP\2M;9`Sw,~xyvuq1"S|:Z 4 h5'WCg|+A'O|O旘JA>W-s-:MۡZi:ިXɯ3;fʥ|XU-i5\>HVJ~pwY:OqQ]|wk2)5Ҵ3k1Й $$d#y_c.GWN1ہ5NTZMp`A y'0Ǩ8H,˪T2ׂ7wJk} Me@G)pdVػ.-GX˪ԓM>ZOLuӛ߲DkbƦG:>/Ewuk &G٥?J=','f>xjf!&q%j rrBK:33"6^aP:<~uЮWG ?lw@m]φM3;T؋u&]t;;7RjKYrUeSS":;Բ~6H!5u>ޠ1WZϤQHE҈~r{Mt,)~sV=cM1K3rg $&qI3;zyI!ŽFf йT,(WWwgƾ{eR5qo?pʭ%|O 婀 ia_? H鷑DF*0PRp#3&KZĝՕI)"NpP1Km[Ε6Oҫ/kdA0|[Y, 9" u(0Vq7]̰xqq6ÔI&NPUbO8/P[h9Ck\Ȗ^ZiljY"!ea>:gąMӘ, W\^+(cQ(D`I3?vW)؟B0G$p[l+bnDI]jL`Ӕ "Szk$ ƨޚϭc,Snc2'Z*;ֺEϭ`v 3<ڃ̆pBg3m[BupF;$&rce*8M*YrJl!]\K3Ld` IkiHuڲ)ġRV4NBE<>k|dR DJ{ y ԈJ> d ۢoUT>S@ZM NjǦpy/[TV/EoO2}NiY ĈSoMg.WnI,ß|ec w] ܓ$6VrH m*ȏ[!:w)d)En5QqOE::iػŋqq pKkp(aR^w\,Լ8ᶅ %)O,N`kkG $ b#$/M:0?ш?n<o$I$J*LPC#S^޸_6{YRLoޡ C@VHCxȓ璣`< 0,%lҁrc0wIT͕@{@Sa"jB6փl4e;5P\,|MZ/,R/Ylxw{׵ܤWIk5$B ѹe ⠐/s\3;艫R|BȰ~2jųȽDI>aJF)xaC8cF%ifpHT\$0g&ChY' |Z<]pSp՟ɵ3Ǖ-}Dd͘POJЅ@هW'.#稏ؔ4^qbg0XiHƘcv+c@,ZJ%k*ۮu()J?kIs& Wh='=&3-;R'ڽi4ɵ@[,d+Йl$U^ rڱcbMKDSțF2jC4jT+EIgW@ĉ?`޸o'Z:YXgRĮlV7#[FM!N6ȸBl=u4bb鎜\v؛\,J/De81w]2.LQ`vO_*T~`r`fwWY=[:Рu')9ZFd0YbvH|, 5`±1ptL:;7sQg Rh~m/RCׂ?jF~՛/Gy7 u|. @1kŁ`۬7XyR<֜~g;A2kS+F3d>H"hmRKaC^X.G>HF3ɬ`NS)8YP>@D3φNi=n=X`JOiN3T L nPl7 +|_h5~q 9k5xHݚ̙ñ$/i/__zQ(FfllJE%pK~̌Ek_h4vAK 7rFbV3#IV]4ȟ]I7l2H4 )PF0jҧM莣~YԆ(6  j[Vk%H8J@\4µ~/=(zj$oyEڅN2VpÂZwJv\ZmR]ylnF%{`RռZ708ZLfHc^fٵuw@|!1d&6+I Wufa@jsH'(4Lc~?~r®xmQ C)d #ZG{Z@Hi$EcXSc8*jXOH}:}b“ yC{WYՖ}:{j],k;L\v8# -?fD0mg$;3N10g3]ѥ:rOPoV[e#N6Sw> mN=խ˷3I73<@oW&0wJ+p}I|~0SGz5dz sY U$M8otvn%!0s+i d .-q Nw}(%KK`9R?9ĩBwQt۽Ob-~qv^"5y@&=p+dCBf6{浺Fo11M8RqPoC3aK.J\VDrQ~KIjpSFn#pޒ1EG8xŗh[n던٧ζ?њm}; wCڰ; 0s5DsQq䏯ƪH#`Yې0`9 zb^O~ˇ^;AҦ$ HK f򵅜No }NmQ"빲4pȎAAMF7^{ *co_>{M?+8|ÄD΁ M MKpMsc[wdfV+Y憥ᩪ׊(s΃d+҄&ox '&beSLfS9@ J9̐ET QBOBs\a⑑s:;b9]X97oq/_+ Ƌȏ|Ӌ=X׏3`x9 4iRә8 rR!fj_\%ڌt%sj=.7+d'oTDE$I$I$)I$I$I$DVZD-}98hnV(Pl&BÑ,/@{lq; ͜JפI"7(e=œxqjɤ[NG#:8$\bU{<%I֯;*&*qGj]fw&cI YԱ #!L"oK]2pm\qlmϚwzðSJn80R^\#p++į';wرTTHeP_%>;~2U s;0ka~5Cl(X^Ei!s;%c D !w^mV_ epl 69*Q/ Pt)ҲgL9{4>`=&mZI$y.qyIX~–U30z"Cc;}6;C 9n?L🚦S``T2"raë!H·h́{hz|#RF.bН{ރ|u&IȄ'Iӽ>StxJ:=Ϲ~p7`>^&q2Q{XdRNN^/"MwqIk;M/HD#Cq*8bZkTDkUMk/|.~ń|S&qp6ʣfJ΋0O2;}mSŋ̠bwϢ@W-TߩiAH~tjIܕ,$Qcˍl*Gq$SgoKequhr;CwJHJl]9K#}$S O&Iuq1oWgn.d<j|9]]bxe#&y"Ra5(L(Sm"5([ Fzt`AMڂ6wtM8Q Mu u 2'#G}fx۔ r|1^q1&pF슇-'@drͲa(v0])6 ƌm +̦9# d׬ˉtpL#9e:pL"Gd4~l?L{߾^M Z3|E2vCD|\#uq^őZa]V\M$YHY_kZ:<-,Lm;8BW48b^չHf+^mgfĝ2DCEeJ8?GqחHI7b0KBZXyP DG 3 B&r=TwF/G_, LZэCF\Z`+3'qh()[qsu a }{ L|Q_Qwp(rP<PT#-" L5JݫS!d.W0|sψm0t]pk>ԗWX9d 6{i!հ=7uf{quRfH-[bk,5%8(hqePksmP{dT*'Ƚf",hI6[yKE}Cd])1%9wltl1sƖSk%M‚R9$գ`) L86Z&%=0(ߥE[91{؞RZPfR52p@!ęICSE qַŝK{69!Bk(Dv.էU`EbxNp#%Njx; 7 DѺ+ 4 =U0xHOneKe,q[F VȬ֡g%& sչ|g&dNjNtƆ/8.A~5/S^'t{PsDL `iTE⁄Co hg\5'q5ƥiL8cIO*Z#TT- 받y62 ށ1ݕ㞥ɵ o:or3~* //(jZG xq}l޵$"Vx"qW'N+:0 n?휰MgDy ,O @S;щ^'YmJ_sK^) N"뜡Ա )gԣ޼FApf+ ^송C4HxP9z|tCWU qVrq0-Rdx}:zY6M\UonN;vr2TjO"[EE$6MBC4O=^/Rtq9,uZ;vW*uQh_-QuE=g:Vvx3v_C+ .VrjIū@we)*Y={Jun*ȹ]ęWXKM8tc~:٫"Pgylђw92hnpH>G_L(^l4_PDF'K附75Dsx/˽Ka+V/M%I1iSET4+@<`U֒N{Y-Q !8[S[? ɑ.߻->$83gaћ';UedٱkLoUӷv 끓f2;%OӉ"u]H-@Bnn+._#Aa^Viԑ7 A؆j$"0ic&JNJyN2JRgI¥gݪeԊ)vt[%DŽiίI%igL@eU!.B.| )L"!霂:\IxNPZPT}ۭXe?2[b/RTwˉ; WYMrmVO3'c-r%趒ƅ{qA<:%D.c][xC)܊K|qȡw$n1Ю!QnG6C$<Υ7s4ݟs4qvg?rWzj?HͳkVlH JRv#iI!acHv )G! Qo8#^%ak]䭓' Evo4kM] TUs830mǭiT̯9~%5m;Rw>u;3S|&P[;+d[׈B:zѷ֚ǃ:(x^8"Ɔ5CH@&4Ó|.6be-]?Pg{w tԱ M322NU%\Rzmk׌YE\qqq@CF2nɻ\&ȑ@Dؕu(R[J*Pե4BtѺl$+V@,8+kyّ\^K i"_ -5peʞWC&8^gЗ (*b@~5"J:H1qLm"ɹڕ1n}m$_z> \#zaVzώNɽcYXtv1-):rk< ZYTϷ@GuR$cMS)lL!)Bm~0(JFJ(`fA)ii hB^B ?_@'@ e5Йo~?H;K恸h2d0jߗ"3iOݑn;6{ogs'hsGB]/dte;֓MI~0RO J^i,'k]- ݭU<_I;WpNL5um&)u?G!dCw|#n.oC=_,oR6l[4msgЊ pT/w?c{k7D&}AMB}ypzë d 0g +Z]bzw;=}WA"B=G=yq÷ x nϼȓf8M6ofp!ĘSq}_OO%2OIhgn%7Ѐ 'd/&(HJ=}G9&F<{7aB1Hv,c̈́<uI'8{;$Dx6*8F\ԍpӿWj6./?u @8AG=gQ.Ғ{?8ۘlfu_gx㗦Lv`t|oFKytN6vƬ̌N:go P5MeY~I{EJ8 tm z;`C%VfHsbɷy \gUD!QA{=M6,d&c6I^ݏ9>98wiH ӯ|V:OQ#0ᨉ=E}xsٻ0}R5N{''7߆r/0zǯ|s篭1> <[=Xzuᇡ7䎿;'Wm‘Y뙏/:c\|U=\3dYõI;_`ZE/3t NV]ʩۭH&s CtGAg6LLƟ]TO#P> X~~:999ASBo.,^Qc4l2Wɋ)gU6^#KkЙTk A#)a~x۽[b= HE&ҔsZ{~Ec7u<7w'Z92>|~6Vf)|C.6$3{ V*RGa&e=o-CK.n9z%XvJ^E$}}hL;ﴥ^b2­z[}X5Q~'|P/YB?L4P-es 1 ہ4ug4p0Ж듈ެO}{4:JNKZw. tV"S=7BmD,DA_iK~?L:h9tc3 ߇~Dze,z~ګ0xdsbkGvd mc#_|:ۥ _prW8Q8nK%hۚ7<ǝ9 ssM_si㻗yy!82l({87*g^_GaOsɼަWWFڇ4%(kuyRZ(Mk >Oˁdic|1k{ f3Y1vywˡh=}nryLnZ5,s'g7W&=(#3~랚!s}׺<ֲ_8z1?.{>ZYə6%W6o2 ]^CA&Ƿ1=>G|:qjDC֖2.,N9s3V젯G\:\]E7:ުPD4Bjsa@͸Z>Mgk6LJqDzҗ[,.DU;T+KSj <ˤ屪"k\׶ ^I=jkGvkW\I\m<ϣ SR|={G;^yXoF%G7$B!GrYOAGح1&~øf$I+ㅃ[|rFe~3?nlՐax`ZmLI%ᾙ}:ARJ&J;멕&Cjf+э QDwg]$60>wܹSc^ìYprK=V(Nw̟$VǕˤMuwr-:!Yo9ğ`xYxz vvD1Թm}uQR+9{r8_. ,}Xs˃no:e?H[62\ \q'bKc3%V#Ǻ|zKn2ql_ ѻ1zwsr7gAOVNh9,{my_Qln.r:չloJ~FcPIxVzN;O| ߁RGZ R}ac*x_~M+[z="VG+]z1}[ } y;W8:-fs#>ъ^u7_Rx3Ut2 g_Ui*ejkk_FۣZ'~?-N^{f$ˤ9HtB2rp5PHJ^Y$;]TLb)^ElNt2jӕ_4rs\,ݨQ$!^ީXǝF,#mVn}Đ#aI1vW&CLQEPnW׻)(0&rB͂Inkʡj޶VkNxԯ#Uq!7"Szc[e3%oaJpy˚B;$NZϓunn;ZFf8z|b3Le;|qlRֳMKi:kof$JR@d)&%ZJHd"Ԃ)Bd-(z+[{kaL+{w/2ߎ|9i6ϢclW<ܖyZ؜/фQޤ5pBƤڻE]bknk]ZQ,,1 ?T)D5 @.Pb2p% Q$=k"n l'Y%D /نJp W%̩BlQQ)R.HʜBq!Ji.0'86<\?cU+ƓTѫI[[_*ba kcM4`T^5!TQb}РI5wjFG !;+YL@DE)i@JF* Iؕ4BdeL0"%v x^_VQ8hND&aq.U[:EiQTZIDbi΀?EO#RwUEvfR2?@;1G !-nt;HE>i)aTj$\s  !t"SjTi.LXMgϵ`܈shb$$"#Jut :4ȑ)` n޾zQ bģB*%Fc)kLFHޓjBJPkM]mIS'aN}Srr7ֵ PKuE%%4eIٔ0X 6&&G;i^" 8H;tB0*ȝ%2w!  {Ѵɝn!I41=0qaXő^pI&UDž5UI"췵FPbJ<7{Yf] L1mBFGW~FqzB& }h>f=9y7МSήOw/I]Dh6Hd,\#nئ: $}7 k5t1Xgv`>2`?6lb11}니ءxng^y{s(҆0zCzp,= [( F^LD̴ݔIau #IP,O>`PP?/v4H88GV0|݆2~o+ύs$B9>┦|kEdo$#q=HD mjz}'X LO|g2(E1mX]t[+ʱR g9]ˊ[};c:p¥TA oBީTs5x?~#a_IA:p\Kk,༺e>31iw$[e'zx8_NPHu+w5Df;\{Ϣ;F(wϨCnlrcDܪVUW|ycok,\.)uƝx?hc9Um~o|Lx_˰0$Jkn;Q۩qIvytTpʱ159oj) (~ռ77W 2 ln "ȷHL )w~3-s"Hex׏3{CU876f`騨3\gq'׸P`-n홸\p r;3r p3z?dxANjqX,4}&3\YД<7d{߯>弛1!O9$Zd!J?*71<.K?T37ʧDu".sFgԃ7ÿRl' !ꄱ}Rl(}{`h6'Za<WCq85ੋ-*x-QƳ{Ux>ZSDc^skVILQb4U41/#H (bXpwE}d<{"˱5\q Pad$6Fp%&s nœxJm4) d^c4Rc`*JwS1i}n牱&Mކ)pÏEl/06y 4Lyn93ts(KI{9@yUCzˬgOrZ4h{¢l>T7^ݿg?|ݗtF6;RU"p9H&G<{ι}O {vϕFbhN3ͭhRTUŨI-O&!^ѽHp#&@rdS>I5'{ăevχz+ұK6V˃Q5oE~Z+?~0ɫ'/EN0:<=NN)mgT]to]ړzͿҺa;UvF w&GxW tC5Y7T;J-Bwz4D"g"#իM'R5m)BeÌLSn]>xr|8CxF؋9Fu+& EQ9gF=8b ,nY ^e~~vYR1ܩ*qOIIÎ'eu!"4Vʎa9aP>^1&hoSɳm4 A4+ޔֺ#bHd6p'3~H"j 0= pg[d>'Y,gܑ͑40nw4# ĄƛQ ErLtA1]q#bc~l^H3N伂n/"௫MbJ_I9\=qc&{\-j?3seIP tF#gt 0$^ lN#~ZЫ^R;G9Wt.5R[q9GdA5pLt0i>AY 6G $I1Ban;?~|#2__X b!B îS*Z%(K()WT $)9Ol J%?g"Ɗ,QX$# vulv)zC!1#+FȨ`~!H؟Ѫ1ݘˏ>ӈym Jbh*MIs_1G*hbVNLs+ +a`*PH-I$in# Vn tڡa$5p(ZgT@Ô'c'rt&JȘ5$v"t#T6p;Bq,ibi4խ٦e{!):K=y&h|XBX `0uSO.mqw9q۞XD0^R4>Jίb b7"ZlƓöSW%S`h1yFNQ59 ZY~_O7*;g3;;U]TD%G(34jSw̚H8ycRMI+AHP4xNA/A9?*>Ѧe163vG8v|(ߜ0i܃m:XcVUSO)ȟ `kJaRNْRzJϧU{K䂀b1*ڳ $0i︤p5\X}Y#/r ෲw T'X~wL˲MKɖݓiӺv!3 &őZ0ТhO;/o9Dv[wUDe1 0#&8[mJkvG볂;K`CYrw$VBZ02LM..vhcNOѼk(B~F*ݺf$pJ׬_N7(Eƅ!c"!1Qm\18#"~ ]ܱи-ILq@ꅑUH+"l0f؊` "“BLgZ$ƻƥi u]oQ B <^kF fKX2~Go)#ݐgZ?ƑY oZkE,|Ca]Q ah>.ٙBfD=V<<Ѣ<(t{5%Sd!Aɮ 'c )lsFw /$d&OzqLA2umND cv oAZKpT8Cvkæ%*qu( +t=R 2YJd0[JήrOݥ|>9> l{Z}܁^c=Ĭ7 ndlA뿫/rj]L ;smo-%O'KF(3[ǎkLuQO{kWKzdӎ-yӓ.^z#ڴEDK'Lzlj^y(-V5!.0*yrF_jì'qDjJSëL4:1):Yg%T|MLX+-"RUJki6khdx~uh4\<ҚتNM9ӕpg'Xİ ^<0DeJNXzDW|8 MrEqY["| (`e"zYܵ' ѳhQ^}<(Z,yaw9+Q3y1QJ 6LO[91%{H!}RY޴uIY]9)UN1ϗ z9S)]71; [Ng>9K+NԯKe6_yeZvOLqڝ հDuv.ϡumٽ2JvM}Rfa>JJSi=v\HS7K>1Φ,ڴ>j~RJB,pʅЕOvs}!N;jI.˒aj[~vͷ98}:Nf%'mXHXT}>0t%TU"IR#9KZ|g#"ػM6o+YJA*qI,~kF?tt5͸`Il"ugodDחnlߋ$`UJ̩i7G-jݏ~ 3٢,l U3؆†9H<ŋk⻾8]Qⶃ:tYWb:b .UavBtYG:}qԶcCɺï6GR1uٖ{qv8L1iD!_ZS?X72Uvs" ;Of7҆ffy{y>>dbdO{jj?S̑qNI98}?)EO$$i7w4iTm̡foC95糹&ѿ)?c)M\49SϘ#>1AܰKעzZ{Y>~A YT;c\&e 3w[vyxϧwO4M:;de+jZ/hЌ?(kv#T;=v2S8¸q˜"VGݯU8FfU w錬Hf\Z1P7+=Jy]STFEV.!!BL) 6A i;g@DhͰ׉gfǒΙgsQ 6]F i2#ez:yj]s(:*Iոw NRə$E&P|eW[ _<-5)3&Ȥ^b_dC'Cbc=Tn x<"CSM݉!&!} W<.xo6ɺ  Uf ikWߠչ31̪p_}xaZJ!FjyC8$ =`f7#U^ΧW#|tCvp0цI}^`,XقƍL-g}ADMKDq?T|Q<'(Ucϟ]=䧗BSA<[~p>I=G޼&zB=93K|c)n2yҥntz|?"H~xt!Y" CB(  k@пH:I{&w%KLNBaG|҈:j9oO΍",h (6xp&jpU*P (JTIEGp*-d)& 3)nGNWN8~>BQEqEGp$4u%Nf"-r}i;+!'],L2 '|vOs8QF쫻8K.,\ nw0pdC[S;7:2 c져B#<;qD͓2\Q^A<|!ԁ0Iq$܍HMA O.Md>}^7N܃H)ON ='{{{rCQ!3lDtBHh9!o'vq(p(Q@؊qp;eОo3+5ricE;IgNop&Cɼm8P%0K I!0I!˟ϻwoڗ:w_n!ʜ8RI`a {S*4vaMT¹LlN:ȫ&)` EX1'i< sD$8IS067>$ k=DUCO4J/hH$[nM=ֵ8?< &""!$_#~}]koy?7 b^doQ!}!@F7BG!C@ C&Ę:=VM.CI_۟G+k$ۮI7a ֟HCt~Yԧ[VP#zVTnٙ]R+|4!E9d9ANnlzNùOlDv}!pJ1foO5In_"R^tT4 u?g uDx)܇{NDa !K Huq줋5Ƭ[]g8EhX?중bl-ǭ"{H,K(J^: i:o%9^gM;d}t憥-kTz^33qG<ݥTMxz 8.CT&vE* NdCpw@Sr*ihoB*XKiP RIl4~/\?*L|_?`IA L-4/3f5#I`mFj_|&?9qNI;yz$&˧/1TL2)2~?|I#~&RaKN:^.B!%J'o% Sip}*9:񑡠G@C&-ӹH c oKϪ:?cޣc~Fc7 {;dS?Ek33{?E8V?f7U Y0UC qX>~^~8ް6ˆ֑F60}ٗZy!@n ͔n@J0%s*sM0U!"2(NzkHnOGHQD>iUDOk wkF?p0f>\%|1˘k{db̭yA#,%pj KkVn^ 1?>@3s;nb GGv J'f钩jOY¬ vN3w3 23WRMSPFlٺKg $^v>C!4uOUS:+i5ۯyJY#RI>U&*Ȅ qׇ03 ͓]w}_sgvŠ<9G_S=-t3 n ?D6IdH3s{08:miy%4d>GſZE:AHICy8Ixw>df n܁u17@8$/y1F] A_d6'P[$!x{6+1#"A7C$G?c1n˺-QEw1a`ĩK'uU/PK?[mVG$:ړ!`1_gtx.~܈Nfƌd8 *"hG#R>c~~^ o>t&j33yh^Pcކ!:f4q( >F4qB;)IA !0@̃Nxba$;Q2A'?p1avo f(48J_r16 w,e)#+~])dxhd%ΈKЖƄ,<-i bIfa.=a댮ׯ{W't#Ei ~x}xW O٬(>$xnn5B%>{ĭ$D1#;fc:c$ҲĤfbKj%Bgd!?;{l_(rMM@/HNJԛɬff=33]fwC31N3nLD6ƾi& UFCduk;dk(Q(vs\$_̨6HI# ]zbI"eȪotG UN_xc~t11E}^[nӷ8mk =Р/_w4! I3?W!a%ERO_U#bU~5kUǑKY#1=@l0J쏍zGpdݾ.Vf7.33ff=y }@Ƀ!giZIޛȕ$HN`sS=q҈} (?*>{}{F YJ?0KO3oGM@ÓJ&*</s(}ﯰKfۿٲȮLLR۳]AcMdvyս`oB?wy [>,VO۟~r7nܹԏ f܍smׯ;p7nm!t~DdlY(4?hC)wT.~J~U;? ,2^/ٜz|6ou-:J4)>É! ^RK~H?f;6-,AP QwPٟ);{^2{ęm域t8ǼO©%3D~'iTaFXRXi3pOK@ܑ+]T=ЅNNĈL :F۹|kK.]U_S&ē{VzAuWIM)"Vy9>_8k,R+5G/v: j y5o)\.~xvfXrTŎ6_Jޛ3p#loJi6%;C7M!tj<ԗ9OWv)t_Ei/dF)Y|xhSͣrWGgbq)I_lG*jYRZ~.%o\|!L~IJ]Lb ShM)"O+SX_&Cء{y] |w;| K A]$1$r)8K f&9JE(I.c9MS1 σcNkHO V^Rz/ؗ7GXQO(s k}zcȶ1k\1.& o$rFJͶWKc|mxlugzV4B`3@Ciwhu|)ɐyXmnpG;JZQT'ĝ2ZH7lK#[)g{uN7Kh]D+B{ F'P/n:[7߮|+ݏ5.Zh” rn>9VߤzOD},$u]],qrX)kK}0W K QeO]}_>߷Hkdî_iuOlvzxi^}sӝE-zhbt[]cjhmqZ>jsm\IQRѼ9L^gZE2{L Q(*޽Dd9d1MDЙR=GV]])? >dAΏ*SF7﫱ɛ%'nruc.yoڒ5gI(#;Coۭ4wòږ+.;OW=2(]⒃ﴥ7*U1%GJzUit)Ҹ8z.p6M(nEJAh寧[=,wcv'cZ!pq?:ꛡ\ =g,\76?ꐑ863Ώ~tܴk8<{+4RSY8s_s-*'i,e>Ǻ^u MggsOQJ3qĕNɔ9S/'F-xڲeJ-w5q9NK}RR}Ɓs!v`hީW猦N&6\9Sm\23&OeSt]w]>۽中8p<3$o"oYn||g%sn_=̥!,!"-sv1B I#~?xQ'] 'MI$zf--&Rk(C7<8OV7rKabA0' nk憨/D| ov$/r>NGLbfǁ>bˁ(UV/z щhi6A{@ˆ㙾v{ :웄)Nl&aM[.>ph6ִ u%$NP\^Q9Ec¸cgD# o7ς8'[ºV/,l׶4WURMI%j&&uRiwgwzu=dw:w\+%m4pL{$aXc'ɡ# 81IA#z!$J{Ic>8ߟ:=Z7M~**m:t6y{TFhr LL ]w3-=m~@&;?6ub;hc}Q4T7ȦR W"V>Jc\3 ,iMĂj&(;_9kCf1$,lNzc M2ꑵlhb^퇲C<¤G.IL%0MFфWe<$B=J<^ IcSg\帄^ ym񧞥ѓ e7FބFsQ cSsMT_T]+GM)L!{#PNqvg<ѻ3o̰iwoծ.$B.VOCP 28C)Gz& yYfv;wZu=v=j\g3w Bjaz:(q2Xk6~S#Gk!MM]z0zyL'wӷFށTGg,c'`nxi֢Y|/sU޻Ż㞣7s5-a(W$fEqmh7%T Thel:׃)LL= 7qw^Eq NG92)/n[K|_Rd$ q&JzeUVd$K$aZ}֙g\HxRq#Y@ oib`Gv]n2n88rsfߏsn'>fO-JT^4'0TqŞ E`cL0RTR͕݂:aZOfS4$<=ފ#ϔׁC09O=z=O[-\8bUK\]ӝJ흝MӾgC31D%>GTQ#&۔)< H_:$\21zSl41Ӽ8X8`ةp"JV!8|{ uox7+N[mFC|-脘VvQv9%>ׄoT<'Xx3#3~v!''LN=gv 7$DD02zJzfYny)6swyL%B4cĻȾpHl 䂹X7ZmzXa7<(wzK͈1 x} ̼{ߢ$ݴ+IP'W2'l_ ճ+XE\dS8s>XAsNByw#6;c|3@q|Ju†1 ߇$ٶAQ؁ГM^$ZoJq$vRd:eBsST9ִYq#fw$kJϧ* ~ofΟ=XN(DQngel1)]?8ܱ'F 76P I%׻7S(!%8~>'[}/T|UQ,0슗{TfmՃ0m6b,HM4ӇJʒi~Mm8:xԿ?ӂUEB@PDLDW[6Chj B6Ai4U&X kfRuu-'H? +{ m+M+.QBAś A:Wѝenc_q6E];L(1.QABKZ']X6NUf* R|dɘ.DRHֳQK @ ʡֈ6";)2UU0 h0 MR d[fmYJZ&l"THf#i#Hي6I w\_[_Y0Q)[Fucv?"\qЩ9PdhS!l?A P6"r"$,ֽ*^r\рE+ 7v'l %#ou#Axp⃲wò8$Mwo{B!5! %f[6bN$\+|Bdmd6$..2~'Tf 2 oyNwcˆU t;-*`HL*R[ΒCOi?|xQʂ`@<)E~W?w'qOɀ*Eb6N0J@(db:ј ;LLZzmiwrX+Rv5XgHp*Tf C$WX$٭yJ8EꛜGDJoa$DQǯOECJug~-mY3*.٩O1l7rojzo22N : C[3f jI:~2™~Thrֶ-]􃍉.|d24ȚH$79 Na+?=␤@S #8g$s ?0P$:vΑ^#~hǼ{zLPLB@b"҅(ĝB#+POw(%l @r;wY$u;PM)IRF$qb9<_᜵;^Gc8$l{Q9_[ÅQS Į % y# {QıAddcdsd2O|q<z. <<~q\$d2k={Iɋqv룁Mz3#z-=lqɩlF΃0Sd.i0w්lPŢQ$ܮĠIL&>:w<\ (`Phߗm*zX: *udFq]იaVd"7o<@|_4ϙDl2>EM4rK~F[PTS111W?OS-f<ʼ? zaUUV } ?]b҆o1CA Y:*260l"]:N'8ltMA}S0$z^]B )Rӭ"n] ^iDǎUQơT;u(ҩ4GýL!2GNiϧ$΋bIsr[]K_ԜC?>uEp!Idb_r%XzT'#g (aWmxca_RIU-6nHAvŭJ!斊E8> y"ɦp: sAME776b Q4 *wgPV1҂[?v?S^#[qhO|mN:7Jn2:*k˭hDlM)(97DwTQ=Sx,`Hp%y>U{6:]2+<.@r`9p4"Cl'xwyMp@$}ɡ4@'*k췥c #gᏰ@bgIwCC6JNQUUtdY5i1V\t1J4ƕ"kh?cbKHx ,M~wXQtZc*w']BC@ڷ+tpu 5nl(Uq QIM24pXtV$fq ?'"rJ<5HM4>`M7Xk[Ư$P<%0h SOpQ S B ,hid*BkMm=sۄ?$ؠmT: U1QzL F?a&,4NTZ *F 1;@ZaC P2SOYhi3NN`PlVώr THɤwATUx2MD4G]퍛NNgzE*ZHq+'vK]s,:Fi;TQJv;3i>;Şg[;ʫ{7E6fPć!RafKd GMP{;?T6(2pI},)r8F{>OyK{Pqsz !C!HO!E%8Iw+0G >ׇ+WY6&ci;Oz$>rI]RkQDK-Z^,wGPz7,^)NE;@<) `:Th-2utيa;ㇽ&{aدs[w_;NS=M="> YZ ;_0_A1DDa@@%*@MĦ(֊20" _u\-UD,!>8etN9W,\rU>ˤwt0NrL{A=, G/OI#b#&?{@;ޡ6'Gfı4>hCC`bK-UD["IR8=ȭ'*-HHUXq$cƸ 'j}lxdM67I><AA%Ē6{Q}H oc,|r$&mŽtÓx"X-%djJ&Pbc41b0DV}՝8=lv0YɼlCG)z݇GHo"9xc?羓4DӁ{LJ`<֎qL_%}sy, ;,#Ex |BDbds^ә3Mdۇ,YM?W?*G4/PL(8 =LE&(C @BV-Bp I.¼b1|L$fNtI ¬HV! Bc4Ÿ>5@yaA=ZJ$!KTb?"w+=D~N`Y~}JR?*PIS^ $+(Ah3P! +@%Pq$stulxA>);ǵ'?N׿΄Mqʪh%WA 0 CFyE^ۚGaIUs 3 "iG#\s7̍R=Uwt^Y kZɑR5WUjHjR=j 6ޑPb1BL$Q_@6Ŀ{S34|68][AʁA/hmKq`j >|uC|ϣ˱ȸG^~0w鱳Eb0]!4$I5u6#]D6NNv5,,c/+gk6"60H).{>\oZrAx·=S.>&ؑ"`kNac@ܟӈ*LXI5!5"el '%)`iDMHC%|*h%aI )IT6Hd d,CB O<^Ou;ωu:A8F6țll[!be & -Ǩt 0~ &b., 6^!FӄKD>~8=J)f964TCSfm $TTe_h?hLľ"u@$6ݨںD j~0d;'FA"Z!*tH;Q'#iI{ߟ-[s{|'rH/e yk~Y&[@^DGvx*LcsyG/:T7 JkRhPiq!ǖkPljjfֳYIkY+*A殁Zyvi^^|1{h]2MķWiH m3CL;1"2C$jt:Z B/aPurSx4s128^֒֍5Z@*T$cV'rAmr3$vO4=0`?Gn5@? x]Dj;,~zpvqk+N^IQ} E*biK$]xLg.*{=F(5::3X7EI`jLlMB?L{}xcp/~*AN§ڇCC_ip2|$pe #I$&tvSi$`4_#5 pMUJ/bm%QzYRqw 6[U{;kKGmܒevoK1h&tr\qfg"mRHF9n z!{Ƣ}|W?HuUd=i,l߰nKpݑ 9+{7wM[޴Fm8,"dAab,)a"SUn5D\ a')=R_/Mp@/rzPXQt!>Kry>Nì۫]A]d4'`85Ww{dtwupTb8G@t xWzZRS{ޏ]|l*UDvTww:IH\QXh㻻bn'uѿw\'wuUUwqUWUTUQUTݪݎUUUǟ{oh@8ʢE4B‚(((@eB ((QEUUQEQAEJM;h]# ;EpGpxqD YEQE2`<&;!0kh/1 [RON' $ޚ9kN줉B$!8?cm*6m]L= ^VQ}vifw?g9",/WaeZ&I椠nI͇K8DH!>Nrܬ$m|Cl lَnr *QT"$($y<TG)G}rʧJ3!@QR>g/%z3f="8ba%YXyW *#Yhʒ>4jأbV5wtjt.>tz m؇ZgF֬MO'-7^)Œx;^yz/vwIYW˗BszP[camc443ѩ#="mx<#CgJ:)m\Q.i9I{I$R~[ԇ >[ETyޕסz][]2'"9OqWfě~AIsf֒zQU ]=e3QQ|@R1w;oEHsdcIofc%hD[UWa7&Tuf<[BƐcnm0xJ"(a>@&XX2 xNehwdr9vAGWj,Iذ߆ 8';ؓyG4[Dp#}G@vi;RVtYNv鸹9o9= BN$v{;O=7>π*&$d'HCֳ~C= 8T 7ll:=S &񼖥~B ;䄀 NLB^A Y OɆkL#܌d8fthzT>cxk-#v,@9Gl: x^ ?ZOh $i$L;DZrX7N:(6UfNq[)*Z{H<h̉b%)dR>$aȔWum _OK NfÈyVZfXg54Xr 6S=^}0zw2joIB("8"r_XbA6đY J7Td>o^ϰ槐 yU+.¢-}_,QZ Tܴ$VVq&ѳG" 1ӑ[bNj4}$_$ɍޟW  8J M=7[Э/c'H>rzꍦ37nTA~J`XNq[(ϩwwV;_F AXH߆fOF{㟒7o8nQE`3*+Ǿ!bajKVUDDd"RtD=,hlL,=XwFfϠIyÒe1Ќ6DQ1THs3LD3g+#Z4'Fe!DeL ]y1fGC93zz~ }Cl(oN>m9&&Y5`w=>;Nw}Fm|OC$ǵ6M3s` HKðs'0o %W;-bzX>G埮QOܡ?&"D_Lh8b(\*U?gQ8A bia6`wU$6h>)~eT**ʕO H }S7|Q wxUDWCQH1!T-|$F h7 %T *ԵU,*HFwWx>3sI"!4Qd+:w 3 P1"ula`zR#CUG𮙸4Tz6hֽg. d$`:BԈ'0O(QJT)fB,i`U3MrC:xW4ILiVV>}|s)}a}4<>O{c9TDd;덽tu2;:hqŪ(5,͹Z<;ݷ.M>U\Y*whCFï~IꔡET7+# w(ÇpUWGaЀ%.8zKD{@x EF[Hj\?28zH?qo_Q{~nrS.=hx5q˭eTf&-$K[-cpuU;*-fVtL\JĂԄ5㭇͘iz ʌTF7:+xa/A$` LVpH(iX?#צ6rrIU7iEG"ͱl9^sP;j#i`#ntڶD#^Ox=Ⱦ!yYi6 $k/fkWK'QB! #DDDD&W*t@ъ \%SNhi 4Z,7NG$l%/FV{Ux*ʤq;*N34$* `i)Ͻw;#q/"ŗ~OCuMa4fc|N!sku3%6;Πdq$݇9b SO$PNxy)2|>{3: :!&5Mi'1Q+1z6$Vh'1DRRfFfrF`|C {**/(6I%wUVٴ1${HKK(*IJ&[laɅ5` I5e8D,"A"9BWy~Pa[MZ8jGxٽD,RRRHP*cQ ouH}T$fûkEp?zMلFC9Hq(EyN8OxǗ0 {ݞDždLGk+-cfuctD/=)P|uؚnrſY{σI&u^GvGC ̻~ p4+* ^5VܼMƦ9*B?X8Sꄫ/w +ZX-dHVDX5 \Pqe*n!cj>[60jۢh#=,;@.vQWG4)ZTr ul*H*!(ۑ(a!l*c |J*67O,٠1im zFQgfkE=)sp35!ǾOKO+yTc!baA*MFlٻOᦶHP`a(؄PC.GGdiNn55&i5\O'ܣEKYX{{BNXNI瓙\%s#ʞj{  EMQV6 Smvxk 3$"*"_.Jzj;=5? cXhLpH7:ya%fD*TxP<oO- !xBD1}XvyM37IFccV3lZf- \H0`û#"bӄIfA\UR[,l4}4ť`R=p|M=CO EHD׷rwwâX 7Gz2b9^B\AnHͼpjp7Hۧ*QP!CJGiz|r߸=>9I9x#Ƿ OvOyk7ԩOx+ ` $ gCHl\sn)'H'c|5xk敌ٺ[:9$ܷn鮴DU[LLNJj-Ѩ jCnwD% mm4&YZ[yۘ_Tg} kL6K4MNyxObXuyg-ZFSyŶv=+摰|v< `sf3OZyQ6SRiM.S64t `d$,#D䧈}q߄!A DI;r[Fi,SW\ HttrD# { =ʅ$E1$>UKb?q^cKxzז6yWp9LmHTH={ q$S-Y$CSx #hv縺ۢ)ө!eYb00@u\)* nxagM`D_)Bhy%/Pއo[V-=ބª8OAޘb Cf\. NRgSzK0 Htn=GpҪ*롫9=|W P΢|Aj()Z w^M-s&Q3W|z6MI 07b\VD{˽VQUTZcu EJwan6U*|u{m8EEJuxv^1ȮS~W-fw3#p\rCLʺwUY~xդ`kdh}V /dOjC, N{^ԙg1mm%XF}Ahói~KB5]Pi(!y<^=5lG'ghCx 10! I$OĿ| $ BĀ;2*h6/ƖvFdĚUm[hzxvSяS9 A,_dYUYVd4j&T'T@8l;N"n;ǥlj8Sa" eoWQe5MJ6sBWCwe'Ѧ zX1Zm!Q$γ5!:ʡKLٵc+tʡ5S2(=K Dej<5)*SKIAGbF@aqP$%v ?"hUr W*->˳"QR/=@.D59lsDU2=ύ/o:ψdo'EDֽR>DiA>]_r>06=_JQ8\ylvtW\zl1';($U<%Lѳ#c[&۷gl]: Uw awV&N#mnK# l%m>fW`s[o[^\fi_(Yver=}̃<5(zOD{'Y˜'F" Dz0hDCQ+J-Np)NkWȍZ7 4Ż CBgL?T\0ho!t˪S_ g0Bɿ"c[B*LB9 z7*{Ճhro[6 ƥUVH$M)0rq Pz0a Ew|hx_HpHńibVɶtZHF|sb.VPmF*nͫ%n @@d&hbTPEt k {.e*"'s6!F ZvReFChu@ۈ]ҡ2Ѓ)YB} D_I2{P]>Ir6ܘZZ%7g2CxP'@U*j*-2*"ZCoHRJ)6%N}G8|K6&nC9ExA7k >8J^ʣ: _eL_*Ȓmp23'p'.hq 1hPr^PGh_B26aՐjy<;kƵI&&蝾cɬIJeUU49nŲ;kϚ=ۘL=Ȫ/ SbO( 0)cl[D3ԃQ͵gٶUqmgS. 1k42 jLc0b[a+_K7axG·?٬/N:"$tK,falIÇB@7P`DcxACٞT< z3Myһ*ZO9A.3͡;Q0 {3` 7M0,t{zk#Ϥ/TnēnI'XGS0ФiO3v$ikziٚћ*i #!wC?|TD{cv "D#x8G/:CMyHwKi{::!r&\Īъvԇ?=oooNfNn}L6FI.5F,OeC»x:U^}m熮LuuZi`faOi 4Y@>NB%D#I\Ki o35ٸJ2}1jc=T.' N9vMՄp>Kf浌mooimѶ#m4'TeHSD*&+ЗXI40L#!0i+7`7cpa {GҋmwwbZhsZ+.À?ti#1{)d>ggBgE0X?ó+rSXZo54ETDD[6ZJl*6E Y9SIQ7|4q/F3kG|Zp8XD6@]F|lgZwO%O"BdM} _2^/WaA=rbVwk5 x8Ǘ$?mS"Qh"$m{T"9,rj0=$NMc(P+d *GRT?bYp\I6tثFd2w=!H6'p8J9(F/x`- +%~[=qUwOdNcy^:?KYko~7zwrHPPeOjSO??&Ti䆉Z0Iypf&9BDFъ[+uIsTdf2%b$a $V!,BJ)NLnͷ蠙f?|'X˼afkKIBb"@K> 2EllmUe(!@ )~Ő ~x8^6ac.|Fove6Q{Y]8r-#r)Vc.S.2sVbDf%q4 -)qh`+Rhdž^@{t`n ͹)*{]V&0VU[Xo1wۋ98Qo^h  ;#ψ- :Y3k5;釐@툯%XlUH$~d'Bp=\>~f-T 4PٜI{.]&DWXYXb'N:}=w 4}'C1nʈ]%3akܫپfc#;S24ZgFh(BNXP/A1@)%>]  W(,2--bR5RS†h#G ںW[ PRBP9 zo  :)Ko.$ƴ#Q:p],YvU?hs$8^sN!4:Pv0| A?%OTmِo]ˍtG I¢%;o pQYc@FYF%_J,` K4dU´t9 ^sAW,vu5bK =XR$]>?z(ʏiZB}3DJ%*d?ن(Ek"tThdE5zM#ʯ|\ &kŦfZ6ɤ#EI#Ԯh)zM"ɦ*ȹթ ^ p2HM($ !%ht$dBN۹Mnm{"j#z!ݸU5[({ژb; nIGXQG*rըh*z| 9ߺ&j20B8RADpKL$N[*1oG>qW@xEH.`NDǢ;Kx?a?OnA§&8;0k#,wx׹n(M`T5E 7`aX.5DH3qL8#T'ÁClNěm ]*$"""HN"N!ݥG85P9H#C-@5l2$#M- %]ESO+ea+q`tZ(Ҭq@ネA.MHuTª;1XٻHJp2 &s:`u7*ͫ .(HE19,4?{ &)әJ9f8&pS)BS/]m,XI/G xNȓrBt{#|tև7wq`4WU q:=H.59')NŸRV+gyOpǀ~;7H3Wz/ 뇤a\.8}lV#BX?%#@LRD-H }2 lb1&*l~XK@ P TDIƩSȷ.XavJ趆+)* 4˔^+TzxXCPk6ty 6\%®=X:"7Ưd5vDpuAMY*QR5 CC0,b1_xK 7qC?m,X1Eo7zA{QQ1"V-ӳ($ء/ȣ6di<LJ/?x{w}s)Pdcdb"Gɶ2bY~_(t2245zSlM9QD( .&(I,J4sq'eifM8e a>m7q?+33$^ڒݟ7++ *_ 5m[[yTٌJp$ͤ hP)lX\VL>@Hp+BvA% dM#C`$ؒ0TAAp,,V$|$/VUOES_vb.vzxFMH+¹J|W8"JA4b,<`ʘZMUW| N,'{]r!$m5߄T1 '}*:ԑo*G2rkvuGĺC2 íb+B='ws\vpumDADnƯS37nΩKjwWnZV,Z6҂Hwԣ (Z~)%~G' z:%Q0\TD;BxPGTEuD#UhGL$?|Jwz< I27(uIdhlJ]HusaUj5#{c#|}GvKqr]4[$d*-A B}b1"0歵+nɪU% : 7n&ô89 JQCeX:[\9=npq?'C@r`N}ku'$1GQЄGTpDDK2[-mMne 3^a1GPHj0)=0$b E`iw8OJ`'/ؠJla7Å)2h<(e}I {{|xxrlD.Ӂs;sfp@&[ 5fm]*a3ЧDa4Keh_=Tp7;fӅZCm6%цx#NFʘ"rvv؂paF\'dQp~w B J *RFdʮRرCYlDstw;p [r @y#aӃb "(I$9z,L6$g9i2Ld?k=?PИv>tshϻDޫܻ=+tdb>6ĬlC:i߷c1unՂR{b4bFro -JaM9-1 69'AR8g* (a,D]&|!6gtVf0wxϭvE;Nh:ê?{~C:J${>kcO!l 9 8!HRj6'|:L"`-\NK,h3F}$ֹ_+_kh;kiF2OpEEq~ۥyb3 ]UR8LN9TINbt|In=B%^0OCq7:6^;97B>k8y)5 @s;*pdd "A*P$!!R*Đ!) ,J A$DVҙtgLJaL !A*1LR ] H18|3 FDHr ʋ&5mTk^Qr0IZ9@ɍtبTlB #HPB3 $Ю-Usd.Wj#. Q&] " D+ )g`h!(H P!ΦNG.>x&"$(2fD>:=O'~TOO0m_%ӁDIYE1mqFQpYTQT(5bFdE@htX]5;5Q ⑭Di ML.LJRLS!ΐ/M(f+ĩT>ޜ,1i|CDl췼ZaDC|QpH9f/F;inQk-xOy ;,LwˑUa<y;-67eE3MtW=~P>p֒@t TclZ ˟?GQOqe>"*!XRC}YLbl FYEZJRAou^txbn;7\zk7@ g僒pH.g7q+`X cC5"EOu9W~'caF2SµZbd7iTݐyzBmaB  чq1j@ K %(5 Aj 7!p ?_APɋx1BoMfm}8i Ա ַE^h^"/C1|aRa5]1IלB/0 ԉ|9\A]'UIM\4`<@hX;`#(eriMAr1ޭtK)"TK> #?GS"/g5!0fa)*2{ꭘї@ԊP)h@zSC  I|PX7D<, ҪN\q XsX?rVwɊw&'}1O @ʿ? agA2dáFREIDA I0i!"?kRW]G]5XJ\8kJ\yЙ9iWw `A߭کW{xx#i[&KÈB$ Cn̈́ϤQ2æ4  21)vvQ{D@,.zf͚D=*+_l |~!UXp"B"a=bnP"#Pb0B2Ѓwhz{>o3zTeMUNzhk+k_+i4|7T6P@T"מwGN]QwGiBs>PEXE9qJ*QTet1%`4p:0;HPjCia^JzB@@JM@e74ہ01@`|t۷^_ +٘$$־$B$Szc`.v'65G=.2Hc( @*̩DRL8gBO<&RϴI*(遺AN:`B>7pZSƫݣ*N6H%lXzO40HΘ nYY%LFEISjZe܇򇤴}§"HBr=QyGSzp#.$&doOm()0,]g=GW[ڱ̌/TaڸG.$ԣSV:+2Q?H tNj?A3%9SI!!CrYC-wJqJwaYz[h `IrcTndD&2kżXL'〓ig1lgl PRnF&!ģr l]X0XSM&ƴw:9iA1 Ž=ihǛs6gajs׮0(А4% NCҭQ+*ah{isP[!2Iv4<wv/:/8ؒ()PUL>/닆$0o PH"ii0$Xi1R4Ựdf ƵyIfA\+ 6OF6#݊96Oo()0j:5 Oc<9rFU0C3!#iA@KWZf0Ǎ#ʠl"91%s4LI6+g8 _]_Kkr7gw&2(#%\ylŇáb^`.}@ ͤt p"i4(V3`XѤ7<87Ds: Hجv]+Reue6+V!TWS#7foH5Z8*EO0)*j0]L6ZTBh!=3V-\)ՄO[ߡ>Y Ad9zlzM%wJT`{<-qA†s+~N"]:+me,8kz :$+T9uMc xHcN;k7{\21Cg`̄l ]PX4lB8we;d6۷9(9EbsmڅOl46Κ4S9sP;l!r h[*:j/ƴxX ?-z}| 臵!Ǹ~{;.M$qo#?4?B*!qdfMer9廒ilG|@4cȕ\A|9R{nNF"-ބm\s-e0:(|o{ " K߈c6[֚\l귯Uye :܌2m"i }Ti $=Nh6ag\o'6!>RZ+H,ڥN61P[S0몠0`$txm@>tA益⦊mZy^]{9Fu\Ep&g$+0zjhI+W,3dž>SOe]#w:=&<#ˆƏffl>" &\Q^-Rb Z:EqӅ/+-]p ]ej@~ӧ]f0 b 0 +D}sAIJ`وe2מPǼD =tɢ9Er"LIemZkΈPL gg&` |nRֆ11x}+(taHO\pomrG淂- T=a!/! .hM,D{߆c:Z7.Cm1[GrGv.3hJ$}61E1tkxѐ 10NHY>'~46cXkZ *Z0n0nTR \E\*L}[cd_UL/sُ+S%Lad9wyߏ% ak+Lyd5g/JɊfo[5 hg}} Z2C M{ 14,m D6#ECMWt#+i٧jTq*SKjwWNU9:;/۾uoc"ks{A_#-'IUAbִUPv\;d565dҽ&>nH NL/iD?"@#_?mڀ$S59׏' .mXc';̉촛p2x MˢQy(U2UOK!yt9ԵåD5vNY+VB0 jҸܼʀtѡk706[hg̙>¸lgd?:9tƍhLml. ʜhYQlh^cN#SjHBb4lL8SӞ5ӫ6_0;?zi`o:k}qL644Q +[S5ӇcC 'r4)YnAd|Wh(hk~jÀ;dj8GÍE$7X4t3s zC |ni3n8pU* ) AR`I%:%Eظkqܪ' ɠ9Qo:}y(,6wY2rT~>w0xqiiMSՖ-XGM.A5 Kr'>3 'Pwި/;w՛쎸&>.~ 0tx ݝpLh㸻*L b##}q v&rpY*c@Tj îQHtdn;eKY"90a=ҟG==bxGfDIsMc9 +3&Sn/ЧϤ;Y现ăVI%\qz8ytw|Nۖwx:BjMNw2' 'j( K(J%PYa7r"!"'#!tAACT5ىqF Q*Z\&D׎i<,M\j!梍2@2"`IBX3! }'*S/qޢr ^Dv#gyVg笣;WC}5'đ0Qe qN 2):T75};~S2%ʞ{|~q=a1"ҠE#qYfhѬbuh\g`rL{Vh1p$SrY8A<R\p R&L!!x[J ХJnE *:$Aiɿ<2o83c -G$>|(|)/%pq,FV] eI![yE)L'v"Q:XEv_ <(>Y(ݚG>HojOauU|W6<^96T[9KuO3*7TŠgy0Uspƥ YF炔W]>cz &V`'rE[HRst$SU׊=R%W.=&I@hMqVzf CW c໔bB 2e8obi)^7 tspc j;Ouwޡ*|VQ)vR5z#K17P'uccu"56wu\\F|׬|n}%實Χ6՛^* ֶ_ -zzWwNMu8ý_F;yEz=߳F` \0lqA8H(TE!ՠďPd.!bWJ$ h" EJD~T ={oi zkbKeX萱? z?yzUwu^S#ogȸ\-QQel41L'aQ8Me,^a9Ltˡ^iPT!(` ;<6im.bxq*Fe#ꩪ킮R‡*lCn %J$Y~;='Q^> Ѭ!x|""H!Lqd4VLVG uc kڦ7Df[WqP邲ko vbvςH0;NFϥpRӾז *,hhkA,!T"@Qs[ ~|9*icmH} ƓKFH>9̱觤B1(T*Kהd8F LK԰QKRHL4D[O̥@ZSJM??i{WLfށK~Ĥ; "׵C?J\GNjp80%qjIFBXo,-sUB-nPg+#VCY] #ݎIo 8DGpkK_ #൨`LE hO &f^j74%Ν R# [8%Zzi@,p !N:]ɦ'Ecd>l"GlKEs%tfXe1]]]Lŝ!!BS\oDjK74D%cǽ{PQ&]د eHn(Di" `8>aߕ)eFUW[.VtmM$;L !nIRDnUdqa]N|ZT*:HņQ'WgU'IƬ,v5,e%{%}9?*i4qA!4X,,76: ,$О[yWbHz;dϾ(I0I0wn & Ez|3F)sZԶ4Ѷљ1֟rBcWD _B>SE lc_BGM8λ9'|f^秜kܚ|UCc33Lf"*`R-jV+d U $# H}h-I>*Vʔ+=YHN $FpHվthxw|<36rK8cFRnL$L+cθ9ι1)Y#tct?UtΜ-k2DDYdoLѭݘ>{=gw#c*ȱ OQUq+, DŽHh:Su9U!?^-oسǞw{:ݶ_{/]$%=XyL-Vg)9emj]v ;ߓ#(Vo']d!$׳a/: ahi$N*;|OQz+y&N;ݺApz#ֵi.C"HJTm` Q,F?4H `JnZ]s p $~J2Bg,am/+HeTN2w(jbk~J@ @|Q1~*G|#jZ[%K>65]yɶ f˵:z8J!l~0Ҷ41l]koaBe8t H]Awq$ts蝹 2sP3m@Z#*"CSY Ӄ| oǨ?]l^+_R&M͌+ʂH5( DI+D l2iBR ryN8'bt>END:ݦyqZgs=2H[A_W$Y(jQ4L6bh˞Mj[k~$qSBwB 'Y=G-6CBvm#a&X ȑ Ġ@jLL2LoAzk 9*MVEde*]5/B$qRc7o[Z-4fkO0ZF9.Rܵ*w2Fg#z}4G7l6Ub6TU7Tf4U1,o]B2  ķb) Zd6UOqقCF#Iz+!Q`lT# nK Y5?u%D"GK"J"I0 tvGgCT\~xMO]/nR~r8z9D|GBtvxp(5 %}2握Xy,2~" jg|d"G9C$*M`l`ȮAF fEp'ۀ A:HHj )ITfHŠA"DRIK)a)` W$FdB, 0$#)K&RI$&e0Laea(I:(]i3ZӄqVqۡ~%_W\;X XO;9YM;~cY×%@56S(8|Y2|y)s lDd"BIpt~l[}&Z(PL*X݄;2D5Z\1WNj0r \e\MȵIf[e&j .ișIXgm뭺Ͷ\)ILBJV2jEe^!#8lq%lćbj ,?zps|rCϝ@I=أt#ΈolKjN|ΟuwK=0W>ȆsI[ۘyGGEPOX{G8)CJȱ~Cj}TN'%(#tUT Tb&bΕimѩMHYb2#P*RBQJ>ՐCdDAe:K&V ,͍E%,1 406\ y]"`aUU*$Ljə %RD% !NL$8R 4dlT$xEJ"R@IPɁ@N Пj2xJTzE'~tw0Wl{0G 1V RD3B9$Ӛ5Tرj6ɧES!D)U0REZTA(I!P D&TaI$DV%FR UBV@S{'Hy?VtG{#Ld7S|Eqw3DOiF~!?C&QjQa ?YK6ԥLٖHKA]Ɲ/\90o%?ݿ>TA:}˲pD s;$v'Z֝b!ywm$Gv'J6I)*[dh֋cFHZB+2Qe IeA'ϤCؒ YS$)ꅠj  e7WTjbr։ lGX6ee#,&CrAszgөy g4Xo]jbc[I H: unUW,:x/kuۨ+ˆbf 0N)Ҵ:9 P6 ~R%ܡ]j@ +D@Zp'6W"3ÜI ՒI!< #j& ׾gBQEEߟ5..K̕M,yJZ*-)ww@/!(gfg: 6Rjs]"`:N2d|t1UKF'~:J0cm\Ԇ.:Q)ڔI#qDi&7I;N&|{: ޭ$O4e>=.ϥ~p KyJxn5O=XyPoVES\VÎ[796mĎ*]=P2]BdnSRneS4: ] 4 fƌ#[aM fPd’x[0"H`0#dlqC2yCN`<: ?A(Cbc oVn&@ut@^ pMa`F[؃`B2$ɒNxBXԐL#IFtFtLPLc1l<7;??;G=~~?~/W?~o N86_<%lŴ8ft4BԸw~МB8_0)b띿/K~^) LI(J)$eE: @}:"+כA7kIGN6-Y[FoS,ͶE8jSZW*/EרM"v(b`/$2<*It=A$tۀ.'8s(YM}{5oNi4TvBd@D:KOҤ|!pٝ4 ]=v2!z /4dKz]S:mkO:AEް'SC)˭=FZC" a+5,LIcT"?oIYm$:&9Bs$'Mc>\ = MD & z uSOA!g{ajyfo?AmπbZ7:p~zN]b_FPSq1u}{uKC$ 2?-AC$I9LVR-]ZpEx=vW짊8{DIrqNQx$4 J8L AP36+"ijZl!O++'D5o\x4A~BՐ}[A:x'm.+m}j,bjc #` alIjv'eBm>'HPOZ4F _^m[T\ckcyU+kX\չmUi"(ʄ$JKߑZ֌bN#t"RKTAHjb(\ ?.R#-0:iZ'ndFy\qV" x$pwhc՞5]iy#w\p6ZG|P/wAA]+MN@8)bZ)1QzڷVj! 2\z_6)LYJFmI͢bȃ,ťK%La3cI)S-*H,UTFIJB2ԛEԓ 3ZMNmg^9YdlQÞd*(ΰ='')::6!H@b7ChJP'PD "Z Ba8'PP>No635#(;.#c(F#;|/`-w#g/۱#@6H2$b^6N.-Q-S}]Ocq]åFA+$*/M_4*'Еax}a_k}aP4k۷D;;8 "*9;Q󯱩b>_cZ٬hFθU; }OقaL?;BDzL{G'zW#RWuúj00U۾fCa ?3|rXģc 9)9;oiJkTчOw}_R*,DJEWŲ| /οIOن?O5TPv &|uG \C f%f*98M*F%P?a'Վ&Ȣ`$FC{<ׄiJ0$(ۚtewK)$B 1כOvLsFf^vE؊3{wjdӖJ)_lJW+YwZ,\F d*5%MmA-0JuQǻbaQُwgƫÐJ{wIHM;d.uE<K-63LAn[ Q n vh MP%#lHںt1ATb]Ƌsuә54Z* 6wuF,!‹6"!wiHSΈx#3ԝdY#k\:)il1ﱅmIcCKͭehb\cy۾q>f놵%W䅁Ј( Ŀ~< jφE2H 'EAC)pEt2KQN m? 2k@mK0#<:)yMh? X DE*kȑ]R$[4lFI4\ai7KCt̛J@8Dq޶1̓C_"S Nc6q5Y Re}b H[ZшC@`W s ЁED IlY#v\`+Pd3ԯ4 E8uͪ%~cI L--vHH#VOїE3lt^3-A6bd2.! hE@jVR$ht;=*Zz;`uz~$}ozKse"Jє$؁rKI$3F&OLr%@ JQ`3v_O~= =3噂wpDb5yS芊8LÛpyÈMOYFkK,-xi&0WU#c QHb6%PJ!A%R~uc\QݥOAdWi4]ҼrOxU@/w_dH x4K HJ$|ڔ@7 =H%$q"Ƃ]8kp@!T(UAHlJ'( ec~SRQ( 3D L~ŖYe_YuPIBN{ Q "#" qN`ҕ.)h͕i|Vȓ#pu",c ,]n<쓔vmׄ~QocZ ? #sTHCTKB|C>aD\2;S(|IDF) R$"j6Z֭TFjJPRjP")BW @ "ib- ESDR-$$e< )#ƔMO:YdeMf*T;rZeVbT%Sd3h5U6IWʍ4З[_tRY5R̶iYH *6jLFL6Y4=٪aТ? d<,*N~zT罺|w|޾=dz~PZ=Mݎ;IY>\V{ B?2iPs >(gI `Y/Xy?F6gRcċMo#FiczXpZ)1b1-Qi,QhqHԁJansc I(mO]io;w쓿UY8Fz4d6IG6a$ $p7)377WYjQpXA6vjqiLfBpx Tz=4@Cҽ<OH;צg'+ ;G\AΕ袩IV+~,[wq,Rv=v8qOV/~{Fq= GH}޳=' ]QGè+wi 5;P "B,E2 ÐLhĂ,~G$#0, ?\I '{D}?δpzB0PIGV!Q> 4(d iĜ(DSw7!ƂG.Z"&iQ%xfR0 i~ņmbˊ8[ p5R~ :v|Bl5~/"׼'GE:6)`2$tRd1x8EOv҃UITpkj2`ڢqF<3GdȨ0e2 TVad^S6!+2Eo7SeE>|NtZS;; ;: PJ@?9x[ YC8 OBŇ.|icg-=FAP'˟^mvw14$e /)FRtPOCg0H6#]wgG>7Ĺ)1F2m@4KMňE@#&N(pk~k賤n8B>x{b7 ѼEƦ OO\ 1/`pNLzX2D6X\c+goXwx]vx8Ai,TcJM$2֯CaTrUJ'h0r}P1ݰCn+ Е{4 ۰S6(A JTJRAs%(x~ٽ 5t0ʩ5a(.JQ}B,x8TS,,=ݼѻn\}qݻ oP,8 j؉8taO!`y4hdӛ2v'`%yGrvBWʍN;20!}3I0ldRb&E`N,HHZGqI%$CI d C`>h XMoDkd"|׳P/x "xL>q b=WD5)e-׌$Pڡ/>ھsOQ'S56698s ͠L@8emDB7\B}USd}R#shiq ~g -Pq(4Dq`Ěe  >xbmp `Z,ڽ늹Lqlޱɉ ]$YDE6m!z6*ίZJ%(M $DZ RA3|@NcǏ;,.V/N1}$^c4}tJCz6ڑZR` J$8X2Ij ј"Q|ݾ(k>Moφ/QDRh gd6&\3&2ÕÜǠ쨊w!H'&(%3H$ w?³K^NFB!nkF #+#G#5oAO)3qy q|=d0 F54ǐ{;D8vQK&wk>c@|\kee-_MRm[MXjɷd, l0ݑZmd&2ڽ5*Gw`ԧϼt4pd~i CX :Adbd,K-VMR[1l5ڋipc* t@|[bǂ` '٩ΈC!" ,InXCzZe2* ~ӑ_ raZʤiy1@l"_D=Hrm0aM2w\ ?l= u"`HF; C#-k'C JP.s(2`{5'4R+阎5Zd-f8Dzݟi|RvsδjڪKLi6IbY-9TVĴ-MpoobI ڎjjRJT)B )G?(. #F2$@`NDTk`a[n3XdYhD2"$NzSCGǧs.GHP ĒC$IbҡT65a2XJ#+q cLȱ6w2Wt#ی ;A[Y@ИEoA4xXva'X7[%#Ʊ$Gٓg *?I(I`*GOB]Qee ϳEv+pl$?|Yw+:=/|zxQdN fVbnty]H(vqlǃOqnɃ㻉O#Yׂ)/F$)Ac@xuC\\S DJ!TfN=GZShfۙcF2ZFnN%м$#y~ͤ4yi{s̩-Ws!>vy9=pnM 'j~elԃȣ?A%m18ɩ$I kqkzRy5*&HH]Shd3S{GܫP/[e W 0dDeSN(DDAO`0qC iц&ѭa*9e„ YW䜉zl̥zOŐս*dh@*F G &hHbUf * ~@h2Pbt ocT2.}^D>j:D~*.=:=m)3ۆsaZ^I<+X)8dblaNث2I$%dm,u$:m(rnliVlj*M>uO$Q+ Y)bSѲ:H"2s0-KJjN6 DlM[XW+|*Z(k҃Q,eZUJ*1hVDEEXYlgkP9Xe÷]$g2 61/ߦHGL ޯT[H Ei;QܢMfCv46Ib"P@֍\ᙆihЇ ȏBw!*nSRFm͕:@S4_<;8|- Upˬ7w/G .|-\Gn0Fʂ\ʂ`c*7?tOlsQtѤaS6X]˕-[9i 9/OwQԗ=ۓKrISTf ITrN""y$*m' oӾv<JΦZƆЉp;wTV:KaPGA ;.Ǖ4p04NcCn>pV?5qp}sx_ ab wvBP":V൭J)ԑ#@: ]XUu1A ^ 䇆ԺPD:WxlU~L!C`_NHshpNzCGbAN"<KO1u[:eux;/H-z؊!.Ɇ-;zY\PA_KK*eflY8;8܌^t壓dE:di*H>%Ƣ:9F 7{GUp*a\ l4jkn8l[7* V5 b2WW!ol,%!qߖG]q@*͎1 [KȕΡGRm\bpoc]5P$2~%V8Z!b&3V)%Pb,ҐTY 8 EʅCs؜PPʦ77:r.' fM(3AJ8ˇjޚ X[P1j)6f ]#UY͙AN a$ fp{RJ\o^{#fa*@lqQ-SD5 ~zh6Gox,w/y)BE&HH>$ FG|dt0Va%ٲ]RrLS }v ^"bM[lN01`v#F&6b!'vp8|{ 탑TܮIlp2KPu 2V! bJ9(lLu(- Wb`J Sbl"HiP*YFHۤ4<`uPL(5b d2%2aT;+MJPU*ISԭsi\<\Lx]f7Hi dn74Y$079a(&Hwc$Ҥkd\lj'PtȾ8\%L\;rP4& P¤C#ܛjwޅ%> QWD,H!H$ (2"4 '.⊝ StCL!!JPК4Vcm*vG3n:bHP,*! &POtZFIҩF!hM@{A"$:@$$y; I2LnN:eXCf|XEà&[I&.a҈/3G,Ҡ$|ħ._.zqjU0,C8MwGH a*N 2*2d:W{O=G59Dn#F/~1$ɿ߽I%n*%p^ס^j)$&@%S$)  QW2TdQ7[(r 1$h4Q^m\|tTXnKvBCH:SbbѰ&/90 y8 H1"\ R.DRv31IAl֪I1rPQ2p }ҧ\ƿ 0? j ŏOcK$C3 ol|yAv2vU?T) %B`[P*{  *{Us|/_qz)˨z}>)J+~DU),dA;хIBgׇ:UHUGoB w|Pvz ʇ$FPYB&#ᅷE*ɀYnEx|0Z~'$U@CΕ1ϕCQi *ncFJ 䜒xVqӔAOv> 4N,XbxB\ݧ6MLJMncdwОBȃ15tn%9!J iJV$B!:s3 cAp `ĔRMv?W̄5٤"S x7!)HdgBMF8!Whr*{"CGXbԞzS8 ̛#4DRmj6755 8LS?0~oS뒪z PdA:v#Ds׾Ok)'`&86[B3JUR`Loj H+Hop@xC^&ӤhȢ:H}f='Y9NOv1U|h9zϳ3uE '㼒G]Bg[=[d5bv[IMQ{ R)jSHk ! pdݰcY>7ƬmF6CK#iMJRe-#w<҆<,y:'^4pq@ zN?pH~aN.`ynGLktt@FR&De$?v흿Xaa$ $=r(AȢB.#`j,zogCIBZOy_ߚEtoxi](@Hx8A>x:$9Ҫ(șq(dmXxHJT I qU}gLJˎQdh`"W ^./HSg?% S:`c"dеcY V&߭7Ifmܟ^/9U 1\1)J4A1uEU0Nin]ۖ9l,YI<LX9w#Hwܩo#N5h+MHfIC{N r0ֵbnB9rIS!d"DyWh=NNT1Q*_ݩCjFix1+QɹR*OʶB!8Ȏɼ5,(9"-7ǺaGj{"aآFV AbRDn aɄM ak65 6ISm)\-jҺYI+ RZa&-#O*i1Q[ e⍡Jd\T([8c{xπvqA.!\[Y1@mrS Ç\'?`TqzOx]tTґZuM| $PiE~}(|aT(gPw9VcM ߆wi1~xѥt/n"| "ΊJE_DqH3uHC 6ն ~8<%d((r"P$|gjhdzV܁ZaTrB'͇ɨwC|pH0: W>JS:TjiJS ,׏T辆P`U 3Ud,>;!жyf4 C202+PpVCt AeafIyΦFa}G4j(juRVZFHc*r--?yaa9G{*EE#>'oO+ҟI6=blF朇{jZBx_zTJ"2;+,n9ԚWzI#R0v3J8{GSjnɑwҾQVM׭F#B(glDtq\rt[ H:?2d}j QP[JҒ:ö 7>bfN)µzYC> %*E'|w bMp0-QJ]>Xw;h<K'6dC)mobq)ΣK!l]7uٲDwTXN}vZC1z" ,cS3A mu36e0JfH4hYM1I6bI#cdDډbb!i3R[dȳ(H"@ƴSkɋIS6%0JeGB 2(AЏB{pC4#¾=gh NJz|zg$tJ}3)܇?I7kzٷ1:G8$RIĒ*}@|8A3Rt@zy̡H"d9*@v1Q+ZeUSҋEV،!Z>rvSٴhU&`4B2 X+MM%k+RnfO7)i& TmrjK9֊a0ˋ7z“=͗l`P):ҁ5ơ;.)㲱w'+lɺIS/j6L/t HrXh2:쏇o TW& z,$!5/(R)6!5PmN!F; }N#뜅4 zCkd'ziN؞ɂDThCIms8v) @4 C5DUs AocGU(* "@! *Q(S=DI~/PWTA)`Y-߲ͯhpuꇋ]#9xlJSBs<\4@jT,X0YMWuiN\xqQ97c;z^Im'P(ђ#,MȉԱaV2mc+k }| :CnQШLu~~}Gϐ;{ OyGsťˆ]SuϿ;$NtѮ-; 7cL#ΠF>T 䐪L&9>_x$NQ@FY̊KI1 0!w{?@@%aO* F eQ>1Tq-UU.bt-Y"aH:[l-|rO+ KF*3Fuɝ(֕ޞFпc>ň]Z1}Xr=QYCcINC"ˇB>Ic,"0Ǵ30ӀMC$of菣=&[wm6*cGdrı !o\rL*Ʌ=Hj`GuU] Qt88G_2;#5j6<*Ġ!$P4읍ɞ-[֭XIQu0BEQ 3D6d^\)rx7yNp}NDh2"g_hב2:]PLHgeupcd]C5 "bdeh3Z.>*UG@ڔm Yhn$k=mIlfqYEKdV9jf2D /&Q{Le1zOm\2/- SIOf[^O:A `̢""X1d3hϤg'i| {<<2rH HtYY%Y?GH ̇`1=:!Dr;(fjv\ӆ-h+;'+!@m2h,drDHqݢòn!;8Ka=݌X v`g g(~#D-qb;셻&EM dD0xSeyk}&9yHBC;A uT4Z%/l{&_{Lj{~kY⩷T"4xDzẫN/w^5~//9_ZU22 j9Sh!'q=ApSRd( `!/C GhHA@dN9RUJH r9ȎC"' }g(zؖ#, گ9 BD'lWψtzJA) >@N ܫ#L.` ڬ!z5*4H0BI(Ҩ U$H0\Ó =J&iY/qB!L*#M2I$ t $mwk~j $5cTkJ7jjkg# +_, /蕢?L w)jT:ٕZ!&B5] "tCm?p"bED;.`$;e! hhxN!\=:9bE'XLOUp@NV" {~igM}#{ ! bRXd#;då0 r Q]lњ5O![M lpO@҆do uzCH]P:1)MpSGX5Ո-in-jUQ'@qN7ɽ %$3&cmIKJ-d+!%.@8f}@uf. #rEF7Y`٩K+2KYPH|,p#| n^s~`ΓCc>־64%Rd1>SiKLJRcPhpgˏp 31Fej8ςUgdX6/b|ʜ#6hR6#D8Zκw 'mkU֓Ge*:*Q|a) 1~gMû 4s&;lRk<òF2.# V ٔc}?k+t_3_v+*Fn2Q X{HheWxBD!#)LVAIW8@E(1>%zCurOh%:~yr|%Mh1k >GSYC [w ,a/)6]&/\c"9S],sJs  lF9#z^R2xO^t|c%7:2wV i?Rct?+C?q~#w#7YA80U:V\upCkeK6gvoSe^nӣ%jwd-8,IZ=͏ּ𪮃كՕz$_BfCEk3Kр VAB%17_ui"D4'IMAiЮy`8gW$E!B>^E贒:g=fz=/{7' NjRjH3 QMo 7YD\+1/`g ,t̐T6 pC C"Qvhic<*E 8z({²p‰u9 UxYl-_<FV!]k;oz]z!2Nn~zK,z]oބpA+Vl%Ԗ(9-.*e'6Ӻq8Ϣ>۸5W \F589]Pˬ)hz媭;%D EosWon_Vw>a[~ҧB8ɢX,;]hBʵa[:| P[h2 3EFƼy. DDYf"BKZS<>gjLL8:͚݆VvԜh15-}8S~[Y'Wn[vb'7s-d>7tWÞ7ue7Nts3Ji֬꾗:}جpdϻwW~}hKr-#u Jjz몤c{bf&v $EL u֝*7dLBLOj fbOjUF'Y$'#499!b#q;Pʹ'#;Mcklv^G-ֲRF30EƖ1L7Mư܋Hvx ipXI"?]^}w:#ҕ}k~yiy(ID?g{Y'e}y=/ >21&(EuXۨ۴]ɡB6fMHa~zPR YŃu Ec F{w-U)i$VVcȐjKCmڪC `ZiD2iE襮1¬tn`#IU.-oIIop'&Vk} $15ʨʪjA-"BR-"DJVh o&5nax׷ʾ\4lfU *ws~oޏL2H~4T#P$<{8fe,*!9h"Y@CBgw=ɋ82y8,HoNʠUګ) Tȓ98ך"9q&6hׯ?Bz h?MȌ<,ބ'=&,@d2-"*w}ڍFnojk&ȺI `j 8F{z򎉄 pS0?s! !B0$\e>~zpo$2h-x!Dp% $}ġ"l@ܑ!!=zHkdd4#V;a3C-1 ;2BOHvR(Z8(Äp ;)YdFMs٭6Ӻ",uĐ" sX5;8-98и')I﫮݉ں#I{Csdo2D{$Hi%M_MbF@yɒԊC:DԀEӢ;sz2;}T}XĜ5K#P}f8!#@HƃcQaMZH{$?uDG>-lVh A{>2`GG'u  75P0Kr(d$(ʼnh]2$sW섾8h9Q; UdD4%t Z &cq zUw۵!ol@ 5MDLgd$[`rj8ZԔPWmouyl[/JNSA<`70eaPqjC&G%TN I$H rD G"œS*Jy0H^޳j洒q 1-Z= >G !@PaE>dQA@G@> /`I˕K"RS12J"f h/oMMUǁp@?WڧqO WP.Ay*?kW/w5/dR#FΈOok$2w~2AA4|}HDHyZ8쟨654FH@8F?|˃iJr*}Qd0 BٗJh3l՚mv91c.Y1R(5%CAd`pu EUtCV:îM 'ab-]ԅ-gp [*[j9pX͙kAo7<`zEXLжBs1/>$)qW)g TDIdD#/11Fth8URHVBa8یV.i,"5V51%Z(m&Inc4+"%Q4YGq4hT27֕Q C P5rzjfkq"ƈ\\mF%J2sed0 p66ɱ%Jjي m!5a6FO+ vHšڸXh6)#}bi25@rUaM!v<%&F("\ݢNO.Agli`^MfB= }{濟cNPw(fd!諼AB?y$Va'}1Ttd;b;:Yh?I9$HA{c#,?+9s0 >R ^] A8.dȇehz1e5rCC= 3*$u(R:l3/D:ٗ_^nAKH::0^ ј)݋vQ= "6rlA;|pPpJ2 SOPJKWXQf[۲STӔYV}o(\82ą4aNƴ6^LL2N`\#z7f" O<(7! |XPM'`s6M婛Cz_76Z )vy(`N_3p(08Is}SG dO[uK;/JK-b2o뷚fRĚI S2 9Լ ;&bȻɅ=nW˷%993D;{JRR$L/Ӓ鍨7*S;Hmg`@L>9N284P;6+"BUd@Bh8hݙ&,ua/k)y$SϞ ^:}nc6Eyw1YvYU95QcI|j]ikӄ6qƴUQUl?ADtY5ݝ4B\ 9W.!;+Nssb3Z­o("@iw];B$|_])wdkzuroˠ{E9zZ{\+p6!=!u޴f :{_?@/Ru2fTd XLR իi g*" ύ'BEGLX; ?5C$T@qSc 䘥8YI<)F1F@m*m-쓂(fj1jfab }7ڡgt}oDp*+6ci ))MsuIݾuOqYqщza8gyڱǎ|k]ig6M^&=hS8l<\XNney meָ٣M뉕5g;Qta0(XF`Ah`WE=3S.1tļRlgfϛ)Dn]N#oOygYr=F;r |{ qs4k:ѡ/m0!ǭQ\nE=QOo^trcogϤhXcL靓8nÖ~93U}x e/GFZ2KɧF#X-!F GE˫`tvn \r ĸ䡬t`J.{{a="FBQo6{aֹ[/i_jYgb]RR#gYZ&ՆTXhEA,``&"$ɐ9pTxb7nGiKE.:Mi.X.y|5;;訦hctF* NCAcEPnpu{e*r$򲸲B<2(( JeS|ˢQ5%IKYdQD!Ut3$NE2cX]oEg416CnN^Ɍ^O"p:}hO^= 1,7to4`ٌMl^z\7AV΋㍈¢sťbirrCNDgv;>5$e@Gr5cOk_5+Ph (v0f湋g!̴B1pfnTUf1B2dE(ņK5:q-&>}yPz'$~`mpZx[|6\ᥡ:s:r[8Q B^;xaqJqx%n˾S\Gz,+Ѣb/710.ú5:|T+Vjdռd" +{[IC&KkCVĨ\cdg и3!xc-s4^bb(H:7 RRD9 pt%H$4Q/}U;%֠kY:4-+k\> RTDZ醚Y+Wvc )iy99O&HjCS1̦lp- 1w"9!-IEV,"فDHЁAQyV*h)UIgb։QT6@E aMTETVX~3hE\+ǙٚIH*>}k=Uu> ]\ q*'+gS38u1Z]fO8E]AMyެK|P`U|,[5W-|&фnle7+61qyMmɩHad*[(ǩTj$9ek}8z;,YbqdCѣBƘSxiO'2Yq^^9<:wpJlw3uGsb9]z ,jY& ZbD阵d;Qtԑ|Q5t(dpQAGn) ާ<UIPi T$AqtOY;* mp {5!h$ 'dttP")iJuEx4@r>*MU.5Tsh7TUSN#u(oidDJWvp~:Dc%B1ds 87𐈶mUC4Xw8&d*Ꭽh2I9G|MעaЀ BerJ*P)ޠ!@OR .%ёTB|ʢ04wEh֎R-$/V KE:;\ڗ k܄wÅ^ˏO!8h áךx$du~~fl6v8{35Tc+3E3e$MXLQ%i$ġ!m!_]K!36Cye?ݥ@9Rq Yp'2hcoڍ߾9L[v E/k3jӚ_ 8"iGYuX~WȐ?Eèh("w}Ŏ$;H3~DL'hт@!g`?S~FB&4tȧ:)e1gnCo-)p`Dh=_T[8!GhZ/V0>P=5GUc׶hF)J$v;ߣ\Dzb:GG0@ԟ}}QC_j^ `-믨Ԇ c5L1Rg&&7l3q&J`845JQnµf.u2>,@:" U+S$*1Mi$Ia 1Z&KFJb aMaY+H`6Sh%a-,[#%l i&LFHM,fF6VkeJT"jصiQe 4 k߀'|ueѠ#4h5*x/gZIs'6bm{@O䨞H"|CG!qj%*Jd)X[lnMΌ1\ :1h(DR\b ހt/)M*?hCP#I)AlMT"R"R(! PTJDЃP2F?Ss@b2PA%9) uL bA|R\DԀ Jy{}h [A8m/( Bn !_9Hd4~1>FtW` }g\]řA@pXEN<@@+)B2QN5J{+8֣XVyns}T6%Z\O;#Mu>f,Cئ1cɾ''fHdwX$}=;^ٹGq}=yg%Cpku6MMA{Syz=lyv<%CV#,)ꂘa $F"WJ%m j 1Z32R P`!p PԎ K 22PÝ%2%Ž`FUp] + XA2ل$eɐ&))Ԋ%FjJ+%a&o^%_;w2#\" enY2ѷڪm˝|u4I XGSeM,@.{`*-F_"ntV5stcaHiM4K JQ#4wrܵɵ'%iMI )fMTĊ[U^Y]0I%лԁ[lەP|[\ukJ06D}0;?=q(p{!ö˺ɤg:I @lD'WacDsPP`N˷].cCO)0bCy–%1 p[bC9LsljWm!L|l5`ia-a4'y ټP뚐q9 &Jh+9ƓV}xhWP @h)J3_nZԐRh76w]jų1kFصJd $1_'T?'?&S{[HHHS(ʁJmAɄD**8t=~LԧhIY &c#1TH)lH PN1mJ@{ziF$~U diQ퐙 ʙegt*X̫t3Pl+w]2`ƚ Bi&\ ,^I6P6 [Dd ˧{w=Ec.kdӖ4$_yAa쉴c  \Bx>G:DNrG[E5Yj*&h68C6rM((Xq?9fXw !Ykn8Å{%?"I=iQHш)'p:P5ƲX2GGCKC4K2J2fgŸ!;z:;,Zt$Bd[$&TNH>x| 2P !%@~J_~!~"+f@M&Eh{H(i^H{73 ~:vb.+Q,)) &KH}?\T|IS~$ Omn%qA17A~i/pax_##X&0M&!łv?38O|K}41];+4dDl1F "h+MT 1ŒE0Yl&]s\j.j] ULF"8cDɭ&]CmA]Fۜv7'BJ1fJPB %@0B K HJ EP_"d g}6Ħ1&Ve͜K HMC@z)PEKy>3I4f.9Idhwa#c!Anq1?E'5X6g*vJWrK{BU❫(6iGqm&EGaBWE5J~P(Q4Mryqؼ೒?ҽ}\tis18/G'  wB`BY[ZhQ jE# JڣZ*AWgq(a$ @^䜗:b©﬒9u[mV[=N&ݸ*ftHc܇xR5ZQؑ%ve5"b0)΁NqJXE  b.P~x= r' t+xZ }ygd'd~-6|sAdC5,4jlԖd 2JPKUBv14֢ #:0J`?QKZX؏]U#?i J($UGS@'=$Bef!M要Q|!Q U)PP(E} ;hxA|8iGGMq?JD'; /EhUœG! \1lHPbH'0 K{s:'l@>ΣE;_'{Ei; vcj.~sT$$r.X] v? *H!bDy>1!~ i)'@d]: [C꽨GGH[0:zYE= 0?چ;lB/b8At)0(ڒ Kh;(C,@c90`]vhxȜؒp/z(VrUn{:kbJ I(ʀsQf17*F#9R2 =|#TVzGRT,36.N1V8i| )(ƧODTC,eodr+V8Ԏ@DvA@a΂9k\Յf")5҈?Wq6f8ќgt(663G x:CѡN9+Zj:f%bMᷱњAP˶ɃYk:R5kJÊ`s@n(HptFmt욽[3fC#A\oח\CCgqqLt4tu=\I9㱒`Ѐ9hT RGu2D-Rb쑶ֹ5{v;v=v{]_ s|>nҦ>=;}O/k^v[cϡks}o;ԪF¾š:vZeO7f=Ƃ7x۟O}VM0FX tU={a+9gMO}ܾD M2^#}xywiMU@oS{mb}4ʀ E$+wiOYw!l5wm3]qs9/{+#@N)-e"9۵zjYo{{u޼}{ˁҽ4 )nr 8zz ){d 7}>(7=9Q@ %60 Jvwa@BCw/ ={U(X JARE@*@TM8r('uYyg{7+<ݢ_}vQIi}" uz`z Ϸ;7\D kڨ:hGz Ҍ2׻׋oq׾g|R"J( Uعno@U(}{}k/\ϫjm*Ý>n/@8anL(M/>fL`h+]xG]w{}>|}c ^+}>MQOoO}Rii>)gz%羾}>=T>קmΛ>[.[C޾wGFJ{j6|g}u8W;Y]zz;/땲ױ=_K0w]w[f۰_7W{y}|{N;w}۾^||>{=GwW}nXGvrݜ[}wO|h}6ĭI٭u{f+h{I{owctSꌩ noZl7=ܽm^m5cvkQV룭W`E]KFv ;wjW{wǪ2#jEڽ8Ѷ֢Vv{Ԑ__v}O|^ڀ;2XYav훧w)z@ )@tu8{zo{>HN6Szd_>(>T+%[7MtNRwo@{ϤwlsvVq6mVe0wuuE.ڹZuumTu}w3q RMՀŕHe&_ot-kìbwݝ=) s{zݹ @l^$wI'_e=w(*ey4{5u4ݪ^lgO:aUóۻE릇ɽք< A;_vw]]K];*gi=۽{ܽs3=gVl-[;Y}5Ks3vǽ痾}n͹]2=r}wۀ֮LƮun:oF/; ֫K>ZWkVmȍd+ҩϷ RD*{#wӪZF;gwR/vm_}ycwk^{{>^>{w}ukm >zznz h nK'CxwUuӸQ/9 < zճk=|x=׻)ZJnyz˻{^kAYYCqn{6U||p7vN-UH}=G{b/f֩1햚un:)M h fzlDA)D#BiшʟOOje?Sҧ4LCIhDA4jd <'Mzz&8JCa(]  D@3*a- 4 qޘEč)C8.q<ʼRtJ# B:`bSR(6@'ILb R!L#?ccc GPнc$BS63**p_t?y= \p{C7" X R( BF !&Hf<hIAB "IH Kӂ?Z 4QE5 PąIDIC@C3"!TRСP@! "׶! bfaXmPDH,M(I6#+O<ۚ7YX`+9 mpR)S?qO$)R76 bB!l<"bH %NN~oE`WH& ?>@[3G:e2 IbCfbn*2)HӤ h4׷4I^ 3PCK,u! !&J"Z bJ h" `ALLCBHC# B+`P$i`"(* &D)"Hii() fH;Qv)"%!!hd)J&H+l JL 45L@LD2--#S $UM]T1&ڴT8vBdKBU X K0I0H SIDBCDEPR"DB% AH-+T)L0DLA,*ҡI2J,KCDJPеM!K2D PR3)@R$@PԐU*DHLH R5$ A $ʴ!TС03UM DHUDCP$S MBȴDCD,G)*f`**h@b)& ( $h"Z Y(fj*HX('' ۤ P`{ ?S[H^>pe>bE'#Dwpu!Icr9-cPP2tha\; b" %IIbvJPa<{=8#0ReHjylܕ@晃Ȓ025y4PXOqaHA%)%CTcBq% SBv'%%a"F M`9S̓s')3 J!a$(FXA ą!/)An4Hej}d Oz6YrѿЛy@ X0<_G|| Y?m15<&q&Lp!L2Ͳ?ʓ6󰾔Bۃ!]8q(q*e9 fmنmg%0˕ zeLC.Nsl%D!xleD G3[^~N3cx,udG|]ގtE ۫9|6keIݾpUD h1Ҽפ8xCw=:TG%)áf=blO10Gz%#CwY.^i9P{je*U>i &Csϯv!wD.GO2ޯG5#EH?wzQLu)piAd Ҳ1Y|SB:H]6 iIc8.$G vp\h 9 !fjKP/ JeYa_i&|yKs vJnŸmژfnmY,vޡ`_P]OgޛY6l'BIClzjUQJ*A+WPbԽ8 !ݺX[LǛbPZ,)tdjCuJiJ_Y8uau0ml |dΞrř6q5afr6iD> A.$ Ŋlfހ6TDDpיHbG?Q&[TU˃'gqfl"pd Gjw$Q]j֯#,%kN̎xx$O|*X91Sܯ0 ( CR4O72.=wa<%nDuBg;'*QX"uxnEPJ{Ha9t4N*rS= 6Degr։"e$˷ h*& 4P+Ԉ' BҎ go4 ,%BcJ|̘ n2:h@LrFz!*gz?Ih v\ºwx;ȱA4k@upu/.QZ}_u}_g5۟yrH;UBw~u&Ca镑d1J7]q*ee v'D'/NA'@0j8Ո">}TP; 0b!m֦uA)r451LIeV)8Yz-T'tS9ܾg4N%ro^S¥m|Ozӳ~N'4THkac9kg &Owp>ey=w" z;g iGt|>˘dt c,zo~ vl!}}V=9/b.;ُ@tw^8ξYQ ];UoKO׊3,]zwLVÞ:ɽth963̗[:ˌ<,c/s w4)KII }_냩iC)ϣ{% J珫׻$}]^D0@xsnI=mg*2?NÀ[?ƛ:1DcZێXibe2䰻<(Yᴆhٜé__6M&Gwǵs;e7Ͷ6,e`8 3CW5nO!p5%&K{J)B䪪i8Y?Vs7tu˦fk N&I.\0کɻHMs0AXSL4(lg]`A!Vӹ1Xbb"s!qUi^0X Pa]5ciڎρi5>޺uӷZ3AHJ9aZN9{7ʅ֯dy2㔟^F<dv^:2D١ZC@.IbWM_ ږaզrg)L h5i[kTU9\ m|-̳u샕5بFӒrO 篪E%%}BDANTBTT4DB_j9#MQJO`(lL/ i @ACŶy_}pNSޤ*~kJ J"dOBLxDA'mKuӤ*"'.DCƫ2w'k%d=O֘聻AUܘNLÀe^s+M u}4PIj2;=xU(դD,&Srܢ@^i?NΘE Ov)Ӿ=Ҿ8%*Zd4589ˆd'-ĬWRkl6vۿҜT ()iLhNEA5cw!MS]ػ;/iR8K7 UDRPQADhk%-=&P<EEe :@RIHiN0>QݺM@e(;Q"!B#2O7bT_/\ĝ";@Ơ(U+eJC0MF ^m4XRiZ Ti%ѭm **%b"ITS4DKU"!e5RʬQMeS,bp&";?4#3î5T#y[J CHG)z(rH.uHlr=(10!aJy,/M,Mq͉_Yzdp}egSk&JzPkP ?nY.GTd|nbW qt^=d_2=>M֘/'BRwp bcMi^ig;'X}Fy9p2D-~C)x%E''tP5)P8t:;J3GAe]x8um?eѮ:,뚔5di9Xp" }(Cd6Ö(x;O+2 Ts_H=?=[T4ΓG>ԧeyGn~o}!A/'4뜜B˗O4|)Dpp7ۋ[8hC =t}들6L:+ig63J%6RW8D][:,,!U0bI'"܍IdAH KTոHlZ% 6 Ptha9:]qS̃N rWLvݟkoV.]s0i0( 49 y6i\ ƵGmh$㕾+۞قL$.~ .{iJM*.}<^hsʞni9|oit: t5D[Vl7ϞQNz BJf 0}C + I32b1Qt֊{r6㽟Gv%:R%eO{ɪ޲189b<<@<8]_ 0Yd'lgMwf3hXa]h׵uH~S=MĠ󔒦a}+{rq|,m[ޚx|[[$_?/C.^"lxE#ϋ0|V0@E AICFyy\\^Ӗ\{5|1֣o(X(M_w+zea$ysy[V󤢶RIģ q7Gc*Un1i{}+'55i'RkC^m[fWݽIp2tG^uk+ET 8;6ʈ4Â)=(&FlNO3%q)䐠"Q&9&: Y};L>p #$%CD%LH0* yo͉}a R)ҍS!ا}XĺSTTAcEcSG>'cCU6N$S{X2x HGE>w 60Jٻ;?&EƋ2M:m\y4r2j 1ZsuvQ}K1> Q8B{x&*h!YYaxvz_(Ef](")Sª^ ͈|Epˣ(Nz1~`Lp[a&V)*P4J\s"Kcw| :SZj7 fFs9Y:QH^><;E]B&oʛfPٲ]w8H<G޾`MrS=m:Fᢃ>?aG~ >l/~m[B Nw{UQ/*%,2M6RWP N]%΋]\7X`NX{1Ԅ触[-M0}v~jًʦW*&&tq%~)f26؏fń1'1zθs(8`{ +C 6l}z@c} "0$%Kߖ\nHH2 21SaD$g[D\04 VU|k{{Krx T3tI!,)ǵ¬09b@yiHo+~{:eўrPǬ҈}Ռ>LfI*g )ZZE<QuP5L.j\%$ Cykg',Z楥(ՠQK0B_ ֡I7t8fJ*KaPT|+'02 !YDjFc׍WZY-9&ox=#:qON  A<1<0H"ǶP&|=G%SxQ%zV71%+Ǎlxb2uw|xxGԥI z}r$R+ 4U ؂;/ R=eml:9(8!l:IE3"8Õ+ޏf mhLQ2S#}E:1O9ېlӊq|4?&O@ɠ"&b c[KQrRؗj( Ƃ *SDD1 V4&qo/RDNMmUUSZ~3̘ſ>CVP=Y֣m,z'%1TE 12Y1gЭOMxT[٢CImu7OV bJKR(켝LGZbAUM1>D + {rF*kQ8TࡿҧCR`4juK bg!rŶ>9_5u-/,8 Ng)Ȼ\.JSsq8-NuB |]h&Yʫ:w'%5EG,m#ݐ*&jq9;s%CSë URQ "^ۙmA0f CJ,",Db%-&Acm*)-BPQJZ im"lUMJ\jR!HcRR 3:ٓ!I*=VRQH({j)_0zdwt㢊x5#JQK,TEE{e=`wl`, -ZZ pj2gqw]p) gLSb)Øx`62J+5ԥ u [ќ,*j*3̩5۝xm,;W>N}3; HuRM+\)?\\vD5|e:jIoM^߅&JcT|')&_"!2JTx 3:~#BF9NM7vF&%"Q(~*sMORD)0D!JPDxy,,UΨTxq1>14%^%uu-x#P11vVZDfgǨ{m5S/۷o4(iŽ>͈Щ6k*) !v]sfbKwlѪHg:}FU o)N\U(.ܝ˖$R\\#vC L~*-L `p.~!G!'p%厩Y-"^rN>ko_o={J[_p`UCCOĐBxd eқ `0-X k|Gm97-y,OkOH$M!Tc}XuO&PX4/O!)?TGD2䏭%a*XSpAstc䕑C;X.3A~f۵ph">ՠ3!'#Z5v=(Zͨ#^ݚN*/W!KMut ?V˭p'B AΕl|p?#)]U.?Z!eb*K4&GgWf8K.8 5METUQRjJs[_6TjB3yRIRO`PbZ}]y8$>4ИHd|pƠNIIJmHؙ2VA~Au=Yu$Tq=rw%!H0fMwqf`6&c]p݅|V}sjЙP"SCQteHe!(:#Vcy^[ޝ_ߪ AaMbqHCiOwTD)@b + (cbFZ -HR0Mc{ٖ-!‘̳Ŗ& rRt5M̔JkJ7~ '%708e' PyLB&i#@7+C:1A2փ 'rҮ] }\(?49'^|y(]Bv|m,@xX.Cɲ) F8rI@!!CDc9o{#cO'\i:;o/^1+il3 hS%h[@>0Bj0Jd~+zY6KFAI[es٤0tgH~?o[ S ٮ~΋1 *(o:A`emނ 6thᰐԘ#QAbi 'sA QQA$I =YYO5>7BOKd͐ YJCNE$TțU\< zAOǃ!LD%D*T rPga BD;Djq @eh&jv C"` X?֜$DqLZ?(eODd @"b쬲AQ|qq7/ 0%EEMƂ,EU0F,IȐ  4ӿH~{:,P%3m=muLxH8cHoHihSԞJi&Ľ']/2j$P xJm(y=&CTGa b#lT󽂔(&ͪh(4i޸5D#S|Ɓ*P.1N4`|#Y5BTHkG̙:HRkf*!=4:^i"O`Ťն(" Pb(@(JVӍ4ˋt%. e !Bh&yF/4,G&TMLAI@BR IE-DK@DITELDLMO֢}xrB>L vB?, SDcs=^h y&C4%IAt%""J!AA!'rD@ZuP0@P E1(it_ZVij(fH *!(fj% "J *(j)ZB`N%5@Ldž1IT!DD0C " 3AJ!¥33u1! 턡XY"Z*$ R ))H )zl0$KK  1TI@Ҵ*T/ vvCt=e* n5(CF rNV &3IQ'9LDEQ󞢸5/†":48~#?\RW\C T&IwyHBWo8sٽF=a77?^. $ {9@v& x™s3G 1zKy%6,I/󈠿|SsL>%@" 41 2|#]2uLtB/amȴo*4}{bHLc4*›13?C@ OMp7܃C u;x a_>7oBfaE QQw8~JyCRޔgD9og2؎r*$GfD`'&;߼0f7BUKSLq=]XS l9"E3p_N" P˟:Lu>&T2dU iT r[PnɬüÙ #٪8U˴MObmLC scqy9tf`ʬcHRF&AkwԜx}4>2yPG".SLVeXYF"9,#imțD*Q)NB~.s UQVho2 !!6YKKi4 (a\cݾܼ? ΀Ͽ{0ǟ>]I7DOI- 8=N7koOXInqC|K{Lf5<~-W^ U8|URg ܽKE5 >Wp)^Gt225)a+y)5kzoRIWZ*0*W\Zɓyȸ6S^m'y54ixq/ FQP4 bg.h c7UZ4$JȬmCf/vd`wQTqֺr% ҪJJ[h1%'&4&ӳ1xq߆$Vm q6<<ra)QwSi7wxvĘI p0y 1dC[{.0 46ki&fp[c+WaoXvxo!Ha6N U4`I?bͣ;w߷NuV{3揚חhzny0wl:sl bBh-h#]%;4p3mj3V2NoL烳V9l]:nNLɇacN9_q`љ7іV9\j2mlv!ӻpքYtصwE8Y`.}5#GH_wUB/{^-~Iy2nhDʸ#_p`ކ5?#8ꕗ3Qs4a.SU#$ld֣VM F% pk=С EF%6x5ɢ :/!B( ˔D^LJ锟Ϧ菫:(Y= Q9U,6Lq.UȪSmR5ucaM`Kp+T-Qg>\Klۻ}om4U'*pQ64EAp= d0rEأ4<74UpF('.[8u\ҪWW7<-)H0j:NS!DU\89%ө\x1m%p۽ =&)Q;60󷛾U+vsX)qdDQ4:$!37o×ۜ;!7횡Ltz>r9GwUfd[=x-*Z&ѣZiZ5$D#ҊJ2P@KJO$,Xavw tumMk,#m(!َ!1 DBt ǠA%,(_~>o=nZ-ϪWFaWhJ?:!=SHxDž9/8wS;=n]@FxCƆ#DmzS81SFL ƶ qL`"mC`1t3?win4)xxNтʰqA $Lz^<_ UNPPJGHw-,FO7$ ?X(Ϸ!݉=T|] 4Kbd? i3Hhd>xSFoM8=I$^線teDÏt|Q' BploӧcO'}%QGmd@Lp7<C|!zԝ2qHfPs v0{ollG~w{>(TQ<2;cazˏ>\]u]u]u]u]u]y7s8%%Ǐ;m׽{ǎy[~rCzvӦr&s<vݻ CWKFwݑ2go3bFAzxZmysq# 357f0cf6cf= n+41SiT: ?p݇Lᙵ8  A|9o;tIM{x 5ݡ9q\iGotH+s$~ A 4N4M51   n4$8c1JX-*ܬDL9, H69&&ɰ5n!R`zpQ6ËPj&6/szgKAB˓5tDC ݶ]Vrj_%C'!FUedBEԱp ˎ"jr*03[^~k<7\ <ޗYrwsEGa&\9D\X,%v Nh8\ S!ᾐ$@T̞ 5{ú|kRneLҥ7\aH%ҝ7K=ptJIz%-ț4 $0 ewxeST$ bi@!F3FI)DDDDK)O' 1@2g Bm%Da~ 2?#b+:>k vBie'9SM"IByNX1a 1]%ЩI?<$A/ OUltSL=cAJ|3g:CN 6^Bh/b1?tۏ /:C`IᘆeHGh("6k;iG{k<쵽j 6Q Plkǡ4TayRABi(*fϯbGR0zVv"ݫ^PMN@!TpiɔN0?P򍢉'wIН$~2# ٭5cdj+5L+8nsݼ?DE(xgIyTIUUVڨt*$CQYZ"l[  A| )Jv78Na>`l/1̘ˮhNvɵ=2B$vX$̘Ė}+f=Nq qL|S's3A?myKH(43 uyt6&.rؤU'0z_R^sãbc-|!MlPQF5kJJl7q`nz8b4GbLGmNu1y3A" Ɍ3$^A9 lJ̮2IUɞG<ܩns˟äNw`PHaOM_r{,{ay+H/b$M2o.d"hGB鹚Cbņ-ZPD~~8PosC[խ6Pk t^&$ &߻ϦL8ϙR6vLx4.zGozvW9i#P1|-:D&3wI;ǣ_W܃g_ܔc?xa` Ykf[|GA=Dt@g6Ty=1a=N?lz4rPm `|6 u\F˜SNrȢ9<f2usB6T71z[UOYg\adoǪTD#}3w;`{hmKLN4%v4z)tQ _Q9, շg-Ӎ0%8! ^{aH)e1^yʩl?^[}j@d$)Oͻ/8rLU*`׌mMQě|=;, {'#u߱`ttf jO)\ iQ0;CvNB˃&ڝ60䙌%7&ΡJn|m=7mR=G_xsғGTz¼OJ`6lij j\O>Μ07?5M^LZ Jtok t=PI KGid?z̈ S|TmVb#,}YY 0&Lsf_xawxR|a$Z0P}hd?t/l\ɽi#9ɓ PȻ?l\_VkpG0–5TCV5+h 7`tKfɇ>A9>C,IFLKɌd2b1& ~FC~{-DKj1n!*d|Iκ?711M6_CJ3XIyɘb 42wIsY `Sx3$^<#9Yņ.0@ p~);E}1g0uLa<#z9è2j& n*G&CV70^}NpQ/0q8dfxh֗llmM<<9 Dd:goې U 0՘NKe&>OF[Ș%[n}Ä\5rUojQ_\I6eC/pN$K[(`;/;ژDz/: h-v2E=rkrT$JqTTLULADЬPSAD4E"OȀUe]秨Wq_h'0r0*6 3bզ2p*d"hkA 4— @}V& Q~" %b9n[IuvvHqI#E0R~\1"ܽgoB8|wL7ryf.i:2EPϲqNoA (50K4 a Y@a̒tP\'RwouMWǓG\xWS˼\nK:\O ~3 )6э"! @?Ig!ay|=A;EINxrX_'viԌKO2NXc~%T$X^WAր$;> <S_l=vkUQ=_v36pKܲ !! uyr w=&bl~%_Ip.E-fKS,?j|^yNN;|zx-axO1ŵ8q~NF͗aĦ8H!p>ĸc^׻,}`lE:kgi{cm^;[*wa]LÕ~xFԃKDUqWd$tg<Ô+$ԙ3^ʚ((v}%)JR;CFO*:%*ĊEHP$1=J]T֪ 6:IM$@78c#ovDmz7_6L!$g~nxtT7(& 6&(`Ěn˞؉E֦j#D Tl ibUQOƐ{E("3'vj Xi5ĘUf((A5Mf:)L A YbCP~{zxXm_*9AY'dVe `;)-QJ OTL6GpDx6CD^­cO^zj h9/_F(0aNjqoM"뭋Hy_Fυ\. v1jĭvt;8tfIC3<;[xHSQ<:c$FLuOaJnnLw?\{=*RDGġ@ 7L0p&9l3mݝh[ zo#S{_]6z52OƴVg>F)^ߎ;gv:{͊)_SK6[6nÿ$owR%K 桕U q%7H1-Dd.mZr ZΦU=S0endjԾGܺ40JNϏ/8\F73lMUWs:_KIthT=IV')G>!MRwX˻9BL%U8|>|3Z7r,7R>Fϥuϋ\%a{՞T]`n5;ޭeхiHKusWpy4L\)rwE%(ȥ2IBFWj㵶O|4WpzM4Ywor2ZR0](?M Ie\_ڙ ovG=$ C_6ǒ;P<a~5aqn?ŞRaEO(aC2mY ~NnS1 ~D|d;u^R .qOVZ૏ιZ?j}p|U/ :(me!Y-ԡxDs?5w҉~Z$66,l^R MC -rCAϫ9?|iw}G̮=ݵ'X7gYPB9 ~߅5vIt<ݰ3y"t*gK/69=u˿rn9?d^{OušJVyu0a}P,$F48+ eQͷ}qƻbNtᘺ6}׋ 8XuC~{oX;?/wIS >p* !* ]ʯi;ޛIncS= (H7Ԅdd1F}!ݏ?*-챊ݫ2˲fX`ߌ7D3 &L[jڴz](c‘F,fzNxbr>|? JZ=2&JI}wn sZ(FƕT(l/34CV2Țcn9<*mRHhP_rib,MҬHxy*RZʵL*0(]#ETSRM[)V+tjLT< 1<*d*`Lpm m_Žts8sNf1 Vjctdʼn)i#~Gy92.wX4J!A \I044B'BIKvvB ֝T#_J߂(zL\6욘tcof?!jO@IfC:dxZ-3yPwC*={͆ؓ$BB0&OAJ"ZZR]@A4'8drwױ pkp?P/˹ЩrIw8Gq1;j#9Tg2QS")Ҋ%TȊ`9E)l$rI B7-\pk֠!cUuwbM[UFG X! =?' S~?nlm'%zaW4@^RQM}޿N{r=8u3Δ;=>a͘onpwJR:%gt`c\$Í34F֙dGV6id]8"FÞshu?Y֦<8+OOoI̦܋IzT/B8UŘaVP[eԠoЉ1px,qtguB`l*29S\YoPx5N}O>Pkc*jX]'DhFu\լŵ2Hp0 Dva BCe_J"g=:tA=#ʈzB'ϏcvÇ,RIߖثJ&T *νsV/3\HC (uC,3e𶤦.8KM5ݞ}hض3w$%Dn!*}^RtfJa$Z⿿Rb#p`0=1Zfc%PTQ\vѪ&(>O{b}gG h@z~Η)DZR[LY :Bv9jeA:ar*Ufރ~ƺXCqNtvL0Ǟ7#u|10fy4UɶU1`& в ;gW=K % R[d"ODrìV}D|RLqQpŖ~yd$v߃N>\K>t:9fbhmgHoOv1WN3^˙ BON}>n*֖J.7Kju oH,{")yg)} $6O0MU0Q\n@:o6Eqrv.w]ғ58cZ -nf0wk楺(<ю:ĥ /jCXcLp N&1)>gr좟9d9~}3=O:l"؇5B )-8RwO#vtOD Fhiχ<%]_|k9}V=hJdvqw/ڮu7N^yUЩ(`u>(:J=$[LyahLդ^\1[^!fnD&fԂ Do%ɇ;J %M$XCuɦh# 2r#:um`)ȜGT>⠬;be#)Mۅ (@K?3_gާ۾w>wUUUUZ~Nz~ډq<%9Vz3!+o4Y=ò7OEQ4t,I*9dHN4.Q(:Z'7Vd? $! {yhǞ5e?1Zeְo\ Ӏhd8Y6ޛ逡 nLI'njdcن53;spZ򮸚=G"0+!L P ]&I.ѸTǺ =?0}P|R2nN0Grg3#k l3(Q4׍v_hG# 'gBxGOcGɿP34ݜNabmڛ' dzQ~3I ؘfK.j)*1 4p‘[AimGP~amBY:߸,:wRzo/4IU*:~ؽoׄ 218z|Dnג}IxRP6q7HLMf~~뷧tz{·c|DϯO9:J,:"t(iZZ*dJi!e(8+:|G=FY/~U:Ln8 $={9d_%J)kPfz\Vv>}uZ_)VބJ41N2y3X=GQ9mpzT*p^u+{(h†Swf+جЬfv!:n^˓.MNg=csT3No*g8dWV2Dj68G)u:3)KI88}BL %#3$?W-윳 HdiP[3Ux^VZN=xWF&ڗx4a!77|}߫Jg\>q^NrOƝwM}ezW%82jmSbx;m\ɕ~RavT+ xhO3ʷVό2g$ wl۲ߺMKv6)F9Ws*/™%7`Ĵ}mxG&T2zH=1pƷXd6FG=i\s2N )m(>R(z=W"he!EIљ g$Ϳo>3 mbe[;URM (_ lya =_XUx}ϣA࿛YQ>j\ήW]>'!gQbEQFʌş$RO)ĖW @UB)4+]h4q8=ŭs"bk%KO HS)kϵ~ndx>Yo6ꍢ?9sо9E: Ѯl͊h;?dzq#56:I] LW5p0추@l͗K2EWz޲5f&쒪xfݗ -ɥ<y7}0 aC:2Ss8s.O~'fnpre /78֒$"e{CooOĺ"^z_y< ;ZYqn󮋔G^͜$o%qbE9Hj~37*8b56"sSu<`G1Yt|#㋿ybTpo?qT,M3FaFv 5vH-8/`I/&0ŨxʶErJDG,E眮`%fnF/qnXvF; ǣ)'{O} 1$;oy4aF3h'CDm>o>D G8]:ۻYZ#˻Qwu/qrJû&H14\w:*Lt+"pܗ}903syBfѱvՃľT(Fwop\h3qe.&vqul$n}s L&;ⵜLb2鵲{ziz+EuxV`CF@ͻ;JViem({,(Fꘖ)BCW ٺZ[Nx5ʱ)]Ҳ^|ov:S qfY~jkg#x5Y9{Y°>̈Y;q"vJ[^#ҲH\2T]L%q誐jE,D_'eSWw°̦-ԣ"g5T71®R;5WBdܝcou.yJ__`R4q>$O0!P72p/fm=2K[:}}~MIaGI/rgAaC.-tW=g09#uu(<`Kgѓ<:BhibUѤ _d :oT;=D< ̟>R+ܟI.2 ~<&$g$LAD`v"hL &hy95TT$Okѻ$\?n;̋EBݟc7f ޻A}wS3 4ԷBwCò'hvW74&fdʴeؖ4ۢUMU0^Ljpz]qYaBCSPD;,h4D,T%ݙ1:M},ˆ8"8\eB?`ymW]pv2CnS?A_Ϟ+IQ&֏C@y}&fk|hL讲RGf!}+i)e,م0QlZ8o{1\zʮ{M X*(>ⳕs$]h_V۔wDeAKgԲ~(Lc|PI=xuSjF퉚d &"֍?YZ˷mʵj9)DxEGN]*Qk$3UAU\V^19A; 塄r͠Yvn-iM]>p$?O؋?ڡbDOS *0גyr fw[^%p;Ϳ'~gI$Rb`;p?@.LTCq ffhA)_gּqNٔߣzyux\LWo֊I+2/4$eq9g}YcTQL#! ֯e֤"ɚzv;}}ڢ.|,I#jfMͽSw&pJS۽$XMWBN4yB,뉥u9)N>*N1xI֑(q&n+nJF&ۮ9^UECB :Og"E3C'vkgo8npʜN}}.1MP)Nwԫw,-c"yBfȲƞAoI/I7AdI$I$UUUUUUUUUKꧢ(""Xe>0))MIq1T Y7e?Μ夒I/MI6Q8U8cp05N9fE$J=h澸K`}0^Y1 Ҋ*1$I%3;w[Q5=(rIvoY@vhnL8{kSnю1#Yb;ޒ߿8 x+#4o4v)eH7=X4FM&!"y׌:ooP'Vq5sCM[>iӇަ&+jep~\jSP/F$yD gލD4gk6rY"'<~c[D[=q\8qZ%:<Qq-_QnKr+ÓN"gz"7J}kYwᆯ!SޛC$U-L^7Cdњ4PQU.$=ŝ\wF! :8G^'vPָȡ+d‡HtwP~fHS ;t(4AiV3gĆ^ٝD\AAxUR&=7[*5EJbML'?Y(+BPU*TĕЊ3LNSe8d黢;m(Ksݣr_kQn%uuusDZ4)s9Q{%*N!Zsⷸh~ 0d0T1RtOseHO$;$2U޾X9:Q@ԞS_}`R Qfm#g߻|̈4I7F84H ΪJK.E{|}Ζ<4v(+(1Ù 5@۰:mƒMvm)]5mjϗs0:ݬY-+Za>R| !z~WwTzMⓙlϲuZ٫y 8A:^q7u4r.ﭸ1VhÕsX_"HsrԽG3p2Wd#>DžKChI%!xk{ڪM5ܱ5德p^];23JX[9#@)<Iv_eB8!^0{vjܮ.;K'pJ":y˿^/+A})9Vϑb ziReܔacS=jl.XX/͓vd~cl 1\&I3O Ijzynbq %mJ9pӦxY5 n$ܮ(*vcN $Gt`%%NjVzN;~|9e $1f,ʶ-5!t闓Xy5xIk^czQ78x}Q)%PYv2111D̲)KNnc<){ӫi߇'ξ~uwp9' (_bkfi[v8?A>YACn::tXosC,^Ӝe #yU7S@m|m.x.cT* uDɠRs|ݯ5PPv8Z]+qg1gJ:y(r6πA囿'm_E;S+ >tO'NRc2it(dzd^L81&Ͽy9 gtM .Oᗺ ig͊brF{#Dz,f X]xk8Q wlu-5cC3jA"Yw͂Yϯj 6G yE'aLAy g39$J7+&HQ 0(Gq?J6?rl.Y1 x屴ɐFW =߃Ö-Ikv'x>&S$6V|2vyyr;99R?猵f3}՘Lٺ5 pqSЍw}?ۇ3{PmqYswF 0ӻ2H6w+ZiWvpgTt] 6ߡׯxsuG^ƫN3><<.셊5&0f>*cH#SؔCM'06 iuUP s^FOiIJK*RQ>WrP%֥zr5h MEv&Ӊvc+nD)+|^T픓d􁬁xxNla"D闧v\/6'yD]댻cviC>ĥh~~r:GjS(C^2ιL>鴵xQ!7o]Vk+L+&93EXn:oDŽAzZ^&ca֚EU6+^+ lx9޺( L'i]JkTI@LLy3 NbY#pd߿\񃎟a3~Z={AE=jiT?Sśe>5YPPR:hy~vQ)~w9KGiZ`kI'_k׺p=]nf˶u B:DBb:A[ `i|YV$7 m9=5=x``rE AG†+ (?w^ZGz1 HP N*Je0,1ǔ gR$Q7)7&)O_6[@ƒ@Lq}8_:uήeƮ')ٯ7xئ, L>z$ld喩w^6}lRLuiMUp.ކͳle6aKᣅ/o奨45$-h̭ɫ#&5IsC-c{Ri-]T \5k=[ʔ %|cn>gĞZXtUvPqnK9ayL[4=ep,Ԕ)H0ńaF7itD1-3w*xI^f@u6b{ZcF4T w'wn|ٯG# 4߽s%4[p'\~]RG{ SQ6:٘cbYI-p΢80Э˕1ѻ2uE1m_\og;˦3hp_'bhb$g[1aL)ЇUo 1sٰW8q~n1g,8x$<ݥ ޔ 9wZd )>McʥgxC+ƑBN<(n6޷fldw@^ Pp.!9aiHBN^ K2V]@ =|vta 9Nbi<نa|nS7p(QLI00 "dUIL#_ӗ+X"*&ac\>nG;gMùE܍5K^N5kc~쾟?~#yцC|;I %/Hx`i ErFw Jbb杠s@<fmr~B ]lH<9w$bRv.4;>ց*?TSPORnƇ!i'.G&ZM }NJhDw|Wv@.iE_*BP*>?v,F0DY;&vINlw,޲pxU(\׊ #'HTZQO%;{< Y'Q:KDs-*m}4y[jfou+nxN >J?H3ڻz_Od Gjzi#?*G%9>Lȅ]Zi*N!nHpÉ40%) oMK=:!ndM1{ݶ:O'pϝlvrqlSZu}^yzA74=h$h ]KxȃvՌokFK68r{<1ɩ~s.4*AM$^ EbHjw),;vqUYM!sqӚyYG (<pdTy̦S$ss$e2Ŧ2G%蜓[$f IyR*79|u2s2o~Y(O-.uCiR)CMZOQ:y!gʤt&1 \Nyu-EK?y\"̾V^ g;͜:"EJiYf‰]N(>♥y".EI0!S`{ӡe6awgmQ)$9ǁN\V.UA՛(2t!y¬៟_W |l1z]uSyn"TEz T\iL{ꊘKQǻM˵'2˴OHm;-6>kN_\A 2dԺ[[Y=15zV9]ޔFwk|.םs[ugwmx]]N?Rf76fxV^TAՕ+yyJ׬F1MlfK֘ƵX,t’"Ƶra"kYkc{=y+ipN=t^+o*!SwY[6Wy=5r=^|k ֦E[iL R9`daJTjv3‘E':cʢ=n߇險~KT[=ɐϥsL߲|vEلdk>p^[K*T֗;60Ё#ropa&"Xb2DRqb[t)@ٜ{Ez⽛Ğx90)qiWyŷpDmQcY`m2mۻkdN;owʼs-ϡ2n謍(3LjdU>5{VlP&q3SA= £-6y,o|W劄?S}=,gݽhc'Ʃ䔎(Ƽ;\ulVp{fi^=s2k賿N}wiYz-[ExDlqn kzEUa&o\=K$1vs4xUV<voj`S")R*qtԘMO^v>;9YԙNG}wzZÕs=52Wcl6MS& ,- $L;X{/W5η'zΒb )*S y@/6,IV"m]Gݜ׿,5~r͚E;y=Y(5M+1kk|775Эs;ZTWWt Aح^SxB;밾Nߚ[nvH'ܹ޵ 4KG=\!$}뛾"+ig':hT[8n)k9:)5a+9_M b{jʛ۲I28K1ܚޑkǝTO^T״w8Wh g߶{L|7&FMeČ+uʥlbfMLg>/O`ݛpQ)6ӽVN{IB #8wSe|pO ֹۇ%:_9VNa֛5|I>J:qvЖ熒y06+LG^qHΝ'mZ̒Yy\e=5i폌uz*mf8s^+YPILMY q|p>Oj;I5zMgm&w377*q8k~)Ʈ$w_'/S)}$FH;п1NB,yș"X#Y5sVlܤ9|[M-Cn/ߤZ_rj&׉U+//Up CSAۣV(᫟sۋ+sֲTnp_䙏:ʾ_|j-GqB%5I\1F‡kB|%|nQeEw*]~_s5|N9{S.5FEK!0'1e#Swqɟu:Ϯ;gZKUS|iqrWr 9GJ6.ʜA(E2fTkQyћxzßN9Dl ־+x.^jSNK;[3[zRgRSjgzV>ЧJw׋ޑbeNo06M+W9cʑYYU o9>58JXafӠu.ŜS_=ss`Y,ݥ 2+wAOhyK^Ѥu7fWIVgbhpFRqGd Jb÷y5 ZֿEwv* 8ޠDe)[5wuZ6Dzن7ӑ]2.ޡQY YKFURTrx$k$+췊b2cqbl6ѭƺ>4 8EEZMs7A~wgɾ8&8.;ާLxz~4%Q*癉T(k%gՋ׽u*wL]*ڭB o ޿nqT `|5>Tf)_R)h۾cKkA 4ggy=qӰe/CM  )Ccbl*VnR* B6ZwwWkqcN̟s欥:A!2c#hut$\>I7S:\m[}d޿}y{ Q* d2:o'V%C5i[RT^G[4^++ƫҎ<SuƫRpnK._Ǐb3s7$3JhMe֥>9ܼ/̩:"EZ:clӤ4XN^`-O~ow῍kc=o-v8ΰC3RGGTlU*@@B 1=eIcxMZXu>v;]&Uz<g0kݑbr0Q洦ִwjMnUPWMZ+'9bZIae]zE-՟ZOְSXh=g`m a #6[Pǀc}#38䘲R%oU%[)=5k r4ݞ?_~YZtB;k46io*S1f ?Gz|/ma' BUQ(I-l* UjZkU֫Z&*:G~V YHB sV ;0 "P1 4YF3(HzUWEjUUUTUVڪZjRZ*U[mjb[OdE?#k ~>)(`ur櫙#xRZC5lq%Rd&ЏC {Ss` %B'8T*Ur4 i@ *(hUP_Xf7J%vo՛4 Ѽ>7e`p?\{g&#րЁ#1 P 1D'! ) b $I&&)H!"ǟ7:+KysX#̦e` b ]D ~hlW 11xop~1yWbC20l p{\u)Xw;tZ(JB!)9&Z B$H?5/DAb}_Wl g~кO,g:`Gyy ǻ]}}BK`C$ 3?c|Tm~oW:w;܇nD,Fvʼ墲?i9~5ZKp SOuy*_#F㈨~ Ȑ/Y?(*hVG Q) 't # ԛq;/:4~ЇxPn3N=UFa@A`ĐAHAiM d12&^;a FݾwLz?4$(bbqCL/-ɸv$+D' &%=C}X DsMG];>|;RS&Ffeq0ALT_=둸8^;SlWc 2 >w oVpc!3qZj/f]TBL` 4TJNdLGVAty_y SBXC8y#J'$yzhҏy .)1F ! _&!N*o0A%< ]A?=0(>m)Lΰ;R0W 0/?n%L7UffCOD)];8 ${?He2d $GX\"0DĔPP2{1(9~ 2` :ȃ(Bhq O\*'}0|\k̂C`hEɔ~V۱6N4yjϮ}o0Q 2M4q\݅t#w=cyE^TbUUUUUUUUUUUUZP%<8 TbN`.Xcلd"P$ A |,O`&$M%QՠsX02I2HUD^9ˢOGj_s6-sC]sn0"O!Cz4!?i%b`)}pN _"!*&f ЌT+بtbzq>S xpÌODH?{9%NOأCɑ#]J6@TJ=asę9_kFwJt|S()T+q=d) o"%Tבֿp17A$@@=H `$($f"%$ !eP$k  'KҩBPISE*QNC|NK`' >K-|piɗ&1/%tvwb'{OyvB}$`rgOW;sZ~*nɶxv)c厞̐5ؗŏQB̒d8hz1v:a(O ~$ Mڟ}ƇyO3X *u¤r?z~)"kv{r9E!#{oǤ:6N3),9~|=i?Ǯ~9^O g{+DhHfotuQoJO_<՛ߜ"< uvJ[W;M#~򣚌۷˿V^.8~˩EVޤKzӄ8JOrdޞx G^|41m wa°0C9}3GcuyH[v 7֯XaҾvP#k=$%;Ь4g4jG.m&w7Ӱ9ICuqqPGTwܩɋex0cmKS4I;"-%垏xu>TGSbb:ψ愇"A\=]72_ӔJJ$pWL)RLJ><fZ ҃9MGҐ>1=؏j 9K@M2Lxo>|REai5!`? wZ)}@ *{vs?҆cS#Cub6$3lu^&i6i2A#+>VÖ9a! &;{5b̄;9G$.D1`I5D#p@G2msKa.35 KBҷ9GF")txk"* !C5$AO5>Y}G +#щl⡉&~~<c m|xfaٍr;l{}]^K4х'=fob7m >Gͼ _7 -|v`nsn#LvvpAZ>z0='eLܻa$ !E"w9˻ 5tdZk5fpӻh[ڤe3)桇o=;=HL`b% d؛z^IwwewOWg/._Z.ߏGz/Ҽԟ$&D~e1>0ң:c9WN&Kwp-97A!wU=~nYz/-,e*0j@챣!D&+sy$!̮SҳBCd}8 u!6ÿ#&3 f74:&{k!%i \fuq19 z=9<2ǫ`z )7m˃l( s͘~cC (!OjmlSWiL׻O *7~*uZd 7UUUUUUUUUU\pCXR(B/zc aYO L2{O:nIٚ.&.z>XLZ29L8RhwHxs97y`Irv=Je Ffr4nwg!2pqX2:Ӭ8R|-Xz^pYL$ձ{aN+&|/t{ -y?-APfq33yp);HG=Ļ;ʕn2scQ~G_]`А}fT9A9L0Hx > \h!`wS,CZbg ;S`9݁(b$U] x@dS(6H׮ $[9sg)H7p,dy0b]2PV:` >~Vg#,sXNɸ(dЂiJ{xzpL- eh0Ɔ]Vʉ,3 Ig{D$;Uz- V]7cBMQ< Z( (%M?Ga"DD$FNۃD DP!~%(h mAdy=# D/xQOɁ3|0 SectLDiɲb)dv#tDž2jbmoއOW#~unxW*^ya?_Óc|fŷS+˷@`z+^$CTwRA)s ^~J'n~ߐs*R,Nq)r]c[,vE 0uakXPF9TEٌS0L"`~ U?i$d~fSe. 2B3ҹ6ยU^t)ޢ5f2{ErxY\'xP#$v {nE*Nqn{ΟGJ,!q{("H$-OEfEBiR7"`xfhEcmO;'9p#4D<|SCH'zty&XÜjRt' ~93" $kcAӤ88J^dHm`|tFͣPP{n#:2"C=89 _?W![84g>q}rF bMoZto&. K pO)) MKqZ5ۏ}MiRAMjՄBAۥBӳt)jP I`, 0 31LrdR]}:)yd㣄VyQNˬ:޾˧*F$F1;F)~[2 f>NY Lw յqȿn@1$ !SӣPj)AQbmXMZ iT ZP(b{2ȴtqeL4DĔ@G0$EWr OJ- P@9 )@ ]+ҧOZ)XB*b `"(]*iSQ SB"J B#RweOG "?ٙQbô00u HU?xvAК@T߷)y! ~\hDҩy:Q>zN ~܇T bB h )"D>P@ih)~Ѕj(E}^!}>x!E( A"("Dh)" *#< DpBr**SE,H11*DM(DLT(AR" (Nv/lJ|҂uҜl &A(J`N 4h @!jAB%($@"i"XZT RaRv*q T~Ї߀"$!R(DZ{)o!)ʇ"J$ H8t, #xb!8@00!'0X7Eu90B CDAiL *DA D|@e$$"ePeӜK x])ҢB4Hq :H&$sBFrLJ:B}|7@` ,9$1NƐ;ݏ< %h<D41tiO1>ff6BDTJzCk ØU %G$>pJҡ94F1a)韸'ٮa Oиqwq?}7=ĘxfI~@Ori}|LW h#ڒoG9\6(w ⵍ]/Mʌ/h?Ow" L& @K!|=#HI6_듮'D嘬Wن@G~ڏ_ﮤ\8ϭݒ3jr};|OwpSA0x30va}7eyv`OH C>sr|c>H?/'?nSF?_>_G:oi+$v~\Uw$NA3&T1Lqij猢m/zPYJ_k`;p @\Xsg"ͦ$T^ߘ.7߿PGIP*(?wBy)aW jF8ASe+>\3ޔ)rˬ~ۦ\)_r/^._·ɼ͝7*Ӎ{ԬAOR*HKʱ$,{ Z&N9OL3W]{:~J.>rFb{@HCen,K y|`tl<-~zJ#o0?9cNP; rLFz،:yL<+(i/󪵼Fo>O W&~-C# H,i{]~ڜo<Ѓfތ[aŌ=^}WۆŻu)A8%&wX1xTVze'M^O׷Ϩ'ό.~b_O˄(7;p{VȄwEctd/?&f_W{gznn#᥌0`zI$zw[{{{{vóAO}^ ӷN0xOw7wۆ\3{{{{{w{ywD_᮹kosal|7|(gxMESNu-[{?M7@&Pawk{Hr}z&F^՜0|ASw?Sn`@;66F_[~謮s98pnN'τt!SELD׳S{=$>tBߛ"uI۹~a~XiMNdLu z iq(Hm[Cs7#N&co_t`JG `Mo#`"Sy9F`MOZ#D\ɷLn(h $&8w)>}2~MV4UoQ˩L9WzpUKhLw]ư<9zp`EB^m ࣔƮFoׁ~˓4v`38 11[(6^WjEuhbjصY&.`ď]~{߯=@zJ`^4;_D3 |t}aA n,T;6la#Ãf1*?x; yU Lg@:uz_,W%. 8 C'sb܀_+}C2(/E묈G?OC꽕Ak2L[D763 z CzNb9vwA ;84x0ДQ1N2AZ=$ [6WY49z٨mg)J%曷+!+[ofluom|׼IcY 2/-pc`n[g 1f` 3,&` }8ɝbtT_a:c암i|GC>f`ppWDZGgQ:L >^CRA !wx8L?סOÄb.:Zi8m^R.n}-iO+['?)cQM`9v˿>rEC%g)̂YtrJ]W:Xw%֏YN@TSO4y cntI%_\I-& 6gpm:@btneQ:HHW*G쥵L7O0e 0vncli' LeaLQ >=l̂>~c`d.E.JBfEuϾRsnNNq11#Dw6f:(qC1ݭTv{jW#Žo֍6ne7 jw??ύ:2_K"*bWy0pd'pE;c;sCIc^ 7Zg i9}vACi`IF@zj!oh,S:=X7atCXRIќu9҈q ޯQoGߜirM[D(aOwsp6y 5o6>s3qeoEGc0?vݘO~} e͂Mиw\,%Op~"JF C6c综(4cuwjaw &Y #"_{eE3fh`G.}D;i&/?Oœ$Ffd Ĉ;A&>o"N6&|Qd9ق 8?ۺda?65xś`nf ;,)D0^ۇ+8gtRWǮ&fN :eAP̸6]AB0D)-EQAwy;K2W z윎: T|6IEPKw41N<8$:Zj-;|:0HZ1-jٮ!Ur8P  sBkBʍi@27ØHȏ/ 0@h1M+xn@UQT)‚%ڑ^4;. ]]vG E 1\wLM2HEH D!O8GM!L1:4bL1r[$Ȇe0>k^#=C߶b+{I"M n&`Dͽ^︾lM)ENzv<׋=.$rAL ,ÿ(<49sѿ05ٯ%yo]sJFJZ>Z4j^u뺉+}r6s olf͗wqRs9p[߿ # "dx8o0a`-c|6qߛ$B>ibJZ]Zc&nRd{뺉T9YGxԜC3?G uRXD A XMYβ#&UW:>KDw:NJ03Q):0J^W}t:0B4 b6]=_ӫ/ >| ބWBD*D_δmC&¶]3௛Wߑ)W*UwuҼSkƝS{ ìӦtT v+WA{ihg~HboT^zNe_ur]Β|V_j~/̊8r& ~Tax2c"xRh2~v\Sr|Hrs{Y f4Uu,91qNv{f }9H$y<߇yc!z(_:3 bV">ZWw| `o(fs?=2ZETKq  sQO<^{]\G({>d y9|5HsU2VZoTյ+uu:eM,i],'ja%[ZA3G_g߻>[φ5KJĬX+_w Hmmkw^ u{ ,qf8m[k(φK,,NUS֣'CZDm/ir| o{:}{c[g xi4ku1;ceF⹲2 F̆PGIvfw '#;Yg*AX2&ZΙPakp|;cѐLXSBl2>DA i]Q|/S{(IUNp'r3T)x#goQ902/G3:&%lp#sҌow @C16U܂ܭYqݻw{D^_Fl 3߹ʴד E pQ7 d\!(D^D |gYT!iS:1Ԍnz>Ir: o@`ba 9O>L KM r:1RhOr 1q+ }G#X'$"̠o CyA#&oCQ#0@ *RG_Aۇz,b0ƈℙ;yCPaS`nvW1L5Ό.߳鞶ABx^p@'8X1at:#g(8lDBI2DLl'5|ω}N >Aߏ H'N:gѢ=3U,@-|/+z /8`pKه;M2>xaw (H@_ A}CLlYhc¿|B000H$ % N OAu"fhe*o9082-9Ή,TJ"WaA; Ǘ9Pm-P-KDKB!AG6F ZQJ5d(YDKxDLvF1#'~xoMi42L Lh JZ(JQ-iUhZBVz:zL)Qi.ZqW&jDBĉEx%ېR*EA5/XMݳVrMB q'}î", .8̔ͨ8."zMᙨ:D\a:: F*q9M.qtqhH,E9JPYilD9mJę+ )x]#ʴVkhh^4;n0B(bcbd]tuBًF c`"RD0wDhSkVZzh/#d!#C9+ErRB#~"y4NhJa&ty!HBPÜtdȞ c@~b$g|Bh0A% &)&DzփOG?{gw ?tߘ1qٙȴhOFYro[ .-Ι 0 Jy Nke~J?9Ob/ZsO㏲AO0XƐ @ C_ŹPArr4E\T&Q<<_Zӻ=|ۺ۸mu+$r/rNQ"fR}hl-6{#H9!˝{D4i (AB~V2% 4O;] 3k!8[!V9zy 35N޲CMx)ۼD͗.lbc!Co"ʜ,(F$Q60Da^f3ETX)$D 7 (tҁ z*jKE((v?IH$̗t9)hRh~tҍl9pFE~ $moT|Ǜ{MS ~)ي[I98!-ɖG|O_)Ceo)Uhki҈=8 "~N=Qp IEh9 8z';w[r*7;#~( ;EDqR\o" 8~nVf:GJ$)G#gqוF 2m=ћ=3MՙHGa]=e6xh`f1^4ҋ1|B'*\z'"]݃f uSU4qHv`|H,OYkrL uh?Upe( ii+z^9s~?_Tm{ǖh퀪**6NK6Ȉ|a%0/H BP%)@!TAԜpdy`i `,(| nه: CJIS(%lM%HNL{4W8zo|9c ?&tK&0H\ @xrH@%~g>e-zk @#a?NIԘ?\ϧep`1xH|# ˼'ONzj>1z.Q iX z:wDy {O$'JycEUH?>p VEմoȩ =ٙesuw_Bv 2NQ|>|xwkf)Ħߣ#-Wa_\$|lM_" z -[zgVqqQh)"_)JBoGن7_~ I8'_*׷aĤղx%.%)&f=qf -xYA?GBLk  j)5, )!\ d @LfGhJySi)zs27t­FyWZ+2l>33[Hɤ0޴$؊ʥI}tLDщR lRM' }@r)MxaSx?تAӟ:X̟W̨ !b,>f R(IQ؆O.<?o7fDs;I50t=xDbh^(w ̢KztKHizXwVG7^%v=ܛtsXG6}~y&d3u!N4P`$6jd%%BpQh 04:Drfa~5z@Cʒd ;DJf%vRh?]OևXs|Z|zJԧ{U]d$#n)=y3J!#N3Jbi تDCymWQ/a!#@p ߉п2RRzQp(DjnxP'Mi$^BCAOH) ּo[ű'OÏ-;Ǘ\9};f$y6"c|,#RkH< 3#4Aca? pԃv $;")&I`LX5<4tsi*Ļ&{#!ݙwCJӛJX kHsW3deRlaʑ */@]"u?:?ET1XW;xczEMϘvt(_4AnEPQUU[ 3*p =G$u 9'[n8 )U͙x33X9Lr[D8 A`g$ ge_N:~Y;*=}_P|S"?bA/Yff2;F.7JP:N4Χwh}P~|yo|nÏW]oke>yL7 R{nxiOWkB;H#7r$]ɫrLӪ\Vaf$ L72S .$? ίvU.F7!`z:#^ˤX TU,L-/'(>k-r eoxrD:|տVq)8{uu\k[ɘb_";u6 bcU*$o5C򖋵zju'U<{z<bU=ZT}?doՖӰ˃qIpp?~UGeƏ oE&MOb-gԪ|{ 0MĔ':gaxg޺|z ! #12|G#{ )G7'TTY 2Ҟuo׮Mw1X}NDɟ  }_>rvF=6cb ހ*ֹqo6U%dBɘAzhѝߘ'_P{yE~NHf`ʲ~^|iWjFrCH~iKy:s6ړNh UcOU3߉ yFʽv7oF/~;?sg߸ȜIvmI+_b"%ՕhPzJQOvyKs~Sn]TԸon]<mv1/dGQ wZgrR^;ik>zڟLKs7ˇUqNop=o.'߭y=~A j?ԏ}r^m@܈rxOnoR^0Mr=TcqFۿ'{eKؽmc=қE@B Ld}$l ͑uJgO.󲚙grGWO95knwBPL |eJl"p `$|yT#pqf,Xaً"I° ߋMlzQ73GiVri522̳ 8øS1 o_hu\C(Өwr%o5^SUx=:O.qoX|x)V3|-R:)yun}h̄ImfDͿq-znSHMc;14īNGE9>2|еV?gINjRxMH-.7$0wK8/Z;5nAS{$*=Rf>2N3Ӎ{oJV SxF4]8Zcվ9lywWDс, 3H~ %~M6H{x'`Yu= BBNq(IᎯN-Xi:4몓x:(us y)LۂM5'@bz<q+$.a:˅4=`P>dwCm|m-1c͗}|~0" Ti%x?WQ><ՓICEb8|lhf$$owpv鎛+$,;bE^;go YrxA^-\Hrs_6.xcٺ GJDqy}66U8 |'wIE3,%=CF۹mό~\w^]bʾ04:Bt?Z)U*u<{M$3&}N8}[*zyvn+-nU[zd=YIZlg2I1˲&R qtN5L0j"le,$ӕAh~C|\2^>Hw)+rQq绸.<_o/YB7r;v:{&%a[tEĉϙ^>__?o߉ޕC'a7id$oˍa^k2 5G B00U@WtKHWHLl1I !MK ϴ3srGnψ;Kb0&oprI&2d) < $DM^EmiS-|N)Dm?:|z!}џ%MՕB:ׅiC+ƩW(Sɾ ~\_^6wK'oejnۋAY>Sߞ2{z*:7܃VYHMҾ;,L>WZ|FH 7)) 4]̮ئdI){Lqf `foA7ģGG(HFXG(`({y F=F-.4u'WcظQܓn< Kr۵Vv0E@<3(3[0\"zn :-8P϶{/?ew"IF \תa=:rwt5Y4{jN33rYmLߙ/D<\& z(PK`bRCR"=XR\#r޺(=]'|\oc #}2Dy?ZcW=CVK]@@/f.f?0GՈQ"29xWd1A2σ}R'}=+y]oV|+xz&#ꪮ9Rs鑺ɩ.ҚID6;E-a?}cn}o3 |x)_Lcu4)paE&e-YhprufI)݌'&i-tEaKӄ7i!zQ4i9N&*ӫxٟܭ4纳yM"54#_7J؃O=w&o-qt'pqճhn nGa8 <_fp5ê~^vwfNXݏ_z}R>#B=M)|T Co{|~vój$II$P{Cfh`Dc}_ߦSx6RáNnƤΛ1BG6($4q O><:ީtӸ@tATfW>LC½Z[gIy<ǀT:ؖ d&?b93@{rVMR>D98QՓ|Z;H]ҫ[U7d~ +^R""oㅕćY߻"4^6S#ѵװ !UHex ,!Z?aJu+7Y(^{p$cs}F<#^1KcQpd,g` )2nm(lϰ8EUm?ص:7Otxp/-z}k"=wHx6g"m<";~U|\sV'aȟپe BHkvUmۗYZGKΘ&8HtnxJFߵiԙijӟa>VVVb[}A(!%0 ǎ4ƺlf gbF=tkg*[#!J9>Ș^V=aw,Igڴysמ,(!I*:By1R=)癋aԣFwsk(UϹ'1(]8g 3iG7jYCXN,obG{岙t*<DЈow͚%ӔQtS$Ut:PJ<=퍏ETǖ_6xAjUsŵS -;d[dy!-""Z5Gl</縯y> Fp60#Emf$+dgI/|)eקK LۿR=gVn+47V&}wf41C*&tp[<_ia{++k(3 Z`uvTQEPUIE#R]RDRJWuIPiб/b)j`\hF?"P(X92__ܨfB)B8Y$1$Fba20=)1H,&02:Cm,38b,ӲL m>r2!CO,9YYYlAJلcU,b^t@=e8;B" #n89 *x٩**:*& *( ) "@Ԩ:]walD^[xL6! ԢX)ڐ32`Iԑ"?}F 7SsOu_D˛&b;2sD@CdLzvU`8a>]MOwq(h@thD x 82A!$gD3SZ#m|6X<*B(jAlüh"p:OAi~=Q388Y; Ȏ_,ށ;>Uwx^B+wTROMGdO?$[C>h ßȾǹC7HB4x;a|c4D$iS FB DDcD}de8]hPҬlS?(?Rw&l5xċ3xGB|J:i(@xpC`<1GvⳔ}0 { "3.<4lWp̅h H 1=xa!28ca.2g!16ia*}я13kIVc4kS ^(D~Ū,{,??ZG{rvd "g+",̤ 3ά09I:7h3&QN9%!~ijQp,QI(TB꿋2=2CߊZr-|D?.B@OsѸ]p9 = <~_Kͯ yB J )!F|]`A/=PAUB5;ćؼmM 'ޚ!ٜ-$ru Ȧ =g dy8w0pDcvOd4 {%WD{JZ_o!NsC"!?c_C~Aᔼ(3%V@P$O}OkEd@=p.`GT@A6' Ä94!;M[r?ߪ F@ɅGp@L!_\{CF6043r \?Gl<?*CU)Ҵ xvT/Lc NYx5 x.(*]Mr GǐCA;*<4>$؊?HG}! RvEpzRrWb=)$qTsM&ݍ͒<#0DyS(k"JJ@@c#֐Q bdsD2ʚ@t2b#~)ȚpI+sGamsw&k:\p9R&fG8`m3 5'C ؠvpûECB86V:;b!=pApu\i,J;Gwy:H43$pzwRj mEĖx;82b@(.cA,, !nIݽc& '&pzd hri $9I@c{X~loajP?[M$GҐ HH@8`'޸Jt:ކ]Dc1;'ju |í`Psi6b02,&n}CzhFBR "GKߒ9.0ƈ3!4͋8Z{ؾ;BW|O4v6% S QXl^w <|D"9Pl$8H@Ё!!.A~O J)hD/+cANe$AEQM@T4BF9$7-Ш oxC#K8L7:`HRk,(D>̋dtL<: NOt ӆ9ӆ.QWG׸<5iϢ+|4L@V!>=a0! {e%|U@\(_ȯjF E39A2♾?JƀM xVt7.?4K$ ˵;=^H~?orT؊zURsDq d:3'rwKTw 8౞^p#UC*yo;aN9'G#[~\0|8p6D 7r)e 3dؼC#r= fÜ >yJ$'X蔪IJ=ޫ&$Ɇ /|" 8JUw2wkl~~MB"wR0=aQ Y  e `8t}MF.W'휏&8㊮>r x}V=??@Qz}`u G}6?Q3 f=y;a΂sHaM8s{zEA{^" d`}ǜ^`} L'>P_ J"_GTs^u" G!KZ#T 5!} bQ:*wNQ:uN.Pȡ;ϣZ3:a!m|ʐmtOTzJȥ/P0Uf3EDTEDF2*QF\ Y"k:1%@=3_P7ɧ;CDns a\vhtn>A@7T`Xm5!m_G  )’я"1MK#fc۶g: DI0q/5) 2DC{49S3،a^ԟcȳ4{-:$TøOE=/ "!:a%xPG> $Qm:J'umJ!ᡉ$ `ۖAQh'83j@Q09 GփSނ"@+ , C4D'rs%AaGWS) I 1V~Hv <==zaAV|%8v/i:'OBC@NgK8>FӰaˠ?sQh RJƛ0EEXoJ P/{Ncc}?)IHD4RJPDJAKS@IoMG0>0>G ao S3<*L\AɊCD?ójd}"ao0ڜRB<YT8W`BA~('%'śmo~߮ln}zz]xX k==2Y`=$ G3yOɀ~0wO RHByM]}Jo2 <8DB w"kfbB͓9|*pq&ֹMA$=^pCPKG%H"C]H}f(R'EQG?bfPgT!4檈"@E/C޿SJb IM!IP7x#RNՊP:X."~i  = /g'/ǓH c PLpӰs?DQir6qh؅ZH JR)m}G^)yɶywQ%HHbpa^zݛUaNz0b=+w.Vrv#tQG q']Tb UPӱglb("/&ĩHA~2,_h6>$ 2eb>2hT|??Y}x@DJF@" *]89`(!X?cC`>{`6d`RPH!beJ Eӻ RQAˬB y(jDPz!|;i 4Oy`&% 녖E/mNn=aE꙳h0&>c/b_Qa,2Q3=`$w^hhhVY#E,ޯ+.d;iݫ֪AU]݈Kee1]ojڶ8yQ@8}I}7=9}ǮfiZNJ8؀xRW1Yڡ{/8B |؇xJ B&)R( H'TL  HBB rJ'A]Q :E0џPfk8 $g|z/z K;K7g;8Q.Ӂo 3nLjk3egwfTyS~t3O8ޒLx`TOZ!V"j5݂R?'1DH>(?zA $?YxQ AWK뜝^%uzO?AAUX~@ S7/xaB f(RL]tnC ~Hi䎾m8^ OUE({Y|:qX܏r&$x] >?D] &Ț ^>>d 0<h<C݉:"$@ " pсxHc>5׆\ٍ ,Kim;7]\c)ɈcP9@-Y>:qwk/byUUUUVV#z4/k  U6OkKi-Z[Mi-ةm5ZZ'|mѮJ:4 2 h`ER]0roAQn݅3|sEFЭDKfk+mLɧ:ג"ѯ&֮#O34ҟs ޢbwcփ}]O_! 'qp%LNRs J換?ꓹam0@DR$!T q^ )LL8 {j5"jS9MI፜.sPpʈ^ h0&HNm=)f<@HQ4Z &I DE4X`i~!&*0Qϡ϶ʽl`~ !mpl! lpS~>VR^(HA;$ʎu>݇8o4!E{#a$Ȼyyf`F>gǷ+L'Oy˼M=p僀JPD/տ2Ηy['117iq"?-Ƣ$+[2GJ-@ưo(=L()t *ɒC;Tazհ%0 3S㦁xBqD=^3ov MY0}.d_8<vK؉~1qN_<5zD֢{:{&J jU1P@L@y( B0{@OOʉOK|Z<PtGtF߂sm9B3 CCS{΁Äq'#`!9 %]`ɛ# n *Jd16jB)tA oehC bs4r-I#뾲*B#*1HAJyt3* QY3&`mL!u>KOЮ<)ya CbAU % IОTP%jXjGpȄ8\*y>b>XO;:y*vP;P3 r =8)@ŃSآ{8Q4nj9&Mꘙw?Xڦ w]"Tdǰ'',ϳz}*a0Ld%c9?[t" >,nt2eR;@yx7>v\`GgI)8t!{ȉ_c!^pd ~8ğd8Iȓ1i&B~ϳU0\ vn7p%J:N}8;>JCJ|9e ;8]۟DkDb_"|XD Т(9n`O xt5BC0g@}pW~窇sF^ Bd_/,npL,B.PӈrX ) @D:4R5܁!#@1ȭ 5sF̭T6n^k. Q@]gC q⃩ZB'c<\EO l &a1EHBL$=8Ll?t7zd"S߳oį<}_ݐ 7]P ݽ|_$o^ӗhPAvoUyXaa`Pax%Ff5785s5 {?Mu_<#El 9rć?ư" d#caFÎn ~WNHg$}䙡3oa37^ !H;s0V""ACm_ߌc5n=tÆK3w V~4J(IhܤRTR;g*wX{?7Rݹue@nЁ ALz%?Gju;Y0u9(  dw?ixz,*0DygQ- 9 :UP<(|ѝ 6"No4;#h:"]>,hֹ)ye"\fdVͪ|mzfbiҞGn!aeabS{@,> A4vb6gU $!Ñ7t5v!j5틌awFw=-.oR5W=&)"+"L$]@L wpeh(`=@G=gf: `@B{_[uҪ>܁doGHg fLKHs6HwG/s܉rN0%(<d%7p ^P_3E|@gaBiGvc' tCaf}[`[͵vխ!ZY4yz!䯙MA_ӉSh8fCT{O$FOP~!wjD$SE@nf!)9h>=wG#%yᯀn\ aI. V7)L)&y 8h::5(,By FA@:hB 6n@ T<9Bx""ދ0_4 I4ՠtUoQDy0wu9Q>ogԞ#ty jIw$^V(>l|ц&4wJ]E!T+UĘѰWgqD5wm|׃mw49yhG@<$N OxYc$;+zQx49K&<=973L*%&!"0ȃHF("h j 0{1w|1;Y*EN4z|?YoH3e!#BkxDDCቃ6NA;6`SQǼ8߽ tC ;1!&.0vcIH&"Oot>daZ}9`Gh_؟^*h?6Cl*z^[7 ISuO;܇<=vUM]4;B$B4J^1v7wy&kD :51 '0NYdv8;/pvv4n `B4VlGln}+\Y,3~J7MQ0ȫChbI3C,Yס"D֑۷;f-2 ૆6/0[ue 0H0B"hu.30ʹj+MjƲ'RQBG8#g533ߎMkFV0tOY4x";HI/XC&v١Lմz9XS BJл6+ $1:辠@%& <l=bJI!Cp&35qd!}XUEݚ\EA)g ZzM03x𪪱}=nmL?Onk @!)8Aƒ{ީ .PilHR'[_CFO7 YO-^-|}Pg^Ɠx΂Pwh ;11pD8ϧ-}%:`Mۅ N1ܛÖ oHG&MDD$B #BxDu/dm\()[Z,-]؞Xstcu{_!N[|MD&dHE)D PKH㺈mkr@#QG/)k|+EG(M8i*`n<8y"#|!Iʸ5(NO/D B D(`EGL ً-Ux%U>~Ϗ+ӆ~J~U;9*\!ݛZtVɕ3x|tN‚HH@ ~Oh!zin[CDwCQ \(r'klkBgJd[6=q SPN Ipi V|WeX3,,Ƹ|dVi{~yyڧ~.v`oL٠vDvTIqՑ4yַ ;DCj9"<4bgX6 ?pD@2 1 3dF&llCvL ƮBOiN;YC4f"Ī"6'(~ >A=Ps ,YQ2HLQQCHn=E^l @kK$*֝^R!#Z)3(yS4BIU&lIB`4%Mµ3eH\MܜzF%"5QQ{9؂ggOCNE,j `Ū0L!9z8"-5O/D`̑3;Ϯ;bӤO>?u UVSm J=aG6*FhP4ǐ\AYꉁGOc& Nj1!5DC Q.4WNwF@̆=D.{_ng2y|= ;acMcئt=AIJOuw7JV")J;ZA$!ˀ:*)GPܤ]AULQWco$d/nLfHF(QYKgf;L N(P:b[;{.\1$d:t=FV%;ƽ>6[;0j}}ux ΃lp? TW@oX8B1 F.5*-@`zLyb{F`waRKn|=A,a9PJTQDɠt`QQlmgU(e~W&LY.d} WfDpyBH>AQv/ͮ)(MR*@F5 ,y|^CQUHwP"B f親 @f[2m 1Tb'oiažH@HCʊ@UOLNRǟW!cYߺ$v C(E9Dw2bD!HRb*&W A@kEw@Ε#|T!/݂:p$董a{ N|4qGƇΌpE_]^u‘={Inږ̗ƷƯ:||t{-B;[B}_Xa1{M'6DuI cN=aD[H>p&A3c}m3xjL00sc8T f $L/#Y K1 ']c vHTDzDѓ3nwͬL9#L3L:&N`jhJb;7ZID10ǿ =qV dQhVrcۆ[&N^1KeF@!z(bBV()"R1D#\;1Ex?)E;ٙxI{ӤLxгV?oCE ?L* %6Cb|\'J1G"?;LK0ҧNA1 0khcz}!)_-V{xW3;>hĘK ! Gϝd x)蔺tM k **=>+ۓՕ X*HE A9l Pwߕyǧe]q.!xSramjVrz/fï>2rYQE-U*| _jC4 9߉>r57 Ij\g`ͳ u16AQQ(Qde];}kiCB׷4 ּ&ln7`O: 8ֹvtz"/@=¨EU''p_1Q f](Pr⩃M|䟚#.6#ܨDBJ | H9Pk( !64o 9ҟϯh< +HMgFtxY%%-!m4ISJj9JX 5|z=HPrc#H9!Xx;f) w!,EGLLQ|M6|OYYFHNXc?DC`÷9*H2J@hO`z`(8cS0!`l OR!ri|; 02@FTAGz{:{"1 (J*G=OE'g6 DaE!d8"|78< o  5XklZ]B<9SHI=w6̓}"TS^NrJhp)NC $Q1vŐ⡗W  !Ҙ$@eD]TdB“"K@| (9}υf0"cR(dP$'HQnN[~^N@Gp@脈x'0^q/\0%54S74wEW%pOhեږQi,axy}G?oIӮ>mrXWe9⡼Sad;Jnq0 h$4S_sm834dLQ8m7)DA X? ϲN&YY9 1!6hc6rԧ0JORZcCؕ(m+nTaYD~ ~O1) 00ty:ݻ/A :)=~x#6\@ҏ0h4KR``]wĚ='Q<eb" rpC`_9&!1PlPa%,hry> /-1`LZ1CIu>{U%$T A%D@y!5PU )Ax70XH!1ys8 'LJBg:@aԙiJBw)9D.6};z:zwߏ3s$00HJR>NnLLAUd/G*D/%|UM{K@yGb`-~WJNgi&5DRL(>I=a89 G yN5ȩ%|) iD'FNQ<̈eտ?0| x`7(A "&L.":&)qh"R @ o{:QE2PC¾aȹ:]1Ġ҈n@ dnE]ʦ SRSk 0H.i:T#Tq=p0ғ)߻`҅؏ f"a)x/v>ߚ r8*~Yz"E") @P ]cihi( Ѓ` .B"/y9f4OBq%h4q"ID Wt{kTF"O)|.4HQEJ`onM۽b$vX$?e({}!PsHװ`)ѭ$w--JS26A 3|gpe0' SB~Q!}ϽB7t8!?<77H[ayw|S2k''&z >—O`C!2:1zy504Y% `IF $c,gI(q;>R9F0tDdj)Zo2PwDi##h _`T)VEfAB~_ztj^~ ؁Fbj<=F}]1QD.P>Ϗm?;]ǍdPc Cv#0kIQ5<rT6NJ!^@:0_<Z Jɦ"_8kR0*.7H(XRF~jSg`o8˘`Ҙa ?i?)7ԧv ul7v8H8@xl- $y! M~%> YtM=U>'| ) MvS\$$G gע;ϫ9r†bx_jc@(9 i OK{< thȓw.?B [|Ah }\O~BOq̅aG?Yd{`>KJ$w^W0WgE9@ĕ 5U%#,I5U#BiѥPb.a~^/&`<,qYE[$>?  ΰeƍbPvJ|*# ,x`Rc9^*%c )+6!}gm~m$1*zL 85PLLk097+!&~$&((Cd$=YGEc`&@8&{?I-0PwdA:p !J ሟޙӪx&t{!ZV+82F /Kr'̨Q_^-Ra^sdtT1%E5.c:YS&AG8**'*ݯ;eOåHa{ LX0(uk0A5*W*gbjP)󐇐 $^zg1!3+X$l82xqC ɀ2M?AG/'.`=pIe{_zp8-;fw7c Y>56;Y!nS}|ٙ;D>s6^or1@cd4ل TF?>,ȑӜGǸ-80#Z$$?ťk"!ЌRw* m:ӌХB:QH#iTt@qހcw6ے'w#T?tdJy K;d)/sWXNaC#fXJ!eڣ\嗙H q AO)OPgv  JPh+p R!!J%mdJ(*THaŵ]jb!ُpzo& D4ǫ3 })B g1i$`f`#J+H d*]Ph@0hMġ! JJPJlOTd R$%%"TfDH21P*{"b(2ifP ҸPP7 H R@(x@!h '\>{G02.(U840^K!0AҘXf" Ì&B!Io<'$ tbRN_Ta6@ի=7wnI) 0̢PPAxOl2h$dM wk>wqQ߲]4_gcCg҄D:DXބj_ny ټ'EÂi^zǞSm W^J! -(]0znۋQm=N 0"(QEQDGpe̘\y]C\8Nn,egIBI iB()wh6ۓ c:}e5@ A0dHvu A C9ǻܚ%)s}ڟD;I`&AJ `./SGO2/x"?8ԱR~>ݐĹ$IҳW}0{Sc ZRP9$Hé Vl$GD# v]L#o`򩏾Sx c}9T} %)X@T8WU0UYuj.X+,/Fn C8p`r.x!F&h;ihΓ|)JCyqR4 Qpvx;ñ$[;% AA1T#S5mmi &-!\BR"Dʅ < Nid̢:n󜶣 C{_ `9%e: ЗFf\$vvW^=Dt Bʨ,Al cCqβsXÄ0ºE?c,:4B}(0M .1H#aSPq ?5 $WE\2b-|뺿Q29 &tv̷A3#YݚXhJ'qD i 0@G881D, DM/ܩR"%%S!(jDD1t" PP#@SD_G{#N"~!`) eJ0x>'~ RLNH&wꅈO!/P \~@nrDHpݡ4s.' 'x`:WBMiP.w ܋˞N[h%"KVTL>;YfVZ uTH>N=R.A89M'#c8qGgP ܄O24GFI$$-«@Fd6'#G1-1- }nu\_ ґbw@}" xʇGITĄ38C|ǴnM#xNUԬX",@Cs' lt-uOWç&!0 01tCI߮z߿utm ԅD`evM^I&*~^MPp*tPڱIr)[GQ"dCmOA(^AD5?)JEhZh!՜r834*w'!1JwyP9p.-h!j2@0#Ԍ@4:':Bnp ) K,S8~t}y*_H b! 9DU@8cShl ҇RRTR9w*6sԥ UHBPj X$EU'Onٖ(r%|>q<5DE.gvi C+x&XYr 'U| d!>0g8H9& A8a`Pd M]'G!h`$$@O )¹|FJ0 &ѵ 8!L@ц.\Ȫ &J tCPD TF <l* ]!_ SI'!t~@N%$ș;~6Gp}])M'YdA5UQ0AcU&텦* X"hcI -$C@q/5mjXaEU4USګjEpv@i_#QF 'm2R#H$H% %4hTȟV>NC) "_\{>Џ&|`WxX *dY&{ (M}JvKEQ0E@@LXC\P@ט0QV_;PG`0c b RFe"}&>8 zwNj"i<ø9hCSEAM@8 /Ci>`vdȎ7>zBv.ޒRt<E\Xs q F&3Uu)_ex323r,I)YC) ش*sLEzQ}u,>>|Mg;1" yސO̒u!>L?.:SJ覊"r[2DU=B y"t:C@#PCuY;O%7/|5]0[{+B hA@ OlO#ꏇnjc7\6D''cx8)'1)#DFN)I1D;)6 D%SR)}Ol'&L~!IG*<@%qCyUu 5pH( h0~fNxUDkN|I9p?|iwO eu1NĽ 9Y"D49[M 2%8r6=:2cqY;}qApSOeaiYShpFTd9Yf`Ha~OU3؞zhDz@. < /C?R|ɐR{'k118vfh\8v)'c 7bOP`/A8 -9+܌zՁſ '/ ,c{0̑'|BbפDJ0keU`c\),FU~ zI9*1$PR}0_r؟IKh62J|?quE:/ S?ye|Ǽ^c*R7`l{iY4AM4TY|Xk1+m”cHO`ni@?4P2acza!S(R%=A2)("j(QTYN4`#RRkNҫyf %8OQ7I%a&$="\p ^I"$I)J97Єv "[1 }$Ȉ:I"uuϜ9M3Fc:qB~Es˝Џ`3YUB)TB%` W~G<}f1\^imb=]YO!$6__cǧIUSP ҏ*Q Tɹ FQ@ D:F[d"h6iF F5RE(2tFdoz\|uʑ @PShV!j!J;A!9dv^J+.*HpƤtܕRmYdgT-,|x ,ڄ;@[5?>(y Ae LDO֥`PIzxNdHrBs*C$1DF !8=O %% J@QFD:[gz{a@tG*t4A:Ύx 3=CrDԄCF,d CԔ@<4IKV0X  t#"/]%iM(PLMҋ(.sΕ]ܪ=AjVV@UIA@NttP|ޕՎvWd55hd f^5*t`XPK-n\}4TGgxtvCAƕ٭H*JoU::osYT=#Pz8Q''C`_½}S1JЫ7đ1±CY$j]ә`;š!+mUO~2ЇJ{4J 'bH"?Z1 LfLp̆svyNYAܠh9름CL2/` y"r;(HHS02G rA//KMT$8~SxdDaNQ8 p& OD<X~7'JBI ,@ y̪9P6q!izvv]Ib788>m'*T "zabQ(pH;d$& iIN2N"'@:@3T0HDLcՑpz,!Tw?O*^R P?gDk0)°HmQs$D`[5@?ʗL ʁ]":Q(d7&_DZ74vلJݤՠŃ`tB 9[_} Z|ƅp₊:Aܝz%A> P|';ӥ?x6{@]{8MQCQ7w3@z*3e!HHw"!^QqǶyVL*󡈁!Í@NR㊜x>/nrD(SP] `;C{<:'@T+AI#ɸ"9H!NeNiau/>iF>'hP`XL0}^@&7>fUJ' 6~51D^$LΡH/8qʒ{Jd?i_H%Cġ@{%uS8&d7@W>s! m#Hco}=ogYzEAO ތ?~?RMޅɨ=kҺ=qHZcHh^Z놥/9b4qst!3F#ܗ0vf3Y`$Yg3Ȍ9-S@fN/ojYVZ k{o^Ǝ! H gJ͟ڑR";kT9Tf3ֈڂarG9QѦ{G<x[5=Ռ;\,f|k^d՜ #8MY[ B(()EU|vJ| ߙ\AW>9 ."@ 2&JwtNcy=<@=Qywȍ1DD ?0#]a!n!3cSǞ0`܃!@Pvrx:{OA=uԜQX^9\-L&10s0Q,%QEga q[hPB:GtCq?~4<861YRGPȐ׿*ٺc-OZD z]4? (%J5jZz< ߎ$:3(DP@'pbwpe!Ɋzݢ¼U=/5 /8IBaI,آ Q:4!(t8^cfJH?nozP_iCI ~X\@eۘ6}#x&Cd:bk4`HZd=sUWZNw̺la \?, Q "xy924jC(g#7u:zezzĕ{vʊnK=8[1)p!LzHm{xW 09/T1qNƍ!E;N JPkbx=/Y$Ű%~]ჴ\\NoY0ќTpaLdQ̮wg9ڝœLuqUFYC%x%(f0Gy1־{W5ЇLwt$G5T- :%cvJMiv} *jjoĔ>F&-Jfu;!kg͛yfMǐ^yA{#aD^0zBR,D\4#16fQfzZ$BI6[DA#uWDp2u1 >@h@%dI{[51!)$A=>jd;):k=g2YۺqK#M&.EK4s 5H٭G|jz|F=/ДbH)>VEd==S!0ɾ[ҊZs-%Ζ"gHj6 )1BPQ@v(&+!eW[}nR}9/reEiYJW0wUs4|i(II*b[ZWkvƭ$a21H sIӹ gZ)|iy"˿yD1R㞉Qɷg3V׭| cNt:c$ Bq;O@ӟuDqH4(DIk~zPrGǓ!vq'Q;U/Uj1P$uw`rlpr1~>Y*4j[^*TnڅbZ^.ڄu\q'|HJ <)%sWb;1ͅc j$ɒ&$rxPp$ɍ&6|(U{nN*`N=s֍GhI':TUґsn̔Had9P, qnCgIRtY+`ҿrCG2fac *zd nVCh\l`"f  DZ eV F4 FB2j1̚ 1*5@dbVh #F/Z[91MDCPɬw-}bp/xזehq ̾od !TIF約ER\ B(N-[*Mi^hiVb%ys.+sz"8HSM3"B]\9:r oٶH+ 9YeUdl޵D3bVa|w]{3uO[ wZL+kAׂ St'C+Ytڞ*+]P/ڃmʉLQH(?o!А:Kץך^}m#}xl%v㭿*n q%30{V'!+s8Èʒ&j?x'GfOÂauV~n%jȌD{]N32UAB,ïo_F[OMg0ĿyVbJ d"-maJ $0b5&CRLA9p6ׂ"spn<[116(Ik>]NBo8u<;>oS{rWrF{ '3s4pz:)'T: \AcH˛ظpGǪ<3w!Ll" ff`#bǸByxl" B4D#qMvtw&L:`w'nC۴`iM˙1Ee]>̂Tȍp@=FH8L]T45**؉ޏGW0ߢrľ1#Ǚ $)GsC9RN^v7LLŏ ȄqϹM}8hB"F< @Cn0 ˋRȹ1.`g1n;9syvw!JC(t#SM4tG·ClvԺ0'  tCO ȢSO/*=&ʞAҨ"JL:wrH,xx]7P@ёHu;D}^|+V"RQ XTDAEE .& Oᗽƍ䪦P^ UB"BI! $U@R/p4bq҉Wl!B J {!I ?°=_Dn=D-hxw1 4HmG DJ@?h" ,RLvNpIGNpBMA Ԯ0`L;؂Pf,T fTeBO+=|; >([aveY"~?t{844Pqy>)B },D DQ$wXZ0gl /vNpv *oxpȤ(Qn%;6xJDwIBA!$98㏇N7@)B)a&('YEU)UC(D- ,JJ@"J@K4LXeBZ@J]/! #Rl]!3}E #h񼔤CϺ(7 ,oڰQBI%8#9ޕI + [D|h8D{mwvo.g]{w_їΉ^nEn:DG̲)i\3L Bܛ jdUR3hIZEoZES%J%M"NfgR֟20j>bPWEI;dRɱЎ qB6HU]+5%qqzg|A*ہgqHqcUW!c2H5uq\A&i{M}zfD!|sǍZ(k8OcM1;X8RqP[A9o0VuVs4ӏf^=vo5y#كPB,[~ypnͬs}[;Y`&^T![v&܈%(0G@jCn\[ tXIEBr`${) =P􈠝QCQ% S $ P:оS^H1 !%*aS30bB@@ QIHC'v9)AJDH !'d1d}Oz> A݁D^Ǭ{vhB-*@ C3@6(9jٞ!COz{㔕7 e9 "!@&x'+FAu~U&9вwQBwh2hi!'@&q@';<74 PAhiw<>#?-satDQ@"1EP J!TR2AL04 @G ;cq1@:{N,p8;s0f"*B EHU{y枤OQ~W3P(LS2:ؖ6I<Ax_iBP:A.$`Ѭ t`H]NgH m:IGE? gT=Jҿ=ރ%;xͧFP[ #^@m$G-\JՁΖX!ip$&L 0.$@ލLbI!uISw5vV'C>fNd|6$dMݏWp?|.SB&%=bûX80ylH#h#"=IBp hj%$) `'BrwC~1/u>YQ語%sOT|L^/,e]6Y]hx0W!$`q)CT:d=A =(֗]wrX]/$INbtʟ9҈ǁΕs|8DDZ`M:T]Q1u(G`~Hi PE uBL:EV+Dꠎ!vLs~ιj^=Sv321r)RΒ=7Xck##͗o)b|Fuz8o 9/yPׇ8 /ҳab\}0ο˔䴢I[Ҡa 8/ $ pB 0@y;  E4J{e2 C&* %k$()B&<$@ĬFD2V!$?u?kg ӛuq9Lfa 0Ή=\vQ}A7BVDE/JXH;S2I#zl 刡>\H m'=8c:<""qL|g])) /Fo7Q\S4ophc@hthDTJh4(fJbz8RHh*ahtbBi)bz1U*bib6 6;cAVKj$"bJ SMoC^=b(s?'Rm:Sf>AkYgETy*lQΜbg#( 4s#4t8oOA܄ KET$ҽ A+BC3 lp`0TQBA@ I+$z2ŘY@r:bH$\`_5 ˛s[m((`'#CǴl{ _ZE EШ\B!@RP% "|`9l򒇧G3$Gp͉dcKƅ}~kQfH&f>2SD߀sh\!G2ep{ <ǰl=" 4n J:AQ8`(> AB΄8$}wvr@m [`}HKZkC1՚]+/X0!!wQu19%ܥ 0ZWbqC2Rg 3U@t0h(gxbnƈ}#)nt'ߵ>c@D<:JvYXFLA\3%h즚J %T?*G[J+ HԃH/3HA%͒d /k$h %Оh>z5t鎠=D5M.W}u! bGEN\X'yR5J!HQؐL  `΢D?BlvU-b>81bI(z8è*D)2>< ?L8`bezUn2DHB}jnժ!C%@*hF|My )%E"tR̀O ]lDQDst?7@p rv@AiGCiw2=em~ǿĻ7M`Xzt?t9B YiN Hmyx:/<)t:'_?{__?s_&Go_?￳U'(ɬ% @~SA' [gw?TDсB5 A'[(3!;'!xw`&PE4#v0% !8XS_Oɂ'@ 58}.wȜCC X ̀"@#uB!Z_ Bhpuc:XaԆH{twEdR '~MGgC* YR(B%c{2f*(A3C$DHQ9H4(u9+>odLa+Ϯ=M~@.HZ!)˨])Q(G&& OfIYw$1n'C ێ5[d|0Abz bǫ:%Hכىǐ*)f=uKCG^q q!Å=w6 ijNFscv `أgДYIT8@dCwآrÞ8Qj?;{0A/(p!P?A09 D`Ir< pt G?Sҁ/oM$ݠHiG];A4Rh9B4Bdɠė2&K@r"%S#OޅT710A0)t t :4;r#Id$f/ @:ZQ(x1&@StQidX A~!kv=a~OZR/c 4'mVu64G)9ybFhD@ZP9#@B#SuP_N{sU8gnlF0W*=K@DP-*HR%ҸĴ DIKTZT4 M(R25 M+504PE@QL@4*4#JR5M B@ДBR4BR%%4PHQ@PUME+@P4JT PD@RHLB *!IJ!0ЅQH4%(HQQR%P@4*Ҵ- BRPPR!U@P AH4!$B@ MDBJH-Ѝ#B+J% BRDK@ PĉIE1#LQ4-D )H lϔ2" .  A`rL^к!tgD#5&%y[Z6\`p"B BS؊C@4/R; ؈`A𨂏Ӵ6'AMceBDJC͙!R^q2l$*bl鬢 GNɢ.: %e`( Hn8)p'ϲv<}! !$̍UTS4 Hx"()J hCOQ{}' /%wAA9SCC%HN_V d(!(Z($h(  ijd bhB!R*I) (%i) i "Y*AvСD=]9VI= p[LwЪ+ J?T ae?AC45 }g٭ "Z?7'C Y*g~r<9K,;Ef?7ڦ6#x0Ā/yCF%{L28TM .}WդXm޸;Bax@" lzo/tF݊9S5x>R[9Iy Td90^ޑO>eW8GqSa XY$L 늇]N:9bYkDN<ǣo7 N+لIt{(N;iC+ 3f3,Hs1|:냞Tfͣ-Yn.& Lv&΁mrW/u(o="ts8=oI #?h>6r 5'V䴄];.j ! F,'ED&JZ-Sgu;~WB0̅pyϿI "G tqZI&܆Ȫ*wHp+ xΊ"+ ݆ic榥(3-٫(=m"~n􃩕OU ؁nO:ĵDD4M~G95T4DvEDvNjƳ ɥAM @QkWAu-J1;š D= lST- abb*J1a"%JBIɣ0U EЎ&Dە)(1)"КKPPIT[~T@RQy#uP1)OhYJaز&ZF@c 8xA6qs8hDFEž>91 J/L3Xb~X:G~ڰb "4VA )@){>%DĐ5t^ n YTy|>H(`Q ă^] LB&bP'ωE?(D{ȅS4q(2 H}=;:L2w~̠v{K^: A?Wr`^ǀq=ĝĢi ) ATN @'L>펌5IwC.f0P3@K! #X4&IPZmi)4hjKM!I &W J"jJ> D=?HQ) PHθ:>38wylŴCEX$E?px>|R/W›z !IKaaPR ݑO}ϾOP'wXN );~l=a^AgJrP{;אAaa./M!FNt}w.x"JCˉt%2 Rb+RDMc$0V)2C#8]ACyLP1z?SB$@fPґHgi`'wpdeD D.3HaoHnX3{x[,P&Fp-J"0B S!Eovx崠CN O| )"#=0IrK?|;Ff0?!VXt.>`ƥR n$CE& 3'wKj _2Y'b0!cn h`ފ0MҟLRs~>o?Fl=>1)C <GjQx/v4YݣQMmz$+Gͪ{oǂs'kdwgTw-yX=7|Nȿ]գ [UDW[~bF4B jԥ>}<8N*E|hç= pfz^iw>-1NZg0\ݛRzH@h4{2e 5ܖ^͛ĥ3-W {ƦV ҕ)| (~SFJ$lPz\nVvCS4Ċ8T I?x&`-3'H0KH v{ D1燠l A 83=iNe0b<0dr;I̞<QHp@DFp.hHz)5P&/)8@A tTNr萡h:`Izy̩!1 {ǹQ6t$JLvϒG,̟;^BLO\)tG)'.Q/9<@cn~|JyJҍLJR$*3R%!@ ( -PҩRR- R+@4(SШ3L #*"5 4:ҫ2^PV D0A(hh "f&[$#US:3+ꡎy(2(x)t = %BBABtx so[fNCg@"<M)@B/x-yS_V E7@; ?ؒ5Cu0")>oP )15M +LN}8wa_$Gt׋ CG$2NCBV@#FcNjJI*cY&c/ 5Sau!:+iLG9Ad9 tިZ$*&ZS%(Th@\[$wjME #TvQ_B"IA 0THE@?Q$T_۹'񇊊='( P8 ~xnNqTNrA {!x"o)eL HDݫ ֔joOs4 _hE_+s2*&UP1t aDa.'5@L7Z&(8Q!;8toECw%T%'+Q[10Ϗ=$ý|Bi<({M pR"ƒۈge(̗B* ʚ̶S3ZV.7'MԟPy<-`H <_%+0Lp 80G̬&$+$v<k-N\Yj1DIdėde|O^Ő DbN-lheFljsE -DhʚQ,)2DO}跮]FwmfSDIRbhJ@|Z18Ϝf!i1mTbRu[5?Vtyة`ʼnTCM "4igq.hԬs(xC Q9?9,d c Rc< 4 U9~9/{e2@Xc r>da:qtN !@OlMP6 uw-;/HiC~<܆,1=2w"IOnLCl2#Ykb/\ H u[ XsA'hўXb*S2"JU9w犨#yYI!\R&'OW } KNiHA<bNǝ^HiOsnSO ȡ 2$PSkdmCgp9>@yCJȺ=oa3Bz~ߩBPRGD;z hY'˓/Ú2B?z5d@R}!򒗡CJ˘fAz4`bH ))KΉjxy31pNH7dH\O,3|jG\jF Dӻvu˜e`d 5?e>xOE:h!!t[lXLŤĉzP`Ƣf1'qs $jnJ6ᔏ8ug0y)"IY<69 Y@DVՇlŶG*4 di)KUQ- j* /j* oN`@գPa0@A)ʛ$ RB@VP9A3P14 Cx  Њ *@2|$?{>1r=XaS^V1 \LGcw=a_-4PJ0'П!0.Ϡ8q6하M0z \t3QB[3f~$Ui,*Y?62846FOuh!jZR=aWE*`)qm{AB"i2 ,cc?EƅzCOk-ۈSPURdgzYɺMU46xw0*cYHȤ B֜`o'< vAdf Gp+HaІ> l!@_H>zԽE DP#}^~|gӀv>/V}[ǏrJ4@PW>K'3R5O#)8 g #D$b(H,KHSc$OWr@|11`wO3Ht}7D;!ذrDi7{-wHҙ`d.AR}Gqq?z~N~JJ%j_xyc}Gϰ֐AȤyÔJ"!YDQeJLE ¦4%3Hr`rMsVWH`!-*Z ` ^7T.Ԅ @ǜqJL0&1ARNU!)u&HUP $F<@qrn}'2ʨqkWdR) y 1,HH+AE.` ,!'# T"Z(J@;dbZ@TI\(Q }ybj>b &ZiHE 1IVT=8m}\Zp?SlmmkmZ6}'j7?W< .G4>uoZ_w.LgE•u}ljPA1 p/DM(h`>sCܰHONs5/7' bjYB4X3%qm{Ԓfl'Κ>JBߞ˜GjHxUUUh~Oc,f W#oԑ(vb SY !ps_8Dæ paibihB'޻EIu |.C@:vt@RBT% CC!q>D_>^>Fձ-RRiQJ!-<}v4,b JٓPFrb2$hϱ^g@ JP/hEw(0@'` J#G;=YIQC'3$C d%)kS %3ǧ0?I4q{^+u ԥ,c  # a%NtIbC#e9Q8D!~dמ^zdrFS g%e1n3Q1'L^""ַ9^+q6҂{'O4v`Vik'Obfo[@ %;xI0za2h:UXC "'T> `%.>gZ|R{T}pG2}F<DS`$~ILs}x@itcS̩3?7U DE9Ncxe i<8 cS8>HSh~;p6}C=7ѱmQ tjda[.u26UtU.)KYRY6 .ys^r̛SZ[Kyɠoz (c@yrރamS-p?"gC4tC\҉fr e.t(p7Dr@[{lT].H q,6X0!CJRaHIФdۍ"D;Mᵴ^dk. E1C&$ J>>BC"[`Ѩ:dIA8\mb=CNvFSpN|#eqXV:K:H8,2[Ttf-`,Qn; 9M-TS F0(Hћל̥R8{lqz-룴,*2EK;hp-@ifʸ`U?7xrU9 Y5lr):=%tР{c̑`R>86>Q8c87FmS懂4"wdz#/v'< ⡙P( !ҘXpCӭQtiurHlLǼXQ?iSly"kH{hA>"IqPqR&ąU)BCLQ%TJ#̎8l\$ØNƨ`gx53u;A=3zCܟ`|d8%4%A)BsPJZzwug2nߺ-[qak!Eō%Cz\Rlmmݻ8Rvg9w@iҤ fP0 y 0B RPi( W&1 ( BAH(L IB,14U%D%"$   KATL J@BH)CBDD"@I I%,DEP ( T> HS8A L7UCAxrxT"{O#Lw@ HTaS!wZј}p0K EDا{UBХ+CPH@ bfEAH|ۓHǨ\ hv vgl5 zM,4$'ՅX+mPYK-8(œSPS>1N86lGn,qPq<3;-дHл:aDFxE $J59h t% |hbb()O u{=avC}pe/vFت(ݣʀDܷS֠DK$O ɂIxܘ4و{FC<\! F( ={?`?8t8L3>t>8R'GdMxOz\8!ƝbDH|!'f <ܠFu̟~v&l'kR B)ym[DEi ?yQHQ9SқP=v GJc`R%G8<:*d1pPl/=#$C$X|0 W}X '}*  LK K@(G-t=Iݩss`7)\H>jV-FgrFkK2@sBqQxpJ([ I1T!H!+`pMmq!m*ךdQ1M4T2tmC]*Ѫt=Z &ЇH NA(\Pa0`6Ppƫ@jgvM:4ZհPYSĴ `H; D]>ԏ^4'`|-iW_<܆to6{?2@Y} YMQTր|DeJDPǷ= УvRť5¢R)`)@PJ44HgY %F eО'>pkʓJO C}ဦ;ݙpQ錁=_1NC ;1/LDTS3WL1x yzv0ʰ)cO.Pʁ1ꄿ3/k*#o%P&T4d =36L/}促5N?JG h)PQQeEbhC<3NLf-k*!/?ϝ\q[{Kqb ?z;H);v;t8)=D=l**mH J61 o]<.9:/Ե`vIpG(Hbۉe:`.+}'x=D C1( LX4"ކf@1TB87ľw{;HBY ,eBv'%MQ:V"e'(9QV|AA;$9MiĥY&K3qplYN;2༟`@<}zTH"eii2O'dXC'q~o?2\{$'% '/9ɲVpd~EYd1x"~wm2qE89QG?]/֛DD|(G=1bT "X(w5X$cY>  *B !001"p?75f zRRQL` =@"޿A R R)@H#?aCIQp@~b.S S!D"BAGW+(@@n< t &RE (P(S7$^SGˤ<& ĸj@fpDbo?pY@TPh(뇔,dңGơI=!*y"ii )) a0gwyԐ~@=*'֮"l2?}48/PfJ)(F~>_JZ6S̔C 'T TATUU/_WgLHO\;N=t@xP%(n pP:S'nj:#> zC@ 8 q)@H$UNURhB SrIkIB EDXc>,@iRaQ(J"`siñ$)%(M߰S!zC "JMKG9&KIPVٚDU@8D^a2R @ i J:1R($Qz@*@SxqFчl"E`UE̓?<+=$B&8 &? \ ;ԧ )B>VJҠQL+)>^gqxh@~psCƅx$Z >8 G &H8W:=CH0Jy+փށ.*A$yv@wvf4g҈LVa/UrC'Q%z}NY(w|moAFhF3!v_W94B޳ITf#>PhD%/gkgF =ix.SU )#/fa\=JMB]LL(HHiJhuP:;u"Hջ#VODd VhD`>_#(F $ y~A(dYZ% Bh(U +>r^%@RE% {._pfu+?t\3 Idžs1Ŗ sVRx`HH9 WABh)r:8;ioKKD&%A}2* uP>ω䆤=٠G[\3EGB}wz.(0"edih0Z\$!v "~"U}sħ|@AL;$ϻ0PmhTL J|{ 8u _&qel|#2)+)x04O8I t]"y2#(@x!pfe~Aqٍ!K[z@<‪ I6 c,:]n Ciꂈ]9Rch) WIicԑ@hH" )UڂbF ?-AVa7HZ(@:Ā{$* &Z" $ @(T }`zR4='E:WN ݠxh D /dkKlhYe2t60J1AhlK ZV%t鈚9ra"pI8ը~ 7E\*d*:Nx!D15 Al@2S+#Y1gQ$I؍M3*~6̍ k-AFJ} i~kmȅL G0k&42$?A4ʒ6aܗ\o2NԱXArPC=9Nq(Tꚶ ж3;C6! a& 8'b&!)x#%A ]1O؁ v9t=*?Ny HzvB)%Hy~'ɚc@'q@$#Ig9ٺP93F<*Sqf )BO5Zx_1>s,% ;F{ _fc;c-ͦF̐Փ6p[f\40^ 9_\ #AY''|Iq{$_/uJ@R ī D(D(4JP "}_wp^DS"P@txt 1 !/h3_"ϯYHѮ h㷸¦N/c=Yx pmj7^Lg|tw i?]{Ø&]'F#H!LsyC1)N<>ۗW׹;_d='9}[RK?\3'[(dL}`uz*vO9x:#.s ɜbdz CGGsgn"dCLq=DyNp0H@~x^K8 @9ff'+Zn4q2 EP/fxS w,҉c{9,5SIJ8M&UU BCc_F5B*$M,F( 40KA@EAJA03RLMIE*" )hBb h D%p݃OA$x|ݔ >CGZ`$ZcaљfMbZ |CD7U 2c*)}9nQD>d4" $"Me]&eoC,6}s(J")` e$e#$Du>e ˷ξ'1%Xh*Q)km@݃dy|3<#¤:i)L. E t!%OQ sY+goeKlu޶phႨ.Hg |6TJtfpYde璋(e e A "EV06ڥ!X&,lb" %vA+GIBSD z BU.vBJO)u($k廬'H)gF@0f"^|b :^%H3w8A d")Bb&)D(bh !@rR1{`\1J(Ⰹo4P`m=;(jd̤K& lLPC!=Vr5vYXD[(4a@~ДNL^Rx:25Drj% $ wcK0DTFB;1O7ىh ݛ6{ЄA)"!xZQGQhpgP%@)e8IК""X4SE* @P 0 s2S9n$F,|xj{vJ2痜㒲@Np58lJ xV{ow;zs΂G .I9JDTrԚƕNW #opvfi0Ʊc[^ƕ<{iHRHm8:4h9:x\`8q*9@J!N VAu)DQ! $-3)"o泂 bu ';:+/(t\ CL쾎8PGDs^U</(I3\ Cuc,gC"u?d~'"C^oW\w`"d%5ߠ+! O)ah1 > qSZsc/-ؔ&Xꜚ*""hP*ϫYF_jnN^O|hLà!>ZHnAH%Z3Ht~~|G0dA'HEH5B2L 4<At2''BIST] r3SmߝA/"lDDDDE|c|h"D'>D|i' zoߖQJ4@ԫRA5 @~n/N-[6 rd{~wrtanC!q'XB)OBb1Y,$x0k'LR<5AĝD()  R \ A! CJLoB4ujb"@)^&S=w=="+HCC"Qx@7EEzi`)${20KDM#JRFw􏟳xcjܪ/ꊛ"S(m7Y`dB`bAۺ?ڤ ! XTΈ(?b=j%d&$bJthf'E?d bZu(w1 н憉fdhA!4C 2&,I>!<h҃$%B̲ +:؝D=:J(M$f5PRpEDPӘ$jJE p;019FLt4?WB[;hNG~)Uc0~$U] +'| @)X!+OΝμilX*JMB`tm>Eb#! HBB]Q4b-d1$TvO HC7+~X\c+\^?jhI6Y^?-ekuۏ_`qs]=njj<;ΤpkEfvKfMkK{$ 냍OUtWs!"3צGNۅMn*",tu__#Lp v؟Jͩ!4Ҙvac<p9۳bfٻAGQ|ѭ;'Q0ٗZ8 pBJA!+DώN>G1QɺZx{n4mv|{zrn6N+V " WLU58SPru{KyRM&C*}FWmvU<~]4#QOeog8UUP"GZTd]A1ԕS#+U/S%/,Px;'a,Z;Bn7u~=:%NdJ}ȎwQ C>ŒT5f_. tJs9ɉ,lNL#58VvʵxhVȎJğRLt#-CQ3 C\O:<=+)%.O%sة #M ɣGxJҢ0 en~w_5L`uSV˒anE:g'ŝ./;y‹&?ҜQ>2^k:u5=>9(E}Y"D6jGfʖP?y),xZh\()q wFiA(5%G*&ۜZ .<h7 5M:DT ٛ}"+\[V{q+ݢE;\0.*xPPe t֝0ddhy{t׌>R)AAǶ2D.*9gy^`7)+5rR$ZqW2J-Zhp͵ʇC>^j'A|3 " m3n-") Z gWKʎNNcPS{#yeX]) ڋ2 yfZ>1d 1 \L:mZjjA3 ᆺhHvA-awē0XXV8ڴ2,nEafdo S-3Ll4+C(Ft+bgMj*I=JG@ Jyk'm+42!Y ѷMpPއ'IW*~J4"_IU4BP5YG u%g5&:_j2jϖZ:)y/OWtRdW`cIGf֋Ci9j,awF\>78]1*cp\p9 o>%['& 3:!ӜCGkTMQUw>385Cn*&}.}ٿ݇+a)pW<'x͔2Q7띊A !|~}Z*OwJ{F A"j]hl CvP y2H d'l& T8>`^G3t'Yvj%x~ GW:L&2g'%!<\&) PSUE4-ͤR}Όx'S60,$;ۡ&&L}:C?ZDs:tdS\zr8FhN5v=;$(vz}v}m4#/@4_)u(s*_23C HXϝTѩQE{= V HǍ1()#o^8643,)JzOu=j PeEP"f<沮Ìø|^(z"v^5"RjaNjeCPk0̋bBʡlkoR!ĔRH'ӑw4#~x)uP~ܹ8mc^YAy JjN0Nm`)`w 16)@n 7mP[P0S5ƃ=LE3$JNIHP/h #SN!پ4IٽLTS"GH$@Y(Jh#BeտY32YTff&c\f|t :5p 5 9'28Lg%-ƉLCp% +6M8 '@& J艡**& i.#)30rCαP2AVhOFKDBȯDaz< +Ϲz95! rd>Yl^ }U}gs`d8adl,F2i"b#ffm5cUТ8'yHQhx092H!qz\zwzarAOO`C;iĜGc =%pI@Wc=4*D!::=^|^F0~=1/iRA:K!m0=1־it#Xam!TpOrA֞,Ӡ)2 G'm=tN4Rg nj9clx[>J81ZG3ߊQ 8OREX/SKHr35nt`<5qAS7*Q+m%CG!y0Ϧk$q8Pϐ}Oe9?I23$b!5ԯ߰/9ϕo)gy]1(7$GνΉ Gב>@DB(Fo,LGzQ&j~x<}8+X M)iǥv̂%(ed0GR \`̜@c AtѡYY@>>TEnlԆJOQñ]7 !Ѥ3Sd%Abb5ns^Rw9V$ՓNq 益8T eb,&`3Q@R -VD+BPh(``'# ahuxNJ(nz']M.O˨eZ*ܬ.@ѥf]6*rP9Iʘ$*lƥN_YO@C8ẏgb$O/O>J?O4byO&uXCZ`'<:%$㹻H|`魇y֪pr1[Cئg?Q{Bb =d$ @M~Цtç" nzN?$OCbt<$OQ"dybf='t0vCrG!,ݦp%$ԊIĘD z.1p}"yIb( 4 + _`Й{XMMpb(&'D1J"q}ѢJ0:͖zGѧ/J_L`cb]{~;.YzeߎT6x7;RΎ0%r== v+>;qI~+>xB%<7yBޡTZ; "xI'h\f"C:g59'^ %,\T1hsc*Lmc cU|;t IJ)9DL(.(cU[m󦵢ǔt T{1U;P<97 vkSg$+/%:Dj;I7I "]'7'2jh8&;nqeLs1Q_x$i {v`C(P֍'H%`v7PAb4BaCUHq:P@e{|$]aY% y k: S\p 4"3Ϸ*0_!AH "1E7av⢧O|y 54H@*K+E;LA!Jj$")3*Nyp QK&exc:_LcF~1Ƶs:h¨hkiJV|0u1Og!Ԝx%(8 8pN"NX \HNg9K+,A&+@^`%Ȑ2PnnsxO- ,BDŽrlBox~ ! " N 2l~Cљ Za9GA93 g `hRs)3,VF*?XE=%w˙rj!|\[5ƅMi_?=7; >?.:7SGc#S2>użUp̉~_Lr r7MK)Rx:dYVs=WY3j(5%:4s盾yw@Hm8ۣ8)* @֡YgN$p$Kmw>|yޒ]g1nӖǞPXqC~>2~HODg(eCe']L&2,d9>0B ˆZ]d߿(()C$5 O\ѲJJé.ThID0<0ŭ'aHb|c>J #Knkg*x[B " 8ƺ-UJa6޾F>'yr+bl%%/A$ő!}4U D Umw{8BKٍB ziI_>c1!4Rsw\f;nѩ\'nxsֵ4M% "tx;PAܓɞG&nOEO&ў32ǭ;![׊ :mxBPql|bqsGQzYF204Y(:H3<P _b9JѺPxW4n5{D'R0ة1DQ]=y0+rR$ ˂ DKPspAs<#KM_@ B@=洫( 錬sVy[# qGpqbQJ0Zk2-[POFDQ\&&bY)u2uGvҊւIT*Pᩢ=:#>;{tzɭ#,]Hd,ev %î$LW˜Pj(HP%HPRhG* X`8}rw('U%U+579;b DQM;Nŭc =c5Nrs&xlx9{UUp̭HD_U r]ĸT"tΌ!b"tW4n.>t!PlgDP9/[k-}k"ckGU%7ZuICvJA=헭%/WF.ޞRU@Z~UYwq6h6aٗ4*>\q4q5Sy8; Dޒǩ3ZcNxpZu|c?o(JgsG$ܑ!"xdp$F9k8ыvǎER/zy<#7vru}\(J!*Rg:ÄNŴJHnEg`\0b$zu1.)G\I׽,fPJre2RpYT(Oi6HmJYc7)!B3_z0RJR3ĖoΪB D򎥠efqlC{Tngurۀڤ""*`hh JJ"(Vۚ*zUr B'q=FP2'GQ@"1CQhD6h:;<&8{Έn{5Ǎ(y@A:ZT:qfffe:g#\VNYMptEGCDڋ xv.fDHpJ r1OI)HAX ={8 Rʺdh C! B׷@޶# (3:siM!s',LMыRGz9獏}9u9LA SnAv ׮vKA X"8*H hH"T'\=h1%aƼ`p ZQT5IH>(zABwș`CGX L 2{535$| `|aSZoR>t ~INR񊨊"*""iJW]ı@=T=3cA$Mfm֓Sf~Byh+P~gq⯦%d_Q!7ddhOY|(?^rS!Ǩg2 D\a.H pcoCZ6l!/2G5φt-\8UhQ=2(J/xd4Dǫ2(ZrȤf F^YǜDEkYr1(y>Ns6uqrI!96qiݍ6MmOwHki{b֭ v4YtXq8*d f0E㨛`URLf]OJ,H LL CLjQ_ASַr(3H*IK,+1jWyy_2l-|yiHSMH@h+GUO+ }`y(&gT;#(Jng,!&e>41f(;q0IGjF"h&b(tT%L^L`PENHC-[֜9xs֭~r Ju}^8+ @1TQ_`0ae"f !&Z!"X$ (&P"f (r]J"q(B)ҍ vT:FZi@)@}l:S BjL2T!@.T)<}Ћ+ġ䎥5}AK5 t%A!қJD 4t&tJwdR%B(hPChPԹ &Hu ODsiFrFGSz/h`1 xBYN"k0S Ҟ1敡= ŭX..53Qpᘍ'u+lTUBITy>ph}dp/9);qL eٕm(*0m^@Q!wΙ8)پpeMLߩts@C=u ?H\ E92˼nV\RIBۙRs2V0M@JĴc1K "i)vjbgIJJ )BUd"ARj @fJIRe%) d"Ke 54!!5MTU5E-M%2QI$43-h)(bƠIaH$bL1@]#r P용fRfBH` H+͚jZ*&Jjf9$ZZ4)EPAJt& JE @AR5]QL3 A:&1$ ZA0DRb( ;i*"* 5ED4U4TQ31""(؊JH$H)f*6]Dt@i1ĔԴE%CD P )3%$ t9=5DD[ @节H4L=;f*("֭5L͛Ub:u4DE-5$DE4;:b gLȥRn 4+TY9D` HD&aŸ\QCOGys0RLd@|r@=ǀ(RRA J>L dW BCmWd0Hb޿0b(`8 _BhP6s:+s.v$'I= , A5 d]$PMFF_%, I{ᡐO\gݒx|}oe0/ny77:+JC6;C.mz+5+zP&u/uvQ'40NG(ߟ8@h }2A  }ΆIc胧ֽ??p"wş6B F+~2/oC|# EZ`QDN%?+ )މz|%Np҆`RB٫а3$9TWԴ A7rgE2 H>s9 [B k۴re7z`<=Ϡ sy JDt&c{2 UApSj a1Mv#yb E"^Ī!Bst>GA E=8 xIc!)$#_!3d i>͈\|93E$#Z VbmX#2b4T%;c%Sf ED(t;DaH@X&fDUQCtdgiY}|]4 *H^UrPn'!ǿOIJ6T:t(aZ-xGw1S$18_*!D? <." ,*Q4% M*4q(P(Pi4C* 1Mv&>Yu0ΜI|WۿaE=0 C"00Wi@>31& wQZH PN>xlјsߊyЃqM0^p()Xb\Ad$:KNS Wc/B; LDdY)MTSgGDډ$X4ScTժ΢UP7 Z Ѳ&)M ( TU>FJ[`:)9h(LZpACBhY&jBh"UhA*(EIBTbAhYTf*A4z2Ϡ ۹4s*c"p/UGVĖi""H.2}bb1T:w]OvрlchGƥpxC<>tVQK)b5PO&T] D68[/t"TY&#$zR8AKE6ZTI$"H" &C$70ǒ/a"~61 c5.'<^u (^8m?O ߉vc:(BaCz=VL4/;=+C]$'q2VvE_ #Y ps4aq X ntP?ISSo0AUpeKMEPBhL)hHfhbH 1DҼNDL,Hy2iJ}f^M>fssj'f/)(cA燉^?¿ iD9"UbOr͌ X5ߩUM=Q?m ^(D !*SmM L\FDXk4'~2wB1NJp")Ggf5Ee'pP &U2A_mڷ 7%Yff_+O@ @@B͐e6m%LcO_w4UUEUK72xha&C2RLg>xpu ;w tiŋDA@Ѽz4>M)|9)x<!̃t ( $QZR((;l`;ߟ(}M4?8hVn$k>n>0^8;y -!Ff~fflQEj}.p+G({ . {DSG(8Vv[͊*z+LuIP/.|M1$!ၗY*B2 -d()§b[OIw5J PJr,s*IPڇ'9LzQN:ޖcphR(RSbvAX $Vq1k;ƴ=I(fZ%lw c6w.)@Ģ(w*"Bs.vF36Nֵj٧6 洎VURd +"Q"bkSh"m\b\) TF'r#xt;t- B_ Ȃ =x@i|%E g8͹wl0.2FH3I@At,Q|3gS[M >S,|{eLjp@օ@іb mZNxZ(Pyڋ$pDzr޽.Q냄n jL9cCsOgK d<1R(R LA#2д ҈PH"R\/ǒ ªʠHP  !@SOgF"4A@>TTMU+>D>Ia!X G}WiU޵wkF}>( % to&6̶2o i ~B`1AY&SYr[a\ 4ZiNAf(c[o.dt@; ݀un{ aM)u|%۰w((CG7sy>5/xwwVU=]{2)@c{^B!e޸;+ey^XnzHP돻{k@*T)׻N5KuK}ͺkn ҋaA{]/Tk1ힶ>[ᾟuTYmI;{]}y{kiLJ^t'nZfξAS BQ#6Hg#`}8U3ϷJuww^8om'7s`}; {*rlf;JۭUZ6`tgۣMjw4ȠJ@6WwǴ$šiWEA@`)Xt\UF*;pv)AoqCDhtʤCM("4*D( N}*'>y<ظ{zꝧ vnۻˍ;=UѸ"kڶ6[I*m=cT}@ҊC:PRvѾEKnwpFE{ڒz 2UsaI`iz֢EX=}zn2kj@BH Rw3>؏{MG(>k]oj<}67Nl 1rvQ{``r{M:wwz}ec Pu^(@0 CY}qA{^{ȳov1}r/Ӛ_}woム}GؕYjJ;<{;һ:|[IwӼ۞s6̏O]yywo{|ig_O}uK]/k*}{݅of{<Ϸwwt쵾>5y׺w vsz}>7װOoO}{|A^nKjMݻ[N \y!׶jۜ۬t֊clJ;{Nw!튝[m+{.+t}]]VΎ[2j놏7fUvpmyxz{> ;bw;CwwuZ8G]h}ķi7k޾@*/mWm2 Zl( @vO*FvNᒕFOf#[7La>ǢI*r=(my+ǔ{zjRs+X<vJg{,>B!^]KmC;^i)%%s^` f˺Lm_zWt헽kհt}{M{ހth;y/"(Li0;)+ w4jiZz00{{p[wyh^G]4!n[:oss Ui{mNVskvmĮ[냠Ѣȳ+{m*%{ȗvtAЭ3K8-玫O{|5|w+ Bl Հhf^ګk_y/#2퐋wo.O}s<"{{S׭vyo_jxu{UR ^컳Iհ#vݬTfKwNwt@vbR:2 UU@[HWu +|}Uk-[{wp9MwFmZuӦZ[!Qپ7sxdx!@`SfA@T!Cej)Q뫩=ܰhuկ7Ҋ}wm\׶ٺ@T/!*CS-^T)]Q uV#4$ݶvδR{n[WC;{}L}_GT+&ԝiWGc|%4h !4 4OA1 04f CHC J~E==#zhQ2$"  LSj{TCOJ6OSѩg=F40@" 02 ѡLjU=Sȟ 4 !IMLM4CB2d4i4&Boj6 $USA{CEPH|h+4QR)W2 P@i_jP?., 4J zbkX)К5&0C * ?Ӹ4IaoII(R_oӏSxx"nT, %* )J#qx!jzx^\goP @UCJ)@A_Wz:w﫷TD*|^/ oC]N97YÑ) 8^Ah@v^@ du$!X( h L!T\⚐CБ D$Jĵ TdvBҹIL  .DZd.($ X 4Hr@$Uu\`Թ% 2 %h) Y `` JJ !Yit\6i?pi83@rEP AJ(B"BN )NlXV#J5[ LqF B)p`XsO0MJ/EP.&?V*5r bH&.s iZ0)%ꎭQ`54@D BQDPS -DADGBrhGd a0Q+?uHʀ(ˆ&暂"%H(Z"8a:v-/H˟+aKՂae|ldny&?zeL?;41XDV$6֨ds\x|}G"Y4|s?>P|ՂhJ󜏯￯վ(fHH (be%%j! 1A @(A߉apfS};uDt"ٰ C2UXȈ18M}z%*ËU~N xJQEOۃ1DH144BJQ2P E H @0 ԲDL%!K4@Q&FM70EQ0 UH%41 H +5@UH%TB4DLH(ґ P 1C R1@IIL_Xi"dFSczJʉAKAr2 VN2CcaU %Q0PBP ),HBjzSCYD@9VJ(-)4DJҒA2%I"D d B-7F Z)hi-&HPĭ JP`EHFBB-JHa@$B>qJi@ d Q.Ha$4L$ M4=M./90^ ?YI LXf**I)i(hyQB0E$5E%5=U-w`dTQ%Db@ b?O?.˗3PE)D"TYBYbJ?蠻r!ܿfgi ZP=&E-A@MD5PDF@Ey+.(" ) hhF" (g}&)˦kH9eJDjSLCTqԟF=U4}u5`v3pQD7Ge 9ӡ%~w1ʢOɌ_?m('ʰJ:cҿ)%9Q)׆tDR _H1"!!6#dDevhU ^! #+ E#F]>2PAJ>"5UDSZ0}9;NDI PR$`ijIJT)$(e=EPuL)rJ30%(i|%J' `8Q$!Q$4!122RP4K4J*2Le jbJbB`)B냄-(Pm"R &ia!"%rL*@JH``vG23}RP$:.NObAAQ @PFzFEBi`e0(pI0ĥGZ_|%LT%'Fb̧C!|LKlu5$@!@HDaЍ4Є1?ǙԐy@bbwND s2٢S\0)25`HC(E 0#Ǯ@w()E(wom|%6R?e.zzg 9;L𲪥# vRvUrWgKon8<Ez5X̀Gl\fϦ.ZXBD%gW/'?g P/9s䫩[ZyQ8xkK(VXoy  Fm:=4s=e;˜YN/}rnlCs@;F 5cjvCz>nvh,@Ƶ2о _'ԎhE.NHfi:պ2!c^ܟ.q@?GEpU{5cLZ _n$}oY! ٦t YIOsCGL`Ǐ"QrSm[pTǠ&S0!Ool4VBHr)](0Y1(6 p{az $w5ba_d@1흘&Xu3#.$37 rCjS\>L|hyrq.q#ȚD"NɛJwM1{iTHL$BP062)30R+94lpL)T‘u2=㘹`*t8Sx:9G냕qhm/g {3r u'Q_F{)ZS{c&gޢ_ %a׫bxԬEMsOcSx1O㡄\xMDVʫ5|Sn@}>}T@>R_~;RLDT %$Pw2/:*5S͘0mNFt%T262W!eb)B*"0 OIȠ&$"a4E'۷U0Qdy(gRnL};IN_.a h`. I51NIb+U:!kv]#jr*XA^N҄ VGnDdTm瓆5C9@c1ϗ-IcCӇ[T!";~]t0٩s)OX_">4E0cūsH6Пtl%΍4Ce>EKkg^'rnCv1RPČ %>ݾE{m걍zKlv/YF A:J1 yY pl|X[" CG-OΪݝO\yo"l3Erb ztpڣ 3Ux% kAj1nj=sN h2H'!LW8hF#tI绚7ynW99r7^-ی{$cpflT8:h.<D4Q9a˓ nv! c%OW1?78]SLlETܩ h.4r\~+bI0^\vW#PeF|tz_laz^?BI.SRjeq8ƙY+Պ|vvŲMҺ0"jO{^[9$]OF0 enS'(Wsfu3^\5nyԠ:MG!}7aVJY%(Ih#V~j7*Ħ@Ej|/U6ZhaВ>ɭVn;g*4 dɐgu,8Y:)-,DvIlVUt+C|z+dKW;"cHwFmu{V \Dя=N!Ӆ/3e7-Ǡ^80r ]L$shײhX *OvhE-"ؐdwrc=:&gŎ9ޚsG]>(}{ᇽ)b)R4дRD $A ƪB,̐" Zh -Ih ]h 2IH!_HӼ{0ppogL5(RX*c ϗZ`e&Gۃۏd- AT94Qwg'oJ99Q@{$2( I"!\4nʊ(**L̪#%Bh)JB!EV*,:^Cwh{ҥ xxk0ƼѭՌa'NVc9bsьȭ:gᔌЦF}M'k $?_V1>gc|_m ;E"Zu%ӳcsS1EdUL(rsV0ų&#P$!6:8 )dD(Ex0TRzD+K+DD;y4M*[*.kA^TS:J; 2-F_7fSY|/T~ZC[˝"59f*&y\/L\H]sb}C.NnZIͭĐh@3$n/!hWj ށ_[Vh ,\*P%5 fRѹ̩"FJdfeEEUY W7[1ӫWrkAP8!9ނfgkh =;v>{Vt:A*F$I$'8[^Bg&hZfׂ37{4yd 'Nňv{myM6/^r̿GNcY5us$ g;a$ܸwL;%,>>ޘ3ޗ`DO2IJ|srD49_fpx$7 dJD E냦Zhj-~dZ̐L4(ci^e u%(*h%՜{꺊 k[,ƣ$f23r ̅dlr _r`:+q&iMYB)UqAaC 7qnŐ]p,($$f67Ns(JSY8؛ӆT&e$Q%CI7PE$47%- ,ժrX)R6~ y̹zMXI;7QF+0jg9a%ũqW18WQHEK%Nm6 #?mVv_[iиjZ**~ZXN#M^ L?*wJkv/.) t+L^('CP/Vy¯D/"Oo0;H)P z 'g1 |̊s(CZ=Z|Ԏ9uÓ%*Vnvlt1iiߔl)NԬYA :V(Y嬿gX3t2 ,8]zO8 #ȭQDsBf0R OƓ?mBhM q#RcØkO# iFjζ\h ~?&5MUc)+ɻ{<粛4C{F%5~Q0*]ecƌH[3H+FY'ᄡ2%!id>'ҵ(ZQbu,L•C~8@C8* hp74DFʍZnF3y04MYJD<ȠSv=m+o$ dDtjD6jad94YqKq̤D>sf1b[iVI c֒lrp`&>,74bVE aQls<]ŏP° mY) 60l(t ,Ejb 8NJՑTESj\"(~5 &H07V ]:8Xj9) `F6ZlaqǖaK=H5ĈrFIƍ$TjpՕD; + ;k@626ơ"pn-b+".].5T)R5AC7P3&UXiRJI0n) Aϥb(F (7bv3ݬPL*y`S οk_Ngu?x{ VTM NDI Nph(}~ݿBlﳉ0d {s> :Nr437=[U)Jh>qz  *:e8EȀnrǎ|li@ŢeL'G48/&nERP'EgC\5)f%M V3y3t")a'! 7=< 1U̅$͢Y13hQv ۾ub9i3єu) M!|'[WZj=ퟗ %:bP*|Dž풞 xeۗ}Ͷ'7go:cVm^zHFs-4Z1ZĒC}>$BwZ6\o&h N}u'oI 8dbYnf,7YV̯21K1O`=C ÂNW{&[eYvERL9ChTv{nk]}s!tc1oL[:LR22bP撅?c%5qFխɭ BpCV!m%:?A0~zzyUZutI"F/X]Et;~ψ渐BQJC>eİvDy*Qa}ۧQb=nlSzDa*C{k@F E W.~׶o=5Kp۰(H ?A`sCLӯqt#X "aPUgSVۺ-!%0"!GRGQ6WX 3l\q50ƍ>nK436o 'M4&qkdC$K}.nzf_~$ vo"?퍎֡]9K<~ӿqb ڳҪzY UM\`f|"j5BXm b\YcG6{YKǣʆ+pdN!\S" G~#QqbbBٯË>>pUZ)>VaR ??k00f$zG?%K)]0[%[㭍to5WJmCpU:>Xyea7oooqg5˜n#p>?%_>8>}^թzudpn~6ĥvt_Woe4݆4fPxeReu60 J}q`9BD@QHq%[̢&I$r!F%}UҊ 쑖Oy?%FڧTo㤚ZF\q*)L.HbgJ8 G"(K[, *G:b[Ȭ,"]a֌ 󝈈IYtJËZW0dЯK6=OSQ* L1RhRbFL0ܧ#P~ßߍ_0kJ!i d`(NkvkmC*N\2 ,l ܶHj9YG^lL&u_BzU\V[ jŪmYKcX,ʹ?|1^0Ԕu'ӛ'!_ RC_yR]e]o0MW)e yܛci-n0靫M{@Y!\hM>3?0zdYZ8ay~;} "4@SQ_ed2| !Kh"ÌRR@QKHEL/ÓA-4%$II@TE44b0dA P1I+CRBL]( % i+``BRٙT!K & $& )"B$b"B&H"P"R!JX$,*" &Hbd%!h6 'TC%=8ތwB (RU'0u]RaD3*KBhQC)"eJsӊdPTD o2b)NZ/3Z-(f;ARV4#CA?rEgc.s̱"")ȠhRF) (ov)O IT3!BAL!M$B4M!CBДD $JBR?la#"!JH$Jf7DU#KQ$UAKCHUAQ P(>% R4-D-HD$AHP KR H,Q+JMKUTbT#J()iB %RR))RbZZu4M  Ĵ-)@1D$TT,0$JD_Z$bGPC0AA02J0 Hx(DBJ3 GJND\cNL͗l{XOB=Z$"fd?FLzN[`AeO?` C¯>&anG E[q>Qg"iœ&C^Uؑ90g8p`C,!ԅ i*Hzih\>FaTx9V%~O}3ra| % B!^ylyR-Pp5D?݆4v#-I3C2jba>J5AJC95IHPz.%2%l<17cDd?wFzF)vz,H'd?an?歇K;0U 8Z)Ӕq81Jϐ`%3 S17QD = ] YdbFyR@ED4RR*"%:XԱ#H!QPDDDIKWy( $jjkl6@rÇW>NVKM6R.G}kI%p]kX9 ĉ,-~su,;J'Jm_}V|$JeYRc$ѶiyQ(ZY]U*T%00vݚ)f) 䆅fR@_]zcM};EAlbUV"Q,i$ f**yJu@bMC´ƶпj Ak*4B17=2 5Hk"!u?O3:IC B(4%ت$dt($U fM ~3dv* Ún1MxWKDP KH^…yd0,𦦪)2\0@R)mԺPGPR+]:?xFHV:LA#+Nu`ŒJ3h3`"4K2P5jUpJjȑ c@Zp4TMdrޔ"%ʒ0(}1/-)o(#fEŔm>lB 5H9cQm0I[* `!`` IUN"'@hp@0$ƃ<~\٩l%,I@Җ `5Y*& ZYA%WCwLk1b$ 56fL RQAJSM2H4S@$J(( ii&&B" ()* hh)hb " *V"#D`HT[ӊ4k q ;QKL3@R&V\2K( i1R WtxU!Dlmq@V4s$Ls`:h{h~μw8az+Fe8VXŘa8CaF U1DI2$Ԇ L iu`E&E%&bUA*)b4@z3=enDL9eh(12(Pi'uoyc$FL$څcf5do1fZq41cU#Jj4[NCMLAC6dV%%I,?1Y8 DԸCD&bKzs'TYm FU۳KaL eDdvO㝐"vꦣCw@CP%?p*8 p[\[H")Ő~%|{^C{vU8ֻo KsB&dezxn G`G:q蜻%{PJ΄U;iM +hldbkc;efUԫ]9 r!6.^!c u0|f/ tuy|t>:z6\S1Ŵlz?_d2CЍ/[ւ!ba[b$/1\[D`k[" փ2lw߳u3X,6 nz"ѨΙ(uBX}]mxq~ : Od yP? y ]E]vlN(6D կRcu1>H.HC}{ǟ*>0"uA>W>3{e=;-:i~wǫ_IԈ0 ؊BR\=x~m zRgB;XvVM1!4MT:'0[1sk*" 򜪖/u| &mP)a9I]vVX1W-lfMx;y]z_V?cV]Na9F<4_ZXv&:B8SC. ;egKkSzDGc2@y qhOqY.gYo5h.&ɠzF=.QnNPvf:U=|)Ay"gO{kA ΠE!Xx|GI$IjI"  $5}a\O;Ms}qS2M^UdT vWyCIJ~s.R&EdmK6~LF R'Ә%X`0coCU@a8@ׁӶlŽD^t 11q :1" z7~%f&0^0^0޼pgf@8f)h;? lwیеRh뇙7 :xA X"D {\qRp"\E``?"H\ bD2)\S)`bM1 gy{885nVɜ&*/s2glqo(\TQ8A(6!;HOd|Q眹ߢgp ލr5rn$5[؞;6!7!w0chrp 'f1F9Z[RK-ө<;[joq6jSiYW2*8φkפgTYΣZ\.L[CbKgg~% reh߭]Os#;LFWxe=/a? ,LVMwxo@fa[gy[#W/Sx49Y^Um9 nxtf"4͌j0!W٘II3i )>$ ֮fBX]2gd$a 8GǠ&m\DVѿΟ(fMXyu~\ e3;&#mo<URm~?_93mFӒkb!q6A_YqiL4٘B-uZ Ϙ_;8MνX,ߦ&wg!7V!Ls%s?FHʼnv#/9i OM)L'p&a.JdczGpxK/[j `y ѽCƶgiNώs<#vdOf^LDo|N: w`0f57x?!gx[Vhl`@?dO'no8g UvPT)>kgI:q:y&J'OV[\&W `M@ xzP0zHAF`l`kF H%ɳlLHŲjiL` v`@Nƹf@;͏yO2 v)z}>GR3%ى顰Ȳa}z!ZeY<0r +^T:m&l|=xr\l/`<'\᳃~c{daLOi"2L'W)ESl=$ʗi@3Q:On#fݑ$04dc$[mG cZNu3qi=$#gٱȘFhMXĄGn(Qv`{}x u,_ba y8iߦO$$j @ݮӒ7>+W0WQ<%`hGu?v㏮"RMa=>{؅NϊU4N ؚ*mm}8o#b[8DE:ZM$  \cX1YA¸)W(9i;w˙"A7]\oi",'qd/TA5>Ĺ=調c[뷚GV5 .y7b MLs;OC#uMSݪ!&ЙO `;+fI9K آʘz>2h͜^*=[ }ArW*.0Dc8CN`{F WS9Q')7l ߒQݰd#vSwR;uR%r\p:xBQC[B$%1ݨmۨ2Z6Or-N ,W9O } ~7 צ[ K_AKz1OӂޔIU\x>A <oof 1cWU!C|u33Zb7|TފykOi"ٮ5h:H4Ԇ^8㇠e h._;^1.7b^^G֌x,-3}w}>Ot(6z|s˪yy;'OiF@;5&3eIooV'V{,Eَ1TUVYAT5/!фeGϿ:Mv 0I/o>L~+;A٣ñ\DT>\DpP<-ln_ۙ7e?]t_%; rN]RLbxNGv0' |}1h3i@heh.C^YF3` ،n+))뛬YkVə3׎=4߯4Flfd;Ǎr5=# "/f{޲|> :ސU>Wl:|WFc^*+~~i6Bcm˥5V|v1Dt8<偗PPDA["sM Bh1#LͲD&mЎm&-k 545?MG4 &ZHΆ9Jh3CR ֩> \f a+ynAY  N,0hmhSD lYvrx"utdl:vm5y$ovy]0l閟u^=19|m6k kg9 Q)ׯ߉wޢSqLxcc‰2$emK6Dx?YVhuͬЙ?ΫD;\\Y-76GXR~K·>tG h4z.+Ce ,CiI+uáU͇2c䂧4eG%p A(> Sw#,4VU[Z897^h([q@}Q4QZlPqJPK3vDj*Em",d4-$F;/DT<5s=ySm8HDz x2b`oP%ɘ,i:kIRM+1#4"~1M65!Smg=~ ƿ/w.FE΂" ZE?^×Ӭzaˣ*A'~1}hcfJiu9q D ͡[j20Le*P ԃ˂HA#wLwÞ6@Əb\rc5lkM707rMyLc7L;@BZ^0(Ru w2@'Gt_'j=XM\ (w&Ҋnf н'Yu%ZeڀD'Vjo:w vGsffcƏYd}pi C z^ unN⎿cN"ndl}$R9ȃa٠13N"فO9:[ Ipaaj`d\~ra2"!zCarn],C5G*cSzA|RBa$l9 9v3u۞oLؕ}(" B 3tN9< Yv Nɝ (Cο&w 1i8񨤹_o~}e@g5S%rvY;?;rb5v/$XeKBBzgy~BC!юO(-TEwguDH/&s]8o(ex P!NJҜ7#O9. ڌw'\:X$xosT(#gC슠jvC,'D eXh2j?̸3в7!yh5NQ9UCȢU[]ۧig3ec[vzkQ(j[ iccmU"!+M6ʋ.{ccכn&}QXU 0M~c$/ٮ0WV/4]p:eQT>5&۞~mVm2m*5b;gs)u@SA (HsĺݝH"sw !$5csQ {`<.LA&JfQUBPPja[hκ~S M; M4MUM\\6mqqC)}efnV>/+.Z-vILe]l~8n{ƕ1+־Ŭ ئ7->jh?09 G9WH"C7g2JݾdKcTL^>pB@po\V Sj2^DO!BPqex(VdN}+-*~|!] |abCBf—W)IEfT|^˚uxU>FcowK󆊞\fȄ"t_)K  k%ՄL1~>y)0yA#..4B P00HWͨ{jѺ͋Pv\D̚W\yS\[~{ܻ,ZȪ錙 Ѫ˩YU]cZ5M+ԘHĤuc A+@I0Y~VSҝ5j8!xS1ޛ}#oaYƵo׋`OO6'׻FTn`RBd7i2$( Bm{ZzbRK=v#%v}j<N=Bp=p A]kd;~}P]ӣV2F*EB*ϿLng)C-d5lm*jSy%VU`s+Pwj):yK_/1(eJZxo e"LXK*qx ㎍\iӤ.B5sIv_Tvlwlc7 ~nȇ4%˿jˆ+z5FpUW֯1rɏIvy]cgzyʽU)ްnw1 =nmZlX"Th*XQ9L|ٓ:ao9q4p8+V2'ZhUFBI0iʨAf7]<ޓA|M,$AdQ}Kc 1SlVJwKL >|KxsX⋵e% 7oV =^0Gr6Q͙¿G^bT>*U"7y`xy=0Я4%rwUgz#g)R< J0!bd 3`CZ7Tʾ4sC֛9N2<;Xծpvx"S/\l'2vކ9W٪fn/5"f01L_8zl!hρ ~TQ|/ ֞xYKR>XcG{73"|o;$~ OGSOMYΨ2tmToڦɫ'WM'3_)w'V^t)VY0:<68P/57kǷw}f2O(y:x&2B0M̞PL; 2 )i4` )J,G~{cg.0)<$_r{Ll_luX<`:dQ5*7U/<=$$&B[ͳ$Ξ]MPB1=oq$R' P+LWf%[$5m[ ϒq7OZH ⼭mZ)r4Te-=?.@z'sT] $)`&ɯ\^JfWӄjK ɋ5<|`d]XNH< n0U~a Dpeͺ$h~ yw 0=At@%л{>#nY ?# ə[tW:\fL8M%ח;D\x8%A0˨ bVȁ.]~L`¥D;E}0ΌJ7.HȤgat32xW;#ᶭ|0q~Б|aybo3;߹iR؛`GzJz| oؠ`w GX5@FAS/?[M|?Q32/O|7ϝrUsΨsNNh܅m:/M&[޳hEjvqW2B>Ft?dtWF'\{[B.޵ߧwTsܹksXxX‚ک+o?N ~nx3muhU,ʳTЃa _QvD8UruMNO0Rj+HG®l౥kkGLj:Ň7Vz E;'#R%8WV/:&cRs4I rܼjj|\&J tZ0pX_R[;<&=gfᲠwgI#ZA 6(vf@st(N;co}UI@r#_~q۳S*oik.𸴗ĽGAA5ľd la#C;GxR# CWe N{q7k/;Q5;+XfsOT1tݓX:e?XmE}?Ivln5[g,MI0T9NXڧ5[s+[8r\̵jzwu-b;r#ԎvHJ1]:MQ&&ԝ&B=N5\  v'8kmpG ܄vTu`5TVϦ"٪kYTe'Rv4ՠ*oK XP ڭٕ4g{^8ʹA"Z8^l2M9qvH9;WM5182$B]J-8u\r NT c]_o?+edUXF-UMc RU||"󗺻WvuaǏ1$VLҠ/u]|=Y[۶+HHM-[VhRI# 0~Fl[M!Ѵ܆ď ߗI >pei01x\ݾc wZ%UefD4QRFQ8bU fBBvd@FJ,@~M2_w\J^+`Ǹ1fVbLn7CCi DUmYᲗ5z=pTBּfi\q{n#$sH6RP! "ÙrWpGխr(.j9^<+"7#C290tB5/6;~\dN*Ki@I v9[SLáЄ{,)>?{GB;1# =7ԂVj(^a&MD_v5}13ѳ1]>.!,031NN{gbBIW[AVz#Umئf}>!: #4Akjx(T-h>FAeK$ `T1 H~XitTs\q$$Ś X9sӿ(Fs[I`wIvc¡LsG=>oϭVީ'|0͚fG$SB)1"Xe?MOGo&$}l*?":H"i'vyޛҙ 1Ņt?"?5Ʀ7;!<*E,sDo>޻/B%yh9!ϐyZ(h(((C݄tML&[]aYl刲PԦa zсDWQ )*'%׾LOBñzl~\KA+ȯ?۶/n"JO @wL3z} DL-apxڴedž?`,$dW0rnf-w}Rf{U0 \j1LG=eI' $se=DƼgrhA{t>7܊cwF/̣t*4j^_j{FkxO/sz;c('Pxd`|iHvٰ兜|}˕gY=y9Bw]m/3169B䃐bqCcB9/5=љ"Qa6t |//[Gh\ڶ1 |GJ&ޏ\7 HY:)ؕ| xPS#Ƴ䳹Ҕ$!6ap-7!҆d%tw&)F!" "Jh"j!x-Y`e.6R %( ;sxՂ$RG,ˍ&`U3! b)==ގ@䳝۽~.~j )1{"H_8U)h@<2Bog'+W@b xb#)܎cyl8xFQhp漀p5:+_3_𭱅<hp=o 7skZp~mSi"#4-$JFz"x׫Za99RI$=bZlپ q[<>%%~js# jř=/kS1`j8۾"t뻍 ! iڢ:7Z+$\m}mWBX V$O<>p{r)s|PsT@heGJx?7/==q߹YlVe#6}!vt!Ly=55*ꁳ)XZS#y;6Z_ˉŇZܒ?gfy~N}a!JIfnY 'Vn\|PicqE(7 ]LlDgf0~ZU}مZpd,·[ >1`,]3cFls__𑙫\Y4&WC1}߱CK.|݈#.Bر"͎}teLo1AևL#]:Rk)4YBG[y w5eaD^Zt`" øWA&9!Fq fۘTγ0`C,2;#nssȌƉuDŁj y*pcQXm!QK $4a1-lu#mAEcJfQc&[A=_+%b+( W4f߻1$1 >Rq;6QfCvt$Ug>}k(&9qRv1K>q*9L$0YxSd7--gҖcxC$vqjC,̗F/>&g5 EF{fdŊOv v υG8yxw{(xA+H1栞?/GᏗ4pLt$"FUM _*OUm9eiXR6 0m3$y$$)FL ?#̡N8;'7u5m f^Y<Đ򢳴p9ƗK c!5I5s]zV}+2L4<:R0厅Ўt'.f"RE3V͇he ̣Vʼ=s#+LQSIuk8c}j6fQ,?_`{@in{U\_A/Hzy30%4ySk2:[n qMdBT梅 ÇVޔDzwlU[ 3-[zaO}?>,3Zb!n"+:duCb1x:3d:g3y/DKJM!訰J#y+W0\rrgTһ.E#K(D`TP:] 3u>ֵDСuj/B,'ګzx5;!,gnz:qnWG+юwiK8i_|Mrǰ/djbD f^Uϟ\_Lf I>^c|#F*9vmݵK\1lrൽ)J>3'KV6 ܊tPwxNr\&\Q_3s>C;dwzy%ݓA^w0,Ɯ׃qu ugZdauOMԑ{q=:LC.wqAI:%9όcv#es^LӴQsd确ݕʚs.@ 3eve<q)m\'\W%A~ËݦgH-PK;֧I ?XWm]/60sޖ> F `F۫dCmr]{v3!|'p7]Y9/Y\ʜ`Z2x_ y'8oFOesWv y)[ƨ+ ׈Ǎb-xaTw~ ׂEiPYljFis8R掏]3Yhg82?p}z6t*rGwz2ƫ,LWhGR^$J/TgbĻd (jQ:9ma$&֦cQ}.::^]NBO24-YɪvۅįVd)bXbH|,oz%wuwALPh}?6={#BmU̝[ ~G&:-#O4 M.w4$Y7[+k o\"d؛ B$.P45v֯D"OTh8n'-Pf!0;' cƨ0={Xvi|u z|%5DxꏢnaMxoM=J܁Su9u6m:BJEqO\5զ=]*:> \ oˬu c 5 7Ɗ3 9NX%mVS-* Mf9S& W&41 FۓVW9""8}Lg(BI&b a,PW pѺ-c:jd6ߎH>SVT˙y|Yjc3Λm1{83}2 kfrd|0K7qNٲ_ZyR50GGf)rb42۾+Ԅcԓȩ yur h(@Xճan@Շ\S\3N]؆ <8%_4Iy4fq5Y a9h`f]4N+~L?5)uQQrHJV  i婇CQ\(4(Q&kijM{uiS q0Qcj\-qIoN/.zr_<袉22d  wenJs|x["Rܼ&zo3帧TOoWBUľ2r>s wI U (iˆCmΒ}* ?%0(E {D[Zd23Xnck Ep[õzi3 >Ŝ|0CC3#EN;ߤS8䏢:ya7΁Cg ~vG>Xu<`{Y< 2BcgKdX?`vO,nJ|њbN K?uvOg $O$ i o|K/z{V|r"N#WǤb~ ΞbȲ ӡqRzBGt8|8 "ZYOx^S:U 5-=-ta=~hŽ9T!ᇖya NVۅ<*d& K9#,D@9,?gWyUVScY mżlff stnM]zcЫݼL(ȜjkYUL8o`W&u-%lnF<2ytwbM6jknq>Co۾L͞Kz{шֆ|{zx?[z6 c50# el p6͈gvr-o}es# T͘9:`Tg$!܃Nܮzi?@uKJ*I71]ߪ994Y@ߜ~6%P_(~>״=0+cɒ:8祭nddž]m/<><"8"IKfJԂ/kr,Mq_mVp1jͪ9Fψx~,0G+("1}G_!}6^s%8?Llffǎ/^V[h mK.6<2[*ZZMd, -}&򬝺BZ;󙵁tHh,1W[ȜSNkWLicvgwӐ۽ݐ&҃cZH+Mc*["aH29Q!dMke&=6]]W/%mT$媹K31NQqowĤIJh)ii6m&R(׌/|^quDZ:5u13~kς^w|7M8Iz'O/'&K]"B.q2Ͼj%%/]Lo, Jʊ6Ȳ+b-!:Tjuύl)ljB ~S3livliX]$kMh7#MamPȮlנK*&L:]q -aB<߭{V;^qyf'5'IΦԷ @u}7'QTv/Gs N3L б @i"2ݕVօEsI.ATZu4m͸hvʔ;* g0.莴q a FE?#31jZN̯rOr֮ZEGe0D]lX+Va.1h݄s 2#.ҭ6/%c?|`ޛ qnI<6P <*2&47*9j;̄a~n?]'j-ҢHcy2(*;,RN)MR?s÷pz@P >[XEcс DcCk:s\Ɵ@Wr[ҍbʼS4Q19haE]"}$=|afyN oOHtdx$( X[9Mgk⌴̎l@4YL'g(& 2v0tɳWz2,!FWU(Dh2;&D!|rA3r|"vw[FbqI~zk)uN="DfD3(~VG$aC^x u'v8Q1cA7.t7})]`Y]UKސ7G5z./ CFN7y0&|>}1X7"$٦mFiB? Su1c=4J9g'CvU44 Dw[؂0:sbռbBfL$13M SO_/m|L 6̜ gj^ec =O,r"3zjl:G% B SfIF dHT:?Y'5J<wH,B'Tms <n|nPƊ>t6묔=mCA>B5zS6oCE"t,]B8&gNx?䘯e{;%j N924SZ訥Vj/e??-Q ܞuÅT|[Tqwèe(l{q=t"P*Exy(^12%Δh !gxDC%A6[M)Ja Yzc.TD$NA;f-t]$Ρ7$ʡ4u-͈*tx8WL':{ȥ6,NJCJ9m1P1G⁖;,\Fy4sZJ 'Yu.N|'՗ٙN$~}Ӱï+[3#HH"(*Q)QP)Jd!HPJ 3$ 4#Iˣ x9_^OMlŽB:=_5a}~ynӍ _Oۍ#ϓ[V㜰5Fuj:]K LB}t*7\QC1J`jR#]iThYu .iGAl_&1 U\|uJw@x9v?'8㸪{SIUc?%$]BA Jf-K0?홙O${OƲBx9h?'O tUA^{g7z9"޾+kq$yqH> lȘٴ?:Q,z)q䲔pEo刺p$ql~BY(}O2d*:Jo-)\T62[R Vx:>nSl+z@t7dgΖSP"WQ>ȡ2ਝ,LONO4J!IqnrRt05@ C! ~G $YMHʋuAb`ob z|S ղZ+[ӆJwX#XSvlED\T {(e8U&fYL-~eZs(=uQczYNB9GoF+Ν^am {PCbϧ?s>":M|RGsgoZWpQJ!w$Q wh"w0#rZd0ahg؉$뉇FX[ WԙwN]UI7ks u%WESCkj 8JMVGͳxGU=H9CFfB<bSo|9dс\èq˜39Ћ p녃Qn_8AHAdcNQ)nL:^ )vZ<6jrA{nPśc$2rVvM1=p 1nsAXW\1Șݍ瓱!bj#TK6-GhVl_f0| ƣ zv­i9r׌(;]$\4;zm^ z%‹b%hu6iv*zJο F> öȈф!$ gZ-vWN1͍ krk/Adz/"k`& 'D'%~tc 44PHj&-D k>/MʏL.E!hsگ7Gzs56'2L$q)]3.>(vq8E$FU~ 7Pݓ&frܙѷ~#Dh+./AyEidq|.L%:͆Xޖ8Lx_,;JZw#Q9u,{YK(ΌkJ D$@4z*\2(xfe=ANwnن!!m38/_{vj1J5'tf4oDyY,8Le~a m{*N>Nߘ.^jU?%]̿#f ~q!&2TQBXpR& Z0jhzWCJ2i3y&Zmb00R'1fZ 0D@|˖2&V+[k&IF|4>,$ ʒi6h3+~JVmu߿_ec  ֨Vp-X߬7\l:x<7+ Qs{2XaIS4) Qm7\9ǽw@~隿m|4{)g^-kH}c*YBؐ%".\^mP|MOKGfnd+񯱼f~oq9ҙy`nyf4GHBXx wF7/5>5B#^i[^i!q#BW荰SR6\K@J!i~9yKEv&޷UpfA 91QUoXBa4t~RO~5vu}ϻbGi`ĺ& r >vfz .W--J;^8M7D[:BZϧꜴ@kEGEEs^{וгLNCWj~= `Wኙ"Ukӫ=O2}4wЄdNx=jo5p>tԹD;4; wgܣO5Y/@V?؈[<=ndTҤVDfHN& UƂF Ը阤Cpbp3kc*+f fqJ+j8xC5% e,v1@_1U&v':\6 xDLMiXóNZFSA5SLkz!ВT-|BDSZR )Mq'&|g 6\f6{w(rIm755P{Sƣq ?ƫM΢w)%# eq9+t,qan݃^':MsU&5ɋ&ehAqẙ_Qbr)KA:b'R<&Ǧ[u9'Ɛ-Yj C/ks)z'%J9eNAv i!F8AҼk2U1wFDK1p8h|}=7eFK8' V[4*7fBɒof`(HC->cw`؁!Ʋ,5šwn$WI. & Dfd (-j{/^ﱳY![M5Iw(P'.bA9L ҡI:{=Zk?jfN%Hw*񿏗.)`wq'ʘ7XU2sa?PPYNoolbAsGY߅ߏw;>e<{BI糊"r?˃;ȍ`0Nv+9Jh80-d73x0 h.Ãճmd`h#dIdD Y9PB3 D&y1R&۝$h llm4q_%;>|I]+͟,D-8С7xvvY♺ 7bzZRJv:cf%5ˏ>0ٕ]>βcu٫n -ઋ0)ZcUde &5ȝwBH=#jzRM=Tv=_# Lc 7"VhΪr-Z+9jP9<hzK!P<~"͸M,IiW;2u[~j~m%.֤'*d,u}ZyIiw9vE k Rqf; :%ފ%☓)$u 1>V"C}^\TK<"롼h4' b|G,4۳NY :r|5Dz[ ;14(J֊D˹u#u왽RLAS6Uۣuߟvۋ؋;X.ͪOpod[܁ :dtOi '~^j}AF;4xO:w IęT; " 8 xtKg:]}])1?1u͂gVkyRݚ2Quwd>o3 /R 8c}$a8/[R* {yr4U]4y9~97Ӄ=pznd|۶P1vHOI9\K_)gzl=&Vwn*}Us¬0VfÕ:݉"V=jYlEoxN'{e:PzR*ܙdf[qB# B3" c9Oj uw|THe"UW^=68Ǐl[Vq-#ۄMU.M1'鮒F9SGH GB#Wl6<4#m{՝4U-gp-r|$[ÄN&Ml 1u#~܇c AΈ`N҉g;ix@;8OpM ;x'_ q@%)hZa~=aণ}ָpBfH;z}%gbw 3D$$ROV=LO˘ke?rfd ԓx}1{b1PEޜP! Weϔg@"?P1~KxQk3$mT7bA(ޖ7ZDC#+.@'(5 j^3ac M I@}RUMzcPWi 5wŲivM~?65B1`Ahk#}| UN> qIэ@l"J49$8?b gwl#0|leq:y탒r?T/nJiebq(J/auԹRqǷ#VM$!<(=ӿ{Zgʟ#pI)W-boj~?y71iҴ1/dg9Ăf nn>hJUF6=1qqa2 BU΃7?L9 IE* C7lEbg|Ȼn JC(i窙\AGVEPۿ~;k?C#svi{L.]%G8蚝EF]?UswM` T mM8 b\_ʾvb47K%vEd&%)_IP_$uNת]),?^ޗ`(h;;|zY68\U;*sWU2: s"tF@-b1PE*NUIf>qb0֛N TcnCޛzY-,9̸Kq C'5mOm; z{j\|7mt% " aK6BMſlRP~cDΓˋ_ 0r91Ϗu;+uGb>Q' ;!L[ݝdKL^%6 Vc$[r4F D ",;Sgm8 Mc3C!]{x:jO]ލx5m(٫{F7Hb+91g3]SiuWxf;]c01.д5_6{uצ33`ɭ#&_0r(޴yGGhǤR_w",duLjJٔ~;/<`|^!ɬlpt&E9>?$ux1Y8Z6dg]rscs.'=׮q5âwfu-lHw{fVɆ+{4Qγ%vx;2F.:;qvS0w^8xI9-~8:v>(rYXNsF.&Al̹d%U&vt4*GotyA{3S+2BLԈ3'Pdwiߝtf l{1+% >#d# #rc9yasFuڿّU7g/üu ?%GubfmD*37 O߲ܓԳtň/D[c"w1bWOS'9peg$W8"gh^닥*s[T9a](18@z VS j\…?⚊~M$q8:b:wl]}+am/uII{EdH}ʒr5;TOOo9efS|=zM%N?]%^^:&.`aqȢ8׉D_~g'mD+}n8kZ[jp"RpclD"F>ч,S {`zmP~wL..r09Y&5^-l*/Sr[OOf6m73QvosC۽In4}K95wkܷ-SfiRI5˧q&GHT!!FtTFB7@fE(I2wNw>W٣O L#Yjqe^/6&GbjnOF~ܟsuwnt_uHE]Ϻ|zT<[/%X6ҧ@ 4iw-SЂw—";t;^B=#G|IXeMUmCA~1-?ozrԲ3XruAvf4?䪳}}ރc9Yr>sɘA + )2|C@Sͷ4 n8JES2,blWcx~nqe!UIi/xRJDeͨ?lQr,ؕsO:J_(C>Q^@PMsܗ:L8I$A~>}6ijUYyoW'?!Eo[z}\کl4bGWdZ߿Y<`ǟN탡e6]Yz̏ua0WzeRUґ"(*h,.>X[eWYZF4͎˟\-.{`Osᄍ.W35fYBߢ+>;_'6M.eȩ F;23 j>TkGfd\ko1W vB5˚# g` C n23jSZ!],bkhPnfSף8Bm!ejի.CM&kP%^;aby&$Ow̿Z%\+L2y?WJJ[T#P3\ʻ\ȱV)@̊CnrJwOo%KN_qo&*|~5ןۮ/}9/+ZPX~"쌕7Yߍ)OmSسټ/?QuV7؟ 57xEok)4^ 'Tv[Gy+0{#PB!pD&(Krd`-N׺,lPGx{,v)4W eN\aE+0óCe ji=n'K4uܘ쾎β湙:~ƳOWoFP}i шe۝ss)E|e $!31U5I63jK9XBnלƘ$j8T4uݕ1ǐu?e0q>J@etm_1KDVs*%M"sOu/$*Tfo"\i6#wY2Q.R H4ࠝl] 19|WjٶT@~9NGz*>$3ܢgG#$~]t'd:hm䉏}FGm30:*OνnjNF&aʃuUgfˋ"|ŴV^cݫt&k$$4OM-]oe T,Aޯ.VQ7;r=]%E'xs'kyoQd@Aȋ_:wIgq{߆bbK#D! xDЁIJ1{ #ca팔Qe*"A:?*qR@)L }R=կf#j.c[qU| H`a>PAd&}'տxILzxGoWQW;1M@9d}wq>i4Ƌc×S؀4>bF ߮Jz62ceyc6L_t |.<"2U}͝w/lMkLuvhC- GTݷ;JG>?笿}Ƴ[U 1bn}N7{2Mz~)̠#-FVY&8jM5[|U@ߡނ3WIBEAbգ}S >o[t<yֹ?l-2󞐧7/s=lR 7~˟M뇣$7!3StE\@eF.'l(3ZIO9 D7O~K_lE'kx #  #q5`7AAvI#+UMT%?˻pPGPBDw3NP1PLE A?V9urn ͞˦J"{_S4,Q*CO#?K3?%?y{zU]uNAZW.CM&<SG7x!d1g)MTgarѐ7WR_lݮ.$NI[ż~n} 2?d~fGUVOYvQBE^;R&l"x[ u k1PC5GA6ww*ˡ59_rt?Qgx2xA n!S{ig!ؑN7"^X:C͑?aP]OgCf `&AlHBRI#T]}C_AJ*WKK?V!P4 >m 2qwb)ӃLވ_0/y/| }?}6᪲ϲ'h}gO!Ao!L%%)iwfK 24&)Q!PnbDq10 ;`iF`c!\*_͸%Lp3wwn5O\z5%0A Heb0DIM?08/W1(tk.q!G\atcovfRrkeNb,§$xM'!1d"B6P9X6>ɸ2Z6f5Z0CE60.3Jr)qTX>1y'!'|w*h((B`*" :dwԃ ă@J?%蓑ݶڄ0ɩ)kBL/\C x^_S)jYiHP=1/_ n $7W;QdtHq>ݑs$&+v3U7J>,]'(5taZ2 @t7+cm[.uHibr2l.DLbLlfʹ]=ks^ 6clmmKP^LbkaGHK@AÎb 01l4nݢ8O0tҏ-W>A1DVXYP`DAΰÒA!TUbD6f@1Aϻ4!'S9- Y$R?d+"D#Hh >r4%mفͻtj ~?)p,5I uBi'B 8L"H[?(_ؘ?)(\1Rbtէ-7*_^v튎Ilz=zkqu}mn<d?6'}Tzn1kNw?O! 0d!$ = JIә/g41'ڒufS?v>_ .&>=OX`_k &-1/g`Lz Cvm_AUeS QYb&i>|i}MqrjJ$]͟K쿫??_fp5~# EC2$QK@4H)RM!0245E1?TR|2C) 2PE Ϟ'yVg Qx/vz܃p uHO&>Y'@<2c+Ϸmv܀J/X(%=h終ہ)^>'Oh?c7w'RvC(t1~ΜۑTdj¼NA~{#,zoC(l~B'sxd}66) 3*BAWq&&8H2 VSAkBdda'h rP 03$BqP/`O^}<..SrNN<(AQFӌxDLr=btphc'ȅ*Bwp2ܓP!>^8<z^;!^` })|!S! C{$=5x!cW\XUW5mWP=xF~RO SS|'Fy )A8:>ޅ!(ү>\BHr_[նn ,L{"kYp(DT>1IWǀ_>7 fi"dfN2}abXZJ"(AMTSI"aTI1ETTԐ*R݈Ȁqa2wB (EK׿$w|!ACADABdvA?a wjPs@!Ɉ- dʼ!D<wpހrx@&}eO#`;& )}w V`O=~S"ŤC|g2僬 3le= dgLGy'IENz;z5Ȉj4$O-,DD}o>q\$Fw, Gwqx@JA"=O"mR)޼2d nC"+;ᰢR!OF@¦|_>6k젡P!nQ' HCDK,BU_\44RQA 6_hMIIQ\ pW4=.Aa!eWKJp^в@=Ip`^0_0Qb#) lJSq5v6e' CİH7g}ERqĒ`@dVIy5<j.fMȜ'.F[\lY, E*}O'Bh~o=Hrs܏|sB_ܛTLχQbbdK?#y#6)mpU'm nGЫG5ў0٣G6/K媘wcs.QU|wlt9 oq^N&8teÖK}7isZYEQ4/6C2Ryx_k?!?j>_T"U8wRFwS?qM [5ICS|<ʘD"zط^? S>O><7a.ѵ_dVT59R~Jn>CTPώvxW46 )$Q9H=zpٖڊqLE䔫|v*񯟗)`ƌ+ÿE&6Dܫ_96!(v^m)P7|0w:y~&tQywn0Ay@Ĵ)*djVrq&gL^t]:?l>;v?u\ 'l7jf {* '!U bC'd< UZ-<"BzB)BQ7&f^>'fo`4z3FEUˬ^0'SoK{Yq^?%g45q&-T2&_<©eb@vn%d;*뉥'% R8A1Zz#ݸJR˹[j̡AGT ٣߄:̛5'edaEch7xl|M͠C̅ %0Iߟ'ugM~cF>FK|unmN:gN< @'rp~O(zۗo:V7Z sLʈ-P" ,?AL3 e6bB5JFft1f*#YV؜~eL,P; GϘn}~M44ퟒ|blP+RydJR–wreRb{;G?ݧۖffy.Bl7{ 3@7 nsu3=[.lpۋچ*|l#租N]x?qF_)zL2u*ʰj-tcskg: Bu}lCG|[&cB5ev\eLQ3˪N?ۅ-V$uaۀ ަAm퐃F*u)HwgWDyܼq\n>Tt)Ag Ts<'05ɷܥM4Bv{xlbz] L_,jV֊F˧O5CUҴKӫOL·Z 跢%r\Ӗt)BU8kL+C s!B~LO$!=?n4pJ6$ 37= BV|<|S=s{WllNk]u)\nU>|K~ڧ&*smd;CG!n,HRGSlyi]=+kGH cj}ߏYp1L!(\?aaApL*b}q~ϰx}~l&!8~o\㢗|USù_.|'NM(kuEF;.~T|{<^_odt{iU7PZƆVwRK9W~L,/>>n'vM)pi(/7X(%EmFnOTq^D9c^nrB|js" Bg Ms?_{_6RSƤ^5bh-j(|@&}<UY;FH* VefLf +^3+,<6Y({8_)^MdˬI'{c>+pmԇt}[8]y]f}U-.[Y]6iD졆g&Y`mA'{P+9|X4vjqzp#%i=XWX^a:k%]tA$!1}rЦFVgB !`-Jռ]S"Huny߽++^$Y<ow]s~U7C5m}Bν[gH((YvL7@;)Dm}9Y+ՎFn^tl{\WsÒVL=qľyzݫwѪUU9[KE`x톊e_QV nRЫ|9>ze(lMKÌfpUPyJ,!!O//IVwthHi8׺lVߌtr%GQa̚bY=0w2ԥ1D(ck^jX<r\]:5Vr2%& `T{"| ޘv@[泏4={OuL"rwNpv Y5m s精:jJpBz1𴾏ib_4ڡڶUâa.A9[;D9aOLsibGg@ءV1bB"CI9lU7=A`t6чMË h}pğ3Urwa&JHTh[juʵ+썊O@U1H6*aG{NKQ!OxFPD{M*;P}919ǾC~*əw5LaÖOE- H@bc#ӏ{Nxۣ}h1Vg t 6]3a&stP-הA=GvSh߯/!AKDluLT`Bw'\U,vRʔ-%* yqQC }U5W 9T׈;/,Zn }.@$v{\|#5=L2d&%hL6Ώ%oKMTt]r掫'nx'6eq+ mrkI)QM;hQ#mWEc|| {aѲK9|>ܤ4^ە}9uXH+` A{,X&kP ۠цNC2XђĮmM#LP}?'1ȘE(ɡ4Q.An(4a #xBPu'0BS"m%Sqۀ0!Hn$ԋQ*SAC_y}7}roCn H:aM$o4lih+&4)(z.@ p!Ӕ 3 "I4\げ.   14`D6-^ׅ?9*)Np0󌈰pDGpfp%4;M n>i{b!?L}'{mџm,$+Ontk_~$лBG'tOLwx0LWet\U~OI^8Ufo,4MI/C#gMq#(6~3z@DnAQ᷶U~avYiğ6ǡ9Jn_I:ZU +7N텕CoWU禯jÀv>yݙ(ע<;_7DeK:o ?ܭPӆ6i\6&֘' S2B~!ݟ0SМ\:~`PICL HH% R C/̀`~ǟ`E\0$iDMP! "9?/o k˖ڷcŘJ_VA6i 61UC(3svaf@}\0P~ BDQPJR-P!Bd@R2?Sz! T( cJh8QxY{هQ0 (4gZk'T90t߳nhsFl xqMAh; oBii ȆB$0B:xsl20#lRrif+O=pԧ .@.`NU\eQSaRfSNt?8z0 a 0Yw뮷BQ5ia??%;iG'枘 1 JS]!5-5fR.!6DQI6T n`7! ĠrA4@`4KS D"A26Kl c2[y>@!BI /y7"(EOxP+@3KB8JD10E x|ƒOŕFvՐm&%ֵәLn3rq _XwdQ "@IƸU1=f+AACnGί-ʡ&mZ%Ϯ~5՛9]ɞ]M.aFsc:ED_6SQݼ>ӬvM- A`0X$2)\Dspi򷅑hcw7B\HD 5C }X|I&s΀Z#$$8bqnbaCHi IӏiN3b3z-R}t}ͶM܍/ekjgFYIU>KDt۹kčc-% *%|*?"ޮfNmUel`5P 3E~˭`͔}7-ݘhUgjTץPV4w{ďS=*MsB8kvf{TvEB]0JeqƌU]S?4BnZM2fl!Ci.^[3Տ]-儑I?G}köVk$~?}t>([-HL%^%Dl6[G=gOṊoTdV)hG=G݈\rʫ9;Q ꬈L.q$#2ҳzqV'lcR;SD%ԁԘ;SGÈh6@[3/;E^+$C'~--=6FaCqW3H]`󅣞N1#݇9q%P鏴-mp'|LMJ!F = |~vˉٸ)7y…TԊN4Gr9#A㹝HDNQa2Td/3ú;z0n&qSǕF WdG$з'D)=陚$}"NHS(c]ˇ'}Rfp*qܙ&ԉ R 8:"u{+Ud4E6<غU8:Rv>;E3 Rvcp4Qv=Pt0B{IJ^*J4,#cQCddqs۩$}QQPY΃~\R@, ]oɒzuOm^Y;RJ0q_[jXc?T 5-|ʚz0&\#CC)iأ(ÿi-1 ڴ6v7V@~Norh=57y5.Hp<8X"Yt˞ݹ[vjtAeߥ2&W/ Ŭ{Gfrκhg p.lFǕ]Bُl"+drd{_!s94­N%Uj׮G/5Kɐ #`Pb鞃S[ vf|蝁Cn~CϤ~`:3?y1NMu0Y0+uBE[ޡEᦧ hG"B"fh5)6a~^gv`b(\"@M$D)R/;wx mӰ, cC}i=lμ{ b!aKw kF_3 9l6v&^ 0M=T%"#r6Uνv:[X*~vc][]xҞ <H{-M72s[f|0ߤЎ3vޗ4l.zjnׂ!/‰gp㣎ҀCE{vf]cre렬,za^\2bRXeM5K݁wLvaߘ8Jrw˙ݒB.No\^}LQ>?OL72Q%o@\*_cHz0'M݆^p4lˆX ;0[X8 ܖCKaw(gmKbx'1$]zoPp;Qm,NpH1htz#HcL\ouw}QHvZ9ǎZpe!ʐM-5bQEqC}&&gh{ՠaX0%x{;/N`3z?JO ߾uޱ`j5ܜQ-ɳꨰ_*XW +c70&7w~H}+H E(X{ &HBӧ 8pf2`ЁЛ's%.ujiתlvDaӊ~*Т\B(>`dBՎ۠/%z?sS^̎8&?hbUbvD5!+^c/\z8uxqҚ"ƓCɷF7B V|+E6^řk lKcMVzt71b19$hX}=k|V*Q(JyIq]` n>yVbf-4*_:YSf@FyWXfdĿi~/̤RB&H`_TTքˏ`(s㊣&kXa (%DLK= tm,RiW<m4nDAAb:cV&LfAm(}_DM7mwdw_n%kv|uJɌ8[l/67bb 1#f uǗ'Gכ];_&alɶ`V]W~D0 e>2]Q>wG~տ^4EoDM'Cpnro7 ZK#:!9*HEM"ȑs#0"A+sX:M$<=;2mzrM]%,$$$Qw{gwa!J=M;x>@`7an(a:70P\oY&o!1T"c~|aYz6" d:VL\2!%Ѝѿe]J'K47Pr(i7wk%KvQ",^'s3d䍛@{;wzo;bvr\1n쭄dHq$pB;P3LCKyJ$y03PS)U5UKm4/v`mSqbf =< K*DC;1,1 úxe?9b;vη&]$,PMv{60;[m$!|7]IZ6&ӎaf6vFAk/̑Ϧrp<#nӧwty0]ݿO-[9У84+|*fI*y;H_͐~%u >Vp/mX7GL*lhŔmG)SA^go_Cz{3LG8i<=]9ݰɿ*AWV\GbDKN6x\J2$@'}?ᆋK{Kԑ8?JFҪB.byC M3o4BK*=RN-^AJ fy-_"}G)>''|9T&&D_v = es|¼BYs?,jdoGSx'dU7&}5(ѮsIJWU<9k8eP|Qq=]>NLe}}ٽ?O =]rw͢ʋa\(cQw먫T_:xF0_g< 5)̖zya`jݞ*ź[9I;>1rxo&ٙR91t\}Pzz϶Hm5c4n_<*wh]s>ABG=%}?^?lB~R'4R#~,=IASKF6x0ڠuf#䋣Vjvq)z劓7~$k9}G)5ǥE cN0neH+:Jwݥ(yJv4#c_7^]_Gyg335|ڼ}`?5u{{ߎ8(Zl2kT1"m3V~e3mîy ~2@cQ`}r,n`kp̼M[>rt?v;!L3 "cNΈWq[I}:}8c1/q{Cnj>bBPu~\ca HEhSyr&,jmBs/6!X+J`Z1H#qgq2m$wcU{9y72^E~gY^7 *Bѐ#M-,fLVb;m23 dws,MXܖbnJǼ[6JJsVcDjf8a8(9{?X+)QDmǞRw>;]cj5q"ɍ1"op!gIjvWi}taٓsjn=.)'K+XӧMJg oY=ɓ; ff>>ۓ@KGNit'u,XޫmG稨zc{lbϤ.Y%L7vsDOEޔ nlh M#*}!U9lMP`mdVa[2AsFn\kC8;A1hv|fwo ^ eٓ5alI`ܣhD`Fc`} F~,{qՖ Lv36uz!;IGĻźǵ,{q3HĜv~4bxIͺfchghI&hbT8݌Rp6oZu5e Z469U#;+e2aN5F/hQԬءPLΓqLD4xF={]r,)x甼G\N8ȱ0C(u<4_P~P_?<͟<ȯY@'r& Yn\ppeg(4DSM1%4WOPtC淜yMPtc ) 4Xu}6`Rpxc|ѝ'ֶcIrSC{>WFuRq  y4@#f+i vڍܐ`r_hp&ɑ*0m6>="H=wKgJeS]>HIjRFθz|Z4pvi ۔Cply4>4Kz3y=NިϢ0rs8zl 2]T;=="Up3ݞӉߪ&d=`fT,(S3 s<9 D۟l*`i$l$v0πQra 8^F46bͩa٠ samm}`oٻm 8]oq:Ҡp[ɰttqfIp|<}jPwb=P[{GóC|>OlfտcvkuGm2:ISfΎ<߼X"I}C;p ^ P_) .sw+z|F=׫TWP47( \WIљd6aܧ$@1s(hxēeD*lprKLdoˠXxa&.ua:(v&73}=<0I'ǟ7(bm1uwsWʜNa%o?X@5XF 0J4][̛iq&]-f6 1A!^wϯ??*{YQwZ¿V?< \My{gʄ5؝<yѮ;?\ujPQ|>/cG(?D \I uLAWw'“3tiIaUlksP$ZglM+_LBK&ۏ՝<\Ӥ"fBJ,k疐{0h Brd"#G;ǴlXi`Tr// a"ٻvyrK2`fmo$6|i55vlZP5♱@<4/A MU;~tDdۯyZ]9 $]Y3dy7=P(RrdBj9eO(Md!CL #HPC΀3WEȡ:^1҂>mxz͈I#/_|Fw~"wٚ.ôkD^d^?cp  (*҅P%l?ޡxE ə@"z1 6bwokd@vR[-$/n|2jYT虘"+wgB= Le`ՄU;x Ȓ$#ƒ9PhG&j. /]`"{7cbһ=&nRn0ٜ]Ҙ1.95 2$&IOSe:Gnz%:NN%6새&2Ć a? yʲ*1w t̆1 H_ `fo/|w.SQ&#_VڕO#B$Wz 4+  1>qf ;!hp3Jh %'t'}93C҇R\8Ig.Ww`fjĺ0̐n6c/OHM+BonXu};)o Hk#j2zO=]fj$浽*jLR^\ݴ4D<ϰpX:x Y|_tj%Θ>sP{$: 8B1$q!&[c(K)V֙«0(cpPQC9V^ ܜp#!Ē^?FQW:DAa1dt37kibқ oPRżֿ4h?yP* )?F0_4?R>Y V#XᴮI 26ccG~8דWU̗܋z)#z<Ƽxkfflx}Ki?*o0&UwYWLd&HnNxyU,f!CM-/A mE2D8j[mJ%pf-kQn0$w<*wɂhʼn} 93_E` OҨ^1`Zz/es dnULQnA6㌧ m,$+ vqg'okprT4 J2{yD];Yj[8Q0"+=P0LQue C ԸZqܭS[`2c!!dK$SUjРbFFGx<2~cLEF$}V4DrVA nۏh*$(}τ8&mW~/ÿ} }̥U(*fz㚦dmVPo}3_Y}&6 z`Y%^ڃ<դd% r^*Ѣ4}KN׭$j~ZbG1nbL*UqF_ Ϻ ZhYsrө'}} B0gL>(D+LL!(W-_uPomN#Dm34* ~NI\qu @D]FKި&pB3sw_0 9OF$Icy2BEۆpG  ^b1@*: %.u'c9g1E'7B`fkwAǠ?I\t{g,(ɜƱwLxĈ ]]t '9׷բϛ(dOOWY64`QPvz*ҭ<{C | n2B'3o9#a|-nR|U[ :xj\dnL"ґT-X{,fCgYgCI!VimQK)m5-Jgz8_[n9SAN=WUUaJWCJ@{~#|Ónfl ҫ@A!TM^^sժWH|rpSnD Ne)1O Lit: &ӝFˬcY0,kma\Dݕ+v͇~5ac2.z9dUh2}^F4%2V1iIMCA4ӧ1D<][ Iȳ&[%9o {v$OT&mF'&z|~=O5lJ0`q6,w麍"c`Ƞ^3sZ̹)PP<R$o?h_~h.3Bv36\ձfN:\@dj`fiG^}7+2,>S۟)֘Mv{?܁%1Mϯ #f/]Ƀ}t黁$ "_qID(nGcm$zznN5>|\37KPY}J%רuL;'wt-/<b>БErF95/fiճakK>_hp۶cs=؆185 6)3LAaT)|}[uʂÙ;g9~H`fjӬSҬ:3ARFSdʀ4G>d4bU^ i+f:X`gD9_?Ī:-bװ=/z|Rrx&ذK]NYD$V>S#g3N+.Gw}2ّpzЮ^'ڋ8?!:4Dwh9vo:n3;2إS>t§0?WrvxmbFWx?֫oO69n)ۭh\cWuWr0`%OFVAe%ݡ &B3L}¾^ŁÐ$9ZˤK^+esB$:ZnI$G1GǭG҄Ojv"I|X[3JCv i;$~_[lKGn ,n עM]"x޼>4ٻ6|ZDŹ狾C\3Jtj-)AQt!"2xb{b I\d67DT5>25t[Bdɣ2l˼:@XgnGutZXe{l2b`* 3*jl%?/m5'C9T2;5qH*e /i2)嗚vo3:Oʊ \uА2kl =ªDPoSA40h}&4Q~>W3*k0{_efR>\к1' D(9O)јŴC13>Nc<S뀿쿭1$|?6ׇ/$,QvH &BZtà7)Am6f}=&'XvVGos֙wǎa$0$L5OҪ!~VAYJ~W(WNX݇&F$?G}͓`uBW'#tuGI&'Ρ>>Ofv{"8at\Ǧ"V&HBk>N6~p%)qQoEBZ+,8jp*vU\VU&$ Cyч(tcY]E.w'%]ɮ,T'YpaA)y-5{Þٴ54M_ n48'](H,ގXzKa_P{s;]uMSQqfuE(i޼NV}eAQdjK*3i4=~cS]ZL!'xsɕf8u"_X[2o{dZ-)Qig|j;ؼEq:CʓU60&bZ\TWpɜ4VuB}k4HkJwb5J<̺3geV_/7[TEafY#:Kα֧3SQ|T? 8Y|^d|qҺk/)ag9Z|)TZy*r ɬ KZl9{vFt<c|b.'}=LK8X5SkSfZ90WQļʦkDa^RP7,á11 LX֕<=ۯ·oD.[_q(UD?7 D}6’Օ`q8ؒKo>Oқ0~!c:B HFdfԾy JN%K{Ҍ&%:g;AKǥm(>,wAX'j8EcWvtZl-;E3:Cz.w&pN7-rmYx"ՅJ5;q)r'EUjJ'eqc*5Gxs۶ W \҈sbzNX'noI_ޠ3|d=]1apwםw)+&Pshr0<[uRmSv$D яaYid ZA*G_cs,7m\t4[bUbyedTo^oYXG^#@H܋5[Q|Oi8i}3eo,B'˦$-PչBQa ԂMY]1ۺ9%0)sw I8'5ɍ5DM٣j}k U>/Lۄ1vӢ}l5 3̞^آ"f1ho}S-U F-ŌTVZ{*f޾d`jC(ՙ9Dt*YHxBT=P$ z.MۛAb?$wN Mq ,wG?xue}uVb|DQb<_r:pwXҜWcay5k|pģI "w;@ǴqɋErV]MZk$ #Gca7F`D5~%S7Y͋+BpØ0.CWu5W 晚MxZ"Ʈ$sn|!qvl]RkO9V^~xdz&J%:?sU\dZZ،OS| ; u٪̧]nQHa|ܕ0ᕜK WJo6{G[a00%EVhBTWgg^.09h.nRٜW|ۮXPVH29H{纮VYѢeZQ3Gc ȸDE `&'w!iܨBUG98N?ON\mwUS\&NLGg UZf,X6e|vx''V `TժbCswS :~O6-tqB'e Rg84~ң6W ^9d> Ӌ0E'M[Tǟ̧E2gn4ȫcLL5q,jǔ1MbRwX-RvVe_,Q[uZbWGVsF(N@{w)kjN)_~{x=ߦX5w>'[KcyT-u֖GMD_8'tܭȏ7Orv1FUbRZم9KͩƵQ/ CrZDʞ:ȍ聜` AɫU|(oi6]=Ѯ P vZtnOB$C',)(o{ؽ}:Oݵ_5Q=;W>j 邕!9m7&yaz X Q+^?>IrVUtj½)cVWRzwIYpK|ɹ9o9YH*F/^µxӷ`BqC(e섯v<\[7ӄ5ӣ^ 3uBɵ&7ݪtضYŪ:};qu^J5[%T,%+YۮK#i%ݤh"Z\M"y,Id$nYiƺ=il!/P8֮rKD6RX8(O:)mVJ횸]/X4;*CŗٛdΔtK}\+ڴ~۞glk371S:Bj1;C[|iz;ѥ ؾi,({S)쮲Z1I6f܃˸eWt nqb l1DwE # 0?ڢ5pKx_~(ʆ{9J>!=xt3 ^kD9v#tƟ]%棟XV"| '9p.=" c#쫩T/Oܳν1o|Q~y{$} ۾2?cUQtNw9yI>x81M\V M"o5;`+A˪o=QO^Jf4CE$f ؐ|@ϗUv[ԣǠlh"WM8"?Z*)IVe14{khcVʃXxFC7'!4< !;6cf7(W U"XYF\pq/8<+_7KjlTV &Rgj2;Q!fdF^f< +$X8Lrzm-} ])Tu}lM$iyzpfMR4!M%PyAIa2&}(ǗRx$e,# PT)ZY[ C_ٙ I%L-QE RrP6 z2]5 1,nUC1}XNO})LSd3k?y7s O71Y\wI>AH((`B!X LIuD((r&gD: Xj^6Cӥ`0krߞPh0ɚyf".Rt@ՆܬB?e0.d APn,"c! YrdYX j-YXYo jTH fRیB,1ƊLD1ԅ&j r -BX8I@.ɂLc  * iB*QKKP1FKC5e5fDSehE(T4JnLzCi235Qt;$ KcCJ+?9kQSfƢK[o#1ĽeoM&o( [ ,T>2CUS'H ** b( "b%(a$f"A l+Hq:݁U@y|q!(W&n0OGLrKM8!8rpM]a帞%a.ַOZ8YZ*:@:DP..S8  HP JC X5J) {*4P40MB#M%0cd&LL@&J 2j2S fP5j\@WB7#Ĩ'!`,LJF5pf78KjJ-Cy4g ,U( (e;QU|}:.-ZAhLqkzf2JTkQt&%X͇w/_k#-d2,eE KfrqOAr74zkEv ω<5kI&h~ bvWI=ٽ<"  J_s4s2[StHqIl.EG]Gz4,X{p&+`}ws˗%/$0!I&nc!??Tp)H4E PSda)D ED=~IqYn:slf2ͳUmx|F?0@H6 =cy_+U72:>U}c}BMvv:v66m*I9m'L\ZZ"J*"b.BH\NX"JN)f*q)>P2& dDXT&uEeA*q籱nMIԖCP3:B BzASz4(;O<}B'"r!#NBbwwu4ĩ;`HeG4@QUo89}I$mOs p$[baarFT7+0<6U*z_l*v2)#AgDR r: C@bJ9ѺW+1r=z'@n,ltW?n;pB b@$;6 L, u70qǨ.+]Z÷~s]c>f5Ilci{w&Q H>; (n CrAJPK9t;#)i($3MN5Є2Q% ߣTXdzy6B?Qr? 'RC` 7U~~݉"HK ׳a]$Ũp8o@+@8Q;*J^z#!~azW|JxqH>ރz׊|$6a٬!_1abLJgmыe HQANhZzCBH4%A$`UqD?u,I'/6-9>XvŠgp`9z`|D}a(OwbpO)|Q2>Gcvk콸=msюAo13d9v V'aA`ydanԇ OF}_^8W{SPj0zAD3Or<dzW4qp?C<6~;!$ݦ '0hw`90c .uzߚ]gi~ O&\``w?xi:s᳴8Q)4êC?y3ʎ$!wӦ0O(c  B89]Z8xUw㠑N 1=*agDK2!M`8b3%٢_Q׊&饡$5PAoT/00ƃ k!8@V/S~X *yP/3D~sކB Cp:{m!4zn9Hん{SQhfRq@lB i~;3pv wwONհLaw  (:`hc,N-iӻB;x7|X{|*d A!>|{qDb`&Q6nz?MC;Ua H t2v8833̴mM5PaC=<^S!ÎqFڽuaԷFG h61`t;5رM!c5#;ٙ;8`.!+4}r>wXJAQ{hajA7A{Ih yM XVoXdH04[c8^o((ՅR_yP=zz.*M[`dT2AQ7N8}1>y&3 P7?Ǡ(?$9JBErHq)Je'tyP<~MH>qQ5#+LFplN&Ng '$OÅ] |':"B!5D3m}g&Xy"^% :$4m통朸.NSz'7S>blpylPaDva޾pۜw2Kݣ5)l)$O4y><a7y0I*(Uk c 0L4Vbt/?<#RЏx|N?wGyP2)!TX<{tNүoyTbaЁ@HTV?1MƭG$uQ%(SJ]ѩ"p̦''$u$SU+N Yӏ@ qx>*SKSyq1_gS0_M=B#qGa =5˺ k漦S)P7.ȝ*Ai-^j d1i]n@ų ޕa׬DK}7Xy\Ohy|\JbCpߏ'1{8q:']S5nݾBcٶ$ 49#Sz#HdϤO 29.XGfo<өWOBy&`"I=`\peŻILH  H3f 'w;!ZhIxo\P}|a#! {Zx$nIN~It$vɐ}CN9-0foQ(zNn-10TD3MULM4M4TS] K'nO AJ;*iH 'fE !T1 ģRPCAi?& @{$ZDz@g?3`1 A tST7׉weNSJY [{=|{_CL`DM3\B&ZHCi+A yj f*$1.~tC |S^[p)%{wˌ D @rw pBPJ"?} NZtrxjGwk`w|.CS}ǀ`b5~75Н!!wo2GQ@lf&@lA0To0;Et8+KC\ҚAR=ZbduVzqq9'yscdP`8BdlbT  @]@ <gX 4PCQPQQ4‹ i<@DHkٷE͵xN=A$S _P>Nq]&q <.BCQ 8T8y` 6]9ædf@ 0hC؟p/DI.jRsŶ-Γ?~R;!dk c`.Fdㄇ Ho\<{NUh8.#)!fC^6uT4ֽ'%?.bt5HPh%u6afcIB`>]=dx>"&pz^7 I5]z4mW Sa`֜پ3`|`!d:Ԅ:$=U%6'7k>}e3ByB_'6|!=/Y?^Vkw:&Kcԇ;!*-,0t`}Y7˾32?Ć>_#L-kPdVJx'[7ƍ}5uLz2bт`kjum %D2bc FBN B3HBj^& m%A%NjOina31r0#bACept2$#Ձ]*ctȮJ``{L t)tSM&$9$Q"ְywbwhwEZiM,\0|!vt{ࣤgx 4KWܧh}iOS@0"Ȥ lG"&j6kx.$j `DWA;3L@;'؁?3b*/(>t۵~dz˚hZi@fB1',~~Ƴ3,h~S()Aj=QM{hb?L?E{=ӫ?:f)ʆ%%6/3X0?`})mqW\~`uIkG 0; =R#A>Q$(=Ct טOQR}|Lag8'-* ȯz?|T]q[Smk?bL_\,KC44t hz A MDhifsypɓ z{\y="$$m" }bĉIiD)~Qu[;G(<:XSa@^ɊOɈt 쁘t=b'Pw+ޡq5> dSXY`_O7+k^~K\YfM_cEɃA^wGqNSvhܼ0evwI :;u gMmm&PpTOȷgtMX;GhOgϯ_ѱn?)U3HD??_d8txd9ẃ BbۧkiCpSUS9JX ?J'6  x!&@_@$ 0 \~jj({rCk с6cIUGڧB'o0c>22AID=׀:DpOq#^ChHр޹}ux )51?QqUm&kUzMD;3,6W%2BTv 6" 3}A`]u b4I4SCUAk>7۵-olUc)*e("|t})3fg߁IS<쨛 vf0c~w")'Cc/#PN4Tzf,"J?B;bSOB~nA|pǀLy.J]@e+o!Ai~qg~up 7@ :5z/{9bBD^ W#Z<,",,&xHH "0x.|JYg7sX`@@Z1nq4EDDp, >A:XO&%rVYC"쌉uCTRSK}Q.Mҟ?!EGv#6sR tbwUpPTu0 i4R8D1lA ×G7[Qc`іIqy  !]՘ A)7`636af9+VL#jWQԒRPPJC 9ɻGM"3ÿ@7Ht(;ȗ3%w03UF~bSXA^͏;!3!Y8Qf~ Q5Ժݸ&FBш1gጪi&wfYDW#[gwc;|,4l/4S˸yow^w;S,1q@TXIB#Ѓ `! -m+*bhJnE1;y#bv-zr(Co'=Ps'?sנE7d=밓 LDOٝ$r?4 d?ɭmd1͉vϣ>b""GeGZ\&w=PRr8 *^D_eyS32C 0Aϭ Aqa,b[$UH<zJBkBwTS&<©ŶX#r;gkv֜ѧG ႝ[;rTrf X5SMѻi&e[ 9O)=.x9܃KeAD~B1`}^;/c&MAyN{7܏> &+ &Oo57˯}Qyr9l eī|N2ξ'XI0I6zI8zNG.J XHXģBp y?74O\cS%x@ȧUf<)E!CąOC3MIϘip y q llwF1d!BC@ÅD~ݜpzŽaC Y1G wz9bB}Ewo f 1xFH*Sq`sq]"T{BX^'x&BH?qExmtJJ|`)8&O!Z 1yaF}ÓԻgq_of`B1ò9M'BLvvyǫQڢo+D:6"v;|OyGGsOSp@ u)B ]CP^zڧc$pH7=@s_B$ķ5S2B%8~Gh8 L4:ʝ%pL'G><:7&O( S:HOIrw<68;wJK~|W Qk8_6<:DA(? @Р~$$>TA6"g$t f<7&fc1pIϙaTOʒ8H E,̳~8>7?֎A9Jme;̤kVC54dLAO@ :E?f~<=&ًN!XS\tF*I4gaG #!y|єI(d,-x eXb\1P`1h4j}m?dݹ7Fc-}qY^ VNv;ف+m!#n ŷ3I~< WMWԯ/@AqiTxEePaS!r}Nܥc]ao K75.AoٜvygcYDN.E6| ݐYDaÁ`Jj 6&ۀðٖMwk Ͼ,4O@St TQ- ?d8(W JzC'(__4.~'iH$ #)B B)㨑' *u5ï7WG/ bj?Gȧ$ZXMd 5-#MfA5IC)T Hs(F7f!y9c\05?& @>F KK:8Jd %d!"4p,? %=U%k +B9b )NzQ4 W(7؇t;^^hAk'3jpy%-$UQYCIDNa9XL s,B1<ɋg @yoq~3V#ܝjIy|OJȫ?cwYy%2dssָ> ۶[;; QvM11s]b9;Gb8$fu2ޚ T_y2UTjaL`_umըz֊[? mU\T9nmeo0f̺0(}K =GMw8 /7]Lx}Hbm\DUnlaݷ&*:NNک2uZ> Ɗp֬'84k?c_pPl.ݲ4lDnэ ̱X;ywx9Li,ڤy,3gXgύr ? ~W&/+<7JZFj?Y_))5S 2B+RQB*ba It"5IC~?JzCSV^R^v.kMxo a"| 'bՆ{oנy)q(Ifis](E\ŕ/ӷ! Ë6߆f#%vjOƧY3C?\d>_c-o0hz@ Ez_pշbs#'g.Zc)]Z{M%kFavThl#bfe^twWoz>wu= |R͑F8'N19+6}eϱ0<1sIkݤ;1Sl%l(&Rzb}6%p}eӃ|L}Xod;cG_afXrM;2 D 7ŚNH_!TG~oVqc}] bMGOnC?԰/0?NRnӈg>}S忛8skf/Cf͒DUJ,? \PO鵱55=0;?8F8Ow8MX/νa<#+gSp-VQAr0:m0ih`)j" T 5w<0tHKe'uHaR!Dý͂- v)H` d  X. ,Cr|G4׮0CCm["KJQQ%K`4+3J[gﯳR冟dǙS@ CtyʘRjO``H'_}E;Ȁ/B?#l퀆XA{GW`wWk2}׏k@x&b?ْ, JAC8g'%OH*^ϟYnG6$r]08peM҅LcfhU߲S`<Pv=9x.snR,\UUT8BdyՐDDa{7&U45l*B`^~=&jOC Hè xȎ8Irgy4^DyOUG-h{t P/W"T XP64A\ÕQTo]3D(`4>@L䜗:PˇOq,:jzG&H&m44xf6nU.KI@q÷Z. /v}x=H#pZ.s"WvWnH8W%tt'@'K UUSa1i0*#c~c6H|߬/ˁIT'I @}w3 uڈꗘCl^]b \Ԣ i#R55!9DC/1h0bq&+1i5(n=nOk _xy'<$5dē^'.ӓf@E'wS1@N&xODۖ?,TH U5LM4%|9kE lvCR2"# dBwÿC("( 0E{p6 PԨ98qTd:WZ},Aǒ":uh_WCLŖ]Z$L!]ؤ;[M#L9&"$&Y09AΔj%iQ'T1 &_\{TC@$Nhl)4$ҿ#6%06tHz6WG+k lq"ƵHj(kRHbx {n!;JMS9zL}(FRo5" _뎮޿ מ_sr)q,7ᆆ9f Hp0BvDc"ښN);\ńâ&l(oz!Ez ,2"0'ϫ<}%u(Ob({J35gh->ЂA0M#š7[Te셂+% UȊB% <һ@n*fNF=&퓤 jp!#5T F o1PT#9^01A9qȓ`r"xA Ji/uC`OO\ǃZ*:9.D {C.19{[B 8r/0xuoCsz4fz3o49]mh9FYX^d,1FrG$DJЛRjJL |RX/z+»܄hKAM$ W/= Z54QK#㌽yGl9*uC&"C`d /gAH70qӬ#(-RT..@-vc WjC !(p  RpOl4b3(dR=pȀ8fᒵa DAv\aT7 nyþ\@%S/a|Z[LT @0O'outOrS0 șAV6?s\:Bɮ*nZ TdžweIq0̉I wׄhϛx8XU Uك9xKu Ӭ{܃i#~)јjSE9d|?U 8/?u$3UPHyv)&@Dz'/%T 3Ɖ+%!0RLB$2x!(*< `;M!ŽC0}1#,<#kN(dU00ti d =8@乁vYQ0P_~(.ɘ4h+w|h5Sea RM.G 訬9p9pmuf9Vp d^ѩz5 tUDLP?x# BŘ;L-B8PP'P 6 2DNXi?҂HuHtϛfYƂ~d4MF]RCts@Z)_ 6"1ʚ4ef3Ы|UJʡ`<[8ǘQ~O4({XEƤ+hkaxa@Lx@'7*,, 6MCSPu~ҠYCVNğn%wDM>]!'$L*L)RPЃq$FxӇ̤wIe@`cWQ7UҁSʽ(wCD4L"Nk@Sf92EA; ^װ6ݽLs\Nӱ4}v@t&7; w-}>_y܄B aMNacp$~ %1EmӋ+č֪Ёh& lh V.@TYz4L!l=':p?BRpiC^ӷ6?u8.!B8*WA3,C#V$(%aKxHf``̱Eim^ҲBAcRp D!?JDIK}bukBA4B(* + ebj akWِMP D!J+-(`@Sn;ul~@N_Ez Zxru T FL޴2(vm.!AÞJ,r\9d鳡GYSC:}ghkE)&VÏ}br.nw9F +da^Hc9Ż$h"idΛh,5VyS}2s5T$ZsVP;\11> m%sf߼015?oP'6 ^ a HȄI)Пg^?q;ݥ˨m~~nPrĔ\)qbhӍ% "_!\&N0Q4Ј5b4Hzӎ/wQ`^($QM\V9YM R3' XwAQfvq"=:GoKarLX CTB_6nԙ'$rAJnKCjˆG>Uڔ6svHtAI C@"alb>f51i0{{-X<, jE,o'qw]>1ƽzdͽ`,ABI2p$'rY DCrnj:FֽIH-*r4)G 1 b^S,D*>xײ4 Ga%FrɦRX!""͆QBD7 HdP8 9(M"HiD@cRo<7+Љth >yrz@)!Z*.FTбk@m0:vz$ӳ/fs&*@A>$'r6cBd}'DH"'4pbTiQZ |aidHDs[!b#$Y*E 1 h9/Qǥ$S2^nDc; x"NCבjׁ6:KI ˁ)Id PrԝUv(0vj &Ls82BOl'|;ҧ)Gpv'POHXOqCw u -+GZЩ7ן;3EETQQ 4x~^NS}#bd%@E/PQ!'.#4oCk(O\LE^f?O?\ <_OE Z[3Xarp8ЉM/\IaEP1Dx6IA`|d JO录$>Hyy*QT'uqD"@J_u )K|;b JSzhl$C8á_'y Xa-$Y8 *?I^?ˁ!ޔ ҂64P*ʈ<|.>#: mf/.9 AӕTK&Iaۭ a"d$VòcWt3r0Zf408KoyG!!s%H8Я'zz, OKE e8S@?!ozj u'&5ᯟGF $p lqs} m4^$Bd`0 >RivJNu5}lOcR%߾Qƞ`Lk!QJ(״'P4LI 96 !Ji-*Ʉe`ANy 099 W 0YuPHmhMPWCEHDSEݝi^cD'9`T b4}(=tdBrLPlcڄ3)g~H>I0 B!J+HL %- o~G1"(TԔ}Pn8}s ƉxC~L?HcŒ_<~۪>&;|g+!Hczx}nyɽK=?fQ)C@E(j >S{Hb% {1ېӂ읦Z*1 Q>&QAB(Q7f1@>SoK$ְDݮ)B-34HP|@Je#G܆}9RD0w H1Q~z֒W f(AH҆F<j-@`CTcď|yH(* I0}ѕa$AU\f{LK0dlj\:ޔ4q!f5-1*-mbLNZ$M(B j+@_v>OW'PzUp69'7BsE}u-%5VZ)(1=fׁ02q eщ VI Y$`% M%A;:X' ̄i7U  rZj-^e|>ӡ|4 Lz;c A"-fEtE46&hqJ-2聦Vc#@i@QHPBIV5' 9C1om5U$ 8Dܸ,z#m׌0b%YK+U4DV $F  rg D& a pG4ڦ Xzx`<ԪKu4o6dhj  }DDaԚ4b:M'k2鞮16{`qw8r{$- 0-4IP@T,WC jYB".Co8Z>t:ipK]*#c784C@1CrU@E)Lch]o:BJO2KCdVRSI0C'x(xCN#4lwV0M6 LMJ[(I%BF!$ 0]6^/F$b h|5E/C'jIsI@0^ڡLX "[}w&8.usi9S%"CV\`amiVQHI,X1aS(j9 u%:8㧻RD8A+ZX 5N*gQz0 tj Lj}>A6gչ;]6㰎z$**yB|p|9aƔ YJ:P'$ %fUԹ,j2(+Z00+X-4dRb$ 3 M0$@ThЉ‹K#pm`'-"&`h=k͞ӷNAUT%XN7 f rIɇɤr6™T|B :vR:/gn(bOŮ{r Aӡ[J& BUщuw}0<: !|crh1HW/7"%9q(`EOK%U calAmɹ08kt>3i QhJ8(c |\LLIYĂ~=XosfX>Q:D$VQ8"o=x i'GUuDO)( $J!VS=ߡ`3.~wXCQImIo ʾ)]Ƒg>=p@|0!D~=آ&=zd U0|?F 8v!{ :iԉb=sc:6%E.}f EX|%t2 9!oV) 8A "=Ƅ;PKR!$Rd05EDQ'#<;~ ry!=a դ 1ѭ3ƪh3wYI3V ɤP"[,wWYʢ)ӽq 1zS#3MkjF%K\tH`'$ E|4yq-DmDHi$tZQ:$Ⱥ5aq y$D1G 03wjN\$vU"gx#-p;Nq<ԉUW-Z^:#>}gT rXz${hF gZlKI(4қ+cJPZHI@=P 0SEI6ǵ<P'( հk.ʦߠm{8)FrF `p`%P5k2;+SCt ?A&1V#%acaYZ4 )΃r%LTRiw^j$fvSZxmw@$[ИՌWv[)"OS(/!#|Qf{`p "%oFh jDXPѤp3Xq:щ ACP89%ejidj" h &Dn2@7a^O0TG2^Pj5fb PEHhokK#eo۪3,,zєYe2`5Xf{ڊ*(*Lq Ftf#-X8HY2c{R01B6 L*R@+l5Q:Vhz-pj&#LYa3S)X?F$I)HS $E H^^zGڸ쒃x:( sS=v4(';]ݿkF6JؚpڕX XZJvP(&ۍ88Fݭ:16aW\ceuSY`dŕ&D`I2* (-eS,4oBpG-XE"^9T"ף.|o+%'(>ˢO1fxj|1hbAKwt3h42ZSJ FB'INa2cR:PQ-"C$k':ipO;3!<÷] K5Y} @JUUu o#$~y]H',#n~Kso ֝{I ~ I=;9)WQ!/u+ X@%SuV(wacHѹFdRӻ7!= ?Mrm^; ,IO $o1~32 hU\Y$LQӨ*CO|/ p~\ `c %*;I6rà4@R a`M]<:hƉ B (*w ם61zOB}#a^pmЌ7ǁQiJ]ДQB{#)d4#MQ\d_m \iGS* m6 ̓6^XarG΢{):D+ )RZ_nuL-~ [PM4!o' ' v4`&ϻM?>ZXX7`L i梮3$ކ#zPY. NJYIi8 l+8ѤB.syqA`#Ri˸kR][4ElkEfҰH>gO#F=侯q4J_:9Z~s? &:!G61̊ʠ?;ez~4M \%̇BT T`Sj觗 @LF y/0eEɄd-!A -DM@z jp a .ЇmzMlLIXeH: AգqЁ:u-nB0*Zܧ< ^x |ػhw#N!īT.~í)3& ؒ& y_kf607whO6Ng8 ^,=mA.L"Y)5J'w{$֎bףnfQ(Ng#Nh};z4dHp%(V&{9yt̀LVL!YGƙLl`Vؗ-"Ha20l> AN!QPJb@P*K[\S&(5ML P"*4:M(J6$ ؀u.rffTf~$DcHL0CoCRFąrp %uty&Ӯ˦;Y WBIu]Ed80ȼB` m]88@C(H#up+ 9`w@me"R} N4aKyc&2Ot?gg `xԞ%06۝Y\"(*i() *d!Ii`adW| AC Ux:^J ,`4R: ocaj$FY&9,#abeaZ4ZZH܉vh">A_}p9%͙/ŚNeBXoyHy 'a*q&>kUj{gpG4H kQ-[HdVi!kn40$*@u엵~ [o>#fbљ hs  _#4lmZ̪ФpgiCNi/;0z|Q8S=#d_4qE:,d+HЫ@ BEJ!qdiR'V!\e*ݓT>s zbwddyvaY1z}گ"7jrM0`p379ҁMm*&_3GǘL9E|SLypH`:=>n)˴1UgMz  OaӤ7\!B ׉ٞY!oއgC&:;I {Hciv2k4^S:tӧN :7$SRj #9ygB"RCR-3< G{^S}`vztKDiu֮%P>oBwT>Иx.r22;&H`(4F4LlI#qャ @Fl`c8*""XZR y 5-jе$kל5=IdY~O :v!Lܯ0>PQLfٹ7!-WfFfScIYM|&u07,(@\:'jI?xJ4Oӈ/|ւ>MOvwQLU*J'aߜub$D.r2~hM',JQE1kc9# =C.X_cx$+DG_@Pؼ? \]S =\K.bIi\ BN v=r6[!%p$x!;X(Xwp?yTPW1D ) ?֐6.M3MGhavdm *a+bzA3$ nSNL'2 IVovZY^D$ yrd֓%@Xm  1͓'Р{8yC>!mD4MP6NT,v*:U4??Fl#oGuOiĝgCw6@%"ѐ)JAiȖ?_uŁfS"61]!5{$iЭh2GJ1v8K~(I x#}'1xcO) VD""g]S h05Ĭ',Pw @NO i-מIbx92 C P'IZ5RRJO"K @B^ruDEU̢U*YBmfc8}#7SP)) 630?o ;Ȓ/QJMR&>84bТw pլ7v擵9pzg^otV ѣxyʄw'1Ȟ6W"&^\]zYM`6chx$>&: "\bNa 9anDԛa$M 18&K%naN _qõg]8Htii2I7Juo_'p.qS-xm Z#зwSNJw7@P t8nZ8YPW6."SwdKfc!y!~Ξf$Ra5߃ӧTK3.9IyqS+s!a#QM8!ݺ!lHYTIˆfQ 8a(Alˮ_'+JS,Ș6npI}^8 {ffm5R/Ђģ5F N{ NC~7ݡ"0 /0#eLQk&v컽7j}lP_w03cn[i鐔l AKRA0=HM&bWv*Ps]&΍y Dצ^KD4{N B ^5djɘ!Ȕa-30L.xV]1&f$KFk:ǃ&SNvXLKdI;XhfLa\ʶ-E7"n究E _ d?Bt2LPnP-)9iEX`"#9ai3Hp`^wL lŹҳpS0b3n;n#5FxXI7L5-'s*7Vy:Teo.po2k\ i=e^7/^ɷQ5Νѽ ֱNaj)|\7txG 79dL&lN q$Mdpi>ן'\y4p7DTzbJ<ی1\Ǐ7#B8K8=TTXg:& \4!QyS E6 @1 $"ޜ[o5FxHw-IWxrj6`;e@V7cY&0؉I.'C? n ݾ5w6\8ٍg:vwø vYOjH0=PUMZ֋{[sra߷9c7k7u؆4Hfcw d o2 5üRtߝNͪp92E`cTȸ2S[e|! x.ji1C qx+]WsX4 <,&GBh8ŗxFu橷KGa!PteZe]DS:d/ZcG`q|L@ul OLnDt"pBJ<1#! FPz!E XmaSXËs d BfG"f^CNq37L-0kp'fO6T3UӐn}kTo,.ẃqب1@csԭܴ`h;w~S5񥳷Qmz4nuPbEC/A#u] |qhtpda\Jc>$NYOq50F&k#h @b;<5ƌu(;^"K*`2'Jو`h O._=736CjnH'miZxnuf; 8d4nJ[ W:y,V{Bfd椾1mAznLͳrG0ó&IН4Im s)Ćo1oYG7f}~͕dF,ZbEǬ?a. ɥg8n<&7mԝBFo-cdwFKjAX~'jCy=lУ.SvAQԹؤZ;2s͠8wfm : ~9fSc 8ԥW-Y$ʡq h 2:'s2W7g8w8TJ*w 1PvY<]G ѥ42aڝaߑjq# g;X˓Gn.,ѓÜukl8+;%96(k5m ne$:U\M85У7y7hOg3Hs,wWqvZ)go,\o >!6U/9q*Y<~H[bfxPːNME(yƼ;1cGʶC*wh| C*'[lZH1Kxv.+{o^k½wlPxq GAG5&g=ۑrFqmC 3Շ;uq ! $nY=[-9SpLяYu0, ^aA1 $%X5Wn{Q8i0jQF44BD>n䥶')D2j1L='A/UQ#Փa'HcgNў4sr @Lݓ: +kK vIYL3,UFpxA&T ); _dr31FeӦ:70EZz"[Ob8hI!" AL._Gqޟ!%2|xf+$*ƝmAxW#x"^\u &'L]ai3uĄ Y띍bAd'^%hD4oz (8*&)DMOx(nY8`!@:lH8{8Ox\rTcbOxG\YG~NˀqAKeY&!) NRA ħBI0T4uCOo3= gXy"!I!*dDDVTb l$ׯ^3[1U}+6zL;DSlVhyơHO]{3Y,wM5Eijn!񸂣cFu;o:jzE@jݚt 9BnQ4wq"Hs.ڸzM)Smln4f-h}K`SP6By3,t}Q5W5wnaDtx֋*HD`mp*kNeܤmj x.fV6V/0:m9}]R8au\ !rL%0"J1)X\ $by2܍e ((!\p )D0q#FA]#b t|翲r!VGӻK3J2m]8Bc0L>ϋ8 rY-A.(~*̏SLc)CۦYvLWiJ@O|sbIwY81ľRH1ù.=sNgAdZWI RQ 9jHNFk+e)&Z 8$jir G35BzƂB) (p(E]tM ė)1D܀@ FIyyQ{ Ԟg!ֻr8&#Nb8 OF˰RL; =ރ7DP#$L)g>g<>R:Bh&FrPyaq vC`J(j"V4^5IU qDBb O!Ho/82}>bb(6ͤm/ḃB4)v:f0b#OpsR?[td3 #_T9  .lGlASQŎB|Xiurݷӎs&xwy\8Uk϶Cb LB=42Oи.|B 븩zkLLD|e5!1:Le;Kd=ݯxyK#^09tS9ţ$9+ӑ= ^#'|3$Fp܆2+pf56(j{hkR#Gܳm]Ս t{15=9<߅ ?~w58ߺp nk P!&d1@ݼ's箹j\+*bPLdVw";?4 $gM)vβ)ƽrw63Qvu(h^%}5 jCBnl1X>^C!9An3pC}ˌ)ߵ.(g(]9GYMx4`N*"M9ڕ]{a'ӏtmaȄ. '8= Iv3ZFXރ;0a'CҵQ- y$b,ˆg, n Mfp|xր a 3lP*Ha.vtbʞ΁yi3'*:ڏ-+@rcT0c1 PH$2) ID"TH/h@ā2>5H(M6kR !U!4;x SMnj%pLNx&f(G!KBH3D2 ` VrHhԆDȔ$KJ 8D }1 r`~= CrUB|!bSU M%AE !?&6wgݞP@~Z8|G\g::*a>1pSQ@*4/G~3d%eL&`:J"dH n8fl8]"P:5aL"(f21* h H{i ag7=(M $p⓼p,8HXLbTE3SMdBsB$DDBU#.tXyQi觮E7(v JéN q ba#CGhda4_A¿i @;AU0TDA0P4$IE()Krէ =d:+ *(<sԀM|QIUThl`;,1PZ!$8tF9?pWg7*.4&;1pIq{nB @{ Llb# SRؖ`a:3z%dVSs8cZd\JDZ˓!rHS:>X= SC<{\!hHH~ `NT !!؄dLO=ˎLY.* &ywLq!4QDd>Zȝ{`=Dܕ89U?MhC}(JNm}8&Jz,nhg11}K7"*c7/3D6T,=$A!]'VQa`]˯Zw;/Cowz|WYP*"!C;0W?yCpz<@:1';%UNk!2A6>L'fl (o(̰f׶`ʩt^.Œ%n(dB$$cmF*58tXt#S rjN_>%|mỊ2@ '.Nf-{^oqD!J a$\( fBJd (PS:t=zj̶jzd>ce%48ߧb ڋwX~"~'ѴVy &HCaB7&F"14IQ0&ՉM@gBf`FD!@8FzT%_x N0&EŃОdh3N1ڇ;mЮSӹwx GTW!wݷ+aP37P@'r8@Ftily'c1 W -dbs^ш`g]e"?Y=Β>oC `ZNÜ3x!wY.9MɆ.1- rLbtXWMCɢ Qmې0s͹fG8=I*1]RD &i ˴& A\pΣzwF8Q<FRa%wAJa!RF 0 b^C{8"+08Hum-:WˠuGz ݸ,jf0sa!dN`:`U^fj9>n"B vE?%G!SPT.E !Y˃G}U`|Wv<<{נ$`$ $!ehr``f8 dk0D$QMMowݿ=G): #\8`d ʰ75'7A BL!Y<>:W̤KdaD=*XUFF|b:PuL&C{TxOSk(6ZR )Gڈ pa l LBL([Cbj)! DBT!"HĴCO0 Q v-c Pj]glAąf \,p9kReICcTk{w3] wlZeqOCUY4CnsR :݅7㳸v~w򧍻Ny8vl9w+t(q]ܲjZ r߇NA .mNrѭ]Fh%l! ~>Bh&  ՘]a;'H)/.5_zs3"/QR>boG\&_:\{$@7X>J^BHY)-8LăRެdjGRk~458;Բ9&sg!d@?z$CJ;^{vC60#$ɡhkt‘> /ai1'҆+AaE4,BHȚ1bb0i(C3"2 Y]blII`F  ndUS4dq nMA7LE6r 6  ,p`Ź I()nK`;"%+5SR̶d>8᝴&)-6+]F1ETo(Œ3;:@ ,  [8Ea jR&R ! w)Q5C#UHKD#C JA?}z="Yyv5W q-!=f6~ˏ8@0xtٲ^?Osa.EDB:vf;B"{DY(TH IAG@|q]y2<{r00E$`>R'V3A\5"z{T WNqNLr6јfCBd k}^yi[t xFBQ?¯h30;BaxxWy2&χ44FT5(haC:a^z"D. <;4Rk b8t2Iv$B؉O!bU|r(CmߘXLDusRGt7AbQ8%SnPD~ũ{ iDjbo-)Dޓ39"CXGF!X5xxjuV!HRQ dp #%$]/Eֶ`]M j ^ewGl #C! ٭֨Г R]V!bJxr :^|o7B G !2W#rBt16e7iTjj%A5 U ,&."8x m_~$> r!d 2 !4U@IT baN,:(b "FOu0[8"?n%[̼y  #e ("D0ª]">0]{[?gÎ9|(bi""H$i f1:Ӭ?*=(hHCLYP7|_N̤4ۯn>'ASeMk4T0Sy"!{8% %S*:\@ r ۲I!V"'P8vքa+26-0YN\>UVg97⸛5\4īM ;s^ѣFT"aB(Db H}肌fa t_K8t=anwk}jC DJ&:r:ddgCVR;˜}#6"MD񛽧wt@=V | ?%C!UҊu\Qɵ|Z,~F |NPj"B&m 9&@r amkj1NM`H|i[BDܗ5!lAIĢ K"`yOXQNQ*U ,rG, }@tH#`# % 2i?CYcb pF선?HM°g@I?XT {~}"Dڬfa 2:K@}`7"BVY C`|}QtGH'h>mp%*ti>BбdRv4fDޛ?"tD}]gHՓfB s})*xqφìyS y*a6I>ך0OȒ$ԞSvhԾ,$q2Z^p&p8i$q٘)хD%Qdw3f8{.j(QԩM"< 0\,8a L2 i8MfPs A8 KCd*WrdFX1V%:ËP:9G@^\P.2NQQ ^29'PUM qߴ3z#%zZIWCqHV⁄d'CCPw%h 0Qb7PQ#Xej :v2"aHl&>ҍȢp@cBF4N2;yƈ6zpAvkˁV:Hr"EZI̐M17c|LSU(c5zo___m:G!Wg/şowo~||_o_?|?z03|4dd@aRA,Yfa1I00JJ58Z* M`4a$!$BNI&`+ZHXl+u$?d|?PQ?f^%VfQ %:CAADމ((KAs(A?$ dBAT%!%E"1EiQEDw9 vks RB~AHP~ 2\CS~P&zF#yAw]xEϖ ~ quEQA6t%a9,E eS9uxGD6|4@C'xV,|Nbl'bLDU 'Q 7pdXu8HHx0hGPf4Y&FМ#BRGO6zQLP{*x \=;zt9%Pw֓+"K,rPhZޚ(JWA*1*i&Y!11rh4* HV10M5 ZdlcQr(lTA̹s&U #U&bGI#-[,p"Vk05VLk 75!V$DU69+ O h0 ad.fd$n) E &"25$HV QrG#3XjU)h jH"!R2>bBF10ٍ\Jij5d%U1c 7Oǟ.h\1$$(јDNa?'`] clr^`̙0_bXSw0v9h_dM<.Ͳ3&:u f@7z_8,A(t8 \"] 4 JϰXx?߁OR3$NT3IT@RKC -Ad1+;)Q>c/"2/0BusִLc9IA# V 4W|MB4 d'9BS@ IHM XIܒ} 9(KXz+e( a\A씡 T D J(Ji)`bD$aDZ!i@"bZXZTJRXhR""$&i PH)@hhJ) "HPR%f JX% Jf@ZA!hI"IJD(i`!"f*$)D*$fX"h"P"J"J R )B!""hUh<%2)bB rI`\;0/ q?C:̂|4x߄ 8〝?d 6pXp!i+X*l PT]XiM*/ +m@ { H(peH"}@4srN?f!d 2A$:uaO=h̲5dHQB,C5(^EScDH% UB„iJıE. pABA0j Hofbt tGM͌Fl2*N: N 8g6{;I.= NI 5v?{54ꅱ0 54.Y##HP#vf!>+NFԐ \SfhBFeГ!՟=5n?/+F|NhN~6U{=!b>Tg/&~#A hţ{|S bʅ)G.?'UK&7xjo䞋 D~4z`ya0%md1쬵X>K0:RFp'Onw{ќO#ѳW=3d3U6[;%,;bhEYAmb$ku0@\ò̠ {X64#w?,PiݎIK2eA?ApOEUӻ4Yc͜NwŀI B7)tg òS! '1ʯޟaQ*a)Y.1$%cN.P!p}`WdWֽDz4B.A'\Ɛ- Y{ L Z~T8I$&x4 \0k ^ )})w  tl$Blƀ%rW N7qhQs cA=00X̆B'!<JL h7"Hl1+~^N8r 25GU@~<y Gx@+rNuQ?C*z3,fk(Z}? b~9Օ{kh:si  3meA *xN$s͒YB͹`iގTg;! A`4/R6.P>mM0fAP-0asYkBi\G̜!#D*P?FGL=֫0))!(**3*?De433V-6L5Yp+adI(h4`dATNEIBLY2SPMMD9jL$H ("**dib]FҴ@)0KmAPuJ5U4PEDDQK3AeQ2.g"fIM9%ST<9&b""ՌڜdE)DU L$LCC QPMdDYUk2pL`Xq+`[_q[v: &> dS.{/^(LNs?A«㓿Ey w/T V0߿F Tñm"p#gbluO{t&a=&#  dy8_._~ #&+v0rLɂCRT2dqЂh<y1@%hJD<{N1JCQD}C%2qBg|ɀ|{9ξ!ĆDy{j,I./%# 8@Џ}{Ab?T= @0&"f  (D}"s0i) JPԢ2ġQ ܀RUì80]L9(lʦWa{y % aq>t7ihýQ`&vT.Q 2;JϘs81$"`f( OMA@QrsQ'` 'v0ȸfcpvU::v;0W!C ]n.I,Cs j"CF(vfX`1vv^@Dw0 $H|6|7 Sl86@q-Hw 6bQIJjR*Ǔx33fE\+l'l1Af0:ڕ \Pi$rC)`0 Yu 躜Uo6/O^!  +//HTdnF6QhKq^ONS@A,0=ؖ$-m|PfFu'|ӄb^IpYeb'^<ޯD@ {Ϯ+VIjC|PD?,xdES''"@W݉8nҟQESiy w FBvtT8{㙺LcnQ? vwC%ghÌ T{)V6FfҠXRH 6젖6C\b `a%$3Z 6A*3Fłz1.Nԃݢܦpډ!Z F _ CCIޟ?T{Q swiMa$RB_`&'a#e6/` ILTx׺f W4`CUG^#Sl2Ĝ˴oR,iHzAT T4fZHIga>O : /) J+{4fo3èjMMaTxbKpXdLw(>"8=n>#]J@ b<}>4n_F-#&`7s \XqŌ].[aа3;a)%vLłW)ʋI$H;*/֘1&B%%[ʘRrl48m NgnICKk2ˠ֤)Mh&Uٱ|"ʧ¤CH?0|Xd?>&KsM#&C bFH J@)x{a|3ň:QT"Ҳ}ߤ|ikă)vk Mhe.#Z=ӛHc;,q ߣ莉siFnM1!A/}R,:Q)ZTm*c᭗#Y.${5 .AM o])q*08bA.n'd0ӕQQs1)nx4a۞rйCN҃CCXugRCCFjSehg}ny,yBw cY c^0f ΥAAw)ёmPݭ;},m-L?g#C'a=3#i@ ˻޺3z>,.l ϛP:ld:`:$% bRЁ)@7 B@RJ$dPh󧤀^'dzUН/aMHwɄ.C!N 4M"#)HCC5H1,BL ´ JD{dD)C $ BB3 ""UIHIPJ"1*$"G$DJ "Y!VP@FB7P@K%R%iXQh A%YB)@)HKC00HB % LIg~8RM' ~#ɣaHRD~&0<i4(qp%TZB IZTS0t@أƆELN{(V| T?P((i_tcRSBDQJPW@5 BSJP2BGdLQن0(T(ұ$(ҩUI%D0B! EF[Ю,!,(GR`$  D%$R 1P$! F"0adDvmzS2yM mbRnԐ}uɒP9C |5>eY2 g-H-z3qJ&Lڧ(DRgyej۸`!@`썝5{PwzGAܑM!LHQ %&1}|^U S}Bd  U6T DDABQT3&vqt!5&9$:!Q.@K;$T/uRhv\P(`a<6mH4wQ<<|?l=# q(p$!Q `6 $ITgᰔJBC$-"R%8E*d1+O^$8S)L@RC'01 w83jz Ү`-RYrzL)Gc73C"h6߾.T5Mmksuq-{+\1'(@s$IH$2]‡.0p@c)ۯaiabf?9 n%J0 EBl0EօeqQ 0M AhP !G\h X,L@Z ݃F7JDJRw"{ Db?hFBŜǃr{Wj"e9Uۀ^~ ~! ?Ý&L!Żpii |a{h6$|L xS 4;vdI'įv>9$*Cn t! 4PM䵙FD0[#dDHDm{M@rњ|QvCUPno ZUV<9L2lucG/& 𜵧aRN뻡&9kfԉ4'(]Zk "dF>,Aڒ0`Tؖ';qmqJ+bC@|˦%@HK,q Cי!Veg!sz a5H$$-1@ fdFBa.H49d 0R)@!*;0Yh;,' P +yt' bFEn]/PzfnBW \OjbW@g<;_1oF:R(R\z/>bTR!'-.D5R43= ifL7㎃b`IHe%@h[Aqta'd߬䋓"k01ᶌKXӃ0(K$b]qQvfip .p:=V R,a !QBLs`:MaP$6jPDAC!oӂbƛ̢3)b~?@[c3Iܵ؄u$q_Cv|X> ~j<dqQБ_y"`aSSD:cqcmX+qEfiu-h>b !ZH[ {(CY;#cjJ NLi8044)q#YjM}|=Ga=L00ׁ~ vdӦ1" 3#ȍ"4jw`LuVăHr!iX$q2\"نAJ9"DA<H"X i#sx@[M~>#d,(]bm3lhb4E4bփ@4jHj8lYtoѽs8+09ȦH0! &!B4anh*r)uNhͻsoY!)[1)bP8vR Z"DPbG5\fDH( E B \o+(PaTT5@PDوVkaD4KKfH(c0,!"e鎬KK\Yj˪!(jeff ]$0 fACYSB!Ҽ$X)kY`@Ki#,D IUUU6S'`G.H $O!Hq*?mNOzEBSMM+L햇-AMf[wT)?|؟X{$B^Ȳi[( [6|؞ _ ٨|a7/Ёޱx(vR(`f$LT=y=C~̟d|0S堊: ,>t `rdxUvrI=}2Z}x½NC߸,!J Wa DIu2bVy˫|jv$}"3G T6h Dҡ5"hzRׂkYa FC-gY O, h?.Vk`nGH%I>dr#j:}]eC+增̚z!JQ3ϻNLb!|_~x φ$1{C + NB';uv{aلNLf 4NEOꙹ\\ȟ)P `jcB304 aC8 Paف&O)қЇ, %q -Lmв'7H vxPQ+y yO4TF_lA2`Z`XF}堍2 QRIIhR  3V,4NXat030kMGF\e dCcxFaTvoa44"µl*̰qPai005h 3D$aRJa2m6S)TBf"h D\¤ $t.3E .WH$X}3Ǫ+'Yݰt P2~w<:}.7ay~~΄ B$*eFU+"ZfH)%a`Hi!AIaH`!A}q仮6q''D44rC% LŬ~l`G 4ơ>hMnTmcMZCml.|OܻBQhqnC!:z<" =Ń!GxzXD +))G9z{;&)C 'pgʫ|9AIޒ}F3I(: wm:]ynQaTNɱ~a~8lDDzϽ(!'JHxmz @QR(+'$g[*aFMkrRj+!$Mdfj2L.s!!iVbkpH@ Eq5%d@Kɱ5 H$J.BD@(("$ǎ)ӾL>8cPb*h 2d"PkH 2J+FV#TPL2FpCf R8|@0v`kSOxh<G>_`ppz~xA_e@;#SG:~0LW#$ '~.//ß5dY&b0Fmp[a蟕.l_(VWu)Y!(,e$yM`c2pwhdE:D^q-gԙŅtb"5:M*npiCK3(R/$:LJc[8IsRa8Ht0/xH~>+o1{h(qo4l7+ܗX0q}$>٭i-vjvq s9@R)XBF %9LR]G});EiGm;d|HJ`A.u2IfA1dt)sq ꬆpvArQ#%qx"0Ck3+ͅh"i߿wdkϚ tE7"QUmيA LA=oLi:# 6XsD@YefŌ7h1D;^nႠl l2ԧIxɪJrL1JPZ=&kϣq>n;UOX&`!(!!bT &* (ZoҠ`c4 , )K2ADD`;SJҩ|xzԠTeFZ5݁`Qܴb Y;$L"E]NU@1$ZFU9DUfQ4cgȐ@B"$m"@ 'h LXZm&4Ar9lЀMJ8B@")HA$eC4c+!(2R8elEܑJ`d.SW;& DA7P&llVX&~ s "s'OX\UftCKj4{["u!挿 ]ktW\#la)56[΃ 8 8C#? C#|m=`:[h`9)J2>!^4epm+M:딒ԛ;QQ{xFchZ!ՑDBi "' _]aVU4Gd;+ {y=B.QrYYadVYP5T-U#H-zVF(,@'$tHpC +2תJڰY$`ܪ,jwYcӦ<==RrmKFٻ pd:AQ}Lh{E=p:另=m2:;<=Ђ_$ Wnk_R_Ҽ} @F zs<8C }irjRyb¦7jY{s!6?Zi i?.joCЬ$HQ y"tc!68Pt$g0d ,O0 е em=h`zK421技Fc2ME&qhӻ4qS[8٫fQmfUHSBhKJ@ƐccaD sL1QR-Q*ӛJiȖ2c m P|[T(7Yf0r t4Cuh$!ca(npcC1eqxƒtSE(AO6˧K3)AXVZ-' 3\솒LGFiM"X.%Ÿ ph/G*Zik4PMZ P4 ľ 1ApbaLD7\y)"lƊn%`'|D5IU$ͻLֱQkHe+OEJ"sF(:)Wl <6MX)d-D44V9P!Lk@DvSRfa 3£xR"5 dF[Xb!B5B1BC!,e[/jՠȫfL4P,W5)Fp,ֱK &P) f+)n` fJ +c, h88֗%ԚJD݁M̳FVҦD&jm5d RaΔKM*wB%3#W{!PX6;& @&(2l 橌mC =T@4Q͚i *3C$-1 Cԥ9. u3G ;PȔ2)((U"Iis#0+}>Uڍ~oi[)o,F4A"2,*F`cLmah[8¢,2X(,Ȣ*6FFqElJ~}OC_(xځB d͋.1§#.aCV(*b̈2W\É b] /%MRvQT՗'$0lcI$64p!4f:/~#N!Ha Eqez]€PJzˆ"`rKX&JaӊdMTuHq Ezq.I uPtAPd V㋉iT2)9~$2E-':Eu>pXs>>p|0y`={8$$dr^6zv\ r"vYopv=BL4ƕ62#3vdm!ǮZ#,hfNI1u_u#u* B!3ZbRA:%&~\(dO҇vA|h[r8 8&ry*w'.'sM쎑arl94"J )Xm;xfcr/2':w̽Yܜ;2I%˝{\yr-#KjA( MT\hż#YnDэ1L 'Z4ybZpB ·`ؚOtX;h0E\5όpP!K8t;ZC83l|OKD6՜`n s0Bv8]lȒijC{pgl𰐡"V"!WEEvn~#=\ȠF=Ȃ(Q!QVbD6{A/4?TnNߎ{m竢;*}8s@Iј%Q'"2FF8C bel! $*SJL"rr9Bҧ1zZD܆jnu&\`(f: 1&"ӁBS$MMAM>09t()chXMF59J p*'Wdl)rlJT4ԃ5).B0""(Y dsa5AEV:YqY)uzxĘrM:2a2LVSd`O$$cv S+x0nPK@Pd}FQT! 7yJ02gqd*눡AP(ECjXhUN֓ 841 E ۉRD7*Z4 x pRD-% ,S 0Q" - R2C)1%E!5D)ET7} EBI 2PS0LPPAMA̔TA2A!@PR0CTDRAzݼ9%#3=Dbjez\D”A "h XbP8w(@2u FJ{t阋/pC8>֠v= A b\ޢtE#1Mݣ}: xenD4vT*;Ϣ;z41M: "tӲјu&KM#Ckfm@9/x٥7/b~aߤVaBZ)J{bz}{Tn p:~!u}#ha]1QRwYnޤ7s ѝϨ3OopX-nP>Pypĉ )\#i^l>Σ)pAF @Mסh "| la:b wkk> C\0>_$@99R?/ˍiܘj gT~=?_?{d8y']Z#/Ii^q cHk3Bl: .b}C>zγv~!޾݇ %dJF qiM@+OLfhO(." >mh,rdŘe'BB`>)>es9ÐhC  1^ó7/OQrq3 aY l'sx"n!!Flj,`,{`؁ZVv"lp)@k1 xG_;tJG>go?3+`I4@R@%l= {z4D t88T!t !VBaN$%*G$,+~BYA%D Md m3+1lD b[x@hw9&fTpc(Z#VZL1 h5eDDK0RI(RSֱX 2\ Q,#r)DX (vm7԰np,3l'x8LJAE!%5dd0:£33 bl F"DdCL$1 1cQf))LcY `SH։NUc$ʼn e6cUHfaQg% JhJMe68f)"K0\M 3Sit&k@HDX &CQP2VGC@D&(C%т"Ri@ 4;Dd8@PR KBdPc"3 "rIWR(Bt@JdtB ' ]5(Ld{<{#SFp6T&XHHٯskea݈ez}ϳ3Y9@T۠ y u0P>6*䦇} <]oJq+4DB_LMnE7`<{ENM1uaF.]s& )b1y t i[%S7gVSj$Ն_! {YJC=3$!Е Dt$NH]#bHCd&kfP&hI]q!(Ѱ?-AI7r=h!]z̈́7IAnS$ѣbĭb%h$u47,L=DduN&AAJ;ݽVs76*u= ($B}khIҔŻMby L^5y70 Kz'҅fp X1yvkNO'7w$CVnԆΜĸ2$w ڀs/HuGխ>ko \9 ] ĮFvaB$ 9hƍIF6-錡-0W!nZHGiz9=m #W9 {!SsFD rFC!O|lH&䞖 k2yJd!4 JPUPC0lY@rL68E0BLq8k}Sİ@L%$!LZ.*0θ y;@= |0]ե5`ug\e"ASaSK<Ɋ!UUW3ws|vW?:6 w^t]7I%RBPLŊj)5,zT;E2^*JP4&3n呂|1֧4zSi(2$`tj4$}>$C h3n ^;)x,8/9b"@It;=$'\u1`% آR -@ګ-tf4D$1@p_J%@(EW>}wMqL@x6{$0q)MT@6nj d A#B Ò9 #P@G0y7{CNC렼U0TRU=ϝۡ49I v&n7!?PNƍw iPj&$ B!Bb1d M@a r%b0D)`0%x@E$@aaC.Tz#,3$22pfPq2Rj3#QC*!C?O+u4:#1JCCGlqTkiJPJWD"0*AP6 f5\D0tm:Ā%4wA Tfp i>aFĹ$| 5E{p1G tՒy]@*ͩPjaD,Jd  D!D@tr2 z&H(l AOI!eI4P`==2Bǽj:`9$a@yhf.$XN#P PO6h0 Q D∹uhP[hi7# 96FUQCPM"!B*BI ߡ" RJHC$mPOiOX;ǀh7, R(-3Vp{dZ0zq@ ;;2;]RsCvWۈdQIBJqPoO#/q=i^%0ZĤ:x YR>Wq3B('l'MBf}W#LYiڊs(9O=§5Ո>L2Pj fo2 ^:+Z 2*iư\tC='x)]Nzn> sӇmPHCI`Qt3cۘLwĉ  X"IZ /<;;;oL?,(($hN%sP9[NyDHH#KUP2JL+xVNCɚ)>}b'd3d4O74J)!֔pqE( N$)`˗1қ=9K΃ A$O.L gL2[ Q'`hCk "J )z[? |$|);SuTZd)6m XSZ83\64RoG M:zW: ɠS¢"1YI12^bUD(P_h5íQ(:j@)]Ѓ-H7cTz2&$ r9E/wfc{!&%:&4~ LS%$~3ᤤ7mNtQ? ֲ$ ӭӭ M2HCG$kcm0AK+0vdDBi CY6Ҙn+0|N2߅ƣrfht4diBPiP{ǩ2J>!/bZ58V $eDd _XxaYqTPzza<Q2E%LEA+/ AǔÃP^7˭OLGXG,k%9-rRd?!)@c.:cO23Y f! 1&ߥXP}F}G PD#m,3Gzo 6R\M&^ s:uOEG᧡+Bx`^G*(pH~͙"&瓐q7(H zTݿCWFT1`8Ɔ/f@A>8GA]C?W>JDŁN87FѶ(/sC? δ&Ygqw~1]E?A8Z! In> ]CÜԠhOX4`h-^`4n(DS 4(<\?Gt&ȱ̠3 38FQT%9*WۭLͪ8蟈Iѡ;mpL97"XCD;3, )֗.!sFXJ&C=>8(rzi4-Փb# Ivf5i#"Bġu4 1F muÁFQRaNR&6v'tkĔR%oVD.xGG[ >xP#蔠sJ_?`6{ UqP @3u݀h)`@j7ɠ)a;'Gq3i;I>' P1B3SIBDPR%!JiDL>sCD6($%PT>'$llC!-UW!J(2X!jYIaXiauj $!)D|?Ad}ZCq4T:DZ*j5fhDGCA<;9䱰zd`+?Cy組?"5-$T ܁fKqx8$|ra:y0r&xÄNkv7Tui<(" 43CiYvDSU]O%3W=}r vEe7nFN5_'Yz5Ó[9Wdj_z];0 4^CJ b񺡡ANaU#$|3‹\fÌg6dEKYBv*UfXt2bZhubW qV̄uO;wL뷶7!49dt_HZ-d/*|][kck $rh{ id $7'Z@ce{d<<{B<Â!UDU.vl`SԡJcI_>J' ՌA9dbHe8a&XHP޳Ql qƚ2'Ȓ$t&7ޑw SD]C)`<5iPz+TQ n{ MwqSql5Ё2Fŗ@&I' i iJ&6 MUa lc@ Pb4NPN t&vJmeP9(4FA:CAC 1LvH| DZRoYF;h<}r GʥOk:T<lsΉ7h''LDAPDIG4Mf :\p_Gm z*  Iyp6_v- SOg͆#ʉ%؃>WP C` &p(Q=CGIEꗘP~kɠʂI>KM9EMFB\DKW#}ˬݳ+ `wQq}4LE1(x <Һq)Y#'`bɝ7-"FDECPf0S.6v6~3 HA7Ҥ-aJ!j 6j3Bqrn B*,:6}߱Rn]_YM+" .J NI(aadP۔_iL>8@O =1B3:!8k{3JYdA 9 JT0UR@)N.4E%YFA5%S@A31Q5BR1DurB**" Ij"* jZ Z!""0 D :nY qX q}&  xN>Qa&  Bef{y fm4YSCinXqIiܲ 'jG>s1C;I,+6'9DqA'ua.5B!VWyMh^)ib+aMq7$0AB۲yٛ .i&uux9!l]rsl8 ЅC@x\Hi6J$ VXj$8[ img%؀75:LҿN&II4B,BJs d mcF$-\ah[ ;7yVLVʃ H4S0DR#'L QL e  P犚U.<4p$1xCR14Aeo PL4eLL#aASZـh%I(L1EMKM gj `d PqjFnLFbXpƠdje- =#F*()*3dkΚv9M0hv "VQ9"ESkGfš\pQ!6F.Sb Gd`٭U P( rZiY-IFP='Se )uS 3B&<5aJ^cB6[+adf042LSubo0-y#2`sz|O*_r {@PO$*jTpV#\P;b'TnFwx$1{h!v$:H>G&F˚6āՖ"rbNӘ$H1M()iG:3RY /hfaJ|0Pʤ"@a3B(Q6b""%#Sb@I0P- u:`PRPE&BH) h?x h"0"ccx  0J#c,2i&b5A!HbƧMP`B&+ EP• jd,V ӎidB ԰Dhn֜`ƋTմFvj L6TrJYް52S@T'j+Uֆ:´Ҩlb6@v=bšFA+;[0#uݵoLDJ4H/䐒C ʋ@ŌqR2HF8jXF#q$+As44"h:$S H$d8[$Ո'{}ic=3P{衁tbKtd)Ή'Js8e $Xn Mi>1 " *b" KBc=_>]4'Ιҭ|>|{"Ff("aQ*LXR,w4L2˳\+YKn4r%2ZEnMiK @@ wr9 O=bdv d"HPkYK1DmJeLT PZ T90ZOwM*{"xߜ`F`HMOd'Ir<ΎA'W&#xQKqcs`_̈́zWw1[T%b HDajU*XERnT{rpkNJHK>Clyɐ e@BC 9OxȽ714 j E*7i"Dxr|y1Gaf#҆ϳV)̎Ð[ґѢ C*4+o/0d=ڎ'DyCN< &i ={~fLQa /]uWg<7/>yt,~x}r RCD>HxzF=CSPF lLufȪȨD]j%CD#DO^>p /D 4lH kp WG@k[?܍%JJpѷC20k`da5HfRBեJ1.JT D6Hd1,uP!@L /fc350Uf 2w⧑$ qa=,M!cADz代alI7C"n$_*H }% h60tv&ֆP$];nS5Q0`##:a&PdANaF@aΜDdLS o_ϗoKk|V"5AIx \Z(P?P: 𤥨jH&! R)$BJ8:izn":Q%VZ/# "#0QAAKLԪ^D[|D95LCGMP$JE2Y!b: b Fx!S?g^DLWgs~Y =Hî^=4b㧕d(mg(P s ch^́YGP$0W0"@$0@hVY!B4fK">5y-9-`E#SJ}i$-}2BGuOAͅpzP( {W=ö}Ϧ@@>K>QgWWJ ?Q7'O^ !1oC'>0*n'#P}Ղ?O $ [0IsSEQ^_QHXFCbC@ 2 U#f[!JZM'KfK D+RdPf%x2"AV apjJ<)T[`rќyE@udYZHzhV @V8bҍR#(EA8 }l]v$* Y,j5&l,1Rѐd.fA&ME PBS!A$&J@BC:<$2&4 tW`R(t(6슀<>ؠcxߠ95 ^V<=D<r:, 6==,1"2Z01AZB$QVJX6LiH2ŽA4H[deD1J(4Q%J,ZuIF5AiaeF`da#6=UW?t1UNJ5k .bbd4:P wqPgSK׍OǍe9sak *CGLtdQwy;Dw~9LO>oy 8N+ uMm-nNI9A#VWW٫h|_]o?N$tHVzpynA秊HQ.a Jϔ^"R4|1iد&瘘v?2J{gn]㿵,=p / b HXu Nk p43c`Zp;5=Vr[I'JYfXl%J=0M;` ňuxLy$^Af@&ͅY`qD&rR⃷vw.eoŶΏjŨvzFC>Y*mDt!&Jq&R-DfӸ{αHq\Mz!gt>`<2`e`AYLd37Ѷ`#b y!^4;;8#؃% %+q﫽8zmTb Mvs*܅{ku^W93 ߃am7K7m6;}͘_^) `Ⱥ%03 \dXцL~Q2V5hן>z9x vl1wZ>?~ȧ@>_t\t}ͷ;ےBS]AM~jr+I5 vm,imQ@-a[3>)ፎ=9mr=|8h'RѢ=ٸ8f31; 6ZVOp(228̖de. 3OAfO:l"Sn޵0Pe2LwrTbBH=jQw+Isw ,ۜ^%a9:xe,91 5Wơe|dSRX0#&;?79uGޗLRGgvõل{c^!d^(3-`xBGB3^mwBO4O G7fS9Wv^2v)#qwu AБC^% 0:׹IBAgb"bNRϤ h촃KO8㓗4/(4L[:g]zDi'goG4.y듊&O/70qQs˫e\C2R6ӵq!t LRzMK i nH) 4c։*D)S ȥst1ª0sx_ps6ʎó7!vD[L , (5΋ h!"gꉏd`sXHM5HB1/~D/ ^<`>vSOzmJuN E) ?V3})d@ zJ6fJadC|&HI Q"IL'xokU2W7ƊbMC-YL⊀%a ǽ6g=8tĶcG~@I.RF]])3c]{>,-"@iνB= v}Xp1 s=9R/.޾:7Ia 2'M%7-t\Rl`{svZƩ.gs7RXsBp7aק\Dxxߌ/9v<7wnӚ(ιzyxwYBZCF&͹iYQD,;aCo[4 mKtZC4kHf~LF5{ 44Tp1%obhsE(rwDL80Th?{j$|4C ;hҺԜWt[TF+ 6 Z{AĸX;G=ߒTh;K8Ox' ⴎoeO-ǔ%.tL !sXLʰ/2gU!3Y0>/\s??XjocHő,9KBG6Aa~K2VzV*_8dRub9BD#{|O$Tb^+:bDG?%ws̋t;w3F\,rdkI/oym}2a!at!P:wLPkfJCr+I0O/.UUxPB aXIÄ#5{ Z)y̡WwT`>ePgȂ^`zpJdzX3rW5&Rܧ҆wa3naaa7"NЎuمb6xy.e:$ON`KOՍ46@Gx3Fa$2푗߱,6+9jt^8+)$CMҷ4[_Ne#׷zzSub3NH \sG0cxPGL8ą5M!ܓl6BY ӣcg?3b> %Łی _pgCpQz@q[^\ %}Q{"IcD+xI#ܹwbO?y2r1FQ絪,4!&"t;' Nx\87x 9}D'ǃn zy]Xb Pp B $$+Sx:3=i>!IAeMҘ+A1p,zV݆gS,{ܗxyEI`*h`&Sg <`2?~h(uW5@qom2=c7'ኼ5B)"j!c⾽;<8;CgShCPiϬcRC,!B BPuC[Q=M `׫M\@I;L7<]#<hBfPhI&h-Č(&yLA<$\` \$6 8 MDX( Ǩ 5 \ֳ.Gg%z!-o.xb.%59 J Cf]XNI*YWO'J#|%4j xP̣raҚ730SKR GlCr1VH1׌ g< !\U"qdG0T}NASNLmhLBx@u.RJŎB@$:%dԋL.؊DQ#@* R'@`%`1"1p_% C l\BBGY^dYϞyQ!nN{sl] jtL^swUoxjdk,:#0-pilfFیL Q6+YOrCaKi[-0P(,i\3|JIJB B"8WCg*(G6|Ak6UqAeG#tJ`uSx&ЧG"jki+0DE#)0Y՘ MW }[ % h14AOkju#5 胢7 9 ! :dPqLx61s34f5?/8b9G2ݕGc:59Sw:oÁWV<(jTa׏>6FbH%v*=lyws^ Z2P%pqm:5;X!mi^Zk ˟4Nf`M#bcNႆYau27 ˫[DLNVpތ7F~3^d|}skn *DADxv_7g5!K~= ϙ^1?ό#T_.QˢYĝC;G x8tNIg8XJvy~(<ۧOq`m:$Y`z%ߩ21^*rqyFO&r\6F:JCbe>^^i@rxkx${30W%d2=p~f 9&HdLd ܦV9@bBw "ddR o,2HJ SF>!ΌꏦlC L~iFPٻ!$dk%DpჄֱ[ֈ>p1Ňrl<3*|_< ?JzimŚ֟}^:;jj`QcT9{ }'9^G8 *~e1CP5ɈR Z -i>HT?CC 'ao/qT33q1F1hi'q;}?`O形paH[uV oqh* Q^v7k]Q|mT˷tzO$+ge$" @% HI 7z7$j`!8X|eB@` iff-Py"Dq"'jVnj5]}@A=pЩ?_zA i[G$))Ha*"bfC Z\}7=dC6|ߏP1@*f'Su5GuP]zҭsEqeYU>Qpy8F_$e4Di"Jha(h4Q_jJm]R%1&6͘QM)#1*DzEd+Ic2P#/]FFKPD|VP`TZ$ؤSHd@/؃^iԧ Ucɓk,PX}n(irT;楙ӎ7c$ţT)+CatC.WT4C& )2fiDzP\( dE[i\B30T4M8.Xv]pǻ %16H&ZLx͛TlLM*CUa+ [SS sR #C9I@Bzc2ä XTnHɓN-** pBZq&, $i^:d0:ʕB\ID!q[8V:m(LK.Fi}x%Qx[C*D 8 W4ONAm 600_qxEPQ&#;6>S5,LNhhEAZ*|? ƞ̩Jbk-4[\a^ xB$#;}H|K*h,QY 8]@+aH>Tp倘 O""$m2|'tszs2>AJ/&%"PC$+Q D-$!>,?;ta}|R`,C[nB| I}>o==Fݠp]Ar)`*RHo2繝 /I`GtzϦ~!/#DB'H2"96";p@q > y`Yz\ H2")B0g(yx\9,BQ+P =u:\Ek%`vmN<,21}ft`s؛4{s\gz~J@nN%K HBhH ;So>ҔΐtZK!!HPQS}ɯ 15~׾K6 ڟyȒ)#*0QץZPIo UŬ "[(\4T.@o &60:m`D3SP!oarAIFXcccacNp^2])Y2VgHdhйDJa@)C4 ͓_rdmܭF6`O)_5ŅiGƬiɥafa_Lx c(B¥pN6XD$(w5f^LiRqD+dv,:A%ʈcW˯@pڑKӁ8afvk≃e!+Myû&:hIH;U4Y\g@D~YNY^?w%ki2gkOÜy#Ӟe9s4S# }yʄ&Pwy~9?1v#4i%X;z/qm{B&Rib]{  Zd?yC3Dwh sq,c)N\GY~Lcrn ٭7Ӝ3RG;XC|VF^Q)Q7.@M = v'P;Z6<9I3q/8ìsk8;ClDnCE- 1E(QJy%8Mk3 bz<:4bC2di tr2@!gV:Kr9be~p)zwX%li]:n׌A"[saLݪo(yaMZUݛ7{ wУf=Q9hk^3`g>f;3b !09n *g1/*'|B4%2-a 0u#w(Y S<8\ph$ mVF9tv 3k Q8Azvt"nuYUJA% #gP]aV2QN'&S`꺓qᢴIՓϬ4^/,F IC!@Jc<]\N] /[L}dkLޚoT"\餜IdiS?"#IS$`8p$#LD;ĎeW!! tE$a$Fq$"ѐ[6Sw|.u8U1cNc!H!Gs`2rݶ 1/@X3;S2BgxŮS9.FitҎL Q(9]b*.ʝ6Pk106vgjLa$oCA2iZ0n1wȚFdᔙ ]s |M܋3.tPؖ~8arư֑i ebN"DʁhCi3>e8շ{!mAbXТz11R<K2me T\˒; h [ťvGL& icpS)N57R}zBsͯS707SFGdǪp\Ih,A8j0#.gdݐf2"poY֕gh㗭56p;(S1emrd!oBʤvMM6\p9 :VZ>./V6˜&)QPw Y $"yfSPM9y͈G!aˌ1lw kSٛՍv$xdaY--9lJ &[y*N#QIǞ,V!;fPte,N1r؉uuΔ 3za MHFW01(S[&õ3/m̆%ŀ8*ӕf0žP uw5rg&g#i"|7BY1y&lFmmӂrvӈj&>%2T?؋՜K(#0e7N3vB;"Ycv$v Vumf2WAĒ;7Zfp8öׄEɘ UL`-LwY6mQoaܒSm`/8jMk,osN!`&]ޱ jB/H2hd"`rC> `&X7]2#&j7wlއn^Hg(Hhpԕ:dNU@taly4yHik/aMUEQAm VMHM%mU.oKJs +f02\#]e~\n|W9RqiE9Qgǚ3n]6> .B2<^úVВmg}I="D$C2i<Mӣ= Sߛw $}oHTw{:f "^y'PhPZ$g2^2Oךu3LFĒK `]HYCz˒1Hd%m3f^1lg` 9c=b00UUQBE%#+)8b=Gis&Ĕiq:Cբ*4h)膀26\@vRZCȉ:1NL:hheG@"eX:AlA&C's47Q08*@*&*""*N H@֯p$`ԯq#!ARl"""8G Cg"*cLKBяS3Hpp!0*I*KΤsE]ق ($P1 z0`p\! t Bɹ(]T>G{0H&.`4Д|ZD2Da9 @b@M~5׎L%a8P1VL0рy 6="|D]׻Ȱ8J82ŝN td"~Cc F861dQIG#DN)jI9ZP }Μ:ef^,rckK Aq1DTؑu= |5=Q+|)5dI`]] jhȩ/m޿J'&"TBNDnD4*z$~bȥē}=aZ,wu˸8àN(?/IK\^^alN='$Ӊ;X6?S0 iH`;m(=R>y3lp5eh j"2CP!F ( q8 l !1& V1)Xxk.YH6C3uC.f .FD0@LMhwPuj (Up*5^nRPM1&*ŖK+Oe8.0 V L/`G ${薹,)FFg$32!~Dgݕnpe sL0JűE-pEf[8yR-8a`1^M1Â1c#3]JfI6HDP`Q$ 0>>0^6d  3!M& q&hƒP}w"L>U"]y< hTvԏ >Ge-T&K_3enJ:sMd!͛[6f4XNQrF|WovYNޚ#E\\3 HJh^'y]hiQP 5 E%D4TD2/t;c5E j4XCNG0بxsAw呓D+3F`1 4^:=F,q]TQ6{,B6H|xy Y"@ma0}foo3eF((w$fO~( v]&5uF+#pz/AyusC"m]f9ulQ),4Đ#{g\WR'4ĺ0cHM<̋]YF32qCr&0hpP>B~ L>H"("s )OъJ@jE7€jUHdxCP(?y@ R!JdʮDE4:*  FHH Bw+T:*(U)P!9*RBP.@LjWoa. pJC_*@@5(!чo,ѹͩUDڌ0ReB %!L00 ^W''nwROZR%pmTA @>@UE{=Xj33|`}AD%?P)誓h!jD}GP0+ rz!>E<IsJȡo!w݄/iNbH=0p qݓ̔[N)"Aqvj( 4/]R.^ 󻻂 遡% S5Y#+4L9KT츟~6mΗ]bi sycԱ*Ks 4uūs|+ܯW) $qLT@DG!$q h"$J[Zҁ>8(nގS{ټZI"!F&,1pdތi1MƵid.Vh\h,jʪdQD3 .c$:jf\x0 Ed$Pm̚+JщGM2D+eQcR0QCh*;Lerf )֐ 5H b934āLĐ1!@`DA1@iPrB`EG*8HM26=21X2kDKA5KNaS1hލZL,"Q(pr2rJP)TN7j)w%S%P2ȊBu MS@d! H.`XeDTd#4P1Z 2,L31 *30u:1̬""9arYd$i!L%|6~ycȤH #No^sPZwꜘ0d(B6 >h;kDu@I݈`$zT /FG؇@E BRƊOսM,RLDQ L  @51lR @WS8w#,AHn6BP:IS7 C(d4x"ІBd%p`9\cCϓ81*"&VW L 2;"ZK>2m2U\k5omq5vM |uR:~S"ῼ=9800>s7+ nyjN5(<9 vδ}(hS`z>P`jH)ϻh"z}pn#JU]v(jJi%ԎQ\ JbRA( p4ONչB2jkfO,=:}x.o߬((8YD(bSY>T|)^$RjZr @uzG@GhTA9O^bCW/M _a!b7>vM1npS>C9""0!RQ&ڝ8xҽ"4QMcK"SiKIp$fg_gD?88|C5Rٸ `;hİHٞJRzi6ep~K놥[mI\4~X.63@I)fd퉩>hk&H_vxN6|eݘ2;y nܽ Bw\GtJLHL}"Rr!!9.NFƹY{<_p6 d!NcCD H(!ZCG0`<뤀zf5 !l'X|)"ĿWOgŚ2 ./_G(X6EA3_(mUT{>|P+r`}%wz1bGxf 4`HD # A"h!:4'cc#<PhHFFCE/F; fMmAkG-̄x4lz*C}OTuS$hE3ߔHtsuà0EAN gnLeTP\[}|ai?0Ɍ_`0G"(UVIs *jҒ\0+>z@o 9؇I 6@Zt] &r(L0 d&h4& `*~X J hBHiW|w6 &Xa/2N`v̘.8 lc&7Ej(QXKBFiFQ7l6(XMYP[L1M@ѐ~#qۣ]'mQCe/ R#Nsw wyKh\ 2׭m ch2"# iƨ$G-jiW.N4IX"pMc7oiFe;хx пK$)%"Y)(^!t3e#T)RF Lm+0Q@̡ =1oښ]"%m.C~֙!O|A̓!">_Ѵt 3|:}#$?ЉEAf`SfdD2KvTC rIJ(*G &$sXh, ?3#V+*0Ȫ+#Q0R$ i2y"J"R.96bXca!MEDDiE5E#7"ըh'PQ3I@C,1 K%4LU@I  PL ! BR@jDaѭ I$}*S}x/4@}#Ao4񆷽̪"@$~^o1){" pS%FhS "S?^__!}pf[F,ˋZ5pǑ$& *j+m &HU>}m ."ª;Exi]l?y&? #Gc HV>%A3S&k;7N8Dq@|8pCP /1XN=*/6 K'L##/) Qо]7<ܨ}$Dsǿ2mV!npj&5 <=v1A8d|3k7X究SX*;(1 9dFABي6C6M"T+7(  % ӝJ_ ߾߷ f_D&(q|6o1Bp̨ځɧeȵp6Y@2+`)L 4dF2ևDȳ%ɡ3'!Lcp#1@$b`E,XuCNa-Sfj4BasBZȣ,rH)DM%QjSȥ2h#,74HD) R_{Bj #ݣqK*Dm'^H tA S d bouC!&kF:"$lƊf a K؟zts_s//XpG.J[@ G$D?4I$~ǖҶ+q@Oqum*Gt8 F.s2 ݅%R  mb5DgY#m @ѲmdZ2 xpW^K1k-hY4d6\5#[ބhbDSfQTb4EU|>8ϖs}TAHZhZF&b*hJP*![>.R매P.tȁ!l [e$ b@9@0y >UkZ{}[AM2`qapxǖ1 *""QN*%!ARđ̱hZMCKTH#EQ<  Xd#;uTz38n LrILZ(v88'* !v?I!ObđCO緷<$fC"sNhJ!+C0SlY R$A:P*P(BG+|~vM`^6MPZq4m#R2@=<ωlN&4a`9*H@nYD"pJxoXRjMA7 .8DYaUI*?wuokP :{K?#x#@9zÀ"Gԣ!x;AU5(Rj a zZW'@40*)$0͐۟> D`r{PN2}CfX&DQ@}rWՁ Ru)Ӊ:X@U-֘\QM %Uv :~LC; D 4aH]K jmx̌T㇄l$zyRAI1U }Ed#AP8rT ZɹTu b^{FugNh&iRc~ a暨:ˌ;g Ík#(ި𫴆X[W뎋a@MQJCD̂Q)Ol&D^P9P Ljz32R -aLgQ͟51OZ& {f9-L; \?bjW$]SEInQd|DGchg@NțL z0i(T BD,<զM@:tKb@C'"^0UZ~Hr ;˟+|LX)cTl%X($R$ qBVl9 \ђdpcz3zQ0u ?=' < &u9 θ`wӆЮ/$EUQz򴁲@>HĠ5mAB 8Xo{W2*3Ɛys UM!Ћ>P#j'D(%"SH-*qPs1|͕pr0;C$0h9oZ]x'[vWL"z9Ns2Wͽ3 rL.J\M+ L̛LFd4$ȋ_DzqT4&W4'Tx89Y F ؘ`'`6HXufc=خFd;㦲hf˫`~)[ٹ!5M xU#^ADUX:9 D/Q5±ӧ@: \lC @QÊoġ];PO):>="t8=B{(~z|A 3!E<36;ݝ[ffBXhƆhK/ETЅ Rq(h0&a8@H̽ 3>\4Nxo` >É}QL%磅𿊤y72S}r `ohARM- .' r-`kn4ӇJpҁ戽D; 9{O%%{NDUjE*7MRҺl %?9):N o$f]?$i(?__FzξwI.8njw8Bo>@06JER)6#< 8L;Lho˫KTY&+fP!SwYT $r:R$P DeMӶt~gy$AB!Fx`x!D1HS^~ͼuR !fgky\ZS?ԓWl!i89z]xݓtEnO'/fʴXPjԹJ  (E>m|:[{N=;,pQJ":j}WQ뺖  _k8[5U:kMgHbWT,hrO[Quw{gݟ< R{ji*41NU6i$К I>;=[5褟2.nv"xO knBfƽR>]J+9OMC/Xwe_|9mѩ=Gr쫦4ꆄUSxTa+Q{#-xr]L2=Uz=|{7Vq8N7F&K*fik;,8ty¿ӷ]Pi/bdu&cEtELkMbWZb0:C5W BdNNIJzGج[|M-~O>:qM T<;-֗%vߍjmi;bl}+㎮FN?GE8Q+g]P `L$SPR1B7"阖$/7{ cX0Bn8$KIvOɱ}:ª3s=@waA]L}%Bf=]k Wo "3OBubLy`Hٟ$fB6,2{{}%JU[ݮ ..I%+uﻧFm;{uv}Ra =},rink1Ǿ}]{ {cW Y׽LֵT[s}}wä ofn*R*à rҭ2AonV^ִ)@@x*^;ف^=cMhڕ6j"Buj(p mޠCRs;c{}{Ͼk< _`:vi۟^x/^p{$Tͥs7`w3t{˞E4׽ᒷ@M3 vu{pz(_-áINnݝ(ΪĵQ> P;=cm(m\j=HP%] шk T /9뮀άhαJ Q(ʀH6AB2=%]5Ə}Bڻljqйv45FPD{!2N UOP$@Y5u]g=VXoo}>NE_Wz6EU@}P@@Rzma<:wr7{\Iso[=pM^|3}kϷ( l7ϻ:t:ۼvmʩ6aƧ-}wV]J^m> ޝnke}Y[w˷o|򻺙` 46ގft@tWv :Tt: (xP's󹎮MJq4Uuǖe>OL{o}2zIJ\v-fov&خ2`ޭ:9upݓ6F9] Iu;f%IfԖm]\{zQǞ; #knku{n:j=Vy cۘzںjgۦv*u}כ3VkC{j.ۯ}=u6#Zi}prVQesk{}{۽>A[s mAX}QN]jWX"v9KcueKvWAݹݕު ^3:+u{ۭG[4N;5p5Ϯ}۪65ݳ$gJ)uSv7m5.K*!imC,blKknzhUwh1ݧ`w{m]/yq>wXlУE:(PIB}9Rvn>@-7}>U6+iuϼ@}@+"|#W3rrTu_{ai$,ԒKD4Җ 7\Q[4u`Gmp[sβfy i{hQ ٶADEqcmOj^t늻n < رfUM0Λ;VqFNBh \E{E$ b^wz;#T((/}|ۻCRws햶Ske]n ;"'G 7}&kvtf& )۾<mu;$(%VuGnŭ:13@hdFڰe[s#FP4 k1ۻ]7UCWl!l`FRZ4(n0{oo{v黦:afjvk]ɛN-˽mӖ.K;}GMh P:.ݭ'mV) (6 涵ݺN;:qQm5y=P*:(9)ݴRɎp[Ham}dOZ-7uvV6])ssjwp)VA[o;v#7*nf4;nTn>e>i@ 4VP$$%JwD@/ZǾ/Ww]6ZvSSsc 4魞(QvTeٵۍ{ݲmwTST UU&6*nU@(}sуPs-g'u^\v[;Nϧ[Tj +BM M4LLL ڞ= !@ ɔi<4hhA"hbOQ&4ު{MSă< d2i4&dИM1 S*{OjPdP=CjC@!Id2hқ5 hhhh$DF#!2ɊO DzC@Q`G$U%ԭG)/,XȒ } ]Ȃ@IETDzEEPSCAa,$*_ĐT0 A@aԢSY3/s%U {4C@Jw?~@xf-aެ)*MTj)у$ۏxnC$ H?XQEKA kOJmٲGuz-\$Ҁ|I(iv;5*(P 1 &:`Z(h?/! !z@)ZZC#$4*+yPPL`4 m 4bH5W&+4 uјTTRl yp{ CgU`/"*`H(H( ")I"R* ؄$U"J@J(Jhbd r?He~~ϛO\Kj:?Qc~1h-K ?FqɏL}š$gxC\&$m+GNF?@qR&kaکusRaw]_ozSw ͏ GOϗSg&2C16ٝ`q1c8hN>TCJP|8K~WhhгBQSQPJҔLCAQ TKQQK04%E 1 @I-Ls )SBPE4!MH5DPT ET0DčRQLĩHR0C2M3!$PД$T 41U*KEUĴL!)A^?AFU DUPRĴzä0s`i(&) TT@D-vh2Q-0TH$H2Jiw`PP -4%IT%#DA 8e @ 4R!I hb%( )FІBf!j)($hLҔ$@G#b VGklgH%%M)T Pʐ4RQ5E@B0d)@H'ݔ&aj $b"(ez7Y_]w['O7P>2*k$ C l :T@*DJ>Y{msUN*vWuA{ `PB~ C>HOTb9wwI9pdNs$4@>NJR?݅MMTQ@Bq;J$LU2@ @,ؑFAIH:@(()hD"LWi=$d= 2(~DNCPB>{!Q /F 89)2WU H[m(Ors!=bA|;@0q9!0u_l#TAɒ!@LVJ[`'(Drz Kȣ;q2? 捊` A*Ab )Y/Rt*oTZDdt~ǽTE"̌]XpPLŽC6~: X2ɩ-C{>{u4=i&jiǭ t0 !=v"`%-4KrgT`gJ\$7T!?a_Sk91 =[mҎBYtl,RPeXЪ1L`]yxA+'RPVY'h$_]D؇ c5pŶݸn$$9R`fIAF: TP]R4EJXMA^APOF.ŃVc'x#FTi_uע'/(SRzŜҺ֢kT4c163(‚Pk iXC+]=:y728ok<5k_UyFѸܣ/y ]UV} PR[Kͮ1*߲AIa 6xQL?QC!=u;5+Ac \!P@lnJrU Lx"kX'Q ٠߲_w QxaCԇ]axQ5Rq_Ҩ_|M;tMIvPFOڬt)&5 U׫}Sq_T5$nT@ XD{6ltdF)*9?au?Q?L't!PKUH7Am T&BRH8E<>~h@> RR hHkm* $MAUJ ("" "IQDD$D4s("Z( &"mE3UEDAQḺMUS5@MsEA44RjARN"&Jf*ycLDP QE41DMUELQ LM U4UU)5$DDDP]&&*(i)Hhѥb(i&Z)(H}*h)* ~3 *SLKTD@Dry톯$^mLTT4E$EADJ`|UM!2Oʪ;bdIU A={ l+E}OwV4[Kx6Bchlqv24G &=#֪ RX[Wlǫ۫iuߴjqČ[/Gֲʺ ǶC%"{=>4j M{gjrkN;'ş2 @E4ю9_,1hW{QP(#VRr'רz5F5"z6pp۳*TqvчF8׽S~mcYCk_p3­0Q!wMx=_SUPa3ZH8\acmglVga]X;-LHl"148=yHn4JyD8y_dfrǯ Ѝ-#'vi7}.h;W0ի AM$zs. 7r}oG=nlYgs֯V4 4[NP}e*mgtm M;@ݽF+F=,ܜLE4,gv+ɯUonVǦ5ԍp(Xo-6 AKNVg+.U΅˫dTMޔ1_j9=?7muwh4,ҡ'P いZB#JXƽقG !eΣPd ZB"'_ (iÉH4DI! 7qPTDH -ZZM *0XKAQ&hycelġ)JbA ZdS1YO6q6 RhL勭PD*aiqjuTIT$HDU}h*)aPDP_HꨪfI("""&&bfb(+cSEIDEbI*+""*$0M5>("5EC1UAL44PA4%T!M TJQDД"$"$RTTO&T3TEͪjj!")(!&"f* {%53ESET-E4\2欙" "&b*DUE$#@,Um݉MPy۲ELD75dhTe,yXqtMG4~ڳb_; -1ۃ=pihMaՆSvܥxƍ1[̚hgTow[:h7S´Q$ۧ!ՇCFuPH};آ'r4 tL+Ai\ꚁF_t12a KS|d,֓Sέ,iF A[uX(j,ٵ`BEtն֊6k8mT=TPG- vB{pMtndۜ(tsle |n&+?$=\/Gr>AUT~XuZ}k(= UqtA ֣7n7k8fԆVgx%je;,#cVUSK xn̫ :yuS({/j_o,[&&n#W ~][ᆬ2xTgyC,Z*&J z[ۃt/kV[B@󮵶:R!4"4X8 g:ㆃo"`S~w8(T Ry n*P Mʳs3$pZ.MktBDL}\I+^kαCe\T{u+3Hf*DHDC8p UW/Ϸq͞?1T \?,A5o(FdԚ4# K̹$||/$:=iwڄ;_t9=2{/0.N;maǶƕD?PL '4߂q(d~5'a+2H1Mv NqAtO( ? }^\:n_@ezalJG}rUliTҒdn`kk~2=u3m&@sRsZm\67 e!$m*ll6aNkx]>$3tnOLk|Xu|ۖwd9TO68gZM)4E5?ٰ8{8HJvbc\E_Evxl=Θ"`~q ţG+Xj Qh-%Ը%mU`*ܬP3 dē"K|\FgUҊ ށw?At KA%a]D\$HBYG6f[ЯWi| ڕP~fqFGnI\p)2%$h$F3 H4HĴB_ \|5RӢ)(;f;Zh4Ӡ$91Q{"F(1&7{?{ӷt(rX`CteHaw5? UԖϻ}S!DRDQ(G@/y^v|b+G%4MDTD"R2: *#HZ #pi6mu,Jhf  PnzR-`uv(!d:M+?(~6*0l}M8pc4-c|7gcurl*fLc 4cmFh砈mKC{ߢ g$Q*e AntX ȌV Ze~;8\כ=+^i]aN"] 22ҭSIB%P_mU["iPĐJ$߫=BI!Tp[^Υ*Wيݏ!.̬%AXSHV}ԡX f`Q@ǥyc4VzDT $HDXR(Oqf0Ñc`ܓQOIדify. f70rj!ʼn=x!mLж'<DDD8l]0?\[#M)E1cŘ>s}0|scH2F>&fP# "qq\telj֬=YZ65||)Dgs8fz4\qn Y2DEw~1M6*MFVD‘J`A0hKd7n4`D##7Tv}|ͪOtl9FҊ`IJ!ٴ}}?%σCxfa)~hN11O%ND~1ϻ>s86͍;(~ӏӣo8}a݇,NH)go՜`hÅmxr? . )92 ?2bS"~q $ e8 2pyRT'cbkPQ yubSQ(E:šI(xGa@ngz}!.OϏ%ؽͦR:C믤8㸐7Tr@15=-l+8J[8HKv{ꌌE* ?iUNO&iߧ}qd 32ˢ A0rP04ٮsS@¸C!4Iՠ[7U<c2QG[ njB 8<\TE-%f\8I`&,@$2!C}7< -zj=r]8"ae2` %tQ~@JrDξ>vZMJ2'QlH  W|/TkJvˮNG)#o  .UxX'jvX(BO(3Sq:xE8;9أBs\~uE_pd{C %e>?h2ܘx鈲)ڤ„AT:mf)&& tyN&c'硁I+;Z!\,c2RU~l4#X OĄ%*36^.zNPRSI")Z zUSE%we(7c1i:] WGbNf?m~ҫ᜔ХY$[Sš\%ttS$?'ppqu1C!0>d)UzZD/if_߲}L>!% h7 w9=M" )TwD?;~Hh0N%!\TG!ШJ }}熎!}~D!ti{Gxm+{sqA9}Yӏf^{\N.|xQc9(,(4/4U i2$?"IpexuEɼ~xajg|SÞ04ڂ_ ƚNhu B ^1Oa:"͹`/,džS翃hy@rؤ=[V:_v.Qezd)76u]1m]z}9,PТ&e 2 /vOm l f/P\#_8FRHmI=k9xAA%rB1mPSFbLb/(?D6Za7Ҧ=R~J*nTAa~/9}%M_ϕt C‹Og*I$NѬYx VwFZ̤R.'Y|o`֮ $:z='~+yP!#!b. K(sW[;w&2g mB d,ӛB|RllbG#@ Dj?  XxEp9I{HQcAj(RKJ4JVضFlY r 0j :gdm6ъѢu ʺT0Ί#`5ZUUE4}$v~369hhڬwqH*9-!O#;B ˬ3ft1d gSSceb䣊(>3U}>9ݶkKKy~Lծfu1)!65W ' U%hr׏>~;[2VΞɧbEUKM˜j"ÛM#}sI2x A8 eG!ư'jfd $IabhWOK A iI*gco\8T!$I! V_#$q| 0SD4PE6_4 Dxb4N1Z&$!" gpFСIIwIC}!GNΊt&oR S1j-E/~!)X!>M*TH -cPL~l4L;p$*9%TS$ITEM0MQ3?Evb "p ms:#B&v2R1414"A! CH4I1"RBHHPDZTRБ X4 *H(h] (JjjJQ" $bh*9j(P)" *( )X$)IR VfjJ$((RR" Byq!Kob7ݻޮh f*L ͵.3o]Ю]@e%Ӹ_suTTI* $zH?PSH-'>FCh iJ}hd ?IXc5C^IE6qYKZw'eOY8?]1PzT<<*$dB3.S9 55Y%Bx3uI :on͟>{ sY^2T"!)L*"*΀[99QӶvZȒ+,}ieJ ї6TO_kiJjhz(Ԗ?O|m8@o|6?_fJa<(fY 47=m38O2z^ eLP̬*m:XHJa33w3ڗIEPw{6nYoBn]!PljeO\i9fuo$"9XIrpMRMQOϦ wgo39[EǴI=6Nyg\tH1γxmL-q &4i(lLAh1T|;J/rv8Ёl}9ʄ82BȾD8"w6U}d.'8sI;a4Qw ?[`FLS^D3 á{g~;B^u Ē&V ];N9X'P45Af*B 8(B R{hurph4W ƃaP|Dh'?"0l?UxD*;,ktmBA@J q]kT?1˹`ymcM4s)7==x#l?oz;Tw-j&>,cIU2mFny!N#{ @6>Th.YQB/C$W*?V30MjCD(;1ngGGo3kHR ,<w!7nGN0ÖG^?t&zh a-z$uu75GD )@h^ h4a4YJ81х\Nyɇ%k<z# 8SrpﲹD\yswEV]w2/0 {3Snq5խixr8H ﳈrƵҡ^K$!4Y=*XUy Nɯާ55%kCH\DC6$>WjDWގ߷Md~RB@!-<1/$v@ Г;6lCSAyS^4+P ;@y !]diCp8N41W/4{U Ȳ2G CP1e }>7Ujf` CTtqeJy}.>ӿ11MJ`<}޲& (@@("&@PLB%UUUUUUUS@D'6qn;0*z8b,E>w!$8-Qp֟jBgd!7ݎ?'U_;;0h8D "2G-P ݪR 6XgЁG|.)PX -oqlv@pO9"&<."[+`P ħyG@"iѰvV(DHBTKZ9`S+£PB"+񧜈DzB؈hZ̚6eON@]z>! c}MgG"R@'0sg:_2 T0LO ǟNAu@oťvUQz{Z%U8\s꟎&lieeT=zf:Ne9BîA`YeoYb![]ca 'P~\#qA̅) E;{Τ?8?CDQF̍'_`$Ǖ8]ٯ?P&aM_st2\n$X>_yN[Q3^+X#Iȡ Z_vmf6R#o𢱵dXI|=X( Ix Q: (;g\ 4(g@JZ2Dκ6  g=OQKtaImQkOF|YhPSM=x)\`16r:!>}fxW ˜A8"C\Q{Upē`k5a 8&PP' Ī Deƛ(. 79qGL<$CIwJ(ggN``=??YT_ M: gۧDP>UAۃ/},9=\!D"=[SF2EL=y> %R(2d+]l=Yg~GY GhggI!t>RWƂN&hTTG7&>4u SS #$5YMp"*݀ ¡(J}>#(%ԟzED?8M7pJ?LcCACJQLУd䳧,oS=)wL=& 1FН"5MB`(9 vh-wQAљR2CTj]5kу0T!R2;+@ F0( 3p_3)$).&ScHmwmA Cn=29e~(h$;< O m+ RB% "{d*D,1(<\3P !(=G־xQD0Np^uP&¼\ P*s5r?$86;ϥ~ g!(ɸTfcL08$ﹷ&ia. P0W@tO`(.%qPQ nyBuʹ &)9^cT|`^!FJёiu4d{ <'(>u $ϯTMЯ3#Kla `5gNK9d :CfhPT!) {) $p}hUv)ۄ64M:Qɸ$>SYB'gU|MC͞w"` @&c ";ZbAA8'X|v%ʇl]`bDOElC$Z>o#o+RQs: W)U&3P u׈M9 2[PUf "1´Ʉp)By(T!#[Gd>@sz0nH"ǚ^/'l Ys< W|KGIFpٜ ~Vz{òxu+)ļM+EaĢC#%Do߂x|jJ숒2C`&<`pJ*0۟Ot+Ӏ?- z1Ad&#635컡g <.aB ioo oGT|0P:?Uϫ7xEi&iN#;3ǧ0.{{`،f"&Au!,um;2XD(Zp{: ?x|v 14FQ}hy\DyY}25vߣjve?W~1?}V/8lxs%A9ktsӉ/㈘"2`q*8oHͰ{!w<؁fUllCgt JZ;ϪÈ p618'/#_wXc' gxz`.S$EQt PFz s¶TD %i;%3oS?o٪c x ^ 䆹̳ԧkɼ 7y LJ0O efzQ-ݩaS ' 5&ŴЛI\q0$"9ko&g/\)v TC*EUd CP]c: cm,ediB_z>,]U8'Oz y%cwEVN 1@!{Fv ؇T(ZW/ јҁ5/9(B"QW;ʥmn~UAqHdQ7[(8H<5u_aOzF0&^YF[:E2Pħ>Vxr7m,aO`C1NX2 F@5mR1X b2HbZ. ؝|a,9|*EϜmE\yDF_7oI/|҇(I?1yR7'}|zz]=OX4cC՞ͻ)٩Ś{EKe :tqEv*G31WMCb` 'h?;t LJXR0M#Ja30*)4$\r=]. !SO ɸnU?giU S˲/s>!^ԉ sO]z^ԭbݪZmIܗn1Q퐓m (!UhBx M]ގoKthC qvÁ㽤Oxs6[EhwOY_~/KAyo.g̋]G]BԠkT$)#+֏g;S1Us~= |%װ-"CᦶBŀ<ʪ\ь3WRutfT& `>fa7zjslp}h :W/qz)*_Qz(֖Yek5tnu2-]fdk UZ!!DiG4­eBQ]uO.Ÿu.#IƮ<B͏'AɍDBcL"ݎ$|HC)9βCQ0BH:3jdT3`!uj]DNTMV>D>N`zZ˫*R13s V#5psѠ3VBüoB)EBlxBh(472t8i`cAPZNhE#b=\H2^DQP{3cfFJwJd@viLf?-@?zdfX wpF=}=]}]`n\%W]g+#4]gSZ׎av6TSb/f/7߃Uʠ+4\Y='o|)0?#X_ oY2`V*5dX֔hcsG Q;eH?`nG!jW$zܨhnP+9_ku4zNW60Jmr8r'1|tmAPT62u7P.ځ80|C7b;$'X#3P*: s@AD OZK0THTPn!]׽*8DKt͊^D:," 8Cǚ, u^3J.6ghy { eDH]vOD] w'F6Az `6=h95#ܿG C&4Uho@n,7JC(?}U>X*p(!QH8ɺw@N[Md$p;(FTܮZD 讞a$86çG}`^2 \lV*oO09TRHHsD> te$Jp@Ba_BO;@0ӃxG1!i1 /%!(sc1}Ӓ|90FRJ*&ͶMR0f'>t};-tvC& {2tיkG)MCW%V;[68%t0mpZ97Rd*2Ԉ]´Һ,zz1!ה)ZOh3QW(1ba?i@L(@o15IђAD%N‰kwY$dڡm/ [ t_ig@Rvv8OE$^}Z#=\]%Sz^7UTG`-hE)D=l3SI<|N{2xi0u+Biak=b4N[!}tvIP <˼f36BX%F!MG'2Qjxdy 젇H;4Zpnl1p{7^F3N}*wlNfKA?#;v wůyf> b.u{m4KQ TAɧpXɐT("ޛA-L.FH !HěU:qGUj Ju" k!Uw zm5QԨ`< ($A;&xﭙ4`tYꝏ y@%`ڂ~A@nxrEDحE@(NjKަiXJ4GDJ4ʾKm 5%m|RTq \:޺j'k%wD= )=e_FCV_u$>aޟ]:+_KSÖxus gb<-}o,Y8tnH(0xqS_VGgsoRL 1y %(IHVq veF'|9nHfVڮ%M,\/=lǎjb<橰;XFnRHcVYxϵ]`-GqLZA\HU1366?R,߼:q5h(|^v{U (b@b-i2܏"ʠ b2UTч}qd L^4ڱl9Xg̃.oQqa>wSC0@)IQ{G6R NDRa|8{QP Ì gABVw0()Cҝ6 jJ$3/NȐpAREpǝE$vPpjAL.=~abPZY16I!Pf F$Z⃞ KE۪08q???{`=Dl˧Ú aD}Նp_z(T&i!>l3G>@~i?ӡq~!cYe,(bCHet@!#{S5E*PPPD#Ed>>m*HK9QHF&!0t" i; (Vi)hJATQdT&.u~&Ŝw[Ua!"Q}\x, Y\$͒8S\"I,+E|L{NR۩+AH+ p6(an(Hgx;J* `Dw\q3 L0`/؎BK!Bg | K\} Iäu{=;R7I#x)!,uϑ_%Fbw)15zǖf NuN(\B*(UQ]]gFtTTU{͉$juXV|ت;H/#1EAkYc" Js߷ʑ1 "@|>կh߫ќvdZ վa&7kG3R]KӱԪ(3ɐ BhM>Bo+׃g׆lJڽN}}f"%/@]JiNҍg*lG^p]Z7+D DJ">8Nj2+%qy**iό Ҥ\\@>u X;ݗx@1D0"+T ,0 )J{&;ECYyrŒFEA,N$_C([!2)ճ+@]!@)Q㫒J\dф˻}_DN"nTVP¤n>aAM'$hh 24pH <]=q#";&79͇ypIď)nmdz侧ͩ;OSFE'>ֽ~a ;nB`^&@u{q3ӕ0b~&M3 1asF|aQapy)af4!_QBz.wkO~UsTҨQE( $c&;~J禰&Erwt /NO)>v|뇖/N}IBU U#Syy?>&.F7Ɓ{ x˜&hSeI:tt )`ykƲRT{cvii" B(PLR QTߜzQvH(tkQҼ(j̸֔s^QP)AHPb3.фaӼצ9$UiX6֣$3  \ާs[䄣} r9qU9Nf.l.:H_/q|wmpW]:yF Pƥb8\SwWb?P렏9 Y&چP!qD^V|${BiH /VmgiB i:8M% @ȌR SL=3Ɇ%9I3?UJ'?NPh7Sy'&hfCn*2(Siy^$$ ~ڈBI?ojncS?,'+92  E Β96[?qE_OCz^Uik2IT((B\UW}Vuj(Ѥ˗Gf=8R1g>EQ37kj+OϱFCsp]~C6ሰ .s_~$/:tur0@}.ZrU9ZhѢXak\D˖qTkjMbm$4\'  1@d?ɿ,k:>kя(8y`0ıAa>ЬS{Scȿ)xFl"$(BuѨ,D&ĶCisd_UDwzi\[~ǁ+Xcu^.嵂s"G~aXz;9" L-ݧ٢b D -[shߧ/f+pJ/ ";q$ m} ?[[EmyD%DbcǓ;~MW 6{~ 3t*:0n`,ɅA! ;4Sa,p"$/1Oz|s,uhܝ1QOƎrL* ?Fx}>+>iRJZi|%kz>fJ+^zaj( /L8%{puAuVTi0nYc ^3o ,]P(-!'#2l{PQx zJJ7LޅCK48fedy}jka;?s*8.<&d@/.2ˍ9t;;є`֣!XYǏ>9pĻ|l'*FֺpmI;6k֠( Fx|;M!/?_7Ah?/?so*LOk#tؤ;rHCGɓC 92G~ !,ɪfvÒmjRw8{wLr.˼׭hщHH9gj OH3q?N>@C,8w&LBO T`xӫU計!pѴ~"s1]G߷<" F.)hZӧ6IC iRz п^.rEuh͊n_Petb$dy5FIDU^^x5bԁ)UqhD _( "'^wwsz YHp*ֱÄb'ݭ, y4YY>xPE`W1LJ/)@SU DAE۟Ga5ky~p!ΪY+Ȩ9aDV9Y]^O~"gm0`gC,C<߂"UQEUT[;jQj@R . | x1f,ǔ@ % AI@dϏ\}Wf^}bLќ?ͤs=r?#yvPĐ'0dRW'Qѓe5>īt<烟_O'l"|a 8NZcvah@{NчoiOÕ( `::rbx=כߏ/HI ;[F<Nz%>ꐋv@R#dUu}FX63|Ђ-re? uw>FU+݋-X,45OmE=$9Fkݹش6kT85_XUgN6w6޺n@5,K>߳& a'osaXwxgr.t>FOSM2/gC1nd0?f%2 [N'{ֽtm}[64fWd+7w`fI֎?ia`WJR>`tȌۥ}h<4 xLWGo] z@}Ujv viT!X݁ :yD usSmi>j`PxBSS=|7i d.WsnCy1u;xzB`Lw [`P/־u,ogy3F615UUU]u4syWҒ=v!ߒJ枺+ODN3bs8hXIJw8׶t6<{>%Lg|ȣsPjlV}Y(A~Ƴ3.d:dJOu񞚬+x ܖ]n* (ȀLt ,AԨC1X:Ck|u5' C4 E,my3fjT氕p&8i#{k[#'doъ2(qёpS58]~&Kp8yIT~ϖlpx4o+Hh䏝nlp`'b5œFOA ۾*p 5_5ηezMrp'`QU=P0B@\Xal!s = .꿟m֤ߧ kabm8V]7 rgGUŋ>:]Ӿ:i*^Ѕ}^`tUb/L6#>o&A)?'Pc AjsMWsd~$}`\/^u'E^>rqx].h9"eЀrrxH=Ja*eItqZA'}V1 8;ߧ>Miޖ1JQe:o y/ޫǎ{Hk }BQt.X%ބ]I 2~6 _@&s cTBO]_$J헦<\Sn][5yIoI:Guy}b^\g5mUnNr)wtw]kߪG/wdﷲևg{q8uχbe&ݼ0pt`IyY~)0=0vlEу H;=)K~;-wӽR5 2Q6my8Kf{$=2Pa?dzv_-Q o8;uPMGѬ~KQ.ܵ@BV[YnƐ^LO3܌8IF6.QFF U?^ a^IFas br=[m?ծf>u[\)D4H]STWĭR ^O,yKgm@PLჁm1LQ2WnX n&$=sU\i ZT'6Ȧ4&bTT<剠;Zkg=򞵨zXUc|<@"T|AJ-4h%dkVX;\Hau4 ̲~OXXk=10PX(%.,#7!sKڽL!ҋZó7b|iP H̶hNPq 0//(PTfz)s:/j:줇*({SLƌ |W`so[|*#u@q׏YY xV!FJ?+)0R}Xk%Ia T"0^,rf61yr6e*ʋp}@ൣ "i89eB S&AoЫ5jB_W].bd +>\!ET% +]1¿~+ebu='K ŷ^טV arÂЍ]k*PL&"ndu4x\#Q7k[ζ/1߿'# OG9TNF~DqI>grv:H 6gdTKB];!hDPa8F.'$i^(x7@<++Z?zmW)ѥ蜸DmPrQJ4FGost灿R^٭DX*BˆR:n vQ4OCHz1ZLϭ*UYk>uLoKLț(Io%ZyC6kCMcΙ+DP/.\xsag B .\!H6 DJ/r=nP7[(fWL[ǥ-I9u*1$,O4fȐj, Tt )TBM0&@tb1Z(|en G'Gy|ZfˣLoQaZ]Ў0("ҷ9p㬎(S^_T+ 2+:)Qޱ-I>"Bt乄pi-s(^ 6ie"Ɠ65ђT4 -L>y] wu,ׯMz@[PE)ץο7_ >ۜt&K !{w(@8"BS;iI5nlX}?o¤ pxܞ _K՞i ;fu"ٓ8o%@[kQ"5@fG$ ,M'N<(gt;ӊtRdaφ]سFQvM';Hbj'T(B&:v>_  J+ؾ+Fژ$ !;B5\L,˵])6w0X-fq&v賦U +p 4hFom'j23ڂNi'(6fw+2Cv}͸nBH;!}=t3 ꓻ~N&X3Z'!ɳ>K,! ;肇WDQVzra>vχSP/KϡuOyJS\E L(&[{z}sZ(c&w#UJm]kp{~)OGt&@Ј7~"ŠH\**(Ǎ*r =c/9NK+/zP$RUaW ECY^@ƛ<)P#@tDYti,f 9u"lJDOZ}g2sUʦtT%{\zit׮p֎N0ѓu;&޵0ٓAgb^;/NDxD7X0:>ɘF9&=2J+_E~H{T(ܚl~}:ct~JCdb~=_+lw~]۴XԦ}yPx:r D $"b ;քFpJAA<{s͢^4ۢoznjCf3٢o?|qW~e t::MYBH)Վ~mcJwFMj2_ºh4V0yoW &W?`';fxf(=2=km)v-fZ2IuՋPv8(Q .e>2dnxɍ8c R!(p- W7s-ѧxVaK+ڹO`GFD=HuN6ȶ@yǾQDyӻA_T'-4H 4z[YF^^age!1۩>ߟ՞cv`F|BLKHBpUS:2L׭RD**je ^eCK>sM"QRMtaJJ3HUO,/R86j,@"ϪUF_/GSDai l@ D^TX'W =Y~T}냍\؜cJn)fN+R.SЉ ,⃨á)d`FߡT/>+uG1I11fjLm 6P\l1fe) cSX"*@Ȓ %um)FBz+I(h=X` 8NJ+v7lgUݛk a5+Z+UGH4(M Da[Hl2$9"=J'PGx' نrd!s}Gs e}&`$W!P]=pcLW!$i9c'(Xb7=Ϙ*{1_%XUR^5>mDh&{·KZˇo> s!A|%Wr]Dދ\_$I낾Vg6a2{؆/ 87 !%yBP=xH#Dq3p]uMԄzXfHsT>6B qG9GyƎsq5~K >TҊ\ 2"A@o@F^Vj]EwI,wXTJ=?F&dPb-SDr_I (ɒ$o$e9a_Fӆngo+ks Q ƽcQe6`*! 9S ƀÐ>G׾xni0f=l=0B0AаzyaLqC<_ɏKrqfJ9AQc !}ƽ)E&<1,`Q9R;e*1Jtl0{nMnV;eӠ[LkٷW0#QwW8(֚damT[jXa{j\Nhb)r=W&j5F cboC,hYG;l{ڰ@#-*NZy=0v.a p5$56O#sSJ'荃4mƑ#-!dq0AXҋ u?5_+&r밡BY=HC!=$^ S $-띗uת~|8e M}6-l1686t U|ްf5L AAØZ&J?pH|}Q@Pix\L= ̮@I_ zRP ʝrHlܰs!8DƶTϮB e}^=9@MSCf5qk.9|aD3ƏܲMEDv[ Yg$!IG#\ Wd~H;d؆'zvl6іnQB :V Ni$Pwc*Hf-! Ud0V՞wSF/ U3ٖY՞4 oo0ٵwtak M.fJf'n΢n2:Nf!jsNLS%8I8؎PS]4@oFӛOD`.pѲoŗSZ{L%A`tq;QߗL@SvSPo3A׬-l yҬpXIB꟞EwibZ :^&Tyіfmn,֞JpgSz($Be{P- JTh/#YHhE-7d΁|DCv3Ɵpi mBnM#?5G'tZO8嘃g2t4:\k*؎qiuەʌTalz\s$. 9fdo-ڕJ 掑t$GmKjnYC߶ѾQhȽ+4a䳙D\-6g~eʍ͵-`Nڶ2T<]e6{Z_UYi|IǛ1 sȀݞS*0t[<^ݘLpWf%F̀?ZB7j:b5xVgӠd:V?wpj7»15q.W\]9DCLcm*n UFvgNoyB+FA4 ws@9.oxaa|rJ1j-z YMUfq|S2DBhZ@vc됺 R u])Gw8I)v0єFѸJ=XfTijny ;J]0(eyI7m6q 9Ж.ØNHvGrc(fq_sj/,dQ;齍Jת[gi-H8$n),#V||Y1DmɏxWH D^2a^XbgE霺Өy(ܛ@b 4T%mEt|pRoa}PN F .T,vZDwWp@ zqWV 8Ws#o\fQ6 &kP&l,PNvNpZA`>K Rz*\Eyr4C3'_+7#҈nS"9:+֪c1Gpۿ;T,pdž4qc+.'osbjɭպf0-[e"Q%W+3S1܊'=v<o, M@w8HWpC1BAWXl[HZ.:8(uxBR7˒)"'_|WAGyUV0 yw$!a)F=Ew7p$32‚sGG7íg cͿ~ u)6B/?7`~]O~nܹr=/=LB DAPo|}6(ò}Ge%ģ8ah18l# $za'w3D\U#5E99!q-H^NG],Wndkq #  UMP NE:ކ_ж%%\}wra6.fF98:)CT!T^#&9|3x#_K _ȧnW":'e^yGGԱA^N8=7lcrsaHVAGV^HÅ)RP"*AA|ujjهǏ#+ ʇ+G= 2aLC9P#{]O{q,9*[̶AY_uC1 Q1XQP9yiLqݙ4lxT˗/>0e^}23[V"kn? :GSG߱n/.LwӼ~b:bgȇ]`J& q8Z =HJ13EBɱӦм8+Rpd{Qu U[t>0ɿj3%[^amH[C$ Jdّ[.7Y r z ͷR5*캠Xu5ѓ \'K~KC/\Qd@r)O*7yIve:d'7ԣ{սNIe͊,pMxMN)ogkLkaJ8g0*[XL!zۗQ̶GHd5L~pը=M;ǂ 2 y[Sj[TkTPaL" c-)>7ɫq(\f^2JpnFi" ӫo1i4QňfN tE,gS$Exk$#@)j=^ JMοf+[58j V *9 p[qV%vg.Zؘ(]nhaw5@&;BȍAq~JhaT"%+aev3xv{i8^_ 9mf>ϡjM0~N`+4ׯ -zEEyN6N "e j`:*d=ٰ`1gz#.&缷vJ -5cH%.Ob~ l)4(0+f' RL6I h 3#5,!kSi56'S3W| p( 1e5  GVH4-0D=jcfb7y(!dky]mp"dwag,Pv-8`ܰN\0TyM@݄1kQgΒ'9Osa{VAD?Twp-ޙ2Ϥ[wg*PmY.OC&s2ߚ_WE;HV%ܨ C#Rߢ"gLH RxD6yXM)sPvUoE.A }I$:x=v4.ו ֊.pho98, ]X:;ۚ'S .76X@\ sQu_Y"a9c)-p!=+, pMx"@6N0 J:_WOQSq0R{'V7n wsE}Ț,|)d|o8,QW y5'g G5f! a2s`2t;JT A)y1./a0J L5By1vBA>$-,?I9U 9H[CH+܈emH{A=yf^ѫvB :L喐^ uټ^qOy֎-kΗwJUI4i2@$U u]I=ƀ܇U6ue=CX*O+L03ͳ=4ypI.j+KO_CUt%1dv! uH \0-)^#JvDQ.(hr:0'"F^;Ӵ=;~~A$^UU)/C6u"}vZku`U S2Z 33\^sp `|=g<>c2k͝0nmj~S*X18JWi9)XV*< ezR.SȾ Տ}< wG1{Av!ݍaBx>4EQY:4ᮊyIIQٺ~N68Rf8>G#sV O5DJt JKֲ19ȈŒkP MWigdG;++##+'Ù)V3s ReI~&use b7 `$>h eA4Fzմ% Ƙޢ`YYEFBD۬+(vNdi i`s0%οf+>d4{0$ ݴ BxVmL(V vCKH=0: tT G tAϿ lxGD y*1D·m#b#ĕ;1SrQ@ VQZHjK^t PX@,w/Bp? ];ڿ X"K6(f]mtaiRE7%DD)!V~}3rͧv(rg=Ӊ`*Թe[5fڏJ$DE/J%аv‡K2[u&f`ܼи)qA"`lohFܫN x2Z]@2#;КLIŚ4n>:< r8XuQ&3;LKDD'@P|4Uޫ̩iVjҎU C 3+jLkL-ܒ\9ztb\$.+… ީL$Aofr.H~p)ґk=S8yv@'/1a&?T-rօ : f yY)%<_zOkώAbsn?x.a%?۱wԎ1vi"I [ B,Lr 䎹N2љpń+ %_r0zЇo$ j ^ jHNQ,12l, MtT̼G!0uUa%X s⬀]K[ё$HH]C흌:}Jk\"ۉuDug$Ɯre~g)Ʉ4!CI qjc{"Ɔ.ݍ4\Qa$aDZX!v?cE}YݟW<K{*QixLk ,ct;b!|eucN*֢i=YaeP+,׫/l&PNaVUohÓqIbZ"(ݽ1Cr c38 -y+XK8Cۜn^8\θ/}]Fʘ=X VmN;Ƌ#0"鰇- Cak_A7[yxaEl}?[?^O ~Gg^o. Ez5?!}x]t@nI:[;@0h]%`*(Ďv GN[_e$WUd|@NNSh/JMX+75΀Ŧn)G1X,!'8vFqsHձBLd}@x5u# 6Z^̗љ߿=ǯJ}XvTQAHTc9{/s[H~x1LWk^S Sã#;,w䑠+OWvaot9#7k);;B u( d}9 D:S&駞1Uy(mjZV#IRVp\@f \c}O{ D@)N˖œ2/JeƂ(KQa4Ki(L{ c75s4*jq`]V-Va/8TsЦ;ai9Er~A={4z\]a%k_,(3hYb2r2,_pLo&v0 _ }'&_C J4NaG{ /ZN90"Mo㍛#w樌s^fÚ9AqчE*8sl6p,[tc'(y(9j܄BŸ!D^lW``Gp9uJd%gu*Z6LF 1nfrhqrQu7 ӼR0(}_o3S8*ϴ\ |h:y6Z~{+ = Ij68RL cneWAU hM)1NMqUp撖!M0 kU^y0/ =m,h]3H4I=Ew#PTg%D ##\ pAlo)bB״}(ֹN˿Lk7Bו'I*)h"&  d3 eꠦU*aAU:\~)>skuPzHu>~0i7qnZnd}rHzXhn e">_{q_߸ =+g9%4u.]S @bȈ%OAPew 3r2C}1>/SY\ӿNgO4f ?5da(ؿ`/|pK&x}כW5lu{_q ?qm\@_ w,[k J(!u^@'j0( &>ba9_cv C{q7J6砽>\l:ρ1`O33D:DLB>oŃ=]%o>A3;ڟsyP\ fn#  %n4’&dƃ{ ;r#sh%ۅVFś@h@bev9׶ւY 0dbZ.l8jơc5cΔ4>CWdN' 8mEr { 7]D>͵$Mg&;8i"/IƄI+FzƊ`a@$ 9H[Z;ջ18!Q7LQF$- +۩0E6\ljHN#\T XȣsB8أ-DV׸:Zge`꼘/x-)/oA}kg~ϙywǀ]402ºY$^TVp`k9j< L, I$M}s\- e u5jsͶsNai*b!ό~<]-Q5'`Wyv\o2C5 t.>=<(FS8<$!+I-椮[~84Dj25$cuH4T:\0ƻS}u0+LfҾ!?ەurow?B|{qJ3~ ;;av]f|Ն[;9Ɂ(yAy#NM3ѫ!d[7HO@M!y$> 0w % )m_2m4,Rj1-2+Q`W YFJEZk`1+ܢ/u\  ɭ+77er.xm`HBv2*Q`Niՠ)XvƒA6T$)fǚ0yAΧ_܊ &IEjqB xZ.GPZ**?A2x=>$Ͼ#j>v`)r1H=ng6xDQc@N.Kk?tsQwbN&W'㜇vﲁF8`E ԟ˾sd[A%J?NڎU#hBr4qY@bDVlR6̝8}cr NnXk:sUY*Wg|Idم4ѳ,$}YGuuVfT H04Q}@U{TWu 0;hm,J&G a/7jJ03H&)| c!Vo VKXAF1(4y XN QJzyÐw>|Q1"s%|;*J 1aܐ4Zfv}۽/4FU] r3e+pg>"<\uE`vq跰1;m󥟿*BFJ kq ۮ TVtΜN>2N:|o@U VjA?sSkp>4mHTЌktxш4+8yk.\SņN 9(Q (uEl FїӪQ>"={q֩a0nJ BLW?d='H.ـMX9ܘ7|7M\\eT>9{CjTPHcB9ۮ(9ˣP=F 0% N  dbIvt?J澢5<-WBFK.^ӳ&pBp\ħP#;#KG$A ҃)UE[@ҵG*[2 NghQ{nq@kRa5잌_Fw ]]FCVym{c~>>ÏH!@RgTfYhnCP;˖wSR"X?O;nzSSaZ Ef i:kCmpΚvR- [߱2ϖh^̚P9]/+ 0+X{%*%$<[~9r7<5"75F6[߳ͽ^iEXo0ax zd= ]N^^,}q3ʀ#meF{=*f=9 O]DFGY?y HFx C˙i۬< TWyURE)Mx}`e5 /8jE5` ,t !a]#[[c',VN`P ZѴ.A8n|d.s_VCqQ15})8cOF#ULFz r: /U_L6qmاk`bKOZC,сiJF05AO۰ah=>h^!K@D5%~ݠh;f1c:ȜI=#ᅺ0VX9($mWyʒ.%%V[|T_$OY Uh)fR(9Ȝd+)lEsMIO!Gû{a/!*>}nȿ9њ /Q|$na/LOu]&IݑhoX`:E2u r`7Kz\/%fF{sQ8 U!p6v' h y2_۷¢=\.*KX~rro Q=:g/cfR(RIa ijR-qmxWaa FJ8*;w#"?wpcK[xԦn,*_D6OeUq`˟Lii:Y}OB[@K/&!W~֣qpxo+5=Lcj,]wyU(5{.@Yaǽ{ͺ<,yMuUeX M?%+Kώk$?x֤~c+zޥ%reʘBO%>lڑƍxP[C쿕w'n[?3DlE)4f ;A7CzRt q~∌)ulmW}ult^:wswbk=GXޫk&*Ҙ%D+ĚM_|PD#9  -z86zabP>|7^=>|GQIwlsrS"z]ԧtN5"^凧ab& q+d"'}sQ3CQc!bPCZEL$()˭yv6oB+lB"%:uӈu_cJ:S)dFx`;eysb1<8襈#5" ~5/gwV֚=v&& !qăÿY./b~llZXCslj ׹Cb;A~Bp6A=+]~#>"90wDZ^_hz3GD&=\C07,@RfDA2:ʡk}iƩ}wmZW]A4ZyjU.b̢3vKt%NِÉ+5Q*}Vx]_/߅^F8ζ<) $uiīCf^GL+Z8%K2EuSp]ODoLEQ{Wm]SY<̖0 Ў`͍k2HN[+Duw=\Eq;ceWp`l޶ K NZ 1tyX'o d6@ g3&E:ai 12nzS,2[_θ[Ϧ0~S\\NJYoAH5xXd Fk E9.E,lѠXA!֗W*Ċ>x ĈMzLM'3Tu7 [r*NMbӹ1o)P?܄%9rT"AGoѬ-EujƂqr#lY`?z:8 .苔`HC3zJ=BPk"c%tsiV-Huu‘4 nW9(Tǩ/B#Za F &=P-aGK.m]ѩJ.KUaAF ׏ر+[[Pa,DV lz9 )!"l;;bx<nRfR' VJtA]i]PQ'(v-Pǵt\im}]G v ?iFԛJd/B׫!1X\~:k<Yͳ娴07KļS2@xz9=bi*ݷ|oI4r1`X@񨮆r+~}Ud~\!a!:>W3xy(qQ]ru5w}tqoTmdioCSSͦs3z| :dHtAb'[X )/$a`aiHPYTH\N,!*0qq3>b*X=L0}Nܩٌ{ʫˇF*9>A!bڒXRiaiusp$dI"MYIJ'tBC@@@Jm0`(CדyݼD,U[kݙgՃ܁AE4.=3D/9fkκ 4لC;@nU4" k̻O&5MmΥӓw쵎>LfZc;9$櫭λuv"=UzG~{ڀ=7J{"A.;Ԕ 1y(|ҩ9]~[5Mu۴<;!J7w6rjUUN\/ ':gah{/O'P?jgu,RJ(Kzzޗn!S:5fL|x\*;q1xf2ZpϤƢ".j3f.H(_ (cOև\2czǛ:@י&~*y]q5DȱlV- ˹czsU 2ea @QRBW*Esv(/@L_s"8e;|k:.C .75OE#Iϝ/MfVJi@WݮV4TM:ڴSϸ " H;yؖ Mi&Z(X_1 ~Z$l%ݰQeF.GqqVM@5bD ~$`2m SNEk0Tc3FT놅.x /sF)(JVSk- H""75#0k̖uGf\8D\{ѥWt~R>̓tޗd#]qTzҖu8gzD@hbqpX GCVPQ˯]0@ /Io#݄<'(uO.>pgb s9ox J(W ɠ.u[v] ˵^uᎪ1e7loDP?S%[^a?PL#j3n O-D0B_AhUR˿K籤g°шPSVWO"4^P陃7+:A1mRhs퐀w}oZ{}f'DϫKO=BBO!9i,J8Huzks"8siCդWdq7 O(SZi ^rTa(!}ƶ D4eQ=3iXM(hF~*Oiy#||{B/,~nycF 0;U #f1n 9y"`(tԢ"Va tSlLAQ--N=&x"-x{"(Ȭj OXydƛ4UBvrM:hg(ulY QPOIpj$kFh`bb@+qPCղ܀FsצuVˣlCŝ PEd=&B}>t\xy~'iL.W883Livxf!e>6;AAc?[vg1?'Pެ0/*#c&n[n)$I{NX2K\atsf4& <,F"TԊ>\C4'\y*@E`$ OWx{B垁 @?G=1awHr1Q=!~"-C9^{Nw7gKK`!&ZNqUC(~]"E7u~<>}#U-kZxlZu3}=ފ߇gWGU~2=փ#. 2|6ȨYs'(^\Gjz[:}nm_}P$ i9AM GNiuw۟Hfa&hcJz C@J2tW p>.0n5#3`P$`dē>D%Q_Y?g!TDM09>DP\IriNGv6lƌDDDbt9%.KFc?<9bZۖfi*HyMI=/~u%Ň?|Gv}뿯\I ~@J$ j&4l(y[#Fݢlva5`DBFuGɈϖ1DGgQ?Ըನ扛+q:hE(w5 r}sZ낳EUUVnU͹7@7g֍.aEVU*;c(v;gmmmmglm1"JSTURwMG%ɖw;zQAâFvOlL}]1j FBpFAFrY_{yPcF?LWo>ȔxB,U]l81 QpT669>8| w~t H?.ƾ;~'F41WrA|b#B @$6U['epj=m)oa}x6=#/#ԋ|!@ao8]CH0tIdFEym ܿhAd:.q_fya_w(= Sϩ|ytlk͖w>?|i>ƈ&`Չ&"&Z"`"IMp:JVFI @CUE:$|ww:$΁E@pĭE,NV-3h~Hy㖁(y件GrAN* S$](I#gD D4UwXњ!HjB-Ax#͒` @dщE Ё%xEh/ÏzGNz@n${ç2o3B?/˘r{DX$)AbJj8U*k@E"2Q[̀7Lp$bb 0Li LKC@`<L~o;̨̛0.Ct\gFC;;T=lMʡH8ZG2`?ޝf#A 쒨x7g7ybPia{ TWg =t2)^i/`6 Q`'n7at]bbKp`2)R|Pv$.>aA6zb<}Y( 0D ġH1'`!Hh `@P;7 Ir(V1^ 9ISi_ ~(h(b "Rp@*LUGfr}7+tg\o=]~MrqOjskQ=sOP1?M6[kw?35}.ԡߏ~;vn(ʿD >0{g~P|7jY#v7EuEt#Oߖ}=|6*Psm3tj07DIFc~}6o"TiAV}>_ܾDӜ~ƒ)~A679 '/C~ҝo~&mݘ#n!S(V]vXcOYMUq\Q'Y>^ɻ={^9y(=6ϭo:%݉yxξ99yy" >nè`l{x_xi=kݞg>m$z!Y]DsZ;77^K_a=#rǏ:=?W7/^Cz q>|,pqٻjիVZOe_giˇ{{|AX~Рç\yK \vՐ?G{ GRБ?X׼7|wo')ѳz?t$8 ~wx`* sEұN_r<=o(xT I;V Ǣ4+@p#@3mngX_~sl鞂 0`| ~q#^Q?6|1dd.ӒZĞ- Dra aВiT$ O!w ??KhꉢTFЩ(=a֔T"laBRA0>v_A5=?4."^aD)Jj{I.}3|pbF1??=z+zba$kEP"HP!M%/|<@l'j>{[&'`Nc@SG{Ta * e Oj0YjrkZLoyH1G@X5J()߷qf r&MJMW]FK읳/d}9q$H(>28C5H>u2}rZ' 8AE0C!&#9?ACvABE?CUA1[>Caߡ(IA=RDu֨ je((0`V(/s'5&±DQQ@/tA4 &;I*r3U#=MB4={K!8~- ՁU쭘a3 ,IDHofbb  ʦiQS:)5?xCˆ{=ǫi=qQT 4%'bĐ(Bљ)>sI:9I)URQ{bdT<(p iJ*$\JS Pq|JBSSKPO= ]4BT M5=[ H(jW *?>`S ,?\ ^ Zbx;¥\ApB!H;>Q`1ͪF*$c<=uNԏ" * v%b&QTAxa२ f`h ""hY(b b&* iJj&HzP$}UD0ԱEAURTTE4QL@ELMITS3U5MD1djW$I?o͵ҏx *H i"&&))&!j5A~EPS9Vb}{d~ R(hb*&]z~Goϼas~Y֍fB"aޛ{qDà`h>`XC]k@O]O#=FSQ']5m=ĵX*f$f U T1 "a>$)'ێB[ ;}]+骩?m>@'QRŸ68SURz@J =S_z9%>YҧȔPQ1 -9&H1MH|&HiS4#M_DQ|<(OD1 B$x?v &*&i"tZSa'O"' *hFDyw lGLOyAM QGR]33Hᣕ;a&hX dO(ߠ"*#!?N8`<}o~|p!;F8?9c UUOW=߶}3f<۟ve =,owQ d ~oAi6SzKl >_@_;p>~>iKfZO|4BvJso(C}=gL9 ^P%ǩŠ!zP^M¶Cny)'|.Z5vBz_^ ՗8818GSQXg(U!kY DV@t sNǒ߻)3 .ռNu} gQ0Ug0Èie\,$(>Sk8hEQ^o%A$ ! k7+qOCfN!})&6kdrvvAF2@X1#v^M #rTnKl@}}#۸;G/~<Ep (u_U> ~Alt4޾)žDS$S&iJB^#lñmm%۟('N7@ ˲>=p)1Ȝ%`F: 6Sǜt₫8 @! XAA#"e8 l;w'}`~_]r FI;:ϝ{"{S;P)'˔g0_T0X\ H.:>õEç=*~tdyo%/m$=˩9e/T*Ť?2c,8uyz2AQޘ"G)~l~1ڡx!b#{6oVͰ|:/t$TkN(8)_1Reaw_FTޞP|(HAԚ8Gw$D|}#:@* )^;fs1Ȣ]cѴCZ1a;P@*TqwVݯg״\F#3A^ ?{=/!DwCw1]+ղi> aaTW<զGֵQl}6C̈U/Q|uT(H`ݧJ>,)61~k:vt"4GۂzpFE?;0dy]7où'^ƤuPyzf ;m$5R\Z#upH9}#ZW D6k%aH+ R?Y8]ma{,:!@ɛ؂Gz/a,ּnC gfkn }ܾW>Bh쿧/3nj&_X%5z7)}|.NN҈_2z}>b">&q}X>EU O)ע޶(\Q| E¹Di z4tR9{e3IT ea)KP6BJ$8B]Cee dNzz !$PF1Z=yuv u h%ɼDMKdݝ:rGw`_[1'{Ƅ4g]AX+Ơ a\ehP7㙍.(lEpq[7ۤoڣPaV3un@p;9 yP: '`5Ӆ}w'5ߎi8 M{W׳{q;[vSkpeoל(~>ext?f1M}XÇ+CB =><$d P'o7N9ytO>])kk x9yWoGO fsZ0n{Wc1T:+S 2u8&1KȂfvezt]f6k[ykZ]kJӤκ5 qQwݔ25@E1U}<$U^' \xu{toё㹧8h-Ҧ C_d\9Ϡ TkJ^%;׮@[ע*LBwᾘþ 膾/Q ~}QzPB,vD&-4 -unMRiaHvf/'.b\XI~x -QNPCAzCb9GҒMsEԤ9U:`uEi2P((1׷!op;ȼLT2g#O ؼ'ܳυr \)+C:EpO|e)ycKKҋa4 š)]EmF@6-;BNo<Axi0#J)+̡I_Afҳ(Рb~Fv62R-{1Mh=lYds頔d*x5dH~N{8|{F;uK7ܣ$H)w-[0z7[}אd7>/ǻ_T$dC^< Z$3"(@n",r:h^ u/0 foB#V^]#F`fq>=ls]FSD0ms O!-;D쏦)]: a"AYqo{\M&V"|ZC+w|{+ 3  4V QR0XcFrA2=WxMʹu]Ͽ_7zFۀÏ(PM܁^* ;C {!öQPAOQIVtTJU AUd9$Di FĄDI\%)^H'nw@hS:bH  i&v0s:( i(i8B8JX%+X lrDcG;3AE'gHDMAO LHGIG'EnY4TFtґnsOc rp?6 Eb$CQ㱛@}4Rr BH*@%*HDG`T /S($06fDr12FjPI3"$ X/̤l@:}zhÑY2gyGRE_3Li]'7w!!s?)h":QsC,zeJ$TD$T#\q )j $ bfѓD1'* L Q)g8:\ @E@bLT}zOFb`=m|ߵ1M5XJl-bɑXFBy}<Kd_K>S%8It΍(0tfvϴq2#eob??L)@!쇔: &)SP=RҊe9%@PRPP@(r6_ w@veW{e/6vҤOOyt \pN𰐽^ Z* _Pb|YWL }Ġo4!t!v`a2 eϼ~`>?2J(1woeyX}>W}RAB^N_VoOHĽ밆2 L5z̆8f2>|0U|ݔ}A;{>|_l:g>r p㇅y6ݺvr() ?@@@@}ܛOn=?1/N-GRa?M @Wʓ6@Dባ8$ %ڂi1 xb\xomK$"?BqϛӐ!EIޒP-QgT'7bPP%PqӎQRNp PgbZ0߬-1k^tX,(c/􏣁[~x3J:bS03.Px#K )sޛM! f>*g^1MIכK0 'n pS}֭89@Sl{u@vlV^Jԉ@729ãmv1aGs07kh2q(֑WN-0*=Aw|`@OaBDJ)DBxÑ%4ENhĻ`65%NDj@nNEB7\DS3Z1YJ:˖]?||3A^c4{QBQҔ cH APu 7uq%a e! a|=71.Mw>}tF.zaϪOOE}<7zPHڈ9{$.<~Xn9@:j9 w[Kݦv_D Je\oe"fj:4DuIձϩEU78d8 =tzl;IiQ_m D"(mK|FCh*!$ru.mu]/?xN u_D@]QN]ww>Nqڏ{</W++֞׵žf."ٿ8`aO?.Nw#nyD)Hs?"\.љ?_q;lDxo<}16W ͕o[bXt9uIad)$3@T:4R&j%xc>zk1H|`+)N$2x8b"e ?ɣGneYݥs]x v!ly /R{z7|fHu-z1kE{,A"w֨z.FfkO-hP=8UA5:?ϧ7_R/˝A"!^}av]rE\p 6zVay#9hƹCi 8̩xNgH Ͳ([mTp^S ĂZ3%&9>RzK;""J<!tfB1n r7h`ȑ@u"9GVUBv!E Vvn'6vry,qgi};ot.ġDgMF*7!ђXXv6;4