From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: windows build failure Date: Tue, 22 Feb 2011 13:44:48 -0800 Organization: UCLA Computer Science Department Message-ID: <4D642E50.7080006@cs.ucla.edu> References: <8739nhji0d.fsf@gmail.com> <4D62C1A3.2050407@cs.ucla.edu> <834o7xt985.fsf@gnu.org> <4D631AC3.3010600@cs.ucla.edu> <4D638488.50101@cs.ucla.edu> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------020205050402010201080609" X-Trace: dough.gmane.org 1298411263 2970 80.91.229.12 (22 Feb 2011 21:47:43 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 22 Feb 2011 21:47:43 +0000 (UTC) Cc: emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Feb 22 22:47:36 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Ps02h-0006X0-7h for ged-emacs-devel@m.gmane.org; Tue, 22 Feb 2011 22:47:35 +0100 Original-Received: from localhost ([127.0.0.1]:58495 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ps02g-0000kz-5t for ged-emacs-devel@m.gmane.org; Tue, 22 Feb 2011 16:45:10 -0500 Original-Received: from [140.186.70.92] (port=49714 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ps02Z-0000kk-Hl for emacs-devel@gnu.org; Tue, 22 Feb 2011 16:45:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ps02X-00048s-QT for emacs-devel@gnu.org; Tue, 22 Feb 2011 16:45:03 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:60855) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ps02U-000479-EJ; Tue, 22 Feb 2011 16:44:59 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 3F1E039E80F2; Tue, 22 Feb 2011 13:44:56 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nM9SvrKnLpMA; Tue, 22 Feb 2011 13:44:54 -0800 (PST) Original-Received: from [131.179.64.200] (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id C9A1C39E80DC; Tue, 22 Feb 2011 13:44:54 -0800 (PST) User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc14 Thunderbird/3.1.7 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 131.179.128.62 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:136378 Archived-At: This is a multi-part message in MIME format. --------------020205050402010201080609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/22/2011 02:49 AM, Eli Zaretskii wrote: >> From: Paul Eggert >> No, the idea is that normal code should not use #ifdef S_IFLNK. > > Well, "normal code" in Emacs does. We have 5 such places at this > time, if I didn't miss any. These #ifdef uses are problematic, and should be removed. For example, on a GNU system (make-symbolic-link A B) signals a file-already-exists error if B already exists, but if I'm reading the code correctly this does not happen on a system lacking symlinks. It's better to remove unnecessary discrepancies like this. > How can we use this idea, when the code in question calls functions > like `symlink' or `readlink", which don't exist on hosts that don't > support symlinks? Use substitutes for symlink and readlink that always fail. That's easy and works well in practice. > Once compilation and link work, we will also need to carefully review > the affected code, The affected code is fairly small. A complete patch for your review is below; it removes the problematic #ifdefs and thereby shrinks the main Emacs source code by about 25 lines. (As usual, I'm attaching the full patch, which includes files autogenerated from gnulib.) The new symbols in config.in that you may have to look at for Windows include FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX, FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR, FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE, HAVE_READLINK, HAVE_SYMLINK, REPLACE_FUNC_STAT_DIR, and REPLACE_FUNC_STAT_FILE. This patch also works around some other portability issues with symlinks, with respect to file names that end with "/". This doesn't affect Windows, but we might as well fix those too, since we get them for essentially zero programming cost here. [ChangeLog] Work around some portability problems with symlinks. * Makefile.in (GNULIB_MODULES): Add lstat, readlink, symlink. * configure.in (lstat, HAVE_LSTAT): Remove special hack. * lib/lstat.c, lib/readlink.c, lib/stat.c, lib/symlink.c: * m4/dos.m4, m4/lstat.m4, m4/readlink.m4, m4/stat.m4, m4/symlink.m4: New files, automatically generated from gnulib. * aclocal.m4, configure, lib/Makefile.in, lib/gnulib.mk: * lib/stdlib.in.h, m4/gl-comp.m4, m4/stdlib_h.m4: Regenerate. 2011-02-22 Paul Eggert [src/ChangeLog] Work around some portability problems with symlinks. * fileio.c (Frename_file, Fmake_symbolic_link, Ffile_symlink_p): Simplify the code by assuming that the readlink and symlink calls exist, even if they always fail on this host. (Ffile_readable_p): Likewise, for fifos. * config.in: Regenerate. === modified file 'Makefile.in' --- Makefile.in 2011-02-22 01:55:20 +0000 +++ Makefile.in 2011-02-22 18:48:53 +0000 @@ -332,7 +332,7 @@ # as per $(gnulib_srcdir)/DEPENDENCIES. GNULIB_MODULES = \ crypto/md5 dtoastr filemode getloadavg getopt-gnu \ - ignore-value mktime strftime sys_stat + ignore-value lstat mktime readlink strftime symlink sys_stat GNULIB_TOOL_FLAGS = \ --import --no-changelog --no-vc-files --makefile-name=gnulib.mk sync-from-gnulib: $(gnulib_srcdir) === modified file 'configure.in' --- configure.in 2011-02-22 01:55:20 +0000 +++ configure.in 2011-02-22 18:48:14 +0000 @@ -2661,15 +2661,6 @@ gl_ASSERT_NO_GNULIB_TESTS gl_INIT -# Emacs does not care about lstat's behavior on files whose names end in -# trailing slashes, so it does not use the gnulib lstat module. -# However, Emacs does want the "#define lstat stat" in sys/stat.h -# when lstat does not exist, so it pretends to use the lstat module -# even though it implements only the lstat-checking part of that module. -AC_CHECK_FUNCS_ONCE([lstat]) -test $ac_cv_func_lstat = yes || HAVE_LSTAT=0 -gl_SYS_STAT_MODULE_INDICATOR([lstat]) - # UNIX98 PTYs. AC_CHECK_FUNCS(grantpt) === modified file 'src/fileio.c' --- src/fileio.c 2011-02-22 01:55:20 +0000 +++ src/fileio.c 2011-02-22 18:39:29 +0000 @@ -2178,14 +2178,11 @@ if (errno == EXDEV) { int count; -#ifdef S_IFLNK symlink_target = Ffile_symlink_p (file); if (! NILP (symlink_target)) Fmake_symbolic_link (symlink_target, newname, NILP (ok_if_already_exists) ? Qnil : Qt); - else -#endif - if (!NILP (Ffile_directory_p (file))) + else if (!NILP (Ffile_directory_p (file))) call4 (Qcopy_directory, file, newname, Qt, Qnil); else /* We have already prompted if it was an integer, so don't @@ -2197,11 +2194,7 @@ count = SPECPDL_INDEX (); specbind (Qdelete_by_moving_to_trash, Qnil); - if (!NILP (Ffile_directory_p (file)) -#ifdef S_IFLNK - && NILP (symlink_target) -#endif - ) + if (!NILP (Ffile_directory_p (file)) && NILP (symlink_target)) call2 (Qdelete_directory, file, Qt); else Fdelete_file (file, Qnil); @@ -2311,7 +2304,6 @@ RETURN_UNGCPRO (call4 (handler, Qmake_symbolic_link, filename, linkname, ok_if_already_exists)); -#ifdef S_IFLNK encoded_filename = ENCODE_FILE (filename); encoded_linkname = ENCODE_FILE (linkname); @@ -2338,12 +2330,6 @@ } UNGCPRO; return Qnil; - -#else - UNGCPRO; - xsignal1 (Qfile_error, build_string ("Symbolic links are not supported")); - -#endif /* S_IFLNK */ } @@ -2482,7 +2468,7 @@ return Qnil; #else /* not DOS_NT and not macintosh */ flags = O_RDONLY; -#if defined (S_IFIFO) && defined (O_NONBLOCK) +#ifdef O_NONBLOCK /* Opening a fifo without O_NONBLOCK can wait. We don't want to wait. But we don't want to mess wth O_NONBLOCK except in the case of a fifo, on a system which handles it. */ @@ -2584,6 +2570,10 @@ (Lisp_Object filename) { Lisp_Object handler; + char *buf; + int bufsize; + int valsize; + Lisp_Object val; CHECK_STRING (filename); filename = Fexpand_file_name (filename, Qnil); @@ -2594,13 +2584,6 @@ if (!NILP (handler)) return call2 (handler, Qfile_symlink_p, filename); -#ifdef S_IFLNK - { - char *buf; - int bufsize; - int valsize; - Lisp_Object val; - filename = ENCODE_FILE (filename); bufsize = 50; @@ -2635,10 +2618,6 @@ xfree (buf); val = DECODE_FILE (val); return val; - } -#else /* not S_IFLNK */ - return Qnil; -#endif /* not S_IFLNK */ } DEFUN ("file-directory-p", Ffile_directory_p, Sfile_directory_p, 1, 1, 0, --------------020205050402010201080609 Content-Type: application/x-gzip; name="emacs-symlink-diff.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="emacs-symlink-diff.txt.gz" H4sICKcmZE0CA2VtYWNzLXN5bWxpbmstZGlmZi50eHQA7Dxtd9q40p8vv0JLe7ZJjQkQ8tpN TyghLbcEcgLddp/dPV7HCPATsHls0zR3d//7M6MXW/ILJGm6px9ue1qs0Yw8Go00I408v7Zn tjelPX/6e+mjH9wQO/BX3piE/oKSpR9E9rU7d6M7sgz86zldhOTWjWYkvFvMXe8mrJZekgv7 hk7cOa26Htl62//Q676xLgZnH3qd4fYxaY3HZB5GdlQhAbXHSFWR5Ejt+N7Ena4CTi4w37V+ 7li94ag1ghau6ML/TEm4pI5rz8nMdhjh3L3eYehVp8IKsnlZVuvkC51joFw0d8Z+WF00K/jI 2xCFuA1RVutkG4vmcalPbwn2OawQexX5CztyHXs+vyNT6tHAjuiYTAJ/QabeCl6P7NrO3AcU 1ljcZ86cIkAOEFSLm2PRzzAaI8D1qjPGynRuOv5imXCJ1dYMWQNxSR6qpVKjVq+btYbZaBBy aa/mpDOd0iAi5CfKHk6dsLpy5naVjlevS7+GgbPz9QqBfXH9qkO2zgPq2QtqIaRCzhfQUQsw r/2561hcFc6xzhLk1nL7uDR0F8u5O7kj0YyCqMaUXN8ROwxXC9ebAtCOWI0cKmIjd5ye4CCE JfrFDUGL6GfqEXeC2NDA/Na+C8nEdufE9wDmhmTmh1G1tMVZwPZs6BHyQHruDb11Q2B64gfQ oYkfJsoK46CL+eTkhCz8sTtxcdyhMfJCGdMXJdM01VnyL2VUavXjvb3jRo0YNfhTMgyjCLN+ eNw8PN7bFZinp8Tc3W1UDojBf05PS+QZyIksaUCeb3EdsmBEx26wvXPWuez0zzr9drczrJaI Pk3JCfmtRAhxgrtl5O8sxntkHPl2GAWsNwscgymN5j5I6PMUH/1lZMIbgMwkxJ16fkDNz/Z8 RcniJnJBU4B2wh/uQgtnUclIIbJ5J9HjwVTo+IjG9JLn0WDQs857rbeSbdMEhQHFhAfPNx2m vnN/youfHZPNUygthFxNVMmTeI6V4BUeYMF0NTnwOCO+Ut4QJzOaj3BSToatRuq14z0YY3WA 8xBhfI+O63vHzT1lfI8O9yv7xMAfNr4lmOyW6znz1Zhu/QoTv1aT3Wj+vp2pdUyQZuSPea2R quVLYA4Z/RJRL3R9r6BeqkR+baInvJ7146hZqUPHjo72KvUjpqlpKtYNXNQWvpffsHi2POAv H2Pue1P8l99fuc7nEILCF1Qw7SyoW80j1w6cWf7rFEuSQxxG1nhhJVI0MvVFvMJaf+3788LK MZ1Ys8Ja1ytuVpqQ3Fo+KwuYjQ1jHqmYv0VNY7Nr6wJelzcDYzvKJ2Bc3LDA5uKJ6XegTL/9 g6PK7iEx8HefaW2/82lkjboXHeudKLSG1nn3ajiyzrpXnfaoC37L8Jehha5LjKMAzKvOZa/V 7lgfsJX+sDVKQIiSlC7e9wdnavG8ez5Qy/DCpNjTic9F8woEETQUTsE8LYUZVmbv1kvxM7Kh VHGuRAFYiqt6Svu99ruLuImEN16UjPESw8SiWO0V1gSEtysNmORULSslya0GUIqCY1HuaW1L rkUx4VsCJOeyLHkv1ozRGSLGehEX4anbR/1AtTvYO8RV/6Cxj9qHahf3/OoSeYgB/VZ/MOx1 OpeJQX/PEIysmhmamhm6mhkpNTN0NTN0NTMyamak1UwHlIyUmhmamiml+FkMnFqMC3zQDEXN DFXNDF3NDE3NDF3NjIyaGaqaGSk108pKSXKrq5mRUjNDUzNDVzMjrWZGSs2MjJr1RlAGvenB o3x42xkNLqUmHR40UZPw50BVpHZvMEy0qP1u8LHPKHuD1lnr57cWQJUx/dgeDS7elEisU/1h Z9Tp/5xAQDFH0IWkzOsZC4d1xsKhdFElzlWn1esN2gng8oPe6MX74ahzcano4pvR4KNCcJFq oA2zod9tt3rd/4ER7vY6MD9wsiT1DJ85JLUj5ljV64IrphVFDbDK1mjQ64lnq/OpmwyIlI9U pVg8MQBe+/5ylMzjX7Bn1uVg2P3E2WkcMHZ2a/o4XbwfMBkMMxAFcMalJMtCSLLI+ixeJYFv r1r9kcIPjPzwwxtQG8ZM42hvv1JvEqNxtF+r1Lnhs0Nr4ln2cklhs2U71gy8GxrAFi6MSBl9 9J2lHdiL6qxcItO5xXcIsKX6v5Ub0PEJvGhTG5wEGzDSiJOV50g05sWVs42pOPbcDhYb2pHu WXkTX7ewoQhYvzbIgDtXsw28Rf8JabSBN+FPle8jduYozu6Fyhy4TfyxnQn3u8ol8z4j8Yy0 Z9S5STbmy4A6rr8KyWc7cHFHHZLQ/gxOm+vxLb3twP8zAJEbuuQ0IWzJsCm2NYT9KbyLoVmO HwSrZQQ6NLHnIeV+WX13t1KHjTA8HFXqfMoQZAQ3quzcBRzFFXiI6obzuAhH2VcU40TLwF+G x7iLzalnsigi5puIwlq5jShqW2pqUf26V4vNwppq2C6sqYV+r6nFrXJhLd8wFDLNVbyQXGwa iurXCZQr7zHTlPruwWENl1Z4OJKLK8mseye1VyqYL486UF1IscZIatiKm8Lmq3IayNfufOgQ wYLno0PO8yGYqRTPqu3QG5JmJg3l1kjnmZssgUkUo3ZSZ6DE4qmAfPuIGJzvw8a+4Hv3MOZb t77iletNdgrpIqY0FKAq9ZTLkIJyxyIFFO5HIvRDWFM48839DPOJDFUg83pSwJS8dR8KgSVl cJjnFbPQbB41GAvNvRpY4AY/8ilhMwmJ9P708RQ+YgooPEkdyt3NFGyYIRY+axqIfm0eLIvZ T79E+NA6MPvi2BMXYKF7cb/rDKr69BpI9lmBiR6rkGGKTPZWA7G+ZiBprL7etOylAkp6VNd0 4lzpfGr/lIbqI6ntxtLzAnuSgSnDpm38UrCc9vThkH8JOxYXDgHa9eeqc1Ayxj5hKz/4D1AB fsDJH8/hmTozn5TRtn/m2JKsTP4iiBAFVjj7A7wjB/0OwEPPgr+k/LzX7Xf6gzI8xVTl5/Eb wKdyJ4SCqScRBQflt/KX356r9b+VyQn5Ur6jYfkV+hweZ9EBr+X1azwSAlMYVmfkp58s6Pjg vGQ8A4jrUaLwzgY0h2tnufyD1EuGJC0ZExfF4FFVaH+SpCV8AiP2/E/4BVNIPd8UPfz7mLB+ Y7TjdkaB1UAclqMzRJ1ofgfekzdGxyoKbHeOiOHcDmdl8vrHvZIhX2J5pPzIlqrVKsHW9l+R v5lggc9k2FgbFriXdAL/PIeCtUYqOpaBHOP4b8IcNlXUKl9bzL0bb/O3lAyKzh3gBAtiTtgJ HY5iFZpLCnjoJ1ZDJsPXeTUY78HxZwKee1aIw16ee8SEpx9/JOxJb1N7HWdYNKY25wR+GFoY dmNywmZBl9T+PSMf8ZkhmjFihVyDT0zD0F3A3HAdEvrklpJbdz4n6FavlmQV8sgWjV/LXJuA Lue2QxfUi8hnGuCRPPEnYgSZu81GN2STUR8/GFAYV705FhsT1DYJKfR6zLwl1A2PeBTGMbSD u6pK9qBRP/F8VHQ5lg5TtHhimfHUUkYO5xI43iVj5yWTRoJfJeTlDiqzI8+EQ3j5xAZ/GTTS g/8WNoaMt0vGnyUDHM6VEzFnmITXq8krtRP4B9rvud7qCxe80gu+/xDRJowlYoiwgoE0uX0l 13fp1uAPc8GAyREOhBvCKEcRzC+xyQmpF1I+SG5EFtT2wnjUPT/KaY9tiCKfcMWhjJVVyNnj g3Yb4E4sEILRqQMarQJPIG6VVY3eKVfIjyiTbXJyQvgyTggTkKBC2N/J4gU6LxfgKLizgpWX rL6qvj9MN2CyJKrxcLXC9VQuDgElL6vsB/+rxp19SaYYPvJXEbm+Zj+yiqsZBU0jvzHVVPXP v/5frIhh19RekKyGIgdy+RHdEDOry2LM5AVbW17gCC6kItFxhUvslrKIOeyH7wjYhRcRC08r jbDxt+UQomgimPDJZHy4yBgZcs01ZOPKyrt4byMV0BDm4jGz/ffnLGWjuDV/GDk3SoQvzA8j 54s22AHs7T1MP3OxrHPYCA0+Dq1hrzV81zmDTdgFSOG9bvAVW/HloX0Cx8TzpeVJ/yV4ogau 8eDNv4cn5edJgauKosJl4ZsxRdX2mOjF6RvDOHagg2WMIdmV7MEmtFHHbcl+s8njYPDH3OAC mswFNB/tApqPcgHNh7uA5joX0Hy4C2hK0pIJ42AyF9AUf9k8hPGDvjtWfPCDc5U8zFqSAmsp Rmx/j+8j9w/3KvVaU2xmgZ1SolNf442Gd2FEF2j0Prre2L8NCajCxfBsMLyPB1pMXeh13rqe 5QfW2A8f6Vgm5vJJnJIcBwTWDGD4B64vY2J97PZ3G+hwJiAOs6wUlHU9A23/8hbQLatkeNRl cmN44DwEUm7wSuDOnTzMnEv/Yo1JT8SdZ7WV2hzDHAuRBsF6MxtL+evsTsJOkWnRMbhycYWQ K/aXPFRYKmIHX+oPChKXE4cuI3BHA/cztebM8bOWsMC7X07qOuq1DQ46LveWG7JrcBa7EBdS jJdEfpDgP346MjYIZwP020MvOIhATnM7wpqlHd1ra3ifdgqnqCYLILau8Uodp/zqSfutp23e tFOlAbspUG1xhdC+Dv35KqLfbPqtE2XehFyL/z1M0XUMFk3aTTTSCcydxuuJ8ya2nK9rZRnP Vc3/vw9lTWJLd1xtYfOiUnvgopLCvw9rwmm8j1PMDupFIKLVbncuR0Pr7AovuPQ6o1Hnyrq8 6px3P3GPcG3HVP9Z/n0gA29a7ffML7e6wySEYA07l62r1mhwJbnYJLM0Kw9kg/efdxzDGtYb jDH0WnjvR7Kwbhi01z/CFqAzLq8GzsThEPDuB4sQDxXaR0d8opFcC7CZWlv3ibLuizizoLZm 2bWeO6WHjSa7TFffqzUb6jYiP7Zh5sU2zNzYhpkT2zCzsQ0zL7Zh5sQ2zNzYhpmNbZh5sQ0z E9sw82MbZm5sw8zGNsyc2IaZiW2Y6diGmY1tmJnYhpkT2zDTsQ0zG9sw82IbZk5sw8yNbZj5 sQ0zJ7Zh5sQ2zLzYhpkT2zCzsQ2zILZR+pr9EDuxwavl7Kr8wsYjYOYyXAf+DfXWTb37tqFN QDal9g72eZx472ivWWkc8hvi3/qOQ7yBlEY3c9ahHoynHe0Hn9YkxyLqaaeuJfXEgvGjtMuA srPb0IWXsiPz5FuhKmcpsb/KrKkppyeil9oqUhfw9fc8Snx49msNvg3fb+zuVhrNgzXjo1wC 2XwLZN0AxN9RpCXHennVaZ3hwRV29P6nTPFN9tRBE9Icp6X5+EmUfALiTj0bPGmKRwQiUHWf 7cvaBnL2LfwgZkydeSw269YPbsJHB6+eZJPyTExW8tPKc8GsVmevpfIDSdvGmADfRNh4QMxO mVlfJ8QP3Knr2RjecObo1mD9zA7JbeBjgOluSbXgQRi6/6FWlEhuC7gJMaxkB+RlJf7laNuv cvdPT7b5KRwPfc9TjPY0W53HbXQKucrub9aiqtuarz0XiIc1P8abBIEfNLs2NVY407QF6itn 2jPyUVwhVD4q9flXglTEeNkbkvhJKvALogtXziwBYCNFyPzbwrjk3TQeFSAulMNJebrCCDFI 0/PL/8SCkjOV2Wy/Xk1+bdR+j8OnYlonK0RZEwPGFoGELxFgaFmU8YcTMH+vnijIWCyznFUh D+27Cx6mI3F5yvU1i1COEIoWoQLUZBFKtHsNwQ8phy95jdwpS8fDGl21uvDwlofSrDcf3pJ6 WdtnJ2JSrupxr6X+FF4LP3xJ9yt3Ndb79a2Z4u5rrveZfdmam8DGE8V40JPPX+vRp/bI2MX1 HlwOGt4r6vOA9tabEL5tcAO+W3i0CXnIwu3Y4HQ9x8/FLdiUuandCH6XfvtymxTyqC/vr1J3 U+5JyaKWGikNbeeb2Yrk44J8a6FduIleyVVe3D+psjsnEbMFErQjYN/AMqSEVmQZUmjfk2X4 6gVf79vaBT+Lqnqd33DJYF/iP8liwVq6xzLBk0t81ToR+ZqbGC2WyqWdFnc4+T2vCV7yYU6p SGNyS1kYDd7qc2kpaTLS/uOGY5R40qc8U2BH8x1izPjez6Nd1JQA/yEfddO6AwCh/4RfZhNb WX05UiJDWz+k78SBzORatJ1IVjT61wlB3xWjguoHpmuaA6mvba7xSo0Uak41ojzdfbw1Y7d2 RVTwvj9nOe0tZxX+aZbORAib104dVy6e3EkoXGdjt+Gl52/rx9L1Iq9ZHpH32zyBwFn3Kusv c6eAOwNFXCQcPwUbGPjaxEe8rqmvIDi5HnzNLe+WW6GvfI+D2virOHlSe9RgnwPXD3YPDiuH +8l3N+u+XFO87KJ1vOgYmy0s4hLhw85iZaqNzP7hKU5gJbtPcVx037Y22HCRFurrDosea//U l38XJzQFto+oxknIfatsg00qa4cMO2XVQOWavUyDSXvJZWG9Ye+msb7dRrpdlN0GbtnR0tpW m+lW/wGjqilEoUnVsL7706dvfRCliWO9aU1jbjiGSuGvO62Ra239SdbatWc16Vdt+sBZ2KCD Rr1RaeyiETpo1pP7Ec9IZ2E7IRn7sIh6Pgw1u4l2jRrCtgkv8MsT2HS4fhBvjGAV9mGK4QWX kK04YPOhpfRGih2Zu1HStvzchGfjkhnaGMdVbOCdf0s/06Ci8nRre/wT/thfmAsn3I7KeC88 ceixCfapEceIXyvS9XFmljBdgWV270T//IUzgo2wxH7RzF9NZ0iC+QLZV1K4NZzfJSRmbJaW eJHRn/CNWtwj/nfd9ov89ZceIBY0mcBwfMX7GfnQ7346OiSXo19gm5e+JT8NQF7LqETY/fi1 Sa3i1IEq5L6prXKTB2JWjzi7VWN/v86ysrEHnuYDtL81HHauRlZ/YMl8e53haMiquv3u6L8q +W1VstW22u867ffM2x5ag367s/Uro/x9+6GqCkMWpx7jmR5hCM+6bbwWpzSa1VmdiS2hs9ul XH1NZTDlKpsCbtDaNdgiLduRqriYzchoNOOclzKBCBnDoAXu9YrFvSOKt9fsUCQLDRNhLwN/ islqgBbJ38YpW6/vhJ6ZEd6Ew3G9ooA9XjmYhPRYrVXTTsIe76QKv1B3Av8wMaZphv4qcKh5 DfsxBGICyiYvLZpI4zu8BA9QxJENOYA9AshefYlbLshdyXNcwrPgiN0aMsWl0ek8lQLz4ek9 75nZ879i+oq8piXy82Vr9A4m8SnPNgo6vbyZju3IhgKAn2+J5+2d08tW+33rbeeUTYQ9lp7J wB+eJy5cXXMS6CrO4t6g3epZF03WCHAbZ4NNMpCWiL2wLFG2Fk1rTJdhBl9PNYpZX/+VQVCy jWaptZyi+fRKWtEsvZZVNJ9eJJDKpY7TJReQprKPoqP9wA7ybKr5hHrn13Y8l17v/JqO51Mn nb9Px0m2hVTm1WwzSuLVfAHzBKtZwji/agGZkmI1S6zlUM1vIEmWmkce50otJObpUnNpZbbU Ito4YWoOtZoSNX/QZLJaUiTKXKpEnOtFmUusJKzdLGsjr8t2obDkIBQQJgOxZhCKaOOBWDsI +dRx4trNg5QzL+LUtSS/KiimXFjTReRPJrnE/BBozYtZTjorR9qq+y/2lfxk87CuZxbsDTud 92hy1LJazQ9rT9XyaW5WQQVLBZ+mMhKqaAygZjlkF9RVDA45TWc51FEQoqLgRXANAwHcUjb4 VdxG41AXg8zWpJBJkILEPpNWURhAQZD3yFUcCTtN5YlUcDggaefjVXfUUeuxnFSzBF1KNSvz amvw5t/gs8us6KcpEBdCc4+ll2ru7adSccbKoAE0BKEOGuA0nYpTxeCQ03T2Tg1F6oF2v1/D QICGIMdYh2go/cGZjgEAIYADdl++ebibEoCqBmmYihYrgg5RUVRVyABP00lVVaxYG2KAVAcN gAjDn98qg60UZSUmcI2rsMAFsF+rVWAntY/pxWpMAp1Po6uWddYdjjI+X3XHDqbgGHvgI+BX QelaxzDEoTeuUWiWHIL/z8iEe81Qlk+z2IP+//aetKuNY8vP5syPqECOkYwkJAFm8XNeZBC2 JiARJGJ7CKfTkhqsZ6HWU0vBnCT/fe5Say+SgMycScZ5S1B17XVv3aXugoXqT25pcTc9FQVU /4EZL+TfFV3qUaBNIrzKaQF+MvErQkkwGflDXQLNFAWi3pjc8N/YhaQw6pvKs6E5dmov//yk 2XbTnj7QL3np94TU4lNhfNvu/MmoGI6KsyjARzN7BdJDYd5KTI4TomiyQeb6stbGbdPXJxOl xFZqVoltH7FScdpqd04+Hp7Ua03AagRPGMEpxmdFLJdachi897k/ux0LFxCdX8UpAZEBRv0X fFExZfUfxanl5vazDCa6g+qEl9VqgYUolkw9H/GmdnREeGG0wnmrgp1TI1mNUUtXbrcuzg+p HqOKhSQGNRxcQOCK4UNFQ4d9aj0NeXA0KS1cuHKhSH6KA4SGAt2zqJ2/9ZqtJtCeEw+lVecY VsThhw9H9eM2fdJnsCLe186bXqsJN2WdPrlAwVH2t+lS2qtiTFc8ge9rp7C1Xuf8ov799yie SgHke0G//j0Lp8H3pc1vc1ALQClvC0hnoVXncV3h9v053VRi/Ww8uB8+uqfOBiHuyX0w8Dx1 QRr0ntrRn7IxGuSfPBuJME+dkEQ3t5sVUeqVQulIWy5TQPVKuaK4mGf81lUMxHr0+/fr6/Ho tuvr3//+bS5emv/9Zp2uzozWHATXbctlC1raUoDT3P4g+9jI6oNYQ7c1FS0am6UCtyGXLWzJ YXhjTblwybbt1MZt2ZpPr8LyWFmnbMro047z63Rrf1gwLxUR2GmvChe2ZfY31pYLF5wec7JO Sy6KjfkPIJmKXbC5k99lnSjom75NjGLu2PzOWokJYmy1oN/OiWzv8om8rGSciBvBmPtyy7Jm MD/McbyntDqLej5NmdOpPaeNzJYWirllC8f8wcKUWOGithyL2W3KZYtayoDNblNZ6JznzrY8 z/0F52kDuFu2aC4c+TnWksoWtXTRKl666MxsxHLLUsbdpLfPAb6FkQ+09/aE3vOO6ocn3vnZ ySZmidNcW35Oc9Xa4gCpscMRLtOBxQxSBw5zmF9/BT1kvTDqtxzzvqiLlnhdTK1b2TvYKbuP 4ggzG/tfXxa/viz+HV4WU6TrjaR4LaNJMFu5QzYhFKlgbY0MNYSyvYjFiViB01kT3eAGrVqc GkM+O/yPpV+CkaUgaj4kpGO3UsYMVP8iY3zeIROHgaMw7Beq23MXppplLUvteNrKjEQ9f3Fu vYyJ2ANlzCVrh5fZ4IX7u2B7pQYFNvLNReOkY3f9ba7dOXqDCTrf5aWREXFX1f3tr8LKX01Y qe7Ro8nWIkHzq6jyvyOq4EHgeWxXvwoqf31BZatKdGlrp/xVTPnriSl0gtt8grsLWSbFomXz FpJ3SyXpShe/gKrb1bLmoUfJpO3GKi1B3C2rWZLS/H7fEdEk42YENFnwrLK/Wy6WQeqqiHL5 gP4bE89UzaRwVrWEs3IB2lUK+xXcbHSmsfPT+6I7uzHpMeA0KWM9B5uOpOH+YTi+nwxuPk1F 7jAvKvv7u8VqufyyIOD/94o4ujieBIFoh9fTO7RqPsa+KY5SQTRGKniY6GD2eCnsYZCpa2wU yUYH4j6ckePvJNByY4BWwf6ovxlOWLzllBJQCAMEExIlWa4MOZkAUCMpPw7F2aw7HPTEyaBH WSUwxzuWYKg0lZsCm2RN/ZWQEaRVEpEtNYjssSAw/iX0koOdg8lPBMgfUDEPM74XQ39q2mbt gFmozvP3KRybDBiU+KIboP309WxYoD6gtnjf6LxrXXRErfkR34qQafv4CmqjKfVUWVUHZE+N CgFYGRoj38MCqIvT+vnhO2hTe9M4aXQ+YiTx40anWW+3xXHrXNTEWe280zi8OKmdi7OLc2BF 6iUh2kGgs63M2edrOivYyn4w9QfDSK39IxxvBPMb9lUIol4wwASHPshW4/vFJ0i9+GgxRyuF 2mYzYXqNa7RBLwBTEYh/fJpOxwebm3d3dyVA1VI4udkcci/R5nc6rjEgw91kMJ3CdnXvxX8O bsVpcB9M0M6cKxgXM7YRki5mFLPc9nOGjlojhTV8ekPfclwHUJlNnMw0tsc2LAqFFwZJFVRZ ZpyJBDvFRyHuDgdng2V+ovijswkB6DREv4iQ//7ksx+P/2s46GNmjOB2DCdPRuK8bgxoBqOg SCpAkr29J09r9C6DZZhVmT16G7BjgBUozb78+RqCAwApm26JbqBXAfP3OSqjctqTn4TnjQKK WYh75hm7MaziuLXjdCPa+NgH7e++RrfB9ZwuMfCGj1mEBiN0vxLkI4jLka4ATgQ33CrUVxQc 9/gXGKSJ/AnjaWNMfazC/nK0b+1x0BtcD3p0nej1Z/ns21+mCIPxNQeTySiUlaF3md0G3bjg HrmmaJCYmgoOhVP2YDKVdjj0JwAyEjRLMgGPyAGWEJj8guHJcfaoksMA3TDVdXUX3QxDym2U V0l9IkdhFwEV+iy7GUbrYup/pq3FbDyjaNAPZCw97Ora78nsS+QG/YkAw/VjoY7IrYSqDLAG IFA3xDuAqLRALEsurlJW6yvoC8rNB6MwjMbF6fSDiHIURcEtXIyDXiRyuGaoNIX5qCVxyAKJ xBitgPIBrYt/zQBYcO3JSiVdy9zWML6a6j5NPPAncC9PbJcddUvCLZa5QdQ2YqAKErtTUBRt RO42OK9cHu+Gm2DKF/JgdB0KeR4yfCgpYXHAkhrd+UhnMApHRRVm6F7m5YmgT4JHHKDebHUo 4TleOzBFiR7FCh4Y3kp3A6SWVqyb9Uh6Pboh5ifjYRZCxpAxsrBRhmMEJCTHVbzWOEiqdvq1 MV12JlFVOjrnnAbfvBZl6URrY7rnOMkCBhI1ty91TosGdy6QrVEfcJHDl/g3/gBXs765LgAl nGtamDRmotGm+F58X2ICtB6FrfSBB4AxphxYmkjf+s8/r0v2RPbikBuRo+BKeSTsRGvxlsBR 1Obe39wNiE/pw8AzdACT3ZBjmgw3SfRV0o0ybq9DvhVGdYOAnNWA2wlU6jRkQvxu+CtsNE3X 1+E25X4C0AHQ1JsdHVgTu0cl2wT/oEPiiEd4OPjrEsuLonKFp4Mb+fvvou012mj7mMPTLH4X TcnUOu8eXdmcV20qeYYQYKSQRK+BdDsbA0eJXEEffsoVyZ0tTkNEhVeE1oC99oZcE0M9oPjf fO8xqskeLAzCTbbSp8EeHOIZuxhLyMrugaYTrE64w/iJ+BXjK+iAb2Y+8ntBgNmkh4O+RLao oBJxIYM4uHZyuDFfwXtDAAmjm0nrcyIHdNz4k+YPGRv/m473TxfEa3U/xKMjFpXr/B8WTU1D UqKnHAsmyaKkClVGYWzkKlO2hGhlVU5KV1tJ6Wp3W0lX7emsSzyw6iKXL6VIUSA6baEUtUtS 1P5XKeqrFPVXlaIyhKQsBjg9asdaCpu7lsoQZ/LPWihTgR/lLAwioqtfNB1MESUoeYMtsHF6 QaZtdhvFQzLcUPRbQIKj/3x7diaqpfIWUVGit1tVvScyRjSwNKlBollc4L/hkiP92UXzol0/ KtjxOSRnAzXwL6uWZn2c+F3+lFN4SnLXGAEhYRC4CxTQIEMxlJQG5UmmRlwAs3/D7KpmN+Rs FE44DCdw26qnItKFgXQAj+DnHQ0GOIdyA9AgJE1TxWRwowILtNcI5DLkm+FbSxLLIziOCMoJ vKWXDnNVDkViqsG7+lxuRF58Z/g4TYoazZ9qJ3aAE6JCksLYMrACIgXkUsa0Xxld2JJ5RhmY YCU6iDpFEIfNsiGOhAdmw2iCldJO6QsKPxPrjZpniJEzkVsBKLv7NADomwT/gl7jwYEYcHAM LWukQOPYxGudC5GFGOwxwK3hZs+JSuty4xY/h70bfg6Lnj+nqAaGrXtNbF2chYAtrktmhYRU BYjEuSimzddMjMu02LjUDaefNLiSHMV/3qIoR6LvrxyiIMYTaqAVktDp3m1WPsbOvWdw1vBt dRH51wGwmK6EhgQMhpwBVcWEuHfIUjOkxvIRS05qk5nnAit5cLLBF5i3AI57gpllkApoWYqQ yYpenx3yL4ZFnPjWiiaUgkQZ7Bwp0plbmxfEmGeVCJatlSkFDX4ZXKCNpKmMYFy5vrRuPVO1 nsL8yWSRcd26ukRRxR5RAA3sM50X/MoAfmUA/yZq9PoExnozRF3gIv5wgWL5QXrlxWrlLK1y hlL58TrlJ6iUH6NRzmaI57HUw8HtYJrYAeXmlcV9SxFXaROVpoP1FGjRwPrfNip27LuQrkAE N74vYvGLoPIpMtCk9eR3DGqQU9x2hN6LoUwlyegbYPsyvVjOer0givKSPSJ4VsyYDk10ZybD bC6jATIqfiT1Qjr8EC8KcOLXQT9ghbHfhRkD6sPigtsZ3kriuvcJmAHqxwRmTOgzJTAgGDBE vEgBBCC2Eg6cYIUWNKlGeRllNz28qOT8jbb5Fm5GwETUatE2Bf2IVew3A7zdYspdqa2ThN09 JYffVjME/oAS8BpN3DRbHbSAM1RciNKC5hz+0I5q+JsTzj1DyZTGmWhlEzMpFo+SGquVses6 PaJsciuKFdwLOZ/XUsGZwtAezQIEIxIZ1wHe+3248YJIykOUvIwe4a3Q/sAzq5cWmdj14Oe8 FBckGxm6Z8xq15iIEOMmGdMSw2Dnd5wrOWUMm5e1RyOdbxJmUKAE6U4HF5ve0ZNB1+GJ7wEK 72/DGQYyg1sHJTyYFXLn/si/wdBnAxng/J600ScwS35T4GsDQ4Vb/U0CNHCO5AkQJeUIakj0 FMeO0YO809qHAuODnKPDa8N11mm1TlrNtyx+cb5H2IlVvKA3V/NuWwWCJauTY5jIbAS3xfC+ wCeuB0bGJbpFxW8wogBosvveZ6s9fA6d214eP14n14MvQJkIS3SfGyRKid/Kf7x6ANrhnc9S tceRkDhgrI2VeoR/vMau0qQCa79e2SlflcyXhcEwpx4wLjmznoJw55e4Gqylp10QiSF4z8z6 4O4N4pFQkXyA2KCk04eMxcEtdbViESriMaz/XF5PDEMadHc7UvooU/vNeHMny5WbTzfWAYyw sZHWSRp1sbde5Zqw5xu7781WLrr8M09Dz6KYCKA790p3tmC5uxznFpM05TveH5mOM5a1qi08 6kItGFZeogS5tXWwvZ2QIJO108XI6i45X+G/qmSlJRL/rKLCIGZ4T3dDcRxGgy90d+ClJ9mU VThCIaPnE8t2GI5AhsIbmkIade+nAV0ifm/KBiQ+XOJ9q0wzl9eJCDSsBkoEJIFiLP8mZ9KC 98bDWYT/QzhRxbI3vC3aZ9BBnlpK9dptdxre9bhEcvRcRPoM66vMDBC3exQ5rlNgpVlOxvwR L8ZYZrPkkVZxjfII8NjT4YcPtZNGrf20ntYkYjo9tj+2n9SjWa7qEu0rVZd5K1kCHLx9aDri D0IB2jegens2GvwbuZAAXYF8YPwMC0jxdrHJSa1TLxEodjAMJ3LJCGkaQkhZoCqyHg0EtNUP 9M/qK4Ls3SoZX+9u7SnIVkvJgE4XCBkwUyA2BTpVIJgYdFrFT4fOO9ii264DnVxE0Gl9zYRO rqMgQJ+2AgU4yXRYXK5dNuQt3T4LzrgDB87UGSJkYYN25wi37h0ezZxP6Xo6ZYdr3baqaBlt na67lMJuZzfxWit7yHys/aqg+6qg+/pC+7QXWis/kIz3br+sWcb8NqmSxQWCB376StdMGI2L So9gK13gX1MMLC3fuCxVTNKM7M94uJrzzDJc+p2l/qHR7ixnNqPXrNeppu6+bX5jb7/R33Y+ KaN/ozKLZmNyFNbZt6x9nrvHGc/Z8Y1Pec+2OH8gW1nPtIqyJNaSIC06xCyTFf1zAUkx9ZYz /mHXirUomAwAm4FMCFF8URT+bBoiwuEPhvQjZhpIvSNz1UvLWtYuoItwgPerMp0NMdFEH5Wt ROdelIj7hQ+n7aNWe/M9q2m0eS+PkiBeZbQ0qpCl0bZx3ViSpK3xbU4bGidmr+ZSFmyLesYI MJzUzbBKsq2LiM6QnTBciJLuOcSwgG3p9oMv6r5nOY3vKgBwnxU6HFKAzdfg6hN0WQZwFnDn yg05Rp7WNu+n8tqhd1QH9ix3iQH84UerfUXweslAi/Hca4fv6hzVPXdpkvQQnsA4avthjnQe VwVxyWHm7wYjL5x4AEVXGgUuDS5g163TM3QDbBzXT9r13CUUndSab72z89bb89pp7hI7u5Rm LZppfd9oblVJ6jZ8LJV5XqyUJpQoPfz4Fqp73srGSFJ9qgd7N1GrURh2dZW/stA3sTBM5TK/ wii80rca/uVmJfmy+m28BWYW+pJIR4J5ICLP7/WC8TTy+hOAKG8YTIHt8GTIgIpbtev3PhNl 8AYR5/DC68aLgjFmdw8npn7WEdMgggchXg2u7AmSH8weD1/QaP6qkFTg2BvhTBT68LqBpzpw 9s3u5oGAkXaw9twj0ibzs4nwu2TgH2Qc8FITjx/6co1sQGBQcLN/aVCY10s6cKgznzt+xVZH PqhlWdVWiSHtHhYDZvmBgBmrv8zUTJIivs8aTXQ5/fGi1akf5S7J01h6lNcOD+tnnbZ3dN5A A9p6p1M/B6iCJh/MkX67cFHmPpPULDSeT0jD+BWOyAVr3W/9e2VWF4XFnj8cBuYV4hcbXNeF HEJJ13SvE524HSNhoIQgwegG6QIHj9EdqZbMfCqT+l4IJKJkLp/aO++n+vmbWqdxqrTJcj2X iE/2dr2pHf7ApiqNtvHY9tp1EBowF4jlyyR7Qmqbw/97rU3U1a+ff0YOcY2hZ0G7vEbQ/LJH u2iuifNdBImJQ5bW4rqdpaTB86VkrURz+WleH78+HzzCcEQm6mqQ0vILZJhlYEVfeu8NGv+c wDn+VE8sbh7apC3Md+97hiQ4I2AoyM3GufalpeMg0itDXvk6HA7DOw5ZZK0+c9V0C6Ypn53U A5prNUWGIy2LSvlgpwJMqcu5ptVVGWG2dizudbuMoUM38F+7UuucknPLjqVzkFXHSnWQXYcD 4BxkZIgccmKv9MYcZCbzq4rSn9W3Mi07mJsCfkHay8zPgMxzvsK653wFpj77K7u/HyxKqbko V1r693kbyvE0OXTm/nYBhISN/b1CtSyhBJD1vP7jReOcuZNDr9HEZHYA0f/j4MGJ5+htR6cY Xi5h00LAUv2e/oCBx2UJ/pnSKTfL7tUAJHdzenHSadTOD98tA6BqIsaMncoumo125yhlMqox 3yuZ4G31vNzOzd04Gy1qp54OYLQATTjYIEfzrFYL+xKicCJSRbwQG6yjwoD97c75MR3YosSz 1vKV8mn+vsqm2VtgYxh09A7OCzgqvaPvJK4g485B+b0z+d73sgBX8kZ1v1qoqquX4u0hAfqC oSJkgX35WqU6+Dl5zplIEKoCxcq2f+imiSDp7odST/Voh9wSlkWsqm8HT7fKVAx1q0iFUreK 1LuoKVIxtBMleokmUoeqYkdaV4U64LpdwJG4+bcVeh2L3BRNssRKWYSja22Q/OwkJpJlVjYi WeKkH+Jj39+nzIEYw6aiID8lnZAsjuUPkqVW0iA5N5X0RlbgTDfqh0pto35b+WxkcyuBjazk ZK2RtdwxTG4aU6CS0ZgSzkBjfquUM7pE55lRg+jEMqqKnU1Glun0MfZvzBmTqv1Tm6M5KVWw WAOoay6lA3y5zzpAIZWA1UqaLk7FTmFd3NaSCri/gQ6uPxouo4UzhB2ZetKM2MyGTa/eYbMa 0NU20z0coXGdkZGSndozom9gZdVDWu5LNv5S6QCkS3wxHJfk9LIzT26kJzi30k/ayowYW2X2 wjtunZy03rfZc6J+pAiYUqRkjuH1A+kq3AsiTmRPtszp+dV5B5og9ByIpcbnbUb9FKVv0Osu xRMJq3SvG7YmZU2cTQLSfkcDlLMwkoghZaXUPbFYTSd7u5PBU+YYZuESQ6HKI11qTcbtnoQ8 2CJpNYhdYVbxqU8at8FI1KR6v2QD8XIHZwF3qv6RIURbFWfkg1eC7+WDzl23iqW0hs9Wfmu4 aZSzOKac/i7ti8kvjWmtRx7pb1eHI1GEv54/F/SX26czXEyTh2d90VR6T0vHmFCBuopX/Nxo Hp5cHNXb6lKIK2cvL50HOfaTdNW2my9kaBF6jLZ20HGTJztQOAS6+vTbTfc+RRdMkVbIkdEn UOqyekG+f0f0iKwewG8DfxSRISkODjdXSn+kQ5PKMNxKnIqbWFdavTumojFbaBWvxD4HjGzy nJzt6SUytjNxNfHDoC2hMH5g81Hotl4T79HkFp/OoiLvBOADYi2QNaBpaPA+6GG4JLWZGNJt NjZhNuzVrTlUQRlA6HBodDpk7MiqzbjfQsyeGrpD7WakYjfBGcM290mcZkvhUYCeCv7k3rYR Fg/dEaut1qU7mu01FchlnVBwHUHmVkFu0JcxXGCDQIzo+l24YNj5GQ0qrE5YaTuKxdIxU3/k vBUBEMtdQLzExxE4TPD8/Hm2inHBLS0uK1cJhSFgYAWvPg79s27fFLYrqorTYwAk1Sa/5LIJ q18etkZ6FHHJeJIeWxQxjUe2JADNJltlizllu/JyzHJVMst29kzJOO8zs5iMlkEs84PCZWA/ j+ebsfXjOWds/SfxzkkOWWmGsphkqdKIs8ipvKqrPUpjJbVjbpxhdFxw1XuUBX5u16QjOTuv w0Qd1Za5ubK4IRO0fXAz8qczjoInuSMLQaF/fEMMesbJ3aP4aFad5APr0ozG5WWqZZTmHg6J bWSaxNYbKuoR7Krl4tgb+tK6A93d7iYIA+iO6LppS3OkdG/9gv43V8u/SlDpzM1gijyvAj7X qjNDODbuZKyPivOhJVMV0elN+0jslqruxUjuSSEKVkBkhszsY6QqtnBL624hNKQzxYZrTkCG A80JyFhDt31pscdVKOqiH0UzIN/My1IbQwBjDC5IheSwqAvYni29Mi3B/Bp9rj6VEc6Azyuy FyB4ARbvslq+iluUGRhbdSaEfKGOBQEnRhziN+SykQFuKTvsgltahTiLl11z9WaGPB4c9Shc NWYEMT4iubNxQXn128wxVnGBCSsDzTvkLufEM5AMQ4JTMDFDtJ8OGozid4DU8GaEwV0yGANb jNZXrW2/knXZBsP4alNQPX21jxqPuTpb8EYvvcRjRkEEX9C0AGncGEkuGV/z26h7eeZA9Nbj 5Uvz6KB66K47gvUCUpdGjdTUUzUTRiUen0ysHz2Lg0yeK66WXFor+TCl5K6rlHyZYR+4//9H EZkEokxtIxEgGbXfe9dqd67yROMQYm35k7WHMRZM2hPmH6LCXKRLxMHZh3TATulEVD+PwjsT scl22F0trVqxblZLm/CTI8XO0z2RsJdOW4mO2w7D6SSWpZbBxHO0VEy+nkrYHJNyJm0xU2s3 lMJqaVUaWX/zWhdtyrK5ZMxdRQoZi1WIk7GeD9zgt5/CaOqFGP7F1arQOb7Ii+z+HGL3KqaU WbIlTDrWNIj8nuLuEJ5qjQ/ArFUKc2MGkImX7fisWtvsXlqoAd1OBc+02j8a/igr1BzII3Om OOhNQ4czm96OLUVHjXk8VsZdo2KE+MAhh96WwcnIxIkDumqLeN3HA9T8acwgTMfhWHRNrSv5 U7jCFORx4k0Y1d8c94Vv4hpEmLxCKMvKU3b6+2tReWU5fmirjczuhhxqObO7quWDFmNjpVvv POVlNrBkYbhVYw6nGq+awarGedX4wXNNvjoyEVxfJi9GYV6YHCXmjSXGsaZ4RGfxqnQaGPLG 2LeJT8FwzPrLMUhD5Mlk/EV1WLYEB3uV56sHr5zsVZk9e/Ky0GDwiesylntLLUmjvT1bgSCf rpAztJzvz1Q+c/kHMFupl7QjtJ7cLT5Tly1wYc+onM5vVgrbyG9SGLTimrAaKtZz6yXxoSkf dldEqsJvdymmVDxJySeepOQjI0py3d9WidqEiCdhe11+pSAXCtqd3GW8BhsYuQnYVKu0dlzD aWXnXaOmiVZ2DQYex6vfjJfSlGq447FX+ZxZyhqxVpwuTTdLacU1Upu1M7dS17ji/Hkvq3go L7fih2KnVkvfJruGMwmVVS177qpGrBknf5rXjGs4h8Je6/MOhWvwWMTHMQsjHcjQubQbABMz AKgFyAZSBDDM8X6U9Rq6hIQqOj85+puMa68rr9zXQzO+qcSDm6RrixpRJXlC+5Q3c9+ckJtx zVq53Y1bicefn2AtdsrzK7sdni4zk1M1kw2rYRyjUhtaSBVLsma3TGn4g4Uhbo61BUNyJbeh zLA2f0hZSR3dHl325UphJ3Z2MVBP70xDu92Q0qstakiV3IYJ9Epr6GKYGxhiwZgGy7L0ONpk zZBYXbSENsfUXUqhs73jKnS28W/0V2epBfkbpFkycp1+i7QeubU11mOVQH+TR7U18T4tZGWW jihpt/PY9zZjVSxlaHS97iITKeXMPuVo0XoedZY+52piIVV69JEaGV8pVF9ssGApUbFD6IGE eNq56+AObVCu+8F1xPl0LBm+oNUBqkM7zc5+wURyCzHUlMwel/KEw/I7m/ilC8dZRmi2S3fK k6Kze4tfDtUoj3sqkq3T3hD/xPcZR1otxFpkiOd2KDHtir/qg9i86jyDbK6mhCpzJfNEh6Y/ Y4zhdjz6XJ3fbzXerw4Dlz1bem+a2+t2vNfHyv32saZJ/c73eTK/U3G5x6nHv1M5o81/uFH4 k/Zu42BQ7NkmTZCMJr1NGTVkMGIi5xTZhKtcOdjZOajaRC6zLhM5XZejRVGwqKqyjsfg7yO/ C7MIvozR5B7fZmejItlTkSYOdxukZqAuPkfZ/ycHH+KIIvVm7c2JvBMazbcca+oJTqsxZ1Xa wAc7rKY7qsoosuisyjFYeAVLuu/KIB5PdNU0zoqc6UI7LGbNaLGHbGxaj3O01OaQD3GyzJrz PEdSjJ1m5quPklS+CCTBZBJOKJI72mKIIVzhJRve3ip6f9hqtgHh2p0Vguud3ZcI2Dt7+wUN 2DH1FMaEYvtOOLlfJkCuwtt1Y3Jnj8JWN7XmUevUgeiMruSjZayzDaczky9l8dSC3q/oBDV3 cvXDn47PcXokjO/T6ncr1cTqSS9nFM2U8w5fDJT/ibgNbrvBJDlCu+MdnaLLVn2JLZA33rwd MOGIxOLeRr15i29/bB7ywvf29kjILe8WKtXkuavwOmyY6ot3AbDAfbrLuqgpJR6LErQF4qx1 xigb24t6u9E6WmH1+v8t3/XEVqrl/hBM4EjDqOjPkHRNkXUHlMYV3gJzhkR9Mgh+9YfOSn+o n7+pn7facmf3d2lnq0AqyhkYhXFzh0wp/B6+HHX+y+kRBNraCbl3EueYCkfLmnjGlcV8f3Js KgvU5lqbyg1rUxwtlJEowyvQHbzHzfbge6KzjtNa4wQfp3ln9l/u4ZZs7MMOmVii6+PpBB9+ vem60/asc37UOD72OiD3HiMdSdsEbR20jNGKvdy5iWLsI4P71yMNg8I2JWMo63agCxQFGfGE AyLDbYw3cndGr9n0YjUGCddZne42dVnmQeDh7xvmfN31poYJf/jgmY8Qy47LoeDtLZZpTyXH jKwSJVhAe8qhlI6AsuV+AXljHaXrXzCxzHo+tp+dduNt5+MZIEsWp4h/DUIVxtEuWYJPTKsK bOLW/kF13w6XW9kFIN8WG/yHHTEXRQwTgP3DUf2n/Ip49psdUBclql44G4HAUFwjORjzSB6f AAZatRSzPfUnmIzxtTjmdypZPNYpKuPSmGg2Ts60ECXb5/NuSN/jW/8zdUbJtDwWiNwmBQCP OwoRtyIW/sNjhp+9wbUn83J6nIorL/4pfhzBvXEgfsS4zsVY9OiivK2Lz+T8uSterUYCvV6U z57Z4tzC6uIZBf8AtN0WuR9RueNZmTA5z6NaKUyxQLPFfZXDyA4wtU7gJh4dAxcypoCSxCfe MfOAns03wYRMN8mpQYIM3IcYxgD+UE81zwTDARxu+6x+eHZ0gs7f9Q8iJ4fH672LFDj3Yz8A ljXwuvfAluDF7E1DD5ASQ+rL+S69gwmoKz7j83j+PB12nDPCf/gMlhkrs0/7XKpmfYmTIZiJ HcWxrExILzN1yk2grd6qVGCHN6pbZXwaU7gJl8fFedO7aL49PDtviZyECHn1QA9JlOBJSBx4 9uyZzH/KoJIK7HQOSaQGug3MZN9T3VGAwUNgHjnNg063wuisaqux4rVVOQ7GC97aQwYPVrxV tlb8B/5Lrpc6lpcv7hUgIh4rYaBVCf7+wndyBQ6FTpVkDjTDHQz7HgfZFLnVtpOHj4J8WREb g/4qbkVRQQ7xFbwddJ//sbIi/oPnvr1XpcPaBr5BPcU48xQ6ciQOgCHlmh3SCuLPW7+H6V6Y HKGANvRvItivlnd+1GqefOQrVkcpy+EkGsetvB1wOdfymq3mG3w7yxMji4dnylYY+Vsg/zOb fD24DrXy19QjTeedP5iW5H0J1wU7NSlmgj7qhBTut1t8ILsDWusOjNDA1qrSaY9MGMJrOY0C ahF8FQ+QVQhK0ziQqa1pl3f2OMD7zm5ZMaxC5E4G0dhrdSmiqQbBFUHUyv4mcYQUXDpBn051 LTOk6d/AOevfdi9QDgCLoY1JRG13zoEji8O+hSHHwZcxDGyCQ9lpiWx838EIMVu4uj2D8Nbt JKevaKCELnnzGPx36avB/TScLmKg1aKzG8XYbhRju1FM2Y1ibMlZl8IKRSPmHJyvxU5ZLvzl 1g7x2tWXlT298C/0HJLjvE3wGwaCNkd1q2coytsXAs8FL4yig2wWyhbjt4dB7FhNQm56vRBs rWey+xTHqwWRoBUF0U4WVei/5cLKyn8DksEMcuoGAQA= --------------020205050402010201080609--