diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..8db95dcf6544f140598275dfc06052e810796dbe --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# init +*.xml diff --git a/.idea/Lua-Nginx-Redis.iml b/.idea/Lua-Nginx-Redis.iml new file mode 100644 index 0000000000000000000000000000000000000000..c956989b29ad0767edc6cf3a202545927c3d1e76 --- /dev/null +++ b/.idea/Lua-Nginx-Redis.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..efd78c1c658592f49a93ada4d21a898cf78d4f10 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000000000000000000000000000000000000..b91b627ad9d0a0b6208f67eacf88751ab5d4d1ef --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + +<<<<<<< Updated upstream + + +======= + + +>>>>>>> Stashed changes + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + +<<<<<<< Updated upstream + + + + + + + + + + + + + + +======= + +>>>>>>> Stashed changes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1491962114906 + + + 1492055386915 + + + 1492081028740 + + + 1492082235236 + + + +<<<<<<< Updated upstream + + + + + + + + + +<<<<<<< Updated upstream + + +======= + + +>>>>>>> Stashed changes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<<<<<<< Updated upstream + + +======= + + +>>>>>>> Stashed changes + + + + + + + + \ No newline at end of file diff --git a/Images/Nginx+Lua+Local_Redis+Mysql.png b/Images/Nginx+Lua+Local_Redis+Mysql.png new file mode 100644 index 0000000000000000000000000000000000000000..86091244d243fd3402024c86fe7ca51c224f3f46 Binary files /dev/null and b/Images/Nginx+Lua+Local_Redis+Mysql.png differ diff --git a/Images/Nginx-Phase.png b/Images/Nginx-Phase.png new file mode 100644 index 0000000000000000000000000000000000000000..a01e312451b72561c579132e52c2653669ee8076 Binary files /dev/null and b/Images/Nginx-Phase.png differ diff --git a/Images/Openresty_lua-resty-upstream-healthcheck.png b/Images/Openresty_lua-resty-upstream-healthcheck.png new file mode 100644 index 0000000000000000000000000000000000000000..bdee67f1a5e8a4567b9e7783e095e9f528e862b2 Binary files /dev/null and b/Images/Openresty_lua-resty-upstream-healthcheck.png differ diff --git a/Images/URI-URL-Image.jpg b/Images/URI-URL-Image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..baee05dfc9c75fff49e6bd8d0b07f5a2ab51daa7 Binary files /dev/null and b/Images/URI-URL-Image.jpg differ diff --git a/Images/alipay.png b/Images/alipay.png new file mode 100644 index 0000000000000000000000000000000000000000..64b635b2b9f9f965d83d2ff615af4058c300ceee Binary files /dev/null and b/Images/alipay.png differ diff --git a/Images/github_good1.png b/Images/github_good1.png new file mode 100644 index 0000000000000000000000000000000000000000..d7bdd3432e53f3b3d0886bce5822ad1f6e7084df Binary files /dev/null and b/Images/github_good1.png differ diff --git a/Images/nginx-hls-locations.png b/Images/nginx-hls-locations.png new file mode 100644 index 0000000000000000000000000000000000000000..baf90e704ba7e3f2618c294d3c9ce1a0ad9357f0 Binary files /dev/null and b/Images/nginx-hls-locations.png differ diff --git a/Images/nginx_start_script.png b/Images/nginx_start_script.png new file mode 100644 index 0000000000000000000000000000000000000000..3678c65f3e3d06771102fdc2d9d8ae22ef188b62 Binary files /dev/null and b/Images/nginx_start_script.png differ diff --git a/Images/screenshot_1588728211136.png b/Images/screenshot_1588728211136.png new file mode 100644 index 0000000000000000000000000000000000000000..4179b160726143b7cbbbdc39f1b99a3c95580431 Binary files /dev/null and b/Images/screenshot_1588728211136.png differ diff --git a/Images/tinywan-wechat.jpg b/Images/tinywan-wechat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..460d425a1fdcd1350be44cdf99f476ad0c6b3241 Binary files /dev/null and b/Images/tinywan-wechat.jpg differ diff --git a/Images/websocket_lua01.png b/Images/websocket_lua01.png new file mode 100644 index 0000000000000000000000000000000000000000..93262eeee131800d88b975073f5498db9d46c223 Binary files /dev/null and b/Images/websocket_lua01.png differ diff --git a/Images/wechat.png b/Images/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f99da540ac94bf2945cce10fe17b78c405bd2a Binary files /dev/null and b/Images/wechat.png differ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..83dea21265e22f5598f3beedf1914aa1089a3a5f --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 ShaoBo Wan(无极) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Linux/Ubuntu-basic.md b/Linux/Ubuntu-basic.md new file mode 100644 index 0000000000000000000000000000000000000000..84a6f293a1e9627fb6e0c0b245e3f3444146ae54 --- /dev/null +++ b/Linux/Ubuntu-basic.md @@ -0,0 +1,25 @@ +## [Ubuntu14.04 从安装软件到卸载软件,删除安装包](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Linux/Ubuntu-basic.md) ++ 如何安装不知道一个软件的全称? + + 如果你想安装一个软件。比如:OpenCV库,你可以使用以下命令: + + ```bash + sudo apt-get install libopencv-dev + ``` + + 那么libopencv-dev这个名字是怎么来的,我只知道我想安装opencv + + 而直接使用:`sudo apt-get install opencv`是不行的 + + 正确使用:`apt-cache search opencv` + + 或者` sudo apt-get install aptitude && aptitude search opencv` ++ 如何知道Ubuntu里安装了哪些软件?列出所有安装的软件:` dpkg -l` ++ 如何确切知道自己是否安装了某个软件? + + 命令1:`dpkg -l filename` + + 命令2:`dpkg -l "*google*"`使用通配符就可以方便查找了 ++ 如何卸载某个软件? + + ```bash + sudo apt-get --purge remove --purge表示彻底删除 + ``` ++ 如果想删除apt-get下载的某个软件安装包呢? + + Ubuntu 中apt-get下载的安装包放在/var/cache/apt/archives里。所以可以在这个路径下删除 + + 或者使用命令1:`apt-get autoclean`,这个命令将已经删除了的软件包的.deb安装文件从硬盘中删除掉 + + 或者使用命令2:`apt-get clean `,这会把你已安装的软件包的安装包也删除掉 + \ No newline at end of file diff --git a/Linux/linux-basic.md b/Linux/linux-basic.md new file mode 100644 index 0000000000000000000000000000000000000000..0fab2935d302c460568a8e752ff12a66eb433c37 --- /dev/null +++ b/Linux/linux-basic.md @@ -0,0 +1,40 @@ +## [Ubuntu14.04 从安装软件到卸载软件,删除安装包](Ubuntu-basic.md) +## Linux 基础知识 ++ 检查网卡是否正确工作 + 1. 检查系统路由表信息是否正确 + 1. [Linux route命令详解和使用示例](http://www.jb51.net/LINUXjishu/152385.html) + 1. 案例介绍: + ``` + www@ubuntu1:/var/log$ route + Kernel IP routing table + Destination Gateway Genmask Flags Metric Ref Use Iface + default 122.11.11.161 0.0.0.0 UG 0 0 0 em1 + 10.10.101.0 * 255.255.255.0 U 0 0 0 em2 + 122.11.11.160 * 255.255.255.224 U 0 0 0 em1 + ``` + + 默认路由为:`122.11.11.161`,绑定在`em1` 网卡上 + + 而`10.10.101.0` 段的IP仅供局域网主机之间共享数据,没对外连接访问权限,因而外界是没办法通过`10`段网络连接到服务器的 + + 如果需要`10.10.101.0` 段可以让外网放完的,则需要删除`122.11.11.161` 的默认路由,需要在`em2`网卡上添加`10`段的默认路由即可 + + 具体步骤: + ``` + www@ubuntu1:/var/log$ route delete defaul + www@ubuntu1:/var/log$ route add defaul gw 10.10.101.1 + ``` + + 此时外界就可以通过`ssh www@10.10.101.2`连接到服务器了 ++ find 命令 + + 查找超出7天前的flv的文件进行删除: + + 命令: + ```Bash + find ./ -mindepth 1 -maxdepth 3 -type f -name "*.flv" -mmin +10080 | xargs rm -rf + ``` + + `-type f` 按类型查找 + + `-mmin +10080` 7天之前的文件 + + xargs与-exec功能类似,` find ~ -type f | xargs ls -l ` + + -r 就是向下递归,不管有多少级目录,一并删除 + + -f 就是直接强行删除,不作任何提示的意思 + + 查找当前目录下.p文件中,最近30分钟内修改过的文件: + + `find . -name '*.p' -type f -mmin -30` + + 查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细de情况加上ls: + + `find . -name '*.phtml' -type f -mmin -30 -ls` + + 查找当前目录下,最近1天内修改过的常规文件:`find . -type f -mtime -1` + + 查找当前目录下,最近1天前(2天内)修改过的常规文件:`find . -type f -mtime +1` \ No newline at end of file diff --git "a/Linux/\351\270\237\345\223\245\347\232\204Linux\347\247\201\346\210\277\350\217\234-\345\237\272\347\241\200\345\255\246\344\271\240\347\257\207(\347\254\254\345\233\233\347\211\210).pdf" "b/Linux/\351\270\237\345\223\245\347\232\204Linux\347\247\201\346\210\277\350\217\234-\345\237\272\347\241\200\345\255\246\344\271\240\347\257\207(\347\254\254\345\233\233\347\211\210).pdf" new file mode 100644 index 0000000000000000000000000000000000000000..3afe5483150554bb661e98dd56cf3e8fc760c178 --- /dev/null +++ "b/Linux/\351\270\237\345\223\245\347\232\204Linux\347\247\201\346\210\277\350\217\234-\345\237\272\347\241\200\345\255\246\344\271\240\347\257\207(\347\254\254\345\233\233\347\211\210).pdf" @@ -0,0 +1,1179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + book/鸟哥的Linux私房菜-基础学习篇(第四版).pdf at master · songhuiqing/book + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content +
+ + + + + + + + + + +
+ +
+ + +
+ +
+ + + +
+
+
+ + + + + + + + + + + + + + +
+
+ +
    + + + + + +
  • + +
    + +
    + + + Watch + + +
    + Notifications +
    +
    + + + + + + + +
    +
    +
    + +
    +
  • + +
  • +
    +
    + + +
    +
    + + +
    + +
  • + +
  • +
    + + Fork + +
    + +

    Fork book

    +
    +
    + +
    +

    If this dialog fails to load, you can visit the fork page directly.

    +
    +
    +
    +
    + + +
  • +
+ +

+ + /book + + +

+ +
+ + + + + + +
+
+
+ + + + + + + + + Permalink + + + + +
+ + +
+ + Branch: + master + + + + + + + +
+ +
+ + Find file + + + Copy path + +
+
+ + +
+ + Find file + + + Copy path + +
+
+ + + + +
+
+ + + + + Add files via upload + + + + 96b10a4 + Mar 28, 2018 + +
+ +
+
+ + 1 contributor + + +
+ +

+ Users who have contributed to this file +

+
+ +
+
+
+
+ + + + + +
+ +
+ +
+ 20 MB +
+ +
+ + + + +
+ + + + +
+ +
+
+
+ + + + + + +
+ +
+
+ +
Sorry, something went wrong. Reload?
+
Sorry, we cannot display this file.
+
Sorry, this file is invalid so it cannot be displayed.
+ +
+
+ +
+ +
+ + + +
+ + +
+ + +
+
+ + + +
+ +
+ +
+
+ + +
+ + + + + + +
+ + + You can’t perform that action at this time. +
+ + + + + + + + + + + + + + +
+ + + + diff --git "a/Linux/\351\270\237\345\223\245\347\232\204Linux\347\247\201\346\210\277\350\217\234\346\234\215\345\212\241\345\231\250\346\236\266\350\256\276\347\257\207(\347\254\254\344\270\211\347\211\210).pdf" "b/Linux/\351\270\237\345\223\245\347\232\204Linux\347\247\201\346\210\277\350\217\234\346\234\215\345\212\241\345\231\250\346\236\266\350\256\276\347\257\207(\347\254\254\344\270\211\347\211\210).pdf" new file mode 100644 index 0000000000000000000000000000000000000000..c61a8a8aa0ef636edc85ff4e316fae2f921e3280 --- /dev/null +++ "b/Linux/\351\270\237\345\223\245\347\232\204Linux\347\247\201\346\210\277\350\217\234\346\234\215\345\212\241\345\231\250\346\236\266\350\256\276\347\257\207(\347\254\254\344\270\211\347\211\210).pdf" @@ -0,0 +1,1150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + book/鸟哥的Linux私房菜服务器架设篇(第三版).pdf at master · songhuiqing/book + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content +
+ + + + + + + + + + +
+ +
+ + +
+ +
+ + + +
+
+
+ + + + + + + + + + + + + + +
+
+ +
    + + + + + +
  • + +
    + +
    + + + Watch + + +
    + Notifications +
    +
    + + + + + + + +
    +
    +
    + +
    +
  • + +
  • +
    +
    + + +
    +
    + + +
    + +
  • + +
  • +
    + + Fork + +
    + +

    Fork book

    +
    +
    + +
    +

    If this dialog fails to load, you can visit the fork page directly.

    +
    +
    +
    +
    + + +
  • +
+ +

+ + /book + + +

+ +
+ + + + + + +
+
+
+ + + + + + + + + Permalink + + + + +
+ + +
+ + Branch: + master + + + + + + + +
+ +
+ + Find file + + + Copy path + +
+
+ + +
+ + Find file + + + Copy path + +
+
+ + + + +
+ Fetching contributors… +
+ +
+ + Cannot retrieve contributors at this time +
+
+ + + + +
+ +
+ +
+ 17.1 MB +
+ +
+ + + + +
+ + + + +
+ +
+
+
+ + + + + + +
+ +
+
+ +
Sorry, something went wrong. Reload?
+
Sorry, we cannot display this file.
+
Sorry, this file is invalid so it cannot be displayed.
+ +
+
+ +
+ +
+ + + +
+ + +
+ + +
+
+ + + +
+ +
+ +
+
+ + +
+ + + + + + +
+ + + You can’t perform that action at this time. +
+ + + + + + + + + + + + + + +
+ + + + diff --git a/Lua-Script/backage/math_function.lua b/Lua-Script/backage/math_function.lua new file mode 100644 index 0000000000000000000000000000000000000000..d7a0e570be28e0cb99b0c13f5fa4a81e286e0221 --- /dev/null +++ b/Lua-Script/backage/math_function.lua @@ -0,0 +1,21 @@ +MathFun = {} + +-- + +function Add(a,b) + return a+b +end + +-- - +function Minus(a,b) + return a+b +end + +-- * +function Multi(a,b) + return a+b +end +-- / +function Div(a,b) + return a+b +end + \ No newline at end of file diff --git a/Lua-Script/backage/module.lua b/Lua-Script/backage/module.lua new file mode 100644 index 0000000000000000000000000000000000000000..d877498553d27f33084512a197a04b0c618d1621 --- /dev/null +++ b/Lua-Script/backage/module.lua @@ -0,0 +1,31 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Tinywan +-- Date: 2017/5/22 +-- Time: 12:16 +-- To change this template use File | Settings | File Templates. +-- +-- 文件名为 module.lua +-- 定义一个名为 module 的模块 +module = {} + +-- 定义一个常量 +module.constant = "这是一个常量" + +-- 定义一个函数 +function module.func1() + io.write("这是一个公有函数!\n") +end + +-- 定义一个私有函数,只允许内部调用 ,如果外部 module.func2() 会提示错误:at 0x004044a0 +local function func2() + print("这是一个私有函数!") +end + +-- 通过定义一个普通方法使用外界调用,该方法是可以调用自己的私有函数的 +function module.func3() + func2() +end + +return module + diff --git a/Lua-Script/backage/module1.lua b/Lua-Script/backage/module1.lua new file mode 100644 index 0000000000000000000000000000000000000000..42175b8137d3ed3577a4593bfc7b3fd49fad10a7 --- /dev/null +++ b/Lua-Script/backage/module1.lua @@ -0,0 +1,8 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/22 +-- Time: 12:16 +-- To change this template use File | Settings | File Templates. +-- + diff --git a/Lua-Script/backage/test_module.lua b/Lua-Script/backage/test_module.lua new file mode 100644 index 0000000000000000000000000000000000000000..83a292570ee958784621205efe11fa4611725a5d --- /dev/null +++ b/Lua-Script/backage/test_module.lua @@ -0,0 +1,15 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/22 +-- Time: 12:25 +-- To change this template use File | Settings | File Templates. +-- +local module = require "module" + +print(module.constant) + +print(module.func3()) + + + diff --git a/Lua-Script/chapter-two/members.lua b/Lua-Script/chapter-two/members.lua index 2d896cea53fc7b656064b818fc1f4a08eac6d81f..b4a647a3c139ae825353ded45d8bbdb012e288eb 100644 --- a/Lua-Script/chapter-two/members.lua +++ b/Lua-Script/chapter-two/members.lua @@ -1,4 +1,14 @@ members = {Tom = 10,Jake = 11,Dodo = 12,Jhon = 16} wan = {name='tinywan',age=24,schoole='QH'} -local wan_local = {name='tinywan_wan_local',age=24,schoole='wan_local'} \ No newline at end of file +local wan_local = {name='tinywan_wan_local',age=24,schoole='wan_local'} + + --|------------------------------------------------------------------------ + --| Github: https://github.com/Tinywan + --| Blog: http://www.cnblogs.com/Tinywan + --|-------------------------------------------------------------------------- + --| Author: Tinywan + --| Date: 2017/1/20 + --| Time: 16:25 + --| Mail: Overcome.wan@Gmail.com + --|------------------------------------------------------------------------ \ No newline at end of file diff --git a/Lua-Script/function/fun001.lua b/Lua-Script/function/fun001.lua new file mode 100644 index 0000000000000000000000000000000000000000..67f91036d42c16d431f16d94dbf6bfb064fdd045 --- /dev/null +++ b/Lua-Script/function/fun001.lua @@ -0,0 +1,30 @@ +-- +-- Created by IntelliJ IDEA. +-- User: tinywan +-- Date: 2017/7/22 +-- Time: 12:02 +-- To change this template use File | Settings | File Templates. +-- [1] +local function factoricall(n) + if tonumber(n) == 0 then + return 1 + else + return n* factoricall(n-1) + end +end + +print(factoricall(5)) +fun1 = factoricall +print(fun1(5)) + +-- function 可以以匿名函数(anonymous function)的方式通过参数传递: anonymous +local function anonymous(tab,fun) + for k , v in pairs(tab) do + print(fun(k,v)) + end +end + +tab_demo = {name = "Tinywan",age=24 } +anonymous(tab_demo,function(key,value) + return key .. ' = '..value +end) diff --git a/Lua-Script/function1.lua b/Lua-Script/function1.lua index 7e88edf3767803ab805ad97d964d7925840d490e..c9e5a782fbd4ddfd0d12a10f9653a36097470bd1 100644 --- a/Lua-Script/function1.lua +++ b/Lua-Script/function1.lua @@ -3,4 +3,17 @@ function add(a,b) return a+b end -print('这两个数的和是:',add(12,4)) \ No newline at end of file +print('这两个数的和是:',add(12,4)) + +local _name = "Tinywan" +local man = {} + +function man.GetName() + return _name +end + +function man.SetName(name) + _name = name +end + +return man \ No newline at end of file diff --git a/Lua-Script/lua-basic.md b/Lua-Script/lua-basic.md new file mode 100644 index 0000000000000000000000000000000000000000..f420a195874ebfff461cc6d0ee4b2d0990e8a8c1 --- /dev/null +++ b/Lua-Script/lua-basic.md @@ -0,0 +1,510 @@ +#### Lua 基础语法 ++ 删除一个全局变量,只要将变量值赋值为nil:`a = nil`,当且仅当一个变量不为nil 时,这个变量存在 ++ `Boolean`类型:在控制条件中除了`false`和`nil` 为假,其他值都为真,所以lua认为0和空字符串也是真 ++ `String`类型: + + 字符串替换:`string.gsub()` + ```lua + a = 'one HELLO' + b = string.gsub(a,'one','two') + print(a) -- one HELLO + print(b) -- two HELLO + ``` + + 字符串和数字 + ```lua + print("10" + 1) -- 11 + print("10" + "1") -- 11 + print("10 + 1") -- 10 + 1 + print("hello " .. " world") -- hello world + --print("hello" + 1) -- 错误写法 + ``` + + 字符串和数字转换 + ```lua + a = 10 + print(tostring(a)) -- 10 + b = "20" + print(tonumber(b)) -- "20" + + print(tostring(10) == "10") -- true + print(10 .. "" == "10") -- true + ``` ++ 表达式 + + 如果两个值类型不相等,Lua认为两者不同 + + nil 只和自己相等 + + 逻辑运算符 + ```lua + -- a and b -- 如果a为false,则返回a ,否则返回b + -- a or b -- 如果a为true,则返回a ,否则返回b + print(4 and 5) -- 5 + print(nil and 12 ) -- nill + print(false and 12) -- false + print(4 or 5) -- 4 + print(false or 5) -- 5 + ``` + + 注意:`and`的优先级比`or`高 + + Lua 三元运算符:`( a and b) or c` ++ 变量 + + 赋值语句 + ```lua + x = 20 + y = 30 + x,y = y,x + print(x,y) -- 30 20 + + a,b,c = 10,20 + print(a,b,c) --10 20 nil + + x,y,z = 10 + print(x,y,z) -- 10 nil nil + ``` + + 局部变量与代码块 + + 代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的哪个文件或者文本串) + + ```lua + a = 12 + if a>10 then + local i = 19 + print(i) -- 19 + end + print(i) -- nil + ``` ++ 控制语句 + ```lua + members = { Tom = 10, Jake = 11, Dodo = 12, Jhon = 16 } + + for k, v in pairs(members) do + if v == 10 then + print(k, 'is 10 years old') -- Tom is 10 years old + elseif v == 11 then + print(k, 'is 11 years old') -- Jake is 11 years old + elseif v == 12 then + print(k, 'is 12 years old') -- Dodo is 12 years old + else + print(k, "is not 10,11,12 years old") -- Jhon is not 10,11,12 years old + end + end + ``` ++ 函数 + + 单个返回值 + ```lua + function max(a,b) + if a > b then + return a + else + return b + end + end + print(max(10,20)) -- 20 + ``` + + 多个返回值 + ```lua + function more() + return 10 , 20 ,30 + end + a , b , c = more() + print(a,b,c) -- 10 20 30 + ``` + + 可变数目的参数 + ```lua + function more() + return 10 , 20 ,30 + end + -- 当函数位于最后一位的时候,返回全部值,否则值返回一个数值 + a , b , c ,d = 100, more() + print(a,b,c,d) -- 100 10 20 30 + ``` + + 闭合函数 + ```lua + function count() + -- i属于一个非局部变量,因为它既不是全局变量,也不是单纯的局部变量(因为另外一个函数可以访问到它) + local i = 0 + return function() + i =i +1 + return i + end + end + -- 以上 count()函数里的那个函数,加上一个非全局变量i,就构成一个闭合函数 + -- 所以每次调用闭合函数,非局部变量的值都不会被重置 + local func = count() + print(func()) -- 1 + print(func()) -- 2 + ``` + + 非全局函数,在定义函数的使用要注意定义函数的顺序 + ```lua + local eat + local drink + eat = function() + print("eat") + return drink() -- 这里的drink()属于尾调用 + end + drink = function() + print("drink") + end + eat() + ``` ++ table 使用 + + Lua table 第一个索引为1 + + 简单 + ```lua + a = {} + a.x = 100 + a.y = 200 + a["z"] = 300 -- a.z = 300 + print(a.x) -- 100 + print(a.y) -- 200 + print(a.z) -- 300 + ``` ++ 泛型迭代器 + + 标准库迭代器包括: + + 迭代文件每行:`io.lines` + + 迭代table元素:`pairs` + - [x] 可以遍历表中的所有key + - [x] 并且除了迭代器本身以及遍历表本身,还可以返回nil + + 迭代数组元素:`ipairs` + - [x] ipairs不能返回nil,只能返回数字0,如果遇到nil则退出 + - [x] 只能遍历表中出现的第一个不是整数的key + + 泛型迭代器 + ```lua + config = {host = '127.0.0.1',port = '3306', dbname = 'LuaDB' } + config.redis_host = "192.168.1.1" + config.redis_port = "6379" + config.redis_db = "12" + print(config['redis_host']) -- 192.168.1.1 + print(config.redis_port) -- 6379 + print(config.dbname) -- LuaDB + + for k, v in pairs(config) do + print(k,v) + end + + --[[ + host 127.0.0.1 + dbname LuaDB + redis_host 192.168.1.1 + redis_db 12 + redis_port 6379 + port 3306 + -- ]] + ``` + + 迭代table元素 + ```lua + arr = {} + for var = 1,100 do -- for 循环 + table.insert(arr,1,var) + end + + for k, v in pairs(arr) do -- 遍历表 + print(k,v) + end + --[[ 打印结果 + 1 100 + 2 99 + ... ... + 99 2 + 100 1 + + -- ]] + print(table.maxn(arr)) -- table长度 100 + print(#arr) -- table长度(快捷方式) 100 + ``` + + 迭代数组元素:`ipairs` + ```lua + arr = {host = '127.0.0.1',port = '3306','Tinywan'} + -- 如果没有找到下标为整数的则直接退出,是整数的则直接输出,如上面的'Tinywan' + for k, v in ipairs(arr) do -- 只能遍历key 为整数的下标 + print(k,v) -- 1 Tinywan + end + ``` + + 循环迭代table元素(如:lua-resty-mysql 扩展查询的数据) + + 查询 :`res, err, errcode, sqlstate = db:query("select * from tb_ngx_test order by id asc", 10)` + + 转换成JSON结果集输出2条记录: + ```lua + ngx.say("result: ", cjson.encode(res)) + result: [{"age":"24123","name":"tinywan123","address":"China","id":"1"},{"age":"24","name":"tinywan","address":"China","id":"2"}] + ``` + + 遍历该结果集: + ```lua + res, err, errcode, sqlstate = db:query("select * from tb_ngx_test order by id asc", 10) + if not res then + ngx.say("bad result: ", err, ": ", errcode, ": ", sqlstate, ".") + return + end + + for k, v in pairs(res) do + if type(v) == "table" then + for new_table_index, new_table_value in pairs(v) do + ngx.say(new_table_index.." = "..new_table_value) + end + else + ngx.say(k,v) + end + end + + --[[ 打印结果 + age = 24123 + name = tinywan123 + address = China + id = 1 + age = 24 + name = tinywan + address = China + id = 2 + ]] + ``` + + json 和 lua table 转换 + + [1] 将 json 转换成 lua table + ```lua + local json_str = '{"is_male":"nan","name":"zhangsan","id":1}' + local t = json.decode(json_str) + ngx.say(format_table(t)) + ``` + + [2] 将 lua table 转换成 json 字符串 + ```lua + local t = [[{key="table key",value="table value"}]] + local json_str = json.encode(t) + ngx.say(json_str) -- "{key=\"table key\",value=\"table value\"}" + ``` + + [3] 将lua table转换成 json 数组 (lua 两个大括号表示一个数组) + ```lua + local t = {keys={"list1","list2","list3"},num=1} + local str = json.encode(t) + ngx.say(str) -- {"keys":["list1","list2","list3"],"num":1} + ``` ++ 编译执行与错误 + + error 错误 + ```lua + local name = "Lua1" + if name ~= "Lua" + then + error("this is not Lua "); + end + ``` + + assert 错误:`assert(name~="Lua"," this is not Lua")` + + pcall 捕获错误代码 + ```lua + function test() + print(a[1]) + end + -- pcall 除了会返回true或者false外,还能返回函数的错误信息。 + -- 如果没有错误信息,err 会返回一个nil + local status,err = pcall(test) + if status then + print('success') + else + print('函数执行出错了') + print('错误信息:',err) + end + ``` ++ Lua面向对象(重点) + + [博客详细地址描述](http://www.cnblogs.com/tinywan/p/6940784.html) + + :white_check_mark: `__add` 元方法 #demo1 + ```lua + local mt = {} + mt.__add = function(t1, t2) + print("两个Table 相加的时候会调用我") + end + local t1 = {} + local t2 = {} + -- 给两个table 设置新的元表,一个元表就是一个table的值 + setmetatable(t1, mt) -- meta:元素 + setmetatable(t2, mt) + -- 进行相加操作 + local t = t1 + t2 + print(t) + + --[[输出结果 + 两个Table 相加的时候会调用我 + nil + --]] + ``` + + :white_check_mark: `__add` 元方法 #demo2 + ```lua + -- 创建一个元表 (是创建一个类吗?) + local mt = {} + mt.__add = function(s1, s2) + local result = "" + if s1.sex == "boy" and s2.sex == "girl" then + result = "一个男孩和一个女孩的家庭" + elseif s1.sex == "girl" and s2.sex == "girl" then + result = "两个女孩的家庭" + else + result = "未知孩子的家庭" + end + return result + end + -- 创建两个table,可以想象成是两个类的对象(实例化两个类) + local s1 = { name = "Per1", sex = "boy" } + local s2 = { name = "Per2", sex = "girl" } + -- 给两个table 设置新的元表,一个元表就是一个table的值 + setmetatable(s1, mt) + setmetatable(s2, mt) + -- 进行加法操作 + local result = s1 + s2 + print(result) + + -- 输出结果 一个男孩和一个女孩的家庭 + ``` + + :white_check_mark: `__index` 元方法 #demo1 + ```lua + local t = { + name = "Tinywan" + } + local mt = { + __index = function(table, key) + print("虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来" .. key) + end + } + setmetatable(t, mt) + print(t.name) + print(t.age) + + --[[输出结果 + -- Tinywan + -- 虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来age + -- nil + ---- ]] + ``` + + :white_check_mark: `__index` 元方法 #demo2 + ```lua + local t = { + name = "Tinywan" + } + local mt = { + money = 808080 + } + + mt.__index = mt + setmetatable(t, mt) + print(t.money) + -- 输出结果 808080 + ``` + + :white_check_mark: `__index` 元方法 #demo3 + ```lua + local t = { + name = "Tinywan" + } + local mt = { + __index = { + money = 909090 + } + } + setmetatable(t, mt) + print(t.money) + -- 输出结果 909090 + ``` + + :white_check_mark: `__index` 元方法 #demo4 + ```lua + local smartMan = { + name = "Tinywan", + age = 26, + money = 800000, + say_fun = function() + print("Tinywan say 大家好") + end + } + + local t1 = {} + local t2 = {} + local mt = { __index = smartMan } -- __index 可以是一个表,也可以是一个函数 + setmetatable(t1, mt) + setmetatable(t2, mt) + print(t1.money) + t2.say_fun() + --- 输出结果 + -- 800000 + -- Tinywan say 大家好 + ``` + + Lua面向对象1 + + Lua面向对象1 + + Lua面向对象3 更新中... ++ Lua 排序算法 + + [Lua 排序算法 - 选择排序](https://www.openresty.com.cn/ms2008-select-sort.html#section-1) + + 选择排序 + ```lua + local function selectionSort(arr) + for i = 1,#arr-1 do + local idx = i + -- 迭代剩下的元素,寻找最小的元素 + for j = i+1,#arr do + if arr[j] < arr[idx] then + idx = j + end + end + -- + arr[i],arr[idx]= arr[idx],arr[i] + end + end + + local list = { + -81, -93, -36.85, -53, -31, 79, 45.94, 36, 94, -95.03, 11, 56, 23, -39, + 14, 1, -20.1, -21, 91, 31, 91, -23, 36.5, 44, 82, -30, 51, 96, 64, -41 + } + + selectionSort(list) + print(table.concat( list, ", ")) + ``` +#### 控制结构 ++ [if-elseif-end 语句](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/chapter-one/if-else-example.lua) ++ [for 语句](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/chapter-one/for-example.lua) ++ [Lua 只有一个容器,那就是table](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/chapter-one/container-table.lua) +#### [Lua 实现简单封装](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/function1.lua) +#### Table 操作常用的方法 ++ table.concat (table [, sep [, start [, end]]]) + + concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开 + + demo + ```lua + fruits = {"banana","orange","apple"} + -- 返回 table 连接后的字符串 value = banana orange apple + print("连接后的字符串 ",table.concat(fruits)) + -- 指定连接字符 value = banana, orange, apple + print("指定连接字符连接后的字符串 ",table.concat(fruits,", ")) + ``` ++ table.insert (table, [pos,] value): + + 在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾 + + demo + ```lua + fruits = {"banana","orange","apple"} + + -- 在末尾插入 + table.insert(fruits,"Tinywan4") + print("索引为 4 的元素为 ",fruits[4]) -- 索引为 4 的元素为 Tinywan + + -- 在索引为 2 的键处插入 + table.insert(fruits,2,'Tinywan2') + print("索引为 2 的元素为 ",fruits[2]) -- 索引为 2 的元素为 Tinywan + + print("最后一个元素为 ",fruits[5]) -- 最后一个元素为 Tinywan4 + table.remove(fruits) + print("移除后最后一个元素为 ",fruits[5]) -- 移除后最后一个元素为 nil + ``` ++ table.sort (table [, comp]) + + 对给定的table进行升序排序 +#### Lua 模块与包 ++ 定义:Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行. ++ Table 操作常用的方法 + - [x] table.concat() + - [x] table.insert() + - [x] table.maxn() + - [x] table.concat() ++ Lua 实现简单封装 + + man.lua + ```Lua + local _name = "Tinywan" + local man = {} + + function man.GetName() + return _name + end + + function man.SetName(name) + _name = name + end + + return man + ``` + + 测试封装,test.lua + + ```Lua + local man = require('man') + print("The man name is "..man.GetName()) + man.SetName("Phalcon") + print("The man name is "..man.GetName()) + ``` \ No newline at end of file diff --git a/Lua-Script/metatable/__add.lua b/Lua-Script/metatable/__add.lua new file mode 100644 index 0000000000000000000000000000000000000000..3e8270eee7542b6be41317388254d2b64fe9040b --- /dev/null +++ b/Lua-Script/metatable/__add.lua @@ -0,0 +1,40 @@ +<<<<<<< HEAD +======= +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/6/6 +-- Time: 8:57 +-- To change this template use File | Settings | File Templates. +-- +>>>>>>> 05e5321a6a0cc4d269c9c15fb03540a680c2a801 +--在 Lua 5.1 语言中,元表 (metatable) 的表现行为类似于 C++ 语言中的操作符重载,例如我们可以重载 "__add" 元方法 (metamethod),来计算两个 Lua 数组的并集;或者重载 "__index" 方法,来定义我们自己的 Hash 函数。Lua 提供了两个十分重要的用来处理元表的方法,如下: +--setmetatable(table, metatable):此方法用于为一个表设置元表。 +--getmetatable(table):此方法用于获取表的元表对象 + +------------------------------------------------------ 通过重载 "__add" 元方法来计算集合的并集实例: +local set1 = {10,20,30} +local set2 = {40,50,60} +-- 将用于重载__add的函数,注意第一个参数是self +local union = function (self, another) + local set = {} + local result = {} + + -- 利用数组来确保集合的互异性 + for i, j in pairs(self) do set[j] = true end + for i, j in pairs(another) do set[j] = true end + + -- 加入结果集合 + for i, j in pairs(set) do table.insert(result, i) end + return result +end +setmetatable(set1, {__add = union}) -- 重载 set1 表的 __add 元方法 + +local set3 = set1 + set2 +for _, j in pairs(set3) do + io.write(j.." ") -->output:30 50 20 40 10 +<<<<<<< HEAD +end +======= +end +>>>>>>> 05e5321a6a0cc4d269c9c15fb03540a680c2a801 diff --git a/Lua-Script/metatable/__index.lua b/Lua-Script/metatable/__index.lua new file mode 100644 index 0000000000000000000000000000000000000000..99daf48eb552b78e445b59a87e98b35aa458844c --- /dev/null +++ b/Lua-Script/metatable/__index.lua @@ -0,0 +1,28 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/23 +-- Time: 16:51 +-- To change this template use File | Settings | File Templates. +--[1] +--local other = { foo = 3 } +--t = setmetatable({}, { __index = other }) +--print(t.foo) -- 3 +--print(t.far) -- nil + +--[2] 如果__index包含一个函数的话,Lua就会调用那个函数,table和键会作为参数传递给函数 +--mytable = setmetatable({key1 = "value1"}, { +-- __index = function(mytable, key) +-- if key == "key2" then +-- return "metatablevalue" +-- else +-- return nil +-- end +-- end +--}) +-- +--print(mytable.key1,mytable.key2) +mytable = setmetatable({key1 = "value1"}, { __index = { key2 = "metatablevalue123" } }) +print(mytable.key1,mytable.key2) -- value1 metatablevalue123 + + diff --git a/Lua-Script/metatable/__newindex.lua b/Lua-Script/metatable/__newindex.lua new file mode 100644 index 0000000000000000000000000000000000000000..8ef4e965aff906a1f4cad7fc5563da76084264c2 --- /dev/null +++ b/Lua-Script/metatable/__newindex.lua @@ -0,0 +1,35 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/23 +-- Time: 16:57 +-- To change this template use File | Settings | File Templates. + +--__newindex 元方法用来对表更新,__index则用来对表访问 +--当你给表的一个缺少的索引赋值,解释器就会查找__newindex 元方法:如果存在则调用这个函数而不进行赋值操作 +--mymetatable = {} +--mytable = setmetatable({key1 = "Value1"}, {__newindex = mymetatable}) +-- +--print(mytable.key1) -- Value1 +-- +--mytable.newkey = 'New Value2' +--print(mytable.newkey,mymetatable.newkey) -- nil New Value2 +-- +--mytable.key1 = "新值1" +--print(mytable.key1,mymetatable.key1) -- 新值1 nil + +--以上实例中表设置了元方法 __newindex +--[1] 在对新索引键(newkey)赋值时(mytable.newkey = "新值2"),会调用元方法,而不进行赋值。 +--[2] 而如果对已存在的索引键(key1),则会进行赋值,而不调用元方法 __newindex + +-- 以下实例使用了 rawset 函数来更新表 +mytable = setmetatable({key1 = "value1"}, { __newindex = + function(mytable, key, value) + rawset(mytable, key, "\""..value.."\"") + end +}) + +mytable.key1 = "new value" +mytable.key2 = 4 + +print(mytable.key1,mytable.key2) diff --git a/Lua-Script/metatable/test.lua b/Lua-Script/metatable/test.lua new file mode 100644 index 0000000000000000000000000000000000000000..f640c8b12efa6484956f9a5bd6b0046b5591b4de --- /dev/null +++ b/Lua-Script/metatable/test.lua @@ -0,0 +1,17 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/22 +-- Time: 12:53 +-- To change this template use File | Settings | File Templates. +--- 普通表 +mytable = {} + +-- 元表 +mymetatable = {} + +-- 把 mymetatable 设为 mytable 的元表 以上代码也可以直接写成一行 mytable = setmetatable({},{}) +setmetatable(mytable,mymetatable) + +-- 这回返回mymetatable +getmetatable(mytable) \ No newline at end of file diff --git a/Lua-Script/oop/account.lua b/Lua-Script/oop/account.lua new file mode 100644 index 0000000000000000000000000000000000000000..312c2437f65cff2dfd78198ac5e85bc8a64fa3bc --- /dev/null +++ b/Lua-Script/oop/account.lua @@ -0,0 +1,32 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/24 +-- Time: 9:10 +-- To change this template use File | Settings | File Templates. +-- Lua 面向对象编程 那么LUA中的类可以通过table + function模拟出来 +local _M = {} +-- setmetatable(mytable,mymetatable) -- 把 mymetatable 设为 mytable 的元表 +local mt = { __index = _M } + +function _M.deposit (self, v) + self.balance = self.balance + v +end + +function _M.withdraw (self, v) + if self.balance > v then + self.balance = self.balance - v + else + error("insufficient funds") + end +end + +-- 那么LUA中的类可以通过table + function模拟出来 +function _M.new (self, balance) + balance = balance or 0 + return setmetatable({balance = balance}, mt) -- 把 mt 设为 balance 的元表,其中 mt 代表 { __index = _M } +end +--setmetatable 将 _M 作为新建表的原型,所以在自己的表内找不到 'deposit'、'withdraw' 这些方法和变量的时候,便会到 __index 所指定的 _M 类型中去寻找 + +return _M + diff --git a/Lua-Script/oop/account/account.lua b/Lua-Script/oop/account/account.lua new file mode 100644 index 0000000000000000000000000000000000000000..59b51e69ea0ae8eb6d8fe4354920bd23796f230e --- /dev/null +++ b/Lua-Script/oop/account/account.lua @@ -0,0 +1,28 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/6/6 +-- Time: 17:14 +-- To change this template use File | Settings | File Templates. +-- +local _M = {} + +local mt = { __index = _M } + +function _M.deposit (self, v) + self.balance = self.balance + v +end + +function _M.withdraw (self, v) + if self.balance > v then + self.balance = self.balance - v + else + error("insufficient funds") + end +end + +function _M.new (self, balance) + balance = balance or 0 + return setmetatable({balance = balance}, mt) +end + diff --git a/Lua-Script/oop/account_require.lua b/Lua-Script/oop/account_require.lua new file mode 100644 index 0000000000000000000000000000000000000000..024dbab7cadfea4003642d5cfe44a09014b9426e --- /dev/null +++ b/Lua-Script/oop/account_require.lua @@ -0,0 +1,18 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/24 +-- Time: 9:18 +-- To change this template use File | Settings | File Templates. +-- +local account = require "account" + +local a = account:new() +a:deposit(100) + +local b = account:new() +b:deposit(50) + +print(a.balance) --> output: 100 +print(b.balance) --> output: 50 + diff --git a/Lua-Script/oop/class01.lua b/Lua-Script/oop/class01.lua new file mode 100644 index 0000000000000000000000000000000000000000..8e39d133200b86d9e4d0de751c5d221779a58e46 --- /dev/null +++ b/Lua-Script/oop/class01.lua @@ -0,0 +1,29 @@ +-- +local Sharp = { _val = 1 } --① 父类 + +function Sharp:new() + local new_sharp = {} + self.__index = self --②,self == Sharp Sharp.__index = Sharp 等价于 Sharp.__index = function(key) return Sharp[key] end + setmetatable(new_sharp, self) + return new_sharp +end + +-- define fun1 +function Sharp:sharp_func() + print("Sharp call sharp_func") +end + +-- define fun2 +function Sharp:name() + print("Sharp call name") +end + +-- define fun3 +function Sharp:val() + print(string.format("Sharp call val %d", self._val)) +end + +local sharp = Sharp:new() +sharp:sharp_func() +sharp:name() +sharp:val() \ No newline at end of file diff --git a/Lua-Script/oop/class02.lua b/Lua-Script/oop/class02.lua new file mode 100644 index 0000000000000000000000000000000000000000..b5dc5ff1b2ada40060e4900e573ec737d9157ee3 --- /dev/null +++ b/Lua-Script/oop/class02.lua @@ -0,0 +1,61 @@ +-- 类的继承 +local Sharp = { _val = 1 } --① 父类 + +function Sharp:new() + local new_sharp = {} + self.__index = self --②,self == Sharp Sharp.__index = Sharp 等价于 Sharp.__index = function(key) return Sharp[key] end + setmetatable(new_sharp, self) + return new_sharp +end + +-- define fun1 +function Sharp:sharp_func() + print("Sharp call sharp_func") +end + +-- define fun2 +function Sharp:name() + print("Sharp call name") +end + +-- define fun3 +function Sharp:val() + print(string.format("Sharp call val %d", self._val)) +end + +Circle = Sharp:new() --① 子类 +function Circle:new() + local new_circle = {} + self.__index = self --②,self == Circle + setmetatable(new_circle, self) --③ + + return new_circle +end + +--新函数 +function Circle:circle_func() + print("Circle call circle_func") +end + +--覆盖函数name +function Circle:name() + print("Circle call name") +end + +--覆盖函数val +function Circle:val() + print(string.format("Circle call val %d", self._val)) +end + +local circle = Circle:new() +circle._val = 2 --覆盖赋值 +circle:sharp_func() --调用父类函数 +circle:circle_func() --调用新函数 +circle:name() --调用覆盖函数 +circle:val() --调用覆盖函数 + +--输出结果 +--Sharp call sharp_func +--Circle call circle_func +--Circle call name +--Circle call val 2 \ No newline at end of file diff --git a/Lua-Script/oop/class03.lua b/Lua-Script/oop/class03.lua new file mode 100644 index 0000000000000000000000000000000000000000..61d6499f24570af2c4b0881279fffae6b4103ee1 --- /dev/null +++ b/Lua-Script/oop/class03.lua @@ -0,0 +1,71 @@ +-- 类的继承 +local Sharp = { _val = 1 } --① 父类 + +function Sharp:new() + local new_sharp = {} + self.__index = self --②,self == Sharp Sharp.__index = Sharp 等价于 Sharp.__index = function(key) return Sharp[key] end + setmetatable(new_sharp, self) + return new_sharp +end + +-- define fun1 +function Sharp:sharp_func() + print("Sharp call sharp_func") +end + +-- define fun2 +function Sharp:name() + print("Sharp call name") +end + +-- define fun3 +function Sharp:val() + print(string.format("Sharp call val %d", self._val)) +end + +Circle = Sharp:new() --① 子类 +function Circle:new() + local new_circle = {} + self.__index = self --②,self == Circle + setmetatable(new_circle, self) --③ + + return new_circle +end + +--新函数 +function Circle:circle_func() + print("Circle call circle_func") +end + +--覆盖函数name +function Circle:name() + print("Circle call name") +end + +--覆盖函数val +function Circle:val() + print(string.format("Circle call val %d", self._val)) +end + +--输出结果 +--Sharp call sharp_func +--Circle call circle_func +--Circle call name +--Circle call val 2 + +--调用父类被子类覆盖了的name方法 +function Circle:sharp_name() + local circle_metatable = getmetatable(self) +-- local sharp_metatable = getmetatable(circle_metatable) +-- sharp_metatable["name"]() + print(circle_metatable) +end + +local circle1 = Circle:new() +circle1.name() +circle1.sharp_name() +-- circle._val = 2 --覆盖赋值 +-- circle:sharp_func() --调用父类函数 +-- circle:circle_func() --调用新函数 +-- circle:name() --调用覆盖函数 +-- circle:val() --调用覆盖函数 \ No newline at end of file diff --git a/Lua-Script/oop/oop1.lua b/Lua-Script/oop/oop1.lua new file mode 100644 index 0000000000000000000000000000000000000000..b5311c4ddb2af3e84bd5bfd827a28faa7ebe4d82 --- /dev/null +++ b/Lua-Script/oop/oop1.lua @@ -0,0 +1,41 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/23 +-- Time: 17:12 +-- To change this template use File | Settings | File Templates. +-- 那么LUA中的类可以通过table + function模拟出来 + +-- Meta class +Shape = { area = 0 } + +-- 基础类方法 new +function Shape:new(o, side) + o = o or {} + setmetatable(o, self) -- self其实就相当于Java,C++中的this对象 + self.__index = self + side = side or 0 + self.area = side * side; + return o +end + +-- 基础类方法 printArea +function Shape:printArea() + print("面积为 ", self.area) +end + +-- 创建对象 +myshape = Shape:new(nil, 10) + +-- 对象实例去访问该类的方法 +myshape:printArea() + +--setmetatable(table,metatable): 对指定table设置元表(metatable) + +function _M.new(self) + local sock, err = tcp() + if not sock then + return nil, err + end + return setmetatable({ sock = sock }, mt) +end \ No newline at end of file diff --git a/Lua-Script/oop/oop3.lua b/Lua-Script/oop/oop3.lua new file mode 100644 index 0000000000000000000000000000000000000000..27e58fd67ab4cb409cf36ccf9ec6395e0a70f414 --- /dev/null +++ b/Lua-Script/oop/oop3.lua @@ -0,0 +1,127 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/25 +-- Time: 17:02 +-- To change this template use File | Settings | File Templates. +-- +----------------------------------------------------------- Lua面向对象1 +-- local mt = {} +-- mt.__add = function(t1, t2) +-- print("两个Table 相加的时候会调用我") +-- end +-- local t1 = {} +-- local t2 = {} +--- - 给两个table 设置新的元表,一个元表就是一个table的值 +-- setmetatable(t1, mt) -- meta:元素 +-- setmetatable(t2, mt) +---- 进行相加操作 +-- local t = t1 + t2 +-- print(t) + +--[[输出结果 +两个Table 相加的时候会调用我 +nil +--]] + +----------------------------------------------------------- Lua面向对象2 +-- 创建一个元表 (是创建一个类吗?) +local mt = {} +mt.__add = function(s1, s2) + local result = "" + if s1.sex == "boy" and s2.sex == "girl" then + result = "一个男孩和一个女孩的家庭" + elseif s1.sex == "girl" and s2.sex == "girl" then + result = "两个女孩的家庭" + else + result = "未知孩子的家庭" + end + return result +end +-- 创建两个table,可以想象成是两个类的对象(实例化两个类) +local s1 = { name = "Per1", sex = "boy" } +local s2 = { name = "Per2", sex = "girl" } +-- 给两个table 设置新的元表,一个元表就是一个table的值 +setmetatable(s1, mt) +setmetatable(s2, mt) +-- 进行加法操作 +local result = s1 + s2 +print(result) -- 一个男孩和一个女孩的家庭 + +----------------------------------------------------------- Lua面向对象2 +local t = { + name = "Tinywan" +} +local mt = { + __index = function(table, key) + print("虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来" .. key) + end +} +setmetatable(t, mt) +print(t.name) +print(t.age) +--[[输出结果 +-- Tinywan +-- 虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来age +-- nil +---- ]] + +----------------------------------------------------------- Lua面向对象2 +local t = { + name = "Tinywan" +} +local mt = { + money = 808080 +} + +mt.__index = mt +setmetatable(t, mt) +print(t.money) +-- 输出结果 808080 + +------------------------------------------------------------- Lua面向对象2 +local t = { + name = "Tinywan" +} +local mt = { + __index = { + money = 909090 + } +} +setmetatable(t, mt) +print(t.money) +-- 输出结果 909090 + +----------------------------------------------------------- Lua面向对象2 +local smartMan = { + name = "Tinywan", + age = 26, + money = 800000, + say_fun = function() + print("Tinywan say 大家好") + end +} + +local t1 = {} +local t2 = {} +local mt = { __index = smartMan } -- __index 可以是一个函数,也可以是一个函数 +setmetatable(t1, mt) +setmetatable(t2, mt) +print(t1.money) +t2.say_fun() +--- 输出结果 +-- 800000 +-- Tinywan say 大家好 + + + + + + + + + + + + + diff --git a/Lua-Script/oop/oop4.lua b/Lua-Script/oop/oop4.lua new file mode 100644 index 0000000000000000000000000000000000000000..2ca29eefb56d212063e538c2457336b95c03e1fa --- /dev/null +++ b/Lua-Script/oop/oop4.lua @@ -0,0 +1,115 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/25 +-- Time: 17:02 +-- To change this template use File | Settings | File Templates. +----------------------------------------------------------- Lua面向对象2 +-- local smartMan = { +-- name = "Tinywan", +-- age = 26, +-- money = 800000, +-- sayHello = function() +-- print("Tinywan say 大家好") +-- end +-- } +-- local t1 = {} +-- local mt = { +-- __index = smartMan, +-- __newindex = function(table, key, value) +-- print(key .. "字段不存在不要试图给他赋值") +-- end +-- } +-- setmetatable(t1, mt) +-- t1.sayHello = function() +-- print("HAHA") +-- end +-- t1.sayHello() +----- 输出结果 +---- sayHello字段不存在不要试图给他赋值 +---- Tinywan say 大家好 + +----------------------------------------------------------- Lua面向对象3 +-- local smartMan = { +-- name = "none" +-- } +-- local other = { +-- name = "大家好,我是无赖的table" +-- } +-- local t1 = {} +-- local mt = { +-- __index = smartMan, +-- __newindex = other +-- } +-- setmetatable(t1, mt) +-- print("other的名字,赋值前:" .. other.name) +-- t1.name = "峨眉大侠" +-- print("other的名字,赋值后:" .. other.name) +-- print("t1 的名字:" .. t1.name) +----- 输出结果 +---- other的名字,赋值前:大家好,我是无赖的table +---- other的名字,赋值后:峨眉大侠 +---- t1 的名字:none + +----------------------------------------------------------- Lua面向对象3 +a = 'fdfd' +for n in pairs(_G) do + print(n) -- 打印全局的函数和变量 +end + +--输出结果 +--coroutine +--assert +--tostring +--tonumber +--io +--rawget +--xpcall +--arg +--ipairs +--print +--pcall +--gcinfo +--module +--setfenv +--getfenv +--pairs +--jit +--bit +--package +--error +--debug +--loadfile +--rawequal +--loadstring +--rawset +--unpack +--table +--require +--_VERSION +--newproxy +--collectgarbage +--dofile +--next +--math +--load +--os +--_G +--select +--string +--type +--getmetatable +--a (自己定义的也出来了) +--setmetatable + + + + + + + + + + + + diff --git a/Lua-Script/oop/opp2.lua b/Lua-Script/oop/opp2.lua new file mode 100644 index 0000000000000000000000000000000000000000..ee91c01ce8ae48a49de097d2e686ee8a2d2946e5 --- /dev/null +++ b/Lua-Script/oop/opp2.lua @@ -0,0 +1,27 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/5/23 +-- Time: 17:29 +-- To change this template use File | Settings | File Templates. +-- +--local a = {} -- 普通表 +--local b = {k = 11} -- 元表 +--setmetatable(a,b) -- 把 b 设为 a 的元表 +--print(a.k) -- nil +--b.__index = b --设置元方法 +--b.v = 22 --给b表增加一个属性 +--a.aa = 33 --给a表增加一个属性 +--print(a.k) --11,因为a有元表b,且存在元方法,可以索引到b表中对应的值 +--print(a.v) --22,设定关系后,b增加的属性,a也可以索引到 +--print(b.aa) --nil,相反,b并不可以索引到a的值 + +local a = {} -- 普通表 +local b = {k = 11} -- 元表 +setmetatable(a,{__index = b } ) +print(a.k) +b.v = 1020 +a.aa = 3030 +print(a.v) --22,设定关系后,b增加的属性,a也可以索引到 +print(a.aa) --nil,相反,b并不可以索引到a的值 + diff --git a/Lua-Script/oop/self__index.md b/Lua-Script/oop/self__index.md new file mode 100644 index 0000000000000000000000000000000000000000..ff3540385be15c90e86d55e0e23ac24425f756e1 --- /dev/null +++ b/Lua-Script/oop/self__index.md @@ -0,0 +1,16 @@ +## lua中self.__index = self是什么意思? ++ 设置原表语法:`setmetatable(table,metatable): 对指定table设置元表(metatable)` ++ [http://www.cnblogs.com/mentalidade/p/6561418.html](http://www.cnblogs.com/mentalidade/p/6561418.html) ++ 当一个表存在元表的时候可能会发生改变。lua当发现一个不存在的key时,如果这个table存在元表,则会尝试在元表中寻找是否有匹配key对应的value + ```lua + local a = {} -- 普通表 + local b = {k = 11} -- 元表 + setmetatable(a,b) -- 把 b 设为 a 的元表 + b.__index = b --设置元方法 + b.v = 22 --给b表增加一个属性 + a.aa = 33 --给a表增加一个属性 + print(a.k) --11,因为a有元表b,且存在元方法,可以索引到b表中对应的值 + print(a.v) --22,设定关系后,b增加的属性,a也可以索引到 + print(b.aa) --nil,相反,b并不可以索引到a的值 + + ``` \ No newline at end of file diff --git a/Lua-Script/oop/self_class01.lua b/Lua-Script/oop/self_class01.lua new file mode 100644 index 0000000000000000000000000000000000000000..ecd13728eeed56d3452d0e5a1c94a09e87d9b008 --- /dev/null +++ b/Lua-Script/oop/self_class01.lua @@ -0,0 +1,32 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/6/6 +-- Time: 9:47 +-- To change this template use File | Settings | File Templates. +-- 自己尝试着写一个类哦 + +-- +local ok, new_tab = pcall(require, "table.new") +if not ok or type(new_tab) ~= "function" then + new_tab = function (narr, nrec) return {} end +end + +local _M = new_tab(0, 54) --① 父类 + +_M._VERSION = '0.01' + +function _M:new() + local new_obj = {} + self.__index = self --②,self == _M + setmetatable(new_obj, self) + return new_obj +end + +-- 定义个简单的方法 +function _M:func() + print("Function func ") +end + +return _M + diff --git a/Lua-Script/oop/self_class02.lua b/Lua-Script/oop/self_class02.lua new file mode 100644 index 0000000000000000000000000000000000000000..79b86bb2c6a79d87ecbd40d2334b331d74f1c8f3 --- /dev/null +++ b/Lua-Script/oop/self_class02.lua @@ -0,0 +1,12 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/6/6 +-- Time: 9:49 +-- To change this template use File | Settings | File Templates. +-- +local class01 = require "self_class01" +print("_VERSION == "..class01._VERSION) +local func = class01:func() +print(func) + diff --git a/Lua-Script/sort/selectionSort.lua b/Lua-Script/sort/selectionSort.lua new file mode 100644 index 0000000000000000000000000000000000000000..da5eac456c2085a2d977aeba8cb56a1ef047c28e --- /dev/null +++ b/Lua-Script/sort/selectionSort.lua @@ -0,0 +1,34 @@ +-- +-- Created by IntelliJ IDEA. +-- User: Administrator +-- Date: 2017/6/14 +-- Time: 10:08 +-- To change this template use File | Settings | File Templates. +--首先在未排序序列中找到最小元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 +local function selectionSort(arr) + for i = 1,#arr-1 do + local idx = i + -- 迭代剩下的元素,寻找最小的元素 + for j = i+1,#arr do + if arr[j] < arr[idx] then + idx = j + end + end + -- + arr[i],arr[idx]= arr[idx],arr[i] + end +end + +local list = { + -81, -93, -36.85, -53, -31, 79, 45.94, 36, 94, -95.03, 11, 56, 23, -39, + 14, 1, -20.1, -21, 91, 31, 91, -23, 36.5, 44, 82, -30, 51, 96, 64, -41 +} + +selectionSort(list) +print(table.concat( list, ", ")) +print(#list) +for i = 1 ,#list do + print(i) +end + + diff --git a/Lua-Script/string/lua04.lua b/Lua-Script/string/lua04.lua new file mode 100644 index 0000000000000000000000000000000000000000..71b89139a04e4b0977f92f049046e0cb55b04664 --- /dev/null +++ b/Lua-Script/string/lua04.lua @@ -0,0 +1,103 @@ +-- +-- Created by IntelliJ IDEA. +-- User: tinywan +-- Date: 2017/5/31 +-- Time: 20:42 +-- To change this template use File | Settings | File Templates. +-- +--config = {host = '127.0.0.1',port = '3306', dbname = 'LuaDB' } +--config.redis_host = "192.168.1.1" +--config.redis_port = "6379" +--config.redis_db = "12" +--print(config['redis_host']) -- 192.168.1.1 +--print(config.redis_port) -- 6379 +--print(config.dbname) -- LuaDB +-- +--for k, v in pairs(config) do +-- print(k,v) +--end +-- +----[[ +--host 127.0.0.1 +--dbname LuaDB +--redis_host 192.168.1.1 +--redis_db 12 +--redis_port 6379 +--port 3306 +---- ]] +--arr = {} +--for var = 1,100 do -- for 循环 +-- table.insert(arr,1,var) +--end +-- +--for k, v in pairs(arr) do -- 遍历表 +-- print(k,v) +--end +----[[ +--1 100 +--2 99 +--... ... +--99 2 +--100 1 +-- +---- ]] +--print(table.maxn(arr)) -- table长度 100 +--print(#arr) -- table长度(快捷方式) 100 + +--arr = {host = '127.0.0.1',port = '3306','Tinywan'} +---- 如果没有找到下标为整数的则直接退出,是整数的则直接输出,如上面的'Tinywan' +--for k, v in ipairs(arr) do -- 只能遍历key 为整数的下标 +-- print(k,v) -- 1 Tinywan +-- end + +--function count() +-- -- i属于一个非局部变量,因为它既不是全局变量,也不是单纯的局部变量(因为另外一个函数可以访问到它) +-- local i = 0 +-- return function() +-- i =i +1 +-- return i +-- end +--end +---- 以上 count()函数里的那个函数,加上一个非全局变量i,就构成一个闭合函数 +---- 所以每次调用闭合函数,非局部变量的值都不会被重置 +--local func = count() +--print(func()) -- 1 +--print(func()) -- 2 + +--local eat +--local drink +--eat = function() +-- print("eat") +-- return drink() -- 这里的drink()属于尾调用,游戏角色的状态切换 +--end +--drink = function() +-- print("drink") +--end +--eat() +--local name = "Lua1" +--if name ~= "Lua" +--then +-- error("[error] this is not Lua"); +--end +--assert(name~="Lua"," this is not Lua") + +function test() + print(a[1]) +end + +-- pcall 除了会返回true或者false外,还能返回函数的错误信息。如果没有错误信息,err 会返回一个nil +local status,err = pcall(test) +if status then + print('success') +else + print('函数执行出错了') + print('错误信息:',err) +end + + + + + + + + diff --git a/Lua-Script/string/string1.lua b/Lua-Script/string/string1.lua new file mode 100644 index 0000000000000000000000000000000000000000..82a43ecc0842b897440e84323b284a4ffb75a9cb --- /dev/null +++ b/Lua-Script/string/string1.lua @@ -0,0 +1,83 @@ +-- +-- Created by IntelliJ IDEA. +-- User: tinywan +-- Date: 2017/5/27 +-- Time: 22:33 +-- To change this template use File | Settings | File Templates. +-- +--a = 'one HELLO' +--b = string.gsub(a,'one','two') +--print(a) -- one HELLO +--print(b) -- two HELLO + +--print("10" + 1) -- 11 +--print("10" + "1") -- 11 +--print("10 + 1") -- 10 + 1 +--print("hello " .. " world") -- hello world +--- -print("hello" + 1) -- 错误写法 + +--a = 10 +--print(tostring(a)) -- 10 +--b = "20" +--print(tonumber(b)) -- "20" +-- +--print(tostring(10) == "10") -- true +--print(10 .. "" == "10") -- true + +-- a and b -- 如果a为false,则返回a ,否则返回b +-- a or b -- 如果a为true,则返回a ,否则返回b +--print(4 and 5) -- 5 +--print(nil and 12 ) -- nill +--print(false and 12) -- false +--print(4 or 5) -- 4 +--print(false or 5) -- 5 +--x = 20 +--y = 30 +--x,y = y,x +--print(x,y) -- 30 20 + +--a,b,c = 10,20 +--print(a,b,c) --10 20 nil +-- +--x,y,z = 10 +--print(x,y,z) -- 10 nil nil +--a = 12 +--if a>10 then +-- local i = 19 +-- print(i) -- 19 +--end +--print(i) -- nil + +--members = { Tom = 10, Jake = 11, Dodo = 12, Jhon = 16 } +-- +--for k, v in pairs(members) do +-- if v == 10 then +-- print(k, 'is 10 years old') +-- elseif v == 11 then +-- print(k, 'is 11 years old') +-- elseif v == 12 then +-- print(k, 'is 12 years old') +-- else +-- print(k, "is not 10,11,12 years old") +-- end +--end + +--function more() +-- return 10 , 20 ,30 +--end +---- 当函数位于最后一位的时候,返回全部值,否则值返回一个数值 +--a , b , c ,d = 100, more() +--print(a,b,c,d) -- 100 10 20 30 +a = {} +a.x = 100 +a.y = 200 +a["z"] = 300 -- a.z = 300 +print(a.x) -- 100 +print(a.y) -- 200 +print(a.z) -- 300 + + + + + + diff --git a/Nginx-Develop/command-order-01.md b/Nginx-Develop/command-order-01.md index 6241daed4b95862fcb430354e30316a19e96a21e..d2d876a27d88719b4fc91cf15b84ea4e8e9b058d 100644 --- a/Nginx-Develop/command-order-01.md +++ b/Nginx-Develop/command-order-01.md @@ -23,4 +23,129 @@ echo $a; echo $a; ``` - + 两个命令 设置在执行阶段`rewrite`,两个命令 回声在随后阶段执行`content`。不同阶段的命令无法执行。 \ No newline at end of file + + 两个命令 设置在执行阶段`rewrite`,两个命令 回声在随后阶段执行`content`。不同阶段的命令无法执行。 + ++ Lua 脚本变量 ` ngx.var.remote_addr` = Nginx的的内建变量 ` $REMOTE_ADDR` +## Nginx指令执行命令(05) ++ 多个命令的执行顺序 + + 顺序: ` rewrite phase `=> `access phase` => `content phase` + ``` + location /test_rewrite_access_content { + # rewrite phase + set $age 1; + rewrite_by_lua_block { + ngx.var.age = ngx.var.age + 1 + } + + # access phase + deny 10.32.168.49; + access_by_lua_block { + ngx.var.age = ngx.var.age * 3 + } + + #content phase + echo "age = $age"; + } + ``` + + 测试结果 + ``` + # curl http://127.0.0.2:8008/test_rewrite_access_content + age = 6 + + ``` + + 执行顺序结论 + > [1] 由ngx_rewrite模块 实现的命令 集同步执行rewrite。模块 ngx_lua的命令 rewrite_by_lua在阶段结束时执行 + + > [2] 模块 ngx_access的命令被 拒绝同步执行。模块 ngx_lua的命令 access_by_lua在阶段结束时执行。 + + > [3] 最后,我们最喜欢的命令 echo,由ngx_echo模块实现 ,执行阶段。 + + > [4] 最后的执行顺序:rewrite access access content + + + 命令` set `集和命令 `rewrite_by_lua ` 都属于阶段 `rewrite` + + 命令` deny `集和命令 `access_by_lua ` 都属于阶段 `access` + + 命令` set `集和命令 `rewrite_by_lua ` 都属于阶段 `rewrite` ++ 下面的这样写是错误的 XXXXXXXXXX + + 错误写法????? + ``` + ? location /test { + ? content_by_lua 'ngx.say("hello")'; + ? content_by_lua 'ngx.say("world")'; + ? } + ``` + + 不是每个模块都支持在一个内部执行多次命令location。命令 content_by_lua为一个实例,只能使用一次 + + 正确写法 + ``` + location /test { + content_by_lua 'ngx.say("hello") ngx.say("world")'; + } + ``` + + 而不是使用content_by_lua两次 命令location,方法是在Lua代码中调用函数 ngx.say两次,该代码由命令content_by_lua执行 ++ 模块 ngx_proxy的命令 proxy_pass不能与一个中的命令echo共存, 因为它们都在同步执行 + + 错误写法!!!!!!!!! + ``` + ? location /test { + ? echo "before..."; + ? proxy_pass http://127.0.0.1:8080/foo; + ? echo "after..."; + ? } + ? + ? location /foo { + ? echo "contents to be proxied"; + ? } + ``` + + 测试结果 + ``` + $ curl 'http://localhost:8080/test' + contents to be proxied + ``` + + 结论:该示例尝试在模块ngx_proxy返回其内容之前和之后 输出字符串"before..."和"after..."命令 echo。但是只有一个模块可以执行。测试表明模块 ngx_proxy获胜并且命令 echo来自模块 ngx_echo永远不会运行 content + + 为了实现这个例子想要的,我们将使用模块ngx_echo, echo_before_body和 echo_after_body提供的另外两个命令 + ``` + location /test { + echo_before_body "before..."; + proxy_pass http://127.0.0.1:8080/foo; + echo_after_body "after..."; + } + + location /foo { + echo "contents to be proxied"; + } + ``` ++ 反向代理:可以看出反向代理前和反向代理后的结果 + + 案例 + ``` + location /echo_test { + echo_before_body "before..."; + proxy_pass http://127.0.0.1:8008/tinywan; + echo_after_body "after..."; + } + location /tinywan { + echo "contents to be proxied"; + } + + ``` + + 测试结果 + ``` + root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.2:8008/echo_test + before... + contents to be proxied + after... + ``` + + 命令echo_before_body和 echo_after_body可以与其他模块同步共存的原因 content是,它们不是Nginx的“内容处理程序”,而是“输出过滤器” +## Nginx指令执行命令(06) ++ 当一个命令在 ` content ` 一个特定的阶段执行时 ` location `,通常意味着它的Nginx模块注册了一个 ` 内容处理程序 (content handler)` ++ 没有模块将其命令注册为“内容处理程序”时候,将获得产生内容和产出回应是静态资源模块,它将请求URI映射到文件系统。只有当没有“内容处理程序”时,静态资源模块才会发挥作用,否则它将“责任”移交给“内容处理程序” ++ Nginx有三个静态资源模块用于该content阶段( 按照执行顺序排列 ) + + (1) `ngx_index` 模块 + + (2) `ngx_autoindex` 模块 + + (3) ` ngx_static ` 模块 ++ ngx_index和 ngx_autoindex模块 仅适用于那些以URI为结尾的请求URI /。对于不以其他方式结束的其他请求URI /,两个模块都将忽略它们,并让以下content阶段模块处理。ngx_static然而,模块具有完全相反的策略。它忽略结束的请求URI /并处理其余的 ++ 模块 ngx_index主要查找特定的主页文件,如文件系统index.html或index.htm文件系统 + ``` + location / { + root /var/www/; + index index.htm index.html; + } + ``` + + 当地址 `/ ` 请求,Nginx的查找文件 ` index.htm `,并 `index.html` 在文件系统中的路径(按照这个顺序)。路径由命令 根目录指定。如果文件 `index.htm` 存在,Nginx内部跳转到位置 `index.htm`; 如果不存在并且文件 ` index.html` 存在,Nginx将内部跳转到位置`index.html`。如果文件 `index.html` 不存在,并且处理转移到同步执行命令的其他模块 `content` \ No newline at end of file diff --git a/Nginx-Rtmp/HLS-live-vod-locatiuon-config.md b/Nginx-Rtmp/HLS-live-vod-locatiuon-config.md new file mode 100644 index 0000000000000000000000000000000000000000..c04992cca0a6c92f35346da912dda8b9e6c8c032 --- /dev/null +++ b/Nginx-Rtmp/HLS-live-vod-locatiuon-config.md @@ -0,0 +1,61 @@ +### HLS视频直播和点播的Nginx的Location的配置信息 + ++ 配置信息 + ``` + http { + include mime.types; + default_type application/octet-stream; + server { + listen 80; + server_name 127.0.0.1; + root /home/tinywan; + error_log logs/rewrite_error.log notice; + + # HLS Live + location ^~ /live/ { + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + add_header 'Access-Control-Allow-Headers' 'Range'; + + types{ + application/dash+xml mpd; + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + root /home/tinywan/HLS; + } + + # History Video m3u8&mp4 + location ^~ /video_recordings/ { + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + add_header 'Access-Control-Allow-Headers' 'Range'; + + types{ + application/dash+xml mpd; + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + alias /home/tinywan/video_recordings/; + } + + } + } + ``` ++ 直播 + + OBS推流地址:`rtmp://192.168.18.143/live/tinywan123` + + RTMP直播地址:`rtmp://192.168.18.143/live/tinywan123` + + HLS直播:`http://192.168.18.143/live/tinywan123/index.m3u8` + + OBS推流地址:`rtmp://192.168.18.143/live/tinywan123` ++ 点播 + + MP4点播: `rtmp://192.168.18.143/vod/tinywan123-149190255220170411172232.mp4` ++ 回顾 + + HLS回顾地址: `http://192.168.18.143/video_recordings/tinywan123-149179459020170410112310/index.m3u8` + + MP4回顾地址: `http://192.168.18.143/video_recordings/tinywan123-149179459020170410112310.mp4` ++ 流媒体信息 + + 在线人数:`http://192.168.18.143/nclients?app=live&name=stream123456` + + RTMP流基本信息:`http://192.168.18.143/stat` \ No newline at end of file diff --git a/Nginx-Rtmp/HLS-live-vod.md b/Nginx-Rtmp/HLS-live-vod.md new file mode 100644 index 0000000000000000000000000000000000000000..d0b22707931a04942d1b3966fdb72a849f87a1da --- /dev/null +++ b/Nginx-Rtmp/HLS-live-vod.md @@ -0,0 +1,220 @@ +### Nginx配置Rtmp支持Hls的直播和点播功能 +>[参考网址:https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video](https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video) + +>配置信息 +``` +worker_processes 1; +error_log logs/error.log debug; +events { + worker_connections 1024; +} +rtmp { + server { + listen 1935; + allow play all; + notify_method get; + + #creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments + application live { + allow play all; + live on; + on_publish http://example.com/openapi/on_publish_done; # 设置开始推流的回调 + record all; + record_path /home/tinywan/video_recordings; + record_unique on; + on_record_done http://example.com/recorded; # 设置录像结束的回调 + hls on; + hls_nested on; + hls_path /HLS/live; + hls_fragment 10s; + on_publish_done http://example.com/on_publish_done; # 设置开始推流的回调 + + #creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video + exec ffmpeg -i rtmp://192.168.254.178:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.254.178:1935/mobile/$; + } + + #creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments + application mobile { + allow play all; + live on; + hls on; + hls_nested on; + hls_path /home/tinywan/HLS/mobile; + hls_fragment 10s; + } + + #allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv" + application vod { + play /home/tinywan/video_recordings; + } + } +} + + +http { + include mime.types; + default_type application/octet-stream; + + server { + listen 80; + server_name 192.168.254.178; + + #creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8" + location /live { + types { + application/vnd.apple.mpegurl m3u8; + } + alias /home/tinywan/HLS/live; + add_header Cache-Control no-cache; + } + + #creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8" + location /mobile { + types { + application/vnd.apple.mpegurl m3u8; + } + alias /home/tinywan/HLS/mobile; + add_header Cache-Control no-cache; + } + + #allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats" + location /stats { + stub_status; + } + + #allows us to host some webpages which can show our videos: "http://my-ip/my-page.html" + location / { + root html; + index index.html index.htm; + } + } +} +``` +## 播放测试结果 ++ M3U8播放 + ``` + http://192.168.18.151/live/123456/index.m3u8 + ``` ++ RTMP播放 + ``` + rtmp://192.168.18.151/live/123456 + ``` ++ 点播播放 + ``` + rtmp://192.168.18.151/vod/123456-1490768694.flv + ``` + # m3u8: +## 统计 ++ 使用Nginx统计信息(使用Nginx stub_status)。要查看访客/观众统计资料 + + 浏览器测试 + ``` + http://192.168.18.151/stats + ``` + + 结果信息 + ``` + Active connections: 1 + server accepts handled requests + 274 274 108 + Reading: 0 Writing: 1 Waiting: 0 + ``` +## 回调信息 ++ on_publish + + 上下文:rtmp, server, application + + 返回参数参考 + ``` + $action = $_GET['call']; -- publish + $appName = $_GET['app']; -- live + $swfurl = $_GET['swfurl']; -- http://123213.com/lib/jwplayer/jwplayer.flash.swf + $tcurl = $_GET['tcurl']; -- rtmp://11.26.11.11/live/ + $ip = $_GET['addr']; -- 客户端IP地址 + $clientid = $_GET['clientid']; -- 871696 + $streamName = $_GET['name']; -- stream123 + ``` ++ on_publish_done + + 上下文:rtmp, server, application + + 返回参数参考 + ``` + $action = $_GET['call']; -- on_publish_done + $appName = $_GET['app']; + $swfurl = $_GET['swfurl']; + $tcurl = $_GET['tcurl']; + $ip = $_GET['addr']; + $clientid = $_GET['clientid']; + $streamName = $_GET['name']; + ``` ++ on_record_done (on_record_done http://my-ip/api/recordDone;) + + 上下文:rtmp, server, application, recorder + + 返回参数参考 + ``` + 'app' => string 'live' (length=4) + 'flashver' => string 'FMLE/3.0 (compatible; Lavf56.3.' (length=31) + 'swfurl' => string '' (length=0) + 'tcurl' => string 'rtmp://10.117.19.148:1935/live' (length=30) + 'pageurl' => string '' (length=0) + 'addr' => string '192.168.18.151/' (length=13) + 'clientid' => string '1' (length=1) + 'call' => string 'record_done' (length=11) -- 录像事件状态 + 'recorder' => string 'rec1' (length=4) -- 录像模块名称 + 'name' => string '123456' (length=13) -- 推流名称 + 'path' => string '/home/tinywan/video_recordings/123456-1482801335.flv' -- 录像路径 + ``` + + RTMP配置信息,在这里,定义了一个录像模块,这样的话不会自动录像 + ``` + rtmp { + server { + listen 1935; + ping 30s; + notify_method get; + application live { + live on; + on_record_done http://my-ip/api/recordDone; -- 以上配置在这里个回调里面的地址 + recorder rec1 { + record all manual; + record_unique on; + record_notify on; + record_path /data/recorded_flvs; + exec_record_done /home/www/bin/rtmpRecordedNotify.sh $name $path $filename $basename $dirname; + } + } + } + ``` + ++ on_connect + + 上下文:rtmp, server + + 返回参数参考 + ``` + 'app' => string 'live' (length=4) + 'flashver' => string '' (length=0) + 'swfurl' => string '' (length=0) + 'tcurl' => string 'rtmp://192.168.18.151/live' (length=25) + 'pageurl' => string '' (length=0) + 'addr' => string '10.117.64.209' (length=13) + 'epoch' => string '582057759' (length=9) + 'call' => string 'connect' (length=7) + ``` + ++ 实际案例 (Web页面和Mobile手机流转换) + ``` + rtmp { + server { + listen 1935; + application live { + live on; + exec ffmpeg -i rtmp://localhost/live/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://localhost/mobile/$name; + } + + application mobile { + allow play all; + live on; + hls on; + hls_nested on; + hls_path /home/tinywan/HLS/mobile; + hls_fragment 10s; + } + } + } + ``` + +>实际案例 2 + +>实际案例 3 \ No newline at end of file diff --git a/Nginx-Rtmp/Openresty_rtmp_obs_push.md b/Nginx-Rtmp/Openresty_rtmp_obs_push.md new file mode 100644 index 0000000000000000000000000000000000000000..70ba3d3334f85a5900cd50cfe4428a991f72a1df --- /dev/null +++ b/Nginx-Rtmp/Openresty_rtmp_obs_push.md @@ -0,0 +1,85 @@ +## Openresty_rtmp_obs_push.md + +#### nginx.conf +```lua + # rtmp auth_key + location /rtmp_redirect_lua { + lua_code_cache off; + access_by_lua_file /opt/openresty/nginx/conf/lua/rtmp_auth_key.lua; + } +``` + +#### rtmp_auth_key.lua 文件 +```lua +local cjson = require "cjson" +local redis = require("resty.redis_iresty") +local var = ngx.var +local client_ip = var.remote_addr +local client_port = var.remote_port + +ngx.req.read_body() +local post_var = ngx.req.get_post_args() +local stream_name = post_var.name +local app = post_var.app +local action = post_var.call + +local red = redis:new() +-- 权限验证 +local res,err = red:auth('=123123') +if not res then + ngx.say("failed to authenticate: ", err) + return +end +red:select(1) + +local res, err = red:sismember('StreamNameValidityCheck',stream_name) +if not res then + ngx.log(ngx.WARN, "warn: failed to sismember: ", res) + return +end +-- auth flag +if tonumber(res) ~= 1 then + local ok, err = red:multi() + if not ok then + ngx.log(ngx.ERR, "error: failed to run multi: ", err) + return + end + + local ok, err = red:zrem('NonInterfaceStreamName',stream_name) + if not ok then + ngx.log(ngx.ERR, "error: zrem failed : ", err) + return + end + + --local ok, err = red:zadd('NonInterfaceStreamName',ngx.time(),client_ip..':'..client_port..'=:'..stream_name) + local ok, err = red:zadd('NonInterfaceStreamName',ngx.time(),stream_name) + if not ok then + ngx.log(ngx.ERR, "error: failed to run multi: ", err) + return + end + + local ans, err = red:exec() + if not ans then + ngx.log(ngx.WARN, "warn: failed to sismember: ", res) + return + end + --ngx.log(ngx.ERR, "warn: RTMP to sismember: ",ngx.HTTP_BAD_REQUEST) + ngx.exit(ngx.HTTP_BAD_REQUEST) +end +ngx.exit(ngx.HTTP_OK) +``` +#### post 请求方式 +```lua +curl -d "name=CY0000768621&app=live123&call=publish_done_12" http://localhost:8081/rtmp_redirect_lua +``` + +#### 状态码查看 +```javascript +www@ubuntu4:/opt/openresty/nginx/conf/lua$ curl -I http://localhost:8081/rtmp_redirect_lua +HTTP/1.1 400 Bad Request +Server: openresty/1.11.2.1 +Date: Tue, 02 May 2017 09:59:42 GMT +Content-Type: text/html +Content-Length: 179 +Connection: close +``` diff --git a/Nginx-Rtmp/Openresty_rtmp_obs_push_auth.md b/Nginx-Rtmp/Openresty_rtmp_obs_push_auth.md new file mode 100644 index 0000000000000000000000000000000000000000..aa715d1606c276b9cbbd0cb1f8c7e254523822f4 --- /dev/null +++ b/Nginx-Rtmp/Openresty_rtmp_obs_push_auth.md @@ -0,0 +1,226 @@ +## Openresty_rtmp_obs_push.md + +#### nginx.conf +```lua +location /rtmp_redirect_lua { + access_by_lua_file /opt/openresty/nginx/conf/lua/rtmp_auth_key.lua; +} + +application live { + live on; + on_publish http://localhost:8081/rtmp_redirect_lua; +} +``` + +#### rtmp_auth_key.lua 文件 +```lua +--[[----------------------------------------------------------------------- +* | Copyright (C) Shaobo Wan (Tinywan) +* | Github: https://github.com/Tinywan +* | Blog: http://www.cnblogs.com/Tinywan +* |------------------------------------------------------------------------ +* | Author: Tinywan +* | Date: 2017/5/4 +* | Time: 16:25 +* | Mail: Overcome.wan@Gmail.com +* |------------------------------------------------------------------------ +--]] +local cjson = require "cjson" +local redis = require("resty.redis_iresty") +local var = ngx.var + +-- post var +ngx.req.read_body() +local post_var = ngx.req.get_post_args() +local stream_name = post_var.name +local app = post_var.app +local action = post_var.call + +-- redis auth +local red = redis:new() +local res,err = red:auth('+=') +if not res then + ngx.say("failed to authenticate: ", err) + ngx.exit(ngx.HTTP_BAD_REQUEST) +end +-- select redis db +red:select(1) + +--get push auth switch +local res, err = red:get('RTMPPushAuthSwitch') +if not res then + ngx.log(ngx.WARN, "warn: RTMPPushAuthSwitch is not set: ", err) + ngx.exit(ngx.HTTP_BAD_REQUEST) +end + +--ngx.log(ngx.ERR, "error: TEST============: ", res) + +if tonumber(res) == 0 then -- 0 all allowed + ngx.exit(ngx.HTTP_OK) +elseif tonumber(res) == 1 then -- 1 web allowed + -- whitelist validation + local res, err = red:sismember('StreamNameValidityCheck',stream_name) + if not res then + ngx.log(ngx.WARN, "warn: failed to sismember: ", res) + ngx.exit(ngx.HTTP_BAD_REQUEST) + end + -- if set + if tonumber(res) ~= 1 then + local ok, err = red:multi() + if not ok then + ngx.log(ngx.ERR, "error: failed to run multi: ", err) + return + end + -- zrem member + local ok, err = red:zrem('NonInterfaceStreamName',stream_name) + if not ok then + ngx.log(ngx.ERR, "error: zrem failed : ", err) + return + end + + local ok, err = red:zadd('NonInterfaceStreamName',ngx.time(),stream_name) + if not ok then + ngx.log(ngx.ERR, "error: failed to run multi: ", err) + return + end + -- exec + local ans, err = red:exec() + if not ans then + ngx.log(ngx.WARN, "warn: failed to sismember: ", res) + return + end + ngx.exit(ngx.HTTP_BAD_REQUEST) + end + --if it is set + ngx.exit(ngx.HTTP_OK) +elseif tonumber(res) == 2 then -- 2 all push is required to be auth_key + --get var + --local uri = ngx.var.uri (uri = rtmp_redirect_lua) 这里有时间在继续研究 + local var = ngx.req.get_post_args() + local app = var.app + local name = var.name + local uri = '/'..app..'/'..name + local auth_key = var.auth_key + + --ngx.log(ngx.ERR, "error: auth_key::uri====::",uri) + --expire_time vlidation + local expire_time = string.sub(auth_key,0,10) + --get current Unixtimestamp + local res_time = ngx.time() + if tonumber(expire_time) < tonumber(res_time) then + ngx.log(ngx.ERR, "error : the push flow address has expired ") + ngx.exit(ngx.HTTP_BAD_REQUEST) + end + + --get private_key + local private_key, err = red:get('private_key') + if not private_key then + ngx.log(ngx.ERR, "error: redis failed to get private_key ", err) + ngx.exit(ngx.HTTP_BAD_REQUEST) + end + + --create res_hash_value + local rand = 0 + local uid = 0 + local seq_hash_value = string.sub(auth_key,-32) + local sstring = uri.."-"..expire_time.."-"..rand.."-"..uid.."-"..private_key + local res_hash_value = ngx.md5(sstring) + + --seq_hash_value vlidation + if tostring(seq_hash_value) ~= tostring(res_hash_value) then + ngx.log(ngx.ERR, "error: client hash_value is error value== ",seq_hash_value," server_hash_value== ",res_hash_value) + ngx.exit(ngx.HTTP_BAD_REQUEST) + end + + -- set name expire_time 7d = 604800 + local expire_timestamp = tonumber(expire_time)+tonumber(604800) + local ok, err = red:hset("STREAM_GLOBAL:"..name,'expireTime',expire_timestamp) + if not ok then + ngx.log(ngx.ERR, "error: failed to set expire_time ", err) + end + ngx.exit(ngx.HTTP_OK) +else -- unknown error + ngx.log(ngx.ERR, "unknown Error 500 ") + ngx.exit(ngx.HTTP_BAD_REQUEST) +end +ngx.exit(ngx.HTTP_OK) + +``` +#### Lua Api 接口修改参数 +```lua +--[[----------------------------------------------------------------------- +* | Copyright (C) Shaobo Wan (Tinywan) +* | Github: https://github.com/Tinywan +* | Blog: http://www.cnblogs.com/Tinywan +* |------------------------------------------------------------------------ +* | Author: Tinywan +* | Date: 2017/4/20 +* | Time: 16:25 +* | Mail: Overcome.wan@Gmail.com +* |------------------------------------------------------------------------ +--]] +local cjson = require "cjson" +local redis = require("resty.redis_iresty") + +local uri = ngx.var.uri +ngx.req.read_body() +local var = ngx.req.get_uri_args() + +local switch_type = var.switch_type +local switch_status = var.switch_status +local auth_key = var.auth_key + +-- expire_time vlidation +local expire_time = string.sub(auth_key,0,10) +local res_time = ngx.time() +if tonumber(expire_time) < tonumber(res_time) then + ngx.say(cjson.encode("The request url has expired")) + ngx.exit(ngx.HTTP_OK) +end + +local red = redis:new() +-- auth vlidation +local res,err = red:auth('+=') +if not res then + ngx.say("failed to authenticate: ", err) + ngx.exit(ngx.HTTP_OK) +end +red:select(1) + +-- get private_key +local private_key, err = red:get('private_key') +if not private_key then + ngx.say("error: failed to get private_key ") + ngx.exit(ngx.HTTP_OK) +end + +-- create res_hash_value +--local expire_time = string.sub(auth_key,0,10) +local rand = "0" +local uid = "0" +local seq_hash_value = string.sub(auth_key,-32) +local sstring = uri.."-"..expire_time.."-"..rand.."-"..uid.."-"..private_key +local res_hash_value = ngx.md5(sstring) + +--seq_hash_value vlidation +if tostring(seq_hash_value) ~= tostring(res_hash_value) then + ngx.say("req_hash_value is error") + ngx.exit(ngx.HTTP_OK) +end + +-- set address switch status +local ok, err = red:getset(switch_type,switch_status) +if not ok then + ngx.log(ngx.ERR, "error: failed to set StreamAddressSwitch ", err) + ngx.say("failed to set info:",cjson.encode(err)) + ngx.exit(ngx.HTTP_OK) +end +ngx.say("set result: ", cjson.encode(ok)) +ngx.exit(ngx.HTTP_OK) + +``` +#### get 浏览器请求方式 +```lua +http://127.0.0.1/stream_address_switch?switch_type=StreamAddressSwitch&switch_status=2&auth_key=1493863980-0-0-64f1a882229888aeae8db32b48271c84 +set result: "1" +``` diff --git a/Nginx-Rtmp/Shell_Log.sh b/Nginx-Rtmp/Shell_Log.sh new file mode 100644 index 0000000000000000000000000000000000000000..2742603ca813ae003470a7e084b33ac5c09aae70 --- /dev/null +++ b/Nginx-Rtmp/Shell_Log.sh @@ -0,0 +1,159 @@ +#!/bin/bash +####################################################### +# $Name: Shell_Log.sh +# $Version: v1.0 +# $Function: Log Script +# $Author: ShaoBo Wan (Tinywan) +# $organization: https://github.com/Tinywan +# $Create Date: 2017-06-29 +# $Description: Mysql 自动备份脚本安全加锁机制 +####################################################### +:<>log_file.log + [1] error===>红色(31m):错误日志信息 + [2] info===>绿色(32m):命令成功执行、URL回调成功、打印正确数据信息 + [3] warn===>黄色(33m):参数不存在、文件不存在、命令拼写错误 + [3] debug===>Blue色(34m): debug + [3]date:2016-11-04 10:23:10 [date '+%Y-%m-%d %H:%M:%S'] +tinywan +PATH=/usr/local/bin:/usr/bin:/bin +YM=`date +%Y%m` +FLOG=/home/tinywan/bin/recorded_${YM}.log +#设置日志级别 +loglevel=0 #debug:0; info:1; warn:2; error:3 +TIME=`date '+%Y-%m-%d %H:%M:%S'` +function LOG(){ + local log_type=$1 + local LOG_CONTENT=$2 + # 这里的写入日志时间修改掉,经过一段时间的测试${TIME} 每次都是一个固定的时间,所以在这里修改为每次写入是自动获取当前时间写入日志 + logformat="`date '+%Y-%m-%d %H:%M:%S'` \t[${log_type}]\tFunction: ${FUNCNAME[@]}\t[line:`caller 0 | awk '{print$1}'`]\t [log_info: ${LOG_CONTENT}]" + { + case $log_type in + debug) + [[ $loglevel -le 0 ]] && echo -e "\033[34m${logformat}\033[0m" ;; + info) + [[ $loglevel -le 1 ]] && echo -e "\033[32m${logformat}\033[0m" ;; + warn) + [[ $loglevel -le 2 ]] && echo -e "\033[33m${logformat}\033[0m" ;; + error) + [[ $loglevel -le 3 ]] && echo -e "\033[31m${logformat}\033[0m" ;; + esac + } | tee -a $FLOG +} + +echo -e "\r\n \033[34m------------------------------------------------------Shell Script Start -------------------------------------------- \033[0m " >> $FLOG +# 最小视频长度 +MIN_DURATION=20 + +# Redis Var +REDIS_HOST='127.0.0.1' +REDIS_PORT='6379' +REDIS_AUTH='tinywanredis' +REDIS_DB=12 + +# 推流名称 mystream +STREAM_NAME=$1 + +# 录制文件全路径 /tmp/rec/mystream-1389499351.flv +FULL_NAME=$2 + +# 录制文件名 mystream-1389499351.flv +FILE_NAME=$3 + +# 录制文件名,不带后缀(mystream-1389499351) +BASE_NAME=$4 + +# 录制文件路径 /tmp/rec +DIR_NAME=$5 + +# -z 检测字符串长度是否为0 # 检测 STREAM_NAME 变量值是否为空 +if [ -z "${STREAM_NAME}" ];then + LOG error "STREAM_NAME is null" + exit 1 +fi + +# $@ 是传给脚本的所有参数的列表 +#echo -e "\033[32m [SUCCESS][$TIME]: $@ \033[0m" >>$FLOG +LOG debug $@ + +# 检测 FULL_NAME 变量值是否为空 +if [ -z "${FULL_NAME}" ]; then + LOG error "FULL_NAME is null" + exit 1 +fi + +# 检测文件是否存在并且大小不为0 +if [ ! -s "${FULL_NAME}" ]; then + LOG error "File not exists or zero size " + # 文件为空文件删除掉该文件 + rm -f ${FULL_NAME} + exit 1 +fi + +# 检测视频时长,小于 MIN_DURATION 的文件将被丢弃 +DURATION=`/usr/bin/ffmpeg -i ${FULL_NAME} 2>&1 | awk '/Duration/ {split($2,a,":");print a[1]*3600+a[2]*60+a[3]}'` +if [ $(echo "${DURATION} < $MIN_DURATION"|bc) = 1 ]; then + LOG error " Duration too short, FULL_NAME=${FULL_NAME}, DURATION==${DURATION}" + rm -f ${FULL_NAME} + exit 1 +fi + +#echo "[DEBUG1][$TIME] Video Record : FULL_NAME=$FULL_NAME, FULL_NAME=${FULL_NAME}, DURATION=${DURATION}" >> $FLOG + +# 自动截取封面图片 +#/usr/bin/ffmpeg -y -ss 00:00:10 -i ${FULL_NAME} -vframes 1 ${DIR_NAME}/${BASE_NAME}.jpg +FFMPEG_JPG=$(/usr/bin/ffmpeg -y -i ${FULL_NAME} -vcodec copy -acodec copy ${DIR_NAME}/${BASE_NAME}.mp4 && echo "success" || echo "fail") +LOG info "Screenshot JPG: ${FFMPEG_JPG} " + +# 转码成MP4 +#/usr/bin/ffmpeg -y -i ${FULL_NAME} -vcodec copy -acodec copy ${DIR_NAME}/${BASE_NAME}.mp4 +FFMPEG_MP4=$(/usr/bin/ffmpeg -y -i ${FULL_NAME} -vcodec copy -acodec copy ${DIR_NAME}/${BASE_NAME}.mp4 && echo "success" || echo "fail") +LOG info "Transcoding MP4: ${FFMPEG_MP4} " + +# 获取文件大小 +FILE_SIZE=`stat -c "%s" ${DIR_NAME}/${BASE_NAME}.mp4` + +# 获取视频录制时间 +FILE_TIME=`stat -c "%Y" ${FULL_NAME}` + +LOG debug "Video: FILE_NAME=${FILE_NAME}, DURATION=${DURATION}, FILESIZE=${FILE_SIZE},FILETIME=${FILE_TIME}" + +#recorded done rallback +URL="http://localhost/recordDone?streamName=${STREAM_NAME}&baseName=${BASE_NAME}&duration=${DURATION}&fileSize=${FILE_SIZE}&fileTime=${FILE_TIME}" +RESULT=$(curl ${URL} 2>/dev/null) + +RES_STATUS=${RESULT:0:3} +RES_RESULT=${RESULT:4} +#RESULT 返回值必须为字符串 +if [ "${RES_STATUS}" == "200" ]; then + LOG info "[$(date '+%Y-%m-%d %H:%M:%S')] recorded rallBack OK :${RES_RESULT}" +elif [ "${RES_STATUS}" == "500" ] +then + LOG error "recorded rallBack Fail :${RES_RESULT}" +else + LOG error "recorded rallBack Unknown error" +fi + +# auto slice mp4 to m3u8 +mkdir -p ${DIR_NAME}/${BASE_NAME} +# 添加如果ffmpeg 命令执行错误,则提示切片错误,负责输出正确结果 +FFMPEG_RUN=$(/usr/bin/ffmpeg -i ${FULL_NAME} -flags +global_header -f segment -segment_time 3 -segment_format mpegts -segment_list ${DIR_NAME}/${BASE_NAME}/index.m3u8 -c:a copy -c:v copy -bsf:v h264_mp4toannexb -map 0 ${DIR_NAME}/${BASE_NAME}/%5d.ts && echo "slice success" || echo "slice fail") +# $? = 0 success, other fail +if [[ $? -eq 0 ]]; then + LOG info "ffmpeg run success :"$(echo $?) +else + LOG error "ffmpeg run error : "$(echo $?) +fi + +LOG info "FFMPEG_SLICE: ${FFMPEG_RUN} [$(date '+%Y-%m-%d %H:%M:%S')] " + +# 查找超出7天前的flv的文件进行删除 +cd ${DIR_NAME} +find ./ -mindepth 1 -maxdepth 3 -type f -name "*.flv" -mmin +10080 | xargs rm -rf + +exit 1 + + + diff --git a/Nginx-Rtmp/Shell_Nginx_Log_cut.sh b/Nginx-Rtmp/Shell_Nginx_Log_cut.sh new file mode 100644 index 0000000000000000000000000000000000000000..1363feae89b33202736062f29adaa33efc78c936 --- /dev/null +++ b/Nginx-Rtmp/Shell_Nginx_Log_cut.sh @@ -0,0 +1,56 @@ +#!/bin/bash +#function: Nginx log timing backup and delete + +# get nginx PID +# pid = $(cat /var/run/nginx.pid) +pid=$(ps -aef | grep nginx | grep -v grep | grep master |awk '{print $2}') + +## if nginx running else exit 1 +#if [[ $? == 0 && -n $pid ]] +#then +# exit 1; +#fi + +#set the path save nginx log files +base_path="/home/tinywan/logs" + +# get data eg:201611 +log_dir_name=$(date -d yesterday +"%Y%m") + +# get days eg:03 +DAY=$(date -d yesterday +"%d") + +# create log directory +mkdir -p $base_path/$log_dir_name + +# set the path to nginx log +log_files_path="/usr/local/nginx/logs/" + +#set nginx log files you want to cut eg: array +log_files_names=(access error) + +#set the path to nginx. +nginx_sbin="/usr/local/nginx/sbin/nginx" + +#Set how long you want to save eg: 7 days +save_mins=1 + +#log file num eg: 2 +log_files_num=${#log_files_names[@]} + +#loop cut nginx log files +for log_name in ${log_files_names[*]} +do + sudo mv ${log_files_path}${log_name}.log ${base_path}/${log_dir_name}/${log_name}_${DAY}.log +done + +#向 Nginx 主进程发送 USR1 信号,USR1 信号是重新打开日志文件 +sudo kill -USR1 $pid + +#delete 7 days ago nginx log files +find $base_path -mindepth 1 -maxdepth 3 -type f -name "*.log" -mmin +$save_mins | xargs rm -rf + +#################### crontab edit 每天凌晨 1:55 执行该脚本 ##################### +# 55 1 * * * bash /home/tinywan/shell/nginx_log_cut.sh >/dev/null 2>&1 +############################################################################## + diff --git a/Nginx-Rtmp/Shell_script.md b/Nginx-Rtmp/Shell_script.md new file mode 100644 index 0000000000000000000000000000000000000000..73896edcb13869f684ba39cac05afd4d0f0cc579 --- /dev/null +++ b/Nginx-Rtmp/Shell_script.md @@ -0,0 +1,70 @@ +## SHELL脚本 ++ [如何不耍流氓的做运维之-SHELL脚本](http://mp.weixin.qq.com/s/aI3ha5BvzIvqpn2ddAK5zQ) ++ [已经测试成功自动备份和自动压缩备份数据库文件](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/slimp_backup_db.sh) +## SHELL脚本小技巧 +```bash +#!/bin/bash +####################################################### +# $Name: shell_template.sh +# $Version: v1.0 +# $Function: Backup MySQL Databases Template Script +# $Author: Jason Zhao +# $organization: https://www.unixhot.com/ +# $Create Date: 2016-08-27 +# $Description: You know what i mean,hehe +####################################################### + +# Shell Env +SHELL_NAME="shell_template.sh" +SHELL_DIR="/opt/shell" +SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}.log" +LOCK_FILE="/tmp/${SHELL_NAME}.lock" + +#Write Log +shell_log(){ + LOG_INFO=$1 + echo "$(date "+%Y-%m-%d") $(date "+%H-%M-%S") : ${SHELL_NAME} : ${LOG_INFO}" >> ${SHELL_LOG} +} + +# Shell Usage shell_usage函数,用来告诉用户,这个脚本的使用方法 +shell_usage(){ + echo $"Usage: $0 {backup}" +} + +# 函数shell_lock和shell_unlock非常简单,就是创建一个锁文件 +shell_lock(){ + touch ${LOCK_FILE} +} + +shell_unlock(){ + rm -f ${LOCK_FILE} +} + +# Backup MySQL All Database with mysqldump or innobackupex +mysql_backup(){ + if [ -f "$LOCK_FILE" ];then + shell_log "${SHELL_NAME} is running" + echo "${SHELL_NAME}" is running && exit + fi + shell_log "mysql backup start" + shell_lock + sleep 10 + shell_log "mysql backup stop" + shell_unlock +} + +# Main Function +main(){ + case $1 in + backup) + mysql_backup + ;; + *) + shell_usage; + esac +} + +#Exec +main $1 +``` + diff --git a/Nginx-Rtmp/backup_mysql.sh b/Nginx-Rtmp/backup_mysql.sh new file mode 100644 index 0000000000000000000000000000000000000000..dc25450df30de30a06775f91a08fefc59642dd8a --- /dev/null +++ b/Nginx-Rtmp/backup_mysql.sh @@ -0,0 +1,99 @@ +#!/bin/bash +####################################################### +# $Name: mysql_auto_backup.sh +# $Version: v1.0 +# $Function: Backup MySQL Databases Script +# $Author: ShaoBo Wan (Tinywan) +# $organization: https://github.com/Tinywan +# $Create Date: 2017-06-27 +# $Description: 定期备份MySQL数据库 +# $crontab: 55 23 * * * bash $PATH/mysql_auto_backup.sh backup >/dev/null 2>&1 +####################################################### + +# Shell Env +SHELL_NAME="mysql_auto_backup.sh" +SHELL_TIME=$(date '+%Y-%m-%d-%H:%M:%S') +SHELL_DAY=$(date '+%Y-%m-%d') +SHELL_DIR="/home/www/data-backup" +SHELL_LOG="${SHELL_DIR}/logs/${SHELL_NAME}-${SHELL_DAY}.log" +LOCK_FILE="/tmp/${SHELL_NAME}.lock" +MYSQL_DUMP="/usr/bin/mysqldump" +MYSQL_BACKUP_DB_NAME="resty" +BACKUP_NAME=${MYSQL_BACKUP_DB_NAME}"-${SHELL_TIME}.sql" + +# Write Log +loglevel=0 #debug:0; info:1; warn:2; error:3 +TIME=`date '+%Y-%m-%d %H:%M:%S'` +shell_log(){ + local log_type=$1 + local LOG_CONTENT=$2 + # 这里的写入日志时间修改掉,经过一段时间的测试${TIME} 每次都是一个固定的时间,所以在这里修改为每次写入是自动获取当前时间写入日志 + logformat="`date '+%Y-%m-%d %H:%M:%S'` \t[${log_type}]\t [${SHELL_NAME}] Function: ${FUNCNAME[@]}\t[line:`caller 0 | awk '{print$1}'`]\t [log_info: ${LOG_CONTENT}]" + { + case $log_type in + debug) + [[ $loglevel -le 0 ]] && echo -e "\033[34m${logformat}\033[0m" ;; + info) + [[ $loglevel -le 1 ]] && echo -e "\033[32m${logformat}\033[0m" ;; + warn) + [[ $loglevel -le 2 ]] && echo -e "\033[33m${logformat}\033[0m" ;; + error) + [[ $loglevel -le 3 ]] && echo -e "\033[31m${logformat}\033[0m" ;; + esac + } | tee -a $SHELL_LOG +} + +# Shell Usage shell_usage函数,用来告诉用户,这个脚本的使用方法 +shell_usage(){ + echo $"Usage: $0 {backup}" +} + +shell_lock(){ + touch ${LOCK_FILE} +} + +shell_unlock(){ + rm -f ${LOCK_FILE} +} + +mysql_zip(){ + cd $SHELL_DIR + /bin/bzip2 $BACKUP_NAME + find ./ -mindepth 1 -maxdepth 3 -type f -name '*.bz2' -mmin +43200 | xargs rm -rf + find ./ -mindepth 1 -maxdepth 3 -type f -name *.sql -mmin +10080 | xargs rm -rf + find ./ -mindepth 1 -maxdepth 3 -type f -name *.log -mmin +10080 | xargs rm -rf +} + +# Backup MySQL weblive Database with mysqldump or innobackupex +mysql_backup(){ + if [ -f "$LOCK_FILE" ];then + shell_log warn "${SHELL_NAME} is running" + exit 1 + fi + shell_log info "mysql backup start" + shell_lock + #sleep 10 + #$qMYSQL_DUMP $MYSQL_BACKUP_DB_NAME > $SHELL_DIR/$BACKUP_NAME + BACKUP_RES=$($MYSQL_DUMP $MYSQL_BACKUP_DB_NAME > $SHELL_DIR/$BACKUP_NAME && echo "success" || echo "fail") + if [ "${BACKUP_RES}" == "fail" ];then + shell_log error "MYSQL_BACKUP_DB error : ${BACKUP_RES}" + shell_unlock + exit 1 + fi + mysql_zip + shell_log info "mysql backup stop" + shell_unlock +} + +# Main Function +main(){ + case $1 in + backup) mysql_backup + ;; + *) shell_usage + ;; + esac +} + +#Exec +main $1 diff --git a/Nginx-Rtmp/nginx_status.md b/Nginx-Rtmp/nginx_status.md new file mode 100644 index 0000000000000000000000000000000000000000..d1f0fee85e4560adf58aa6e1a6ef5b625030b8bd --- /dev/null +++ b/Nginx-Rtmp/nginx_status.md @@ -0,0 +1,27 @@ ++ Nginx查看并发连接数 + + 编译添加选项:`--with-http_stub_status_module` + + Openresty编译: + ```javascript + ./configure --prefix=/opt/openresty + --with-http_iconv_module + --pid-path=/var/run/nginx.pid + --with-http_realip_module + --with-http_ssl_module + --with-http_stub_status_module + ``` + + 配置文件 + ```javascript + location /nginx_status { + stub_status on; + access_log off; + allow 127.0.0.1; + deny all; + } + ``` + + 观看地址:`http://127.0.0.1/nginx_status` + + nginx status详解 + - `active connections` – 活跃的连接数量 + - `server accepts handled requests` — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求 + - `reading ` — 读取客户端的连接数. + - `writing ` — 响应数据到客户端的数量. + - `waiting ` — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接. \ No newline at end of file diff --git a/Nginx-Rtmp/shell_usage.sh b/Nginx-Rtmp/shell_usage.sh new file mode 100644 index 0000000000000000000000000000000000000000..76a218f798b4a1097cf312d1319fcf1be980e84b --- /dev/null +++ b/Nginx-Rtmp/shell_usage.sh @@ -0,0 +1,125 @@ +#!/bin/bash +####################################################### +# $Name: shell_template.sh +# $Version: v1.0 +# $Function: Backup MySQL Databases Script +# $Author: ShaoBo Wan +# $organization: https://github.com/Tinywan +# $Create Date: 2017-06-27 +# $Description: 定期备份MySQL数据库 +####################################################### + +# Shell Env +SHELL_NAME="test.sh" +SHELL_TIME=$(date "+%Y-%m-%d") +SHELL_DIR="/home/www/database_back" +SHELL_LOG="${SHELL_DIR}/${SHELL_NAME}-${SHELL_TIME}.log" +LOCK_FILE="/tmp/${SHELL_NAME}.lock" +MYSQL_DUMP="/usr/bin/mysqldump" +MYSQL_BACKUP_DB_NAME="weblive" +BACKUP_NAME=${MYSQL_BACKUP_DB_NAME}"-${SHELL_TIME}.sql" + +#设置日志级别 +loglevel=0 #debug:0; info:1; warn:2; error:3 +TIME=`date '+%Y-%m-%d %H:%M:%S'` +shell_log(){ + local log_type=$1 + local LOG_CONTENT=$2 + # 这里的写入日志时间修改掉,经过一段时间的测试${TIME} 每次都是一个固定的时间,所以在这里修改为每次写入是自动获取当前时间写入日志 + logformat="`date '+%Y-%m-%d %H:%M:%S'` \t[${log_type}]\t [${SHELL_NAME}] Function: ${FUNCNAME[@]}\t[line:`caller 0 | awk '{print$1}'`]\t [log_info: ${LOG_CONTENT}]" + { + case $log_type in + debug) + [[ $loglevel -le 0 ]] && echo -e "\033[34m${logformat}\033[0m" ;; + info) + [[ $loglevel -le 1 ]] && echo -e "\033[32m${logformat}\033[0m" ;; + warn) + [[ $loglevel -le 2 ]] && echo -e "\033[33m${logformat}\033[0m" ;; + error) + [[ $loglevel -le 3 ]] && echo -e "\033[31m${logformat}\033[0m" ;; + esac + } | tee -a $SHELL_LOG +} + +# Shell Usage shell_usage函数,用来告诉用户,这个脚本的使用方法 +shell_usage(){ + #echo $"Usage: $0 {backup}" + echo '你没有输入 1 到 4 之间的数字' +} + +# 函数shell_lock和shell_unlock非常简单,就是创建一个锁文件 +shell_lock(){ + touch ${LOCK_FILE} +} + +shell_unlock(){ + rm -f ${LOCK_FILE} +} + +# Backup MySQL weblive Database with mysqldump or innobackupex +mysql_backup(){ + if [ -f "$LOCK_FILE" ];then + shell_log "${SHELL_NAME} is running" + echo "${SHELL_NAME}" is running && exit + fi + shell_log "mysql backup start" + shell_lock + sleep 10 + $MYSQL_DUMP $MYSQL_BACKUP_DB_NAME > $SHELL_DIR/$BACKUP_NAME + cd $SHELL_DIR + /bin/bzip2 $BACKUP_NAME + shell_log "mysql backup stop" + shell_unlock +} + +# Main Function +main(){ + case $1 in + 1) echo '你选择了 1' + ;; + 2) echo '你选择了 2' + ;; + 3) echo '你选择了 3' + ;; + 4) echo '你选择了 4' + ;; + *) shell_usage + ;; + esac +} + +main2(){ + case $1 in + backup) mysql_backup + ;; + *) shell_usage + ;; + esac +} + + +#Exec +main $1 + +database=weblive +databak_dir=/home/www/database_back +logs_dir=/home/www/database_back/logs +dumpbin=/usr/bin/mysqldump + +DATE=$(date +%Y%m%d) +date_time=$(date +"%y-%m-%d %H:%M:%S") +backup_name=sansan_bak1_${DATE}.sql +logFile=$logs_dir/sansan_${DATE}.log + +echo " " > $logFile +echo "-------------$(date +"%y-%m-%d %H:%M:%S") backup start ----------------------" >> $logFile + +$MYSQL_DUMP $MYSQL_BACKUP_NAME >$databak_dir/$backup_name +cd $databak_dir +/bin/bzip2 $backup_name +# 1 mouth = 44640 min +find ./ -mindepth 1 -maxdepth 3 -type f -name *.bz2 -mmin +43200 | xargs rm -rf +find ./ -mindepth 1 -maxdepth 3 -type f -name *.sql -mmin +1440 | xargs rm -rf +echo "-------------$(date +"%y-%m-%d %H:%M:%S") backup end ----------------------" >> $logFile + +FFMPEG_JPG=$(/usr/bin/ffmpeg -y -ss 00:00:10 -i ${FULL_NAME} -vframes 1 ${DIR_NAME}/${BASE_NAME}.jpg && echo "success" || echo "fail") \ No newline at end of file diff --git a/Nginx-Rtmp/slimp_backup_db.sh b/Nginx-Rtmp/slimp_backup_db.sh new file mode 100644 index 0000000000000000000000000000000000000000..ef0b05d1b7d49f5891f283811d382f8309685f47 --- /dev/null +++ b/Nginx-Rtmp/slimp_backup_db.sh @@ -0,0 +1,31 @@ +#!/bin/bash +####################################################### +# $Name: mysql_backup.sh +# $Version: v1.0 +# $Function: Backup MySQL Databases Script +# $Author: ShaoBo Wan (Tinywan) +# $organization: https://github.com/Tinywan +# $Create Date: 2017-06-29 +# $Description: Mysql 自动备份脚本安全加锁机制 +####################################################### + +database=weblive +databak_dir=/home/www/database_back +logs_dir=/home/www/database_back/logs +dumpbin=/usr/bin/mysqldump + +DATE=$(date +%Y%m%d) +date_time=$(date +"%y-%m-%d %H:%M:%S") +backup_name=sansan_bak1_${DATE}.sql +logFile=$logs_dir/sansan_${DATE}.log + +echo " " > $logFile +echo "-------------$(date +"%y-%m-%d %H:%M:%S") backup start ----------------------" >> $logFile + +$dumpbin $database >$databak_dir/$backup_name +/bin/bzip2 $backup_name +cd $databak_dir +# 1 mouth = 44640 min +find ./ -mindepth 1 -maxdepth 3 -type f -name *.bz2 -mmin +43200 | xargs rm -rf +find ./ -mindepth 1 -maxdepth 3 -type f -name *.sql -mmin +1440 | xargs rm -rf +echo "-------------$(date +"%y-%m-%d %H:%M:%S") backup end ----------------------" >> $logFile diff --git a/Nginx/Nginx-Web/Nginx-2-4-all-config.md b/Nginx/Nginx-Web/Nginx-2-4-all-config.md new file mode 100644 index 0000000000000000000000000000000000000000..6ed123e05edfc16f3ea2b129fd460454f541f3ee --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-2-4-all-config.md @@ -0,0 +1,75 @@ + +#### Nginx服务器基础配置命令 +--- ++ 基于域名的虚拟主机配置 + + 语法格式: + ``` + server_name name name2 name3 ... # 可以有一个或者多个名称并列,之间用空格隔开 + ``` + + 普通案例: + ``` + server_name www.tinywan.com www.redis.com # 第一个名称作为虚拟主机的主要名称 + ``` + + 通配符案例: + ``` + server_name *.tinywan.com www.redis.* # 通配符只能用在域名字符串名称的手段或尾端 + ``` + + 正则匹配案例: + ``` + server_name ~^www\d+\.tinywan.com$ + ``` + > 波浪号 ` ~ ` 作为正则表达式字符串的开始标记 + > 正则表达式含义: + >>` ^www ` 以 www 开头 + >>` \d+ ` ,`\d` 代表 0 ~ 9 的某一个数字,`+` 表示以前的字符出现一次或者多次 + >>`\.` ,由于`.`在正则表达式有特殊含义,因此需要转义字符`\`进行转义 + >> ` m$` 表示一个m结束 + + + 访问服务器域名 + > 可以访问 + ``` + www1.tinywan.com + ``` + + > 不可以访问 + ``` + www.tinywan.com + ``` ++ 基于IP的虚拟主机配置 + + 本机IP地址为: `192.168.127.129` + + 添加 IP 别名 (`192.168.127.131` 和 `192.168.127.141`) + ``` + sudo ifconfig ens33:0 192.168.127.131 netmask 255.255.255.0 up + + sudo ifconfig ens33:1 192.168.127.141 netmask 255.255.255.0 up + ``` + + 将以上两条命令添加到Linux 系统的启动脚本rc.local 中,系统重启后,ens33 的别名就自动设置好了(注意:sudo 权限) + ``` + echo "ifconfig ens33:1 192.168.127.131 netmask 255.255.255.0 up" >> /etc/rc.local + + echo "ifconfig ens33:1 192.168.127.131 netmask 255.255.255.0 up" >> /etc/rc.local + ``` + + /etc/rc.local 解释 + >在Linux启动的最后阶段,系统会执行存于rc.local中的命令 + + + 配置虚拟主机 + ``` + server { + listen 80; + server_name 192.168.127.131; + location / { + root /usr/local/nginx/html2; + } + } + + server { + listen 80; + server_name 192.168.127.141; + location / { + root /usr/local/nginx/html3; + } + } + ``` + + + diff --git a/Nginx/Nginx-Web/Nginx-2-4-basic-config.md b/Nginx/Nginx-Web/Nginx-2-4-basic-config.md new file mode 100644 index 0000000000000000000000000000000000000000..d6dc13a75d8b9e86c03ff7cf39cea8419b7a9149 --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-2-4-basic-config.md @@ -0,0 +1,302 @@ + +#### 基础配置文件 +--- ++ 完整基础配置nginx.conf +``` +user www www; ## Default: nobody +worker_processes 5; ## Default: 1 +error_log logs/error.log; +pid logs/nginx.pid; +worker_rlimit_nofile 8192; + +events { + worker_connections 4096; ## Default: 1024 +} + +http { + include conf/mime.types; + include /etc/nginx/proxy.conf; + include /etc/nginx/fastcgi.conf; + index index.html index.htm index.php; + + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] $status ' + '"$request" $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log logs/access.log main; + sendfile on; + tcp_nopush on; + server_names_hash_bucket_size 128; # this seems to be required for some vhosts + + server { # php/fastcgi + listen 80; + server_name domain1.com www.domain1.com; + access_log logs/domain1.access.log main; + root html; + + location ~ \.php$ { + fastcgi_pass 127.0.0.1:1025; + } + } + + server { # simple reverse-proxy + listen 80; + server_name domain2.com www.domain2.com; + access_log logs/domain2.access.log main; + + # serve static files + location ~ ^/(images|javascript|js|css|flash|media|static)/ { + root /var/www/virtual/big.server.com/htdocs; + expires 30d; + } + + # pass requests for dynamic content to rails/turbogears/zope, et al + location / { + proxy_pass http://127.0.0.1:8080; + } + } + + upstream big_server_com { + server 127.0.0.3:8000 weight=5; + server 127.0.0.3:8001 weight=5; + server 192.168.0.1:8000; + server 192.168.0.1:8001; + } + + server { # simple load balancing + listen 80; + server_name big.server.com; + access_log logs/big.server.access.log main; + + location / { + proxy_pass http://big_server_com; + } + } +} +``` ++ proxy_conf 扩展参数 +``` +proxy_redirect off; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +client_max_body_size 10m; +client_body_buffer_size 128k; +proxy_connect_timeout 90; +proxy_send_timeout 90; +proxy_read_timeout 90; +proxy_buffers 32 4k; +``` ++ fastcgi_conf 扩展参数 +``` +fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +fastcgi_index index.php; + +fastcgi_param REDIRECT_STATUS 200; 32 4k; +``` ++ mime_types 扩展参数 +``` +types { + text/html html htm shtml; + text/css css; + text/xml xml rss; + image/gif gif; + image/jpeg jpeg jpg; + application/x-javascript js; + text/plain txt; + text/x-component htc; + text/mathml mml; + image/png png; + image/x-icon ico; + image/x-jng jng; + image/vnd.wap.wbmp wbmp; + application/java-archive jar war ear; + application/mac-binhex40 hqx; + application/pdf pdf; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/zip zip; + application/octet-stream deb; + application/octet-stream bin exe dll; + application/octet-stream dmg; + application/octet-stream eot; + application/octet-stream iso img; + application/octet-stream msi msp msm; + audio/mpeg mp3; + audio/x-realaudio ra; + video/mpeg mpeg mpg; + video/quicktime mov; + video/x-flv flv; + video/x-msvideo avi; + video/x-ms-wmv wmv; + video/x-ms-asf asx asf; + video/x-mng mng; +} +``` ++ 生产环境的完整配置nginx.conf +``` +user www www; +worker_processes 2; +pid /var/run/nginx.pid; + +# [ debug | info | notice | warn | error | crit ] +error_log /var/log/nginx.error_log info; + +events { + worker_connections 2000; + # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] ; + use kqueue; +} + +http { + include conf/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] ' + '"$request" $status $bytes_sent ' + '"$http_referer" "$http_user_agent" ' + '"$gzip_ratio"'; + + log_format download '$remote_addr - $remote_user [$time_local] ' + '"$request" $status $bytes_sent ' + '"$http_referer" "$http_user_agent" ' + '"$http_range" "$sent_http_content_range"'; + + client_header_timeout 3m; + client_body_timeout 3m; + send_timeout 3m; + + client_header_buffer_size 1k; + large_client_header_buffers 4 4k; + + gzip on; + gzip_min_length 1100; + gzip_buffers 4 8k; + gzip_types text/plain; + + output_buffers 1 32k; + postpone_output 1460; + + sendfile on; + tcp_nopush on; + + tcp_nodelay on; + send_lowat 12000; + + keepalive_timeout 75 20; + + # lingering_time 30; + # lingering_timeout 10; + # reset_timedout_connection on; + + + server { + listen one.example.com; + server_name one.example.com www.one.example.com; + + access_log /var/log/nginx.access_log main; + + location / { + proxy_pass http://127.0.0.1/; + proxy_redirect off; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + client_max_body_size 10m; + client_body_buffer_size 128k; + + client_body_temp_path /var/nginx/client_body_temp; + + proxy_connect_timeout 90; + proxy_send_timeout 90; + proxy_read_timeout 90; + proxy_send_lowat 12000; + + proxy_buffer_size 4k; + proxy_buffers 4 32k; + proxy_busy_buffers_size 64k; + proxy_temp_file_write_size 64k; + + proxy_temp_path /var/nginx/proxy_temp; + + charset koi8-r; + } + + error_page 404 /404.html; + + location /404.html { + root /spool/www; + + charset on; + source_charset koi8-r; + } + + location /old_stuff/ { + rewrite ^/old_stuff/(.*)$ /new_stuff/$1 permanent; + } + + location /download/ { + valid_referers none blocked server_names *.example.com; + + if ($invalid_referer) { + #rewrite ^/ http://www.example.com/; + return 403; + } + + # rewrite_log on; + # rewrite /download/*/mp3/*.any_ext to /download/*/mp3/*.mp3 + rewrite ^/(download/.*)/mp3/(.*)\..*$ /$1/mp3/$2.mp3 break; + + root /spool/www; + # autoindex on; + access_log /var/log/nginx-download.access_log download; + } + + location ~* ^.+\.(jpg|jpeg|gif)$ { + root /spool/www; + access_log off; + expires 30d; + } + + location ~ \.php$ { + fastcgi_pass unix:/var/run/php7.0.9-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + } +} +``` + diff --git a/Nginx/Nginx-Web/Nginx-2-4-log-cut.md b/Nginx/Nginx-Web/Nginx-2-4-log-cut.md new file mode 100644 index 0000000000000000000000000000000000000000..2450164bf157a998fcc39ce7337f929dddc073b7 --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-2-4-log-cut.md @@ -0,0 +1,172 @@ +#### 脚本思路 ++ 第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。 ++ 第二步向nginx主进程发送USR1信号。nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者。重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件。工作进程立刻打开新的日志文件并关闭重名名的日志文件。 ++ 然后你就可以处理旧的日志文件了。 ++ [Nginx日志切割shell脚本](http://www.jb51.net/article/47884.htm) +#### 日志 +--- ++ 日志格式允许包含的变量注释 + ``` + $remote_addr, $http_x_forwarded_for(反向) --记录客户端IP地址 + $remote_user --记录客户端用户名称 + $request --记录请求的URL和HTTP协议 + $status --记录请求状态 + $body_bytes_sent --发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。 + $bytes_sent --发送给客户端的总字节数。 + $connection --连接的序列号。 + $connection_requests --当前通过一个连接获得的请求数量。 + $msec --日志写入时间。单位为秒,精度是毫秒。 + $pipe --如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。 + $http_referer --记录从哪个页面链接访问过来的 + $http_user_agent --记录客户端浏览器相关信息(注意:个别浏览器是空的) + $request_length --请求的长度(包括请求行,请求头和请求正文)。 + $request_time --请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。 + $time_iso8601 --ISO8601标准格式下的本地时间。 + $time_local --通用日志格式下的本地时间。 + ``` ++ Nginx位于负载均衡器,squid,nginx反向代理之后,web服务器无法直接获取到客户端真实的IP地址 + + $remote_addr获取反向代理的IP地址。反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,用来记录 客户端IP地址和客户端请求的服务器地址 ++ 日志文件的切割 + + 查看主进程号( master process ):`cat /var/run/nginx.pid` + + 停止 + + 配置了pid文件存放路径则,QUIT向NGINX主进程发送(优雅关机)信号的方法:`kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid )` + + 从容停止: `kill -QUIT 主进程号` + + 快速停止:`kill -TERM 主进程号` + + 强制停止:`kill -9 主进程号` + + 重启 + + 验证配置文件是否正确: `/usr/local/nginx/sbin/nginx -t` + + 重启方式一:`kill -HUP 主进程号` + >[1] 配置重新加载 + >[2] 使用新配置启动新的工作进程 + >[3] 正常关闭旧的工作进程 + + + 重启方式二:`/usr/local/nginx/sbin/nginx -s reload` + > `-s ` 参数包含四个命令分别是 `stop/quit/reopen/reload` (发送信号到主进程:停止,退出,重新打开,重新加载) + + + 发送 kill -USR1 信号给Nginx 主进程号,让Nginx 生成一个新的日志文件 `/usr/local/nginx/logs/access.log` + + 单日志备份Shell 脚本 `cut_nginx_log.sh` + ``` + #!/bin/bash + # ====================================================================================== + # chmod u+x /opt/nginx/cut_nginx_log.sh + # crontab -e + # 0 0 * * * /home/tinywan/bin/cut_nginx_log.sh > /home/tinywan/bin/cut_nginx_log.log 2>&1 + # ======================================================================================= + + LOGS_PATH="/usr/local/nginx/logs" + YEAR=$(date -d "yesterday" "+%Y") + MONTH=$(date -d "yesterday" "+%m") + # 获取昨天的日期 + DATE=$(date -d "yesterday" "+%Y%m%d_%H%M%S") + echo "YEAR : ${YEAR} MONTH : ${MONTH} DATE :${DATE}" + # Nginx的master 主进程号 + NGINX_PID="/var/run/nginx.pid" + # -r 检测文件是否可读,如果是,则返回 true + if [ -r ${NGINX_PID} ]; then + mkdir -p "${LOGS_PATH}/${YEAR}/${MONTH}" + mv "${LOGS_PATH}/access.log" "${LOGS_PATH}/${YEAR}/${MONTH}/access_${DATE}.log" + kill -USR1 $(cat "/var/run/nginx.pid") + sleep 1 + gzip "${LOGS_PATH}/${YEAR}/${MONTH}/access_${DATE}.log" + echo 'Nginx Cut Log Success' + else + echo "Nginx might be down" + fi + # ============================================================================== + # Clean up log files older than 100 days + # ============================================================================== + # Change HOUSEKEEPING=1 to enable clean up + HOUSEKEEPING=0 + KEEP_DAYS=100 + if [ $HOUSEKEEPING == 1 ]; then # 删除日志开关,开关为1的时候才会去根据设置的天数删除压缩日志文件 + if [ -d "${LOGS_PATH}" ]; then + find "${LOGS_PATH}" -type f -name "*.log.gz" -mtime +${KEEP_DAYS} -exec rm -f {} \; + fi + fi + ``` + + Nginx 报错误日志,由于php-fpm没有启动,就会报错以下错误信息error.log中 + ``` + 11 connect() to unix:/var/run/php7.0.9-fpm.sock failed (2: No such file or directory) while connecting to upstream + ``` + + 多日志备份Shell 脚本 `cut_ multiple_nginx_log.sh` + ``` + #!/bin/bash + # ====================================================================================== + # chmod u+x /opt/nginx/cut_multiple_nginx_log.sh + # crontab -e + # 0 0 * * * /home/tinywan/bin/cut_multiple_nginx_log.sh > /home/tinywan/bin/cut_nginx_log.log 2>&1 + # ======================================================================================= + + LOGS_PATH="/usr/local/nginx/logs" # 注意这里在路径末尾多个"/" + YEAR=$(date -d "yesterday" "+%Y") + MONTH=$(date -d "yesterday" "+%m") + # 获取昨天的日期 + DATE=$(date -d "yesterday" "+%Y%m%d_%H%M%S") + echo "YEAR : ${YEAR} MONTH : ${MONTH} DATE :${DATE}" + # Nginx的master 主进程号 + NGINX_PID="/var/run/nginx.pid" + # -r 检测文件是否可读,如果是,则返回 true + CUT_LOG(){ + if [ -r ${NGINX_PID} ]; then + mkdir -p "${LOGS_PATH}/${YEAR}/${MONTH}" + cd ${LOGS_PATH} + for i in $(ls *.log) # i = access.log/error.log/...等等 + do + FILE_NAME=$(echo ${i} | sed 's/\.log//') # FILE_NAME=access/error/...等等 + echo ${FILE_NAME} + mv "${LOGS_PATH}/${i}" "${LOGS_PATH}/${YEAR}/${MONTH}/${FILE_NAME}_${DATE}.log" + sleep 1 + gzip "${LOGS_PATH}/${YEAR}/${MONTH}/${FILE_NAME}_${DATE}.log" + done + kill -USR1 $(cat "/var/run/nginx.pid") + echo 'Nginx Cut Log Success' + else + echo "Nginx might be down" + exit 1 + fi + } + CUT_LOG + # ============================================================================== + # Clean up log files older than 100 days + # ============================================================================== + # Change HOUSEKEEPING=1 to enable clean up + HOUSEKEEPING=1 + KEEP_DAYS=100 + if [ $HOUSEKEEPING == 1 ]; then + if [ -d "${LOGS_PATH}" ]; then + find "${LOGS_PATH}" -type f -name "*.log.gz" -mtime +${KEEP_DAYS} -exec rm -f {} \; + fi + fi + ``` ++ Linux命令之 ` find ` 命令中的 `-mtime` 参数 + + mtime参数的理解应该如下: + + -mtime n 按照文件的更改时间来找文件,n为整数。 + + n表示文件更改时间距离为n天, -n表示文件更改时间距离在n天以内,+n表示文件更改时间距离在n天以前。 + + 例如: + > -mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件。 + > -mtime 1 表示文件修改时间距离当前为1天的文件,即距离当前时间1天(24小时-48小时)的文件。 + > -mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2天(48小时)之外的文件 + > -mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件 + + + ` find "/usr/local/nginx/logs" -type f -name "*.log.gz" -mtime 0 ` + > 查找距离当前时间不到1天(24小时)以内的文件的日志文件 + >> 查找结果: + ``` + root@tinywan:/usr/local/nginx/logs/2017/04# find "/usr/local/nginx/logs" -type f -name "*.log.gz" -mtime 0 + /usr/local/nginx/logs/2017/04/error_20170401_224602.log.gz + /usr/local/nginx/logs/2017/04/access_20170401_224602.log.gz + /usr/local/nginx/logs/2017/04/host.access_20170401_224602.log.gz + ``` + + + 为什么-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间48小时之外的文件,而不是24小时之外的呢? + + 因为n值只能是整数,即比1大的最近的整数是2,所有-mtime+1不是比当前时间大于1天(24小时),而是比当前时间大于2天(48小时)。 + + ` find . -name "*ab*" -exec rm -f {}\; ` + > 整句命令表示:在当前目录下查找以ab结尾的文件,并删除 + > ` -name “*ab” ` 表示查找以ab结尾的文件或文件名 + > `-exec` 表示执行什么命令。后面跟要执行的命令。此处是 `rm -f`,表示不确认删除 + > `{} \;` 表示把查找到的结果发送到此来 + + + + + diff --git a/Nginx/Nginx-Web/Nginx-6-ReWrite-1.md b/Nginx/Nginx-Web/Nginx-6-ReWrite-1.md new file mode 100644 index 0000000000000000000000000000000000000000..03872a83b2c84d382775683e1784f676991c5863 --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-6-ReWrite-1.md @@ -0,0 +1,78 @@ + +#### rewrite 重写 +--- + ++ 重写中用到的指令 + + if (条件) {} 设定条件,再进行重写 + + If 语法格式 + ``` + If 空格 (条件) { + 重写模式 + } + ``` + + 配置案例一:禁止某一个IP地址访问 + ``` + location / { + if ( $remote_addr = 192.168.127.129 ){ # 注意:这里的if和()之间是有个空格的 + return 403; + } + root html; + } + ``` + + 配置案例二:正则表达式的用法 + ``` + # 这个没有添加break 则会一直循环重定向,服务器会相应 500 + rewrite_log on; + if ($http_user_agent ~ Mozilla){ + rewrite ^.*$ /ie.html; + } + # nginx 日志记录():rewrite or internal redirection cycle while processing "/404.html", + # 这里要开启重写日志:rewrite_log on + + # 正确配置信息 ,服务器会输出ie.html 中的内容 + rewrite_log on; + if ($http_user_agent ~ Mozilla){ + rewrite ^.*$ /ie.html; + break; + } + ``` + + + set #设置变量 + + return #返回状态码 + + break #跳出rewrite + + rewrite #重写 + ++ Nginx 全局应用的变量文件路径:root@tinywan:/usr/local/nginx/conf# cat fastcgi.conf + ``` + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -- 脚本文件请求的路径 + fastcgi_param QUERY_STRING $query_string; -- 请求的参数;如?app=123 + fastcgi_param REQUEST_METHOD $request_method; -- 请求的方法(GET,POST) + fastcgi_param CONTENT_TYPE $content_type; -- 请求头中的Content-Type字段 + fastcgi_param CONTENT_LENGTH $content_length; -- 请求头中的Content-length字段 + + fastcgi_param SCRIPT_NAME $fastcgi_script_name; -- 脚本名称 + fastcgi_param REQUEST_URI $request_uri; -- 请求的地址不带参数 + fastcgi_param DOCUMENT_URI $document_uri; -- 与$uri相同 + fastcgi_param DOCUMENT_ROOT $document_root; -- 网站的根目录。在server配置中root指令中指定的值 + fastcgi_param SERVER_PROTOCOL $server_protocol; -- 请求使用的协议,通常是HTTP/1.0或HTTP/1.1 + fastcgi_param REQUEST_SCHEME $scheme; -- + fastcgi_param HTTPS $https if_not_empty; -- + + fastcgi_param GATEWAY_INTERFACE CGI/1.1; + fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + + fastcgi_param REMOTE_ADDR $remote_addr; -- 客户端IP + fastcgi_param REMOTE_PORT $remote_port; -- 客户端端口 + fastcgi_param SERVER_ADDR $server_addr; -- 服务器IP地址 + fastcgi_param SERVER_PORT $server_port; -- 服务器端口 + fastcgi_param SERVER_NAME $server_name; -- 服务器名,域名在server配置中指定的server_name + + PHP : fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + ``` + +**二、错误日志** + +* 错误日志主要记录客户端访问Nginx出错时的日志,格式不支持自定义。通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。错误日志由指令error_log来指定` + + + diff --git a/Nginx/Nginx-Web/Nginx-7-Proxy-1.md b/Nginx/Nginx-Web/Nginx-7-Proxy-1.md new file mode 100644 index 0000000000000000000000000000000000000000..6099aeee68aa6f37b34a1261436d6faed10d3930 --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-7-Proxy-1.md @@ -0,0 +1,20 @@ + +#### 简单的负载平衡 +``` +http { +upstream myproject { + server 127.0.0.1:8000 weight=3; + server 127.0.0.1:8001; + server 127.0.0.1:8002; + server 127.0.0.1:8003; +} + +server { + listen 80; + server_name www.domain.com; + location / { + proxy_pass http://myproject; + } +} +} +``` diff --git a/Nginx/Nginx-Web/Nginx-7-Proxy.md b/Nginx/Nginx-Web/Nginx-7-Proxy.md index c7e25d5c74ac2f616df5cb8a23da3869400a87ea..69a096432a0c2b1462948800c1dcaebce4d667a1 100644 --- a/Nginx/Nginx-Web/Nginx-7-Proxy.md +++ b/Nginx/Nginx-Web/Nginx-7-Proxy.md @@ -1,12 +1,24 @@ -#### Nginx服务器的代理服务 +#### Nginx服务器的HTTP代理服务 --- ++ 网络初始化之listen常见配置 + ```Lua + listen 127.0.0.1:8000; + listen 127.0.0.1; + listen 8000; + listen *:8000; + listen localhost:8000; + listen [::]:8000; + listen [fe80::1]; + listen unix:/var/run/nginx.sock; + ``` * **配置实例一:对所有请求实现一般轮询规则的负载均衡** ``` http { upstream live_node { # 配置后端服务器组 - server 127.0.0.1:8089; + #max_fails默认值为1,fail_timeout默认值为10s,max_fails=0表示不做检查 + server 127.0.0.1:8089 weight=1 max_fails=1 fail_timeout=10s; server 127.0.0.1:8088; keepalive 32; hash $request_uri consistent; @@ -18,6 +30,15 @@ location / { proxy_pass http://live_node; # 注意:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机 proxy_set_header Host $host; # 保留客户端的真实信息 + proxy_set_header Host $host:$server_port; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Real-PORT $remote_port; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + proxy_redirect off; + proxy_buffer_size 128k; + proxy_buffers 32 32k; + proxy_busy_buffers_size 128k; } } @@ -40,6 +61,12 @@ } } ``` + + Nginx-proxy 详解文章链接 + + 查看错误日志 + `upstream sent too big header while reading response header from upstream` + + [Nginx-proxy_buffer_size and fastcgi_buffer](http://blog.csdn.net/u010391029/article/details/50850210) + + [http://wiki.nginx.org/NginxHttpProxyModule](http://wiki.nginx.org/NginxHttpProxyModule) + + [http://blog.sina.com.cn/s/blog_5dc960cd0100i4mt.html](http://blog.sina.com.cn/s/blog_5dc960cd0100i4mt.html) > 参数:`keepalive connections;` >>补充:`由于短连接消耗前端代理服务器的资源现象严重,因此会将一部分连接定义为长连接以节省资源` >>FUN:`#为每个worker进程保留的空闲的长连接数量` diff --git a/Nginx/Nginx-Web/Nginx-8-proxy_cache.md b/Nginx/Nginx-Web/Nginx-8-proxy_cache.md new file mode 100644 index 0000000000000000000000000000000000000000..c106db4225ab4dd5aad86958a03b0c0ba37b2144 --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-8-proxy_cache.md @@ -0,0 +1,187 @@ +## 如何配置proxy_cache模块 ++ [官方:ngx_http_proxy_module](http://nginx.org/en/docs/http/ngx_http_proxy_module.html) ++ `Http`配置文件 + ```bash + user www; + worker_processes 1; + + error_log logs/error.log error; + + pid /run/nginx.pid; + + worker_rlimit_nofile 204800; + + events { + worker_connections 65535; + multi_accept on; + use epoll; + } + + http { + lua_package_path '/usr/local/openresty/lualib/?.lua;/usr/local/openresty/nginx/conf/waf/?.lua;'; + lua_package_cpath '/usr/local/openresty/lualib/?.so;;'; + + init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua"; + access_by_lua_file "/usr/local/openresty/nginx/conf/waf/waf.lua"; + + include mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"' + '"$upstream_cache_status"'; # nginx cache命中率统计 + + charset UTF-8; + client_header_buffer_size 32k; + large_client_header_buffers 4 32k; + + client_header_timeout 100; + client_body_timeout 100; + client_max_body_size 800m; + client_body_buffer_size 512k; + reset_timedout_connection on; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + + keepalive_timeout 75 20; + + proxy_connect_timeout 5; + proxy_send_timeout 5; + proxy_read_timeout 60; + # 是否启用或者关闭 proxy_buffer,默认为 on + proxy_buffering on; + # 设置缓存大小,默认4KB、8KB 保持与 proxy_buffers 指令中size变量相同或者更小 + proxy_buffer_size 16k; + # proxy_buffer个数和Buffer大小(一般设置为内存页大小) + proxy_buffers 4 64k; + # 限制处于 BUSY 状态的 proxy_buffer 的总大小 + proxy_busy_buffers_size 128k; + # 所有临时文件总体积大小,磁盘上的临时文件不能超过该配置 + proxy_max_temp_file_size 500MB; + # 配置同时写入临时文件的数据量的总大小 + proxy_temp_file_write_size 128k; + + gzip on; + gzip_min_length 1k; + gzip_buffers 4 64k; + gzip_http_version 1.1; + gzip_comp_level 6; + gzip_types text/plain application/x-javascript text/css application/javascript text/javascript image/jpeg image/gif image/png application/xml application/json; + gzip_vary on; + gzip_disable "MSIE [1-6].(?!.*SV1)"; + + # 文件路径,临时存放代理服务器的大体积响应数据 + proxy_temp_path /home/www/data/nginx/tmp-test; + # 设置WEB缓存区名称为 cache_one ,内存缓存空间大小为100M,一天清理一次,硬盘缓存空间大小为10G + proxy_cache_path /home/www/data/nginx/cache-test levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g; + + index index.php index.html index.htm; + include "/usr/local/openresty/nginx/conf/vhost/*.conf"; + } + ``` ++ `Server`配置文件 + + ```bash + server { + listen 8087; + server_name localhost; + + location / { + # 如果后端的服务器返回500 502 503 504 执行超时等错误,将请求转发到另外一台服务器 + proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header; + # 定义用于缓存的共享内存区域 + proxy_cache cache_one; + # 针对不同的HTTP状态码设置不同的缓存时间 + proxy_cache_valid 200 304 1h; + proxy_cache_valid 404 1m; + # WEB缓存的Key值域名、URI、参数组成 + proxy_cache_key $host$uri$is_args$args; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + # 显示缓存的状态 + add_header Nginx-Cache "$upstream_cache_status"; + # 可以禁用一个或多个响应头字段的处理 [Nginx不缓存,可以添加以下语句] + proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; + proxy_pass http://www.tinywan.com; + expires 1d; + } + } + ``` ++ 配置测试 + + 打印响应头 + ```bash + www@TinywanAliYun:$ curl -I http://127.0.0.1:8087/ + HTTP/1.1 200 OK + Server: openresty/1.11.2.5 + Date: Sat, 18 Nov 2017 15:46:55 GMT + Content-Type: text/html; charset=utf-8 + Connection: keep-alive + Keep-Alive: timeout=20 + Vary: Accept-Encoding + Expires: Sun, 19 Nov 2017 15:46:55 GMT + Cache-Control: max-age=86400 + Pragma: no-cache + Nginx-Cache: HIT + ``` + + 缓存目录 + ```bash + www@TinywanAliYun:~/data/nginx/cache-test$ tree -L 4 + . + ├── 0 + │   └── 49 + │   └── 51ab3cb31fd7929a0346796693d53490 + └── 9 + └── f4 + └── 3a020dc16513d3abee9ba74688d53f49 + + 4 directories, 2 files + www@TinywanAliYun:~/data/nginx/cache-test$ cat 0/49/51ab3cb31fd7929a0346796693d53490 + ³QZݵǘ£CZC°(±"58c8b5dd-423e" + KEY: 127.0.0.1/favicon.ico // 代理服务IP地址 + HTTP/1.1 200 OK + Server: nginx/1.6.0 // 被代理服务器信息 + Date: Sat, 18 Nov 2017 14:28:51 GMT + Content-Type: image/x-icon + Content-Length: 16958 + Last-Modified: Wed, 15 Mar 2017 03:32:45 GMT + Connection: close + ETag: "58c8b5dd-423e" + Accept-Ranges: bytes + ``` ++ `$upstream_cache_status` 包含以下几种状态 + + ```bash + ·MISS 未命中,请求被传送到后端 + ·HIT 缓存命中 + ·EXPIRED 缓存已经过期请求被传送到后端 + ·UPDATING 正在更新缓存,将使用旧的应答 + ·STALE 后端将得到过期的应答 + ``` ++ `nginx cache`命中率统计 + + ```bash + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"' + '"$upstream_cache_status"'; + ``` + > 命中率统计方法:用HIT的数量除以日志总量得出缓存命中率 + + > `awk '{if($NF==""HIT"") hit++} END {printf "%.2f%",hit/NR}' access.log` + ++ 通过crontab脚本将每天的命中率统计到一个日志中,以备查看 + + ```bash + #!/bin/bash + LOG_FILE='/usr/local/nginx/logs/access.log.1' + LAST_DAY=$(date +%F -d "-1 day") + awk '{if($NF==""HIT"") hit++} END {printf "'$LAST_DAY': %d %d %.2f%n", hit,NR,hit/NR}' $LOG_FILE + ``` ++ 帮助文档 + + [Nginx proxy_cache 缓存配置](http://blog.csdn.net/dengjiexian123/article/details/53386586) + + [Nginx Proxy Cache原理和最佳实践](http://www.jianshu.com/p/625c2b15dad5) + + [nginx缓存设置proxy_cache(PHP)](https://www.cnblogs.com/zlingh/p/5879988.html) \ No newline at end of file diff --git a/Nginx/Nginx-Web/Nginx-8-tcp-Proxy.md b/Nginx/Nginx-Web/Nginx-8-tcp-Proxy.md new file mode 100644 index 0000000000000000000000000000000000000000..7bffc9a5348d650cacbf12b55bd8b5516a36fa16 --- /dev/null +++ b/Nginx/Nginx-Web/Nginx-8-tcp-Proxy.md @@ -0,0 +1,20 @@ + +#### Nginx服务器TCP代理服务 +--- +* **Nginx 官方自带配置** + ``` + stream { + upstream rtmp { + server 127.0.0.1:8089; # 这里配置成要访问的地址 + server 127.0.0.2:1935; + server 127.0.0.3:1935; #需要代理的端口,在这里我代理一一个RTMP模块的接口1935 + } + server { + listen 1935; # 需要监听的端口 + proxy_timeout 20s; + proxy_pass rtmp; + } + } + ``` ++ [参考博客地址](http://www.cnblogs.com/tinywan/p/6560889.html) + diff --git a/Nginx/Nginx-Web/ngx_http_upstream_module.md b/Nginx/Nginx-Web/ngx_http_upstream_module.md new file mode 100644 index 0000000000000000000000000000000000000000..51e6252d9f924596f129406b0d17f0c5f03189c9 --- /dev/null +++ b/Nginx/Nginx-Web/ngx_http_upstream_module.md @@ -0,0 +1,209 @@ +## 详解:Nginx 反向代理、后端检测模块 + +#### Nginx + +``` +shell > yum -y install gcc gcc-c++ make wget zlib-devel pcre-devel openssl-devel +shell > wget http://nginx.org/download/nginx-1.12.2.tar.gz +shell > tar zxf nginx-1.12.2.tar.gz; cd nginx-1.12.2 +shell > ./configure --prefix=/usr/local/nginx-1.12.2 && make && make install +``` +#### 后端服务器 + +``` +shell > curl 192.168.10.24:8080 +welcome to tomcat1 +shell > curl 192.168.10.24:8081 +welcome to tomcat2 +shell > curl 192.168.10.24:8082 +welcome to tomcat3 +``` +好了,三台后端服务器已经启动,分别监听 8080、8081、8082,分别返回 1、2、3 + +配置`ngx_http_proxy_module`和`ngx_http_upstream_module`模块 + + +编辑配置文件`vim conf/nginx.conf` +``` +user nobody; +worker_processes 1; + +pid logs/nginx.pid; +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + upstream ls { + server 192.168.10.24:8080 weight=1 max_fails=3 fail_timeout=20s; + server 192.168.10.24:8081 weight=2 max_fails=3 fail_timeout=20s; + server 192.168.10.24:8082 weight=3 max_fails=3 fail_timeout=20s; + } + + server { + listen 80; + + location / { + proxy_pass http://ls; + } + } +} +``` +这是一个最简配的 Nginx 配置文件,定义了一个负载均衡池,池中有三台服务器,权重分别是 1、2、3 ( 越大越高 ) + +最大失败次数 3 次,超过 3 次失败后,20 秒内不检测。 + +当用户访问该 IP 的 80 端口时,被转发到后端的服务器。下面是一些反向代理的配置。 + +``` +# 故障转移策略,当后端服务器返回如下错误时,自动负载到后端其余机器 +proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header; + +# 设置后端服务器获取用户真实IP、代理者真实IP等 +proxy_redirect off; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + +# 用于指定客户端请求主体缓存区大小,可以理解成先保存到本地再传给用户 +client_body_buffer_size 128k; + +# 表示与后端服务器连接的超时时间,即发起握手等侯响应的超时时间 +proxy_connect_timeout 90; + +# 表示后端服务器的数据回传时间,即在规定时间之后端服务器必须传完所有的数据,否则 Nginx 将断开这个连接 +proxy_send_timeout 90; + +# 设置 Nginx 从代理的后端服务器获取信息的时间,表示连接建立成功后,Nginx 等待后端服务器的响应时间,其实是 Nginx 已经进入后端的排队中等候处理的时间 +proxy_read_timeout 90; + +# 设置缓冲区大小,默认该缓冲区大小等于指令 proxy_buffers 设置的大小 +proxy_buffer_size 4k; + +# 设置缓冲区的数量和大小。Nginx 从代理的后端服务器获取的响应信息,会放置到缓冲区 +proxy_buffers 4 32k; + +# 用于设置系统很忙时可以使用的 proxy_buffers 大小,官方推荐大小为 proxu_buffers 的两倍 +proxy_busy_buffers_size 64k; + +# 指定 proxy 缓存临时文件的大小 +proxy_temp_file_write_size 64k; +shell > /usr/local/nginx-1.12.2/sbin/nginx -t +nginx: the configuration file /usr/local/nginx-1.12.2/conf/nginx.conf syntax is ok +nginx: configuration file /usr/local/nginx-1.12.2/conf/nginx.conf test is successful + +shell > /usr/local/nginx-1.12.2/sbin/nginx + +shell > i=0; while [ $i -lt 10 ];do curl localhost; let i++;done +welcome to tomcat2 +welcome to tomcat3 +welcome to tomcat3 +welcome to tomcat2 +welcome to tomcat1 +welcome to tomcat3 +welcome to tomcat2 +welcome to tomcat3 +welcome to tomcat3 +welcome to tomcat2 +``` + +总共请求10次,tomcat3 响应了5次,因为它的权重最高(weight=3)。 + +这样有一个问题,由于没有后端检测功能,当后端某一服务器无法提供服务时,该链接先被转发到这台机器,然后发现该机故障,而后才转发到其它机器。 + +导致资源浪费。 + +nginx_http_upstream_check_module + +``` +shell > git clone https://github.com/yaoweibin/nginx_upstream_check_module.git + +shell > yum -y install patch + +shell > cd /usr/local/src/nginx-1.12.2; patch -p1 < /usr/local/src/nginx_upstream_check_module/check_1.12.1+.patch +patching file src/http/modules/ngx_http_upstream_hash_module.c +patching file src/http/modules/ngx_http_upstream_ip_hash_module.c +patching file src/http/modules/ngx_http_upstream_least_conn_module.c +patching file src/http/ngx_http_upstream_round_robin.c +patching file src/http/ngx_http_upstream_round_robin.h +切换到 Nginx 源码目录,打补丁 ( 注意与自己的 Nginx 版本匹配 ) + +shell > ./configure --prefix=/usr/local/nginx-1.12.2 --add-module=/usr/local/src/nginx_upstream_check_module +shell > make && make install +``` +重新编译、安装 Nginx,注意加上原来的编译参数 + +`vim /usr/local/nginx-1.12.2/conf/nginx.conf` +配置文件如下所示: +``` +upstream ls { + server 192.168.10.24:8080; + server 192.168.10.24:8081; + server 192.168.10.24:8082; + + check interval=3000 rise=2 fall=5 timeout=1000 type=http; +} + +server { + listen 80; + + location / { + proxy_pass http://ls; + } + + location /status { + check_status; + access_log off; + # allow x.x.x.x; + # deny all; + } +} +``` +去掉了权重值,注意:是可以同时存在的。 + +添加了一行,检测间隔3000毫秒,连续成功2次标记为UP,连续失败5次标记为DOWN,超时时间1000毫秒,检测类型HTTP。 + +``` +shell > /usr/local/nginx-1.12.2/sbin/nginx -t +nginx: the configuration file /usr/local/nginx-1.12.2/conf/nginx.conf syntax is ok +nginx: configuration file /usr/local/nginx-1.12.2/conf/nginx.conf test is successful + +shell > /usr/local/nginx-1.12.2/sbin/nginx -s stop +shell > /usr/local/nginx-1.12.2/sbin/nginx +``` +直接 -s reload 貌似不行~ + +``` +shell > curl localhost/status?format=json +{"servers": + { + "total": 3, + "generation": 1, + "server": [ + {"index": 0, "upstream": "ls", "name": "192.168.10.24:8080", "status": "up", "rise": 20, "fall": 0, "type": "http", "port": 0}, + {"index": 1, "upstream": "ls", "name": "192.168.10.24:8081", "status": "up", "rise": 18, "fall": 0, "type": "http", "port": 0}, + {"index": 2, "upstream": "ls", "name": "192.168.10.24:8082", "status": "up", "rise": 19, "fall": 0, "type": "http", "port": 0} + ] + } +} +``` +总共有三台机器,都属于负载均衡 ls 组,状态 up,连续成功次数等等。 + +``` +shell > curl localhost/status?format=json +{"servers": + { + "total": 3, + "generation": 1, + "server": [ + {"index": 0, "upstream": "ls", "name": "192.168.10.24:8080", "status": "up", "rise": 73, "fall": 0, "type": "http", "port": 0}, + {"index": 1, "upstream": "ls", "name": "192.168.10.24:8081", "status": "down", "rise": 0, "fall": 6, "type": "http", "port": 0}, + {"index": 2, "upstream": "ls", "name": "192.168.10.24:8082", "status": "up", "rise": 68, "fall": 0, "type": "http", "port": 0} + ] + } +} +``` +关一台后端的话,就变成了这样!重启检测成功后,会被重新加入到负载均衡中! \ No newline at end of file diff --git a/Nginx/Nginx-Web/openresty-nginx-lua-Proxy.md b/Nginx/Nginx-Web/openresty-nginx-lua-Proxy.md new file mode 100644 index 0000000000000000000000000000000000000000..67fef7dbb90c26536aad9cc45af8bdcab6387b25 --- /dev/null +++ b/Nginx/Nginx-Web/openresty-nginx-lua-Proxy.md @@ -0,0 +1,345 @@ +### Openresty-Lua动态修改upstream后端服务 ++ nginx.conf 配置文件 + ``` + worker_processes 1; + pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + sendfile on; + + keepalive_timeout 65; + + lua_shared_dict upstreams 1m; # 声明一个ngx多进程全局共享内存区域,_G 作为基于shm的Lua字典的存储空间ngx.shared. + upstream default_upstream { # 配置后端服务器组 + server 127.0.0.1:8081; + server 127.0.0.1:8082; + } + + upstream lua_upstream { # 配置后端服务器组 + server 127.0.0.1:8084; + server 127.0.0.1:8083; + } + + server { + listen 80; + server_name localhost; + + access_log logs/80.access.log main; + error_log logs/80.error.log error; + + location = /_switch_upstream { + content_by_lua_block{ + local ups = ngx.req.get_uri_args()["upstream"] + if ups == nil or ups == "" then + ngx.say("upstream is nil 1") + return nil + end + local host = ngx.var.http_host + local upstreams = ngx.shared.upstreams + local ups_src = upstreams:get(host) + ngx.say("Current upstream is :",ups_src) + ngx.log(ngx.WARN, host, " change upstream from ", ups_src, " to ", ups) + local succ, err, forcible = upstreams:set(host, ups) + ngx.say(host, " change upstream from ", ups_src, " to ", ups) + } + } + + location / { + set_by_lua_block $my_upstream { + local ups = ngx.shared.upstreams:get(ngx.var.http_host) + if ups ~= nil then + ngx.log(ngx.ERR, "get [", ups,"] from ngx.shared") + return ups + end + return "default_upstream" + } + + proxy_next_upstream off; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header Connection ""; + proxy_pass http://$my_upstream ; + } + } + + server { + listen 8081; + server_name localhost; + + location / { + root html81; + index index.html index.htm; + } + } + + server { + listen 8082; + server_name localhost; + + location / { + root html82; + index index.html index.htm; + } + } + + server { + listen 8083; + server_name localhost; + + location / { + root html83; + index index.html index.htm; + } + } + + server { + listen 8084; + server_name localhost; + + location / { + root html84; + index index.html index.htm; + } + } + } + ``` ++ 4个端口分别对应4个html 根目录 + + html81/index.html 内容 `server name 8081` + + html82/index.html 内容 `server name 8082` + + html83/index.html 内容 `server name 8083` + + html84/index.html 内容 `server name 8084` ++ 如何切换后端upstream + + `default_upstream` 切换到 `lua_upstream` + ``` + root@tinywan:# curl http://127.0.0.1/_switch_upstream?upstream=lua_upstream + 127.0.0.1 change upstream from default_upstream to lua_upstream + ``` + + `lua_upstream` 切换(还原`default_upstream`)到 `default_upstream` + ``` + root@tinywan:# curl http://127.0.0.1/_switch_upstream?upstream=default_upstream + 127.0.0.1 change upstream from lua_upstream to default_upstream + ``` ++ 一个收集upstream_response_time的平均数据的例子 + ``` + lua_shared_dict log_dict 5M # 声明一个ngx多进程全局共享内存区域 + + server{ + location / { + proxy_pass http;//mybackend # 代理模块 + log_by_lua ' + local log_dict = ngx.shared.log_dict + local upstream_time = tonumber(ngx.var.upstream_response_time) + local sum = log_dict:get("upstream_time-sum") or 0 + sum = sum + upstream_time + log_dict:set("upsteam_time-sum", sum) + local newval, err = log_dict:incr("upstream_time-nb", 1) + if not newval and err == "not found" then + log_dict:add("upstream_time-nb", 0) + log_dict:incr("upstream_time-nb", 1) + end + ' + } + location = /status { + content_by_lua ' + local log_dict = ngx.shared.log_dict + local sum = log_dict:get("upstream_time-sum") + local nb = log_dict:get("upstream_time-nb") + + if nb and sum then + ngx.say("average upstream response time: ", sum/nb, " (", nb, " reqs)") + else + ngx.say("no data yet") + end + ' + } + } + ``` ++ 动态修改upstream后端服务和upstream_response_time的平均数据 合并后的代码 + ``` + #user nobody; + worker_processes 1; + pid logs/nginx.pid; + events { + worker_connections 1024; + } + + http { + include mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + sendfile on; + + keepalive_timeout 65; + + lua_shared_dict upstreams 1m; # ngx多进程全局共享内存,保存upstream值 + upstream default_upstream { # 配置后端服务器组 + server 127.0.0.1:8081; + server 127.0.0.1:8082; + } + + upstream lua_upstream { # 配置后端服务器组 + server 127.0.0.1:8084; + server 127.0.0.1:8083; + } + + + server { + listen 80; + server_name localhost; + + access_log logs/80.access.log main; + error_log logs/80.error.log error; + + location = /_switch_upstream { + default_type 'text/html'; + content_by_lua_block{ + local ups = ngx.req.get_uri_args()["upstream"] + if ups == nil or ups == "" then + ngx.say("upstream is nil 1") + return nil + end + local host = ngx.var.http_host + local upstreams = ngx.shared.upstreams + local ups_src = upstreams:get(host) + ngx.say("Current upstream is :",ups_src) + ngx.log(ngx.WARN, host, " change upstream from ", ups_src, " to ", ups) + local succ, err, forcible = upstreams:set(host, ups) + ngx.say(host, " change upstream from ", ups_src, " to ", ups) + } + } + + #location ~ (^/api/|^/p/|^/m/|^/oauthapi/) { + location / { + set_by_lua_block $my_upstream { + local ups = ngx.shared.upstreams:get(ngx.var.http_host) + if ups ~= nil then + ngx.log(ngx.ERR, "get [", ups,"] from ngx.shared") + return ups + end + return "default_upstream" + } + + proxy_next_upstream off; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header Connection ""; + proxy_pass http://$my_upstream ; + + log_by_lua_block { + local log_dict = ngx.shared.upstreams + local upstream_time = tonumber(ngx.var.upstream_response_time) + + local sum = log_dict:get("upstream_time-sum") or 0 + sum = sum + upstream_time + log_dict:set("upstream_time-sum", sum) + + local newval, err = log_dict:incr("upstream_time-nb", 1) + if not newval and err == "not found" then + log_dict:add("upstream_time-nb", 0) + log_dict:incr("upstream_time-nb", 1) + end + } + } + + location = /status { + default_type 'text/html'; -- 通过浏览器可访问 + content_by_lua_block { + local log_dict = ngx.shared.upstreams + local sum = log_dict:get("upstream_time-sum") + local nb = log_dict:get("upstream_time-nb") + + if nb and sum then + ngx.say("average upstream response time: ", sum / nb, + " (", nb, " reqs)") + else + ngx.say("no data yet") + end + } + } + + } + + server { + listen 8099; + server_name localhost; + + #charset koi8-r; + + access_log logs/80.access.log main; + error_log logs/80.error.log error; + location / { + #proxy_pass http://live_node; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } + + server { + listen 8081; + server_name localhost; + + location / { + root html81; + index index.html index.htm; + } + } + + server { + listen 8082; + server_name localhost; + + location / { + root html82; + index index.html index.htm; + } + } + + server { + listen 8083; + server_name localhost; + + location / { + root html83; + index index.html index.htm; + } + } + + server { + listen 8084; + server_name localhost; + + location / { + root html84; + index index.html index.htm; + } + } + } + ``` ++ 测试结果: + ``` + root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.1/status + average upstream response time: 0.0003953488372093 (129 reqs) + ``` ++ 浏览器测试,记得加上这个`default_type 'text/html';`,在浏览器地址栏直接输入即可访问 + `http://127.0.0.1/_switch_upstream?upstream=default_upstream` + ++ HELP:[http://chattool.sinaapp.com/?p=2372](http://chattool.sinaapp.com/?p=2372) \ No newline at end of file diff --git a/Nginx/more-domain-config.md b/Nginx/more-domain-config.md new file mode 100644 index 0000000000000000000000000000000000000000..670bdcab0ad00573ce44bcde9a531fda5cc37b9a --- /dev/null +++ b/Nginx/more-domain-config.md @@ -0,0 +1,147 @@ +## Nginx 同一个IP上配置多个HTTPS主机 ++ [Nginx 同一个IP上配置多个HTTPS主机](http://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-configuration/) ++ 域名列表 + + | 序号 | 名称 | 域名 | HTTPS主机 | + | :--: |:--: |:---------------:| :-----| + | 1 | 官方域名 | www.tinywan.com | https://www.tinywan.com/ | + | 2 | 直播域名 | live.tinywan.com | https://live.tinywan.com/ | + | 3 | 点播域名 | vod.tinywan.com | https://vod.tinywan.com/ | + | 4 | 文档域名 | doc.tinywan.com | https://doc.tinywan.com/ | + ++ Openresty 编译 + + ```bash + www@TinywanAliYun:~/DEMO/openresty-1.11.2.5$ + ./configure --prefix=/usr/local/openresty --with-luajit \ + --with-http_ssl_module --with-openssl=/usr/local/openssl \ + --with-openssl-opt="enable-tlsext" --without-http_redis2_module \ + --with-http_iconv_module --with-http_stub_status_module \ + --with-http_xslt_module --add-dynamic-module=/home/www/DEMO/nginx-ts-module \ + --add-dynamic-module=/home/www/DEMO/nginx-rtmp-module + ... + make + sudo make install + ``` + > 注意添加配置:`--with-openssl-opt="enable-tlsext" `,默认情况下是`TLS SNI support disabled` ++ `Nginx.conf`配置文件: + + 配置文件列表 + + ```bash + www@TinywanAliYun:/usr/local/openresty/nginx/conf/vhost$ ls + doc.tinywan.com.conf live_rtmp_hls.conf live.tinywan.com.conf + main.conf vod.tinywan.com.conf www.tinywan.com.conf + ``` + + `nginx.conf` + + ```bash + http { + ... + index index.php index.html index.htm; + include "/usr/local/openresty/nginx/conf/vhost/*.conf"; + } + ``` + + `main.conf` + + ```bash + # 配置HTTP请求重定向 + server { + listen 80; + server_name www.tinywan.com; #live.tinywan.com vod.tinywan.com; + rewrite ^ https://$http_host$request_uri? permanent; + } + ``` + + `www.tinywan.com.conf` + + ```bash + server { + #listen 80; + listen 443 ssl; + server_name www.tinywan.com; + set $root_path /home/www/web/go-study-line/public; + root $root_path; + + ssl on; + ssl_certificate /etc/letsencrypt/live/www.tinywan.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/www.tinywan.com//privkey.pem; + server_tokens off; + + location / { + #access_by_lua_file /usr/local/openresty/nginx/conf/lua_script/resty-limit-req.lua; + if (!-e $request_filename) { + rewrite ^(.*)$ /index.php?s=/$1 last; + break; + } + } + + location = /favicon.ico { + log_not_found off; + } + + location ~ \.php$ { + #access_by_lua_file /usr/local/openresty/nginx/conf/lua_script/resty-limit-req.lua; + fastcgi_pass unix:/var/run/php7.1.8-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + fastcgi_buffer_size 128k; + fastcgi_buffers 4 256k; + fastcgi_busy_buffers_size 256k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + } + } + ``` + + `live.tinywan.com.conf` + + ```bash + # live.tinywan.com + server{ + listen 443 ssl; + server_name live.tinywan.com; + + root /home/www/web/live.tinywan.com; + + ssl on; + ssl_certificate /etc/letsencrypt/live/www.tinywan.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/www.tinywan.com//privkey.pem; + server_tokens off; + + } + ``` + + `vod.tinywan.com.conf` + + ```bash + # vod.tinywan.com + server{ + listen 443 ssl; + server_name vod.tinywan.com; + + root /home/www/web/vod.tinywan.com; + + ssl on; + ssl_certificate /etc/letsencrypt/live/www.tinywan.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/www.tinywan.com//privkey.pem; + server_tokens off; + + } + ``` + + `doc.tinywan.com.conf` + + ```bash + # doc.tinywan.com + server{ + listen 443 ssl; + server_name doc.tinywan.com; + + root /home/www/web/doc.tinywan.com; + + ssl on; + ssl_certificate /etc/letsencrypt/live/www.tinywan.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/www.tinywan.com//privkey.pem; + server_tokens off; + + } + ``` + \ No newline at end of file diff --git a/Nginx/nginx b/Nginx/nginx new file mode 100644 index 0000000000000000000000000000000000000000..42ea15a096f413110716b9e283686f4fd938932b --- /dev/null +++ b/Nginx/nginx @@ -0,0 +1,408 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: nginx +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: nginx init.d dash script for Ubuntu or other *nix. +# Description: nginx init.d dash script for Ubuntu or other *nix. +### END INIT INFO +#------------------------------------------------------------------------------ +# nginx - this Debian Almquist shell (dash) script, starts and stops the nginx +# daemon for Ubuntu and other *nix releases. +# +# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ +# proxy and IMAP/POP3 proxy server. This \ +# script will manage the initiation of the \ +# server and it's process state. +# +# processname: nginx +# config: /usr/local/nginx/conf/nginx.conf +# pidfile: /usr/local/nginx/logs/nginx.pid +# Provides: nginx +# +# Author: Jason Giedymin +# . +# +# Version: 3.9.0 12-MAY-2015 jason.giedymin AT gmail.com +# Notes: nginx init.d dash script for Ubuntu. +# Tested with: Ubuntu 14.10, nginx-1.7.9 +# +# This script's project home is: +# http://github.com/JasonGiedymin/nginx-init-ubuntu +# +#------------------------------------------------------------------------------ +# MIT X11 License +#------------------------------------------------------------------------------ +# +# Copyright (c) 2008-2013 Jason Giedymin, http://jasongiedymin.com +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#------------------------------------------------------------------------------ + +#------------------------------------------------------------------------------ +# Functions +#------------------------------------------------------------------------------ +LSB_FUNC=/lib/lsb/init-functions + +# Test that init functions exists +test -r $LSB_FUNC || { + echo "$0: Cannot find $LSB_FUNC! Script exiting." 1>&2 + exit 5 +} + +. $LSB_FUNC + +#------------------------------------------------------------------------------ +# Consts +#------------------------------------------------------------------------------ +# Include nginx defaults if available +if [ -f /etc/default/nginx ]; then + . /etc/default/nginx +fi + +# Minimize path +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +PS=${PS:-"nginx"} # process name +DESCRIPTION=${DESCRIPTION:-"Nginx Server..."} # process description +NGINXPATH=${NGINXPATH:-/opt/openresty/nginx} # root path where installed +DAEMON=${DAEMON:-$NGINXPATH/sbin/nginx} # path to daemon binary +NGINX_CONF_FILE=${NGINX_CONF_FILE:-$NGINXPATH/conf/nginx.conf} # config file path + +PIDNAME=${PIDNAME:-"nginx"} # lets you do $PS-slave +PIDFILE=${PIDFILE:-$PIDNAME.pid} # pid file +PIDSPATH=${PIDSPATH:-$NGINXPATH/logs} # default pid location, you should change it +RUNAS=${RUNAS:-root} # user to run as + +SCRIPT_OK=0 # ala error codes +SCRIPT_ERROR=1 # ala error codes +TRUE=1 # boolean +FALSE=0 # boolean + +#------------------------------------------------------------------------------ +# Simple Tests +#------------------------------------------------------------------------------ + +# Test if nginx is a file and executable +test -x $DAEMON || { + echo "$0: You don't have permissions to execute nginx." 1>&2 + exit 4 +} + +# You can also set your conditions like so: +# set exit condition +# set -e + +#------------------------------------------------------------------------------ +# Functions +#------------------------------------------------------------------------------ + +setFilePerms(){ + if [ -f $PIDSPATH/$PIDFILE ]; then + chmod 400 $PIDSPATH/$PIDFILE + fi +} + +configtest() { + $DAEMON -t -c $NGINX_CONF_FILE +} + +getPSCount() { + return `pgrep -f $PS | wc -l` +} + +isRunning() { + if [ $1 ]; then + pidof_daemon $1 + PID=$? + + if [ $PID -gt 0 ]; then + return 1 + else + return 0 + fi + else + pidof_daemon + PID=$? + + if [ $PID -gt 0 ]; then + return 1 + else + return 0 + fi + fi +} + +#courtesy of php-fpm +wait_for_pid () { + try=0 + + while test $try -lt 35 ; do + case "$1" in + 'created') + if [ -f "$2" ]; then + try='' + break + fi + ;; + + 'removed') + if [ ! -f "$2" ]; then + try='' + break + fi + ;; + esac + + try=`expr $try + 1` + sleep 1 + done +} + +status(){ + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + log_warning_msg "$DESCRIPTION found running with processes: `pidof $PS`" + rc=0 + else + log_warning_msg "$DESCRIPTION is NOT running." + rc=3 + fi + + return +} + +removePIDFile(){ + if [ $1 ]; then + if [ -f $1 ]; then + rm -f $1 + fi + else + #Do default removal + if [ -f $PIDSPATH/$PIDFILE ]; then + rm -f $PIDSPATH/$PIDFILE + fi + fi +} + +start() { + log_daemon_msg "Starting $DESCRIPTION" + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + log_end_msg $SCRIPT_ERROR + rc=0 + else + start-stop-daemon --start --quiet --chuid \ + $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON \ + -- -c $NGINX_CONF_FILE + status=$? + setFilePerms + + if [ "${status}" -eq 0 ]; then + log_end_msg $SCRIPT_OK + rc=0 + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + fi + + return +} + +stop() { + log_daemon_msg "Stopping $DESCRIPTION" + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE + + wait_for_pid 'removed' $PIDSPATH/$PIDFILE + + if [ -n "$try" ]; then + log_end_msg $SCRIPT_ERROR + rc=0 # lsb states 1, but under status it is 2 (which is more prescriptive). Deferring to standard. + else + removePIDFile + log_end_msg $SCRIPT_OK + rc=0 + fi + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + + return +} + +reload() { + configtest || return $? + + log_daemon_msg "Reloading (via HUP) $DESCRIPTION" + + isRunning + + if [ $? -eq $TRUE ]; then + kill -HUP `cat $PIDSPATH/$PIDFILE` + log_end_msg $SCRIPT_OK + rc=0 + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + + return +} + +quietupgrade() { + log_daemon_msg "Peforming Quiet Upgrade $DESCRIPTION" + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + kill -USR2 `cat $PIDSPATH/$PIDFILE` + kill -WINCH `cat $PIDSPATH/$PIDFILE.oldbin` + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin` + wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin + removePIDFile $PIDSPATH/$PIDFILE.oldbin + + log_end_msg $SCRIPT_OK + rc=0 + else + log_end_msg $SCRIPT_ERROR + + log_daemon_msg "ERROR! Reverting back to original $DESCRIPTION" + + kill -HUP `cat $PIDSPATH/$PIDFILE` + kill -TERM `cat $PIDSPATH/$PIDFILE.oldbin` + kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin` + + wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin + removePIDFile $PIDSPATH/$PIDFILE.oldbin + + log_end_msg $SCRIPT_OK + rc=0 + fi + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + + return +} + +terminate() { + log_daemon_msg "Force terminating (via KILL) $DESCRIPTION" + + PIDS=`pidof $PS` || true + + [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE` + + for i in $PIDS; do + if [ "$i" = "$PIDS2" ]; then + kill $i + wait_for_pid 'removed' $PIDSPATH/$PIDFILE + removePIDFile + fi + done + + log_end_msg $SCRIPT_OK + rc=0 +} + +destroy() { + log_daemon_msg "Force terminating and may include self (via KILLALL) $DESCRIPTION" + killall $PS -q >> /dev/null 2>&1 + log_end_msg $SCRIPT_OK + rc=0 +} + +pidof_daemon() { + PIDS=`pidof $PS` || true + + [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE` + + for i in $PIDS; do + if [ "$i" = "$PIDS2" ]; then + return 1 + fi + done + + return 0 +} + +action="$1" +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|force-reload) + stop + # if [ $rc -ne 0 ]; then + # script_exit + # fi + sleep 1 + start + ;; + reload) + $1 + ;; + status) + status + ;; + configtest) + $1 + ;; + quietupgrade) + $1 + ;; + terminate) + $1 + ;; + destroy) + $1 + ;; + *) + FULLPATH=/etc/init.d/$PS + echo "Usage: $FULLPATH {start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy}" + echo " The 'destroy' command should only be used as a last resort." + exit 3 + ;; +esac + +exit $rc diff --git a/Nginx/nginx-2-config.md b/Nginx/nginx-2-config.md index 1a7383b7b5a13a1c49cc3e5210a5d0366241d861..93a362120c6d0e314dce7a3b21d5d82ac1684f3c 100644 --- a/Nginx/nginx-2-config.md +++ b/Nginx/nginx-2-config.md @@ -71,8 +71,9 @@ -–with-libatomic= 指向libatomic_ops安装目录 -–with-openssl= 指向openssl安装目录 -–with-openssl-opt 在编译时为openssl设置附加参数 --–with-debug 启用debug日志 +--with-debug 启用debug日志 --with-stream_ssl_module +--add-module=/home/tinywan/nchan-1.1.3/ # make && make install # mkdir -pv /var/tmp/nginx/client ``` diff --git a/Nginx/nginx-base-config.md b/Nginx/nginx-base-config.md new file mode 100644 index 0000000000000000000000000000000000000000..5700a2a040b62fd86c6643067771295233b577ba --- /dev/null +++ b/Nginx/nginx-base-config.md @@ -0,0 +1,366 @@ +#### [参考地址](https://mp.weixin.qq.com/s/Crj2Xo8-EJpbq40kXronug) +#### Nginx 配置文件 nginx.conf 详解 + +```javascript +#定义Nginx运行的用户和用户组 +user www www; + +#nginx进程数,建议设置为等于CPU总核心数。 +worker_processes 8; + +#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] +error_log /var/log/nginx/error.log info; + +#进程文件 +pid /var/run/nginx.pid; + +#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 +worker_rlimit_nofile 65535; + +#工作模式与连接数上限 +events +{ +#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 +use epoll; +#单个进程最大连接数(最大连接数=连接数*进程数) +worker_connections 65535; +} + +#设定http服务器 +http +{ +include mime.types; #文件扩展名与文件类型映射表 +default_type application/octet-stream; #默认文件类型 +#charset utf-8; #默认编码 +server_names_hash_bucket_size 128; #服务器名字的hash表大小 +client_header_buffer_size 32k; #上传文件大小限制 +large_client_header_buffers 4 64k; #设定请求缓 +client_max_body_size 8m; #设定请求缓 +sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 +autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。 +tcp_nopush on; #防止网络阻塞 +tcp_nodelay on; #防止网络阻塞 +keepalive_timeout 120; #长连接超时时间,单位是秒 + +#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。 +fastcgi_connect_timeout 300; +fastcgi_send_timeout 300; +fastcgi_read_timeout 300; +fastcgi_buffer_size 64k; +fastcgi_buffers 4 64k; +fastcgi_busy_buffers_size 128k; +fastcgi_temp_file_write_size 128k; + +#gzip模块设置 +gzip on; #开启gzip压缩输出 +gzip_min_length 1k; #最小压缩文件大小 +gzip_buffers 4 16k; #压缩缓冲区 +gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议) +gzip_comp_level 2; #推荐6压缩级别(级别越高,压的越小,越浪费CPU计算资源) +gzip_types text/plain application/x-javascript text/css application/xml; +#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 +gzip_vary on; # 是否传输gzip压缩标志 +#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用 + +upstream blog.ha97.com { +#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 +server 192.168.80.121:80 weight=3; +server 192.168.80.122:80 weight=2; +server 192.168.80.123:80 weight=3; +} + +#虚拟主机的配置 +server +{ + #监听端口 + listen 80; + #域名可以有多个,用空格隔开 + server_name www.ha97.com ha97.com; + index index.html index.htm index.php; + root /data/www/ha97; + location ~ .*\.(php|php5)?$ + { + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + include fastcgi.conf; + } + #图片缓存时间设置 + location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ + { + expires 10d; + } + #JS和CSS缓存时间设置 + location ~ .*\.(js|css)?$ + { + expires 1h; + } + #日志格式设定 + log_format access '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" $http_x_forwarded_for'; + #定义本虚拟主机的访问日志 + access_log /var/log/nginx/ha97access.log access; + + #对 "/" 启用反向代理 + location / { + proxy_pass http://127.0.0.1:88; + proxy_redirect off; + proxy_set_header X-Real-IP $remote_addr; + #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + #以下是一些反向代理的配置,可选。 + proxy_set_header Host $host; + client_max_body_size 10m; #允许客户端请求的最大单文件字节数 + client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数, + proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时) + proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) + proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时) + proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 + proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置 + proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) + proxy_temp_file_write_size 64k; + #设定缓存文件夹大小,大于这个值,将从upstream服务器传 + } + + #设定查看Nginx状态的地址 + location /NginxStatus { + stub_status on; + access_log on; + auth_basic "NginxStatus"; + auth_basic_user_file conf/htpasswd; + #htpasswd文件的内容可以用apache提供的htpasswd工具来产生。 + } + + #本地动静分离反向代理配置 + #所有jsp的页面均交由tomcat或resin处理 + location ~ .(jsp|jspx|do)?$ { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://127.0.0.1:8080; + } + #所有静态文件由nginx直接读取不经过tomcat或resin + location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ + { expires 15d; } + location ~ .*.(js|css)?$ + { expires 1h; } +} +} + +``` +#### 常用配置案例 + +```html +user nginx nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +pid /var/run/nginx/nginx.pid; + +events { + worker_connections 1024; +} + + +http { + include mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + #隐藏Nginx版本信息,禁止网站目录浏览 + server_tokens off; + autoindex off; + #当FastCGI后端服务器处理请求给出http响应码为4xx和5xx时,就转发给nginx + fastcgi_intercept_errors on; + + #关于fastcgi的配置 + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + fastcgi_buffer_size 64k; + fastcgi_buffers 4 64k; + fastcgi_busy_buffers_size 128k; + fastcgi_temp_file_write_size 128k; + + #支持gzip压缩 + gzip on; + gzip_min_length 1k; + gzip_buffers 16 64k; + gzip_http_version 1.1; + gzip_comp_level 6; + gzip_types text/plain application/x-javascript text/css application/javascript text/javascript image/jpeg image/gif image/png application/xml application/json; + gzip_vary on; + gzip_disable "MSIE [1-6].(?!.*SV1)"; + + # + # 重定向所有带www请求到非www的请求 + # + server { + listen *:80; + listen *:443 ssl spdy; + server_name www.typecodes.com; + # ssl证书配置见文章 https://typecodes.com/web/lnmppositivessl.html + ssl_certificate /etc/nginx/ssl/typecodes.crt; + # ssl密钥文件见文章 https://typecodes.com/web/lnmppositivessl.html + ssl_certificate_key /etc/nginx/ssl/typecodes.key; + # 不产生日志 + access_log off; + + # 访问favicon.ico和robots.txt不跳转(把这两个文件存放在上级目录html中) + location ~* ^/(favicon.ico|robots.txt)$ { + root html; + expires max; + log_not_found off; + break; + } + + location / { + return 301 https://typecodes.com$request_uri; + } + } + + # + # 将所有http请求重定向到https + # + server { + listen *:80; + server_name typecodes.com; + # 不产生日志 + access_log off; + + # 访问favicon.ico和robots.txt不跳转(把这两个文件存放在上级目录html中) + location ~* ^/(favicon.ico|robots.txt)$ { + root html; + expires max; + log_not_found off; + break; + } + + location / { + return 301 https://typecodes.com$request_uri; + } + } + + # + # HTTPS server + # + server { + listen *:443 ssl spdy; + server_name typecodes.com; + + # ssl证书配置见文章 https://typecodes.com/web/lnmppositivessl.html + ssl_certificate /etc/nginx/ssl/typecodes.crt; + # ssl密钥文件见文章 https://typecodes.com/web/lnmppositivessl.html + ssl_certificate_key /etc/nginx/ssl/typecodes.key; + ssl_session_cache shared:SSL:20m; + ssl_session_timeout 10m; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA:!CAMELLIA; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #enables TLSv1, but not SSLv2, SSLv3 which is weak and should no longer be used. + ssl_prefer_server_ciphers on; + # 开启spdy功能 + add_header Alternate-Protocol 443:npn-spdy/3.1; + # 严格的https访问 + add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; + + #设置网站根目录 + root /usr/share/nginx/html/typecodes; + index index.php index.html; + + charset utf-8; + + #access_log /var/log/nginx/log/host.access.log main; + + #设置css/javascript/图片等静态资源的缓存时间 + location ~ .*\.(css|js|ico|png|gif|jpg|json|mp3|mp4|flv|swf)(.*) { + expires 60d; + } + + # include /etc/nginx/default.d/*.conf; + # 设置typecho博客的config文章不被访问,保证安全 + location = /config.inc.php{ + deny all; + } + + # keep the uploads directory safe by excluding php, php5, html file accessing. Applying to wordpress and typecho. + # location ~ .*/uploads/.*\.(php|php5|html)$ { + # deny all; + # } + + # 设置wordpress和typecho博客中,插件目录无法直接访问php或者html文件 + location ~ .*/plugins/.*\.(php|php5|html)$ { + deny all; + } + + #Rewrite的伪静态(针对wordpress/typecho),url地址去掉index.php + location / { + if (-f $request_filename/index.html){ + rewrite (.*) $1/index.html break; + } + if (-f $request_filename/index.php){ + rewrite (.*) $1/index.php; + } + if (!-f $request_filename){ + rewrite (.*) /index.php; + } + } + + #访问favicon.ico时不产生日志 + location = /favicon.ico { + access_log off; + } + + #设置40系列错误的应答文件为40x.html + error_page 400 401 402 403 404 /40x.html; + location = /40x.html { + root html; + index index.html index.htm; + } + + #设置50系列错误的应答文件为50x.html + # + error_page 500 501 502 503 504 /50x.html; + location = /50x.html { + root html; + index index.html index.htm; + } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # 设置Nginx和php通信机制为tcp的socket模式,而不是直接监听9000端口 + location ~ .*\.php(\/.*)*$ { + fastcgi_split_path_info ^(.+\.php)(/.+)$; + #fastcgi_pass 127.0.0.1:9000; + # the better form of fastcgi_pass than before + fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + } +} +``` \ No newline at end of file diff --git a/Nginx/nginx-basic.md b/Nginx/nginx-basic.md new file mode 100644 index 0000000000000000000000000000000000000000..b23d86a4cd0231398a735ae368b44307802ea1bc --- /dev/null +++ b/Nginx/nginx-basic.md @@ -0,0 +1,48 @@ + +## Nginx 基础知识 +--- ++ [NGINX 所有 Modules](https://www.nginx.com/resources/wiki/modules/) +#### agentzh的Nginx教程(版本2016.07.21) ++ [agentzh的Nginx教程地址](https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html) ++ Nginx 变量漫谈(一) + + Nginx 变量的值只有一种类型,那就是字符串 + + Nginx “变量插值” + ```bash + location /test { + set $first "hello "; + echo "${first}world"; + } + ``` + + set 指令(以及前面提到的 geo 指令)不仅有赋值的功能,它还有创建 Nginx 变量的副作用,即当作为赋值对象的变量尚不存在时 + + Nginx 变量一旦创建,其变量名的可见范围就是整个 Nginx 配置,甚至可以跨越不同虚拟主机的 server 配置块 + + Nginx 变量的生命期是不可能跨越请求边界的 ++ Nginx 变量漫谈(二) + + 跳转 + + 内部跳转:就是在处理请求的过程中,于服务器内部,从一个 location 跳转到另一个 location 的过程。 + + 外部跳转: HTTP 状态码 301 和 302 所进行的“外部跳转” + + 标准 ngx_rewrite 模块的 rewrite 配置指令其实也可以发起“内部跳转” + + Nginx 核心和各个 Nginx 模块提供的“预定义变量” + + Nginx 会在匹配参数名之前,自动把原始请求中的参数名调整为全部小写的形式 + + 如果你尝试改写另外一些只读的内建变量,比如 $arg_XXX 变量,在某些 Nginx 的版本中甚至可能导致进程崩溃。 ++ Nginx 变量漫谈(四) + + map 指令:用于定义两个 Nginx 变量之间的映射关系,或者说是函数关系 + + map 指令只能在 http 块中使用 + + map 配置指令的工作原理是为用户变量注册 “取处理程序”,并且实际的映射计算是在“取处理程序”中完成的,而“取处理程序”只有在该用户变量被实际读取时才会执行(当然,因为缓存的存在,只在请求生命期中的第一次读取中才被执行),所以对于那些根本没有用到相关变量的请求来说,就根本不会执行任何的无用计算。 ++ Nginx 变量漫谈(四) ++ [Nginx的11个Phases](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-phases.md) ++ [Nginx 陷阱和常见错误](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-1-config.md) ++ [Nginx 高并发系统内核优化](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-parameter-config.md) ++ [nginx 并发数问题思考:worker_connections,worker_processes与 max clients](http://liuqunying.blog.51cto.com/3984207/1420556?utm_source=tuicool) + + 从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法: + 1. nginx作为http服务器的时候: + `max_clients = worker_processes * worker_connections/2` + 1. nginx作为反向代理服务器的时候: + `max_clients = worker_processes * worker_connections/4` + + 从一般建立连接的角度,客户并发连接为1: + 1. nginx作为http服务器的时候: + `max_clients = worker_processes * worker_connections` + 1. nginx作为反向代理服务器的时候: + `max_clients = worker_processes * worker_connections/2` + + nginx做反向代理时,和客户端之间保持一个连接,和后端服务器保持一个连接 + + clients与用户数 + 同一时间的clients(客户端数)和用户数还是有区别的,当一个用户请求发送一个连接时这两个是相等的,但是当一个用户默认发送多个连接请求的时候,clients数就是用户数*默认发送的连接并发数了。 diff --git a/Nginx/nginx-config-bandwidth.md b/Nginx/nginx-config-bandwidth.md new file mode 100644 index 0000000000000000000000000000000000000000..d109bdb91beda645ec4722df8c6c4a1cb3a54fb3 --- /dev/null +++ b/Nginx/nginx-config-bandwidth.md @@ -0,0 +1,112 @@ +## 如何改进 NGINX 配置文件节省带宽? + +#### 为HTML,CSS和JavaScript文件启用Gzip压缩 + +如您所知,用于在现代网站上构建页面的HTML,CSS和JavaScript文件可能非常庞大。在大多数情况下,Web服务器可以即时压缩这些和其他文本文件,以节省网络带宽。 + +查看Web服务器是否正在压缩文件的一种方法是使用浏览器的开发人员工具。对于许多浏览器,您可以使用F12键访问这些工具,并且相关信息位于“网络”选项卡上。 + +![](/Images/screenshot_1588728211136.png) + +默认情况下,NGINX中禁用压缩,但是根据您的安装或Linux发行版,某些设置可能会在默认的nginx.conf文件中启用。在这里,我们在NGINX配置文件中启用gzip压缩: +``` +gzip on; +gzip_types application/xml application/json text/css text/javascript application/javascript; +gzip_vary on; +gzip_comp_level 6; +gzip_min_length 500; +``` + +#### 设置缓存头 +当浏览器检索网页的文件时,它会将副本保留在本地磁盘缓存中,这样,当您再次访问该页面时,它不必从服务器重新获取文件。每个浏览器都使用自己的逻辑来决定何时使用文件的本地副本以及何时在服务器上更改了文件时再次获取它。但是,作为网站所有者,您可以在发送的HTTP响应中设置缓存控制和过期标头,以提高浏览器的缓存行为的效率。从长远来看,您会收到很多不必要的HTTP请求。 + +首先,您可以为字体和图像设置较长的缓存过期时间,这些字体和图像可能不会经常更改(即使更改,它们通常也会获得新的文件名)。在以下示例中,我们指示客户端浏览器将字体和图像在本地缓存中保留一个月: + +``` +location ~* \.(?:jpg|jpeg|gif|png|ico|woff2)$ { + expires 1M; + add_header Cache-Control "public"; +} +``` +#### 启用HTTP / 2协议支持 +HTTP / 2是用于服务网页的下一代协议,旨在更好地利用网络和主机服务器。根据Google文档,它可以更快地加载页面: + +生成的协议对网络更友好,因为与HTTP / 1.x相比,使用的TCP连接更少。这意味着与其他流量的竞争减少,连接寿命更长,从而可以更好地利用可用网络容量。 + +NGINX 1.9.5和更高版本(以及NGINX Plus R7和更高版本)支持HTTP / 2协议,您所需要做的就是启用它。为此,请在您的NGINX配置文件中http2的listen指令中包含参数: + +``` +listen 443 ssl http2; +``` +请注意,在大多数情况下,您还需要启用TLS才能使用HTTP / 2。 + +您可以通过[HTTP2.Pro](https://http2.pro/) 服务验证您(或任何站点)是否支持HTTP / 2 : + + +#### 优化记录 +让自己喝一杯自己喜欢的饮料,舒适地坐着,然后思考:您上次查看访问日志文件是什么时候?上周,上个月,从来没有?即使将其用于站点的日常监视,您也可能只关注错误(400和500状态代码等),而不关注成功的请求。 + +通过减少或消除不必要的日志记录,可以节省服务器上的磁盘存储,CPU和I / O操作。这不仅使您的服务器更快一点-如果将您部署在云环境中,则释放的I / O吞吐量和CPU周期可能为同一虚拟机上的其他虚拟机或应用程序节省生命。 + +有几种不同的方法可以减少和优化日志记录。在这里,我们重点介绍三个。 + + +##### 方法1:禁用页面资源请求的记录 + +如果您不需要记录检索普通页面资源(例如图像,JavaScript文件和CSS文件)的请求,则这是一种快速简便的解决方案。您需要做的就是创建一个location与这些文件类型匹配的新块,并禁用其中的日志记录。(您也可以将此access_log指令添加到我们设置标头的上方的location块中。)Cache-Control +``` +location ~* \.(?:jpg|jpeg|gif|png|ico|woff2|js|css)$ { + access_log off; +} +``` +##### 方法2:禁用成功请求的日志记录 + +这是一种更强大的方法,因为它会丢弃带有或响应代码的查询,仅记录错误。它比方法1稍微复杂一点,因为它取决于如何配置NGINX日志记录。在我们的示例中,我们使用Ubuntu Server发行版中包含的标准**nginx.conf**,因此,无论虚拟主机如何,所有请求都记录到 **/var/log/nginx/access.log中**。`2xx``3xx` + +使用[官方NGINX文档中](https://nginx.org/en/docs/http/ngx_http_log_module.html#access_log)的示例,让我们打开条件日志记录。创建一个变量`$loggable`,并将其设置为,`0`以使用和代码进行请求,否则设置为 。然后在指令中将此变量作为条件引用。`2xx``3xx``1``access_log` + +这是 **/etc/nginx/nginx.conf** 中`http`上下文中的原始指令: +``` +access_log /var/log/nginx/access.log; +``` +添加一个[`map`](https://nginx.org/en/docs/http/ngx_http_map_module.html#map)块并从`access_log`指令中引用它: + +``` +map $status $loggable { + ~^[23] 0; + default 1; +} + +access_log /var/log/nginx/access.log combined if=$loggable; +``` +请注意,尽管这`combined`是默认的日志格式,但是在包含`if`参数时,您需要明确指定它。 + +##### 方法3:使用缓冲最小化I / O操作 + +即使您要记录所有请求,也可以通过打开访问日志缓冲来最大程度地减少I / O操作。使用此指令,NGINX会等待将日志数据写入磁盘,直到填满512 KB缓冲区或自上次刷新以来经过1分钟(以先发生者为准)。 + +``` +access_log /var/log/nginx/access.log combined buffer=512k flush=1m; +``` + +### 限制特定URL的带宽 + +如果服务器提供较大的文件(或较小但非常受欢迎的文件,例如表单或报表),则设置客户端下载文件的最大速度可能很有用。如果您的站点已经承受了很高的网络负载,则限制下载速度会留下更多带宽,以使应用程序的关键部分保持响应速度。这是硬件制造商使用的非常流行的解决方案–您可能需要等待更长的时间才能为打印机下载3 GB的驱动程序,但是同时有成千上万的其他人下载您仍然可以下载。😉 + +使用[`limit_rate`](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate)指令限制特定URL的带宽。在这里,我们将 **/ download** 下每个文件的传输速率限制为每秒50 KB。 +``` +location /download/ { + limit_rate 50k; +} +``` +您可能还希望仅对较大的文件进行速率限制,这可以使用[`limit_rate_after`](https://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate_after)指令进行。在此示例中,每个文件(来自任何目录)的前500 KB都不受速度限制地进行传输,之后的所有内容均以50 KB / s为上限。这样可以加快网站关键部分的交付速度,同时降低其他部分的速度。 + +``` +location / { + limit_rate_after 500k; + limit_rate 50k; +} +``` +请注意,速率限制适用于浏览器和NGINX之间的单个HTTP连接,因此请不要阻止用户使用下载管理器来解决速率限制。 + +最后,您还可以限制到服务器的并发连接数或请求速率。有关详细信息,请参见我们的[文档](https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http/)。 \ No newline at end of file diff --git a/Nginx/nginx-high-basic.md b/Nginx/nginx-high-basic.md new file mode 100644 index 0000000000000000000000000000000000000000..51025c36599bb7c80eaad3ee6f80b7bbe6b688b3 --- /dev/null +++ b/Nginx/nginx-high-basic.md @@ -0,0 +1,277 @@ +## Nginx高性能WEB服务器详解 +#### 第一章 初探 ++ [Nginx 编译安装以及参数详解](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) ++ NGINX变量详解 + - [x] [nginx变量使用方法详解笔记(1)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-1.md) + - [x] [nginx变量使用方法详解笔记(2)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-2.md) + - [x] [nginx变量使用方法详解笔记(3)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) ++ Nginx指令执行顺序 + - [x] [Nginx指令执行命令(01)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/command-order-01.md) +#### 第二章 安装部署 ++ 启动错误:`Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)`,执行:`sudo fuser -k 80/tcp` ++ [基于域名、IP的虚拟主机配置](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-4-all-config.md) ++ [完整、标准配置实际示列](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-4-basic-config.md) ++ [日志文件配置与切割](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-4-log-cut.md) ++ alias 和 root 在location 下的应用 + - 通过alias 实现别名功能 + ``` + location /live { + alias /home/tinywan/HLS/; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS$ cat index.html + alias /home/tinywan/HLS/index.html + tinywan@tinywan:~/HLS$ curl http://127.0.0.1/live/index.html + alias /home/tinywan/HLS/index.html + ``` + - 结论: + 1. cul 请求 `/live/index.html`,那么Nginx将会在服务器上查找`/home/tinywan/HLS/index.html` 文件 + 1. 请求的`url` 中的`location`后面的部分会被追加到`alias `指定的目录后面,而`location`后面的`/live`路径将会别自动抛弃 + - 类似案例[2]: + - config配置信息 + ``` + location ~ ^/live/(.*)$ { + alias /home/tinywan/HLS/$1; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS$ pwd + /home/tinywan/HLS + tinywan@tinywan:~/HLS$ cat txt.txt + txt file + tinywan@tinywan:~/HLS$ curl http://127.0.0.1/live/txt.txt + txt file + ``` + - 如果url请求`/live/txt.txt`那么Nginx将会在服务器上查找`/home/tinywan/HLS/txt.txt` 文件 + - **与root 功能的差别**: + - config配置信息,注意:一下的`alias` 换成 `root ` + ``` + location ~ ^/live/(.*)$ { + root /home/tinywan/HLS/$1; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS$ curl http://127.0.0.1/live/txt.txt + + 404 Not Found + +

404 Not Found

+
openresty/1.11.2.1
+ + + ``` + - 日志文件信息(打开Nginx的rewrite日志:rewrite_log on;): + ``` + /home/tinywan/HLS/txt.txt/live/txt.txt + ``` + - **二者的区别** + 1. `alias` 指定的目录是当前目录 + 1. `root` 指定的是根目录 + 1. 一般建议的`location /`中通过`root`命令配置目录,其他目录匹配的位置使用`alias`命令 + - 案例[3]: + - config配置信息 + ``` + location ~ ^/live/(\w+)/(.*) { + alias /home/tinywan/HLS/live/$1/$2; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS/live/stream123$ pwd + /home/tinywan/HLS/live/stream123 + tinywan@tinywan:~/HLS/live/stream123$ cat index.m3u8 + 12312312312 + tinywan@tinywan:~/HLS/live/stream123$ curl "http://127.0.0.1/live/stream123/index.m3u8?token=1234&api=009132" + 12312312312 + ``` +####
第三章 架构初探 +- [ ] 测试一 +#### 第四章 高级配置 ++ 基本语法:location [=|~|~*|^~] /uri/ { … } + 1. `= `:严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 + 2. `~ `:为区分大小写匹配(可用正则表达式) + 3. `!~ `:为区分大小写不匹配 + 4. `!~*`:为不区分大小写不匹配 + 5. ` ^~ `:如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式 ++ [Perl 正则表达式参考](http://www.runoob.com/perl/perl-regular-expressions.html) ++ 正则中需要转义的特殊字符小结 + - [1] ` $` 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 + - [2] ` ( )` 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 和。 + - [3] ` * ` 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 + - [4] ` +` 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 + - [5] ` . ` 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 + - [6] ` [ ]` 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 + - [7] ` ? ` 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 + - [8] ` \ ` 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。 + - [9] ` ^ ` 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 + - [10] ` { }` 标记限定符表达式的开始。要匹配 {,请使用 \{。 + - [11] ` | ` 指明两项之间的一个选择。要匹配 |,请使用 \|。 + ++ 正则表达式 (Regular expression) 匹配location + - [1] `location ~* \.(gif|jpg|jpeg)$ { }`:匹配所有以 gif,jpg或jpeg 结尾的请求 + - [2] `location ~ /documents/Abc { }`:匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 + - [3] **目录匹配:** + 1. 可以匹配静态文件目录`(static/lib)` + 2. HLS直播目录`(/home/HLS/stream123/index.m3u8)` + 3. HLS/MP4/FLV点播视频目录`(/home/HLS/stream123.m3u8)` + 4. 匹配URL地址:`http://127.0.0.1/live/stream123/index.m3u8` + 5. nginx.conf 配置信息 + ``` + # 匹配任何以/live/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试 + location ^~ /live/ { + root /home/tinywan/HLS/; + } + # 以上匹配成功后的组合:/home/tinywan/HLS/live/.... + ``` ++ 后缀匹配 + 1. 匹配任何后缀文件名`gif|jpg|jpeg|png|css|js|ico|m3u8|ts` 结尾的请求 + 2. TS 文件匹配`http://127.0.0.1/live/stream123/11.ts` + 3. M3U8 文件匹配`http://127.0.0.1/live/stream123/index.m3u8` + 4. 匹配URL地址:`http://127.0.0.1/hls/123.m3u8` + 5. nginx.conf 配置信息 + ``` + location ~* \.(gif|jpg|jpeg|png|css|js|ico|m3u8|ts)$ { + root /home/tinywan/HLS/; + } + ``` ++ HSL直播目录匹配实际案例(请测试上线) + 1. 可以后缀文件名:`http://127.0.0.1/live/stream123/index.m3u8` + ``` + location ^~ /live/ { + root /home/tinywan/HLS/; + } + ``` + ++ [nginx配置location总结及rewrite规则写法](http://seanlook.com/2015/05/17/nginx-location-rewrite/) +#### 第五章 Gzip压缩 ++ 测试一 +#### 第六章 Rewrite 功能 ++ Rewrite 常用全局变量 + + 请求案例: `curl -G -d "name=Tinywan&age=24" http://127.0.0.1/rewrite_var/1192/index.m3u8` + + 接受结果: + + | 变量 | 值 |描述 | + | --------- | ----------- |----------- | + | $args | name=Tinywan&age=24 |存放URL 请求的指令 | + | $content_length | 0 | 请求头中的Content-length字段| + | $content_type | 0 |请求头中的Content-Type字段 | + | $document_root | /opt/openresty/nginx/html | 当前请求在root指令中指定的值 | + | $document_uri | /rewrite_var/1192/index.m3u8 | 与$uri相同 | + | $host | 127.0.0.1 |请求主机头字段,否则为服务器名称 | + | $http_user_agent | curl/7.47.0 | 客户端agent信息| + | $http_cookie | 0 | COOKIE变量的值| + | $limit_rate | 0 | 限制连接速率| + | $request_body_file | null | 客户端请求主体信息的临时文件名| + | $request_method | GET | 客户端请求的动作,通常为GET或POST | + | $remote_addr | 127.0.0.1 |客户端的IP地址 | + | $remote_port | 33516 |客户端端口| + | $remote_user | 0 | 已经经过Auth Basic Module验证的用户名| + | $request_filename | /opt/openresty/nginx/html/rewrite_var/1192/index.m3u8 |当前请求的文件路径 | + | $request_uri | /rewrite_var/1192/index.m3u8?name=Tinywan&age=24 |包含请求参数的原始URI,不包含主机名 | + | $query_string | name=Tinywan&age=24 | 与$args相同| + | $scheme | http |HTTP方法(如http,https | + | $server_protocol | HTTP/1.1 |请求使用的协议,通常是HTTP/1.0或HTTP/1.1 | + | $server_addr | 127.0.0.1 |服务器地址 | + | $server_name | localhost | 服务器名称| + | $server_port | 80 |请求到达服务器的端口号 | + | $uri | /rewrite_var/1192/index.m3u8 | 不带请求参数的当前URI| + | $binary_remote_addr | 乱码 | 二进制格式的客户端地址| + + + uri 介绍 **(Nginx中的URI是相对的URI)** + + URL:`https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/config.md` + + 绝对URI:`https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/config.md` + + 相对URI:`/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/config.md` + ![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/URI-URL-Image.jpg) + ++ Rewrite 正则匹配` uri `参数接收 + 1. 请求案例:`curl http://192.168.18.143/live/tinywan123/index.m3u8` + 2. Nginx.conf配置文件 + ```Lua + location ~* ^/live/(\w+)/(\D+)\.(m3u8|ts)$ { + set $num $2; + set $arg1 $1; + echo "args === ${arg1}"; + echo "1==$1 2==$2 3==$3"; + echo "Total_numbser :: $num"; + echo "URI $uri"; + } + + ``` + 3. 输出结果 + ``` + args === tinywan123 + $1==tinywan123 $2==index $3==m3u8 + Total_numbser :: index + URI /live/tinywan123/index.m3u8 + Total_numbser :: + ``` + 4. $1为正则匹配多个英文字母或数字的字符串 `(\w+)` + $2 为正则匹配多个非数字 `(\D+)` + $3 为正则匹配的第一个值 `(m3u8|ts)` + `.` 需要用转义字符转义`\.` +## 第七章 代理服务 ++ [正向代理和反向代理的概念](#title) ++ [正向代理服务](#title) ++ [反向代理的服务](#title) ++ [Nginx日志服务](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-Log.md) ++ 负载均衡 ++ HTTP负载均衡 + - [x] [简单的负载平衡](http://nginx.org/en/docs/http/ngx_http_core_module.html?&_ga=1.179030369.49817296.1480411319#http) + - [x] [简单的负载平衡](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-7-Proxy-1.md) + - [x] [负载均衡五个配置实例](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-7-Proxy.md) + - [x] [Openresty-Lua动态修改upstream后端服务](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/openresty-nginx-lua-Proxy.md) ++ TCP负载均衡 + - [x] [Module ngx_stream_core_module](http://nginx.org/en/docs/stream/ngx_stream_core_module.html#stream) + - [x] [负载均衡](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-8-tcp-Proxy.md) ++ proxy_pass 代理的URL总结 + + 在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。 + + 将url中以/wap/开头的请求转发到后台对应的某台server上,注意最后的?$args,表明把原始url最后的get参数也给代理到后台 + ```bash + location ~* /wap/(\d+)/(.+) + { + proxy_pass http://mx$1.test.com:6601/$2?$args; + } + ``` + + 第一种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/index.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000/; + } + ``` + + 第二种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/proxy/index.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000; + } + ``` + + 第三种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/video/index.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000/video/; + } + ``` + + 第四种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/videoindex.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000/video; + } + ``` ++ location 直接访问: + + 以下配置,当访问:`http://127.0.0.1:8000/proxy/index.html` 会被匹配到:`/usr/local/nginx/html/proxy/index.html` + ```bash + location /proxy/ { + root /usr/local/nginx/html; + index index.html index.htm; + } + ``` + +## 第八章 缓存机制 ++ [Proxy Cache 缓存机制](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-8-proxy_cache.md) +## 第九章 Nginx初探1 ++ 测试一 +## 第十章 Nginx初探1 ++ 测试一 diff --git a/Nginx/nginx-install.md b/Nginx/nginx-install.md new file mode 100644 index 0000000000000000000000000000000000000000..ca11e667dc988c254834353a28bbad619966435e --- /dev/null +++ b/Nginx/nginx-install.md @@ -0,0 +1,212 @@ +## 在Ubuntu 16.04中如何从源代码编译Nginx ++ NGINX可用作HTTP / HTTPS服务器,反向代理服务器,邮件代理服务器,负载均衡器,TLS终结器或缓存服务器。它是相当模块化的设计。它具有由社区创建的本机模块和第三方模块。以C编程语言编写,它是一个非常快速和轻便的软件。 +#### 从源头构建NGINX的要求,强制性要求: ++ OpenSSL库版本介于1.0.2 - 1.1.0之间 ++ Zlib库版本介于1.1.3 - 1.2.11之间 ++ PCRE库版本在4.4 - 8.40之间 ++ GCC编译器 +#### 可选要求: ++ PERL ++ LIBATOMIC_OPS ++ LibFD ++ MaxMind GeoIP ++ libxml2的 ++ libxslt +#### 开始之前 ++ 创建普通用户`sudo`访问。 ++ 切换到新用户:`su - ` ++ 更新系统:`sudo apt update && sudo apt upgrade -y` +#### 从源代码构建NGINX ++ 1、NGINX是用C编写的程序,所以我们需要安装C编译器(GCC)。 + + sudo apt install build-essential -y + ++ 2、下载最新版本的NGINX源代码并解压缩: + + wget https://nginx.org/download/nginx-1.13.1.tar.gz && tar zxvf nginx-1.13.1.tar.gz + ++ 3、下载NGINX依赖项的源代码并解压缩 + > NGINX依赖于3个库:PCRE,zlib和OpenSSL: + + # PCRE version 4.4 - 8.40 + wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz && tar xzvf pcre-8.40.tar.gz + + # zlib version 1.1.3 - 1.2.11 + wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz + + # OpenSSL version 1.0.2 - 1.1.0 + wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz + ++ 4、删除所有.tar.gz文件。我们不再需要了 + + wget https://nginx.org/download/nginx-1.13.1.tar.gz && tar zxvf nginx-1.13.1.tar.gz + ++ 5、转到NGINX源目录:`` + + cd ~/nginx-1.13.1 + ++ 6、有关帮助,您可以通过运行以下列出可用的配置开关 + + ./configure --help + ++ 7、配置,编译和安装NGINX: + + ./configure --prefix=/usr/share/nginx \ + --sbin-path=/usr/sbin/nginx \ + --modules-path=/usr/lib/nginx/modules \ + --conf-path=/etc/nginx/nginx.conf \ + --error-log-path=/var/log/nginx/error.log \ + --http-log-path=/var/log/nginx/access.log \ + --pid-path=/run/nginx.pid \ + --lock-path=/var/lock/nginx.lock \ + --user=www-data \ + --group=www-data \ + --build=Ubuntu \ + --http-client-body-temp-path=/var/lib/nginx/body \ + --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ + --http-proxy-temp-path=/var/lib/nginx/proxy \ + --http-scgi-temp-path=/var/lib/nginx/scgi \ + --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ + --with-openssl=../openssl-1.1.0f \ + --with-openssl-opt=enable-ec_nistp_64_gcc_128 \ + --with-openssl-opt=no-nextprotoneg \ + --with-openssl-opt=no-weak-ssl-ciphers \ + --with-openssl-opt=no-ssl3 \ + --with-pcre=../pcre-8.40 \ + --with-pcre-jit \ + --with-zlib=../zlib-1.2.11 \ + --with-compat \ + --with-file-aio \ + --with-threads \ + --with-http_addition_module \ + --with-http_auth_request_module \ + --with-http_dav_module \ + --with-http_flv_module \ + --with-http_gunzip_module \ + --with-http_gzip_static_module \ + --with-http_mp4_module \ + --with-http_random_index_module \ + --with-http_realip_module \ + --with-http_slice_module \ + --with-http_ssl_module \ + --with-http_sub_module \ + --with-http_stub_status_module \ + --with-http_v2_module \ + --with-http_secure_link_module \ + --with-mail \ + --with-mail_ssl_module \ + --with-stream \ + --with-stream_realip_module \ + --with-stream_ssl_module \ + --with-stream_ssl_preread_module \ + --with-debug \ + --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security + -Wdate-time -D_FORTIFY_SOURCE=2' \ + --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' + make + sudo make install + ++ 8、从主目录中删除所有下载的文件,在这种情况下/home/username: + + cd ~ + rm -r nginx-1.13.1/ openssl-1.1.0f/ pcre-8.40/ zlib-1.2.11/ + ++ 9、检查NGINX版本和编译时间选项: + + sudo nginx -v && sudo nginx -V + + # nginx version: nginx/1.13.0 (Ubuntu) + # built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) + # built with OpenSSL 1.1.0f 25 May 2017 + # TLS SNI support enabled + # configure arguments: --prefix=/etc/nginx . . . + # . . . + # . . . + ++ 10、检查语法和潜在错误: + + sudo nginx -t + # Will throw this error nginx: [emerg] mkdir() "/var/lib/nginx/body" failed (2: No such file or directory) + # Just create directory + mkdir -p /var/lib/nginx && sudo nginx -t + ++ 11、为NGINX创建systemd单元文件: + + sudo vim /etc/systemd/system/nginx.service + ++ 12、复制/粘贴以下内容: + > 注意:根据NGINX的编译方式,PID文件和NGINX二进制文件的位置可能不同。 + + [Unit] + Description=A high performance web server and a reverse proxy server + After=network.target + + [Service] + Type=forking + PIDFile=/run/nginx.pid + ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' + ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' + ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload + ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid + TimeoutStopSec=5 + KillMode=mixed + + [Install] + WantedBy=multi-user.target + ++ 13、启动并启用NGINX服务: + + sudo systemctl start nginx.service && sudo systemctl enable nginx.service + ++ 14、检查NGINX是否在重启后启动: + + sudo systemctl is-enabled nginx.service + # enabled + ++ 15、检查NGINX是否正在运行: + + sudo systemctl status nginx.service + ps aux | grep nginx + curl -I 127.0.0.1 + ++ 16、重新启动Ubuntu VPS以验证NGINX是否自动启动: + + sudo shutdown -r now + ++ 17、创建UFW NGINX应用程序配置文件: + + sudo vim /etc/ufw/applications.d/nginx + ++ 18、复制/粘贴以下内容: + + [Nginx HTTP] + title=Web Server (Nginx, HTTP) + description=Small, but very powerful and efficient web server + ports=80/tcp + + [Nginx HTTPS] + title=Web Server (Nginx, HTTPS) + description=Small, but very powerful and efficient web server + ports=443/tcp + + [Nginx Full] + title=Web Server (Nginx, HTTP + HTTPS) + description=Small, but very powerful and efficient web server + ports=80,443/tcp + ++ 19、现在,验证UFW应用配置文件是否被创建和识别: + sudo ufw app list + + # Available applications: + # Nginx Full + # Nginx HTTP + # Nginx HTTPS + # OpenSSH + +### Build + +cd to NGINX source directory & run this: + + ./configure --add-module=/path/to/nginx-rtmp-module + make + make install diff --git a/Nginx/nginx-parameter-config.md b/Nginx/nginx-parameter-config.md new file mode 100644 index 0000000000000000000000000000000000000000..52a04bc63c38b9632fa58c7f21a580ce0d07aed6 --- /dev/null +++ b/Nginx/nginx-parameter-config.md @@ -0,0 +1,609 @@ +## 高并发系统内核优化 ++ [Socket优化](#Socket) + + Nginx + + 系统内核 ++ [文件优化](#file) + + Nginx + + 系统内核 ++ [配置文件优化](#config-file) + + Nginx配置文件 + + 内核配置文件 + + PHP7配置文件 + + PHP-FPM配置文件 + + php-fpm.conf 重要参数详解 +### Socket优化 +#### Nginx ++ 子进程允许打开的连接数:`worker_connections` +#### 系统内核 ++ [内核参数的优化](http://blog.csdn.net/moxiaomomo/article/details/19442737) ++ 实践优化配置 + + 编辑: `vim /etc/sysctl.conf` + + 配置结果 + + ```bash + net.ipv4.tcp_max_tw_buckets = 6000 + net.ipv4.ip_local_port_range = 1024 65000 + net.ipv4.tcp_tw_recycle = 1 + net.ipv4.tcp_tw_reuse = 1 + net.ipv4.tcp_syncookies = 1 + net.core.somaxconn = 262144 + net.core.netdev_max_backlog = 262144 + net.ipv4.tcp_max_orphans = 262144 + net.ipv4.tcp_max_syn_backlog = 262144 + net.ipv4.tcp_syn_retries = 1 + net.ipv4.tcp_fin_timeout = 1 + net.ipv4.tcp_keepalive_time = 30 + ``` + + 执行命令使之生效:`/sbin/sysctl -p` +### 文件优化 +#### Nginx ++ 指当一个nginx进程打开的最多文件描述符数目:`worker_rlimit_nofile 100000;` +#### 系统内核 ++ 系统限制其最大进程数:`ulimit -n` ++ 编辑文件:`/etc/security/limits.conf` + + ```conf + # End of file + root soft nofile 65535 + root hard nofile 65535 + * soft nofile 65535 + * hard nofile 65535 + ``` +### 配置文件优化 ++ Nginx配置文件 + + ```lua + user www www; + worker_processes 8; + worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000; + error_log /www/log/nginx_error.log crit; + pid /usr/local/nginx/nginx.pid; + worker_rlimit_nofile 204800; + + events + { + use epoll; + worker_connections 204800; + } + + http + { + include mime.types; + default_type application/octet-stream; + + charset utf-8; + + server_names_hash_bucket_size 128; + client_header_buffer_size 2k; + large_client_header_buffers 4 4k; + client_max_body_size 8m; + + sendfile on; + tcp_nopush on; + + keepalive_timeout 60; + + fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 + keys_zone=TEST:10m + inactive=5m; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + fastcgi_buffer_size 64k; + fastcgi_buffers 8 64k; + fastcgi_busy_buffers_size 128k; + fastcgi_temp_file_write_size 128k; + fastcgi_cache TEST; + fastcgi_cache_valid 200 302 1h; + fastcgi_cache_valid 301 1d; + fastcgi_cache_valid any 1m; + fastcgi_cache_min_uses 1; + fastcgi_cache_use_stale error timeout invalid_header http_500; + + open_file_cache max=204800 inactive=20s; + open_file_cache_min_uses 1; + open_file_cache_valid 30s; + tcp_nodelay on; + + #gzip on; + gzip on; + gzip_min_length 1k; + gzip_buffes 16 64k; + gzip_http_version 1.1; + gzip_comp_level 6; + gzip_types text/plain application/x-javascript text/css application/javascript text/javascript image/jpeg image/gif image/png application/xml application/json; + gzip_vary on; + gzip_disable "MSIE [1-6].(?!.*SV1)"; + + index index.php index.html index.htm; + + server + { + listen 8080; + server_name backup.aiju.com; + root /www/html/; #这里的位置很重要,不要写在其它指令里面,我曾经就调试了好久才发现这个问题的 + + location /status + { + stub_status on; + } + + location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { + #root /home/www/sansan-web/public; + expires 3d; + } + + location ~ ^/(status|ping)$ + { + include fastcgi_params; + fastcgi_pass unix:/var/run/php7.0.22-fpm.sock; + fastcgi_param SCRIPT_FILENAME $fastcgi_script_name; + } + + location = /favicon.ico { + access_log off; + } + + error_page 400 401 402 403 404 /40x.html; + #location = /40x.html { + # root html; + #} + + error_page 500 501 502 503 504 /50x.html; + location = /50x.html { + root html; + } + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + location ~ \.php$ { + fastcgi_pass unix:/var/run/php7.0.22-fpm.sock; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + fastcgi_buffer_size 128k; + fastcgi_buffers 4 256k; + fastcgi_busy_buffers_size 256k; + fastcgi_connect_timeout 300; + fastcgi_send_timeout 300; + fastcgi_read_timeout 300; + } + + location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ + { + expires 30d; + } + + log_format access '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" $http_x_forwarded_for'; + access_log /www/log/access.log access; + } + } + ``` ++ 完整的内核优化配置 + + ```lua + net.ipv4.ip_forward = 0 + net.ipv4.conf.default.rp_filter = 1 + net.ipv4.conf.default.accept_source_route = 0 + kernel.sysrq = 0 + kernel.core_uses_pid = 1 + net.ipv4.tcp_syncookies = 1 + kernel.msgmnb = 65536 + kernel.msgmax = 65536 + kernel.shmmax = 68719476736 + kernel.shmall = 4294967296 + net.ipv4.tcp_max_tw_buckets = 6000 + net.ipv4.tcp_sack = 1 + net.ipv4.tcp_window_scaling = 1 + net.ipv4.tcp_rmem = 4096 87380 4194304 + net.ipv4.tcp_wmem = 4096 16384 4194304 + net.core.wmem_default = 8388608 + net.core.rmem_default = 8388608 + net.core.rmem_max = 16777216 + net.core.wmem_max = 16777216 + net.core.netdev_max_backlog = 262144 + net.core.somaxconn = 262144 + net.ipv4.tcp_max_orphans = 3276800 + net.ipv4.tcp_max_syn_backlog = 262144 + net.ipv4.tcp_timestamps = 0 + net.ipv4.tcp_synack_retries = 1 + net.ipv4.tcp_syn_retries = 1 + net.ipv4.tcp_tw_recycle = 1 + net.ipv4.tcp_tw_reuse = 1 + net.ipv4.tcp_mem = 94500000 915000000 927000000 + net.ipv4.tcp_fin_timeout = 1 + net.ipv4.tcp_keepalive_time = 30 + net.ipv4.ip_local_port_range = 1024 65000 + ``` +#### PHP.ini配置文件优化(PHP7) ++ 启用Zend Opcache,php.ini配置文件中加入 + + ```bash + opcache.enable=1 + zend_extension=opcache.so + opcache.memory_consumption=128 + opcache.interned_strings_buffer=8 + opcache.max_accelerated_files=4000 + opcache.revalidate_freq=60 + opcache.fast_shutdown=1 + opcache.enable_cli=1 + opcache.huge_code_pages=1 + opcache.file_cache=/tmp + ``` ++ 缓存文件记录 + + ```bash + www@TinywanAliYun:/tmp$ tree -L 6 + . + ├── 8fc9c56d14b6542c6ff7147207730f6b + │   └── home + │   └── www + │   └── web + │   └── go-study-line + │   ├── application + │   ├── config + │   ├── public + │   ├── runtime + │   ├── thinkphp + │   └── vendor + ``` ++ 使用新的编译器,使用新一点的编译器, 推荐GCC 4.8以上, 因为只有GCC 4.8以上PHP才会开启Global Register for opline and execute_data支持, 这个会带来5%左右的性能提升 ++ 开启HugePages,然后开启Opcache的huge_code_pages + + 系统中开启HugePages + + ```bash + sudo sysctl vm.nr_hugepages=512 + ``` + + 分配512个预留的大页内存 + + ```bash + $ cat /proc/meminfo | grep Huge + AnonHugePages: 106496 kB + HugePages_Total: 512 + HugePages_Free: 504 + HugePages_Rsvd: 27 + HugePages_Surp: 0 + Hugepagesize: 2048 kB + ``` + + 然后在php.ini中加入,`opcache.huge_code_pages=1` ++ 开启Opcache File Cache,`opcache.file_cache=/tmp` ++ 启用Zend Opcache +#### PHP-FPM优化 ++ 结构 + + ```bash + +---> php.ini PHP配置文件 + | + PHP-->|---> php-fpm 服务控制脚本 + +---> php-fpm.conf 进程服务主配置文件 + | + +---> www.conf 进程服务扩展配置文件 + ``` ++ `php.ini` + + ```php + # 设置错误日志的路径 + error_log = /var/log/php-fpm/error.log + + # 引入www.conf文件中的配置 + include=/usr/local/php7/etc/php-fpm.d/*.conf + + # 设置主进程打开的最大文件数 + rlimit_files = 102400 + ``` + ++ `php-fpm.conf` 进程服务主配置文件 + + ```php + pid = run/php-fpm.pid + # 设置错误日志的路径 + error_log = /var/log/php-fpm/error.log + + # 引入www.conf文件中的配置 + include=/usr/local/php7/etc/php-fpm.d/*.conf + + # 设置主进程打开的最大文件数 + rlimit_files = 65535 + ``` + ++ `www.conf` 进程服务扩展配置文件 + + ```php + # 设置启动进程的帐户和组 + user = www + group = www + + # 设置php监听方式,注意这里要设置PHP套接字文件的权限,默认是root,Nginx无法访问 + # listen = 127.0.0.1:9000 + listen = /var/run/php-fpm/php-fpm.sock + + #backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41 + + listen.allowed_clients = 127.0.0.1 + # 允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程, + # listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. + # 如果没有设置或者为空,则允许任何服务器请求连接 + + #backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41 + listen.backlog = 4096 + + # unix socket设置选项,如果使用tcp方式访问,这里注释即可。 + listen.owner = www + listen.group = www + listen.mode = 0660 + + # 开启慢日志 + slowlog = /var/log/php-fpm/php-slow.log + request_slowlog_timeout = 10s + + # 如果客户端请求出现502请修改以下配置参数,默认值:0,如果执行shell脚本,建议默认就可以。 + request_terminate_timeout = 30 + + #对于专用服务器,pm可以设置为static。 + pm = dynamic + + # 设置工作进程数(根据实际情况设置) + pm.max_children = 50 + + # pm.start_servers不能小于pm.min_spare_servers,推荐为最大的pm.max_children的%10 + pm.start_servers = 8 + pm.min_spare_servers = 5 + pm.max_spare_servers = 10 + pm.max_requests = 10240 + + # cat /usr/local/php-5.5.10/etc/php-fpm.conf | grep status_path + pm.status_path = /status + + # 设置扩展配置主进程打开的最大文件数 + rlimit_files = 65535 + + # 设置php的session目录(所属用户和用户组都是www) + php_value[session.save_handler] = files + php_value[session.save_path] = /var/tmp/php/session + ``` + ++ 调整PHP-FPM(Nginx)的子进程 + + 日志中出现以下警告消息,这意味着没有足够的PHP-FPM进程 + + ```php + [19-Aug-2017 01:02:20] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers) + [19-Aug-2017 01:02:21] WARNING: [pool www] server reached pm.max_children setting (256), consider raising it + ``` + + + 根据系统内存量来计算和更改这些值,` /etc/php-fpm.d/www.conf` + + ```php + pm.max_children = 50 + pm.start_servers = 5 + pm.min_spare_servers = 5 + pm.max_spare_servers = 35 + ``` + + + 以下命令将帮助我们确定每个(PHP-FPM)子进程使用的内存: + > RSS列显示PHP-FPM进程的未交换的物理内存使用量,单位为千字节 + > 平均每个PHP-FPM进程在我的机器上占用大约75MB的RAM + + ```php + ps -ylC php-fpm --sort:rss + ``` + + + pm.max_children的适当值可以计算为: + + ```php + pm.max_children = Total RAM dedicated to the web server / Max child process size + ``` + + + 在我的情况下是56MB,服务器有16GB的RAM,所以: + >我留下了一些记忆,让系统呼吸。在计算内存使用情况时,您需要考虑计算机上运行的任何其他服务。 + + ```php + pm.max_children = 15806MB / 56MB = 282 + # Tinywan 计算方式(实战) + # pm.max_children = (15806MB - 1024MB) / 57MB = 259 + ``` + + + 已经改变了如下设置 + >请注意,非常高的价值并不意味着任何好处 + + ```php + pm.max_children = 256 + pm.start_servers = 32 + pm.min_spare_servers = 32 + pm.max_spare_servers = 128 + pm.max_requests = 65535 + ``` + + + 您可以使用此方便的命令检查单个PHP-FPM进程的平均内存使用情况 + + ```php + ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }' + ``` +## php-fpm.conf 重要参数详解 + ++ 常用参数解释 + + ```php + 1)pm = dynamic #对于专用服务器,pm可以设置为static。 + #如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers 参数决定: + 2)pm.max_children + + 在同一时间最大的进程数 + + pm.max_children = 120 + + 3)pm.start_servers + + php-fpm启动时开启的等待请求到来的进程数,默认值为:min_spare_servers + (max_spare_servers - min_spare_servers) / 2 + + pm.start_servers = 80 + + 4)pm.min_spare_servers + 在空闲状态下,运行的最小进程数,如果小于此值,会创建新的进程 + pm.min_spare_servers = 60 + + 5)pm.max_spare_servers + 在空闲状态下,运行的最大进程数,如果大于此值,会kill部分进程 + pm.max_spare_servers = 120 + + 6)pm.process_idle_timeout + 空闲多少秒之后进程会被kill,默认为10s + pm.process_idle_timeout = 10s + + 7)pm.max_requests + 每个进程处理多少个请求之后自动终止,可以有效防止内存溢出,如果为0则不会自动终止,默认为0#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0. + pm.max_requests = 5000 + + 8)pm.status_path + 注册的URI,以展示php-fpm状态的统计信息 + pm.status_path = /status + 其中统计页面信息有: + pool 进程池名称 + process manager 进程管理器名称(static, dynamic or ondemand) + start time php-fpm启动时间 + start since php-fpm启动的总秒数 + accepted conn 当前进程池接收的请求数 + listen queue 等待队列的请求数 + max listen queue 自启动以来等待队列中最大的请求数 + listen queue len 等待连接socket队列大小 + idle processes 当前空闲的进程数 + active processes 活动的进程数 + total processes 总共的进程数(idle+active) + max active processes 自启动以来活动的进程数最大值 + max children reached 达到最大进程数的次数 + + 9)ping.path + ping url,可以用来测试php-fpm是否存活并可以响应 + ping.path = /ping + + 10)ping.response + ping url的响应正文返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong. + ping.response = pong + + + 11)pid = run/php-fpm.pid + #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 + + 12)error_log = log/php-fpm.log + #错误日志,默认在安装目录中的var/log/php-fpm.log + + 13)log_level = notice + #错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice. + + 14)emergency_restart_threshold = 60 + emergency_restart_interval = 60s + #表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。 + + 15)process_control_timeout = 0 + #设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0. + + 16)daemonize = yes + #后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。 + + 17)listen = 127.0.0.1:9000 + #fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置. + + 18)listen.backlog = -1 + #backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。 19)listen.allowed_clients = 127.0.0.1 + #允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接 + listen.owner = www + listen.group = www + listen.mode = 0666 + + 20)#unix socket设置选项,如果使用tcp方式访问,这里注释即可。 + user = www + group = www + #启动进程的帐户和组 + + 21)request_terminate_timeout = 0 + #设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项。 + + 22)request_slowlog_timeout = 10s + #当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off' + + 23)slowlog = log/$pool.log.slow + #慢请求的记录日志,配合request_slowlog_timeout使用 + + 24)rlimit_files = 1024 + #设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。 + + 25)rlimit_core = 0 + #设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值. + + 26)chroot = + #启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用. + + 27)chdir = + #设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时) + + 28)catch_workers_output = yes + #重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空. + ``` ++ 二、php对子进程的三种管理方式 + + ```php + tatic: + 表示在php-fpm运行时直接fork出 pm.max_chindren个子进程 + dynamic: + 表示,运行时fork出pm.start_servers个进程,随着负载的情况,动态的调整,最多不超过pm.max_children个进程。同时,保证闲置进程数不少于pm.min_spare_servers数量,否则新的进程会被创建,当然也不是无限制的创建,最多闲置进程不超过pm.max_spare_servers数量,超过则一些闲置进程被清理。 + ondemand: + 当有请求时,创建进程,启动不创建,最多不超过pm.max_chindren进程数,当进程闲置会在pm.process_idle_timeout秒后被及时释放。 + ``` + ++ 三、重要参数的理解与设置 + + ```php + 【重要一】 + request_terminate_timeout = 120 + #表示等待120秒后,结束那些没有自动结束的php脚本,以释放占用的资源。 + 当PHP运行在php-fpm模式下,php.ini配置的max_execute_time是无效的,需要在php-fpm.conf中配置另外一个配置项:request_terminate_timeout;以下是官方文档的说明: + + + set_time_limit()和max_execution_time只影响脚本本身执行的时间。(这两个参数在php.ini中)任何发生在诸如使用system()的系统调用,流操作,数据库操作等的脚本执行的最大时间不包括其中. + + + 下面4个参数的意思分别为: + pm.max_children:静态方式下开启的php-fpm进程数量。 + pm.start_servers:动态方式下的起始php-fpm进程数量。 + pm.min_spare_servers:动态方式下的最小php-fpm进程数量。 + pm.max_spare_servers:动态方式下的最大php-fpm进程数量。 + + 如果dm设置为static,那么其实只有pm.max_children这个参数生效。系统会开启设置数量的php-fpm进程。 + 如果dm设置为 dynamic,那么pm.max_children参数失效,后面3个参数生效。 + 系统会在php-fpm运行开始 的时候启动pm.start_servers个php-fpm进程,然后根据系统的需求动态在pm.min_spare_servers和 pm.max_spare_servers之间调整php-fpm进程数。 + + 比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服 + 务器的负载情况来设置,比较合适的值在5~10之间。 + + + pm = dynamic模式非常灵活,也通常是默认的选项。但是,dynamic模式为了最大化地优化服务器响应,会造成更多内存使用,因为这种模式只会杀掉超出最大闲置进程数(pm.max_spare_servers)的闲置进程, + 比如最大闲置进程数是30,然后网站经历了一次访问高峰,高峰期时共动态开启了50个进程全部忙碌,0个闲置进程数,接着过了高峰期,可能没有一个请求,于是会有50个闲置进程,但是此时php-fpm只会杀掉20个 + 子进程,始终剩下30个进程继续作为闲置进程来等待请求,这可能就是为什么过了高峰期后即便请求数大量减少服务器内存使用却也没有大量减少,也可能是为什么有些时候重启下服务器情况就会好很多,因为重启 + 后,php-fpm的子进程数会变成最小闲置进程数,而不是之前的最大闲置进程数。 + + + 第三种就是文章中提到的pm = ondemand模式,这种模式和pm = dynamic相反,把内存放在第一位,他的工作模式很简单,每个闲置进程,在持续闲置了pm.process_idle_timeout秒后就会被杀掉,有了这个模式,到了服务器低峰期内存自然会降下来,如果服务器长时间没有请求,就只会有一个php-fpm主进程,当然弊端是, + 遇到高峰期或者如果pm.process_idle_timeout的值太短的话,无法避免服务器频繁创建进程的问题,因此pm = dynamic和pm = ondemand谁更适合视实际情况而定。 + + + 【重要二】 + pm.max_requests = 500 + 设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 ’0′ 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.这段配置的意思是,当一个 PHP-CGI 进程处理的请求数累积到 500 个后,自动重启该进程。 + + 但是为什么要重启进程呢? + 一般在项目中,我们多多少少都会用到一些 PHP 的第三方库,这些第三方库经常存在内存泄漏问题,如果不定期重启 PHP-CGI 进程,势必造成内存使用量不断增长。因此 PHP-FPM 作为 PHP-CGI 的管理器,提供了这么一项监控功能,对请求达到指定次数的 PHP-CGI 进 + 程进行重启,保证内存使用量不增长。 + 【一些问题及网上解决办法】 + 正是因为这个机制,在高并发的站点中,经常导致 502 错误,我猜测原因是 PHP-FPM 对从 NGINX 过来的请求队列没处理好。不过我目前用的还是 PHP 5.3.2,不知道在 PHP 5.3.3 中是否还存在这个问题。 + + 目前我们的解决方法是,把这个值尽量设置大些,尽可能减少 PHP-CGI 重新 SPAWN 的次数,同时也能提高总体性能。在我们自己实际的生产环境中发现,内存泄漏并不明显,因此我们将这个值设置得非常大(204800)。大家要根据自己的实际情况设置这个值,不能盲目 + 地加大。 + ``` + +## HELP ++ [php-fpm - 启动参数及重要配置详解](http://www.4wei.cn/archives/1002061) ++ [php-fpm backlog参数潜在问题](http://blog.csdn.net/willas/article/details/11634825) ++ [Adjusting child processes for PHP-FPM (Nginx)](https://myshell.co.uk/blog/2012/07/adjusting-child-processes-for-php-fpm-nginx/) ++ [Nginx的worker_processes优化](http://blog.chinaunix.net/uid-26000296-id-3987521.html) ++ [php-fpm.conf重要参数详解](http://blog.csdn.net/sinat_22991367/article/details/73431269) + diff --git a/Nginx/nginx-phases.md b/Nginx/nginx-phases.md new file mode 100644 index 0000000000000000000000000000000000000000..9ccc95233733999e1deb5a7d75c9a3a660a31df9 --- /dev/null +++ b/Nginx/nginx-phases.md @@ -0,0 +1,155 @@ +## nginx的11个phases ++ 一个请求经过nginx处理的过程中,会经过一系列的阶段(phases),下面这个表格列出了nginx的所有phases,每个阶段可选的退出方式,包含的模块和对应的指令 + + | Phases | modules / directives | description | + | :------------ |:---------------:| -----:| + | NGX_HTTP_POST_READ_PHASE | HttpRealIpModule | 读取请求内容阶段 | + | NGX_HTTP_SERVER_REWRITE_PHASE
Location ( server rewrite ) | HttpRewriteModule
rewrite | 请求地址重写阶段| + | NGX_HTTP_FIND_CONFIG_PHASE
Location ( location selection ) | HttpCoreModule
location |配置查找阶段| + | NGX_HTTP_REWRITE_PHASE
Location ( location rewrite ) | HttpLuaModule
set_by_lua、rewrite_by_lua |请求地址重写阶段| + | NGX_HTTP_POST_REWRITE_PHASE | 不注册其他模块 |请求地址重写提交阶段| + | NGX_HTTP_PREACCESS_PHASE
( location selection ) | degradation
NginxHttpLimitZoneModule / limit_zone
HttpLimitReqModule / limit req |访问权限检查准备阶段| + | NGX_HTTP_ACCESS_PHASE | HttpAccessModule
allow, deny
NginxHttpAuthBasicModule
HttpLuaModule
access_by_lua |访问权限检查阶段| + | NGX_HTTP_POST_ACCESS_PHASE | 该指令可以用于控制access阶段的指令彼此之间的协作方式 |访问权限检查提交阶段| + | NGX_HTTP_TRY_FILES_PHASE | HttpCoreModule
try_files |配置项try_files处理阶段| + | NGX_HTTP_CONTENT_PHASE | HttpProxyModule / proxy
HttpLuaModule / content_by_lua
HttpCoreModule / proxy_pass
HttpFcgiModule / FastCGI |内容产生阶段| + | NGX_HTTP_TRY_FILES_PHASE | HttpLogModuel / access_log |日志模块处理阶段| + ++ 各个phase说明 + + (1) post read phase + > `post-read ` 属于 `rewrite`阶段 + + > `post-read` 支持Nginx模块的钩子 + + > 内置模块 `ngx_realip` 把它的处理程序`post-read`分阶段挂起,强制重写请求的原始地址作为特定请求头的值 + + ``` + server { + listen 8080; + + set_real_ip_from 127.0.0.1; + real_ip_header X-My-IP; + + location /test { + set $addr $remote_addr; + echo "from: $addr"; + } + } + ``` + + > 该配置告诉Nginx强制将每个请求的原始地址重写127.0.0.1为请求头的值X-My-IP。同时它使用内置变量 `$remote_addr`来输出请求的原始地址 + + ``` + $ curl -H 'X-My-IP: 1.2.3.4' localhost:8080/test + from: 1.2.3.4 + ``` + > curl 参数 -H :自定义头信息传递给服务器 + + > 该选项X-My-IP: 1.2.3.4在请求中包含一个额外的HTTP头 + + > 测试结果 + ``` + $ curl localhost:8080/test + from: 127.0.0.1 + + $ curl -H 'X-My-IP: abc' localhost:8080/test + from: 127.0.0.1 + `` + + + server_rewrite phase + + > 这个阶段主要进行初始化全局变量,或者server级别的重写。如果把重写指令放到 server 中,那么就进入了server rewrite 阶段。(重写指令见rewrite phase) + + > ( 1 ) `server-rewrite ` 阶段运行时间早于 `rewrite` 阶段 + + ``` + location /tinywan { + set $bbb "$aaa, world"; + echo $bbb; + } + set $aaa "HELLO"; + ``` + + > `set $a hello` 声明被放在`server`指令中,所以它运行在`server-rewrite`阶段 + + > 因此 `set $b "$a, world'" `,在location指令中执行 `set ` 指令后,它将获得正确的`$a`值 + + > 执行结果 + + ``` + # curl http://127.0.0.2:8008/tinywan + HELLO, world + ``` + > ( 2 ) `post-read` 阶段阶段运行时间早于 `server-rewrite` 阶段执行 + + ``` + server { + listen 8080; + + set $addr $remote_addr; + + set_real_ip_from 127.0.0.1; + real_ip_header X-Real-IP; + + location /test { + echo "from: $addr"; + } + } + ``` + + > ( 3 ) `ngx_realip` 阶段阶段运行时间早于 `server 的 set 指令` 阶段执行 + + ``` + $ curl -H 'X-Real-IP: 1.2.3.4' localhost:8080/test + from: 1.2.3.4 + ``` + + > 服务器指令中的命令集始终比模块ngx_realip晚, + + > ( 4 ) `server-rewrite` 阶段阶段运行时间早于 `find-config` 阶段执行 + + + find config phase + > ( 5 ) `find-config` 阶段阶段运行时间早于 `rewrite` 阶段执行 + + > 这个阶段使用重写之后的uri来查找对应的location,值得注意的是该阶段可能会被执行多次,因为也可能有location级别的重写指令。这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间的配对工作 + + + rewrite phase: + > 如果把重写指令放到 location中,那么就进入了rewrite phase,这个阶段是location级别的uri重写阶段,重写指令也可能会被执行多次 + + > 有`HttpRewriteModule` 的set指令、rewrite指令 + + > HttpLuaModule的 set_by_lua指令, + + > ngx_set_misc模块的set_unescape_uri指令 + + > 另外HttpRewriteModule的几乎所有指令都属于rewrite阶段。 ++ 结论:作用域为同一个phase的不同modules的指令,如果modules之间做了特殊的兼容,则它们按照指令在配置文件中出现的顺序依次执行下来 ++ HttpLuaModule 模块指令 + + init_by_lua + > 在nginx重新加载配置文件时,运行里面lua脚本,常用于全局变量的申请。例如lua_shared_dict共享内存的申请,只有当nginx重起后,共享内存数据才清空,这常用于统计。 + + + set_by_lua + > 设置一个变量,常用与计算一个逻辑,然后返回结果,该阶段不能运行Output API、Control API、Subrequest API、Cosocket API + + + rewrite_by_lua + > 在access阶段前运行,主要用于rewrite + + + access_by_lua + > 主要用于访问控制,能收集到大部分变量,类似status需要在log阶段才有。这条指令运行于nginx access阶段的末尾,因此总是在 allow 和 deny 这样的指令之后运行,虽然它们同属 access 阶段。 + + + content_by_lua + > 阶段是所有请求处理阶段中最为重要的一个,运行在这个阶段的配置指令一般都肩负着生成内容(content)并输出HTTP响应。 + + + header_filter_by_lua + > 一般只用于设置Cookie和Headers等,该阶段不能运行Output API、Control API、Subrequest API、Cosocket API + + + body_filter_by_lua + > 一般会在一次请求中被调用多次, 因为这是实现基于 HTTP 1.1 chunked 编码的所谓“流式输出”的,该阶段不能运行Output API、Control API、Subrequest API、Cosocket API + + + log_by_lua + > 该阶段总是运行在请求结束的时候,用于请求的后续操作,如在共享内存中进行统计数据,如果要高精确的数据统计,应该使用body_filter_by_lua + ++ --with-http_realip_module 模块 + + set_real_ip_from   192.168.1.0/24;     指定接收来自哪个前端发送的 IP head 可以是单个IP或者IP段 + + set_real_ip_from 192.168.2.1; + + real_ip_header X-Real-IP; IP head 的对应参数,默认即可。 \ No newline at end of file diff --git a/Nginx/nginx-start-script.md b/Nginx/nginx-start-script.md new file mode 100644 index 0000000000000000000000000000000000000000..d667548b058a735f06798a259cab37829f3d96ff --- /dev/null +++ b/Nginx/nginx-start-script.md @@ -0,0 +1,757 @@ +## 服务启动、停止和重启脚本 ++ [Ubuntu 14.04.2 LTS 启动脚本](#Ubuntu14) + + PHP-FPM 服务 + + Nginx 服务 ++ [Ubuntu 16.04.2 LTS 启动脚本](#Ubuntu16) + + PHP-FPM 服务 + + Nginx 服务 +##
Ubuntu 14.04.2 LTS 启动脚本 +### PHP-FPM 服务 ++ 下载文件[php-fpm.sh](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/PHP/PHP-FPM/php-fpm.sh) ++ 注意配置文件:`sudo vim /usr/local/php-7.2/etc/php-fpm.conf` + > 务必开启配置文件的pid路径:`pid = run/php-fpm.pid` +   否则会报错:`no pid file found - php-fpm is not running ?`  ++ CP到默认开启的服务脚本: + + ``` + sudo cp php-fpm.sh /etc/init.d/php-fpm + ``` ++ 给予权限: + + ``` + sudo chmod +x /etc/init.d/php-fpm + ``` ++ 使用`sysv-rc-conf`安装,[如何安装sysv-rc-conf管理服务](http://blog.csdn.net/gatieme/article/details/45251389) + + ![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/nginx_start_script.png) ++ `php-fpm.sh`代码 + + ``` + #! /bin/sh + ### BEGIN INIT INFO + # Provides: php-fpm + # Required-Start: $remote_fs $network + # Required-Stop: $remote_fs $network + # Default-Start: 2 3 4 5 + # Default-Stop: 0 1 6 + # Short-Description: starts php-fpm + # Description: starts the PHP FastCGI Process Manager daemon + ### END INIT INFO + + prefix=/opt/php-7.0.9 # 只需要修改这里就可以里,这里是编译路径 + exec_prefix=${prefix} + + php_fpm_BIN=${exec_prefix}/sbin/php-fpm + php_fpm_CONF=${prefix}/etc/php-fpm.conf + php_fpm_PID=${prefix}/var/run/php-fpm.pid + + php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" + + wait_for_pid () { + try=0 + + while test $try -lt 35 ; do + + case "$1" in + 'created') + if [ -f "$2" ] ; then + try='' + break + fi + ;; + + 'removed') + if [ ! -f "$2" ] ; then + try='' + break + fi + ;; + esac + + echo -n . + try=`expr $try + 1` + sleep 1 + + done + + } + case "$1" in + start) + echo -n "Starting PHP-FPM Server ... " + + $php_fpm_BIN --daemonize $php_opts + + if [ "$?" != 0 ] ; then + echo " failed" + exit 1 + fi + + wait_for_pid created $php_fpm_PID + + if [ -n "$try" ] ; then + echo " failed" + exit 1 + else + echo "[OK]" + fi + ;; + + stop) + echo -n "Stopping PHP-FPM Server ... " + + if [ ! -r $php_fpm_PID ] ; then + echo "warning, no pid file found - php-fpm is not running ?" + exit 1 + fi + + kill -QUIT `cat $php_fpm_PID` + + wait_for_pid removed $php_fpm_PID + + if [ -n "$try" ] ; then + echo " failed. Use force-quit" + exit 1 + else + echo " [OK]" + fi + ;; + + force-quit) + echo -n "Terminating PHP-FPM " + + if [ ! -r $php_fpm_PID ] ; then + echo "warning, no pid file found - php-fpm is not running ?" + exit 1 + fi + + kill -TERM `cat $php_fpm_PID` + + wait_for_pid removed $php_fpm_PID + + if [ -n "$try" ] ; then + echo " failed" + exit 1 + else + echo " [OK]" + fi + ;; + + restart) + $0 stop + $0 start + ;; + + reload) + + echo -n "Reload service php-fpm " + + if [ ! -r $php_fpm_PID ] ; then + echo "warning, no pid file found - php-fpm is not running ?" + exit 1 + fi + + kill -USR2 `cat $php_fpm_PID` + + echo "[OK]" + ;; + + *) + echo "Usage: $0 {start|stop|force-quit|restart|reload}" + exit 1 + ;; + + esac + ``` ++ 运行效果 + + ```bash + www@tinywan:~$ sudo service php-fpm restart + Stopping PHP-FPM Server ... [OK] + Starting PHP-FPM Server ... [OK] + ``` +### Nginx 服务 + ++ 第一种安装方式 + + 查看当前nginx是否已经在开机启动项里面: + + ```bash + ls /etc/rc* + ``` + + 如何安装 + + ```bash + #使用wget -O 下载并以不同的文件名保存 + sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx + # 给与权限 + sudo chmod +x /etc/init.d/nginx + # 设置为启动项 + sudo update-rc.d nginx defaults + ``` + +   需要修改的地方: + +   1、`NGINXPATH=${NGINXPATH:-/opt/openresty/nginx}` 修改为自己的路径 + +   2、`PIDSPATH=${PIDSPATH:-$NGINXPATH/logs}` pid文件路径 + > 如果在配置文件修改为:`pid /run/nginx.pid;` +         PIDSPATH=${PIDSPATH:-$NGINXPATH/logs}修改为:PIDSPATH="/run" ++   第二种安装方式 + + 和PHP-FPM一样,`nginx.sh`代码 + + ```bash + #! /bin/sh + ### BEGIN INIT INFO + # Provides: nginx + # Required-Start: $remote_fs $syslog + # Required-Stop: $remote_fs $syslog + # Default-Start: 2 3 4 5 + # Default-Stop: 0 1 6 + # Short-Description: nginx init.d dash script for Ubuntu or other *nix. + # Description: nginx init.d dash script for Ubuntu or other *nix. + ### END INIT INFO + #------------------------------------------------------------------------------ + # nginx - this Debian Almquist shell (dash) script, starts and stops the nginx + # daemon for Ubuntu and other *nix releases. + # + # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ + # proxy and IMAP/POP3 proxy server. This \ + # script will manage the initiation of the \ + # server and it's process state. + # + # processname: nginx + # config: /usr/local/nginx/conf/nginx.conf + # pidfile: /usr/local/nginx/logs/nginx.pid + # Provides: nginx + + #------------------------------------------------------------------------------ + # Functions + #------------------------------------------------------------------------------ + LSB_FUNC=/lib/lsb/init-functions + + # Test that init functions exists + test -r $LSB_FUNC || { + echo "$0: Cannot find $LSB_FUNC! Script exiting." 1>&2 + exit 5 + } + + . $LSB_FUNC + + #------------------------------------------------------------------------------ + # Consts + #------------------------------------------------------------------------------ + # Include nginx defaults if available + if [ -f /etc/default/nginx ]; then + . /etc/default/nginx + fi + + # Minimize path + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + + PS=${PS:-"nginx"} # process name + DESCRIPTION=${DESCRIPTION:-"Nginx Server..."} # process description + NGINXPATH=${NGINXPATH:-/opt/openresty/nginx} # root path where installed + DAEMON=${DAEMON:-$NGINXPATH/sbin/nginx} # path to daemon binary + NGINX_CONF_FILE=${NGINX_CONF_FILE:-$NGINXPATH/conf/nginx.conf} # config file path + PIDNAME=${PIDNAME:-"nginx"} # lets you do $PS-slave + PIDFILE=${PIDFILE:-$PIDNAME.pid} # pid file + PIDSPATH=${PIDSPATH:-$NGINXPATH/logs} # default pid location, you should change it + RUNAS=${RUNAS:-root} # user to run as + SCRIPT_OK=0 # ala error codes + SCRIPT_ERROR=1 # ala error codes + TRUE=1 # boolean + FALSE=0 # boolean + + #------------------------------------------------------------------------------ + # Simple Tests + #------------------------------------------------------------------------------ + + # Test if nginx is a file and executable + test -x $DAEMON || { + echo "$0: You don't have permissions to execute nginx." 1>&2 + exit 4 + } + + # You can also set your conditions like so: + # set exit condition + # set -e + + #------------------------------------------------------------------------------ + # Functions + #------------------------------------------------------------------------------ + + setFilePerms(){ + if [ -f $PIDSPATH/$PIDFILE ]; then + chmod 400 $PIDSPATH/$PIDFILE + fi + } + + configtest() { + $DAEMON -t -c $NGINX_CONF_FILE + } + + getPSCount() { + return `pgrep -f $PS | wc -l` + } + + isRunning() { + if [ $1 ]; then + pidof_daemon $1 + PID=$? + + if [ $PID -gt 0 ]; then + return 1 + else + return 0 + fi + else + pidof_daemon + PID=$? + + if [ $PID -gt 0 ]; then + return 1 + else + return 0 + fi + fi + } + + #courtesy of php-fpm + wait_for_pid () { + try=0 + + while test $try -lt 35 ; do + case "$1" in + 'created') + if [ -f "$2" ]; then + try='' + break + fi + ;; + + 'removed') + if [ ! -f "$2" ]; then + try='' + break + fi + ;; + esac + + try=`expr $try + 1` + sleep 1 + done + } + + status(){ + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + log_warning_msg "$DESCRIPTION found running with processes: `pidof $PS`" + rc=0 + else + log_warning_msg "$DESCRIPTION is NOT running." + rc=3 + fi + + return + } + + removePIDFile(){ + if [ $1 ]; then + if [ -f $1 ]; then + rm -f $1 + fi + else + #Do default removal + if [ -f $PIDSPATH/$PIDFILE ]; then + rm -f $PIDSPATH/$PIDFILE + fi + fi + } + + start() { + log_daemon_msg "Starting $DESCRIPTION" + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + log_end_msg $SCRIPT_ERROR + rc=0 + else + start-stop-daemon --start --quiet --chuid \ + $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON \ + -- -c $NGINX_CONF_FILE + status=$? + setFilePerms + + if [ "${status}" -eq 0 ]; then + log_end_msg $SCRIPT_OK + rc=0 + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + fi + + return + } + + stop() { + log_daemon_msg "Stopping $DESCRIPTION" + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE + + wait_for_pid 'removed' $PIDSPATH/$PIDFILE + + if [ -n "$try" ]; then + log_end_msg $SCRIPT_ERROR + rc=0 # lsb states 1, but under status it is 2 (which is more prescriptive). Deferring to standard. + else + removePIDFile + log_end_msg $SCRIPT_OK + rc=0 + fi + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + + return + } + + reload() { + configtest || return $? + + log_daemon_msg "Reloading (via HUP) $DESCRIPTION" + + isRunning + + if [ $? -eq $TRUE ]; then + kill -HUP `cat $PIDSPATH/$PIDFILE` + log_end_msg $SCRIPT_OK + rc=0 + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + + return + } + + quietupgrade() { + log_daemon_msg "Peforming Quiet Upgrade $DESCRIPTION" + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + kill -USR2 `cat $PIDSPATH/$PIDFILE` + kill -WINCH `cat $PIDSPATH/$PIDFILE.oldbin` + + isRunning + isAlive=$? + + if [ "${isAlive}" -eq $TRUE ]; then + kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin` + wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin + removePIDFile $PIDSPATH/$PIDFILE.oldbin + + log_end_msg $SCRIPT_OK + rc=0 + else + log_end_msg $SCRIPT_ERROR + + log_daemon_msg "ERROR! Reverting back to original $DESCRIPTION" + + kill -HUP `cat $PIDSPATH/$PIDFILE` + kill -TERM `cat $PIDSPATH/$PIDFILE.oldbin` + kill -QUIT `cat $PIDSPATH/$PIDFILE.oldbin` + + wait_for_pid 'removed' $PIDSPATH/$PIDFILE.oldbin + removePIDFile $PIDSPATH/$PIDFILE.oldbin + + log_end_msg $SCRIPT_OK + rc=0 + fi + else + log_end_msg $SCRIPT_ERROR + rc=7 + fi + + return + } + + terminate() { + log_daemon_msg "Force terminating (via KILL) $DESCRIPTION" + + PIDS=`pidof $PS` || true + + [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE` + + for i in $PIDS; do + if [ "$i" = "$PIDS2" ]; then + kill $i + wait_for_pid 'removed' $PIDSPATH/$PIDFILE + removePIDFile + fi + done + + log_end_msg $SCRIPT_OK + rc=0 + } + + destroy() { + log_daemon_msg "Force terminating and may include self (via KILLALL) $DESCRIPTION" + killall $PS -q >> /dev/null 2>&1 + log_end_msg $SCRIPT_OK + rc=0 + } + + pidof_daemon() { + PIDS=`pidof $PS` || true + + [ -e $PIDSPATH/$PIDFILE ] && PIDS2=`cat $PIDSPATH/$PIDFILE` + + for i in $PIDS; do + if [ "$i" = "$PIDS2" ]; then + return 1 + fi + done + + return 0 + } + + action="$1" + case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|force-reload) + stop + # if [ $rc -ne 0 ]; then + # script_exit + # fi + sleep 1 + start + ;; + reload) + $1 + ;; + status) + status + ;; + configtest) + $1 + ;; + quietupgrade) + $1 + ;; + terminate) + $1 + ;; + destroy) + $1 + ;; + *) + FULLPATH=/etc/init.d/$PS + echo "Usage: $FULLPATH {start|stop|restart|force-reload|reload|status|configtest|quietupgrade|terminate|destroy}" + echo " The 'destroy' command should only be used as a last resort." + exit 3 + ;; + esac + + exit $rc + ``` ++ 根据自己环境,配置文件路径,下面修改为Openresty下的Nginx启动项(Nginx 安装在/usr/local/openresty/目录下) + + ```bash + sudo vim /etc/init.d/nginx + NGINXPATH=${NGINXPATH:-/usr/local/openresty/nginx} + ``` ++ 开启服务 + + ```bash + sudo service nginx restart + [sudo] password for www: + * Stopping Nginx Server... [ OK ] + * Starting Nginx Server... [ OK ] + ``` +## Ubuntu 16.04.2 LTS 启动脚本 +### PHP-FPM 服务 ++ `php-fpm.sh`脚本代码 同上 ++ 注意,需要重新加载服务: + + ``` + sudo systemctl daemon-reload + ``` ++ 开启服务 + + ```bash + sudo systemctl start php-fpm.service + ``` ++ 停止服务 + + ```javascript + sudo systemctl stop php-fpm.service + ``` ++ 重启服务 + + ```javascript + sudo systemctl restart php-fpm.service + ``` ++ 服务状态 + + ```bash + sudo systemctl status php-fpm.service + ● php-fpm.service - LSB: starts php-fpm + Loaded: loaded (/etc/init.d/php-fpm; bad; vendor preset: enabled) + Active: active (running) since Sun 2017-10-22 11:16:06 CST; 1 day 5h ago + Docs: man:systemd-sysv-generator(8) + CGroup: /system.slice/php-fpm.service + ├─ 7670 php-fpm: pool www + ├─ 7711 php-fpm: pool www + ├─ 7752 php-fpm: pool www + └─18244 php-fpm: master process (/usr/local/php-7.1.8/etc/php-fpm.conf) + + Oct 22 11:16:06 TinywanAliYun php-fpm[18232]: Stopping PHP-FPM Server ... . [OK] + Oct 22 11:16:06 TinywanAliYun systemd[1]: Stopped LSB: starts php-fpm. + Oct 22 11:16:06 TinywanAliYun systemd[1]: Starting LSB: starts php-fpm... + Oct 22 11:16:06 TinywanAliYun php-fpm[18239]: Starting PHP-FPM Server ... [OK] + Oct 22 11:16:06 TinywanAliYun systemd[1]: Started LSB: starts php-fpm. + ``` +### Nginx 服务 ++ [Debian/Ubuntu Nginx init Script](http://kbeezie.com/debian-ubuntu-nginx-init-script/) + + > [1]通常情况下,如果你从存储库安装Nginx,这个初始化脚本已经包含在内。但是,如果您从源代码安装,或者没有使用标准路径,您可能需要这个。 + [2]如果发现停止/重新启动等不起作用,则您的pid文件位置可能不正确。您可以将其设置在nginx.conf中,也可以在此处更改init脚本以指向正确的pid位置 + ++ `nginx.sh`代码: + + ```javascript + #!/bin/sh + + ### BEGIN INIT INFO + # Provides: nginx + # Required-Start: $all + # Required-Stop: $all + # Default-Start: 2 3 4 5 + # Default-Stop: 0 1 6 + # Short-Description: starts the nginx web server + # Description: starts nginx using start-stop-daemon + ### END INIT INFO + + PATH=/opt/bin:/opt/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + DAEMON=/usr/local/openresty/nginx/sbin/nginx + NAME=nginx + DESC=nginx + + test -x $DAEMON || exit 0 + + # Include nginx defaults if available + if [ -f /etc/default/nginx ] ; then + . /etc/default/nginx + fi + + set -e + + case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile /var/run/nginx.pid \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --pidfile /var/run/nginx.pid \ + --exec $DAEMON + echo "$NAME." + ;; + restart|force-reload) + echo -n "Restarting $DESC: " + start-stop-daemon --stop --quiet --pidfile \ + /var/run/nginx.pid --exec $DAEMON + sleep 1 + start-stop-daemon --start --quiet --pidfile \ + /var/run/nginx.pid --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + reload) + echo -n "Reloading $DESC configuration: " + start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/nginx.pid \ + --exec $DAEMON + echo "$NAME." + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload}" >&2 + exit 1 + ;; + esac + + exit 0 + ``` ++ CP到默认开启的服务脚本: + + ``` + sudo cp nginx.sh /etc/init.d/nginx + ``` ++ 给予权限: + + ``` + sudo chmod +x /etc/init.d/nginx + ``` ++ 设置为开机启动项: + + ``` + sudo update-rc.d nginx defaults + ``` ++ 重新加载服务: + + ``` + sudo systemctl daemon-reload + ``` ++ 开启服务 + + ```javascript + sudo systemctl start nginx.service + ``` ++ 停止服务 + + ```javascript + sudo systemctl stop nginx.service + ``` ++ 重启服务 + + ```javascript + sudo systemctl restart nginx.service + ``` ++ 服务状态 + + ```bash + sudo systemctl status nginx.service + ● nginx.service + Loaded: loaded (/etc/init.d/nginx; bad; vendor preset: enabled) + Active: active (running) since Mon 2017-10-23 16:48:24 CST; 1min 28s ago + Docs: man:systemd-sysv-generator(8) + Process: 19089 ExecStop=/etc/init.d/nginx stop (code=exited, status=0/SUCCESS) + Process: 19138 ExecStart=/etc/init.d/nginx start (code=exited, status=0/SUCCESS) + CGroup: /system.slice/nginx.service + ├─19142 nginx: master process /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.con + ├─19143 nginx: worker process + └─19144 nginx: cache manager process + + Oct 23 16:48:24 TinywanAliYun systemd[1]: Starting nginx.service... + Oct 23 16:48:24 TinywanAliYun nginx[19138]: Starting NGINX Web Server: ok + Oct 23 16:48:24 TinywanAliYun systemd[1]: Started nginx.service. + ``` ++ 参考文章: + + [Nginx官方参考](https://www.nginx.com/resources/wiki/start/topics/tutorials/solaris_11/#startup-script) + + [linux wget 命令用法详解(附实例说明)](http://www.jb51.net/LINUXjishu/86326.html) + + [理解Linux系统/etc/init.d目录和/etc/rc.local脚本](http://blog.csdn.net/acs713/article/details/7322082) + + [Ubuntu启动项设置——之update-rc.d 命令使用](http://blog.csdn.net/typ2004/article/details/38712887) diff --git a/Openresty/Lua-file/ngx_timer_at_demo1.lua b/Openresty/Lua-file/ngx_timer_at_demo1.lua new file mode 100644 index 0000000000000000000000000000000000000000..d0957f7d6381442a082fd1e28081e9d28a968a62 --- /dev/null +++ b/Openresty/Lua-file/ngx_timer_at_demo1.lua @@ -0,0 +1,18 @@ +local delay = 5 +local handler +handler = function (premature,param) + -- do some routine job in Lua just like a cron job + if premature then + return + end + + ngx.log(ngx.ERR, "param is : ", param) +end + +local ok, err = ngx.timer.at(delay, handler,"Hello Tinywan") + +--[[ + curl http://127.0.0.1/ngx_timer_at + + 2017/05/04 23:24:38 [error] 95933#0: *433016 [lua] get_timer_at.lua:9: param is : Hello Tinywan, context: ngx.timer, client: 127.0.0.1, server: 0.0.0.0:80 + --]] \ No newline at end of file diff --git a/Openresty/Lua-file/test01.lua b/Openresty/Lua-file/test01.lua new file mode 100644 index 0000000000000000000000000000000000000000..9d9fe9c12619afba8c78a1a827246dec7d1103cf --- /dev/null +++ b/Openresty/Lua-file/test01.lua @@ -0,0 +1,39 @@ +local server = require "resty.websocket.server" +local wb, err = server:new{ + timeout = 5000, + max_payload_len = 65535 +} +if not wb then + ngx.log(ngx.ERR, "failed to new websocket: ", err) + return ngx.exit(444) +end +while true do + local data, typ, err = wb:recv_frame() + if wb.fatal then + ngx.log(ngx.ERR, "failed to receive frame: ", err) + return ngx.exit(444) + end + if not data then + local bytes, err = wb:send_ping() + if not bytes then + ngx.log(ngx.ERR, "failed to send ping: ", err) + return ngx.exit(444) + end + elseif typ == "close" then break + elseif typ == "ping" then + local bytes, err = wb:send_pong() + if not bytes then + ngx.log(ngx.ERR, "failed to send pong: ", err) + return ngx.exit(444) + end + elseif typ == "pong" then + ngx.log(ngx.INFO, "client ponged") + elseif typ == "text" then + local bytes, err = wb:send_text(data) + if not bytes then + ngx.log(ngx.ERR, "failed to send text: ", err) + return ngx.exit(444) + end + end +end +wb:send_close() \ No newline at end of file diff --git a/Openresty/Nginx/Lua/http-lua-test.lua b/Openresty/Nginx/Lua/http-lua-test.lua new file mode 100644 index 0000000000000000000000000000000000000000..87a0bfbb02fceecbf5beeff402567408fc033d42 --- /dev/null +++ b/Openresty/Nginx/Lua/http-lua-test.lua @@ -0,0 +1,50 @@ +local http = require("resty.http") +--创建http客户端实例 +local httpc = http.new() + +local resp, err = httpc:request_uri("http://s.taobao.com", { + method = "GET", + path = "/search?q=hello", + headers = { + ["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" + } +}) + +if not resp then + ngx.say("request error :", err) + return +end + +--获取状态码 +ngx.status = resp.status + +--获取响应头 +for k, v in pairs(resp.headers) do + if k ~= "Transfer-Encoding" and k ~= "Connection" then + ngx.header[k] = v + end +end +--响应体 +ngx.say(resp.body) + +httpc:close() + + +local var = ngx.var +local uri = var.uri + +local stream_name = var.stream_name +local auth_key = var.auth_key +local expire_time = string.sub(auth_key,0,10) +local rand = "0" +local uid = "0" +local private_key = "Tinywan123" +local sstring = uri.."-"..expire_time.."-"..rand.."-"..uid.."-"..private_key +local hash_value = ngx.md5(sstring) + +ngx.say("URI :: ",uri) +ngx.say("stream_name::",stream_name) +ngx.say("auth_key ::",auth_key) +ngx.say("expire_time :: ",expire_time) +ngx.say("sstring :: ",sstring) +ngx.say("hash_value :: ",hash_value) diff --git a/Openresty/Nginx/Lua/m3u8_redis_access.lua b/Openresty/Nginx/Lua/m3u8_redis_access.lua new file mode 100644 index 0000000000000000000000000000000000000000..b276971ae6885eee8806aec17e3aeec0bdc8291b --- /dev/null +++ b/Openresty/Nginx/Lua/m3u8_redis_access.lua @@ -0,0 +1,19 @@ +package.path = '/opt/openresty/nginx/lua/?.lua;' + +-- Get Nginx ConfigInformation +local get_args = ngx.req.get_uri_args() +local ws_secret = tostring(get_args["wsSecret"]) -- tel +local ws_time = tostring(get_args["wsTime"]) -- string + +-- Sign md5 + + +-- Redis Info +local redis = require("resty.redis_iresty") +local red = redis:new() + +local ok, err = red:set("AMI1999", "Redis is an animal 1999") +if not ok then + ngx.say("failed to set dog: ", err) + return +end diff --git a/Openresty/Nginx/Lua/resty/redis_iresty.lua b/Openresty/Nginx/Lua/resty/redis_iresty.lua new file mode 100644 index 0000000000000000000000000000000000000000..d95255843e7509cf40bc99a9e95fe08e6ba8e8be --- /dev/null +++ b/Openresty/Nginx/Lua/resty/redis_iresty.lua @@ -0,0 +1,247 @@ +-- file name: resty/redis_iresty.lua +package.path = package.path ..'/opt/openresty/nginx/lua/resty/?.lua;/opt/openresty/lualib/?.lua'; +local redis_c = require "resty.redis" + + +local ok, new_tab = pcall(require, "table.new") +if not ok or type(new_tab) ~= "function" then + new_tab = function (narr, nrec) return {} end +end + + +local _M = new_tab(0, 155) +_M._VERSION = '0.01' + + +local commands = { + "append", "auth", "bgrewriteaof", + "bgsave", "bitcount", "bitop", + "blpop", "brpop", + "brpoplpush", "client", "config", + "dbsize", + "debug", "decr", "decrby", + "del", "discard", "dump", + "echo", + "eval", "exec", "exists", + "expire", "expireat", "flushall", + "flushdb", "get", "getbit", + "getrange", "getset", "hdel", + "hexists", "hget", "hgetall", + "hincrby", "hincrbyfloat", "hkeys", + "hlen", + "hmget", "hmset", "hscan", + "hset", + "hsetnx", "hvals", "incr", + "incrby", "incrbyfloat", "info", + "keys", + "lastsave", "lindex", "linsert", + "llen", "lpop", "lpush", + "lpushx", "lrange", "lrem", + "lset", "ltrim", "mget", + "migrate", + "monitor", "move", "mset", + "msetnx", "multi", "object", + "persist", "pexpire", "pexpireat", + "ping", "psetex", "psubscribe", + "pttl", + "publish", --[[ "punsubscribe", ]] "pubsub", + "quit", + "randomkey", "rename", "renamenx", + "restore", + "rpop", "rpoplpush", "rpush", + "rpushx", "sadd", "save", + "scan", "scard", "script", + "sdiff", "sdiffstore", + "select", "set", "setbit", + "setex", "setnx", "setrange", + "shutdown", "sinter", "sinterstore", + "sismember", "slaveof", "slowlog", + "smembers", "smove", "sort", + "spop", "srandmember", "srem", + "sscan", + "strlen", --[[ "subscribe", ]] "sunion", + "sunionstore", "sync", "time", + "ttl", + "type", --[[ "unsubscribe", ]] "unwatch", + "watch", "zadd", "zcard", + "zcount", "zincrby", "zinterstore", + "zrange", "zrangebyscore", "zrank", + "zrem", "zremrangebyrank", "zremrangebyscore", + "zrevrange", "zrevrangebyscore", "zrevrank", + "zscan", + "zscore", "zunionstore", "evalsha" +} + + +local mt = { __index = _M } + + +local function is_redis_null( res ) + if type(res) == "table" then + for k,v in pairs(res) do + if v ~= ngx.null then + return false + end + end + return true + elseif res == ngx.null then + return true + elseif res == nil then + return true + end + + return false +end + + +-- change connect address as you need +function _M.connect_mod( self, redis ) + redis:set_timeout(self.timeout) + return redis:connect("127.0.0.1", 6379) +end + + +function _M.set_keepalive_mod( redis ) + -- put it into the connection pool of size 100, with 60 seconds max idle time + return redis:set_keepalive(60000, 1000) +end + + +function _M.init_pipeline( self ) + self._reqs = {} +end + + +function _M.commit_pipeline( self ) + local reqs = self._reqs + + if nil == reqs or 0 == #reqs then + return {}, "no pipeline" + else + self._reqs = nil + end + + local redis, err = redis_c:new() + if not redis then + return nil, err + end + + local ok, err = self:connect_mod(redis) + if not ok then + return {}, err + end + + redis:init_pipeline() + for _, vals in ipairs(reqs) do + local fun = redis[vals[1]] + table.remove(vals , 1) + + fun(redis, unpack(vals)) + end + + local results, err = redis:commit_pipeline() + if not results or err then + return {}, err + end + + if is_redis_null(results) then + results = {} + ngx.log(ngx.WARN, "is null") + end + -- table.remove (results , 1) + + self.set_keepalive_mod(redis) + + for i,value in ipairs(results) do + if is_redis_null(value) then + results[i] = nil + end + end + + return results, err +end + + +function _M.subscribe( self, channel ) + local redis, err = redis_c:new() + if not redis then + return nil, err + end + + local ok, err = self:connect_mod(redis) + if not ok or err then + return nil, err + end + + local res, err = redis:subscribe(channel) + if not res then + return nil, err + end + + res, err = redis:read_reply() + if not res then + return nil, err + end + + redis:unsubscribe(channel) + self.set_keepalive_mod(redis) + + return res, err +end + + +local function do_command(self, cmd, ... ) + if self._reqs then + table.insert(self._reqs, {cmd, ...}) + return + end + + local redis, err = redis_c:new() + if not redis then + return nil, err + end + + local ok, err = self:connect_mod(redis) + if not ok or err then + return nil, err + end + + local fun = redis[cmd] + local result, err = fun(redis, ...) + if not result or err then + -- ngx.log(ngx.ERR, "pipeline result:", result, " err:", err) + return nil, err + end + + if is_redis_null(result) then + result = nil + end + + self.set_keepalive_mod(redis) + + return result, err +end + + +for i = 1, #commands do + local cmd = commands[i] + _M[cmd] = + function (self, ...) + return do_command(self, cmd, ...) + end +end + + +function _M.new(self, opts) + opts = opts or {} + local timeout = (opts.timeout and opts.timeout * 1000) or 1000 + local db_index= opts.db_index or 0 + + return setmetatable({ + timeout = timeout, + db_index = db_index, + _reqs = nil }, mt) +end + + +return _M \ No newline at end of file diff --git "a/Openresty/Openresty\347\274\226\347\250\213.pdf" "b/Openresty/Openresty\347\274\226\347\250\213.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..7748a3cfc05db0c931ad18ba3bb4a4143d77302d --- /dev/null +++ "b/Openresty/Openresty\347\274\226\347\250\213.pdf" @@ -0,0 +1,1179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + book/Openresty编程.pdf at master · songhuiqing/book + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Skip to content +
+ + + + + + + + + + +
+ +
+ + +
+ +
+ + + +
+
+
+ + + + + + + + + + + + + + +
+
+ +
    + + + + + +
  • + +
    + +
    + + + Watch + + +
    + Notifications +
    +
    + + + + + + + +
    +
    +
    + +
    +
  • + +
  • +
    +
    + + +
    +
    + + +
    + +
  • + +
  • +
    + + Fork + +
    + +

    Fork book

    +
    +
    + +
    +

    If this dialog fails to load, you can visit the fork page directly.

    +
    +
    +
    +
    + + +
  • +
+ +

+ + /book + + +

+ +
+ + + + + + +
+
+
+ + + + + + + + + Permalink + + + + +
+ + +
+ + Branch: + master + + + + + + + +
+ +
+ + Find file + + + Copy path + +
+
+ + +
+ + Find file + + + Copy path + +
+
+ + + + +
+
+ + + + + Add files via upload + + + + cf61b26 + Mar 28, 2018 + +
+ +
+
+ + 1 contributor + + +
+ +

+ Users who have contributed to this file +

+
+ +
+
+
+
+ + + + + +
+ +
+ +
+ 278 KB +
+ +
+ + + + +
+ + + + +
+ +
+
+
+ + + + + + +
+ +
+
+ +
Sorry, something went wrong. Reload?
+
Sorry, we cannot display this file.
+
Sorry, this file is invalid so it cannot be displayed.
+ +
+
+ +
+ +
+ + + +
+ + +
+ + +
+
+ + + +
+ +
+ +
+
+ + +
+ + + + + + +
+ + + You can’t perform that action at this time. +
+ + + + + + + + + + + + + + +
+ + + + diff --git a/Openresty/default-config.md b/Openresty/default-config.md new file mode 100644 index 0000000000000000000000000000000000000000..54fc3573f2984c20ea40951950999f647df9225d --- /dev/null +++ b/Openresty/default-config.md @@ -0,0 +1,64 @@ +## dasd + +## 安装配置信息 + ++ 配置信息 + +``` +./configure \ +--prefix=/opt/openresty \ +--with-debug \ +--with-lua51 \ +--with-luajit \ +--without-http_redis2_module \ +--with-http_iconv_module \ +--with-stream \ +--with-http_stub_status_module \ +--with-http_xslt_module \ +--with-stream_ssl_module \ +--with-http_realip_module \ +--with-http_ssl_module \ +--add-module=../stream-lua-nginx-module\ +--add-module=../nginx-rtmp-module-1.1.11/ + +``` ++ 默认安装的模块为 +``` +--prefix=/opt/openresty/nginx +--with-cc-opt=-O2 -- 默认安装 +--add-module=../ngx_devel_kit-0.3.0 -- 默认安装 +--add-module=../iconv-nginx-module-0.14 -- NO +--add-module=../echo-nginx-module-0.60 -- 默认安装 +--add-module=../xss-nginx-module-0.05 -- 默认安装 +--add-module=../ngx_coolkit-0.2rc3 -- 默认安装 +--add-module=../set-misc-nginx-module-0.31 +--add-module=../form-input-nginx-module-0.12 +--add-module=../encrypted-session-nginx-module-0.06 +--add-module=../srcache-nginx-module-0.31 +--add-module=../ngx_lua-0.10.6 +--add-module=../ngx_lua_upstream-0.06 +--add-module=../headers-more-nginx-module-0.31 +--add-module=../array-var-nginx-module-0.05 +--add-module=../memc-nginx-module-0.17 +--add-module=../redis-nginx-module-0.3.7 +--add-module=../rds-json-nginx-module-0.14 +--add-module=../rds-csv-nginx-module-0.07 +--with-ld-opt=-Wl,-rpath,/opt/openresty/luajit/lib +--with-stream +--with-stream_ssl_module +--with-http_ssl_module +--add-module=/home/tinywan/openresty-1.11.2.1/../stream-lua-nginx-module +``` + +#### Nginx.conf 配置选项详解 ++ `--with-http_realip_module` 选项 + > 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如,X-Real-IP 或 X-Forwarded-For) + + > 配置示例 + + ``` + set_real_ip_from 192.168.1.0/24; + set_real_ip_from 192.168.2.1; + real_ip_header X-Real-IP; + ``` + > [--with-http_realip_module 选项(后台Nginx服务器记录原始客户端的IP地址 )](http://blog.csdn.net/cscrazybing/article/details/50789234) diff --git a/Openresty/lua-cjson/cjson-str-obj.lua b/Openresty/lua-cjson/cjson-str-obj.lua new file mode 100644 index 0000000000000000000000000000000000000000..a41fb29ae589ebf84e3c40d6e67f8360063e2568 --- /dev/null +++ b/Openresty/lua-cjson/cjson-str-obj.lua @@ -0,0 +1,81 @@ +local cjson = require("cjson") + +--lua对象到字符串 +local obj = { + id = 1, + name = "zhangsan", + age = nil, + is_male = false, + hobby = {"film", "music", "read"} +} + +local str = cjson.encode(obj) +ngx.say(str, "
") -- 打印输出:{"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1}
+ +--字符串到lua对象 +str = '{ + "hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1,"age":null}' +local obj = cjson.decode(str) -- 字符串转换成一个对象 + +ngx.say(obj.age, "
") -- 对象访问形式:obs.age +ngx.say(obj.age == nil, "
") -- 数组访问形式:hobby[1] +ngx.say(obj.age == cjson.null, "
") +ngx.say(obj.hobby[1], "
") + +--obj.obj +str_obj = '{"hobby":{"name":"tinywan","age":24,"reader":"AMAI"},"is_male":false}' +local obj_obj = cjson.decode(str_obj) + +ngx.say(obj_obj.is_male, "
") +ngx.say(obj_obj.hobby.name, "
") +ngx.say(obj_obj.hobby.age, "
") +ngx.say(obj_obj.hobby.reader, "
") + + +--循环引用 +obj = { + id = 1 +} +obj.obj = obj +-- Cannot serialise, excessive nesting +--ngx.say(cjson.encode(obj), "
") +local cjson_safe = require("cjson.safe") +--nil +ngx.say(cjson_safe.encode(obj), "
") + + +--[[ +打印结果: + root@tinywan:/opt/openresty/nginx/conf/Lua# curl http://127.0.0.1/dcjson + {"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1}
+ nil + null
+ false
+ true
+ film
+ false
+ tinywan
+ 24
+ AMAI
+ nil
+ +经验分享: +[1] lua对象到字符串 ,通过cjson.encode(obj)把所有的对象转换成了json格式,对象中的对象,被转换成了数组(数组作为 JSON 对象) +[2] JSON 对象中的数组 + { + "name":"网站", + "num":3, + "sites":[ "Google", "Runoob", "Taobao" ] + } +[3] 嵌套 JSON 对象 + myObj = { + "name":"runoob", + "alexa":10000, + "sites": { + "site1":"www.runoob.com", + "site2":"m.runoob.com", + "site3":"c.runoob.com" + } + } + +--]] \ No newline at end of file diff --git a/Openresty/lua-common-package/lua-require.md b/Openresty/lua-common-package/lua-require.md new file mode 100644 index 0000000000000000000000000000000000000000..874dc4d6e474d0f2c9e2473c0f85f7e0326d0719 --- /dev/null +++ b/Openresty/lua-common-package/lua-require.md @@ -0,0 +1,516 @@ +![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/nginx-hls-locations.png) +### 整体目录 ++ 整体目录 + ``` + . + ├── conf + │ ├── nginx.conf -- Nginx 配置文件 + ├── logs + │ ├── error.log -- Nginx 错误日子 + │ └── nginx.pid + ├── lua + │ ├── access_check.lua -- 权限验证文件 + │ ├── business_redis.lua -- 业务 Redis 处理文件 + │ ├── redis.lua -- 直接使用Lua的redis以及别的函数库 + │ ├── ... + │ └── resty -- 存放Lua 的所有公共、封装好的库 + │ └── redis_iresty.lua -- Redis 接口的二次封装 + │ └── param.lua -- 参数过滤库 + └── sbin + └── nginx + ``` ++ [Lua require 相对路径 博客园详解](http://www.cnblogs.com/smallboat/p/5552407.html) +#### 相对路径总结(相对于nginx安装目录) ++ **当前目录** :`/opt/openresty/nginx/conf/Lua` + + 注意:如果在当前没有了,以下的代码运行是没有问题的 + + 就是所有的lua脚本代码全部写在Lua文件夹下面去 + + 拼接路径:`package.path = package.path ..';..\\?.lua';` + + require 直接这样应用就是`Lua.functions` ++ 目录结构 + ``` + root@tinywan:/opt/openresty/nginx/conf/Lua# pwd + /opt/openresty/nginx/conf/Lua + root@tinywan:/opt/openresty/nginx/conf/Lua# ls + cjosn01.lua functions.lua lua-01.lua main.lua + ``` ++ 可以看出在Lua文件夹下面有多个Lua文件,我们拿main.lua和functions.lua 文件来测试包的进入 ++ 规则 在main.lua中引入functions.lua 文件 ++ main.lua 文件内容 + ``` + package.path = package.path ..';..\\?.lua'; + require("Lua.functions") + ngx.say("Hello") + ngx.say(MathFun.Add(12,90)) + ``` ++ functions.lua 文件内容 + ``` + -- 全局的表package + MathFun = {} + -- 以下把所有的函数放在这个全局表中 + -- + + function MathFun.Add(a,b) + return a+b + end + + -- - + function MathFun.Minus(a,b) + return a-b + end + + -- * + function MathFun.Multi(a,b) + return a*b + end + -- / + function MathFun.Div(a,b) + return a/b + end + ``` ++ nginx.conf 配置文件 + ``` + location /api { + lua_code_cache off; + content_by_lua_file /opt/openresty/nginx/conf/Lua/main.lua; # 绝对路径 + #content_by_lua_file conf/Lua/main.lua; # 相对路径(相对于nginx安装目录) + } + ``` ++ CURL 请求结果 + ``` + root@tinywan:/opt/openresty/nginx/conf/Lua# curl '127.0.0.1:80/api' + Hello + 102 + ``` +#### 绝对路径总结 ++ 目录结果:`/opt/openresty/nginx/lua/resty` ++ 包路径:`package.path = package.path ..'/opt/openresty/nginx/lua/resty/?.lua;/opt/openresty/lualib/?.lua';` ++ 加载绝对路径的Redis的二次封装库,redis_iresty.lua文件: + ``` + package.path = package.path ..'/opt/openresty/nginx/lua/resty/?.lua;/opt/openresty/lualib/?.lua'; + local redis_c = require "resty.redis" + local ok, new_tab = pcall(require, "table.new") + if not ok or type(new_tab) ~= "function" then + new_tab = function (narr, nrec) return {} end + end + ``` ++ Redis的二次封装库的应用,test_redis2.lua文件: + ``` + package.path = '/opt/openresty/nginx/lua/?.lua;' -- 注意:这个最好是修改掉最好 + local redis = require("resty.redis_iresty") + local red = redis:new() + local ok, err = red:set("Redis1999", "Redis is an animal 1999") + if not ok then + ngx.say("failed to set dog: ", err) + return + end + ``` ++ nginx.conf 配置文件(注意以下的目录路径和上面的不一样) + ``` + location /api { + lua_code_cache off; + content_by_lua_file /opt/openresty/nginx/lua/test_redis2.lua; + } + ``` ++ CURL 请求结果 + ``` + root@tinywan:/opt/openresty/nginx/conf/Lua# curl '127.0.0.1:80/api' + Hello + 102 + ``` + + Redis 数据库结果 + ``` + 127.0.0.1:6379> keys * + 1) "dog" + 2) "Redis2222222222" + 3) "Redis1999" + ``` +#### 项目实战目录介绍 ++ 公共配置nginx.conf `(/opt/openresty/nginx/conf/nginx.conf)` + ```Lua + worker_processes 2; + error_log logs/error.log; + pid logs/nginx.pid; + + events { + use epoll; + worker_connections 1024; + } + + http { + include mime.types; + default_type text/html; + #lua模块路径,其中”;;”表示默认搜索路径,默认到/usr/servers/nginx下找 + lua_package_path "/home/tinywan/Openresty_Protect/First_Protect/lualib/?.lua;;"; #lua 模块 + lua_package_cpath "/home/tinywan/Openresty_Protect/First_Protect/lualib/?.so;;"; #c模块 + include /home/tinywan/Openresty_Protect/First_Protect/nginx_first.conf; + } + ``` ++ 项目结构图 + ```Lua + tinywan@tinywan:~/Openresty_Protect$ pwd + /home/tinywan/Openresty_Protect + tinywan@tinywan:~/Openresty_Protect$ tree -L 3 + . + └── First_Protect + ├── lua + │   ├── functions.lua + │   ├── get_redis_iresty.lua + │   ├── get_redis.lua + │   ├── main.lua + │   └── test.lua + ├── lualib + │   ├── cjson.so + │   ├── ngx + │   ├── rds + │   ├── redis + │   └── resty + └── nginx_first.conf + ``` +##### [1]单独项目配置文件 ++ 在这里我的所有项目放在`/home/tinywan/Openresty_Protect` 这个目录下面 ++ 这里我们拿第一个项目做测试,项目名称:`First_Protect` + ++ nginx_first.conf 配置文件 + ```Lua + server { + listen 80; + server_name _; + + location /lua { + default_type 'text/html'; + lua_code_cache off; + content_by_lua_file /home/tinywan/Openresty_Protect/First_Protect/lua/test.lua; + } + } + ``` ++ test.lua 文件内容:`ngx.say("Hello! First_Protect")` ++ CURL 请求测试结果: + ```Lua + tinywan@tinywan:/opt/openresty/nginx/conf$ curl http://127.0.0.1/lua + Hello! First_Protect + ``` +##### [2]测试引入官方库文件 ++ get_redis.lua + ```Lua + local json = require("cjson") + local redis = require("resty.redis") + local red = redis:new() + local get_args = ngx.req.get_uri_args() + + red:set_timeout(1000) + + local ip = "127.0.0.1" + local port = 6379 + local ok, err = red:connect(ip, port) + if not ok then + ngx.say("connect to redis error : ", err) + return ngx.exit(500) + end + + local key = get_args["name"] + local new_timer = ngx.localtime() + local value = key.."::"..new_timer + local ok , err = red:set(key,value) + if not ok then + ngx.say("failed to set "..key, err) + return + end + ngx.say("set result: ", ok) + + local res, err = red:get(key) + if not res then + ngx.say("get from redis error : ", err) + return + end + if res == ngx.null then + ngx.say(key.."not found.") + return + end + red:close() + ngx.say("First_Protect Success get Redis Data",json.encode({content=res})) + ``` ++ nginx_first.conf 配置文件 + ```Lua + server { + listen 80; + server_name _; + + location /lua { + default_type 'text/html'; + lua_code_cache off; + content_by_lua_file /home/tinywan/Openresty_Protect/First_Protect/lua/get_redis.lua; + } + } + ``` ++ CURL 请求测试结果: + ```Lua + tinywan@$ curl -G -d "name=Tinywan_github" http://127.0.0.1/lua_get_redis + set result: OK + First_Protect Success get Redis Data{"content":"Tinywan_github::2017-04-23 19:53:24"} + ``` +##### [3]自己调用自己分装好的文件 ++ Redis 接口的二次封装 redis_iresty.lua (路径:`/home/tinywan/Openresty_Protect/First_Protect/lualib/resty`) + ```Lua + -- file name: resty/redis_iresty.lua + local redis_c = require "resty.redis" + + local ok, new_tab = pcall(require, "table.new") + if not ok or type(new_tab) ~= "function" then + new_tab = function (narr, nrec) return {} end + end + + local _M = new_tab(0, 155) + _M._VERSION = '0.01' + + local commands = { + "append", "auth", "bgrewriteaof", + "bgsave", "bitcount", "bitop", + "blpop", "brpop", + "brpoplpush", "client", "config", + "dbsize", + "debug", "decr", "decrby", + "del", "discard", "dump", + "echo", + "eval", "exec", "exists", + "expire", "expireat", "flushall", + "flushdb", "get", "getbit", + "getrange", "getset", "hdel", + "hexists", "hget", "hgetall", + "hincrby", "hincrbyfloat", "hkeys", + "hlen", + "hmget", "hmset", "hscan", + "hset", + "hsetnx", "hvals", "incr", + "incrby", "incrbyfloat", "info", + "keys", + "lastsave", "lindex", "linsert", + "llen", "lpop", "lpush", + "lpushx", "lrange", "lrem", + "lset", "ltrim", "mget", + "migrate", + "monitor", "move", "mset", + "msetnx", "multi", "object", + "persist", "pexpire", "pexpireat", + "ping", "psetex", "psubscribe", + "pttl", + "publish", --[[ "punsubscribe", ]] "pubsub", + "quit", + "randomkey", "rename", "renamenx", + "restore", + "rpop", "rpoplpush", "rpush", + "rpushx", "sadd", "save", + "scan", "scard", "script", + "sdiff", "sdiffstore", + "select", "set", "setbit", + "setex", "setnx", "setrange", + "shutdown", "sinter", "sinterstore", + "sismember", "slaveof", "slowlog", + "smembers", "smove", "sort", + "spop", "srandmember", "srem", + "sscan", + "strlen", --[[ "subscribe", ]] "sunion", + "sunionstore", "sync", "time", + "ttl", + "type", --[[ "unsubscribe", ]] "unwatch", + "watch", "zadd", "zcard", + "zcount", "zincrby", "zinterstore", + "zrange", "zrangebyscore", "zrank", + "zrem", "zremrangebyrank", "zremrangebyscore", + "zrevrange", "zrevrangebyscore", "zrevrank", + "zscan", + "zscore", "zunionstore", "evalsha" + } + + local mt = { __index = _M } + + local function is_redis_null( res ) + if type(res) == "table" then + for k,v in pairs(res) do + if v ~= ngx.null then + return false + end + end + return true + elseif res == ngx.null then + return true + elseif res == nil then + return true + end + + return false + end + + -- change connect address as you need + function _M.connect_mod( self, redis ) + redis:set_timeout(self.timeout) + return redis:connect("127.0.0.1", 6379) + end + + function _M.set_keepalive_mod( redis ) + -- put it into the connection pool of size 100, with 60 seconds max idle time + return redis:set_keepalive(60000, 1000) + end + + function _M.init_pipeline( self ) + self._reqs = {} + end + + function _M.commit_pipeline( self ) + local reqs = self._reqs + + if nil == reqs or 0 == #reqs then + return {}, "no pipeline" + else + self._reqs = nil + end + + local redis, err = redis_c:new() + if not redis then + return nil, err + end + + local ok, err = self:connect_mod(redis) + if not ok then + return {}, err + end + + redis:init_pipeline() + for _, vals in ipairs(reqs) do + local fun = redis[vals[1]] + table.remove(vals , 1) + + fun(redis, unpack(vals)) + end + + local results, err = redis:commit_pipeline() + if not results or err then + return {}, err + end + + if is_redis_null(results) then + results = {} + ngx.log(ngx.WARN, "is null") + end + -- table.remove (results , 1) + + self.set_keepalive_mod(redis) + + for i,value in ipairs(results) do + if is_redis_null(value) then + results[i] = nil + end + end + + return results, err + end + + function _M.subscribe( self, channel ) + local redis, err = redis_c:new() + if not redis then + return nil, err + end + + local ok, err = self:connect_mod(redis) + if not ok or err then + return nil, err + end + + local res, err = redis:subscribe(channel) + if not res then + return nil, err + end + + res, err = redis:read_reply() + if not res then + return nil, err + end + + redis:unsubscribe(channel) + self.set_keepalive_mod(redis) + + return res, err + end + + local function do_command(self, cmd, ... ) + if self._reqs then + table.insert(self._reqs, {cmd, ...}) + return + end + + local redis, err = redis_c:new() + if not redis then + return nil, err + end + + local ok, err = self:connect_mod(redis) + if not ok or err then + return nil, err + end + + local fun = redis[cmd] + local result, err = fun(redis, ...) + if not result or err then + -- ngx.log(ngx.ERR, "pipeline result:", result, " err:", err) + return nil, err + end + + if is_redis_null(result) then + result = nil + end + + self.set_keepalive_mod(redis) + + return result, err + end + + for i = 1, #commands do + local cmd = commands[i] + _M[cmd] = + function (self, ...) + return do_command(self, cmd, ...) + end + end + + function _M.new(self, opts) + opts = opts or {} + local timeout = (opts.timeout and opts.timeout * 1000) or 1000 + local db_index= opts.db_index or 0 + + return setmetatable({ + timeout = timeout, + db_index = db_index, + _reqs = nil }, mt) + end + + return _M + ``` ++ nginx_first.conf 配置文件 + ```Lua + server { + listen 80; + server_name _; + + location /get_redis_iresty { + default_type 'text/html'; + lua_code_cache off; + content_by_lua_file /home/tinywan/Openresty_Protect/First_Protect/lua/get_redis_iresty.lua; + } + } + ``` ++ 调用示例代码 get_redis_iresty.lua: + ```Lua + local redis = require "resty.redis_iresty" + local red = redis:new() + + local ok, err = red:set("TinyAiAI", "an Boby") + if not ok then + ngx.say("failed to set: ", err) + return + end + + ngx.say("set result: ", ok) + ``` ++ CURL 请求测试结果: + ```Lua + tinywan@$ curl http://127.0.0.1/get_redis_iresty + set result: OK + ``` \ No newline at end of file diff --git a/Openresty/lua-get-start/lua_request.lua b/Openresty/lua-get-start/lua_request.lua new file mode 100644 index 0000000000000000000000000000000000000000..ff277f4b4f8d8ffb0d55de3d52a2110ceb7e17ab --- /dev/null +++ b/Openresty/lua-get-start/lua_request.lua @@ -0,0 +1,97 @@ +--接受nginx变量 +local var = ngx.var +ngx.say("ngx.var.a : ", var.a, "
") +ngx.say("ngx.var.b : ", var.b, "
") +ngx.say("ngx.var[2] : ", var[2], "
") +ngx.var.b = 2; + +ngx.say("
") + +--请求头 +local headers = ngx.req.get_headers() +ngx.say("headers begin", "
") +ngx.say("Host : ", headers["Host"], "
") +ngx.say("user-agent : ", headers["user-agent"], "
") +ngx.say("user-agent : ", headers.user_agent, "
") +ngx.say("user-agent : ", ngx.req.get_headers("user-agent"), "
") +for k,v in pairs(headers) do + if type(v) == "table" then + ngx.say(k, " : ", table.concat(v, ","), "
") + else + ngx.say(k, " : ", v, "
") + end +end +ngx.say("headers end", "
") +ngx.say("
") + +--get请求uri参数 +ngx.say("uri args begin", "
") +local uri_args = ngx.req.get_uri_args() +for k, v in pairs(uri_args) do + if type(v) == "table" then + ngx.say(k, " : ", table.concat(v, ", "), "
") + else + ngx.say(k, ": ", v, "
") + end +end +ngx.say("uri args end", "
") +ngx.say("
") + +--post请求参数 +ngx.req.read_body() +ngx.say("post args begin", "
") +local post_args = ngx.req.get_post_args() +for k, v in pairs(post_args) do + if type(v) == "table" then + ngx.say(k, " : ", table.concat(v, ", "), "
") + else + ngx.say(k, ": ", v, "
") + end +end +ngx.say("post args end", "
") +ngx.say("
") + +--请求的http协议版本 +ngx.say("ngx.req.http_version : ", ngx.req.http_version(), "
") +--请求方法 +ngx.say("ngx.req.get_method : ", ngx.req.get_method(), "
") +--原始的请求头内容 +ngx.say("ngx.req.raw_header : ", ngx.req.raw_header(), "
") +--请求的body内容体 +ngx.say("ngx.req.get_body_data() : ", ngx.req.get_body_data(), "
") +ngx.say("
") + +--[[ +执行结果: +root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.1/lua_request/123/890 +ngx.var.a : 123
+ngx.var.b : 127.0.0.1
+ngx.var[2] : 890
+
+headers begin
+Host : 127.0.0.1
+user-agent : curl/7.47.0
+user-agent : curl/7.47.0
+host : 127.0.0.1
+accept : */*
+user-agent : curl/7.47.0
+headers end
+
+uri args begin
+uri args end
+
+post args begin
+post args end
+
+ngx.req.http_version : 1.1
+ngx.req.get_method : GET
+ngx.req.raw_header : GET /lua_request/123/890 HTTP/1.1 +Host: 127.0.0.1 +User-Agent: curl/7.47.0 +Accept: */* + +
+ngx.req.get_body_data() : nil
+
+ngx.var.b 2 +--]] \ No newline at end of file diff --git a/Openresty/lua-get-start/lua_request_01_location.conf b/Openresty/lua-get-start/lua_request_01_location.conf new file mode 100644 index 0000000000000000000000000000000000000000..27bacf92905ac9b2dbbc598c48e425cd48ca022d --- /dev/null +++ b/Openresty/lua-get-start/lua_request_01_location.conf @@ -0,0 +1,39 @@ +####################################################################################################### +## 【01】 +####################################################################################################### +location ~ /lua_request/(\d+)/(\d+) # 正则匹配 +{ + #设置nginx变量 (rewrite pharse) + set $a $1; + set $b $2; + set $c $host; + echo $a; + echo $b; + echo $c; +} +################################################ 访问结果为以下 +root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.1/lua_request/123/890 +123 +890 +127.0.0.1 +### 总结: + +####################################################################################################### +## 【02】 +####################################################################################################### +location ~ /lua_request/(\d+)/(\d+) # 正则匹配 +{ + #设置nginx变量 (rewrite pharse) + set $a $1; + set $b $2; + set $c $host; + echo $a; + echo $b; + echo $c; +} +################################################ 访问结果为以下 +root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.1/lua_request/123/890 +123 +890 +127.0.0.1 + diff --git a/Openresty/lua-get-start/request-nginx.conf b/Openresty/lua-get-start/request-nginx.conf new file mode 100644 index 0000000000000000000000000000000000000000..3f9cd8dd2a4d79cff3a54f634daefbd602d7a904 --- /dev/null +++ b/Openresty/lua-get-start/request-nginx.conf @@ -0,0 +1,10 @@ +location ~ /lua_request/(\d+)/(\d+) { + #设置nginx变量 + set $a $1; + set $b $host; + default_type "text/html"; + #nginx内容处理 + content_by_lua_file /mnt/hgfs/Linux-Share/Lua/lua_request.lua ; + #内容体处理完成后调用 + echo_after_body "ngx.var.b $b"; +} \ No newline at end of file diff --git a/Openresty/lua-resty-http/lua-http-test.lua b/Openresty/lua-resty-http/lua-http-test.lua new file mode 100644 index 0000000000000000000000000000000000000000..7ddeb419fd1eb96551746cc95fbd13dfab515ffc --- /dev/null +++ b/Openresty/lua-resty-http/lua-http-test.lua @@ -0,0 +1,21 @@ +local http = require("resty.http") +local httpc = http.new() +local resp, err = httpc:request_uri("http://s.taobao.com", { + method = "GET", + path = "/search?q=hello", + headers = { + ["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" + } +}) +if not resp then + ngx.say("request error :", err) + return +end +ngx.status = resp.status +for k, v in pairs(resp.headers) do + if k ~= "Transfer-Encoding" and k ~= "Connection" then + ngx.header[k] = v + end +end +ngx.say(resp.body) +httpc:close() \ No newline at end of file diff --git a/Openresty/lua-resty-mysql/lua-msyql-test.lua b/Openresty/lua-resty-mysql/lua-msyql-test.lua new file mode 100644 index 0000000000000000000000000000000000000000..809d7fe9a3a9abe98d1b2499c9690e7d2a3f0e97 --- /dev/null +++ b/Openresty/lua-resty-mysql/lua-msyql-test.lua @@ -0,0 +1,88 @@ +local mysql = require "resty.mysql" +local db, err = mysql:new() +if not db then + ngx.say("failed to instantiate mysql: ", err) + return +end + +db:set_timeout(1000) -- 1 sec + +-- or connect to a unix domain socket file listened +-- by a mysql server: +-- local ok, err, errno, sqlstate = +-- db:connect{ +-- path = "/path/to/mysql.sock", +-- database = "ngx_test", +-- user = "ngx_test", +-- password = "ngx_test" } + +local ok, err, errno, sqlstate = db:connect{ + host = "127.0.0.1", + port = 3306, + database = "mysql", + user = "root", + password = "123456", + max_packet_size = 1024 * 1024 } + +if not ok then + ngx.say("failed to connect: ", err, ": ", errno, " ", sqlstate) + return +end + +ngx.say("connected to mysql.") + +local res, err, errno, sqlstate = + db:query("drop table if exists cats") +if not res then + ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".") + return +end + +res, err, errno, sqlstate = + db:query("create table cats " + .. "(id serial primary key, " + .. "name varchar(5))") +if not res then + ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".") + return +end + +ngx.say("table cats created.") + +res, err, errno, sqlstate = + db:query("insert into cats (name) " + .. "values (\'Bob1\'),(\'111\'),(null)") +if not res then + ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".") + return +end + +ngx.say(res.affected_rows, " rows inserted into table cats ", + "(last insert id: ", res.insert_id, ")") + +-- run a select query, expected about 10 rows in +-- the result set: +res, err, errno, sqlstate = + db:query("select * from cats order by id asc", 10) +if not res then + ngx.say("bad result: ", err, ": ", errno, ": ", sqlstate, ".") + return +end + +local cjson = require "cjson" +ngx.say("result: ", cjson.encode(res)) + +-- put it into the connection pool of size 100, +-- with 10 seconds max idle timeout +local ok, err = db:set_keepalive(10000, 100) +if not ok then + ngx.say("failed to set keepalive: ", err) + return +end + +-- or just close the connection right away: +-- local ok, err = db:close() +-- if not ok then +-- ngx.say("failed to close: ", err) +-- return +-- end diff --git a/Openresty/lua-resty-redis/HLS-Access-Redis.lua b/Openresty/lua-resty-redis/HLS-Access-Redis.lua new file mode 100644 index 0000000000000000000000000000000000000000..f74546d7fd5d960ba0c7879007624b89b3042757 --- /dev/null +++ b/Openresty/lua-resty-redis/HLS-Access-Redis.lua @@ -0,0 +1,17 @@ +-- Get Nginx ConfigInformation +local get_args = ngx.req.get_uri_args() +local ws_secret = tostring(get_args["wsSecret"]) -- tel +local ws_time = tostring(get_args["wsTime"]) -- string + +-- Sign md5 + + +-- Redis Info +local redis = require("resty.redis_iresty") +local red = redis:new() + +local ok, err = red:set("AMI1999", "Redis is an animal 1999") +if not ok then + ngx.say("failed to set dog: ", err) + return +end diff --git a/Openresty/lua-resty-redis/Hls-Line-Number-Total.lua b/Openresty/lua-resty-redis/Hls-Line-Number-Total.lua new file mode 100644 index 0000000000000000000000000000000000000000..b0070a73530e0ab6d4068ec6d04132e0de9c949d --- /dev/null +++ b/Openresty/lua-resty-redis/Hls-Line-Number-Total.lua @@ -0,0 +1,51 @@ +local function close_redis(redis_instance) + if not redis_instance then + return + end + + --释放连接(连接池实现) + local pool_max_idle_time = 10000 --毫秒 + local pool_size = 100 --连接池大小 + local ok, err = redis_instance:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.say("set keepalive error : ", err) + end +end + +-- 接受Nginx传递进来的参数$1 也就是SteamName +local stream_name = ngx.var.stream_name +local total = ngx.var.total + +local redis = require("resty.redis"); +-- 创建一个redis对象实例。在失败,返回nil和描述错误的字符串的情况下 +local redis_instance = redis:new(); +--设置后续操作的超时(以毫秒为单位)保护,包括connect方法 +redis_instance:set_timeout(1000) +--建立连接 +local ip = '127.0.0.1' +local port = 6379 +--尝试连接到redis服务器正在侦听的远程主机和端口 +local ok,err = redis_instance:connect(ip,port) +if not ok then + ngx.say("connect redis error : ",err) + return err +end + + +--数据库选择 +--redis_instance:select(2) + +--调用API获取数据 +local resp, err = redis_instance:incr("NUMBERS:"..stream_name) +if not resp then + ngx.say("get msg error : ", err) + return err +end + +--得到的数据为空处理 +if resp == ngx.null then + ngx.say("this is not redis_data") --比如默认值 + return nil +end +ngx.var.total_numbers = resp +close_redis(redis_instance) diff --git a/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.conf b/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.conf new file mode 100644 index 0000000000000000000000000000000000000000..d554235de35dcd08e2776a02695963490f55db8a --- /dev/null +++ b/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.conf @@ -0,0 +1,36 @@ + +upstream backend { + server 127.0.0.1:8080 max_fails=5 fail_timeout=10s weight=1; + server 127.0.0.1:8090 max_fails=5 fail_timeout=10s weight=1; + check interval=3000 rise=1 fall=2 timeout=5000 type=tcp default_down=false; + keepalive 100; +} + +server { + listen 80; + server_name _; + + location ~ ^/ad/(\d+)$ { + default_type 'text/html'; + charset utf-8; + lua_code_cache on; + set $id $1; + content_by_lua_file /usr/chapter6/ad.lua; + } + + location ~ /backend/(.*) { + internal; + keepalive_timeout 30s; + keepalive_requests 1000; + #支持keep-alive + proxy_http_version 1.1; + proxy_set_header Connection ""; + + rewrite /backend(/.*) $1 break; + proxy_pass_request_headers off; + #more_clear_input_headers Accept-Encoding; + proxy_next_upstream error timeout; + proxy_pass http://backend; + } +} + diff --git a/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.lua b/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.lua new file mode 100644 index 0000000000000000000000000000000000000000..c566a2b0f895e0bf517e13a719ee8886a306a1c9 --- /dev/null +++ b/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.lua @@ -0,0 +1,92 @@ +local redis = require("resty.redis") +local cjson = require("cjson") +local cjson_encode = cjson.encode +local ngx_log = ngx.log +local ngx_ERR = ngx.ERR +local ngx_exit = ngx.exit +local ngx_print = ngx.print +local ngx_re_match = ngx.re.match +local ngx_var = ngx.var + + +local function close_redis(red) + if not red then + return + end + --释放连接(连接池实现) + local pool_max_idle_time = 10000 --毫秒 + local pool_size = 100 --连接池大小 + local ok, err = red:set_keepalive(pool_max_idle_time, pool_size) + + if not ok then + ngx_log(ngx_ERR, "set redis keepalive error : ", err) + end +end +local function read_redis(id) + local red = redis:new() + red:set_timeout(1000) + local ip = "127.0.0.1" + local port = 1111 + local ok, err = red:connect(ip, port) + if not ok then + ngx_log(ngx_ERR, "connect to redis error : ", err) + return close_redis(red) + end + + local resp, err = red:get(id) + if not resp then + ngx_log(ngx_ERR, "get redis content error : ", err) + return close_redis(red) + end + + --得到的数据为空处理 + if resp == ngx.null then + resp = nil + end + close_redis(red) + + return resp +end + +local function read_http(id) + local resp = ngx.location.capture("/backend/ad", { + method = ngx.HTTP_GET, + args = {id = id} + }) + + if not resp then + ngx_log(ngx_ERR, "request error :", err) + return + end + + if resp.status ~= 200 then + ngx_log(ngx_ERR, "request error, status :", resp.status) + return + end + + return resp.body +end + + +--获取id +local id = ngx_var.id + +--从redis获取 +local content = read_redis(id) + +--如果redis没有,回源到tomcat +if not content then + ngx_log(ngx_ERR, "redis not found content, back to http, id : ", id) + content = read_http(id) +end + +--如果还没有返回404 +if not content then + ngx_log(ngx_ERR, "http not found content, id : ", id) + return ngx_exit(404) +end + +--输出内容 +ngx.print("show_ad(") +ngx_print(cjson_encode({content = content})) +ngx.print(")") diff --git a/Openresty/lua-resty-redis/proxy_pass_cdn.lua b/Openresty/lua-resty-redis/proxy_pass_cdn.lua new file mode 100644 index 0000000000000000000000000000000000000000..9567f784a637798426ddf800435849b76dc2e50b --- /dev/null +++ b/Openresty/lua-resty-redis/proxy_pass_cdn.lua @@ -0,0 +1,81 @@ +local function close_redis(redis_instance) + if not redis_instance then + return + end + -- local ok, err = redis_instance:close() + -- if not ok then + -- ngx.say("close redis error : ", err) + -- end + + --释放连接(连接池实现) + local pool_max_idle_time = 10000 --毫秒 + local pool_size = 100 --连接池大小 + local ok, err = redis_instance:set_keepalive(pool_max_idle_time, pool_size) + if not ok then + ngx.say("set keepalive error : ", err) + end +end + +-- 接受Nginx传递进来的参数$1 也就是SteamName +local stream_a = ngx.var.a + +local redis = require("resty.redis"); +-- 创建一个redis对象实例。在失败,返回nil和描述错误的字符串的情况下 +local redis_instance = redis:new(); +--设置后续操作的超时(以毫秒为单位)保护,包括connect方法 +redis_instance:set_timeout(1000) +--建立连接 +local ip = '127.0.0.1' +local port = 6379 +--尝试连接到redis服务器正在侦听的远程主机和端口 +local ok,err = redis_instance:connect(ip,port) +if not ok then + ngx.say("connect redis error : ",err) + return err +end + +-- -- 权限验证 +-- local res,err = redis_instance:auth('pass_tinywan') +-- if not res then +-- ngx.say("failed to authenticate: ", err) +-- return +-- end + +-- 权限验证 请注意这里 auth 的调用过程 +local count +--[[ + 如果当前连接不是从内建连接池中获取的,该方法总是返回 0 ,也就是说,该连接还没有被使用过。如果连接来自连接池,那么返回值永远都是非零。所以这个方法可以用来确认当前连接是否来自池子 + 对于 Redis 授权,实际上只需要建立连接后,首次认证一下,后面只需直接使用即可。换句话说,从连接池中获取的连接都是经过授权认证的,只有新创建的连接才需要进行授权认证。 + 所以大家就看到了 count, err = red:get_reused_times() 这段代码,并有了下面 if 0 == count then 的判断逻辑 +--]] +count, err = redis_instance:get_reused_times() +if 0 == count then + ok, err = redis_instance:auth("password") + if not ok then + ngx.say("failed to auth: ", err) + return + end +elseif err then + ngx.say("failed to get reused times: ", err) + return +end + +--数据库选择 +redis_instance:select(2) + +--调用API获取数据 +local resp, err = redis_instance:hget("CDNnode:"..stream_a,'livenode') +if not resp then + ngx.say("get msg error : ", err) + return err +end + +--得到的数据为空处理 +if resp == ngx.null then + ngx.say("this is not redis_data") --比如默认值 + return nil +end +ngx.var.stream_id = resp +close_redis(redis_instance) +-- ngx.say("reds get result : ", resp) +-- help doc http://jinnianshilongnian.iteye.com/blog/2187328 \ No newline at end of file diff --git a/Openresty/lua-resty-upstream-healthcheck.md b/Openresty/lua-resty-upstream-healthcheck.md new file mode 100644 index 0000000000000000000000000000000000000000..925981852ccd26b64fb02ed9974f5243630d8c3c --- /dev/null +++ b/Openresty/lua-resty-upstream-healthcheck.md @@ -0,0 +1,154 @@ +#### lua-resty-upstream-healthcheck使用 ++ health.txt 在每个upstream 服务器组的root 目录下创建这个文件,目录结构如下所示 + ```javascript + ├── html + │   ├── 50x.html + │   ├── index.html + │   ├── websocket001.html + │   └── websocket02.html + ├── html81 + │   ├── 50x.html + │   ├── health.txt + │   └── index.html + ├── html82 + │   ├── 50x.html + │   ├── health.txt + │   └── index.html + ├── html83 + │   ├── 50x.html + │   ├── health.txt + │   └── index.html + ├── html84 + │   ├── 50x.html + │   └── index.html + ``` ++ nginx.conf + ```Lua + worker_processes 8; + + error_log logs/error.log; + pid logs/nginx.pid; + + events { + use epoll; + worker_connections 1024; + } + + http { + include mime.types; + default_type text/html; + #lua模块路径,其中”;;”表示默认搜索路径,默认到/usr/servers/nginx下找 + lua_package_path "/home/tinywan/Openresty_Protect/First_Protect/lualib/?.lua;;"; #lua 模块 + lua_package_cpath "/home/tinywan/Openresty_Protect/First_Protect/lualib/?.so;;"; #c模块 + include /home/tinywan/Openresty_Protect/First_Protect/nginx_first.conf; + } + + ``` ++ nginx_first.conf + ```Lua + upstream tomcat { + server 127.0.0.1:8081; + server 127.0.0.1:8082; + server 127.0.0.1:8083; + server 127.0.0.1:8084 backup; + } + + lua_shared_dict healthcheck 1m; + + lua_socket_log_errors off; + + init_worker_by_lua_block { + local hc = require "resty.upstream.healthcheck" + local ok, err = hc.spawn_checker{ + shm = "healthcheck", -- defined by "lua_shared_dict" + upstream = "tomcat", -- defined by "upstream" + type = "http", + + http_req = "GET /health.txt HTTP/1.0\r\nHost: tomcat\r\n\r\n", + -- raw HTTP request for checking + + interval = 2000, -- run the check cycle every 2 sec + timeout = 1000, -- 1 sec is the timeout for network operations + fall = 3, -- # of successive failures before turning a peer down + rise = 2, -- # of successive successes before turning a peer up + valid_statuses = {200, 302}, -- a list valid HTTP status code + concurrency = 10, -- concurrency level for test requests + } + } + + server { + listen 80; + server_name localhost; + + location / { + proxy_pass http://tomcat; + } + + location /server/status { + access_log off; + allow 127.0.0.1; + + default_type text/plain; + content_by_lua_block { + local hc = require "resty.upstream.healthcheck" + ngx.say("Nginx Worker PID: ", ngx.worker.pid()) + ngx.print(hc.status_page()) + } + } + } + + server { + listen 8081; + server_name localhost; + + location / { + root html81; + index index.html index.htm; + } + + location /health_status { + + } + } + + server { + listen 8082; + server_name localhost; + + location / { + root html82; + index index.html index.htm; + } + + location /health_status { + + } + } + + server { + listen 8083; + server_name localhost; + + location / { + root html83; + index index.html index.htm; + } + + location /health_status { + + } + } + + server { + listen 8084; + server_name localhost; + + location / { + root html84; + index index.html index.htm; + } + } + + ``` ++ 状态查看,通过访问:`http://127.0.0.1/server/status` + ![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/Openresty_lua-resty-upstream-healthcheck.png) \ No newline at end of file diff --git a/Openresty/lua-resty-websocket/websocket.html b/Openresty/lua-resty-websocket/websocket.html new file mode 100644 index 0000000000000000000000000000000000000000..61be68762703779cebefb053a3b3887999bca733 --- /dev/null +++ b/Openresty/lua-resty-websocket/websocket.html @@ -0,0 +1,57 @@ + + + + + +
+ + + + +
+
    + + \ No newline at end of file diff --git a/Openresty/lua-resty-websocket/websocket.lua b/Openresty/lua-resty-websocket/websocket.lua new file mode 100644 index 0000000000000000000000000000000000000000..bd0e718802c0f77a9ab792c32eae74bd1c124cb9 --- /dev/null +++ b/Openresty/lua-resty-websocket/websocket.lua @@ -0,0 +1,39 @@ +local server = require "resty.websocket.server" +local wb, err = server:new{ + timeout = 5000, + max_payload_len = 65535 +} +if not wb then + ngx.log(ngx.ERR, "failed to new websocket: ", err) + return ngx.exit(444) +end +while true do + local data, typ, err = wb:recv_frame() + if wb.fatal then + ngx.log(ngx.ERR, "failed to receive frame: ", err) + return ngx.exit(444) + end + if not data then + local bytes, err = wb:send_ping() + if not bytes then + ngx.log(ngx.ERR, "failed to send ping: ", err) + return ngx.exit(444) + end + elseif typ == "close" then break + elseif typ == "ping" then + local bytes, err = wb:send_pong() + if not bytes then + ngx.log(ngx.ERR, "failed to send pong: ", err) + return ngx.exit(444) + end + elseif typ == "pong" then + ngx.log(ngx.INFO, "client ponged") + elseif typ == "text" then + local bytes, err = wb:send_text(data) + if not bytes then + ngx.log(ngx.ERR, "failed to send text: ", err) + return ngx.exit(444) + end + end +end +wb:send_close() diff --git a/Openresty/lua-resty-websocket/websocket01.html b/Openresty/lua-resty-websocket/websocket01.html new file mode 100644 index 0000000000000000000000000000000000000000..ea2163865d136d6449307d40ddf22f7d874494d9 --- /dev/null +++ b/Openresty/lua-resty-websocket/websocket01.html @@ -0,0 +1,107 @@ + + + + + + + +
    + + + + +
    +
      + + + + \ No newline at end of file diff --git a/Openresty/lua-resty-websocket/websocket01.lua b/Openresty/lua-resty-websocket/websocket01.lua new file mode 100644 index 0000000000000000000000000000000000000000..53d36d48016e05e246b75d3ec3fb05b4116def56 --- /dev/null +++ b/Openresty/lua-resty-websocket/websocket01.lua @@ -0,0 +1,104 @@ +-- simple chat with redis +local server = require "resty.websocket.server" +local redis = require "resty.redis" + +local channel_name = "chat" +local msg_id = 0 + +--create connection +local wb, err = server:new{ + timeout = 10000, + max_payload_len = 65535 +} + +--create success +if not wb then + ngx.log(ngx.ERR, "failed to new websocket: ", err) + return ngx.exit(444) +end + + +local push = function() + -- --create redis + local red = redis:new() + red:set_timeout(5000) -- 1 sec + local ok, err = red:connect("127.0.0.1", 6379) + if not ok then + ngx.log(ngx.ERR, "failed to connect redis: ", err) + wb:send_close() + return + end + + --sub + local res, err = red:subscribe(channel_name) + if not res then + ngx.log(ngx.ERR, "failed to sub redis: ", err) + wb:send_close() + return + end + + -- loop : read from redis + while true do + local res, err = red:read_reply() + if res then + local item = res[3] + local bytes, err = wb:send_text(tostring(msg_id).." "..item) + if not bytes then + -- better error handling + ngx.log(ngx.ERR, "failed to send text: ", err) + return ngx.exit(444) + end + msg_id = msg_id + 1 + end + end +end + + +local co = ngx.thread.spawn(push) + +--main loop +while true do + -- 获取数据 + local data, typ, err = wb:recv_frame() + + -- 如果连接损坏 退出 + if wb.fatal then + ngx.log(ngx.ERR, "failed to receive frame: ", err) + return ngx.exit(444) + end + + if not data then + local bytes, err = wb:send_ping() + if not bytes then + ngx.log(ngx.ERR, "failed to send ping: ", err) + return ngx.exit(444) + end + ngx.log(ngx.ERR, "send ping: ", data) + elseif typ == "close" then + break + elseif typ == "ping" then + local bytes, err = wb:send_pong() + if not bytes then + ngx.log(ngx.ERR, "failed to send pong: ", err) + return ngx.exit(444) + end + elseif typ == "pong" then + ngx.log(ngx.ERR, "client ponged") + elseif typ == "text" then + --send to redis + local red2 = redis:new() + red2:set_timeout(1000) -- 1 sec + local ok, err = red2:connect("127.0.0.1", 6379) + if not ok then + ngx.log(ngx.ERR, "failed to connect redis: ", err) + break + end + local res, err = red2:publish(channel_name, data) + if not res then + ngx.log(ngx.ERR, "failed to publish redis: ", err) + end + end +end + +wb:send_close() +ngx.thread.wait(co) \ No newline at end of file diff --git a/Openresty/lua_api_demo/ip_blacklist.lua b/Openresty/lua_api_demo/ip_blacklist.lua new file mode 100644 index 0000000000000000000000000000000000000000..1476d40a6a1952f65d015c933399313c77c19585 --- /dev/null +++ b/Openresty/lua_api_demo/ip_blacklist.lua @@ -0,0 +1,60 @@ +--[[----------------------------------------------------------------------- +* | Copyright (C) Shaobo Wan (Tinywan) +* | Github: https://github.com/Tinywan +* | Date: 2017/4/20 16:25 +* | Mail: Overcome.wan@Gmail.com +* |------------------------------------------------------------------------ +* | version: 1.0 +* | function: IP地址黑名单过滤 +* |------------------------------------------------------------------------ +--]] +local redis_host = "your.redis.server.here" +local redis_port = 6379 + +-- connection timeout for redis in ms. don't set this too high! +local redis_connection_timeout = 100 + +-- check a set with this key for blacklist entries +local redis_key = "ip_blacklist" + +-- cache lookups for this many seconds +local cache_ttl = 60 + +-- end configuration + +local ip = ngx.var.remote_addr +local ip_blacklist = ngx.shared.ip_blacklist +local last_update_time = ip_blacklist:get("last_update_time"); + +-- only update ip_blacklist from Redis once every cache_ttl seconds: +if last_update_time == nil or last_update_time < (ngx.now() - cache_ttl) then + + local redis = require "resty.redis"; + local red = redis:new(); + + red:set_timeout(redis_connect_timeout); + + local ok, err = red:connect(redis_host, redis_port); + if not ok then + ngx.log(ngx.DEBUG, "Redis connection error while retrieving ip_blacklist: " .. err); + else + local new_ip_blacklist, err = red:smembers(redis_key); + if err then + ngx.log(ngx.DEBUG, "Redis read error while retrieving ip_blacklist: " .. err); + else + -- replace the locally stored ip_blacklist with the updated values: + ip_blacklist:flush_all(); + for index, banned_ip in ipairs(new_ip_blacklist) do + ip_blacklist:set(banned_ip, true); + end + + -- update time + ip_blacklist:set("last_update_time", ngx.now()); + end + end +end + +if ip_blacklist:get(ip) then + ngx.log(ngx.DEBUG, "Banned IP detected and refused access: " .. ip); + return ngx.exit(ngx.HTTP_FORBIDDEN); +end \ No newline at end of file diff --git a/Openresty/openresty-api.md b/Openresty/openresty-api.md new file mode 100644 index 0000000000000000000000000000000000000000..1acc5bc97413d2e0ded01c4a22baa0eff9047643 --- /dev/null +++ b/Openresty/openresty-api.md @@ -0,0 +1,217 @@ +####
      ngx Lua APi 方法和常量 ++ ngx_lua 核心常量 + ```lua + ngx.OK (0) + ngx.ERROR (-1) + ngx.AGAIN (-2) + ngx.DONE (-4) + ngx.DECLINED (-5) + ngx.nil + -- 指令常量 + ngx.arg[index] #ngx指令参数,当这个变量在set_by_lua或者set_by_lua_file内使用的时候是只读的,指的是在配置指令输入的参数. + ngx.var.varname #读写NGINX变量的值,最好在lua脚本里缓存变量值,避免在当前请求的生命周期内内存的泄漏 + ngx.config.ngx_lua_version #当前ngx_lua模块版本号 + ngx.config.nginx_version #nginx版本 + ngx.worker.exiting #当前worker进程是否正在关闭 + ngx.worker.pid #当前worker进程的PID + ngx.config.nginx_configure #编译时的./configure命令选项 + ngx.config.prefix #编译时的prefix选项 + ``` ++ ngx_lua 方法 (#经常在ngx.location.catpure和ngx.location.capture_multi方法中被调用.) + ```lua + ngx.HTTP_GET + ngx.HTTP_HEAD + ngx.HTTP_PUT + ngx.HTTP_POST + ngx.HTTP_DELETE + ngx.HTTP_OPTIONS + ngx.HTTP_MKCOL + ngx.HTTP_COPY + ngx.HTTP_MOVE + ngx.HTTP_PROPFIND + ngx.HTTP_PROPPATCH + ngx.HTTP_LOCK + ngx.HTTP_UNLOCK + ngx.HTTP_PATCH + ngx.HTTP_TRACE + ``` ++ 错误日志级别常量 + ```lua + ngx.STDERR + ngx.EMERG + ngx.ALERT + ngx.CRIT + ngx.ERR + ngx.WARN + ngx.NOTICE + ngx.INFO + ngx.DEBUG + ``` ++ API中的常用方法 + ```lua + print() #与 ngx.print()方法有区别,print() 相当于ngx.log() + ngx.ctx #这是一个lua的table,用于保存ngx上下文的变量,在整个请求的生命周期内都有效,详细参考官方 + ngx.location.capture() #发出一个子请求,详细用法参考官方文档。 + ngx.location.capture_multi() #发出多个子请求,详细用法参考官方文档。 + ngx.status #读或者写当前请求的相应状态. 必须在输出相应头之前被调用. + ngx.header.HEADER #访问或设置http header头信息,详细参考官方文档。 + ngx.req.set_uri() #设置当前请求的URI,详细参考官方文档 + ngx.set_uri_args(args) #根据args参数重新定义当前请求的URI参数. + ngx.req.get_uri_args() #返回一个LUA TABLE,包含当前请求的全部的URL参数 + ngx.req.get_post_args() #返回一个LUA TABLE,包括所有当前请求的POST参数 + ngx.req.get_headers() #返回一个包含当前请求头信息的lua table. + ngx.req.set_header() #设置当前请求头header某字段值.当前请求的子请求不会受到影响. + ngx.req.read_body() #在不阻塞ngnix其他事件的情况下同步读取客户端的body信息.[详细] + ngx.req.discard_body() #明确丢弃客户端请求的body + ngx.req.get_body_data() #以字符串的形式获得客户端的请求body内容 + ngx.req.get_body_file() #当发送文件请求的时候,获得文件的名字 + ngx.req.set_body_data() #设置客户端请求的BODY + ngx.req.set_body_file() #通过filename来指定当前请求的file data。 + ngx.req.clear_header() #清求某个请求头 + ngx.exec(uri,args) #执行内部跳转,根据uri和请求参数 + ngx.redirect(uri, status) #执行301或者302的重定向。 + ngx.send_headers() #发送指定的响应头 + ngx.headers_sent #判断头部是否发送给客户端ngx.headers_sent=true + ngx.print(str) #发送给客户端的响应页面 + ngx.say() #作用类似ngx.print,不过say方法输出后会换行 + ngx.log(log.level,...) #写入nginx日志 + ngx.flush() #将缓冲区内容输出到页面(刷新响应) + ngx.exit(http-status) #结束请求并输出状态码 + ngx.eof() #明确指定关闭结束输出流 + ngx.escape_uri() #URI编码(本函数对逗号,不编码,而php的urlencode会编码) + ngx.unescape_uri() #uri解码 + ngx.encode_args(table) #将tabel解析成url参数 + ngx.decode_args(uri) #将参数字符串编码为一个table + ngx.encode_base64(str) #BASE64编码 + ngx.decode_base64(str) #BASE64解码 + ngx.crc32_short(str) #字符串的crs32_short哈希 + ngx.crc32_long(str) #字符串的crs32_long哈希 + ngx.hmac_sha1(str) #字符串的hmac_sha1哈希 + ngx.md5(str) #返回16进制MD5 + ngx.md5_bin(str) #返回2进制MD5 + ngx.today() #返回当前日期yyyy-mm-dd + ngx.time() #返回当前时间戳 + ngx.now() #返回当前时间 + ngx.update_time() #刷新后返回 + ngx.localtime() #返回 yyyy-mm-dd hh:ii:ss + ngx.utctime() #返回yyyy-mm-dd hh:ii:ss格式的utc时间 + ngx.cookie_time(sec) #返回用于COOKIE使用的时间 + ngx.http_time(sec) #返回可用于http header使用的时间 + ngx.parse_http_time(str) #解析HTTP头的时间 + ngx.is_subrequest #是否子请求(值为 true or false) + ngx.re.match(subject,regex,options,ctx) #ngx正则表达式匹配,详细参考官网 + ngx.re.gmatch(subject,regex,opt) #全局正则匹配 + ngx.re.sub(sub,reg,opt) #匹配和替换(未知) + ngx.re.gsub() #未知 + ngx.shared.DICT #ngx.shared.DICT是一个table 里面存储了所有的全局内存共享变量 + ngx.shared.DICT.get + ngx.shared.DICT.get_stale + ngx.shared.DICT.set + ngx.shared.DICT.safe_set + ngx.shared.DICT.add + ngx.shared.DICT.safe_add + ngx.shared.DICT.replace + ngx.shared.DICT.delete + ngx.shared.DICT.incr + ngx.shared.DICT.flush_all + ngx.shared.DICT.flush_expired + ngx.shared.DICT.get_keys + ndk.set_var.DIRECTIVE + ``` ++ Lua HTTP状态常量 + ```Lua + value = ngx.HTTP_CONTINUE (100) (first added in the v0.9.20 release) + value = ngx.HTTP_SWITCHING_PROTOCOLS (101) (first added in the v0.9.20 release) + value = ngx.HTTP_OK (200) + value = ngx.HTTP_CREATED (201) + value = ngx.HTTP_ACCEPTED (202) (first added in the v0.9.20 release) + value = ngx.HTTP_NO_CONTENT (204) (first added in the v0.9.20 release) + value = ngx.HTTP_PARTIAL_CONTENT (206) (first added in the v0.9.20 release) + value = ngx.HTTP_SPECIAL_RESPONSE (300) + value = ngx.HTTP_MOVED_PERMANENTLY (301) + value = ngx.HTTP_MOVED_TEMPORARILY (302) + value = ngx.HTTP_SEE_OTHER (303) + value = ngx.HTTP_NOT_MODIFIED (304) + value = ngx.HTTP_TEMPORARY_REDIRECT (307) (first added in the v0.9.20 release) + value = ngx.HTTP_BAD_REQUEST (400) + value = ngx.HTTP_UNAUTHORIZED (401) + value = ngx.HTTP_PAYMENT_REQUIRED (402) (first added in the v0.9.20 release) + value = ngx.HTTP_FORBIDDEN (403) + value = ngx.HTTP_NOT_FOUND (404) + value = ngx.HTTP_NOT_ALLOWED (405) + value = ngx.HTTP_NOT_ACCEPTABLE (406) (first added in the v0.9.20 release) + value = ngx.HTTP_REQUEST_TIMEOUT (408) (first added in the v0.9.20 release) + value = ngx.HTTP_CONFLICT (409) (first added in the v0.9.20 release) + value = ngx.HTTP_GONE (410) + value = ngx.HTTP_UPGRADE_REQUIRED (426) (first added in the v0.9.20 release) + value = ngx.HTTP_TOO_MANY_REQUESTS (429) (first added in the v0.9.20 release) + value = ngx.HTTP_CLOSE (444) (first added in the v0.9.20 release) + value = ngx.HTTP_ILLEGAL (451) (first added in the v0.9.20 release) + value = ngx.HTTP_INTERNAL_SERVER_ERROR (500) + value = ngx.HTTP_METHOD_NOT_IMPLEMENTED (501) + value = ngx.HTTP_BAD_GATEWAY (502) (first added in the v0.9.20 release) + value = ngx.HTTP_SERVICE_UNAVAILABLE (503) + value = ngx.HTTP_GATEWAY_TIMEOUT (504) (first added in the v0.3.1rc38 release) + value = ngx.HTTP_VERSION_NOT_SUPPORTED (505) (first added in the v0.9.20 release) + value = ngx.HTTP_INSUFFICIENT_STORAGE (507) (first added in the v0.9.20 release) + ``` ++ 案列使用,get_string_md5.lua: + ```Lua + local args = ngx.req.get_uri_args() + local salt = args.salt + if not salt then + ngx.say(ngx.HTTP_BAD_REQUEST) + end + local string = ngx.md5(ngx.time()..salt) + ngx.say(string) + + ``` ++ curl 请求(-i 参数,输出时包括protocol头信息): + ```Bash + tinywan@tinywan:$ curl -i http://127.0.0.1/get_rand_string?salt=tinywan123 + HTTP/1.1 200 OK + Server: openresty/1.11.2.1 + Date: Fri, 21 Apr 2017 14:27:16 GMT + Content-Type: application/octet-stream + Transfer-Encoding: chunked + Connection: keep-alive + ``` +#### ngx Lua APi 介绍使用 ++ 强烈建议使用ngx Lua APi 接口`(非阻塞的)`,而不是Lua自身的API`(阻塞的)`,Lua 自身API会阻塞掉的 ++ ngx_lua_api_test.lua + ```Lua + local json = require "cjson" -- 引入cjson 扩展 + + -- 同步读取客户端请求正文,而不会阻止Nginx事件循环 + ngx.req.read_body() + local args = ngx.req.get_post_args() + + if not args or not args.info then + ngx.say(ngx.HTTP_BAD_REQUEST) -- ngx.HTTP_BAD_REQUEST (400) + end + + local client_id = ngx.var.remote_addr + local user_agent = ngx.req.get_headers()['user-agent'] or "" + local info = ngx.decode_base64(args.info) + + local response = {} + response.info = info + response.client_id = client_id + response.user_agent = user_agent + + ngx.say(json.encode(response)) + + ``` ++ CURL Post 请求 + ```Lua + $ curl -i --data "info=b3ZlcmNvbWUud2FuQGdtYWlsLmNvbQ==" http://127.0.0.1/ngx_lua_api_test + HTTP/1.1 200 OK + Server: openresty/1.11.2.1 + Date: Sat, 22 Apr 2017 01:22:07 GMT + Content-Type: application/octet-stream + Transfer-Encoding: chunked + Connection: keep-alive + + {"user_agent":"curl\/7.47.0","info":"overcome.wan@gmail.com","client_id":"127.0.0.1"} + + ``` \ No newline at end of file diff --git a/Openresty/openresty-basic.md b/Openresty/openresty-basic.md new file mode 100644 index 0000000000000000000000000000000000000000..51d234d5731638fe416fb7603556b696b9eef172 --- /dev/null +++ b/Openresty/openresty-basic.md @@ -0,0 +1,62 @@ ++ [安装信息](http://www.cnblogs.com/tinywan/p/6647587.html) ++ [默认配置信息](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/default-config.md) ++ 开发入门 + + Nginx与Lua的整体目录关系 + ```javascript + . + ├── conf + │ ├── nginx.conf -- Nginx 配置文件 + ├── logs + │ ├── error.log -- Nginx 错误日子 + │ └── nginx.pid + ├── lua + │ ├── m3u8_redis_access.lua -- M3U8地址权限验证文件 + │ ├── business_redis.lua -- 业务 Redis 处理文件 + │ ├── http-lua-test.lua -- http lua demo + │ ├── ... + │ └── resty -- 存放Lua 的所有公共、封装好的库目录 + │ └── redis_iresty.lua -- Redis 接口的二次封装 + │ └── param.lua -- 参数过滤库 + └── sbin + └── nginx + ``` + + 参数总结 + + Lua脚本接受Nginx变量: + > [1] 间接获取:`var = ngx.var `,如接受Nginx的变量` $a = 9`,则`lua_a = ngx.var.a --lua_a = 9` + [2] 直接获取:`var = ngx.var `,如接受Nginx的location的第二个变量890,` http://127.0.0.1/lua_request/123/890 `,则`lua_2 = ngx.var[2] --lua_2 = 890` + + Lua 脚本接受 Nginx 头部 header: + > [1] 返回一个包含所有当前请求标头的Lua表:`local headers = ngx.req.get_headers()` + [2] 获取单个Host:`headers["Host"] 或者 ngx.req.get_headers()["Host"] ` + [3] 获取单个user-agent: + >> [01]`headers["user-agent"]` + [02]`headers.user_agent ` + [03]`ngx.req.get_headers()['user-agent'] ` + + Lua 脚本 Get 获取请求uri参数 + > linux curl Get方式提交数据语法:`curl -G -d "name=value&name2=value2" https://github.com/Tinywan ` + 返回一个包含所有当前请求URL查询参数的Lua表:`local get_args = ngx.req.get_uri_args()` + 请求案例:`curl -G -d "name=Tinywan&age=24" http://127.0.0.1/lua_request/123/789` + Lua Get 方式获取提交的name参数的值:`get_args['name'] 或者 ngx.req.get_uri_args()['name']` + >> [01]`get_args['name']` + [02]`ngx.req.get_uri_args()['name']` + + Lua 脚本 Post 获取请求uri参数 + > linux curl Post方式提交数据语法: + >> [01] `curl -d "name=value&name2=value2" https://github.com/Tinywan ` + [02] `curl -d a=b&c=d&txt@/tmp/txt https://github.com/Tinywan ` + > 返回一个包含所有当前请求URL查询参数的Lua表:`local post_args = ngx.req.get_post_args()` + 请求案例:`curl -d "name=Tinywan&age=24" http://127.0.0.1/lua_request/123/789` + Lua Post 方式获取提交的name参数的值: + >> [01]`post_args['name']` + [02]`ngx.req.get_post_args()['name']` + + Lua 脚本请求的http协议版本:`ngx.req.http_version()` + + Lua 脚本请求方法:`ngx.req.get_method()` + + Lua 脚本原始的请求头内容:`ngx.req.raw_header()` + + Lua 脚本请求的body内容体:`ngx.req.get_body_data()` + + [接收请求:获取如请求参数、请求头、Body体等信息]() + + [接收请求:输出响应需要进行响应状态码、响应头和响应内容体的输出]( ++ luajit 执行文件默认安装路径:`/opt/openresty/luajit/bin/luajit`,这样我们直接可以这样运行一个Lua文件:`luajit test.lua ` + + luajit 运行测试案例: + ```Bash + tinywan@tinywan:~/Lua$ luajit test.lua + The man name is Tinywan + The man name is Phalcon + ``` \ No newline at end of file diff --git a/Openresty/openresty-resty-module.md b/Openresty/openresty-resty-module.md new file mode 100644 index 0000000000000000000000000000000000000000..45bfe1a9f69ff58a19209fc1600b6e9059ed32bf --- /dev/null +++ b/Openresty/openresty-resty-module.md @@ -0,0 +1,246 @@ ++ [Lua require 绝对和相对路径(已经解决)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-common-package/lua-require.md) ++ [luajit 执行文件默认安装路径](#Openresty_web_knowledge) ++ [lua-resty-redis 扩展](#Openresty_resty-redis) ++ [lua-resty-websocket 扩展](#Openresty_resty-websocket) ++ [lua-cjson 扩展](#Openresty_resty-cjson) ++ [lua-dkjson 扩展](https://github.com/Tinywan/lua_project_v0.01) ++ [Lua 权限验证](#Openresty_resty-access) ++ [lua-resty-string 扩展](#Openresty_resty-string) ++ [lua-resty-http 扩展 ](#Openresty_resty-http) ++ [lua-resty-mysql 扩展](#Openresty_resty-mysql) ++ [lua-resty-shell 扩展](http://www.cnblogs.com/tinywan/p/6809879.html) ++ [lua-resty-template 扩展](https://github.com/Tinywan/lua_project_v0.01) ++ [lua-resty-template 扩展](https://github.com/Tinywan/lua_project_v0.01) ++ [openresty扫描代码全局变量](#Openresty_all-var) ++ [连接数据库](#Openresty_connent_redis) ++ [OpenResty缓存](#Openresty_connent_cache) ++ [lua-resty-upstream-healthcheck 使用](#Openresty_lua_resty_upstream_healthcheck) ++ [Openresty和Nginx_RTMP 模块共存问题](#Openresty_rtmp_share) ++ [Openresty配置RTMP模块的多worker直播流](#Openresty_rtmp_more_worker) ++ [Openresty配置RTMP模块的推流地址鉴权实例](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Openresty_rtmp_obs_push.md) ++ [Ngx_lua 写入Redis数据,通过CURL请求](#Ngx_lua_write_Redis) ++ [Nginx编写的Lua接口使用URL过期和签名验证机制过滤非法访问接口](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Openresty_rtmp_obs_push_auth.md) ++ [Nginx查看并发连接数](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/nginx_status.md) +#### lua-resty-redis 扩展 (是openresty下操作redis的模块) ++ 代码引入:`lua_package_path "/opt/openresty/nginx/lua/lua-resty-redis/lib/?.lua;;";` ++ Lua脚本实现一个CDN的反向代理功能(智能查找CDN节点)(测试成功,可上线) + + nginx.conf 配置信息 + ```Lua + http { + lua_package_path "/opt/openresty/nginx/lua/lua-resty-redis/lib/?.lua;;"; + server { + listen 80; + server_name localhost; + location ~ \/.+\/.+\.(m3u8|ts) { + if ($uri ~ \/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)(|-).*\.(m3u8|ts)) { + set $app_name $1; + set $a $2; + } + set $stream_id ""; + default_type 'text/html'; + rewrite_by_lua_file /opt/openresty/nginx/lua/proxy_pass_cdn.lua; + proxy_connect_timeout 10; + proxy_send_timeout 30; + proxy_read_timeout 30; + proxy_pass $stream_id; + } + + } + } + ``` + + [Lua脚本proxy_pass_cdn.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/proxy_pass_cdn.lua) + + [lua-nginx-module 贡献代码](https://github.com/openresty/lua-nginx-module/issues/275) + ++ Lua脚本结合 Nginx+Lua+Local Redis+Mysql服务器缓存 + + Nginx+Lua+Local Redis+Mysql集群架构 + + ![Nginx+Lua+Local Redis+Mysql](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/Nginx+Lua+Local_Redis+Mysql.png) + + [Lua脚本Nginx+Lua+Redis+Mysql.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.lua) + + [Nginx.conf配置文件Nginx+Lua+Redis+Mysql.conf](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.conf) + + [HELP](http://jinnianshilongnian.iteye.com/blog/2188113) + + + Lua脚本结合 Redis 统计直播流播放次数、链接次数等等信息 + + nginx.conf + ```Lua + server { # 配置虚拟服务器80 + listen 80; + server_name 127.0.0.1:8088; + location ~* /live/(\w+)/ { + set $total_numbers ""; + set $stream_name $1; + lua_code_cache off; + rewrite_by_lua_file /opt/openresty/nginx/conf/Lua/total_numbers.lua; + proxy_pass http://127.0.0.1:8088; + } + } + ``` + + 代理服务器 + ```Lua + server { # 配置虚拟服务器8088 + listen 8088; + server_name 127.0.0.1:8088; + location /live { + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + add_header 'Access-Control-Allow-Headers' 'Range'; + types{ + application/dash+xml mpd; + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + alias /home/tinywan/HLS/live/; + } + } + + ``` + + CURL请求地址:`http://192.168.18.143/live/tinywan123/index.m3u8` + + [Lua 脚本](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/Hls-Line-Number-Total.lua) + +#### lua-resty-websocket 扩展 ++ 代码引入:`lua_package_path "/opt/openresty/nginx/lua/lua-resty-websocket/lib/?.lua;;";` ++ **Lua脚本实现一个websocket连接(测试成功,可上线)** + + nginx.conf 配置信息 + ```Lua + http { + lua_package_path "/opt/openresty/nginx/lua/lua-resty-websocket/lib/?.lua;;"; + server { + listen 80 so_keepalive=2s:2s:8; #为了防止半开TCP连接,最好在Nginx监听配置指令中启用TCP keepalive: + server_name localhost; + location /ws { + lua_socket_log_errors off; + lua_check_client_abort on; + lua_code_cache off; # 建议测试的时候最好关闭缓存 + content_by_lua_file /opt/openresty/nginx/conf/Lua/websocket.lua; + } + } + } + ``` + + [WebSockets服务器Lua脚本websocket.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-websocket/websocket.lua) + + [websockets.html客户端代码,代码路径:/usr/local/openresty/nginx/html](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-websocket/websocket.html) + + 然后打开启用了WebSocket支持的浏览器,然后打开以下url: + ![websockt-lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/websocket_lua01.png) +#### lua-cjson 扩展 ++ 基本用法 + + nginx.conf + ```Lua + location /cjson { + content_by_lua_block { + local cjson = require "cjson" + local json = cjson.encode({ + foo = "bar", + some_object = {}, + some_array = cjson.empty_array + }) + ngx.say(json) + } + } + ``` + + curl 请求 + ```Bash + root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.1/cjson + {"some_object":{"tel":13669313112,"age":24},"name":"tinywan","some_array":[]} + ``` ++ [lua对象到字符串、字符串到lua对象](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-cjson/cjson-str-obj.lua) +#### lua-resty-session 扩展 ++ OpenResty 引用第三方 resty 库非常简单,只需要将相应的文件拷贝到 resty 目录下即可 ++ 我服务器OpenResty 的 resty 路径:`/opt/openresty/lualib/resty` ++ 下载第三方 resty 库:git clone lua-resty-session 文件路径以及内容: + ```Bash + tinywan@tinywan:/opt/openresty/nginx/lua/lua-resty-session/lib/resty$ ls + session session.lua + ``` ++ 特别注意:这里拷贝的时候要要把session文件和session.lua 文件同时吧、拷贝过去,否则会报错误: + ```Bash + /opt/openresty/lualib/resty/session.lua:34: in function 'prequire' + /opt/openresty/lualib/resty/session.lua:211: in function 'new' + /opt/openresty/lualib/resty/session.lua:257: in function 'open' + /opt/openresty/lualib/resty/session.lua:320: in function 'start' + ``` ++ 拷贝完毕后`/opt/openresty/lualib/resty` OpenResty 引用第三方 resty 的所有库文件 + ```Bash + tinywan@tinywan:/opt/openresty/lualib/resty$ ls + aes.lua core.lua http_headers.lua lock.lua lrucache.lua memcached.lua random.lua session sha1.lua sha256.lua sha512.lua string.lua upstream + core dns http.lua lrucache md5.lua mysql.lua redis.lua session.lua sha224.lua sha384.lua sha.lua upload.lua websocket + ``` ++ 基本用法 + ```Lua + location /start { + content_by_lua_block { + local session = require "resty.session".start() + session.data.name = "OpenResty Fan Tinywan" + session:save() + ngx.say("Session started. ", + "Check if it is working!") + ngx.say(session.data.name,"Anonymous") + } + } + ``` ++ curl 请求 + ```Bash + tinywan@tinywan:/opt/openresty/nginx/conf$ curl http://192.168.18.143/start + Session started. Check if it is working! + OpenResty Fan Tinywan Anonymous + ``` +#### Lua 权限验证 ++ Lua 一个HLS的简单地址访问权限验证 + + Nginx.conf 配置 + ```Lua + location ^~ /live/ { + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + add_header 'Access-Control-Allow-Headers' 'Range'; + + types{ + application/dash+xml mpd; + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + if ( $uri ~ \.m3u8 ) { + lua_code_cache off; + access_by_lua_file /opt/openresty/nginx/lua/access.lua; + } + root /home/tinywan/HLS; + } + ``` + + access.lua 文件内容 + ```Lua + if ngx.req.get_uri_args()["wsSecret"] ~= "e65e6a01cf26523e206d5bb0e2a8a95a" then + return ngx.exit(403) + end + ``` +#### lua-resty-string 扩展 ++ MD5加密的简单基本用法 md5.lua + ```Lua + local resty_md5 = require "resty.md5" + local md5 = resty_md5:new() + if not md5 then + ngx.say("failed to create md5 object") + return + end + local ok = md5:update("hello") + if not ok then + ngx.say("failed to add data") + return + end + local digest = md5:final() + -- ngx.say("md5",digest) ---注意:这样直接输出是乱码 + local str = require "resty.string" + ngx.say("md5: ", str.to_hex(digest)) ---注意:必须通过字符串转码方可打印输出 + -- yield "md5: 5d41402abc4b2a76b9719d911017c592" + ``` +#### lua-resty-http 扩展 (ngx_lua的HTTP客户端cosocket驱动程序) ++ [简单测试:lua-http-test.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-http/lua-http-test.lua) +#### lua-resty-mysql 扩展 ++ [简单测试:lua-msyql-test.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-mysql/lua-msyql-test.lua) +#### srcache-nginx-module 扩展 ([nginx下的一个缓存模块](https://github.com/openresty/srcache-nginx-module)) ++ [openresty–redis–srcache缓存的应用](http://www.xtgxiso.com/openresty-redis-srcache-nginx-module%e7%bc%93%e5%ad%98%e7%9a%84%e5%ba%94%e7%94%a8/) +#### openresty扫描代码全局变量 ++ 在OpenResty中需要避免全局变量的使用,为此春哥写了一个perl工具,可以扫描openresty lua代码的全局变量 ++ [https://github.com/openresty/openresty-devel-utils/blob/master/lua-releng](https://github.com/openresty/openresty-devel-utils/blob/master/lua-releng) ++ 用法相当简单 + 1. 将代码保存成lua-releng文件 + 2. 更改lua-releng的权限,chmod 777 lua-releng + 3. 假设有一个源码文件为test.lua + 4. 执行./lua-releng test.lua,则会扫描test.lua文件的全局变量,并在屏幕打印结果 \ No newline at end of file diff --git a/Openresty/openresty-rtmp.md b/Openresty/openresty-rtmp.md new file mode 100644 index 0000000000000000000000000000000000000000..bc9633191098d3fb3841753788b8bacb8a531e74 --- /dev/null +++ b/Openresty/openresty-rtmp.md @@ -0,0 +1,37 @@ +#### OpenResty缓存 ++ 指令:`lua_shared_dict` + + 纯内存的操作,多个worker之间共享的(比如nginx开启10个Worker,则每个worker之间是共享该内存的) + + 同一份数据在多个worker之间是共享的,只要存储一份数据就可以了 + + 锁的竞争(数据原子性) + +#### Openresty和Nginx_RTMP 模块共存问题 ++ RTMP 流的状态(stat.xsl)不生效Bug 问题 + - 1. 修改完nginx.conf 配置文件 + - 1. ~~执行:`nginx -s reload` 会不起作用~~ + - 2. 一定要执行以下命令:杀掉所有nginx进程`sudo killall nginx ` 重启即可`sbin/nignx` +#### 配置RTMP模块的多worker直播流 ++ 配置文件,[Multi-worker live streaming官方文档](https://github.com/arut/nginx-rtmp-module/wiki/Directives#multi-worker-live-streaming) + ```Shell + user www www; + worker_processes auto; + error_log logs/error.log debug; + + pid /var/run/nginx.pid; + events { + use epoll; + worker_connections 1024; + multi_accept on; + } + + rtmp_auto_push on; + rtmp_auto_push_reconnect 1s; + rtmp_socket_dir /var/sock; + rtmp { + server { + listen 1935; + application live { + live on; + } + } + } + ``` \ No newline at end of file diff --git a/Openresty/test.lua b/Openresty/test.lua new file mode 100644 index 0000000000000000000000000000000000000000..2656e60928321ee755f42261caa9ff3020664cf8 --- /dev/null +++ b/Openresty/test.lua @@ -0,0 +1,48 @@ +local red = redis:new() + +-- set Cache cache_ngx +function set_to_cache(key,value,exptime) + if not exptime then + exptime = 0 + end + local cache_ngx = ngx.shared.cache_ngx + local succ, err, forcible = cache_ngx:set(key,value,exptime) + return succ +end + +--get Cache cache_ngx +function get_from_cache(key) + local cache_ngx = ngx.shared.cache_ngx + local value = cache_ngx:get(key) + if not value then + value = nil + set_to_cache(key, value) + end + return value +end + +function get_from_redis(key) + local res, err = red:get("dog") + if res then + return 'yes' + else + return 'No' + end +end +local res = get_from_cache('dog') +ngx.say(res) + + +local delay = 5 +local handler +handler = function (premature,param) + -- do some routine job in Lua just like a cron job + if premature then + return + end + + ngx.log(ngx.ERR, "param is : ", param) +end + +local ok, err = ngx.timer.at(delay, handler,"Hello Tinywan") + \ No newline at end of file diff --git a/PHP/PHP-FPM/config.md b/PHP/PHP-FPM/config.md new file mode 100644 index 0000000000000000000000000000000000000000..eddecba07b8eb298c76bb435e5d6ed7f2379b8e1 --- /dev/null +++ b/PHP/PHP-FPM/config.md @@ -0,0 +1,195 @@ +## PHP7中php.ini、php-fpm和www.conf的配置 ++ 配置文件详解 + ``` + |Project_dir + | + | |----nginx.conf -- 配置文件(PHP版本,适合WordPress、Typecho等) + |--Nginx--|----nginx_pelican.conf -- 配置文件(静态HTML版本,适合Pelican、HEXO等) + | |----nginx -- 服务控制脚本 + | + | |----php.ini -- php运行核心配置文件,文件所在目录:/opt/php-7.0.9/etc/ + | |----php-fpm -- 服务控制脚本,文件所在目录:/opt/php-7.0.9/sbin/ + |---PHP---| + | |----php-fpm.conf -- 是 **php-fpm** 进程服务的配置文件,文件所在目录:/opt/php-7.0.9/etc/ + | |----www.conf -- 是 php-fpm 进程服务的扩展配置文件,文件所在目录:/opt/php-7.0.9/etc/php-fpm.d/ + | + | |----my.cnf -- 配置文件 + |--MySql--| + | |----mysqld -- 服务控制脚本 + | + |--nginx_log_backup.sh -- 每天切割Nginx服务产生的日志文件 + | + |--README.md + ``` ++ PHP + + 启动:`sudo /opt/php-7.0.9/sbin/php-fpm ` + + 重启: + ``` + sudo kill -QUIT `cat /opt/php-7.0.9/var/run/php-fpm.pid` + ``` + + 停止: + ``` + sudo kill -QUIT `cat /opt/php-7.0.9/var/run/php-fpm.pid` + + sudo kill -9 `cat /opt/php-7.0.9/var/run/php-fpm.pid` + ``` + + php-fpm 主进程pid:`cat /opt/php-7.0.9/var/run/php-fpm.pid ` + + php-fpm 错误日志文件:`cat /opt/php-7.0.9/var/log/php-fpm.log ` + + php-fpm 的启动参数 + ``` + #测试php-fpm配置 + /usr/local/php/sbin/php-fpm -t + /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t + + #启动php-fpm + /usr/local/php/sbin/php-fpm + /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf + + #关闭php-fpm + kill -INT `cat /usr/local/php/var/run/php-fpm.pid` + + #重启php-fpm + kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` + ``` + + php.ini + > [1] php 运行核心配置文件 + > [2] 文件信息 + + ``` + ######避免PHP信息暴露在http头中 + expose_php = Off + + ######避免暴露php调用mysql的错误信息 + display_errors = Off + + ######在关闭display_errors后开启PHP错误日志(路径在php-fpm.conf中配置) + log_errors = On + + ######设置PHP的扩展库路径 + extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20141001/" + + ######设置PHP的opcache和mysql动态库 + zend_extension=opcache.so + extension=mysqli.so + extension=pdo_mysql.so + + ######设置PHP的时区 + date.timezone = PRC + + ######开启opcache + [opcache] + ; Determines if Zend OPCache is enabled + opcache.enable=1 + + ######设置PHP脚本允许访问的目录(需要根据实际情况配置) + ;open_basedir = /usr/share/nginx/html; + ``` + + + php-fpm.conf + > [1] 是php-fpm进程服务的配置文件 + > [2] 文件信息 + + ``` + pid = run/php-fpm.pid + #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 + + error_log = log/php-fpm.log + #错误日志,默认在安装目录中的var/log/php-fpm.log + + log_level = notice + #错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice. + + emergency_restart_threshold = 60 + emergency_restart_interval = 60s + #表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。 + + process_control_timeout = 0 + #设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0. + + daemonize = yes + #后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。 + + listen = 127.0.0.1:9000 + #fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置. + + listen.backlog = -1 + #backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41 + + listen.allowed_clients = 127.0.0.1 + #允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接 + + listen.owner = www + listen.group = www + listen.mode = 0666 + #unix socket设置选项,如果使用tcp方式访问,这里注释即可。 + + user = www + group = www + #启动进程的帐户和组 + + pm = dynamic #对于专用服务器,pm可以设置为static。 + #如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定: + pm.max_children #,子进程最大数 + pm.start_servers #,启动时的进程数 + pm.min_spare_servers #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程 + pm.max_spare_servers #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理 + + pm.max_requests = 1000 + #设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0. + + pm.status_path = /status + #FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到 + + ping.path = /ping + #FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。 + + ping.response = pong + #用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong. + + request_terminate_timeout = 0 + #设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项。 + + request_slowlog_timeout = 10s + #当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off' + + slowlog = log/$pool.log.slow + #慢请求的记录日志,配合request_slowlog_timeout使用 + + rlimit_files = 1024 + #设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。 + + rlimit_core = 0 + #设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值. + + chroot = + #启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用. + + chdir = + #设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时) + + catch_workers_output = yes + #重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空. + ``` + + + www.conf + > [1] 这是php-fpm进程服务的扩展配置文件 + > [2] 文件信息 + + ``` + ######设置用户和用户组 + user = nginx + group = nginx + + ######根据nginx.conf中的配置fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;设置PHP监听 + ; listen = 127.0.0.1:9000 #####不建议使用 + listen = /var/run/php-fpm/php-fpm.sock + + ######开启慢日志 + slowlog = /var/log/php-fpm/$pool-slow.log + request_slowlog_timeout = 10s + + ######设置php的session目录(所属用户和用户组都是nginx) + php_value[session.save_handler] = files + php_value[session.save_path] = /var/lib/php/session + `` + diff --git a/PHP/PHP-FPM/php-fpm.sh b/PHP/PHP-FPM/php-fpm.sh new file mode 100644 index 0000000000000000000000000000000000000000..864c87bfc3681f6bebb80c33e446bcbc5c16f1c6 --- /dev/null +++ b/PHP/PHP-FPM/php-fpm.sh @@ -0,0 +1,134 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: php-fpm +# Required-Start: $remote_fs $network +# Required-Stop: $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts php-fpm +# Description: starts the PHP FastCGI Process Manager daemon +### END INIT INFO + +prefix=/opt/php-7.0.9 # 只需要修改这里就可以里,这里是编译路径 +exec_prefix=${prefix} + +php_fpm_BIN=${exec_prefix}/sbin/php-fpm +php_fpm_CONF=${prefix}/etc/php-fpm.conf +php_fpm_PID=${prefix}/var/run/php-fpm.pid + +php_opts="--fpm-config $php_fpm_CONF --pid $php_fpm_PID" + +wait_for_pid () { + try=0 + + while test $try -lt 35 ; do + + case "$1" in + 'created') + if [ -f "$2" ] ; then + try='' + break + fi + ;; + + 'removed') + if [ ! -f "$2" ] ; then + try='' + break + fi + ;; + esac + + echo -n . + try=`expr $try + 1` + sleep 1 + + done + +} +case "$1" in + start) + echo -n "Starting php-fpm ... " + + $php_fpm_BIN --daemonize $php_opts + + if [ "$?" != 0 ] ; then + echo " failed" + exit 1 + fi + + wait_for_pid created $php_fpm_PID + + if [ -n "$try" ] ; then + echo " failed" + exit 1 + else + echo "[OK]" + fi + ;; + + stop) + echo -n "Gracefully shutting down php-fpm " + + if [ ! -r $php_fpm_PID ] ; then + echo "warning, no pid file found - php-fpm is not running ?" + exit 1 + fi + + kill -QUIT `cat $php_fpm_PID` + + wait_for_pid removed $php_fpm_PID + + if [ -n "$try" ] ; then + echo " failed. Use force-quit" + exit 1 + else + echo "[OK]" + fi + ;; + + force-quit) + echo -n "Terminating php-fpm " + + if [ ! -r $php_fpm_PID ] ; then + echo "warning, no pid file found - php-fpm is not running ?" + exit 1 + fi + + kill -TERM `cat $php_fpm_PID` + + wait_for_pid removed $php_fpm_PID + + if [ -n "$try" ] ; then + echo " failed" + exit 1 + else + echo " [OK]" + fi + ;; + + restart) + $0 stop + $0 start +;; + + reload) + + echo -n "Reload service php-fpm " + + if [ ! -r $php_fpm_PID ] ; then + echo "warning, no pid file found - php-fpm is not running ?" + exit 1 + fi + + kill -USR2 `cat $php_fpm_PID` + + echo "[OK]" + ;; + + *) + echo "Usage: $0 {start|stop|force-quit|restart|reload}" + exit 1 +;; + +esac \ No newline at end of file diff --git a/PHP/Socket/test.php b/PHP/Socket/test.php new file mode 100644 index 0000000000000000000000000000000000000000..4bb54fce5d56e613812bca6afe486d9969f86cb5 --- /dev/null +++ b/PHP/Socket/test.php @@ -0,0 +1,14 @@ + 'success', + 1 => 'API Sign Error , Please task_id', + 2 => 'Oss File Download Fail', + 3 => 'FFmpeg cut/concat Video Fail', + 4 => 'Rename file error, Disk is full', + 5 => '截取缩略图失败,请检查视频开始、结束、视频截图时间', + ]; + + /** + * 在退出时使用不同的错误码 + */ + public function phpRunShellScript() + { + // 脚本路径 + $scriptPath = $_SERVER['DOCUMENT_ROOT'] . "/shell/php-test.sh"; + $scriptParam = '1 2 8'; + $cmdStr = "{$scriptPath} {$scriptParam}"; + echo $cmdStr; + // 执行 + exec("{$cmdStr}", $output_result, $return_status); + + // 返回码判断 + if($return_status == self::PERMISSION ){ + echo "chmod u+x ".$scriptPath."
      "; + }elseif ($return_status == self::DOS2UNIX){ + echo "需要使用dos2unix命令将文件转换为unix格式
      "; + }else{ + // 这时候要根据脚本返回的第二个返回值判断脚本具体哪里出错误了 + echo "脚本执行异常 MSg :" . $return_status . "
      "; + if ( isset($output_result[1]) && $output_result[1] == 1) { + echo " MSg1 : ".self::OUTPUT_MSG[$output_result[1]]."
      "; + } elseif (isset($output_result[1]) && $output_result[1] == 2){ + echo " MSg2 : ".self::OUTPUT_MSG[$output_result[1]]."
      "; + } elseif (isset($output_result[1]) && $output_result[1] == 3){ + echo " MSg3 : ".self::OUTPUT_MSG[$output_result[1]]."
      "; + } + } + echo 'success'; + } +``` + + diff --git a/README.md b/README.md index e9793828615d4a07f66f4474aae739a161ed2ec7..7096053e352bc6b4d0464f321eb34b9979842b04 100644 --- a/README.md +++ b/README.md @@ -1,171 +1,141 @@ - -## 开发过程记录 - -+ [解决 Visual Studio Code 向github提交代码不用输入帐号密码](#githubpush) - -##
      目录 -+ [**agentzh的Nginx教程(版本2016.07.21)**](https://openresty.org/download/agentzh-nginx-tutorials-en.html#00-foreword01) -+ **Lua网络编程基础知识** - * Lua基础 - * Lua进阶 -+ **Nginx开发从入门到精通** - + [Nginx 编译安装以及参数详解](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - + NGINX变量详解 - - [x] [nginx变量使用方法详解笔记(1)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-1.md) - - [x] [nginx变量使用方法详解笔记(2)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-2.md) - - [ ] [nginx变量使用方法详解笔记(3)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - - [ ] [nginx变量使用方法详解笔记(4)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - - [ ] [nginx变量使用方法详解笔记(5)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - + Nginx指令执行顺序 - - [x] [Nginx指令执行命令(01)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-1.md) - - [x] [nginx变量使用方法详解笔记(2)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-2.md) - - [ ] [nginx变量使用方法详解笔记(3)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - - [ ] [nginx变量使用方法详解笔记(4)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - - [ ] [nginx变量使用方法详解笔记(5)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) -+ **Nginx高性能WEB服务器详解** - + 第一章 初探 - - [x] [Nginx的历史](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) - + 第二章 安装部署 - - [ ] 测试一 - - [ ] C213 - * 第三章 Nginx初探 - - [ ] 测试一 - * 第四章 Nginx初探 - - [ ] 测试一 - * 第五章 Nginx初探 - - [ ] 测试一 - * 第六章 Nginx初探 - - [ ] 测试一 - * 第七章 Nginx服务器的代理服务** - - [ ] [正向代理和反向代理的概念](#title) - - [ ] [正向代理服务](#title) - - [ ] [反向代理的服务](#title) - - [x] [Nginx日志服务](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-Log.md) - * 负载均衡 - * HTTP负载均衡 - - [x] [负载均衡五个配置实例](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-7-Proxy.md) - * TCP负载均衡 - - [ ] [负载均衡](#title) - * 第八章 Nginx初探 - - [ ] 测试一 - * 第九章 Nginx初探 - - [ ] 测试一 - * 第十章 Nginx初探 - - [ ] 测试一 -+ Lua脚本开发Nginx - * 普通文本 - * 单行文本2 -* [Lua脚本运行Redis](#line) - -* [PHP脚本运行Redis](#line) - * [PHP 脚本执行一个Redis 订阅功能,用于监听键过期事件,返回一个回调,API接受改事件](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php) - * 单行文本1 - -+ **openresty** - - [x] 第一章 与location 配合 使用 - - [ ] 第一章 获取 uri 参数 - -## Redis、Lua、Nginx一起工作事迹 -* 解决一个set_by_lua $sum 命令受上下文限制的解决思路,已完美解决 - - [x] [API disabled in the context of set_by_lua](https://github.com/openresty/lua-nginx-module/issues/275) -* 解决2 -* 解决3 - -## Redis执行Lua脚本示例 -### Lua 基本语法 ---- -* Hello, Lua! - - > 我们的第一个Redis Lua 脚本仅仅返回一个字符串,而不会去与redis 以任何有意义的方式交互 - - ``` - local msg = "Hello, world!" - return msg - ``` - - > 这是非常简单的,第一行代码定义了一个本地变量msg存储我们的信息, 第二行代码表示 从redis 服务端返回msg的值给客户端。 保存这个文件到Hello.lua,像这样去运行: - - ``` - www@iZ239kcyg8rZ:~/lua$ redis-cli EVAL "$(cat Hello.lua)" 0 - "Hello, world!" - ``` - - > 运行这段代码会打印"Hello,world!", EVAL在第一个参数是我们的lua脚本, 这我们用cat命令从文件中读取我们的脚本内容。第二个参数是这个脚本需要访问的Redis 的键的数字号。我们简单的 “Hello Script" 不会访问任何键,所以我们使用0 - -### Lua知识 ---- -##### 基本语法 -* redis.call() 与 redis.pcall()的区别 - - * 他们唯一的区别是当redis命令执行结果返回错误时 - * redis.call()将返回给调用者一个错误. - * redis.pcall()会将捕获的错误以Lua表的形式返回. - * redis.call() 和 redis.pcall() 两个函数的参数可以是任意的 Redis 命令 - -* Lua网络编程 - -### Redis执行Lua脚本基本用法 ---- -* 基本语法 - ``` - EVAL script numkeys key [key ...] arg [arg ...] - ``` -* 通过lua脚本获取指定的key的List中的所有数据 - - ``` - local key=KEYS[1] - local list=redis.call("lrange",key,0,-1); - return list; - ``` -* 根据外面传过来的IDList 做“集合去重”的lua脚本逻辑: - ``` - local result={}; - local myperson=KEYS[1]; - local nums=ARGV[1]; - - local myresult =redis.call("hkeys",myperson); - - for i,v in ipairs(myresult) do - local hval= redis.call("hget",myperson,v); - redis.log(redis.LOG_WARNING,hval); - if(tonumber(hval) 解决 Visual Studio Code 向github提交代码不用输入帐号密码 -* 在命令行输入以下命令 - ``` - git config --global credential.helper store - ``` - - > 这一步会在用户目录下的.gitconfig文件最后添加: - - ``` - [credential] - helper = store - ``` -* push 代码 - - > push你的代码 (git push), 这时会让你输入用户名和密码, 这一步输入的用户名密码会被记住, 下次再push代码时就不用输入用户名密码!这一步会在用户目录下生成文件.git-credential记录用户名密码的信息。 - -* Markdown 的超级链接技术 - - > 【1】需要链接的地址: - - ``` - [解决向github提交代码不用输入帐号密码](#githubpush) - ``` - - > 【2】要链接到的地方: - - ``` - 解决向github提交代码不用输入帐号密码 - ``` - - > 通过【1】和【2】可以很完美的实现一个连接哦! - - - +[![996.icu](https://img.shields.io/badge/link-996.icu-red.svg)](https://996.icu) + +Nginx与Lua编写脚本的基本构建块是指令执行顺序的图 + +![Nginx编译安装](Images/Nginx-Phase.png) + +## Nginx 教程 + +#### 基础 +* [Nginx编译安装](/Nginx/nginx-install.md) +* [Nginx.conf详解](/Nginx/nginx-base-config.md) +* [Location 详解](/docs/Nginx/location-detail.md) +* [Nginx基础知识](/Nginx/nginx-basic.md) +* [Nginx高性能WEB服务器详解](/Nginx/nginx-high-basic.md) +* [Nginx高并发系统内核优化和PHP7配置文件优化](/Nginx/nginx-parameter-config.md) +* [Nginx和PHP-FPM启动脚本](/Nginx/nginx-start-script.md) +* [Nginx的11个Phases](/Nginx/nginx-phases.md) +* [agentzh 的 Nginx 教程](https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html) +* [Nginx 陷阱和常见错误](h/Nginx/nginx-1-config.md) +* [TCP和UDP负载平衡官方参考文档](https://www.cnblogs.com/tinywan/p/6586053.html) +* [Nginx 高并发系统内核优化](/Nginx/nginx-parameter-config.md) +* [nginx 并发数问题思考:worker_connections,worker_processes与 max clients](http://liuqunying.blog.51cto.com/3984207/1420556?utm_source=tuicool) +* [如何在工作中提高Ngixn服务器性能?达到高效](https://juejin.im/post/5adb45e96fb9a07ab773c767?utm_source=gold_browser_extension) +* [并发 = 同步/异步/阻塞/非阻塞/进程/线程](https://juejin.im/post/5bc69ecee51d45395d4f4072) +* [The Complete NGINX Cookbook](docs/Complete-NGINX-Cookbook-2019.pdf) +* [如何改进 NGINX 配置文件节省带宽?](/Nginx/nginx-config-bandwidth.md) +* [Nginx官方文档中文版](https://www.bookstack.cn/read/nginx-official-doc) +* [一个能够快速验证 Nginx 配置的在线演示工具](https://nginx-playground.wizardzines.com/) + +#### 案例 +* [Nginx 同一个IP上配置多个HTTPS主机](/Nginx/more-domain-config.md) +* [Nginx 如何配置一个安全的HTTPS网站服务器](http://www.cnblogs.com/tinywan/p/7542629.html) +* [Nginx 配置启用 HTTP/2](http://www.cnblogs.com/tinywan/p/7860774.html) +* [申请Let's Encrypt通配符HTTPS证书](https://www.cnblogs.com/tinywan/p/8573169.html) +* [如何配置proxy_cache模块](/Nginx/Nginx-Web/Nginx-8-proxy_cache.md) +* [负载均衡五个配置实例](/Nginx/Nginx-Web/Nginx-7-Proxy.md) + +#### 模块 +* [nginx-vod-module](http://www.cnblogs.com/tinywan/p/7879559.html) +* [nginx-module-vts](http://www.cnblogs.com/tinywan/p/7872366.html) +* [ngx_cache_purge](/Nginx/Nginx-Web/Nginx-8-proxy_cache.md) +* [lua-nginx-module](http://www.cnblogs.com/tinywan/p/6538006.html) +* [nginx-rtmp-module](http://www.cnblogs.com/tinywan/p/6639360.html) +* [ngx_http_proxy_module和ngx_http_upstream_module](/Nginx/Nginx-Web/ngx_http_upstream_module.md) + +#### 好文 +* [Nginx入门到实战(1)基础篇](https://segmentfault.com/a/1190000014893012) +* [Nginx入门到实战(2) 场景实现篇](https://mp.weixin.qq.com/s/RDIhU2pd37ecmKjgCtiZGQ) +* [nginx从入门到实践](http://fanqieto.top/2017/11/29/nginx%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E8%B7%B5/) +* [Nginx中文文档](http://www.nginx.cn/doc/) +* [Nginx开发从入门到精通](http://tengine.taobao.org/book/) +* [关于一些对location认识的误区](http://www.cnblogs.com/lidabo/p/4169396.html) +* [location总结及rewrite规则写法](https://segmentfault.com/a/1190000002797606) +* [How to Compile Nginx From Source on Ubuntu 16.04](https://www.vultr.com/docs/how-to-compile-nginx-from-source-on-ubuntu-16-04) +* [详解:Nginx 反向代理、后端检测模块](https://mp.weixin.qq.com/s/wGOQkAPif3buhezOQhbx5A) +* [Nginx的负载均衡 - 加权轮询 (Weighted Round Robin)](https://blog.csdn.net/zhangskd/article/details/50194069) + +#### 流媒体 +* [Setup Nginx on Ubuntu to Stream Live HLS Video](https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video) +* [Setup Nginx-RTMP on Ubuntu 14.04](https://www.vultr.com/docs/setup-nginx-rtmp-on-ubuntu-14-04) +* [利用nginx搭建RTMP视频点播、直播、HLS服务器](https://blog.csdn.net/kingroc/article/details/50839994) +* [实时流(直播流)播放、上墙(大屏播放)解决方案](https://www.cnblogs.com/xiaozhi_5638/p/8664841.html) +* [Nginx配置Rtmp支持Hls的直播和点播功能](/Nginx-Rtmp/HLS-live-vod.md) +* [HLS视频直播和点播的Nginx的Location的配置信息(成功)](/Nginx-Rtmp/HLS-live-vod-locatiuon-config.md) + +#### 其他 +* [Nginx和PHP-FPM的开机自动启动脚本](/PHP/PHP-FPM/config.md) +* [php-fpm/www.conf 的配置 ](/PHP/PHP-FPM/config.md) +* [深入剖析 Web 服务器与 PHP 应用的通信机制 - 掌握 CGI 和 FastCGI 协议的运行原理](https://mp.weixin.qq.com/s/6Kyfvc_N7PhBtFPstgt3MA) +* [PHP-FPM 与 Nginx 的通信机制总结](https://segmentfault.com/a/1190000018464303) + +## Lua 教程 +* [Lua 基础语法](/Lua-Script/lua-basic.md) +* [luajit 执行文件默认安装路径](#Nginx_base_knowledge) +* [lua中self_indes详解](/Lua-Script/oop/self__index.md) + +## Redis 教程 +* [Redis 安装](/Redis/redis-install.md) +* [Redis 配置详解](/Redis/redis-config.md) +* [Redis 基础知识](#Redis_base_knowledge) +* [Redis 开发与运维](#Redis-DevOps) +* [Redis 执行Lua脚本基本用法](/Redis/redis-lua.md) +* [Redis 漏洞如何防止被黑客攻击](/Redis/redis-safety.md) +* [如何在Ubuntu 16.04上安装和配置Redis](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04) +* [Redis协议规范(译文)](http://www.hchstudio.cn/article/2018/e687/) +* [负载均衡中使用Redis实现共享Session](https://segmentfault.com/a/1190000011558000) +* [Redis 设计与实现](https://github.com/huangz1990/redis-3.0-annotated) +* [为什么分布式一定要有Redis?](https://mp.weixin.qq.com/s/8uii1BzfVfChbH_t5Gk_8Q) +* [使用Lua脚本实现分布式锁](https://www.cnblogs.com/tinywan/p/9643022.html) +* [PHP 脚本执行一个Redis 订阅功能,用于监听键过期事件,返回一个回调,API接受改事件](/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php) +* [阿里云Redis开发规范](https://yq.aliyun.com/articles/531067) +* [高可用Redis服务架构分析与搭建](https://mp.weixin.qq.com/s/DA4uhPULaXI-KDKwvLzb8Q) +* [如何轻松搭建电商秒杀系统](https://yq.aliyun.com/articles/277885) +* [如何在Ubuntu 16.04上安装和配置Redis(推荐)](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-redis-on-ubuntu-16-04) +* [Codis集群演化与Redis异步迁移](/Redis/Codis集群演化与Redis异步迁移.pdf) +* [如何利用Redisson分布式化传统Web项目](/Redis/如何利用Redisson分布式化传统Web项目.pdf) +* [redis设计与实现(第二版).pdf](/Redis/redis设计与实现(第二版).pdf) +* [深入剖析 Redis5.0 全新数据结构 Streams(消息队列的新选择)](http://www.vlambda.com/wz_wNrPVgCQ43.html) +* [Redis5 配置及优化总结](/Redis/redis5-config.md) + +## Openresty 教程 + +* [安装默认配置信息](/Openresty/openresty-basic.md) +* [OpenResty 最佳实践](https://moonbingbing.gitbooks.io/openresty-best-practices/content/index.html) +* [如何编译一个高性能 OpenResty](https://yq.aliyun.com/articles/228399) +* [ngx_lua APi 方法和常量](/Openresty/openresty-api.md) +* [ngx_lua 扩展模块学习](/Openresty/openresty-resty-module.md) +* [lua-resty-upstream-healthcheck使用](/Openresty/lua-resty-upstream-healthcheck.md) +* [Openresty与Nginx_RTMP](/Openresty/openresty-rtmp.md) +* [自己写的一个简单项目lua_project_v0.01](https://github.com/Tinywan/lua_project_v0.01) +* [如何在openresty里解析域名](http://www.jkeabc.com/181587.html) +* [谈谈基于 OpenResty 的接口网关设计](https://www.zybuluo.com/yishuailuo/note/844059) +* [跟我学OpenResty(Nginx+Lua)开发](http://jinnianshilongnian.iteye.com/blog/2190344) +* [openresty 专栏](https://blog.csdn.net/qq362228416/article/category/6558114) +* [openresty 视频](http://i.youku.com/i/UMTM2NTgyMDEyMA==/videos?q=openresty) +* [模仿京东使用Openresty+Redis做读服务](https://my.oschina.net/zjzhai/blog/759719) +* [Openresty-Lua动态修改upstream后端服务](Nginx/Nginx-Web/openresty-nginx-lua-Proxy.md) +* [Openresty编程.pdf](/Openresty/Openresty编程.pdf) + +## Linux 教程 + +* [命令篇](http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html) +* [实战篇](http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html) +* [定时器教程](http://www.ruanyifeng.com/blog/2018/03/systemd-timer.html) +* [linux 进程间通信之管道](https://juejin.im/post/5bc735d85188255c57216d7e) +* [鸟哥的Linux私房菜服务器架设篇(第三版).pdf](Linux/鸟哥的Linux私房菜服务器架设篇(第三版).pdf) +* [鸟哥的Linux私房菜-基础学习篇(第四版).pdf](Linux/鸟哥的Linux私房菜-基础学习篇(第四版).pdf) + +## Shell 教程 +* [编写快速安全Bash脚本的建议](https://www.oschina.net/translate/bash-scripting-quirks-safety-tips) +* [写好shell脚本的13个技巧](https://mp.weixin.qq.com/s/f3xDHZ7dCQr7sHJ9KDvuyQ) +* [shell脚本实现分日志级别记录日志](/Nginx-Rtmp/Shell_Log.sh) +* [Nginx日志定时备份和删除](/Nginx-Rtmp/Shell_Nginx_Log_cut.sh) +* [SHELL脚本小技巧](/Nginx-Rtmp/Shell_script.md) +* [Mysql 自动备份脚本安全加锁机制](/Nginx-Rtmp/backup_mysql.sh) +* [PHP和Shell 脚本如何很好的搭配](/PHP/php-shell_run.md) +* [通过FTP备份MySQL数据库](/Shell/Backup-MySQL-FTP.md) + +## 微信公众号 + +![Nginx编译安装](Images/tinywan-wechat.jpg) \ No newline at end of file diff --git a/README_BAK.md b/README_BAK.md new file mode 100644 index 0000000000000000000000000000000000000000..288d3f5473c2908f8dc92eb4d13af0250265f4a3 --- /dev/null +++ b/README_BAK.md @@ -0,0 +1,1961 @@ +## 目录 ++ [Nginx基础知识](#Nginx_base_knowledge) ++ [Linux基础知识](#Linux_base_knowledge) ++ [Redis基础知识](#Redis_base_knowledge) + + [Redis 简易安装教程](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Redis/redis-install.md) + + [Redis执行Lua脚本基本用法](#Redis_Run_Lua) ++ [PHP脚本](#PHP_base_knowledge) + + [PHP脚本运行Redis](#PHP_Run_Redis) ++ [Shell脚本](#Shell_base_knowledge) + - [x] 编写快速安全Bash脚本的建议 + - [x] Shell脚本实现分日志级别记录日志 + - [x] Nginx日志定时备份和删除 + - [x] SHELL脚本小技巧 + - [x] Mysql 自动备份脚本安全加锁机制 ++ [Lua基础知识](#Lua_base_knowledge) + + [Lua 基础语法](#Lua-base) + + [luajit 执行文件默认安装路径](#Nginx_base_knowledge) + + [Table 操作常用的方法](#Lua_table) + - [x] table.concat() + - [x] table.insert() + - [x] table.maxn() + - [x] table.concat() + + [Lua 模块与包](#Lua_module_package) + + [lua中self.__index = self 详解](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/oop/self__index.md) ++ [流媒体视频直播、点播](#live_base_knowledge) ++ [Nginx高性能WEB服务器详解](#Nginx_Web_knowledge) + + [第一章 初探 ](#Nginx_Web1_knowledge) + + [第二章 安装部署](#Nginx_Web2_knowledge) + + [第三章 架构初探 ](#Nginx_Web3_knowledge) + + [第四章 高级配置 ](#Nginx_Web4_knowledge) + + [第五章 Gzip压缩](#Nginx_Web5_knowledge) + + [第六章 Rewrite 功能](#Nginx_Web6_knowledge) + + [第七章 代理服务 ](#Nginx_Web7_knowledge) + + [第八章 缓存机制 ](#Nginx_Web8_knowledge) ++ [Openresty 学习](#Openresty_web_knowledge) + + [安装](#Openresty_install_knowledge) + + [默认配置信息](#Openresty_config_knowledge) + + [Lua require 绝对和相对路径(已经解决)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-common-package/lua-require.md) + + [luajit 执行文件默认安装路径](#Openresty_web_knowledge) + + [lua-resty-redis 扩展](#Openresty_resty-redis) + + [lua-resty-websocket 扩展](#Openresty_resty-websocket) + + [lua-cjson 扩展](#Openresty_resty-cjson) + + [lua-dkjson 扩展](https://github.com/Tinywan/lua_project_v0.01) + + [Lua 权限验证](#Openresty_resty-access) + + [lua-resty-string 扩展](#Openresty_resty-string) + + [lua-resty-http 扩展 ](#Openresty_resty-http) + + [lua-resty-mysql 扩展](#Openresty_resty-mysql) + + [lua-resty-shell 扩展](http://www.cnblogs.com/tinywan/p/6809879.html) + + [lua-resty-template 扩展](https://github.com/Tinywan/lua_project_v0.01) + + [lua-resty-template 扩展](https://github.com/Tinywan/lua_project_v0.01) + + [openresty扫描代码全局变量](#Openresty_all-var) + + [ngx Lua APi 方法和常量](#Openresty_http_status_constants) + + ngx_lua 核心常量 + + ngx_lua 方法 + + Lua HTTP状态常量 + + 错误日志级别常量 + + API中的常用方法 + + [ngx Lua APi 介绍使用](#Openresty_ngx_api_used) + + [连接数据库](#Openresty_connent_redis) + + [OpenResty缓存](#Openresty_connent_cache) + + [lua-resty-upstream-healthcheck 使用](#Openresty_lua_resty_upstream_healthcheck) + + [Openresty和Nginx_RTMP 模块共存问题](#Openresty_rtmp_share) + + [Openresty配置RTMP模块的多worker直播流](#Openresty_rtmp_more_worker) + + [Openresty配置RTMP模块的推流地址鉴权实例](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Openresty_rtmp_obs_push.md) + + [Ngx_lua 写入Redis数据,通过CURL请求](#Ngx_lua_write_Redis) + + [Nginx编写的Lua接口使用URL过期和签名验证机制过滤非法访问接口](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Openresty_rtmp_obs_push_auth.md) + + [Nginx查看并发连接数](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/nginx_status.md) ++ [Redis 开发与运维](#Redis-DevOps) + - [ ] [第一章 初始Redis ](#Redis-DevOps-1) + - [ ] [第二章 API的理解和使用](#Redis-DevOps-2) + - [ ] [第三章 小功能大用处 ](#Redis-DevOps-3) + - [ ] [第四章 客户端 ](#Redis-DevOps-4) + - [ ] [第五章 持久化](#Redis-DevOps-5) + - [ ] [第六章 复制](#Redis-DevOps-6) + - [ ] [第七章 Redis 的恶魔 ](#Redis-DevOps-7) + - [ ] [第八章 理解内存 ](#Redis-DevOps-8) ++ [Copyright and License](#Copyright_and_License) +## 开发过程记录 ++ [解决 Visual Studio Code 向github提交代码不用输入帐号密码](#githubpush) ++ phase的意义:就是几个MR的一个集合,不定数目的MR job视为一个phase。一个请求经过nginx处理的过程中,会经过一系列的阶段(phases) +## Nginx基础知识 ++ [NGINX 所有 Modules](https://www.nginx.com/resources/wiki/modules/) ++ [Nginx 配置文件 nginx.conf 详解](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-base-config.md) +#### agentzh的Nginx教程(版本2016.07.21) ++ [agentzh的Nginx教程地址](https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html) ++ Nginx 变量漫谈(一) + + Nginx 变量的值只有一种类型,那就是字符串 + + Nginx “变量插值” + ```bash + location /test { + set $first "hello "; + echo "${first}world"; + } + ``` + + set 指令(以及前面提到的 geo 指令)不仅有赋值的功能,它还有创建 Nginx 变量的副作用,即当作为赋值对象的变量尚不存在时 + + Nginx 变量一旦创建,其变量名的可见范围就是整个 Nginx 配置,甚至可以跨越不同虚拟主机的 server 配置块 + + Nginx 变量的生命期是不可能跨越请求边界的 ++ Nginx 变量漫谈(二) + + 跳转 + + 内部跳转:就是在处理请求的过程中,于服务器内部,从一个 location 跳转到另一个 location 的过程。 + + 外部跳转: HTTP 状态码 301 和 302 所进行的“外部跳转” + + 标准 ngx_rewrite 模块的 rewrite 配置指令其实也可以发起“内部跳转” + + Nginx 核心和各个 Nginx 模块提供的“预定义变量” + + Nginx 会在匹配参数名之前,自动把原始请求中的参数名调整为全部小写的形式 + + 如果你尝试改写另外一些只读的内建变量,比如 $arg_XXX 变量,在某些 Nginx 的版本中甚至可能导致进程崩溃。 ++ Nginx 变量漫谈(四) + + map 指令:用于定义两个 Nginx 变量之间的映射关系,或者说是函数关系 + + map 指令只能在 http 块中使用 + + map 配置指令的工作原理是为用户变量注册 “取处理程序”,并且实际的映射计算是在“取处理程序”中完成的,而“取处理程序”只有在该用户变量被实际读取时才会执行(当然,因为缓存的存在,只在请求生命期中的第一次读取中才被执行),所以对于那些根本没有用到相关变量的请求来说,就根本不会执行任何的无用计算。 ++ Nginx 变量漫谈(四) ++ [Nginx的11个Phases](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-phases.md) ++ [Nginx 陷阱和常见错误](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-1-config.md) ++ [Nginx 高并发系统内核优化](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-parameter-config.md) + +## Redis基础知识 ++ [Redis 简易安装教程](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Redis/redis-install.md) +## PHP脚本 ++ [PHP7中php.ini/php-fpm/www.conf的配置,Nginx和PHP-FPM的开机自动启动脚本](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/PHP/PHP-FPM/config.md) +## Shell脚本 ++ [编写快速安全Bash脚本的建议](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Shell/write-shell-suggestions.md) ++ [shell脚本实现分日志级别记录日志](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Shell_Log.sh) ++ [Nginx日志定时备份和删除](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Shell_Nginx_Log_cut.sh) ++ [SHELL脚本小技巧](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/Shell_script.md) ++ [Mysql 自动备份脚本安全加锁机制](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/backup_mysql.sh) +## Lua基础知识 +#### Lua 基础语法 ++ 删除一个全局变量,只要将变量值赋值为nil:`a = nil`,当且仅当一个变量不为nil 时,这个变量存在 ++ `Boolean`类型:在控制条件中除了`false`和`nil` 为假,其他值都为真,所以lua认为0和空字符串也是真 ++ `String`类型: + + 字符串替换:`string.gsub()` + ```lua + a = 'one HELLO' + b = string.gsub(a,'one','two') + print(a) -- one HELLO + print(b) -- two HELLO + ``` + + 字符串和数字 + ```lua + print("10" + 1) -- 11 + print("10" + "1") -- 11 + print("10 + 1") -- 10 + 1 + print("hello " .. " world") -- hello world + --print("hello" + 1) -- 错误写法 + ``` + + 字符串和数字转换 + ```lua + a = 10 + print(tostring(a)) -- 10 + b = "20" + print(tonumber(b)) -- "20" + + print(tostring(10) == "10") -- true + print(10 .. "" == "10") -- true + ``` ++ 表达式 + + 如果两个值类型不相等,Lua认为两者不同 + + nil 只和自己相等 + + 逻辑运算符 + ```lua + -- a and b -- 如果a为false,则返回a ,否则返回b + -- a or b -- 如果a为true,则返回a ,否则返回b + print(4 and 5) -- 5 + print(nil and 12 ) -- nill + print(false and 12) -- false + print(4 or 5) -- 4 + print(false or 5) -- 5 + ``` + + 注意:`and`的优先级比`or`高 + + Lua 三元运算符:`( a and b) or c` ++ 变量 + + 赋值语句 + ```lua + x = 20 + y = 30 + x,y = y,x + print(x,y) -- 30 20 + + a,b,c = 10,20 + print(a,b,c) --10 20 nil + + x,y,z = 10 + print(x,y,z) -- 10 nil nil + ``` + + 局部变量与代码块 + + 代码块:指一个控制结构内,一个函数体,或者一个chunk(变量被声明的哪个文件或者文本串) + + ```lua + a = 12 + if a>10 then + local i = 19 + print(i) -- 19 + end + print(i) -- nil + ``` ++ 控制语句 + ```lua + members = { Tom = 10, Jake = 11, Dodo = 12, Jhon = 16 } + + for k, v in pairs(members) do + if v == 10 then + print(k, 'is 10 years old') -- Tom is 10 years old + elseif v == 11 then + print(k, 'is 11 years old') -- Jake is 11 years old + elseif v == 12 then + print(k, 'is 12 years old') -- Dodo is 12 years old + else + print(k, "is not 10,11,12 years old") -- Jhon is not 10,11,12 years old + end + end + ``` ++ 函数 + + 单个返回值 + ```lua + function max(a,b) + if a > b then + return a + else + return b + end + end + print(max(10,20)) -- 20 + ``` + + 多个返回值 + ```lua + function more() + return 10 , 20 ,30 + end + a , b , c = more() + print(a,b,c) -- 10 20 30 + ``` + + 可变数目的参数 + ```lua + function more() + return 10 , 20 ,30 + end + -- 当函数位于最后一位的时候,返回全部值,否则值返回一个数值 + a , b , c ,d = 100, more() + print(a,b,c,d) -- 100 10 20 30 + ``` + + 闭合函数 + ```lua + function count() + -- i属于一个非局部变量,因为它既不是全局变量,也不是单纯的局部变量(因为另外一个函数可以访问到它) + local i = 0 + return function() + i =i +1 + return i + end + end + -- 以上 count()函数里的那个函数,加上一个非全局变量i,就构成一个闭合函数 + -- 所以每次调用闭合函数,非局部变量的值都不会被重置 + local func = count() + print(func()) -- 1 + print(func()) -- 2 + ``` + + 非全局函数,在定义函数的使用要注意定义函数的顺序 + ```lua + local eat + local drink + eat = function() + print("eat") + return drink() -- 这里的drink()属于尾调用 + end + drink = function() + print("drink") + end + eat() + ``` ++ table 使用 + + Lua table 第一个索引为1 + + 简单 + ```lua + a = {} + a.x = 100 + a.y = 200 + a["z"] = 300 -- a.z = 300 + print(a.x) -- 100 + print(a.y) -- 200 + print(a.z) -- 300 + ``` ++ 泛型迭代器 + + 标准库迭代器包括: + + 迭代文件每行:`io.lines` + + 迭代table元素:`pairs` + - [x] 可以遍历表中的所有key + - [x] 并且除了迭代器本身以及遍历表本身,还可以返回nil + + 迭代数组元素:`ipairs` + - [x] ipairs不能返回nil,只能返回数字0,如果遇到nil则退出 + - [x] 只能遍历表中出现的第一个不是整数的key + + 泛型迭代器 + ```lua + config = {host = '127.0.0.1',port = '3306', dbname = 'LuaDB' } + config.redis_host = "192.168.1.1" + config.redis_port = "6379" + config.redis_db = "12" + print(config['redis_host']) -- 192.168.1.1 + print(config.redis_port) -- 6379 + print(config.dbname) -- LuaDB + + for k, v in pairs(config) do + print(k,v) + end + + --[[ + host 127.0.0.1 + dbname LuaDB + redis_host 192.168.1.1 + redis_db 12 + redis_port 6379 + port 3306 + -- ]] + ``` + + 迭代table元素 + ```lua + arr = {} + for var = 1,100 do -- for 循环 + table.insert(arr,1,var) + end + + for k, v in pairs(arr) do -- 遍历表 + print(k,v) + end + --[[ 打印结果 + 1 100 + 2 99 + ... ... + 99 2 + 100 1 + + -- ]] + print(table.maxn(arr)) -- table长度 100 + print(#arr) -- table长度(快捷方式) 100 + ``` + + 迭代数组元素:`ipairs` + ```lua + arr = {host = '127.0.0.1',port = '3306','Tinywan'} + -- 如果没有找到下标为整数的则直接退出,是整数的则直接输出,如上面的'Tinywan' + for k, v in ipairs(arr) do -- 只能遍历key 为整数的下标 + print(k,v) -- 1 Tinywan + end + ``` + + 循环迭代table元素(如:lua-resty-mysql 扩展查询的数据) + + 查询 :`res, err, errcode, sqlstate = db:query("select * from tb_ngx_test order by id asc", 10)` + + 转换成JSON结果集输出2条记录: + ```lua + ngx.say("result: ", cjson.encode(res)) + result: [{"age":"24123","name":"tinywan123","address":"China","id":"1"},{"age":"24","name":"tinywan","address":"China","id":"2"}] + ``` + + 遍历该结果集: + ```lua + res, err, errcode, sqlstate = db:query("select * from tb_ngx_test order by id asc", 10) + if not res then + ngx.say("bad result: ", err, ": ", errcode, ": ", sqlstate, ".") + return + end + + for k, v in pairs(res) do + if type(v) == "table" then + for new_table_index, new_table_value in pairs(v) do + ngx.say(new_table_index.." = "..new_table_value) + end + else + ngx.say(k,v) + end + end + + --[[ 打印结果 + age = 24123 + name = tinywan123 + address = China + id = 1 + age = 24 + name = tinywan + address = China + id = 2 + ]] + ``` + + json 和 lua table 转换 + + [1] 将 json 转换成 lua table + ```lua + local json_str = '{"is_male":"nan","name":"zhangsan","id":1}' + local t = json.decode(json_str) + ngx.say(format_table(t)) + ``` + + [2] 将 lua table 转换成 json 字符串 + ```lua + local t = [[{key="table key",value="table value"}]] + local json_str = json.encode(t) + ngx.say(json_str) -- "{key=\"table key\",value=\"table value\"}" + ``` + + [3] 将lua table转换成 json 数组 (lua 两个大括号表示一个数组) + ```lua + local t = {keys={"list1","list2","list3"},num=1} + local str = json.encode(t) + ngx.say(str) -- {"keys":["list1","list2","list3"],"num":1} + ``` ++ 编译执行与错误 + + error 错误 + ```lua + local name = "Lua1" + if name ~= "Lua" + then + error("this is not Lua "); + end + ``` + + assert 错误:`assert(name~="Lua"," this is not Lua")` + + pcall 捕获错误代码 + ```lua + function test() + print(a[1]) + end + -- pcall 除了会返回true或者false外,还能返回函数的错误信息。 + -- 如果没有错误信息,err 会返回一个nil + local status,err = pcall(test) + if status then + print('success') + else + print('函数执行出错了') + print('错误信息:',err) + end + ``` ++ Lua面向对象(重点) + + [博客详细地址描述](http://www.cnblogs.com/tinywan/p/6940784.html) + + :white_check_mark: `__add` 元方法 #demo1 + ```lua + local mt = {} + mt.__add = function(t1, t2) + print("两个Table 相加的时候会调用我") + end + local t1 = {} + local t2 = {} + -- 给两个table 设置新的元表,一个元表就是一个table的值 + setmetatable(t1, mt) -- meta:元素 + setmetatable(t2, mt) + -- 进行相加操作 + local t = t1 + t2 + print(t) + + --[[输出结果 + 两个Table 相加的时候会调用我 + nil + --]] + ``` + + :white_check_mark: `__add` 元方法 #demo2 + ```lua + -- 创建一个元表 (是创建一个类吗?) + local mt = {} + mt.__add = function(s1, s2) + local result = "" + if s1.sex == "boy" and s2.sex == "girl" then + result = "一个男孩和一个女孩的家庭" + elseif s1.sex == "girl" and s2.sex == "girl" then + result = "两个女孩的家庭" + else + result = "未知孩子的家庭" + end + return result + end + -- 创建两个table,可以想象成是两个类的对象(实例化两个类) + local s1 = { name = "Per1", sex = "boy" } + local s2 = { name = "Per2", sex = "girl" } + -- 给两个table 设置新的元表,一个元表就是一个table的值 + setmetatable(s1, mt) + setmetatable(s2, mt) + -- 进行加法操作 + local result = s1 + s2 + print(result) + + -- 输出结果 一个男孩和一个女孩的家庭 + ``` + + :white_check_mark: `__index` 元方法 #demo1 + ```lua + local t = { + name = "Tinywan" + } + local mt = { + __index = function(table, key) + print("虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来" .. key) + end + } + setmetatable(t, mt) + print(t.name) + print(t.age) + + --[[输出结果 + -- Tinywan + -- 虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来age + -- nil + ---- ]] + ``` + + :white_check_mark: `__index` 元方法 #demo2 + ```lua + local t = { + name = "Tinywan" + } + local mt = { + money = 808080 + } + + mt.__index = mt + setmetatable(t, mt) + print(t.money) + -- 输出结果 808080 + ``` + + :white_check_mark: `__index` 元方法 #demo3 + ```lua + local t = { + name = "Tinywan" + } + local mt = { + __index = { + money = 909090 + } + } + setmetatable(t, mt) + print(t.money) + -- 输出结果 909090 + ``` + + :white_check_mark: `__index` 元方法 #demo4 + ```lua + local smartMan = { + name = "Tinywan", + age = 26, + money = 800000, + say_fun = function() + print("Tinywan say 大家好") + end + } + + local t1 = {} + local t2 = {} + local mt = { __index = smartMan } -- __index 可以是一个表,也可以是一个函数 + setmetatable(t1, mt) + setmetatable(t2, mt) + print(t1.money) + t2.say_fun() + --- 输出结果 + -- 800000 + -- Tinywan say 大家好 + ``` + + Lua面向对象1 + + Lua面向对象1 + + Lua面向对象3 更新中... ++ Lua 排序算法 + + [Lua 排序算法 - 选择排序](https://www.openresty.com.cn/ms2008-select-sort.html#section-1) + + 选择排序 + ```lua + local function selectionSort(arr) + for i = 1,#arr-1 do + local idx = i + -- 迭代剩下的元素,寻找最小的元素 + for j = i+1,#arr do + if arr[j] < arr[idx] then + idx = j + end + end + -- + arr[i],arr[idx]= arr[idx],arr[i] + end + end + + local list = { + -81, -93, -36.85, -53, -31, 79, 45.94, 36, 94, -95.03, 11, 56, 23, -39, + 14, 1, -20.1, -21, 91, 31, 91, -23, 36.5, 44, 82, -30, 51, 96, 64, -41 + } + + selectionSort(list) + print(table.concat( list, ", ")) + ``` +#### 控制结构 ++ [if-elseif-end 语句](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/chapter-one/if-else-example.lua) ++ [for 语句](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/chapter-one/for-example.lua) ++ [Lua 只有一个容器,那就是table](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/chapter-one/container-table.lua) +#### [Lua 实现简单封装](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Lua-Script/function1.lua) +#### Table 操作常用的方法 ++ table.concat (table [, sep [, start [, end]]]) + + concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素, 元素间以指定的分隔符(sep)隔开 + + demo + ```lua + fruits = {"banana","orange","apple"} + -- 返回 table 连接后的字符串 value = banana orange apple + print("连接后的字符串 ",table.concat(fruits)) + -- 指定连接字符 value = banana, orange, apple + print("指定连接字符连接后的字符串 ",table.concat(fruits,", ")) + ``` ++ table.insert (table, [pos,] value): + + 在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾 + + demo + ```lua + fruits = {"banana","orange","apple"} + + -- 在末尾插入 + table.insert(fruits,"Tinywan4") + print("索引为 4 的元素为 ",fruits[4]) -- 索引为 4 的元素为 Tinywan + + -- 在索引为 2 的键处插入 + table.insert(fruits,2,'Tinywan2') + print("索引为 2 的元素为 ",fruits[2]) -- 索引为 2 的元素为 Tinywan + + print("最后一个元素为 ",fruits[5]) -- 最后一个元素为 Tinywan4 + table.remove(fruits) + print("移除后最后一个元素为 ",fruits[5]) -- 移除后最后一个元素为 nil + ``` ++ table.sort (table [, comp]) + + 对给定的table进行升序排序 +#### Lua 模块与包 ++ 定义:Lua 的模块是由变量、函数等已知元素组成的 table,因此创建一个模块很简单,就是创建一个 table,然后把需要导出的常量、函数放入其中,最后返回这个 table 就行. +## 流媒体视频直播、点播 ++ [Nginx配置Rtmp支持Hls的直播和点播功能](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/HLS-live-vod.md) ++ [HLS视频直播和点播的Nginx的Location的配置信息(成功)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Rtmp/HLS-live-vod-locatiuon-config.md) + +## Nginx高性能WEB服务器详解 +#### 第一章 初探 ++ [Nginx 编译安装以及参数详解](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) ++ NGINX变量详解 + - [x] [nginx变量使用方法详解笔记(1)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-1.md) + - [x] [nginx变量使用方法详解笔记(2)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/notes-2.md) + - [x] [nginx变量使用方法详解笔记(3)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/nginx-2-config.md) ++ Nginx指令执行顺序 + - [x] [Nginx指令执行命令(01)](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx-Develop/command-order-01.md) +#### 第二章 安装部署 ++ 启动错误:`Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)`,执行:`sudo fuser -k 80/tcp` ++ [基于域名、IP的虚拟主机配置](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-4-all-config.md) ++ [完整、标准配置实际示列](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-4-basic-config.md) ++ [日志文件配置与切割](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-4-log-cut.md) ++ alias 和 root 在location 下的应用 + - 通过alias 实现别名功能 + ``` + location /live { + alias /home/tinywan/HLS/; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS$ cat index.html + alias /home/tinywan/HLS/index.html + tinywan@tinywan:~/HLS$ curl http://127.0.0.1/live/index.html + alias /home/tinywan/HLS/index.html + ``` + - 结论: + 1. cul 请求 `/live/index.html`,那么Nginx将会在服务器上查找`/home/tinywan/HLS/index.html` 文件 + 1. 请求的`url` 中的`location`后面的部分会被追加到`alias `指定的目录后面,而`location`后面的`/live`路径将会别自动抛弃 + - 类似案例[2]: + - config配置信息 + ``` + location ~ ^/live/(.*)$ { + alias /home/tinywan/HLS/$1; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS$ pwd + /home/tinywan/HLS + tinywan@tinywan:~/HLS$ cat txt.txt + txt file + tinywan@tinywan:~/HLS$ curl http://127.0.0.1/live/txt.txt + txt file + ``` + - 如果url请求`/live/txt.txt`那么Nginx将会在服务器上查找`/home/tinywan/HLS/txt.txt` 文件 + - **与root 功能的差别**: + - config配置信息,注意:一下的`alias` 换成 `root ` + ``` + location ~ ^/live/(.*)$ { + root /home/tinywan/HLS/$1; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS$ curl http://127.0.0.1/live/txt.txt + + 404 Not Found + +

      404 Not Found

      +
      openresty/1.11.2.1
      + + + ``` + - 日志文件信息(打开Nginx的rewrite日志:rewrite_log on;): + ``` + /home/tinywan/HLS/txt.txt/live/txt.txt + ``` + - **二者的区别** + 1. `alias` 指定的目录是当前目录 + 1. `root` 指定的是根目录 + 1. 一般建议的`location /`中通过`root`命令配置目录,其他目录匹配的位置使用`alias`命令 + - 案例[3]: + - config配置信息 + ``` + location ~ ^/live/(\w+)/(.*) { + alias /home/tinywan/HLS/live/$1/$2; + } + ``` + - curl 请求结果 + ``` + tinywan@tinywan:~/HLS/live/stream123$ pwd + /home/tinywan/HLS/live/stream123 + tinywan@tinywan:~/HLS/live/stream123$ cat index.m3u8 + 12312312312 + tinywan@tinywan:~/HLS/live/stream123$ curl "http://127.0.0.1/live/stream123/index.m3u8?token=1234&api=009132" + 12312312312 + ``` +####
      第三章 架构初探 +- [ ] 测试一 +#### 第四章 高级配置 ++ 基本语法:location [=|~|~*|^~] /uri/ { … } + 1. `= `:严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 + 2. `~ `:为区分大小写匹配(可用正则表达式) + 3. `!~ `:为区分大小写不匹配 + 4. `!~*`:为不区分大小写不匹配 + 5. ` ^~ `:如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式 ++ [Perl 正则表达式参考](http://www.runoob.com/perl/perl-regular-expressions.html) ++ 正则中需要转义的特殊字符小结 + - [1] ` $` 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。 + - [2] ` ( )` 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 和。 + - [3] ` * ` 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。 + - [4] ` +` 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。 + - [5] ` . ` 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。 + - [6] ` [ ]` 标记一个中括号表达式的开始。要匹配 [,请使用 \[。 + - [7] ` ? ` 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。 + - [8] ` \ ` 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。 + - [9] ` ^ ` 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。 + - [10] ` { }` 标记限定符表达式的开始。要匹配 {,请使用 \{。 + - [11] ` | ` 指明两项之间的一个选择。要匹配 |,请使用 \|。 + ++ 正则表达式 (Regular expression) 匹配location + - [1] `location ~* \.(gif|jpg|jpeg)$ { }`:匹配所有以 gif,jpg或jpeg 结尾的请求 + - [2] `location ~ /documents/Abc { }`:匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 + - [3] **目录匹配:** + 1. 可以匹配静态文件目录`(static/lib)` + 2. HLS直播目录`(/home/HLS/stream123/index.m3u8)` + 3. HLS/MP4/FLV点播视频目录`(/home/HLS/stream123.m3u8)` + 4. 匹配URL地址:`http://127.0.0.1/live/stream123/index.m3u8` + 5. nginx.conf 配置信息 + ``` + # 匹配任何以/live/ 开头的任何查询并且停止搜索。任何正则表达式将不会被测试 + location ^~ /live/ { + root /home/tinywan/HLS/; + } + # 以上匹配成功后的组合:/home/tinywan/HLS/live/.... + ``` ++ 后缀匹配 + 1. 匹配任何后缀文件名`gif|jpg|jpeg|png|css|js|ico|m3u8|ts` 结尾的请求 + 2. TS 文件匹配`http://127.0.0.1/live/stream123/11.ts` + 3. M3U8 文件匹配`http://127.0.0.1/live/stream123/index.m3u8` + 4. 匹配URL地址:`http://127.0.0.1/hls/123.m3u8` + 5. nginx.conf 配置信息 + ``` + location ~* \.(gif|jpg|jpeg|png|css|js|ico|m3u8|ts)$ { + root /home/tinywan/HLS/; + } + ``` ++ HSL直播目录匹配实际案例(请测试上线) + 1. 可以后缀文件名:`http://127.0.0.1/live/stream123/index.m3u8` + ``` + location ^~ /live/ { + root /home/tinywan/HLS/; + } + ``` + ++ [nginx配置location总结及rewrite规则写法](http://seanlook.com/2015/05/17/nginx-location-rewrite/) +#### 第五章 Gzip压缩 ++ 测试一 +#### 第六章 Rewrite 功能 ++ Rewrite 常用全局变量 + + 请求案例: `curl -G -d "name=Tinywan&age=24" http://127.0.0.1/rewrite_var/1192/index.m3u8` + + 接受结果: + + | 变量 | 值 |描述 | + | --------- | ----------- |----------- | + | $args | name=Tinywan&age=24 |存放URL 请求的指令 | + | $content_length | 0 | 请求头中的Content-length字段| + | $content_type | 0 |请求头中的Content-Type字段 | + | $document_root | /opt/openresty/nginx/html | 当前请求在root指令中指定的值 | + | $document_uri | /rewrite_var/1192/index.m3u8 | 与$uri相同 | + | $host | 127.0.0.1 |请求主机头字段,否则为服务器名称 | + | $http_user_agent | curl/7.47.0 | 客户端agent信息| + | $http_cookie | 0 | COOKIE变量的值| + | $limit_rate | 0 | 限制连接速率| + | $request_body_file | null | 客户端请求主体信息的临时文件名| + | $request_method | GET | 客户端请求的动作,通常为GET或POST | + | $remote_addr | 127.0.0.1 |客户端的IP地址 | + | $remote_port | 33516 |客户端端口| + | $remote_user | 0 | 已经经过Auth Basic Module验证的用户名| + | $request_filename | /opt/openresty/nginx/html/rewrite_var/1192/index.m3u8 |当前请求的文件路径 | + | $request_uri | /rewrite_var/1192/index.m3u8?name=Tinywan&age=24 |包含请求参数的原始URI,不包含主机名 | + | $query_string | name=Tinywan&age=24 | 与$args相同| + | $scheme | http |HTTP方法(如http,https | + | $server_protocol | HTTP/1.1 |请求使用的协议,通常是HTTP/1.0或HTTP/1.1 | + | $server_addr | 127.0.0.1 |服务器地址 | + | $server_name | localhost | 服务器名称| + | $server_port | 80 |请求到达服务器的端口号 | + | $uri | /rewrite_var/1192/index.m3u8 | 不带请求参数的当前URI| + | $binary_remote_addr | 乱码 | 二进制格式的客户端地址| + + + uri 介绍 **(Nginx中的URI是相对的URI)** + + URL:`https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/config.md` + + 绝对URI:`https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/config.md` + + 相对URI:`/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/config.md` + ![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/URI-URL-Image.jpg) + ++ Rewrite 正则匹配` uri `参数接收 + 1. 请求案例:`curl http://192.168.18.143/live/tinywan123/index.m3u8` + 2. Nginx.conf配置文件 + ```Lua + location ~* ^/live/(\w+)/(\D+)\.(m3u8|ts)$ { + set $num $2; + set $arg1 $1; + echo "args === ${arg1}"; + echo "1==$1 2==$2 3==$3"; + echo "Total_numbser :: $num"; + echo "URI $uri"; + } + + ``` + 3. 输出结果 + ``` + args === tinywan123 + $1==tinywan123 $2==index $3==m3u8 + Total_numbser :: index + URI /live/tinywan123/index.m3u8 + Total_numbser :: + ``` + 4. $1为正则匹配多个英文字母或数字的字符串 `(\w+)` + $2 为正则匹配多个非数字 `(\D+)` + $3 为正则匹配的第一个值 `(m3u8|ts)` + `.` 需要用转义字符转义`\.` +## 第七章 代理服务 ++ [正向代理和反向代理的概念](#title) ++ [正向代理服务](#title) ++ [反向代理的服务](#title) ++ [Nginx日志服务](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-2-Log.md) ++ 负载均衡 ++ HTTP负载均衡 + - [x] [简单的负载平衡](http://nginx.org/en/docs/http/ngx_http_core_module.html?&_ga=1.179030369.49817296.1480411319#http) + - [x] [简单的负载平衡](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-7-Proxy-1.md) + - [x] [负载均衡五个配置实例](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-7-Proxy.md) + - [x] [Openresty-Lua动态修改upstream后端服务](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/openresty-nginx-lua-Proxy.md) ++ TCP负载均衡 + - [x] [Module ngx_stream_core_module](http://nginx.org/en/docs/stream/ngx_stream_core_module.html#stream) + - [x] [负载均衡](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-8-tcp-Proxy.md) ++ proxy_pass 代理的URL总结 + + 在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。 + + 将url中以/wap/开头的请求转发到后台对应的某台server上,注意最后的?$args,表明把原始url最后的get参数也给代理到后台 + ```bash + location ~* /wap/(\d+)/(.+) + { + proxy_pass http://mx$1.test.com:6601/$2?$args; + } + ``` + + 第一种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/index.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000/; + } + ``` + + 第二种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/proxy/index.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000; + } + ``` + + 第三种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/video/index.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000/video/; + } + ``` + + 第四种配置,访问:`http://127.0.0.1/proxy/index.html` 会被代理到:`http://127.0.0.1:8000/videoindex.html` + ```bash + location /proxy/ { + proxy_pass http://127.0.0.1:8000/video; + } + ``` ++ location 直接访问: + + 以下配置,当访问:`http://127.0.0.1:8000/proxy/index.html` 会被匹配到:`/usr/local/nginx/html/proxy/index.html` + ```bash + location /proxy/ { + root /usr/local/nginx/html; + index index.html index.htm; + } + ``` + +## 第八章 缓存机制 ++ 测试一 +## 第九章 Nginx初探1 ++ 测试一 +## 第十章 Nginx初探1 ++ 测试一 +## PHP脚本运行Redis] ++ [PHP 脚本执行一个Redis 订阅功能,用于监听键过期事件,返回一个回调,API接受改事件](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php) ++ 单行文本1 +## Openresty 学习 ++ [安装信息](http://www.cnblogs.com/tinywan/p/6647587.html) ++ [默认配置信息](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/default-config.md) ++ 开发入门 + + Nginx与Lua的整体目录关系 + ```javascript + . + ├── conf + │ ├── nginx.conf -- Nginx 配置文件 + ├── logs + │ ├── error.log -- Nginx 错误日子 + │ └── nginx.pid + ├── lua + │ ├── m3u8_redis_access.lua -- M3U8地址权限验证文件 + │ ├── business_redis.lua -- 业务 Redis 处理文件 + │ ├── http-lua-test.lua -- http lua demo + │ ├── ... + │ └── resty -- 存放Lua 的所有公共、封装好的库目录 + │ └── redis_iresty.lua -- Redis 接口的二次封装 + │ └── param.lua -- 参数过滤库 + └── sbin + └── nginx + ``` + + 参数总结 + + Lua脚本接受Nginx变量: + > [1] 间接获取:`var = ngx.var `,如接受Nginx的变量` $a = 9`,则`lua_a = ngx.var.a --lua_a = 9` + [2] 直接获取:`var = ngx.var `,如接受Nginx的location的第二个变量890,` http://127.0.0.1/lua_request/123/890 `,则`lua_2 = ngx.var[2] --lua_2 = 890` + + Lua 脚本接受 Nginx 头部 header: + > [1] 返回一个包含所有当前请求标头的Lua表:`local headers = ngx.req.get_headers()` + [2] 获取单个Host:`headers["Host"] 或者 ngx.req.get_headers()["Host"] ` + [3] 获取单个user-agent: + >> [01]`headers["user-agent"]` + [02]`headers.user_agent ` + [03]`ngx.req.get_headers()['user-agent'] ` + + Lua 脚本 Get 获取请求uri参数 + > linux curl Get方式提交数据语法:`curl -G -d "name=value&name2=value2" https://github.com/Tinywan ` + 返回一个包含所有当前请求URL查询参数的Lua表:`local get_args = ngx.req.get_uri_args()` + 请求案例:`curl -G -d "name=Tinywan&age=24" http://127.0.0.1/lua_request/123/789` + Lua Get 方式获取提交的name参数的值:`get_args['name'] 或者 ngx.req.get_uri_args()['name']` + >> [01]`get_args['name']` + [02]`ngx.req.get_uri_args()['name']` + + Lua 脚本 Post 获取请求uri参数 + > linux curl Post方式提交数据语法: + >> [01] `curl -d "name=value&name2=value2" https://github.com/Tinywan ` + [02] `curl -d a=b&c=d&txt@/tmp/txt https://github.com/Tinywan ` + > 返回一个包含所有当前请求URL查询参数的Lua表:`local post_args = ngx.req.get_post_args()` + 请求案例:`curl -d "name=Tinywan&age=24" http://127.0.0.1/lua_request/123/789` + Lua Post 方式获取提交的name参数的值: + >> [01]`post_args['name']` + [02]`ngx.req.get_post_args()['name']` + + Lua 脚本请求的http协议版本:`ngx.req.http_version()` + + Lua 脚本请求方法:`ngx.req.get_method()` + + Lua 脚本原始的请求头内容:`ngx.req.raw_header()` + + Lua 脚本请求的body内容体:`ngx.req.get_body_data()` + + [接收请求:获取如请求参数、请求头、Body体等信息]() + + [接收请求:输出响应需要进行响应状态码、响应头和响应内容体的输出]( ++ luajit 执行文件默认安装路径:`/opt/openresty/luajit/bin/luajit`,这样我们直接可以这样运行一个Lua文件:`luajit test.lua ` + + luajit 运行测试案例: + ```Bash + tinywan@tinywan:~/Lua$ luajit test.lua + The man name is Tinywan + The man name is Phalcon + ``` +#### lua-resty-redis 扩展 (是openresty下操作redis的模块) ++ 代码引入:`lua_package_path "/opt/openresty/nginx/lua/lua-resty-redis/lib/?.lua;;";` ++ Lua脚本实现一个CDN的反向代理功能(智能查找CDN节点)(测试成功,可上线) + + nginx.conf 配置信息 + ```Lua + http { + lua_package_path "/opt/openresty/nginx/lua/lua-resty-redis/lib/?.lua;;"; + server { + listen 80; + server_name localhost; + location ~ \/.+\/.+\.(m3u8|ts) { + if ($uri ~ \/([a-zA-Z0-9]+)\/([a-zA-Z0-9]+)(|-).*\.(m3u8|ts)) { + set $app_name $1; + set $a $2; + } + set $stream_id ""; + default_type 'text/html'; + rewrite_by_lua_file /opt/openresty/nginx/lua/proxy_pass_cdn.lua; + proxy_connect_timeout 10; + proxy_send_timeout 30; + proxy_read_timeout 30; + proxy_pass $stream_id; + } + + } + } + ``` + + [Lua脚本proxy_pass_cdn.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/proxy_pass_cdn.lua) + + [lua-nginx-module 贡献代码](https://github.com/openresty/lua-nginx-module/issues/275) + ++ Lua脚本结合 Nginx+Lua+Local Redis+Mysql服务器缓存 + + Nginx+Lua+Local Redis+Mysql集群架构 + + ![Nginx+Lua+Local Redis+Mysql](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/Nginx+Lua+Local_Redis+Mysql.png) + + [Lua脚本Nginx+Lua+Redis+Mysql.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.lua) + + [Nginx.conf配置文件Nginx+Lua+Redis+Mysql.conf](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/Nginx+Lua+Redis+Mysql.conf) + + [HELP](http://jinnianshilongnian.iteye.com/blog/2188113) + + + Lua脚本结合 Redis 统计直播流播放次数、链接次数等等信息 + + nginx.conf + ```Lua + server { # 配置虚拟服务器80 + listen 80; + server_name 127.0.0.1:8088; + location ~* /live/(\w+)/ { + set $total_numbers ""; + set $stream_name $1; + lua_code_cache off; + rewrite_by_lua_file /opt/openresty/nginx/conf/Lua/total_numbers.lua; + proxy_pass http://127.0.0.1:8088; + } + } + ``` + + 代理服务器 + ```Lua + server { # 配置虚拟服务器8088 + listen 8088; + server_name 127.0.0.1:8088; + location /live { + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + add_header 'Access-Control-Allow-Headers' 'Range'; + types{ + application/dash+xml mpd; + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + alias /home/tinywan/HLS/live/; + } + } + + ``` + + CURL请求地址:`http://192.168.18.143/live/tinywan123/index.m3u8` + + [Lua 脚本](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-redis/Hls-Line-Number-Total.lua) + +#### lua-resty-websocket 扩展 ++ 代码引入:`lua_package_path "/opt/openresty/nginx/lua/lua-resty-websocket/lib/?.lua;;";` ++ **Lua脚本实现一个websocket连接(测试成功,可上线)** + + nginx.conf 配置信息 + ```Lua + http { + lua_package_path "/opt/openresty/nginx/lua/lua-resty-websocket/lib/?.lua;;"; + server { + listen 80 so_keepalive=2s:2s:8; #为了防止半开TCP连接,最好在Nginx监听配置指令中启用TCP keepalive: + server_name localhost; + location /ws { + lua_socket_log_errors off; + lua_check_client_abort on; + lua_code_cache off; # 建议测试的时候最好关闭缓存 + content_by_lua_file /opt/openresty/nginx/conf/Lua/websocket.lua; + } + } + } + ``` + + [WebSockets服务器Lua脚本websocket.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-websocket/websocket.lua) + + [websockets.html客户端代码,代码路径:/usr/local/openresty/nginx/html](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-websocket/websocket.html) + + 然后打开启用了WebSocket支持的浏览器,然后打开以下url: + ![websockt-lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/websocket_lua01.png) +#### lua-cjson 扩展 ++ 基本用法 + + nginx.conf + ```Lua + location /cjson { + content_by_lua_block { + local cjson = require "cjson" + local json = cjson.encode({ + foo = "bar", + some_object = {}, + some_array = cjson.empty_array + }) + ngx.say(json) + } + } + ``` + + curl 请求 + ```Bash + root@tinywan:/opt/openresty/nginx/conf# curl http://127.0.0.1/cjson + {"some_object":{"tel":13669313112,"age":24},"name":"tinywan","some_array":[]} + ``` ++ [lua对象到字符串、字符串到lua对象](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-cjson/cjson-str-obj.lua) +#### lua-resty-session 扩展 ++ OpenResty 引用第三方 resty 库非常简单,只需要将相应的文件拷贝到 resty 目录下即可 ++ 我服务器OpenResty 的 resty 路径:`/opt/openresty/lualib/resty` ++ 下载第三方 resty 库:git clone lua-resty-session 文件路径以及内容: + ```Bash + tinywan@tinywan:/opt/openresty/nginx/lua/lua-resty-session/lib/resty$ ls + session session.lua + ``` ++ 特别注意:这里拷贝的时候要要把session文件和session.lua 文件同时吧、拷贝过去,否则会报错误: + ```Bash + /opt/openresty/lualib/resty/session.lua:34: in function 'prequire' + /opt/openresty/lualib/resty/session.lua:211: in function 'new' + /opt/openresty/lualib/resty/session.lua:257: in function 'open' + /opt/openresty/lualib/resty/session.lua:320: in function 'start' + ``` ++ 拷贝完毕后`/opt/openresty/lualib/resty` OpenResty 引用第三方 resty 的所有库文件 + ```Bash + tinywan@tinywan:/opt/openresty/lualib/resty$ ls + aes.lua core.lua http_headers.lua lock.lua lrucache.lua memcached.lua random.lua session sha1.lua sha256.lua sha512.lua string.lua upstream + core dns http.lua lrucache md5.lua mysql.lua redis.lua session.lua sha224.lua sha384.lua sha.lua upload.lua websocket + ``` ++ 基本用法 + ```Lua + location /start { + content_by_lua_block { + local session = require "resty.session".start() + session.data.name = "OpenResty Fan Tinywan" + session:save() + ngx.say("Session started. ", + "Check if it is working!") + ngx.say(session.data.name,"Anonymous") + } + } + ``` ++ curl 请求 + ```Bash + tinywan@tinywan:/opt/openresty/nginx/conf$ curl http://192.168.18.143/start + Session started. Check if it is working! + OpenResty Fan Tinywan Anonymous + ``` +#### Lua 权限验证 ++ Lua 一个HLS的简单地址访问权限验证 + + Nginx.conf 配置 + ```Lua + location ^~ /live/ { + add_header Cache-Control no-cache; + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Credentials' 'true'; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + add_header 'Access-Control-Allow-Headers' 'Range'; + + types{ + application/dash+xml mpd; + application/vnd.apple.mpegurl m3u8; + video/mp2t ts; + } + if ( $uri ~ \.m3u8 ) { + lua_code_cache off; + access_by_lua_file /opt/openresty/nginx/lua/access.lua; + } + root /home/tinywan/HLS; + } + ``` + + access.lua 文件内容 + ```Lua + if ngx.req.get_uri_args()["wsSecret"] ~= "e65e6a01cf26523e206d5bb0e2a8a95a" then + return ngx.exit(403) + end + ``` +#### lua-resty-string 扩展 ++ MD5加密的简单基本用法 md5.lua + ```Lua + local resty_md5 = require "resty.md5" + local md5 = resty_md5:new() + if not md5 then + ngx.say("failed to create md5 object") + return + end + local ok = md5:update("hello") + if not ok then + ngx.say("failed to add data") + return + end + local digest = md5:final() + -- ngx.say("md5",digest) ---注意:这样直接输出是乱码 + local str = require "resty.string" + ngx.say("md5: ", str.to_hex(digest)) ---注意:必须通过字符串转码方可打印输出 + -- yield "md5: 5d41402abc4b2a76b9719d911017c592" + ``` +#### lua-resty-http 扩展 (ngx_lua的HTTP客户端cosocket驱动程序) ++ [简单测试:lua-http-test.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-http/lua-http-test.lua) +#### lua-resty-mysql 扩展 ++ [简单测试:lua-msyql-test.lua](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Openresty/lua-resty-mysql/lua-msyql-test.lua) +#### srcache-nginx-module 扩展 ([nginx下的一个缓存模块](https://github.com/openresty/srcache-nginx-module)) ++ [openresty–redis–srcache缓存的应用](http://www.xtgxiso.com/openresty-redis-srcache-nginx-module%e7%bc%93%e5%ad%98%e7%9a%84%e5%ba%94%e7%94%a8/) +#### openresty扫描代码全局变量 ++ 在OpenResty中需要避免全局变量的使用,为此春哥写了一个perl工具,可以扫描openresty lua代码的全局变量 ++ [https://github.com/openresty/openresty-devel-utils/blob/master/lua-releng](https://github.com/openresty/openresty-devel-utils/blob/master/lua-releng) ++ 用法相当简单 + 1. 将代码保存成lua-releng文件 + 2. 更改lua-releng的权限,chmod 777 lua-releng + 3. 假设有一个源码文件为test.lua + 4. 执行./lua-releng test.lua,则会扫描test.lua文件的全局变量,并在屏幕打印结果 +#### ngx Lua APi 方法和常量 ++ ngx_lua 核心常量 + ```lua + ngx.OK (0) + ngx.ERROR (-1) + ngx.AGAIN (-2) + ngx.DONE (-4) + ngx.DECLINED (-5) + ngx.nil + -- 指令常量 + ngx.arg[index] #ngx指令参数,当这个变量在set_by_lua或者set_by_lua_file内使用的时候是只读的,指的是在配置指令输入的参数. + ngx.var.varname #读写NGINX变量的值,最好在lua脚本里缓存变量值,避免在当前请求的生命周期内内存的泄漏 + ngx.config.ngx_lua_version #当前ngx_lua模块版本号 + ngx.config.nginx_version #nginx版本 + ngx.worker.exiting #当前worker进程是否正在关闭 + ngx.worker.pid #当前worker进程的PID + ngx.config.nginx_configure #编译时的./configure命令选项 + ngx.config.prefix #编译时的prefix选项 + ``` ++ ngx_lua 方法 (#经常在ngx.location.catpure和ngx.location.capture_multi方法中被调用.) + ```lua + ngx.HTTP_GET + ngx.HTTP_HEAD + ngx.HTTP_PUT + ngx.HTTP_POST + ngx.HTTP_DELETE + ngx.HTTP_OPTIONS + ngx.HTTP_MKCOL + ngx.HTTP_COPY + ngx.HTTP_MOVE + ngx.HTTP_PROPFIND + ngx.HTTP_PROPPATCH + ngx.HTTP_LOCK + ngx.HTTP_UNLOCK + ngx.HTTP_PATCH + ngx.HTTP_TRACE + ``` ++ 错误日志级别常量 + ```lua + ngx.STDERR + ngx.EMERG + ngx.ALERT + ngx.CRIT + ngx.ERR + ngx.WARN + ngx.NOTICE + ngx.INFO + ngx.DEBUG + ``` ++ API中的常用方法 + ```lua + print() #与 ngx.print()方法有区别,print() 相当于ngx.log() + ngx.ctx #这是一个lua的table,用于保存ngx上下文的变量,在整个请求的生命周期内都有效,详细参考官方 + ngx.location.capture() #发出一个子请求,详细用法参考官方文档。 + ngx.location.capture_multi() #发出多个子请求,详细用法参考官方文档。 + ngx.status #读或者写当前请求的相应状态. 必须在输出相应头之前被调用. + ngx.header.HEADER #访问或设置http header头信息,详细参考官方文档。 + ngx.req.set_uri() #设置当前请求的URI,详细参考官方文档 + ngx.set_uri_args(args) #根据args参数重新定义当前请求的URI参数. + ngx.req.get_uri_args() #返回一个LUA TABLE,包含当前请求的全部的URL参数 + ngx.req.get_post_args() #返回一个LUA TABLE,包括所有当前请求的POST参数 + ngx.req.get_headers() #返回一个包含当前请求头信息的lua table. + ngx.req.set_header() #设置当前请求头header某字段值.当前请求的子请求不会受到影响. + ngx.req.read_body() #在不阻塞ngnix其他事件的情况下同步读取客户端的body信息.[详细] + ngx.req.discard_body() #明确丢弃客户端请求的body + ngx.req.get_body_data() #以字符串的形式获得客户端的请求body内容 + ngx.req.get_body_file() #当发送文件请求的时候,获得文件的名字 + ngx.req.set_body_data() #设置客户端请求的BODY + ngx.req.set_body_file() #通过filename来指定当前请求的file data。 + ngx.req.clear_header() #清求某个请求头 + ngx.exec(uri,args) #执行内部跳转,根据uri和请求参数 + ngx.redirect(uri, status) #执行301或者302的重定向。 + ngx.send_headers() #发送指定的响应头 + ngx.headers_sent #判断头部是否发送给客户端ngx.headers_sent=true + ngx.print(str) #发送给客户端的响应页面 + ngx.say() #作用类似ngx.print,不过say方法输出后会换行 + ngx.log(log.level,...) #写入nginx日志 + ngx.flush() #将缓冲区内容输出到页面(刷新响应) + ngx.exit(http-status) #结束请求并输出状态码 + ngx.eof() #明确指定关闭结束输出流 + ngx.escape_uri() #URI编码(本函数对逗号,不编码,而php的urlencode会编码) + ngx.unescape_uri() #uri解码 + ngx.encode_args(table) #将tabel解析成url参数 + ngx.decode_args(uri) #将参数字符串编码为一个table + ngx.encode_base64(str) #BASE64编码 + ngx.decode_base64(str) #BASE64解码 + ngx.crc32_short(str) #字符串的crs32_short哈希 + ngx.crc32_long(str) #字符串的crs32_long哈希 + ngx.hmac_sha1(str) #字符串的hmac_sha1哈希 + ngx.md5(str) #返回16进制MD5 + ngx.md5_bin(str) #返回2进制MD5 + ngx.today() #返回当前日期yyyy-mm-dd + ngx.time() #返回当前时间戳 + ngx.now() #返回当前时间 + ngx.update_time() #刷新后返回 + ngx.localtime() #返回 yyyy-mm-dd hh:ii:ss + ngx.utctime() #返回yyyy-mm-dd hh:ii:ss格式的utc时间 + ngx.cookie_time(sec) #返回用于COOKIE使用的时间 + ngx.http_time(sec) #返回可用于http header使用的时间 + ngx.parse_http_time(str) #解析HTTP头的时间 + ngx.is_subrequest #是否子请求(值为 true or false) + ngx.re.match(subject,regex,options,ctx) #ngx正则表达式匹配,详细参考官网 + ngx.re.gmatch(subject,regex,opt) #全局正则匹配 + ngx.re.sub(sub,reg,opt) #匹配和替换(未知) + ngx.re.gsub() #未知 + ngx.shared.DICT #ngx.shared.DICT是一个table 里面存储了所有的全局内存共享变量 + ngx.shared.DICT.get + ngx.shared.DICT.get_stale + ngx.shared.DICT.set + ngx.shared.DICT.safe_set + ngx.shared.DICT.add + ngx.shared.DICT.safe_add + ngx.shared.DICT.replace + ngx.shared.DICT.delete + ngx.shared.DICT.incr + ngx.shared.DICT.flush_all + ngx.shared.DICT.flush_expired + ngx.shared.DICT.get_keys + ndk.set_var.DIRECTIVE + ``` ++ Lua HTTP状态常量 + ```Lua + value = ngx.HTTP_CONTINUE (100) (first added in the v0.9.20 release) + value = ngx.HTTP_SWITCHING_PROTOCOLS (101) (first added in the v0.9.20 release) + value = ngx.HTTP_OK (200) + value = ngx.HTTP_CREATED (201) + value = ngx.HTTP_ACCEPTED (202) (first added in the v0.9.20 release) + value = ngx.HTTP_NO_CONTENT (204) (first added in the v0.9.20 release) + value = ngx.HTTP_PARTIAL_CONTENT (206) (first added in the v0.9.20 release) + value = ngx.HTTP_SPECIAL_RESPONSE (300) + value = ngx.HTTP_MOVED_PERMANENTLY (301) + value = ngx.HTTP_MOVED_TEMPORARILY (302) + value = ngx.HTTP_SEE_OTHER (303) + value = ngx.HTTP_NOT_MODIFIED (304) + value = ngx.HTTP_TEMPORARY_REDIRECT (307) (first added in the v0.9.20 release) + value = ngx.HTTP_BAD_REQUEST (400) + value = ngx.HTTP_UNAUTHORIZED (401) + value = ngx.HTTP_PAYMENT_REQUIRED (402) (first added in the v0.9.20 release) + value = ngx.HTTP_FORBIDDEN (403) + value = ngx.HTTP_NOT_FOUND (404) + value = ngx.HTTP_NOT_ALLOWED (405) + value = ngx.HTTP_NOT_ACCEPTABLE (406) (first added in the v0.9.20 release) + value = ngx.HTTP_REQUEST_TIMEOUT (408) (first added in the v0.9.20 release) + value = ngx.HTTP_CONFLICT (409) (first added in the v0.9.20 release) + value = ngx.HTTP_GONE (410) + value = ngx.HTTP_UPGRADE_REQUIRED (426) (first added in the v0.9.20 release) + value = ngx.HTTP_TOO_MANY_REQUESTS (429) (first added in the v0.9.20 release) + value = ngx.HTTP_CLOSE (444) (first added in the v0.9.20 release) + value = ngx.HTTP_ILLEGAL (451) (first added in the v0.9.20 release) + value = ngx.HTTP_INTERNAL_SERVER_ERROR (500) + value = ngx.HTTP_METHOD_NOT_IMPLEMENTED (501) + value = ngx.HTTP_BAD_GATEWAY (502) (first added in the v0.9.20 release) + value = ngx.HTTP_SERVICE_UNAVAILABLE (503) + value = ngx.HTTP_GATEWAY_TIMEOUT (504) (first added in the v0.3.1rc38 release) + value = ngx.HTTP_VERSION_NOT_SUPPORTED (505) (first added in the v0.9.20 release) + value = ngx.HTTP_INSUFFICIENT_STORAGE (507) (first added in the v0.9.20 release) + ``` ++ 案列使用,get_string_md5.lua: + ```Lua + local args = ngx.req.get_uri_args() + local salt = args.salt + if not salt then + ngx.say(ngx.HTTP_BAD_REQUEST) + end + local string = ngx.md5(ngx.time()..salt) + ngx.say(string) + + ``` ++ curl 请求(-i 参数,输出时包括protocol头信息): + ```Bash + tinywan@tinywan:$ curl -i http://127.0.0.1/get_rand_string?salt=tinywan123 + HTTP/1.1 200 OK + Server: openresty/1.11.2.1 + Date: Fri, 21 Apr 2017 14:27:16 GMT + Content-Type: application/octet-stream + Transfer-Encoding: chunked + Connection: keep-alive + ``` +#### ngx Lua APi 介绍使用 ++ 强烈建议使用ngx Lua APi 接口`(非阻塞的)`,而不是Lua自身的API`(阻塞的)`,Lua 自身API会阻塞掉的 ++ ngx_lua_api_test.lua + ```Lua + local json = require "cjson" -- 引入cjson 扩展 + + -- 同步读取客户端请求正文,而不会阻止Nginx事件循环 + ngx.req.read_body() + local args = ngx.req.get_post_args() + + if not args or not args.info then + ngx.say(ngx.HTTP_BAD_REQUEST) -- ngx.HTTP_BAD_REQUEST (400) + end + + local client_id = ngx.var.remote_addr + local user_agent = ngx.req.get_headers()['user-agent'] or "" + local info = ngx.decode_base64(args.info) + + local response = {} + response.info = info + response.client_id = client_id + response.user_agent = user_agent + + ngx.say(json.encode(response)) + + ``` ++ CURL Post 请求 + ```Lua + $ curl -i --data "info=b3ZlcmNvbWUud2FuQGdtYWlsLmNvbQ==" http://127.0.0.1/ngx_lua_api_test + HTTP/1.1 200 OK + Server: openresty/1.11.2.1 + Date: Sat, 22 Apr 2017 01:22:07 GMT + Content-Type: application/octet-stream + Transfer-Encoding: chunked + Connection: keep-alive + + {"user_agent":"curl\/7.47.0","info":"overcome.wan@gmail.com","client_id":"127.0.0.1"} + + ``` +#### OpenResty缓存 ++ 指令:`lua_shared_dict` + + 纯内存的操作,多个worker之间共享的(比如nginx开启10个Worker,则每个worker之间是共享该内存的) + + 同一份数据在多个worker之间是共享的,只要存储一份数据就可以了 + + 锁的竞争(数据原子性) +#### lua-resty-upstream-healthcheck使用 ++ health.txt 在每个upstream 服务器组的root 目录下创建这个文件,目录结构如下所示 + ```javascript + ├── html + │   ├── 50x.html + │   ├── index.html + │   ├── websocket001.html + │   └── websocket02.html + ├── html81 + │   ├── 50x.html + │   ├── health.txt + │   └── index.html + ├── html82 + │   ├── 50x.html + │   ├── health.txt + │   └── index.html + ├── html83 + │   ├── 50x.html + │   ├── health.txt + │   └── index.html + ├── html84 + │   ├── 50x.html + │   └── index.html + ``` ++ nginx.conf + ```Lua + worker_processes 8; + + error_log logs/error.log; + pid logs/nginx.pid; + + events { + use epoll; + worker_connections 1024; + } + + http { + include mime.types; + default_type text/html; + #lua模块路径,其中”;;”表示默认搜索路径,默认到/usr/servers/nginx下找 + lua_package_path "/home/tinywan/Openresty_Protect/First_Protect/lualib/?.lua;;"; #lua 模块 + lua_package_cpath "/home/tinywan/Openresty_Protect/First_Protect/lualib/?.so;;"; #c模块 + include /home/tinywan/Openresty_Protect/First_Protect/nginx_first.conf; + } + + ``` ++ nginx_first.conf + ```Lua + upstream tomcat { + server 127.0.0.1:8081; + server 127.0.0.1:8082; + server 127.0.0.1:8083; + server 127.0.0.1:8084 backup; + } + + lua_shared_dict healthcheck 1m; + + lua_socket_log_errors off; + + init_worker_by_lua_block { + local hc = require "resty.upstream.healthcheck" + local ok, err = hc.spawn_checker{ + shm = "healthcheck", -- defined by "lua_shared_dict" + upstream = "tomcat", -- defined by "upstream" + type = "http", + + http_req = "GET /health.txt HTTP/1.0\r\nHost: tomcat\r\n\r\n", + -- raw HTTP request for checking + + interval = 2000, -- run the check cycle every 2 sec + timeout = 1000, -- 1 sec is the timeout for network operations + fall = 3, -- # of successive failures before turning a peer down + rise = 2, -- # of successive successes before turning a peer up + valid_statuses = {200, 302}, -- a list valid HTTP status code + concurrency = 10, -- concurrency level for test requests + } + } + + server { + listen 80; + server_name localhost; + + location / { + proxy_pass http://tomcat; + } + + location /server/status { + access_log off; + allow 127.0.0.1; + + default_type text/plain; + content_by_lua_block { + local hc = require "resty.upstream.healthcheck" + ngx.say("Nginx Worker PID: ", ngx.worker.pid()) + ngx.print(hc.status_page()) + } + } + } + + server { + listen 8081; + server_name localhost; + + location / { + root html81; + index index.html index.htm; + } + + location /health_status { + + } + } + + server { + listen 8082; + server_name localhost; + + location / { + root html82; + index index.html index.htm; + } + + location /health_status { + + } + } + + server { + listen 8083; + server_name localhost; + + location / { + root html83; + index index.html index.htm; + } + + location /health_status { + + } + } + + server { + listen 8084; + server_name localhost; + + location / { + root html84; + index index.html index.htm; + } + } + + ``` ++ 状态查看,通过访问:`http://127.0.0.1/server/status` + ![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/Openresty_lua-resty-upstream-healthcheck.png) +#### Openresty和Nginx_RTMP 模块共存问题 ++ RTMP 流的状态(stat.xsl)不生效Bug 问题 + - 1. 修改完nginx.conf 配置文件 + - 1. ~~执行:`nginx -s reload` 会不起作用~~ + - 2. 一定要执行以下命令:杀掉所有nginx进程`sudo killall nginx ` 重启即可`sbin/nignx` +#### 配置RTMP模块的多worker直播流 ++ 配置文件,[Multi-worker live streaming官方文档](https://github.com/arut/nginx-rtmp-module/wiki/Directives#multi-worker-live-streaming) + ```Shell + user www www; + worker_processes auto; + error_log logs/error.log debug; + + pid /var/run/nginx.pid; + events { + use epoll; + worker_connections 1024; + multi_accept on; + } + + rtmp_auto_push on; + rtmp_auto_push_reconnect 1s; + rtmp_socket_dir /var/sock; + rtmp { + server { + listen 1935; + application live { + live on; + } + } + } + ``` ++ [nginx 并发数问题思考:worker_connections,worker_processes与 max clients](http://liuqunying.blog.51cto.com/3984207/1420556?utm_source=tuicool) + + 从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法: + 1. nginx作为http服务器的时候: + `max_clients = worker_processes * worker_connections/2` + 1. nginx作为反向代理服务器的时候: + `max_clients = worker_processes * worker_connections/4` + + 从一般建立连接的角度,客户并发连接为1: + 1. nginx作为http服务器的时候: + `max_clients = worker_processes * worker_connections` + 1. nginx作为反向代理服务器的时候: + `max_clients = worker_processes * worker_connections/2` + + nginx做反向代理时,和客户端之间保持一个连接,和后端服务器保持一个连接 + + clients与用户数 + 同一时间的clients(客户端数)和用户数还是有区别的,当一个用户请求发送一个连接时这两个是相等的,但是当一个用户默认发送多个连接请求的时候,clients数就是用户数*默认发送的连接并发数了。 + + +## Redis、Lua、Nginx一起工作事迹 ++ 解决一个set_by_lua $sum 命令受上下文限制的解决思路,已完美解决 ++ - [x] [API disabled in the context of set_by_lua](https://github.com/openresty/lua-nginx-module/issues/275) ++ 解决2 ++ 解决3 +## Redis执行Lua脚本 +## Lua 基本语法 +--- ++ Hello, Lua! + + > 我们的第一个Redis Lua 脚本仅仅返回一个字符串,而不会去与redis 以任何有意义的方式交互 + + ```Lua + local msg = "Hello, world!" + return msg + ``` + + > 这是非常简单的,第一行代码定义了一个本地变量msg存储我们的信息, 第二行代码表示 从redis 服务端返回msg的值给客户端。 保存这个文件到Hello.lua,像这样去运行: + + ```Bash + www@iZ239kcyg8rZ:~/lua$ redis-cli EVAL "$(cat Hello.lua)" 0 + "Hello, world!" + ``` + + > 运行这段代码会打印"Hello,world!", EVAL在第一个参数是我们的lua脚本, 这我们用cat命令从文件中读取我们的脚本内容。第二个参数是这个脚本需要访问的Redis 的键的数字号。我们简单的 “Hello Script" 不会访问任何键,所以我们使用0 + ++ redis.call() 与 redis.pcall()的区别 + + * 他们唯一的区别是当redis命令执行结果返回错误时 + * redis.call()将返回给调用者一个错误. + * redis.pcall()会将捕获的错误以Lua表的形式返回. + * redis.call() 和 redis.pcall() 两个函数的参数可以是任意的 Redis 命令 ++ Lua网络编程 +## Lua 脚本 ++ Lua 实现简单封装 + + man.lua + ```Lua + local _name = "Tinywan" + local man = {} + + function man.GetName() + return _name + end + + function man.SetName(name) + _name = name + end + + return man + ``` + + 测试封装,test.lua + + ```Lua + local man = require('man') + print("The man name is "..man.GetName()) + man.SetName("Phalcon") + print("The man name is "..man.GetName()) + ``` +#### Redis执行Lua脚本基本用法 ++ EVAL命令格式 + + 基本语法 + ``` + EVAL script numkeys key [key ...] arg [arg ...] + ``` + + 语义 + 1. script即为lua脚本或lua脚本文件 + 1. key一般指lua脚本操作的键,在lua脚本文件中,通过KEYS[i]获取 + 1. arg指外部传递给lua脚本的参数,可以通过ARGV[i]获取 + + eval命令的用法 + ``` + 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second + 1) "key1" + 2) "key2" + 3) "first" + 4) "second" + ``` + > 这个示例中lua脚本为一个return语句,返回了lua一个数组,这个数组四个元素分别是通过外部传入lua脚本。 + 因为redis内嵌了Lua虚拟机,因此redis接收到这个lua脚本之后,然后交给lua虚拟机执行。 + 当lua虚拟机执行结束,即将执行结果返回给redis,redis将结果按自己的协议转换为返回给客户端的回复,最后再通过TCP将回复发回给客户端 + + lua脚本参数的接受 + + 键值:`KEYS[i]` 来获取外部传入的键值 + + 参数:`ARGV[i]` 来获取外部传入的参数 ++ 案例介绍 + + 通过Redis命令`EVAL`执行一个简单的Lua脚本文件 + + 给Redis添加测试数据(通过有序集合和哈希对应的集合信息) + ```javascript + 127.0.0.1:6379> ZADD WEB 1 google + (integer) 1 + 127.0.0.1:6379> ZADD WEB 2 apple + (integer) 1 + 127.0.0.1:6379> ZADD WEB 3 baidu + (integer) 1 + 127.0.0.1:6379> ZRANGE WEB 0 3 + 1) "google" + 2) "apple" + 3) "baidu" + 127.0.0.1:6379> hmset google domain_name www.google.com ip 192.168.1.100 + OK + 127.0.0.1:6379> hmset baidu domain_name www.baidu.com ip 192.168.1.200 + OK + 127.0.0.1:6379> hmset apple domain_name www.apple.com ip 192.168.1.300 + OK + 127.0.0.1:6379> hgetall google + 1) "domain_name" + 2) "www.google.com" + 3) "ip" + 4) "192.168.1.100" + 127.0.0.1:6379> hgetall apple + 1) "domain_name" + 2) "www.apple.com" + 3) "ip" + 4) "192.168.1.300" + 127.0.0.1:6379> hgetall baidu + 1) "domain_name" + 2) "www.baidu.com" + 3) "ip" + 4) "192.168.1.200" + ``` + + Lua脚本,lua_get_redis.lua 文件 + ```Lua + -- 获取键值/参数 + local key,offset,limit = KEYS[1], ARGV[1], ARGV[2] + -- 通过ZRANGE获取键为key的有序集合元素,偏移量为offset,个数为limit,即所有WEB信息 + local names = redis.call('ZRANGE', key, offset, limit) + -- infos table 存储所有WEB信息 + local infos = {} + -- 遍历所有WEB信息 + for i=1,#names do + local ck = names[i] + -- 通过HGETALL命令获取每WEB的信息 + local info = redis.call('HGETALL',ck) + -- 并且在WEB信息中插入对应的集合信息 + table.insert(info,'HOST_NAME') + table.insert(info,names[i]) + --table.insert(info,'author',"Tinywan") + -- 插入infos中 + infos[i] = info + end + -- 将结果返回给redis + return infos + ``` + 1. redis.call() 函数的参数可以是任意的 Redis 命令 + 1. table.insert(table, pos, value) + > [1]table.insert()函数在table的数组部分指定位置(pos)插入值为value的一个元素. pos参数可选, 默认为数组部分末尾 + + 执行结果: + ``` + tinywan@:~/Lua$ sudo redis-cli --eval /home/tinywan/Lua/lua_get_redis.lua WEB , 0 2 + 1) 1) "domain_name" + 2) "www.google.com" + 3) "ip" + 4) "192.168.1.100" + 5) "HOST_NAME" + 6) "google" + 2) 1) "domain_name" + 2) "www.apple.com" + 3) "ip" + 4) "192.168.1.300" + 5) "HOST_NAME" + 6) "apple" + 3) 1) "domain_name" + 2) "www.baidu.com" + 3) "ip" + 4) "192.168.1.200" + 5) "HOST_NAME" + 6) "baidu" + ``` + + 注意:`lua_get_redis.lua WEB , 0 2` 之间的空格,不然会提示错误 + + 错误:`(error) ERR Error running script command arguments must be strings or integers` + + Ngx_lua 写入Redis数据,通过CURL请求 + + curl_get_redis.lua 文件内容 + ```Lua + local json = require("cjson") + local redis = require("resty.redis") + local red = redis:new() + + red:set_timeout(1000) + + local ip = "127.0.0.1" + local port = 6379 + local ok, err = red:connect(ip, port) + if not ok then + ngx.say("connect to redis error : ", err) + return ngx.exit(500) + end + + local key = ngx.var[1] + local new_timer = ngx.localtime() -- 本地时间:2017-04-16 15:56:59 + local value = key.."::"..new_timer + local ok , err = red:set(key,value) + if not ok then + ngx.say("failed to set "..key, err) + return + end + ngx.say("set result: ", ok) + + local res, err = red:get(key) + if not res then + ngx.say("get from redis error : ", err) + return + end + if res == ngx.null then + ngx.say(key.."not found.") + return + end + red:close() + ngx.say("Success get Redis Data",json.encode({content=res})) + ``` + + nginx.conf + ```Lua + location ~* /curl_insert_redis/(\w+)$ { + default_type 'text/html'; + lua_code_cache off; + content_by_lua_file /opt/openresty/nginx/conf/Lua/curl_get_redis.lua; + } + ``` + + curl 和浏览器请求结果(查询Redis数据库,数据已经插入成功) + ```Lua + root@tinywan:# curl http://127.0.0.1/curl_insert_redis/Tinywan1227 + set result: OK + Success get Redis Data{"content":"Tinywan1227::2017-04-16 15:57:56"} + ``` + + 通过lua脚本获取指定的key的List中的所有数据 + ```Lua + local key=KEYS[1] + local list=redis.call("lrange",key,0,-1); + return list; + ``` + + 根据外面传过来的IDList 做“集合去重”的lua脚本逻辑: + ```Lua + local result={}; + local myperson=KEYS[1]; + local nums=ARGV[1]; + + local myresult =redis.call("hkeys",myperson); + + for i,v in ipairs(myresult) do + local hval= redis.call("hget",myperson,v); + redis.log(redis.LOG_WARNING,hval); + if(tonumber(hval) Visual Studio Code 向github提交代码不用输入帐号密码 ++ 在命令行输入以下命令 + ``` + git config --global credential.helper store + ``` + + > 这一步会在用户目录下的.gitconfig文件最后添加: + + ``` + [credential] + helper = store + ``` ++ push 代码 + + > push你的代码 (git push), 这时会让你输入用户名和密码, 这一步输入的用户名密码会被记住, 下次再push代码时就不用输入用户名密码!这一步会在用户目录下生成文件.git-credential记录用户名密码的信息。 + ++ Markdown 的超级链接技术 + + > 【1】需要链接的地址: + + ``` + [解决向github提交代码不用输入帐号密码](#githubpush) + ``` + + > 【2】要链接到的地方: + + ``` + 解决向github提交代码不用输入帐号密码 + ``` + + > 通过【1】和【2】可以很完美的实现一个连接哦! + +## Linux 基础知识 ++ 检查网卡是否正确工作 + 1. 检查系统路由表信息是否正确 + 1. [Linux route命令详解和使用示例](http://www.jb51.net/LINUXjishu/152385.html) + 1. 案例介绍: + ``` + www@ubuntu1:/var/log$ route + Kernel IP routing table + Destination Gateway Genmask Flags Metric Ref Use Iface + default 122.11.11.161 0.0.0.0 UG 0 0 0 em1 + 10.10.101.0 * 255.255.255.0 U 0 0 0 em2 + 122.11.11.160 * 255.255.255.224 U 0 0 0 em1 + ``` + + 默认路由为:`122.11.11.161`,绑定在`em1` 网卡上 + + 而`10.10.101.0` 段的IP仅供局域网主机之间共享数据,没对外连接访问权限,因而外界是没办法通过`10`段网络连接到服务器的 + + 如果需要`10.10.101.0` 段可以让外网放完的,则需要删除`122.11.11.161` 的默认路由,需要在`em2`网卡上添加`10`段的默认路由即可 + + 具体步骤: + ``` + www@ubuntu1:/var/log$ route delete defaul + www@ubuntu1:/var/log$ route add defaul gw 10.10.101.1 + ``` + + 此时外界就可以通过`ssh www@10.10.101.2`连接到服务器了 ++ find 命令 + + 查找超出7天前的flv的文件进行删除: + + 命令: + ```Bash + find ./ -mindepth 1 -maxdepth 3 -type f -name "*.flv" -mmin +10080 | xargs rm -rf + ``` + + `-type f` 按类型查找 + + `-mmin +10080` 7天之前的文件 + + xargs与-exec功能类似,` find ~ -type f | xargs ls -l ` + + -r 就是向下递归,不管有多少级目录,一并删除 + + -f 就是直接强行删除,不作任何提示的意思 + + 查找当前目录下.p文件中,最近30分钟内修改过的文件: + + `find . -name '*.p' -type f -mmin -30` + + 查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细de情况加上ls: + + `find . -name '*.phtml' -type f -mmin -30 -ls` + + 查找当前目录下,最近1天内修改过的常规文件:`find . -type f -mtime -1` + + 查找当前目录下,最近1天前(2天内)修改过的常规文件:`find . -type f -mtime +1` +# 掘金爬虫 + +![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/github_good1.png) + +# Lua-Ngx +![Markdown](https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Images/Nginx-Phase.png) +# Live demo + +Changes are automatically rendered as you type. + +* Follows the [CommonMark](http://commonmark.org/) spec +* Renders actual, "native" React DOM elements +* Allows you to escape or skip HTML (try toggling the checkboxes above) +* If you escape or skip the HTML, no `dangerouslySetInnerHTML` is used! Yay! + +## HTML block below + +
      + This blockquote will change based on the HTML settings above. +
      + +## How about some code? +```js +var React = require('react'); +var Markdown = require('react-markdown'); + +React.render( + , + document.getElementById('content') +); +``` + +Pretty neat, eh? + +## More info? + +Read usage information and more on [GitHub](//github.com/rexxars/react-markdown) + +--------------- + +A component by [VaffelNinja](http://vaffel.ninja) / Espen Hovlandsdal + +##
      Copyright and License + +This module is licensed under the BSD license + +Copyright (C) 2017, by Wanshaobo "Tinywan". \ No newline at end of file diff --git a/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php b/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php index 0a3618bfd5beca7e764704186bceb0827108cc88..8926003bdc1ebd7168445fe3991765c8831c854a 100644 --- a/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php +++ b/Redis-PHP/Php-Run-Redis-psubscribe/nohupRedisNotify.php @@ -1,34 +1,26 @@ - #! /usr/bin/php setOption(\Redis::OPT_READ_TIMEOUT,-1); RedisInstance::getInstance()->psubscribe(array('__keyevent@0__:expired'), 'psCallback'); -// 回调函数,这里写处理逻辑 -function psCallback($redis, $pattern, $chan, $msg) -{ - $messageId = explode(':',$msg); - //print_r($msg); - //echo $messageId[0]."
      "; - //echo $messageId[1]; - //die; - //RedisInstance::getInstance()->set("channelXode",$messageId); - switch($messageId[0]){ - case '4001': - curlPost('http://127.0.0.1',array('id'=>$messageId[1])); - break; - case '4002': - curlPost('http://127.0.0.1',array('id'=>$messageId[1])); - break; - case '4003': - curlPost('http://127.0.0.1',array('id'=>$messageId[1])); - break; - default: - curlPost('http://127.0.0.1',array('id'=>$msg)); - break; - } -} +RedisInstance::getInstance()->psubscribe(array('__keyevent@0__:expired'),function ($redis, $pattern, $chan, $msg){ + // 回调函数,这里写处理逻辑 + $messageId = explode(':',$msg); + switch($messageId[0]){ + case '4001': + curlPost('http://127.0.0.1',array('id'=>$messageId[1])); + break; + case '4002': + curlPost('http://127.0.0.1',array('id'=>$messageId[1])); + break; + case '4003': + curlPost('http://127.0.0.1',array('id'=>$messageId[1])); + break; + default: + curlPost('http://127.0.0.1',array('id'=>$msg)); + break; + } +}); function curlPost($url, $curlPost) { diff --git "a/Redis/Codis\351\233\206\347\276\244\346\274\224\345\214\226\344\270\216Redis\345\274\202\346\255\245\350\277\201\347\247\273.pdf" "b/Redis/Codis\351\233\206\347\276\244\346\274\224\345\214\226\344\270\216Redis\345\274\202\346\255\245\350\277\201\347\247\273.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..ae8b0d6c0bef5005c325ad6c56c79d58692112af --- /dev/null +++ "b/Redis/Codis\351\233\206\347\276\244\346\274\224\345\214\226\344\270\216Redis\345\274\202\346\255\245\350\277\201\347\247\273.pdf" @@ -0,0 +1,28631 @@ +%PDF-1.7 % +1 0 obj <>/Metadata 2016 0 R/OCProperties<><><>]/ON[2017 0 R]/Order[]/RBGroups[]>>/OCGs[2017 0 R]>>/Outlines 211 0 R/PageLabels<>/Pages 2 0 R/StructTreeRoot 213 0 R/Type/Catalog>> endobj 2016 0 obj <>stream + + + + + application/pdf + + + + + + + + + + + + + + + + + + + + + + 2017-10-16T11:23:03+08:00 + 2017-10-16T11:30:44+08:00 + 2017-10-16T11:30:44+08:00 + 福昕高级PDF编辑器打印机版本8.3.1.0522 + + uuid:88764f44-0309-46a8-9d8b-984d5b0692c2 + uuid:61fead5d-d8fc-4a59-a097-4ea96b3cf89f + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 211 0 obj <> endobj 2 0 obj <> endobj 213 0 obj <> endobj 2015 0 obj <> endobj 2013 0 obj <> endobj 2014 0 obj <> endobj 218 0 obj [219 0 R 220 0 R 221 0 R 223 0 R 223 0 R 223 0 R] endobj 225 0 obj [226 0 R 228 0 R 230 0 R 231 0 R 235 0 R 235 0 R 235 0 R 239 0 R 239 0 R 241 0 R 245 0 R 245 0 R 245 0 R 248 0 R 251 0 R 252 0 R] endobj 249 0 obj <> endobj 253 0 obj [254 0 R 256 0 R 258 0 R 258 0 R] endobj 259 0 obj [260 0 R 262 0 R 263 0 R 264 0 R] endobj 265 0 obj [266 0 R 268 0 R 270 0 R 271 0 R 275 0 R 279 0 R 281 0 R 285 0 R 287 0 R 288 0 R] endobj 289 0 obj [290 0 R 292 0 R 294 0 R 295 0 R 299 0 R 303 0 R 305 0 R 309 0 R 313 0 R 317 0 R 317 0 R 317 0 R 317 0 R 317 0 R 319 0 R] endobj 320 0 obj [321 0 R 323 0 R 326 0 R 331 0 R 333 0 R 335 0 R 337 0 R 339 0 R 344 0 R 346 0 R 348 0 R 350 0 R 352 0 R 357 0 R 359 0 R 361 0 R 363 0 R 365 0 R] endobj 366 0 obj [367 0 R 369 0 R 371 0 R 375 0 R 378 0 R 381 0 R 385 0 R 388 0 R 391 0 R 395 0 R 398 0 R 401 0 R 405 0 R 408 0 R 411 0 R 415 0 R 418 0 R 421 0 R 425 0 R 428 0 R 431 0 R 435 0 R 438 0 R 441 0 R 445 0 R 448 0 R 451 0 R 455 0 R 458 0 R 461 0 R 463 0 R] endobj 464 0 obj [465 0 R 467 0 R 469 0 R 470 0 R] endobj 471 0 obj [472 0 R 474 0 R 476 0 R 477 0 R 481 0 R 485 0 R 489 0 R 491 0 R 493 0 R 495 0 R 499 0 R 503 0 R 505 0 R 507 0 R] endobj 508 0 obj [509 0 R 511 0 R 512 0 R 516 0 R 520 0 R 522 0 R 522 0 R 522 0 R 522 0 R 523 0 R 525 0 R] endobj 526 0 obj [527 0 R 529 0 R 530 0 R 534 0 R 538 0 R 538 0 R 538 0 R 540 0 R 540 0 R 540 0 R 540 0 R 540 0 R 542 0 R 543 0 R] endobj 544 0 obj [545 0 R 547 0 R 548 0 R 552 0 R 552 0 R 552 0 R 556 0 R 556 0 R 556 0 R 556 0 R 558 0 R 562 0 R 564 0 R 564 0 R 564 0 R 566 0 R 566 0 R 568 0 R] endobj 569 0 obj [570 0 R 572 0 R 573 0 R 577 0 R 577 0 R 577 0 R 577 0 R 581 0 R 583 0 R 585 0 R 585 0 R 585 0 R 585 0 R 585 0 R 585 0 R 585 0 R 585 0 R 587 0 R 588 0 R] endobj 589 0 obj [590 0 R 592 0 R 593 0 R 597 0 R 599 0 R 600 0 R] endobj 601 0 obj [602 0 R 604 0 R 605 0 R 609 0 R 609 0 R 613 0 R 613 0 R 613 0 R 613 0 R 615 0 R 617 0 R 619 0 R 623 0 R 623 0 R 627 0 R 627 0 R 627 0 R 629 0 R 631 0 R 631 0 R 631 0 R 633 0 R 633 0 R 633 0 R] endobj 634 0 obj [635 0 R 637 0 R 638 0 R 642 0 R 646 0 R 646 0 R 646 0 R 648 0 R 652 0 R 654 0 R 658 0 R 658 0 R 658 0 R 658 0 R 660 0 R 660 0 R 660 0 R 662 0 R 666 0 R 670 0 R 670 0 R 670 0 R 670 0 R 670 0 R 671 0 R 672 0 R] endobj 673 0 obj [674 0 R 676 0 R 678 0 R 678 0 R] endobj 679 0 obj [680 0 R 682 0 R 683 0 R 687 0 R 689 0 R 691 0 R 694 0 R 695 0 R 696 0 R 697 0 R 698 0 R 699 0 R 700 0 R 701 0 R 703 0 R 704 0 R 706 0 R 707 0 R 708 0 R 709 0 R 710 0 R 711 0 R 712 0 R 713 0 R 714 0 R 715 0 R 716 0 R 717 0 R 719 0 R 720 0 R 721 0 R 722 0 R 723 0 R 724 0 R 726 0 R 727 0 R] endobj 728 0 obj [729 0 R 731 0 R 732 0 R 736 0 R 738 0 R 739 0 R 740 0 R 742 0 R 743 0 R 744 0 R 746 0 R 748 0 R 749 0 R 750 0 R 752 0 R 753 0 R 755 0 R 756 0 R 758 0 R 759 0 R 760 0 R 761 0 R 762 0 R 763 0 R 765 0 R 767 0 R 769 0 R 771 0 R 773 0 R 775 0 R 777 0 R 779 0 R 780 0 R 782 0 R 783 0 R 785 0 R 786 0 R 788 0 R 789 0 R 791 0 R 792 0 R 793 0 R 794 0 R 795 0 R 796 0 R 798 0 R 799 0 R 800 0 R 801 0 R 802 0 R] endobj 803 0 obj [804 0 R 806 0 R 807 0 R 811 0 R 815 0 R 819 0 R 821 0 R 821 0 R 821 0 R 823 0 R 824 0 R 825 0 R 826 0 R 828 0 R 830 0 R 831 0 R 832 0 R 833 0 R 834 0 R 835 0 R 836 0 R 837 0 R 838 0 R 839 0 R 841 0 R 843 0 R 845 0 R 847 0 R 849 0 R 851 0 R 852 0 R 853 0 R 854 0 R 855 0 R] endobj 856 0 obj [857 0 R 859 0 R 860 0 R 864 0 R 868 0 R 872 0 R 872 0 R 872 0 R 872 0 R 872 0 R 872 0 R 872 0 R 872 0 R 872 0 R 874 0 R 874 0 R 874 0 R 874 0 R 878 0 R 880 0 R 884 0 R 886 0 R 887 0 R] endobj 888 0 obj [889 0 R 891 0 R 892 0 R 896 0 R 896 0 R 900 0 R 900 0 R 902 0 R 904 0 R 904 0 R 908 0 R 908 0 R 910 0 R 911 0 R] endobj 912 0 obj [913 0 R 915 0 R 916 0 R 920 0 R 920 0 R 920 0 R 920 0 R 920 0 R 920 0 R 920 0 R 920 0 R 920 0 R 924 0 R 924 0 R 924 0 R 924 0 R 928 0 R 928 0 R 928 0 R 930 0 R 932 0 R 932 0 R 932 0 R 934 0 R 938 0 R 938 0 R 940 0 R] endobj 941 0 obj [942 0 R 944 0 R 945 0 R 949 0 R 953 0 R 953 0 R 953 0 R 953 0 R 953 0 R 955 0 R 959 0 R 961 0 R 963 0 R 965 0 R 965 0 R 965 0 R 965 0 R 965 0 R 967 0 R 969 0 R 971 0 R 972 0 R 973 0 R 975 0 R 976 0 R 977 0 R 979 0 R 981 0 R 982 0 R 983 0 R 984 0 R 985 0 R 986 0 R 987 0 R 989 0 R 991 0 R 993 0 R 994 0 R 996 0 R 998 0 R 999 0 R 1000 0 R 1002 0 R 1003 0 R 1004 0 R 1006 0 R 1008 0 R 1009 0 R 1010 0 R 1012 0 R 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1018 0 R 1019 0 R 1020 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1027 0 R 1028 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R] endobj 1034 0 obj [1035 0 R 1037 0 R 1038 0 R 1042 0 R 1042 0 R 1042 0 R 1042 0 R 1044 0 R 1045 0 R 1046 0 R 1048 0 R 1049 0 R 1051 0 R 1052 0 R 1053 0 R 1055 0 R 1056 0 R 1057 0 R 1059 0 R 1060 0 R 1061 0 R 1063 0 R 1065 0 R 1066 0 R 1067 0 R 1069 0 R 1071 0 R 1072 0 R 1073 0 R 1074 0 R 1076 0 R 1077 0 R 1078 0 R 1079 0 R 1080 0 R 1082 0 R 1083 0 R 1085 0 R 1086 0 R 1087 0 R 1089 0 R 1090 0 R 1091 0 R 1093 0 R 1094 0 R 1096 0 R 1098 0 R 1099 0 R 1100 0 R 1102 0 R 1104 0 R 1105 0 R 1106 0 R 1108 0 R 1109 0 R 1110 0 R 1112 0 R 1113 0 R 1115 0 R] endobj 1116 0 obj [1117 0 R 1119 0 R 1120 0 R 1124 0 R 1124 0 R 1124 0 R 1124 0 R 1124 0 R 1128 0 R 1130 0 R 1130 0 R 1130 0 R 1130 0 R 1132 0 R 1132 0 R 1132 0 R 1134 0 R 1135 0 R 1136 0 R 1138 0 R 1139 0 R 1140 0 R 1142 0 R 1144 0 R 1145 0 R 1146 0 R 1147 0 R 1148 0 R 1149 0 R 1150 0 R 1152 0 R 1154 0 R 1156 0 R 1157 0 R 1159 0 R 1160 0 R 1161 0 R 1163 0 R 1164 0 R 1165 0 R 1167 0 R 1169 0 R 1170 0 R 1171 0 R 1173 0 R 1174 0 R 1175 0 R 1176 0 R 1177 0 R 1179 0 R 1180 0 R 1181 0 R 1183 0 R 1184 0 R 1185 0 R 1186 0 R 1188 0 R 1189 0 R 1191 0 R 1192 0 R 1193 0 R 1194 0 R 1196 0 R] endobj 1197 0 obj [1198 0 R 1200 0 R 1201 0 R 1205 0 R 1205 0 R 1205 0 R 1205 0 R 1209 0 R 1211 0 R 1213 0 R 1214 0 R 1215 0 R 1217 0 R 1218 0 R 1219 0 R 1221 0 R 1223 0 R 1224 0 R 1225 0 R 1226 0 R 1227 0 R 1228 0 R 1229 0 R 1231 0 R 1233 0 R 1235 0 R 1236 0 R 1238 0 R 1239 0 R 1240 0 R 1242 0 R 1243 0 R 1244 0 R 1246 0 R 1248 0 R 1249 0 R 1250 0 R 1252 0 R 1253 0 R 1254 0 R 1255 0 R 1256 0 R 1258 0 R 1259 0 R 1260 0 R 1262 0 R 1263 0 R 1264 0 R 1265 0 R 1266 0 R 1268 0 R 1269 0 R 1271 0 R 1272 0 R 1273 0 R 1274 0 R 1276 0 R] endobj 1277 0 obj [1278 0 R 1280 0 R 1281 0 R 1285 0 R 1289 0 R 1291 0 R 1291 0 R 1291 0 R 1293 0 R 1294 0 R 1295 0 R 1297 0 R 1298 0 R 1299 0 R 1301 0 R 1303 0 R 1304 0 R 1305 0 R 1306 0 R 1307 0 R 1308 0 R 1309 0 R 1311 0 R 1313 0 R 1315 0 R 1316 0 R 1318 0 R 1319 0 R 1320 0 R 1322 0 R 1323 0 R 1324 0 R 1326 0 R 1328 0 R 1329 0 R 1330 0 R 1332 0 R 1333 0 R 1334 0 R 1335 0 R 1336 0 R 1338 0 R 1339 0 R 1340 0 R 1341 0 R 1342 0 R 1344 0 R 1345 0 R 1346 0 R 1347 0 R 1348 0 R 1350 0 R 1351 0 R 1353 0 R 1354 0 R 1356 0 R 1357 0 R 1359 0 R 1360 0 R 1362 0 R 1363 0 R 1364 0 R 1365 0 R 1366 0 R 1367 0 R 1368 0 R 1370 0 R 1371 0 R 1373 0 R 1374 0 R 1376 0 R] endobj 1377 0 obj [1378 0 R 1380 0 R 1381 0 R 1385 0 R 1389 0 R 1389 0 R 1389 0 R 1391 0 R 1391 0 R 1393 0 R 1394 0 R 1395 0 R 1397 0 R 1398 0 R 1399 0 R 1401 0 R 1403 0 R 1404 0 R 1405 0 R 1406 0 R 1407 0 R 1408 0 R 1409 0 R 1411 0 R 1413 0 R 1415 0 R 1416 0 R 1418 0 R 1419 0 R 1420 0 R 1422 0 R 1423 0 R 1424 0 R 1426 0 R 1428 0 R 1429 0 R 1430 0 R 1432 0 R 1433 0 R 1434 0 R 1435 0 R 1436 0 R 1438 0 R 1439 0 R 1440 0 R 1441 0 R 1442 0 R 1444 0 R 1445 0 R 1446 0 R 1447 0 R 1448 0 R 1450 0 R 1451 0 R 1453 0 R 1454 0 R 1456 0 R 1457 0 R 1459 0 R 1460 0 R 1461 0 R 1462 0 R 1463 0 R 1464 0 R 1465 0 R 1466 0 R 1468 0 R 1470 0 R 1471 0 R 1473 0 R 1474 0 R 1476 0 R] endobj 1477 0 obj [1478 0 R 1480 0 R 1481 0 R 1485 0 R 1489 0 R 1489 0 R 1489 0 R 1491 0 R 1491 0 R 1493 0 R 1494 0 R 1495 0 R 1497 0 R 1498 0 R 1499 0 R 1501 0 R 1503 0 R 1504 0 R 1505 0 R 1506 0 R 1507 0 R 1508 0 R 1509 0 R 1511 0 R 1513 0 R 1515 0 R 1516 0 R 1518 0 R 1519 0 R 1520 0 R 1522 0 R 1523 0 R 1524 0 R 1526 0 R 1528 0 R 1529 0 R 1530 0 R 1532 0 R 1533 0 R 1534 0 R 1535 0 R 1536 0 R 1538 0 R 1539 0 R 1540 0 R 1542 0 R 1543 0 R 1544 0 R 1545 0 R 1547 0 R 1548 0 R 1550 0 R 1551 0 R 1552 0 R 1553 0 R 1554 0 R 1556 0 R 1557 0 R 1559 0 R 1560 0 R 1562 0 R 1563 0 R 1565 0 R 1566 0 R 1567 0 R 1568 0 R 1569 0 R 1570 0 R 1571 0 R 1572 0 R 1574 0 R 1576 0 R] endobj 1577 0 obj [1578 0 R 1580 0 R 1581 0 R 1585 0 R 1589 0 R 1591 0 R 1591 0 R 1593 0 R 1594 0 R 1595 0 R 1597 0 R 1598 0 R 1599 0 R 1601 0 R 1603 0 R 1604 0 R 1605 0 R 1606 0 R 1607 0 R 1608 0 R 1609 0 R 1611 0 R 1613 0 R 1615 0 R 1616 0 R 1618 0 R 1619 0 R 1620 0 R 1622 0 R 1623 0 R 1624 0 R 1626 0 R 1628 0 R 1629 0 R 1630 0 R 1632 0 R 1633 0 R 1634 0 R 1635 0 R 1636 0 R 1638 0 R 1639 0 R 1640 0 R 1642 0 R 1643 0 R 1644 0 R 1645 0 R 1647 0 R 1648 0 R 1650 0 R 1651 0 R 1652 0 R 1653 0 R 1654 0 R 1656 0 R 1657 0 R 1659 0 R 1660 0 R 1662 0 R 1663 0 R 1665 0 R 1666 0 R 1667 0 R 1668 0 R 1669 0 R 1670 0 R 1671 0 R 1672 0 R 1674 0 R 1676 0 R] endobj 1677 0 obj [1678 0 R 1680 0 R 1681 0 R 1685 0 R 1689 0 R 1689 0 R 1689 0 R 1691 0 R 1693 0 R 1694 0 R 1695 0 R 1697 0 R 1698 0 R 1699 0 R 1701 0 R 1703 0 R 1704 0 R 1705 0 R 1706 0 R 1707 0 R 1708 0 R 1709 0 R 1711 0 R 1713 0 R 1715 0 R 1716 0 R 1718 0 R 1719 0 R 1720 0 R 1722 0 R 1723 0 R 1724 0 R 1726 0 R 1728 0 R 1729 0 R 1730 0 R 1732 0 R 1733 0 R 1734 0 R 1735 0 R 1736 0 R 1738 0 R 1739 0 R 1740 0 R 1742 0 R 1743 0 R 1744 0 R 1745 0 R 1747 0 R 1748 0 R 1750 0 R 1751 0 R 1752 0 R 1753 0 R 1754 0 R 1756 0 R 1757 0 R 1759 0 R 1760 0 R 1762 0 R 1763 0 R 1765 0 R 1766 0 R 1767 0 R 1768 0 R 1769 0 R 1770 0 R 1771 0 R 1772 0 R 1774 0 R 1776 0 R] endobj 1777 0 obj [1778 0 R 1780 0 R 1781 0 R 1785 0 R 1789 0 R 1791 0 R 1795 0 R 1795 0 R 1795 0 R 1795 0 R 1797 0 R 1797 0 R 1797 0 R 1797 0 R 1799 0 R 1801 0 R] endobj 1802 0 obj [1803 0 R 1805 0 R 1806 0 R 1810 0 R 1814 0 R 1816 0 R 1818 0 R 1822 0 R 1824 0 R 1825 0 R 1826 0 R 1827 0 R 1829 0 R 1830 0 R 1832 0 R 1833 0 R 1835 0 R 1837 0 R 1839 0 R 1840 0 R 1842 0 R 1843 0 R 1845 0 R 1846 0 R 1848 0 R 1849 0 R 1851 0 R 1853 0 R 1855 0 R 1857 0 R] endobj 1858 0 obj [1859 0 R 1861 0 R 1862 0 R 1866 0 R 1868 0 R 1872 0 R 1872 0 R 1872 0 R 1874 0 R 1874 0 R 1874 0 R 1876 0 R 1876 0 R 1876 0 R 1878 0 R 1880 0 R 1881 0 R 1882 0 R 1883 0 R 1885 0 R 1886 0 R 1888 0 R 1889 0 R 1891 0 R 1893 0 R 1895 0 R 1896 0 R 1898 0 R 1899 0 R 1900 0 R 1902 0 R 1903 0 R 1905 0 R 1906 0 R 1908 0 R 1910 0 R 1912 0 R 1913 0 R 1915 0 R 1916 0 R 1918 0 R 1919 0 R 1921 0 R 1922 0 R 1924 0 R 1926 0 R 1928 0 R 1930 0 R 1932 0 R 1934 0 R 1934 0 R 1934 0 R 1936 0 R 1938 0 R 1939 0 R 1941 0 R] endobj 1942 0 obj [1943 0 R 1945 0 R 1946 0 R 1950 0 R 1950 0 R 1950 0 R 1950 0 R 1952 0 R 1952 0 R 1952 0 R 1953 0 R] endobj 1954 0 obj [1955 0 R 1957 0 R 1958 0 R 1962 0 R 1962 0 R 1962 0 R 1962 0 R 1966 0 R 1968 0 R 1968 0 R 1968 0 R 1969 0 R] endobj 1970 0 obj [1971 0 R 1973 0 R 1974 0 R 1978 0 R 1978 0 R 1978 0 R 1978 0 R 1982 0 R 1984 0 R 1984 0 R 1984 0 R 1985 0 R] endobj 1986 0 obj [1987 0 R 1989 0 R 1990 0 R 1994 0 R 1994 0 R 1994 0 R 1994 0 R 2001 0 R 2003 0 R 2003 0 R 2003 0 R 2004 0 R 2006 0 R 2008 0 R] endobj 1999 0 obj <> endobj 2009 0 obj [2010 0 R 2012 0 R] endobj 2010 0 obj <> endobj 2012 0 obj <> endobj 2011 0 obj <> endobj 45 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/ProcSet[/PDF/ImageC]/XObject<>>>/StructParents 42/Tabs/S/Type/Page>> endobj 2018 0 obj <>stream +H +@sή*PZAP > endobj 2020 0 obj <>>>/Resources<>>>/Subtype/Form/Type/XObject>>stream +q +177 0 0 63.75 0 4.1300049 cm +/Im0 Do +Q + +endstream endobj 209 0 obj <>stream +JFIFJExifMM*2:(,Photoshop 3.08BIMhttp://ns.adobe.com/xap/1.0/ + + + + image/jpeg + + + 分论坛PPT + + + 2017-09-13T16:13:59-07:00 + 2017-09-13T23:14:04Z + 2017-09-13T16:13:59-07:00 + Adobe Illustrator CC 2015 (Macintosh) + + + + 248 + 256 + JPEG + /9j/4AAQSkZJRgABAgEBLAEsAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABABLAAAAAEA +AQEsAAAAAQAB/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJ +AAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz +ZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwA +AAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA +A9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RS +QwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1Q +YWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAS +c1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAA +AAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNj +AAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5p +ZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAA +AAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAA +AAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBp +biBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4g +SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDP +FAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAA +AAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA +KAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCy +ALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB +WQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4 +AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oD +ZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATT +BOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowG +nQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiq +CL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL +Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3e +DfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPUR +ExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSL +FK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUY +ihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzM +HPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh +oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3 +JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDks +biyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj +Mpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5 +BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i +QCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVH +e0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9J +T5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX +4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2Cq +YPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFq +SGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQU +dHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+ +wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZ +if6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSV +X5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFH +obaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu +La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsu +u6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJ +Osm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc +1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m +lucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe +9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4ADkFkb2JlAGTAAAAAAf/bAIQA +BgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8f +Hx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f +Hx8fHx8fHx8fHx8fHx8f/8AAEQgBAAD4AwERAAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQF +AwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMB +AgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdU +ZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eX +p7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUE +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 +2KuxV2KuxV2KuxV//9k= + + + + xmp.iid:7fddbe77-78b4-436e-a5e9-0d792f09a578 + xmp.did:7fddbe77-78b4-436e-a5e9-0d792f09a578 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:93e34821-98d1-964e-8c8a-26a176cab2f6 + xmp.did:3a3c837b-7f29-47b8-9ef1-16e22e62e5a5 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:4c60e89c-d5ea-4cd1-8f49-3bc91774ca90 + 2017-08-24T22:39:12+08:00 + Adobe Illustrator CC 2015 (Macintosh) + / + + + saved + xmp.iid:7fddbe77-78b4-436e-a5e9-0d792f09a578 + 2017-09-13T16:13:59-07:00 + Adobe Illustrator CC 2015 (Macintosh) + / + + + + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + + + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + Print + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv +#(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y + +' += +T +j + + + + + + " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# +#8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G +k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 +uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  +   $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" + }!1AQa"q2#BR$3br +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz + w!1AQaq"2B #3Rbr +$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(aEPEPEPEPEPEPEPEPEPEP[ěqNqOc@'tt:յݸM$xefgFBYx$u#IRF$\ kH4A5oG8JҴ$-f)\+d7$z‹E6!Ќ9FzqPפ[t"_:vqBdTԊ(dQEQE[V)3zzU2䄉&NxeRURqGj[[&[t_8r:/s/;5euDŽ+z=GK]+sϩTNNW*[jJ-!c؏AS[miFNN:cIR9͎<( ܤvP_.c•=ŔVw6lM[<Mi御:X۵!d=x?:B.?jw~GV4unXC۴ySHҀtLϵUS=+gI: ]4xnf#x\5\aS/͖+CBa%| c[q%$^klّ*ohZ;p@93ұ-c|vd3v'YU>$(Y1̲c z5cKn gh1VEֵgug}%E>^6pNthݑN.Y^6VV:2.-'@keD储PO@**) +(Q@AOq*@i('IXtٴv8(I$zWS'lTcQʸ[7KD! +w['J掛nm|?wy˨G$"(1݁cY5rVii(%pIWh-=Lpdy'O-хEJmI!\t[*Ag1U\o;W;]nmhdiϔ$灌yٜ$h2#1N+Ӽ>>0HDJ9zڲm49+إScr{S;I6#&rsZfjE8rO.` cns>j`ؾk';)@;n +5KJ[|qtJ N(fQEQEnQ<RN޻jOԥ0E~J|6ϫ$HfQ}2Ohs7j\EruF6 UKʃt!sG=S2QZ۪ibUr(sXC.;yaH#FiWJlۧ΍0,q5 R(-8VX ryi=66$%qoPAka0p}J%0st~AGZmggWvԗqM.vW_+ȇuI3GO޿RAGi-ʌܤ秵H6""Hf" v rxkZUp f&e XI0hۻ }i RDѵ٭"C=`_O|b%YLy/ +b%v0y~5ε$i&ޙ2w\XꚅWq %Xye~^'=մ aAg.B 35{9R731w*8EoKZ -d>.)X4Z(QEQEQEQEQEQEQEO >ќ3GpR@n* ub9GftW L=k4'm{u*è؆L_*} d3p3nϩ;;#Ȭ.k2,~{mg=2`WB o9'>-i;)1O΅k(Q}oEmbͶ,)L@*Хϒ_Q#o:{w}֑q,#=yEQ^Ixo*#S9uf a퐴Avy~s3[i<6Oʽ 9~9Fr8azjSGq3 &[6ў8h[kcbSkEKy7a"Ѣi#]aQi!IHq}k$2I;9@~QRy4})&Ky)WkQ1#(((((((((((((Ge +OڧO74d +]vgD;W^ԢږUq׭> = y"pYsF9+A',E;N6c$qz+iy&qJ 1b8šež-ۜsSto zrk.v2$HY݊;sRVck8U$po闖M{xP!pIqV#Ko,ل̸z.Yt{%X8k +s,}kwSԬ΁l>ґHH.M()Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ōđ6c;}k;{u.![ָ5ʫ&ِ9RhޝT,VsGK,k".rJ[{;XHPBNp;ՈEƅ=vF[۸$H`p=+]+"8+>\\-5,IzUM Kaufa翽Wy4mVdʄAzjw>Wx;WaTvũ-N2ӻҭ'BMm23G=fS2i(QE`ݖɺ_02HXh564hbߨ[ybdq[Rk4ڬob0qմ&<퉤#X_LVi}1F r8pW'>ߘa@Tʎ@n̚(B((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((X5w + )c#Ui/.彸iwb~v-g8+di$Y]pb=;W1E*3w:[a&@C}0WW5E +Rr(QEQEQEb h 573x8`ִc_6ހNMriYo %z玴#bWC$E!gvzʻ$"Ipg*qz_kkaC O&kNQIZDm|Jqvv}$]$9' +jWqH`<rsEjOױE$[yBypCU2\:ejvJ,C>Re<$=jΌ۽~i[H;7BSQLܥ՞@/-O]WP-"K둓 M!D{1/;}3;_.Ht?A#ZIj`Xi w{_[ :u^Cw-!3.9zS维eKa'mTVQ]>PQ2W`zɹs8cSQqkvL{ֽy+knt~]O#F<3QLSҾ^"Q\f!QE(((((((ֲԟa ˜LէI{ej?ҷ[GQrR:kFS"R˖<ԴoN+fRK`t\YXJ% p~st>RrF0}HœOs,[f~p:^/KJV̟gFq۵Igkj.n 8_'sU,JP[Ȅ=jyHWq +NdKڭΠag(YI!s{օȶM6ȟ(۔ 9uSLyMn4=y*OgyKX?{Ѿz{{K;i +p>!pIM.f|MS/Ye%dOj[pHﻯ*Pܧ iCvbAp#VĀ {V no<@?mjqEU @7؃I5Ѫ2|{Љ5]"8lLqΓ{j2^ZLd0*q TDŽ@%ֲ˚QwyW:3dRʼn'9ѭd_.Պo g^=*1W.yHpcR& Mnc7|0u$y8+.3\\e:qSi0I)Łx61jz_k,vVpNI9N9AVOVsiw$L1H{UzomB *VPs+thܫ 0)6ch +( +( +( +( +( +( +( +( +( +( +( +ipvpH2)@qϯQuVk$ѫqIMEmlm2osgNGy2Ks ŊG`p?"S{ /LO=ꬩFzV4MJ2}\/MmF-62jWVS[ݙ#188j:&=;|۷>@~5jvEYcgƢ6 rAG|ؼ?v;}3ށ+ǡv9tu6w7nܹFh~]x2hgiV%ifpO9ڱneU;!=x)iQ{4QEQ@Q@nuhyo11s= +X}fWoJL4"iW,ȰdˑT֚Q!Bwt:MeTb bu]\ 6m:FUdLpy4jk9 +(Bm,g8PFqs}(G5E\gԦJ lmw@qZA/FQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEnŧXX_< +vf~䌴%rߠ9+kU-촫+Rƌ,qX Q@(((ĈnO'rWVAȤ˧Qj=LKg?Jki2C"6K2F,Rj6I41,sN2[=ybieN7n;VUճȸ8PkZ}<5Ҵ,0'MFtrжtK!Ifu0f+UY39#6cKwc,q) :7wKmm4ܐ010rr>ig d-"r8f\]ug3+C1Ec 3Zk/~`*"/& 5Il:!qҝg4].Ej |JN[o67ɣlTv zMϱ&˴n\ǠOSyBfpliexvt-T!܁1Rִ+dg#Vf\6A]ʍv,a,fvR޲X]mgM;\RWz$#h|lIՋH]? +n?­;*1@9(NJҺ1͞ek!C!S9< )Ȑǩ&-%;+mRMw7,9^GzipQz[i57xVgQ*8ֶe۵ +a4ZC-F;,7l)K>KrGM2S2FamɋxqjԚNL<,QxpQYsHՖU"˪^LP6~QJEG̺iao0g*KK 'Gk2w7e2VӿG "q86+O@fϵFy5&/>h|_yIQY:ӭZyet]y}:͋[ɰ*~Px?ZfKv.y=gXFz瞿JNwi$i嘒O4fm݅hfMKw!Y0W$zbHnl9Ȥӵ?C$g,3p=)6k0kQmSzVUinm c'*:%tT9wJ}eNI#f2~_~^Nc!Ijk^A @Cv8!qG:303IZ"YDwgN?ϥUa;vMK3ҺU)=?%QQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQR4$k#"4Q@Q@Q@Q@Q@Q@Q@Vd`Xt 譼uqLcEMCMy笝<ș >YlkX\n2 ' _5&VRi^Yv3M@Aq#j+ޥh\4Ӱ?oa=ֹ{d$gƠ-Wl늩vL>k-'"TȭG*8n6;IVn;]cX2S v(+F"v`s+T{%&Ϝ6qiMY\P]Aewu{'.o6ҧ6ʐ0s;ֹZk m좙u@FO/xri$ic-*3>o4C$q޸:Rp٢HqFf1+0 x(RrQE3(((((((mi eJEMSf%32 /c4WNx}wVUmMw)lZLM}D<UP~YUqtVHZї~1UR̻rWb\얭XTAlU/ kUKq3 nzTy|;g4&.s_b\I11QXfT+9:̭5[< $Tr4 T){ץe@'Vdiv +nb'S1Wn"!*P((((((((((((((((((((^4mEVbUDfl7=j+lHC)sU{{ nma gVWFw~V6%#Nxe?YҖC[u 'puֳtˍ6(vU>`A:*ޏ}kJP I#Ui6҅1 Z#VUg5lLugy$ aXpF 3JQE((((((+[J#ӡd{O8'>ft(m;]6C4W?c\2mU2kmn(&ͽ3)8<µ$WVL @K}>2p.I'O9'4 ֢NԼȎ}0˟߈Jke+I'b\zw#aЩW_۟,[h'EP ((-MUx%2eeGY$SK nGQ8rhWW_n '֣o!)}O^kEwr/޹-+e?L})t]FeKdc2;r)\S6ۛ~!-ɻgq*iHxҺDNX{dsRfm| \["}yݸCݴmw> qz{9mmhބt=zG9+^}}Z?n# =j0,DO2,1߯C^~Z<3zMvbObw \~k̼o gz[jH[͓Y1QFG4)±}6_yn891|/Q5c{qϐ]k)$9i|C emjiQC$9p9;v$|E{i7hXDۇb@Qq'w۠-2{zzvӑ^<tèh#Gi#EeBN1dPCV +( +( +(4,#ih` ɿ8ǭoh 6ar F}>BboqSJƐxbc;\"s\v7% )A}j aH8ŢI$l[G~rWw=>q!h!G-Vۣ;nfq~u~  [+ސ_Oʙ'p)nl%$o,;åNJ|ji)e#HLU9j[)-|ȧYK^9ccokoeloG)ӡWu}jm=洖GR&:xǽ5r%ͧrek"`S9=&89ks4o'ZIgo=.$_ݓ܏Xڮ=--3r%NĢ)Q@Q@Q@Q@Q@Q@Q@^{PQgs ;|w6ѩ|:_>y(b8ҹ.5* ZV:೵XM31Ol{Դtº+9m[I"Qr9w7&Gd3rFjM eI/nI8yٷH?%擊JB}>Z{ՖeyKaqt*-t )&j9$pNxZlv}[ +O[Hcň ӌU͓se\84{2 +I=bK52TzmZF|13گELds(@rG: 3=K&c1FO=}$9+[Wn_%vO~}&Vv +(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@hiFjˌ7V} ;;emb-qeip8|F<,{zvp]V5o[knV۴pU8e=EfzjHmiIG fT4I)t,PyIżځ)OF\wJ]b$c&f bQT,+i@gu=icV^Go>MTsź$zuVkqO995zhq\>ZA'|_guI=戗n-#꡼R=zfF(((((((((((mfK{t+j gҥn|7ʜO +QEQEQEȺ5%C>X5ajQFx>t۾Q*dzs?Josuc; + h=F%h_>Hy-95-o)d*{ނ_7b- I6 ߍzLyt]ZQe8*23}CsoCf x7URIcVXFy''=9soúΣ/v(jv'/fR[Ɨ3yosoSi({cާJgʹ8}iy)s~cwwEP0#&T75$} ȫ}@?.?*<ފXiz֟v.mfx%PAԕ## j((((((((((((((((((((((((((((*[{i.cIGjY@䚊qݤS\ W˰ Lj +|ih_h6ʎѯ*@gid)*z>Hd.Y?+sӢ%ĀIáGךaijv]Z0JE|a/ E +5x?4+n|L&>+@ t>,k<]jv@.-eaR2k_ j>MPk}Ă,8c&B'$){Ne_i0 +~#e#/j~ZV{y[Wl,t s^K.:zBq0dW-ៀ~*I5qiԙHR=O"+ |?--2 =4vuC>#L-\Dɛ28q{WjZ |?4Dɵ_t 㞘k%9h$A p^6cg :f^LR2㏪Aih/ ^\E6/gY>Z'`2px>&E5k)Pz8M?x< _J#XdΌF;'z4_E}i-ֲC"tc9Q@m0NvHɜ$f@(+>7NjDќ=1l o )|t-KH=Q:$s^m7aaW嗻D":b FHY~1#z/{O-q}j9T}(ze m/.6-ꬊې)luMÂߎT%I8 +kAN;KHf 4Wdt_#A=⯆c OiFI F^>=)M+Ih"$n?+rjZz++ۼ_> +,əOu܋ ?tV<bQ-x3zߋOb&F X=q^¾wscֺ_xMw[ڙ<+1ª7?qGz|WQukf$lĠO_ZJȹ]-}%&P 2@ +Z|76riE$Cu mgCƢ׎E=] lbmg xS >$xZXyvylFx# )˚>>G4Aw$ѳ6'dcjz zDT8*$a,1 +~ ]E_InNT7'54zrY2D?$_gPF,pν J-&|ft(!syayuln-mÏ)wZȊ+Ky8#j&mmjڕ#Gn$&:=Wy t4Y?.?h%ƏX5Uf4Y?.|Mu 5#6CwqY +uxU}>"7-xNp>wOn3< +ynlp>a(U&ytRF# qTt/|$R~u#3L.<^:"xg6qid{IϒM.@>({f,.4;yw,.e<vg|5n=6/X^Buѓ҆P|=N<_&X}9i pڹ]ciEGAh-!LQ!K/Xx-7DJ?m_k-;NBR!hb {c@]EP3|Ig%WCQO%w>5?ݟVNPG|,[gK.n;Cm2$ #99:}gU_{ G$+28_}^\ơ m?^:"Gi07Lⷾ/5k 2%y{n,G\{ +~ ^пDI]_;6g'o+=#' +Vͳ78}/8%j}8珮j ,^$ANnjKh; 08NpVg 'Qh"m.8 t5ً]ReD *Ԣo&yy$ر%k|?xK\zZl"-n}:d+7z<'\}gKh$De>q +JGo- UEokF}a¾Ն_T< eWx=5l@̖f |cz1(8ZQ  ho5^o g?`6O{M7Owuu=RfgL[br0I48ZQ  ho5Z߳浪~-"n[ʓ|z ĺ?AoQCw"ǀP_huMRM nVGf U'r(뚶 +^D$דՍ#Eq6kx=pq@̊+q__oǍW€;o>мW{% ;$~Z˧kh8XO$iz$,F{dV}kNӯ5}JO绸qQV'}{UsVFvg%rv?Ǣs_Jxc^3ֵ_Rt%ʅzq c6ֺƛ03]ۤ!aӠ^>^?KPD"L W=r~&^:Ցg[>[e~AAܟSg[OxH˧scS3lqPGTW|L%wI6xd^KEw;xC@Š(((([_:<ٟb~nFM\Y%˖>b+2m`HƝ<FP7qR㮇L*Sl7InR*ZO;HcsnNvUef@N0in # ߗJJMEh561Yu~t6o*yOB LMh[31Ϝ2JV6UI4V<[]Hh`>o8#6J8R*.qZlq}AES3 +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +ѵ{{  3ұYNNA ;3/ +v^zG?pwPkɊFLhZZmEMvJM`eY^3pU9h.^׆lK'H 1Hz +mﬤH)1¸ +A-OOfQK(0)g}Υyyq\\K"FPN1өլT($(((((((((!ť7خ1(o'5OwĒ.HǃgJV:*7[#Ič#$h6# :qཊ9`˼/ +MgQ:蕡Y+wB{ި˖'RY&dkk=64ȱY&xR<{{y09?!нr_XXvktbx;I :WQe ]k7qYCP}@ _[Q̺@3="tS}6ͭD! ෠ׯO(c pߩ??px8?ԟM|q[^я|_ en$Lࠚ}<-9P:FG@ ;R'|]Qm\ԣ[ՎGX_<CO&?! =1i;Ȩ+(\'_1|I߈zƥ&U1HE@Q@Š(((`|=;fUZ\!eG:]VD'u+W@|?YF=,әdD8jǍ~)=ޓeso}œp~P#xB\sەF]xC[UlAKǙ`#<={rizŅ 7V!*Â8\W|[/;tf+$K@pOUgtDm3)#$.WJ`dP_s1]޹]p6CeV61O_KSE@fWCkZn`/Kx+?o(?yV?-|_OO4 +(ʬ쨊Y2I|hA3c?4,.;؋ɸ }B/*/zk?_נf +ğ|_2uKgˍC>M3z {6`I?~?z{+BY-hbp=?i[UܺOfK#oYs"偸2޹Zik"XU- + #'?|;]j9ѥf;p?@O\s?> 蓮ˌ -Mt8럡_^Ot絷lcFX`qҽz]7+&,îDA@,N@c$MTu+]2H*ZϮVvqow2ԏiŎJ ~@r1¿ڷ,N7Gi+\d=O +:0!7<",@mV\nu=Fv#w'Z)zxv4vr(Լ=m$dmd }vJ(/u:iӑCb:>'3DyFD6,1?|]EiV&^WndG āB9#DW@ltϭGEI$䞤QEQE-w1$6*GBPww/$rǩ&: +J$mqew +]wQĺ%tY7[>ďzWi|6!W9}؀H#*ГL~u6LON>Z?0_+O<VA]̟U? ꗫ)6HmNhp +"[J7CbI$IM*9EuRszU :'n >koXņE!Ǯ9kɮ|٤7m?nh~#&\9!8MwT+BOhGxdg?^ aaq^G44*X97 ua9@0gm9_ƾN7jHK&'jҴg4ՎnR%v G^$_IBYdxg(XgG'Me%ǖR=8F/pK#IVƯvٴq$kmL-f;( gkoA22,s.|ϔ=*F)< G@(k QMsO +~aO^HyqSy>leo,!wn"^}q&GzuJGB:Gj1.ﻑf#hn쬠.Cdg׭a0E![↞wEbw'6/<^u_D~zLZO5ޑs87#foZxᾳg!D wFw{k{'ރiwmYoh)|3i9[hsG*P&N3w?3~r5gFO$2y|nTbc?+}4"o׺ΩK ~c{0⼮eo٫͕IE1' 5Z/DFI߁l'uKM:wOu2Cf ^B\AhũU6UETMiЬb_Ϩ@d߻"SEw4vZ:?gctWw[Ϋ{4T'oIz p׶ eQ"3==}-uNNziX_om P5s0iceвT:e]kFc1?* 9>=wsg5./3cw_is504$=Oo~tV& <H#cA5tU:%˷R.#KqTl+hw;3^x+kyMYMKJKC,@}X`Zix+]xgS2ȡOsGP{Ei- W.D)^~;xH!cwZ:O/ͮ6hby'䚍<ő<~_ AXH{qO>̷LPfpq?<['<>ڃ l vW7(QR @$_ +cywx[]x`RzzmJ./utȜg#8=+rL@!jO;r{ލvg?}mgu+E\fiL I`1zn珯j[νc>}#x;zW3a?cYEB 4-%̷>KbRܕQ㪵?4SM.!"K6Ik-2k+iA 6ʤ2?Q^iYxv" ;8R2vϰ`.ijYO~:25ɲrKykx/|?JyŚĂR+1ڿ)ʐ9{{YUȐq++ +]:hGK~.ym ǤoI*ܧ'Y>2}yO x*}N[k%ܶB,I?q_wZV?ܟR?f2/NwZ+6!@o|K׼ ium%Gs c1Izzho-+ƟJvg>#;բV"h^Xs}cToʹ6+jm caUG{O z_\#$`};°?i=Pu\5T_sT᡼i<o.ho-+''mQՖf/%<*6rO95?ͭևk_kv4k2"HO#s A wi +\O2B"Y$,#Q.za@G;a{kφZm]ܳ*]\0Rw1C|D> <. +TEJk;X'C'*#Z_x WdzG3?%>0Ux Wd?,' 4 K!Xݑ C4a(٣F: +g] _F?Bv}5w~ ֯W&9]hxڇӵ ͏͊XI&H_~cW>h٭yP2W?ʷ[-tC- ϩi,y^gR}*ͬ֒S?ʍsCus9,;_'1֛ƓcǛ,7VA6b6\֬&.X!nfOjE)'$(cni& 7W*#"ϥ.=Ǭk |ޝ:qZ-  'c8aOI5"dA?6ͽ1'ֲ%fQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +('-$LJѷG{F|7w=:jMlQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(:}Q]'GZ9v;D3x@ ;WCV ‚znl3 [MMipG3hӺoibC?𾥨Oz=4՘{8Pǧ#j?G׿3R@P2I< +2㧌!}:(!AqT 9U־3]tO.S !3zbhO|KY GlV)נ(Q^o῅|eۍCXk p6FzB|zr?'P#*Ew.W\ǧZI>Q+I|<{'n?t~v.!th Q漅&7j9[$Q!wc2MIUm=:3%M a2# 4ֽɮxPe{ˇsҳR_?^ۏ9G)//(I|<{'n?g wH5Mm \یrOa@(QZ ﵩѴ5`3r{ˠaE` $ހ;_hvL#`1*ߋtlmcf u$q~5iVCNXnp6N--o+σuk_p-.f{3EW|%xw^dIPE qbPkִ.oi_oc_Nx־A+{xY`ƃ%}u>ۥG֯>X#S;(4TW7Zss*C(dG8TP2I=~;# 78g?sϧymG<#SS+w#&-_KSE@_K0W֓i l[N?$*0W`&$g]+xi+x.Gk呡XO€8;IaXT}3H]D ~]DH?_3P|Rjz3!bQ%$g+᡼<__.|=K=fMrIH"2`0l3WŠW?᡼<__.'T uSo*Q  MdG7-n\W|P76zejzѩ;G r9/oU6uHG$ɵ Ceϑ S3ۯ]\7^Uծ-ގ(ԵhY-FR|jAKw oa=K(c-o1 D +Jb7`}Zo@\$~W0[9t\&;,4L7QɨEPfQEQEQEQEQEQEQEㅸuifIO)R#2z(Ϯ{b>)3dvVdutb }HpS_2|NFҮ<ќ6GGh:|l?^ +$zcҹxĞud8IЇ|gYGmخNJ92x=H8U]2 _״sjv2i,#MďzhI%O׿dv`Wğ j\ %̈C>+ŌXG"(aEN}Me;}cYmjDg@eS@=g@>Y4m7[k]R)4aជW?~uM'y(#bXɌp@8<GxoY5Zh|ד*epԓMT4*kB[k[lJe=z}+?ٮ{Ck.x.Q1B5|KQ_1l"\vP3h(A$;W*16k$ F^з~rw~|:mӤ ԣ_Ҧ,pRPEDuoV۞@#_ū/ٷ6amYS& <%7w?1O<3=į,1wؖf]'XӦKi;V#U:ϏZ>+*>?:I @bdWkhQy$(`zvPO\5{i__Q6l |Kfʜ\V;)co.a37WJX]6.6bms^1~!nNS$?)q ~f\6N]6\a8AI֭lVR'+~뱞@Lm۰ݸ&&H?ńOB dxLCuT3;\/PGmliu3\| \ ۢQq ] .0x)$(Q6V-`L`L9s.Ϙ.5Í<=ਯ/Cquڮ(ʃ^Nzk~{z{8\])BԶ5K6ᅲ+]g9X;h&o"]KmVK\y /~הW; bk0#9\fllvЂV2袊fE;F3-ċH:1> 6 #2Y?ۓ->~ m==/W `p$w䟽"q}Ez7)"_oW3C^0tgYPK'蠟€>Jn<~WhmIVgܸPNԹk{->ka PTg@gӷl`H^A64/FN=@-iޕ  9WQV5{Uk^\,b5S@dγkO-׈AcٮgF( (X):C.ṥFfe #DpXq_Ewխ{׎"(a_/#o{+wR߉e2I^|Z\AM,R/TeGЊ/ٯEs@gZ.?cPyzlj>3xz}gPXU|?:r_W/xWQH?j=x;ᑙXt*pEX{G[9UiX_7xfK䲾5T@R=GzO^)__H nS!$iWf#"[ֲojLL y-X_=rȨ=%g%X~X$ei7tk"j5`-mdݖ̀8]uy~&mUѹD`?B}k]C[I*[}J_q0|P-yb{_N]oS&qeݜ.h?uIӢj+r +U=?] ea∥]FY |~լf5܊VB)LdnI!pY% >a7jѴ ؖ@_ֻ[xKᮗ=P[[@P<{+ES -B2'''(%F3gGti5[O鶖) Νd x>7<%O[6*@cy11 Wt)=[<&81^޴2aeݪ]\INz*q,Hł=xLo,Y,^b'Ҳ-mDL @0yIՃi+bݽb1z`(((((((((((((((((((((((((((((((((((((((((((((((((G*C3\+Ivgq=T+QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEt^?'񾓤?@T)#4WM0w`ڿvt_CK,zLoY:Io`M| 3Oּ[izAiw8s:o$֑>mŪ_9ךG#*Kt`è#᛼7AW7[X_iVw24Rƒ*2:55'4aqu诌0V?;լM?܀Whl>,jֺN{endh w__5_ o^1x~mX= 7^ +GF ,ēRzsuGZw3 +VheI#`pj^-S୬%I<*,@k?мU=t[O/,"c7CWtkwvz^>oq q??\5xQ. 4roXxOχj>0!&xT.'t>=x'~0\URԼE1$Z_F +}@bpk2QE;k޷aסx%a\>kϖ= QOe5ZZq'܉ +.'{gr}z/Ϥ%=9?+k,$-.~欩/EWY7<[ &PTՀ{s^ )пc>ZݎbRI>hmkƺ Z V}ӈ0<^m_o_P+Kd 4ƃ',k@=+|6o}%RqSZ>!C5=Jpp$܇)^kUDž?€<#5xy4k-:xVF?/zz٣A"'wGǰ|&Ʊ;~(V;1r+?gMx ajZfa>HltFDbX#ҹ7\-?DIIfm}_8~ҟ0}_8~ҟ0Kg<%k3kWyH3[z? +W$?€>/u]*9D] r~+6?s\>!7GU wq~Q up)-PQ]W }FP; \ +( +( +( +( +( +( +( +( +( +( +( +( +( +( ++>`Q%->vrnEq(HT*vzeW:fir$zfXeYNA٦ 'E(ԻP2I>E>=KHÿx) `5Ȳ#u #lxXOxWգϕuu$d`˟|bՂj*4}Ÿ@ϸt٤ҬbY`GqrT^7OkwXR^ɈUpx=r_mGmiY/X猡֡tV\9E +f}qmowsSGm,asP+'5Q,D=9Ðv쿟{y7:|q6 [V zolEy[(3='GXs%-ʀ>?o Ȍ{7p_)jW& ;MMMN$1SJ<%/O + *4,;W^:Vv6q]Kj !GAoA^5,:Oy?ŷkcߎKSPK$0G}N7(W~ /.|Qy/d"#o?SWU-sVahl5KXKp3z?*oZ.Sq$2*Hw2OgK\lG%$U?ƁC8?ZQ k5_<YO5_ hğ0j'=Zu#R,&hnE"R?JE>/4D[H]ń>G;3Qk]>qZ?>5w,5@$A WOE +iMEcLmGl{P#ݼ9<JKb}]b11O8K?巹ՂJan GN0~~8f|ƜY ZwaVe|==IV9U)8f;{}=mn-g"Dh9sӭUc ?{cxa<X\\ w]&c^)>=o"w,:$ rkY6zfF뎌2Ak;V{K]:وyTU9,r&I#ݽ`v‚ӛ[W_ꠑ3]/&4 5±Hk7]M@,cTpL̻^ijjcˏ]C' I5QE>^?? +BF5PolcJjv݋31'ր;_W/xWQH?j=y>> tA˗bT#VIoא뷿k)#aIF-Q@¦kt"} 󚆊66/m'6gkܞ=*Y18E[R;*x+Smt:cY88O|5^}-a<$ Um,iI%}Ik-mk/Hw]DRGh(wh֕I=v͔* nW%>N)",{? 2my0#x @+EUB.G$vϿ5,RH!fPH(+'~)${m]ߎ.῱Ֆ1,"-1ӿ|xn{K.+I3FN:Ӟj8Ş5DCVsH} +ps $ oҤaԮofۀQn2}y)K|(Bd}n[PsZ fL|šku{axgo1$t9@˓m-:;S0S.-@}Z(:&34\d sJRrGׇy͍ͮ'1T^MO+; #nzyXo{1pJSS;&N bV,켁 =^S" hcqU]ZcM$կewo|9povj|vԏN'mT9Vs3` }A/3|y+Ib'5CH6#$W =sO񖿥xvm NԥfUgb,9qS2=MQl025dsӃּ;6ּm}Vʮ|x"z(dkrhAEP3ĝkwi6gFS-?kopVv4*r@tu?G)K$$ʇr1O#7_kk"3FeJ s[4Qk7^}YaP -պNMb3+ xZkZekԳ]F\JI^;$'+\j:Ę.}JdҾ|'>>#٣z5ո?5|"lA]BO膼>gkdo.5"):H۾^V0 =p_HZU{`p&LS&kKmhđȇ ASk^nESdf2(QEQEQEQEQEQEQEQEH T;T#Îq-v:ZwJrq&ttUA=#Fo25ڥ͂q{ApzՄ%#1;3\EK,@v TifQESG55Ο0?-pĩ+ZkԋK݉z rQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@{7PռC*| 7_wZ:m?\q>lp0vU5ic n d/Ԝƴk?h?$Ou9 lS4U/{Y1?(K~Ξ g)_2XO<?!^_#ƺ54衙䅡xRAG ^ #Oi_U8߈>ռ5meoFxŻy+Po7׊kӼY[wo4+3O ~2uQ^c@Mkm56"(嘜?P׬|׍[W=ֺJ GfAa>4kWanyvX[TT7wPYOys #idsUFI<O:?x +V?5W^:-smI-#>Tӱ&04۽To0[Hcb? +QE 6>ؐ(s+謪RU7;0xF4^'գo6&$dg8ұh1QVG=jQԞ(0m\ +"}r_(|uQX?b˺Wq{}['?. C _sAu=jїY:|դ񾣵`Ӑnq]֓6Xǵ\M!gjߴ,-Ԝt0As_][ܺFgj:o@.DAu/.0M;J2@ +Wg"\ L@OMqMu3Mq4H^F,Oh\GobI FXWp~hW~JGW$R2:^@QE #hw?fxށi7t!ĎXkLdųWc6'd!d{$wv~/4Ml-n0&p2+5[m$8(CGCG/zk?_נf +5Ekq*lGbW~ўܺf~8XP'-ׁJ+uZ!x=Vb|d+QEQEQEQEQEQEQEQEQEQEQEQEQEQEjQ1N\6y>cn:W?FIlqkSQ-Eۼ#ԾZ`4wosI?PCzXAngb؃ ҲnueҦIfh +0Vj/FkGk63ч$OV-eP{cۍh~zˉmU$qV<;]}16|3y1Nޅ_[\RpEрynjk*IPʤުkKwun}l%zzO̹E(((((((֝-熵;?-eVrY = +u|2RԬ2Q!$pwK<zS伺[APP}?,XZAyep^qR`=W_^=*~?-gP8ݘw ^g_LZe>5EU7w|rH_͉G<xm̢՘.|t]C^)[{:92 .Ex_#IUnrC{NZ]e(%6E[~Z):}O{ی*~xXdS3߁Ku𶍢 * X +m]?W%}&C#iwqny#3+r? +uhTyy6elVԵ?_uO ޽QP# rWwS\5חs<YM]?Ck#lAPO ³(QEQEQEQEQEQEQEQEZP!NN08 )>GCְ֚˼vp2Pt6\55l`-O\-)hѭ4k0o gӵjΗf;o-dŴtobΚD̐d+N q^?l{ UbxRΈ/v̕WWGlX>jZsܼ i%¸9QקJ[倶:,}jVfmCdB<@)kԧ(jnEQ0XIT%1,3`RqzTbE,Baʒz{js|$h( 'i_7rܥ 2>r縮Q6ڤ#DnH#UҡҨ~~KPF,!Zf +.2Փftఌl0NqVo40ٿ9ce~5TX(fFHdkOIաQ-()?t'gQE:G+\wՙqmlɽK;Z21ޗN0pȻIvϰYKN~ι\Iϥ3'{$aG#Fw=FIA>z~+O g9p:bXMYI ^1袊 +( +( +( +(74BnUNޟިM ɹQ:ZZ[M;&\8=*I&XK}Tҗ{'?4ORF6ʌ\">y~Kr53Vbk%,')v%U;RJOFT'kB{{8J o)w Or}ꕳ w HP #<U&eZ7Im}`aor #NZKun5H=7_cWV0 +8yj$ŬjuUar2s5G:rp%P{ag:vPѠTt !uʕH ֭V #Cܴ=GlōbdrG>VDrMj\7R.!NՆOhԿl@1O3{tMmaeeQ) e6->޵֮ ->.u{kH(15Vmnt*7$x>/۱&2ݔ].F@&gzidӣlH;em9&\ٻ'#w1vej*:p}@Z? >33ZRxV_-Z 5`\^M =zu],$$g ۇ=jEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPV*JzE]$2uJo*v_,dZRiR۟ZNvB-n'zs~cm4DoBHeh%YGLaiwpo[JVAwg.ۻIk̃aa0~^zfc/jcO<)2!!85,2eb3R+CvخF}$px}V/ui s4 ةEP ((((((((((((((((((((((((((((((((((vaٿ+TMtui錑'fMm%(R&m˻̞V=>^{+]jvKxŹ6osu9Sےݣ;Cҧ`oO'oI8gެjziJńdTOMs z~Ҭg"i-WQ˘\\KN2vzޕUQE +Ҿ|A7bP`d Y?簯5>}]xZj%Z\fXG++*(QE (((+/ElmռS( dq|OE}9s)VNTup(G?+_?W¿o5Ï +W-Ə[|aE}<o_ +w7[mCUm%,e7.@\g$܏((g|6uu}VŦ&_X Ju%}c&d<=1r?|6E-["+D>ƴPejx݆O1W$|t|y}O ~MoICqtPֿ a:{ѣNC^*mSM5$F.[f"U'Q IڽƗ,Cj wWiʯc#%X&yH ##u*è#h((((z MkI?x8k웭K.tYlv? +^Nqo"r+ ~𮡦FiwʠJC7r8==#~+| &qiIA2z8Z>'Ckˋ Udm"ƻ w` t_zl::zϷ8'X|JSY}xKC{Yra .d#c88$AEKicG'hB2QT-ǥx?XX۟_, +*=JHEr|H&1XƱ:Fe9?zß:$: k__Ʋwb#H\76:&o Яt[ Z J2,(>9+N{Ǩ=/|3aY:S¥CAȩfxZn#rpŸooGg2я`}y{\QYE|}s־ &oXxj+F,ۘB fۜgǹ +1xTNZ5n@}^/ ZXY,k 2eO\mA]~zo/[`( s^뚮$iZ͓#[PEtl4}/.e%R(9T}@#v>Y${P0(*Y6 GB(q__oǍW± +CwmJƷ wKmHeQyX6E̥Yr؃{gmin!2&P<34,F,ǷS]?Th7*Is -Q =pN+*;~s\v9AOJjEi7D`QqZ74;=pkUkww1) +ʣ +vMMT-nl'f@ N+|Gզ/Pa r\6lo$H1g xG g;DXt` =h{h͝h^W2TEh[#3+4&(*@ndzՏ:xۿ6՛ pb+GNdđnVFiX n&D_#(b9MF%xX:!!KI8E׳/"ѽ±#;R-Os4 +xSnIO6 GQWa|> ;7!)BH[%o 2݉P[ cv6> h34p#JKms XNkNkcLJ`H~ 6z6r5|߻?R8_isb+l'۟^Eu~crP20tCT6^楪`{ +fd:W_fմ)Y)zuY>־kAcfsc50_e xQ.m8a(ai|cZ͟/-݌Zs}[M՞"<*}WZ|ךy<`k[DuFW1̏l6Gqe:U@zs#z cu)OQ~| _/]GUK]-|?j-4f1'W1qR;u6->c#w,nqWe#v jQyH:gWl]fVjBE3(-q`_ ags2ikjm  .,aHt_.h#xdg9Vum5CzxA,:95Q5M' kb. +/.xZH{dj|[w?7<{_:yw& z;v];RK˭_ 䛇e2;T~1J7!9fy8'#wu(c PWA+FoxI9? n6ϱyֻ?ƣHu"Av` 8j*ӵ6DgW>N ޥ0N1Gu韛+4iLUN9_Y%@F 0HV_Y;mY֤.Ï$ jxhۊ0[᷍$mqd?1Q\&Ҩi[Tkh٨/K`LMy0q ?m>fd s{h%ӚWt85x+wv]ZKE2 {? +OoQ'68daqGye.ʐN1}M33q__o]WGԴ;igpP8t*OCۃN?+}5VO6yg+8ɠd4QEQEQEQEQEQEQEQEQEQEQEMm*CpH3ax{Du,ye<:v5KғW4N]ˑ[&9ArIp +1ǵImxmgzb.j5ۋV(dQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEjClѦZ3]>m1]5mnd^5.rG _zk_i0eoJF[5G沠^c>/=>+ KkhAs+{mX1cӚ5ytI5dյ]7NR92cR)e k˙-=SdIp 's3hCY4NcZ&x8R8<}85~7ׂ|Oq\ʳHQ$gcZsVYGM?Gϙw:ǐ>od2 iI5-a3FX/,0rT{ :QEzJW{Œu>(Q _M'߇wWSXx w4G\+~$?U~mvVqtQ_E;6GLPM"2nT`)h=xP2dF7/ЌƲ[ky.cfI*$֍u-6]B d8!lg!pvq^o=/o:[/"Uq"1޷<+~|+<'uz_=% +BF +rƼ]Nc ܰ㓵\| +Ϣ5-5n'|J'f &#Kduhd=댨>dizfGOѮ>ѧ!nA?0M{ů QGDE,r Y]C.mk3N!E^|!kw M"ǡ4 i{hA5"\Wo?oj:QRn%?(<@_Q2K7y Q^Kྟ ky*?\s|Fx 0Cx?kᅿZ3BnRq;׆[wsm$84Q18}M">xO@#񞧙i{oo 'sϠ| \mqyeI$2zG[^ҭiUqowu2kZoý1 N\Z8AgTWG=)/=L"trvxQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEhi,?66ݷsjۏPi,ZZf>0g:Jӥ'5.7^Q\Ok厥bĊC9\_wn-OaZg (#݉?\K5Ʀ5(q+apsrcm%k6yUOݲ8ǷZ쥃TpFUs]6U_%g( gi!M#1B.zь~ʙI&ARV捣V7RWeFӀ1=Mdy,n?3'hQEQEQEQE/cյy.Y_;Y['s^w@F~zX&@{,Ҫ?QG? +M{\&wjR}T`0@Waw3[jyk+H ̐7 sLw)ۍ O!]M@Hs/#hC2@7>Oq]$w?ѩ7^|0~x;lO\g';wom7oΑK @os^?xúW;[J =lP,FpC3@}? Vu{+DuIM6c$22@E`xŏB>8$uJߍ?MSÓxgC[縑 |Ċo%8yhܾ"v׼=>KR# +ʇ"'z QEQEQEk#?⮱mOK[9.U((h4Nu^VՔ{`ac&^/:Ɵ- ~#dr;dt`xw·$k{wxKL6\r\'(A=kk|iwזV sei7('x ;Jg^|Y. +^H\o8zOxV<%M+gbGU<zYkz6dp fBvNp 4Oݬ=ci(aPuIwg_ YѴ"upe%k߽yF.!cNGOZoH,뜽x&Km: ڭ=~ZdI.] i+dpJ=EPԮKo8nm=~gfÞ2k9٧k0yʃQ9$2<_?q âǮM9exf1c3GljD} Ӝnjq&=?U/fqI03^w]o|aO,4 Iwy8os~%-շ?) G4Wcch\\$q,ʔY#kRSÈѵ2a)ke˻|t=9Y$WWgس3'&;3'Yt k eu鱈Oq 郸zUᲕfO0(r>ޕkHqNIGn)έ7nn"wc75ĒY*ّs9]ZK|w0G21R+[{$ʎհzgޔ64KM:|}YOx6Lؼ,`u/佷ix e|eY,88+[|Gmq]&o2uL0+yG/#1rM^4l7^׺e촒$s``cJ~/7f7mY=y{O^PSM0{k"[ZD_&(!k ǚ@t:8^0 !5PH }ͩNsW;1095oks?4;u[{gxP'qJ88 ^u.vi܎xb/^=Kd`n{{1ՄhT2+r'֓\lO ˗/009ѕOym> x{sM`CpNyگzXQMЬʑ`z~l"}o+O'z{+Oj7 *Ay{$ 9C~Mt:o[X ? +0vj7}9?vzdkǦX|QLJٖFH's|5[? #֞U寖v\F@H?[+ŭY%.u;t^>RqU閗}a;W:ykn0ijr1Ҽ΂BThĴzvqҏi>e'Ͻyu >k7U7+Pp$C׷OJ BOh>=>V^hHb=FnGtkhn?&che.pMPս<jiwv #n>= w{;jz>'mV7Mȣ;3\?./o7k$ k5B N]U႑1C\ye&z T~=~ZQ:%>,j6p9V| |!74 +R{&[MB|WHUFr:gC\gksCtDq +Gl_Z57mTm 4MqJ/s>G{&&귗-%}У^FI#kuwXjJWV}qcua|h|gxe:TQdIvLnO'OҗShۑ/iZ`v*D+ʟC< p|EҌup#a[zĝZzk[ArP̍ȌR8>;ʂ8 ]["ennݿJ,%>d"ͥSL2n==2+$SqK2 lw467R"% @{N𮋣F4ƷBr42WF S`Mm$qL[{Tz{akw>Cö:יyXz +5}:]t]%,bR12.n+Դ λmes`n #}:B3TS':kԮԮn)d. O+n~I[|n9_,tOmh x#tUl ?Q[TQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(:ɼi-s_es񑎛}8jεZ5יr#O8n2;Lu=wmjռCsYYʵWy.zE]EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP^hk3 IrawƼ%GG`񝣹UViWGR0#alJzO:4e:ZV.}ay5HRy!?)?q~0$1G׿MQŨ[q)Z,մ[Oa=G#TBTS_ 8&͝#`"S0xQ"ڪ|?1^KŚ'|K]뷿dk?)y2 f^Kh_jkxIrJ>tO>oO.-˴DA=k-<"ז]Ηy"-`i<Agt5U>+x. mf)4hw4.@#NAsE߇^<<=5"M>rKFqkMjڔ.fvb񞹯oW7>%n]FubTwܶ#jcۚ19p6ʋ?p[I$t~_խ#3}ܑ-{/gPol2MTK *',7f2gğ#lvͭ%}l=BڹEkKG҅xmzNJ߈^>Ω*Y|C|5?_}\oCz7t<SP8;^! CFmKpI?"Pi K>0[Y<1Dh#g |IXHt2iTy ڵ!KM~+{>ծd`IGۍ܌#=+.ku%t{?q3tP3g~9B35 ¼#<#=S^ʫ}Y1ʩ𚻯~О ]z44KY |+d#:q{<2]wB8PI㏌? Mkm)dib3%?\E 쏱C.3_W1Tg}k}#VՒhMqJz߈_S;87}:f_W/xW}[ccY- +\)J%p>lrx1[ڵ`v3 A'=#+ms/޴̶7h8>Oa^CZ7 gٳ;PMտ!ҾgZ.?cW|gPu?O5皉ydQ\pyx׾'x> S:\VL?xAmy(,-kGqSLקlY񷃴N(}BW'-o_S_?hZׇ-^ȁqi(3>d}~'1֍ ^'DD.6QtA=[ş!ҼsKGi/R2Ჹ '#|a!oWx’Y.[0Co$q8xmu VEb}4q.|o?ZaW/iq^SUWU԰cW~y?;QÑ ]~Rt93=h%%{B%}Ck:wտf1mt#ԫN[ڵ`v3 A'??s^]P>9C$~[B}Fz;[_ZˋiVhєPПJ4mo$JXvvZ? k-4-7R򍶞e%6=>%CmqĎj2xSÞmd1BbY$c9<??xsBO,6~柳f7㟹_'+QuocF@;_oy^g3Ҽ޽{^uO&+Y>^<4QE (((((((((((((((_Imp `FN~q E,b_k+'ϠVw mE,1ԵZg?$&vFǞOoLԺ2ɬ25ns\JEv#=j.9Zw_'Q9R)h}I]Rg«( oq<U$[9;}+r}J4!mr:yɭfd}6]y=8Ї)Y[̑9U$IGn[lK`ɸck=ZCXMBP*JӞy5w\6*^3h%{ϛ:Im&SspʊʜpqG\q+]I'1]흼@"  XŴ3_xޛNn1ބ"1>jmqXt4*6m z^ɣ -V @Ͻaf3@OJf-$>y >JϏNNY,gtaY3]Mu吓]t=2q=v'&m8I + {.px"XNOι5[km0@I@XHtoZXAc%9z(QEQEQEQEQEڧH-"K[Lx#؊5~6YmdH"H{g(((((((((# t8aEmz\g- +#ZA$jOi|?ԋN>(e[H;άp1'ݐGo"n`yu|B$yrO'L5Y$PπҺ) KjiM6GN +jb->#^Y.- Kg~ar)Wkxb ]2||GjܗZ&z@VSy|;I(~j :3d?vNvgךdfiX]HvN;z +̮M:hm=1ָ7FʰEqES (((+SOlVo66#prX}.8A#g-wj崗j#9OW%J REO)knvv#."Ҩu1qkvv5XP`׌15ķLj**9JxZzmEmm9P?CX֠d`s=>v3YIYfg9f,zrsV-d `C=*r#'tl(pU#ELa +69l?ݐNwӊюDKwsҳiz' =V-ex%Vr|P3 vUΜ(F#>}(,2ޖ'tj#!OS5F3,z4Ej,C֢MSFP8m:Vs+̌Ì-,hHd/eT)VaHH3X{;vۍzP'<ض=2jjǧhlzcޭj7d,vh z^K}C~Z2?ĵ4ǝ<{UQI50(ڑ2Midu)5[$6 +:#wr>yj ;r1\p;t=Oj}ѿ{K nc)l[Ȑs i(9*\ \ Ec2(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPvEH`}FwHN2HoaT*v,RVɌgr˃&6'?b$;!X:ҲۋQe]3P=>bflc`@UI4:0U8\ԦtNЊ@ lpmtzrY"j@m||,f.gO=GJҹ5;}{}N= /ɶ:7JNwsqŜе[2>>OMX-!OF,]瓃9S{ ++%#Ե3qʑ_:ȠddgVDP-#_(G\z#[Aw`P&NIo<>bvVGҥ7qy*lw7SKgϏ,s{bXb(v9۷~]J&p7rsҙΜRDo 2(||知t1麋 1/O[m=m& bF:g֣w7˜g @mr坽mܨYf+85i,vCd[ۉrp8VĆI""Fsߝ1]h+6rx֩$X[g'e(8Ö-p9#SO LBqRjgj#QJҒ5ĬF5NiC^I 0D!v~KIL4oQIbhYTCn1SܴTpAP?U3Q=XҩdypƊonj3u87=#'(F9*[lIie}Ep4qBdkA8MO$lz⣊էekeJ;7.8y& T?ӽS :iu%1HҵV;{Ըwo,$r@JȾH۫E$ >G.S8l.%(0]2u A4[M+lAq˞xϴX,CzNcY&Fqp\S֤>+cU[K,o:s֨jۇلrT29V<:&KBӭ*v&q14E丒 R6 ]Xb٣T0@^+HD `v<6s3bioO2[L<8McqYI$ʹ<tvZ1[b A#F .ee.>vyprO_qӃV/̉|ZRXNe0 j鯌V+m9P;F1jƕs70N0Yw ;ݻ(դhwyFvgҴ^yX8=pGJmoC4PyɷyW~:t`RLTiŨ:0-w$cj4K-n<-x'ּKk5M.|9z=*4܍xE93ƒ9I50ۅS}oC#A6onE].ITqIH7QC?rh 8=OQ:MΖ"Fgnzz,SY3v88[_jV7%fq4R_ Z^>n܇(GSNq#G=lrQ@(((((((((((((( o!ڎ +X0:4Aޝ1ZUњ E7c(:IhNϮo rC +b[FSohRqeeyP\][ blnW\r@޵}Iji2[,AX3+Mc*}'TʷGAa]u!a& +A@07'֜2\UW;ڸ| fV(ge|P9}guNM|Зe9Lp>I+eǵDhTzrjtsrI5'd$/vCnVv/ߚXp8,HX0] kNֽ.F q2_*X9i]C\zvZ@I*:UW)j#P[5kAAӬKt!NsҪX5 &~3sVz6wTM3oyD˹FMs((|c^{t+?K8$(L+=Bp1ypȇ +I9g_Z Pyb隃hd]-* 5MyƳif2#Ty|L}kC$}8* NMs*uA>ʺ%yYbρbкKRjSmWFApISu gXa%3mTD .ȃPc^UH4r+n>XӿB99_3²]JyCʁRݮhXdldːE2 7bW+3Z~HG7A .}yRm\&+sNukFtVJ1c7\Լ2pMyf&I R?/1ԥqsײ٘\8ujx>$KbhT! 4t &%8?#Jw#'ҙV.泓dqxkFQEQEQEQEQEQEQE(8u-sv:TvY8ZQg +[+)\:X2db@sZNqkR@?kE7hOLӅ\_r&1 vZJnMnWeb6VcrF #$ڀWyۜr}+Hc{) K[n&XX" uHڕf$THIc5<ZJ.QUX|2qS,2J.NqM1Je^XdHvP}L%D_ =Jt?: R2pPmg<JuS$s:wo{4xv85P۾`kG7Rå ͜g>\y~u[l[1̹@s})܇JWכL(IS2@5͍{,@0*.?Es3E׭܇ s;OM:Kv#r=x4 JM:+Fhm?e>~;_nLɫQ@((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((]c۬C3:6P $֪iZz[QzUIoAx'dߐVLH\ǹvۈH!En~ܓP:bWaq/"Ǹ6xuqgwqk?Uv)בվK亜8P*+i4kvve?Żq|# ͢š$rn9`OmǠz119+OzĎ)%$G9$(hZ\±}X+9M:'}RKٌQ ~csn ,^օ6zɤ k9- >^'#ҀQhnv`Z ĩ$nwaKVv +(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@9Y+aЃmJg+>Y`77dsi^gdfF7J8r4Rh5ccԧ2Ad 1#3$lpG__ImۭN1}j%X9mp8o._s{2[A&^)q(Ϸ>I !XOV\#IknB0cqV{{Vu2g-d.˸1V䲗hep׎5ժe`Tyjۑ;sL@قuntR?Gy׍)YZb<ޠ=&m7 >#OZ˚~vD6s'~E)Im ++:,1ȄG6`z}H">U"wЪt}l:SYP[!G*IJ41#lщg=0sS{#w9&6f3w8$d*agLI:uIy*$Dz}kB6 kd}wts%g%$Ӽ2BYDۭR[#~\Uy$̯Mmr})+$]@hL*B#"pk1hP +yRZZeX$c8؋5Ϙ޿5gQlZmu1`0y3ڞ2R亍At3~tagh#2c>gk[A5Ȫ9@8ȪvFkoIi -M.4y)‡zb K?Sd$F̙ 28\ {+MK#AI9xIXswtiˤ^S&v>ϧzu$Z8WYَl{er 4g 7dW`>unIin0I'{$f[i\L#jmgQ8֖} +;cyj)<▐\JaM7qV \\/]z3QvhˋDgp~u֪Kaq #>ߗ[XpL`bkHo"q:|PI%:20'P]BHB05LūQ@((3!dGZ1;ON2vF){IBmV{wl=2Ҥal8W)GqYEkvz5.^X=Wq 1cH%߼$KIY)|kc95I>RM?z:ni/ב?օŽzsר5 9!LN=S9ĸ랞Tkyԁ=Q7W/Xf۾ctǵX1 +#l93ǵVDryiȲ] +"Q1Ӹ7V.F "ydgc:[+glmx(A19n,~\iPjxVM6D̉n=_oo-˯ &09ҥosrrFw0@øq1AW?ch'UJ|w^U>|h19G=OQi~,__#kIS[Hu*k[[..8YrcG s=*̋ ,*r?Zw0m\E& ێkilqy"%ǜ2?*& pӬ@PסV5ko"E\;4(+] ,{yrx\,Q+ǹX$fصvog 2Nm~r9=1s)NUY)gcvwH۸>{=sHɟ]&Kn +͌q} u#klmm?#e.FQFp2u HD+ +B?w |PErmHVKЫXݔ8?'XK,M 6 AtQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEkWZdl>c9}:\k ז[Ln'9>Mj#q5..QAk*亝zX6d`G q6[<#n'1Gk5ͼUH߃iM~dGۦ7lzUyp] +,dH8xg`eRD́OjۓNh[uV9%wsi%1n,mc'Gkw5,U#;}koQK,<3!V2IClb,a&xd9sH =hmAE-P ]JV3FNq^M-2wc,qOVKi剥 5T$ uɭN:Mޡ Jen2= e9)722$bAEPEPEPEPEPEPEPEPEPEPEPEPEPEPQP[=Ҵ-msgHv +, G +:6+^W=XϒcmY ы7~exϥWM !AA1Qzk5,;W{5Բۉ"q|˖sVȢEBgU-Kiu)^F_zcUeO,BRt۴?޻ބl^(D6h=0E,xdeHq;V^a"\cҖanUp95nHt☮3qƒ*R[4ՖG[jԝ"Ȭ:sƲ*yopR[TQn0H)$3W>Jg{E +j b6ݰnG_` _; =2RMON[VHtnm1wW:u[[)op>i[7l}iGGӨt]Iɞ'V{ A{ 6( 9Ϸ9l5R .8y%u4덠ҋ)4&*^"Bay۴Pm$g*[ω2ɂszYnḐ!'w\Z}}F;OD8ϠO8RV|f]\l\9:Q>5dI91Fл;yByמnK8ga}D& phQHJ][Z6P,pX}oӤShM"[PRbaNamqӯhi%r3$PIڠI)i\Àz(ؖJ{;aR+3n?)׭ZJH8Oe|YM± tI-aO=*9n-iM\KOƺ5f8mˀ sןZ"=t*Gn. H>9`q3/kz--Ķp9Tbtgol)ʂ3Ӟ&K傹rqӥdj\F-cE+1`7tصcx';܂}ǵZMlKr!˙,;`V46$ rI}:Yy3+}1{yA]V\E4Tm$ +y0,x*gG1׽_6Isv;U+Ft˚.ЭgywżA'Np9늡7Χ!;{gfen#Wc3ǰV9;4Bp0zOl;uZAwLXp1UR;ۉ&KH@n ##{+J{=-bŻ`SЙx׵lquR.똻MF[FʤmϵR9-Q5& R2ha׽W}2d)1%,hBܟ~OzuԮu;PPF[Q{jS[]GRH `O9?_Jm?s2B]*dr3zqlڪgoG3O+r_[d{27 (QEQEQEQEQEQEQEQEQEQEQEQEQEQE{Kuw|^A/}kO1RpG9{_[Eyv@$c]d(Da N9 ږCKxb,7)jKLF.d +dy#>ٵׇ)ɳ˒~V}4A:jHy2ノh RHLo ڮ$ϖg2v#ҸcMKΞ`H \/c_=b9LqP\Ė_"%L:r3 +%J(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEj "1l2Hi8\:khEsny6Θ*,@Y#9^ϡc=gF  䌌[xU^e @#{>=ؑvįsSKٖ_1PCodq4 ĥemk'H Z؈v󌟺OzˉwE2*pHn9g9?皨 1$H㼵@PО\td!M3Nsa^X\X]A֩U)Q@Q@Q@Q@l ADpΣ 2: kՌEoqG=?pX0[-neI}MۥFNG=:BhBVZ3c+}?5cDdިEo>I'Ҷ5O3\,osASn̽o c>O;@8Za +葺s͕yzu؎eX1]pNxbއ!EikVix+l5Lɫ;Q@(((((((((((( `gڧbSw?J Eb JR)c=Om +Q{ؚdT̒|FƦKֲC9~iօ$vSۧAեќӗ-.ks t\#'3Z$Cgמk&h8(@;۽Y 8J9pzZ:!?zfo {ւKW?6?Kʍj$}\o,@h/~qzP&ز2 ~hd/#fVQCg,KC6rEnCgbfsb5MZ1I-'P6cޒsdٓ,xcyPUykl랧{vvHm͐1UbJbF:oqTU~?,gHd +񬹾njڹM<ņ{):-3LABPh +Y/?㎟5cg'I^V`nJuijAp7SޒM󨭬lD3*c=~饊Fw9 6$A$)dj+ m!haIUz ҩ3)=2A!i"χPe $`{%cI_ ~oa[Y2|69gD[l݄D }),6r>ؗ%NWcE@4ks7(?Puq=+h\ld!K)GL VcP1?ƣeDg+;H=2b}j,[vp:Sx`hq2:OO$piT2BwY8b1X)|]a.@7KXZ[dXpI9VWhdc@qӊ+U3BUP:=C/#)I3HTGZz*d?3S'doj(F(@C򝸪d1 7ث[&AS|괓 ǂdymdIDc n*aٳR$.,5HУ&܌p3MZ,jUV.;TJNELm\!m:tT'5wZe%iM !RWrj)).܀x&(lOkq'bjѭU' [YchX՛"·2035FdgY!gsc#iI*?o/IհIAxe秵U#RJ-5{1򧘎YK)=",%VlL"csi$>1iYjg*"'{2Mx8)Ի!(3 Hd,1$oʫ\v{ik )RjƗ*qgMʧL"PgQxO+;P7rVЗo. b~e2gգou8"%0#r˒zwֵ/1ވ- ^zc=q3DZ wLxSqEwb9s $ |Ճq }7C5J> +ZЏP1kdpY0 {@E[AaFܩX3`.-Ij,\F#2[ c!Eu-.YhǧA2&e$<Hmoa-UUF71ݜҸZa.ͨMC9VV +I2 ѵ)$%ũnZ8:61\MgoQ4AO߭h]ۮwRq%d rs柤c[-788 +:nW)jKY%Z=۰ n{p*I,H>^=CT ʏ<(қ641ݹ_.Bsϥ3Ցi4U/-.ٝF[xJ9Ub] 㱑LPɝ.029ݎxZZ3:$rp g/c)Q@uI[|€[?\jXZ}Y&3/98qi=M_ũeZSTwöe)ur=+z5LO^+6JfєP>"^hVp#Ҷg" Q"2 y1%BlO[(88eAS!*tq%y;2/t:EKa7}t_Ɨ2'sY> IIqS"Q +( +( +r;ᑙXt*piPyƧn`_ΕP5&7w^8id1rZ(m.28Ӂ@%wdYҮy\y90{z`uKcf)݀Ot{9-OҥM|Eiɜ n8l|t⥝cP[& nurJO==Cae2n##U]ng--=kRTO!XumX.X`}}yyu0$U]6p#Vܛ!>\ ^z3֚t[diVDn`0v}kR7֓K_.@lgy֞2燼itba)x:U\1Zل{rvOTK;KK39R8'[E{ݣ;'^:♍-KdzŸV뷝b-呶3~[W?ٷ=ϭKoudm\I'(2٠"YYG2l4]Pw|@{z˼ x,UqzS2irQ@((((((((((( r +ќ緥X2[ +CjtBG\b"*Uxk&Oq/vH b##P&&v\7;z֫-ۦ8b pqd ̸ʱ}jg=OzKF ^ȼE  =Tp$Ѿ܌:ei.YJlD<³"kPRȚ̓BA>jŦiv,H޿J篟c$p c,'07AI+Қ%45N[{HcGBpp{)Cŗ,~|G8E6Bov<Sz- 7#T-u5i\XL NGhȭq=;m'>tVuʹT;7!ӭnKGf~Y#ҡ Pm"G,Tҥ SH,Ts BsZRo&iʩgp@\$V&3*˴3=2d/=+Ioq{d҂d⟺I=0" ާ6E,ve$'Lg>wBu( ܁R>L.&erGBrh1FLc؀st^Q~|r1ϧt5ԖrN2J`s湫 (epGCcBKz>ʲ9H9=(&Rt3"mz4/רiȤbs9[S]7:2Ix\c, +媖yYY]ڑvYiW9.sc|o覞N6vX r.FiR6wC+^u"k)UFMh@|˜sךΥt]y. >x4<=GziJnsH,}b6Ɨ 3h%kpÒ#XqiwZ3 +=}͓N`pdsM6f~crx4N($ ?k&Fhdмdsi .7k6ݾjiV~Rm` v%ť01aTtӧ_tǜ 9Zjb6?un~ca#fdlB2 ⴓT+3^=qƭiv&;FlcaHiDIueq}{H&CIRU\aѷz֤g#E5vI9Px9$2Bp=DtQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Y!pHѸpEJ}ns4:gP I4i䕀ر +8=tVň0 5U%Au'+6(4Ȯ$yi_oNfy&RLjGex͞jC>)Ϛ*XqI[aWsmv2~\kD*{S"QqeQA!EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPRG+őHJֳX<8닉n2ۜ8TTP7&ՙhOvͲH6mM߸*Λ{T=rl| )L vo&pmPc6X۝?9 ZFp3|=ثyYݕwq&8" e'7~z5y\K뗲ʰc i)bۆw;'+ GSd21T3>I$r9VQE!EPEP]OwtK3 qwTd7n*}YOR˵ۏl5,r-b˺7Q\UU[xJ2=ie4hTmؽ:Us= W:NlؤgnݜbfVX\♮p^iY ApzGCl=fZ.Ξ w31n;U ;x,WDˏ-AϷOZͫ6R ¼1SiI6].bǯMgT&LnO|yfK>_֭I$=0lx̫ʱpB=jM8~+AgJᶭw̲>m$灏Z趰m06ϿY}ū,$-J-<ڎz9Rt땅.mcҨCi6s^nJF ҲY42$}+>GYuGO  8{b7.}N]hԌ5GZ_qKpN,HbyIw0)^XG#Q b_LbYYV'&1rڴWqNPQ|qw$g; t̝vT*=r+6YJG#UV 1.gUƌr@t:DdY֒CjdۜѲycX:BSb) c ˌnpfu)gHqǕ.9犸O + n)dimn:}i&k$&nV{nSɏ$+sNRm%[in@TE&wvs#|ڠ{s+<A"LZiY9sF۾uŜXCz;/K/|'U L 7|6kOAapлE7$o"Q`"\c`<(ⶺC rYIgFNskzUdhf.ĠQS_\B<qޒ\NFkiY0+nOK#\]&Lsws5T 6 ӌO%һ~Q?^2s+q1A'53#sZԻQ+c\3W)u?n^PcqRmR dЫMè3nh!JOCw4WvW}53.alUK2p;U`|>szGx82T(ڮӽ.m#8V/[_|d,gTハՓb,,'B dVlGaiou,I= $d{ibI&>@.=)J7ZJM/og_8JJ^0;zӯf-FI;lt$ڂGoV-._\IqI^Pqvܿk-ˤ"lom<|2$r(%1Rͪni!bV+UթlG +L$%kK˴j%aDGCj7Pcجy$L|))~+ ;Twz]p:3۩`͑ۚչ\"ܼ)A.2FSzTʚ夗mz~}G u&.6G?aiu2G\N !6r_ +1P8M.fs *=%u9e0I۞SNrʉfYth$@[r|M>Lk<А1QϒX!61Kw[$ >DxkkM?̗|7ӃL!孬!KN888XZm5w;qTi,f8a=?J׆y;m-.|FڊXniͣ !K/K0ʹ(qu D%2:թ,WTl@p*ƛrH͍eBt0LL叼9~r+B12oĒ1Uv<1Wv I ]qQE3C捤v4 랴,Q708mL77X% v&Ire gHzT$.)3G.VfD .r dTfK p9NԢۊ"-8hRORUdIdXԗN1Уivyc& +$¬%J݈-z(k#1nҩ,2 KR: +qQ8m8P`7|S4Hێݏ>츴ڌzZiosk;Hb!`ϭG5V$䟭EW]3ާfCmŸk$/4k (NZcY+2 ƭEfZt66;4~bxwLqFoWe (gŎyJUIu<`{V|Vf ?隚O %M!O8i\&rYbm*4%r8Ux%aa:lfRz8=ZНF |s4ޚAdY]ZC [<-v=g5J$* sF8]p gaޝ%Ix4;X))4p>cr=nI yeޣNkԵ Kg s+9?Z3"LlwC`I=;ZVl&~-R h ѕ: YtK˳H`9:}kfJcuWJpz{dk25,s:gR3oI9Jm^T=~:?>]o)]jnKĮX,/sßOJ>lOqvIN>dc9sMm Ay#cڌD2JSyne[,GS+HfdM8R03BcSJL&I yrПOj.:#&8_s7?mVQ坊Ar34e*n*vīoas֫A@r{e+&c`7λ; +H߻'֤ӯN28 +bBl~ukG]Z6|.7dZO?Vm=3> ݌(B((((((((((((46 i *M +d:(]q] "d#. 9 Z= 5"W'8{V'c1$:2M$$SIEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Kk: msq;չF(pPcAYP45mn袊 +( +( +( +(-^7z+]K>P1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@S"?8,6\Ln.?fHۜGGh;|V?ck>Dܺ-|ȡ_6Swȣ'aj<<7#w ߙGT-:{VokT\™yz㘤HWʥٰFIlg#GMy8U{ƛHEb2c%ߥk"74 F,hxqY'# +TiܞeI ۳=ⰤQa)U6qU+KhU`0I֚n,*ӅX9[{A*p7lON8?bjWq2~-TLNmq{m՘g`=@>wұm~YGOCw-:&iRDoӜu[K{=TRN0穬 ^n#1슠l~9ZK ɦ;<˒J*HӇGb3\s#8sp9-ۜ{TX^5dDw֝~\O VSO0}vzci&cgʴ99n/ "cn:Fč#JGl~#麮tK#Q) =zqң.59bؤz{Ujs{-5ip vEI·SiKԑߪ>gbڦ `6?U܏=kSQ.4Εˌ/VGE"R[8bzfxx2HzTvz|]3[0y}\hnXDe^߮\6wswmc(bQEQEQEQEQEQEQEQEQEQEid  GLDwd'45n N']Le8+#%6 +#M:,1SZ1FcdT-)+9SilB܂rF;r(t$#vܫ WI*8"@p*5ʫ>Zŝnʊ[75ֵ2'g8ǯJ`Y'Rܯd +pE'dl+O\֍Oi>=WgNg%7 ;[DIc~L6˖pS=5̒kn!F?.kZN:͆ۆwxBՎrOqo"&eVvX#K,۱`spk^8twǙ 7涄ouEɕ;` (fHt%'s(S㧓ΞIq[ZgS3CVyr$o8?7cvfEua{<{(/C$Q33xz s@$ڊyVE^,C2/!I>*s +Uoq@P̑1 a}]+3RX|c'Z63i.UX19oqrU|UxO76޴˂q_lu4G200})&f([G+;nyl*0+HqHI#b\ͻDMAƝR7,c`' 5yTqP xʂqƯ#095gnFWJjT1`r85 ӼQzp1֭[aoH! +zwF#8'JRmhE]X:x>jd +b;hV#j.^(, =&f(w9;qdH}nB'94.^)~soƟe$$$hJkFIgH3,$Lbf5b+/^79d vdcN|Q\^o +qVK˅DyEPsOKїȤ$Y$>Cssh|]jHt hE~q1>nb`䓜qHj^{/峖?9hģi'^fW)(\לu(P慐Fr A{V rHh澃Ty=ʷaգa9dJjIU1^IG I?)-11K,M +3'$XOoOka$Wl\Gl<4 0j6§!>ZڴζgfwD2 P8Y\c!qݰ|yNGkc!DlYPXvDqW`,1t4s*`LqVuj~Q 7oAIyC!eʤE4xI,9\= -5Kcjkg6 !ڙ{yp,qn=Rm7QVcc'#z[q5ɹfRWY>Bu%3 tnr+T䲰XՆbG>YHJHrŘ5lͧOktkbn9_:Wl?:KN! zPBIm6F#8aet!n㍬W"*qr>&J(QEQEQEgJ&1Q?³˅IA[H#Df>i-?el̝n<ұ/!`em -8ڰ#q$q>@T;j2\ݐSyf"fԯflO֝Lc) nHɞN*giYnRn`(V`1~uEu >f\7gZ;љm;߷oCzJ0\z=Sm.! lʢHʒr:fis,Τm\nN~7Mծ5;yqT# w$W쁦o709 F6N1ipilq'Z.}+B+놝fWrԍQE&>LɎNktF]Ld\z֭׾ʹJ6Pnnᷰh?-R,r7!'6*UPGFW?*Fc㑸?ZDR^n{R0hdQ@Q@Q@Q@Q@Q@ c> p԰hg:[˾w(7 I2~sqRu|.P|ZlWq[I/cO5s;=ӼKo$dHUU9!!!lb T˛0JB}ϘrIS:жq Bb yx_z԰l8&];O1cenG^aHt{*<䁓CM Kum &X0T6=:5^ $:0cbzUB8ux;)tmݏ}j8T>R{RƲ~dcUI;G# +?-;{KA4(?뎀yl_PF`_5#,w3Ǘ!%BuLg8[d[ktY +@3jzvs)\Ƨgp WzBzdWge#GjSw=:rh] +QZEu y2. 4oBUmn8׻PЀ;tlҋ. obà .4[Ao1|sZ¾77&,!9[eXdѳY#$Jai7mCVc 1م<|˦trz +$.sb\G~-R}[#o!FNM#0!Q2d2&M^A[ I?ʩ Ib6h8u9|G➆)k-u>&re}89kJ=7CE|<{W!-Ż$)ie`Z_0;slv7-g%09=zյ7Sr=M].t4I+fFB;s۞)^漓s_nqqMFeP/;z泼7//!bd9Brn:E5\4 1 + we)XW?ꔆ;L=FssUS:b>jۻ g;f1wND_IrHPpN-I#uPnzko=$mvc\ИAgN_OFU',=֣N+#) +Dj8VdU <]ۣL0LK1?= bK-F(`eqx1TZxRd֫NS>X +zs,mm,j}jd4Q=b=Ԗ `ZEhY8 ڳI}v6f㞔`qo%Ea=Jqъ4;) +zjɶ +R)#bJJʨ$ʬrČGLz}Մ*?}+sJ5A4CO2|7>޵ D=.0@{TV6q7w2DY[w/*eBMI/>óW 9sbY;dS'}FHĄ[Hjw } P Q]e(>n +eFqIZI.ɷy;-p4yNX~qڭY#o'TvIIQtLyowXs\:kḵ!*0kf;}6Фjtk*Ms?j 9fW7KH7-m$++ zʲ=2Fľ8$=)bn_Us9s5Hf2zdfBN>*" ̀ySMjkCoY zz{ԭ$&KyURG@_~R\Cr +r=).XbXf'D2ܙj%VY/>]ٰ2:!$ 8>ޕ4a&6XQ&5\,[p~]Z8͕DCrX}F&젼;XC@ccۛ #$ Mse:rG'*m S4пa#]1a}2HK,*']~{d2rI ݶv<~*3=(((((((((((((K{q8I7r8Ev[&)NVڜ{{UJ(mŠ(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPS[ ~AI"`Iڡ]pqo۞APŶm6n?J 0Eu~^j:giǹA ʏaֹk_\sLcs^zP6QE((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((Y 8Gֈ!aU?>JP[o ;y~`0ޣ֝e{]qgqjG #꺾ZɼmPc,~lvS"i' +(B(((ZhŐ)W8U f<1AivVA$1l OZe^j7>^my{֥!iN9h=9Z/ ky- y͐w|Kk% ٹ,}q}jХ["mx&j+q(6dA;c5HwJ+yY-'Bs{^'04v,7q$,1'MאMБm0~d[_Km9{ة;Ǖ"팭0I9ғSx刹=QTң4dݻn0*W0]Cegx?ȨLXiK1Q5ݥ&;9=h6hm +g]rf㳁lc$`;jɶ [Q'z3j1u{ Lu=lsVV(djU.?*_D2wvPjjPmߵinM<s^,BvwYIu-gO0F2y?#[n.8HRNQL((((((Ոv!ң3$eeWjVX`bKoX*[~wqұL=Mr?HRbmcԟZZp!MܟzbIms;QUx_ڭ;)4N{K!@h9:Ue}u%{UeFݯj)}R#Ϸ4'U!+"X ֶQrJWhB[Z@ӕdY esߎp6,R>ˆTPG!IsްmZKw}c?QLͦh䵙 ,[z1S%-4co>7` 4Gڡiu gߚcVPBcY۸ Cn^>m }Tҁ{W!y=3].K˛Yȁ2#i{y5YŀXnĞ%qmo㜅P 6'#g+4n_RpcǑء>Q{5m'(!Fl)}>~ (ܺTdZkΪID"+*86,˵U!\WwZzl˖f`.q:ԲG.9vU6s8֒eJMLh4Ȣܹwh\k)Sz~7Y'oz{ CB>/(˙=2#h"} +4̪~`y5a^EHP23`TL<5z芺l\]L{"ddc *ߜe[“!X66/"$\< ?Zv$2tR\mߎUc8hQp̡6e=sֲ]>e[fX,ѕR1sZp]g.95f)fxJʘ%|=1I2%a=6iQzUes+$ A'a׊6o"=s&}9YcHXflOCumg8U⑎у)dUDSՋIemDCn*TӥXI vvc=4wJ\wX$hK26;(ԗi7r~S=kQ.!#*]%kh˚1ȇdx?zbC I#TX,wsbh.!=^{7K(@3̹`j*Ψ|̼jp Z$P_HǐX#k60qE2Nϝر0K܀H⦆(LCa^{RiKlyaOUF$AIv:֖WIYh ,yb՛6672eqI4>m$jϕqΆ9b$PKsrRWl 1'H)-Koy>ލN\ N̅1v6«s=63Tc;\[nWzUn9mfUy'k:A%v\t4 rw=7!9K9RЂozO·o"o. EHZ"QT`.f4{}H`*C4r V=)$o)rE6ɧKMTƷ$ NKqUHq-&0z{{Th7Re!U3*2Dfό6 =3UϚظ$Mʲ 2gM]5-тYBmRI]dAmSG^E4 L-jtv:EAqtpv0F9"M:^@Mm[Α]T"shަ;ͬd^J wZ$$>K1MŽqRj0aDv&FqBJ "[UU(: cZ羖$fdR>@IqkR*{tdCyp`z"}R1A駰{vXejZ>lP$Ǿ5;9J{rh;7Hlq㓌;:T+*Olj+m9#EPCc<8Ys@Ld1 A#r61n-6nۈǷU]=΄YDTGzt!#()?Jf2I=jVuShN=km2_3f2Ap}(kR,eo(r9ZW}CSTͿ&Ҩ (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((DTڮٓ=G% gҫN;ӚÒ2tkcndW@C HOZ[ȒmHrag Ep;).DȞcr=:UhْS^~#RVᤑ1J>ͻ|3z8ϭM%ŰWUcm8-ݼ6ec;u]2G4k9`ܧna9ex?1e$mR.3c"_'vM)qk^|2yS&3~FTlrr/J;9eQ<[Aݙ.;.e^ Xk#mF.Ð ~_Z-"KonMg7pPg==>ܧA5tm}jLљ0ݮz2qM ڼǧKoo\ Sik7$8 3ۭ Bf:MAPT2" *4  r@ǩsj7Ѡv`VV0[*Hڶ-H@R}:OORUqsBUdqM\u%NVVtX`cᏘNIN;T:ı,devʲ.'92m]ˀ#-P\G: MB U[q2M1kZ;?+H!.ɑzdzq\]K6$.}*hlaKte 2Glu;\7+ZV1;-?s7o Jz6%TtVZ&=AtEJPz72:FHڣ?Ǟ֜* lVqGotxJW6-}e񓃏 Vi\ښ!D;rc?w>a6{fܸ$N?TKF gyTV +psMQ f-4%Q@~wnWI8U漘3c$* +( X(((((H6x4 &ݑ- &Yu"HC2[۷jlAc|mǦ*u2cjw: +/ĦU 6KeAQ&F[>HAT+s}VZVFn, ێy' !<~yIV>DtQ&ب4pqp |6b~zJ|,W1avH8}j̐ q/e9y2tϺ(,22ǐ3Z>\Zvpj k+E>y/`k< +sCzb^Kc b'p 7zq$Vq7$c$D#R>cS3 6 tL>VvDG1w-,O9ۚoY/ݳeդ[|F;qWHl?T߀'ӭJile4 G~?ZjV~sɌOLTR@:xeU)#`{R_5Bʰ~nd>/"֚}ҼdX6 c*:p?*KY!Xբlnc׮Gzk[{6yP4wt9DjxHJD=ߢ,Ek3Fvn!2=꽶ˌci 3Ӛo3H ՛( 2n{+;m|IWz ޘϥXk+y̨ujԑ0Jq*͍ZΒRW +9'68|}P?'V,FlzUh0ıKth_Lz"ثK0~qI#g8P$= >ݒPcX2Z@)2F{UyeqLu&h\*%Ua>^pީ^BBydiv/M<n'N 5c))-ƞ +[ ŠL`c5-Y! hJ(J灌z=i$xH\ HKGN6ݪ$xޚ3wtg7RMN!b$7PJeXH'.4|}29WtZFtH;rS5=KIoQeVCn9yQj3A=hU?+{ĺ}[NKQ-IdMh_etb2,2:~d>d:bsĎhv +rh'36 9a<5fc(4+8Y/p3m\ 8{lC+ᇷ֫vK +DD=;f5 -SN3֩m҂fm6{*,"㜎CmyH|}YwBclK(HT N:Vmedyc֕j'kYZb } ֲ6 $yawq`j%zMONewgqF)J6Z2!E_ncj}Eª۽WNhf!O(q\U6?ZS{X~d^8axǖ"`2=jfOK!㌜U(ý/;tв"Iqd==0iuk0[w w:vDS,)r >J ̗{2pcVr95{kiq +#3Nrzs -n̲?n͹\6ܢ4Yw8'Nԡn =p$d[E-Znk5Η#j,*Y''ӥ[:`zq}6FJWr䀾-rVx;SSO] {rxS>8o^:iֈ Ljsg%ܓ0:򩻱*B_i Tcc!tY#ˣ!I&*S +{6g +rFU1 d "j.vEiu+;)3\Y +S!^63 +8y^߽GQJF:)Oqk:BFD052k=glvqT|U[j7QLko c-mĥ{AhLcn3Y2xɦLfupvs˻)t őRJԣj'G-v`m<*8%vF[ + qzrn_nO8CۓMƜR8ȑpqUGmj?C+TD8%CsCh<5{f ןj$`Dh26zT4$O$䎘PC$\E3) +6iYow59*K8hgl'cOe<y="%![#$WZ j"ݞw,~[spǧҬ[jZ}Y%B uaq"02jݴ\,'&Xsŋ0$K^Ip{z^+I[Z99$ +8EK*fg^[Rry\|:\xE'yc=1I{i70}=1]JRJZ4VǶd'p;sޱu-+.,$[\ ܚҟOgK$bI{Z;)70R;ZܙмKB"u0gGˉ#âFΟ{fM33203X+3q,k' е&oұ}]ONjUY8LuZ' y̜ +kiJ@٬mzXˊۓj!䐱9}*I p;*MT1Jֺ99(7b:8`2_lSa--ė B қ]Z斾V$ff1U{xhǙf]ơg9l#,. 1MMj)%1 1 IdʮXdN -t浖(,{/f$ީO9F+CzV2ǣ9-@qr?͘=K[Oq7*B=U_hd{OYIT$G>w9'q₵Z uSp*09>ީV~%@#ϥf3{k{gQɎe9;LҝiAYlhG&I'x6yp]lF g'ǯp;V-ki <ۂLc&.ie؏WhaA'ҵ<;y<1‘FbSJɺj +b6ۑst:Z"D!<)6ir.,6ƌ̃;[ʹoq]F$kxwQxzP<88RLpӚ;doy!8y]:~} "A u0z~K$ #=V}-.2qҟC+%'s6ͦuP[ŵ]Œ|֬x {u͸*e~lц+JۃHi'h1#ڙgEj6|q>ҩ3EŅY]u.ȫhi%q혌ڀQ3@M8sm-EW #=RhxEۙF'Rzv\ڣo2\#8ڀkB{c=+(wA~?JA!EPEPKJJ(>q5 OA!#,95$.#XҡDZ +׿$h1ۺy qR];16ȧ}l'NRj1,w׾*k!X>"ڱ{mD5'}Zegil2$ڭ-1N==~T$CO4hJmZ$P.#~08zMw1<@HFrw,5 rcۥOjZ}1Rб=5,{ɺ>Jg9>[I%2zxzx6ib coG+y#)#9rMSI*XnJ *1\cs[qno.rwti2 hlNjdtPb*D񔘙6-i$j%ie=I'޴"QK&̧#u6"<&>^ =zИAd6zX*U A* aR$Hʢw=j>Ecߜumk'lp#ҍ^.H.e[]ebΫ!&bkH{i7rU" l* 7T{w>\qM0Ass|xᤉZ96Z˻bČW=? +)ZZiis)֊+V5"kP'nSZf+r`E{4E Ii7Bq,SV%n. ]ON=q}imuYnmX<[#䒤`ߚu)Ï-vzx<6]I +_^HK 6ՖI*[sxN%( &trbIo-l9sŸ Q6U1 ^_'\c*]2{_Eo=qQmGw>i݂xڄ*D0>hviW$\99(F +pc$ߥb٤% $A/*k.Mݖ.2$vyXo>7r[UO.Qfk8PPXqgP[F +ɰ3wJ{E^^:jھ _#yZktb}c?$ws3.ZY5 n^6ucJqRPl^R`?w# .5+GcZۇ9uOthgQ&A3QYi72.FCAJRvfR?ܟ|{fI%=;kuTBB@` L4{۶@G?*duB4*Jf}G?&yIV;39=;7wnږ]q|vLPOuMv2̈́>|lqU/f^t|;CU/)д2D1,[']ЖYcvY1s+l嶌.m7͜o?slսn"U~mq[[f!GU>/SH%Iм҈)8kVY!Ulw 8ci׶$nOP{ZGgy1FЗj%bT \U# d~ft,0,,Z$]҄l{۵'i6 r)mz:X$ʺ%+I tj񎬅OosX.X"\|8=XѬn |q=}(hTӳ-ɫ$ʝv:d0 u_k#s5]ƥ%ߊ;+6 iMd0r9Fa0FR}g͐N8:M # ^Tr6669yk4k9|Te @Z(6y=a]d!^VGޮvZʒ+s 3ecWgF* +e30((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((([| RAߎXW#9j2Yy1^3Yv!OۇϷx [RG8\Uf4b.R[fWYOqE>8AH碨4mSYJB1MANVdmXwEI̓)%0:X`;~U)ŵrRͨpkwf`66]0ytƚ'sn4 |qkr6ȇ(MHZe0¨1䟗R:'{M5]3@%L{ɧFie]K rvm/m.UY O9zكWhme+u!2G֚dZ4//LdW]NG<yidf]XO8r\ݬC<|ˁמLVjNM$6O#Ӛi`6D沨g!M!- ECE'?)BSڼ{qF9~(cm6sI,9 qf2i¥!+_n=QQCZN\s6( +( +i*.|Wi5ub7 ).o$Ԗ!C]?ZLJ4 qTlV \rNURTW'َ ֛jD $,ⳋt;kRRy 0]&nG8l* +6ztPvvِrO-L!mw_ڬп)`{{afYe;qZnϺk3 'w(؜q#֞JW(->VX>ۏʼnKuǙϠyDUC)6d<փ^{fvC!Y$Ckui9R#8&X{O7#SiF3j$%'k7t]H\ileˏ>(\ǻ$bfIrG9?ZuyxLd>y[k+\4K_XX}쎹\/Q<;? +kx&_'`615 z{wE9?ʕʌ=z]j koc coK-w~\N9PX>Iȿ%-n3$r38}=jЄd%4ysVI-Ƌ5&[d,yG֤ngE 0֪J YY.dvү? R~RNVFyd#=Cu5ܗ*Kvbv0p9m.Hxq*zA5rc WNZ_~ yp6!8IsC5M72ݞ54I 3)׵Gc5̉6܍1jg~m !B1- :ջ+X\#۷Rm'ꋩL NcӥSӵx5 {q2˷3n0X;skvD66"ЇQ7fMkJ5%hhn2srqҪ&S}BYQ]yn# 5bb3v7s뚉ntnIܵd[;>`7yZt1I4Clp2'M*8maoMei%yc<} vRЦ< Y r?5r;DD`6cJ8)$YFOFSUm'IHrʼDdʗeM|ǑYp&)US2vOn5֞!XVN sq+Z tX`9b<[!͚شSgYYq)+Y3iG:j\l2z秽&POm K6+&N83{r‘ck|q^ШG0Ow 4qe\ +6\ vV1TWEHhDŌH'RrzUHUi-bfjܴkl#W>`V1KS6ڏ9H5La;tO |;Ymiv؉'$$ H6+28@#G rH]FC(+.F ?c]6pbs{jͮvhYXn6sku*4$kqw$X$:ayu|rÊE +G_P/s nON^"#&9YF0f5c˒;2aNT瓃ީ 9D+Xuj[[Ն/-#CKݒLs*^1㳞\jKu*rv8a$pgT +?:-u*"R[n4{knm'y{w|@=wsje0, w?z[Eg\ +@$)m>=q[,r]qzi9ߝoq)|aN[vHZѴ$m;ꝻEhq +Wfѥ|鷩VkP\I$y!Rbr3Vn.&}v94olNmFA nzu{֭r201sGAF*Ri[֊TH|Fy>i`XVXby%흥5XP08jq2d) J͝i;쮤;oC 'ˏþi-O; f#c-Os';=ۧT>nּ╹*8z6c*QN_7Ap R>\*j޵%Jb EXSd#j@ޡL}Rq>[@gڅ$bQחk=5b fY6'wSY71ǧkaa*`Wr1ޟ0=NO +tQ̜SmkQpɸtQ߼֒Oʒ(On,yLg!3Im$0"9wl֖Ʃu.hA)&%nVeԳMsmpC \`=j[dcB:xVNTI3G jO"KY$ +C8Vt122JB~^PI{Խ^qbt`=OƱXZG1F!f$0;tY6mBsߚgw3)Č _M3fYqYp<ӻfn"oCV%0*`N=H6cq!dV=⤚EzqMS.- +pqMS8 +&xZMP\Kp: KNSB \OBhVZb^1qٹ0Wy xj;XYB6q63rJs2 +mDa%u)- +ٙ}$|-"(k;Irx{R[IGBF ׁ׊ve Gؙe 3 1ׯza +̫9)$d/7Nȋ̂DO&YE <zd{U)#nr$V 9g5 Eq +G֎- [K說U@\g<kSWY2MvUkvœJ9aa;zX)N#3EFE +d1j:7q (t)Z;t)0z| +袁(ww``0,q@lEtN=7+,JVP׭sr2@B;Am4l\wm"vOe8 qӎ5KeN=c#Fᔑ=+Ng.,*> Pն:TROmcmPf`b{;ua4'_U#I4&1Rl} h%j7ݓx8zqWYsp#%;֦(c&P1:t2H2pF:* ^W;mN1Vn.."Sb}nU.VFUnQFnOmJ_ޗ:ɸ*Z .-Y<}T+zsZݨX c;[}KnYAgRxMQ=2IFWSWҪ]k6LgSBzfүZ 62lx9ǯ1iulm=  <S6 g=koJ/uM\,BrLc &n]eQRi,R<1*uLN {mRQS̉"UjkK%ڰ,4Ƒ6xWWhyq~t7[\)t;m=lu hT;vM`kfΠ1pQ}=zTWj rƠZ)#f٧kFT v8څy#1>݋:ˮy~T[lMEtHKEnA8'~Ñi&eI{l8,ds*4Dڮ9Wm9Dy72uRV $̐:g12;;SJT]6T VGk ,k۝I~'jѸv8T [;rH95{=)IkBMw6ܰݞ=JhDB%w033To$K[8qTYNm' :c֤fy(_;+>7k('ϱn?XFU-@qmdBƻz[Ā\,Kydd0,;)oᷖ5g;Ntq8FWgB^0|̯6ge--q_)+ӵG=՝\2 +:GJHr +9u҇\wt7>ǒp{q\f#4+$ =+ ysF +Kk+-%Gᶂ:3NPMu֝qkeaFw Ocǵ[`6~\nZ\KIpL.2;yOƲv ӹiQ$<ĝY9TO-ksTJ;K+= S#')$U $a2JddbLd90a-zi73/-#@x'}*R9Քl[Y烎P.ăV-2[%|jʤfZ;yT>_¯K{j+ob{?q'IRˑCkk%܆83m[ c # zZ϶ʸmrqҝ}]@m敶W==WzdI.n$#v, [ZI$hK>RVKKDVV_3ۮk7Qo2//7V kbǎyc{dy HQ?*š{[?x"_4?{I&IsJ5'أckwiy-d9gq1N{WBu5-FO#?b{y=)4mt단~͸lRgs֒wܩAB=M&3)A=PLl\ 1]}}{sY+4&|2aք*.>_\p"jM&e4hY<4[ϥ,ӿѝ +y{`rI,~dv9${v1p1JzχKӬKJea=GR e(=15>K?CJV*TIn&--Ӵ]:z}މsgG`szd\í;G^\H?OjbYsvn7 x֒ nZ!&TqPE>D=S7Hn" @Zm6겲6$vn'[sc+^;C5剆y^VM +l&;HrVU]À;dUd4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE{HR!ɻ2eI:M㱾+=$W8$t*r_gꚺڡI$ @Ou2ۛ.Da㞞6P096Z.\jYvۼ-eXyg1]#Һ8|iI U`IϧYj;/&X F»MD80iZ=RC{%*O cb1wFw0--,.2ǖO97z=oa`mv'ܹAQ݈ պzW50pbbwS}i*d%4vSq` ++ 1DOx?|О;PIn3 ˴ cUc4C?y yݸpSOGcgsʹUُLz NH-|Jߟƞ&Ze}9Sm)n*@ᣈT ' Zm]qLǶsǓ])$_ɧEС,Iqu,Cnnɣ}pp_ `={1)PB1ǭ՟EسI"[ԟc­j\LdRc#f5uXZMJDW~}>^Cܛu;09 :pVW/c٪&D6Ȅ8#>յZ Pgޗ5E:8I52㊯ug-b1M|ieXIbv|S}ݟM̺-SrF2y ,mmRo.66;Ht<[1ͦ-pVLYEy&y?QUfaN9Z ܖRǢ0 +˳jġw$x1F å|%rNxzlsaV#5cd60<&.1֢U.$Dbz5F6tQE +(5vsryGZQ-ŽB&qdWH|Hq[6$6sܪ3)F`?Lad's*F*ήdvbk"*fss{VGakhiXI zV%ҤXE˸Tnsn4˧~SL]:sz +i}FPȥH>Xs=NCqS&o);T}SmmbIڛ~Sl'(PvӯNRB]NkSyn6\|V&2iL-u)p69VEw~M)\H< +zhDysO )#~k>bOo/΋~p3\q +5rة8g97ΛQRO'B%Kuv)9o1!JsҚn:EzSK (, o*q>GV޽2dd(o3fGN?Q{h~nZ,d T+\uc[wHEh˻c~F:NǓ3t-.7HxyI,|y*qӌ`j=->!yF|Aqښfua9(QEQEQEj{gTGyPb#[3۩P R^B t#OH*uޚK$(|\gGEH)^&)U!t3sطruwV^f\%Ny-y֠.$e0 m\vI1؁ȝ7HOv[d&+ WϷݹ)#|@c-O%8X'n18hӐw3yٱ~pɷh:}qڝW-"-6ـes׊rޣ7sE\ra=xtⴎoym>fXR}q|} +at5n<795&8;['5K`6Do= 3KHq?rFA>1fc=ԛAJ[Sh|'=I?ڪjVcNHϹ߁m<hKo:<;A8(Snґg'IYUJ%Ddc;մkK˓>H *mQfJEq9qڒW5W2_3*IuXYYUH\;}߽5bKI#Tgœn* jX銒--R . w})J[fmG Вw1~,1D9Q4"~>RewVY'-=Ϳ9Lz˦事q!921Yf̨v`zjYay5̄o;f9ێOAօKQ-3Ȍ <ݶFmoN E"I#'4xc$6+gYsrIr2M!d8<o4&Y>3J*q_9k?cp3)+aTawձ,ۆW3نo3Z-<+I3w4t38cX8_8=M'hY";mU^HnEyc%2M}H%--p1;u53% 6.y9xkm+f쳳 GҬ݉)Q魏_2;=k7P7Ӝ^,{Jb\ѷ>^ϨN^V9yҸ֋{)㻄F <2*Mn,m\a^1Vu Sre396dϐ sK \Cq +<{r}3ӥQI- +7< @ Ռ:ݕ[f/>}eyvWˏ + wXfֹ[ǹ K&6>@kU#FTԬa9!aoj[Y:re\7q5>1KuQY&q+qӞ3j5tVLak*a捭ʓ'Tj~u$~fz/,f'F9*e-\ 圸gѭ9ٿ-˼;H$.:G'lgҫ<JF=*[DѮJ]pM- 뵡-ұRFӊq 3+$.WA'ɞ?{d4Mim!y 9뎸z{Y|0pjtp{cnI-~UтZg|6 +phm +HgsGHb%[3DQNk5-E u3cfJܶ,[[MNȮ LO"]?W&(E"2T㷕FIԗS;A)c\N +Xկ}+_"\%6tw}f;95bk $ȔcpFFyX|t2KbLxc[))FIs~UU jDf 6#PC6EQ+z(vC=(@jΖ *_#{U{K)lZ&`1p;^ϕg YsֱNkZes%30?1$nnBHcʵ&M3/ -O>œngV)9E0 uPcTZViV~ycadU'H]#5F +N1;Sou CB#34^ĺjQVK.5(UD6>ߍYkxSfrwn?ckqwd +J2XIscMcƫs_4ni:c5Len-1qIeApEm;1PsԌ{P׳NH8p)Y"inW3csWe(OX`XZ5e gsI}\IiIy1[#8?6kK;/ܪ?v$$Vt]Դf^1S8@ϥ4YJVd] X +r}kOÂ&TƳd)r,_TX둬n6*C4-)'h]}Uo*>Y@<~P#=WirQE2(((((((((((((((((((((((((((((((((((((((((((k]F$,Ĩt"ϟ%~d718kEf|ƈZ$wʹ}EjjM,GddocwwpOT:ٱy-:~5>xn$::3db=}ķ T}͹W'*dEI)$K[2f7cy}kJ5%{!I06UlR$,wJ,|]Bm<I pC)zE jqS ҳ/ۨa{e+u'>5hՍ0m (pi~֍oFe {0"mL *c2kE q + +NV, p܃}R3. oU"ZC*s[EWVe?t:t~]Pg>ZNZ:rNWV(Afe bu@-sX.{Sr[ +2o^|K!u]E5XS*-ێ '$:⶙ +ąݏ\qBp$?2!!32޻8=zf)b7n2,1(y+I^ ,^5ϒQ^'̎X! 5 Fqs؟n^չ5$xtTrkTi(5QQmL̂T@#k[ƛVBq2k߱Zvu;皗1T[ +3sPG]6&h|b$%ٔ$e=Og昫`e |nk҈-ż2 7/߿Wy;4kC**ۚ9 ;qIڴ%ŔV!vErHXF^h g5jky4mb7GOo^"N2n- +wi($W^޽Œ(QzJsϗ`(vEt8e kkM.8nW;Q8ERkcI5K) +ltzEg9y|ʪW<ʒݴVLkT#za@)QEQEbN@lhȪ+8=)3/P}궞ȗ9pFqȫc*r %}+&= +uF@$})^)#Ug0ʖ\gSFk/ q L`}sJmN_cn%Ùќ>X^1޺ ɴ*:m( )f3ӭ^ .[3399ANI\^@R)gupJVu@t{p~rwq:iy +8z :%34Rҹ>[2Z'(OOgpإ_[C{Vj6rH[*ק5 +!DY'Bjhqۂ0KZ+U99ҢM<ٽįF2'=MN +23#V2OےtjGu}&o edҹGH: ]֙x)H0[ߥMqCM q'4D)]X"cATp)كC*ctneqZ5H*ʹ.3:0 ̊t(OD{(sJuƜ)k߱4[7Q!UH$p=3GXLj"ۇ݆ Jc^j2kka-b@nc{BCnFJź0YvUIyWuҦ ұ*r S\<%j)&Ha1JA#5i#,ך]G4Շ|2d# + Wp䟠+#rW%*1T {unœ[<~}٬\\['?HjyJ?`tϥQ``TMou UYN?JV-MZ] #]9@,N<iw,(1#XAj̳8f+.d1*j>;'*!TO@kX@}2׿j4,[;<(1Ð28ۍEca݌U(ƚU&2QCCޖW:y-{Ga13ژn--cZQֹdm :JL7̀p?ך.V$M>HR}u3$,s9<}hzꉄ_-R݈oc"ƌ66sj-5gnӓOX5mHN3OV6n7nLi:t=H.wn Ǩ:U=eN+la$`\UY-ZgKp*=:T:tv'f޼u'߭>%ߑ*ES#9WE,֚Iqܡ# V;['xM!>\_J%ݱJ*KdG.!U:sfFZ,WPFx+=*{p9#D2AUlV)az.DoSBMfo ƭ=k7̗OVWv +d`ֶWςF/*6nby8;R0iAn?xۮ(w}roH ,K ѻ㞟Zس}Lٻ` $!ϾkZZ2<2VǗq +n/p^-rk^Y2TsUE5Z34u''YyKw#*p1^YHiPO5mč;~>;Z5;^KuT[IW,2ÖO_Iatٸqґ㵈8nq6mJ +=4cnVR3X桻Kb)?>[pUvj vif!AYb†6z1F#,3۠F[G$K/9Y7pYmT"؛卙rl9!zrݼې$4.;D^JqίR5c_'4YYKA+쎣w_jO($۶MBgg=k*CBE&-|zwVv/A)YҨQ8IR"_j5BtnfWSf %f `%GGQ|Tc  +ß?M'MMdg|ے?u *!,8沴0[$z*mB[g9ݸ:re,-DXbb =zW?lmy[r'V۬H<9U;yL(&J+A8A*?tv6p;&9H5WNUG +c\=Z&Jɿb~?wArK|z*kk$r偱lR-aN`|3cTݖn]Ar>A@?b>uqr2DAqpXh\ઞ@}j-Jvfq3ڪ,n=r"gy1CZf $tҫ%sVץA$K ,K.h 79XtQ}?X"3'$ךeI$g%tg=kji{e֪`჈tǯ+Bs(lInR)U@~۵Ҥc m#oYo*x]WAsP]_4#?$L+LUgc[u[goeڳ+B +k\x=]rP"L9MV`Ȼ3w3q] uEH{BZS$8Mao1^+vy_5Im>Ugq@1}׵KzPm-YRa&q`JC{a0VHNw%EmzfYx< ;;$pK"mcՍE-Rv$j#g,rjޘ茎e Nm4>۩>~=).4"g;?)}:{泎CFFv K{%͐x4O;C2Y <.ňjwH!n.c95661jh Qc@x ? Pz/oMH@ 9NH"2d,C#1U5vKxeI*4ب72,Ymآy$u +$pCyx++xbWyBH<r}V]JTonqӯCW:WYk*wژTm&|U$qTIWC2>{F.nH Px +K= +",apd$l.bFvѮؕPE$*S'͜6oMXܨqQ.kqIU%],j됄*ŔHn 4zmzV[Z[H"E R0RZvS@f"rgt]FX&2qjT{&o9@U8n2i=>S" +Hw.rM=u(A:Bsuw3(,~Xq: f3m:H<)ko̊j}R9eAέ խ;OQM,E ©71]N@wMGm=K"ۖÌ0 ggѬm;Pt} %9R])#EI=9ǥUͧM;(|4;A,^C yfG|PțR~o qU6gOt42nt=AsU)leX*K pWS3jQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@-5 l(6;;V峖X7FPwi=V% +׽-dž-ۇ=F1zig-"G$*m%Nph&n=&D,F3ƩVzяH] }ͻ4.T%zt$9(!)QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQS[Mu!HSs2tJ.z5qSR7.[)-Qs'M 0t> %t l6z8 ›trW& mӕm^Y~l@;XQLͶQE(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()Z'ܽjڧpG<1baXm@;Frj+"Ѝ@ +?vGQ 9qڧdczKHgR8G `MF]8QZ>HL7* iGTۀqj.(߷Zi䎽**{7e6 ʃ兑7n'f]^,JLpI=:iyynGrk=lz1PRZ[V7 y%2>jI5xe#fybUә +ʼn5 ֒m +p^{SOSm2H0Io~Y+eԜs.8ԩulAS޷mfrJ`n3FANq{XYc(T1\4[HIf߆jG4LӼf\c2Tibgg..ggRvF6lk8*.(WkR3-˿RX+JR_)To%~}98&;Iv A^,Srv]?>cnnWPRNG>,32,Y'.GRɓzg7B|E +KS[/+b2}Μus_9: *O=C\~M2&IXoBMMWIstw'{篽Ri\)UQVcyNx)#5)e#9qe,%#0~9?Owtf%۹_*[r)Zv[ج*T\(,NzdI&L6(@QEQEQEQEV::Tm.p+6[q4ht晬ׅ^08Pps{ZЈYx<_$`qդ"{Ey;&[Ñ;^1JztVVo5$YlGe[,>\i-`ܲb >d*n+j8au捪60]#GArl[I#47P`1w*۽d0wPQ9O,M +dީ&O,*S9"Zm@'N1ޒ6ry>YX`;16..X:iWE W?ٲ4ll1H%Jv|1o;eՊL/8)i Юq{VzЉ-\=h5[k4H@q0}럭Sv?q/eEQD# aXq0H܈(wZϧ\]/v17:mmIOKȶ.q5*5I Z#ۍM:2C=pxٗ +[9'^u&E$`7ҭkmʺ^rN*V3yE͹X-imw߹B9FIFPLf\$NO:Lvzl˪@.JӃZV .<Ӭ[SNi ;Z~ckKgUq#iGCk<_9<RMv}'Cų'TKgLo\TcorG,DjǒEXE`\d+wXMJ;8Tp#6b4=[;fݽ19R➥B'_nEfI"QJFczn##hur"4/6?"0$Qdg 8ʿcH:!ڻ%E#-İvmv [}$]|܌gZ~h9gj|]n1֗ƛ۹beHfF_[]C7@RxyQJ+.ӚLld*AQM$7$\cf֎clŷ2NO86]Y1;cz;֞\Q<nUqP82rvmUuކ&_JwGLgIF{;.O3AW]!0dPm #1jo'A +~4p刬E\<1gKcs" 3Pok卤lcH ld@zjda=RX5Yy^O8)#š#.ԩ;ke_4.vd*K&ETM1{m>҇N"΋Q{H|Yd@6 #K" mnǟǜ O[VY޸ 'zy#&60>Ѷ֢tVWl$Xr23ߵgkw7Q[W9b S|J{ca .Bdҋek-nfEH>յ Y|āt!gsVkm-IaFϥ-{c&%$@T`CusfrC|鞕y{4`9ɦ^K6_y6[F[HqFRzJ[AhJі,ksNӮ[̔NK v:Bq*l!NKYSQ,&?i⁶iXڼRE `#A3MʻwϥNQа1Xt8WŽ|_%U.DK\#Hft4@ěfj422291Or-ͨ[XgE<{7WsL:E02q?yu9  A\w~T=kwg.&>fBfۆQ9iK|OV-cE30jnkȭYbtQ7=:~֔a4؄m%z).;s b$Ul`ц~LxZLuf?uͣکjg;9MZIed4aBOQm֓uV>n>֚óG֣߯y^Y[pž}#QE_3-`68p~\%ƠR?Eoo"ӏNbOY4+me)94:lvI` ڝb=>8C1UK8CplYmp3mu98K4H1n8~rsk'Spn#bS`܃V![ƞ͑bD1>Z}B[{[2woLg֭8">Km ],ypGl\FUl"VS'Ɍ;qUJ-R|l7dznmu<7R:S}ɧ%)rO}l&=1|0L($o :,H[vڊl_. c#.kˇ9aX0 12}(MѳBק\!9I<#*)^FzdTvɆYd61DQ3dvn|PȋJn]Mf"dkhzs3صxpH=گ/老a0QqU. zP]Wi:lՓ%8 vZ,3Ϡ?J=^ $9Zv¡l$rÌP&+wn*c|1gQ!cPy[&|jŶuiWacޝU-+zueɔ?ǰh$2)QZ!L,O'f=Lrit-(y\\B=sҬn14MbK_y&fBsShCFiej<#qP%~G-UN=HCgw%ðLLA- [pAJN\[_M!7I2zwӤ]ў#-ik*̄Eog'VBh5ҺCL9)[$؃ps.$\1Àyp==tĆF[,KIr;uZZh`͂X0=hݻ/RΡismSdQsҬ0y*LQ\]&DҪGgSi+9C*qi.h)>c}=gbcN3=;̙,|׎U`1{sSîBɶ ~f154Z,A8u$sݣfnYg׌ޯ]Oc6/یqlQ!8 UrW+`2N~וZ*]NmL1ңxtm']!O8g 4Ռ%Ln{5Zx~H$p`2vpOr ${ո+K9UC \ni(+Hn#.v>~Lۚ6s]FnT.ǧ'{մR(d.FiFC,l2>43^xǖG>Q?Nvĭf9`xsqȮ>IA#_s@vm[(N]<\*]@΂X@2j3pY'wS}}S omʊYĭ+&J7EuWNږB j!1T>.];(dc4\MkYefRA*r:⡦gQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEbO2Me0GE`0Ա\MqУmb2> >涟a ɋUd{xj-&^ޘ!ܓDORW?EJŹAES3 +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +<#%ܳ\L#cQc*{7NV*r(ewڵƟJ1X,7Ǯ+kD <0!4$3\ӒmԾ"Smsz֓Dr -ȕNc#i^[#-䵖pVVm- +͌ʸ=:*;#S*kۋ扮dbD(Qqd֥価M_©ݼRO$ +R00=i7 2<75ݢ%3QD4QEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@7 gU69p*_8VW<J]tnѵϓydx?)ce;gʦ{`iUfEY0-sOVDbwQcDto;7q9x#Ջm4"7sZq wٱtqޒr #9ePTZ&A3H<M>VH_c&cAbgPhG?'A{K<4Qw+POjFZ(MK 2ZM 6rO ~>14r^#dKFYrM}ܹTFμXDIey2܂sjak`{ӑ4gp!\ 0⢱Tef|m=3kmi3%sI +V(A`pڪLg9ެwVDdXˎ=?˘+w,A"޸OJsrl9,OZo1W/ӫF +F6KywD!gDwF >*,<2TTYԌn] +rJ\~Q{TZNUN *4F'u!8]eO]debvښW&^DehhVL*sZ4їD;3ү8f;pr:K$"2I6(ԌbIu=l4Rd5y3* eۯDہ=zsOKlf#~wgNxtEVjLMa#$A ܷZXc#$H>CMqwyɖBYF{zTZ'̃wnҧe218P1)6/})De +%ک͏x`^pjUxl.bTt mN;VpN TCX[ز;s qҡ#A m)'0q\#uw +03⵴Γ2U|w8ik!e_NơV RApgy2B\wXt=4#,Tv};V<t)[CggޓW4Jm$(QH5au7\M*GYKWb>a>Ҭ{o9WO|Qf:yUwe7P̧p:ѓY}>mg-,8=IF]·DysFIPDD!8cgfȼ9OۊCgĞYa$$|Ok)q;*%.vPYgF2s!"ΨK$- N* f8zch׏Qj1ndydߊǿ77%QF; +IedWCTxS᷷|-?J#;n:~uh=:[m@XJeu(Q1)6QQJ|g'5i?f+s#dĢ@A9~kUakcϜzUgʱ-+SNϱVǧCdoUw'm4p$hLz4MAgl|< .w+9f-K[YoayX1[ʓ̊d08qW뫋{8bl[L6GfG_ |Ha铊q]ՠ> "m}lqf;4H"%'[dZ+zy RQJC +*31ucb 7zSn›'}+O?չC9FBUxd!!^>ªI *87qIiԻq,K.㷭W+kwF>mȣjgqUw[. g?JѽIpJe/1iDa({x{DYn[a`C[,b-,ds'̸+,\݌&1[LK4S/2j 'xLdȭ8<\帲E*Vq4Jի$ \9i!&߷,InA@UT`Uqh}&]}jSk$rM[" d0cV NH|G=9وh!caps\y\_Cn1sO]ӊeIi@c g-%Y q|ѐR6N{+N|A;lz=r7ZӾرjBOj}# [H7 OznT3JR]F3/9ާF8s)ti[C.LI#՛ߴJnmZkbTX;g=JƵXX͸9Q.U Үoxs;!__zNKFt[wotofbb nҲOW.\=)4B5f_-Ē\['Ĩvx>Ξs#CkCI@?e9펣.>NיBZOnZ20\ךmoaX&߼w ,"`V}v+9E^8'[ +{{ag7jqoNA#;qcZֶVWM5L'9P%NndG.=rҋGtl-t/۸aÀ=*̫E>£g&QE=)\mo#%Uc]Y21_>>Vp[f$ܩp:s]5̨U'0(W9kd(&jY3 +ӧO;PWilszVd)CD9?*IrCm OP"ܻk {)Y#31UeicDGm֘m̳H\qw)}zU[̷) E#a$dt=P|.8^F,[֦{i,7luj6յ7QOh +FG-#݌xIM>lcoҵɞImϙvϭgj 2 < 8MZz3-nS`ƕ\gV̊Y!QUO_ƨOrO<{v"d taϳ +Mp իi!C*;ŒcJ:pZiڀiՎzڱc +f2(:N)q ;7_OR2jR~$KdM «Ppr+HlL0pQKnۙFh*T +z2SHarVXaer\Zzk &{+'X"KjY +,F jY-]vB}=`-e$zTtrzUEPEPEPEP[rʪ5 6\ZفS8DspOBJx9?jeW lƭ%gH8P'revP.(ɦI4UBG͓˥Gl.!2?<5e"[l)mI-ֱR-e(bĞ;vT̪A^ږEH$LWj\,d .5/PO @"Cg*ϕ$BЕׯKJ/,U10< v?TRQ9g #<pD2OJYn͸q +NqSwm -Y+A[n`G9R9L;'%'5%gGH߿ҡkwYJۉߎNs҅6Dz"y[HA%,epzcҶ +>]9%[Aщ͡wg}kZ-F-_cީOҿ+賛\⑦Q8;Y.-Gwj`g}k.49@bWvS$w]sީ1?kevhQ3>b&Nu?"p!ZvZtw<([5o%An {ٱ٧ZзgQ~{摶A53UCgnf0x^)h_Y\MM]vceQ' +S4Թw|iAOC o3qf8f{-jG*pҴňgX듚aL)lXn9N>N{]n}%>vzdV-řU|>\qJ/ٴ-I.$2*oD=pzԷ+6md*pڈ*IҰNr@'\?aSƆ" +;~^jt܏ ;ٜiQRhd$?&wSÑmf?Cu8d<㈡eZdHhOY嘱sVF cK|\. +1 ֥IbP@zP䞄ŒߡP΢3=B#t;!UIrJ^٪W7R(? :N.OW,ӤA#qT`>ep`jDHF)"*Ju-ْm|݄q)xhrG& ||@皮eF[chVc5'Ӭes8ok0]ҡI#6s*I^9#cSsXfzqu%"=Ei-17/n:VtJ\vsRrNاfƭNGyC'l7 EN=DR sݿAGVǮ)joh%~J;2v9ڽW-oOfbh +Aj6hn;XZ*JBȗk-%N3֯[ȑs<,}IXu_@bM|E )%̊Qi721AKtjG aw299L7([ +G'sW#HO$Ǹ Z0$Q,NՎ<7/I'?z/ǹ/m-tϻ?1Z +HѾaR3I\ƿ-V8Tϖ̠ wkw~8|F9ޕA0iÌg$~X*i-In׸g*|Bٖ˝ ֔ZZ\C5/yNrpqES R#vfP +N3nP5gG#(QF. EǶ-J2NF淸x}EITxhdB'b1ZQ7` ㎂E{/q +J%ui&}>;hY~xAks$E*Npp3֩EsGhYlr =?٦gԶgsP>hngo1>\gdH{u{V]Ɗ2$ŏ69MW"_9[dFꪔR"A7~&dXQN+,[Y#Աl3p.׻qlDwlXC +[O~{l_n擷riI (F UyfD0si',gާ~0HgIke7Ӑ;iki A?(^xC][" A{4gtB&2XǖN*I=yQu}JЖ V_>Tj=Ɵ[B:i/z(j#2fw̥v >kI?n1)X$ہ󓞵 4qvFv8 r 2y2ƾ[.Kc:oM$ĀKǯ|ohٙLGL~5H{4D6vOx!F2Fa09mse@W?l]Bd{Q{y\bv$\_SvnӊlB27->6GqDq}8`.pN0zT-$֒#??9Oa)(FeEڀaFsL + dOүOqfШ +1j)F$b1>\ :P]ltj~PGgeH>XA=N}+ORL]InOJvvY^]=˃pn~\lK5̻#hdcwgFDz,r*pnf럘,Έ )RݕEjΊ =Nd2$I2nAԐ[d`iaKr,ȶ/*UĨYizqP˳"2ۊ[ʞU=Ilk+)8ƅ7 m8HvFs+Ƨk$6n)3߷"{v`k23fcXw*@7 3 $֤XeEHв=qUkč MZ8V 7٢ ͜yןS^[d 1O9Җ9R.Ÿ!U;w 6zżk,gO9V_ҩY4TvKx^gmt!J<+m-9i fRW:ں9Ԧߕ~`eiEP~\j]LA'Ӡo`g̀ϭWk_ƺy-᫖)-س(.\d `sS(B4jGPJYy0 W E+Mcښt(M82&9*HDYز"&[yȁ(z4F (y;)R5!BG8ݩP2wu*Bl]Ԍ\gc;>QKcN|a=T@aC`w47NTc4- fݧ*f)Drpl9^AťWAH#*lMVsTN/=e$nHJ#c7cڠ`OEԐsu^~-[NЛRMq ۹mW+-Irf>^{rʥ6cYi/OXLJ[e'`Tzuth7@a6pyjEa PIE{I[O/:LYu _vvcd^OMi mw#Ĝn1jRa[X$ %ayǽ&.4&Պj'&K}>|c= +b\1IF%F%:[[&8xn֔]ٵx*tl4KcMc'Vqc+3N}=F}0p[6~t3+Jl:j趖er6ȫ⧟-Xf7F}>Bn0DHiF6\fH1yWbm +O.pm<<.qv+1w~8{bϳ\33F<~2TrObMInOΞ!rwV#,Gª7㿿JK̄ykcz֙0==EE5B +r'ˌR`Q>֥@5Vs +qn-nHɓZܼIc/'zU>$`$#HsB:+:kjI_ 6yY|KXkg9>&RG+yr>jk$)"IՅn8lsJ].\Zr捴# ~mتm>"j"Ms=rnwW;4f'iwjmZy $G;?;1Jfn<2 zV x m.K*. MRz\5ȴ4!nL.=qy rڹu1`v}2ビ޶YH]&8mwwWx< ?g1 *O=!gӣ[JF={vvl§*9u[%# G:ҲfQmgH9Nx<uo(LyVB/! {qޥԷ켼J˰8eʵz.c#2|IF@ǩKH,#[c\3.ǁ~a+Č 1Yt9kJ86"BgG"wrN@=*q6[Q/7!1E\cRjoҰ!$sW3ǵٶsU9.OUW';=ijg]FrJ0V \ 8W$hyʰles[ [pv;hmJ7Fh,Q{ߎ{ThF(N#~En>,iw1HхߞyvvwK2coѡd QJfSrAcVfTm$nZKHHNNzTV 9>B}RYWR"Fnx1VYGIt(_wt&_drHϭRCtLhw">g X5G%1$r"h"؁ۑOZBJJ2{@E k5f^fYy%L\/ g7wنȚ$[>C2߽Rz7uRxxy2! gdBi!h#UoznGo$`SgvIi9̒im@ +>q8H#c*)p'&qpA'rԚRiEtdH#ڊ9Xpq[:ND1>(wx]ici4Ј+}y'M售Fե_2@HT㎵s_M{3N؜>EoqNBAqIQto;8%rs4f!; DOG;s7RZѐa-^5Ž$R1'=up4.#ju8Ep^.ԩ,od]ǹs 8ٻtiaʼ C|ۉ1Yu]v]SZq|,Dn R=0ɟ(9>ޕIʥ8%dC6z;y*(.Z#Npfhs~^3ү[֌ߺ1Kc=H !ǭ3))Mѓ2H0:Tѫ5vwA.l&9'p=m."eFC66clm+ꃒWLmH䴇MO5b1sb{hCmcvzy1:x0c8Sdt9^E >pnFoZ,.@S{cC\[(KE칮9q(]B9&ulRFt(W9~fRh-$P`֬bS;cG`w6OOG +MT9ɫ)ًQ#<҄b$ +؅dW;W&* LFd=:+2:$]{ŵR0#jRK˱mu (Uq/9A8'lGg:@=4N951l"Q4yUIYhdr&$}ڵʿvIXQ}jLoF +q+y)jF`?JySEۉS<ןT c,s*֟34q7ɝLFq=Ǯd1E<~lQoOYA{o-:Փ0 4!\Ns$yί/HĎiPэi&0$Iup6\̑8ǥWy pxQi/)x^f8 Sͪv)ZI +r +qM-ĖH'FzU1 xS`;Y'zTq+=یqGMEv欭ܮmT\PIxnwsZ0B0ā*5N{h% '"`/jF!LJl2 jNi ռqݻ!;[RIq18\D>\oU%EVPӌ֋{y6>[n2zqRFrWe&FEe\Ag*i ''vՐtnn[B(p?2z%u[zM6j1 {U;>e Ab_yH+3m?JG `2wihm.*]6|Csܚ[<#**Os÷eT>ʌfX*R[4jH^kQz-,-&3#Kܟ xim1<܆W/2ZrpVOy̲isږ]lO,~qMYvܴKMBm MU{g+F̬A*r*cN<;UCMu+26rs֪ZǥK DӲ0W) 9ҍɳ,4$.8M_}. .9'nShpCn$th-|K4F~8ҿbOw>V+*Gk"Sn)f{=@3 ?QE.꣩ S{͵_4dPXg5,g͆)ГVnn].hgE\Ɩ61YrFLfqJׁуLBN#PCn@\rfV"ցvҬP,rϵgj)wSݭtLs)֙M)!{U_KN}3QhBDr(=95ZLnO8(_,1*ԲiVۼyx8=k=tQCGl4]>djr+!R ."S7ݽV$tR궰z|K(f:{ +αYbFL݁6Rj&"P{eҲm#:CpnT9>[O,DhD]ˤ1H@_KURQ[\I<2;͞'ѣs(J1' {T> ȻHS m,ghw4Xjw_ t dkQ恸ҠwFRHI*HX*Yua6"#= Ms{8mw@r#rN]%Vxـi|؁c$et{T_{4d7Sݢۆ;cʂ@׫6/7DA +Hd#-#g\A[=[wH^9 ʎO+J-Fy-CL|CiAKZV;B*-&-<2zjLR,zOBy-R7,6{R{m,,O#<{p#wedWcO}0@6 Y:ZRrQ!e{IzH< 0B䗥:ma{Tvf|j9<.VBY&i%ĂZ2TW޳#ym8)&kBt/U@lNF+R'@X.y+R#J0U.C enFzbB(ݶ + Ax%#8,HvEkPw-PI_>ٗ4#}Ek4pp \yI!H'ԖpD@6;ѧBQd =h8ٝ=\GRDG>)O0]p6VDD-+rV]RI4ёzqP6"YڌM =С(=f(6yKRq:+r{DFinN{kJ̌$$}:֣%q]H&v5r;% oѤp2ITݶ8&F +2Q$-[ 02-!y&n@c׌fNU$!T44ҀC̱g;L[F}+[b_#;Z9ڒZIԴeW|,x⭸0CW2qUEfe!QJ1R\M e3fN0U6^(zf{LGOiR2ہ^b2nRDBGNI&ESqղ& e~f6}{Sl8'l.#=AŎI'Uc6Mj$"o6qrT=z}+[:FO8CVZJ|kn7=UݸM0Kv63D \zj\;xvk%ٞkIGf1f"o56WQY/k3S?1"k{8W0&3RAeg1dd:ӋUiJ[5;EgF~SƫD4:ccvϧ֛o߬.X)$rGڪx#x]ʕ\u:;>h5ēn-( :h'e0%NZhnaWiCjK0Q,znbqTy4ju:}ܗ+FF*2<~?ZKUyg=\ռX;c?JfD=Č$tjdt^u{:ȳL +Mg_"NmZ]B-Xݷ,rzT-[8=8Qm.m:Oس`~XlzgW"mbp%68LRL`2*Hq'sG$XSqMt(ǖ_yid?4,cLSw1fvcۇȩkBk} F.PHL{^{zi,m0awӯNK4NLtϥAmzI%V[Jz$-N{< dt>`k̤l$ӝI؛rH Qe42@`ڛonyI6ޥo록$ 9$BeP9=i:JVEqipYdn\ry]j挥8˚=v2c=sҧ1`qH}?*GaRJ֜S:Q knw/ʤ`%F񓎭+C<槑 {}ʠz\wkXt>g7$ھ5<tɫv"A=OW`ŎsT;L~_LVNFwRbX"ʳI ҥż}pޠaHheB'JsڟBn"n۟Zioq><*t_yާmcN~iK SNNLXcQ&WleuGB&6G__cgl %$gҠuCPcW~T] SRsK')Wduʮ f՗RT~s J-<. IQ-k".bQKA׳@C893M4@^}<&\drő]g# dҡcB׎*ʴewc=).K;-Uwl;\>WBP4QyUwu2soaYgkeC$hM߃q;C9ݩTrM}WiG8V0{?wc׮{fIxH`w˸{t6QWi(YmcNYn'Pczcִlns{TD>l*'Ս EҫOMG\Jk{e^/&M089i%b |4lp~]R;i~ΪG R\nX) rG>ITPxݜwTkm&ilH~H;x帙ᶹg)"<y4HdOr@ϭ]ae&yp@<(NN>-1znYԣ{`7+\cSf; #,AzASϩ+ܛI)9힘(Z&es4YL%+)S 078jMыz"=jk{&HI޳D +d!%z)\Gf:4FA.CNIGB^LfzÕaCZ,@LK.KX-in! ;2^s  RK"F_*P=2T$K"|ۭVvo4`Xi.ԅW;5,WW)ٴ7ѳg353ě"$.tHdx!SLqQ|eHm `7>֥W[&.袊DH,8JqktޜcҢM g߼ +PDZpu1JwIҘgi"G84va{k-Ԁ8 o'>bڅ7˻qlJ]t#TI ,]D0.c[)9rcuooTRǗ* [+m,OqL*EZβƔ31;}O[iX.z/U nSy`8@Q޴,I\|=(!I|=m_mnu1Imti9QF%WnAMciOFɒLoo/wLC"왢څQgPb*p{$ AᛒO2w1sKb_OsY3zڝYYYƱo~a݌`zV)JVnZ#[%3`nq1_Zlh1py4 !q.>5bk+hVO1!$Nj{1Ylb%t8ϊɭ˜Z*%;Nz|l K +q<- +i5mgW 0ǟZ;kw,gU_Ѵ_tXJx=5.m|[oLI9bϻ"U@ܨPKc3QmYHmǯ\ڐeO2=Ur*+˖.*m @Tqumι{ukebC=R`1eA[)<[PJFWbe{;` h; +œft2Q7d-o'1T` ?4ĉ8AƬ6"adӑ:oHu[j`T4$R|wfѥXuݤHFYQAnJV3 zJգK%ěfv?e1QE(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((M.6FND,9K'fݐ*w~@BK}Mh*;朱:dG 8V?2Dvd#7dAdb3 ҿb9m̾eK4fL.ZO-Wr|:±(foS. V@$f-"!NȒ医YKmķH xxY$=YS.4.$S#X#"yǞqMXE nSCor` `O;6R9_fMC-݂TIJNGc@ŰKwk=4+㌌sKon%,bPsNͩmyk2U l*qMnG10b -q١ *9XI("]bN4PC-cyV-o<Cl69QIE`]n'z +c*عw6ɉx#g(FXoҔpшuԷ}Y")Gs%r}㜞)M|zc~ZE#"nPg5c)Yʹ?v3 +qA#轆ͥT*{69 ϥjo̫*3b 1uU#$ah28eBqN5ʈc9wJ $*v#Y[8qV=D\d4gdjM +)ln:sZ&A͜8)! + Iu<+<1*e6*m;?ZmxQ M}+*}@;HZkb$`曊DRTy EW{]8IÖN(K3ǘz|yaͩ/a}jq<^+>WMOPxbx=ks:[j)q8>WksR9Jfy|j]3YxVyc%`OQڱ/\04.)cV튔RU + RSj[x<9Tuu4"P,;A?ΥXEFp#n3Ք +VT9QzeRsՔڌRՋv0az$ב2G,I ,y >•q7>ۘ$XNV'`dʟoi9."8z֖Y.n,q#(,Bv#T05,KY7~5fY{[gZQڑHUisʜb؏˵-4!qqr*I ?nz,êvHh[)|*ŎIH,}yhd_SOyeWhgTbqPޡ}*ϟ/IɍIǵ&U33-֤28nT6 F/:Q˽+jc󩍍jsEht\%̢̓YzsWtFHn" 6(\du8\wnf2cQ,evb~ASJ=(r] f[ux,.8U]I,Csdy۴lq3Ȯ# <J(ŮiU2F:*3C-pʾY9ZOh#|`P8|yc] eJI^z7r^jqj(Č.M 0 wECd51UdOp( +|-h%]cPԡ沩WQHU~1isyy9:YrZ^_B>#=F9-r1' jV9Emo.iwoivo|&>'zT okuh#6pK,7]ң&6<ZMkviPVW߱OOI Gq mA9@m..A⧽#$PȤO,dԣV0ǵK1狅YRe-N>Ycb0sW6e;82[X0GbH.rF9$򮣒+q{ skᶆnK ,N1_j\Oqb,l!1;O2s9H^\i?fg?&?<5w9Tn՗rIg;DٶGֳ^yE  +m\$>ln߻eW'Q=OEf-Hl}?T)W'dm[$أy PG?Fwk( вdU 0^$Qc/y8qpE5ϙsgo(#ʣٛv(ǧj)G4;Ms5%1&bNd`¹В}7v,uS[DE^;?>989o;q.3jƔ>e۱j8}2{9%<=2n!#+vqS84Μ."2L$!NzSna"*3/!ʖ:)⩹(.*S\8@%_E,3Ҩ_ݱSaz)G_89PU1^8 )22N7a\ynҐk"Y"d*!>vֲHn6ǰ[nk޶#z+̿dtc.c;=o6Gt,rs#FhL!>R~1Ҵ<ѕ r;S7dsǦjUYm1 Q]Ki!ڨ@;9ߟZ-`U!cUK6ނE&Еc3BTR@ΫAdt{!r~l֭ a!Xzp}܇Q7(۴;:ZF'm ;׷ԬDT8`}>e2=j1lonqZvPIpXvqY4vs=(L;&ԜGMGQj'%&x0jؐ0 zÊؾMAFGJJw}4DnCvz)#vay#iyԀ@cQ ڴ_'y79N=*0(d'InmVoZG]6g5.gEc#'H9Wu+8n>S|S`:giEIj9hȝUN+&T#+FMW [?|'U[h$JǙ_Za"H&¹y8Zwb>zg5%֡ i6mz}jkY\g##7kO>‘[ 4pf-gZ3J{$ 9<N>rltROyM;"\z#: (G1Asޛɱ1nNW>wvNXK;yϯ4сfNnޘ41rrVGhΞGL`~a5EETc#=9lmG_ҠbVQ@cfNhlv"բtkDWi`qQi刳8t'FGkW BZdh$LsZ0|^֕qo',ʐ ڴ,'|LZ4a!%ЗwXl@s>c \?>U&"_+8eԱKil(9e""s#<˂8i\I#޿@0O&Gl {BkH׆ %zG$bAnzzyXmP3~r:G#ARrE'{($!$˻ۊ V8ݿ:{dVQLa;3ڛfz/zVR-1LFCĬLh7cS$cY'7.-|O_opzSWDOKG b[ A~bxb5dvVp +˞th`;tȌ=)O.m_-[nɶ8?B-+.dCq. FC*۳Ҵ6"uSd?CZM?J 8l? u4F%.+ X" jmecӯJ/ԕNOOBCKf0?=αw|p7$Gȉr7}oyƞlǍs1+֤i]-X!4m&IOH9YkIaBv)ȫ6LBIywSəy(lHv+%wxf01;gi0;GLҵj8 yN*Z:)ՋlFvHR+k{yYeKB]r9qsS iz*(7ZlSϯlPJq[w(a)@XJ{n͎$e+50뻂;sP^[^~#=S)AwacYvK@=kJ!sUaao$1،梹ԯMplF68i-KE-֓ ̯ +%#rF0@urd*2ҹ+ d,Im VkGaqORc(%vQ3ɹ|3Zsͥ~8RGkA={w伂Id+r> +1I{əRMԼ(,2q: +l]^Xxq'9jvf tc^_l{ƛkHgRT˕=3LA7Oo-\˵dQVkn#HՓwk%Tc;zr3i(m( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(7]J8!$ܹ+`qڣ! <+rd!J6ZdGu,w*gk;peZ:n7wIlvϥVs5x'8=˒V^)*?X 7mcg4dY>zt[q(3iu(-#(R g {SJ`fkա\ys_zFŮ^ʢ)Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@fdhqNakf]w?m%DkUxg8rz=lzfp&?*wq8O#'4LJI1ȤLÕ 9itdIA߫Iud4IgQ@͐qJkI䌜+h/")s44T#9^ފs,,@G;ۼR+m߸c=imc[ rKɺYf9bI9[iKk~osޙiΝWoHyz3DnI.1R[[Hp7䑊+ cq[r8ֶÁ(Y|# #fAq21&7l';zǽ$$s5 +ALz^`[#i$$W(Fh&t$I^5k%H0w0Q̒`8' tbEE o<e#g~WO=JzV휷Z》n4APVHH >ÜޯAf2ۋc9ްt뢌sJ~eWړM;NP9˼8G4w4 +֖RUƿ1>F(+ɎfmY Cjk#D̠l0gckK@٪# i#py>Z&(?9 ~ymU qvci=񊣫ilP L{rgzKڏcrGp\~*z(wp([YE#iGǹ +4q*y?֘Zh[͕$x}ZPk<ڄ:v׉'#-oM$8nwֹjWr۝S`8{:e9]QEy*R3I-ȓl'mm#U\I@suAm:y^ZQR~zNOHP@Ӟ6d 7˞c HN9U^xoLmȦ֤OEOTM8)e ;,afYث8\ujCGȦLTQ]:܆> FS>h9ڗ6慷Aj%+BU n1:Pa5J#6٢Y$tʩ1Il\S]܏0ݲtJ(N5&+# NqV-"C*n.~r]1|U1Ӝ9XQc4^$ۉe3p%6Ӑ2nȧv{e7lr9w֒cwu-9õiry@^ZqMw!X>ҩ*-%႞1=x6Gl=8.Lb fK}=t|!C9튑O>lxٻ~:f]>7A;NR%u>y͝Еw|Ao늢ww2xqlgp_q랆V;,qqPHm&s *UN:U,͍RrAT1R#y jo6YDHOE $5E"d!ZC?_UᾊKn0A=fB+yh+ |m0=+v,,5Ic.{#ݼd |h1Isf܇9]İ#a5hA)q{dF mwH:t ^V@ڷ-mL7`,#it8⢻ $]xlTq5.뷋m,h# +1~e60hflm;sȵ,d$ǐ#8sZK}\/jod&Hp2[ +P$css)C>UE?l"r9ڿxu=**Dqk9<皱td4I̸1,:t-.uiXНO4ru/G7q Vܹ\ pyW tddp;T+<&ډ @lqyՙ/41ci 4t6,U(8P'Pͩ\moݟ_U寙l_K~wcsVL"dmՔ(jw3;;[xgapGzgF$eQӟRsҷvYk F*$cMejgNBgk:3ml[ѯ&2b*{Y:d qv\a*\K}h->qt_jQGX>g򧶦q\qi:㑚op]qo2:tR2Lyܚ·F:mJ&݌HMN/ˡc'nx] '9aE7F0޵cePIvG?)YpHL0(15>֓KsqqfۓgZgz0Ad(L('ڝrVNu3M,KdӜP^He K#pR^_4) +>Ïd`1M#:VV喒&w9-eb&kS˅G8f #gi7A;HEQѡM%ҵ, [dY #Hr9+kbLO`iFpH-Ԗ±S4Cx35@g {WC^[Cmr1'F_;\,2l:~kHJnKXR擸\Ǯ)4mvȄ2+[mbi UG͑қ &c(=4ZQ9Z+[>i) #'98h IzcΩiV Hq[,<]xHTn #x8`$d4DB挀N}rOE[0F0^c>3 cYy)?e˨^{\9*[ zU/I,eI^p^}j˸Ӛiy*r8"&[v *b2A⢮W.U)$3X2C,X#tMFi6#($((((((((((((((((+oJY6y`ُykif9qH)2)jjC k7_aSJ +uK+3PWx9ir~htXy0dSi3:U*A[(O^k1e 8#%}!'^H& w4;ɲҺ]9F"8ʻir S(YYPUT`7#JV3FO3PsFVOmb`i'%BxWqsć#/6&@(;4mQ\"F0Υ1 veP@9ܹ6eloqVS%^L*%(8N99Th\Q8U˷ѭ#OZmBHqT$/pZ8+L]((Yy9+8=I?ZxuQ%CR򔖝D'2;x֪dIL8$i RPtnX3MiڕzEuevG=Q&'lW8PMHhv +>`yQ9V絒#k#l#J{$if8$ʭ:}sgl 82H]~4dRܿA;E cYw>LV9`H?JqpmOd`TO'9tM aԹyF^h9 N5~ m.7 x㟭,(s$ $h߸YN9$ryltak- #˄Y `I*x烌+ic.~R砫ᝡ[Ķ 19a@kj%wheټndzlSќimxd);Q>V|M-ʾIޭ$0(\:z})p$L3e=ꗙ5!e*eOmrlm4G2O'3qI)(QFX]eX4֑w`'R^F.#x݌Ux*$hWfsJpW6?(@U-3>T{Ջ2c+U#|qN$siSAb1QI)?(^=sS_`ֳ̲$?T[Z$jgeH +0]HqS[[}d.1~KY}Ht[l0zghШ%uuc-/h_Jϒ'ԌI+b5+#[F&H vCI 23tUa%e=<5eFRb-*嗂=jy&30֤X, L%dT'()(ح8<*5;)Ni݋8$qRRČI'zx<| ^f> ߥe2o(H5襸UZxX$Si"NGOގ[1:kTFo 78m犺7 W==197~ۆxK 6+fҾ~M+^5 $\E~լ$yT$#g0r{C2:=Ef٧NV%WZ[hmI<ѧY +#lp1NX紐$$pqުVLۛ9b1G@U-н;Mgvf'!aUmM%IJr1USn>{mq6KT'OVvHHגIaN:v\6VFdp\ yxHPëݎ=1jRmF( a \ 0ڱ03tlWȷkf8nܺV*sń#SI &1޿>y_Bxlq3H#10+ ,[dI.[s +bM@19>wgk^$__cjj-ŷ-6+..%aU<Z+Pdzo+RѰPp:ץO# rzo{I1mjlI7uO$q!PB"Ѣ*ri(-J*al)̏94DVVLavӴ`#(V2wfP9#XooX<2mǧjbgcJ+o>KʑI8d +hBVC +\4mnGa}svRTȴLmsކkE69'5e.cmbo2߹sޥӭY xq%L 6Ruf8rT9S{\rՏ`8tt^،/Es7rܓ,pauQj7&h6Z=`}ьNN7Mz}Kk\B3dzQg4(98$pz{I='Mmˎp*ؾ~m|~-ZRN:"{RXlN1 [Ż}zu4 +kWͪ\۾Pl[¬Zs-bi"lˀ1ǿZ"6qK t.e}M$vxkR;9m +#B grzT7^x|<0W#'7"nm;MSێ*[O {#?>P9NXwFoʖѿx `拮*sqveˉ ddg#I:0{J=i 1FT0+ cr<;qޤ^bNێ0liڼZmKX_,0=^(M")KJQ+C(==o%2n㸈Cklۋ1VͻЗ5wY4e0y? +Sy..-ܟ)b#:~UH&3.[h H9֙"-1a~YR;>_ʴ5kU$T*ܴtfb? U]CM]J6-8UKB>Yʌg+hȆ,a +Σ<~U;3Iv$tP ޳/ϘV&#VkIUb-@CwMI#[;&<@JKf`4w۷? +]<>#qѸP)8xZ~`MksH;gҪ%I=`rUɴnM$<'wEqi56B{2阴Q@((((((((((((((( dY4~_ί34e>?ӧ9&7g"DZmzG"0vzR6Wos}v'h@J0$ b^G=z~ξ3j"V4s}Xa[ "6Ϙqvޡ[搚֡=U;Vhp3YtrzS!QE((((((((((((((((((((((((((((((((((((((((((6Vf=dhJEKs+Nך$'yVRٛEFQ~֤8rpGxnbhdY)b^=Vֲ3$r8J}W<ź{^H^nif>Z3,N8}jd\(,nqZmvQw]'OoJfYۅ˃׭VMKZKi0 BQ3g .!k6Nh<8_]=pħy`C1SEDD}X2ОΡ%$-ƐY/'={tz{m>w 3̥\ $^ۀ<@wn8+1bi0FHY7QYZ)8S՞|ɱ&faI5ZJcS ԏ=ͻ(TcM^v5G4qH^)nlp2H?J3B uWcsYcЧS=BE$A*Ɠ 11a6~nmnQOs8oudvb6fd^=^hSB+x2Iյ +|EZIP^yw +0\]*[It \՛K{Ki-H̩zz}MO|#/&)E>9瑊td8 {qw9AVZͼZ6pm8Tj1? +qtaنwfI6;Α{ѢIZA^$*Vp`n랸R^U/Å+ߊʓHH'-;OZkI4 IJݍUz\Ȑ4+rO~v`1 tWgQoUX75=r:}3gҫcY; 7Ƞ|湶KvT؃h8;N BE\#HΘ)ln4+=JRݚ 0H'KnRQ!@UԖBm ¶,e#1֢>leqOF5֋ҳH,iAG#5=ߛwtgHJϸ7 C@;c@6HIli%Z[6$/?u սY]TcYS;2? g#‘ªH\i\r1Hsr#o5-9.#- awlQgްa!hz։\@ N_zЅtR_uRńVF$@Weh#PChc>y5`jNZbaZ8P+j32a JvX/&uxVXgϦ\[,eVs",E +-q_:UԴAy͖)Z(di ~EhF猾E.ڛqi7>_qqTl& +:h\JO#Gl}Q}jZge*ѫK]bq-ZR\/$(ǭ>S76Σ*Kɤywpt%3%4ױk!?{tߗ}kݦ.@ +AURO i#53nFxMaa.?>< +0*Cs)gYT 玔{X|s}}(NRڡNk^*Bd]鹣%`je}m"" OSXe1}_a s3]&9yT7Em̈޿_zF3(fh$N>G.peNp:ڂ[U<ݛ+F$kdUe؄#'gӊNԄݳ +9=wbufR+7p~az_4rCvor}3HJrΡ tUHP@=jFmZ|%m#?u)VA"xդ=,nܔ.9*V(,EK%lWET$)Zʲ|˙yHȱ#hU>v7L:нigMF2GQ6s8-9JI:`̜: 09kGN$lV!98ӯ4M$mܸ'<}(pONG-W +%11dcU.< #i=Ġ9Qx1[2/Ni5sX] +L Yϕ&pc8J[4.z^Fi'XeXՈfu㓊+g+ !$q}khglWS㹴d\_ðWl)0YJ4dB5,YϨ4t&/ޱjki]*˂W\Lkvۏ0c}k7;tDx8Աvb~陆:MhEH^F_g>v23Џ\wZg~-mod7!w?ZLw%2q_Oq(z"*;kT+yd@5X=ilopm玽zT1sN/#0g9'fIK<ʶ6̄h#R+{b10 qӭ[Mo/ŗcP-qybOVU䄀?GmYYi'O +J~Y#@xyd[w #8W֗VڬqYMFb}sLѦiUdd{U pDs'%km,LǹrReLU[wc>-!6w +` +=Izc2K9. E/4IŞ;iRYDu5BcnT1F"wC.9njq$Xx1wē8LSʸA#:B;UKپЗ)Ygٶav;qT..m@] ų2sūy.$^ ?:M'%j ;'3@gI-i6#uqlfȥ7PscX4̧;oS+cf+Tdo-96L-lsnǙggm0  i֤^\] O#4;N->g_\Mmpmߟ,m`Y"6s Ý2A!fxdp:nmQز8i*-ۡpx~RsT9'}71 zWKcshM4M,n% p3ګ&9X2SM-'6'tbff<йۤR[w:CY4HęB{=uE6(bz4Z⌜nK44*BmE/?™s@mb8#=ݦbBҖ [! QՖeCre%C͖=8j$u>S Ք Hoxv ZP1l *gzhJݒi'q*Y4DQЙrN}u[n ܋0<׿ZTJWLْWdngu5q[ןZܴ(ءwjKL2[8ux$2V!wj֒"1d frg=99muUc1Ȅ р2֨ {L1DSo'#=;dm;g{ɫ5=\6GqWn,5֟9w6|.HT'yK@ 0q[na$;X*o$, 8QO֝1,E A%&x T_S4ۅlgy鳄?W02zwN!/֠Ӟy#K*ۄ~fN97}Jpr7p[ZZ4{ոVk;[xvM)"AgHLS\́>_cWftŸHe#N 矧J.Vжb\?j N9qYڮqsy ڢbHYĢi,pNsץOj '_ BRp9Z+SRZKF܀ جQE((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*ՅkpE+)l<{Jo#-v>ҽW5 H+1N~{=bTP6gHl&nS0iE ČTV(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((K4XA~۝IۂkȮWznr7|}k'hvABn")UwSRXiBc=*F(%*ucNtrC8Zg.xr#SY+aqҝW%R9(Z`8cr*%UW8|{ޫ >D0qL{ F)Y wt GgjK/͖ FKB6 +;RI'03B`Q ɖE?:;֎;2XsUf9coqp]G9՘$,~^jK.|1ՐOˏI{i2 YKʭc\˓2)dw$>Fx9N>Thw}kP'7r:sIon#w#Kw:ŕ6n{[_tW{vR[<ڑQUg9a?ҬynoAUdG2rQy)\c.ۣXO"`k>^x"ݱ7θ6Zi&H."G!e9яS#H4"pCvÇڲ'ns]%Sً'}F D)͑H8Q0Yh^yF #Ҵn/d$RJ&kpUѻf;+Dxڟ([],*KNmx'(Y/$!cczD\F)ӭN:\ k*Iݜ,I8 !HjXwsme fu(57FXeHj @ơX6H]㓁گBsJQCL=fymiZfohQʨ@`~trG 3g6J]ZE?R,֏TkxBҝ *@9?){zU[K&W.Hz^;KCc%~3s7ޞ]Io# Y#.8KYύ_ߔU^9Ԗ!)Oim;g1ZBb:C-4rаPPCg>MݴjBq9ԇQh`69jB#h'/JI8RghJ6Ԅ爉*Ĉ"9'`IG.X2țdKqqLMȃ:rNFI5]jslzL&`7L's\<=\$[/n*R2nYWhܳJS<Ӏ!$y%탳{ѥ#ޔ!IۜvږC DfIEBr7z+ۏ"wy1wʫ4]#rJ[ڃ!lQĉ>$q1<`~-G&~,=%Z5NOQ}KUv VG>-,&$s Mw7t%}VA\ 82@CZмń*5M6"tyJ.Z3.I('v2X5%o4N_H"*#>>[hZChhBJϩJ Μ+'Ү Da18ZTy!2)R +AI?"opM+)䝗T[ycwQϵ[gW٩ +-눰FӸԟJJ`4)Eӓv_/3|7m3֧I3:.}ˀqqV5&2S/y8BEWzKX7-`8wIkJQ ̎6ҡ>hZ˙\4rRYX\IysxG1tTEuJ⣎RQ%~ +ph)/zVP1ws6:[eO3}W?<$9l-{T;qޥFy +0`*GҞgo?Z6wg>!o&92grtr}~_f a=ҵ" r2"0SOjs۷n|cMEm#,K2O\⥝nNn1߻8R^{uGet 0ŁkB6g-~*G37}hRvU£w0=i6pnF팊Vǖ;ͻcqҤ[ɽyw<7Qfl<ldl޵&Y҅ +a(6\=1ν7®gE';=j0#KKfy bE%3J;ۉ}6l~ZheV%(Z o_Qq +QNz˶y,\L@OLϵ-dزghb\166)$7= njʫ,i-sM\hV=Pޫ+8gX7)X9+@. ƒvc֛0uL>nO CaX[DvsY}Gs$6i sùzTrf@Fc 'Nv+֨''g0< +}VO*xVOsTuqs( _3UNI:E,㯭2lk.n$N`rqՙMJ˃hlm5M56Y{s[2H g=1Eչc䃷=)'ݺ L~f={lA +-oNW7wWs4Dg:V&Gpn7Qm9'沒Qܹy>W:tz$f+O29Wnsk2c6ۜ5ZzaOmm{[N턩\g |} 3Lky%6}G&X$F|%;cCۻQږfAn9#Ђ|'ֵHuAڲxY]צkKRf!!ێs.k޼1Kj|1P,ZIB&HדSn4IUK@TI+]`}?7;߻nK B4S+Ե>Eߙa=j]By0h %*2sSFUnaNAnM1SVGq0;zr?o`M>RX׈IDe4w, /-H8^F)[yxZKk->|m"UA9%$|ܑzS.MGDDȻ0S]HKZ^8ֹY|<.'i[vQfi_{.@\dtť <~BizY)91ӎ)(Dm{*g5{giYRsLzqOZu֚$lRq;ZaRB#+9+meHI\xދ\nOi$l sTut'HRrQ;֩k%n ?ZeVKԯ12y{R=A"}nS%9#5lXmdqc:mZ{xsV7`q`WhpqmigiHE]&bP]rF=GvE+,Xbr{U8{أ<d;ݎ?_zi39ԅAgekm/wdq֙]u+$JJmǯ8H5dHZ1v*vmj;wdJDgOA]H HGEc>Γ$q0F3Zs4FdFe܎qBԹ%RYu{Lldd@$cz9SbڋFdYNBWSh쭕9Q>7TI2c;cm+K$S{M&,F-s{^vhlܻR11->RHXZ#xP)&Қ: S}26kn "DhܣVA5Y-ͱ"FNxҹv;cԓM[[1QE3(((((((((((((((((((((RB,YT;AրIQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@UKNmDY<}PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP`B|8P+ëmϥ,qb=[+r$VJV<5n^l9 X[9u=Tk# +Ж9%fg0}!x"NbTuwJ/Jp֧Ei5k/#sVYD.&y,SC;~]ݺRI\ss2CSO!g$-|O<2}$rK7NCNϩ.cghR! 7=jzc\4I +&&1$*;9c J[C g)JK +$'mOmhES4̩P> ˌ-oo@!I'u-êA<>c(R%YE8 vLanU3U$KQ8V*oЈ:=jM\3q&UqҮFF9Yr }@mʢkцI$7QJ I$vsϨn#Nj\#p'2#([J_,5DQCX&&ӥX{X`Ҩ;A"ܡ$?̺kĊ0w3OI'#?#ꔁHZTkv {Rt[mNjrd.:jp%fǽXEk+,L I5T1Zn;|hR%iulҭWAAXdR^鬔k.[أ Vfl2>199HK߲Us8Z'O/c 1&dSW f'~ߚ廎"'?ڰX1Qr z xeǗ6I9Ҝ^xEJYV4x^;ΙqD]WVa)x#p+MZGSJOGtR-TFD//s֫K64p1ْ䔀 U@9O:J#;K%-Nw;w zeLUqҢḈ2qz |׷S$<0)EjC(ٳiovԚJXP(<̒Hbg${U,1" 89#lr e8RAѻQ]xHzJdNOQgj6:i_[4 Lz^wVP]1ZZ}3d1%qT?aL_q=I[f]Xͥ8hD_xc +J6.s]7{gPcdr:I'h}:Wtg;*ΪXd'n+0/6 [n dÈnA_ޮqޛ5xIyJM)F7u_{F, _/dHndqsz ,i򰓆㓌g֪IkU9pCFj2/sRYC܆!VG 1'Z/=j }m9}m绊8.ޤ$ FppGRO(>E@D>UN}Ҹ_ƩSܳɱzqQ.5@D%DWmsׯ5cMX}?ғ.쒽HM3F Ո8Z7y\a6dJid +lnsCoܠ')*|tE%agjaZ3ݙT4Q) ԥݚUi%yq;K%#&e,tYLguLXmXcԆw6֝ͨExeF!gd[?i#/:cI$clvV/- o|R=)+셸F+ǃV,/;ypZ$/v$!w'tʋE胞[KIp0zzTӴQiwm\sdJ歊w HPH#tm91mh$ѫ*jzQ=\Kgi#n?{3XxS&˴Ն0"LY690sP[ܤHS7n|3B#'-ϭ7R(x& IKHH*ń![ܹw.5#v!Ux[!~oLeͳ]\*0wLy_¦Yȯ!ݴKߌ)01M48]7(ZA^O/ʈKi8r<5-qmٻiPG%$:eg2ZiѰ)v*9ZmVMFC_9昂[2 4ěێz} l=142жڈԹt#ؗLK0%* 0NqW_$F7cw`B({}*"eDsӟN:^FN9aZRwWEw"OcTWZ-tb>[Eg'ir@Y3gsV=9ȗ>c1'v>Ӓ`[n>+OQ^Is:Qnv=JK!ە'S[Z6uNxǽ;rm4567BN<ȗ˴/D?z4-ɖD)l zUy>tQv8)u4Qnq,2#ii >nM8+|R35$6ͲӺhQ*s=olqĎP:֭Ρ:M˂wF<Q,3S(7%G6Ox7 zqO~ͩ>BN]<}j&C!e)EkpBbweWt[NW +psڥ0O] YgEx0.x暟h̟{J]A$̲I +n~Z[tmѯݐ.jhn˚?>pBJby#Y lݜzmv+L~T'! +fbHU=bu0I.p=1Խiulc0C)sϙE%X61LӯčT^%Ԗfsֆ KQ[>T׊HG>s^$.ݹ֠޳A;F3w`{*w|͖=>Ԯ٣br]b8"16|w@ơ)kKV]]fNNIm|޼6RAPGKG'w2\-Jm:`w/.m $Rk?NIRa#g1c$OOo +}9#zЇ;E[/=şu dyM=Z#+d_TjRJ엶 6$V#Ժxbu  ;cIɴ +}VK{{;Hj3 QީkIr7f v~I'ަ-JHJ4#nҍtbc8,bit>PZzʬ<7yoUg F3KIFю!xKn),M^I{2MT~)%QנiWl2Y6 wKY^"x\ªm`t/)lRQ8&iGO9-Xa(<8M!HY3Br2sV${X H +,l5pn|yVG͖m47^fmKP8ʩ 6Q^ )@?NN1yֶ./-/tS_cJk4V;Z7H񺁷ӹj\磆i#tD OJfHkuY!vX լAr!8.Rd`p;UsrQeP!W-8h ՝.<HJajCo}`1gb0zcj}KI[aj]Dö)$YZtO6ϿfGI:B8g`0qqvdtU9,fXWwj0((((((((((((((((((((ŕimPƟ8Vvǘ~:qm+.R8<IAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP@PG h^!{ShT2)v?xҚ^xiZMk(cЫY}HfNps^E32(zV ۿ,^2FNx%7*N-ԲH˄;u㊎RxWgid[NvS4 2dNZvIhBQ+-d_(`]"Fge_9h+ UUn9횎[tC̶b0;3lc]K@P'@-לgJSV2K ́ʎ%UoK"hq-[/ˀ95Jϝ۵_";JQPaF*RfhV߷O +'TitG 65Z2SMY+#'}ӕ5o-aY'I=k|Q H1͙enՒF^$b$yQ2tQkI_`"AydN2ݡWF2$^<Qha⡉.gpmQ+$RJmXud,eϪ7$ǔ6j͖I*A,h6ߎ3]'ge)$M8Gҹt#*yҮN)Ӝ%VW~kPyAxVi ᔫVlc8hDjpg2@ ϡ[xKwݽ=WDA} gff89=khTh4jq'=]ڠWU 4"Y!75 ji ZZ$UDv9?JD$H}TB]:T-j9s>qSZ a JUQqڒM2(Io#f]xA]OF^LR6Fd*ěd 泚] S=*]9n +XqPg|sMF;ṸvYܮZ&%|Tgڝ+IYWn[ y$VjҩO[.nKȧNTa]}W9<7L0HЌ9>o2zJиG37ʍG%rG4֎2^.I}c]xe !G( {Vy^wR)}&%@@JXw,;扛Ùmq:{]E=;1?2=S,#Wm<1%*V:jB-1F:+HVd])NyL(I.-,eV7Aա X2A qm"]a`I#;S㌙xs?=xҤO#irYס9-Q;'-]SHE჌IЯ ̿pEk}}Q,*6vJ-NWUZM&@nW=ME{Xs~>̖ W,=8%sdz[7Z2 xqsF|-/4(ZK?>oJ N65rVܵ[nu H``?Jf[t|<gHcir{CvL!OQZDİB8ǥARȈL9x,4 +h sꖦM&n9)" =[Ij~j{6r8N ]+K/ <}iWԗΏ΅#*0${ՙvK0)Rh`WYUY s%Ƥ"0;b} +q f^0vl̓Er$1#)[Do!ޞ!&,[]-EtVp8ӣ$N<==qǽPKN[`Gme2#w=H)ۡ:kX|!:wE;^RjAdzddxWÒ*rCdcs̚JY7!n>\]:Riu"yE#;t7%Ka ` gjƱzZђ2WIa aLt|r=9h"]:dݏ<(;jj "eGQ2Q#fݵN?ʪYiֳMq&ښݵX+yXqh xW-2$*3%D8lDQo`j[TcgQ0sҟiԧڻzJج +Vʩ;c,2K- +Ԟi-ޫ260֨OwwR.>mr9*liy(yv泶TZpdss Z[ϔ$8A:M%X.$EcvA8 :/3rz M&/_]kcf`@B |svjMWUm2Ż PsS+6ScAH%cS QOZΉ&VEsr27`P:pzV֠Oi9 +''J[Y+HCXI y銧obm)c&ݯrEM_Z,-st^^NZF8q^_3ݍt)su-ȭ`Wup {#ZܳeA3w qC%ˉgi[N+rK(= +%rO?(pٖgηY +=y>63ķi\03ұ 5 fubTc8kO%/s$qU1ɬq.r:ڵ-;(fE`W.tsw47ndr30q?u+鼧 +1gg%ï,XӜcQ+VtH.~h +/UֹZd6lQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@(8 RQ@4Zkd9djj6i'11cӼ?|bmV!vf?cڶ5fXd ( + ޤW/s"ug,$c'7 ɽIqFzuR4q 9W!m0(|L(ڈ5IchV v߃Z/k[ժ+KӬ͜b <b{TZ1ɌqWH;̓S滂9DuڣqyA-&$F ŚMúp +7~9-&Mv83 +ev1V*zMNX#<߼ȌMߛyF,!z+QE((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((B*I֋J[#Nl8~j('JǗNDZ+)=6Hsdҝ Qm ?z`E#c0}*Yl ԛDʌc$" 7OJݎ9UO1pÑޤ/FD6fP}M.dčFjH8Nry5_lIz!ܪq֜ZA9UA2E@Q08^?QNefcuTڞcvОvu\8o sg\vIVgF$R0⢎wwNQ7F؇ +w&(W)tTʯ}Nnܹ#dr8v"+X[8ػA]m}P=?*KgB$p8OXӳzJq#v߆ܽ%He=jY*le~b2)DǑ4 +K\ |Z?ٲ p"vJZ%LmzBN!^08#dӋ=Rx$̉Bxv%Ivh+ve[EWVZ)0Z\t䭣J7Wnӓ՜;s֯ZO% +@y|iewT~P-OJ*I]JD۰t985Ǘ&b0>s΃[-)A*\g9Ѧr+dw)cٞ;T!S{T)gydck46t+tיYZ6i\*@\ f`\sҶ-ċPqUmHj.ARsNz0wgW7xِ.ऐ}$gB=ɧmu%NM y$p>.y֜FdW=+;f<0i!q%Kto;~6F̏h}DWEWمE8+#:Sdy#e]`sjF+.=ʾg }9H" svIʾ-~`6̒#F9nj&& Ce#8|61r"n>d6,Åz6Z\rPuj:? 2*Բ߻2&S<׆=6b0ݬW.Oa]fE8A,C9k06s?J-R|{x#; [Toʴ ([U}+I mg +:~+a=$}-ӫbRԮ6c=*{yInTm=Yp +1/S䓆鳾Uяe6Lۣn3:>ۨHTF|GlEE=4&HҢ&;gq#iAܣq O2VU=#韭_CU;YFdUiܻCjns!ӽWo]IGhw0[)? *8VSUI\ fhTFrqXۅ3I5wxHEeheD\5e~J ~wL + .U0xd*> U$hNո #'wspp9ӭ.†RG;b12>nNmSJN;30< ۅ9v-UWhpw.핒FœFqt)Vhdc1ZJ њ"@cVI fF4(fW#+.0pG;+ovd~$1)YTjɅ}ƠpɀsM8 O֦dQma g'm$c'ӧwxE皱o#w/C$c㊻7InƟ6Y˳.2SS[-|m@PJPȾt`9ϩX%Hʭ£g-ߛ0́傐AOգ]F9;|8y%< :H#xx+==iGYƦufj%ib5'yz]a{-F~ VMF$P?x96q\͖! +zݛYr["B9Icp 褌ִNg +)} VaXuҒH΢8ynUX{1iWrh8MPԿtcqHi j>p9挥nb+%$3 #kn MKFd6wUApc}ݎޔY_#NGsڙ;}환+v^; mB(/6;G("OfQ3Ln:^L:=: q {ݥڽH#2gH=McHMĞWm~^?""Ѧw(pRVܖ3|]I#/,cH-?ңD29:v⫈Vȉ +3֋9ymR>2 &eQ_[mq hȃbgIy%<,ƹQI{,d|=*n9l%Ph r l!$[&%[3^i_9dl=>O7*m Gi,YI#.yv'cR)EXn+9׭?MD.maV$ۂFO +Olz:;|9 +J:U?6-; b>c7nbBm.wb3]M!X"crzFZ]lgE7l-VYv<*1nߊѭ]: +"^Y3=}YSZB«;^3T#<qS\rK)esVQ$rw|fy4vJJ&^]*IaHEHsCnc~ϧS_q;=s&XJViEb"eXؠ6+&aaݽ0=9KXnڧÑÓTKE=GyX>"][C >\ YKnsH7 6{bZșe]t͋Ct-wO4'bjETJ)k,4[Y${`pq\8ݓ+s:]ոH}Q8Z՛,u6ؗŻ&aHq ntܼjrw9GSϷZC$"8*.u.St THD c@ƽR<@p}ߚ_,?ʆˌK2]joayHw9$sNsY}4p~On٭Wzٜ:)fBNִi'gT*1X7L-i=5eL?ea/mcTF')!?!V2%GXnoܘMwh촇X-r>y4MnOc'eg04 #PI2}j{?tI_)]-qiφ+.&2wԙEF*<ێTkٕ.cnMwp7cV.-bskg;z}þHm,&z-Eǵ$3J˒CGaVnPDa)xcgqOҬ|΀^O,o!Ik.O}8ǚ4 %5>8q{We,)ȍ_jn.f;sPX5oym= @ʍcY7D|];$oΥӴ7bBL2m6dB$"]{iƺ݅Tbq FRX S5RK cxєEU7|G66<9J;&#a#)cm3ަӚK-NO T:up{Pe4R5厚v]+0[<ϭhj`+:07&2yUCO[eʛ S߿fɮ\[Ks7w܃jpOAMUUM5bI`31\0)q~3zV:r4n;x$>FXM@X[G-UC>ڶKLhd܏_ұiQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@4OD4iiYY '9^S*cLUD|FHVma7T8jRשN}$ `1=?i,qzboD峑4ۢǴr5FjEt8GVg0ă׊q)m" "7S-w$-]uR +>I&+.v\c +FG<$ޭ!˸?.v5g͍%mo tm٥w\mJ]H03MȌg J+/4؈p1CDfH˿iCn׌}S,ON*m'v[8u->YҲҺ,FlU{ӓrK7M$[1R,dpO Vwll qZC*~BI*y4CUZlQKuh^ h@V"|u8^mIq@#8OHڮCbyaY$lGI;vs aO8+yhHFH; i6]8396ajvqfi2I_K+%foih %T;dOZ1 L*m8 sҋUiWFy'{AR?TD%<@{ӺN!Ƥv~Ce;ٴm峜U.8c&XXd $8D*RvESpJL"_y4wLyU^Sj<&GϟSR9fSf9\0zz:\DCIZoSXӋZR;&ym'@vyQzU9qqHWb_,O99NwiIˁ~?>b9c- Jʎ{(Fۙ g4%D3G  ^>4*'_\XD<x& MRt2{ÃhjunL_֜77^qwҪ#ۇO[{ERh4Ć1ۘ2pzRVH[롡G;^` +q?T@a"N*3DZb!c̟l\Zw`VYa7Ehgr3ژrvݢF? 7}(E.S#c*˒~xbxf#v+pu*pϭen8ڣT)IYK-l 3j#ȥOBEKtR{I.**H;P} Fszà[ʥysXkinaUXy `qjƣ!Fp? + }FWg|OZkWMGh_"6 Dw XVU|[C"79ϧjp8={&vR470Sh61 .p +KݷM2eNpMtTtVͷr=@nNRAVc;p?*0[♝=HH~jX¢^)#8cNYbS< WcME)7~7 r$H +WsZ7 +R@fFdUL] 2ye%vwЛ Kk\ݓ?!rynPd#ҝpGn):%N3,WfhY I9Z[21뻐*D&g`094*1:aR +w8^Z@#'֣(PeY:!wiA&1y◩VI&P-7p5lcm jP# +BT7 D7cNkrYf)Tl)^ib俯$+\Hąa';m>nruI*R$xHS#֕2]Dbwҝ56mp;L\G&OgNX}k4im<fO8݈TJ=3QXO³" <̆Nֵ"J̻P +e}3);t.փGq[f69K-_M4eFbIsW?Fjy~C! |ۉZYQPe{\ҕ/'p6-K\d18'I+E{e"F`^ Pmsn+.G9C+j05Ѻ2j*DbFTeOu GfmH㊁F9v,ǮM&4ޛB*xm +L~^XZyyǥCqd[`@sh2s#,B؉*V1RԆZZāztj-x}+R˪KO|Eme/O+͸z\\ mq\W0p Q9EGVػJKHXlqKo;]w!=q,NIXSջ8 ḅiMqmoQc|5+xY]I'=Z'>B7nj7Y(s╍}RhйX%"Oz"=`g>p*6K&B7:)#g*gbHvå> ƺ +55؇gKRa`۬rS {(Gݰsδ%TwK||w¹yrFzڵ'mmp<3.[y!xQ=6ȼJ ̄q@6ȿÜ44e&C|/1 |1SJeHmǞd9UVξS!v@R(|8Ѩ(ݲjfoc=*=ftUYD[ +-ݍ8cVQw"NF&T\zˊfJ1$Ҙ">yx 95$]Gi{g=d_N\wI,rc *8w+sWp)Ѫf>3sX^'lնZ>Z'[bU6=õ|ȽHۚyP a{M[1cz[\dsc9mDɌ9+2 Gɽc$vZ${e;Gi4F6۳PpWuYKqBWҺꖾBɶlc{=65uOTw0mE-7-XI/wFP +}>+C9.2TZi%d {c5r4̅sFOsKMYRK(D.nj}*kx?u$Tn41f?7$aIzdWq̖X\>DsZ wDi +mpqR}JYV0_mFY2<⥞H*Q-z/Mӷ[cH<WV$NsW%*#8d}?:[ *G,L7F7dJZT8lػ ~NG +5:,dVL 9}kcQt顉Y[nSAV' t>7FʅۊO8늃Ggyݏ@ +Z| ;*J PY]P%II&omw4r،{j7f{Ib$=EZ&2ʢNcwwq҅7ڙu4PJLO;yI-!8##P)ZaTFm|xhoII" [v78sYG=Ġ#caSDdX+Yg4e#w6qʺڀXp=qWF9>tq:oLIw*7J GUOS,=sCz +Woޛ81Om2vڻS(0-J2#\cۚm܇SoAnOi"E}P9򨴫䰸GV!)#(.=M,nHc܇!W9s7vלlt-Q}vVe^= ]55]1G-FZE6=N7t4h濑 u0 cۻO*rdҙZ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( j8Ap1&ȴ^5@%q7.9hp?4zːsYc-EQa.rzf.7cђXs#bP{`vNۛJ.v~]j@fzĨQܪjrrǯ5mN-ŹiaxB#o'TuAo f +[J,3fFx4к=TZ/Z":9z72H Al*DݵݲO@x͂ 隔iEuJdJFDwԶɘ>fo4Xi+>tC"K^K`ٝ~mq4`O3ϭ#:[E}(d/}{Kpӱ>\@DKD4h(_{o'"V*2jKbZɸ#I洒QLքL.a&P2*m sҩYe58GobyvSV'Ps*xecAGJ~.9'tfӋiٕQ u2;|y<<ӌZ0rT(4U9}?@99Q#MAo\бb͌w5$;& p*Hv6w&柧^+m۝F9=js`n}Gγ8?Z|buͥ;$gLI 7##׭jʷ 1,~icHI`NNGB{tU`RHKq*wCUnQق)f8*@upvE$nI]ⒾOvGl9YN֌LFND]JY@?vݢ#ǥ]ʢZQ*/"@[4rdX66 MJmE8 w>d.k߿V(w8o>mWaܡy wɪVHV)v3;LTc-ʸ#$c)JkCfd+x=yU5kےʐ7*楘IOsYv#39#E%JF֘%y3&eXFKi(v8 +^+3$kKwz?6a@$Nul;w;4!v36x'6k+#ț"v<:Isp [7pKy-mRN\0{S c&g'WQ*twq̀QE֪/u$X6@p620NJ=ɥQ{7R}XsU;%L:H,q*xbeUO9UUTat *jQBDs* x#0iDק+;t U*DO2q#̊b#?4gUVOaK EWhY5ud$ޮK,qu9PDbAP S5tvIsSiGUfFT9V 2'vZc1Gj\ "JURӹv9`E*sT+Ep85s*Wz D0WfKI#nW+qlztW:Ɗ#z0fkneQ}or=9`a4o3ڦӓqm\*<k# %`2vjRobehv*8 z`vL:1QG H5YmZ97I.1@nm^6~bMf $kF 88Z5Ż|nm=x獐8B}pn K +J#*she@\y歶m̛ی{k.woܻaxxQ4ϞH项mV/9W@HPv8c߻QO8^$)!w+Fu^~\`'jUӍޏ!a3ڈݠG bFF{|e] =1iƒ+,a;I^çҦꦶyR:ju hINq:zV7>=TMs2GdNӏN}iGMʭ/9-lfr).m~4Hrrߎ}(-?7(xc񎝩'3>aqcp35e$k#ۊk9&7^x/UXyE C!p۵cPC5דD` >b0wߦ1I$KKl=sOZ& zҲ#J8jfΕNdVA2 +d䱫0rR9Ip>0ܷMqSPWBxp{UI#y!Lo|6͸sTt!|1_RWIEՊ:=qޭ4\*ovHWr[absm٤uLWˡgeg欓lS9VK—Ӯx棵yW+oJ:مJÞnZ)a#/1SG*!00T4p%:W "O0+]}GJ-0YN)~$vjݺEdFdPI#۹8[v됽4$\Ox._4"J z[]:hns!n8Π.+d{c2l .sOS E7Y9R˚8ʛor$N{֠>Qn=I=i',~IٻLq٧$<)PNJ2sm r +11L2"` ß'J7uԲ!g=sVMHLmqK#yy9>Wb bt1՘?{ݑeh +2G`wf^r޿Zҋu'T-.~㏭Rinc3c򱍀֙-r~aJv(%ظt-ZeT8;X p}+4m2߇@.5\ʜn Srs0 y5jrb''W&MJ~ܜW#}! 6|>@:.[="oBҗX![^MG=omF:s+VO4"|g=ywHdd] 5㠍TACڳn`mBDIJhF82 fsUKp[yd\?\x8U)Tj-[Bm԰Fft]ǓZHβfd+ZO+>C@_p8֯A`%@OsK[Rj~E^OU[9䊚2@ jx'F1FπH ddxr㷽fKOPwFy3di¿qկIZ"9Yi2wc\t15O#f,'VXrD3gIsifXنphi#w;vwRhZsj˨FX\֭ɩܑ(;xjQ lHO$ /lr ]M"5 T!nX֪n$gZj0!vgF*.-J U7&kJ[4=Ѧw3cOzˊ՚8|&IǮ=3[1A.gݰU +h [ky$he2>j{Z?sֱ嶐;)H*`+x_]s\GH$T,ô=.B>yn[̷8-TFJј%.7.ÑS%h%XX,lF@u ⣠AEPEPEPEPEPEPEPEPEPEPEPEPSIs4wʃ0*( v]:|?xO8z[Xlg9f%#6#iVm4c(J6Pv6b9`i˝zJ.-`FbP eo2bvf5kh"css]}|GLUd:Ƭ\(=BTtpѲo1҂-IyI=O9W&{3mE884Y\0$fܤs6ZW +|ڑ^;iEaq f2Vv +(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Mq(ߞmB|ݹ)&dWvr,>] `sdc.Y'`y~3ҒU)in8{c)C5z7E<7{Cm͞IU9GW1֠ &AQ ܰ F ԺВp=)RH繨ÃJK&yWDR'#gs"ʷW$6^LJ +c_H(*hIF;ѫэCނeˎ0EHcoy" ry%āB1h8V +ri{+ l@0y&Z5A0`4O+(<],S?2[=[oxmjP5JUv|ӳiJ|ьn#&1)h3[+x֞ҤblgAjŵ̻ [XmBq?ƚnN1$mlfodyOqЏ”S$'ҩ狋x#A!PhJu$+d72K:"6a;8$cpqU"+q8\m汵+q+WsNBRI,j! ++`GkgcSAk]XF ZC#eQW-$Ü8GUy1RI;')Ek*pul [ȆF+՝nV5iTa<ac[Xݼsï:hQTAUH6U愓p:o2S\I'ʅ@?)'֡`5mJ=,69|az3zjQ ` +0F2G0RY?z1N b + gQJ5%* +]miucAX($=k/ #4rgG8{M;hDwJ߉XC+ 9' TE +T"H[+s{2,. ێլ{\E$m L{Fd L`}hܓf:F1lpZZkrO!8VQe1UʕZy ;:PçVT0^\m 2T?wtxăVU@Dcc֜[؊Њ\Z?DZ 1Ҭ0 /7M֟=7{MEN=wJQO&[p$o& 0ln*#}F=c1[3ۜ^|̈́6m#h;Q`q,:=k, ݻ/AW,.h$8qo Bvf@Lnǵ[[$`>L?YcT y1hU)u5}j_J׷&O*HhȻNimxpd8T@ng*68Xv(+q׭70qm2n:}B$bRY#[RV!-]?|~u4 企+'UY=Q]lsϿZ8gDV&)ڙkt$ӌZV] RKx +py!i ~u^EFSby%xی4k^,e, +_R9XJ8 UJ9}jK#6bIFV0? SR;kå6ep? +a4.!$'5z06sKGG9 +W\E[ +1.9 ¯3mH~_V9ϲeVV Y@ ?NojKhYd;)PCWή_<͚[gz&CN:ū ?g_%ev# 1T֠kIcXd,sSsP@5Z$T@@+OüeIϵ=´EUv4O8P:be:okǞbT|:T',F`16{UK(=&XM᳖V(CwUz-W{ +0={;+*;`TcIQ](M&-VK*JdsӦ1L-BfXTqJŭcd73g#$fq8Ek{ݠPٌ'g$e\`K$W< KxJQQ原tQA43"_o p6Z{T*TV2nN;#`f{ZRXIn'1#p+f\BjΠuϭWa!;G.n/$>PʱWQ]vx⡾D6瓚XLEo=H4%f'+Dh#*7(nZ{'X_ln$u5- +nDíClfvDcdqEgH%,#1ִa{f=)I+..㚯5`'OQ&:KN |J~|8 v1CjЮ9b=ƖKiLe& +S%YR|@ylr)]R} Whڡ2@ZtᅳzڪβcSrV{8EȺQ,Lv,K3`EjF.|O<+fR-#q> TH{o_U0pwKL~Z1NmO߹ GZ}bܶxVqzHY #=qM\G8chr9n$c+&|Ōe8SA.UϕYuid 0yʶ0jpѪ*3*;&k\+KQ\̩1 pϧ)4*1w׮-̖8*IOҭ)3wWi>l>A8[y茇n秥Jp4ofҢ]29XnIg%B\w%ďN"P҄Xd ߾p9M1C& !YZILe{Jbi,ۻr}jp]Dx)cV玟Z.`P-ֆcQ4FTwYTvʚ2t7^i*fe*͒FN's\H&8>RvQ嶊6sGRɞ0sOi|}޼W>C K1=+J%Q#y.fN3Iܺj>Vy\ys,4'Sq_JidݙaPz*:III6i)A/KP$3ZM +Iv21~5Z Q7nsE|.%IO ''q\ܭxꯡ{ڙ\^Đ[ǹ#;*]?U6ٜ=J'y/zkySrވ8qץ iN4᳊$"#H*vJmѲIlbg(Ѭ08^GF?ȻzzlPVn$5Y<33mVPd+m#y[!`9;;mVVOvܕb.GnX[i ֑܃ݞ}ʼmg4GqIu o~ꮡA}$hەq]NgM`6g*FA?UV Q`x Hm.s;jzRhVZE3JPsnPO,L+{X5 :;xF88=O{k T=:&Q(B(Yܴ7zd+AZ(oj`+ulUP9#u _[lYsO#@y9Jƪi4_kw1USesb\7+wpğN=:F!Kpcl <zѲf; v ;A*ANr}V^m;!~w6=;TvB*6آenVή]nPID>cg')W +tTB9ڗCWʧk_-7QR.nLjjeuY'Ms{mVek!H" +'#tWZI!Vb18*\_1[\@Q|@صڟ>ݹ'=YWG$CGm g{ZVֲY3i%ïJRmVmB(yjXJyhNl*?6zzi @ +p*fyp`?JNs>RVIϷboܙ'=09ִHfS$dŶaFV @xk"yYXAZv#P6bJo49XܼHۏ{~&F I$zu">[yPF}'Np;`7,è}ny֫Z@ݼzQ˼gvߧz3l`&Y[9ހrJͫ/%DާSwx<9Xj&$oI; =+,lc!Y6O?`".Ukz~ՌFnZ w"=Oi"18416y@>-35@v0.0{~IaLrק3Y3ʚHW?JeMq'30ݜ9-$0+pO€q1 +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(.L쟹D!OuUܮVOT-Jp^w6Iޭ=6r)1m'j7١UdG#PBAPw$E*9j%v1y@n⭼ѦPcqB!đXrROBA^".?L#dGw犄+Hr48^j+E|L1Q\Tm#pI'9ϵM 'i= /n9:}EZfṶאzQp:+'* W`:Ijjzt_3[²*{u̫4ny*DVVPsJK4֞ke:d)"dگ5rǧ0AP[nMTec*Ԝ%&$boFNт{qKyd4! 0KM,gJoKrIo&w '9aD ԓf>x +V\qK3~ Mo*gVl@IDKV\7[Mw9ݸ) 0m.p׽F! YZAg]D-G"B*S+H Ǒ V#%Tk17 |xџ=q-gsE;ߡ.VSjF!!X1TqonZ(eW$V>'yg9=iUdۺ PLy`=GRD|hRDaq֙ldm뼐H; +dތЈd + :HX8[b $OOp:+FWk6p:ˡr yxXNIP,&ImS&\E8۶@sMo9x|J7SRr'^/J{lB2ߑ,VHs#!?[YUWv6/L`/TjN-2*ko02G4:|ɇoCnaќ.>?ZnJpi2Iqa8< rjY.fL{ +-/ooJXSa('5.:#jUm NRS3C%>x짚5TnteYvp6]ͥ$dEY"=ș`g>Ybg Ɖ篽 7S;r !d9Ҫð=)V]L vۊsX̆]ۚSz5"hXM~^RcUsylcKgGu +=cO=u1I:^ +$$mZ9'ˬ`9VH*_1'LL~3^I(I)KӺ*ON˄`Ї*ܧ˱rI\ei[nrUiݝN5k :3b~a@HK[wyS99ؘW "eX3TAE'\Ԑ2x֬>7qU{*nMwBffHKw bLcUبO;4Rz{Դd؈x^Uʡ't!~2p{hIw3_ڄ݂TP[r!IiH|ÊT 9NjK$%g%2D[NEjQyWC>KtKh?xﵜu C5dC^]U;4h߶gD{W;*͹fH5~xdaXr.1Fjp罴E!$qm.:jܔ!9OvxNjZv5*kг2g'?u +7Q~[`8b{⧵2Cih*@1Iw5z7yؠvOIDţ }no>,[DH(=;Oj:_"Hn"d'xۀެ H\#39r6$vuW59 #犌qo68U& ʠs߾i,g=;zJϘ$z} 96$+ox$.bt)jKWXcrFqǥItCk8n +0+R2}^no~jm#1Y{pq٥j=ZTV ]byf VT -$t皒( X#F:}aKh^)qgvzsLErm$qӏ_Rȯ8n8^GPyQcHO ,n0}0*ժ]G}pO0alPmU)"SkVj";F _ƪIIP>A$!6q&[mЀÜ(z)'ʩN fA' ;>ۥ@ah +Wzk>IF1qu4M!PmG=jPEwc qfªR ,ecl9Ţ$9_(9/$r$c#8⺪(CC_ta ztԳZ 8j(es_F `ҥDޙGCMrN}]gڌVnٸ $Zⷉl}zҡnU*ಎk;+/c(m;\I$WdTfpO<j dX;mRC{Lj23Ly;&[9Ҟs\t+vHN'ߵUm 5{nu5bM6լշEی0᳚s}dw!p%1?9QN4-0@5,膲omcmscn.6${ +}.ee+Hp#Zn̟j=r@)JR3j=/FrQ`U][D@]d CU ٵ;u, B qgw};xg-|R~nM.l;Q:aAqqP~T19]G#Z7wד +$qYAovWQFw1+X(89W*\MvU}mI*Ah\qp<[Hb>NzdjգCi$q7 1 +vB}glk.˂98[lqckOTL=+T0_-N9&hdvȌUs853 (((((((((((R7qX'#5^;;ڍ&6N;f57X's*کZװ5gg)d ҵhh2JB1NIJ`0*xkZQKT[xcCpy=j5m=^VU9GGvrupǎ:z]X PIWxl{:U!?|vڠ:kC{=̞Kě˻'7vo+`@ǧsUR=49ֆml5Hĥv,d=HB(n̎34 )Y%vgww;dBpp}nCTucǔ1 w GLRU#]0 rKI4 +vPHJ(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEgF+$h]w˥O6o´< a$n"뷮 +BN'`r&jk~<m[j޶+C q6o©~4O4a- +:;)e$T{ӎ.wΦE|MO[yF$PעϑifQE +( +( +( +( +( +( +( +( +[2 +(` ^*4MfYs +~_Go~5ˈ҉e9d1PJ<m[j޶+=,'y ڷ +?տmW%!呂)f'}jGJy亮qW/w]F>vTtRB7\۟%_GEUQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Nl!=*  mAuݹßj!H_9c~Vz|S]w O3#$ +e=xÉʶFSeDB8B8$Pn.UXL wͳ.8SqGi!V[QNZOBK B\ZJ-"eG=Gb$㊬~ -P) SzȣvGU$l +[z\[(zڧw DSHszdQHw RA!BpOEB璩maq"PJ1*71!# VeUx ⠙^=H@ +dͭp:H,-<|e]<ڝ!_+?->_#.p < YRv*qR4 %}qR0FI#qoŸmTGZFUzQ䊝bf(V Z.$xNI;!A':xEIԜJsb$Sks}imIjo:[(fϑ"%`?x)l-?7zd/>[|ۺ❞ ʪ0X&O/q9ቷ!pz:G3#<lu){7e7<}*'M0\.|,oi0m1R3^^rTṁ{ӭa+l6Jp6RMXG(;HU},sV}jpΥNr#qVrbG;{dԙRg;8ZhcQ{D{hP64)9a_TrEi6c>,bSNDE9S˵9adRn0(=MȎl -ml>Y%*K%W  +~Qս߀x* ÌqV@huC.d 8ϵLKl!KZ]*rgGv{ XBTNΤڧV|)'Ej/A%Dgo0:S 2o 8,QG洞^Bj:]99)ucG8&G ]xU-sZl'<3@ڝ })O[ v=xYot-eD]댓>:NٶVg;MAH +c 6)O%$meµ3,dpc*MATP@9q6seRPr9| UF&Q ,>~Yr`PNP-|20WWxsh+nbڐ* A=:d3k5NA;IʂGi+>o~۬pJP8hhm %p@Y>H𱒹8""K DLNS-L$ӥS&>ӊRfF&00j"lu[S8$yݩv#>,"KvCFC+vtT64VD{ta;P[4H|ax9$t9OL +?jg32[B0 uoJȚ;ibHZR̲Hf}jѣFuqcց&ћ`#$F ` B +kIL1HFArqY 4RN6qVw%J(vsW~Zb2Sxc0#j=i$9FXk<Ln$er6c5:Kn%d`IZ/vLQGp皥4iq;`k[O."Z!@3b5e7XQNj +n=RX'CL6j5HA c>Z3GR;V\#=9ѹ?J((((((((((((((((8CW p+kn|cnzw+qzWqOP|3y;xvazu-`/iM,D6X0sL uR^pY#n׾iQM41)p͸$Ϧ*+8/:+ÏZkt#2<EB~Nm:xnO3vS"LT 7 ڏ9\o ~4Q7kRX|ɝǑ5!ȘXjfrc+]j̗#W;Ϯ)](ALMs4O(ԸtO TB H6 +*Ure73Sv⋡(Ȇk[ۍWީ[+]ؾnc,gְu[gݟ;6L'&2 :_ +cs*JSr[oqte`tW#QK'#x8=Ӫ5[&HD*RYcc1!jiBcjTv +rOTN4T+&6qfKBL&Õbv7 $1K݈~=[z=Ι4DUWpU:MNQlFHO^ژVBCo:-  c?U- e2>C wTz-ȃ#0;٬hmvH[KI dN}sVTl*4y5CZ w(F9 +vygYNJ1Ҫ_XKJꄑin5xH L=֩c]hyn;1Nr1@MhdE +( +( +( +( +( +( +( +( +( +( +( +(/ZsY4eY緿MZjCؑ{'LgcǮ(JnX_9mF9<;k'X/~l5).Drrf/I/mǾ{~4W6bZiUG|<Kg&hB挞yְ:ҽKējVMo$QUHsXTQLI݅Q@((((((((((((((((((((( #"`ڽ~;8na9U =k.Ld?rGt=̏{m/ QE^QEp~:<(r:*u[_u2FH]؊9g E>2( +( +( +( +( +( +( +( +( NmSValGeϽ&WeSMB;f-'2.&?tQaK^<'&~J=(6 +q2J9qz<@s~trWwLfY<4zA!e,J3p{|HR3 <\a>r3I +BJFܬy8Zvcq&Hbq,{g`F Zxr;hppB2W5 X1^&94~bzuO_qAR*27eF8 ֧2TH梋ʄr?ܽya 7~mqiǙ]XE*("P5^,dE#HAf;iqX3Ӓ$ʪvmc(o4*8#JO 37d9#g.FGo& q52}ŒCZ&:9?>@?98MAyZZYXf2j8&`T,lG̖p+B$>*3=H$EeĈHT'IR0쑺$cZ4GhBOzrFU=J+m?0G_Xf_ezXUSs8;{;dq=չI+LgԘʝ@ohJg!AxKJDQ F±eyKy#'l|Wz?iE8zPDČGS#Z#,2($2|bj[BpqY?j˴`aj$r97ۙ[$נZfA . ;NӒ{sSZiQ ZE >8F[?q*ޛK:Xw~z%!8Щ1Z:RYo*OgFҲ%E43?}+[ Q +Oj,<ŗ*35k`✖PZ^b\IftTqɥ?i#ϔkSKuB9#9)&\U=ݶ&y #8r\ZJ~>NfE C\KcݾiILN\ p{X`1N +րh9' i-rl8TYCOlmYH# + +p1Pصٺ2(ͱv-p8zt)z0NME or*v6XNSQfP)V}ZBX&p }+]༓jF.mr7[< Zbpj4ƣii +%jyj::E}RGY +)[;ӌIkG ;2 櫴 U+j9^GәF2 nhABIڦۓm5T@8 +=s[KܳPĺ#Oݴ j;CqUէOb8ٜ6~U:D%^]21ӊp8N 1H.Q\txJRV& +TeJ ϵF GUE_OlRqB<\{4_sNDgji6+B5ip*1B[q+ W=Fzηᴒ@#C'hwE2ۍqi{s{8"+++[6FF_]KjD {U cuIF:ʣ0\NIeusXJ*e\?Ͻ$|sܮi_GNJU݈tjw:t_15BU;ކdpȧf4qgߜ1K"fv9=xm]ň/Z&|V!D]$c]J]$~5Fl A wiFdcsS@@ dFoz4lu9 gkM.I~eF9O ;hxZGY\9)kD )qLK&$irIǵX.00@cך. +zy[8:⦶&S,05 .3$H[pyE%E&Չ'3F6rtzU2;'*\2e7_Z0s֋4Qkbe_}g2|͟{֫BO pwV]@sbSOȥmgi̙/\c5fkQzX!(G97gB Vs33тwmܞJP^ s\L_?6:Us1'#5YY'!I *ʚqr[˕ 'A'oJkz.'e+nyjd=>Ef ňOMeuz9`ida[&;8_a{_2$R]"1柰'E'+"K䃓T24{24/*+Ϯ# +]#h>V8$a#}p}:Qѿ&2-G$ g$ֆ6.eP |GR^K3EQ\ǪQEQ^y,1J僱ۿkJt؜OtWO?!8TՔD\F jȏ#q[}_yW7NjjfC.1~1Kx?䷐Nw:!x7B.>?kwTW%w:vOsZVH4q*1zW2:eȑc(|>Zg$Om}qGM~^_ ճA!cATU%TԑIt75~OӐ--!\{g:*ڢ\Y%6_SX"@f0W$ +ڔ.81bv^e-FAkb=q`w|ۏ<Ց4#4h)yRKs f:J5+Y&_9P6J$~J{Pѱ\d^ -T=r1=~hV{v#bO_r2C)>PI>DBB Qjp^jQndDlm + ]`H|?j| 2rqJߑO'˻q֯E>n$BGSU-,DcqAj%,sSUʑVml_[{Ps)ÌvVϙ.[ +b:|3\*ޝq>Bs{ڙ{RA($VE(8̴ԣ+0>q1/O~=u7 m}4]}y8sIkKxw +azɴkcȄlOש[T`y돥]E8$@*8U'"+{[D1F~GtK:?!\K|p79ݐqGsf7Q_M0-WmtU#I;mF֊y r`pHjE7 aY}R6 yrmG'Xol$:hQs9qm8@TN{uYlnܙEDLl=܃Lz;ۓҫ(?"Ώqy$mE]2GAzG:ႾޣV\jr7Ȇ"<'#S붒Ƹqr;u}My$r$*o,'`F3Ս)$]2D![ qZ7}KODobwg#NF +g1Xɧ2$8OҪWPڤ77R:^ %U:M>%TX|DV(((ʬ +aݘc(|'Um*KJOCP]Le*NRV tcxzlF󎕃@fQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@X& =5}8{K-"9T2xTKJܮd>?]xa' %bhFQYA^w}3캚Ƹ|u?z%fkhty@7kj9&a~q[WRA J +( +( +( +( +( +( +( +/g{j{ qm:dl;ʽ~R,qUɋh򮧿y:;z_()lUA,OaL[٬6ķ; y_u5YvGWF$> 1}gZ/@+S(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((#v+33\ 6GR$΃ZXE=0ǩ})_I[x٤Kmh>Kh4-bS@cm0<{L[u2 +sڕebHۆ*Zi +v>ksx?0tBLd40nr0hͭ_ט%HIUfo=j+j=IZE c` ЛZpՖt)iMJIёl󖤭rhlX NȲ֖5alA=ic!TƠt]~~@S1#oYB?3ֈ\$.A%>R?1h`7rr})-t4 d"LrsV2ʒ;0P +k3s C*2ONMsŒcu]&LoN{RJc&03ޤ rޘ B`=W]̮]0PcU [>AǑ@Պy9 +Op̉9xcx2]Պ5P{wh"#J3Q 2\U#B8֛2O&E +á2" $NӀ`8=iD祕a`*Xdʚ/"($eCiN{#̜QF&Ъ=cTGv䟭GqAԳG(ۗ-sǷN2%V#ʰ4!UoC298Shnr3VQs$Ja+Ig*`H(O<}(BJViBҙ|cĆ}*i +d9Y!D9Q]|E:oaBIT|۫_0޼sRؤrA${ͨfU10hzN$ǘ68ϥKxbX`c*8'ki6MN;qUd-m2rG?K83eG T-ZrNiC,^Y];!1ӏZe-yh'lNW^@W/48lHgg-pxq3b6s7]6rk#8*<Vn.ERx}>۝G +Os} ɖS +sjR7Z'V2\<٩*}P23֟,D)91;4̜5{H|͜3J xğuIw(fyYоs Ԅ-RhYqYĒy98g'FRf;T#˞z?!#;qV2[z٨%,]9TצrOjRwغ4ЗlEuVUPfEjٯX6;-OZv)[f::r7tB?w$[*ŋ`K(ZНHBՕUrG[O4b'vOjrI8zJKpN"6VmxU$aBn/Ė ^Vf5{_.f4٠SU +rXIg !hzi+RSRIu'aaohmy'd֡%g9oz,~{sT2sI|g9UBǰ󏛊~*]-K0 8#L隁¼:TRL-fIwJcx>ؤ9ϱt<3GxSʌ{g-I!| vbv 1hkJNn|~ǀEoLPwY2B8jqo_fI7W 5䚑|HŒP2•6( Ro] +5j/=ebb[9md; +Ң;''>Ԭn\4قLAbGCQ)E|D +n#NK1mA[Iݡˠ M]H +MPBHI$Uo(Һ*&EEe T2#PO- +1nȢPK8җ'}-Z63ҬIg*5BUN#30A5/SܴgiQA۞º}w|OsW(ȭlSlG0 t`<10z~5Rats$#eeIsw1t VfD?FTq{6jB6N3}ioq,gN›fCSi^##'5{\Sqj39sRyϷZzD1!Xrz4qՋTW|p8|pGcEW}(QEWo$7_'#Wi\||$3Jn/4WWE@ _Tr8:ՙn.ZMٿ 9"se%w1ܲ()@zm'ՎI%`9 jj30}F=*-dI"'>i;VvIs#b݇-[{l\)m$d҇aF5R_zIoV8$.["@2>jţۥԁ$ +51 +lH!6Z;י2>͜|wnv^i&u.yYBGs$㞤Й)-. +2{^w$l"h<Y0hZiA2ѤiX8w$$֫~)ʖo.R$U]>Yl,۽S8*Օ%f\oFHϵ=Lմq55e6k;XA,m'VL]2c`kBD}a +'0 ۊ+2 .~[hf4QY  ;UIheV=y늁mg7ʛI9W#J L9s[F>Y]h+X%8嗩#>Sf@@O*򮡪Yf2H$|pcsUКVLv *m%9OۨYO3$ޙS4Wo5+`sVMo0,: `&3q!Pޒ*~Us{~2 +<=53&tn*F9O-~li~FBrS[Vڈ $F?vV()%{}s勩#om9ڤiiFdۇi3 ֬K$]m>g͔M ͜ Ȭn@S^wtkCAeİ^lь>^Nq&k FO(7FNsFgRH5 8afXr@c榵Ү s"Yຂrj8g[eKv:|qvxcJ[XCuݎ{Zv%/eJHL].xI +6$s>8;C*0TPrsu7yZ2{{ +=9qT.r.kKQMN?*k#y<9jKMONR M&v.n̜_2ŭWO7V[nL8$@ syawr>+6ySkLvbs +J(f$Qd;uv?#0jdhQ'D$})wM ЁTGl O%ïz泶r[bUC)M2&1EjaVTyb#vTJ#w 8M4I^ՈbGQ¢1XU_S&rh +anf[$738=hͥ1>7.z{|ۤ98jK̩Vۑc'CF$a*ˁ}T6;- 9>ޕBX r 83Te{&]ϪBZ}v$nj IӬ.VP/0qג4Z62*GU(Y[[pǐ +XI?{8b(g98?Ms$&w]8i1#n,K# F{gzٶVK5䉗5#<GMgz[[HnOלtg1:D嶃 Q[+i-ڙ'#<Z\Ҷ/U6%0݁zխULLgtkUkXc`>S>`w}3Uc 7c.SզQ$q*1 sKkil5ȬW\g$F?Ql&ey?Iez,Āſ~?Ƃ/ikkV$є3pF3+ "QI!xF2w=}%2tߧZ s77TbP=h41ͫ \<uz9DcP\a¿$qקwz6,>Yv[~wd(lS,$HX]Z w f)LQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@,䰽#zW\yi'1ʡbꛢL_EN&1Ter,_i~NΊ(8ࢊ(a}YiQq CzOg EWl~]84 })$udt!NO40gF? XQܷ5ìF#<ԍw̪x*$S4FI*4npUhz+'JHn8ɒ˞ sK䌆rj_68'+:^֤had0r ^]"+x[ft/RkSJ[ϸD1! +x!M8Ƒ?`ϵy.䋟#I5S{i ps$~f Yh%#֥MU#4*N~܊NN9V%b#SzeC`zgPŹ#ߚ[:-8GH +A*WL&!Z+ۑFFFOI^{ȚHW1$$Le}Ó߭[KxiFnHRʆ7 8Q*ST_*H0d~Bf,2Âj[JD221i@Tv{((Ѣԑz|`7suCst +y}߅UHa&m]mT%nړ]2m}yO$,vriڧ"]5 .\qB8ASEޝ_.ٞҮ"ɱ&0zզ{Au +8ʓ)K)iԦ]l4~`?.W9,d'ڷ4lTi"bWP'`*VTٳ2d(,R Onw"˻`m*ԙVUGjՊ\ɫ:N֫dFy1݃JtV᳐ m̛d oHUs<ja&B9#MٛFÄ/ͿEpEdP0;SI| h fnU&G`GPZGT c]a dԳFZ6H>VYJS튋.Z9ITn|։@L.01۟ʧC~*9]/@>m=[=(UHjY#X 5hAĘg9$AH9{[%-Gp[zv'yi9ܜЅ͊NGjTʹY0FELfmB] $bu16͑i$.2q,N7+!wgR<}Z&D bw&q{C 4 yqp_¡$j n=K [OΩ+ Fz Rv 8oUÀq:wI2gc9e̬tu6IhE2 w2.2TV#TL<}j皝97Zft1RK8MOB#HI%ԉ#YFvo3r@woF +u|n*pi9l*ڠ2G9$A@`4Pf)l n J! IvA fآ;JOZi8UVyNUc*YPZeCYZMHŝ<B$yUpX;nQ"t_Hا]MPaxyiN?0Şin_dLH$3DU5qr7cȲ'*+x0lrݪt N B`ڰĞ|~GaXy_z 1cp +Cv`(dx&w6OM(o2AT:YP,;jPyiaB5&Q\9"ܲD>YNcw_V'm&FxhkJmM$Ҋ(8`(:Hw3m!3g8ILְC'(}}?S̝4Xo/&8g˃泞Hc`95֠UUIeRs<SX9|9 :Q{iܴlvEy54( ɳQL@VB7`j-y~7'^sޒEn{߅mAq/)VFuSd|yeS-/Z"q t'Y'˜3OZhNWvh ,FӡP/HtJwben@F#TǾ쏥M 2ijvORkN2iI$}Ʃjs򘧉iG_P$A]J 5,}ZBE(wH<Ьji;[^~5÷NAOAWȆʌq9^sUaYm <ۼYqg=)^4c/N}Co/z㴊mA$7ev~Nջm#Ho>1–GҫERyi$}rl눍̑ c߭T4l%Nޕuͪ c^7پ]V=(IHm7qK(۝01UQxIĘاxgqVV@E.wz{נƽYD&Fu8N/nY=iasS8ʧMH|cInNp8'Jv):a;]!W/Ts*;fGkn叕{Gc'|n? +s s%{$p=hMYT"i1F4u=ͷgpxRR|7'=)MqhYʿ9ęBr|йQw,,!wycU[飁tyjrwBr퐻p2z7\ܖdRc-4e(kҠM>4c0qzREM,Ho}Ys;kd|zS%EF<ϠR'",KzJm,[Ojwc!׫&;81lۋKap:r3M7HA)hWԣNOeP06g"+xqr@N}sҳeO,3C/Xm'iMYٮ"v|f8>ި{E4ԧ2z~R6]E~I1s|l۴Mt=qקv6}.m@Zk hH}Ïkw$rGS4G8v۷+rEY l:zzrjMofjV_leY I@S^]Hnh?#үVۥ1q0>II#<$I2osJ.%(걣m«=HKAcMogI(bW2zVfn$Ӊ8"qyCGF$r qǿN*M`-ՍվﳮÐ9j 6+]"~e+ZKiqb?&?CTa|.EsbT,X$j[-܍4 +Kz+2LPl < +`jiqaF˰|qlb]M#6#Z:!qaiaXX UH-ދoo U< +18~r 8ѶY?[{!>]Vi92u{),uI9|lI\5f$-"1 +sϥi$W7Sv5C,`| Lujyo._h6KvI'=27\}4i9ޓXӣh`0@pF h/=$OT0n0;Ջ#R=#z C3 ++*퍻Ii+'Ny5 ^kRǷE=$P֖B6$D"e2-#2z !pAFU1u4KrH%qjH y}*VhfkG81I^|FnBzEEh^yCHcXҋ7Sn5yC\yck.I^]go;HG*<0~iZYŨ{s3`AS#k .ظavz:~4:y(~pPH{o:Vw&TG-xsU泺٢Tlm󥿶Y•G -"@ +R6%- !II( FOMfH6[?frr!Hwuү\[,ʐnI\!ϾHpp21Z:zYG7-y9ru,0Nz+67dqWEGe"pUpzuIm#=n鬚"HH8yγg93($Wn{Sd.D\`7͒\ +uݭ*ɖ:r:iw3&&Hyc/w%3*yW%6a_.TF?JGj u+3_XB2,gݣs51_º09'yy[_<Ҋ(P(((((feԤ^qdw=Ok'hKI#Uɯ_lSMӠSuˊU(B) +$˜ύu_6ķ<vNOμuI]Vkv0{(?gWB$,|e!l^EVQEQEQEQEQEQEQEQEQEQEQEQEQEQEKoo-ԾT+l ȨVWn=z /Wkp((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ݘd{r:d- m,L#1yC +}s9P{{3*{۸Hs;\?݌?b5Ǜd@WAtF"S3ݪ9YvLڭ;^ߑn,+r=֠FVf=?:{p]¦c[h +9U9fydW\h&@K?Zsn lӴ c4Bq$u*w)k\ۭFO*ie y\`)RDxKSTuJ(9B2}a4(VpA>\ycj +*yUjqoBլ}8x)8&iO8EE%F첩!:W!rMcS;&1P1瞙?ur#"ŀt %k$hgqSdJ*ܼBun6б*d~QR$5 d gDeئ6s&5Is_~?e@b!K1,"\⠚A^#kqMEe^1o^E򏳦i+)] N_=RLΦ&34 +/)H- 0OsVRY8康X!A12x1JdpEQzUy-!zԊҝwʡ)zcMv + >z~AVgj$g5g)J1M/;犎]]'oLw$^RYy q4e:,jČ:T.JۙyO069MFbb8Վʹi)ʋsHN+yqvݑ1ymH^Sc3=t1U'ZR!8ib+;7Bpj5̎UQg5 Ǘ$92c FL s0; hv?Ҟln*(%EJFˢ,^2y*8Fѳ܊wIb +H,zU9#"!:?]c(bO ߚd,hTyaUN`C5TvyU:sXgIB k$|\Ns=U9k`۝2!*!?/ 6v,3^WKqÌq+BT,(,қmBI\ *G0:zT+#t$uEg|wӱ^G1Kj+] c#Kpi`CrLoʧ=)^Q[N5u9ާ +x8֧#t瑚|P#(gwց]]}q&$*r6S\,>{W\ښЬU+`VlwH!!r*z{]?3ZVB$b|;Y@ߚ<2knBw=*O` s)$ M-?Eo\X2GjG&I$ qn`#pqMSՎe'ӖZO-ppGnybajۺ7rqT^!wwu8ܻOJLvrO8Ң("N8lUy'Ut3#E`#+ObEl:uWTYpGqܭf$G+DbբP$:H1u,\Hd#1(wͳ" 0:qm!!` 'nRK)\tϽUՙ%ER-|;s o"@.|bLU+s`Uǭh f%`gS/-RB4򥳱0_g:\ʬo8qP6#md9Z9c999ғqqz$e7(f +@d gޣ6h-"":w6`q֬55ʿ:M.*vMaЃ 'G9 ZeJ7W=zH0[#xGd8ɥoҝ![S7W'hppO>՝ya8=sֺY.D2S mc^]m@ec)Jn O»Sq[ح,Äd9BK +3qJjx͉yMnDg)YJF-FUiGS8{q;b/u??}!<'|?zd'd!2_9`>zskZ@WR=*-?O&q}k9]/.!7~\%(j|s4?Up=1'TmuE hl"0.pONv!kB{)m^[Bio4x0!X׃ޛj@ی"c'֖R@ +M}6g_ܚ)!|[$x^:+Dˎ8fJמ;EJ7!C)8Tb $#yx#EQ6ܽpݙA2Dz3}GB1Q DeFx$-$~t.}; &G"{P4g=oE4v+H6dtUoghXOzi2WC(ȍԮ Ih|,OUwPVU'#ZL7G=*ʗ 9y2ē=ZDO>zWLJc%'ȫM;Ft!L.:8Ky|֗s DvJii!+GH8QGaou{(tF6>QR-AF [Q,f2YQLus+.[x7+m;\wqW%]%\Y<@ow=1_i[{WP0d' vAo$~aqRGrG40w +c-9UW!:ns'~5q\%O, 䁂GljuVMq +/m]ۈL&1pKd}SRVr#lE&䐚}bs;vwϭWMѠ{$܎ēZ(T1Jղs}dtV_ҩ-Kt( +wv& 9.8O2_X q9rKK|6kjv4-.Ŷ>V@5]aB3Li]_go_}e4׿ (@6CG5m}qg"MA" ]pAf];= %MButvC硨^uUgB*MB'RۃFa5. B/3lbZnc4\F_+[;sK.x#x$PT-)YvcLHLR°-$Pjn4tt|h!G=;'pѴcÌ`cYdT j_zn%Q+6qO'4rY[΂F"n"!;Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@4Bmzum6P}xw|$eo?,tL];Ǚt=[z;(BU ihqҵywF}T³q}OK2[6T?ǥ8vALK1@'y.WV'ǢN4Go->]L(3₊(((((((((((((U,pYHԨ*ryOң3jPƩx5]xxqkxf+A +0Ms&irWF'x +yqGJviS"!F,WX,!~W`]9a} Y&6yiʡ ?ך yW=Fj{g%>^NGV.%ިYyw23$qKⵕ㱹[yqҵ+Kgڦ4xY9Z,)ϙƺ]&2#CZMwqsjo3)I=(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPO՛Iٷ˻VX͘w1HnlxILc';uBSYr7*T[JHeb皎]lv*קi.azb]9tL!|Ƕ-p_[R\'ϵ+hZܦ@#鹷*ϖVJ%r;=hKlM^f13lΚ]_a%ĭ쿍ZY FHw)cIQˍ8G=,ڼ>a^ReII>yWB`7g#n1ҩM=GRWV弩+Jvw5Q9QVqVP RHM9(((((cp1 Ps +nNwcHa~0"*`jDU:+M[Փ` +|ɦ!6}jX X%1Q32鞴.XZ]x0G.r3ץ'Li9QRڳ>eb8?;LՔppE_j,s%-bY a*'2yVq@\Udą+UdiQ(INZ7), !yqMPѓ"Jrf S+\ꤥʹȭy7 6VClU۞rY晘0F)6pdHg!ktU'V> +=*+G*m'c}1X *Q1ҩTmnvyHrJHԮ8FJL"|69dV9L-}=,,pɄ!l ]bt_wU'EH>4%)Tf' )M ȒA8}a5Hy+3Xʢ6{EĒc5mz{U/׵C6(sޥ=.mR K"1=sTI, +N Ƿȼx<.'eg@018Kvj{˧ V_3ˌv+W<(G5y#jyܬqknDf3Ot&2Wv(@#/N:{RDu-f O*[?6;j8\0B'Rsm䩩B _tXϰ)]v/hV#' +P)#-9,!X2)WTXL~ܑ>`i2J -xeb@e] #'ЃvQqT0iYČ g nyRQXL/ץ$)]lme B̶ݕ;T̒w?-Crٙ@sJc9:( =sKd~f>bx3mHXc֟y. U?d2ZyQ0g`qc=i*T"bpRG CŘ!L Tpqp'9!GQz#`Ux>c +ɩ\S!S3gx?6$m}h ;]G<<0`@5,jli2O4ܗ'M :C228a֘ m[sSGq.K1\7_zRVFYSn>{dM "}HKh%(qWPpYtF>%C'svcu&8+`G8)XIҥЎd,Al9lRs 3Hي Jv^Prޕ#Il [0cCG@Nȑi#ہ֕_:)$ܫynFͪ6:Rl+pDb_jqv5*㸦p\Tf75 ! )Îzb2jNCD瓎7\=Jhڒe>RyZnJIlFYF [+ ]Dl '@! TrfhLe65+dwc'N6"dcIY$`pZ$nDcgp\gqևk8s({ۍE4nx.3]%dcNKy.@BW)ϗnF`0*O1@nѐIݹqX>t +rIY v&8u9֡"+$bk[c۞)40)|Ɛ Ͼ}G?/~GH+GCnˌgjم g֭i09l'?wvP+7-FR(B(;kyuI-YLxF= ‘O1s]8wf32LՀݰ\f hV{tfv $mv ?`<}(d bN3y1e +f 83Qi[X(]8`$=zTO>L~U2 v q z暺ULnRI{v_zzDo"ŝ~'gIx@<mF9[tfUp5^EL F<ҧuʷI!)4Hgf^6}O9Oisˣ(q1ק\Z3hmL 6qکmLB#g;1F&Ȟc3OHxnt+"I7AO* e-+6xZ|:241b:涵;m˴g@.9ndKz7?E Ť8#̣'ʓݻ{D3i+>?t[kص(do"9oZrwSPa7gò}B3|I:T北,1G<V^M)&@#ߍ^%ͬ^B!䚫= '%v0݀zMb{eXK`x_Fe'ҤvFqӠV>I 0݈ʌzZߙM]R 'ih܏IwcޫymE{}18?ҫBek|pNm T F >q`+v!H*.v=ɕy0 +uܿg[9*>fu}W76"FU-xj#:ޔq/ɓ})٢#VV`*u H-#pgڗP#E{B 3}H g?s7<;W\C6HJvn~7 t/Yjq:_5TDP + +ɶEKtn^֎,Rۋ+ɒ,|1=F_*$Y:H?NۚTq{oܞc|UJxֶdO5U=vsq$[ mq:mq dWǯ4l6ԝ>40&$)jwt-;0oxVaCn:cֹ}F m5 d^;du_Lg?2\#4ٍ'nq<'w,Ry67A2< Iz+Y&h-c Ws\Z4,qA>ԙSMtKRBV#u4bؼq]Zn1w08֍2J2ɂ E-Z(Z%csZ3N2ەtEZvc2T?Z"[ 3*=BA(d0zSKcqI۝ޜ)ra42GUx Y{9q뎠+nMWM.YBDCspChFd{K][{3遭`yö ;yb{gh}K*t;7lV/ VF8NuڂsZX?Y:^R3+I3S;p1kSNicm<=Gia0bN<#[gpʯ2؊ıU\$ѩk&[\^^c>3eH}鶞t3- `/Lz5w,6%PF:cj 3UIā{i5sXqkc}HnW ]Ͻ`OOozD.LKc$s[o1-ţ@XO'F3"̱i.n0\coVtQRex<ʚs>hi^$$c0:g=_)D?y8_r4ng&[scj-v«NA=j RL;cU}W9MHC]UgRwJufFүoC5@)B)m#C)s7^zN}oy$kojycvq:bxWĒ\I'#ŀ6Rw?Jd~Ȭ|?`ORz$Kemio oF&P{R?"xwV)͔ϵbO_ڳō,$:#k= +]ΪN2qmYkTXmc֙)=˺;kX.Qeir}?\M]>`9,BgǦ}(2觤R;H٘udGFF*UPF ((((X:gw~^7nsgW +Ǣ?' I'O_(((((r#HꈥTdZW +Ǣ?' I'O_({l+5{k6ۺ)nN2G^T(((((((XZκ}ٌnzg?_ +O z+c?пG"~$U)?€1;Vquj@~Ym]U{rH((((((((((((*֝{&CwލQ~"I՘')Gt{LͼssO+6I<_s`v?+ثޙ(u(הܸ=+ S|_kC-u8Z(#り(((_ilվ"_WwLѡ?%x\skQElQHHPI8M09bbkw~ujGU1!裧hS䅏Y9- +(8(((((((hڞq}/O[G^-4nsu8><Ɗi ok3J߷% 3͍A3# ++g !&z~J*?g:m[]3/?f}_Iqm[S|Eo[OQH?~WU7񇇃6ݬKXTLzL+@Š(,$te8"'{[8Rk9 ++7 y +贍f #J@ܸoIS}/bA}Kqmin.w;GRt\O0;g8x}k[iq |uڙcaisdJ ]ygs|ʸßZ 9ʺlYKsfxȇ/sj敧ܝXYwU8銭k7n [pn/qCuX77/su4Frs@Э,-dյh"UV$!ֳO<"0Z$Qonx!7෯-t6ܒ]K<)ZnIJ!} Wm[m#ҭx%b1?G!ad\KrsUIv>W@vUHt︝FT7*^LPO$QXf(W$=HT{T-[ylm-mmJλkIUҵ'yn-ԝ܆8U$[ *dbx*Zކu5b \tT5g#M;0(((((F=)lJ2l:ST˜tSI;1+%xRM4FbAx-c+s$uR3NIJ&sN:YBSRhCn#H!($zS#ޢFduQ>< Vz Ia3FO#Oi^G'b+nqI$go.3RVPm ȂeR7vCtFQ 9M4R~zNXSU fgj5+y_-O|UæeS1PJXA IA4GkX,衄@梸s|˹{v@Йd{ZQ3P5CVwgR5"gfy28e6FO5JaPYz2OPřfc УYs$+ſA켞8;b s)yI[w )nHU"(qPT +2bJdOZp%QF< ɒ@'pņUo@ϩ~x)})3$>P4p tk:Jۗ2Fx *F~ʠ)9'ۭAFAJW5l_ɓkc8HyǭEj`>.sSEJTՒɆPpXc84Ѹ%@ q[ ps~S&ު>fU׸ЖʝD$Yp6Asj/arj*#Wif+6,9`p^01ND3/$~ZZ?#;OQg|Z ѼK0rzfP4Pm'KQB +3QI$F,NIˆ̔Ɂ $.[eE#WFH5mE;{;J$ln9⫼QC/" z{K2 ˃SI97He1d:d6s$`l''ZmR%$˸㟖[;GP2 QQMoP@ +!ҥgi@]I4fm}KvVBpqTP14@#il&9VX (4pBUWwJM2ɣ[$ْN@9巳4l=ZkM:y!oZ{;erp2U8?xv +Dd#j&>}j̒muS=򲼲K$J`T8551$(|TUqCD|B`2sЊ5\[nGvOg3w1R:haڑFV| +I- ˰$q)e?(a mc9NTPZ|t: 1TK圷^gt;j:N<#VSԒ2j(5;zG\S&#?S55!|)Qۧd0>f_ +^*!USOKΚrzi.$h:ɻTр#QAm"fقO=[d|{^b̊HI݀%gKc +I;"O$Gm mz6yĩ}<T"DF~sڧIND/qM*kj2UiMWnV2ʫ"miа84pu|Ғ|Ҝ#n(ϣ +( +$B!# r9Wkw2n uRmMy2Oo]+@8ȫo~p';qgֱ۩OapI]Mz-B'xC])kcu"}?7-  g,n)$|sא1*K'MrG Rm5`!QRVKl*̙ULq$O'sӰS*f0yݐF9ONMc+.G#e$m;2I7p w-/k\I\cM*ȿ ;H5FM lIsޞЖ--4#g+vg>ڴzo!W\p J3(IO'zei6k% `?O3$&m˝ބ4I8K ^hf#]pctyקR-ᴞK>Ɛ.1%Y"ey9>ߑ+_eI$L?ۧ}mfqs(IIia8_Ed̼0>֪S,lmOz5QZY͔6Uv?d[nn,'|m /!\l _Vswԣ%^V+sJlרe6~\PiS˂5YA =Zb:xc8{S-DV6d嗐boqd͌?0@R=Khs+ n=* "15_exwZzF{nm[iP-h$ P m7|'ڤBc<>V5XfIy[Wes7t{UHZExw~Ac$E4zsqt6NH?JHMJ򱐸9ZdgI%g`biB% Ix(' +L1yMI$ɩJXH7Τfoq&rPg9l"(_|gnn.6zz׫W|Ha5{xd('pryQ%%8}nS)cVm]٬Ehcumr$?Z{Yɦ|GZmms V3[ei]LłRݞ?xTnn--"Wv֨薏3e֥-I$QɁ" cZblO<ғЪP^/66E2}ҪڛmG>҉d{*)XcH]$364EKc=M%sVݺf]Ic\۷gj} *1ȭ}JFG$###&Bk2e1\c:uHƴRU84ڿ{s"pdS&{Y#Y@|Z.6zMqǥ{j!r(#ѯv>r+\ ć^Ҿo3-.T?>l.1ϸ$9G6:(U=WOU/4gnF3uP Si6-d4s4RGcj41KI6-:rF:d^C]oFKWi>B]ߟZ$04>d'n#`ZK[k<~eTw6SGlc) +NFFiUErI ?MD]Yɥn-ZsCEeIcgqo.3 Y!Wn?k.!F1Bw +pJIXָ[f~3Z`qI$ +FT3}FcċնxZ\O=ZR=2&ɨLL!VaǸw +<|LҲ΂wXduʒFy N[ N䞸jl\Th#_9Cuo\cf F*y~_s\~`vmN= +W撊JcRs"(8p=m1&u5-]sGG~FxTqY1 l<{dAU4akMRʂ6n)(L׽ϲ֤GާPlc?Jj8d #9'?gx/jq~wظኣNMk4QE3 M!Gihe!~wb88Sh/l!Y,l2H 6>Yn<69`~5X[ofU'2|Ͽ8=;c#xk/ͤcG#(jpF[ۈl2r8SAqJđ4RKe1PzԺ;ܭm@v}zfQl^(G zS59H&x'N}= 4눭 H'#Ңդ]Ng|'nv>RG2Hp N*RiT7;N +۞qLXEiibM7["o/ϥfP& +(Q@Q@@~̿4ۧ֯iO^@((QEQEQEhh?0+CAL1_w (h'cR$O*Z +(Q@Q@Q@Q@ih:MjI 3]NTvQݘ5J{˨myG.Y؜s_\|*o4_:cZPnecOGSoizm3anJᦓð=5P hTe1?>MF6Ǽ@{WFh)}A?Q@Š((((((((((((( zmn }cl;ʽz 9mȡ^-]O:M:FOQ\w2{/-+>* Xl涔e%Bާvi,嶔bH*|wyw1'xt?UWN|R?>a>zt +(9(( i:A0:zs ~ţ q-}Gk/>yoa}7 +ja~bkk$($&_έp dt5ц;ga-?ˢ+>$(((((((VWZ6vV\\c%,}>|H/*]]`|}h<#ľ4peK=k˃%zPk|- ::I]$!=բ8"Hc*" "l6@v(cU((((O7ö._^\,> 5@3|4^Է?g :o +[+- mUyr1{ڔ*+p">*_3u~զm%Oa-kFT0>⁝>iscuk!cr˓֧ kۛBa]O#SxwQյ8f1|ݜ/zԠ4VW`,F}@GKihIe%kRO'.'VJzQ@ڟzKB^_QE ((((((٣B"P7٣B"P7QEEn3Un3UQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVۣiB g՟E&T&d9ɌsP$N1"iį5oj8vI~H=^) n3֙tćFgc8I NbEХvӯ(w[t9syG cU6B%)X9/Z++$/ZwW+2C:/Z#*8%AXUiNrXfF],pS'`]7(B믥ŷ>uBt\٧ K;~)PǮja+[O~vU9-}nFiο 5~MUkVqsqu:Ukc gR2FQ\)EG8QEQEQEQEU"h}x6s8tamϮVaEC Fg*15%ԨUwA #\"&Nk=R'. \37yヺ* +#99B{Tm*e8`$c=)#yJܐ1U b= 3K 069Ɍw"vɸ#JUj֟7~ϗgj9>,R āk8+9ZJHc^Vݐr00{U+ɁXHۼec$cL ru_gI|gew<oI#/'4s40$E`AޫC?{5(~-H5)k} +32ԕZ= x1@/@3Pݎd +V-i?q֏'(.G֬X Jp7qfY8 {Q5aie̐ aMCߧ✫?#Z[a0JTۓԒDhJqUCdx1ӆsHSJFI6Y#(*Ԋ f0Uޝݽ)߻S} wF}%q1V/`''W$23_Ψ-݉vWQƔܖ#JM3SD6RQx_"4]P Cw%]:0L6XǞ2ɦG$RW7A֘-$Bo tnwuLѼǷK9$cnM[ғInÀiZ\ۼ8c1C#EMnRC~SZKݾ:s5flⓍ +Z!G1ĬFZN CrpSC;4đަgyx6~knDYHTg $ 65^9i>fvS2'SGx=*훛RE(pj)ŚFfs՛h`yd;C}=sÝUm"^dqy\T 7 +7$ s 35n 9gCFޭk#ԔoJާM;`gYu8ݳ\_S\WC",~P;Zq̥#=~ԦU>`F- rEZzgxIZ"Y3M9@ kdPu5ܘTniS~^i;v\>z: lpK,6a7>pfМԻmFWr%Kf72q{k;[ iۤx%w\~5DX>#j̥?R[ 6ԯ Lm.88 S+G +s*^Cskbx-?˕HJ+"mԾ9jKfkt!Hؼ17 udj6;8ҍs4ͲuCsR! $Qd朘1u1)['<Q4 %A?/_j%F'w8Lzr$ h7 5YF@SY^Sw]F6)]!?T%Q}Ozeu#R4b_,qO\MLnSϒU"F1J273"0j|+@*G?J#rȧogWCJb@IAS +.%j([k eW^XBw7JFqj48*2vӥ/0};}Ii'A"K%`mҗwWBhɒ=K` 3’yZ úm`Sޭ2F#F?xf2SWRUK/͒?OTݙ0䜩;wNBf8=)lre;I9$\՞݉8-Lc[) 1LIqPGDH>|P>H$H/tH_:JA䎴cH K|p~Sör,$ +4I{ܚs~1Qz=Q^qEP^xvonG=^\3t᝛gRUch6+٢mHn]qzeGguw$8W 6գRDE#Sc2J@,`s5̏afb1U{S4}RNi-ն5|O=3UIox#P`)[̑Iw$󥩪{7nΙ%+C+(z`{kNwS&ߐgq,)aڔTfZѯ-іY㌑sV-FKU6|wVȹFt_1X9YFldH +Nt"\wTm$-BU\7^kE)YI{JO}0FSBGRwQR:9қ} y,\!O; +:cK".[x3A y'nϭbIMgX'W8jJ,URkiGa0OB8zwvфʙdF#E2P'O<Rs!\)lSZO$i!0cN[Q6c;Q#p~VH\ylrٴ: y4dzӠ fe}Ҵl8㿦{UY -}>φ#9zdU #{zFҒ!4Cq495WbmSͱLPI8N?J/ȻRٛ7V7S,[z;AD{G6%cs+S خ3?|aw{52(sھϼ+ʾ5:Wu=De&kp-ӔǝʼaY=$Kzu=-#d, ;3ZݽFwTQsZ394S$j*2絉lLdt''cd܊ny(P[:QӹϺA$i?I4f?-9Tܙ -݅A'? +"#jI 2\4e u.mmڤ~nҪ1Ozζj۬*59qޥh ݄۔e#tbۈ,; sNLO> K26YJai}~m9==jw+{%>qګ*IsIp.Ǚnp:PDѓI]B(tMa夺W~+׫g9d@VR$5U<ڮ.m`)#춞'K},[~tuM,۴m^z1[/+^E!u^90O|[OyCk烆}ާ+3^ouyvoaFTpuED_y'm%HTFd'j,favR>rEt1]ZAgci:&w'<~S^X$QWF l+f:`5wᑧ+Kp;d{zpv~-;IAsg2`@J`~ȿr 9e4s1*&*1O"'IBHIiIƜ[-$,p6ޘFS9㷭bëoUĭ@.z~5lo,ې# ?J,TgͱI%ށL{]E`s1tv-ǔ_$u.[X˩ܧle%xդsJROc6X#_)ʆ ~N{sӀ?kW}fov"#/ҨjO0HŔwS@5O{o뱷ßJ7[aƾկ|*^#iYQm@8wtw9 =9K^C?i~>ݍMD^\U81v=zE`H*FAh$ώBjžL1 +߮WκͻL3v=> [JӮWt14N1ن+B8tvPWfԀpːzKs`2/ o7}@ES=`IU.vڤX- Es֞ _{YbNL 0g5Hx|օ٘xvP"E*!ްQ*v/XM5lHeYG==kKL!Im)Yl~60Ye@UF +0:D-ʀ3Q›OKCZwe-'%r@9Rt{ۅ2.WvpF;}kLjZOʷM\m(w.)Ȏ[["XPWjZ֗ GݹN}6m_u!1mҵf>X #Ҁ< ( dRqD,8&+$x47S7a( +{iV9[bђ*x#k^Km[dJy5f#~];՝baoTa8#w' pn*bm.MW95?fqLC6VB8f!EPEP/??f_kW ( +(Q@Q@Q@:g}a?/ W(;IaXT}?G<+`(aEPEPEPE_~h?m6?ְtXKAI6иGg#S^E(_m<IuKVܞz{s/MuIݏ^C$oUЕ`{ֽƺo5Qw+:|λ0,֏9(B(4]8ꚴ;!uiE.s2: eZ$;/qwhuj* ;REyޅR89aͺ6&;/ך֯uOm^Y"twy?eWB$-LCh(<(((((+SԼOiVk{(V{fOwr8^Ԟ_`|9}c-Aٵku}v"/ i-֭*S( +(K,pBM"GjYP:OA@$I8O%`MNNu&Elr5~#VK C!\94~32_x^8!yDx:ܕnc +0?|E}"5ſ!5X?65ޛ +ڤnO unT~&}7Wu<3P,~F WךmXOkpvX$(G4?HhWu>|m53-Q@ Q@^Y[j6sYA)I"w+؊&:">N] >{t>jdG4OFUCP0]\Zmzܮ*$m -qʓ`u??iQw/ Ocen;PN)]vWr_ZWH5)^1k H%[\;FC[v:s@5- #eyqu-pI#=*ҼAԴ8k[-B*$dʼJ{WRhݥpvaC"B^F,qHwe҃O>tܣB-J@dPFX}H8i4gp n|ڜnQo>w܌J9#J뙔: SsS)h-Fۈ+ѐX{ǵI!F>sCvESdF|4 =zԙzSQd= += CiV*ryPHrx0 y*lŸjʣܴѫ.GQ5\Hp|`Q, |֒L=ĦC`PGj <j`aRʹeF<Ēsȧr=Rh͎WaIr1'ctVd$n`įxSh"ɎNs~*ھ-9:nZq<zsn@H +1Sf1(%ʁTwZȊ+II1gRyœ +zf0U2ޠy*m\L3Kg%wsNPeK1SjFH1#G +'EF;ʱȈvs٪WeT i:Bp;zU#.+1%)܊+ՐZ[I$rgI6G*6bE'3dٷ *sN^]3)!O4J1ZA/^g\EA$&K7j7ؖj2zԮ"lh7rU%m.U ]1Vf_:M U#rn6q(U(r2iVi 4rK#$dǹ斆J׵"Cl[-<84Mc#A`*e(rx +(:bxr=G=*̎oj,{JpZky,6j63IׁV '+P(عzBo5a-m[v)襭Q6)7PpqQ*]=efn +Kcd,7sډ/hpqsU$KD4dr}ҚS:Q '=bP0^w !Aޢ,ŕf,B"vXQIt%Hx9}r)̊1R~k&;|·ne 4c{Fi" r0i- qI՚w牥P9& -$a|/8\VeO2B%ϙD*wqE + an?+/<-xcl~ݙ*}Re[d ؼ+*&+֒Wʝ;gLsmo5y$Wp6 vCy8iM R*=V esҵVfCi!w)wgڪYj_haM'^q'Ze;5*r>aqRč86"}nJ+]BEYcH:{Vֿ'w|5pz8L:Ty_OYmI5wpڜ%9|ؼJbr_ a u/tpa1T`qu~ +%ËxPħ'ۡLjT7tzQVq^ XWQ#\Qnʾ;tYqhޢnn:kЎE.QFϾ +T[.ͧ9j9wll0:fMi3-!VjfHd1Ԩ|S.rWOcӮ.)+׌8\Ց̗2q,G~ZjD +68KMC捛[S:bkw7:c}Ʀ3ƌ ~vgaxyVs[汒wv0@sJks'!8s:uix-r}ID_ ~ckO[¿hܛz(jK+[BY,#w{zv1eOVQ"mjd:p|:%r`nZO(ڻ]\6E +U:Tw:TvIxM2'MIsXmlͬh5&)lZູwu7w>6rRэ’é9ycZ~+kyY Т|~5G:,菥|xCNӶD4nO~EG;ww +?k?u8\(62{ƾ6GQ  S?ޖ[աTyiWU:5ϨF4D|rLQJus#+<㞔K$@ +0JիkI.7Ky##qޢ>r~9A.7BX>0If3F!zR[D"3T24V$SpVnފ'~ϧ݈,HReH`ޙO rr0<cUm >4et66x94Okkooqm0"TpSUmCMgf1ޱ=Lڄ)vgHW$N*2:vw6 +vb?XHngd60BǦONEMԾ7しV|IژO럧{?8/ *ik3sl-E:׾ úJTz~;̏T*2^ӭu=i_^F@8^{':_{/x_SqlI_0kִ=^ wFm2~t#9k|A>6֔V6VrQ<&($k;nbhrFXB]ӬWd `^@®^XL\F1׏zZZy!pFޞցbHUđHqOdYٞ]*glG\f|jmٷ3K~va#{%P&QE +(>iO^^2nZQ@QE (((a?/ W#_qbAEPO4 ++;IaXTQE +( +( +(/ytVQ8$GOj2v<9($T5 +@=*hzU@Z[ H{Rzޮ 6Fq_ΐZ[Y}w/5}JMp'? nM%,ݏG?\eQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(.Wjp]v0׸b&%#e#5>~d|>dt?<];u QЖ QEV7SF\ʣ̋~5ETdN5`-t3;ZvE7Lt#%(#eFtQEQkNQ H'w?_lqUW!M3lrR/-|~:qU9ʺc}k-Q\U`5PctU>#?ueCSq;'&0w<|;KyhS"(P(((((^*Aݥ録:Yz{~ +|9ї]ԡƯ}(9ُp=khU kYuSm-{<ܚ>#-˪j+|Twc_)Bx5Ѿ:4Awy]k˒YDJZnĿՏsJ +(Q@Q@Q@\5KPM#&=?v-َZ,w_?=zX7WF*rZ/JBeZO>w|\=n( +ii:u+5f9cn_@]ׁQ66-3p#41Fvdwt0(:4nUᕆ>QEQE,Ks* +v8 TUwJ{MJ PG'ڀV6NN$\er23ھ.|$м6N;g|u障ڬm[(|@+1-$Frg\Ôh wEO% |!_w/j/k +(QEQEQEQEQEQE{!(?!(?("B7?տbB7?տ ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*HhƣӺ.%O֫UX A}i#!G}8ưn rvhR%%У.7znQ2DLYd_$}٤c 0F08Um}(-Siٽ\A }zumѦÓFjY$}isqةW5-bZ"=* OZ7AZ!$X5JzaW  ΢E(w1W*2pkKI]QE2E2i +Aym]bihoB'$AmhғP],3،h_Z`>nZ7'-X@[@ I`#'5OʅX)cqu%}(Kv"or4@<Ѷ [9Pd~~_:iۘ,HY2ZG"H9VLI%$nj/lf Q_>U1)e# +KM5\[_A${\銔7>G8B9B}BQZS aWȣ98Q; +1F,%R,FRs>;ZssK$H=̛6ȡp8Kw79]mR(`6Bp<`gz9lT#eeg!LT~LbWjraVH1 vAgJlcgZJywi(Klr3PF8S$!b>Qi!ʻmNjM)T/ :iEt|,Q 2!x +3h!j#6++.?1b&*{-.gʎA s߭i\fWxch.!Rp qQ}]KiRCU$ {R2t(QGSx/+K C16qۚ'<) +o p9S3H#eA,sU_9:D-& ҦUO!EIhT"al8UCU;PA>"yf#1I+4tԡ2ep` RC#bMQʞ*)f@ҥ&ԶO?1GV )w+4.vmS&KbdC##IIv*m 1m~'\+^T*,(Q)*>S&L+B + Z} =i߇R8'4Yݤ%SҐHޙ& |xA944er{G +:F1[w<y/iiIf!}ȧr)]p@+ߟISc;EW#d:Q4!q13Ƿjs"SpqNp6dH^5DPXݔog2dG4B<8^H'`60%DlmUlJ{튬NTy5;%O1}) p}dd+c@˾( :TfZu!u;(Š(Fw[5uĽ"=ZQںppS&O1HڃG7t3ޢ*RJm8=*k4kuy,# +jD(]Ⲹ;ϓ]ǫs_MBz\ǧTSum&A)vQEo U#$u\U-W$[G1;T`qE*mocz͒?)X QZc,ǯZ6"ܕ˨ #inZEj3i5vz< +5/T_; + J;x.sϢZ.r-zKk6Ti;TF Pw;#9TG;xZ4Y]9a?0è+Ԛkc:Mt.n[7pmt->ax/PʼcAV.R(FGM(ۂTI-Q 8 ~CZ)Cmob"R ׮}]:Awwish̀ӄZEI7`Ƣ'2~5l悒jY\02Snz~fiQ'Y.5LJwj\]"ps&I px$,J3s!PoN*xsS;(<93o_ %;t=x6UWkuˡ\jSsߊlJnl\,Or/N>om  LҴP-%cq|thԙ~\N!.-c9b֮ǤZBIe1%^ $uՏ[smDeP[9;"0抟Tf]]^Y-zuY6ײQ3B\8 Pp?o%mJ0le J+B?y=uYۦ%.9=1G1sϦ}*W4"o*A&*`돥2dI9 })ݭ̕(U|EEq2Q7 +}O_J}BV\98*3ӊGd{+XJ!1瞵Rs-BSEBkC\=BmfIPf].F*$spS##1隽qcs4 1`ߟqGdfn4鮮jCc$Og iq +7ʲ%zZ}8\E9*i9t,"OzwM(MI;q,Z6r#ޕ?AՕe{WVVG^NUaES1>1TKqķRzVT5;aG +g};t?4a>0T+{;kFYf(7>ڢ ifd&ۂ;P kІ9MEd0y`HGN.дf|/;Kng +7X@ꚋ>"9Y7c0أ #|IR[ӊE^u$nG miy6}(0H#ze(Я,%o,m:gUY5;hiPji!=bxϽ` 0,$d:בگ](z}kKaOz{iS71犎k +noLb.fSOIMBo+W?`In<\gOCY1YKAi!F@q׌-^L^J'69RTY@MZmȣR]IqYRi"oU\~"1c4D֩+a9}A5[(ɲz,SĵK6&ky!sVt5C6쩡T\̘- *;[̨9'=:Udpg;E[}?O>Eq>ިhx5MtRGv^*K4GK5AkmQy2K)~z~+]7Q2^$ʛ9u<xSQbْK\c׀([GEG)4oceTyFK8?`nyO/KiGֻAk>{sԣq_>y3~fZ^ rr?\T:bX6q 5w"O*،OMƆ|Mck 8/$i$ P8ާ̬U]^Ȣp0 CT VcowO=jo+E*u3E'(m5-FM*bB8<ųiPw^VVLlܴexF{c[UƲwۊ +^0Ωs]a%Y uX u*Hv%@Zk5oᕎ1(Ek.eXj!'9⢫l֟فU1wOLtU)Š(G/??f_kW ( +(Q@Q@Q@:g}a?/ W(;IaXT}?G<+`(aEPEbRw cP sQ^mocc^ǰ'Ӽt9rf4寀]Zd_GyAEP3R@P2I< +_HLh˩A_ߟ:?xCDu /־(aEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPWtAN0ħMY RIIc`H >OjiF)׏RqgX\DqcUu +(f"k'?/+k>c?٬D}dv^CmGA]4KH/ϯ>H. 5M|;+8mH(袼~(E_!=Q}Bk̫_z,ن?k"j!|&i!QEQ@Q@Q@Q@Q@C (^Y""bNX|"0rrs7?{_=|A^z8"Θ3`K9C+5 tҺ%/2 ׃T `lVco+cF1MBvw:jANTC&۞بH t'sŔ]$})(I(WyAOaGz\k;Z@#iYؼ\:LEi %bsʼ52ZYѩHTwkT`qH9GvʌeOXSm#*eȐl -%e9 \r e+#c~Q'rmxRcQ:N+b(V;dg*b@qN1(>s` NFVOM>{H^1bcҥ10B6EQM4ZEZz̅"t(_+IY#JjoUU6ܚv[vޡIUG;)UrX 펵 <aH})ħ9)e;dP:TI=˂mr:"KPF$@247ˀiB%]^ɎLwIݟVXo*DO![L"pOծKr*"y +K+݅lui(aZ!vҕv-CiSn[B`lul&6Ĝڵd`zl?%Nps2Lq>k-1c:6#p K61u>#F)'VB$< +^{~a-I pLΦ6 +z# w`[-^3= 1`S_?0_AVD#d{ҫp7~OjkBeih_ +p=!Sp%F s)KX݁@1"HThXqB @&;#:RV`(F,~ӺOB9eVfu*I wu4HPݜa$M"ֈnqW#Wu⢔_jFpTnn2!oFc8 +@ry=)3go9$LÌHʯ`c 6!ɤ+IBx9n#lf +\8;S$Bʈh )s9Gĉ$/M{Sbdrq+FCGs4[_d:Sd{&?>T&0V%1ʧoHg![~dzzdn ( a"Ds2Os9Yn[Z9a#+V 84塀m[Wkkwj9ww'Uӿɥ`\λ 3SԷqO"Kx8?ZQwS$y24d+j $!iRG[Ad AR(UR|ZGs&൹4QEYAyōmVH[FQ" Npax\&F UI5$X7D:.{<*\?HN.'c"[)nnE< +m0o-zXmn]>mqҲgʴZ#I4,* T%ͱ$:lާdKvHVh%:`5k7M`Xo*qҝ;RIjbLbĨL^yydibhK'hlgϥY&{#*Λv˷ ?LtPաex\IƄ~.`ȪJ=~-^YMY%U^([OfnݺMِH,ʳdp٣ְK$v4,??Oz-X1یzJ[]A42&34q >O c9 w/'ZI{\36GTCG5>̹ݼXuko&0[ ێGlEeJ-fLϭTU*W[]eVxZ=j9&vǎ}5&5%˜7Wͧ;F?zu.ԁEX./ +n($c9k;m/UR`g=9{y9*)t6g)ۘ\ozA=C.;JK .bq@RsqbWwQKd4N:5ak$vebNࡹZȆ8U S٠8jVmR)[yHwoYsrk;jvFO\'0،1B٫`"P6G1ZZi:*R.Bo#9,x^޹l›IQƈYrԮ0 ^XOq*Bv'b_.L/G +zxtxMo2L BwN-4=f&ґ^N_Oב| ТOU>YZ1RHbHkkUVWQK. -ay# ?U_uf Qe[p 0T7er!9(͚̺:-Û-ATyn*IБ!e}4x#^}).ڦ?6͸Vl`ӯo{cD#()'9W_iq]%%-rs2.S= +}mk$߹Kv`8d?\?TL*unۣ>+C~Z}=Ŵ^eޜ\_._i\\Ⱦtu4so$hB#W~+厭yksqKY1@890/Gs3C,CmV$[&['[b796|c vWl$x;?,Ԥ2[e#EnX_SXʎE`Ŀoy(dX?d)*bbxmGc:Ԛq &pq zeR3wA3yi5n!ۜ=Z#l& [0"fߏn=ȃZ_(*,>n~JּL6ζ̎GӭRK p ?11Z!vtpisAckSMԐ09JZ;C,q[\%h;&p7P]-w|^f sÙekqyc}u~2 W`}?־o֞~{>zK[:ڦkO$QޙIEhfG}søXCG*?_;Ci,iae8?P}?z]>LVh ?0־Kto"1Mi3h9(3~k:NYVi v_AWDJc<c [ +_E#H\z0}Bd%pUA"E3#OxJxO.Pfyd}TU7IoqP}+¿xjT0ڍ2\zW#>!b@F:JISw$M:Kuh&Hg?>\K& 8 + 3U0ivG*nlPl'w-uo߲v:/l{B5|1"<c+ym|pZǸ*r U[I涹xЬ0zY7vVqn +nA@}'D*xogGh@z47NДۜgdwdQCM4bb)7kqksٗft/?$((aEPEPEP#_qb﯄4tC} +(<yV?-|_OO4 +((QE` $޾5xVubrz{G_N|.`voNzJG}zWT(+ʾ1|N_魣S]'S?E#mW?yddgKQ+Bw̒X@1f$9$IE ((((((((((((((((((j/ݮJè]D%6 )CF=$log?W.:}C䛡-ꨢϫ +gIR.f𮒑2` +zIJHB5J1\GC2HT{>=;O?>Ms'N.ǟs+5TQl+I_QErVu_=cOP?_ηʼKj:6`q{?Һ0|_/Z/Ǣ+> ((((((hdֹa SY@TоZ\:bScw!#MHm 1q`ʥAExVՕ o?"A(?>)>(xbu%iliI$I$&Q@Q@Q@Q@Q@Q@Q@}G짚M$T:b!܃ǖP#( +⏇G~!1y$Dt6$_gׁ~z&cuNlz((Q@Q@}KIo>J%$B%=( wEO% |!_w/j/k +(QEQEQEQEQEQE{!(?!(?("B7?տbB7?տ ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+ӭ!oОYFg*_n#S#j)7.u5;1Um4Clvgiȕ u D"(ASv΅q9dIk*sK!iFzԩtِyꕑ'go[ʩ+E3o$6rS=ʼ6)*`".(BI]c7+B ׀y2紆6SP6Uhb#5%frF;c"bj?+.*!FCwtvhWxѷqK1mTsZfv"?.S8剱 'ẅRb'ބlnySQ$bB`1i'RV"AsR +^1AߔSu[=s8˕$dJp.9Vw;VD`8K#9gV7it5 Wt'Li`h]~4" f +=yTRoEnU`>gx➓O0*Zi +S34l(i)2x F*(e`T f1zO[9z.CGCeZ3=iFwcOj/N>1o/o8[nrGZvH{sc[@SH5,IN8P(ۦ߽ǥh]) $*p!rz"q[jYImȟ&=*[HFI%% ax?ҝ!r+J1Y?.۞8'9UA1$*T(p#eML2,OXBԞ)C2'UW^*KN iLyd֝V N2:U]dTr ޣC!E9h{+E]CʅK8"iBM7qz'@`)E˥V,,g9mYG0EpKl$\Rz+X۝5ԑ03g.T`zTl2}Kn|X{ T pOn1y +8ZbtJq֣򄅷Ӏ++; +xG2m',+ݤWz|evٷ5$ NH_ +\ǧZ6FRwzXyqC/Uli )K{TLxb-ڤi$0#'zo3y]330Up:һF^5 lZ aG9R +N(Q7ӵrsԥv7N ͎X?ʢA$.j.UdZlaHw1Zif"" =Cp@Qglt!1H*Rif㦄q"P9D*4(lǡ+h3p@ Ql{+4$MF +sHY#%Hhô\jI*4YM泛In'+NY|JQ}gO ļ ?q:1FK}Ns jq[ARWϽ/:'_qN&^K$ܐNiރ/ׄbv=>(0(:qN1E?=IY13zZv}hv.W~g2JTdw^kوRBtE5n90)m=sMrG\7ۑٖK.H,p(i@w]Uq*F_xzV8avnEԬѵ4c 5rIaG `fIp&#[uFAQEfU1Fym(tqpʬrW$[{cmy$g#ֶ6qQn7Ke& 1NHSm4fVI1rcҺ5la Y>%qzaTVМwcDxpLuPRK(X- ێqg["ҁv&zqץi]:EgXXz۾6cr1ޕ-SjZ]M 0Nr}iQ]wn#g3lt|-yr&0wg5 CRw{k6K)_Lg֠8Ǔs,_p{+6hspVĒLo籪vaNM/l~ +\8d|mrGn{Ұg҅:Z10'8<t\4KTCep_ƛ%..%qmWv3ۭNg˵Ho&x?zvz Jt֏^nHv#SgjXBl)l_}j'!6Gg͸G֝ +4}߷R9DX*G2?B珧Zӑ':-1㞕we}kdO#89~W0ɳ=zеOnSdO^^cfGH pVŠ(d|emNMcŚ 1GO켜9Gb6Q~h 8^{=J4kdq{?P ~]΋&vS;+!hQX_N5tH]d۔1qO£ӭw./%8 9ZHs']Xdzw+hƗZ[ 2*n0#\[Sͽ1ϭED*Þ2xiF; >`vw?{k5RkXT + L,fGT=ֆ59kr΅8=-psG#vͧI#sʬ,2JFзFG֋kpwK%ݳXG +ۨX}u_к(D*tYʗF8+~gٳvsb$ќJ +(cTk r* GkV+8˜F;c}D9g r9 doo>%c߻_C5hz֛@Om!2P{{UOHʒ1y@zxYti`e ac>z%:,fH>Fդ42s(;֋摧4,x3ǯJ lI"MBq?SPG4ʕ=vjI U, ``-oO$,"e8Ph=e?{xm߉2RАIk)IY(|EP0(((CAL1_w:g}Q@?G<+`h'cRQE +վ0o+Бڿ +>?{`{ˀ:/d_Zi:uaAkn8AzEUDTE +0RE.5}NMD0+?' ].{ [t2K#Q־?ǺK%l?ӧo}_RI?,(:"Ԓ{P0((((((((((((((((((( Qm+Ugh8z}MYNr%8kGY#WF R;ur ~է5m{tpp?B׎"jǨQEEPEPuO\~=@#1^a[^'?50COb׫6|6k!QEQ@Q@Q@Q@Q@z_ jfe]8ؿWWZpψ56^@6J}EP^HFGd6~^_(|}6k`[ XV dx48@/͚F1Q@OzOaUs%-twWwUu+$Դ ?є)FH]؎QEQE/$:+ + ?| +(3?@5}߮Ƚפ((QEQEQEQEQEQEGŶЌ$y|˴0s#!N޿6㷺" ӧD&/=O-=ue;|dpzL'eˑ9֤KRA8D6qƏ1k#zýp98r*|@1N1rMWv9>]uSܮnWgO§ v)r}qUlC=}V4fT(c~䝈8XMO39 $øcz9Ҫ"|REHR GsuFj_.ŘN\>RŘǥY1PΘ@>uEd#;ȡЊ(\ p2yK +rn?R[ QH_2FM>qȪRG䚞:g8  5;I=3Do"ۺ*K}wr +vzΧE9ӌqҩӿF$r괖i#-ҭ/aRF=һCpEf <5m3ݙ~Td歜~d*'cFN0 Fp$sJOpORq['9ޣ ʫ1l4꫟) +NCNXOKR5ݪَMh PlsSݴeޝmꇟ*} z]nJ =zsQ[3X`1Y8 )ǺwtH$>j>\*j5;|'s,cUa i_C +Q| m$HBqv>߼X8FTz{"S}H/5E1~Q\ԫ.HCc;W4C*Vu, <2G"62m r1fm'HnyKvۆ,xW⍊lx#l ⣆ei$V9W qCjM&W. r sVmv] [8)/}@`@qc",7ˑ9$|K*TIڻ'8&dU@p",s8#1Ol+d Iب)k} +7"OQoO[X?=M#!rޕF2XsުZrrJbԲg0q֙,O>f3sWay$ Uby$7-c?NRNђ-3 @Ȇ&HX{+iK&nNIڛx$Hfm!V\ٗod]lW3Vtu[969g90j LߺѭUJh+>(+dT;uD8kynu-Ke 5ӇWl3)84yRFw +r}*͖]7wtO_/"GѶz9B1mx:[kcŌ&ݛEd3M )DB֥Q}="M\8\(pǎsQHʓxa6JNh)'(q|R@!Q@*qe;(Y`pw0}k&I<ʸ!\0j] RIs|~֫$py[p 8S/%K6xZ~˖LCmxEhϖFG^AY^wAkbnI.8qU^'q"ܡsv3yyHxXX84Frh%<2eȤzu|\1]'[6QΫm[mCӚ`H޼4۳"W˳\mkfD@=;Vl9Sɐ:lq&Yw, q3Ç{ ekyFG})OI/7c⽕shn[9#cWȗڌG0Yvl_^W?Q^ChaJ+Xj|3[V9W<85bO b uyױK2).kؕ@R~y\?ZVM/o_2Yk\{(YH#>Sm\:M bY`|En)e[sxؽ't*-I"~Lko}Py2R28w8ǙG#kE{x;[npwԣΝݍ ; {i x +GOYUxd~2dB{.Z]!5&%TE]np:UKme0k6'fNo3ޟ|NK?I\ˆ:秽>FJ.[3qϯ%͒Z XW-\]q2?H׍E3wp"\8O_ZsI40WBX,Ijqb/EU3Z:7ff;D~p5|6zW\gp=+<@xKa|%@??@yn2>ͳ21D׆MEfEUtϥ\Z&.l~_z{ԶSחcB aAZXM@L'(G]~Qma+"0ax٧|УIfl0ߚVn|l);M2<Q[\}6MKvg߭sWrؕ.[]Zum# sڪnec6t Re6 M-Ye'1MҴk01;114{zO.ɱeϦHbU֦%i,J裰?gh|-E1'wsJY}nl3} 9xCVyXqLҚw1DԵlZ(>"@Cl=2GO/K-Grl 1}w6׈c_|X'*H#ZQ&<: ՋKxmiSq\ޞ&3J'###&)E/wsl*6x2qR%cm~9=*X;x탭_p1Zftw̰p;f5M,↖Gv$jٗft((QEQEQEhh?0+CAL1_w (h'cR$O*Z +5x #MOi%#WoazgSt{ j9'; + πlM }dt@ƝH#C.|ҹ{p: +٢(_-|Y<+o}WĺwZe~]լoQJμ?^/(C꾔Q@Š(((((((((((((((((((( Rm+Ug`8zjetWR +#FV0ٖہW.:>!З]W=Q^yAEPX^+twTlOqVyouO=fBa~Oo=vGbvLJ(SŠ((((((Iu},*55}j 5 1ҹ袊+?ߝK.nVPU4gsPI>n+n{(aEPEPEPEPEPEPEPEP_r6w!_U +n^!O yX(v_?]:)rW"~3}θpH8wD +Q@Q@}KIo>J%$B%=( wEO% |!_w/j/k +(QEQEQEQEQEQE{!(?!(?("B7?տbB7?տ ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((H hv>CZ$H +.0$ƩID[3SmVw[ *B(((([qr9h'#ҫҩ4 ;3KW$6Q/ml[%a$uaʆ6j[ʉ<}j59'bkKUBiݍ5+.1q".0?LUΥ$ӖUlmۏLw$/d + zVj\o"ؤ ZI%LFW{2-dVm֢Sb}B=TҙuDAT NON&OoO*մbXRRXR̨ʹ)F)zW*;mO8?{8A:S:SYmZMSDĒe}ꩶieaEJiaq8;4p q46JUӊR$E\;%}oFl܆lg=9FA1!2AcqMLqb˴@L\ƐrQ\AwGU@ܝVX֑.>tVGcZ(5={S&e]wF~ʢ?#RqO4 +G_Zy-3񌚓rdy┋d pB {W!pV*<q3(86ff0QЕ*W +ҳ6tvHu t8֦na{vQEyQ@q]#הGP v žBm^\VgJ1Qok#*K["%oӧJa=i%X\ :uk's˩8pmT]A :}[Ldcw$8A8Jqm- })_]Gh ~p3nH+ue۴)jVRZF8if6C7 |KA tDgI?犚MA H%_?̎۰HO9sr #\9[,N3[XM)s-JG$8DpOJkF{rU6p~` >JhPsLRKkA@Mh̡RJ=I486&?%(u(--#N:ӮXWvN81)f⥻;3ji8EҸKm)eo0dOOJßPu岾xݷZ!E˰ +6 ҫ[+a;rvۓiqVvmiMYyK [{F(uYw0;U5{(##$Qr}ϵU^ Y?wOE'ǭVӽ#OvxAW`+}m 3ɪ$݇Bʪڙ{õg`H$w&f, X})M|:/21_3؈.R8F@f*8ӭ}5Wo+Bq(*G>5cC+s +( +( +( +( +( +( +( +( +( +(>>]W粎ecklOja~e5|I^hSvW;߄Zߎ-v}RW\ʾ-#G.5Ÿpz~BJ;x';-R3*#;UQIO%3$R\'٢gmsy F1Wv>w5;xPe 1+ tXG U?{"Hè?f6l'KCG +sZREsY6Nbޝ J+xm7Ek*!GC9SѾ~uҶGNiח^۝NRc)MBJ_e(B/w= g}j֫@X] +cgt"e6 x7n\mC^dۅv־7ǩxH^M9ͳn/ᵀ+V# {vQ:;zW 'i,J#"wUs֧x{BQEq_CD +u԰k_!mđa߁N:LU*F#+/h2i:%ƒ1`j$? m>A<Ͻ3JDA_-m!e%V>{`:cyQ2k)$۶si&C#|adwl3rJs +${n;U-'8e(wڸ{y% av''V]lh[m&_N| 㸭 1tl9ު0.ic?No܈mQ16Z3Gj&Fd|U]#ONsAgo@LI-P-~)_\Oo;xK0@F3q_G~ήxKWu@uvWK ևgi ͚HU\sֽw)B]C:CT*)%nEL/?/I.[G=ql9lɯ^/N#|eQջ{qwpb*I8=~asTm5 E08ǧ>h-J$#)îGˋ[kb,`FTQ7+s'2hڴW;h3G8R}:+kW7<;p;Vկ8fN>EiB9$Ib$3מzm<^~̿4ۧ֯ .RX A+)5g`(𞡦}^~>R ֳ+JQE#USJ=iZ=ŧ|Ljx=J7wEXQI+?ҫ!hŠ(( F3}_h?0+QEx$O*Z8Y8ўG!UTdz+;IaXTCwcuߧ۸zJGAR0 d Ʃħ\O~̇öOQEQ\scO=nZ[nR(iGFxXuA29?Da1}-@A{eo\XIJ\FKte#~U=<)s^hhѷF<؏o} GΥgOK *9/Os#|@Q@Š(((((((((((((((((((#XՇOko?4YSR+?B +()ΌUBv;Mxz =CMyz?+?ćQE|QEQEQEQEQEQEWڟ #XuW861>d: @?UjxK@( M +JFFgm_ PEP0((((((((ݿf f5}_8~0}@(>F k W׬~Rb|_ד0(( !пG_ W_GQEȽפ+wEO% |!@Q@Š((((((x?!/zx?!/zQ@_F5^_F5^Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@H`L.YsSQE*li5!"jr1z}k%}H{QEjpQ@Q@Q@Q@Q@Q@[̹{dE٣pTVU ֍Ȇл˂zbI=HvKnκ?JxM_~xޒ{T[0F'9rӤ/r^)qx^ A0۸sqTK4O~O _9U뷽PK'e)LmJy4hD 3scʎaX$_J٥g_ٶx>@&)Xt hU3.ˁ ?֦ovUx/+R"I+ߠ_4,w6OީVa6$LISrXu9椂2$o8'i +|e-Ne>r7;a;Oo,I:ey'w"獸SRJ.I2D@>BX3OU1&}ec(Pr5ӫ ϒF1r0 +\J#J5qU]ZOW_֣uܱ )8A8}^2Zh7ܣ!\BU;|ûZ&I%*R_!N*Z$W,6t"p]6W q??3)$sҡW71kmX"HpT{X%zV.#RXGg/Q5|r؇rj1 APn$sZ",:#F ++աά|p$gn8ҢK.i_qRڵ^p2)-0A[<bjs[Or7'DqϑQRqIAx ;{6C0`V> +a!#:|7=*;*apI Sy{wHy0K +'oA'A-$ݽjkdXei-hË<+<[cpG^Lq!{Ra$e?ϥL ˈw擳*k[0+aN*Rz'U9d{Ƚބ8EǑ +C 9*PːpN՚f?֝6f#8=άO*1@9(6냏j[f1چpiAkfICMcR =5,3 nƳi71jhc0~Ѥ$\YQl Tn#~4%^=#ٷF0FzP5e]T,F "#>=j!ePP MT08]>+XV18`= +Wʔ|Xw77M9ZEf D2@!\FA3MmT񷚱 ԛ}}}S1^,㨩1-;f).Vl)`*J隱4m >#fAr3>S'4R4fZId ̎6C?ȧi7om]G!;Qsю1h7}6K[Mw +3O{X-- +6푙px0A-Mhi68ϧ֋]/B_Dlv%n<*dc>ќmN+TjtVvWBNj'v.cPp)4[SŴ-NNA9mUQ\fi]J22S*uƯ |ڊbPU7;(B(./D.]}**KKi0Nx6s[-y:Mna m#9=z v5ft7Шc#O{Lb9NFv )|(58HPq֥n:Zz lˌ>m?̞8ʒcSIDA6G#5V ]+ g֣u5Y_. z|ypQAnxi&04Lr,ԗϱkyC:v9;Ig db:sVX)#XDReEZŵPDy>K7<֍֕%Ÿ/ ;cc`}Kͧeͬʸۊ޴2a jso>G}Ѵp [6MT9.\rOMyFC{Qo,I] ?Lc#U732#,Eܹn}j~n# +fYˌc8 +yrxzZ1kJ(ifY]d8{DOy{^cy5̈ + +2y>/sZnAHݜ[ NbF$oego?֪',ĀsJ2oEv2C Z[L+ |;8 8+i/%ӭ͢';pr0zھ!p? vmعW@F+Ji^^˒m7s袊F8F ?A^|>48>'w?so_\,GsoZΤv;XxV?Cx43xB]gv+ypZys1 w;ߩ|d8*I?Lo>S=1[$qݍ*e^4g>~J2 Ud|%k K/cb23oF #"xun$E 9>OQqٹ9=O}R }>1E{n2xJ2Iyz(WQSd9knn"_1秵/hlV=o #31=iGvjvSGhXn -.ᬯ1fGL5\ϡ%ͳ>+y/$] 5l|S!mc|uK0!%A:}ik˟t(b5~kJK0M<`ߟb GLɝ<|i=̃|{P%P 9PʲO#mmi%)E4>ϋt>Ҕ?Ӓ3[̭euom["8k0(d|ahfS`M6;My$)uT8>+{-߉[Cy4!d+SKI/bC&=EFOCN1V1Vuۯ֝oǦ+<ϏnƝ绤E m2< ?J3&y+gJܚbX U1ҢHn-[xv]Pp F{TI&d6vu: +8@NqD/g-,fX6 cpRgMX4<3zzQL/auǍBG^j) WyaNG&VL;\ #[JD7C$^hzkB%Xdd$609=*+M'ᢸtQyJݒr׵Bfb9XFݏ-s)ɲy6 ̒䒤9~'cgoE+PrW#Y!y'*8\#Dc8SvdG{63f"F# ԕ[[s`%$XO}GµVVv +BTV(yt%H׳CçԬPna_ۓӟw/IU9r6|)ut$3ٌaҢ0l1QU tcΏ +?/qM8 5/8=EFs+^bKCϙakn_py|\jp/*ClD tc^Cl*$ݺR8?'KȌj:ąxW _N;jHe*_3ee6w3Y,ٗoc4"keԫyX0(6Gcn*[1u~mzs}V=f19#򬻫)˖f6,F\Ӿrr{IXܤ7yAӌ'%s=K;t_9 Kly˜:gҾ/> K,wWyƧ'&EU/7Nm:?lvQ4s3c/qS5Kyw郊+ ic޲|\uզR9;W,b؁P'bWѰW֚)ߛk 4p4mrYf#񅯍|1ʹAdއ>q{m UUdPwOz'+,ibqBy&iV:T`s>5ޓ&՜2Vr~}<5aoyqjc} nl:Ex +K 4 bL+Wz6#uro*&cIgV/vS9/VԕqJΉӏ"mT#vzfRGyT˻98g'ێ(._zJL],x%-fg۷^^/?5;[;tZkc +)YQL6r\I#vIjIdl2+=m/2h H +Čw=[G纂6RqfMYMWJYh];ykk[ F#=+kSy|`b#mAώ} 7`rMulދR,Jbv2 EL(a?/ W#_qbAEP//x-> R3-݈Oݑ]@oQ[]( +(ֺe׳!Y\:_n5}N]1;xxuj먢gm_ WzFF~ T2 +(Q@Q@Q@Q@Q@Q@Q@Q@5îעu}|3ÛM{d?-} @(hGW%,"V9c)K7V85y +( +( + ?|}KIo>JzQ@ڟzKB^_QE ((((((٣B"P7٣B"P7QEEn3Un3UQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE'dITSt- 3Cup Џjk_Į *`²IM;=Jא, r>Zbb U ܋ Vb\M9ڳQEQEQEQEQESH Ei˳>i8wHv_g 'vs8QĴ]!1$Cw*,C>\⧷Wz\#nD#CĊ +;RhԱUJICQbQFI8֬kEoܽp K +M궱vKxyKU}uˬteit+@^Q##FY H# 31iIjkFmE]_غU0ßZd8ʎs֜e}jhbV1pw֧o59D"Ρ~ni6VXy4*v +90MM^1l ԰Oͷk TE^9gfؕTrz19)UЛ͆U_Sik`x~4Z 9U^.20}qQ2UJQF'^*\0 8Ş Revi*9c+JHl⥴h֝m *9%. +nK0JJ?̌b؂RX#G5Zlpajl乴I7 kgw%k˿q)nȞZs88E.0,s#\m;cmL{.*O%HSMI)qw’9J+a^5ƨ?whSonqYEǿi#J@nޕIeMssN4xaRw*./[ZP̻q4``ț +w}jANtĆ0>RkNJE$ތv27pjD4GA4.i +>4ɷ;W8#)rۄ bSd|sR#KMT4&EAc_8FȢbcg2n9)V*Xjh$Օx;{sPu+5sbՈydq=j"DES%}6K}O&Xo4-tVJ"V+r3U:&WIqI^ňAf'{sI+#H]ޕ fIas +V{s61vT cԊAzUYRnjvmye9;I>]JhXܻ6򣸦"2F2y榈6֢O| +[ivE" 9*=4Y#V#=* b .vCUHM}kc<9r{ t$R-] p蠜M0O/mjn($uBwG- rWIj",sׁ[\ne­b)Hstv1i|s'o`ژėP4;4j4٥QfmeP+rQ3ЖVl/E8S͝REb j|ӳ'M#RF4DL-]c^d̿75i>$"2;gR;,K sU/ڮ|ǐ4YJLa]:3q$6H&P02-sOZK}pH&+# )2c /\mc GUrKmuP%b(I^y2Gv,v9&!pzc#ބ9WܧGq1ʝսմI ғ.A'#8&=: Cu;U;Hc* ;PI(+w,\Km \2g_©ūC;aDHq|u$q}`ɀ$Ոe$e%J2Z\ڧQs$lEFGz%CD b9Q}k[bR)T21Mhsr5/2grNizumq`%k&EMGU$*_yە ljV^F$1MU)cJfR5~uCJ6\ۑ ա5ψƍ?JYK?lgg'g+Noa[}i2]Fz?B>p^ɸʫ3y4$ln%°kZO]N($I3o_Ϩ[9b[@-1J +cLW7WI otr̃g?3ڿ. +kZxXb~֡H>vc̪Km-ɉX@G'=T/{9#u^VkK:Չm@t +ǐ9Xqn2IJ;Cd'$42AM $]jľOg +1]hګ":kR[]k󻻅QL/ų?$Z)u7 1?\VvkoK0 Q*F_L|Gb%ݓ'VnEg!xt沵^3禦5[Fq,x?'\Z"NF)/k}*5`](>TFz+\Ojҹ[֝C(ԜSؚ= 15{kp6z}n~"GӚQ>#^;y,TFArr>ڪnҴ#Plpy~3R;=͍:_.|+mQImN|N~\W|>P'trrҪ=^?"lą}_RJ*/R ic tǽ{ *X<%6uqL@ ̷^uow[XND$nf4N-aXEh9EFubvF>_cwgc_q9'mXYFwi4z'޹-'3Ҿ6vǭ'ꂓv١&)c5|qۆqߑYk2 k1Uˡ?.1c?CSL鱈Eu~`[ǭ_6v`BQ,C_| .xrP,flu 2C?ٯxR7+P*jhrRҰRZ)|M|7-KJ旍G\"K1pkszqҽ㖉\x"2O= +;%zfzjntS3ȶVqIF$ߝ8[}B;hϘ͝ӹ= +YOie (I8)L0+98"\e.n_"w{mCj(;9 gg4>K m;/6GЉ$`A,4Z)[Q;[`rh5!:KXǗqN$g=kM\o1:wgSfY+*F0ITu&ky$|c%t:H9$_#p1߽{o w.faDi#AX=O{ym<w;6O*iZWtQEYs;yo]覯%F10+_Fx qF2ܪ&&|w\D}1zLڔSM#3쩰p:Yms#YX =GiO'-#i/oƒr獮^#MUia#o&腳E_6cA\F4$sVcDgh9N?3hP@"6-DoQ}ZٙB:Iۮ>>djc>沙HL#?*z= ۝9s߃>:_o6Pu=9-$}=k+_:%dHZDq + +QA-k$n?H5ITVX:ΓihzU~eF)qA +E33Oóx2k"u[n22kOCzJ73J#<Ǐᡯة7b2Yz {W7t{};(1,96:c5%lK Fx2I5ǩGjfm8M=quYⅬ"D%Tc\FXaQB:VϡgMKG] +U-m7{|7!}p2d&V@'khwES N1jı7~^գ] 2J]ER/29YKf49XY *##8:%~CykؿFf!}ՄE]='\BOLnkg_SCO pD2sZv!U7u}2{m7rv8< +x sZ]DfXa`3ִ j;HdXPaFj5q]%CeV;r뒹5,O 9u`F3}_h?0+ +( +(Q݂N? 4-_u? /Go^~7|R Ю>Aj1_XG(aEP|o칿yYm<mz;7рUUnYA/uF6={=|M +Z~##@tQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +?##E@j:p_4Ŀ4zQ^1QEGY^&Y^& ϕ(>x((((((+ς_iM.rд7b?B+:{s fNZȤ~4QE^hl5k20mx鵈|]CO|cuLfF(aEPEPEPEPEPEPEPEP_eO W[ŋ?&zOؾWy<~+QEۡy[_bSe&U}j9J>dP0(( !пG_ W?t<hEP~"^?@5QE +( +( +( +( +( qz+?讚 |Ei-ƞn,#p_J֬#ӵ#! * p٣B"P7١Dvrd55aEPWX5)LAA@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((( Z-@U$g47+8j3;((Ÿ#Щ:А U|繹[y`/'wLICϧ:7uB:ҵn,]1Y8L\9]*8sM\eQ{hbEg QEQEQEQEQES6 t4(fC27| UP>ޱѶ8aڮy%nASYJ:z8|EԵdbSGҵ]p@ ӽfidl,7h75‘ZRu4y_bpzA$r_iSWljc+j1oZL)mԯ%hRmx?&Cp>$Z ˈݑ%iEӠeUr9(V%m[dTp~ьJ #fTN2 }OP{5<,9pͻ"B\^BHcE5l${vK9rJX1ca?.B6Q*$pTjFY=jĪ˰!^OxͰq֓mJ4rhʅFq.A.q{TTGA,}&;߻-&wE2 +H\9T_1Lf$՘qoB4} )&U|#$#,6ᙃba9[~|2A$=6rĐ e<maѳgI!OSjuGz! 2A:Q7)x )0FBߊ2K$ߵzBR^(&@9sU[6d?.0jϖy{>^p1L͜!n3M=LFN-y6dVh;AV7( VAPڧIDmS2և4"(r})bZ 䞫R۩ 4`˷o2x O06[8#g+M~ _:gS,-Fq +F.Oxȩw~V=\^Ηs>^8ZhΊSq?bK! ֮OJpr8S#<,~ʤZ_wsFVa<کyQч9b*^70wgz27|л2&8]!G-T)F +~N#!S )rMٲZ$O>@ʯt arqOX @T6b@v'rg2xˎ/f % +`896"w%1'wԥwj冕R.H)q,(Ypi$$*X:wEi?(^*Rm)4턊(]X`T3$uH_ǜqM)8Q1xfY29}yc}> mgd d<l +3E|b!QgmG.]$a_1V5>mp8$_ahS==jd:4Nd%7)Ow2J*#U(낊(pl?zy$k]L7{w.gݺq{,3@?LUwGo1hy.]$ݜ 'IwPHDM3c 1z鶧xB$M%#Qc[,K~i. ,՝q!sjL|,7LW dcFCM7aXNv^Hmy~4cHSݖ&!,#dbS"'Ei%y89mn*G])`ifv[RijX+H#Rx~p8T7 x5[v\"Ktj^5ƄyQcepȑE?n{ӻ3P8د +d#_d\}sژ4NPHHFemw*Ŀ[v~d3f$Q2l&P2NONk=skj cr;>f{{8hma@˖lda6}v;دc|H+WQԏy'هnv~PV^dNLq>qrc*9_\zQu\_it{4B]Lyu\P&2]`G!*}? +ͽΣfѕ*wArGzEcerWvgWʢGs߾6Y.os^^IQmGڳw%Ҏ}6zV`)!cҼ_}$Pm[ '^[jzMp}mz.TP4^V{Af]_M'P_js Rq2f\_MSf_:ΖNfw_,U/ҳ8^Nq L_,˔U3id4u +6AwFv@Yhrt?j6kn ߚ'ommѰ.98(u( 늿qicU.p8-0#'OjιA A 1@Aj7 vs率* q?.Ida >ѿk[44:b9(v*Ϫ\43)@*ޝ=cTP1oIcc}p](._xIǽ,klΒUǸjg4c+Zr<*T5 fq6+_9ƙ7 œ>XøvaښdUQ=N(9_< ?dݵ|duK) ;>~_%| qec8"j#P {#pr ǥ'oKb{]<_F1UK{gb1[icAvs6F{>g彌DllP''/A6D&3A!B`SLq~ 0硗qxP%²Qx"ys#eHEitweޡ 5ʈ8oƨ_@$_ҭZKqq2Il&HDLQ[UY*JٱK# +7usZ}e!d|qWvGD)[_inR 'u}}MQJI>ݢ!k_^Z 2zܦb5dFGP 2>#o[8?nIBrWx}s\wğ _ {d .IƔRWRI4_+@'4 G ǵeL[cۀA1di'p\cڳ"K~XS&ͻ8J;*E%ʶg~uJM1f } _:qo7RW'ˌ`0>5UR8AES3>6gB#W(QOZ VRXcbO͘ }D3!iKN,F3߿. +[dqPzAh!Zbd t[&pOj%_>TG=5[;InD<#3/{Db{$BJkzӬ0Gg68žǯU Y&HQgY1u uHz78~/Wl pxXDE#m@+{Ko*O$,>^V>rmf 0Ӏce'D3ܯCzhQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV߄h X,TUӂy%ԨЂ( +:A5A5`|EWaEPEPEPEPEPEP^5^^idFOxew5:C3b+6 /?aEWNm@[\uw~4]Q@Š(("«O2|_Q>wûI9QqQ4( 6m Ƀ Ok1{"6Ҁ(E ((((*[hP[`qUoO{H<)ps7 sNsnolXx=MF//Ro2+,-01:֬:ƙwEkf.NH=AքwU$ qփ~]_+ٞ%<;&1$?5{y7DZƣm ơh\;:^A)!IX:Oz8lg9HJ|+EP0((((((((((((((((((((((((((((((((((((((((((((((((((((((((((,!o8 F`ڤ,]1/fmq9| wcSx=*.uIO+Fi^U"':En +n^J}Hc&H銩m3i69BPc3C"BU1UO 1IqO@[o" QQRΊpQWƞ3|VuO]"V +f᝹JbdXTvLX^TT[II?}QGZŭĢ(QEQEQEQESnZ:E\6-s@✝g`)!~g֨I;-[d ;yZ׶(#Hٌ6q#߭dJ[1Tl*-siab4+,p#}?*7ZBmg[6L +smei0z>jTG(bS\倆WROqR=Iy?#9)yi˯ǞOԴfs@5=OA a +q5<^Sdj9סIV;k#-@ztsԆI9c}0#`0Ufӱ4!8l 9jjddR,qNTn^C#+9H*7F $Jr>v:H{y깭ZpmY%xTZu=Wjm3ޱq +-SX[.{dbt$hvs֤M(`CmAg:znQztQQ(aT) w$n#>62H$ +[|IKk%1'"]' 078<0zk8WJE%r:b={)2٤`Qԫvb* @K|͟7tȍܭ~Q-1{"P)+r1=H5YxK|nJ5-%Vhxs.c4S4J0jM+Pwե9II^JTgÜ +{^yqN8Sg(v2:jb98C$S$2v-iM?HV3j$ṾJ-n>dkӲӷ#HRv,* <s.)=;rryiB5/ۺ JGR9i5)w6{܈c;qjܱ*A=8Ohi$Pϵe J=ꕞ5Ԟȳ30R8SP%|ߔAڭ*ǦdjNGP3ޢ2p|8\>Faz7է0񞴶zr8;7X\[O9(Wp⦁ql7EVJ 1FxA4[cL\V0 G$)1M1%fq};YD <tadϔ!$SnErzfQ #772X!`xjYE: !U M39j˺hTsU)]ʞXhY6̤SQm\uKKMns`]9`B?jo.5v^5`&.tKTRz}1U1bDiMuҥUvs.C/Qii#VSB*nY6+ҕe,N1Q ]Gi3Pu+5qLy@䊗ʁFqt?nUc2jo0BU}cJU0d'T $rzt/C6Jj`۝|<9,cHV9eQu㧿jdS>Azg. Ԓ,hToI6vObHrƋ!⢿қKY#:g8⥞p#= _oҖ3r]$&%o8=񦮶&,,rcZ|P& SIszUdʋ +4{sƛV^4{t+n-y!gʒn]LfgLȸ_P*Gq2H"uB}S6bS~Ǘӟʨ\@uU3;D-3S]zFs^[Dy=jdLvh~go'Mp +P%kW_-z]~w-ӜsD*R~ =TQEygQ@yŪ< *XKU{-Ą7>]8{/3TeWQp/DҫXz;Z:Hϯg9i6)Q@s]mF0WNcS|HUTYlwFHQC+Fsm +jzvv?RM'Iѯ"}yx'g}6 +.a*Q1*xsߊmܯCKa119S\SmO|UZS1Tc{BYb"pق;yV A<;yj`ǯ_ +j{YjPпA{3m$ԍKs#)1gWTGuXP+BrF2![OV3"b̓=ZKvbg4$22nhXflU' 1픩ӦԒhmd1<1m-w9?cM%WRW;>ad,P%sAੈe is*n44֒ɢˈK^{s_幂'Q{RȮo;$(SwSMny<yZ4䓋pm~QrqZ-Ă-'7z^{Q$*,M$ˏ9ZN:j]:RB(H8pO<{૫7+;>>ݞTIq_F~ĀUӽ|lcz-Q[Q ~6:mʾ+V +;G$.'%V +1'P JhɫI!bA㚔AY4푲߹ةF!MĎ%d9S9ܿ{5*@jՌۍ5"5 Q6M,Ȭ63\c7!cv8z"ARpCھ\ދJQrvy?zyO֍mX1vyj;F%ZQEF#q,ڞu @;66k_ږ'#s$}$d: sq\~HZ=s203ֲݞjv5@!A::ZČ}2,i.ݳqzu 9O)UCAkZi}{it76@C3WΚrG$2˧La\C8c>.y&0 #֗)~۫۱y-gWp9Olnc \O<(75&W=Z?+j&P˦Ih'{eW{sSc6乧}Qmznkc[ıghEgW|vN`!ڧgqQLca>$lgFUlQ> s[#EKk)!{yHn.,W``rryhvdY(mpGZn\,VWfw*e@cҕ. 2ʉ99|a{8bIJ$"ܩ>0sڷl̽QnO&*3Rn1hUci +AP2O!8[מ_LA=*B)@Wr$885$";DC+o׮jE>P$QWe!v)(`#]8ljݔjs7f/BI4XeAa6qBƱeqv:U-BCk.bnzzR4m/ucFJ+2~\~8l͆ +̘hccBzT6#^|{ḃgW+u/'2ELǩtI>kIمx=2;QxW;NY?WW?m6`}I)DT8׿~ }9;siZEUF$| 94˖&/tn`7u=k<7SWUw}C~cIQ|ΒI& O ]46oH5I޴,#ZВ7gTgO[K FwLݝ +u_^]Eq$SqV & Pgo^( 91B~m7>eqM"KHx3RQVmcEh6̿t:ֶFfl`l+֨[Mm,P3,Y1y{j} +7q֞+Z"\㎴<%]sOH9齑W$3Ӿ +mv!csSo}K_`H`r8"Oq_E, $0;(>Y|/䲉u"Pr~tsa\ǚ}O#u }' xRկuxˏC#dԤTʇnXI +֢Z%F}SWR (d BrzҵŽ%!g$9M8sWVp*OaK(I ''UpVDD}A~*ᴸ/'. drJȞk:T-ɾXݚMq߿#^1sW Lsa^Oֹ**^ikj"`$}WAtd^KNGx((((((*k[lẁ "7:E!; R yWp$ˎۀ8:U/CSDS?^@K/ Z< wn?|µhnm崺t)4.cU`pGQWypuX#g) p&H?}+ʨQEQEQEQEQEQEQEW~2O8,g?P 7T4g*O@+xa|!7H ypGy[`(EW~.5+C򶐵Ġ}>.UsEI#D:~ TX3=DcA(EP0((f^!'I ? +R.,N=]JCPtQE +⶞tϊ iKp=$٫ͯYWlq<㬿xQ@Š((((+O\8$jH) qvw.kR$S9;ѣ B 3TYsIMtmkOrmEa3z + +Z#υh>̛>v5KI]/FՋ-B[jҮCww +~+ދ o٫#!iO{zFAcQ@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((( nh#G `d57PĽ0\Gqo@>olw,%VHn~YK$wbQ=5# 6\g=*M_6-Ww +{]I|N)JC˶rG;jѮ󐼑iAF؅Xl#8>݂`zII)gh㌪֫9Jdb33.>(ؘɑg\FHg$sI|f|ǎ4+4i!R +gwZkZʨ0ssWB2gK]@%xڐMJXfbOJl8U8M.wFޟ-gC!=*Õ쿯1B#@&BHjB =Ud/&FN/[ +R;C1^ۏ4mr~S~;Sn")kbeA򹷩:D?6sRXs CnF)ӈgʬ& +ۂ=iE;݂1ئaw*ؚS8Jf)'GGZO0/ɜi$ݻ<|-sڍ/a9IGR= /!C + :bCp:q"[O֙,X7H+PYϨ ,ރu&3O; C֨U,K22թf`mC !>]''MiXE&؂"[U]ֱp3' +q֪.rxjJZVݑ -9z}jI$6SɈ՗&R43MW +ѺBi(YnЬ(z~((NX4Y3+}c4ҋG=ݙ2)$`fXJņO*UJ҂UHɩ,5Եׯع?d!qJ8sP[wqPT{66(` w>RwzV 6N 19A +VR\m{HCbz(AD.XvcI6ՇW|ar:H*T4pqґ7cz~4CS̏nRtEhD&*s[UXӷ#ڟ+8nG6-)h< 8"e)O"#3`^ON +OLs{hE{)6Z?هRzujo`w/+m* uCԘ -@ rvzvlgVc뚙LE +E,Wk/ĥB*94Gl[dq3ޣ@4jCp۹ad:RtEs¶z&I,ysQlf`<H'iؘg`ZtR[rc*BNb-˜R5c{Yb\֡ +ѩ 15,2,gq֙1mg6Ib7zL,(1zNvi]qJs'Q‘eeV<bF9=qQ8`v V{|cҠIn`"` 0*/f<1Z8S$ όšr.B0aܶТ?ib~_0mQמ\i E:l['qFHdhp0pw^<(wSֺ6qi;-&io8ޭ჎Ik1(OQYIjvapw1U<;TRCH+Y\HJQL)@ qБCFH`DssT7EmҢ 3%!皉_F \C:FL&[VMHK+{K&+(QfNwGI2yoPԋ@r9j˵ mqU^ꛋfj5TSdf)`gޮx=jH,R@gߍZMF!=\U3NKFUc[qqL 8J؏Ml߼\P7N2ʗ$)vuS*N1׭;mX$Y3~ml=Wxgy",[(8'U&ӄx̧;ۯjƯ۲C*3zφ%6h)l zW&´vQqEQ^i!EP^}^+Jdq^^n9<ʚok<e*($HGndN>b1W)A.3j["% [u'<Ҵ]_[Aq%Vxhi91c%(q 9Yچ)pUzFp; UvϺ/'[npj] !Rr;kgג#L{fO83Dx-9d+B)N(J6LƚYbC2bijYXyL'=:XHv`*%պ"7QqȆ"T+{T +\W;1o*Bq%RE7r؁vtzԳ3J%6,`FGqUV4yv$ +(pi%"A/}O~&'N1.27$SJElnCʱFx#8ͺrٙrd*RmrǧQ|~U5!Ե.f2Pj Ix"UFFL8ZXSM}t4Օ7eHX +͍^{>K&1ڟo5¤_6F&@f|QfB9ܬ8 +1?Zn-|opӔDXıx%Vfh=jX}9ݐ=Pvϖ:*E}V +N^^_]HRaX2|<^[cQT`|ijKg)5 8 =Vu32D{wϭ]r-VKwi"\?ZÙ C"7LY=Y\ iu7-F2;v]{)G*vcsy!Q N9d]sJ="IJ>_C4s>wFheޛ<Xv"ǐzcڙjpk IL, ϥC*/!8zgm@M/@SOi7KfxMȸb9=ꯃik3seg ESlU^x-[$o8篽}ac[XZK{h(SKSs9{Y* Ok?5`$gA}_!C(99R ^k/2CI165KT c-Oe6۲=,$#sɘ6\Te! [i* +:=EU7Ox"02>ߍHڌ6!D|3ӜsC:thW҂Nvd%dˍxT=7Pܟ3 4[^y @Td[- 2.ǽE44NC. 㚞 g;yaq0F4Y'UrvdooB\hʌ֑o|n y\sϥ;@2gzI /v9ہƛ"n%.r:ci̭uQSu0_֫FG6#mLˏVЧ))$d7Aݕ2 d?Bmyo@}g͝GJdsK2v q$N u;z{樠̯}/YIm5-#~|3_νTiàxH3 G8@Wm99⾫"81jWQEQ|M24HaF8;:;Ug[F0@OC^Bz+7O;ֲOF!h']یz8w&.'>ą;Tuau{naٝ(UQ*ȉyQ3?>Xr1߿k/v:}欈*)*;ͽГPYawV `{UKi_Iu7 Dnߦ}+v9e7u^Z5$]F|('0x~ºhQ}p^G y&i6zH^̫q9Om}jrB/sz`5{\`;ksӫSkh}h~5[igL3!xRGwtUq沋m\ZFR&“tb4THs2'n}kZ3mGo\qIj,d cѸ^P3Sr{<|20:֧#BdU8}+&(edRN+EgH[8 j,57/ThB֋3{W5LYDr͑}yBbX(f'O4 ++;IaXTQE +( +( +( +~Oxپ7osS>w:9hX^7Pr}x/lhs{rǗ1'B+񯅭eKj r$w&K.,/"1\HJYN￴',b[lGC$? -x +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +?##E@j:p_4Ŀ4zQ^1QEGY^&Y^& ϕ(>x(((((((x[ l. <mol0^}3_`?xIߨb}CzP#(UlcU>2{WR$2R$YX`A|Y^n QCQE +( +( +( +( +( +(O7&mt6/2AݛɠG|Sul4 ?+¾-4k 9';V +(y{HM@Bm~+~.xnmprw?W@Q@Š((Ok#>5&}t+zF#k>7Mt+~dO@㷇kȣqH.Wuqv:kkH&CHhfFqX$.G(ߖ3X4 (((((7 c v[Uj[JqS owl_Þ +ѺeD oR4QE|G"ViC@L$"ֽ 7}][tS k:sQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(6YM;@1R Kެ}xNZK\(R:8-YCF uWPZXɟoϨJrE4l1=Jۃ6r;zQqFOWrXT61ӌN 47.2gRqg|g5RA/Xwy^ +fXXk7,B_SU1ש>32aU\wKR^v&6eS=Ǟc9<*e`J, (}kP;ǖ/&o%zU{xͷp@$+9<Ո$ q<#z4s[iMzC~BV\jGn=(@QEQE(O@(_C.JnO\H,:sVtɥى?8zmp"+;7Q=kI YA=j̓QdV{%Ibu l +N}(m `~.e+,#PGaHyaZxJ߼XE~m&06C\Ve7|~ +䄁9lU)K 8opTcޑnOq)bUiz~DZdvw5qnPUL|?–c4tvE8f,#Os]{Qm䝾R߭<*N{\Fa(õ5x=A\d{2I6װ$AAPx#r!ƒל%EؖFVϖWM}k-Ym^j+BOJ:1ߏo2Fc@$~i{.R]lP*PŜnjOh[0A*bk)^uyU;pھ]ڡqۊĖ$5{ΐ.Ү?WxRQ3JU^Z$ +Q9 A5"ı qJOOjNWwEF,9j?!%fXz9_jck{֓ȎC9驺M;&4ݻh86LfmW*PNp@jMSMh翵5;=h@cWWlȸvԑRz^HpvޔU,@o:Tqb9 ߵ4y]^qNĹ+'bFC()O_ZIVWIʦ˔W;yB;3s֚3sj9vJ,mS c Zde)]lEP9⣻&%y"F"ojeXc( d ;p8xx*hϘb"C:$gzZɦC(7w c$֎vހiE_s~sK%3ݴqn9*9cINx^k>kK;jP^)s|3 ~^^hgf"nUMEv҈%P:jaVzY51Q }1NI7o*Nțp >v9ܬNߘbFTM{H[QdX$]8j%Fig4 9&F_*:zT1ĪXg:\8 6Zc';G1NM\+F+}_֭&#]2-Y5&veӧ +qRX u~L(Q+yA$sђZ[;[HTGڡ3]S[]+yz~6gR&/ܶpcӚY+f1Oee.ijn;Ȥ^ߡ[iFݵ*(+L%F8U0| g@|Q4fNXiZPF̨'/@q_-7b.kj: B;3zJʹ9Ny,,4ĈpwkK +`T^XĒ;incnқ\r)9&q$>\)`T`TM2>" /B&wm0Ң+O`v늉 l\+M,|0AU &y4SCaT,9 6['1ONIGL TȜ:ʓ֫f0"@Xcڙ IygvSaN7)Z6իds6Q)9gbWQ(dpցYى;K 99k˛GsE;ATy"IKfA + MG3+\r|̪ҰU dc9e py$ez8-=0zВ<]F>0sҮ=UKImWl۩j.ʋ3.2HR$Պ2\YX)_1#n95]1U95 2F1CBD}Iw0`E2Fa=jP*?z F]V}CcSql-Oo¥{i"T݂JH\SFDOBߘ;+QNȥqdb,$ &ђx4Hp!,GGFnvt;bsuQ1ڪ(JܳA>24˻[YT)>y߅OEKf5݀yޫ^G19—SY%+j;" um|ϐ1' İf8`j$-|?ҕՁ)O#U-ͦﴦ@$5-`) J| 3NyfȍP Ս~7I ҄*TJvL"IC`Ufen&iFNF.5( +7|2Hdz[$K$9`0OOʛs^xO)U/$dӏPoiw31' +Uu&l^zwd8P$~@1C9qѷ/ [5X.]6Z 'U6gtT6<#5=K\@|SA5gG2Ta,;m -Űr6J61 FH=2&Q_%8#j2Q͕٘T:y%q[6Mwos<(@ö:~՝,s@ +r0ßjofirHa~>K]NWjOo$%tP0Sif-.ȰP00=[K$.X rAVm:|QΊK86c +Sz-s],1]@ dkK2QLc@HxmyLu8u{XIHiFx +'?֒Wћ9N?þ @#twA?l~uTvr"Xˍ3#}+QY~`_D]N&t[EVǔAz3apSҾ +XϨ*<n +ж=JZ%r͑YԵ2Һu=deXҦT7vFҺ.;ВP'X !+zZ +AyDH9yyNQ.ͺO*##H>֢Lm``L?ZmdgF@>PB[ rD9 tM * rkU|;- * O +$T"8,dqUN,qW+.6&j< ֋(|VՑ0D@+>CTYuAY^gL\DsQ"T^TۭvI1[n:CY4RB#P1׿chJ5H]OVLgmtm:fqulGE>56 _nrsR/k]⧜GsN?Z]28,0 9횧s4=[ĥ5[xrNҞKW;mHr8\z-լ1Z}w44aI:];D{U.rfRozD[6 ^[FjyuTrES2>RkJ[t1\d|>+$g6Hv\9[zf. Ŷ!my#=9RMZbdL{cfe.h';k$W~e89 yGuqiufԵ(rb9<~AoEeC͸px;swZ:5]52s8W-r3f[DDVG6bXgDaq>*O;)[_h[%[]6?<4ɕEwqO!|ĉ޻:(U֑kɺ7{VGu-]:џňQWv>o~گ!dK)vB[>۷ƹxKRq睼Mמ%ACN9iao3u˕]I7TՄ&@z=:5r!EnDҮYo\/-N1w$]IY?#Fgv$,~N6gZrnj㎦pd~^f{c-̔}J~A~is% Mh >Zu,-,H3cojl-[v7c(H-do8*T{EVaxDڮZI <|\FM6Cr8zuo ZfqvHI?@p*&u\SSm^[&啿s:6|Gp\w8$vQ F#$j[[K$l˙9_ǥM#J*RأqlH٤ޮZ½UHX.~pIj,?zh(nӈھH}SGKeo1ǻL0 8;W~9}AgJM_Yf# +3֢N^<׋ZΓqp`1S=Z~Wmj|:d|Zdjo+OWLrfw(>vT߹h=QzT˼FJo9d$ysrȗ @O=sٷ3Fk'YJ%<{)\K631N'U-eBl&qz҆lxLFqspvnlthԗun |onϲu2%Y8cQKUd(~[#JK +ь( nq=C`9Ns\=PƗ5355,T#x0wo۽SmJ"*D͵ %[.|=4ui4o\xwPkzl2}jgI!$gcz٠hޢbK#z\{NRcoG̣?P}j[V&QEQ|gí>'PIs _@n#O-M SAJܒOQE>(,2I$Jd,B+6FoGkf(VFb`{ pۤEœ}kFq{y_ ׬uR=e(Ξ/lfdBHq<8{(Y᥏%0皁,7Z&1JjFOYI#ɰcq՘>k+.B*ܩ)U\TW'v3O5 H̛=GswUaouF#P[J[FktRc>z=B[vry-3B< ;Ξf󐩞=qME7h_a=#s+}_rÞi|ObpGg}_K ı_p}hUQ@5=6X脶14Rc_x7^Ew`Ɏ$>9*_#\vg +9??xh(Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@mGF?Չ[~5E_8/_=J((Pi?^A^Pi?^A^gaQEv<QEQEQEQEQEQEQE-x#\uoTpydw"9hX^7Pr}xG<?VF|~1}GQawAP[ZMiu +Mo2C) P_~V3+͡?<忸{=5-2Xӧhm']E a>? I6,',Hz8WQE ((((|?[i=7 >TcG +6vw:6vp<38HrǠUh{kwj> D:j}sKVKau9KjEė%xzS+ШQEW|ndže.5]M + O]IO@5)6 +H/?_w, ޳6flG +@QE +( +( +( +(=rHQĘڂM} _Zׇ-^ɶZJ$L8_n:ݟ+=^]F}TSAѢ(ʾ6>h+鰗մ'bxz#Qʵ|&ͳ>ddȃ=<(aEPEPEPEޭPElo7Xj|"|5"^DX=#[}{}E}rU +7@4 N:=ُr{ӠAEP#|y~>n;osϩz7aTd۷zdKSedkMwq޳]v.AAֻLl:/GZYʞuؑse:A j(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEyq8XKa7_"4bNݠ p>C # 0pG:;B\0;~=y4i>R6N3c|dDZ Ic]f@|Lb H>-ץYXaUSt,K3C;"bz*_w| 4R"#zՖB\W2ٗ9 #= +iݳr1oc!OmĐJF6U(lnA7S9P/!SnFu6x⧷evm䃞 veF}!f(_ (Mcp@Rx-۸=S'wszqqw@8)\2r1P$qnlɹKe=G.:@! /TfTB*Ē3%~]8JQmI26rz]B6Zd -0}0gO'pqIq(`lޭE;\xEdhE<{cK,2ʰYؑXR;1žacq:iU4+ysg֣ES[ǵXTJ&ϛ)pczZ>fP܅.&@ӥuBe{8<.UcFV_t5BTnR.K=BZ2YJ$`r\ +*3c&8O֑Vi$Îv*RI=ȌrA?JҲ0 +ϵ;T?(aM;85gk~#[N@"zx5(c +ѓ2܃VIy4nvR[`S[I810Ns+õВ81E +rh1$X~{c\MAt{Q j/A#moH敍\Ҳ-GW *;'BcCsVU 1b9žYHR pŘ{vYYQU.H~8"G9﨩t*؆#8rcU<19c!;I8<j',ķN5 K]Z[($1\"9eZ1sU&9yFxnBA |z̥QE;ŖB.'0)Kj "+n'zJ3MmG:)z.Y}ۊKuI@\Ң"@'i4yd %{QGٻ%EfC&A#sG{UԂX]œdlw yUݕڋAl462f ?ԱK-8 $=mنE $qy˖rO1C&+[=';1ңx32\sNFvlw&P{zRoQզKWgL$P~T}*۲ ڤ+3djɣ:i4fF'|pT1qřDڽ:aW.!vAciz܍-Hauh+pzmWtc:Ϳό?Lu:r;( +( +{ƅQ@m gkk~sg +*[Ӈ<ϚkY$"nM@5Y AO^zW]o)\ԼHz~4[ H$(z +<̧sڬc3FHfMݽenrJ`YHO⡕'apjč%Kق0p9(f՞- gQN؉Qp̣ՈAc )#LHR88_Ƌi)khlJs)㯭C<1Qg9#V%[DOt=Zo7ُܧ݌T5bSONu&mpU}+,LpsN9]YQ+|Iݷ8ǽ;_@st{u'C-c>]IIuju6շisat׭+8RXAݐMf&:z_R[dy #[N9#]Cffʏ;j\gBm#mm* 3@뚽23IoH(mڐ,TMp:4,^V~U + +j[:dXPt =3SRd',FyvTE`ns׵+*{myp>PjFq֫Qh/}jΙe7Q_u.Z,Om+rH=)sCk52 +džc`3  +b[Xg 9X]ۏ>&Np(r6e<Os' llo$kNG~xPM9gLm=̗4Y/,ؖ +Iz? +|M HV\=zWN`#T6v'D,'hl.cgULJUTQ++Ⱦhy~_Bn]b#Q*Ogdz`&);7eZ_]J史|c%eDiqRwW P'0nNJdi IJ҉LHȉc'@Ubu2n)S}ŵt6PSFN}z$'ؙ7vTu:9apck*͍lauY,#dԟQyo#-$g#hZ{ |Q<\RKf~eYndhdCxҡONu$~IsOtb"ilr]r8=:VtX]1秭oZ/JzsU /218U{Q[6MFr0O_n+IɦxMr 6m/<.~.1*ٷ;z1KB9Nx9К9Sz+;AZ,5$ ;69+F# o컜5|e>"io23 ++5k[&2Њ9!|q9;?tv 3GOf)'0yJ~d!=D6ɨoN ^m/it]$¹* 1ޙ]7C Aa"QqPjF.{dpyPnA9hU,(fQE|1yE2Am1\Wb%yg3\7= +TGςc,vLdgN>}k>'-Rfv>\o.oK{TV=I +6{Y/go/C\7\}10ŨY砂8P4W/7d)꽃4d{Y< 59F$@.+E5ˡmi72gilăiWgkgmcnv¿v8P"Pξ5;ǎkco[yط_w^ hӖFmg>ǖ>h(:\jdW<(zZ4rZv=I>PGP̵blk\|u>H?~"x\tbE}ݿ?Ԟ(QEQEQEQEQEW| |7ͷN69V{z(+~ |XMf kjQQX|^@(.MŒKi^3:&b?R |⏇>)u=.Sl=wFh@Q_k<}CO#}"C!u]Ϟ $u;_hnAըZ+55`[ξ-9! ?|Z:FkBIӮof'2~澵>xK*0H?lX+[{Kx_HG(<<#yc右}?Q^iZMV:}VְBEQE_!tj< ࿱nF@ z{v!\lzS[y05F<מٽ*ks^K?\?/Ǧzk`t޺}^&totc  0"T)I/.uEH7=֨I in>;n5}A=!Tox ;qX]_.WɪW0&<7Mm +xR+GspGIy2-J.)ђ\¢)Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@%ed1EUGy ߱ P@I+5fS!r,`,댜tHgki籂Ei(G5J\#Z%kE?y}k>%Չl@xh)<sc|w!S9$条8pzUܔ8Iت0R\[V55n0S*#{'ץ,Y卸ɉ1^gLM(noDA=c8OP8X>0+B{3ɐ/e8J].Iz̤ rV9U2< .f!=i-tq*ՋK+(qU c`UӿCǖkCYc <8b!MUK"sޭ$#~C+6#RV*# l:LtϽGrѰ +sU jKTYw?;8$`QN !cek\[_.L@'mFzH6ٟ NFuܞ 8xNq%xx⠶#AiƁW HCQ-YGݦONp͌})<,%\tq(V})s?$-ւUgi/CXamیwyd[ޢa.q㚲mU;s+=:!q1]i\v"?$\` ~TC-'XHfi?L$S(#xU{qQDxܥ::5q#A.'?AU-A$p6}8@Y>͖i8>s.Ueɧrl'f `?J:qsVw=66ڞOB\y厃8f*«&Y +)K+A7f(9N=b}&8ǭH>F1P]?975:0GSHm +z{sRFcʒqLPDÕ▭#/6<\5O榈# 3Hkܦ? P&'Oqjacz9O1&HjW&uSZ 8aҫKo +P:`F׭*jmS!O-q?Z+*' +9V$\@=+FNzfՐg|f߻(;B=PڹE>TL;\QJ<׷`pE>U=BLg; Vr֥A$[nq-)]-$.̯Fn⪓2F7~4@FACgEvF=)u->Xar9#ho@Wޚ^_l3';eswOӣdc'Җ(>/ǵhN Fhj$qӸI'F; =GQM;%qi6WDV%FA5bcR56{ A#'T,1f@M@cߊL۶>]sNsR!g/C5Z#BO :F0iКrr,Y[0 OVXS$mo\kJGVt1UW*dF%R体%;sDLe7s: ~f0SR} ))IypڥP\YR4sRYp$Sz +.x3jkGlaԦрOzj riB݂ojwV5IF\,}3K4E % _5 K#Uc*Vmg9e᱌{v}6ݸ3NFhv8/OƟHN[Y I\uHFW*68p2"A(c]③[{/pM2E);7dfT =(;a1a:bN1Py6GՏF V8y y\M +PmZx3xɬՅ~I.H稩$GoV>7ۖB +so^T%Q̋bQ+F| +-;1}j+N~P>~z +- + Xoji%%<9|ïUEVg.2r:`T[$Rt'>n4aYiPZ26q5^]Im ߌ{cZF1soNڴ2(#8'O{pU s΢f}Dw&`NzÄ>po, 3VY`9lݟ@9COnSi<.:s֦ $/ΣGLRn.wr;`v%nUX,UqEFC09yD2)~zRcqtXDz~?7Yr[U:P=j#Χv/Lzѳ\VWg>XvdT qnDeXuM7q!/|-q*gW+=z +T̵d$҅+^zTv̗r*q.굼Ij#9j“mlYPuC<"H\ r~fX2ڋt+r="N20 ?3RV,m2xU}2|֐V dJ˹4QEly\dV h&<.3<o.0#hmT Vs;IX4 {&[n0 +OjTnq۽J7M%MۜrT54{U-ٓ`QdeV[@!"`ʪ&*["Z((kZZ6{L@KxqN_%i6st7ȎJO$N+ھ>aȴ&! 4$ 9 +ݵygt:ss52G^4wzXf V^A|#9<*vnڋ"|q;_yW"wJ6tЌkɼ0n_,y q棹uKRxRCv>2\t8R]"AohU֐`u=Z6劻&>gz#loRZQ=JńqcCVuR443!m[O8nYspCyxgq1/5 uycc2֍ ,6!sQ^@~w5`Kc:8˦,v9l6x5@Z8NIf)&Ѯ62JIԔE{)\! ;cQZ̺ڔhAlu#=z*;'Mpxy5g/ch+O[jr{,AYz;^^D%n+ȭX cn6#9ҨGrVX IhUzeITƹ +'8dKm3 dbp^e|ml}u=;QA%91b S+z^Ietcp?|ӫ毃7B]5{\Z;u-('6.2akw%N|7!#7Es2}+/>KL"i!er?x w kuَuG +ks:UI$亮J:qVr% P=+*#+FTJZӗP[k#Kͼ=57GBlSR -`Zo)"$boWw +yO<n1^+MLƥlqr~UCs{EVcxnf}m_-NcDEWԞ-8f}41}V̯#n0F+ޏ:FG9'=jv1ZiEXIvrXPڲA ݾ9Μ:foOrQqZ$ D̠c `~I_2!py\#m{`q[|{o>ҕyq:²+XgvZ"ee tj63lfPprI=b`3OO>[B/i9Kd$vA5MsBJ0ݸ<ɈĪX5w$JdI$ A=qjLod3%)ە(oں;oESgap ϩ.%;^?z܇iCc$ +o̷6ϵRôuROzъk9켉f|QqO]{[\M2=n6}72KK :xy1qZȤ%`@𿈛-PLdGv ^6@G{Ҭc(Yn}SEEms7VҬLHCFATQ@ +[X4yK!^68iZ +j[\:w~J :yQ%cݏAF}/rhmBpB4ڳ9{zm (;<?jMSVh@P3u +$k+E]~o݇NsCAPũ6i3d>RAAӱUK@3W|ֻ&̲i-;GO\qKi3]EypςfnM\ud Qg+ju..X>C]G6:_dv:΍Ln#ɎNzb*Ϙ(fG|jӼg5FA2O CWӕox×5eC7Ua@ W"@֯4]Zcw`cT(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV߄h X,TUӂy%ԨЂ( +:A5A5`|EWaEPEPEPEPEPEPEPEPEPdee8 o"`^X=I.ּS+iFRX\2"W?E$XHO~} {h$$}6~d/#ڨV떢J-a?CQEQEQEQHHU,I=/xe]$G$J,Nh_?ڮ>[(?Dx>:>e[6fq'o>bKI4xߍ?j9ImȊԞMsQ@Š(((((((+2:1VSAUTF񄧀L_s_?@~C4WH2:0* _7g< M>α^-u>}o +:xG+rs>?*+{.Yh\ed+b*Z((((|UUTK[0> [Pֱ +cGG?N>4,z@:=pLO{S^TI$I'4[jzr݇`@`+>(QEQEQETp {rp%PqPVcy43%g'wc;rv_j7px`]r;$/q +g3֗QҢy{deB Ϯ;T;TvƦ,@d',}x\NI$uJ}^P(ц#:~iqwelBF1wlqubzTP46wvzF=ZyRZuJUw 's^j7w61ȡoTO3ZGm-yb"gJM8C^\:Hnz܎ah;CDLJ.Gsܚn:V6#$ֳ;˝zkcv(2n_o~,لѱV#iKKEk'3/︀7cxÌtLGa( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(/>niZi>26<Ρ*rvJmk"36k+=Zw%̅I13e P⇹Yvpf D3K*z՛)3R0)=TG147uqe3h08 E'Dxϵ%m32oJ"/7LRWHIJRVq(m3wKppFr:7{f$M2yWnH$p[2} ԊvF[= +q v#8[In N3ɪS*Å,$xOhci?{vm' /5FO;C#dJ︎=KήK]%yR<v֖ c,rjdzp],y=rlTWe "zj(YKrq\ewψrNtp ssZ;bH*֕ CbPqVڱNh> EN6μ{H6dSK{om;#|gp0$) +N4IGf,D.4'8zsTDMy5%mN}qY{fnsh΢#W;sGzP1+&cn=jnU (C+MW`\fj'4mV!H兗۽)~~n21gKm-yIأZИETxJHۻ +Kuvlxs#4m0?{9^ը؃gK8X0Qvzդh=TE*K USDx3nF#s7r#MSw>eIN@a(]XN&86vF5o{Oed0 ",xA߶@@czU?,OlRHvS|5c/kJ18 ?1E 1[u~zrL7l摝 =)EczQmu'h[VMrRڕ2I1TICZ͜JH*WzPHJ#ddpirV;AnDNx^fVRHy4J([9v[ C ^Y#Mr Avpj;w,"N6XSln7"vb^1R@|șB +>cP^qur:9dXz椊XBo,:#2#$*䁎s]=: cJǯ5,.&M,ܥZ%q[`1ǿ1d-Jj֓} +=5Trq1H`%2,d`'9`d })fn?ϽTnFx]Kڍ +ߐƲdnxyq9RwECw"%cɫwВ@xW@Tq_6kc*dϿjѨ|e76B3J.**.#65"b$uo9#^.~w qX94t<>n4]m\`Qwz biK)P$) `Y7,o/s4 Zn.odg?yA–IZpY[#仸΂&[Βl>^ :MO4P\1$qgB!ky2hynYݿllNӷjkf +n|GP &N0F=^=Cx8OX_˩o/#j&b3csS}#mScMULA֖Xi!@(݂0p:sH@6aϥ[H[RTK"VΣ?ja(7+\ mTH{=^Xqo8WH<Ẏ.d^%{$㰪$EHY 4^.xcY2HK9)ʽׂi2\![p8> ;?7t2)$JsRjZ6/c##9<5rysn8lC^ҝ$=vX)JmdN.ךNHU?,Է*mQF}i[ 7Xp97qd3ۃFb>kGSP%;:=*)|ϥ^o#iKp%"A Ѽuym l2EYqz\ޚU*[OLpjQvy2=NU ,0%ػoT:|IHBA=QBJoW ǵFHS(7;bm K^6¥1 c%Pu8E9$M ~(WV,= UolZHIZ@wp͚K˙O}1 33JAVqrCV9W8oI(a:j)ݚ4Ar"Qx5ݧ5d2aR=zKiP,! +g4 &_7Nz+H SL9!{<ԆYqo~%?®px fhVH9P`ZјKo2O-Je~׊_$GPi<|e ǁ5fhMBw;6wxgYs;\Zmu$aemNjU@ +%8-Dg{u ɵ(f(cFQU,&U_EO#ira L"~7aVڕڜswjj%/MHr qU!ni#\V$Ԟ=(4jǑm;9o/lV9/ncLdRG_O2m*ghK[ֶ-.NifDeczVkyaH|N>v9Ӧ׺04;C' wqT"Ie1BB{⵵PlpTmf[9e $I/g_$& Uw<y/w䜃JȆK1{U8VW{[U >~(EÖR©.~Zy&lAp?i= t>PyAsAvٖRwrjQI_K[? +"25\@I']yF[ rB|;SY2M 4dzg*1HPEW6½q%_J:&D̷saZNO#|$ƠgʙPSMu$ss XSSRjy;K)i-']>A==}&ͼmX ,2V ]O$^C4ͱ=:܏Y[X".dm=EOu}Bv%g~xfRFTBN<ҳ.KKNH?ֲ29WPŮbXp"R4^=J˼`͓=yɧvZ(Y˞ϗr٩4.nDH;n=+9t\X>Xb\k5W gj핻 6y5$RZ\ccJgD&۹WKF (GnCPu4e.!vBD UHuZ̧TNU(HnxVOS*J79kWfXX30IFpI#,2m/6)qjia",8sKY눮0g=Y&Tgich2˒ >]Y[m5j"|`z{V $l>l0$~U_[xm᎙CJ<Զ-\ig5q TsqSկmi:"#q~}m ƕy&#C1q!q8gTε .Dp[=ZI3ID:v~osy}X2`Z<ُ'=x[iaSsa=MBm3I5iZ{/2m.r{ilH`P7cjл+:7ȲwzԷ D70:{N 5 gc;CWԘMEO%K?!`?ˍwOikb+.Izk6,S>vnF xbxtĽ"t.n/rK$J ep޿Z̫-؍3nuky +~Xlsl4g`m# t>Y$ֵ"7 êy橮Gu;i^}o=V-r8^֠ⷕexݖF3thwG VxiكFiU#}px5 v&16Hߍ>Hf{, y%Z+m;.=q2#+|'dm ++n22qQ^{6v3brV?HǏg9PzI_ՊHa1pIǥY]]`Kq/j`ғjKh_ޅ';Ӂץ_Q+om~]ȗp?kUKNм׮C<0soOoS"4o_F1քA+ulncpbkܓϦ==OZ͸?"=3uf"8cwQ:GEp`B.P}g[&trѧ-Gk1#?ƭ]S5Hϖ3t [y?Ze)|9m0L=ěې8[גj2M bɷ-X6wrڭmu=+j0m̛"`68Y 2+E3Tuf+ eU2&>a3/R;S"[[ܺ{JKI$C"6w+A(-J.=lbZUH6g~3Zw#;~>JG$!Y32>lV +_; >2}J]s*p7}mFA~{-J1O:oN#2 #yYLDh.OPi&C۠]Wʳ75JmFs~5m2BX{:UsqmEܿd.ӫɆ|1:*e(=TT#a^5@Fɕqӧޢړdg^ܥbE cn{-]c޳Y.'lIT`u#V*pE_?+}5E2Fv.ݰ8ju>w_\.xJ iM5ø:#a2yk_N3iM':HXKS r[TmY޺ىu s5rBn +7q5nTI=5&1,Ң6Y0mӫY%۰$`:ui&m4 T ~ϴ628栊1u(z~\RC`71_Z\]H=Q̯s`uK$}H1鞽k?RVe?tDp:qOj# B +袊fAEPEPEPEPR8+čVv@3N?+}5Ehok? +Cg@q=Ԧ[Cb&((((((((((((((()F*áSM'm m(dW<~fQdLnYJĥH5 Sop(QEQEQEQEQEQEQEQEQEQEQEbO[+_$2ak6H +TK藢^$a^yE{J Rǻ[\u[~>l}E"ok(4w߈6O?awLލ@~~a?ikUYc +rRNSђ##ʼny i_jdi10`EQEQEQEQEQEQEQEQEQEQEQEii!t 'TbrD̡p +t u%o +-=<->W޶<2#H8kGn~!?h ޗ3z4Qb>xjSt+W1~)VK :OFҸI;^=Et珼W5d5ɢo +O\P0(((((wr%$oBqP Tmk궃XAn0琽 '{m]&*̻N WAۍGAnmزɷ> yA%rwi=$״FaԳg[DKbڤbɌ1֨Co5%oDROSjyh$*h*mtOPrz>4B鴛& Rt9jӼ/emN0Wk/o}u2[! (*,i)Qu{sz&y1C1 }3-WA{bK 8.yK.*އsY$;޳a3L ^F޳|kΙ˻~6-w8$Z-sFf; 󲞠ګO]j["?#?/́j%t.~ +[ۂ PN@iJIW(g(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEGJ4 Ӛ)Xx)o0^܁Hǩ +qWG5+-= +[$\eR(2z!I fB1!sU6ڹ)]{H$ Ҭ!c8w=i,tLdbR7dgz'=*⠀?VWD(Hl0C +Gn&*wշ#F=*x^媕 ڠ3ET9s8mL) +>Da$ 404crMO2*FFe6?(=2#J#?+q=KW-m) NsF7V6H.y Si0pOzFAU> qRk3IS>NIr6I ;Sz(/d}KF@PTl4jIz$)7qScW$BTb]I6qM1 e#Gg|n,1+&£ v+];yI%>_&70#9)#lx +}1Բ"BE~gD\e lz*X^8`V(2)Ť ǥ+Q(,āw^,^*ocuMY8pxTͼ<~a }j(į ׊kD*ӒHG3: >$Xe$Icv#lzPVRQLUvP(9TfdvyxJvy`0M !ӓmB&9e|%NsS: +PMDʈ@{b9lʐx稣̵FKz!0szCN?(;9R-^A#=)mT j@F}imr#^xݜS[{ +0̌#;ITȘ4ˎ4bF1mjʪ'ky杭GTW 1'@xfB1qb>\`sI)6ۺ%ONi766BwftR+#8;8W`y<t# +m *FR Hp;R|wF}*Źr5ˤ.TN9⠼*fS! o\ӊKCdsKCi$B ܕ :4^B(ɦ b%OK-FqКťI!݊OHKٻ3䟔zƥ{bm9}铫jMЩf){DZEPU<.?ơ 2;c'VBurym qR-WO-ЀN*4,@ge+'*C$M3˰c:Y9E\7H-ur1V,$E=Ř`q׌LDY$Kene]sigqFqXl-+_b>W 0HnXr$9~w^z -bsSLyRCY +Ky|!QrL`ѺE}$$p-_ZKWb"fl6"mW c#bPDj(\S(2`יW=#1y"c4NJq@;Ml>W >Q-4g-kqbTQ"$z)[╔lbC:? FTc9,$ʃs׎ ZOtN"x(*8b)dP;uBXsҫLSx}v:f٦0FfTy'8˜~6ZF[21P$`_2\n) i+U"0U||`ꑑ>BR$[[eo&ěؘ˩t4O)$D 6o’Nv5Qia^2v_y7EhW.NF}0*^-C:y#-;MgtIedOs72Psns)ɷ$€l~nS \d(ddۉTF9qsTE /Aҧ}V0SkRԻ[Ih =*8!/#'ɬ̾Vahj n.ih72c"ܫ ,vjl!U;㑌{TH-rĕT%AVmn#:{+F7xHX  =RxBa8# X\˕/tf*@X{TyĖ ;tIjP\8MXtf evBMbs}>r rIN xOj{מ uMq>nSlLABI{bȇh%rxSF48#8jH&HyCI7͹~1 +O*5{2;[8G^5m"E$p1_"'')^R\Ns[l437_ZK[ytI$@LcG4fKżl^Xq,"[Y,M]9--Aa6fX.~Ulcmg3#~j̰zdA +*di +g zPk`Q |}*5c]X|syzNAuug  Bʉl,}*֧%KmteQ}I:.[č4ͽC2ozkzhFc=c(>=^FIKd0[%wY\ Xbdbr;sێuoڄ!3nl$>]ͬб@OjϖkYثz%ڗ~Q3Cҕ͠Ij +x\ t%D9m37i$x4ڕ<kcEʧu Td)kD/X9U x>)Sp7+/r?OZm@UV/1硥~,ŭ%fY[vGqLi7n*ŲZIq-yuy„l4=6)(.mX]>kY9O#7 )hZ%>Z AծM +ZTT0"“,wE*$?-FFiIctI1D1@ue9#N^)[wn:TZ[o"6Y 0qY,+$sUͥ>i=pK9 "b֫[F2@eSlcm4)[q/َIqMj̯%In6 + "-#R <)vTOYϗrGgo֥#x6tKuma{ tl-ʋcmn韥s0yjvSvW;̶4ibF4_/32+UilS FB?-+RRiJn}JrQ3ݖLcX7m N⡂K=Ny>9"xLi +PztԣxHgY7jƖC3/֬=6NўxґYu91nw%qrqWMӄGG<z5]#8TZ08玴^nŝ d>*RMfKl)oF3c & y#㷸ϭl\ەi#ְ&u8m5 vLyqG5i4{a3f؃-ZzUvstgȩlJӉgy I8!ZK%F۰37+Ncwb3Z۱U5o8Iwۏ^h2ho`$n5ug=ղmqi_m-cl %l1Lc,֠mVH-DPGׯ;G65H`N20j}H+߸RcyRMVtFIwy+Ji.4i^&0=y3aTl[i$3 l+NzM6sFP;#ZX.aAA2xո{OX1qg\^$sȤ 477?#mSt6.Uap 9j.&t}1??Ʃ$fXز2,#~t>d'N&m>፸~x]"3}OLu/.<n X ˓?Z.YWB?.guζr܅ &pK#ی űu3at [H-#Y'T[IIk:r5K~*O$U($7S[ɨ8^չa幕C5E(=`&Mq- ==}OPo$Krv=9$W6 2p9-ďǹyU_M ^InW99̊[3QIm"2}܃F;zc}p`g +v[wV6*4Ǫ~!JVw/id\O9G >6js)>_& Cmȧ<CNv& +^ eҦH2)vn|h#UDD.*5GTyenó̙#, *#R.0V y}?ZŵȪx`LN.I0S˴EG-<.gF~K>FNz%Ph'h[#r2s׿RZԟd視%2ryCjq=QY$-&\WIqZe$YQF>nx ۭm%J` ֮:a'.ffBdJ$܁cZ]GOX8#Z$.جř vrmo3#ֺ[K>h) +yM%2C}1UE9=cQOP| 'LJw;bmdLkip]$m7&*F;U\PV_q^Yl +:)|iiHXfb-.RH#)s"ŝ!KCrnN8zgڮ]N_ΰ`ۇJŷq,qFXaӮGI%}w;jVFlα7Ok A%0x‹㎾%>f^jU`[c<cUeխ{yduݽR xϯ4eR%ţxymj'+=;W/stif`T_JuڒAJ;sA5HVƜ0q!B.21kWKEP֦`O6V2e}ꝧ3lULIZ*In$9s53(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ŜUʱqUrU(rzcJPZw.%ݽީ<Eʏ#'ia#eؒ %s}$ZnCXwo?֥dhѕV0a}h&N-hdQEQ@,VnaMv)8km:Y#D*e!((M(M?MXnR i Uo䳸u("8uQ@rU(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE4$ORNj7?̝`l7=tHA,8sP$r~P[L/$BXz1,˖EQ[j/R`Sis(o6㸌ltՋA#Py68Fj);ZL?v+;88$.CNK!h^r)y]]!==($"sǭFmnPI+6I|>gGqs">|1$3x=j 6f'-V) e Z/th)>щЌ@#k:hiNi4O*dsVLB&"9PN)'{zU>oJuo5cvquU}!{iЮҤGiH朑MZX 7%ybXʀ$1 *GN_%SMTOIQ@I0##LNsjvPDfuѣg8H52" D8*_,nD۳S_761RLG^j<*s+>9r(6X6Ues"_2 ӽDE(2U`8K xg!G(t^$٥R89$xj R(d}\Z6]M_ŗpj +Nњhes1*@qTo|gr~54W%oB>sT B=:Eu1$V)xcyHK.H<PqL ֍\nW䑜`UxImdI I8 +rW E s֯xpZ frm1Eݽ=d܌w!\qJYI[YoՒ6WU sq֪ߍKJМ- +pzT6-r /3axMS&F7cYŝjpIBKpF8,rVbҪ "I#rѤGw rx}$Ч'$HV[1^2AGU`GlwFF phA'ga#U=ceiIU9:v][`2|mub$q;8TlEY{}jږPNGEE_GC֪ +ec:B .8e6%hG~F +u*;('SY#jƣ;? = +̙vOB|8I3K Ddn,9<Y[wn-|+oꬫ;9#vX +yQWoΟ.9TMp1K\kA7]2-6*F#k6<\kh;\ɔhA9{qQ Uf¶ ㊋JEiLBq9֔Ae:y#v(] ٲ9b@xl?UK4]\1dצ~qoCj{H0Y%XnM ɴ˸.>ni]jkpЈQheEDeKYZ:i>n ׵cHdK.1ʟzPyv»TzTk8lREAO񤮷*;%F4>6G]2?>;cSkcoJgIuo#\*]9k>;d2D6ۀqކ:i{"ܩJ<ߞaN;FO+x4"AjwhAaC$22u%U *J-a$lT #'8]Jxgcdju 27#6d b$* +gq'X[y7soی@?-ͣ@iS!8'Ud~ݢ(|kdci!U/>`۵TZL&V2Enl+8f_ɕ V \ӚEQJVFwew(ٱ2zbv&s3ͩBleb6{*6mi,vY<]9I$FdX- :JK-iۑ2ܞ=0; +uur (JՇqP߮n9WoR\i-,ڎnoo Ywwk7 +jvmpQV,.t+ I9ڛwwص͸}^py8>eyE]DHv8䉤hS:b,;Oþ)i#Ŝ |# LSZ1i{7mlBܲ3zʳ.ٛ\弍P|3ך{[MF Efǔ=OEe;kGdlqӨi%be޽d,ZhJՆc[˖,b'=xU99^&9e:Tm)Rh)-"6vW컀N}:;U|E:+EɑiߺsKwR8!m6zI Ҡ[HGE PVn X v 4t3^gU 5ub4߹r6&ުTvޢXmCI"19^8IH;Nsl7W 1Pϝulu5:sN>~]d/0VbÌ皐^KSK.$+ʑcb IRc y@oB /\Za~D 8]=# VpH 1ӵhMz!l<9tT +@<)LHCo&Gދ";[؛cƣiu(1Uy" A2yF +FzsYwǘ&~SrПeh@9l}VCupKG;s qޱ!d =XzmyXӗ72}t18s ,ctrzްK%k0&f[pQ ՜玟_jvd7#2b7J +͸K&c(=fe/E#=sImįp?/n+S%g[iey*F @zjnTҬO 6l~lb2Bu,˜m䔿/Eyn ,;zZ;^$1 +29ZCXɄ{f-fz֪Y򇃟2VCw/9GK?٤gP^R3M`Cc3cn 5 ^]J3R62;bLcɸ0P 瞟Zn] QיaGhݛ1V2][-Ԙެ=;WyWТ|d.>V~4eV۷wEO֚dTѢuR4 +1ӯ)-⾣;:ڤK-*G(EfaVZ-ҕ +.Z̫Sn@\GKu@v^:j^rʃU[́cgkFV7O˞9F +2Z~wFb͒8Px?ҙ,\]5Ҥ8:HV6o[Q>޵t,KAzyDSVFm eCW' cu8'?̗lRr.;L=;LKTTIJ-h7Ft̾b[9'$ZZH7kJe eK,Hg$uLRkehQE!EPZ~%\(YUmQIk{{xneP=ric(z\gwXm=sֳP5c1>Gd޽~<~Kx)$I#Mۗv9AWGX"Ѩ`vO_βc 8䷒=EsV=5FpG\z.dg+EQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@$l Km%aNiTҭ ugZ;R̥aH,1;~bi,z Y#2H:g 2 +nlbkNry ~g6qZG"(sPC$ uG]9+4ȐOSd#HŕqA y(̙O 1֢$Y>Z=sLsw\D֥]Mw); -2TB1P{gl@ l;bh6}CӊW|lTqjfp Ҟ%qW8$qI9X}~\y# tNБ /<ڬ-A.TYW 8׎bD!O#XSI-IwIZ. eW6c*$\AT6JA^^jk+2I9trIϖ{tD +Hin犊A8[uܩsj^DdYBrbq桹ªXぜgDvzim6N8[Ia(ǜ r%9x۶2*!(ǖ. ժg L2"Qv[9 k!sNdc.9HC,m"m%)fiBm銏kc88K9J\YUW&TAuy:9w+G_Ȝ"#jhܘ8ڣ qϭ,[p@9[%-8zTAPz:P{PO>:吖G`r'F\(LrNF4US8r%:s=Z%xj)$@YYNuQn1`>P!w rj-cr5e J+ǭN2CARS +x;N Ѱ$ :Q;,? +[= *3•rGZR*H8DGϴ/LpVˍFyI9ȩ#1w飌K>+oe9hqj;$>`LF8~@XVUػUAn{ЕeT5НUiO\F)N2Xd5 UpI9 +n} +Q֜Tc֝.Dꍞ})$Mi^3?Li>a0b'4& W1#sԱV_8PϒpR,HTWӜoZor3N8& H?Zqy1'w`t*$3r>^qVSʼq4֨^=G XybŸ)-尖HBpimѐ>4ffKEђL!Ā|梒uqJIE*p:Ԗu 0B(^N0E .')I:;MǙHŐ$՛"n0\mUOQ +C;4(PLh!N$IddcQ+} LIgBa8I.%Hn95+s2 #~Oa~T :AKr~bssM#8&ed]wpGv;N:۳/ sB&FJ桷sxӊE%2osqOA v%$G+lX>ߚ)pP@Zv +2+YBm Ꝡ6uOT:co27VIkK(W(9 ֤h4?9;fYzL2}kGES$?&XZx52@PKn G9Zi2+[ZMF?=|mqJ2R,mBlBa Vye+ӟ~B'Sy7FX85Eo:T1JFs׿֭p{T]{ɕZN]6ߚll\S'=zE}cb$mFnTk YCz^;qwm$ԡ.@m.1rrzUZ]Bq\-bn s6M]!~l\N$-Jm B- Π.KKD:LW LLmǿI5O=dۍJ-=$r n,Ͼu?ZEA /}in/ 6IaҴetREBq^[M^\o{T6qG?qIv#dXܹ9 6r uZz;U }nh>#u F@m68l=*͜Xk)ߐ֩BI0d㴔8MHڜ'Ɩ[r@DoJmh)Tte c;yTB +ȽmcҤ͹"ر-Iu5R--6C@¬4zdv73P$/Lu/s0pmp뗷,"ǻ|x=}!-ާYv617>l珥b &޸X…8ϽMq@#faI{qCpV4峞D^`N^?*-uH6<DžTOT5 ̈OkNY/#~#XNvZͤsuh' ۏlbIő<ͅ$ق<յxz +s95xQ|Jf I=JP厭 kV,dhxprIWz[0HF~zSDԌԋMH$aFx~mWel𧎾Ԏb^0S8V}*&"g$sI +_ST uht1+fMۃ)F4W&lu0M|D:^MA%RÆCӺSI]yXqk.%\K<{pp2stzmr!q2qgfGrciݘ2;YČ ԩGKm;I$9ܪ vΖ}P*d9ֳԘJ+$?ώEnϨEk 0aLyIH%<aTaZRwtd%f 2B>9k}Jx `힃0\elE@9dKil.3\϶Bʼnl㏥h+BI&`712c$ZֲuVҧ;y5.#KV@#9y[jݑ}:{q*-!ĈA'<Euvd:`v9캄&"r B2x#5> 2m-7PFNG=iJ*>\U_>S[׃ɳu<zմ5!HxPc,[<{vyd3bAqU5ZoncqeƱF#R®%͔ n.;z}܌;TZj!Xv;W~KjU)!)!d d֋-Np~e)`y" [z,B*^՝npMl$Ҍc54[ hp~^*\mJՌŽǎFvm(Y <vS+OQHl$iQ WYyE_dKrqMGa iM%Ȳsuۂ{ȫ[V{u.J{5w{gڪ$O{,ovȬ"8z +Йq'fwqLYbYmn4yFO"f-][:rUpsgIms6nOcto.v!mT֐gp]KsoZX]DltX8 ֮«*-,ss+RdY-)e_3'ҭhZo]"ӮyGBTԜPKq68g.asm'9԰qMq{7)XNA90G55֕+vNͯrrW/tXȕ\yX=a,4L񓝌W?JeZV8gQG(dQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@oiwš^S./;"[Hn^1CJ46;9敌0O-.dsW]_i omp%I +/Ըh|%PdiJ9<}읓L*-M V#!h;3Z^}yM5< [7N:{Rz"Y^*wz%N-WSY*˰+{Ewp((((((((((((((((((((((((((((((((((((((((((((((}G6}i$:GV"?9ݻEѻ_q(?87~qKi×_J=ٺ>e:G !zwncJ"]V5B`:޺[ALr9:Tlf_vtUc'Vh݄R-WrL\$;A99&xsSE2sEhԲo~>0?*bLwm +Tbu>w<10$ib_75n LR(uP1dF%7HVL9]C8T^,3I3YݍUڤ9Ndf>IΪ{I܁Tny򧣓8ȫ)lSWrDJTinW~ ŐG>V xgVlĎjYˈ/ SmOd&Ԫ+XrrWKe6 psޯ3 F9*2Mwg?)39эߩ|s׊I +;Sv!By| n1ۙ<ʄm?2q1*̖럔rEIi 0i֔H38T=NjuZt-ͪLcSާ +yV+jg$["8Q6 $j('"~pJr(}ұ9Q(0.N B9;UJRI6&>){E"x5 MEǡKm+"Q:(YDEM`Ҭ6R!ZEY7 3R+}rݑj:Q4y~N<⫾´y{/S< 8Q-#/*g^qV\}%" +?N<<\&BzuWc6GӟJ{IƩ_dsvk1!s F{gS4 Hϸ F*"HNœDB_&R0 +Ui@^;})3`} 9 ޡTE&KqPrǦhwnHgRJѼApO3¾B;>)\RZEYGHS.Ib GN(r9X#U}L+CWrҤ+1ҝIo4dIe 뚖BXEzӾt& +QF+;ciSC(UM)ZOQ22zS^7a/w#IARxǥ&k,W̎Q"~1+qU8",srJQN#%-ndרʥePö})6ISF#IK{QYZa] gEBD_֎ 9̊rJ*6;u<q9jxŖ늞IN枤D!¬@9#nzU 夯g튂UaQ*yVC̦;x1HOi[6l<:3®F jsbO9Qw "C)ېƒҜ{R[3\XǽY HYwsV22M ɩnhvyz{}jV?{Zko:޸y􍩅(".A:bl@߼nǨj.F}sdi{ +!m sHmNg늷71=Y^ϵ +qv97ƌ)-`&=(~1HFQ>S9g]7Fy"ƑBXu5< +ʎy6sSu#?*:~Xy5jYEǀ6RCȹ`02@CsJԣ4g|@UOδT[ư2"t^E$=$rdUDrwON-)";m<~exMۏOUXn^)YYIn1Ν%ۉ +r1𦬴dJK>d620APNQOW|m;ve8BG5F<ٕt[Y[ilMћpJE+?]x`J ^84ٜj9-ekᙤi^ECyI^#>fr +u[GCzk6ƽFiUyǦ}J}+2ۍݳֵH*9>Ei_ 88=dm(M}:闬#qv =t7񬏷098ޫ6db y۱ yd1oR%{#Y]܌q$rfʶYH8&@w<{sBHsSTd~tYF&gi­_i3Y"R1@<Ƌ_c;F.>l(OnݪI4hlm^3YwF3b'9 q/2o<)⮈֗,iq)udQ2qQִaѤM! ! $gsN8{vy49Bdz,9{'SmD>lq'E)Qǖ*{V8GZy.CJҶ{J\Niu4^1ȿKP^[y8HT\(t~I-y_$uM+YspM |+TpJI@BI<ei.ton +1# N84FT8-vg9&4S{/ΊY䍣]SsuHZU/й~;V̚Ż ͕J; ys@ޫ2. +>{Uc_v Y)ҧ{BŽPѢDm$cqZhkǒ92yGo=RO#vf[#+޴^ 5 +lT6\=+\H١gln~{C-,Ǎ@S$}ZnY˘պޡ3QV&}CPeyHfvLb;f O>q $=*P+4l:2&*6ȳ,R[( VhUFf޳ v2@EƳq\`қswg*.I;SҕҾpC"N6pw<S0mH"$"=sN~+F8,չBb=(.碑z#m%EIwtoGymPU#uK%[,co$pFuUvY2 SiX)]=˗:ڣEn'9GE㞆C-4r$J#a@ǯ\5H} g +Fܷ'룓]}GĎ ݷq +zS}ƂIuY23iKiyvȆx>F{qU?bL|?ɵWh.|Ɏ39#Ft'E-ǔQ"G>sSu]VO,R/翩Ѡ=_3B-*hՒəvۑWecjV_(XCrf#oR}4Ƃm;Db>?קRn*>lchIz5̑+Piwyq;䟭76 6o$Ƿo[ۦ>ԨԬӺz7J-/ۇMs%ո&pc'Xv_f#3nۜ{{)nyҚ]uowaK H('LTMV!a =+BȐ˨ys}it巵}vϓ{tU&c4gيu+C48߆78U}Q "HX[. qۥa(g  h H`@lHͺO2ca{Zlkbۑcp_‘,5hY3g rAq3C]I|3Mn2R cji-l\N3c^1cPfY i`Ơdh.!9|{gPĔ\N8| +u`"l#A10Gjn3ҍe+r}Ҭ0cq(t}9`uhaqs殳h̸6=(~Ѵؚ %yeI#0-;f:ؙ$5U3iooqmg=7Wmq aOTu?ZwM˖P\UۙI$ya,9tǥ9Goj]ʟ7u* K B3tۘ,m-Fmf_ g4 M&CZ)fwu) +OC$2,rS=qJ2.0p +]aώ{%ޖk +O%AZF +v)]΢ t;;u[R>s`\,07Ang)%M+[̍H +(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( Z}ȳs&z AE3"BF >)TbJG)zz[woۼNjyf@m6h] p~S: _IB׻Η;1aPi*[u: =2wD/#HA|t{Vu#U;أ}4*HꭍXqQf奐QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEZoAH'I P2nn?Mj8N= +M5m9*Ơڻ[LH'@ ͜r1PC|n+PtUo6I$ +(n>N*}cۆ;Nr C[7kH{MmdNR[06[M{mjds4ưA0'~sM"g;`rz:=#P=)wu#9╍өͰ<đ8nvF@$uqE~];u9zl&cը!P=[n@M<"lr6cm횕,E4`{i!&Fc֖;HIg%ޟ6@韼icg.O"nx*5Z`'v`rphPjy2b0'9m2Mߊd;< Ңr:s󓃎ZF,c>]j)8͸ {]vU; ֌"dwم`d _j&0(8s%p2Ǡ"+2Ki.$JSeg'Vs4ڛAlMsKem8$sҫ2bY%s(aFJZ79:⯤Qʌ"-1Vb)Yy889fiEt%V"i7)?*G{#Pzy!aq!Pv`㎕.'tdtsYfv.Qj_gF6܁7돥K#3̿382aηm vҫ:Gb׎h7ˍ #'Њfbv@|^s'd\gsew.GgG_lzԓqڨŒ'-ѺzB]P*9E_E~p֜Ȧaڣ,wc{b Lvjb4bff=)G:SxCsWHr9<❓&S^sQ`j\*Ҭb+iOiI6GIFy\~~D7ZVS5b,Qln)LHبa=ir#ɧ5~qҠrGztp1ҵSsI +;:gޣVX J47K>ctMAw;|j:uUDREl/9iΛBNžQGasL/*b;皟t0BL#p5|HlU- +57(?{=*e H{mo皯ptVN^fnmg玜gҠԭ$t's% 7tDyȧ{= Qu }{m<D|ǒ:*Ae@͹AQė$*@,Z&X Q˴qގRj '*+9bNxֲًH8'\HJr3)ǷJ.l\i9VȆEV=[0C5e e82&_1sN5=6Dw9|"U]\Kfp1WcI-d  qdm>QUy!1I8aDC3R hdQobI ЍTwdi:0<f#9cl'+@Hv-9}*%mltSJ._02;O7nnzɊk'˜hDndg)D&B>-M-*[ǧ$*$E6(tEl$Y$)0$]W +x0Oj-^$LTpww)i2¥zc(2QUçI,Qĝ[U)_#N[d$'!</.eQ @ Ms\BzsW-@ZMgl+' +iXa"4_hgK /##z-R ߔ ^϶[7e/)VZ[]^JySqʣ$fS(8JfV*L+ 3q[tN@cco bgGv@ Xzz='$:r~B+3ąTP^Jyҁi =1S Sb|N3QU)+7ɕ99Fi@񁌑TW9?5Zcv99FQb8;*KP$Ib8$ jde? L"M}ʐyq+X4ebsZmsd>]˶‹%&mm=bZ?!)HA$@Q }>RV HՙYX-QQGt\:aݐک*g<0-W,=:╅aYn')4}V6_0$~;ǵCh_-(b~m"I̤ 4WS& N0@  ,d $U8.T(N!Õߡfk2_9-g\ZhDG!5^;{F^YI^ǵ 6¬Br|ܧ۞RIkS+s֪ Jz;p 9*[VK,d;O~ONdHZ{庣$6xަ%FH/znMheub<[@?Nԗ =\_5` tV}rqڎTb䈬b@dPoܸ8.$ ̈́=O`3!sj6r'ӭSfݭIU5s8Iҍl- sɍ ~tM6ng=2;gګߝ5I8>TDB +䂹=MGݲf=$Uos]V%]*I7x88:}6 )8 +1GWE͜j{;ô0;*48GZZDIΌpd}BMcgKq +YC3\U;h~.ˌ0Q%usV]L@m9q}o#Gcvdj"|FW9+:kCLA; U{{{@<'R}vXkS*A"H֍ޝk^i ޲I If\Xť.Α&RcOM /?zӌʑjN)+cDhMZkyy_.GlkwM3޷len&g1Իܨj4+yARrGbuh,yPQc8 *w0ROm, +hvH$֓ZƣȆHˑ +srOf͎jrX{vǥOk{P;y-Tݛ[G"1{ph7K3WI$Q[0ĉ4UOR8gV6_t2_!H +2QȨ.mfm4ՒDydӁ FB!Rzy(=h5h=g=wq)9γ4K P<+Z;EM9Jȣ鰻Rާ Ng\2&=&3ǵG{i QLA)MeJQ8MW59 %MDdMϷ q\ͨƿdc, NH2z +f->@6D?St+H$NUev +7HL)GD?x\0֥]H@"_+w=(Afڶr~IV!-9z+~ῼG8c#~<7EK q:#j**IJIjCKym̱Z}O´glC̾LaF%^5 +|鹃5":ijA%Vf;{r[lfm~eOM/EqJ-˙etho.e`O\ # Z۳K<ԝ{¿xTz֟a-8~|0ɍL zEgme|&.P3zU " G<CZi:$>NH˙ KTu ;#$QyYuym+qڬꚌ1۴vrzgKkAnITWUl+C+58;`>Tc5`fn XMSm}>&T@ǯ{TMJ.> hC*C ]n#IUEd31֮_5J8$ucj~;oztJnݕTf@h޲cR8WC,3~֩",H:LiDo +nI>)j4.#%9 a-XZ=<IJ!zoj.'ҡ 9-sT4Bk%x~1{PB&jW7W2K Xr@|e63ʻ.ڃ{L+v0=O+CG+wK>})ꞆiR6zMܰGv f,8sگk7Kt zSEmn"S֊jv̌|zj[j)^0X{Tm-$9WwǚQG]?^[~8}GkZvSV4I>*I"iQb۵澻ݡߪHǥ%`2>m\()r[mKad#G#1?uOQW|:J.f[W{Yķ%Ww^O}`\' k`ۃ[lU.t%^38>թk.gS.G< 6+h|Sh򎄎)tQ(F)B2>w$(x^8t.˖0ΨG4Br=gG@׺1ylMKVe5Ic +5#GMȞoWF<o?\sWE*`eNx݊Ԛ6*dj pO g+Am- YW?yGg]6۾qcK٧h$jF7m9'RvŐ:`i-鶳ܩ9q׊u]B( RcI*w-gHPa2&[8kCT)"٤P8RN3T +8`A"SϠ-#,@A힕S$ot)P9,p:zMGEpbLbbOr{Yvq5c} '&?)B +$I+b;?.lث{btj8:*[]FȻ@8UFQEQEQEQEQEQOHW 32M2{ˤ0K>pzӴX}@::=h7mFcsJѣ4 ȓ3\Jj}Xj6hm`p0c\M>f77^6MRjtlmG)w˳#Tt%eгkZ^F ҡXBFݘF/^=7IeܟkUU*T`G= 1VȧnNί+-Bة2n ީhVF/[ˏb+!'c&8]^9?٬5=;E/] cRvS$ +P"n4 +T9fԳhz]D\jԊ#O1Pu ɪ\ .2qC3!2O_,~R{_)^prqq a锨*h)(0GPi>fVy6zhDž*@ێڏ`Xgj9 c +{ +ǡ]@*9w2P(Xs&Ͳ14.0@7$4FԑeH9"JIl MI029%fAFi#3R]JӴ\`+\UX3oYNޠ\H*{;'X%r)acrr)ḢI".G mF]A":xYʥ|ZJÝ9op6 ޚ3B5=3da*7u9F +7IQ2/_7sZlpIKЁS$311w3X /@GLjYޓSJRrxU N|3G'ʼg9C0$JX/ PFq2i~B d𲺿|$gӚrE 9T.~^zP֚3ߚ~}P8RB 2yD28Uj,T}9bl}^ygi#P'w,I$.s:8m');'r}'IA|= rddJg8>Aodi#J=V{yFTK=@9#Ԭm&oUQPaFWdʛ|W<+}ٞI'5P]]v(XSO v,*6rc<+4f<6˓qEmmK>pT \GUVG@Iتnrn.˹ĺj !Cg$\/je=y5 GJT9 `E WN\^Ȅ"]]x쪸}j4w*_j9'#}*ř>N৪ssCZɤ+r̫$˜ ] ֭ƶi9TrzL@UʁMƾ:Je;mBSEˌ*EY #"T=XED2B'(z]ƻϚ/#48K((݀GS2r"#}d͜cci) \UVryN2{\1(?.>o)X:rv ŢTB<桷c)1۸㚖m$&l=mQS%#>_Iҭ]9(>r݃\uPG5TFEgCR# [9'448NaIo\3֒̑y{v͞)2OjoȄ.B5#G T2CqN 'x7Ʊ#62=鉤,8Cczn2o $sHkX[y0i_0O83[[>Q僟֛mrk EݛZM?Lҷr+sdV!@~}oq8ua bUN~1,"5GV ׿_Gq$nr]Jc'N6jll鎴hQ#i7L;g?V|F`ɬm5'%<3EYq42CX +m}(b{ȯikFeddNR;h;88+݁##mJi8Wm3:8{]ZUw69K]L;+l[ivvדynۻ'kt[uOv'>: 3F"wff%-Y6@<`SOQM5İdfXF1Fy.k{dom?wjIVoXA'׌EFu%`\NQ\<J3rimsÄf2wF>W5mnf(@郴}}ꀔG/LC 9+Y0 cMS+ʣwk(J׃ a0}iSeH4YDkL=ݼiHqʞ@&mZ&u ⧴g˄9ڤ~G?JqdK55sH̹z,MvyPn\Z@I=a$JѡzLFh!*Mѽ&/x=j[9E?3aleφy83HX<Y]qq+H҂RFx'hF_Ưo -(p? +r 6V09Tn["`ͱFўj{Y;չ{kG%D{uyo4qJ9:˺I*|Nq4*X[/S wMSi-vǴ_0xߌpO;`nMes cQXn&7ѝxom!ՙrH?ZRwI7N'ϘHJ&+)KZ[!s63֥ڐ##*{c5=wݥx/ $ rǷZsXԲ$VqZ\[2JO8zGexLqMӗGd#iͤ09TB‚5̀zՈ$4^j9{/voEBh) HDw\c?ZiΥ +4lg`խ@ciis@@fj]NjZF7,I*ٙG-KM@)w"F+)+.?Ѣ!ћNJґfp*?n=,gL$Ŕ3ff_)$QSZH! 3qpcarC`SiЋ= __k,YJe@9=tMMe$1ԒܤWF @Y&KQp1TK=Ct)qT7>բW9'UAh4/ݤG.Tơw #i?T`Ը)(TWu7nU_$o&qVͼw-9~[WFA +͂0?Zh1U?LVlws0=W9r+e;b9-~W2! ZpetD@CwL7sj񽔉<2R13V h;).| +I\ӒΔ_"nu<{|k 'qG$q*)o暒Zsrr5+lyItfxe\kRc> +O\Bݡmѫ85kUIY\.~Fa'9EŅ Y9( $gګ@ؙ2Ovz6l^ǧsKX\MԴh#1YE +dkONY8mTc0T`rwjx/%$|9ҿYrAr@I<e[$hʆ`8=3:HWM7ERKh_{+*Fqօpi!BŽ*hq3sF !-ncZҸWj8Թv6Y:cnzpsOTW4f} [ghQԣ!O\{#ex;#͉%f<}9+RZmdO$|p=:VmhtRi.fFhpRp8Ul]Y[ryNfǥaDs$R[Ԟ9cIaW"* @"PRks:-53^q|ĸ ZϺf;>cP*(K)HC:֙39擒.&㬮Yӭ[h%182l8>4-$Eas6s d\?JO{#ʖ }j8g TE>Y/ZD{]1~ p:֮%՗h;O_jW9n-SK<ȷ7y` ޴s̿e&BwaVDm_~3V;^I`ñ<+)R)b2;U[K{ݭO3q-擂N}? oc,\4* $!G<vY՘Cl*1:/]$BmQ?s/⽞hc-!%y}芻jKB夣 b=qc4Ǐ`yZ-%(%̅ +KpN# +s'+A% e}DG ;ZMMrc(y˻N*ś̊B)W$JJ{GnqVF +^v1^yRrD,'=c"h7WM5AZhJ.m0x$ +[ll~mv i4Ĩ> j.hIJvnsxIm~Cyw=j̗pǀNOJ +KB%vs-4񁀒\a dKj[o;G$qY Ȗȩ4A |bz)׺$V)43,(cq֪ݩ;-McGHGUTђr:jc<~m-/qrkFdh.cqҹY 4 `4\ry{}ڵĐBF#p3g5FfN@éjfFjpL=,v ovR_2jҌ}|صȑJa}A@1csio2ˍ̍oUk_1.!~l\I;EK$4{իոe#,][qi FU'9ޝƚQì)VO,THRtʹ/eKyq hA! +shYַ̏/w Y-II!D-xZdhygȩ%dHx{}i^XLq>=zƁ9-Y[^yJ * _RH/"x+hesZVv +٠/;}*NX2nɈ鎵I=2[$%@.őX8۟Sj 4mⲚ 69ś$䚥4(紎|:Fn*3gY[ g~d8ϣM3)zmOSѧ]HzbY] Z\}BTֵtu"C>doʧ'=,RiO1&$ K8Y,q;uIiN7#cN+߀dy$Vvp0\GaEhGERw%>j+*gb9>dog'jI56`ndX2r MjoO 1"Ii(qJqTbs܏jsvWS]fӏ"Wh ;qU=dmNh!Q]VFo"ǂddqj),(>w3LTWp[,G;'\1;sg}lօciu$Q'tֶ67[efceẐ5}K +J6F Z&pV(fQEQEQEg g͑ui4px32H*@#ֺ[K̉8OJSlLi ȟN9sV}My İgf"\5uX/h#?^j\Ks"K!ԆǽrVdD~NTͱ"9\d7_dd(ナq|XazgS/\`0>Zd}i{$d7z )J7~6g4OOy *C++ːdV)ͱ":ƻ3+t{;1V;kP:q²5#[5dp1 Tci[jVzu$N\ p{Rji`;OF `Mmhtoݖ׭uZjzwق0*v4U{&S,^b;{=s~>}zֻ]*hmb4"Cp3<=sp H=1M2kBN(Ƣ55jQf +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +('k!"ާ# ޲M*J*7ܗGc=$Gq*Z%q3+8#֕Ԅ˲++J\O%Igd?̃5Um0݁VIe&W`Y]H^ })+JIAb{ӓjFwp4UpFIBt5^)VgxA!XB6=sNN2v.QM=41ru|bX5#$&NBO{g!Q' wLh*15CI+GS M6BW.6V8N%O.B;Ԗ$l΋)5j v\Ն1"އ47ЪQZ$ f N)HU;NT6RJO>o5R[ğ(= 4T$.XyR5y?__ƧKǸx!9ZSڣ8ԆDJ/hv*<ɖ%onrzvis4'#voCjxȚ'6}ˍS,oN$o^jnΎH_HfKLL]h=GYgwz +.Jx \4'ьS_UkBɻǵS'LZMhnXsʥuեq!J LrN2εҵO-̒ny1~9,.ZKv])urNLPX=yH1RX1 芤*-ʷVq,&{p\3k scV25#;n㨪Vy2@?wJp XI%*ojI&VNJMBdFp9#V{rC +5*3_N+4&YPH ?8dGj۳0;U`,!҄ S.KipZc9j! QYNrjX&hxAڹb{UYNt[]C+/x{P%E( +H+;͎X8JJa'4OIS!G_PoH9EK6w8>ZZB<@N*eG;EV`Ρ{tSh 횫؎G%txlc8]r¥.#]v4p@6BWeNn0"1\pcFR8/T EDuiJ4q2U*qNy&X0 Fs$i (̻gһ&r}*k'g;*Ԛ0QȣIXdjƩHhbtl"m l ѿ׭>3" 'd{UI-$&bg,>V6TһGm$Ƿn3Q2($Ef" +XnSrۗ+|mSA$bӊuB%L3YpTy R&Qrԫ09=zՁf˟,6 3$y]O$⢺7,b|h收.TZoK rU i84ɂ^j>KNx%N8nhVH1F9S [;̤,T={ӋIhMh5}bX. +FA<gynYܗ<{ޱCܾwg1Ҳ)WI# 5K9]tܚͮ'X2NzS2]IL2TwN~H ,L +y.cm۸p=So_yk m2/ڗqyxªj76Fs8mR46M?A.nF!w,s{Ui3)vgT&%^4`,RJb$w֮FV܉'GYr5{Qg۩2&8!?Jp팍Jh4r$>Eٝǟʣe).JWJzJ7{P"5'p!vl=3P*Ř <)~YsNbqiY;{ۅvM W-.ssY]^/Xha@B&r{~bKT隐G|* uEx<2eUy*+KcE+ȑclC/̽x5rȶ(*YpF :F6H=L,+4k8˗OrkrKb)@8;$1ö4BVt[*tn)[2Id#skqq2|Kuҫ}ז' 85VGv3VȢV/=F6.B850,Q;sg)~`Fw7KOc&Ҧ-˷ӝm8rF!m)8lN?^klwTr߱3T"p @x':Mu.20I8ǧO38`Ҵ4-gm=~`#λywSAؑ\vm9(I]kܟȒ %I8<ڪbJ8#Ҵ,0p5%i~Xx +=L%u%r#.1)љL0 ՝fހIӒx6'fzI%/$FHYFN0J<8T]I)U1yi|uUd'vϥE]2`$YV\`ṂSR[e#U+ۙJ~^sTUviE&fzQ#r{QҟMLW5ҽƪ n&} |f+V  Pr:s5+xgc(oSڭZJͧ->[t+\ՑhHŸ9LVj&݀PJN8Jm)"G!=yoEӶՏUP 9F38 fo3+ެ$k +y-+33+pp;^ΐ3qR7! CeC6?:FhFhx qKm88ӚR3]:m}3qYVlk/`Z:G\XYcQH#w^fY߷ozk\/&sǙŧg6cVF>:dQyL(yϽM {b1e<R[,{AzuҹIM2%kݒym6OO֢ktwExjaeO,qljqߊsIS{e`&ĂF'# +G('ץOc2=V6*i3V$NW~!()GWL[jg +$m%IMH6{b+tx8h7nqۚ3RNωd:RNyII0!W$O!mB$y0RyOJֳ.mwjfgF;qZ_Ʃ;:5坿uI s11 +WM O/>_ẔO6y˸AtRЦZv|ݢc3vb;4;IcsZS62=ܸ{zˉ1i6ޅRqsX&GNeo>`13n튣qi}cr+Y\EMQuud t ;u*i}[-̩pU\A##mj]iY:~9({ K/^'l`c=;~JIbO/J3fvdRa[Ŷv隳ewin۽[D'"d+240 aq+W { q-݋PloH=zc\Owde.& y rGQ8Y0m+Psرa¬RH#om=k#REeG!IibZW/+p_n3;UCh&3H ӣ?3hX^쳴GKlJ"=;~5{POh#E*0sZ`9bv HhrǞܻ;[ ˄tkk }T@Yd poW[xR(M9՚'z#Onj9F:-_2y4mᘓ}# RH<~u=a(.54'l6Fw8}4 Ht Eh9R趓 o1@Hds[sd mU >u~yh^x!xbr3l_P3"U%lϧJ˞4$ QIbY#B\rislS$ޥuHPHUШ?y9CdL?(3 1UXW lO'Cq^ス|6yvaA2~]z{g֠ nŵrQ!8Xq%)HIz3P\ķn.oZ~k\,{Ҳ2ϐg+TG3` +8#ߥpu]E`Ӎ;(CHN]ύsFZ&clS_5Až=GjZPK,h܀1sJ՗ʽ4yһ<)%J渹Ǎ$_IiXylwCv=yTJ(.l,>p8sNlg*='u]r㒝H$tܰO&L`1KZ\3|+RxfP)^KͦD{ +9{4na򫲴[BpJ;RR7W:a!yp'اى( aXld)%ѓHiV8_*OUde$՞+kzQ v8}=kOy26=>pKy$FU*IDJ~wV7mqI +9O>qɴ^?2u1:9M4+ocrYleUv޵ۤaP) fNdiyǓ;LS[Lwcwknܫ *q}zb7hZ8{`gҫ2I!^X|!K3W2T>ugzqw{y'+$oҶmVD24xFS HDBOnhJ]I2Bۈ9L.rq,֓%f2`TO=6Gh&p}iKۣ2yV*J,'q=3Z$A'E*[-ϔ/K'ɑfE$|31Y_hB8ӽEw7mǟ N:c[% z}k\E0pֶ.T[dONh)6GK˒$1wNzcȳiWU)6n}|85oI%qGoupZ7#ώ늫Y+_]/a43'<Yz%Z,el=ke]h.FeĘI^Jg;8fyך6V%imj\"Zϛt [;HLZO[k`fnqmsTZ=$ GtWv4Ry.?Րǂ(V\fbbW%#LqOwi29]^;~5闑nd.Dg'-~o_8v~5ҭ۹#銎DK4ڻ9=kr}2!Ps*UcyHvyT>Қ}I-MuyI=zVƢ' 01/9{hcO_ҩm5%KeuOJ,e =9sU> kxd*v6`OF#w ˽=g\2]cj1^ԯscs3[I-l¸?wԷO̸>pw}:{a4eWY&*i~eLp޴tgҕ=ǜ<…|7+I|\a]ZjGV.8m-EE+6߼Ì +c'B2YjXsKs G6ֆݶ7ϸc=:I٬l<+8bcyGMı6r j:QAmuUL7I1s8=(Оٮ->1&6msU& H_o&1Zl6m ܥEݹ;LI˙st.^iF 5fVxsTn!N,F7O4vZ \YmES l`ի)md?iǏ!711HYJvkFE6@9SP֕ռ蟾71׭fI$ +(B(+OD[ͯW qQVu=V=Lwvx?73W|<7!"xT_>6zT]nu*SKo+iq+ni6w$sq#d41y.ѩ=:KP-[Zo=)ub-N=9 zU{[nD0qӭV4uM埑Td+^zʹvR0ʻTtm$i;0sIN+I@p'Ww!CRq6#Sd|^U6H}ߌg$qYBחAcϿ^}.ic8'G}j̭cyxj 7l2oNͷ"vT%s7aJדQo(Xa{[ī'q0lĢvg Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@M "yYgn*Nl*x +$wvPݒ)32P42n!MIq#4JH 9ȧCARN撊Ȇ7Fw11R*ϼRFz吟m?M"[KchlPj֤fIT$5eMЌeIV?F'ٛv2zz[R$/TO>c95"۟0@Zi mAJf#&M#oy{m-eq3T{ +fd\ؑW0M!n.qo},\ T-`T?,G41"19'*Z$/2DH:s=(21 pz8`z6dT"Nb<vhR7YFY:t枯C.ZpNLbvj343EsQn@'J,Qsc[5heϥFM媆#52d<~tME6&u38'=:Uܩ3% 㚖{IkLcEܥ&rR?RH@w񴰢6, O,I<8iG8`ԋ^C'P?Zmc%*@5*H9AȦXb,J_5Y.teޟ7pjɷD#PGjz-2;ŮUL+(ptڈqmg˸+q9OL3mqQjs֫bjy|%IGC޶5ܠ;S$"eU [s,KAg`hGpZi;/:jn;0֫i2$`7bHjEo,K &6󫖒c/'v!FzŖd*2CJV.ImΏ$v0 y*K R0HҀZgie;BڕʶKu݀U{y~H%BX ƅ!$>ޙ,qb˹9:UEՃwԊdO5vO5rAmy4inaYFwq1Vcbv"G 6EdlXVrڗː)2ץ7m2hޝӕQ(Ud٨#Psݚdř$.8'OpT+`1zV.U C̸R#L\IL[jU ga# tmGb!IB*]8% E+bc$8EOfpg9;YK12B \fL1 8U2ݹzPJX(UIœNUҙe s!5⸹'uǮ*A6F;Fsڙ;yz-C pZw9[ow"Cq}M!A?.*:-0*k=Q"Ovfɭ20b9&揝;JsN;(;KɇHfkGr!TW#csC]-QsJ"wW qS E@'qk7 =IhB" v8!Rˆ*zP.G3oc[\7g AɺmteǓYϕR?1o?*[6llg9InsՓRp߹b5i?n=e@Ur qvrFLmrpyK;CE yzGM$S}aXF F$xcpq޵洊X +O)jiԦ'h ɁGX{,Z*baSOan\uYxǥK7RK ##$*WZ(YMAqis85,+̜}^JJZPO;$Yr}&f9eH ƟaѾm<18i2&c.kXMٸNy4.rlJ$KD( *C}*qyq3ғHM"dݎGop)HLg9fC6"gc:aC@#%7sO;|,>ry)xĀc;(M%r9#(# +sV'I6vVy<8iRВT֧MY[$сO[E܅ۓ`5{r4Ɨ -֩5}L'F}LU #8.ob؍䲢8c13$g*=kbQ3Ed)l1鏭7ΓqUݼ1 +$N=)֓LNGzXS$̢6!Gʣ>?)d?RI HRhib@IڌUX/VԬ+ʓa'*%P%\㊆'W)界a{F}?̴nd'r8Q,gPBlRh0[0. }jKKXƮpdO֎[ s+ w D oXj6n {T͠*(\-hq#_+unqszM݌1BU)q<OItToL䑞Yu 1m #a ϵZwZ!/wO6=Px<;s=ݕ!(b;x'pK@E:miᑰ p:i= +ms+ )UPA8\c&Ka<`ʯEU5O'>ݍMs)YG(n +7;Ik<@Bț@69-ᷝSj61HAQXrKWy-ww 1ϷҪ#UD 4Vnpx/qj1* _-ϵ;6G<jbX6vҥU-*BȻ`qX2B&I<սhHGS0]ib)t% :LnqROۮr3c9ScK#߹UrpJ=4*;}g%d_6Iw)l&"hR8Y8Eë;9GojEefjɆ}#%}gQRIhMZv_:zjn;GKd*cXQY`r:[vӞb*gAM)nWz.DAlu*e};c$֍9JF=03YArH=OAҶlm<)&iNLŵ9/L X  ohē P$(j[! OœHΩ'.qTmL6 +#NuD0Ilr v!k 0m)cҥP @AOJA$WNb +[p:Jڕi}Fh s}*mYF#˛Y ps* aJcTs '&.p$)Ծ[KOR,|R~;}}6ϸy1-yfIMy5~ߞ M,'A =s0BD =A<} S#h`֫ GS{-KԒg7(hVMuiax#9Ig\[lDrgbZGepϾ +bAF|`񊤯7ӧI_'v -5 !$%?YuS}[79$;%gcCJVȡ:=9,bfM*;X/.(`P'8=)XQbt;]'%Io8=:+{.EgЂΪc]k_bm9-!sq;"6FH*v]QmgN6#Tvɂ\'fv\d`]-EC$M;/^leʻ|0;)*J;ҺUI*'i2\[lnjk+2L|.Hxȩt7'wI=54˗r]q%kf/<|x{ {UL<&){fY c#lzW/5ב<0p1SWE9;mڽ*7֔Y\ڇ2_$qǩiQѻY2)p|lTRK )+HvOJ2.+jhVk[zݚO)UE;J|۸uwiq=q)mm7F-44q9\(ewi$=^BI5riKVo_l>ƶMDӨ n玵%Ѵ+K~˿9}2jc5e#,>玼H9wsAJܮu&![mJ˼8֦俱'l⍽I_pےF9ǥPԮD "?w#ޖكP=tbX5fhV=R;c~X=8YpŧZ(ۼ?J&4ic8ۡTu>W*91NZ'3};UWYچuay 1|9\H sVF <1z%(TECֈgt%ѝi?k6CU_sҺ;WmH*[c8)\24Wc20$9Ul5sCxy-L&] 7Fis? ˷9Ӄu!GSz">!Fx%G?ָ幹8%EhFw3/ B~- } y/#lB[4Ws#7VS$Rb&[@e*ٍq&ips1ds+V0ڊ]jq1=i!~aߞyzl7:)q̌q{ +\T]Ji2l]dsb

      OC%IUݥ+#8'U}Z6h"+<9UkYRE<ʩNt- k'V59ٵ@v銚kF Y,&8\ *K{IBy04W9_NJ[Z[\9PF=ϽUO"peilUziZXQ?g z4u8uv)s qwa@tebJ"kiݷl9qVr^@-n)o'5SU{#v&LvW3hsv֑]Mer28=*3&((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((;I8Dy#K5۴rqX(exe+Qn!p3#tVBdj%Rp2-pqI]6-V~p1z .yJ Y %Q# cQMho}˱{Ux-AϵH<3L줅qi/y9oJ]]J6Ǯiͷxp35Z)b [nqVF2@:4Tί VnG1/bzgNJbgH9OM.[ݮ)#?ZP +Tz AJqZ +pqLNXUWQ<ҧoݦ$uJl֖+JB6&si("["tR)Jqޢ"ErXp<xHJiT6³Xg^J>i|sG卬>:mI]=OZkI* +sRI"HJ=(ѡ(ɾ>E7vU.̍\5Ȼ%BO֡"F'pFARma?&X=jqH)4eҌm,A|vac"vyM B=MK;qv.X aZrvqO 8TޚCij 6QXsZ&H"ytozSg#7) Zywוh@qtO5VuTpӜybIc'P<;&y M4$SQ.Lꈶ8Ҝyh@}Ǯ9֜Y*TB_Y4ܜ1CEBob96I@랕PF6|jYCo.jEOGl7MolEO" P*$\gvVomG גqTnnMӞ\DA03MƯ*q)1?:eF1e;,-XʉпgקVkoP0T-}ηQANӇ)\؁`H g*vYt:<6JZho9QZ)VCW8jD' v8V^٣r>KS\G<[f˄ +r*^Xgv=T OPO8s.TO %yz}i?߃9b)V{$8{HEb1Pi92ыiOr;TM$R)~Dp$VIsQ\=is;j)7{(^MZх۪(Vl`&|W#}v춶߁{l l5T>r*Fm>l(^:qR +L4f*1(ƜYwҽK(LzSn Cé>~>ع (:J(4I2=rj¼f0#uxT`PT7l:t UԶ$XgE6 D#GZab00:Ry~i,WwCAY)$MUzqNhݤvEiBdnlFrnȊ#"ӊu%G hDV 3I ˬ)y>K{0?t6u|UIi$DVC Fjn*hLf@ySCM;j9EMYu+1tݒ:r*F=*4ݰޓ<ŋGsޚԉZ:= D3T3^$h\7FH|bRK:2o9BZ؊$[dG9|VBv8Sk(X$IA95XňZCIqv⥵ɌYI;xtL-;gv*\  :nmvBqcsmڙ \zԃw3֣ɊF' 0O_ž4b*睹K`g?Aw*$2>n+3ij |Ǒ۴.iTi,c$9]@ LR\nÃO*}~^ږQZuɌ8Yids3Ħ8=FΔQA/#zw{{;Yr(dC gѦ IٖK~R-ès`hkV@V'ʯ}j6 osWouo^F8s!W)ܲ N*пX.SҴ*Js5o I]Ϧ?wWN\5Yݻ$tJm~ROQTQ$cե֙kg`} J]!Ҥ c TƢdzb(d\s53lOxtSW\ǝv3ҭhӞ~WѕLbI<3Ҵ͚ 2B ~>I`8 }Q^=GhPըZ ev|CSuXYq$ʥ%UI>ʖ2 lSԱ]i⛥3,R$6=I!;pvS:I]}RɧƁy6P̑N1^)}̳ ýOIa Lp?J('WiY"ʌg;RCmyy +RF@l#jIlV]DO3]W.(rӟJHN' d@Yͻ$+mAmw g+r*MMʐGj9TQjvgX%2r8iMȍxV%DAs㞸+=3fWgyAӭ .NGX)]%8l1ǭQ%'HTW]^fx-1V(ɖLgך5@*8%ûOQPjE2qu$7*dZerG'#=ݚ3B1*խB$L#gj8LX\OF߾3<㩨/χ vdܫ9=]_SU d{c 1'-%*㚶 ·&c5Z)B%=%T~E`Kc.>e=WSileoAUXR-_kWWK@?*XN3Vܡgt˽;UC8eq8ߚuLb\pͶWBSi!3SlϚTije?0{TY~HŒ®jD89VidSsWv5!`O(A9U0ʲ8v$mlčȥ\5R P,7mi\ڨ˕inFm2.5s."=#֖,#o֯A^IrUzgvPUy'`[dw>b.. 7qzpIu$PXޙSQ:Hʻ2=qP:8 VWFAi2I Cs 3dUy.HeGҟ.yѰC{GqlY c4BSNݸ*4nq#9;q߽JVrSdi-[˜Z`&Gw#-@P>B3$ku?ʳ5UxDq"I)NPVg4!vhkw2C,jTq˸Ԑ }"X0H;Ojwm sUhG?UKfb5#"V6e092}p; 2{K aϿ+lV?gNg?19M<$Q7$A)s\g3҈&UrW?*P\]\)6 +;*䊇U n5,0k|Kgck=ZH|xS&o΅)Ԕ!$}#.xWlq3y܌c*0}y#Ic;QyR2bTɑwWme`{'?Y&1h lg+M5Zuh뵌8ڣn$@\gڮ]3/pY*ڲqg,.6:=9jJ񶺖/|Oy{hm X?GgA][S<: {Ԭaϑ602BqYu' ̘L@͵et h>: ;^IF' ȧ좞,U%p!ApW ('?^m%;6pˈOΜ&Khؕ%m9NUi`D":,18կ|0<+#*q}*A'z~4dXSrK +Am$ebSD])Z{2dt㊽{}VfOQ }D9ތ'HH*h7o&e WV|Cɸuf\# zխRQIKh>6Iwg1}a۾L=N;t=F-c֧[AFii$P-叺L zԷ:ծqǧ՟#;qJTXJ%6 SԬbRZVyIrxV]~fAIO`S]峎~HLdz-;O6~9Pm!<"s6oO¬X61{.nA (@@(0ONNN{h o.xc=2Cd׵Q?lq&NIQs*VTNqgN*RzRv3|2%10}G%SglܭIt:o_z-o65I eGUesP%rkֲ]Al ֬z[ݍ_Cv MI'F`k2鯬i=t׾lt/!6y?mv3me}-yrw(d{n-{*+nB sj/GBml|4D*\3MV[Lmġ|ch'cK-tH3 y'Jgӭ$(*Ls +].Qm4pgȫ~fd:prls=jf~K8p8|1%Μ'؅koÅ'VΥZ]QD#'63MRk:PZ6q@W4&Gw7_>g*{ +̎xoG\Kl9%Bwg*ֺ{'vM(II.g}LdV?tZ$ٰBG9$*̂ZtK'#?JʜݴZ:$)wsSN]Dԭ;X>Z`Ǻߑc~=kBMo2g#uB::+$N諏-A3E=/d^ZгcLeM<<|ۿL{Un, hb۞^[4p\Y7v5ԥl +ą~,Z:5{ VrG+N,{zԓZhwQed^w ϭM[Cix2Ir(횆{KX΅qx#֝ݮB[{}2{h>P%' ֤d ylǥik-c>NQcR0c=MB +WC\ q)_o:C4{I$wui]zuP8$ԭli/cI'] vO3XMV2N7wgғQ;]f~̛cr<9[r[YL}U +NL3Z6m϶) %qk88EuKq,%-!RF;)}&w3 hs,yjj]%BW/Zv0 {d;eS~I 52;M`0vW/Kh^D_zcީ۩9w;׿Yng +Kd^;ԑTc=kv"Vϙq8UFl/׊l^nq>?yKf9q,Fܟdxbu]?'`c˓Œ浯L `w粁pA?%AӍ˱y’qS|<fYRd;qZ~/)"XHfpsmAZ!ec?Lzn}bHL38OW?ފŧەM +ĞP'Ac,z 6v6hPX]Nd7ex;cYu37GZގC2Fq;o?ʴZC9>:Tߩ鶣cZGc8[qsn[EOnK +%c'Q_Y7s ivG'֨ 1=qOgQX!AFj2r}yP4n V;8V +9P Zې&|a[t^Bҟ=Wo  +ӭI je\FEV'CRͭ ,6Qo^rp1AItؚ>[mB=}+/RPY.~6 3O|fbI9XL1Ԍ}(RjIعiXwV1pdQI`iTU^8Vڃ$ ET.[S)[cJŲ)ifA]Rm#o1 {⬋߱I.YF~}8_R]쌀Ht[>Pom{pZo1ybcem65P#!0ZGx ]0rIcUfo`2F@DyKԐ׶iiY$&DN7,Lb[Ps,E& a?,{( 4MQL(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((Ҷ%lg֝)`j w\MTsN*I8eưMZ2Q!Hі(ȧB!U &9Kcj#'{RJVwlIpSr`j-!˺Ra4wce..r_ȨI%N;T +G8mxM`1sG2BJd ++ ,GAT6Du#\vlVjBzUF3Ks֑#88R9ĻPz5W͓Bi(6*xq^RSJ#sX\dg5GFat$crjUe*qWo$Y^шrXP3эNnz.*ob na"Bcܒ!FGtQX F==;S#~y`*욹(K- rOk0F3PG\9@?JnN_+*#d+NsR$^[4mW;dVF{Eɦ]F9zS)$@:J`['vъ+tJS)NKwZUwsNCɹH8=v"lW1Sc3z5bXUb>ZqMHvc?sny*!5 &ghZ+^ ;2pXb2TRMpn" +m(sėo׃TcuwǛygrc )q);բf1i_j֩Ja%NWL!G:,>hue݂9㛒T'"B_j)9rz4A,1˒23RSf‰p'ⴒfCG2ԛFЌ_;R?6{_cȦDfN\xvd xY4>8nF66_ڹ x9Ow[zQ)>b4kPn8#ho Z2JfL>۸Z$ܬAs(ڹxBȡ p8<էk͎yQן|Ts̀BtX'т9ǽ;B8U̯vJ*1k2 Z˔>F;ڋܬ(#^3WV͋HCdzZ4kj2ShXEmєg{ӕ'I$xqQK漬AgdQ qpe*O>Rjjf +݁cS nǽW)"l1ٚ:jQi$uVWsz[hv6hP[l<{DA{{_G 0%{V[nUqJƕcccicֆbda'-sAl.ͱJ|T\aY=MZyV +wn隥4 Ulc=̞T-  [{t;n>#[*՟@Np[AlNw3.sۥ;5lGol$H%T$}hM`#MӟzK l0ݹP<w덻GGen@Z3'h~{i#y9Td%cӽ28'yit4j#'ؕѲ$iigA#[nΜޛ%e9X„QΤϡidf +fYX`~5VI S÷Cϭ1mȷ_6>, q q 0ˌe'UqCF3IYSh`YsO}ddMxe?{'g5(,fApàaUd\FZWAyMIUctҥI"m2 '='JyD29[UL:榚e̒qA=Q"\ݷ;rZreVzOҨEy'I[O"Qr3qյxy4q + +ݏJ{neԷ.FUr =0c wk$0 :o*uUjA{2֟6ߩ #2m"R\uB9 Jң8~4uAXj62"m2Jw_Oƫ |i*&G2CUge1GZo-AA9^i홌?&{9ln!N^q}*ݾ-OU]jPGYo1AB\_AT*f'81ί$ ;dQh>V(A.>3ޮ, z `{Um c"9Ω <\|Æ6{P@rsGIr76g$)eі,iջmH@c1k?P 1;>2z}in[nh'Yn#0BdqVV;)|(I u檴Y\Bjf񃑑5%ơy3ws_j`˕tJp=yI@pI\%@0?rvD }gT$;2+sקozk4fWۂOfBNPm7{#Gk =N9]]AD'sK&8=jƙf T.!TTO +K\VwW;#8+=lGgkS~26-v13|W> Pme#L3qI6" bEXю) h9mz}*HP\ZnH4`B>eҚGpsqSSER>P2$68 m?19+}԰LX*vⲟ6Dh灚iT. gI.#]̐Gi.ghe +E93"<9RYeRIe1=>I-̤~RK%F8++uP 8( j1joxD/5r@>\Ne?jC#$U?%@ L˷'RejMoryˁ&jBCBUJ[u3lL-Ssp(˧r3u:"8 =P.lq+,a + ԥji%KVTwq[5 i]fp #jeM"[\7# qRZ)# `K8 8##97jpi<76{? +&6z0pjZ/rl ͵'PYN̐ |pIUUUR * 6i;70u"] b[EueRS\~?GLf9 CoI"> U>}2U&%c`yqMQ9jb!!P Vƅdظ^y$ +JnӋ,Г4bPlFsl ]tvK+,?ػqջ[!gU]á9J͖W΋6!v<X+C'~bOarw0BmH\J_nq_P[!dlmv+˨X2j;[s W82Ok2FsȬg.]1*=Φ4}~aTp> 8I˸o'SDMmtYsUn0kmn3\Sb۩ki\O:͹=eYZf_j%ü>u%!&9W%|LR#Oޒ&f]jvO6[yWdWo66hsP.6#Wv*p :hZz\Xo3cc ?M)o BRroXY!59ILnH\ʭ"|=.dhFIݜc’]#GÜkJ`Gmlc21ǭ;a;<-c߻'53[3nf{x}0ŷ|!NކJ.Ni e }v᜞d3ƒodn٭aB\ǽ75Ti<8|7֦sG +YjuKm# i|Uhl׭]Ҧ.im$%@2dpWG +8(N9|q.MBFqIom4v]2HL^OڮC~I9d}*JR=gq31b'րӧ'ͭERjȪy |Q^ iv$pgwNJɴ0 G'VM:hdHR}{M;EWՕ-FkXn#9$B 1Y[|ݙ>:r]ie|ȉtsMenOwFC+jvU|✕$ZͰ{b}}~-@xTB7)ڴ2]%Qűs@~] NOnbj:A +Hpij]HyC/LZv%rJ@2*_YƣL{5&p^p :Ic*,89wk+M^kFF_)M q'i9xE;AAUwd4;]6l7vm|`F5=؝)g0]7U{W !GP==)vDWW:.cw|I =>MT$]{YYj*秵Uh,G \\]۽B[۵P: +:ޛ,:~$LHHW*s'?;ur#)kJ-I$p3>oZ]2p+$gX&TN+S-\׏aUI/'zϭ;8YgKn$@<`Jebb:u쮺e0WﴌcNsYR^iqhzеCS~yk(<$v^|Mm'H?M}e-Ǔ(c#L)o u zєۓn[i 4*̛pHA}Iu{$d#$}jWG$IT2lmɜ~ĹaYp0`zfVf&ye_2!!]́~D;.q\>@9x\zC^b cnVNCyn*;Xqh)9A)w:K[X ϖ&p9 ebi%Y㕟9x:{Z#p/wuV1UXI1YaMkh_56 +s53G!mm뚚6<·sPI"HUTylO96JRIL )`rEkA3Q\@ldn:PijybjZE*ͩpQڹ<95c?ˎx'-9Y00%>R7KxpsQ|ԽKn/Ц]0a9W=X.V$T`R?LӠ[O$tVzdҒ,E A#@Ry"K89۸ɨeH '<z|g[ \hufAQ άtg +y؈W9,jB;խ1o/{FpO\*VMÃgI#-EOPpw.4]ESCu 4#M̽y4$V#lh5}rIg^)K! )b;&JnQ<(-t+ͥvKcXGNZ͞)Na.a椒D+\EBS s\H!F)䰲3E]Av sz)%Cۂ $N fhR~g@$**q+gښ#(D}3,Mkr6?}Ò7J1ט\y*3GӱJ"Ct2C +8`wd}bp`}i^B0^x"V6D)6`u2+(AB Jۡ`S&qebbyS +1zV,-W1u=kvrBp]v4ᝠVV֚K17 'UvU[x3n:sX딟Gr[2L2}"T8Fn$OG[]CO3NUTs=QrWWXe Xې9Uh+-.сj8/S!Ŀ+  +bPI*mURh2ngaT][*+i#sjq%8])OUd T!E EF-.D,C7/+q?Z?qw*PWԩ%[+3y?t*kw!Ƀ.#ߎve } "|'LRn{&뱛if n&^ݸW7>JPISZ{!&+eܳaȒX,[3Who$14CɎRZ^sipeeD9]}})4R5'KEI:IS=3["&qT䉕[\6zcgˋUcHwiCv,a8˜vjKk{(,YzKx Ww')@Y +N?JW#"C023,bk٢U.XczkGMPӯ2ŻQ@S[Zio%⣤%d# OC;u*gR i,zt;VƝ%Rȴ#r_==Y [FmgzZV[xIcCjG1SIbeQBw 7FQV;y' )NQ{TzGCG9OsTs =fڧZ֢E;嫜3QidIee Q[#O)u|oqdDGy4]-Òm.W KY-8w]ےX ϭg;-6NxY~?w*s)b"2d,i7+{~%6RPV9\Ispݩg6Ѥr9uۀ9遞[o.l?|iS\GYr\)\oQZ%dKIK|Pj܋ϙso5̓2a 1I>ԍ/Mɞhܬ<8U ĹS0\z^9t$yc3q}> Ex`#z(WSjIE=69' 0pA*zcVn5 n6R D +VӤ"vF^˔hEo7O=F!, Rj0e m+ ~SEؚSql҇Pә{g'kf.[o qI<0_4n0Dl6z%a,҆foKØ$JIre= o:@I42~N>] r2-E3`([d[y/ټ圌JvʚHJKGbh]K;H 'V-odWǚlᕐ! jXl&!W` ?_Ҫ{Eܶ#H:|Tg$+Iٷ=IYwFR!Mß|֬3If(efPsqINSI&ӯ2K+nqK|)SЏ֭1}*ą'=Obʦfi%gPP95~rB ϵXrcך%Ҍn8{x_qeFGS +mrٟs@*+2IVE^ HYPm9&#'TROS׺6FwqG6:ާwyzm@PNYWW!v瘉>f$}EV`l x9.r@vp3&{8Lcx&(u-X &{}i2, 5TzcMD HnǏƧ&O-Qe>7pmO9'Ui4b`rl2@fTIN޼ vԓj(I.nџmb7 )F?wj,.Xe7&v VH!&WopnkfuvPӚIU(ɲ׈%[yw@^O0nYWnwcuII& 1 kM$8cl $gWQMԭ,H1h@}>ڭIomasVUPj6HvTQ~Zmy'L3-:YKw҉h7sOk[-1s'70#ʞ%㸟k+? +ly!)<6oP1J]ܑڟWDN@1C?jOZac#rܚ).E'axVr;rRS inc篽&4+B CI;n103Ks=&1eR2pjgb%D c=xn#ӒkOk tќN핔;G$L~aҩ9S$Pѩ!T롾X'c^j7qkQ]3Qr gԖsAe9[^K$]|ulu 9#bvtY#9 \0Qb6`dva*6:ua +Hr{`+m[3~H#qh3C2H|F,'R^ Y]$s׽f\}DMbH¾U.L?<912[5ޔ"u/TV0 +)éҮ:Lru3zΏ7%<*NJ7b3m<ݻz;PvܳM\̒3ڹa;b%UrF֧XwHGSOwT$Ե2[U$LdqDAeNW=lHPֱSHuQ^^!)ݑМ:]خKBo`NYo/ {EobtpSWh{YR`YCquV`FrGp:qG2җQ\}xiF @jy$I$xrՠVwL885;\[N4n|ü=zvbM8#M0w6,#,(<-nUO{$_!WGJ~ymHI 90db8'EIuw,F>9 iMgBqgZ""G^ BRkfm Jܵe52#q~R==i$Nϡ3۪16 +##90ie*<[4ֲOi 0g" OZ1J3F[Hn\D+8$ nGZ4,֋:13>&eFS䲝%=\rH8$q̑1h2dtm՟i_]hj0`> awڡ89;GGDq.pJ˃~hss KopZI'HdXmĸ8Ϧhi4jn*g7%Wث[Eu2ۉQw03Ht䍂8$*\z 4(НT`V4K),ydFZOY[at,_»B>[8µlA6`XzW=sluю#) `u5)scRomomp\ Z\hW:|W-VEg>lIϽ큙sr)5!j:fHsJ[Vgk~捻 /OMǝбُC(6hуITzzViY쀡M]<taj\}ķR}l)@18<}jĶD;62O8Uvz}=sG3I Us=^fk- UdX)e0<f խ~ VNH3Qd` FzՈҭaKL gӡ:_ CrN,C8PuyYU^PG%=x9U-Q-dleЕ=A=(\467 +l|/9p=kY&8-no3ruYp,p ]Cr+մu8Cp(ӕԟQpf[+y +C:'J/&ܘs̘ +3ך[<,H +ͻzK;꒷2z>hgisn!PJ|"f@i+15[Q֬xJ2.^ps*~w,% gn*UcwDt{ d~TNӬu&;8+r fczԖo7$~k>)_]v !b@}5Jɨ%n'캬i4*ڲXjX'h{ +܉oY?Ӛ0ӓ_ZɶZH&̙.z:PmVzsj2V-+Q5/ǜ>ó:%+M<.d e;ne5R֓ӧ8gԮAS/JK{yqg;W=W/4֌LXu9E_(2paV~0kS$2\vfis"ˁ)f'd?drO7SΛ3i]?F)n~},D%mu95nm*粚{4Y8=0:\ ,]M[{{/J`ož׭; TVm-m6$Ev@#* Zf>f0ұ/,(^h…a]Tڴoa; _u9=HOҦڝ^vԦH $1瞙-8[PuzUmXdU r9V?! xՓ? +QU%vOIowqFe".#m˘¼{\p^Y6-}/C[~,I ģڨzu`8q\ cތrJֹ.l,,.1u+]A9,$Do^מM 5/y+ۡt2cX!\GAٯ_.IQ+J)lyܰڡv?JyTv.HϰSh12[V7V\va f=}DRalnF́Wuv)Mt#kYifFB*1IZ +W8bSIqwZ4"MD;UeUԲǙ66Wy֭]kQ-ʡUۥ-HTgy}ǰ^zzX-'+GV-nU{`zIs̈́V2#,Kg9#qR}Of|4yP展Ǧkfkidon$nxO֒\qr\r%Aҡ2HȨ]/RxvJ`m!BTztbK a@뎹s8KV1D#TLj>)9fI(T{V6oq{1MҎYHӱlɌW9ߥBEhvԖ/\֖xXeb4Eo*H@}4 Đ*rN{E/fQ[);s0sޜ +͈/ q"1dSsjrmukw= z{ +*U_1m-[f-TՌnϠ tR!aRKer o r9'W;a+;)ALwI. EF̬pjۃe'[vg89EKhퟝ=M> +˖?LzC)߶SVG uS)=4IbV~*JGqꤩΝH[, (ٞppqjޜܤtӵC+8?/?J&)NFxTFwd *mcE7=lRmwjZē*JG+lWnI89W0c!A㚿sn6Yz$F03S.j2vcc!R6J*)h (MA i?G^?*-ef.0ɁM>3" r۷l?/RM-5hǤf$SݻDe9ڿ +#R 'h V!H=AU |!dY!{ !'Jlڧ֞¿66>loW;7g2X- vqLWmEqVknci_SN_vx&D#]7;zޟH͟=~S[3? j\S +GӶrPmHr8֫Ifb9x5JC*ڜӼ;\U%>k @\/5d;pzO@p:KXUЌ۳FQNS!3 >[oO0<e2<{v56oa"g2=*$ +ӯZ*) nScibu\MnJ7)& # G\՘b<=5@6Ij˩Ӻ)ٙFgXFI4 +zU(k"~ljO-lWYpx[0:yWvp?GHBhܜ|o-'I/ RՙfOǦ*:3g9bFi/n´{0X68>ځn&W`sMktRۮ%IIBV&2D7cjޝ>ldN0(kSRVYmèmv@?.E)s^ZjKc=e>Fs Kҧ[=ꭺbC̱n椾p#xtdv0=բJ3l@;1N}cH :o-8nzq/o-jʣTךEv(uTD +&^9IܹUh.$e\~r*nozv#;;KO&Y8 zScM*zmGi!I1ʜz-d395OȴЅjyYy N8=MH]s`1ވtqNq[+y,ON(]Qء է*@Ss' )u)G`WBdPň3ږ\#b'HΜ;>TCGAR|_h$SDa6w`g>UF[wstfkԳ#cUdEF%> +Z,/sܺܘdLѩ2]2ڹ+іHd`~?Z ͽHȫ7vTnܑ!~.q4=,TPKIBz9I1](@B ;~\V'g +Yqǐ-G)([SX[hԲt*6#U.VCH퐎sQZA=иwːNfhcU}xEl",VY=Hd ,<1Yķ&F~Un~u$Wxr;:jOsZm(۩V#͞f-/fیwvZ@[$cvU +˻jqjXH#8ϵ8X̭(ij6aweNlEsjK"UUxX0G\L̓I=jUoTJANm4޴m;_(uN1O \1J.I<ғz4*m3^k.6))mڬ[K eު#ی4$7/wway4P@v36DdbNZ-Hm\hc$"I@ RrmJJz[Eh'eYjOu18H0Uqy&]-5c;?t7pL2[_*dӎϥUPґDܽPMc,waSg Q$V'S%d*\u\th?  +I!Swkb+*o/!1}zSk 6H/LzӮⷙ7o1wn G኱6[Eh `r z&Ԣf?i]ۘ^9VdҼy,I#.bG +G[^֔IʾC@F>Aqi% +jX1 q{WIMgJ4IRs-GiYL fxAVϡ9./7fVؼ}ο^5 9IWP{k1 =j%TkFoDJ$FeݸSڝ\=א#YnEqi!v(&8|vIIKF}-Df1\=g^F|Ȥ>;zOnVn aaN=joX숤/Fw5V7u#C$} AOʵ "-Yr9@ۥR seP%;RrHVP~=z$ES>pjg#~bP؛'wҴYe9qzlEt6'<U&4 $tȸTq5E~kYn;U Ydk2?y^CW>m6*Uies:>yHe +T)*wZNo.+E&ry+#RE\ y0qA=sRSu$pݝ{w5>i#Ï1V1%+!l IqӥH 0:6nͅ$9fj2h!Tlg>)롴Tv.m\5k\0_zwhdwo#i&^6Y Jrpny- q'tpE1{$(;8}le2"| YNrzqSzSN2ڸl*$mܫHJd3Uӝ'RHU`}38Xnǥ RkWcvfmc5fYgYsjux+\g8`K@Ϋ#mFdv5w7zCK{4=8S$LZ79`(8=eK6)'h$̕q8VdzSmebOG+y~Xެ`F;[˩oq6 04q] f&^nX !KMդc|zI,Tw4FX pxHwS*QWqZ?%jF֞99u㸍 +^*eXUs9Z/Ilu>^ᴳtM9 G9j]M=腆I_OޜKuʒ#V zSޣRqMo>+s 9U?g*s>$s[yr>s:*yq8(>jW0T!5zMK$%ΙU{jBG=*qa'}j3JRi%)c$qӊqPyeE ;J2{緭gI$yZND/#8obb筼S6qksl707ZkhGgU˻ej6iex"e;]so6;2tu(,!Hrdzy.%= fkzL8 23ګ\,ڄUQ˷ʜ*sr$]l_dh݄LU8aHnZ܌U17sڬڽ[o'6`H`F3;VMv(o wd+n8?Z~~/}c#6 oek0g~ԟ4QY0"eG\.&2$']68ҢXsWXQ'aPTqR0Vq8ty9A!,A,3R,Vw[&B3Չ5Ē/;B*~6)DȽi;u3u~W[4 c~a%jd{|N%+RɴٴK.LmЖ%PiwVvSN.R@R랙>%d2Im؝;z- +$cjkkm F^j[pr՞Թc̵"h-H~mH g#*m ҢʉX-h$s+ +q6AGK6 mFYJ -icFbI¨ɨHT*Eaq76J^—)nbht*Xn9<)t<1\ghznѝĺ'wE +jkl0BDT8i^6idvAR +kxnlm ިe!c?jX +i,q+UF`!WG07ODf+!p(R+/GS;TsgjP%Wڬd}nⰴB%e\41A9Z3\DBnvJVv5`Qko, 7` HeP<Jƶڛ$3ڥ[y ܖ1%C^iַw%QM'0`V46N1`YY7~ĞOQyۤBP@۸Ⅺrj2PZOXnYYsdALL^S#t +3ӭ^}JpY7nv SkWP2 : +3fɍ*P׷S#ASKeX|c׫)c Hiuc{nb2y:z+d2}ּo`:rrsUic48ٙ;,L6;Zo<= d>~>lʨ5(#H77r$Wgs_-o|Ќ/M迯̹}Ʊosk V{դn%IۖN.ib $ݿ%GO[L όuL T:%iu-:-n#f +@Ͼzc\jkud-$ nE2mZ"WdsMѼ"mjoDcԛ} o['5:N46 7BX% +InI<ڠ䷾=+7TQ{)8ZV6u#]2 BQeX"Fb?ZyX#ŨZ/5ILg55eO7˹\nr1GE3g762xgg[Cy<3F|'>կs{j7K~F 8y =KHP zE%304E MQU!VV_';t[{B/2o-6%G9/W so"Gy _y dqU?f$rdO}{T\ZeYr~Q͵MQxf9?Lԟْ6ځpTv?{oZO2d 6s_jd76:plۭѓُzt1Ul! r,A0 G[VsS"b"d>fw9sZsͣ^kӧN)\Azl5&L sP*C-[B2HNyXYXx7#zt7 ?UR T7`gk8 T]6F&:c'yۉ |َt^c6q ;5J9j]25 n8c\TKt +O,'{ح& +U%:q-k}iö1=k&[T0 +4u*6`f>=*Zܯ5ڄԎcTcמ֏omg,GǗ#(<ڡmllHm4@y'"}g}v1=qUN ]ίO6`e\2 +[KDn)=t4|˭> uYm>mJ2]7֥#wֲ/-ΟҀf(Ÿ88NS,IO~kdb/EPd;U9&0\ID +gV.]㶱A8c##Zi񍴋F\0r_Z6܁  +c9 Ӧ6,Gegz:^ԲMf"2e0$ >UZ7{U L$t$}*Id#GO Ԛ}V,G)̙ܣkB[#7?j I;s#s#c,sW>;nr_MZ9ϰmݮ1 zi-yC@t޾Fmմ] j; $r}da[~)Ǯj wKe9F J)8O*BZ2'yFD),26 un߲P^}6& ޵_bH.?ZjJN_2YdƊsUlgXmL߼# 0*Yb%1Pj>h_5Ja7sBz +[}g)w"`MlĞC:߻2\2rk7 CeH_LXtau{o"(0ySlni++3I9悲KB'x<\5۪>vI9k>6hz9?YČ3J35nŗ^U\crKusY1#[h3IBL(xܨŒR*HcZC 12*`֬o݅S@%>f`1Na] J&P>teUF(uITQw3QM4ۨ"Ĝvc֫-ј.Jac`y5Q M;9dmnz6Ip`bݮ~0;Ts4"s67Rv5(1'$Q$łPg$2jmBOr$tZJT!o +U$ӚH%Ǡ&H! 9i*+3 +폰bi94hD8=֫2Z:,XBM;*,Js 7x4X$e󺲯#$S|5$ 89QQo^*ml鵙𫋨aumvWw& n7'k4D(EϚe2w`?t[^r]Bs.Z&. dHa{Um"[ȅ vr~^ ++&!!8&t1^U +VePfbv=qךKnlaXZh[v!uFQ咻$(}%G}J=f1 Am*ZA s=wUv=OzԥeQr5qL#*%i*XwݼSR)ky +B,:5IНpyBoɧ9y +v2O銍O#zt,nzF\_4Բ89Oto$HG.cYT9I23M^I{>X:8!C֛o(qUr@V%Q$գn ʑK98IM]=г[yQ Rk,Sdg&Aǫ~RU3lO>կa/` $bL8?&GnsP܅101 U$k#1B%*. +mMBMTIj)|hwnpJm鑚c1&p#CQ;u*(Uܑ; +PS},W1*Dɝ̤'> +T15bqjZ|hHOuh~x 5/-aiUcVvpm/>}{`U(FCZ%(zeK,LcZK{\1K$YrZeV !o3)+X9s_4HTZѣ?fV=?TM!wAϭk[**b]z۵)s#F{3 nAAmb3l`䷎[#ʪmE6M6ĈSݒ K"6w_, yM瞝1VLmp|Ǧj0es3'cY{x00@R[;xr0h>iB6sA~اWqYCfRR, :PSz}e1彤 #bvE63{[GDmv珚-Rddtph)~E9Xkxvׁ]eΗ$2fX/S4$o*3Jb[$ኮ2=;1{;/#-$m>q>SqK=]ʯvR7><){aHEkF`O]}RMݎv8-d̏<׭V;h|O8t{1՞#%:𪑝Y˧6/ك÷~uߝ8if}Mbfy (0f98Ewu6X=8c->L|wZMso6ܾ +֫j4mlTFrN[mtڔDn|Î@}*;{%km'y;Ӳ%rV{2%ؙ1fLDM5>+ ,r{+7Huf0h # cmMpk#0zqJƊi6t[3>7v[ QYə 'a3qdIݙ>)fF-6=ږDT"7')#g)`xo% ҠQ!<Z4C >L?fXyQC9r}2e{$ +w0>xK9%و홥~*ǎ6ן#]-եBTAxozذg{(dUm19e= ,aH,d5esm6 OV4//>1Y$oH8jXZ3-Q8F}Sq/I j>ok{;\kMĿ O[!Lcמ=r^,H 2O<殤[r/.fPFy>U$%,r9= a(*QZ=2,Ou`sj+;uF敚AtYl1wuEP[[K!.yScYF'tZ[ mV uZB7SUeDRK$㏯5\M{$F =zSYmmN'm7)9KFΰz5V31Fȭ{5iHIBvrs;wyKMltAۛCWe"|.ljDKѺmm*O-ͣ];zU[kK4 ~e8Pzk*9mLK{2ӎk7{$[wLl&f$榙pĶo?N#86*9$ v,/MH$yI#٬SBω~ry3odA5/ʪrG95RCtΠ8~iFF1%̮q3VLd}gPyqۏKJRURznKR[y+ѐ9O~/#?8QϯMhDάE缗,t2͌R{Q}(71)ci,H8KJD $݃D(b -!bG zwg'O4M4q%6UpMu Ə̓0$PEdjϩRpz W?g»*7CBBiI$iKVK*6L 9jiK#Mŀbk6ݧmP m\p?µ/ا^T9MɽT$۫ou^pY8ZZx+=/ѹ$nOƣ$>G$FrXxi˧ouXY +BsU/# 6ߙ ;yY܏}Vs4? gޠН*+A7f\~4WqZΆOHZ Awp;{ַ|o6'lJv?۽sVw5ԆfuM75n9DT~EL󌮙5H^vX.| y\͵ډs9ϧ֧P1@*Tǐj32GbL [xh[qq]hϷOl ĢKJg*nL{yq$Cu8=8=iۘLl99x*9O\Ek#dNQs397-?Jm X|9=FF ˷E aْ]A{[ŚIq6B֯Odi/2 w2\^vj?Ebr ܻXz"Y4>TOhjWWХ 5k燀 +Tɼ壌w1ZAmox"dB Cڟmnwbf8>V9"nRhĥ)vNss-1[ƈY Vu0D$2rM í#mpEsG?ZL,Y7yC-R7Wp'i'H669ՐDɓ>pzbzaڵcB:)69*5ԒI!9@ }?H5 !{XU^=)VqM2N? +'i'mPV(+r(0OZT[nOʺo 欄cیghMudII?r +[bs}OҺ g.jC6rb=9kROLЫL_fN޸$3B/¢7xLN3Q۱rb0LR>AR[ Rl̢ͮ9!a,6{ՙ'sX*&@t'پ }`u:);g=;趗bdv5,<Oz{Lc8tRӆm_#})?5*>>UzkeE=o|6o +!pA޵lU5{8l6qT5kJ&Aj]ha8[t3N-'Y/?&'=eb?:Nd_9*1 h[ib+_6̩z*kk]ٲ$#)\s(zN6q~m=RKw?.dϮU0q9yR݊aSeI幄)d GKb{iڳI{?eQElƽiolmfͺ!I7"RVYv!3U|7@lJ +[x^uV]g_~9Қic=D J/'fxج知k[4 *(nңSׯ![jjMH"32 +ՁuMk. WCE& I1+p6{#KxS' miyHиU>epON3Oϧi|A q.e6#WsoJǻu{c+'Ė:Ǩyas 0pܞjto.;W;v60z玝+[QI Y03O\ G!UԷmII9ԆB#,RsqշqZJ'Cta#HdcQ0ȏGڨ-#~G3kiIoؤDz-%)Z[J$}"5Bmx?ZlJF޵qe"feM9R۽-aX=qEwcKQ{isT` Ӥ WV=*? i3F1ӵi 4ۓ c'i6ܠQj%ܷ"\,tKpTdo4(8. 9oo[݁N'#|Ք\Z-󷙿1Pޅ9AdEFsA!!{TْY{%fE'/X}*Ai`l {=jg&Ǟ< +۷Gn_Ʉ8w.V\q #rϸmR3ެkmApݸDA*qxค Ffw]* QOs5tRܟHv񏳘v$8'2Z)&0PO qo#- PH{sOz ʼn&1'ɵˀ<Ҿ͹.̶WwAEFf5c6z=ϭLyoR{qJ˴j)o7qaTyZ#uux4m`֫'>gW[c; ;|1Fq\圶3Rv3}q)m{(Ngem;C|2maONjsX;{ڥjBrPf0g>*1k˘'Œ>h\_]_ZY +o7zϚ)m16Ƚ@=?*mNh{k]bUlN} f}2a=ށN̎KeQT1 UϴbyTjߛg==f@YD#zq|VU~hrG4ԚS$z +Bj $muMBK{nFژ;R4Z /8+;^9f: -"gVjoZӵ/G:>ao;l`vIX.C G;Q D *1{?Ƃ[FJV(P.w}1ե<RVB:s)l'u>65͙gprHg=(-Iݑ[6XW/+N< T D_Lb1@ݚtrvk2ӴhH1NHw&ѷi2 ^$9c\x#2R0I G$;932CSX `T+u7{Wۇ_jdq('ʖ'?QmuI#H^QۄS=U79V7~A]Gl9Eo1| Xz$hӃ4a۩n]2:~U_pL8X` +dvR7'W /BN +qA?ZI.Ճҝ 9a4vL1(G3Lw tI#G))my26QZW`H㏔Ȧ3^729o-Q⧺X. N҅=@.wO#cUtQF8=e* +wM@ڡTaU|6?)\R(2o*@Rra$HN8[T"j6]?N5EtR8⍋]gPȠ}*<4 =jwq+V$hƪ{[g뚞1wMXG$qI,!mޒ0HEn2ߜU,hIU[Egp)|ɮ׳ع]Hz.UYbbny\N6*.O>J œ=w SJ'+I[" iBqS&Y< UZ[[d[5/^JJ %"18'֦hZ/OZ7<1A)άĜ?JI/tnvL*ZyvPB`gcQ82#JjI%inG"6ϥN:sPOWVWRC`„6}<˄,:属8M6Sj@W(\1S{tv2TDRFq>| SFT ޑ{m0ryRŹؿi6n ͆_zϚ)c{!1d`V4X)ߩMo9 yϴ\=Mٱ5uJ2l;z?J=͛+4yK.:6qR,~3g=zӧܲ3c=)-|4[gUZ\NyK9o@T8M- =Z2R5|efa(ɽ?x {Ƭu)"Ey2XvԱRgHUfa)NЬȩ)] ){4S4̲S2*;H<,8P-U_qB9_+{Gʝ[hf<*gܼIKTm+w; +b<~JKl2ђđǠԒmIyp2"?{r s߅9!j #ej~+jeΥ:v ilgw9ݞJ "QP]xոao#e8I"O|ݶ緵2Q>H0lGJ^Eܿ{FDz6>|c-qe*;e^?£͑%G;IҖq*aE͡HbpF߭ F\5І!}cӀ9;ɕNDJ"z8ϵ[xL goo^2|E`5j{Vo k$U\x:`YV!Fx\2oi*c9cd+8hпxjD-Eb̹x2z<)*bX *H)vFmo$9Lݼ:n/8 4˙L6sCͅȨ.Lx~ ^ᔄ13-֨zkc4xbk nqU[l{r5#~푐9\tz]jb`d w4'TӡL2n^%$NMjHjZt h-6wsҮx~qn-`;(] f[f;{໲9eMD82$@ޞnac#*bE &T%8["HC5q[kT2Jm:ԶWqyS'y>: ,$swT}Ce+ϾZ1)c;_<Zb eޠjfOb/`~bs)Ui9FNO^C%e3&I n#4ɒ62M&l5Ȫڕ TځN +%.{x ᮌgcSz6Hu"Op+{UXdHĀ ՙj 6"1M֏RrOBpY[*:HR54TJiLE#0q!#?Oʴ bӭWFqڪW#at4QnG ,FqV5N.õ-fa4wJ UR>5dBVoiAwg&ЛH +svP[up!b/exU_Kԛў;۹^rq|UgD "t sҡ.'׭\3\yM-6ۺ՝gg< #9c^5gBMQ_J^k8[鮭X#Wbp?ւf+YG423ʛIvp;qҒM0=̏ + y% KJdˎ?^۽W9/vǵ=^RpPFe|2ņ&MWi&7GI +r5c\%lONj I tc̕ g%sS5&cN}擕g 0=>0*e%gOڷ.qG|ߞT6: +gy$\mYWpdT]lR" +pr@ %A<p>1w46KR[ rUJh-̃!84-;;U;ȩy}>ȷFq$qo6\ >Jx<r8:">N2vo%oqr9 ȘCHKkĆTc#jk[Y^OP [ETV"S<+'hHJc49TT}*mE| s+jl߅n)چ4wqa# 靘>{T0j|MĨx(b}+JZXchL% ܧ9n;wpCok$]OFp98#ĂWt;ڧZ I_ܒ! +G>.@kRh>YWj&shײm /NHZ(ջn)` (GQ-Z2ʗ33Oj. +*-'=sܩ;ǖ.+<05DdPwhwen$6;w SGH;p9jӶ>{6=[Ny +Ðyn.\0N'4譒fF=3R=^`=)'-c\L#Ve!W^YV\8_+oN9ϷW|=ffYm;1U} 9:>JWڝH R1ӭ_ѯd4Y`k*ڳ +HUdggd#N@2ZҪbv #+61ڧLBs QrqԒj^!<H`)G?lYYe3:)qIv)N-Ƀ KssV-bFgf~鍰GT2m٩>gq4jW븆"#$J|7_bap֦6~t΂p[gT2|䜞Njfo+XO- =\m* &Lm6\~Uow5"m0ې?I_:>! i'Xo&HU # 8Ug1w9*['=*{1 8)J)'WIR d)#q֧I% UWj2#9Kg^[J>qcv)ǸqlzPvZ^fL~evcg4f1 =k2KRe`{U=m&7a|O>?Z9u.5H}ǖ R9* h) nN?7@O?TpnKqmmcwORKb+*9ɼ=qkwOCӊigo1]ⶼ&m͖ V]ǵU [H;ŷcQu)v:%#<^̄$)㚷, ~NjݔPmr&DڥԖGnZYl!X{_bҴD%@l#i)FP5b8՛97G(a#EVp Cj?濴 *E[vNk_< ˴QLҫKZKBs-M| f y,6"* SxPSJKwd4lR_&4m+[?`u1HӌʤHLdcfp$'xJkB%?o8" 0 PMII θ +Aҟ#D c҄ʔeKە6. Q D<:&Hf8I:VfYV p[3늆E(ɫOSt(Okppŀd85+{v$̌8$TH"*^B%B.Iq:ԢTRJChtnQԔ_Msq',EPpɷ ٩tۉ_l*qho<*ݬ FVD v~>JF +ՍJĐۡ[?MCP{Ty] s_aZyF]^yjУy/rsI{rfYA qyǥg]ۛMRo*÷ip}I`]M:*٢2>b2 +G=0{Qf(a㟯Zs\X˼dqOj~axK+hԠmxO=*w7JڋAq>?(kH:˩s(c6x΢%QTwnx㌞ӽߗBQ*"߿<}kgKDPu`p:g9zTq`Ԗ)x^?gp+B(#x":IIRveӌ4fog. +@]uRpDz8ԁzZ8fw#ӞpMʶRG$70yPV1q2f퉸p8ϦrqV('%Axu 4d`UOJoyIJ@qnF9dӜbmж\\hJgR:wQ[սK g3X6ϛiu +K < wOh<˄Y'pvm^z- z?[c`ZDjʁr:'-Hdl=Hy4+g (O[`Ķb

      8X& +Wo=sfY]E[Xgc!:98өNX CFFWۧ_%As/W˿{TKs~'fڡyִ` FVew,*XtBvN*rR)Kmq>#xbFxiyog(e؜h[2I8c4hʌSO9 |AlRjs#eSޑvH.dhd8+w^LO *i[9=*fs,QEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@'BȲ(ʅzZL\ mDӉ$,Ϋq#К0 +Ź#ҨT4:7J=EF-K#TH@Vv1?+#M+2Epk4ՎNK]i8LqOQWW +QR6Ϊjre 3N(ʴטFC9s֦IUOsMZ+jfSBo޻B'>s5I⡜“|iikKFMdQ2H˱Ln'V] ⡐SB;hC1*3h29!/e-]j0t)p*Nnlb!ݐAQe{S*9f~i2ɹ$ԉ,I歲3{宣EJ۝t' U3Q_dL8rYD 㚴"<@08zpd|VtL&Y}Yn sYޢ08 Vїery}Mhԃ^*<#Ipj,m3k>1?+g,8I9 :=xûfiB9[kk!B9YX/gvzTR+t]*7dp :I#icqޣԯɬቈ0id YF s4@e` SMv^Dmdnt2yY,2DKG~Xrjy+֜o/ZcHevITm7w_V[s fa2#} +=/ s081Y^&W}8&T3KWS(>ZE!I@3seT7˱Tc檺 +ԎGYm"~<֝[8eo1CgetfJ[OSǩnOP!OЇ$Gsx.pz }SR[ɣ 1㏭GqGY=iQ1Uu9YG#Iqvvy..mhVERwd O%3KJ>^cMFβ_?/rhVa/iR+]F9T_խkk, 8#YwVIIKFI9#TDmrUqhViObdϗpN i/J&iFyHH y~mQj2.B@-q3M=I}GK[q $r OZR%.2e.^@gv"=w9ǥYѯZ dNqI=w"s"ܭVAj.ݯW0 FY͹'Ԛ%t{;gcRQ8e%R;y5V1~1ӥmȗg*,%}.ѐFxl|Q'\TE-20FB5ξOǩgSfwvc=+.k7 +]F Q9Myo%V[&_rsnrHAFXctd>h_=$#vs{U{7g\1uT:yZfsSż=n;Oa,#L*U(Fe j7u;WvBN0$ riswm4Ӊ!s?O=JMnT rzp=jogҠ$nMn=qMj"֦b\#$yjH#z0meZ- !#<r*-}2*>aN>EX`El"P S:U,}xi`Uc Fr8J!{Xp݃ 3  -R|%m1'aSAK9I%Fh!v 6O=#ȀĎ#ԖZDq=E(?2y =}Oz2;XD*Q9'iT-%F<U|򩦆YIb``PEA9` 9Nvmmxcȓ,:wk2O +,6~l>3x ^ήq\.zvV$9YACZ̽\% >b,dmeiJ 2O=k?ed`N215e%j_{[ 0ǞU;K69Vk7{Tv%G`E7qdp;6صdOVL1N(XxX 븚kNb 8F>[^Z#f7rcC}* 'd`c PxjR*#mݩ cmu-&9|5y394e_ia!x $C4bO;` G]͝f8!=g.z2vsi'kU~[t,0/, n gߕSW?-VUI5[<=VZoȡ5w٘*V!%`OU?K&fu\vFK$H#ی[)35'[]9&݆Nd&k֩6¿7\QE*$ldu Do=UvG2yep@WllV-ZTQ8u=>F3>݈h| ͎0*mTn\ػvPŀ F1U'I<w8տ>T%#Ꜷs*XA,t:Ka ɸR[61֛wzN(=kJ7̻] iS;~\9(Ms}ܞ#J͒4)'zպԔ^߁ۉGpTUұ`m@y#>BP0wJͭn"r"]Nノy5<Փ/_l+@ƫ$^Oaam_0J. Iwz0nU(6;j$0yw>YP c2.D2r?OJjd"_|ҵR^eyCE)d\FӬ99"; N$8ZeƗ\7g\`uc)KM<6;{@?xI]ǡ,xɪ 3rqКe f}[e1_G`a'?֓I 9M +mn;ur1i qɦܵʢۑI&ޅʤc{cey$rO^Qۨs2<`Z%)Pv*vOhz>@'wj3oVUkxwq];ݯ\nyp;IR'XoچE8+K[ %dS VIu$j%.6 іf2;ZfW%`F=y4vn-,f=1f oʭZy6P-ͺb7VT)udB6qJ ȡ,X:ڝgî$fb_0FL-Aӽj, 5ŶٽY?:XT))Ihg+[Ɍ4Ag70sEYGWAu V<8m?ưw}FGQpqbd5i> +P:yk4̊ĝp:Tv(1w\ j٠[ "Fyڳ๑Fydr1SqPF͙%rX&u nE%uqYFRI +^.4E$LYu.) ҫ +-gqeu*S;RG9WLa?KޱT4֗=pc.P%۳4AGV4M,*H*H2wSj$&~&pIyxn `[l +񥕝9CncaV95] m, FG=WmF#N b56א+bF@qrOlk{i ?G]@^r+K[[[s;0vzf@zX NC> sV`g ]/׵64"%fHr${RG%TG9S:Ƥ0֬x0M欞r\~;N_ғ\qv6o$yNg>A r6]OӝTluVe9<Ir6,Dbb͑Hu"| +K9iTI!ؼ1hs +\Bz(b:dbۚƺr7ْ_\4hC!+zw (P|Si-nY +Au$_Ay!7R0G!jBMp:-C{zK[K[,BCq3ڙkidshX ߘgjHJMK.e%ielʹ$tE4nӣS.c?Tm]6x?[2B0GN:Us>FQ؝ŚmڠLƒ1}J[Fo9gβ]b!LJ4h쬥}:#utYtDo.dvx=yri1g-_޲SϒE.cϣ7 "$9<Uns/uZR*)໸{3|y+]yh)A?[_$ptkˤh +o_1A鎿CiJVmEZGHD*3 jDF;hV9]?z0z{]]:ڰ$mzULB9=j^/" 4g ,jK-('K +r;,(CjavERS, PN'ޯi<^}5DT cCdL:!R={*h]i*Fɴs6Oaqިj^˩pB~,.m|U`TW7%EH׭Wmf$r\N?Jf'6HJrr8i2:I,2WOJPr(8犛O[h]dswgЬyMJ#Fh&n.Y{y.DN$?1utx牲֌#>UbԣSWY g't㈊fPOqjciX[tr$Nk.$oUfan~cE {2rG9Er0Y_k<ɑkrUxZLʉk=*lRK_.y Bݤ\w5plu{8m,t20I$Cީ꺍6Ip%iWh;)jC} e\B+$`dRgkcm8K+{V lmlIí]- ~bƊ]8 +1jzmnbv l;:MN+N/ضq}i5 +Fdr w=-g{iXq}r}KIJgYZ0|rsV5-i1-o2YeJ1߯j4խiwy\/Z5ޯ$W2uT#*6$^q!Y`7io9b8̃r8tߴl 8lX:ԇ +;~&u@m-Z9ݸm/vy4 u&p)#ڭݤŧL5;v1 9ֲ-tUs5`3O\:Xlg|;sGZo٨+%]iɄ0edczJ-H>>oa`@Uo3lA;BFU74u:kk6W-0EWiEWI +">\vd>=fB8'8+cWĿCؾB + "2H0( L鈛vG𭶲$[,q3tEN9&ҥSys7E-"h۳Ci,ƹ듎ݥ):~7l9Pg\$ɵ %Zh>QY73X-BeyZoL,j̣*@sW];`CntϱF.sүXNg~vrZ[^f^\i0{ZgPN^T:XoL9\[8t#˻tO%1 '?3Y s(>xcV7H8''TŠŋ[}9>ڋWM7(9=j]0I=ż.S;&wg uҥY+NduRe7+08YUۆps<29ҨA #AJkơex jFAFi ͤn+GY2#b-ݤ_K{kzlm;fv'n~`8ۊȸA*6< Wtkw#y<Ľ +$;8%pr=kV"$nlԦ /i8+ +Qj~cdeLp!1?_IF/"PFF揿:~=k#Qԯ-B'jIS8$g_ӯn5?8:Sݞ=)KI6aG&F>\Q_|PWQCۈ`\.y 89ՍfsO$4jziNZ'+Cp$~oI9늒;ENI{e-wb]aSȔFB Y `I'gSMEguIě7qڴu]J/3 Qp\W,2:ӥC/,5fh}~zkI(nA Ky)i!ߧoZKKR0s3Eb̂9 |yGTm#z )rF+[k(gn=jE28V$bI'$V6}G{zt㱟EKF>kIawL$۶ppigk譛mY,TuW#i2+qq(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEY,Rb+zX$8nX4ACPMH[߮r %g1bI;VZX"p*9G 1W#1g%gsKV}S*g=iVX@U8tXp1֣( ԭ՗%~Xh$*̸ǭRF,zTGJH?u*hvqJ= ycR)K@?) +c~23ڙw8Cne~+_RGoA>t%\{# BW9'=jJ@pp)TF394oC:۽ȥ?/^q_J(!ʶlHCy%ERLZu@Ԇ /1 0UVu{sDp¿1 +V-nJ.=L(SmNaLv9<~P7 FIThC) 6jVN4̶dӲ} 1 8 6d^sE +zQG 4U99s/01Sh]!!Ҧ'HLGL~Zw,^nTqϧig{Vu1!p108hc* qVD:K_In ʓksP޼EQ1AztR}vqJ(dy=F^t gVh߯*p8*q ˺P{@e,/~9.oOgdu%QeL#g7nʩ2?wWH02:wed +qЊ6]F W9w֬o$eAŽAHFэ9l84ח` gnXSfLYIP=*e `cڥBNcV׸)LDGʸzA@J\AEp)1Nc9P=zT='_#W#88UI0ʔc_}TsKܝut%\;6BjriŤ`mA\REqZug9?ҧ\@A?Jm[^n@Иa:ԫrFI +n$&2$1 N M,a\#㚖SzSMENbrW=sO݉9#!ҡJ[fw6se5m*+zQc*،IὪ9Wny?JW&'| 1j[uGbVTR +qӊj~MʪqB?AE]˵@'Yi%pp&Se"=~^1~(.9-J p楚RB5]"mO_ZFmpu"hM%8oZW*4k_ +VISzbvPnv}ji.k<JіIv<i;hEJ,,j g,[dEud(;N \`Zfj+.:<'ն +6zI<Ф?y]P=qR+&qH)mOc~Ǧ96m{yF$RJ۰wiBIFVWv(zuA"m S2nYPlz˱,'6[eˣ$,Cj0ny;z +ٴt{i/cC1AKzoB$F15Z+68*kC2,>{_D@U8m p8F;dh$y=jaƣjRKw䈈RᗓD$ +ri3=БݟrD$mGH=2ծ5ge +zsOHh^pH9w'o\"a`sҥ$ҷ)c&<Umr`#I'O)K IVP<$dS,^y]3vlT,fFeZS99*|rۺcի3 Y4ۡj% q`:r q7 zcM1.TgvуԸ;&o[;o;O8ҫ-&6V`W%Ny_eLąTtQU䳘Cqi+Mx&r~d%g_Z޵ܞrZ%Pf(۲lcO5aLx `~4x 2awfɊVPIqjv,&K$q)w6ug1#d3'y ?|ԊWz.tmۂj+QE+sӲNR[בw V=Zk!6Z*ldx㎝ dG=:,Ȳb3۴}c9ҩ[%uCls9+-O\U:F]]*ANFj倵vnӏ^j>V{{ZI ʃMҭmܮwȧ6 +b-;7*e&Onh6 "gz5Q]j+"j{.%xaсzdȋtjzc3,=$+XgQ,Kx@AqTsU?,uv-NolG.vY׃lP=\mdڱ.~;R;L}yKAlpWcr(Y17VWߴ[rBiBdj(s3׌v6eo~GL5Z6)jVIk~dU9`{Tb dRq}!iv3۶+N~6j;iabܴe-0>޴2K l#W,<9r&0~Aqc|KvisPZs\reWpg҆/vm ^%4%3dEnY V 'iR]G}DJ(_Z̻wcdo,6d(VƜɩ\M{j#p?co*HlԖ2^[i1J.qn,|zYnpiےqrFmLѼSn1)j( l3AYR[o[y-:մuKsPZ +M=QNF"?1XXo>lq{Ӂ{X|NOp_j Ӝcץ:Vz++>4&_o,Cv(wNHgŲ>Cӿ^}j+{1f7m>hJ.)z`b:R輷bH^b+Y\+K E(/˻ 8B3C/ |p#{g].`3q=ȚӱSVy&UV +=;=.I.#$HqSq"bO-F#l{fK W;qd898Zbk8]S+[5m +ʌ1oJ5i.v#lN~S֫qYo$Kq$0M `8{֪,ʬ_*musiGP<ܑ*v'9|OoʢV\{уG|iLgxQ#)F͜P=»7 l)u8oLT"o2̺'U +!8j\M;/olj,́@dݴ d +w{"(-K=Ւ/QSFLdg=pH7N$`qz-%VxLnF;SV+"\pzeH#mxj#铟N Mk*!s~^HJXoWm獫&O^{ɐ6>Ζ4YiaNҽsBё(KAΊzvI,$bzqMx#vQʽG3miYƎq\y,8~ 'qƤ峷{T0EnJi߅$ZI 2ٴ/o rM*W3~609'=>zi%d̪Ccj,n$7?8*sa=¤0Ș@\XץZwzy"efѬWF0%ڳ5+`B?Φ}7VFNO\gr[6-UhQlo=yڗ-:彭ڽOG=*[]p%-O(+@ N3+(Folzkx`>d6n8ާhٙ%6rӬ򼋙<Dq*a\"m}OGGkyPAr9L;uFEv.l[6$(x6TPYSK+m{w /ʣ⤜],J2ô`;J"ƥ+y l9Qޫ_+]1Hw Ӟ{έ&}d̊s3KU zf%.qwdes~3CW.6Zv1.w6bKu$UuREH́ӎ{U{)n%U @m(BDRNX$Ry9XS#*N${ϩ ءOǽEqQ,m8,k3)N/O]WsȲ".1܂8>5[ߴ1'yg=*YvnG3G=e 8] ܨRPI?QZ+Kˋ<Ņdb<e6. r)e;7F8ewq׵=zx [ۻ{h=BFg u5EV[a*խΛitd17.8:{XnY 8k'fBN`@ \Rx;`8ۚc(I +2ʊsZ\kŅ )z:|R-imi`Z5ފc'{ZivߝlSYN:SM]#,{c8#Qͺ=MHv9W_"Qv6%Ye?&[T7%2ϿsvWO͜洤Y}Dl㎽YS\ĒH;p܊;m Ϸ=Y+c~of +>[#7xD9aw5kq5եFcpT8*X~4&.qߩu*HY-x..Hc=2}+#&l-,ۄnuS\Ż]EfcPŚVT܁VZxYW063pXFsZ%`+ OJ$T')6-PevG4˳j)#_2rKB4,swD9^ zPRԒ}@^kt*N S~U-6EXGwP=0[YИ(>xlg8o㞴]/f0AOTOcKeg}˼LP2djX( + G㚸n-Jv2V8ddtI'2y;Ƭ[@:tTnǵaD6dpd;cnSS+kBQ=r- (BJI^[LB$+9ǿy7):8[wm)sCp5_טr[@ |FA$}].#1+/td i2D$g 皿gHu>`Yx/g%˷QEݱ?Zϻ6EUE޼\ˆAr3FA穭$"+٘./ۓփ]dk3N7HeUU9&iqkMH#V!X qk}̢輤7qܜ:&sQwIiv,$2Ek]yVrdO/w' O@8Mof}A~WtdQVw + +;vdb.9w:E8u Zf\]\n`UkmoafvaP=\O_elxϸV{:/MmRoSUxWB3܌u_BH&lew t֋0y$cY[j6re`7|Ltꔹ,-Kb#Y켨xPn9ݑNOR6iH[{룹xx oǵb>F3Ԛ^Vыe[Jf_(F7q8Q]—7R6{VŬG$1KtR1L`fc[19uEQ`\(*:bc3K4+mw}+HCkhC :m;U{դMFU BWM{7Dڣ"kso4RozrO\nƖYRHQчҘoUvdֱ佚 q V J]A ɸBsy;6n@ofgq'b:hhKO) jn%#>Y Г=+Mqo ;S^ fI5€߂5 : Abi9$=ǥRm,(nZ$R:`}#].KT-_J +MnW]XBNX/Vo-/:qG+E wm&ۢq"BןzNofo0W=Uc(qhkyrXӏZö[wˑߐ2gӓZeq|e@q +[iYvd':I.4ƅܚzGY=7Rѭ&f9=9k]hfWE&Gm4&wDXlts֪reC)V\J4ڄF9Ǧ}&J8@G9dt4ܼI\Vw6c H[݋HaA`ʼn8UGy( +w隅p+Nw*RG%h^[1BŶ=GQYiEs{snvtth,ٞG {N#pO=k&*JܫFM $Y zա$bi!WqTp2ǠlO8$s֫¶KN?@sVt.[L9ڒ>QrH8M)Kqi$782au+5Aaʷ8?^:>ռ*$I>dY32x~qBOS:k(+X+lbHrr)wZ i9l@>P^Hѡ ȫ571d{ \u*Z7aeC=A@,!W.2ͩLV0]ioң0˟nւ]{%żVM"2Iʁ{Ւzz&B(N"Fĕ:⣢8%rnqHÔ<VFR'z`Ў+9>]QU4VX~gIj g69EQt+K9H԰h4N|R "D: +4}Ư9Bw~ta.I~lKvPa{m g)hqP/fvH'ȤKEW 8SDw;KK⚾ȉ(E)T-FOPj\+gwzՉ%-Uvz\*HlE^7n5XDۻbi]i9+*H&#*ĕⴳHRz[M4;F1*ØW'yU-Uv\<ې3w#К:iKZ?BrBG݌`ٱn#.F^jB8#WVDR,;P'֍KMv#S4; }j9ca*v2<3K`67ZM$71CpF2iд0 @;J8֩EpBómVϗ 1cD +5"_֣'40$ 9! T7=)D3nF{bX՘l~[AJ^}KҲ(Y0W:U)o|m9۩fpEg,c +zӚxO8jf 4N#5Rn9i.~!cpïRMJQH PJᇒ6S19JԔ +#F$ g+*2FWI#AǽB7Ё4otGF`Mf,D|s#]3xW`w*9m##*z(I4/M۠Än\$n]>N d'^)Gc +v-ʦI88KL:m_pS⺴ByiA*[#Q>\4Ĺ-'rYʽrۡ#=Ť.Jv֩Zwp#h_D,KOM?ʚ}pR-`i7o`J}BiwI%{*-N8`򣔳@_$*{{.9sz54狴dVI-X٢uO^xM^"Q^ūhӠF͏+;Z3*hb>i?jY-]/$ڴ_O,+K#s+;)Xiז/oo&N?JVmBʮ(P0Ooƺ庎kmy]:sV&ẚ!VI=w9eìt,;mY *0c gj~G6I8lv;yyfW c$i%8V;d\򼌊.Jbގt7SE]HUAl=z8uk) p@dfkin.#=04C\we)&Tz5~iӼiF_OZ6e,5677#߷Z Ro3w}j;Ȣ :U|Š} 6ΞhumM6}; +V,{@x,zwڛsI J:Syu"gMY1^}j׉-+cgR8'5%-9Tr[4dX4׷W{ҫۯUUwpJN?t,dwaqgJڞ/%wMp#1(-LVd;y;N_;$Q@>q$rI$1Nӭley۠* ϷSʮmgdOA>!1] ?PՖx#!Y9EzO!A$UWxZN1d:l8,sP5C);C`*X D7.GƝK]4oHwRsRIl&E,3qIuj1' `;NjPoN\x<l w,."gOQY _VQ8*ĀCJVs5"ŝӱq* + C5ΡU2#%2@8bj}8I ?*68xwQr2# {uqȨW!sUŭYF\rUr"Jܺgk*sϽ/ZH1%%mtOTWf0#TtDVnDIʼnEi"B)F{zxmV@$veitKw/= + qYtdL ܞõS0N'Y7f\܁pg-6;}曶s=6S-ygg^ie{r8TcUalຒh5Q’N2[YIxqf LkfkK#7 S[lpN3ש]x"V ۱ Uk,9l't +Sй[先d||۵P\m}x-3$)#٬ Gq$p4䧜>_BZRi4g"ܝDD!27@ǯf#Fw|uOvc;IФZO4FB,Csr:QI(+\˵زmanWNjy݁O+v5Rk[,{J0|ϛOΡ~ڭr-w8/`f `߲R\#Ƕ6sѭBn +8U^ES,piE6731r w%ջQz_lK˷v!D[u>bI&YkS=5R;\Q !VZr Nde G88T&tg(\Jwk{u$ǀewtWFXa#uB]moܫ8*J[F;S1[G+1O3$gQˡ"~u5ÞzO4)5>V[zHmH \2iot1-F +n+u;R^fwz/t9%gXnCs>$i8]h+H[I'hdHu{Ƌ2qC46՗ǿҪ{3\y~fK>vO#Lrn0sSexc# %FU%+.WZ+ZX%M[mIv'cU+4鑆n0d{y,$yY PN@'暍$dV T?zORUxB߶>~8Ջ` Kj cs~$'\1",F1'5ಕ1|8e1҆Ms?MHI3L"1A81Ml$l0ۛ CJuVl0Cq@HLDT`sۚPmjinΦ4s sVaYMh=?UM\GmnVDL?xs.VbϏS_w*wKG˺_ =+1u+B\)g?֟}!}i<\c>F>QӧfKB7ry4AVH[iz$p1֭MEtxہV">J$3NyxۀyݐOJ{hj3e'#HO=EiAo %\Ed`8XΙtMFc{Qfi[GS:F{0ٟZٵȧ@;@ ^O5eJI"*&N{뗲FF&RT t>3vsn؊-.'RcA1brj[]aK!KsWjidRA5x_Z^C41^Ijcn$-֍+hfTP6x?{ҶZ{-=/.nds?:u$B77F۸-},G;vއ{D('&HMI,Kc{+{ȒH3gvwr9燛p S;8[5i۱I~5ɥ5nV3M7dFO}iV]zqR[0K]4r䑷ҳۛr>^Gd)E-t͎㸩`=<`x-Gvi_DZYN6.OoYiῶ& N_nj}6ZdMÎ9nESm-%)46*ߟZ#K{@}jͭ혷ӄP!_fJ[`-ѱM̫'X]df= OUdlc~yǥl4Ēl'df\v^;+}㝽xWCWIAFhD@Űۻ[I"|n#s9紅ʒFq9#+ǴA2q?ƥtUڰHVwq4)MSͥm|<NzJKoPXR@ aSZV y7\[ym͞49M>.Ĉ< SެO<>=3{Tw]݊ojrUIƻQܹZnCb#j09q]yr:ǜk#՛!vqMop:ƛk-mGlo lI7%5^ZH#:튆N r!8b=Οve +|`0 Ү%ehN\IKwyt?MX]!篵[UY-fex",9"Ṵ$ƊᑜzӴ泘HBOt%S| ˉ2[uI$|&1^zVuvSLJLvROtԤx-\H rzyV!%uE8PՇRNgD!3`hzOƢVGs]GnA*~v[]GԤ2qNE`UJULOsV\`!Xxr:\דI{ȥv@Q q@5b ]OiJ4WoRk͂7'Rȱj'7VSOjgVQnrSk*\{$lAAQDعgiKqD ֗fT#';'6*F?8,`eERy!c;X +#6;i5p攒LgFmdypiʂH"m#Qw+tJ]F\b5C 26·?ΣI]JО6Rb[QFFi+QޝW"Pg?|r 犊po)e$`R)Kq#GRRB01ɩ ` G*= (.K)ԛu0ʔgtN n*KT7+jf1Ē_gZnP匞2e!O׊jL2v5Xs֣W ,Nќ^PG &F*WRc Jt7ZzNM"ʶs+:d7)K %o$|uN0=JcUZvvyhL<şpagfuAV`=iS(/psӜf*7ܡ~&d撣$呗 8Ԛ76a(;)eۻqSʑO؅dq{"y9yb\ { 2J m׵0!8~luc*$,=3OrtѼܣAL^Y9#Cpf|@~g䃊qwFubV24~`Mh<d$yȤ8`ޤ>2#{uI×HvvI(X +3:S/F3aTLZex{Zvf<TԍSZ=g(jB_HƮ1aJyV:9V3IOԷy\ w#QU@HZQCėM?>3CKo+ViHOT G <<3- ]1ޣ-uv{;qU=jZY]VN>Pq*T%?3Ҥ=:JbWGjk9eFr>n+xW=TWQO*:fK!Gafp371X'%kppS׹ r $Xdc4[ hl(/'$ +.v5s3qZ?AEJ6+!ɝʘ8T4Yƪm$: +,Fpy5m +=eq4F&U)9't5"^zK gzqמݢ_2 ګM>SPXoi[:mb+!aKsϩIu)kep7 M?&?s3[5¶0yS`A|xڢ]!I?df$)cq;2e7֧CmIS5,}-ȭ2g-zOT7P<*99G+NS+e$IֶȒ3$`EM I=8"I$I)}x9NDF잃M 8|gx'P\0aT=~YE i݃n?j-+wi3wqb8.qdXFZ>Zhsq~6aAیNV[I$*;W< +$Үzn*I=U)$i4-d(q׾)=4a,h9C329nsPjHŶ8*'52M<҆ ld__YPE[[URw$vUyR1nHM(˄5hiv-ؒre1VrΌ,2(bY&>wc+ZCndMʅ?OeiA?1tz=*ݾ&\9<0M._X-Hm[p,w*Bē.oc*f1ۊ$󼈅rG\z\|'8h%صDptZΓA-KHqjԶhq*]2~#iIpu mVKxGK6_z0O5ɱX$V.β0!JqZff/y=1V݁8Seai^y!t}N{yc8'}:#0ݓFxm U3Hdf5Y!Ln\yt!9 e9鳅i2OA9ɢ^%C%qA42^HdTdTp9[{vYaTRۢXHP֩F +oȪ59l5H_ Zp<>TY!Wp1YvNǰ Hp['UtTkH2 >AUR\aaq=vc2ֿ/T88bQJD#3dvȷ2 267ay$ZxBp@1 0m2d t>J9?w4E$ޤo*HWNt[0Q S$QOHx٥w)88^h%ZmXƮ{$sR6zNNG5{GxYH/qy< /Bn1Gw&}Wo=߆Lt  u+tdmy 7Oҫi'aq'{T6_Qor+(PqxK-4%kD! 4t6y 8TR2i}byV ,dv p8=k:+KϩSVmmn/.ɜp suHCp%}O& +.i#Er7sڴҮ,! lsTvR,ef'>"N:fLjiaծ#'ns.r}sbiKUh ^{'ؕ-1릚Z5} u/<ۊdaF8ǵ@fF$N.XcFzzfx.f6np g8.-$f99})EV3vTYb/>2ŽPn ʢD%P8>ZV$NZBӤ[y07mtKvp?{567d̄m3ӾzT6r.V7+ +Ig仸j ݻJ.h[Q<i+١c@>5+_Aca!(cSF|55H4ˉRoY8gLd0GF@ghDU\-NۙJ4%"wmEMit:wrC(wAƧI}2/f +yx׎U x侽˓ɞN+nVzF E&xjƏ$V^Gȡ 8ozw4 R  H}] lJpy)8LKibèT$ѸeA +!}sGX.Z8w6w!=*<54)Oys'E\˦N:Iwg{$onW) +x{ֆk6&OY[b檸~D:Io%:KBJbYRksI!U\=,EiNkFHoNVzySlo1!PeF'b?ɬ ylIBNxSQǪ3IGq;Pl!$gӮga֝2J7wKs>+T>r90n+^ "+5t뻃$bb11H);pHʪG -M[Ju-+qX\p3I"&,}}M`w;n]2P=0R(LN@#9 +q!ѾYYdē,FUwP/#Q]]jw&7ʋ R^@$ZMctKgR$4Uk)+g굹a̱ 9㧽r36q~]^oqhe`z1ֱeuHtcr(tFe6gv#Byf9v0/ڮf]xepN>`:tU/|ەr}mؙ#y#gP=Pn*1߁nKAr1vۏOL㚋M隵Io2&#ֺ3bp&m$@u{qUonC0k9NA(@tlAnuw\3q}Z=-ٶI$ڭN=xjfK{M]19"\ooG%̈́$I9$54>1!l[ʃo,>)1%w:&wǧnɩjKk i6L{z.kyױ nN{}G3i?Iihx)ę`O0v_gCf6Wǥ]݂3_V.Sr^_ڮ#8̄`pj%ϸHReB rʸUdW//K.ݫ';xߞ,H4n I,eg{S";mgg _Rc庆`1Sop:6wG{[Kk\(M>?{Z3dݗoFM:S$c$=QNmKitW ,.f2yh':%Ŗ.ZoYi[nXKtN ;qzoj}lNk5 [U[Ԕ/-[QimAk>p$^RڣnޟZҮy AH5=;V2F#&Xs؎Ƌ{7uH qn:2\^L\6hMf$uM=za HRE1eےI­iiGV`3Rj4Ԓ939pm< s֩ѩj5S,1/UtawNJn$ZrVUxĮ+{NJDy_fvPMwRx%Y\cr~k[P>+K&pp8^ơ,scJ:-M*QQۨ䅢^SNk U,LΩ96)ƪXfq#>A$n DIcV>&plG$ڵM!=W`%y匪2NH'B@$EcUE7qFKmzJgbvڦ̉X*UxeYs#5P˖!@Gi5`V"-H/ӡXc 2tRst[;ڮ%1(hҜѭy6J'&*Qn䑎cnFlAJKr>l4S#浟d]A4YʸSv7{emv˸JŐaʃ҄ȹ-sZ##y +& ɕPGvjo,DYv9SmM9QDϹEb~CH#ٔc+Tv+$,%`09R(ЙyJrG_Ң) +}v-a5sE- QdqP,Or +QBГYe1 ބź}o肾@늩w$VA;V;߭&搔x7؊Or=fBIN>XL2p{dTo vzn" ʳcj&3ߧ5k§i92ө&8 ol'A,pFvzbydm)"x̬arHPP1$tV7Uk0OBn[h'Ө/%vu@kBK86YkU}Wk;[Bs!;T ͌T+a+ r*獵+SV,6dH@?:B|WQ>XHVլŻ/ bb2qU5,2HÅSjLRmpѹm8"$w_2mp3ޟ,Jc͹ҽ8jsx(0yE5i$}'x +0{U{YO; +Z ؖ#t:2R2ʁ1e8!JA'F^cۚw(V(얣ks y4JCq* 4 3cӥ^󥕉gv㠧$h>%gPJRI1dʈffg0pyIh(&GPc^J h~\Cz>ݚBmFW]nU8WQe/^: hIerq/\WtTqUپwc b c*q1prޜGnh"'Ip j[\yH0 +G=#~;%Hcg>Jgn}]*t{yNT7 4'L@ ZSqQ6#y].l'$.ͳD"[ve\uǯK-"Ktfx^? +[2GMS29{ո %oQ du=x\CU;bҪ,S\*]Mз&I)&d1?*ؖ6HgB2⤇OWyVx>OSYlжGE rD 3e#1\vѠڕޟ ;U\G&r7%ݏYP?қt-dP t>>RHuQ.M+5vf߽ӊ1=-=zԐjR]Wz1ZHocyI"ܻ%֪|I'ǏlsUt3*[(.+,]"JV͘5WٔsުBƷEX|8%VCk :ӵIWV/ی)wor1猞S  nida5^ys#I >]u $twNN;¬ 2y!gnI|` E%\e߄Oޭ`21ʆnGNR,F,6i*+BXDqs#p:{֧p m8C%%LSfJ`]:vҧe&e<*d{RGv ىxm&BNz+yHq+Ҵ~ocq R'̡=2ie&CNH`Pqі5I[QGE*?բ'ҫX0Hf0Iy m^3›*y\{wZ) q I򪾗0P݊ڶp]9QM Ց],=kIZ  vҳn,.#6r)nI0,9Mb[&pwW#nu8c6VP&Np8OT?O,)ӧҫK=5ٓc|zһkƍ''.dq@9hk6wmfF9s+(CĤ4[P=j1m<%ǝ'}:,o{XuY.=jqn* +Zkh]p{Uk6HgBO^JMRQ-]e8nL[yy%| +1̩=9E ҩ`'$5v{QMAm܉u-ĽYW=G1S$o S ˸YY1 `L6q)`Cʻr9=57V)`onF{NkI R22q}*iR(B66xYRb+V}> RrX`G_ұ^ƣ;L]yOʶ 6 8򥶆n~o"}?8*H@gʪoSTnapmmۉ#\m5$qX}it5{f,u:ҮZ hʯ@OƬ|WW&M2[;q\Kn8|VmO:~%VE8] +˾)Ϟ9KWi{ۓkC ȓW4n>mR  J:4?ݱ?BXpp)Ϋ$Q l`>nk*O-5=n1}sѹd{hX qӭ=FJQ|[AnXA'CfEQ\5K;2|?>1Aoxݜ ڴSi#p~4J7mٲ-պuY29l,[l_jL2Ex%p>ʤTQN[)WFNp?Sf[Mh-6RwjѲLnlZQ\4vca֨- $V а{ԫy>} ϧRʺʿ`_%ܗ/k*v@ۋY#i e|/~t4^9bd#+u<b0)OOis=3*(I=OZi%IUmzVvgrZo|Nr8gvҥL5##=EZxf@> +{LDh%mӯҚJ*ءow +ngPچgh(6:ʖHά FPXm.Gs {V>b/N2ngM"Hۨqn ܣ{gڤqƢ)+(W6oă$n8j֝y y/g_np1Y-n 2:';fCt);REBMcSK~\i[lb^s V4֪ɱ@<"mmfX`d1zz^ZrR{w"JWR:Fl3sҶЬ1Aq (Hqɬ딟+v$jy5+{b|GfnL<5f{P@Fe#oMosg k 횽QQhr&N'UHge ҪKxMfMfdU(I ri)XM7<$8<G}46s0}3kK]W>?ʳ>\^rǽhZ]Az$Wg7+*q$Ҝ--[aO? ,u6H }u$q7@+ti(r. Gk2n Vr# Hn-_K ,ln[ +1qZKDMdy7qvHIBRԴk%U%2xK:G!OzӾm\6dSH{ʮ7,Kr[,aYm^1[)o1+:bi%^G!wZ,)$(Wbˎ5Is +rjQVh5G aMmg61#snsL6mql['d#0@*y-rGiQTJ zkr GN*h!R~EHgDzNgXi!c&{ +iZz٘is!9pG|Tlk358=>麽~B@L?vyJS2vzQ[M<3VdH&qb0@݌ɬ4 DY~`Tch_G.frp9EĢ]zh6 tˮ$ՉumZ Pڱ< ,1i$0;Hlgoo6 Ĉdv=O6=~$ q>Gt}BLqګY_5H ; qQӊܥp# +K +]iJv؏JMf*U-" L,ԝs(GFnHٔy>*j732xXUbfr!#gtre_-O_1n)Y-&me@UH1# Xz K1p8Q=jRneY,b7#rt/RMV ;ļ>qJ}1UYy` VlR mA Q_m܈<-Hmbkjɥm%@̒rwcHzZyd扔 ֨Oy"&iw8O܏m^ve.-o."[F UHh$'ڴ=IZK.Hc5k%ݔ찴!1nݓt^w^e"['ׯ,w ,B3= 2MlIoAp-ҩ̍s; +5E̽>zd_̀Ԓֺ*)d"aY0J +'-Y^8K_Z|!I 5uӋ6FY:R_c.NXQAthݐ ϗX_ Yشy-q:f{ +nطfogsKTT6W1TSZlI +@Wp`~c=kF,THPuZ%%wM QdX SORKM9]=;V}[mhY +l%@ aT4Yf{ǝʛwAN)- +i?n."7ɶU*1TLYg5j7qn4!1p#$t_+X"ټYñ'#:tí 8yXkxl?wI\ "'RƤB~|9>G̵GiqۑhDN@f d~""OKmB tcL28#giڥlZ9$yZ@LM#2+* nonT<yelK|gUNr9U)`Ǽ_<^zw|EX].綊r1=*ōӍF魦ۖ fYI d|%L?;)&pvك?WEJ\;W.1,DvԐH3-O +x"99ִ[2eۘߐ8'~KDҽl<ǧS潴[SE@3rgK\w!GnIXm}4J{TH}?Ưd>j ~NM= sTs|~V3$óEF>[[j8j},˜.AޚmI:{I$܋C[简$dt8i˥y +ɶ}s^*[yn#cx?rǯQtmެ!I3;:ct:Y|T,b1 i!͗?’mG]\8՚@I9'4%"K(FP~^+;q*8 +v1:rmwt|c2`.:%r3Zy-3X l Pxϵak4|iaoqj->;>9yc#=FA[z[NGaFr^2d XKl`;cj;8Ahʉ x6vA:Ru9)j8k4b8RT *EuEC#W9i9{{z"#1*qj:|Cw|UXY7gY!X@7SY1E<w޼cJe(1֢" V8&}3/+Mgdl{pi'&i_+4(Kь 2If%->$h +ϙۏʝr4/B)-SnsYmaJݝK XnWapTǒM>q6=4 h[$+c2'sQk,~^=:kYfym2QNg}9B1.}it-T,ooq$Edb5[j67VGqYnrێN1]]G H"VG5FmJ-_º]ߗ1;ϩ>i0]\HHoWbpqӭGXCd˺IJ63AMcs\<%*֬ZfD_R}` Me +~_O=3j<{uA(s^i>q=&ϱ+KbդIH )8UMMZ3})>ֱ>t"y2rNs;Iz,LʉmԖwis"v8HzӌPg*cRpy#J@.;?މb. +ɱ-fIVPf1 2Imۍ+gIdxq8JL+hC[1ϕ 8.N08Tn[l@#I>y<7Q /2$L~v S[/fyvV;w.2vjo$y@#C?"Mg;]X>ӏ1TI)QZH-= C&LgtP[\!Å3i85QA!EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPe&H +'PA %21h2nrK#B)@^iWTDVU`T֤D]N2p+7vRII^ɑ? 0GzuMq jX]I>XDڎkxcK@JҌ uPyM  ;w;d/f.͜g׊M7%}OV)ߟsD` })J#%&]*gTiLv„nv9,RH56EI+xL8'RʭUƭ21tz毙]=ltTp35$R 4%csNfK:djjH<=ѕ<5 ҭŪ"d6zU9TϺ1b:w0'._Qb jEb@*29W-X~\ry>mlq玥9u;#9* $r7qޠ_:VKr,8r[Ƥɉ}Pœc;DlT``llt[ 25{vucIlOUiꕄ''&~38V 8A&vӞ~=iv"FlQqVbbi'4fzst +09 P䌀i1I;vrF(n +Mh8FRj9m7>iڪ Swwaj_> 6:d!ă ʹjoPZ$eX68,fEr*;I1.XU,3S gj/9')dgtSM3!Tbҩ)Hp0EI&JY#+rbۼF(| tv9Rei Q,gM%|Crr)n2"HB8l)̰8<4^R$=dIM39de;RK{P~zbc8N4SwZmV"*( `ZwfO'4[<`j/#N}j1QI+ GXR +2y +\$o#Dn%7=q[7QjS-A3>^s=t7+Kmksw4i,ǔ96͖H+Bv) ٗw3aҮZyq.~^;+N[W8) },ug9]2jƢ +V13+}*Q@Tq"QzKyy^Vcy!_%x,əJL+mulz{r .kntz=I4α+ 90 <`bLnH=9P%AjnG"BIW'+T퉇=1U$guGjddiREHՔIc)('#Qkf=մ*g'9MIi2" vxo\TM~.'uH)[$;{{9-< p'޽lc|`C8 d&4۳s zW${{i$]i5vgFbT rvj!Eajbv`S)4Rvw'$S.;Alj^I=*͐H̆Y`{T׬4Ų$m~U]TӚZ*N1I؞XnVF :<21?6PZU}Rq.gJY)ZkReŴF,nOğ/@1=kJ)'YRd`FsѦIkOvyD +zBuc4rI#0*>Sm2"zt@dO5B MOer0=*ƬH 'L`GoJ˒F(:Myn FHgN^zeRZFu33VN: +*=JR AGpssM6"c=] P!ܾiis 2w-YhcuOx#L˵S֛wٚ+Kw3ɉ˞ V6|Vg(q;{v[mJlOopenťZs5m=UJUFUqV}Kel!\=Ys Y"l2}&Qm)Ho@qt(/{TE2Rܥu<;QrcRV2V5՗g8Tcy-5/}:Vu3.i㷵G$Vr_K t^Y+XdJI,ypwԱ[jz;ܣNa6< jWm%QWq&PUHK0Cs\s>m~}gO]G+-bg'_J;ZH(HLS$Д^e>\O/y4Xe9҅s ܯ<-QBv n`u Q*HrwTm7GڭKnYH[cP4GݵAF~fF2hgԻ?0O/nsg4Cs'ڡF(}Rvw{ ae]X+;v+j\{]qel"N9x=[cW^LD *=B"TFl\u9T9 >esSg+rz -c!Iqc&ܮެ7qBIl)˙)q"9El:Ʒ-.l4k8`P8~+h|3i#<)z +)} +IjDp$FnyR7v\uiƍ3`$O+%Gu_M'Reew77[y~ct(S>YÍĀ9'?GC]72Ы-\WV H*!`?³X8)Ԍg<՝6e R[9T8BR[hO.FJKppB**!w{UhLX?X`ePr玸<^FY{!HGW8ʐA/JɥnE䏽ӥTʺd@S}Noohzyx 7=g;<2 pխ6њGeG, `Pv.U6V!Ҙ[.z{fsr%W:Y%z`z{VfGCm:*<hZ,bXpwҫjXU鑷9㎞+Tm+E-Be +I}N-+ʎ$L3LPB6SSI4./N(nVvԔH\\ZvztH +<TXp cʔc[6/2߸CTcg–_:m=??c+CiuS00<;lmRZ,iD3ۤsr1s=FyRz{kigG\` nn}즍L8t,u*šK6/o >D) 'X x.|˫fJreӥs\HZWKa;nJ.3׏ZvЇVOTnByV]pzs޺ no&IMXBfwmncC[SʼḉAz2[,2 0tˋICymQׂrp=+gd77ZK36#'ҬXlu$3@ksڤӦ +#9$zt-q uv6 ?.sk:Sg2ǥ48w@$ZxVVTkTfP=I֪{d^:ҭk &Ϟ aZ-͂8'LSJvqocIV ρ3i}b4,y)}OZ*CtfJuW˯V-XA<|N=?JI'DfitAC>q@=闶7}̐\F웰B +EhV5f <̕=IvglzaۏJjfr[ 6F~ټWf1ss]d"Ɖ!s}%1r0FztE'gNFHU6.eVTΌ7 ` +ҺM܍("dgbr V5,Z3mzy>ƴ͜pI"haI]%*pJ 7~m'*H!Cn8K VZĉr+_*! ku LuS^7 J\w~U Xظ[#/'̏q*~=L^6NzsM01ֺ5ŝ#s*q4t=rmy.ti$(LIIlḻj OK"B``#YHlgԁӕ/K"J9D7OK>5a"ˌ0iirodiI;!p1Yew1ul{#"6H_;A=xힵ2cJ?I>DJho0(!EB%1.w)?n[f80ˍʹj:ZFcX!!nF3dwO}48Ldd}?:/mU#=k莅5]QY.R1(;>,*3#ceܷ0ى1@'oPgeugx7r4f.~zm$eH(2,nx}jMVGp[I 2y|-Rn9nEՇ)Mŗ)o~'b(rۈ\zqjR3@ْ{OSj]#IfDqYPFN= .Vmښ-[oȑ[;K&ON0iPwyiϷ֙-ĨI"3NÊ>ifV2A(ёyZ"mԪgbd[>gMJx63tucA$P{s|jY. +ITܴsrFA0˜vy׎D}(§VvޮOi,LYQ[X^iE#1=HֆM>I-S6a)+,5y @ =bm[i&im䟗ܮ~Up@sX"Bs"nG4L⣣_2kK.+ǗP~pqxVea&o( .zrk';lnΪs*;-1\E$S<681oG'o20Cҵ2Kuӗ|9.Sڱ`&XӀHvZ%RO1㏭7 ѻ kڙR>եZY5IQV%zlH%U@<Ly G\l.\mmd|Ĵ4<۞X ʣ6>lzzn:MzIL˖reÁǎ) >N)E"ȇ 2B+F+{XgHE˱0]^f2GdIdX$7^[mmIDrAgTzQ*J2K&1?61҂չ9˫wxd\2=Pɬ[h]%TQ#1ɪT$zQ@((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 63? ȫohJ*7)茩@'=턤(+7އl(Eq8Bjٝ-<㊴ӗ;zJVƇ9I;n\EF^K;cW(/3~ָp"9RjBJz ;G9Մ=@HRGR]9N(OB=yCOoLs׵A*uZby ~c$hڔ;S6SP\/<ЧˑU!KaSvWRQ̾jl=hEVzE0q,qn m53SWR2 2EnI !v1QG%'R;5C +*eʞz. +1n4G QHl nhOQN ٨#H.!M뎸ɫ.\*&rH=jxD|i*ZJ>B99qnyO(DQ?zi.s$fւ-̊qT[eCnN8[׊6?E{T̰B0\R5%rhG|ڠt1PaP~*2cӌNޝ(yB(b0c8GTȆQ 9ҩC>~\> hp@88++%E_4JUO@Բ\ax+M۵wFmĖ8#5>y1Qd HSݻ +D$ĜQ!i2ۙzgmr;W5t܊Eء @LZP~Z4)aR+43-z[πIXHѸpGN*C;r{w=တU94݌ [O'8(?XX8;\l A#;*sOc6I?tb:-$vvU,A%vOԣVmǽI%ƪ ;:q,.Ai#iY4q:STd%1AT\c=Zch+Ŏ{ Qhۧ8,vQZܼfRI3 Qf_4]'UwK`8棸|;T'"&@9p +$sKX,P0ѻyA p3jpV;$ers5!_ޞz`SL" %gL +q("<uEg%cE5by~dpXl\ĐOLzhff '#WIĞZ啢ֽByiy5,1$SS+ ._+$HB\lqKry1@Fr 1'D.O^BxU#8洧 j.æyUsMߚ*[i*FqWl%P@%*\T:\A]XSBeL 9IvqAPD3*)7Jqw3YlGSSԙPK;GB78Nv7qѴ1J gZ-^N)DR*G_Xq5nO8;2vZ+ON{0# vqr'n^f.!8;sEmm)!YTRȊ5%F1IiM{ll)l6x}k̛$uXRɖ1۩Ӭd&eF7o`~][ڦ#yBcۜE x؊wdڪY<]޸zLbkԚ+û?ҜZiM´cOaC~{ܞ;9*Fr03³^hmB +u:[dYanT-B؀I)O5I#*~W6|@$6"cz sI15w[- ACNJLl!bBҨAFks:r2ǚYQ>d-כhnzg({ndX8b1w`cT!o1Ҕf֋fz楴ظ!N[*U n 󅺼,~TQ t^w8vie>*xQ-;@? +k7ȁ[d9XzTֱ53|Ă q ؛ڿ?R7?@~|u.6[7G=j̶m-ŹpwϪ%ȜGn1)z޽w2aQ\/#)Iu*[a2L}*x-$ + <+̲Ys^zmrua@M٧,#1hOoS^}&­pjy*(22duMB-"/>Oq>ZϛɸWv;nÓZlwzێ=m54G7msۭ MÙ]l6K7.\a6'g\G5'xtL[cO*)Y8bq֩=HI4(5UEVrTZ+oE&Ά>9_|ޥګa$*i8曷S({F+byVwUEyO 2K<zOn(DN|26ӋmL4Q#;Fw\devqhMry}#JͻG!j2Em=1QG2:s$ZІ),_xĿ67s*s(ڎG>5 9cthKm '|uZ\Ds+J}fIb^%9P~U*Ki;Ў+ilun˺D2Uk_D-] L鎵=@~r<1? rMKtsXTms]hG:jrs˻;~:Nj !7K*cs!q~Lhp@^7t(SpL#5ú|q휊j &+jgݚ)x.X:*坽ı5*򱓜5).{G{[hgTvyaݞgΣ 98EۼÍcyc e?Ɣ^gm[]Z5ȖIT Fn]@\&yۻ8;sG\}*V/b.mTcl8F?4̢nԊRWe8{tcsۊ2"9[c1'ZnV*s[g~|ZS>Y^:PgQt< C,^\bˌFy53@ bk6q늯:ŀحsږq  Q. 6( $hTnnM])>b9hGhè7 y8FdӖڢԶG80APn]B-;DxG|{&$弋h Q}Ý)9{Zl_[&L/9w0̯1l隚[A3w+fX֡"3IOn͂֡;kʲ%6MrgݱQ0=Zo2]j OzfZӶKBn.L%Uav+*0p RCڤhb'=8ilš 98LbBWA,hw/-r]AetX9}+,s_F-w!=F:SHnMt+Fi$< +;(`Nx‰\u쥻I^n$wz({gU%{j]*~%f@;HX{{S +9'7{[y Ct צ;UMm[-&%Q {M4d $~4SOr̰< c r[nܮP`~VB0֧(z\ҭ}T .қQM Ahe"πjٷ i*8ia$0 r~ozK9J=9$to&O24V =FT㩦2v +3}蹳x.dq]Fbײٻ6qShw>zTkkXܾvFC0NzwRB(` *oR/Ʀ?Hف2NAgg_D KY8W^SM #DR2YTw3<'h[HPǻrݎj6G~mJ$9#JQjqz?ԽfdMQ׎P2(v9vl4LvǽS2y| HȺLvMH,nnv0*bi򝥁b9}+-nYnws3j7SlIs򩤻yTYh#4<Z )*>Dyls&]ng(­tH䡸X.7H}y:ט'#s֥y5ߵvѼ9#r&xm'qxSytvI5ͣb1( \GJ $ɼcE*烎8 -c-pXzZ[\JWH#nن9cYߖ枑3vIes VmF#]Fr3zϴa=jM1.|3Ʀ͹q_(ډkjr~֥f7Rla@ҹ|ncTcM+Xs hjۄ*]Mz|hfK$ +JV;t4 [Yh$HU Z֎;1L.݀{%ǟ8.0I?˭ +t8T[X$e7#piIdoxn>b)dښֱfnTF,^?S:i(^J+Y٥{.ߜpo!*3v8]Y8GȊE!jm,m*VK. {0B޴F%1YH;P {=)i2OoɆ{ gzj]5)$N:*^xIӚ汸δ_2dA`dMf'"^%qoҠ ioyk)ۗA&2quorBON!LhB^[p>h+M&{;u3FYn%I\Ň.{6<+G>[iXY[cIQyj3eK=[Z,"3;z7:=캜v 84=*LjR6O3~6zj%ƛvmLmƝ7~vssm^9V^H1lHM,o&dfll޴^Ң]N +эކ|gU&K0ٖ|j +My7 q:ԓ])Uݔ9ڍj. +nԛ:|P2HAe_4OArƵAEH񒯑j86:fҤ_Kei1bA>?eN;>7e99ǧ[i2d{8[q {nV^8SGYd ˌO=,CrI- +pmr1:TjIJ60vr9WGe6+r7+]OL s1\]ާ5x*P|ItXoC>2.Hcҳlo-xf^N;*il_-F?7.X-AFU~p Wǎ=>[w?2qS3%큖DyU:}M&Qms3>EJ["jwq֬i.&ѱ}BYdI-O3FJ׷NY66ou'ڢhcfW%ӨmFcMA5ԳF>݅?A0h͏rd*O3M㿯ZMXJRZޭ)>˼HWz{Ux5{q,i:ڛt1HbU7diDt q>ֻR]s )sPc268=N*0kY\-}b:)C_C6æO?R]iN2vlH5AnKEQ"'mr+na݅͂|= m_ \7g'KKk-pN3PNsR:"Ԏ[$n/F]IMr3ӚJEܠbѹ'?U6zrEkpXHG޳.p kϿ \ܤ 4hd,HOf -}iْHr;zM"pICW*@9rN EK?c8Mp3ֵ5`wM16XPh1dp1\ܺ3f)`ig=6\Ѿ朎C)nj tS!q+zT io_'>?Z^6zg8H4ݡDԖ'}nS]?RHq"^>TٓnGѻv<It3l,Lv? +.|KH%Gm3ur.B$n8瞿djq/Pclqzg޶uD!2[ 6PMgۦq"ɷm})qPRSN{^WO//n8t1^GN]v8MCG@Īc=&pc3I42p#޶n7P הWvNr3\Gʰ㡭 ;]jiX*.q$PNvї—,$̘+!UG̽J竮֭.U2O,%mFI1G@WES0 +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(.,z2(=`N⤞[\'sQmy.S$qz#f_$ؤ#$f7# r3O!n# F?Je~j$h'ThݙДho#c%!f*[$g2|Jx}6\aD؛Qc.D3Grjx2z +۬4Sڮ>ªU: g& qJ8qT9fƪ+08Q+_C.G#8ʧj|L$I<ԥsIIG}IaKISaZV@M5<3)#UY`DX]gjx3FYARG +l yș18c{`񷜎YdZ8TMQSnID(*ǂi#"V , .X8 LYmZ&ZJ;E#>`|OjءY6HO۾s"N8V #<jƥ[i@⦹ %3Ty4WtdsU]˖4r8;Qx5@!+?2X%I3\+x`p.ST߳LbMVXe\*{K8q!$n@B˓]11.z Ua3a۞?*%Nܸ;^?:nZpG4n#OUs\ZRr3'~5N+e eO|R\}d2.%R@n9&~$%3~>Zy*!ٵ^o M\9Z4>"Fwby6m62CHfHb +5j^_F#,K$wҳ#q%M^1T/x)o➲v1ۿvc[l`R՗zqiG,BI*p=ibvTШG&2y/5A܎j~B$;͕I{(-]t0ܟ%(@Uf<4?rUI.xP1A>fBO]Ey9_JKEcI')s="n1K~Zq 5t9bKc&OiDQ/ +7rҁq隒{up1Ki 7i$]sJ7uu~Y@J15>aKnpLTq̋<%wLq3F;fn2ܻ5SiCnΑ3!1zu myY +=q++4[}+Sȴ r w1b*)xI6i n!qk.xXIc'Zلs1i+qmz '{RMw2]Ii`G?ҨdbOPjy L$ж٘#=wNsiQIlg9j84n`VQ(4'$wwvXZ 98*O#<})aP {I`;`spGeT[>ΨHcrCA]9_<3m)8t^fU,b`z~լe%.t+4\$3ys&ܦ{i5K,^h"؛7),.w#bY%\Gj< "XRzrЫm* $c',6 b20W׮j XZےlVgN1*mLm<r+kb{u%VøXhwagH"LZ_ym$a3a)\fvqLqFZ@qM 5` y~Bu9b,Z)HgR\7g9Qv)11o-*j"INjTd^k5]v[|}cP6h-:љ3J,^ʑFx׬ݓߟ5Ip*߹-!@9JǑDHSߟZ"B&Us xiqycqsORֹr[6g{t%+jhkpnG=sޛm=T7ިڋ~}9-qnZ=F̑DK$@̊7.eh^mu\0R6T6(sƄ*8{C6 %a_L +u4hCُN?$v0I L ON^sZۯ!oAe[兢-ܜ1_ץ%dl{S'E3y\ bMw+[i;2V.tXn5ZBiRNtZ1Pބ7SMݪqK" mGFxǥTKq̫sTDb(~\.c6qLhX2 IJ/QUK&ʗ[O^딅d WkJ^jGvXsͭkCqZ'ќ_)id/U6xViWM0#|z{uéJ\z9NVhXwBVr29n%Y|6Qڱn]kjM:[7٣Yt*FX.v*dТN)cP..62GiZXfs# +l# V$xa3Ϳ9'5-B14JcݎzRjS2/U=? +ȻG~fnI]X%[t/| +dm,ţCJ ;O}j:(e{4u +H?&@)؂3[[*FwnAT\^$*D|0$9֩WI6Mۧ[,]ُ?Zu؆@mڛNq֧yDv41wQ>մ{ +b^/pT4Z\Ͼ8z}*E.9vGopbWUAԚ\83Ѐ>'Bژ>6jBT$P +,acVg˞ZPJ`9h+I}>RcvYv1r{zUSmwjK"4Y!zzo-4PBP?aur-ͬ%`O֋m%mm;I%7MO̸zo5u:дErT]\TڎPS< b #+3 $MҢT 8YX$X̨IzT= YRcGt76.%v?EFln#H0u\ps֩K[:Lˍ ^Kn]`ZB˷=^X3# @ʟʢRG`^ 3lF1Vܫ"wz8T#*'WG!,Zh0y̑;eHik䗶UO± OL{օɍPd2 cLʲ! szk|W"2H\ ,U1\"v-,Ky\L}N"*7[~\}(iË3nmd_ ɲ0jtެ] /-lOͼw{,lM3g( +"̊҄[w^DW]<w=)72Nj趐yW#==C4 -?{ 2Xr*Im o2]J-Ve߸cۀDo#8*z + +|ч,^ȲlppH5%vef1ǿ`UH\hbبJgp<M[R*s._"H42(J Jk. lcxeo4^aUKF3$R܅=*}^ty!A^AIQ;vUeBjЗ@FqVֺT[&S 6ۯnC(nAKsjRmm )ff( vk&6 I}*V>8mݞ ++ۑV?wשVR7կ9ڦi$ `mW`k+u3 2aNt[{y\q-&1حp݌Ry 4-KHp8$dD,i7b*} zs-KshV!nyP[id(RHR2r\|F)LcNJkVdRBFUf ~8#+??Z!dd<=imMI?kk%弨 +C9U!%9CkuD^jXnS/G4B8\ҷ6ړ‘PɪvVf +-<,!F5lrgnON?i5#&vb8djԈ%q#9*$KݟUCjp.P9=?+;\4ʕ]_Pt|3CT!Ive@H{ Md|Nwvs'ig pg&Dn;ӵޤ: {.u 6Ua"mZőd\sW-3mێ=(;ʴW}ly,,8`3֟9]Q ,ci`/^-Z#v0;}q_²Yn}? +x+nBWpj#Vk1Sz[;\wfui{k Zcd=70sO#K+ùY !<=iY[mqлHJ@"`h# ԗ]! H.zf֋,Ls<`}(שW ԭE#e'_jهm8s['MRʹ ?Zew(ů}# TV/=vOY!ى+9gYY!P8MA Z'U;IHrѶ `ykjR1Y2 RԇICJ*T7a~]_=k˲W S>hX*8Nh,nՙ3OGm4m}|R#6y[Š^!Mm <ノ٪2LܒIbE0@P|vjɌ<$/^ p].1Ӹ?Ҭ%ycb$%؏S89h~-w04Gҫ |z洭,㻒EQ |c֢:#BX{SZj\VDnTM7|KzR b*BUͧ9LCrԷc(iy%ÔB0 S|77dl͹_jKhR`jȥՊuoy(=]V4fҠ#qaߝ]ץ+Hm-vȮ;ZRdilg vKi_ϕT*>>}kC8'SڵH% "J٪6wv;C)QZ~=4FVBGAq6lU:Tp: \˓[#=CW +rptٻAm'Ͳ['=1MxXv7H1rTvMgm.vϒ+/Y̌5 |z֪ǫZGuyq_rj}=H$)䁃ٷx=9P^ +J I#Ҷ5m>_UB֙Ձyퟮ*K.KP2rQ09^xֶtӧ*!ws &mQ(j"k%ͼh.g~mroI6o@X=>I+<{YIϯj*i+]lfiP) *őom䔀LnLAVtAʻqK̽n:֍[4hcd ھc?I&{U_]La/5!mnE Tϵ>QkI7FǕ[yY"taE)ӌjXm'gs֔CRLN01ӥm_Y}(Ea n.Wf@79j;˸thŹ/;w6kFY!9_3cNXэF\E_A}q4P,{M\I) RBLPVS|۠{SNaWgf:`קN7VT +a2UF>J&D +>^Xd]86YqNhy-Mn zjZ["B$>^nڟ ]*D'7rc?fwBTz{c7s3mi`YX 6ۺT&vݍ17Old1D#m}:IOۖ3"l=>lJK25)#LZ=g۴ Ytr09F4,9do8iRԽ56VQHq q_Ҥ$-F;Xg=>ͦ}w`|sQi~I:b#)sסt\e ^Y1 +u뚊=ign?q#) HG_ƜaIFV2>}omISgr&.rGhͤKyq8sT +[\I<̷ׁҵ ԛ-zDpi4`źi% ar8>ܬgSqmVj;z U{i2~d]Cg,)jdlPqFRFɖf}j"ڬ {ynlK$U*6XgGMD[U4|Ώ-!D$#Z-6S3\ݣ9t~>TMr x,ħGLhM^[\H\Go;Fwp < Vm&nQӨZԈIQ%y$Iֵ5ȅplKx< +ws"Eq!+uWu0.ȏ:g׵Iggi"@ {Ԟ%1yƐƎ(>^9AsTOhܫjvm_p峒~+OEl}>XNXU1 OgTc+[W㷵&k.x3+^ܶ'ǧ9OB?~0w?Zin1D:Jr qOH&i4\ j@a."l7-;F1ae/^o쎘N|=\|n}^GIlP,bûx4VUCZ9$vAQG'ٜFy~U{ǚA v9 -sqZ9uG:/XMwԨJy>>\@I9$hFҪn9棆]i<Uťi=6ȘH2!nPAyx\1uOv"Nq5ΪS^ #9$Ƭ\ eM蠱=ep 7T;ꦣkYL x;@.q6{q''3,rA3ڍմX[dF7fSFeR 毼7UʨɬxmխQ[Sm{28F+1daqeeUpGmi!AʓUr,EOcFM0>Ry׫ikjљu G'=|D#ij{}Nۻyk7vJat] Ytmg Vy5O65bL +*Ê(7N0M5Vxe ;`LvɈp\֘ {%)orw7͞)7BvLNxC,˴i`۵<`Rl)ݽQ][9co'yT˴2xI!HCCeFӓv(7ASn:w0qU`O'4,hW FpN ݃'1$rI覴0Saj v&ai}w:bO4X=8PO1:yX4M=FISc)TvքGoSjѴwӵH#I ~x=)BKܴֆrNi!$981f,o@BFd8\6Y!sSEjKơ ;UCUsP#bx0u RjA r+p犡+(f&:^oe.\d; rqMZr6&;0}ݹ~g(v a銁N>Y8uաl,0weJ:vWC1%v`.s§mc@}*"Wt#=Le;wϥ%f9wEdG1?j%c'22qc9NG&'llT׿OvU&hӓ] NVߡ" O_cYW18V 0HtMRKԻM5k +&䦺Ew6A8?QU 7H9fɦI=CU_n W6 FzUg&[oԙ6*6}j֘!# ,3Ute` +wnϾ)w+yj}2,3B1vQ0,O͎YDbKg4 F㿥+4VuG%mDzG%Sg dҧ-KK)Y6t2Qg ȕ:&99VeQ҈#H<䲓V>At&PvΚrM+m_ŷoBOLkZ;w+=J&X>j, fJ\ʌvI*si ƂM5%Y"7>cVɋȶ8' +J 1=+^[kk_6  v8]kB0ȟ{ԮxބIMrɧȚ R}3sII + R2G*Z5Ϩ 3M"#.ݡs I `w-Su;Yu@pۢiJvI-]2w=)7J$Mh8¤FdbXU_8QUIk F۶7fiVǐ;EsaZjL"܇ۆSc*4p3z}iF}|ˊ#-?Ƴ씢U. ++Ts&pL~P:gp5H'Jg +;O]ܯ-Eq qRKr*c* _2 ؑ19Ҵos! 24=6(E[dC\gWWwYeԲddr I,!yO^ +#|U_h8QSuʒAm.YRG5%smIrVEw`t-g$}ȸ#vvrVء؍:J'?ެ:9bC}XVge$}c,]w wMօV)'Vs&ˌ#:sY+yXoc[vWۣ#Őrj:)MOXϒAkvT9rqҴOgnO(y֚\c1Tn.%1D0({%{|a6Kw2G=*5ͥJN:ǵgeE"1ՕXD@4{=S!^˰4( ӷMViSK UA?Jnes#;F=~7 +;TCFr=}]"e4ZyiHAԃTQ :4 RQ;w犬(BH8lrMBz3#[n"n7CNjF+m186|r{TQ«n&|^qu{msqrG +7^\uzV/3A4)29^+1三 ;sVll^-F4󷃏Z p"(p%0r׊''9h̻I + +G/r eX1Co=6;.Tdq)Qw|y)_B"],cGn1 x=sjKkR.ڻO@NI,fDLryYC)GׇyI;8AA OFnVnR!S$H_AZW:t $}Ì[-ŸgYxPNq?ȫ9eʞZӮuo-F*ǻ2q>V#<5$Qgjm䕤s;!]z,ih]$ٷjp8j:;2:,m[X.Kof n8ϭKWJ0^ƍW!x8-zUIT3 rrzޢiHU:=GLe '(ɜ=5&MT.bLjld3ӎҕm3^B@wdu4r\ yt\|dq%ƈ0 0_zc9B4x!^֚b^;R@쓞sw?1k{4Cu#-zzUxTc 'db)Y2|F'|LTI}*q #S'5#]K$PE0wcԇHh|߰ǎgh],6/꺝Ok4 +y(A8 P鷿dUW a^YmVb\^=+9298s]3gP A"d`GOZOc$RB.s#c(ݦo8Q3qTl\-bxϽ-48+-ȷ0 +K"|q)#ձ}grT:wJG=VR9*G#<+?x8fϵ[ GO큶?w?Z\ǸĮ>]0ŵU|m 򧕑YE',ƛwӦ{PVMro÷894Z7HcP,[p'k暾虥/vZ^٥Equ2pPpr8H1#~P@֎b$, l2:qNdo y*ISqWZlN>jdcUۖt v[{"Td}*NV&X\2F*Z:!++=IHG$K|k-X2mřCpMnY"'#Lq +s1`Fvo^zдs\h6ć,U8bKO478=z҆\Cks +",a:[]"1kUv֞2ֈqAn9zQhA !A'5fkHf##JAyPw۰dХjZ]n pzek|+womq{g?Ք?^ߥ WJt8#1tyU~BTsBc;SbVb Ѽ=)u4}ۘ)uP Sh%BgiAս9\4p3Qj;b +FJK,2Vn6Qow:#E۲S-m$~Z2Wy߸86TU֥5ѽU[)9yW1W]7֫V.$ˑnIvbd'-$u\4M _9rsjE%(5m|Os3lOP?rɑwGpE$ޒ*Ii>xmިw37ږHB[֩]{S#95BHQ t 0z +jsXH[5T*&讓18cK'Oyn%[(Rc$Ol%ۡ:if9 p#wjLi1(V0G@Z'X `1V *!?il.:]:qR%Gi= +gۖ瞹/浹VhY%D@V!!RҞ)i2HfVMut/co,r12.3I7RQp{~E>w%ȶ\1=%#`OpE g~oo.,J,۸=k}Տ/E.mt `u8jr22MJo(nDd20=9vv0Gq3.Ig<3W4.1kp O$ Gzf\A:Kщ 3iϪiw\sGoŐ8'ǵTYfٖy~Qݩc$KBťNyLrK] ڋ1>A=8AcF#W7N]Z[wúp$ߞ{U{]J) Ĵox\ޔJ*8˫ft0{X!I=:5¢4js$74"L7vqe%1#M^;k5m&U9C۽S'{6 S'8ʦW} vjERgo[1xud:6~"${Sm"k ;Y'Bi=2Gw4Ʋ.s,ve0$pe ?7{Q#tV$V@۴= .^vZc6V'V 8;#VM{nFze%rJVzb8.$ۗ$tt5$P'i ѧX)l!K6;]eBeΖ9↵Sgo99glU<&3Ƴ^uY+FX{VoBx!Ns: EqwP^LZEՄ-Tb.\vJ9&1)iPu{j.n7X`F Or}MCd +BWN15Z%@V䏨yZ19|l*ީI%Bl *rZ Is/cf@zTsǂ 7,lG_/ ik6˟qjZ-v~46?dOr6y]HDfI5viMoN&t>k̶h23OaZ+47omQ #ҸٮB##ϸbqlR8+$"XGܱ:Lcܸ:<D[хjrךK&Ue۞׊W=3ys+5mGN:Ybo)@ ?=j[䴌˜qm),n\`q"^*swkF2OVXR9(!seos$tlWnqwekbKo#(~B>]/;+H>l Oc5yFZ"ɈĻ95-a\xq/rcXWi;E0>G*:gjw6% UsM5QF"2flL{K{E4?/ynG_C2 ^MF>֦hna/U'֧mJN֥ $dx~iQ;КQHn5%M֘?-2(8UX׸Yr遌wOsBPt "e܈B%ĎVs؜~re!d=6wx[t.X :B/N7NRymvn 0cik41M\%K H~@U&zdN!g`v ǂ'#CpR9`_·fIo=I玵)XRsљ4mvlh?9lV.wneX;p=O''fW$c"DO2JsFpZ2ƣ,QUgdc'sL,)V;@,,nXɌ#i_R=V~E{=< 8[Z}q\GjY 1;S/c[y8sJWng`TO '_]hXVݻOs-siM$/ x8sн: yqTOZKFIdܧ6>lXY6F>xD 2.rxd6LՏ|;R67Ml*y7U0x8JRKtM7ddv~ܞbFjEx +*J:ž1$,I9e8T"m]픒:/T<ؓeGخԌw +lv,Sx)Gdoo9$!d-<T,G沪sRL?2W(ZckmQx* S/hK6-U@F܂#g7pLrX?^jKĖKUdTUM>x۱ 9*QUӭKv^;BqB鶖N6qߜC]_4XDdv}})_JW&Mά"gswegi܁.6V| Xy `cO}0LDrLl!sӮ{r&dH!1Gr{);\ʼM̅PX-t5K[Ku ;?JT8)Z: ?YUZ eQNrd _j]. x⹍|`POO>p;wYӠ8- sYCISg$;z3Dl݈э 3tRr*nQ*DH,2@4_"VwSUQ?+Ua/Lzy .|_ݨݟ3q'1 +VJ,\gv}c"ߧ9v/@rOZdL>Uqx[HL[bǥG0Hݾi A<`GFgU)A1 ?5i| )922B)n#O,t1?Q:sǽ)%:,IR`7R9cK3^1WSY{ r R@3S)2;gбKW$iv&ᎇ% +9$zz4ї` QiNu>$ʝNUt!S/?Ҝ$>C8Tx<$$|2qJY2M#sҎU`Ud"xͤ1^,̻q5~IH8,V66d U.$d~]NDK{wٴ(6wd˥U`*J&23*-䃐8Vm(W*qjw7*\Jw($9`[Tp0B'ެ@pKrr9֘Lo)"HCfxX) AT3$^Rf.8[,l=1ZHFc'˕nl7@~?R è#_1ŔARk6I4yFѿ]]0g*qwPqm8hPj ZF)iHXpzs@l-sMۅ\' v[5h'xqbx\3 {M.$mй88(+ @:i6pRWbQg&H1߯5VHj zVO,Qcqߚ>HVJhi]s1*\1 +ެqBsJX{e}8 SnrY93%+ŽHo%d9i>(Xޅkj5"|Ι2}~VnIq`OilLM%+$i^6ay jn8k3EhRY^NA4Ԋ9ymF\V = +U#)4ӶE5-d 2X$YY#oU$Zg<>X휁UK4ѻI`'g;S3ۻ&Am)E"~H>]e2HhU-}I/m݌bqRrԟ//Aobjֵs434kD1U#d~vӏzul2"D)&E鏧ZIFSRėZHLEUqr8V`3l=ijI(76i`FIV2#"@M+himOn9͗  `c]y"4fų==9#3$PHNXE%.~ŷsAs O[Ƀ#E;&igu-U3px'Uz[ՒEpNsy)na9sڧK};QDIsrxQXLRO|'ғs)%-#ʈP?,qӓ a"t +͔lޟZ]FO3f6#K8W`XNrm[e żv'ջy E$w} @E=y{c.g0\'qUd3SnE,2tǭc-M8kF-XnێҲvZpd Ih:MkסkwXɿ+V%Xd#tO\NO,.~v֤re7F~z{js)^^^%мbLcsj[ YY;Uǁc\wh!X9ǥ5jة|ڵ+ac )C8EgG4i6zX]2޴Bc6RՍ,q?&6тs&i3 +XI%bg<ꜿrNxֲ\\f^uqGO ]>;aCxQVKTSxc>S4Wޅn%MFN9l⧂cގ>ZSi~drA?r\ҾbH{+շ ]h',?\I|=' lcP[cq-^FyϽMj䕺ԮK8ݸ=Ѥ$rFZK$y'>V462sd6㞾K-n, KpRKql7Z;hw2^;U$zhqwB<O}Y ˑiEzAO_0̡?6V>I,co)[\):ڥ#pZ]݅Lq;F^J9]mm2LS +ʽ 6l`YӠk#]'~݄_iEfeO!c&DXt$VU͸Oܾ}qNtqFrsOT-RkEg7EIܤc#'JI a

      Apn2ʪ$9nYRKȲ$ݥcڤjywMsRm&r5KkԆ#fu__W. Bȡ ՛opѻy,ȿ)e8$}E]TY"Lqs’TIGHpg'Ifle84ȟgYCQ4n0['=?TkRH{e-մzqJ/eqrIpp ^jݹ`n ++_)n\iI;mBpWY1^F5ˑc]˻ ޕ;fy%g(`f֮ +ٴEYM;FЛc4RI$0DBr0԰KȈH~4SJWvV&0Ds;Fs%F01ӷhRT0Kr7mjQI57uJzJYkɚ3*/s +<Rji 99JFxXR~YN:08R+bddkףpP1^I*+&6'MƮX &1$Jٝ)sӳw5Ĉ]$w?z`l_0"heRsLʣHzEd3O.I-Ԓrjbn!ϵQYo.1< {R= +ߠI$3'9\] ctvᕕڭEV9ሃ;JJ[@D)NkٝMɓSN8.՜68Q%[?x񑞝;V qa4@9ҩDƥ^[i|m2J\Ls~XVq' *WTu;V7aNss+dR3J\0nܛҺ ;szՋi--*Hb'5z~3܍W@skRJ-ru5VnJ&[ݸTm,fsh홦6OGv[#gyUjOBƚA&uV?ֹ|,c[N..v>둌U X#/>ƭ6Z)KlgyyЦNJ.ZyHɭi̮ Ny>΋y^U52; @I5h皔Z:IH5 5 .z9=6 *;xZ[U +Svߧ ,[eNySS_a0d۳QyI|9=8Tܤtjױ49OƗSDZkvG鮷-elA{zS +%W+rXn8v]i ٠`,,jPT:U)4쌪҄K ֙]:^M2:~mgo>_29tGO$# fN O6CHyrM^E4ڱ3&%9N^wc ~aeZmJiٗlss#Tu7pnݤVod{VQEQ85B;$_dlq{N [ Fޕvmq(rIzb #8RqEa͎;nws縖mLO,ygEb bZh'0fndm~uɪ)طٟ'iǵgq=]v#m ^ycs)=pua4襇RxWQH?1Hy={䑡ԒF6smGA_+x~q摥pJ3c}=(`~=՚V2jQѽJz}[O4Gfp̋ n_$v}Xñi?\lӋ^JW$T|>+_N Cs,fL@}}jKa +yp78M+0=}/} 9Xi-(t<w*o%8>h߽NAnxJukDm+1Vf 8搄a0z}"T;68 +W%s~\s+AtzBd㯷ZݣO1ӷHݑ,{ڞJ2R+{}L0==)'d_3G[>@["%1Oj,vtld=VV{Vkw{r`dntU-R=Z xMbb-]DJ8֯zPtYgKvZG;i۩a#0D~a`8Z1S1dq}*6MK,lmxw#znl'5 -w*pm4Y̸3 [iw],3V{{#Tu+S,Hhbw}j7-m-eB۷$ttsXNQL5C 㱮`ڽyPw=;c5/Cݤ,9-cK'q'ckM;!.o* g摠gaҢ粑04K݉9hΥH$bHjg,27dǥL:pVe7v A#[JUyg֬fOvzUp$\0?/Σ}UMWnXp̤oGsAy;E*LI6d≯FR-K#:QdsNx$Nn+A,v z* Tlu!>^k1ZrѪ he )d.0HEĊVE ݸv_ZLݞM4ňw5UbI5$ d`V9jIEښ׮ͺJڝ)6e#*A]#0G#ji^[Y=jM|kBZ8]&+ʹgzI|Q447)P$oE_QsUQ\$t<VxA9e\VA 2',W54!.y]* 2I +܎*m96@4Bb'}R#o3Vcw槝TH; 9Mt(w\ۊw "2q%~|IPs Uxk1x S". ;8,<^kXJzLzuJ.6CWsv c*cԎBn +9P‚qMZj-C{%Ө1 H9bm UUzc)"'_\%+_%vûDbki,0$+dի,(Rd}k6hŤǼl~4}NTi[$/h5SIU0K2ҫv yDm$j~+FTc|HԌCfTcxxrlzRX4[Kyq wvW1YV9N1ַx{`XeKNO1qqgs + >7֧ʣʋZ '5C%j 㴑U  +8`40]q8º +^*R%ă#_dU%!yPLRBb3[ of*5a;BީMɒP.[x*XǗN=F#PA"2C/y^8PSpF3ct[Ib$ޏxڕʗnHl/C=.Pó-ɪbX6dVʱK g;r1}?R]e;KF`pL1 3R4w120z|~YK(r>5~hجVg;/c*`;ܫokw%;9naRG&db8 :+Y.mR<ⴢ{(sF:RzNkjɏN[+)^zvVm; 8'YݠviǵAMowF$RGN&Pqf[1u"3,0JžwihNs[wpA}ls<`mR4r^YDp37n=jmO;PU#Q6%+sŏ<^}) hK$Jo̊wkFU`:(SqW+r6Vۦ^4I hel84jWN/~+gMuLᓐr)TK1e繧Y]4KM19R$o'Vܿ +܂Iڊdux)feFw\_#t +aإ["2LL|*m8IX͏8?/NǚUh#̎Mn3zU8]7=j]nunYnɧ;IC|?M+Vf.ljH$tTr3>rퟗ=9f%T2ǹQ8M^›d[h]اHhayr5|^sfde|\`zK+{i-qr0'=:sM.]fx]XBaFm0>-i$c9It1u*$m5dhюwDwnV5 *ğjQQJS|kޘ&O'PBu,hɩ_Ryv7ymltێ}hI7d:Q4݉ eNb.c +N01T$kCo.dz=^ by.6F}z t]-Ǚ1?6=JmhLgKInPY,űWiܼڮ>:[E3…9JBI;|ɵm 2:pqצzT}P)! A?΢vi$1gRò[$qw?A5y`i/1ɧ˩41s(Glsr;OiT^)# vBsU}v8H.Dp>r 'z{}\v)w;TZW[4qޕL5Y\Fߓ+󞣮jku?eX́H+l;\KuO7rӊwna>AX9Q5285g':Xf8sZQWܫ!܃K WC7W;FM_ekg*p-$1땺#.b?t?QUK2HAWzZ"!ݻv?yn嵎g&$E*00;fmTmZ5xꌡ jC9YnTmY~ayeNz4ӭnq( sSIx1Aw䓚lkW efaӥ`o4do]N+OM kĻ4ѫ/т[sڛ3{H|)&v(~:RjvrY:O#c8bAZhDۜ9e0yq+{MǝuKuFq} +jWb=y;کDir&*ܰ.#7k4[|] 9ޛZ\xU펹11H}EyUoB=@ЧF}Biԉ=AqVmI w^ICj1BI5hmE7 1K ^Qi ԚB$}3[TE!Ncjkj72̠g9sJeK6VcEǚ2خ4!v^S,1$Xxғ U/FCqgi8)#5>w3VQ~]뿦zV%_;̘3D~}*[PPc?x U. _b̆(3(89!B@FӌXJcmqV{3*&х銧0y٨:d0hM[,.CLyR# +`HdP?R[pBA'#ӵ- E/& nAVZ61.Q Ge'΢dyTQwV +rp\b O6=g#㊒v\zt240L#9;l[U9@9ǽەM6u9E#tٺ0 9[I,jaV-qW<8" ."-)݁pzuSc=e xdPZ[ ,nfb?j½iʤD)c4%wT$=%*SY)O]P{g]@8?T[\O6Wd=ѥq|.i#O ՙkyD,xڋKy.miES9ҩle)]KG܆ܨ$V+~^1J;̑O^$K#'h]5ȰTf,tt;8r&*gҷ'҄t U7A^9O- URsA9'S9H ܹ#ޯ[ybfq8n7VI}9(o4IkY$ J $s?Jm\”tjM>$hY)f@p~n\Θ=G\@zPշQ:H^(aBs횝LOvb_&2ncARۃj͕$\-( .KynXN?YyzsYwbhKy;Z4V nyzc`y^HsZ&RZ`pnquA<|RӨjI1h KcjKTKY|AycJk)ļwE.h$쑱 [7/8xfP1rZ6%RF]IᱜQ};l&Ffٕ9oCEFHޒnk'J*OGsUUݓ簚Ss*pSjo41 + g5RG_#ۉPrC +͖JCӾU!V8^MdI&0Wr{WN7rFbD*б7^z{vr)=)HZ.Yَ3QWKw%YeEaP@ [sҡo i>tW'cg<`Yw~B'ȘBH𩉃NCc|~˸;Fʳ[-ޢE"m + "dcʉa"oFJg^8cM8c=d$m8 (wS%[$h;5]%aHk1 gVRx#ssϭUrZ[(-Kvwr? +M{rgDJ8?B} 3.w46[Eg'- +U9֥i.Ș%s5et.'ad;gk%L÷=u`iwŴ*yA?ҩ2;I_4psޘnEA֭[*Ĉ]N oN~8d9P>f6vi%q,W;$T,rqV%F2^޺K{6' 6V'#'= +, a1R:gބ˜ 6c2\{zUHrfBN*SGnqBd'?_+V`N7 7d`K^+Y<_'/G==?:ɸuy31BI5f錻`3Zi +v.q_*Prj,vɾ8 @'\I#bFywZEգޱH$0㨫-YXؘ7P&#t$pq*et[_n3sX3!7-7.L[;RKM +F+i6=۳DFޙ}eBT44GXDQ})顝̳cmyc_/6ԡt}{k'8g85_V_-ْ$9zl.OҔkFjȘW~v ~,Wzl'b.rc=gu%PcEVHָ"6oL6=r+dW"Eڈ) 7c=\iKmomGn<Ʒ;Xw5XMcu=o[1F͎qִS{k"Y#<<<6ZmoJR6cuVu). ඖ 0+Ƈ}Kk/Ԫ 7{-ft'ޛ}immhݝߺ)ZH]1afn&RpZ4-%9SC+ձ&gYx]n랕gvS3cqQ)y%`; t4%WǤZo&'*KbHkԬ&\ɴy=_-#Y&R\]KS"MٻӮ+VUeA=xv-jkc*Kϰqܔedʓ[MKZ%ESNVp  +R݆[3 ۠x#T6͡J0cR{{62}}jͅwnQy>JuB&PNH}+Nf}Or)= -bʏ%X2tH#Żon\Ιuoug@*gޝ7m29*eoS^+ +u&)![h#)ՄTmd>u)+naɫepInX,v@d3|{T$ + J(uȻywҤ+nVlɹ.Y=Wg,Sf9{VzZ0t_.F9z~BѤk%a'Ё+ap1 .ou-3մۈgUWSqqº1dOn~qu8K߹)X0'gҥڥY !9d#$BYtMx<+ѼmdA Ǿ3jݟis\",HU<<>jvͪ]fL/\cЕc7$C-.<j&9wST4ii# F@1ׯYj3H’.܌ߊ5JthԂJp8uYҨ7~RO{EpB#qj[_Cu03@Wlj2[q#S36%7V4m~dFNZ\H<(e*B뀪qI0+wZmj!wA|5 +a+\mPG^=j赲э˞2~1+M-[RcP$.a!kˋY~w=ZWS/#H㐨p8_s]ż7KВH74U^WsxmdfÞ +ڸ/k o/@Ƕ+ETDlcGQũmxc#'ڧ2j<ݿR՝ؑ<Ŷv8ǵWӄWR5 gqڋ9-,6}}3POgqf+@267qh+5-^;Y&gZTnc9vx.ֲt{Infك qZ;e?U?4I.:QU,6}Mfhe(5Wg>Un‘oԐ{fx|Iy73JH׵#o[Z"uF*mlumbayax@-'<.ĪVǗ}Zص5JYp-}oA9ɝc`ssE&R+שb.m vC{V]Fcpgq}+#K'HI} ԆQkUzH?im+9n} 鏯8MdJV1\`1?R#E"I7ot}M%u&b;5 SۙQ̠ۯz>6D) @$4^tnt8ZWEyZ%wFySiO0 `g8Z<:3qU[F 8 X]gӚ9\vWimr \Vƫ^b~VMVemTe-9晴`GsV6ٙxsD򰏢r@_Ty0D 8>_[}]Λp°ILh~x9SM[S +xhM`ѭ%>Soǹ)Z$&ݸLx,"3FQ==_wbΑ 2i')k|[Y!KHy5^-*ugUz䑎1ZlqQ8Ks%IJouop?RmaV0k^,$Y7njD_ʳ'7F=@{|ao#fB1 j]WGeS0>vϽ>TZ#H <'{7 rF+\ %&w*ؑI+(H"!2gcpNi9"j)qeDb#s䌎T1H*i~D<>Tw6|wLR7YlxnzgvZ&t +o#@E0 TLq`_ҵ-tcImQ +i#+Xe =5Zl&~KrEm'tghDMx\ǜt"[^ *og?Xňcݽwt#8Wmn|A;4_{jd sAw_mVRwW-m6n'-OPUe0YK'\sR͏))[}ɴ[۞ZZ\7wVP 8"=1Ȫa r=>T>oض6 +"YuA#8sALrnWaEPHQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE"C$(j֞r橫}#j @C *sjrZen7n 9Tf4k,0GxmC9}vcEB딛<lJyH1UXڨˎD` P3|RC&KWk}I!}q(d߇I'֥PSr?ڗ6rb";'皝TMbԝ#$r;6(78кjz?C:EYf~R8Zf̏##t%Qb85RYWBdb)EpǐGMެAAi zznqCqrDWUۏ\U)^־$ octj#g2v7TmmL IG# jlhk%ucm8i#*p9V d9iB _ƇV٭̂bs?5miUo0¨:`U<8]~Ο/6hV]*9 =Z1GdE]H8N8(1Ҽjd?3F~ԍ;VЂI?7AJmG&ЗL`ܮ6'Rvsj\%H=1ZCtBTrF});\ܩtbKp@Cf61; !X哾+WRB7sYlsR曽Bǟ>3 R\Bd)8\!D?4p3F#8#Ec# +›I%|h)u(\5瘀 U! a{KrḊULs=+?S0ն~H.XG)XI.H!F3Q"ѶN0qmx Ur܁؈NE~DRD aܰM;,vzTKF9POUL͝ϥ &N +-*F&NRP'T-7[v#iQv)Ĺ`U@=+'I'yٓx5yD/.ĎHIY.i-<ʠ;˒M*:w/' Y-@ܞfӏ֚mL%n]^OG?Qg};ۤ~dqo#V#gn][/.=6wOaTYkmܧ կJNр÷sA zbK3$3gӽW*1,]&.DsgYN?Mm%"hIac''RFѝWCaE8\u"`N\ Se=K nd@fSNhS!$nqSk)u+o$K#7:sZZmWL,egS/_FoQӁӿt/ggx= + 2N# Aoj]^ApcN;wj ND2gdք*.G|T(#?-f{c/=p1MȌ]XU$n:Uy։k N{cKzJftA+DX'+^FtEP@F;C-D쮤_q,ֈ1sgpL}Bas2v=:[Tr/plbhVIG,9NhSGeDڑɕoI鎕\)!KyB@Y3Uv]ϲ'ӭ"[C<>\7:R).]a-G6!JE;^,HmICڤZ;dɟ5G檥1 qz +S7N)Hy$ fU~@r1T6ܼ E+-#m;e Z5(pzs?4fw3K3i[vwsTK(=1֤;po@!۷;ҩEy(Es֖]NG6KAl)rBd'ZZݴQܻ(A9民]RzT#w"0bp}hBUu=Lh_jڏl$ ^Fڗk6VNwF,l1ѩ[S_jWb !1Zך-;ύ"; x62V1,,m\}y437lͩ4=]f[xԨ9Q8ߐ~%5c}ZKKx Dj>}vwk MO+w.[MkD/eL1T5ys#m613:ۉʖP2a}~vK%Κ_&ۤgkvHET\lv<׊M"c͑d8}io-Os1 V3/8o^z``UKX6=T'n-ӯLR#![9vBiL0~<99j;"xēc^h{yf zUxULg##id+fw[ FN/OvC)!n(mIjo˅䏠QQ_Kd쫑fGO+F3vhQcB.Jk$dmiO[iE>䛾@p2GCJY_ۤX2>m.PkՌ|n9ƟlcV@{o:UhrGkz݌]mCX/8֋6J0[mݫcT%" + TxuǑ;OjѾi I$YYBA=zҗ.UE$Wh.wZrE"Õ8XRV-n\7VjD4-Lkp~,۸v'o-H+61$:|WK<5AǾh\i-m5 hhSnI2.JJʚ +ozeyʹu*Hb'5Vfjqz= (-ᱸdN{ߜqKPU0KwHN'#^Yo x!pGS%_~9<i_M&q4li[,xyԈD#j]An,nX7 o6g ֖\n Д})ni;h[\Mɾ]F ! jVXF$mtn ?_zs].{O N&i2x%qFm<؉#` qS%ir(ŞCisp!F ?;yaU +qڞk廱Ӵk .W3!53/lGy#+>[o38I{IpM#c 88shUN\}ii!8WjAVǶc *`#'< +Km+ӌi^Gc\VqNY^ڍ+}Bٰy%N&qcn^AZd"W9U\cdmk;ҨHgnTg 1aBRe)GK+yKG`lppGӽU}ܿF8Kdn:P[٘&]օ N2&  =;WUdBN#2_Yc1% ~dž'Hfmw=>M'g$mo!AP}Հ$3r \{sҩ"I0Veig՗ʬ"=1̼ľGl[_)gOjĶ=bߦ}3E\+2(sSM]fdM/2X۵6doLó9a}+Fk/D{tX~͜-*~eTOtbpq4rue{h+<ǀ<b{dڣuӦ* Lm̽C=U9.%a56:UF1y 3tڲ +M.:h3<*rˑ֧dO:1t`8 q֒M:I%+]IJ7.t#&A =ǜR1SJio%?ZbnJyb'V\Q#Mk\n;*2aURೖɌc=Mjͨ;@bdPFsL'Yvm.:X*EVKGhC򫖑D{U[&ȲoQ}j{4.v=2 +si<[#񽋜ߟjjGT)s{}$O#0_OeP;fr# 5E.mh`3sy~F+ynF,?^0mo'?_R_Z."eh#98Usjt1:&A9q޵nv\R^Yݟֱͱb'qWRBFP` GJO@:QnO~EI$,2''\$ǿ8Ar7AC.)i\yRk'!;/qY/gq/w+ $r1rxfCzds !E^hsMSW0@$0<p׊4% <=A{9CSi7 0.s4UŚ$8d'w\NUewy?2;d+.sR|aSmr0]jmbC_|L-R>ͽw9wCZSwt "^ ۥGzm;BTRy yMFNR[B4w1X9<K7i;R WnSj;|>>h/S)cA錃RE&!,A³.w%bpTc +j˯̷qWGo_N8!x713Lj8.2t,{Բ݈Yy w*gn:Q >r!Fx!N+VKcW/\wjOy \ |MOJ){K;T nZ[!nF >~j[T0e]HI1RPt +#7= z?v<'qYAviI8 *( N1^tTaQt5dȲL[&dsԎjƛHoU?jrc$J O]M⛋!m;cɑTuۡ,c] X">!#8z w+&Fnj/'m Ql +I 'Z')JM Xvח:}¼32#*9QSIM<$K:Hmarι+=*쭡:v -v +3j}Bط'H?.:THE`AFY%9ϫZI[Hֳ^,0HvY2!W*NF:Vg5Hrz}ŋ9%rI +j)+5rK+ߠ&U yV^Y.yŅp9Zi;6!fÂG8#1T[G6sb +Nc8ֱlج ',iv^^,s̰ni]A% +V&b33SBhfG2H Sc7 sEpEac ܍s׵A4T=$dWE|n +Lգ7tkjiimD8;{m05IvKu2<r=OҠ2.#yyԶ:%wv>tMJ]K_㻎+| +d>r;=DmF&##Ӧ{BXu1]UJɌ{UZw_Lx$J+)%֩\ +H,f%b8`A4%;,l^6`UW=@=k"0`}i%} +ZT%cD[mYՎ1Vgk8QS2!}j{m qxQ.F@$`|L'7%ϵn6$k"WܨNGCj5w c DԺeƠQ-ɵ7FxϦksX,hFH# mFf35UP +<2zr1:3M%rw)l=EmYZj3Y7)}w3B#G;X9F:R;j_ ,ST.9=Il'2$xHt{%;(BA#95[2)`C.A?JB*>c6 m\%NEHڄ2o،UI q힃Vuƈ^CmcXtg֟"{Ԑ#*H;ԎjͽgPV c {Y A9gQ{KS٩˰fm%{ur c5Zi KJ^0{׊lt bp' ޡk)^6lpޜzU&c72(2If$8d_*\F`:ڲΡ<\I$)cH8ɭF[+S$SY cs)ȍH\<74]HOI&ΗeIUw-d'o?kDvjs3:69,q'W49t 1]\Ihcd6O11ZйM c"َOOaYj7Wp`[翥TDL]ITQsJF8Ž$-sq ebJun5MAyϡO;ٯ~8|D`g[+bTr.۸hFyuY$>KّZ{&0HvO=l-!rLIJqT-Η tRwyR<w{!HǚZS^ Hjz;%᳐vsҨZ} vpc)}5 .^@xS'aԛsdxUC)\a<տQKOTf%sߞ*j8. G{ +:h5u/o,XI|wnHq\²$ nuU}2k[~T1CR_O(oow8--d4Ml2O)9A1aB,[+)XzVE֨ UzU ưdG#oƝU*jϙlvQ̷7b4UW 9n|X]}8biܽm]woB%_xғTqfҡbw?bHDVUݏ,ki&{tGQ?.cU"v*jC-Wl83G-DEozUsqǑ S2ӡ׷ eif3^MVʧ;z%Щsmq}zP>nh [y㴂LdI'yi_(z*mJ V}8F4w+=6ˤL:Z:5z_{tXzefa_^ciokAvT}iNsMJ;1K.Y"x͹I38q5QeQ&>T{3W/WZ.ؼ(x,->cvPxXsRwM"YIt.pӟN+&#,#T;}H8E-| 08c? +"V]&pq 4y|%nk*C"0pO#Wu["sm y$gY?y\K͢3nk>nRPt䵵A{v@W)qۑUnP1ш8?N+I$8gG WPwZL`U:0I^8gp5Bk8;Jb29+WPҎ3yp9uYm$GB3䕈tIrH8"c1f/0sE3Y9rY, _!7uzR9=$KcsQEYQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE9f9ǥ\q*G'QH@Q7G# *S\}KF2wu4Y!za-apqzT;_S*-o P637$8BD .A)"|]ٲH]qqw,Y`^;'OX"9InjI;Xl38\15u%03Yq,W>CӞ`C(R8L$E"H$8+IopCt9;vrA3E #XS&pHKg-̻HiEq1EIkW۷ue +3Ш9xiͽ 9朋#`G5#_?vF:Ri)s/Bm)OJ%G-8x!9S⦎6($f܃9݉9M#>ܶ0??yk66{L,ϟA `w񎔢vU*j0˳B̑Qުthi[8皚I0]V/2%xcT3;,?AB$*1ՉvEQ0yTxmq~q9-D/%wɦڕ٩F2jՁ>^ª`y*y.L6'=*N1WYmvp2`$~A}cӚID#mrx뚙H9%+5]ÏyS0N^ 7I%lne:YȾh%9n㷃ҳnMJqMU#&X{h/!$Uݹ :T<8 Q?0v|:}([Qib^͒9L]Z|$mgL+OcLf;a6s3EVeڌ6#8MFډf@N3 W&P>ڤKiT]G26pрx~8~S8# zSJ<}%h"6xn~W߷VMn&->g;/\A‹P l6&95${#wga\z{њݦ@J99DHճ?. +km|̨h~RޖEf6+{fFz>jKKiG"Fq悞g=*deA=:ԯI*)'{OSkWwy;OXfԡ\Yr@稥 8>'<֐iChM'ғTi3sU$ln =+vV*`dV%2аcYYx>'Si4M&/,M$.˞2;)&ْuXSc'8X]4sNkiv'һT |=[vOJѹ[lgqq HXƥob`Y09sӧZd݋i@L~G <jh;{b|8 \ )mHQKg5f'Bzv۹"tZY:ݞjrGڃߵFyQ>yjViܸ;Y`gJ,!$emrJ`n;J-pWk]ɭJ v&ϙӎ*Ωdk72Hc\`=6#$Qqcf.PQ= [VmKmpON{H|kG*IRn:U$\RI\ ~jGe$1+(g{j]({41H圗#ӯ|Tw +e@d;vn>F%ƆC0/Vb3O$o3 +ϳOҔ)%IYZ\_ - e73ҕ +m<Y%| mq˟STۥPcsdG3$rE$|:ڲ;63qT]l',{HyzR#VĠ 1jgP$710ʅא}$3T1,}\{-bexOj#ģ{qVlK"wM}lڇwn8.n{;=ZiBQ%Ǔ&xwl$K"~نr~=jHmRA#]%Ӵ@]=?ZKoy$˵Ԇ2d$j嚄Οu ņGp]_ tCc *I⋻(KyYDjI GZiԌRJ󜟥[n/ m_zn6i$;GL<ҧ֢LI)y#ROM /y{rFwrKc#KM۴15jL:1rgڠPg#*J1VhG뒭vȭ=VM*}JDqG' V7 o򐭿zӸFPQ{l˷:W"*nZ$ӣ&n>٪64qj_o%GE`vpxjBNkt+©^>VΈn䳂Hn͸{ +s;@wkyD[϶N +D% PyU_)6Gjlٲ<%}9 y +$ejvM id*61ښw&Ivc`B,To4}k-W˟l.A5H"@c?1;mDE;A#itJKr;}^~`/C?WNw23%.V+%m sPg8,Ky"bUr}ӂ;Vޖyܱ}Gsqrv+H)@BdI8f]EIyF8U[k+P+14ά%+EHb)c"ŷpZ9l) GjİR #v*ńU#K覝!դk*10;EAo]ƞ Ĩ `mH+(fS1; b6s߭>Xʐ~H(ێqۿznG 621* KpVUJfFi^*) Էk$r}jXPqt5=;HQ8$֪)U! @2H46*&xzUZw3[<2˒3Z²Ls

      Kl|rXS{ؚWk/Ě ]F Ih?lÕ <zYG$r?sҳuWP"ŒxzNm_>`u|pd⫷-o^vέoe4"JNYs`<~gKS2Y?iG2ۏ`T< C5Z?Jnr{G4H09͓21lL,UBI< C5Z?E);11do& D!|8<j!6k'S/ ? +?jxk199;D <y g9dy>2[ 6v^Z?G-Oc}9r)й\U'&y/<0TP$]m8J T*ʾ:͓ +:k~wdC$~XjM+&s1f͓?ISjxk< C5€}m~>?.D5?C >mx~9'&Y;oC>T]J Հ)?z&¢]'M? UW7xš&.kא̆Bw.@aЃ&3W|;? +YVx:j~/fU "I*,5)-ɿOI$&3*#Ð?uխP) Cҁ973?SxvGϯ'H~x2?鬟UK S3XG(_.aPU]~x rv޾lUvqK4L92A<_ M:Ϋoe$Z5X3E9uQtpCsUJE+pM7B ?]H,@z]-Cr ySᇃ0#=y']uYfrCᏃl;}y^1c)SC̓ÿ .x(?Ujxk< C5‹!{Y~>{q&L`o1g8޵ |+CɽKdwR/ ? +?jxk@Ml*o?Cd⨗7Ux~0z_/ ? +v?~'`͓w? |w1ϢD2?8kT_< C5Z?J䕓O +& clUD>xNGU%XtmVHT4$s6 cz~쭱QIQao.vsנϵY}V#0mg?6fRn$O[ yedmoӇU[~W ק^1֚ktEog=%.g3p3%=2[.y74c+W `șwd?lhڄOm {=u*6/5ԋBF:uk6ry5J9Q-1ץtKj*,@$}v.y8'qUq{dp8 <穤VII<MҎ5sT #M_494e 1b['o9+*]Bk6$ +ez㯯JdQYܧx'u.oj0mS"8u:sk-? qVu|k Y?*ر&xywu՛=uoksn {}*Rfɖ}>iA.".P8׌)[s٣:=&$[IXЙu+1zҊܪܹQ۴ W#ޟcko{$y\sZm..wFٌ' 5OX#.#G|eTn{dzE76n xsۥZ[I>oh$Vm-i}.H0mȴa|p) wIti$MNM4:I'̄W\gֳ iu_ciivȕG(F: <"Fisq-$f9pǏUZH䁆x/be賂yi;iMkd^S1ZIp DRYko1ݱjKgXk#sMqujIݷ#*59b_7:ۗF13ax¹__[?d$u،2fu[|=J'1:*C./o(c(W*8sYfɓɻ(oNi$X"7'ylN޵?},q<@$:+is }CqE /LRvRIϖ/A0P ɴ R],fU#&N–ള$zdپB$reKEWXnA*s'EaI9D#g9m\LmEgǭM$Bh(@8TICdcjV5ڧO+Fu, BWf=hI ܭ@4)!"UK zR[-ЧЇc:!qM(A) }j fzVbp9U3PnG IV-92:n7n Ծa JU|KtaMu"ME'v2eeIZR5R@ǭ6K njU.jV^̷(9^WRM3K8ʎkݹr9# -)?~J橶FH1@Ic?"D+!/9&c\t1M?jC`PGLRQ'cr\iˎ)h WkUIH R3f|8⡝PZ.OR̠5Ƈ?ZP rZ9PbW_pT9T67HIԅHҰ$ sA6LnV F楘L$#߼@y⚊ybf)a) +iȩUG$AQ#Zw()6"b861|۟CtHUl\RE*ܙ==( +,Wil]9<bF(Hb*g7I۷oK(vE,e rJ6Z2D*ae&] gh,LX2Fr8u 3|V3cXsu/ aRpjy7c(flT (22匔~;s_[@6m۞v j }ڬ}VLJv7c❦LV %@6OLjֈjI1n-'#Xn$ing{@yP#oʼ*O2C!ߊ3xC@<՘)7!r1$(C* *Ôi#\!**]5b+]&ŎAĒ)BIdԚo`ō̮,3.̏rbPv䊵s-beX#s|g[ +7gOk24ïiw(p>..f劷Y^tif'RG>y3`7|P?@df-zgW漎g0 Kl~?;驜V촿,g)`H Xn9v*2%\D܌lM<.L]8luE˗]̸-21AB>ܗ7 +o"\iZZ }ި^aFqqT0FN7٥,Ό(\yJ}Ri`X(XiR\98jrQCmnmz ߌצ=k!«|UiYix\ Woz *"mJlB3ydq\<)g56-MN[3ܚsK+b`Y$l5Ĭr*uUB*=r?L 941)>`x¢ެIUM4# )Ozn#v'9Z%/uškhŲi q~y73>SbAJ]Qm8q}{6p6>ޮ*-Y4egYocCUztrO%",;xm$E bͨJ0FG-*)'b6)Yԛ1=o0~%3-,ec}(|zԺl(c[4 /̣ Im\޽X1)"d51$pɳ7wVr;S̭yvWV8lLnT3xƊ[Bgn h̑ڢH\Bo=ϼxc[Ql'Ͻ=w%Ҝx5{geyRi\l҈yzqJ.uʹd *hdExخNYtm;8$U4006"qI\ҝY(,Ef1$ l뷶(QF隻ih2 pHަ:I+صgKU*̪3ۙ(*<}i|7:$ﻫm}*KfɕHF)HeL]0Vwi ^nUVWsJt@壘BA L89iI^J%y#߆/L`cK]ѺFsn#>x}ibcRQwFA}K&(m݌u4G1ۏ9>3AJo+' ڏ5ZٻD;ݞ5>kFQbc4z)4B6OΒlƛeE R1~*Ϧ43lW N3Ywџ7LqS57[cf8aI!.^e*F*̈́]L$|q>`G-!qLU_|,))$)NMhST҈d';fI'8դv +e9G"]&ԍXg?{'UiV9Gm|}*K%`\aAjM*#_oҝۢ\$v預BBݹ}2jgQ.gm4, `cIZ9*c +9O@f$*/[֎KJyvtvJʔ_qNS]µ#h,WiOo썁 <­j^sOX[͛]#>nVPš|pHT2L,01*323(g$)۽4Lq_[wV'1~~\XЭ#R>nG%3yy}BMg1'ևɧ(BԒXP1 2P[^8lw4I$X8WFmFcue'3CveA9E.k -崱U8ߵFA?Z|imhXۆеd9{>'|$HcJ[NX9Gٓa9^Gqđ-(Mt$RKF^T/8M9h7vmQp.ǧ\(MKX#OˌfDI62\֔EA֍U39&Vڬ)I#?7Jr0{+OeaøVtE濖BĎOngm:Nӭ\Ap0r0ΝSYl+'wG֤ա+Sl2O$zm vڀ}֛ դSKhb#92VKbnU m6#d|(0W-PjMYFʅbyk2iVc1SF@ ɇ2`NZӻ+=>t_j=FqTmMΛ<1Qݻ;9n|HA]āǥ&d Bk3y:yzT_p\<5<7C$o$49۶[{F{?Rs Qp1 KU1ܲ0#`CD +;NGJ^V 䒤lq㧭9ln`*ؑ7`>ἌB2qHݲ`r}<jw{3 +k洸Dvm)%Ԛu ; @19$kkuVC8e?/o'MK]M%jآKDS5wQK/$< Ó^[V[͚G҆P+nQJK C{U'3E̲.$0BD'yy;NퟭD9=zl\JZ;a{ ƒ*i"…F+CLwkB@iYNC55@`yz47wq›9]$8eZͥ7&}fѷf1OT)Fx!BT2nl +nVfP #fI (`ayNQk~lip3Ҵ4HK6QH_/h^}2dzѻںѣ*8).q[ d">Fqn&c,fne?RY"eM;So?!%)M-Vw ,{W3otes6zT^c[+ _ί#FD Lޞȏ{٢RKa@P+j9⺋_-ȑܮ=wIK(K$Roެqc֥ME%Pi tUgv<'F'T>ZŸZ9Bs;7̬Tm4!YӜ]a9ZVgIi2'-&@8 ,ɠ$0q&v*`qQ(De(V6e*r0l]kf!``G{S~ԑ,{:%+^Xh($6T&QTu"ivIE@$zUY'cqx9%}N:$^kjeHKRE2s=uBdCE¤RH6QҰyxVЏOUiZxܤ>cPD@t:[U"R0;.tބ:sؒ'Cr6, }Qͧ<_l P@\wϽ;rOjIt{r0BJlzdIsKUՕ>f+ܲnNCd{)4<Lcm>&iP*XVy#[hS0i=K^`r~Jwfq\ddA"BUc%e_UMkY P+[.nCL\'ޓ4Yhދ93\;>~y 1N0~JCkwmӥ^6aHBAyA6շvhHzK^2g^spьqQJZR\JBlJܾ~m${G^30 ByxW"J9X'pWHhr?iG z+wjtK{YBa?U|aE} +,'hW_l4*гc|_YOW B͏Ƽ{߄ YhopY4L%17y#_qb﯄4/tC}j_W<B¸W +W/Pu={|w2 6ͻѯ>>P!F>>P!Fª\69-dLu`Lᤐ 8<]#"65s&fg2l\n8.QɧIm*D (?J+iqxU7 qqߜ_L9NOƣҬwRs5F`dbJJ1`5RŖ}j(݁Fg3huMEK58i>{G}?=Pݫ@* Bh.#Kl=Kw'9?犚yR4qfi۝eX\H2JDd[g)S,#x֒9B%t{~P +:ȼ`54_wz)inLplpē8h O<|-m"{m@Cu0zo 7dt_pqxE) Q 6{SK2K*n &k\j qz5*]4!,}O\fynӓ7oṴhb?"Xk-+{6.}+$Yy{V$ yt?la29vjfRj;VOF2)`k:2b3+ %P`π;qMCOkխ6),8q4X>I <{43mǶjpK-0q֛ "#^M RHI)42C pOjcIaE%LӮ 8mJgA׆]ǯDƂW%ED͂}kv8* N+_A>v,M"8ԷEG4vIm@OAWg,JD ֜v۬PǙ|qWDٶ*>6pFsM"# OmʨH2jw&8$NUֿ֭$e 8VviT:!AޚW35뱡{KY EBチYR5ck܁ޫh@c?Z_/>I,\}:դ*j4侼i#ZcÓ3瓁' A.#[Y(C(qW {nX@]Ļc80vJ$H=A;2dH#/#gTs9IUa)./QQE +( +( +( +( +( +(XxH \m&uX%h1ޤmFv:drKE\K]}犪)Q@kqQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +($1}AH+`sqIS-<֖]^P֩@O8B8*F'~3VSpK +O[#h)[n?w qVv*yԢd9E`゙⳧^ d8O qTӡSr[̆r#I9#޳hذmKs'+啌Fϼq # M)ͧq @Lm#ڿۚB5}E"D1:P&~DDOyo&2O?t2 {UWYWV5j*rh\ 08U82*X̖6zU#4ݬ:!RXc'u Sd`p+2DN ]v*aa˃ݝ^OzIuѩ[^ 2˃ };U,IKB"Pn#WTDXas֦\TQԻ⫹4l*8RO0}!>a0~c4-H)ۇh̒|HG̓Ƕ*8VepX=jX ;aJZYmI^:qo3]\|-5EIp[(|]+E棒51$ +{֒A-o@ (AM%K H%;T8iȔFTB"Vem*t,8X6?O†87t.'r +Λ#,Ͱd3UAcvs֐YL۳4fg6:d9|vad,vʎp9`zVlԌnbH Np:Ikn}ÌS3皢Y*JoB'Ӓ{;7TDʎ@jqʊ_z}EbPosO_>inX 3p?KLy\#p  T`4X6?1L-2҅<\Յ zԷm #II4EYD/5YR,ø@ѐ63L|x,,WBy9qM]hdxv[oϑX4FWww(^ZciUA|0Ց)hV眊7d;ӆo4 nx[̐ߜsT{,TD WCwfbfr2ID2JljY.&"F\0b\n rb6¦Roo,,f +@ hg.m,]y -%`[ YPB+8浵Eӆd$;7dg 5{IJ֥.hbiVUN6^*-0. ?U.MvRI2eBX֠Pa(dҟ喍^j5DcQ;cڶ`{Mx]ݤ +sϽb޽ʛ@ZmBqF cCWf㾭2 y`9 8Yhy0-\RϬQiq3ڥ&dDZ-˴.hdhK 0E2+1v+rz[o<Ȏ^L*sSy1ʷJc7湗!"cH;sߟήN=&?QU1Ie D?lԌ SF]j0Ć21;vLGkRH2gR#rzMAu8̇է$z=y~XidԚlDyҔS'CJ7y,@ +yZV$l2# ?*i +F/+b$J糝?= p>lgVݱEP #<ջKxݹ_jmM%iZKRSk9,~a< 8k˼FK%»bB7qZ S*)U/JI(s*f8ԎH6*{YdKG-rH+VR6A xUn>o2mq#Iv4R|XhUXRL).3`}Z}=7 }zSdT>ѷҥ+-ȈW 󪻹\mJ:p򫚎ףlP#+'0=j)Y9L~WeqJ{c5+c=9U/3)BfNئ48 +<")I"^$cV 6Hmq}}$[x PÁVSvH{G-m-mȦO'8˻3ΊX w^>KRңF€`z,_5Cxȥ_4\DXCdR _߷x*+{ +]Q>^?,[ٴ%^cG=qUŦzlX;D鷿xf61|6)1N/GWxْ@;ޕZTF7i+Sl*m6ylG3}q8.HlWqң[*^⧂8mBGFǿ֨]FoVgCuZ]OK컶$:@*9T/6] ld㿽ܺA ʖI%ڣ*Ko/c޷o4l1VMys=\׿rh&Ytk2 Lz[E{ܓ]_J͛Y)cYGj̏Ow +0Fx4i&Mt*Eq6|'}lZ mNPA2~3:T%p-&&mǦ)XǒNM[BBFsӷdQ"]l?(t߲ڼATq2LVeэ021L q)rܵUS4$]Nn.;N;c!ӘBnT3+>zf6&Ϧx늿k$gd?ON59%m Rev[{Qa{hl{zK띑= +q9iTVWK!%\3I#ZvA%0 13OEk76 9Y.ʓ'񫳙Ε enlh1-Vdgz鞾:.c]b3i-@}ࠌ?Jx"R +ŗ+.M+Vdz1E[vEПVrywF.hĪx9nbɣo-;|܃*c 68uiC<zdgUnu].ǂP#g<)**5&y={Ҭ_EڨYl2x:fQ|rYqOlK0&X́ۊ}pC<MoR:nv.;~ 95F -[ 8X89S\ŅqY)tCs a*Ǟ2{YIXO&RcޜcR{$d +O̓yPiӜy+ڮ^^[Z} th*s32 @ќ>T1 yJcNIqe;۩SҴ,ELo)'eʹľj1G`M)jrWc2pj;@h d`;dqW,< #(`5cSV؂(&b7&y6'hjQpZSSN\`( +=*Ƣ-moa1Uk%c0[che*-CdBE qPei'A>X9:Pܪ;\?}22aՖFXp@=D'w&SIEU\[Wi7>s]/ #޲"M\"@t]ol>3^sN{"r"tA㱧rġ#.2ztA|,Y8#=i--EwOq+$s[5՗O8h,3X`9< qV$l4cu?{ڍ Z-Aji]_Ia 8G`H9" SU_y=Z(OZ 8+E~'UG##`|H?j=nxJ#_g +x{5}yK7[uP&5,Ok?ᦿQʗj?}ak +w +>%|Ceg&o<9v*¿*r6wVnhBʅIUJ#@g׉ioח)#b˶5N׶Q@Bc{ n{xΪ"Bv?Z4fP߲G?n}'@Z#/Nޖ4\(8*Zm%։@-뜊iک"|hu Oمy|n߹: +;ώ/|>U֭m.̬bҀ(xj#[?#8ݿsM_(KU:[+Z7102sNOJƀ=g՛|>b~mqgWWڢi7}ۃcsf^?/W63ijixE,5ϲ7JudG*_Fݍ l諓F$ +͠x?. 1zPخ~-LO$?ͷvFgOkٟ`k]iO9ݜ}>5EykcwwG|߳_f+LTֵ7J_^El$7@s55|?x~ÚVVK#۰TQ"I_^PEL,$l$j0鍦; bOHp`^e$־"Myhw%2Z|+>*Ԯ5m,v# @ͽN{P#_rf﯄5u?C4GE]`O^}q|5CZx d1[߳GE]`O^SI1@o /gB??X_*P}(?fuO?fuO4 .ċE pFFLVLѩK}3qPa1t;IwS[FN8#kGgXpx+qttn)ޫYCRL.m1)uV s;AW/"y`G̹P:wЩSp5HGiB. +=F9ʁhWZ-'HK`iCsþk>H>\u=Su"ݦ +Zi9̎ 1YE 0dmJl`#umpC-ދsV/,Ĭ Xm۰O ! d|5ty-fI u<7!;T2#(Y*Ix11jHK1ӃUnRI<. 0^8zԣV']nL)TfoH?ZXV1ŝB)dv9RLZJiQ?4ca)rjKtC H̠+Nr䈣r{*#'7wSQRMAUBmidYIM5Q_b& m<ۿht.NS{;F.Po($j N5ì 6wu^^i +f=#$>]pP04=)]"# Yk1ijEsZ,؅V?6};<+h\pNwIJ| ])p-'ڥH%\`g֝-#mE<-2sO 2g BM&ާ7:D#fṉ̷܎pGA"&Fa+8ZeϷlp@c>5jKo#G=L]b2a[Ă;nYXԑOMfM̎?7ۃS}1L3l + ++=M.Dc 'zPdvdk +&)q}ۋU]RI}V&n1sڴWTWRofZH`MvۨK|PS\S|FI/|zOV?NG,+ EPHQEQEQEU7M}E +Bc'jKp. (sںXP޼qpt<ʊcFg5j!. wM0G'pJ.-~ȣol{UK 0GsN$JvxQ3Ҕ.DrN+23('T9X6G8%Qž5i5PE!M6+*9)V\Y|;X21S&zɨ-fyfmrRvU[I;VM{ˎ8%JqO_ȩ |˻sj]<@8L$NBqگHlbwLx^f^:XIb=st,Z#AӭRM!q֮y&m?Q(4Xpɉdgq~M E".{^i82gJ^LԪv0xM;5~XT;IOI>NhV,Ѳڭ]jTZ~x<@g\6Ёh y9JJ4#+c>^>$:09ݎnEO 1몕bkebh6W,-l6#VHbxqS-6Uq9q`Hy7fLiA[rw wSW'x9r݀˃͎yzTe2֩i;ŵo"7ڕ©#w5f4+ `z"@kɰPTnzы0FoP#;y4]/m9NeY Uڥy泹r%)ݤVQFVM15bI{ B15?-^nVT +- +ۋ9}V|˞8wv]5/ȜL$hXf*gܶ!IH́8aYd`+Kf];qP¡56fΤ4Ij)Hy=@"Cn4ϗk(*Hh1/ +AZՑ DxzK'$AV!-;eiiozib{^WJXbQ;AR9nX䞕靂i8kocJ؈užKH⬉ gc1qT!~IX>00e:TH3۽5dA1𻊯5i`yPc栅 Br`AxjI_?*M+c>) %03NtJ-:WԮTz\i\,V*GsQ90J˻gԻo-)NO\S.dҌ +px=jgc/cr/iTXu3ϵ[JZ! +{]3Os5FX=MKo.(/>SǰW|A}֑%T{ +܋Uݧ&IQ'w<ڲ4. Qx\dZMc`1GLkO\$EY7+ITW;܁:_)ػYTnPm|?y6Ȯ-Xnʨ^1ެ %ӗ#^;Êy6݃q*IC:~>$eIXJv]EvIlaVێ `SRib0|gx>nZw,?n93O.o#d+ #mI-#c=XOzӚEԭ.4S#&P]b1VESl3M4vM1NzRjyIDV.r1uԘVJ-E[$whv2T>[٤U?9wo2n i⍐ۖG!6ۏƒWԮ-⋍ ׎{0Y_d*[r>R=/K'gJyyqMhg8Jܿmo5JOlU!7˸*ތgQ(fl3|9ҤsI.fcǧzݐOI\/e/HNcJi-Fc+Sˤͧ3KX/zoR7W ,zqSf)Rg!p 3ҙɌ*a^2NqNUWnX{Us;\T.\>_ePpQԯtlG*\q![X$"1og&/' &/1քݵ*qI.yQ;U|\ڷs,@`F +ȈzzE.-`]9|v?O횦c?i#\SpZN\jf[O̤OhJ<̽s%\]sCi1CdH47VwzjlUIne|';B>lW1֦{m(Iwsenrh$8![9>M͛>lvsJî:T7S G&K֬6~>7d34`Ǽx*ɂ0+h^ݙ.1,y\暲܇QvCsd4+n֣vq>"42۳Q 87^*yg3d>$1aq +[+8ێZoQA(6m3yRB#%Lsү._$\`}5X9psr)+>Tt"F +RmG*Xg#n$DAPMUcKyrznoj`׷n +mt_zCi;I\)YmHy#]"rHK#U#/7 +Hǵ;G*rmyw1eQ򎟕Zl J\G8in>ӂ@*SEuqXH-aJ4؎a5oٷ#oQ,8!N=!YnKClYHn Q`1Su{r&,df78 K-9N:c:pZO ܨgh6{w%fgm͒=>=QP\͒KEEdk>kcC)aV)mf8ǧjpa I;:njױwEBͳPN3W4uNySF"BulzS)Ldg>V!%+ K[I0NXu1ߦj1[^:r:4^ɽm5o*6ߌQY]rJA={֚(v]Ӭk$XaR5iH͜ n[>geQ&9=F9ǥen|Y'9 +EREyou8Haw5B;I!}*n=E(Lv +F<3ן](ͷ$򴘑6ylo ǝbyjݺ˲9a9Fk珛Mw9iH` ɤ֦. r!tG#HsLѦ`P$֬G,Pi2<>Tq7&C1ϧ^>6øU_voʱ 6=涘;cc, +Oz}AF*Y%*ىTrR",y8K'_+̎M\6ڬؼLf=njt_,{jWM)V2/|IT-?iRWo5,<ͻW=1YO 38鞔#*ijlM6 +m~@>Ց #˃~3][u#g ?IԺs ܬCR]ܾ%dQ]I#n^u5^+"CrIdY1J<{P8}M^ւ\TV`,$s뎼BxLL'- +sv#`h1Dkg/QKؤvUF wv&c+ 9M^vY}[WQT wgڋPnۗcV{ŏ AJƸ|oea#]yQ\V끌OL{Y^H%9h{RƻI=YMo/T8?JOij;b dBȌT(c{̒yݸty}4.s }0v}}G_tZ)۵wvj[\l%`7N]2C9=g9&FQ"ǐ[8Oij߸u_> -6%`v|c(qٻv*1DdpߍXg!\3׎[W6 }N%c13CVgT&eH m )$U,3T .ñ+5u!C{:n5!Ƭ@[hMtڔR!X@YHΡMg0gx= ȭcƥAʪ[E+ BRks)SdͫFU9@ uU C+a ocNqX_'3׏J/ Q6 +YG*wz݆nPKi Ke$q1` qzm`iZGiƜSK3,"d,>PqJv 4=#pGh=DoBcr*z榕(ӔHLl-1'<G8hbB8]^i4iSb,̠;q()+5ܹI0,O~uf4ēog?2c횋$l ͖qMrN +vDwvDb>A!OZ~e 8|ORu)hp\rB}*ݰ IZfV;8"HcF5b{zmqe#+yե"q'3Cj mV2mb§-?f4s#砦6Y% ~01P^<" 4-먳T>β0b[먊oF ջ[1-]7ˁ x=b_@=heo%yRn!$cڜˇܤ%̎Ӊ@ҖX +Kɂ1wz0^ܪd!rkSNyQ"]C QeI3yj@TཞPuodb3Yex[yZCK)^ "^Kw㯽-ڎӺ@s$᷒V=6)9yK9)_S*Iz^hr8_Fϯ>P}k?Bo/]G)>#^ +(>W$?7?JK=^_A$пa?/ W#_qb+-WRѮxW~Q_ CI[?vC$uZOJ#Y>$fخߵ ~R?rN0 7R(5 v)ҊcG 1~hzg?[W<}C?&Sڑ ޿xk4K9 k)٧wcx}ߠȽפ_ +^:8" jʏ?|YZ^]Ay])Qp8u6~1E|'אlG*}izƛ>vK$s\)й M|9`]EV-t>! By4QEQEW:}a_ u=zGO%!Cy X?פ|T_?PQE|8C +q%'ßB|aSJ!_g?x_:z'_G_:z'_GVovbSJ`I³,li"h^+9a{Pw|GcK;ynYU䝞;H'WM1*1֕>ҭfd`0Ϩ˩hn@r}V]ng*gi? Ƒ%̛Vmw,$B@=3ޟ}AGRx|ndգ)jLtb(\ + m +Ӿy5\_ Q-m$605[QCQmd#`䲂9#{R5QI=:[YYP>qf;=QN29wOi{O<<3qhěO`0cr\pAc.W}ñu=֖ūdA>ZvCubH=i2ݽٳ +Ggū)g2+HxdHc-$ffr8mԊʧ2}&(底$ eJn^hR)sP0N;d3G +7$³}x$E[vlAz{U$cRsTM^mE6@+؎%B7I6W96115y_xcy*1J@}1!]?N:;%;K[{VfL3!Ǵ95tZ{{ iq;iڞ_: +yJe:Z&gleynx3o;4e4sfk{vWf?\ּ]V0\7UL )߻>aWsQCiem?,ǯXw:BAڃ:|4)WQ8e!Y`X]Ք1^:r>qw~eg; < +I˒K,qGkF5[caw'w"ZJ\Cc.sC߇\դ{۳,K:'z~dC !h` 6xW= MlںeVą'=xcV܍Sa5-I4jXT֝DC1Brqf :B9?>@ +O9#Er;5km݃U 3TYO2Ij \yyܨFJ9$К#8ri@#\9Q-]qj%K(c.NH'T;EyKc̻{Ґ;m*xmxFx5#"h H܆4j--ڣ|Ǩְlr8Nh-AW[9<UF^F()\km7vHwgҤ%HrqϽQ%gJi\pjƢACZU*n[3_iJcvs;>Pi#0mOZ[m\P~\Vfh.zZ:m/GC$(6JOo{%ER 6?R,6\sTXF7\RdKyfiM`&jÜs֭EmY*0Μ[(Wwҕ5pK=2rBApG0*)k-;1*!qp#%b~m-\3P29'(Jsc5DZyL덣<,PF'x9۳x,Jݍ}IШ}۬Hgbqi]X #0#(@Vw|$ +c %{.Q&JQc@0@I/oHڪ1Myy+Y>˵هF:O¥e&OĬ~w'B@irZz5c>k%rT"cW#v;ǯ5h$O$q&Xch\M})PFqTf`O+Pu ;YF9S]AMm":n2:ȫPbDfZ+B:X}|+EnDO G~҆'MEkYݶRW`JoB҆2XԬ8) srE8LegyڻIVU'կaO.16yZehl +7Ci*RrV~R_2&)qe|Soª9vv7ղ7-Ynqm[: w/oo*MNdV*n7nbЗ㜾3TQHYWpeR+3U]Ż.n#r܊gq<$[>kK9EJ] b +'S~wʼ0y>CtEIk.Le8mqpGS:PѶEzɲ>S5 ؞I^{*PjSK ڪ .% ,hzX%kv21NuӍ4$fޟ}3@r9鰚ɞT9R*\jQ+4E㻞:nU{zngn 9"a؜c󪷖7AOs)=.<Yd]yUnѭZrM-QE⺙b$fyWݜ*qdrp#_j. ^ Vl*d3Z dgcV9sתWH咅Y4{oxn,gumg|Zjy +Y>JɶY̷ Ř1R:)QzsƐד?Ş5աdžM/'\NL玕o*!HyoNԟjRˎAl7P}_2"HAJm|[r=i`ӮMm0c's3=HlCm+ɪyrG k_U/V=FڀGPILR/G T#h2&f<$ +&"I<óޟ !T luRAJ/i)ygvrÐ;ɡ[U%+Ǘ]>E2=ѻk(,fC:8]ךm}oҡ2[4YT%AF85㲢02:ϨI0!x(?ΫoSB-CQI*91Ye 'ɨIwo( >XݎJunL?x@g=Vխ:p7e^I;lGϴ*ǹr t xWuR@֕B6ź=:_65 .0ZUl`_fiuA* !Z-Yji\]#[;I`'5,v2$bm笠bIc.<$ 3Im~2azڕnR2d/]kLKnEo߿9cQdgo9`Te.@ 6@dD=0?B3>,2(d0qU=n"..o,ŽUON Ճ|0jZ6{s.KlхO9e9ih.W4֒-*9?6/)>np{qSZY4,[uBԌʥ&("rX/rO^iR8Ʉ?δ~Nx=%TNC,?7 Ԋ~@qzyu ky"kd:pϦjjs2pU3U)6yhQ]Ick^*VR}6C}ukT`s &!2${{QkjFnZVKSˎNEN8)%;2^Z[Қvq.#ZX)nm敺\eY#cc hQG.p<'|%X棊hmC튛ِ:UY1|SnmafHwR]Z4*.4;8cuR^dWsFGOj $۾ši*=cҖy61ӎ&ܔU5_q{U+‘+HN7gq֝R +?-..g~>X{YYy g=? +)&~*y'ձG-%U14f湖fӌ0zbi,O 16HMp-(*/m;:mM= o.GWolc~~csT}q8^HyۓåMYd ^{V2F:LD}$won6dnʰ.[]P?'Rՙ\SRā#?'Fz~?Zc]^Ec,06c.m$Bcg9cpAQԋN{s)ݵGjԓϐg?bqayV$ t+adȣiaU+&@mmY2m$J%f ۦ}i+[{.6G?2qQU{ʣO$B)7-`uj̺<ī ´9DCLmb@r^su]F-7#ǽ%{R4O wUXWեwo,3tN[xcl/?IZ[Ōl]`˹b#֏l%gʜms*^b[ d+{Yw$0ʧuǿJтۤ@ǔ[N*]ަ}3bm*}ZjVt*@u1%2GuygxNjޙGkz|s*LjBHXʞJaژk8WLzm+={{}J`6߽ד:Q%(Y$02z?*is<߽~#>\uG]ܛl Ī*|=(WR^Gٷ!WsqY:MyN#qFrFyۓֳ/CH\oAIGjd;y0Sf:5IJŝFwl_pzaY~@@튫خ#[&>Ry8v7qˇisӭK.\ZaePǨ8Skf2n91Yb$W~C `Z8$sq섹שB;6Ҙcr;R71]6.9qOiwݏ4AvB6擰Cj۩fi`I"b߼}Ns;F@T(Ms?ó9UY=#գ9=`%! d]kmnEIvYdʞAZ]Y.˸ q;~5-&ˌ+H?|*ʙms%kPZ<0*M0鋈 @a{~U&&Ť\owrxU%gnp{n'鶸qtU{vЋq*D@rG~+ZKf->'~CϧOJ< 'J\ܷKDfuq#]t +n 9!h ROj#dߝT!&Yv)9.0jMFJsw$TqZ6Y<JZOԹh4,iw< uOu5RI,s(,d< +"E9oLΧxIދقU-G:3' i[۴χ2eq+h#Tp!U=HnA3x~?v AukcԀN5s KJ$&I,EQ+!sx%˪[,ew|OjWy$Ҩr<jkKtH9.9cs>=;YeXXzz^[C+9֌_zA eC{\t`[$w6iң:0R~} V!4BsQjȐѪ1DnN2XixV3 \m̓!vniN rq`Pv锯t%v$A[[Z}~]тp3> p G^]I)}_4~?9i?ڏ_KZOǔp +x{5}|W O: w@0UQ'_^Y4 hU^׼Y7O2$M ֲ?᛼IA+0i_ g`ҿ6?n'tO&fgJk, W4Y4 h/o^s,rixn'tO&fgJk?GA[O?᛼IA+ +״iZƫ Ls9p+c 4ohЯ>*P}+?_N9%"I]xCa??:>pa??:>> HzTq⠺bԤA*W9߻?Y֠3'pQF8, ݌`c>#լӳS`5d:UVkhc1E;C15>am,ha2Hv[ZMjx֍t⢬a\4ɦ^YZJ0P=ڪ5Owk4+ e{G3;nR699$;fsJsN=:~str>PzV662 cUao D4fY +2FN6&f$r$eU=Ά9) ՝e:|zVCe%\{ְ^k<{X$Z1< )$`=i4JMOmw%[bqj֭ogw!RI7nS?T2izPAt LHFQQÍf[j7gi ,o +Co힕ZJcUo=Bv`.8Z:Yc1>i sϰ?jңZ`办Glgҥ\|ٸQˍpwg5^+$s;SBGדڣLWuDr +-ۭgi wpg} HC5 TYGEsgaɿ̛ł>O\1SߙX1dy3^[>M&iW.lt޶$, V1ߏzm$uŠzBI"#bNpxzYζ mldEU|c=x;IN:zUk +{;Eh["oFOvWQGɜ`>MxiE;&&A6~w6a !UPc-[Zj0  ᳁拙QO}t'?!ppm9*d|3wgzV- }*t,YGRRodUKe^(JS:JQv܏q?6zujff1ڴd_^Fۆ>^Sֶ̖eϐF{g֚HIoJgq7(RfsZM U=yUt,hyp5a#v wT߿7\m.[x_0Ė(4[b1>:U7P0[Mu4ς;nM=jwKKOyZ,36}:j{v[b=L~R#Yޱh3ץo]i63jډUv}0:fC13: ޚHI)\J2q3[WS_߲z|yP6v88mVuܠdrIu>(yӏ_Ζ)B +OfKqڬW:r"4˜wsjûKk^2v},P1ZRO-+gqt_}!ԤCѷ(/a]/Sy$5Jڷ-,mm6-(P/j&G@ +J;C+^8?0<ٝMZ5,$wm܌I2-ѻN(ܹ WXk(tV^y.7%v*}iE Td/{T'S?!m-qߊGRQ[̽Rvf6nB9䞤V}tݭސH'Lq7MUŠ(fQEOg{omUϦMtZqYe)v;@s=GiVI ך} vm0Κq5ιm֐^E?}Ir8 [ڃOequIx|9 E=T_`uҲc3-ûH#ec=ņ2aeY0:PJ&zq7˝e:uJn"ioč"T,p}L̔JUFY\,Cw+sNiمQ@(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( jETJXVoYc+yFs/2(VjeU4OEbѝwޫlʰ>pFoؙ Ve19*BLtՏ*,L&o468ᴒYp*ÉQ\^7@\4Z>gǟN`^\Ġ#uR'CW|kr)?~hk!$J6ZzeܪIΧ9er3C:`FpsMJ a9$ʌd&6ldRr1Gs,;@❩TJ(Pr知]S ujrOKu/l VG5ehкSk'h ,o!`(2 >k'!1 G^}*inmv!gKh6 +§P=URmGSsީ= jE^O2H;zCJetPOz02ZK=TΈ/s:+^-Id`՛ { U('}2y[sqj|wO'Jhs'Hh0d^n4.ch1,pGON:)Hzf,id=*9L1] QދVwiXaq84: <$di3Z1 U]n(:{-&t@P%짾)wɵ>be2,.1ZVu%+1#m'۝F l U6[MÂOvɻa ެxȬ[#'cW쒒YGjVK]dH luC֣ L.IjgRtjyZ(sLZjR&Qr[Xg0d(Z(Rv9p9#-mbԋJZXbN[b};N[cܨRaU/:C!MnH.Xn`?n*40 j@ȍAt.Nо/H[xQ]B4v22wV䶎 f; z{wBCl$v2mF;=j|٥v2]G-@W'v1Ҫ!aFp@X df ږQV" \zSCe3Q+js4eo>[/Jvv6 cQ%`7-dI$>cH(9ĄqB+Ȑwޡyj3/<KsX#k@o+\8ǥ 9Yz1rDYw`> +[cԪa悬;C)yN͊3xN-SvJE) et8ԪIc'b :ƥ>̽NI"3F| H+܉ +CmPg>d!5PA0O8ߗҋY*oD]$FKʐ}x=Kdk_,0C gv,TB(z3YeFb?jsBݎGyQjM{;Y,V\Nxv=Ơ,qG=H$xآ*fB ԝGk IR1 vY-8rApNk:#_ GmI ٸ + Z4jl9&dU`18sP5m1!H=ZVQCa7QX?hnt;^BjJKK[=Lw/>kZ,W\sk[߃<5ufIqw>M[DZ|F1*VƬ*l 0185zOIDSʶ9Y])SJZ>QPGˏLl_!>b'$*k'z)n9*8 JhWLrՊoܧl./܊q#=}ǵRFUATZ餒B3r=Vh$*!x8rqs;<<U"ֺtb<N}o=ՋX9R2)r3Wn"Hԑ9fPqo]/Ȋ_joQc>ڪi֧i۲ j#ґ,@8lgŒhӀy#T"Z.q엟1͑9֨&ݻw*BդY縆X6(p[V9'f +Yj^t1 3RNŹuI#]Y' |Ԛ.$`@HmHcL~DFs޲PK1\q*nImҵF1}H pJzX1#E6^3Rm+J傜<{KfЍefYPLՒ6?$#,$?*[p9瞔IDa%-d}i4R.^&0 ]47D+S|g?-piic%qMFD evE$5Z݌cjPoA`JjlndZy"L.K>v`<[Y ޡ%ԧhls׶)CnqÑ=1\/ e9–>jSlnH6TEs=byA㡬nY9c)y.I{cm]wd Ze7xRmNN0zVv]&>^OmlObqwSG4to;g{c<ٮ{!hWb'=Oҡԥ{x|=i,&3BJڊu%)54'kVi-V\!P7I >g9 Oy(L's&>nH,mR;$ +ig9p杹nY{h* 5-;92x56ȣ*N m2>fnVGrd{rtiD(8ޙ|CvҤn|GOuN\ϖq}JrYȚ\G&cp(;.cAFYMw)H݂BKk\GCZZZE$6tFdI`r{«\<峝>Y-,DѴ+//u[NcTm돯J} FАDsehӦ52i1669ޕʔm<} mECVm@uIt>N@2>n:ҥHIqpSݬG}]2Zع-ȇOCI<IxI ă#ELrQ+ě, 3ޕCNHyq6">®яN:U8'2ZF $=*KA5_ ;p +\7yxw/͞OҫSqdS#Fm=D͝:ƛaq%%$;Շ{Kmbk5\<1jPEIDdMj_>STo`xe&c Mr:c;XUJnV:n,Gj 㹘7+'VEm k$WQK!Xq_S *6Ռ&}*lΗ8f t>Ŕzň ekXܚ-‘u#Z=]8o$`gplq՘(7$sҠHVwo:$9\H?fw=RZK4m*)0@7Jۇ ߡKϜ +8RZ-.ɌYl!qSy4քXtVm9ڨ\i%l馸pIqݽΙYACy-pVmPqapۊKSj*͢|-f6qarkWJ㷎:* >)HnF:>w9[MYn#y#A;c{ZEs RSn]q횡,q|Nyv3I5^rʓHYkIo*y('ج4e`D  +< TU}=>)J^:UJׂ6#y9x(]J8| /G3ς箫 PW> /G3ς箫 PW> /G3ς箫 PW> /G3ς箫 P:g}Ṋ]S̆Ew\.2GשP7KJo"JG`'95CZվʱ^ݐ0э}_W HzOٶf$pV#_qb>c'ŨbIk*mDP~z_e??ZPI~-i"+2$~g>߱_ hjWXmyn Txƻo^> @}ơrok߿gM:@֚v[ +eXWrH9;'M_^#ežw8yB?/6|'"|*?|]c%n4R)l6Ȥ`Ð3Eq4]#L[K>i,wX7REycieikp0:|7Z|֋ilcny?Rk;q-Ԑ;Z,^TA8lg? U5X AWZ?l?¾ пa?/ WŨbIk*mDP~z]g%PT6*0W贮q*O}?_k0/kۯ>YuO2iFp9?@)Q_S /@,Q_S /@,Q_S /@,Q_S /@G#^x3ᦃ[˫!KoC 0v4\fbl]Y'M6" M#=X,Q}Px5^'5lgk%Ky'8= +um%8ޒCynauăle}ǥX֮5Fϒuϗn18 +QB6n=ZAR; =6tx\`m3Y<5}c`ͷ +[՝ rOm)26w`Im}"32sqPtB+yv:Z Csq |4m $hݽLr) ?zm^ D 5H ҂KUJm-&OXSc_jՒvȱ߉m;XI. =m5s6uC 3׽[ȳKeTm#m;O"VN`:ԏzi+] +䤣5wK{w$$g!i#oUya2D dw&k$mo'ˑ8#j$o l@ +nW -Yq_"[ WK6;C|'OY !R=vTӤ(@ :Ei\2ĩ0#;@qhdT9ͥG Ti3My +]~Z‹;G15I/*npzo?(ToH$cWq㨋}ѬZK9'i+RHa{XĒƸ![$pc.&^,@Cιެij, s*Mmj0|Փv0v*k;- +!}};ST{h4 =:&wI7da .2CN{2M76˨^6d qJu.F1CokgJWh'!'Z!= RZ:tMj~_7QΕTvPu}h4N1AYo6 xI=7UBY=֝yۣo=M˻[hŕ^d!%F, q4۸լVc.:OK&6 +f7`xj-7N4s)6̀Sekn?etw'sEa p3jLj8xrc'?ʩыYM~IIul~T +Tmu~ eZ4vqV~KrbYe3W{qG w54tm,nX {s5%ȓlHYқ̏IY-Ɵykmskn_ݴ/ֶ֣o.7ySKST^h:ɿq0{g~tII81Nd99!Xo 8A'eW`9 ܢT7QjGbrW_j=OX_Z؞`A7ݒqUԾЫ3pX]~ϛ2R]}1% 8知lomոO短gi#A,ARUqjYK[{ ^HФ:n֒#kND9`As; +絙"V vb}"-[u)7zYqDH#eAh*ɴk  p.#8j:fEPG~1ˉnp2)uKEFP%)U4műpWӚK +YN+Ffe7Jb! BHv'8%;:GQ,JIJ㍜NtԦ]Hl@B9;qWm^kdrYR 9Xpf;$A)4J. +2]ڶ/˒sڛvsGOg2H +KLY#hneF{vޗ/Cb#HͧǴUREUoۑk;Z4v,@z +a@aa6B"WEDk'\W2tFS|{TWw2(w~'4\"+q˃'''8ߗR±_$EݞzVeр~θAӓWd>|r$f@-<%LzsM;jDXԻtX5,K ێrtTVD߽T|@EYft6qTIE͵O9ِOLBўA$rjͤ2&2foPhM$)R*m|Ƕ*k[5,Z[= WVbŀ})\eRT<֛w^#SKO+oY ,X2ӻ)Yeid@,X8~Kg? MesE,F9y,3V[i8ASk2oƋ+]]u"Y|mA,9S+q!7'JPk UcH<֒WEʧR{mlܧyޑ-ALTt4D%id*zsUđ~zwER_S#bl:HxgIfRȩ8UfЯ_ ~^>NuOAqbIÜnFky#b) 0R)R"W +~UϺ 1PKxQ +E:,LPpۏxln#j?.*WGZ!O֤{h%Yp?hM'3T5͘$֖ c,c;lwHxeB0J4ӋRߩIc;1̨NaW[ +I#qSi[<02H jk^ +ғ{iDx\wi i')p7arzy7E$+0Pc4¤c#JUu_2l`rCryߴb3=sn.du(daFP;z! y Pd] k?-Nk?ˌR8E𤲘\ytُ*]>ICpOBU!YXdbZ''$(JKxD1kBqeo=ʾ{ڝwʻ-C@H''B:TGv1ĒA4[&bTWf8֩ݒ=]\wQϿJi`.t'{bw +W:­{tt)<$ z`=xQ؀8DQ#Qfô=;UMgچ0ozu+Gdղ>KcSJOeк> Kx]l9c-Q[q9=1o˜,j =ѷktw@ҡݳ)(s0G}t lc'bI]Wm;ieXI9e}?ƶ7l:Fڍ۷6ILY+[StCGS'7sSn-,b'$q^BvR تN %zIkyUiT.1I/ᅈ;n:}dφR篽aCdH pp~S)l9Q_ [9QNU@ʫ=HT]9P8=9U#.]:ɪk"o60p9R[>@3 rq+݈$ k-mnP* gϵ$(9^(Hdp1n |{T- ,c4 ǀqުq&݅A< ٩"L&L'qZWgQ"9!\x],ǯ~Rw>acy9qrYq}E`ѠߧJ/`9|AUMZN`sV-2+\[;LyۡI$ވ %y*3Ym?9~Kqӏʡ[{*gtLx9zU7 +^rB5qWQCX/#4=E<pO(GTszƥԴɟ{n +Fvϭ>Ebgk"Hcƞ<38VyS[wCywipdnd j>=8tptH+= p +Z#fTeҙ[,S ]~En13HW9i*ӝ,SHݠ+mrv#5]k`q ZZIs1VTO_ZΞ:#n q}$Dgu)qMzSIfȣ>Zݏ\b4*_{dn:55Y/O1bԞ^ 2qv&͒bvcy3YEYoj$r8#&N*N]MmxG*דiٷ9#nb}dsjGfmϗw *jNfE4)kPkw%IFD>I5]֞S$[TEl#\e gUO2H醕LF9s7, [)*[`3z`iYA^vQ◚4IA4SxKj#,3Ү[H!gkV$1I=ؼEE8ir-wmol^ZYHvq}}>a?ʫ琵1Hlto݌ c)J,݆ׯJK˛Hokx֭iUݸdzMF4{Ot+[qk +챿s?q@zoUU\e[~$ Z˚7ӮnA8?ʴ[reL>xݼsveۧj #S.à/؇9{8crB# +7g.OHrOka "lm;`6)䑭I1m_ QZY.r"&8$Yu` + j6-+>N#]@I|~fewϙv;MỎ $7<ƧO$SmЯxa \1*?{w4\螤v!#a1UK*}Uqb8't=[\F0UAFKCJ[)A:w֏^(%IٌOs*(W_Ug,ߑQ!B%7} +P3&gKlZmZ+ʸcsP =S=6sm$||}3ODRq~Hb o+1„9CbՓZOqlW>%\<Y= )OOD9C, inO* +FVY5"ݢliUЦg?γih*e-֟k4LD{r> ܲ(Kaht;(`}EUf.Sn袂g<.Uߌ`tX[uw>T#) +r3Qns{H%Fy,+8X\eq!GLR=i)S ⡒ř2+ڳ6%(套tUkfO1s,W%NRFO䎽j僃s+F_$j$dY'?to句]6o :y)R{3RfKHo-q80=?PkJq+!$][g)#Cd}k>kB`3K"ѵ zi_c:IKq;Zf-ZVV6JlJNNӌzڨ̒:!db<,$0H/,oڅvdrM΂Ibݖ1''>`%ٴ"6D`=EMx.6g8ϧV]:Bd=SSI_"o3E*u3dyG3D~hax,i BL+R"S&t܉nPz Yɴjk?ng{0;8UuOn#g<ڱb.T5{Vk緗tXXˌ?E'gXCqy1F wq'ɪ+]1T`֘m.u}sjx[gfޒ6U"ܖwϭAn-I6AW_o[k#Ohfo1Ȼ\u= 4(oԫj_^uVT[]5~}=3֪تC=1Ϳ>@C'=U+nc%I#$q" UmneΥYn,Yb[y8=3*rG$mi#HJ̕qҵn%Fa$;cZ 繨:ZqI0ܝ4/I͘,Q4iS#sVt8"9LsUct)nNWG$/%vOMqgR:shfNp:KxLyʬ =MRC k I;u\ed2>Oz]6sV0o})_4\dd8nX;6h#jzpr%I\8;[I邘F9Nrw.=ʱBUi B63Z;7)~jɸY_,3zԤkVMS*(8((/.ᰱb[g +'> +O5xDs-)?I ?$k(^ 'G/_R(iYiiڙX>bXma1\&d5}QW0 8+W?M +V_%uF-|]Uo_YykmeEQVsk<Rƺ熵 :Ο5)hQqq%'ßB:z?^oJO?!(z?|cxX6WrKkr2+J(P^:{ +V>6eˆtr `Oj+㏌U-+z}J*[ԢӴi.o&ϗ cl« 7%%{B%}@« 7?U}E|Ixz&.hwvp̚EW$(@k6!G_ Pi|'񾷥ZvYܦT+z +K ;o+K=^(8~B=_Q<W dhw1rN<O^ ']GxW_) +>"V>!i4w2+FIt<J`?lU=CRبKy_F|8 ]|!éܿp8?̿M^$xC_a4j+yq,n mRǒtUh_$袊*ZDL'j(%'br~x9g^}Џ@~Wn-X}SLϲc. A+?z(y E3WLH4tʬb38>zX,-K)xMNA{-Du;+5kt5WVI?.F0}:5B]F-)($qۡ; v0pX#b8՛s:BGw.Q_h$u|Z?3PI+=Ut˸b\e`AFm+1q-CAuwjac,2=1J.U۹~xŲҠt!,8ҫI&ay7YN&j\t}\֚qsBܛw'iERFNGOB=@\L4p^@'9XM^oq:lsA#'ߧJ..,]>S{kSJsJhm(Br}~>, >rAN=uH fbo.Y1)1qՈ ԜNguo i:#䌀'޲X,s!2g>HJkF[̖+WKݴ j)u{KWhĘFNNuf>k >l5hRF$W;uOM`c5+H'pgQXBȈb_YCthWphCFrNq-fQ1Ch4q<6sG7y=|ڶs<Ʊ,>PA :{[$Mn+20ۖt^ڭs#=A`=N+Ѣ:6nnv攞XN:ۛks4(62rF2k +==u:z>r:gr @\w_?u)Xn9Zka<Ω{YqCN ^.WͽAG ~Wrhr$ sYiW0yC/n=h!qmJyy0&޻~Tvٰl/1[nF:֋&4\ &VF*U`VF*dmǺ\돗Ɨx܈z?ƙmҿ+C}vL| +rNsǠR$Eޙ,7m^bO7t#w$:vYuD @Ng 3O5F[f#c'tHS^E cy<~=* +vgqMbQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE[pEt#֓vnJۜU ֨O0\Y]uI"D1Z7`/̟ŞI,^\*xu>džPdnzq^κ㶗!I'qtne`ުZyf(fX)#8% ZwcbZHdeEw9 T>w?.%Ԝg9$RGޫ%{5`%P=GΞ0;Ŕs*2k%G8ʲ[福KESG'cY_I#8L֒䬂i$ct E{U-jY̧,F3m[U:6[l|~Kr^e XdgD'οn~e\[D|?6k| +\qJ(YA1.N1M2jB׾1ܬp$:t[U!:X-]<$,# 4s$tVPP +ba=*đ/ҏwn%N82O5rxYA4Wv{v` sxkebdVAJ E.ouG +@Hlt#.( *ȥp 9~S^*7:-#\csQ\6>•9j./ bPq::j9w)(u rf3af[#ng6D]UC]q)ift?qrKsn[IB@:?RȖJӪ-*ǔqNjkַNG;z bind&<E(4Tvi{j{IY%`o8kjBhI<)s'*گ9)8`2[++GR7oreY9N'44 .ZFo2آ2[yF!MBZd1Ճ 88* 0!vCݞjYUH=*Ll P@:Z\ěXn+;SG\N ;<ϟj +9au+6XgiUA9`S݋)%}IEҙK̄X G#B(xZ7$W.n͖um`3;zHΤϦ\I jh!%>Rڼ=j,)c#)F[VaE)?88ĉjm&1*`)=z*T{gefa859`o$]Y٪ΖE I.hye~=szҰ_]Jڄ5;@^jxtt<+ddx2HKܺ%ۍҞ^u-\[L"55w6@9g'ՔeS0YD+iƱ[Ȼh?A4jjxeFt9[jX>9f;X0*k(KFB9m+Ismt,ߴ}znI-abF9V)1F.ć` p8X_5Jѹ^JФҒI#,}ю;V%wtY`k +IY]F-Bpy!қqNZAv Nnc{ҶZ1Q*T$J4$uln8j7pnNN8 m=֑'r+xKXRŗ u,3Gu3sޠյ%q/ʈvz*i6X:'97d k ܶW T zfknZYe۝a{}jh\c<{iOCckʦBjd(d}W?2V\Jש f%c\HW})Y[Qϝ8DV|_G>,𪛃gF8..%cg% ϔ)+RJX" Ah||H2ƣH|5?wXd֗@nBO6\݀<}~-¡HdOʣqA6o'zc~^.h͖=`m.Y : FJԅ-obqaOW\}l8sծSk\͌@g+OG ~V!pr|9zig@I]pT#~ +N[ O'wd Vt44c)i$X7<B)yqnGq4֛sa ebU}V$1ϭbQ]jK#\>sqq֫YY$(]ّ:90j~f_1OOʟ->kKBf$h\F.^:>ճ"ɼey- lmݕdn2pxR/dhS~֓>V*_j5Ѕ@/Ns7gjܑQ[ou}9BԑqOFg.hJ͛w]'jV/r~88=楂GAdvs;{grcW䷟HH|́9=KtA-N|͆=:[{}$?k?4#d{y[i\sמI+:4n,f*Uz$]\#R?w {`րai>o;K[;yy\Fڗ/}6>h< !_1u뚥ډmͽA$gQK,~VC6g^q?,o}!xS}?tיKoHCźm*nFP4+S<ۋ.V=2@pC{Bbyr"=S鲬qd>ǯJz{||/|8J K9ϖ캱 z{}=*eo??q>V >!;G:j|Dv"&C|7I3F1Ҵ#SN/3LчfrZɳ:",(tʡ]`ANk]~C9q\I@Hhwz\22αF yfqTgh]YK'89%y|,'FM9m[O&EP7NH8?ZY#mىH$>lc҇:Fl,WtGȰ #"@zy_8 2F3N⑧3yT2RQE^w)$} +uUS}"evKdW-#M*`t椶 %FBOSKC9J.Z +l`Ԧ0=G֮i_ `s!]ֳ|x ;JWGS\W5->Td"BvAqA2iX>-[.pqץM.f&yl|cR_1gB|wg QB$ӯ7E/%8mקE+K5rkZZ"(NNi6ጋ4j\[r[It#6QVT79($PB'&{lpF)srA$Q]b%&5OM@Be7MoHsV-ഹH~`7[ ُr)ʴdNwg8P#v +v ^zUMP <.y\GңӮS7ΤcqJqzi)R+k"c߻ łY>n| (ɇL)'Al<>S%.jdXO3l,{vϯaB9VZrÛ% Ym8P'o)eXi/6^}U,F޼f} ZM-d*>~RHa"BC{X.e<&7fU;A'V|>8B'|1UV$\O4CLZeԬ_;KDH/f +sS&4mE~JY-|SD4f#%I4OR[(RY!;]N{TKw?Go-<ǥY]`ŧI]9KuAM^9cST㡜jޝb@ѧ7g88%$Sf[ǭD.l'm~In~ w}s?]ҫHˀrFOގ]7$SRy MUu`}>r[1W-F̺RiA"Fp;__j|-ZHJ2c%?Ke{5o, d^ݠEU! iߩݑPDIgZ(~KGniu-C] VU`1Ogm&d,]nOV';f_du4,+k-qox^EUүiJ`y=g&Z0/@zB(m+ 1<>kӃZ$JĐ8[8bIcolo8󑟥8_Z㝄`>:խ)46N8[w(Lı>^O= S0Ũ}Hf͑*6x<񎙫2ӣUxUkKlvTZ,!V| >OTsїC11Z6IJ*vNjwQJfwo)-6W( +] 떉W ۞*ClPb msZk#x( +)i:#ViKގ}9ݟn㝣[vZcql9 +8FoRM3)EEnu.#;d<\ƝpZ˱+h9Uja#t+(ؾgQhWքay9Ȭ;Vq֦=]E$C$2@#^ϭhk!N&Я?vN0OʋL-崝vHdg:K+C]Xy^\gmnjwǽU3ymqf?<-bQTҭ,Xn<ՙs#JӣSo>.FVTڌ UFlu#گ^GyD ٳ/STҼej7]KKk4WM*Sr"c 13l?Kq3\4pJO`GϽ;也Rս[M_&˹_8܃ +[P81{J0]ق23PeGfLٻ-\~wm",;.̲qUaӦS,s2.8қԈ%O޾uǯk}'XKLP3oayO|@-u uy,`-G!k}_~cڅդvf[FA x8|ym>.F-$Dy?0c 3,A+^>u@$i4OVF PGqY_o+ +i{ Q /yBD7BQo+ +_?<aIjuf}vj¿:m?Qvv1w D7BQo+ +M'ltE|\Gn yC8{|~RNsz#q?qm>%$>Pq'8@'T]_jڶk[pĉqʨp֛*vxf68&i_#%0RoaDdFqg& x\Vڳ$"&g1!wt/<9|=JܼWq$mʲAWw oY`Edtezí\3$gۺo!ƾK4 t)g呢}X7Rknom~-_ D MGKevd2PN:ɠϻʐxN?+}5v({(f⋂ .> SwSmxA[sM-ĭ,7wbI|e)f_hmnlnR[y;e2`Gğ0j'i''+P./Wlw#9ێ?nomOW$?5=#Jӵ 3q4Co;F\(\8>2~Y3lsv:˵.'gQE=CRة~ ‘Rkr3LKn|w +`>%Mj[@Y9σ|/x>&fY'5E|DYZ6V捻RIA8Yh_$*?-yτIsY붐46vsF4-|koŚ0Z(DD*r7Wg #Oi_Uy|w*Iu;ʽf$kwT7^0=#-dkz[hj7v C; 5J_4+On5ynG]2u?.~ϺxRu{#.\\/ 1 O_Cמ=5kBSk<p9^@-ĺ ӊݹM5J?1ϖB8}MsE"?1:ʶoczVrw}/mAMxǧ~hK+gz־qX%.7,(P# 2f\^Kw$o fT,ORyaݲ.vF2sZ776dVs٬Y,Kj.=[[7˂`d|#t\\H[F}ϙ%;ĞP +HAph$Fa~5MKuo$)?( d ӕ%Xj'.@Xv9>wlLFI|Ï-޲UEd?}K*T[LԵѴfܹ'u-uf:T $aw2NyWt!c79beX8Np:rp:sV5)M1(9 BAd,FQ_ҳQ/.|<^zEB|+7SYA!ew3 Ayvt8p6:SHdU]v{`֍ZM[ĸ@Pe]|pyb*|5DҤ2 'O#X[`?,7g[YI8Y']N-/ќe1АNq6-4{2uVP|䓁cOqe{wne!ʴNg?RguL7GPPOɴvc\1zU Ƨw _envo>[dm銣a+yD%v8K]:KmC NZ6_\uFp_s18qEj̸=aKM*Nyn.&Uc$.ҼzYRm׶'ZVSb-6..Hlxn.V3IF[F6qMnz˹{v2$sk5o`]BRp?.y}t|v?K$n>{I-6ȣ{Iz64XqޕNk̻vF|:TϷb"`{֮hu~2)(EK׫,1Gl1OZȫj[ w⴯?iܴzmh}bԧy[P(%4eT6|H7n؊ +ie?ї^r8v{Vb8.P<ջ?+I۵C=kS%r6x~cWWrgNJֻn#M: -pU8?w*/ %h I%kh֚menn=rOg߅c3vmBvA=2=lQ3ndhձ';+o8%,c`R9Uo5 V+jzrNܹ=݃I9D`r#:ZwtVŜ,>ߊ^Gpv;VRFMD3#ՈoNY`!.e,q<$vK@C%&D;)m:z {S㦇.WfxI=*;ٜS9=*=bKqHՈWdė P3{1rpLRzϗsc#WdӢmeF̛rst\9=sM7zR5K<+>S(Tofe^Iaq[ʞ:(FxFw*IZ~۵gC~ IG*gjcg{.;cfU.]Фd03SzlȂ6U>q؟OjH>dzt\bb8bHҰiq  ;]MZ'd${T4pF) DK)m\փ2:( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(:1!|_ʒ(k.82 ;>Օ&sz{I8P;Bʉ-#Y֫4)[Olb$UHZR0zfq<BG85"jQV_l%v' r|F|l㑓 ⧚tcvfF| N3D0%ut0[9ZnuH`G +j-rTZM}50ASK(ʞLカ8iYgʱ0ʧp5.0͜OBy''BYmT*;VR=sSDv,mNIRU5t( LĶᷞPY{RO0񝤨TgRMŲN*IJV[_(7#pZmG&FrJ އe݄ۂj O̓Ѫg%+KpXŷc8hnb#p_i8*q4.R˰xi'#fc< +҆Vtvjr@`cirS•98<ȇF(<;(5Wg=xU Ru#`(G+ڼB\g=ǯl‰YqydTHG(Ps;h\e]dВxaB1 U&dwr;qEҒijLb$sHIr <߹yqO,nL0 u页|}ęɬF<حf[Yg@~eDqK) +~lQmncVj;V)#Wr *|`ry.!Ne \U&1e~Y[`HxԌ9MSe ~X`:xFXĐ,aFMG\H*Fd 6ۮ*I +JxVuetn.T .zTSZGFF;ɫK,Fi"YܤA̍س.?ҝ r#E + +q-_-̒.d:6sYz[Xέk"L"}Rߤ3Gg/$m6&O6wN|(˧[I$!,qaD;@a(&ˋMLɒ9'[HnQRUKw42iT$ b}u`X=jٕPF1"VXn|F1cIhkh%Tq׷ZQ%o!rުǻn1X 6{sǥ=o`n)sGQ ! FO|~5J hXHP|9[y15=z!=`8Ю'kRZ|Eb^=“,Σ 6CimYqKIKr +{f+=+cu,$i+Jal{ɘ0ym{ 9Ȧ^m,G˜M'(EKW($tVېA,bA +>~jPDxq cg=nki}I$'79'lfk둱0FTj+X7qڝR,o,Y[+y  M?NOoZRX.<_J:Z|[2[E1fpNq+(򱓑Y:Wik=dpN=nR:QŶEB8NzӕøBN7#QbE3 ۧ:(bh@#Bσ5OB|>+DMfDasJ(4͍ź@b ,ZeND/|ߚ{LaT;ӥmR[Aj֐*T+a ;3.hɻȳ+YRv2*]JN Gp4'@>b9enS<vRj<.mzH;|e{^:W$76\A[fQ'N=jƩ*AkS* M.O@|pa9 |8jkx'Goi=rpo#p??*X_Q CO`G^=jqw#j3N-)cc-i'{)7b'ȿmď +cpSEq}Y7 ؼyrʉȫD9mgf-ʲGFGCOH$oñϙS4jS[NpxCOđ,-@T7O#Ͷ۸tJR?yxĒ«y8üFU3^ڢ4źF/R@_\VM!XGo%Bq4frK0O5BYXr6DI]#8p{9݂i+Y9YE43R2"Fmq5S$1!URYvDۼ뎜⧕f<}3I㤢u{v*d-$,K9jɧ}dyqҬ^[A pbyJgc-H*驔&:|Di +kQ9lm̷Q *2Czz͸x$v-2 k& +G^SJo\eWHwHzƯ]AyY9ٌdvWWySF^W{YB-e 1JI&B]*8#D7\}U{i%V# + PF8aӌՐdR+2=z;4/kA;‰4 +0@ӊɋ(b'%X"1]X' Y RdmsCBndqNH r#=:[ Tm-XLa[,֓iʖX7YXyXnm12NzSr9%R .FsT,#k漘"q MC{T* w>4j]ASMj](\4"g&e)M+HZWܞ?J\dv$ K[ӯJΚYvuaC) srN@O+٦YE 3jOmFx- zVٗQkyhNzYVbh~xjzEsij 1UN }kUMĜ(Zԣ3 T#y#fʒ6F5I]-*||'yErcfSATo @ɝr`1' bR\L&#x_? JqEb7NxD_{VQ@(]Kw8s֖_0Z(x9Ң10I>O]b *#_̮ӓ4m5c8Vi#tΈ azS`ݥ߇P[ eOz)4̪Pfeq3fG,krn@3T^ƲHJ0F+f#rb%4AΡ}igtoRi6pIpHz2gtgx+!Lcx֋tQ@|㞘ƊJ0.B9CHL)tn,!OT*ƓaǯZk7D,[,9z|ʲyi?vHx9?ٗ[wF~n?[{j AzZr6*cF3m7R\E8)79Q=F=4D3S6g/׌Tڥ%`I_T,%˝@ܘʓH[=~5HvO"ưqWL\B3[{Iu3N<Ja9n+bן\{31 AL}skJZltu<31ڳ"F}jm+!IpZ!yJpL`f{)js֖rK5  sԺLw;lǭiZeq ImXa'RBђX @8n䖌H`]'$>zْ<̿(j+v]"N63|R2d7 V{Eg&Y_9=7.c׽I-O=Rbi۞r1/AHDrz՟su4ҹ;_"!w!Qb ٛxŽI4+\"#w;s(dyaD@.y2~aCPۙ$E =ZֶZ +#Q߃&weMsyi#]zG\a8$1X9'Vu3Anr{nչ}22S<eS\fAH,b˅pl5%6K|\+w=8tp b2\k*7)%ʬc,33bޑm|a@b|99?)ūfRKzc4/zv&Ϋit&[OZs^ݸ+##ҝ}7>e*OVl6̻LqU-Qܣ=@n#V,7O0B˜dgElWZO՜G|L.χڞRTnB ;9ɶTvŽxUb}\x}W+c ?DphfXZ_Aosm<$T+)A{W|j# hc g;ݷv6?5;o +֯`iO@O +Ɵ+ SG&Ơ{Ok(~xCxS?7O+:(H.O 6ڶ<,K#pBkʾ>P!F +)[P? +Ɵ+ _Ox~Ӽ7NuWe`yA,\1Ѿ>Fhq[:[)⸟R|9a!\u?sB>ׯ>#I&Ѝ}_|G?MkfNmSQv+N+68⾅51(; z aWN4^ኙmYp2+ym/%R3it7+GD'MbyIbΨV[f `I4;/3I_\\(.3T(a0]6 gS*$I#N=yM{W@ifA<M{"na|oIs@@!QES" UFI'V#_qb6?\x}W+/~%<%LCZzOgy XJSʲEz|Jn":HF$ZFg}$JPGk_:z'_Gfro8!;W9~$܄fA>Jm}O#m;UIrU$1 ~n?jZO- 3Z6!'sUԷk{ =qFr" %2Dt(lך͆ɮ. [gڼs౟j[u JcA2iV6I>9;<-ۯnkMխ,Ifhc%c$OҪK"-EmbucګE5iuqh;_op9<~5Vsڱa`O0Y`pNh-P䃂x]?L:}#k!6IHQMgcoznw +`c8?5)Fөm +S76.X09j;%(MViI>GC;t{{ ʧ30\m率ZIF5e'4m6\< +bXsb@ y3WlVYtfd1ˁ'[%ǷgwZw*z4^jN09t&yctqj:* $& ^ }3OHG|7wb/9>cqOk JI y `fLTjOuke%Տ3?>]^i{GMJκ](H}Iie5  PLRrhvsO\Vj272gaM=-З)}GؘEϭSխI>wyc,+V(kfvz$PAqBc`dA=+CXntT1DW,cQShON1jsoqyhwm$SO̓W375+d8U \<qk'0IVΉ)A96vZmgBc*|0nsTQnњhPg2}.h"kԹՑ/NWqi&mdc)4IW >>~OLsy&"{nYozшU+g]=*F61Nh^$ *rɎJC+j[Y +J81h3i8+jkes[sC RKp1.nScGj `nTr{Pƥ┷rEI Ye$*F0UtyAt;YbeG[9 /a;$;eS;F:g\(d+#b[,}Jl|8Yu5NǍ?L%'mJU/^d O޹=*9vY#`m݃iw:G2H@$Kk}oeHU;%b;UOo_߻v߻_ZV*r:Z|tUy-3I8+:C_6sJ*PʡWޙio.}:@hQ( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ڵM,0;=}({B[;JHV{A(6ĂsѱN[MɢU 9Ã7X(' +x\cҫ٤|N2sJvI?u5rZ3+3$/Eu>$TR3GcaUD0GA}jلi_)ROz-v#ϴg֘PPOӯ?Jt' JM+ l$\*$Q,N89IĞXfssJNZ5ڐ5UF]G;TP7.?QK&hp9$cRZ(Mr &u"xMDxgRXtjF_4\M%.[efkc m>d=ݔ ߷Es:J&w~mۋtJvO~iq,S\XyDo fNT0Z=ed_'N~MӖH*\: +m؄b)n7fV+%HUD/ B8Ps@k0!Yb%Q,q7PޚE.0|d\T_ŝ6ki>Α#00 58XSN 2$O^^Tnv|)>GW!7˱IR2GM{~_lF6pqm*{HVY* cLX͹hm*O$Nqi{rwRC6cX`ڙ#ꤞ)..c) H~㚊Ar`"WW1gʑÎYԮnmFhۀϿM{xҜ?1'*_Sc\UH'q4p#C)qo;&Ljiuއ ټ z97O=ܟg gr !7?ΣV(y$۶$F$ z֭ۛk_9K1L)i}2Gݘniu=cvTN;{U;Բ2lg֤_gGHVGB`JΊ0m}Fe~I+|u,cvC!q|Xd  Ȁʲ`fhrluq,A<֩)qhcWI>[L5Nʼn,AԉnJU\MKt.[*èE5\.NsX 9]\c*Ihlcv0rAZ +56~5 89nesVX`ŧRn#OSҩO#:H;3dpkzUG,d4 J֕BrG Et}HNq-,y20{Un'N26M^eJv1ɮzQrr{U';.H2rxެGZCy7L5Rdَ2;\i?[Clm}w+q}sCB9s0b%rIs=k=o-vwv7+;PԬT?$*msIK'mfibӭʼ`cO0\%A 7<~45VKIFxKN޵>&bQ YA}sy楚qs-a3<Wk㽇]:*юE*})vE&c10zJGo~DROGI/1; +ICegn1} +Em#yN΃XsҪM2Uy +p*0F\X-qlcVYw,[b3˸Uɲgn'=:|lm߸W-_:"Ȁ1;AnjJ֊Rཕ͖0`gh8Om铌Չ-*H@N놂EIA@|[ĉ+k;dK*͓a* 5˭ٕgȉBI`=V3SNZ/4ؿz=jUV̑|m| b0\Kc߸yj mx5 h,헝眎Bw|wA۞ri`aĻs>y[dF۾Qϥ4JnvHvlO¨H7۷WgV-+<7oViH#UqqE_P헪%_1;q _Ef&}{*΂RFAB{}*ܥc+i%.XHw|ScUY"a2)q|wu雌7Yݰ}rx:VK/r `zayv +;7{X-dmd+~tY2qM'cXmj[+ Ln܄IY +?.}*˃q&Dz փ6Yٌ6JCd[mͯS1 ⧊]ϰ.*SK4l9^~G9SQzJ;\ &*3J6oS^[ͷgV;=?!P]ݴhpp3ұ&W$w'6IApNx4z~w- _ ό85-y+q8Tq J3Mb6׫ss .wpۻU[V# 6IYm3Jӥ:`89Qg{JnN+Oh0یp2k`E uH㑎Rb]]|szf؈6JŨR/[\;sTJB*xe2x4V5˂bʑ8ҫs+5'd\m-ŭ1J< O^q֨=6D(Fw,ږkwh̅9m<㹬bo.riKɹ>e%ImF'r9SNVĠ8~*-USVbt!8nDq֦_hmxUT6J/*O@[[YQ#8fi^NHaZ9 '7 u+ opzҫ:(ޣVƗ$ /)3If\#9.hE3KET%}==jwn7p3}բg\, S$qSњݒѠ+g0AߓEh<;_, h1nD*`swh! (^bwnw$.m(mg,Tȥ`T"[fc0jFVu&GZ><,T g=ǵC٤wds.'}zTrMۀ7-V,,͐ >6mn_zFGOȆIL^.x?&)7 #x;`HU66LzI-(Z8Ud1IKcHZ*z[t;gI4*?2kvo|Tj4e 9j~𦉩E9ːT$~5W[_];MU~Ǟ( rDSڽ"> ?VF{3OjC7nkW~̿4ۧ֠l^ծ<6SIX! bKQ5εbDʒ]Z +tO53w?3~r4?gu?ľ%#u+\H!Y] pڲ~)iV_ tk-_P "M.^":™M>q#VY6ÕnG[oD| $#k.6`ls(̤xR5?ZfW]~Ϟ 4um1eS&HU$⼆>i#Zejmu;6@QGM|IK5gbي`0ăHV%WK^2]։g<0O3ѵ.?t_ ;S48fL#fcI&ğҿ9?ꭾ;h~Aҵnt[9^- \8%x7x_Ɩv:-Z[I$0.d=~UVwpL\B3F>T񵗏|QmX[\[۔nݳ<| 9uF u +n83@,ѪKswws]LCv=I>_>5W7G3ύ箕 P]g~k^7|+s\xZҵ;rPLUwg +J[]C 7C6M*,`j*tV/oaO1pdg cׅ<1}AZv**r@'Lo3c睍#qt@%OT6Z[N6Ze0fJ3W?w=?Qh袊W¯kSS|ۈ٥S.\zG| s&}BϒMsOJ|q-7D5FWxm9vn2]4 QTWHoگG4 QTïRQtH.o%K +3;? +񯍿/ Io>Gc;9{Oiq2ݷsߢSL{KeO-8zmo=F&(Pr}zK[/,@IןH|zne1ޡA݌;h%Q9m1Uej{Y9Toan3Ӝu>MG";7?ҟCj, OfKn<߭%fRb+o/_j[$NMk[.CItVMW!8KGvn0omgeRHa>swb}eBkoU/"j*+qgGh$O#Uh7yhm_ډNhhe2Mw,C`zˍSdyy sZZ\&gA%ey?{ދX9c{XJ/.Xg'35RK-Z7z¢6rr{sNS}(tLu[kN?2ʺd𥞬̨_5cdc5|wӈI>="xȎF@q8++iv4]Fee+I>ֱOD[E@ d~|wP63t^i蝈}ӵ[10a,f6W8xMBZX2 gCXfc&$cHqg p7ƍGWHa/Rp鷏gh%,k,NpOqYrװ;L"t֖g`oDjؠ!r6vסqrWL\VIϴk:XuwB@29*+K4b)O*BT{2ԷDD)݇g;v25~ߩ͏]DK+HX*$siw6:5̓A#폭PMRM 0 Ҵto.C2aEݵ#O-8gy|D@rfl㲚%?&frsMEsoOuj$ +e|ÝgeGi(=1ZM`ldMb(P2X҇Smݗ+M+YoF #{ֱ~!?5 `g[KFݑOy$ HOcdڤDy浊! `cZK翎 sO6܃s2 H;1z~i6MMvDo-v 2-J?66pk{2oN8 s'P#ES¢&Vu 54xt1*~쫒8>JKj-#5'9s#Ny`m̊ +SaoҋK;|6-MX.=- KȮʛa. Q׊_9%eվ_;Б^Egrn$eLcK,7FnWo1m +NH=.m?'9ӹkE`BB˸7LP\raE7\/{mF58mڪ:nɦ+e0n>oxۖ]͚<'VS|O>ȑ^JbQZkaia ETc: 8g\uWۡ6EwGL~5ǑnkIVj'sǶ1dI^LV,Z-8?@O{Q 8^ lfyQv,<- cŠuFj g[{ B{Ti-yrtpsG֠-adث=).o_i烊mLFh#v +$u!r}K#h_3oƬa O['PURIuf" * 1sVPf?&ۖӟ9emrz +Fm%(psEH.7Wv +H>ln҄S"Go,bC{TrF$I3P :i$gMiPjRK-L 9=1A,R3mxWm N\RE2~?JwE*7n #$7jdwG$N*9pă9*\\Z1)g[M3)[s{ǵUgR)?SL;6i#f{+)YڜMǿaT͓ +W{n"F݃z RXsn91l!o8k0+FY + G&ßc<)7ԣ1uM+eekpUSRZ9f$\G2\穌07qңKkQݟJekjnk+yrd*xBiKv3SQCl!=[Ƴ߻itRU4쎎r >Q1rx'Zj&2ۚ4t+sޅ*Q䅻2d\`]q ˆQpLD{ҭ!@`3 )A9$ZIvfn k"]T)GY#vya⬓>6rG6D%ʜѡ0TzUh[X*qF5^U+sEOmu#/iM D䔴HBoP8s[UG сT7 5va!}vkS3\hʍoI.3Swa#3)2~f/<8Uig*.PdkR.)U˖Fkv9;Zdh!q,k,!ߵ_ +qW=,aN\w:I>fAF :;*,no.{-H&s$i+۴%9H` +zk-ՅkyO$M+JN#HcWC.aϭjY%uvv)'ɧAB9-sXk{=2Ğb;{!:6ƬhYvW%Ԋ$1c#$zzlo}Jqج +s-4Eco _&[ِxRFd n=>w21in9ӌӳ&eP2@eji4Uw:W5[&J(L^Q.gO;(+V[p298'uꍬg zu:/qz5e䂠g'& ۤ#)ԕiS)- aiSy c'XGOZ}ӧElN=1ۧXk4+0'y9[RbWEF8mn4J}IYhpO@kv aZQ'IUo6y;SRcV~xZZ$G&LJ +G'ARieϛ'`<;A+ vDF+R짊;P8r>õX99Yt0Z!ؖgƦigy|HǸo΢йUi]=^HM|8ؘ[ `ciݙJ]ӭ#x˰w~qSiI/V5陼%]܌#֯iȑ۲cǎAt'(f5^ծ4.78?SMԅdvf2N=;pD#d0ADNڰ[a\թyϸ{gq['ڳMv̑іG +rGsIRb҈ehw??†LUh4epΦE'OCQ&KQ,10)Rs'4.^,D2\J n98Kč RSzU]w]țIFfNrr[q>c,H|Rd4۷# +θצO¡rq)vjj\fvFg;A 93NDb +L1 .3ErkHkk=QFǢ} +q@cXw|u{:~Ѯ] EVVno~"%x`FʧӠZI@ .AL~5R[^41nPzwց")gL ~L®hw qUaԉYɍոz|ZtD7BC(5s[5܈rqҤ[<2(LFҘúFx$t gtJgI_ڎ/ P[m2ҠY;ԩ\[I}@wU/:\Č!dz5NotPx"Y]gNfA=jSKkho,zt6iN4Gi6:)ikD[K[ǻ[_C̋^hj0z]|ڭZVfgi#MbYc^5+%wGc|bq)>Yn>^Kb|DX\A'm@ jŵCDB0ʝqZ:i,pPy_'-6Mˍ;U%HpzZMQY~{U̲ԑP:dN Xӡ| `=9,>ϧ8g,CkSXJW8dvVUIgcqd/G5q%1s ={Ѷ$ٙapmZ;G Q֞y+ +7܍CQ[+F:vEȶʯOF:b[nCN*'V;rf 1ӿO-65[ٙA*M_TS_)"+#<1=^[kۈ@ +#-OZwH|$l +ک QkWEdIOsP^O-r4$dj[ uɔhIFe+)mdlcRZ2yb2BL+, }is[EM9Hf*ex5Vwgj)I8;q^Ycy LpLxݜfdvD̛OV(vmԭۯتɍh=? +҆9#ݢro̘#nI&-.cgbx»Y8s;PJKkyAuNO~՘-M քxJGfGf1'5oLw32qǮ}i1QN*Ki/!Dz`61)PBr1Jyno c +'u VPSeF/KZ˻z?L֤hIee~^j:=əvF5 qH*wX8-}?3JqVQo߸Zi5D $~<,y8OHx\ ~وvlrV +##{P2펫w  }O=1ڦu>r6"y|Q sop\#{q[XG;e|9)8]573i1Er w2qF=}=+Sk;dA"O +I>z]YԞf-<ywIdIm=hZ|˕nn[?N66r#L {qwsEs$FccҴOK1I*>y gk"hV7F!_ZcYҮ Ԭ?$zje # kJ41?ih52>t؂"\p޾[q-F[y38x0?^Ka )>7Ÿ*gE(>쏩+)+\ uh[kXkq4ԴNEy?r?!?jǠ(C՝8=,"I~Q]?,(+vx 1!Λq #b9&>xGmcm4W2.{F$qd~z֕KKSo2ApvFEzAK?:pYNGױ}~h +F^?@{~> Ԉ9\(( !пG_ W_@()uid~R \dgޢ[2K(s{QH; +Ӻb])n~Ҧ]DXdudvZr\ԠWw8 ʵ4cp {~W#H`d$Hl9>•喨SEpGJۻK,F3zzT.;{tHowMdu΍ƒv4]^HEJɸBC3=1,?JӽӭmwYXq8"l,mwFl$d>"y;$\yQ&h ҃e$ ]uY!7p2J̺8 +338[~WikNɧLUK;XtqsשMMJ5D%` >I"1Tc23rǞ]HXDW 9jLӕ6ԩ^I/; RľFzl4>ho9޳k>mJ߃-I} ))8wS.[˄ 5(9$hڛk6Vs]lv: c5B;4&ts;qӦ}oaFDa8C(,ЮDֲή3xSuK#{_I2e@\\pN3֛i+S.H~s:q`w%C>sN*-KXY/Y@Pv*Ϡˤ"\Ys!=pg-^[>f'o^46vݗ54Yƞj#pzn[|p@FnµC=I!Ν~U#gڒ}5m 3o6ݘq[P譧_-υΧvӞ tj!eVY󵳷^8E=/96E:g$ڭƗ%w+{}j^XEhf@zK Qг_ZihgRWRԷHo%*@KxkrY!Kٞ}OTu=z4QbXL{Smng)etbnh-QxA6Ix^.C4VcvĬx鎟JҵqGwҸ܌ۇ=+ohG ֥b7ڑ'܌r:ugE9IAoܲ8!v9jvړYΪ 7/CZgX\u#&y9H\K8#= c{Rmvc5Aib y5[Iz (bA}ſHՐLo~ؖRT ;LSN>e&Em:ndhp@e,֬[xZ-^{#s d]WI|yZ(7mBǡ]CiqK*=#㞂T+Inb0&RAcVy'22Uq)YLa&Xv5.e-yj-݈f%ި-=++ϬAvP;'t4Rͼnfwڙ;=~U;}rzQji86y:՗ B!l@^hW.J2VlӵmNŀ]/]sOZoړWw3.1#H%AvE5.TZs5:m0bC2s +ώKls|v+OAӌ2#c#8dֱ] 㷧ҟ%d=|[KK[yÃY^Ih֭6anz3֤G$XQwM\!8 Ք<)dѰqsVծo̹`dc*St neHϥ6̲iQf喥y,[1}ӜgO"xj%+nfqxTZUr\I&l=8 +rm vd}Mڋ IAnDtJSy~]h#aQCj{@>Tc?ʍy+M-f!;#iq&d$\exoqq.cbQv|dλL[.W=ޛrqܠk.O{qp[|Daxe-@)8vun#F?ndoޝ='j0O`SY:.㓞TgGtK3&y#SkyŴ֓43>ݪ<+plcYŪev6p3\S"Q ($(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((xeW`$Rym,ԓJ76LJǧJ=] +#%y yXQ^:U9bGs*vRZ]҆8UF (ګ^s׫8Rٽv}#m㧽CerM;f*}Iѣi!˃#?J@, +F|Øٲg<0ڒwe*##ېӑS3.6ԁVZ/!Ipp;h*;PֆqIغ?hw4;g*`U~EQh#79n\K X㎘51:+^!*HN*J6qKf8i}\uU]+$2{T|p1N8q㊨δ#v2 neB0ǯ9bRM%jӃ$*yjcKkk#2I)$a9$X +ET [,yX![Jج!cWҳgk"+"dU 'F"5<`s[@qYjۖW?6qi)Iꞝ m< +ڻ>,֫^T}{U{[x ,C9&cVd Dq〹}趣Rj}]$2 N:OfXM!|d:Qi#k*J>V19i>ư;sfdLJ'h} ֠i)vzEYK䀧+DGӕSsȊ2;Hmup;e@=kvSl t#V-գ>+K7T8Oʔ˻egsZ EI~l2(nUGo;`C#4۹`+K[28`LD[p*C.И6Iv6$J0g#r]-唾. ?d=*UyalD[$|<z[&UdO^䵽"c5 7`#qzUib7 aBVSkRkiFf=z8"9rvB rA4%y$ <:HpM>G[,LTU)33Mmͧ/-$pfn9R3-m$ݷ٧D$ v zQ{=J.Zr{{ +~\Ҩm8?)Pxcve)v~uUkA.))L'h4eIuI 0X@Q7wV[ti 3RHg[hcO&Yg'U!B¡ٺ6G9Pj]A]&Xh¯CJ`vs{v#i,98lsLH)"\dMan$}|N㚚e(w 9^}Vu|C.P*́T")I4-XΟ5x:Fp$2K9h' )nqbHFB}R髸.cNkZ 0| >}3ZMT&NPݐNNzX Cs$0TyF9!l'v\djR=2).h6!kI'w#"Vx;NzU6hZ![@FFF).l I#*>تw h HV.}|˚&e܀SNne"`q9H=1?SCYZ6mRl4Y-Xa +rz`#YIcqZ6Py~cңGe0dh]@'^ԹTMZ-Vm7F3ڮΟi}R7fA?sDF## +kGI̸3#`t-S%+KBK}O۶!ع1 +K..d3`&{3q'itwԓknV=l zcF>%vq6i1sY pY(kf侑,1]$bF;z*Y9遑Mhe8^RV]۲7vzlظJBV#ۜQ_Ң_*x•irsNOл\ͲgAn}źZc]I=+fyv,(3`U՚V +2jUΉr3 ;xD|UF[wOOƬ ۅ*@lvǥs^@wHddF2\$sRݑ-6)e}`g8}4Vn<*6qިB qu}T|?tǵ37Q7m"} +BUQngAߓ>e"XH A=yZQ^\Qv,[=)Ty٭ wAtt  +%j)#zS1H zUWx9S;WvϨ+SG4܆w%7o|3~>q [TDvnckX`2:=u}ݼ2opǡ擹,W ht//}9UJ9nπ=*)0@;nVe9]*{JtK~٭'֧ץaf`8ͪLg +1J6\1$sѲ*VnWZ[k Y%7ZMo'g֩ (VIYm yYbP+Ў}m+(qޕЩBq\{Yd[8m#B^03OV-6`|1ަ{vHCvp8~Zy +boS{hBmIlRO, Oti"$>g ` Y O&4>D\Iɢ͇<#ƙyNkX޲*qm?0{cygX]Cbt+ +uDVnRGKuI5$T c}k {GI`AՕ{6Kɔ*J(kg,d(BOV[ϙ=z~gG[%o,Oʨ#$=ꕴbY*Wֲ$"3JC68I\R" ^Jjܺ pďLT-͸ &pΖ7c5B]JKw*7z7QSe{3*?Zdop+fg[R˿fNA^>է-O&!#!uǯj-9~R+Iq|`9>]\p'\b*N449 cRe96zzfqZAu$6`gَ0zcTvldp7$+:zU{:4w yV5mLMN3Rz"s$Os5o+qʯ7^f0׀H3y)&5g-Q.k i(f끌c_Z}k$\*yDp3˙dOG|tsN;l%llMiecM+ƅי4Qw_U4Z"tjV7]!KɂĆ!H>:T D0}&٘yܠ,s>;}fjmkY.IjIs̆I%X uɁFUQrv4*&xq>f=fIJ_i9=3GB^c#w^U+{X,*9ׯJu+^Ly珯ҙ9Xvކrꊋ;Vit`KIcȦ)dpzU[ ǭ^| YZpG/Ld9\0Y+\< ˳9Z체H[6]i,bG

      =\ZXqˎt]u/0,@OR^1d6N{T9VQ1P5L͞Tl^ăVf]6;7|jdcuq:wW6n[FB,@ _zkS*Q R!\!9=*q<rG}"'Wvd=grpdU' +W:~^FM+t/iqJgho=ii̷2teߌ.[SR 2K9զ]OU9A.=jv8݊NI q$A=?s7k /HyL|P{uOVCu4ɷc8iYR3XC, <Þ??lb,$XUa!E)XNjWZ3ùmctTqҩ_iSZɃ43s-u]IXccI<` kb8MOSxaqV,ٮ.~ӽVdxnPG8ȭkmY-'v9ۢIw$M)ɌV?0>ݪ%W*W S%{ttJzta6n:8N(*ܴk|._r2?lyu%Կ+ȶ?xZpZ xŷFo3mZ\v+-) mDקNjJ5Zr^+v䓀M)BZ|FWB`Y?:LVF=AG\jwwp2@یU4bPJ777+Q`ZCpw2ӃOkۏҠkup s򃻌ҥXޛos(Cſ;B -bKhB\m~ևY×zku{8:^o k5]O>+xcZTMt$F^k({QgB~+f_kV_~xUV>wO +FrWk/퇴oW/< |PZCcqgpAU?C^} ++? ( Em鱴vvV4g,@$/CF6zݻ2+&uК)x7ÚN d_ePÕB gyCI\ ++? rUcoJ ?%q熴 +i+6B''_дFKgqEr`ÑUyCI\>%G6B?J,~ ++? l!R[ıF +?iwOҼ_BQc> PӃ|_B>S4cu6ev) qP> /^mIíf: /KD!i;n35?n~!5oU,Tp0:Hh׌<_R@cyQϯE}O B~#nW4'_$}q]4w߈xoğYxz֟V$jp6Sր=SůǖzF-ZK89#W}7Oھ7g_gVnݘyTL{|񮍥]jWl)kkVQ +9'@}KIo>J%$B%zQ@.Y%B``SP"Hӥ+BPg#<ڤn f1#?֩]׳$s>dZWw+ҬEkfB3ڮ:[Ki&H#=X>-|U 7DocǵC$Dŭ\gPACVn![3:'qڝG̓c+(nFGޒЩON#ŞIC̀ڨFA' +soi%1o "ln`ޡ"ӥ[Ϙ`~uWVݓΊ#Hlo^N*gY)?jQ2! ݘlG`@J C;L'oR7rqWA&H&sSM`ņO07OҝkY1y :~Fys_;3,*O''V啩֥E#K6vFN3[!LA78UaÏǧgY,O#?*q㎾jH\6f};7"OzǪKH[&6tuߴ}r?#,N9DlÉҲX۳zU?jzRr'l9?Jƴ?Kȋ«J6QO'ylY9*lP <LQ*澶.X64ۡs*-WX{sU_M]8 A&`("u{[6udع}di+R^_Beo0a ϿJ.Rf@>^sV%܋x֢Iwy؞i: W]K]_@vuBN;WAu^llɕ$֢[y{ɶ1z+Z[C dl/2%h/sK<i2`g3rmWOmܗGuP1n_M"$Ѱw5d,I8!ί#3,%/Z1YYzOso;?3ڣm,mV ;Y"I2U=I8 h*NvԦ-‹-#.={g]g (ͽrc랿7o,{UjKK+WZD1ds?AR:Ibf2C@}~ˤ US*|j[襂$kmJID"%g,9U4k"HԒ)S*n+جnŽ9dqdvlZDe<ݟǎ09Z"ЯJ.Cg B Q=֋Yh4RiOgG ,X[:cCW-yH;?wi4vmULU6RD# ۊ#R; 7#> 遏oISj!%ǭK'5 N_oTuǵWK:c߾qK/2G"n`b[ϰֶܠv9֩#*9]jqO; g{ۗWZ\qҳѭR{)LFNW~ȩE)QҔ~fM,q#=>Z;Mqi%ZI5dɩCl u2>H"[IdpxZa6[;t֟fU9M}H[?[#2,f%}N(1<`Z\Gs^GٿȒ8xI4-U_2Xu?ZpcKUCf> (UyՌ,7>JRΕJt=Eӫ=ӭVQz]jRhlsօGL\\QxwqIn 8zVkO:b& +du#5oG{м"thiB4cE=u)]W8Tr<9)]n&Q1Τh1n@qW.|6̡֓b๓d2+ H5Fv֙bp 3!w*+6N/1RE.ܫ 6R*ݿ[InxRFM G#=Wǰ4ar`l=|ܲ凑8c 8?N;Rʅ8M]JZ+6ƍؾ?B;iJف8')u$Pw3U8d(s|&9.q5dJ&9H⯥rzv:U m!xcs^$I:tc*%tP%4*q8${* +Dh.V 6T6I&fw4Ukr7+1$pA:TN|⢲7O3B&U_}h>SO, ҩ<J `>i O8䎟V($MT.x D\}ܷ4`rI$T̠wW.LF3ޔ˹yYd*vsNcaV.ɟsS!Qė?tI˷`!QEUE7Qe#ֆRbV6LxWR:ШFu0E{T #:ꈰyoI#ņጎƖ7ڪT޸=E%ԗ+UMo 2F ]J@o@|4k3ҟ - ˜ HH' ʲL3IIj[ՒnvL2:[ڭ\[yS$c661:5ڇk`ger3G敺#d'1$%cbdViDLrǸ4 .s㚮&Ș%#hcק8kX 8w*6k̳&tU z+xLBNdTGv1߯WFA!|{NXA>{rK}Ht6FqYWԟ4ŏ)CǮ޿Ojs^e3|;rJ0](E5R$w;imMJf7R  О;USKL" ݞ1ߧE,ɣZEID*-T+s'asJ|ESX6;?*[xɋM2D >?8؊jZ9zEVJ^EB!Wm]tyI=%rʫ2A㱧*01."FTIujbRA*X +o +E Y!m⧡n>kM D)$3ϭ6k)Fws0/VfXW ㊡su,%p !gc]KH&H;qp㞽r=qǨFDҸWq<·pZFd wu?/٩ckju[[%EI\ ۽+\ϯC؅n03D24֦&T-,m\\B6tɀXtRhʥ94Zv*XY"cw/CdI`@ ?͵"=zgY8$E`'i4ג |؊L}*SH`<-H2>[6!J07s꾛)cPx=A<ٙcAG<Ҷ{F %cS8gʃW-rЍ{8%ΦEJI`ǽSey4FW,{ +MJ\2C ~J/LCq"bHTѽ|$ % p$%éWJЋP{[fǸHc _mزd3ŽڮEn!k9M,ZTy[9ևQjB\#݁)\1$I-LcsT#E}q$owIR !xۣ?E-%vq;qim/-Pc),O:NT TA1%өeХq"[rF ߜd +У;ۅ66?RFHǥXcu@Ď;`KZ*@fʡ\0 2ѳ]And*1ZwSi`_9k10mLSa8;)Kb'݆MlxXZ>H"{i)k92X$Hds8Jn{;B;F\@;vSgD+=ǵW =&Y9WS٨7y˸o}߇_RZ-Z_qv-COy\U Hn vמۼzS6`3X&S'} +=E415c\CDŽt\-ݼr6w\s^+/`rWpiFO 1q뚵",vvYe_9X0#fbDk?;im'70«,9mirV%I +˃Ȧ8b,!*ƣ,t_iǧsCU +8?JU}MRM{Vbؿ.x ^TDw)QHjϖH9ǕNFFP 4=$9%t wcJյ[]܎H*ZkYn^@d^P"eݒp:*MI|5 ha%_F|<{3ndǑhydɽNsGbݴ`g5W"} +8K+]x#f{{U@ʠXFX=>V->t_i|6_ҍ"5;wq#8۳;=mZ}#3s$an#r89=T5k+'fsqQjtQs۷>ɶع{ƶr%;T7{i? +Rx$E;AQzU$*.a+Q{j s7zP1%2!D*6c=xv4̹1{d^?Z u6DŻ?SLLc wvS>?iGGG-'Q3?o+C?o+( h^$'$)oeu,2-+owDumׇK뗹$"~J(€>@ҁ1YھC?o+4=#S=cw2lOn0]q:dνH,5il0 0*?@h&NGiSU[¨`_|;\i^_C~hՖH5J n+:|!E}&(c@Ok2Ŧ"XJU|kEP| +)[WG*orE}o@ xG-sƯw^?? +ZͷB݉$q$qJXqj"DJsjΔ pcyc>mX12O"# BM<vV8?~Fp +3cNFXm#'P=xUe5ǜæA6ڼ+kGX sMfL[cy^FxciJ'ִ\ȱ |><*J]`8=V5I/b'3%H9>S\">Pyoeɹ]C:޳/Z}gvTj]cjs)7婥gGiQc9<OJ,oomdmXͧ&WFO|O֟G]d~>D*[dȻd ^~KmoNdOy`~]#3_$LͱҵmD*"6xf^C$jRIow$oCn>k+$ 1tI޻ 28| u,`+8ҚlUh,$SבLMFY|ȧb6Y事Qx$ؒxP[Z0d9qKy^?o~{U[cJ$fF1n]ŝц}jJ|ҕoBc*fGؕU$<~5k{&a^}Rpyk,༌@` +>/reqt=3KXԥy_+.t%~QjVZխ^zs>ݪiEF˰5ڄ;- F[gsMaJh6D)9EN=qJmfhw.wc:s֭jz<8\g}r)1CR)u#~=i6P.ے6T^Eݓy*lO³-_*#$o8=ڮ5ԒX=bU~46o ۴ oavXIvx״-֭7RMN:c֢s.y?sΟn%echQF;d_! ;ceyM@||q~O ڬHeH:zUY.U$uJLj7]M= +KeqsH=c^BCnVF_'=?:洹.LHN>k},dhF2H},ȓїlk>bI㊨n$Ax*D̳ʨI+ 1AeerPdvR?}i$kRRmrVvL`*>1&i3}*6YsҠTP9B^21Z {E4r|l3Y:X]\h,Gϩn<6<Oj5[u)%dZ#vg]B _c^RR([y?t=iJdi<:C٦CI)8+Em]ZM4e09zRvzMTzu5~y{9ɸԮԥb@p=,8[4|3i!3k +m^6G[;ZZK!B]6j9P[8Uc;Q3=iͧK I(ؾ 8z*MR[m4"*pFIj%i?fe;Y5-zn>ve RhK\mQ#=)4Oq#6u? +wЕYa"3F_j}9$3a;ڪq<$RbցSld烚yN/D6 )+6,O(12ry,~3mS)=MU.nFeP`) >V./*6p{{aQ09N;U g#1 k,*LO-W4bK3޵&M'IpSok,q*@d o隍lJKn0?JFJv`Z7D\Q(_e7t4s.އޙEPHQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEyc=jTɍ<}>^͆GeH8mY% `=^!]/dokN̒Gfv[lg}C:$ ݂Ny$"1ğZь5ibEf)$`,q&zqE#$A=*x1#,1dTccCn#n1.j[vyaˁ:4OM +@lnlY6vE|҃B-Ɏ&p +RO,"٠1['n#MG4?/JT݆1DNh% |Ձ"QVh ݆i_^[[`s}**.%Tb:zt8X=@Ap-M%k|ܼϦ-PF~^ hF8Pc70[~?3gjg,pEL4ڷ[OnOw7jlFoDƸ<G"”汮MrY1Z +z$j#(1]iYy̞YP{6:gڭs=jGE9r8%z`)K*"ΫL1έ+HQzfx37BM5m)+J#)Җ& w-m{q ђL%th# }NG,]?!lPWix?n 1F`B’̏PdݼjՁsoB6wL~mp3oPg+,e88tBY ̙2 BGWbvIgH<ax5:awKx'v*G1#ɪ'qFuQ+-K, R%e RK^zTɀgOj lC[#}جأY8VUQ-ZGrT*sKGm 7Hc p?i̞Nv RM$r:0)4qFI3srVح #y;ήJg}K|y*U;,@SgWFGF4ߙ&j !_2FPgDD&b" uHBGl T{2lysoEqEsMǡNw,{1j}ލrs$ Zp1C :Iԫ7_ h5ԤU5tesZϖ7+B..μx'K3`e*ӞQ]gЩ@'6Ѩ.eWsg$-Qn=լMl&5 (ϡ)xVb8>-u1&bE=Kso*j\~mB$r;55]l}<cȉH +1'<z7bo:3Wx!w\5[Y/08vZ|:%0np Q $#ʉT\p:«Mus]ɠ+.'F0>I#$ zC^WFädRC,8btMFiT<.3ԊcciJuJWsDQxt]x^ЕIUm xsE:'csMslf=Ųf!>SKS=\Q~eݟBLC(Y$*}SOYGɩD'# rO{w<:BȦzkE`_cF*:ִ]ߙgI&,9;tCsl;&'y843@e=QR8l#a)H[ix㚩~Sp1:d`r{hJjq2q隮]NgU(-jV6B.2GҤm΅_{Uv0kSXų-> M'ܣõ"A${JuzTcBXIͥXmΓ\q~7O՚w"x݌nz{SUW}{BFTc=,qK}x#3#=OҶ/TѶy]ϧ_Ɔ)ͻĐžsouC,.# *~{S8ft.F?.?(2ស).[C# +ܣ?4`g橬eαʨ\p=pK5'E,Dcs(tUKvI6.9Z$phZnx+CZKY.cʆ'$cء$F}If +znmpڄF ,DJ\pEa9$l>36psi {Ϟ4e~Q֪CK9aYIF}yE46?+Vݞ +A>ٛ]inϡT(l8t +95X5L'dA?KJЩ'4Z۫Fnm͊Ϗ|Qkg. &}<\ %~vI.[ow3~EfT QeОi)kCjkh`CМzgNi +b{{qY~O׽Xw"r|l9ZMy'inY[" I.>g=T 8L#=}$0|pjI,*72oLR~F6xX }g*q`Ys9\~hF?WcMi9q8׽48s[in1UGד0yU۶xzw`{C}jKؠME @KdO{En{{6f؟÷+N]ybeVOgvdm듎y-Tkv"Qv +iIsղ7!b cdxgocDwico8QiN l+ D7`;Wޝ*ݶgӥV_.ϥE.&7gPϥg4es9'qN̞hZEiϷiog'FK*sO)mqؼj|~>zcީ#9TWC 5mQ\ $BxS /sȫ_d0ۆLlwxێyv2Qx9Щ_s=FLi|jѤU[7 튣9=*LJ䲀R܊5w["%),T}-Oi#$1աKt\aU.@\yu;m']fr,$e+%t<㜯zVbv`ZL.M8T{\R飞qݜlPLa00s޷--HO1U3 rێϭ\ۼ^?q;gJ~f݌KݸZ$=6 ֵ­6jм[T~l t=)Ka^q +is۔9nd0իk{9vLbV2[x.,M`U;?˹ 8_Izb]->">VHrjW2+lqև'.FXq>=j܅$5Axں#IaaF cҎNx mH2?a%>J*3/"f{p;u#rpvõ%4+IV-mÕ wۜkUY>\6@H s['Q 4m'g%u.Qikys3v?3ZGKp&YhηMji-̗cڬXRnu_?&#ס*NC^4/XjYγ"HSk9Wס*NC^+;Y5{kHk˕`<}+-#AO_x; ͮrՔX5byq ף}~R#óY r^4>k/* }*Ϗ|K7<kKkBB:]%y$:?5[ǯϭ6HvH73lWu>)"ZM! (c]\me@\u ?>bʁv>-n ?TmY!2"Ir:㚱xE$2KjVC a9Gn>*/z(?|I@m+Gğҿ)?zز5;8,PI;hW<ˍV]fK&8 "6s*g'dQP- Gm-;Ss}m-&$F1T|I@m+m"^Xh'O*iz-kZzLh[Er;^_g5'T+)؊G5 ZzΟ-+Ʋ,WKo xO֓\5A +;+j ]:Kmy"/851ψ? Xw{=Z;:)_֙aE=RfI6UQ$_;¸ +7P_]5H>źg{z*?Wտ~]O+Gm1޽}|4limn U262k7㗇o"F=A&xB}X~tm{.CjfgdkBҾX*Ҹ93KOjV¹jiMc~'^Yust|xyVx4}$14@p##׼]/#4&Bn.$a=Yhk`)Xs|o<HEsG;Ҭ' @H\Z?_9^*QVwu_ukpdqH#@-+mN[- ƪ"r۷럥zxO k~Zgi%n>q(|Y2K;iVQ|3@#*NFA +7MI$zV߼csJTz⴨የy+7 T稨|!W \򝑮rC{rʨ eɬ{!xN싵A dzU3[?XSdt2$F ޟP-" F;x[9]V.ah"eǁPEgq%Vhi#O 7,#7+<*EF`.o#9ސmzaVc~#rRJO,覴1RVONŻ4iw@鎣>ZKFsnOp g| M"ú&l1ONk{XfKH[?P,-Ѯ&'cT;][mAR9 =HزIw$qp4j|zlpw_h@>Lc +kXPwM%@pI;{VM΋}dخ}qIXҬgbb W-f8Y6cZe?7@lhh\jHb}$vɠKye,@\qB{qW(pOYwre +81ZzT)w1Tk`GU7K)4 XSZV'V.*NsGRQ-s/"P}*}C6I[ުv€O`R(vר0kxEJH9ή\ ;uuؓ,0ۿE=̂763 hiwQ:pG&b6i=*I:A4"C@TrѯL4xO6X&G9\[ d 횋 +7S (t'a*N>>Q-ԊBm9ǯAT7Ѵd*l~ZXah`uu,)~F'Ξ}n6`z #M3$'$Ѧf'w\gc?㞽k-s29VץU&:U#x_RT&1cg!NrW$[ +HUI12=&}p~QwWG6"-ZXD$y~*>4sibbَc.HRܜRcRtv+p~6/ I07)8~%{4}a)Hyj*[1HnpM17_I5YA7Q+Z *hEͻHwOFs}m>s{啜m Dw30'c_M}0 Z-Nڐ^ABy<zŭmcӚU w#Pu:S4 5WrlrNj4ӨTK2ky)3RI*zzVحo]cӏQNԠUlTN'b] \/N^fdJ]ZN,@`uZSYi^g~O@1q9ש4(AFBծ.Aڱsف85$;k1?p$eA+3zIxx=i-6 |G4_^Z\Msn,nߑ׃tE g9k1MP#B;FGh fsnΥ@a(XVU+<OLwD۷߄U-jpXGGcM¶MYm6liCdn\R*=b^*i,4Q2ʜVHy,u ҂'\'#s*Q%dFḱ`M1-I}dH#A{@ 6&AZ6׶ $mf9"v$["69ry!8bM"/ \ +)`*0Ag_]^a]c \w(N\y˅fV\sNKHn`di1li`@nW6 >t{13)F-((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( fYt"AzUe^$㜁Vn#Xe1ikYj9SUh@ŋy횆hI{9m.|_Hj !z68UW(_bj }͇rjcpjy⦆Q9fx4^5pToROݺ{AkJX7!7D +|c?A)]xҝ*aEqy?Jo +j.re%@(3jCyj3_͛+Ql#\"@7~PqR|ѱ$G*$ӡ +F:¢x⺐ yڤdTrڠHsO’Rs^K/8z1N5 01:]<α1SdkI+KF㝔`YLk5`C #in[jHOXȣ\JKFy&);v&s0qUF/gҒ{5z1ubښOn `ځ PHLzU ;o|S7I3<Vƪ\y,VJ ?2HB3yN*n';܅A<*q-'Kyb)j%^b]>'2yq-KWEnr=:~) u\$'pVmU+Y$9$4fGmk"8c޽="wFgoDvjٻ}9f/i!wQv۞8u$[P\ޔC>^=4R;[8rA'⣞<$Ŕr8*WOK*4 a_C+Xɫd-$bJ>]<<5/3xI?2M&֥kim-Mu1Lڭ`*$u.]py1Q}QpMcHVtͶFlM^3tW7vC\EebW qF|yZlf>1G-Cr#9#L\! *8hn- #O< @T2"yuʶ8yXs6` U侴_y5ylp>P0}*Ӿ3=lLwcDrCuerz:j%$NTqH([XQʛ͵0 mǧnsKԹ]+hR$Q k[y%D7+#qRm,WhD{Jx4jz5PK#M6mX 8@āAs,qrHPqP[DaON*PH`8 #(Jmޛn/..#ĎX(GB+H# ̇ uk9[s/|߼t=8+ء\yAWz!NԕlePYn"k  p= +e12r>7}j( iCgJSW74˛حdimb?ֹd8=Butk;e{YEAQRK6hܙWvBur;Bwp=xyM&vwU.2:r)h[R+Z̲9+c g[5Ursm)g]v{{+*|$ߌH=jVfuj+!\ZȢ$#=:ϳuo%Ǜ_+#`Y-*shps;ahtQNn !ljPjwųytshBqk%t=)8&Fшn³'H=tjY"S?ߝ8֒K/c6sVn,iYFgUL7⧕N:FKȞn徢ԩJQ|hR;ՑVIjIĂ5L3y=SJ{;x#f63!%c7 LAJ n B8!^G>p'^~ + ?:ihח!FoLO=,O#'Ɵ +qmy(d +J1Ga\WJO)R&e,BaGYV{Vd20*ҫͭhr8ݒhǙ{Mju'1*O\{+/.Y<ٻ={ +ft4:ko;_3nA_إ˳.}a% UǭXZ[Ēoˑ{߶I#"N'op=E֜0?8Q==ރn.]iFMR(ݵbnU6-CHOJÏͼ1h8qj\Ao`K+l`$} =pv.gӾ$ kztSSJrOLSFc/uEX+w}c %FӴʝu閦yIA'=>Ywuz[{b[Ngfln-vy{L߻.15wO>zd ?1ApۆmhdTd5.11v #.HK4J$vP[Kg'T1~iڳ47YM;.rN{犻=>܏0?]vLyP;'oq'/N.:)F KW +YϚ$ycl`qZz$HN3`.vϭM7Wݐ4D-*9kpF +V#D9f9M)%)I ݍ1֬$l6MNq:ՙK7m-VQ3#ʷqQY@ #ךf#y.͍8'5gPK-Ha rjRM8Ɨ5.d4˸}j |l7yT2Bg9q&ѓګx Sc{뾥,͔.=/-ޣ#ņӽN}8vؽ۫&1pҙi)~MI-w65Xd[wۧfn tϭ` :qZ=ŪKǭek%ˀT89+_sG.]ahb; +so/ +!ەO^j$ cmZdaے=>D3n,n<{a`V͵wZt]HJ0''^w"(Zmi$4%QȑwaK2%GEj@aڴ.i儷\` viD/ٕz}i^Õ>{[Bzo%0T^Eh;3GRG6wl}+5xUPnҋu5}˓*2NOO0[,C#3ZSؼі0\< + t..lB)6iNm|H?j=}/_4~?9i?ڏTs/EPE}7jZ^\ۇOLO8W~OR_?^ۏ9@ Q_PkZ]Y,R}vr _/P?g#r >?LW}_ xZ]iilHd)Y51诈?; z f516!GKgQ>]w-,s zR|mCۿ>@<xB3E$2'f#סbĿ u>s%Z$els+xźNk77epJAIPʞ:PW_0*s7;R«/ 6?>JIG 5Ƚפ +׿^_$P**txAk]'Yw24pLQKp;ʀ>Ea+꺏nkoX4U^ς|;SʦY`^@ tYcheXa | $m}b+׃ٛQf9$/'qyVOtI4խt {+ws#Ga~U|mCۿ>@ $? +K_WCe[ZxT,q*Oӥ}Ex/k&kSfnq?*+Ww+a??:>pa??:>>,k dpQש䚲@TL6IߌPCaw!cu#k[$2ykQGNVH2M"0@GNgp֯_YhRX^UI >3ҩɧj8[>8-L^ٚ_j7Ҡ/028QX6ӬLճ{#1坹\r{GACW4tL,@lC5lĒZKg};#opz}MWkI43F;pjl$T`a\tfZ^ M5JJL֚#Ƿ1U93>`4l=UyX*qYNrUB^:RjGy-Ёǥ6Kyf0Đ}s#QW*K +@$\uicݵXOf>0^c[@%@1@ڡGd\*<2Cl%%TpssQҭnRwW#1BmAԝ5R \l~ܐZiqw'j\]Ziσ hk"FX^&# :qV79]_$V B^0~g +EVӧMI\cֹ\\ !sV]Ipd&Brq*Jڻ*j 1|+譡Feb\GN@aLJH#"45̜vl.dԓt*2׎٪_hDDL玃45 6Hnən%݂zuO0#GN8❺_&6pZ&It {[v4cOkPge^A=)tb͹t17"mqsGI;U;T0mI??Zs#F]Ļ?_Ұ&I\qQMZӅ8+ߐّr8^M}82%9c^Յop $qZMq›SvIdciһ3U*Nz3iP8 YN#s;HoS]^XF Mdw>Ҫi,k4Cs@`#94SOرŴ(D~a}E3KIEGR7=zzi|E=$ X@Oֳbx%bCp +;A.ymo.d{{1J>@X4M,Hж~UY\:FvjfAbf:Y% l"v 2# +DUF\14,iՈ=֧* [B?Oޭ.j]YmDZw{xr9א,HR~b@7L_4(?Nk6}B9<+DEBs8j{g4vhX/S0:֏VqS~-SIGw`75Wvۋ[3.bF>wfM;\̄!@֟jjۤ( (78߽%δ{ ./9d(Dr>UZ}tdIZb{erldvmw,3:n~>b ̬$~atZw31~4Z-X[rhԺ-.]2t4*S|ΗI$yBҀDٍSN8#TXZqvҡki`wTe7\$YEcqMMs-/Yכ#F"eFH ֌S\@"6 +%3G,#Rz%[$msob)Hѷ9VళĞSD{2[³CKgg$˫ rk{k9ٖ%$<r39o+hri@dp~\8Tu1+==Gj,3(Pb%GJEq+󳃒OsUy$8ݲhL>k2YFK>sr#?M"=m`jnxiص!i7ݸ9BekrnD+nsڦ$gV܏ sh+1hH9rmaEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPAm)G~}:Hf=ݟzF*#aʌ#ҔMitlՎI6Vo dUb*D7^ը] 'Ʊp?W`^me_OJkvZۧ&LJa: [6iZU/s|QJMF9-ɂ݌{6(_3ۦj# +M38IYnUNi?sOh2H7fLvo$!2ml9楳y@F9]>ҋPOcUqڟ]K| L fH;whX.CqQbd`)X)':Xb?w}zTTz/P9T}2=3HdA/\ȡ,:sUlt9AWsTJd;ZXD̿{9p]{,ۢj$.vh3D8^i$*@zӤusFZ6PI P$h:$v>_2f=c7}hZlji^;XhhO;yLȓy1P*p>u]ːxʛiѝͻ'ryX`m}x;2XnŒQ itqݗu\D!6TVWD +ĂUQ8Ϸ֦C)|ն_he(ʢ/rQ#6' 8g9%K>d'68Biy[o㊝Ug"8Cc۱C +EǗ(wӰu=!Tn&@NUe#B}~ [9_ƟܢYveG R)E,6ȄZO,a2v2y A?EikdҬ;!U&mAZj3$h">Z +ܪ0@K~`~\}M6O"l$J#rDs$8#sE#5PsRI"X5=s NzQS|{Lk2W0mYz֡Yk|x˛fc(S)-~px"b]D$MW;j]<7QUu 1?ZˁBcB1SJ_lO5Iy>QY=j`Y {};XQ VUUm*:zrGeWo62X'U)_:8\}kVFf,`ֳAp6(˯Ӵr|ϼcvzl2ڃ%PuWemR)ffUA>y˴B:iUT)` 1A\y1ʮhn0O֭,v\]QZȥpJ,d(ϡU$RIZI͍c'׽O#-0^J9d_ϏQN5̂0|ĮH*oŌjΣy~YGJ*Ǖ $F |- <ҲzIWŚYV[RF%y\>QKIf\DK|uԓI%eUT>fkOݼ͏9I B1ADӵTϨ[:\ݤS!Tg#ڲ,-C%`Ѿ"M6;uq%\qR| %f# +wyQqUU#{UM=,s,)ϥG 6;Z\0Q6OzPJuosO5pFX֧IX[Z@̇y=֧j<$[2q.llUQ7csڭ-49/C&HeXhQ@ \i-.oXdqJۊ"YM +@U;v/ dRP??6AO}C.}s$ +pA})fRM9`Ƨ+G 4PޙGX7r]4́ Jȷ7Uٯo>."&\8ךaq.uqL皊 bK[T`I&1ګ[ҹqQ񳴷KR#thIp:u?U~.cyY['L(CcJ'ʖC/-e[ GSi W|ÀNܜS2ܒp[5.WQKYd q\mo&?]ݬaA^m3y$dA9w]Φuon0vx9Ϸf[,i+^@'rT&(ط +-Σe+l]F2)]nmp2`'ȸHD)"9BwgiVyrJFڧSkWo[nT@'XYD^aCDLHO`՜浮+n+3hDj74B 8O$S\ {S~fPH)AӮ&qbjd,FSq{j숾Hm.O1OEPWQ%"KBsp=C$1Ӳ2畕W(f!p [FϘwJFA䴀?=sY|e6eetnx>;wJ+گ\#V`(>ojJ\U#iJ棞r瑁ַ %,>K|pޖ%5Ԟ8ǜ>OO33$pc횳4syp#{ Gmn3=z*K_ql̺ \~ +Iosҁd!?wX{g6\loګskbpjЙk)W!=4^ ]=G#:U[-E+L3ZyC-]nHw=;gZsoMQJGInzQd3LlsXbHsD%s@Z.)<Mnah@RPVpl +IsӎWA,Pk&EăqcU+rE,FqWQ%6̗V̙(eVyw|GvQΨbi#1Sh&"#cǰ]! !#Wwj<8Q +{b3I(  UQ7%Mwq^]Ll=t˱b7 #Qߓw~V  U*ʮq$|)f~;$n{i ȵaF\ji6mqy+=OTDnshθͺl3ZBI ˖)C( c#֛qo E2> m9ޠy|"fp{篭]C*\zֵEW5m> {Kkhas8_5N. qG۟.ҏ+qj͞2r$O;*G*@H|H\4Ĺ|$qDn>7-r rNi}4b'Px6I{SD3 `ҕ4lq^;x56z^%@@ɧi[[N,j { X# ,-ǿҥnt /-Zgh'&Ud +DR#1W-$qchgAgo5I.(.<Ǵ8&9ۿBy pۙ:2={Ot4*paZ ZAsmf82@z.6#}:nͽ|Ďo5{_ps4n97ɉ020jvRHCߟ,翿ֳbH`2)|Zm]`[36>iisc4ط:h?_z452,fIOI^ZMN bGNvwoo\J3;r=[ 1>`=r}8EwW35f]z6;qXqT’})=v)IO=EHa]Ջt[di|x3YK)^U}`rK[8eM ݈xxQC;oq(vJ8>[NkUq*zyϦk%U!RF'o=hR{ؚX Y) qYп*H ,У:w*rGn}* q*ƬX8؊sVhO4i@zb{{Ԋ]{C[5S~hn>گ-a \}3{vm0˷,tGgq|wylB~/#wN[w_X i hm#r34ҶU*9hՑNZ i9p{UEDp +;Y&^*}:(. Ҿ=s֧H4, +Dd+3zF.(V]5QY1=ӥ^H!ÎYRSrN׵fG'np[oo)v 1.-EċdE/랕]@,[9zk[R$Kz#dP;ۼ਍ 9g҅)FWPKD4A3S)47nZY"uv-qd62G4s(~XFIG\sǭMZM{%uyVyM _7U+YUT_vOh_^[rq2G Ybd*qjF.ITw:3\CiF;8R_PyB,zݕMAy5|ۚL򪡒7Xѳ2*l͜ԷOe58]<aT\4JNsJ4l%G;;qU#[  S=w++`G[Xf:9 8N )5drH +| +@+JM&(S,9|Ϋco_ϥ9`d8 +B9l8e,Hl֭jqGo:mG]` '4Gze7ds^⢹gOFO\V-R'ٳ`KTY$hZGok,$mCylb*~zXMKG.IșuU/ 6h_nQJ!&I&+c;:tͫ_*bT*;]=/ GVd7w2-y9G8GXaӄoqvLj0L}* -FjZKy[mxs?\zUS]pxҘp~c_OZȴl8#{ G8NOCL/yDԋK#<7X4n`yD)9==zNO8$J62,*pzSWz +q9kP)ie pv01;9a2(a2;G큛 g"*I+†b@(Z*;I{I.b[Kel_Ҥ^[4%ۆ-LVMᶑ($gxT[$C`<ۭ.5R8DJpjm޿K?Pk,miGPm,Ǘ<P17؊rsZOkϋ4ɴQ,v3ڼ PpjchOЩo&A2Ґ 5 O _Mr~ g|u닏 k0lI%U$W޾à VSzz XUPicow|tς6-⸆Hd͔Ji+|/K<-藒gl*F2+zl[I]&1 d.ImUhaw]%ܖFa'k[h>*/z(4Q )п}p>_M_JCK6*Knk*2]DI' +fc 50Xߗ+c 4oh򏇿ux[nc$Sq'rg?GA[OۨWϕ8ϛUnomo+c 5f :h0ӊ/OŚ~ 'ھOvoʕa_JJ(*i:*ڮe`#7W |u3P~#d|/ip$S[v:53w?3~r5?0Tw?P?<i_76sysoqUp+ +b Ey=O△yawݬFɠH# 88 ¸V3^0Kб?"7?4}}'f>#߇[WŬn)~PsRSxZoq^^d_w~ϱIÉXBS?u+hfc 50Xߗ-/y9wuϜ1C[/kZGF1+B`k+g얓lV*2s8/z|?suau:,(I$@jWk# +B|zT^i]ڹ,`A~0}_<~Κ}햿5՝ +֨(?7 ḽn`1?CuE$#U" f*%~kqGO>6Qmz6]YJRޜlQE9ֽѺe, + pG0 A8GiNӴ )͋ Me:Os +h{S s۵JuXhVߵ_{4ʏ!9`ɜ8{|o"䐥*Aj%OdUz+yTU[-dflj3I[a1upقF>S@Q,^[3aY[[;ňA˨SvL9֒VY3ڳ=a6ZW2nw%$.mGJePs?K^&QX^r*loζ( Q89 + ,1R&|wev+摭$i3Zw`gɰ0;R\C$ ~]*sjcdR͌g4 8dV #* a׮=i:My #<^i'+|Tֆf%"_h[]X`I k>S'98 ŔF7uس ~^]N.;E5 (t*̺}ʖT>g͞GNw-dyHO:sUCWvĶ1fWdAN>U&k[UHrï$cM1lh2xAi#4&v}Mio1yPFy֧RT.;?W!œ c]nI`2Z|fYX W9#gtPܝ"'(Hd x^=)s-eBH.ε&[,dGY[xU吏6:$o֩)Υb]e;C2ˌr3ޭAZMܛ6wxs&6IT VmO={gfx2=Ok:,VE=$eHzgo[N f|zdbbVF}HgGֹKE.sTc|Gx/Gfp !21k؃nUNNH鎕8 `y:*זJ-bdRW`cƝg +Rִ|@I-#۷ps\,j؍8mF{ QF09;mbi[&}ےVqui%_*R Zvڍky*{slDlt#GN\497A28SzU}R i`;wF0ʃ}\wJ  1QuK/?})|NltՌ环]ve`Jzt8o%'p:ťsq@ 㞟JEF2ݬg//0zgWyl](xҨRR۫1p#鞕 Ԋ,kigVOKqo m?6=~lUt@?=%GܷG1J6gҪj3K& 6`*yuhф8}V,o7t,p9'>Rصh>`N:ҢkR#p{}kZmE'ۑTNMjsWD$'}j+WG$-ʽ8Q]s/(Qzk9mrv毛,6s>=]iGO<5ũI)Y3somgFT$ +.y2u$RvkF3WSfndev>bqiچnaeYͬNzn-aX\Gh#\uo( @$q#Y +^yZeT%}rz_G D +իW5D]&Smw'͢2 iK[{XY\`Oj۞7^[T`2m}A! +EaZ0F;3Guu^F$Z{ˢ6CWn14Ϯ}*Hu5^@4ł[d wrOjIAw#֞^vnJ&XՉ20*GɅ߷W>,ͻ-ӎif9$pzjzOm +HѺ/ɓj$gu1"7aA:Y<z5(f%\+-9Y2؃z~u^Xuwdݨ[o\уJ$2zқGq;m?W%^8Rsp$.ݝNxtg()ϮM9*q[@lޕryV8?0I /QSVi\u͡Y r,wF6pxj $  [II!mθˌ~L+ ;nK2N5yo%`r :rj lF}FzִS *L8} +< (^cХofP#۸rL1U_5?(o'oLYi қfWhVzU#h?#͆PjH^XMʊ9sJlpʧnZ,sOF$͌HbȄ.F]3 pҭAdQ?eG84n$x c4FFm0b)zcVm$l@ yf8'=y C0\ɣ:{yQMŹsmڼ:Ӯ csF2:}=KįXm8o]kyFȋ)br84݌9=JHҗ 1TCL&|zcn*>tx328g,6\}?\1ܾk;E,J8#P]]sI3e.n㸝olc7tkf 0q3IUHGޫMp͹rR60~ޫ\ )IqԵ+G# U @)@?zT~j~ݼ;gGKYo=CV&2oWQrq)(${Xb9!Ѧ/bY3׌5\U{m;#<$fm1 bg=if*kCC]T= v%5k)yO{ uo%%)VܼϭgFU,d׀* %{y?֟!{OwEa8 +8qS?$YOk^!hdāY> qVȰK7ךnX40^OaW,%E)?C5<3<"!4rҾv`w~:h%z6+ξS4J'*ml9wgLҷ`Qy䊔tN X` Uk[K{Q[vAVv\C!צz{K٭ h W*{Y,qHo JϵHt!)99Щ6GDž;sX sS!F6 xnci4q O#٬gl$pA"-R#"srz)*nYZ|_rF#qI,$YcsYE_{{VFK2^G.;ws5[D`Zd( +FaVc2n1ҫ ",xXc֒Z.x[7_*F%x4[8 ԓҲH=R3ؾl>=t:W.yZ)iVvսbZa1 @On1-ʓo.u_#RP$۳~@ҝ' Yt{I"aq1I0`z՝oP Op$t7ox _wdԗp΅2dz=)&yb_c:tA$-Vm.ڳ`>SJֹNY]X<̮Җ㕠ӶӠvA+9mT$٘Rp 秿XWl>^w9u?62΍xv:roEdB t2ȧ*ŽI8nI!7rnَYq0"El)1ΌtQC5\+oYi2% f9ާ~q$1p;UfcF:vɴ#&%۬+Tgq j VIHR _:#&8+N[Eltǚd+9?w_ҝĪro.G[,S0 D䜃ްn;(2 H8{BC ]|˂9vi!FSjWӚ4Zͨ+$ m'%<` s۞C$^T.ݧq g<^B/\zhoiv!n,}ݎ[2Zm+yjN{gMON u,啘Td b n9 U3n%/*Jv'!qѧ[s;:2- MJH-债I;v0:{Vn![֑\GsϱTfIEh3]%G?N^KakC&ZCf;A>-涇{UXk Y6*ÑE=o᥊b 'Ue9epχ(l)a/I4Cv ;\9VD&aP&yo  oCU ܳK9cVldqF1N352CZM9[B9r WV 8Zmq洮*\Gu(N83zlQy4TgU$f6O28vH:7<²%U3wՕ UnFqW{EfbSF̝⼳#GCuqqoټ6?֭>Zpc'y66E4Cgn8o=֚b6j9ipcJeHýh'K XJI p9}%;:xlė#֝~ea˰ڟ1%t'ed,IcOZC;$U;,-_r{nPwIzjuR6OjFVaK//2]l׮}lIN28g0>FKiacv"e^\JПҚ-wf!<M>Jl%Rh (Hq4YFo  rƫIkU;Cpy4|N¨f\kB[;,;T9u BBA1֯lPA +c-Oq,*#))t*TKܫm;bL1zdzlBҥLD]C8zVm̚Y(``B8R,cOS)_MD;e[$A>70zii}t,)ڭ~`,7?.Pr;V\%.$FCبnzI"(ך*a^E;PayLv?2R$F)\@:oC~XSLI2d^<6025csc*L Q=1޵[^ewgB/qKBY%b'@܎GhRe$ 7wI=>r ltVu=2M]H9SOJ1S2p'ېNߛs9śwlUY+Dc4I3@  +,&.j?eT-JkYʛs kiy,_]#jKkXJ7.ec#;tPJnϡes*dPr 4Q!P6O*%Oi^UWٰǟJd+o8]JΣ2ݘ#a"̛UW3(PsM$e3ǥBF0ŋ7'6-tB6Lgk2{'U߸q_j;C|gwlUg쟗ٴ'ذ4xzj&tRZsߊmOe,{W}h(fgBl' xqBr%Y++0|j6v<)iiAS1+. s<'F;ӚK`a})ܔɾhBx^qPEC' w8[X3peXDw`}w?>`[v1҅-KFfHlS}+KP5:Rw +"X .vud~Uw4n|э20@[?ڟclMD>T3qQwViFwm:b'Tlṅҵ^E$ޤr,Sl}f3 2 ݷo㊚+5[.S;qjk4kLby)̪_"HfgQRBqV6YIop; +,_d *H`t/a(*bW~BB*Ʈ-Ȭp> ~.5mHcޡu&BLԟ_z.[[q$;cүj\[YGnTHSV!+`ш('&HbisӊmXT$үۦ9;Z|Ig}o'l㏥@TY1=GkL-5K8$]BlffErxifLn%ݻs)thcO翭Zɥ,qeHvg֙ݧٮΐB0cL;VUDm3fm(?8J0ۇP^W9% +H>PA<=ܮ$08ϜQ4ɥ{,,#ٝ{S}Iʩ 9 SK\$ +M,hUbn]L'Pq0QYm5Im6Ȥ;X^흷6H4M.Aw۩d1XdPHUU1f dror⛵:ZmCVQzŸrlD!cw¼s[qwUvXϥKfȉe7:sKP{v{*/](&XQ,*6֓ziY=H'ӒCx>9 ld- }:Zx%ӞYˏVuvْR8})} W3ZZ<>]q>bNJŌ{9QP$jla ^t#Rؑޒ22\wlsR։u Cib¥Цἃ=vةu 4)w ?:ka<&L9֘4cxsk+ +[ Ӟ~i&ދ vGvcq=Ӭ3$ eZ&",omބaUCAhr;FOcٲm-ZccG= T浞^ǹ6dW7>*(+~4x[=&$RJBRp7o74 9[8k+?h.NG1IC׊|)#Km"&Q$Y6oӃo,O* 1+qu_+zgC2J껑 /QUow|uwZ3"ɻkrWнrR_?^ۏ9@? X?פ|T_?V|saE*ҏ:I7>u=+KU쵽.MaSd+zdGhb/ +9Y\ZvWiivZ&o6vɲ(=2I'4Y4~[WUex'JΝoc5ry0ky_!bU+>)xWOwd4Ɯ, Þ@EWw?W"naQE;]gI^^K?ÿQ@z.VMJ-⧌|3[z^Xkh XWwV'}Ex$/5f O9 +B۷׵1ʗr%`W>=ݹH#*0Y\M9Mc8Ȓܓ)rs+cԟ42̋!c185 6 Rp ?ɫm,0BczU[ u =k E|S[~d< p j{KebWjbH Z6ϙ9ՙ!lg1n#9fXUD,nvcU6ȁ8g?_O_V;st;?qT-QYŠgp3vkrWWzR`\'>1[+?j+˦Mg#uWf E5-SZTe9^ŽQmnW ++6ys84";.;]kEp^Z-eSq\7fb=__Y=iv9; +Җ&n1ylzk9#ݯm{< wJdVdDZI`sj[Fy"T$'R:(sj7i.+ȿ+9hI®8ZvX1 ʈXUMt &~>{c AڻLom-нH̬͖n8'$nƨ['MZ)is%2o@mr3i4]W9'ϱFڱJNVvaguT?:Ԋ8e%9,C]:˜oOf~'˥1>JkB[vcRWM(L V^l}kjipXHS̊Hɇ0^u7^F;\1 +y-pI^Wo 4̉FIy#9]EN Kgˤ +’P$PHŷq]7|j|Z9'bsۼfXo,W=*~c*J}U y۫*KK)/V1XOy-ԣ{#q8zSWM?ffe'גťamx3|ca?wmqo&n"hG׭t奇ؾqoR8;箯.{&\v? +IՂiX57s$䲜1jIL-lD P2r9V&PT3לgŽNhHшTE%Oq"I!uj +iN*2i;HgA$2n:21$wM4)s/dp9= r"98<،0pD9C+J-,u&m>.1FR#y}H۞0{i$$y3oS>G6\caqQϩY]( +3s %%ŦH[DzA۽AJ#pw>I*rOJnѯ14d|]bKVtBF/uw2D0XgsHpy""Tb#iZnJR\ڻũymȃ~y9zPzMNSwwtܨڭo$ |x@{}#~7qJJ=e}Ɣ/lC$Iv<SbcI0mǿT.)Kcl`[oj̽l@@/J ܰV;Spw9Hݪ]_4*v?/=>!bྣڱppá"mBKKw:-KR$u(c5~0l%dH ٞ:qXwn>ys'T:e%Fx@q=%Sj3Zw,h:x}_ɚFgqh2#- ӯr_[}G DTioc7%&UQ GNht}WJ@BOoj-٣=?ҷ Ԇ]VL.7^_Wm]ǒX q۞lOR4tH˞himld *mPԚKHզ9lch$泵KXm8J#FI$wo&l$z©RQj];6oku^O4@Arv(ƒxY+3h<ʷ#@5kI-=.ITܷsI#D#TvHtAdgc0JI_5qzS,VɊ%?0`<Vo*(QX݀:9OU #9 IN-g&T+nj\\ֲ,_3<0_nwy|vCBc]Y3YE%" jͯm=njⱣ{KŏO,5wz;/-j9z ۴ܭKDE_c'ޭM{IQq(3n{;K[S$pl.=3U$ēIL}:P䊅'v/5Ù6P]VQ#+s޳mI-VQpN7lsZy'[g)px:q҅ +u-KI,hqP[[m pN}kgAÏ֟oa5\ښЙ7;>UC}&#)DqH;O}3kpm L6jƘ-$Tc<t-.g@@w&Gx:3+N O , `z +>Gqzz^\!_޻*mĩ>%m2 xbCnʁpqYz}~"$jyhеxPnJ:)BRek)tۋuAdSlgӯcXΝ#gvhhQnZu+wS7SƶvnJ;6eJ^4HWY`kmua[.l9dwTZNm]+uUs9Wh !A/$ZJVk%.1 ufߣ@sҬX6ʾ8߸>&q;Lp[ւDW1<N:UhtѨi(y;aR:8Ra=Q46Ɏ0Rh\5 Bە'{l*˹/12r=ZUR], blj8OfO7q{ +bQ(z/d1 M0 >XXGǘ/Tm%~ VuO݋cXՊeKkȶ̯+IV :ֵ;o=âH`Psn]A'GjjyW[Y7BG9皵+L'EF*1ս~CMѧ c5v үfY"`q^!y<v瑁ڪK!!`Ѱ&R#>Y {VTDAZV0D /'uqcsj% J:szث*N';O>H5bTU#2KAi,v3@Ѵgs*}N;m.sI": fեO<:g>iI6m=AŻK +ʼnVG$zdcQc2RwyCl|eۊLl +w9fb9zBaT$Gzii`c\KN0qX 2,A$w*ڄfiZ0s=3RI_/.dlaqW? 9|m`_~>yNOoAقc,@9/gt6#=}F v2qg jάހJw..\M{%#\~ghr ́ +?JJ6H!IIxOk/W[=ZMEBqv!k`1##YVHFލߥ'..L(8.yal$G9=1H7أ$,Bd~zOȇ#,A洴)%u1L,1~g򤽸]ŮN2rWFQm4$k]dZ˴I$ F n6 `@l4K띒lwdքPNKdAk_͚`֙}^a]}_.nบ"şˋ.汦3ۂH=YJЅiR&Nr~a_=ݲ2Xl] ]ќn;w"$6E$RJwꌣ(d[[2H\Ae꼥 ZsY IZ2bZd[Y3BkqT4r0W@E^'mCuƃo'99OP -MpZu=wV%;i%{Y#Tl֗QY"gT<d_ˠЕ*RPzeGSLΰ,==jޏ'~.HXH' (mRiǶM7L#hWuԎ_؟PdI7`8 TZ-@Ȫ7r{gkUY3Gne8:ʮ ^x-V-Cԃ(oQ+YzPa[qp?^mP\Cr]K}$ҩP )Eœf۴-M*s!-z!;(WޢK$Ҵy9 72CkT4z"IIky%7Clsޚl/n4 AEB'hp7ȥAxd@).i %߲@601ڴfӐio#m3Z/g8Zݞkؤ"Xyu?ZwBekk tH\zt EcT$n> ǯ֠YK$/O0|Y! D|cnVHN+]J9eTRĶzzcZzMųitdnOj.}:E r@c݌K,Kؚ cVe +0ϮR`w'(y$nBy$KibFKsIԒcY_~8i=znWӠ*۟^{~U[:<E=ݸQ} #bc77ʕy|ຏXUfa"\4ƒiLe wUծR(nlu>ޕ7檚Ki~el<5_J<ʱh0;VtWR[V +p#'<ի/y*+# ?*nQ+rVcp-vsR[ڛdfڑHzsjYZ_G?z[I2n1S/Y[[uQ;69@|?0lt[Iqȱc|N=+:%ZEq2g91YZp&AU@FZPJ)rΘ&x.Ls^@ܸ~P:ZZŤi[yМ㎵І\&j3Jӯb1"H9\R&DLK8^:+^{[;Z cD;6sSSl 넒JrjdۃriNCDV'=k>B]8cޒÛjOYM]eԡgda 5[zo9bzGc}܂3UɩK[7wzkʗwzMn9-#>o]M+FT$ey`q6!W'GBKԎNT.a㝧31jqB'<9:)*fqқ $884BY.nՒ B-M =2h?~V>scӚӷ?k]'a""hr6ߝJmV*qVc%[3y9:c׏mu2M ;z>MasEq$ФۀzfR鼵%,pێZSICB[p_;; +Dq*pÞI-5'[ oQcK mnrr[9JZoǚKm %i庻s/)jcX+Qv;8L1M"bJH ]=z`WY񥙱Z+i|Cl矦*ķe}[n9<*Ƭ&$fV?.y@)ng\K=(&Cح=%WO[)2sW>.36r+B眨W~D`UcI3Eq꾣йdh"bhύ۞Kykie,OdL|袉FaI뻑J<ߩd9ج`i_\@$/9C+.=G506b>I-:g*3qUus¥m[k[+}UQ}vHά@lZ9zsVcJ8vm"RZEڻY]]T1lPd\ߥeiw֖֫K;L ĊK[ 0GEtO}G.8vv^#=+f͂|A٧Xd"#:枤J1wf-V,& ǿnx#6Ti^x@{;*ְta}maWlamk%MJMi[{Dwڠcǻ!=3ylt⥞V8IT 34KUZnq;k /6s$uemH>*d38OOSL[B#(^Z&dj`'Rc-##SHݦ/匆@Lˬ"%xLT7zG"\?(A_΄CbyRސlb[&MI 7?i\A ?JϤ3-}œî{QpuV׹r;6%s*ʙ܃sU.Qn'Ü0_5buK&Fpx h/.[3Լ6&9lwLGEM>k{0p:{{՘[φ9 ` 2sj~ոq} ro2P'?ϞkS8t}(tVŁ0\J籪^ (ױ4r3'wiќek0wl\T"w]gkJ[+HufrcӊsxieہJR**$챕*1#iG-ulm)i%rAt^V #N9杓FjS'm 4x.fcs֒Ok6ݾ6Wc)۲J]yez:VYCFX +V`Vb2YB3ݘB +pZlW-⯈^eͽw$\!xB?kSFC9G +O4'I?"O4]B]BJ0 N?J<Rדu%yG¿*}_|+?>~.xo:ib_-ˣH !|{^:_/ސϘ^s(ύ^ԦYhQk!)gZ'э@O'I??z$M|E}o ?$h +O5E#xkWY藒O<1y uaEuu?#?bWWO^#_WO^#@_EP|w ejJ"NA3^:=}c5M=לCv( s]"^((u~u.6_*TL%>Ңm6rJC +6=q\9$s5)ӓ++ 6r%XnbMzG(/Ͻ9hF-}@? |hnƩh$eE Y%֥&A!|m Q]׉ :eAqyc=EsQZPR8~KӐ+ Pֵqj,W|W  9ta_vk#nVJ^hrտ..^Hᔀ?AZzuוa$RWpqε2P}|d;B|)"U^G}(NSz:Cd3ŵ ~#_.2FqziF8sTq Y>PH)RjJOWEoc9l/5ZI5ۜt5=ē)o2@k><'+hQPWKznabjIl[7`1jr:CT-;Mn,o 0q5\fӞ:rw89M_h@n\sWdQ,wKd8CY#~S R2sFGOxۀOoTZyj|(5s=[s3sn" t\ 6Y68U*v7_  :> rjڄh!Cxɨa<$\+冤~칍zQľyb O"v8Ts֥:ʆPHՊ7)U:ի(`gf}ıO5"G "\lS 8ϿYdytFUd g{qAʇ f^qv++ + 휶?j{m:ky4唺遍VH.-!l۸pHxӧ!S68ChtIeBk%RN =1ߥZ5k*.>m@X ƒ=>E{ϳ۠"pu >%P++qRVٕ)NPz줒Xb 9@c8}̐P9\՛l *ێ d`ֳGdLMƲѯPj=1a|Xq @2$W>89\v.F@zSFbqlcnmtOlZY,6 T޴_L'cy &?ؒ57cZ n$F0ܟLJ=biKu#=ݤ9\VG5~i$,*:UV;٘neo4.lsҙѯQ7Yf'1:T'8ڵnyoȬ<~AϯlYZMʂY6}N߭sol,4l \VΝxm9Ъ81=i5-iTe&19}*-4eԺjuڅȷ3:3R[YB,8nXoSXZdVGAn(緔^F9Q=x'кK_rY[/A)y8g[} .O- 2rq&4=# Vd^!b2c1w7O^Cn)>\[Fz֑>!KU8vg}j΄AerNa#sS5NȼHih sJa}w)|`?+E]H!bT8Ֆ m$IH֛dmgD D +2?%+K86c#0km.2<@ǨV~y&w4hQpr1=sSV3nI\!hRyV&9dB)Sߏ5kg L]QiXcUP M;cQvy +8y<`cbga]*[FRĶÏVl0F$,zzĽHf,78Bi'P!Ȯ L*q[M {`*^8ZeO2yh<'8 Fq֧Fa>98sJlAB-4nCPOaQDPzrOzϗFKKi&qqީJĽ8z79U!$2l1*u!6Bff&x7` sW.-DRП11`r}}.IZ,ڃ=)'ijik-j1\ 4I$cq:|QK#5\&_vZ:QB0Kqw&iNIɶ%Ț -p]3G jsw  "+?jyKc"xߡ>Y'h^}٭/ . m1ͼ}:\L Joj#g,76mK.e#]_z"$LP9x!H0l֫*7qfl;sP;iK{1&~{#Am^8-gr;h꒰ F8>Y4Ir| RACo;Ė:@:YP`,iD9,0QzK}&m墑v܇4ռ[RH'1*֣)c +p'MŽʻB`ֵ-&ɼԹOD2q_H~HX@ ܸR|ZϭtO IhXX1X7*ݍOS* uy7M9'5-jF[(bݐ8Ү^h"Kf"Joo4Z@˖^GO˖q%~RExE*pq+>+E3{5Q"akOO&8xJ{fR9dW2MtClQ+4 4EU [zgd_䴕Q18tKK{sOۉ(61zRlQkKP\Jt&, +6_juYw_ҫDhSh%'=)\Gui4P+-t}Ѭ$LcҰ5i',o>Usʥ{qZ/<Q2!h0 ׌q[9Jkv5Q\4ew) ^ڝ68g{$bv鼥FszqNn{c{ЉAg0QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEzb\e?ڝk(Dlpjȶ ӽ-q>f{naP:Q3`IFs % +?xP%Q!pqҗ] OJZ\Ao,(rZ "U8CU39pq/9RXS-9Tt5$$Dd;IN0\g.@Ppją>z3zn2bHF7/͜q#%_~+$hrMVmJOny3ލR-Ir܎K$uڲ cӽIʰFyNx$1݁We '9n.,TFԎ1=jw1ƪe#ޭF7WhR@p:T~eu%s#d*rb&6dW0\~<$f}iFt/,ߜ/ >QD~ԏ;Wi ]ET7be06?gg̺𫗟h[h.&3r(S01qUm̔Z].Z0}e`KWjvmsU=p2e$Yݝry_s='&cbZ "_ƫo"fPұqlVh8?nBeV{)8fr?³Ekoy;`i2{\]r rGZi^F0| +InrO9jGo7kjrN$vΘ ?SM_]>#/csYz" E;ۿ.a("5-sU^)T _%kjiQj(%[XEu! 0NHiiH..MDplw_ȖVLz[I5ءYNe sI&.>i'{ickV/4qH2V>3>Rs !{]lJ,- hŎ_=jڊ<$T[Gpf pVNsS^y-# +| x!۵8[ږ"-"h5r9 +oՈZlsW~,[B ypV15ުmDPp"r!YoUֳe/ +\E ?$ )hkGW]D2l,ǒ?6KDYF{zU;`9#Tiڸ!W2Rr*[s}"cV-$|VUR8b!:+Z+`3lV V^9ABuR#sʎ$1lJZOth1+{sꅭ݁楙ȏhC"u*0Nйj'^(UN?"Ȅ04EOn-q6`FqBYFʬ1qM +yS&ke}nv1 ~>Jn=!hIPF3jx3\2m)] PSWgڴHN$z'k2Wjƒzի- /^AЕAY֗$滺oOYҍlimF7bfjD\RtMceta*S})Z},M "5cR[D,,e}qU,1cRϛ4Ӯ#91C"Zd6)`%Lޭ\\[3]K ׯY$1rr%ߝ[mRU,?#S_~Mu弖}{K{xEbm514}kb,.H$r=0砩lJֹajヵFNjͺ\6ɑ}+4۵iӰs#m'O8=&!ԡI,,NʠOb$g5[[{k)ФJ$vw]{Jd[(I;c>3ڴd6fwc08P}?jͼ&XdJ3yA"Gkw +(؄88ZmRv$)-ڵk̸9VgKi80 #\ qZi^2K+F/$w pFxOj^3qACҹ͏&Y؆pcTZ[=nClN+;Z L岌`ɨY!O1v9{ٗ+JOKF*C; hsmЬ˒e)ŒcP{UXGSNtÿ `L{U^&ڒ\2IIzSr̀$r*ܺ6pUֻ vw9ܩɷhj! 0L_.5n=Tr!Z61y(njtBhE}gd-ZF"Tm[ޭ;zU[:T\ug +I*2+RJn5-e[s8Y/*1!FIqSqH20A'9Gȸ gMTJLK#tג8B@|q֘kKGw +,A9I'MN'g:$!OOWo*-vH83Yqt*8֙%OylU IMlD5:ްJ" +oZE^\,lPq#:{IbƚAىAnI.QEޕeE [u`W/obe0{¢OK2e+O +MSqeMs`t +G00N{g}ju*-N3˹%F.G5rU~eYGfNzW;Xh.ќ9V'ƹ83O(X1Nqҕ^\.XirKf-S|[iv14|)u(f"vPQN)tUEŎ2ǽ>VQYF>Xs?OV!aBPOh,A±=V";}@=x"Cdy;zq/ʌ3(t^[)`HkBI_N[]$HWO=ƈL#~T-FI+}%&Dp#$qTgO./;Vp'*ۆx +jk-,Kbx`K#vyncivvq4rU [#kOPMqGZ/38 $s7+ mXyenxdzi%qޖKY@DrMA}1O&ԽpMs3'Z(BAۿY ~E%FVv$'{TNbӖn9Uo/#Ͻ: e"$aR&+ٸUrNe AaA gTR9'=w :!!'Bh7"iE9se4RJX9Vl$$R9PEr=y/$gHK3u!ө6i _;W# 3SD-&JcoGm%(7ȁJ'Ԡ7+X!ʲgJOTMl7 2X{mmr~|#Ss3βWyIӽ3iR\u-Lav nYM6{T6MVIؐ& 9.7`3OUԹ 3\Ȓ3n$a3y>T_󩶶y"vVܙ[%V)'$fe9F)-ѝHc?hZO"I{Q +FO'^S^&W"rmiIp]D"l}8~ kZs.x{Uym"WhRГ#0i$SM¬}clکGpvnS1ЊmZZ9\ᾣ<\M\#H|jlg:Zo4I,q;$xʤLwMYb^$)%ɨ\[$I7 +#8<5n4bpzӻ"1R85yR^1YZG c r,s8x8l犔^J,>1nyqIR91+OE|kP;|u&I[5 aw qګjSwKʇ0'Q[BmN--ԫTZ-92&;dwif=I95Nd*dCj2?lѤ>8xY#Ȱ |9 c}1ڱ;Tx4-B+-Sr*Zwb `خ׈o!=Mc20!geBʹ1m\Ε^EmM Y-iYYmUR&xRѻjM08;['- +]P܊@=-ݬ7pzKo)dhգ3Knm >޲3lA-`vҖ9s'-[}y!ݙ|gz}E$%q )T=s4MZE1gvצ}zB?xHltT0rN]̩.嵎If;Jǚ5$팋 EPsqmi6ff!Hq^t|ͳˆɨMxHs$$QrzFr-Aubl`xL98^)԰K5"8#5Fk;t*crdgC@9rP`Ȥ݋_)K`Xc}?T՘ˈm؝ez eI/̣Ui71J*=٢;I[Yl`N̐xn-)!`=zuYo<g[g9Xnܽ9>( 1RԖG΂KPGn ׎8DcV!.M{ PNGIŭXJe6&ܒɟ5p@2`ccI#!Ƙ8ZZ}Er[w7O`1P87m{I#_J kKY,va9_jx@8ƛK# mG.Uz~Fs%_dh@5mo}*-bɸ6/-P-ɦ{-dxN}jMV)l"$pM|FrI~|y½ + ߊ`ri!pTdtǡߴk2XBKsMLݳz(*b垟k[ݭŷ^We #}*Sh?5 )пc>p?_G4Bz>SX~=Қ ?{jq,WVqnT%kiMcJk/wO/_Q_ҿ +?hZSmVy2W?}@+:}l,"m27)J[͔gu~UI#vFN^ +F^?@>y?s_lxRռ3[BX@I1ݭ|?_sOD-h?hb $WE?=p +x{5:z?^J#@gExo߄|qVf4V&\ V4?$<)9$q#g? B&/t}NL_Fvc~F1].>xL-/7tUx%XӊC kѼkou&h2ۅ4_Фe}U ? c6,1.{W=k'O*hj,&,,,F knu_?&|2>}.{wroߗi8 Z[hC "1y?s_oDs-t)hém"~J(D7BQlWYjwV238$goO/_Wrtm?ZM $I|}᫝V+WDŁb~_7}|S%h.%UT5 m_ +ikvHbx'|=aiDn1 @>y?s_Y|>4,g,~A5-}KIo>J㶂-1ORE|#yfĚ\.U_j< >C=0j b#jϵb=8FK̨! y<:dPڔkFܺ2Yps{q-շ·ɞESTWm$YC9#3צ^΀Kn6Zv +;.w{ŝ]e9e-G95Mkd̶( $Is + ]Йd9$5d-֛WcM/5+˹g22) czToɀ[?Zr#8, +rܵX,RvsSu[1)bzңSk^5ز͝xqZ;+Gyܠp{qG{'S6UQ9^!e$UBBAc=FlWˏs pWӽlmDgJ>]?3m^xK8楾0t*Gs)Yuf]ƭi"6K$(*zM-53u"Lcr?'v{k{]29QHՈn?kdO6YP9*p`_-gRcp(--XWHmvE=7Fi< U:ZձVQKV֜K:ln%0B6'&w$BNO4حiv e S1Rb]2ḕ9c@a:UkF[IUAןj f{U_PmXg{F9*ٔQ3.$$#Ȫum!Q.HbFǥhgg4MLa1q럸:#,1 +j[}_7R8hrVVgIܟáRǾOz$K=F'Vr$H#9JwEgt(348'KuNݟlR +6s-|4o0":X"l`X!ep=sNPXxgHp2Fr|Z] MvHnO-`zwZI;J*"܅zti"2mp{^jwwL#T3ǵ2~!,YH*FQO<Zer:gٚH32?J[G̝."kFsq>{G\ B?fi77 )POLk"0 . ;wLE Q5PlQJ(lntڒGJ\M@J/@ArM $gsTd8jTr۾:mΞ'naH8ȭao, ;;V;+F]JmXRIڹ޽(wNIDd$@GN)GeaU9 cڗHDȬ's[T&54&k11H  `Qkw1\I-צ)zŎ%D0I!$WDڴeܜTtssÑyyy&ۿi$)PEcrrb rqg̥͝bWKCsV`Md]H;#E$5͍N:de[hWLW 79@-^-CgI>sL|qMGK֣A .Or+*#:O#@a#zi!D(YA:wV6 iO%تzIO&6O +qVmK Pwݷ#ӓET?PHegA1$})h}I.b3hQstj;8128>:U.smʬEvT;op5x䁁n#gzzS%)F_jKhN3(/![x'yK+ӞM2FXU\*c%TϭVX)ͽzq~il2(~N*h +sYs^K,`"6۷yT~|V_+mͺ7^M69svQf2\,Cdc{sII*ɵSˍyGZXde!I4Xs|m,c^ѯ]C¨eܜ8 #A@s,6[͋k6mRFOlkVoisc#f '=9 )*[Ҝ3n_ʇ E3-k8߹x?L˦18pAҖ{25\g$Tjn(zS'ka%N/7LtAU^ouٰd=8Un5w ]Jի ړ +O2ҝCVV]:#s<c偼zRC7~]=MȰ=@m>~nF*z\"݀8ZJ[k7ƷכaĊ|~`}iuo\y7g+ڵ?\B+3}P將N{Ahv1ō@^)isYF`ԙQEGQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE*EuBJ*2FR:mzuWdvO- +|Qf8S~^]mE)'v T91LR\n#l3&m5'mn,1[g;N@Xy`.*Е=;PRȧیFgޞ4gAyw1=G 0tP+^KiRU[dUUacb`fTI+qɢJ(BIUvx%t;WG1eq~Uf(VvӭM/F%| 4þ5ON=D:~x~co@, Nw6Ÿoiܻ '?ȦBv$SM"0rwgn})s;ҏ*Q"50f ߧ5SteYNrBĕR[8#RW1,sOj0Յ}Inzs~9#Dv8[aLLz8<3pvQ)9cc֚z8J1矗ـgpHϮ+aFH"&F@ oY$Np2sY@qqd&7ۉ@8uޥBwZ܊K ZI.1ʑi.-2pp(Vfʂ}sRCgC;$,A{u4F}hdfrvTebGsҶ oʏB*mqYU#miۙ?u؃Fy!W;y[ yv Ȇ֜[K1.0NqӯUO6B[VM\n."aQqמsϨ,(g+11~gm x-^kYyƈI,æ bM5$CBh yczN&qkAp_I Lˋk '>R;ϷʷR,7:4ܝDt2f%p1V r 21TRC'*1z[YV cML5Z+jEh10SlGaA>̏t=LO@g'$)[qùŐJya'9i{(杨VDUAǣr:)i $f,Ų:84i JWH;8/L2qjIy$i`˜>یzi"ՊDnGQUhmVn#(X. nG0Ok˦nc+wK4bg9}ĂNrj-‹u1yN&''n'o)2) FoPj4SZ+Eo1XXݹA֪SiCJQ8NzzjF_•}x \Fx>9avSq/IjkǛaqN{֦Q'k!*CqX lD@H M%}({I`Z~u*M c qVm,'d3m=jpDžbCWS(k6_9K cVR8RHW}$zʡNY/;yȻCC&Qm#h/?=p]%Eo\$0Xg'eivo[t rq:חnyzǚҾ6#Iwo ֳNO*ySi=@BX+3`pH"iJl఍7*q$wئx#l#4eOt7NzR*?gd]MT+nApHƮZnW2ђ021\]94:u얃i.YWvd%&$!"206wRhp; gڬy"i T=nR{_E{ߨd.X⫼;"98+Vu'Vd$R1@;s?*94uO4nr!9!1};TF)Z>^z{%ƒ~Y9$'>գ*"ӄ*ҪJKE0jW>lI&? +ɳ5r`N8^ 3TXX A6b^BHϨeVS{Miqf/Oǧ'/SV/wU*ۃ>ˋۈ "GQXKYy_ {i_J5ky~չ^UQ_j~ Il"I2"ҳ.ZW`緽RnٞzZܛ~cGM%eNfgqMjg&๞ŵڿmKz쑋|XJp*mq(,BHى:TtSv]>9/V  lUh{9! >آDO6VtYb2v^ +a.y8ߡ}0O[L|FʵjD3aF#?`F/{ sRIRM-1XB@ C.$ \z'22 5M#?H8ǠImc6?7gop-%U?TQ,hW5h^5,}x,HG&ZoGk$mOdgީy| {*ib*PXc#nyI379Hjd"Wy@ r8ϸ} vLv:$}Pc/ ] ;\Ͽ1 W#⮢iqox̐+sگŧY]E*Fxo8axla Ij^%W I)jkӬcf9Ybq* 6ȮIK+0$c'H:mC I pM_,, Člsj=K8eK qy|(帅 TywԘ<h%wh$A=xV )n|jnB$HF1UJFW p +E_] +436KMuWmu) *G\ֹ}:E/_: \AXL;2:ۜ*ҮIji$NoJvmq0@zT NPڻyѸvoNoe9t>J* _[J8cL%? uxIs E'ڄQZ5%|H6Q3wdso¨I[}DNvMY>lnZ,&1t")+XZ>d~h|qOEǵ* $vٷ•n*M0DRcm0t/yW"U"H`9`@ޟZɗS_q_ G)r_,b)_CbnӸtMN1"=xQUĻPa@Vm9R;lW'sZjp[6-iYO#*.{,d6@zUh-库˅763C%&ԚOHb*W|߆)Jɇ<~fUk##p[b]@8b"3]ZIyr#ni;|Դkj2,QѺ)P~կy +UKq&q\UmRc%c +Ϡ4A E='SbyTg9-¦V=PLaEUqN}GG-'QzIz[Kl常(PrkkOЩo&>P}kOЩo&Am.dYvdqV)#^ן+נ~ҟ0y¿*}_ |mۿ>6^DG@#^#^W+|HͦjVװm"hܕܡ!HA@%{]z&ꚴ$m2,^; +.Occ?o+C%aVHGS؅񯍿Qiz!xmq`z^E|7{h5B+8b }ׯ?^ +լז[4Kid SQ@zG*orEyzG*orE}o_)|wu_\E@cGBn(ξ OWwj UYCjASU>?/fBh +WxG * i ^3j,~avinK[%ݴRjӵc% x{Zֲ]b n l@'ܲAzP7JZH7]FyJ<Ԥ[a9i2tܷH-)RAUy8gf09WZT&+TDCrsbjOWNs HHmx16sHX.ʪJnO*KvELF{TzG%].GQޡTKQ +W!J3"JFhί$ab4.S¯>1>Ix;}F f{uoN +c_/p1yggdhq9TpvĖbrZ2GA$㷸I,cnl3+3j[ȬCpGjQn. Tf''-Jn-Yj>X\8VVO1H*@MU\ +t|5f RR\Y.%YD@H`u׊,R%$T+>.0/STڟ*dծ>-ff嵺Q ig T5P[Vl+`Ьa%8{ؽ ԢaZ>bP@p=k4z2YNLJkۤwL|R +O=jŢV)Txt˦Ii)$TdJ7Ԩˑg*JRylMoy!dSˏnw6Ϧr\5#HvW?j]>@z(z\"7A|&@aBsթ,sImr`犴Mil*E1(wV|x~ʫ*q;'I)j nG,[bE# +G#5COH$v;q>rKpHVBWMXӭI勇^FqsK6zl̹о>uAj]Ƭ%| 3<׫-; yaHV&/P(mzr2uyd=.IĪԢ\a4EG7~i^D*3֪H2,r|޼ӴMlA kyq9ko[,p$;(syj/kw1}暶Nǯ'-R*Mg<29g$ݮ:qkz.m>}+-~,ɲbʹ}jO=L3WUB-a + +w3Tbf +j\oq3&[&$屟ҵot6x$fAb66]i:[aMTsՋ}w/ 8usrp{VZIq4w,3s֞5iHP˖f50$WVVduuKtFVذ)w8`ic[G +eAwxV$H.Xx&B2\H, }[68Em~aJqm%1}(Sq +$nհw>K<@Ǔg:{nu%]X?Չ^s2=zyZI٢DAazv+H#M'{QW:ڼ8KQ.RrG`VCigh5 VuQl +mIȩr'ɍ~aZϳD Ga5JMkyD@oB +LסnZTP@['#U@>fݻ5>ɩ<1,e_MfM2!<օ8$n#pkgYMbx#koyc$c,)@9;KN}Aݞ$I\K +6>F8SǽRټŕG#.6Fs>&um} iO8TM̞kb=9hfEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP%̮vmBa* UPt\|)-ёj7EI@ާB,#[${c$v6fɐnoZ +,\ZsJdҶk#hc*rN8lmwnюct[u⥴[JIX:Itз1SJvy%@;:hmk}5Cc539Es2j(>N)nSu,«ʀ]zw:U3UtgV-^VU 3I +}uc)ϒ|bR +NGo񩤸m5ln&u+A,m8f6HRRW"# d_jjE Q`S0ȶs UL8Bؙ~a=#*TT67D{|Q2Ts}v9\7E.XmV}9`%@6ZbD]pZ[S&hH0^ ,)1wvsO7>[U$T;~ncf1I嫸}*pʳ,mgi,,`Ha퍋7C⇮\Wy 2NsOJ|nq_ox4QO<͵rxO\T{IJ<1qOC}n"yăBNzIxgrL)S <Z@nzS5)F]LҒ36Iɫ[,2,2qɩnD-qD)H|՛b\ ǩ<5]WN6l|`:^gKה%NSJyd'Qɪ[.R g94.l&*%>B{G;YUl(݅J)Ynt]0%GUQI[?J? u?R+ .sS{;|pkbBWF95Zs&nX!j\ۙ1yzַtte-R Hf]7TZݦA ϧsUuKEOѺҦ+g:is5ŝ>$y HIwvQi:,\e\T;T`=9Y%X8sY^ɢƒyd*w\L$Vlzs֫Y;E\y%(Qٗk}YI$H#rxRCQҋ2eR=?Amq$ eFǿPjJ 6OJs.In2sR-II>NsEm`6u,\ 3V$"OEi[ +nj6d>S ? lZz۴ɡ(I(~go05bm?s,,pqU`v6IJѵhⷁD`Ilywt%Y!YPwsU?Zf9Y~<5^&U ޅMO25,LcW0n`F e.՟*mlXR7v 毡̮.KO{p'S;w7'ҟic=G't|E"b>VLLR;qǯz] +Km'yˬȄ,<[$jK KSv/$Q{ +Inңވ mɐsOzm&Jc,,M͸Fzٚp(}3EBt;ų[ +0Ǩ jR6voyv`zzӇ %X(@=U ž@HzSẺ>@;xzno +֊z!y˕Fv87:6 %Jn%؏g=1M])0=FѦym1$g8&[ݝS($cI=%ST$J+`pC #mw?$R"[}TGO<իb(¤"zc+*5S{(YHf5l(AZ攦꯱{,:{i)YnU-&+]p u'6 ,e|NVm`UHSr"6ac;&+2ɲV1H sݪխ?fPJ>JɾM܆u !c66q:,um;47ǫkI{V.AG%& +eLls7Mojyp9&A0+^իMf \$RQ9jn9yeת)?i9HuYkr_SWk _x4I.{~T+|pcFS}UhZk^zR=-Fz*Km.+7Ul0_iԎ}`H, +; +S)n٨{i^Yu`{"ĒyX_,܌a$tfemH:sYR\pBfFJw7 Ot1Z*9o^}j 69ݒ?.. gr1MRe7eMkAcM.3K4lUnTeGoj;rUI$B9yJ^5aU3\\<jadm:6Sg>(e*=uԾlv%g=MTj!w|{Rūu%„szi$\"b9^(Iy$^T$w_ʣcIn}tϪy[iH@V$cAζPÜy?SnLK?8:c縧qO䤘*7tjnKk d`g=+:dWFy(n.b'ux7Rd I-;G}p)5x&i'gv3T6 `cUf\K3oFL *X=y3#9.e~iԳ$!TsFAk!N'{;iGs.HzS^+0I98ȩI|[Cxϔ;6 ZpwlmA,j+q4P"s_Ɲ&5#ʕ[7GxM0A>Ja&w0*[ +mIٹ`>0<>c?9?2bܹl!]IDC1n= n6Ʋ=өhʥJeϰo}'TeR3nXB-<"<ݟsҭً»&cyc3 +GV?43-GMeuQw TԢndgOg-ƞڀ\G +ykNZ{9'1Yn%+d8RWˉa?ձrxƣ%ʅ|czov{,{ UFu1 .FCTr=:uэ˞Z6I&A\G9FTkgқsŊ{t!OԌri-gZ3:F܅t~T6;fYHZA8ܥ'~Y/oq%̻6uA򼸌vj|G*a.v0tJڔ3-epqM[]94VdRg׽eU6f 1>l`NqW{\[ gΑӞ:V{kh,bp1Ϲ5Ӻ;U +Mw%ſ!dV;fhCL\9B)4l$&U&.&Y$9:TY5r r=oԻn yr:Uu@+jHU\ݷ[>[(sq&qԣTe$ 9A?hZ,uO>Ilc2^XJ 8&\ܩ;yU;Rj;醠6 FbUc{xPx+8-6)w*@Uym.TuqVWlPݘSN&$$b ҙ:M8ܑ(B).[P9'КԊ[hI'n0vvw,5%'׎Բ8ff@)Ԑ3U`c\کHYљy_NJàX6{pOӥXKE$#ƦOg(×{=4JʡVvR_JPq^kJS53 ;Ts?O¬xr[(g5D89jƼęFy=GTAjF\2t'd~Z[Wt@ g'ZEZ$O\g*ccj1Kۦ BsKrV\/*m +'ZYt{yJU1z5Tf䕤fK caLhV o˒3ǷY$`lٌocs?Eu%_EqF?/Z4'=C̅7.0OJyOq@zr=֘[=C-su9ڒ_[vQ26A9R8\ػW1ӯzhTIǡwZF@f ,̋>nZF +Y +BC`F1_-pA*FHO2-QsKRۋWH--k<,<}ZZxRR8` JO!7k??h%ƏX4U^j?;ۉ..f $6c5;]gI^I3^oK?ÿ:g}пa?/ W%OT6Z[[m.%%2b9'Ŀ3vZvK ymrHwlp\o3E !8>u~{M}ỉn-\Hdk(d۫1@I?/?gWcoሓ@&ɦ[/xnh+CGP}k,O tu Y4X%#n1?7? $_ˬEGc2d㯥} Y^/^G'|nkdvl 2xWKб?"ú~V'Sp3ހ%Ѵ16ќa8zy|y%#;=p(JowDu,O׉2ףkU >cT4|zM}__xɭGfl<~SI|îpkb#?(T?b=aqmd@=FkVgguOv1AE]s ++4Q )п}=¼?{C+ ^=~Mw, 3\įOOn?#|ۭejtX +\KW ~΃K֬54ZG9iw`Ϙqus>-w"_iMYE"V$Pԓiyuapw3[N$2akƞ-"c)mڡz^U㿃q]DgXBG)~YO5_ hğ0j'= g?`6O[/ukI5˺w8((dFVA5 IMr4_*гc|"iWn ĝ`p+?X^;}qKmCYx y)p_lRrտ?foDYDGBqTEvH[ cҮh< $ecZTq!ua J]ǝjv Cs~Ƴͫ=/+2|J(ګKhI1ebTdqҙvO ;s޵rm9O9dcylY4?2bz*d8Fbn9j{6kCgK{qm1&I߿)6lR=~zBX4kXw rd ֨3 Xgj.{H=jWgq)uqcEÒ69#bW q$lP݌UFTJ3.se۵ {G r;l94KK lEBXB `J m:KKbȷ&2FO>Z[k4l۬ gnG#N./̂Ya`  q֬vZ 9Y5[m>xoc*}Osٸ3Z0o5üN=*kOϲKo+cTݻ==Zm>c̉VR)% )e*J6z=`Iyl2 PbbY +й'Kɓ#j9kjKc%GYgPF3ʆ"{иIG j"TqKsERAX1Eij:,,=gm,%$R-Ţ7)Qc֬"`:T6$&H N1MHE $F)#I=tؚI%k!o0߿} BA{.Y +Oz͚渁%(`<ڹZS$)v,G#F\>G"&̅OˏZ_-7N@/˶OsA;Yv+` sS,>hauvQ98MLJ٠ӯ9&NDgsҩnq$i֖ fZ;vD9S3NJ_kBry^m5ň,]ȫq"/%ݷv곬)xb i;bYN11?Κw&\ަږ{+?դ AHx85o}tEg$օ}[TiLisk"bzjgxl|l/OϽz߾!Dmqmj;#8?*:*w:MAmcZ4Nib<+61EVԒ;i"@.FO_sU-c14 ޓ} +Q|"k +kNJ[#XsNGUIAw$qH$Uףzdom"Ko4"'n8EԝnXǷk_m db*]qpt2Wެ\>hD݁qzkTO;6.׽:Skebp9~c\WwN, \֥'R<5'DeVT-ѕdM|qt)1OKsNSZ$M6䴞B6b +$o`eSsս˧^W:wZm\M-E-xa{k] ;IhԆKwj^a+߂N* զm=ŴT7}mOUD{48%#*{"tmu)mK?Nh9'ͱv{=Bm1d$?JPHMtYO# s"id5E'7ޝq%\C>le=qǧMoR$ mnSaX~5 ?JObInL27 sj^Qfg!jH . +Nqg4oh*Hdq9 ҖL6_qqԷ̃~^ ;{)deH<{dw-Qb/5x9?Zk;m*ͯcQݽC=RfN uw#,^S?AӟJ,ApNwӷt庖)R+ќl|U]{Go#RQpr+2] +KkjREO +R_kbQe*۔9 +x&,M"?#Oְ$^1]#Hhs5Mz8TtCn"[xA1 vFtH,ex䰒(gvNON8 ջ淝I{nkqq#%܊#y<jK]Me($QH2P.W5;^j| 5][Iu.9^>3¿21L\ڴx4##h>EbAߞZ|jk塉{m5s"c>BY䘃#nNkk0]$Sl.1pyT9k]M)Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@D3ݴ +,|oYxX*|qE 2#s*:OXjZ;8PITp32F +7sbڪm*5N T~t]U-ˣʉ; 0M㽌%칒P,q ( +*@j(G1&F0`vo +QV~h-J~^ԭfiJVks1UM͓򓺡2qk '@jSlp¼HObF&H,TOh]Awm GE&1K*,))w >!;5.%`4#\Lȥ[=i!`K'*@tӋ#i-xT4*vZ>{( +1bC`R]\AךD's|#iYiC/пb9i|4v}ݝ~X񊥵gg#3>m<5F"K,#v@>{,*gSd`*nxI86䝒캄Ǖ`T ;p jIhlOF#ۜzf6et/q#ƴ/$o'8vbL1\r*ʍ1-˧Gn +8=zVo\p3( +r Mdnq$f;{m22P>֗M#ʹ/| ,M%*w6Nx+9MjfūF(ÅݐUȪХɁ1wtԷ]圁|.GލKӭUiٷ>|gczVwqJgƠqZliS ~.I#pY#0y+9$݇)W 1.Kd`FlaTH.+EᵆP ;U[돭$YFy_x1bXjNhČѮ#?JHXFF揶+{Wi0c#5)joRqq ۘUClϼR$$+vGR*wb~ +.Z.ĎC3sҠ֡XTmQ>QڮŦ)n! +i<`tDZp/cAiISǿUwЅʢ2|`"%1BxLH&飅$P_(n%AP9w/z[,RTݚ'2\GlWɩ]Â:1U"Ofo })iԴweAip&̷'2 O#ԉ!k %l22;"HG7Fɩf7FUH@ۼ@֢da2WlQ!ܸ*{gD1&Ұ\̩wavPYW#f sXq.9`ⴵsa/[r>i HdڼM88+=l<f n%7B"c>;6o7D8z{QQI'ʵ S`űvq9~>nCotYwt5]#ڷ峱+JORI4= MYL-myp܏8]5+hٴ 8 ϏKUdTq}\n^E,l0Yy9$OMNw䖆UiH]NM:ycF6#㎔ySMI_,Hmĉ=W­݀tqeWK.G_TЅZJ?1` ]=:,˴g?\VM#F+VDr]@,ZODoh$tVy.ǯ=:eҶ࿼O(8o9韭[!lIH2sΈr+3?.Z5W(@ӜVvv k<'|nY;RA[MΦ(k9Z3Jq\Ȗ ˛20?όԓ1Mm'ߙ✛45r38\cgJ#,F3Kv#Y-OPG-HB3dq]SI#c!s֧$y(RxM 5MhHolq5UK-EM4e$c;¶KBKyfX@8".J]\G7mh (]w;8zuݺʻ8^IGz7Ok9}<8Ү%6fKJzPmJ3rj[`aI縪&W'oLuKOOT/X|ʪ`VNDy28Z/Z`̓ԟjhRy_j_ZydH5J7_g[݉˷{ +ӗGXW``(㞾Q9$*~Sך+H6UjB +גʗv4M +qWe6мYw}ZfqqyV9J`F3%m}_vxh)65H i 3TMkZ\FZFY!2,px>߭7W +eӏ 䱌oG5Z)tl}iϜqm$ 8UgOzYIn u*L=꾗m ޣ,M: 3*TcӲ2v.oo4~MG$ qRK]y|x{柤=D= +1 @71 C `zuˊ֢W;_$ ~*[;.@"a[ +:ZiR\$򛑍gY)q}ݳTZAuNV8 `zE(WbH1\gӽPvB3+N-z}ȏ pSލJC+]9|fإp'wE#yln2%dע<֒ɘ$O{tQasY߰mVbGSSh`̑]pdcER\4#;㏭>u4E  +8L]mak-.Gld 3@.T7 tgL*+]-YHdV.Y1ZͣZ G¾N3Rpq>QkȔN70;~})vE cm6(D)8cw!yA#8V2znN׏yM:vћ)[ eN!oeEb19V+?#0oqں9ڼF.maCpۣK[vNx.ɭ5)a2+@<ⵑc`L$cֲ}LFلM7$qBZJ*q9Z/b{B,H=Vi$I*;{T| T(N[9ٶ2.AI6VVF*C `=Ծun,F`O|sB$fpBǎ^qsm,Z- JG`L|1n1=;>}2K1}굥G< 0b~q@uKkm-`F*&۸msޛIixB }܌Y#tPNqWJݥ; vl|Pnt.\qS`E)ʅ|i;B)-V;XG$;{+;"7MY_\u4a H=*C$Gt%v(b>l{?uis'BXzK򣈂P94R^c:J2[lUǧjѶ̣$1~5-P[\2MX$`9'#'ޝ:pm%;K'1}ՕYHf!A cfgY扭\`:дh4o<7] 9㚧inI".H⢑W.tn=Tז Ѧ +nxNխ9W_qD,r|9 ,fq5;˳csHgg>Vm"\w 8Rx=zRL*!tsƸ: +2!㸫zOio,Llyqz_a-ƻ0{Qm)Nőyl_E2oWUNZ{(!$}+k  1TlnIwP pN9i=tVcvϽޯN[`N3KPRBmGEO-@zѫıs9fb15S1G\fd>aU$mv9KI M#pTjNT%[K+厯㞜[UMAT*7$gr?튈eݤV2wieljvs + [bY|Fc+6uۑҠV +8Ro2Mz(?z|( [$WVm,-kͩfفFazҹծn|a7dOS3dvڤs2m6_zsW5 #5>P!b%X $Ti06UptIÍEghB1Pp=A*KKKo0AeᑃqҬBk;?6G#d3,eح5|wǥ)hW- }c!lU0\01l}j[ԴIe''ivNKO458#eܴ5nO,^Jă=ISZKKI+ ![K9dA$N)"n$Va8h;9QV%{doݰ IJ1$̌ ޡ`o?E"KhnTq,?h,.@(ʉgK^e3\ԚJHy#nOҩ`ӧXq>{sIfLvB'noRzBRZ2_m*P[+,FYeM*yތ{Vj[g!i#4Ԟ-y}獎F9?ΤSM28E Ci2*%̋IM`ǎM-5j1Q܋\Tm,;s=?S*mh`P9k!"7A-7ɖ T2H2}:։r>{{Gmݭ;l#sT؉q#'9Fw\i1]ߔ?ޏ2Ǯ}sYyb+m5Kk+܈dgǓSM].9*--:Xޥ vd$懠hn-4n"tW$85)?b5dj8mqg>)E=FvַW.{yXCW4:VJ6ztE +Q[KO$)3."*<2(«1 }*:o~ dͻLS!je \E02{UjpvU*m/J׊>֠>n#AkaPaysqJ2X/'%rr0TY{8gdӧҭi fRnOji{YV819Җ6ܵvtÕ`8 zVLP *%<9q-hntDBAn[P3@-TW8;sN/PLTŲA''Hi7,y03ץ ltpRrERUl>h6c?(ϧ|R}HPI#I&Ѝr|G?M(K=^_A$HW$?7?J F3}_h_0+*kgfp8'?$]t3xV'є%MYf3,\X He2$ˢ>?/zWZýrKkpy X?׼P?}ak +w +*N@VW+&PO"O?/"E<5-ω4[8D + +FxtkhS,ʒ;+R\M0K#DE%:ZW +O(~Z~8oxEӼ_jvq4ܢ[scU2˸"D{REDXdqRHI[2SEն6֖%nRK.H$G1U/-^ukDι-DoZF"vT`e;qZ2^T&neC\G5FuxdT~]3JȀӑk:_,4VH̊})䣇=۵hۈuߝOZ؃OImm`/gJ7*(E@)KMiA>b[zp/V{f$p;SKKd; +91mA] >r1Iu)Ed@7(de}*ϡ(cm)'6! AFkEMDܞ}BY2ALI'a`9խKNK{%@53zEUI;V-ft(ەvϠ5K֋2vS7ۯoҨ]Mɦ@+ Y@ЏíWy,ɎM!dSGL&F{yǧ.2\b?U5VVwq1QO֩ؒxg@b@H]*+w~}|FܜWbKbMQ}m8b:28E,!t2 UcW[KE )s7x4粊nYK +8j+[]*Gc:gV kB"#\;cm֝Ŏ쨄dvE^ϖ1-5E (J{lL$%%8ڹOЌj&IEܮ}3=(!VrV TOzr+؍ی'-KkPK~w7in0u #Sn/͖,AV{Яk˒2u*i],ѤrL&C" Yvnk䡶6}֖_\,nb/5Vd3H3 +׻kb:^C|~ϊ,JH. +?ٝ=n/7PURkmFXy-Y{TI-'=70ݴݜf)mi#5]Mon.͂T}ϭ'qVLH#}n +qǽ[aVD7*p9XK{hYrÜҭ$pHLp.'PNPRk,AY;sQV =U% '~ybxeo%ɏ qړL#SOtbnpl{P-݇Ȭ.MtՔj"vJ;q^ܦg!YN8[:4̃H(._sC BqZեmJAf +3HַnF֎bj7i;&fh|": Yde#jōi +]\9:};]}t s>Seӌok.=J2y[(&APO-oZiax|߼h6 QRXgD"QZSQRz>?PƑ=yr @}f6)~cJP}*^vFbAxFoA4$kk|ImdK!e8!՛&fX7`m1,RP(Þomsɡ;#((MXPL2ś(#s*2\X"6fp~dLz \aWZ͸!LQhuWq{k@ef06pG9ϭfACo#*P T1,٫|޳ ϩ R]٬'X5" C~22~\́L/Ú+`|קJvg}=>mҧͫ[s ,$~,iZIm%UlE 5X#$M6$9cc=;D>{m o6 dn6zЗRQr +:גGCng38F`=^Mj^A +EnnA)mdtשlDݟgvF;8f繋,2fb2uZƜڊk<.\ݳZ\4LsS"7W(3 +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(6{b20y;@LqU]% qRZ]Iut9IniΒJ0lfRA2v欨cY6,sT9A֬I'Ck.9Qc3[f\S~t8ct]Vn?)T"E@^j͎6݄"MHȸ<ԢhŠ?#ME~Rfq?^% *&<_~:Gt]Nb#߀G1Ȫ?(+w=7Fr^O8hM[ ;=9lY_TFafc=~)s멻G٥v#YR+A\ڟȖƑ )ѣހZ˼ 7R޷6;Õΐ[y1%F8,eд$RI)WJArBH[hC=YM'7 +ր$Uf1u-rxʓo,GUѓMؤ2nm`L!7|qX@`фCq2[Fv=NOZCq*3qXե䯰ޔq$_+HF\Uo!E".w>ޞ-ԦX OCQ-5sQ~Lu!v"n|*¸=?ΪlG3f&[g8jsEtagP!݂85g+[K[_f E^s|nUw8fk;0OMǓ9N]"+f{nsJv^KORݾaEe?;-'P\K)if;~Ej'|Lu]sf[CsF1I a7Ynizę|۶:ՅXг6#q^ a2LmS0>fу麡hΊj:QE܅WrprGzIp}[KeٷImAGލ:wJc=x8Uyc;/3HjQ$F3&T|_Kh6ŴL';<8mI,ށSd瓏J2Jqk?1뚹j~SbYM#H>UH*]I%sC~R01ڢLWW7+bZ}k?{} 6I>,Qc^hmNIoc7 +FC5m=Z,C&7(kM 3LK{=J-0ZzTܳ'A6v:ד52 +8NvШ+uR[%zK&WeI:^af@NCކ;ɡ|3zqP_=Tic%X& q 3ԫ'Z-vwqy̰GW|j̰ B瞆s|*7sBkB*VQ+5t!<b)#0?<3j:-UNF9RNiz-c1UY +0C=8Ԗtx'XȑAlA\} #2(bN3hiEwTY1TMrć8[6CR C{*V-j@]B(ZԺf[f2 "L*1Gp dzzX2pǞ4ں3EN[BY-ۈߒ! z}jхY + \bCqIsE3)6Bη, MP~kf\+Gu#4l30MF7+`xI!bjdӥk/26pښ}̥I79[O;D퍳on5W[<%z(EZ6%ԳȲcvKs$J +ss=93sps +p:]ԑ`fgkrRW>\ؽ¦.F:i팢Pʾeby8%Ac[M8;3أ[=\|f9E $0])VYGllջ[䉰AQ0.=٭烗6H.S9Qxj},q\G)SpqGi.$xª +gT^cb7uD˘dWv#H$g䙡F vƠg>jƙZj܂5nH8Y4ncbr8GOk~Qo) yfi˦'7*ٹҳ&Y4#2IRcb^ֹ,bWqW/0ZK nVMgOQ6JݐˑOj,!2=崋rG`)NQ+6$Q(%ZI5F? LeDkg +dl1||ѣ$fYd=~eɼHO{[p?L~=j̷kV4e\ۏS{XI`z"m$]Q]K`hBGQZm\Z\Abw*JH0c{Uj9L 4[baV JF~U>vzCqJ!!GqU#nvquͼ4S{6{@p 9t-'tZLX5Р}8*4%4)#C#6@ŽBeJV%Dpre;@zԐ!V;`f2^3i>n-Ą|X}XNҪ66rJSv[x.n!w#'͒@6('I62U@|i {~c;y]nq܌[I]*|&m{$޽XsiВOKJ@{ۜ^Og8oq8_Ҥdf/O=5LNױ^-Ѹ< -|9|ޙzb_`Hy5JֱܜrK""6{sޮI<"em0f$fCOZӴYu9 3y3/^ֆMkggL#5iZ q`}1j53( 1О;ӭhmBFOǽ +\fԝmhkW%&t$ڪ}"S2)>XPRY/n42Ȥ Ԏ:Tl~ /-^w̬F=>կc9s87BAm+\Ē lIyTukiUd;dOaE^ݼaI;@~jq$Ad+`uިխ,Oa -l?ȧ=rH~uio%?;H.:r: > 8=8^zN_$X!]T OZjp^Y1,c>oRsi tmۃz;ʲmV1k68IG݉Nu&OKk3dAX0i"K`@~UM38grΏyu2F wօŠ:[U6r:v={YShqӅ~gt6mOmrŤJ e6C(Z.I8淑c]9MEl2&zϽrڅk?+r'ʭ[_dȶQ8.<֟a`QO7;^#Vj:[Dz"s kUK-_䋑^Ew8$sުsr/{\lϡ&7o&v>P1kBl%Yۀۚ=OOΕmmfja9C$؁R4m—Q{ts`rq{KHUgۏB{̮ԟ"9vP5U('h*éCCD+$VQ{w-0,.Wn\7$ D q_U-=,`co=sX^$x?ҋfA,RBdFR Tuj:EݓKl0_HϷs"'dhK\Mi${"PsjEbdEi3InGzZF5s!gTSƍ +圗6䋪XȊ1!AaA>ɩoJ$w$ ږr2rGR..'(zSC$ Ug|J|TʨIGZӾ;Ic+˒[ʑ+&V/617Z7w2By^[ݜ~ +2VmI9"[I,=s5 +y/kfkR@4 94 VQ4(.ňǭ $vZ՝̬N[9=ϽU5 }o3>P?4 !eM,1CYBr*qy2N9mj #Q%kqO.ش`WYW#ޘ8Smo~dC-O9?2Zm3FFu +:}z{K=2IZ9Ur`q֮sDCL[N8x\u=z +OsZn +.T%QQI( e CEoYY>5#=*XxNFR/ST*85w}x` A=x [Qr{@na W1qg;1֯,D̜,ګ_5K.̜>N`ciu.>.I)1G|<RlV>E&j?&θI"jkmY=ALIq!cq,89|oSChm FrbiYA 8犮SD64b9*[(nϷlU{tY.b)'&)7kcLe.lJOX H3F@xZOe$kkikv<mgXY]UER_/4nҊJJ)4lUOCI##y Q'͎ +\@@9Ugu$qR@5>wvs=&Xyts+[ nt}E<%F!|և۞7U!C凯zU?frlTj\,M 䢑{;_A-X&xXmJi9uKb6pMk%>^BSr4dދ X,I׌Vy5yjzgvwXv,аcIS =b{p]f +1UWI̻y⣞eM4g(Kj^/:`Hv=w ȯ!.nZwF|Vk=:jk6KO)wlX?*˹p R#7@ɫ|TEẼǩs. n$]{d +}qq|+ntq+}=p=:pT1+nGUlʲr's Fibv*Mk ά*& c#K]Zks#D%^>`'Uy; +dm߽cGPEKmu5}˴EuI4hZ x>ݛwC=;UDc 9% 늓|; sҒVR9>ʪێ8'H&KCYPmv3޳D\x^z *]rZڪ<D_-ֹWv:gU$iBb)\qyئ\[\ M^m_ZZX\ ^F(` CN^ȧ`Cg8h{)'#Qn #{U'l594]4R+cKM.c;p}>O6ivܓBw SW#2=N9_AAnUE:'n6㯽I&~u0>ױ$mI6KX|~iЫI;Hhr?iGbp +x{5}|9n KnbXm&:G0zgi UԾWԮuͻ,kw19'нri U_?*:R_?^ۏ9G)//_G(?|7@mW\Ҵ-Kt|;d{m$?_A$i U>-|M> ZqiWvg7~mq@æ_ F3}@f]H"il6Tr9ꢴ7rTŠ?-S㯄t^LS7s R2( q&J(@SҸ]a+7W1Fޓ.Jʲ}0\c]a+7_M|>h{7K P:v-{w9n\ShXPfb(о5xYfONqrѫs0=W H?Vd6tcyvcC^hTphz$_M}:<e,*+8tu>??» xKG#Kkխl$LH Xva@it7+>-|U{Ye&/r26+rk ZwiW0EH븶cjMP+a}qj6rywVоvTp@].߈0䕿jgKCO-9[T[q;T9k=7qYddԙ')_k[Lil9otWZDΟ)(YԐq@>Օk֞Vm b0L sO?hvkuA Hi0LzW󧆾FV\_7,sJX8bc8M}+PukQ(*w@5}qtNSY[E.Hj?4?w] C1J6sPrTŠ?(濈Zp~};OKdIJ]МȬGʊ08_im:lØr:iGCBѮCZiF1su'4_FCwܚis]2p6+ƿJ+о5sYtŜQeX2FG<tm- #@!BL1]i^>tۭ*h]"$x\N#_qb>צѵ(*U wWߊu%/Vh!ψ(ې8rk2m.=zcҠq.X0eQr{q΋cK&3Ջ{ ˈe #rԝ]/.=w ʆe +#fA{KI,b8&U_`ޡ5Epg/#\HG9>⵭n#ڪ2Va==)_ROu5×1p:&h]&=j槧Cj-Hwg>aރީB(F*2tWE%Ț+Pc0+k[[̩ܘrIe&FzVC6`d*0I6ne|Qp:g-o0Q ۶8jŦ%K11PxA>R1B#򡾢I6m[9V/IvD֬jKV:Ңs˝P)5~m֣j #8}7)"+`ɴO'6{fIn*aWYmE +2_׽ Rom)償)OjݫIsg$Xˑ bZݩbo/06 U9gPn%E$i#P8IZp-nMI['nL+=9>w vƒIfWsv[9"38P`NCޛ)ʨJNwv6nrs JI.=ػc%ȨaBvVd./Jd`#^ǵej HbVmkE˫,O}\4e*Z {icPh _ZZ$f(Q E#_:͌o62PښLo9OMxN6y&5[A'@F0?J'E֥ 3Z9Pַ&dCgw.Tomw'ڭIxx +gyjiI^qbtmmb6"h 1sVq! L{#F)'sI +fXd(jlrӾǖsQYiL~n +n 0ۗq*NMt7:YAgA5Zs"g;d8U+:u]cAIsolπdR3ji;efrvv9"YNη2Vb=%f2|͓'94ɔFƟsO1S1oj%(/LӮu)n)g$=*%O%V^g6/9{7G=7Py㊎PYF8e*3&B&eYMԕH]V*_90ajmUXff U=Kna$m0:z}sRia}97kKw+W,D-nUۂ3߽[,DgBgwW%$e,`r\l?+ڜi--̉;ք:Xge ]]#VUӍc[K]p6Œ[\VP$(y3zvdi,a.TM-2,ąISDuڬ98ХH%iۘ˞4b]I ]>8oV6ݜ߷Z]F9Hc_ߔ7 +y?eC$j;ϭ7*~ӷfth6{֌]nH|2g#z{i>l`zC}moYySFi|8CI:߰]WG2G_h#&)5PaE7<*K-PGwj8%kX <{~5J;Œ+goP@1sӭOCw&KYR5dީAГAkH)խX>'xnlԬ%g\wSڻ2cghi&Z2]>;k՚ubvzޭKڄ f ;}>op#>juK>had +W"f /kUzt4;g8D8;xaJ5?f)u_}rʲlF&sghϯIgk2o* 2yTdᣓx֝M,pSv@8Y0i͗uJq"m W7a|d+2yeb)P[ZXGrZL#pGUMfN5}{%B7T [X™GO:Vx>yx'zS.`]@ŧ23: /5mwp7@#s[:x{]0=•A1KQ㵳c. >I1~֢i +u(ej/ORYCrg'#ڡ9=*G}`oRPq*H;m(1:u[>dg'p>=R^娭sMK6X") I}X'fQEQ@Q@Q@Q@NJ}E%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@EXB +&v>;T +k'a! f" u!Y'`ddu4.YO='隔ٴfi+py]*o>"ngYUO@0S 3l99lbم8BDѢGY>SҢKaWOvw\1J|59w<RNPЮnnFc'wC6|qV!ym$hwBC.sP˙N>b(GmӟC!" ?*lW%{uڃμȪ$&!efwi+@̓|;G?Z7r8E-Xo_Kgnx< +gJ6F+*Kbi<M$lZ7̍JTahr UlqR+O/A&2ss +J3ȮZHv=*HbV4F3r +O̸x̛:Ջ{rg'9P^O+T( sH.QϵUT[5_PYLvO^1R G9̜Y3Kn>$;߇jc9EZ.U*Gԡ ֣Z\$%F`q˛VkbF }ivMrl)wc>⑅IR*ʷqG $Ro@Nw5m3ndr9)lw>թdU,BB+HDqȡe-svϭS oK12=˕#ҲN5EW~= %fzӒ/6QȘǭA ~mPaO3]CYSK$JO2}9ۊlqg=MXIWI_k 3LɒF8r{Tg&ccskg^=ϛqk6yjK|ڬN)*wzgӦGu,Lg*1ޚvE"o@o⥞yS˵펴/HٕCdMy(Ĺۮk6v-.,##k{+{y67Fy+/@Vgm:QJ_ŔKMjfsirYm73(a,M$l~yY 1TwD +=;/E;^%KYy!Xf'ݙlzdy #dc 2*İH۔q֌[́]eD$n4(cTx ^٬͆6IZ}GBd{|8LP["o$ԯg9:sI1Gs횭x4Mmh?!p8]Z)B.>R2zoܭH G*bj?6)-ͯ=eӜ&o*@F1Rp\H-Ys{]Eި| Ȣ$0$Yb}M)+ Ԑ@~#M~ۧ 6e<~jҶbYo7Bpy{vs֖5+Ϸ##du\hn>LCwqNQoq Y8FH~B2?*nV[xP?((:6 +Ͽ~14%2u~{Hee uh&p6#Y326`pE:[p?"юⲺ0py4>)MZ^e.^~mi54BURHVH-FŽ3ɭ^X$_ ip";W;tb"٤ʸ ǎ=8ZEcqnib5ܷ8zP(iw,e,QwNZ]{y>rn0¤6[M#ށs-b.ymMwvݱV.S]o.Ye900;gEWdde$'=jܖscqI.sDm$e]eRq3R$B5uByfG + sjqw}[Qp`.:sDZOsjSq;"3Ԓ3jX-%U'95=nj3O7Mqyvlm顢r־BѬ24!J;msӐEnQd!BL>^~*<̧_Z 8yc<*VB 4*@ #ڦx\lA`d{[9&qDyqֲaHYDft9PyN~)]S($„1Op9,PCU,E:wT_J {kB *[m]:+ hF:k6֨de9sY-zi]غ<==i#x[OQpg'r;sN NҲoO31URq5JdHێi0\^ +]yI#߻ 3Y\gw5FodXi%dyF00:~V ^kZH0bs5FK;gKb,&9gK(T6x=kGqmCp\c4Y81I X]- &BAϦ=c*jT|TF5X ni'W=ϩwڲwss̈Taq\6ۻ؆ 8iL2J )@ڥXaFr}IV*WhzV{'$7ȑ/%ܴ.Oo$8R#c@$gZZ]GGq +BH!:K=ŵEoNW'`q`@|̱,rm;6] dv#aЃV%GW2?0}99NYBJ%'<^@bӓaRɪt[+ +Lav'.R;$Os[%y.'{ykW<;^-@Sѕ"YfDl?_\w~I'Nɐ?Zw2q]FyfW1 {qViZЬLVܪq7vV\dݎ_NX_%)gK:Ms󐛳,Rt]m8v'Nv,lḍ< n8Yr̊R)W1crZ$`meq{TVWi;JTY +r) }?OZ# q}sN]%6-J5Drٟn]x"hՅL"ӎư縹[x0 w0#K Bk*yS7UgufOvgU90OrzR//MXyF@zS%)I=tJ;rx36`RYZŤ\A,h9bHv؝OHv8˼LW1U4k{Ba+Trr +:Z}Ї+|^֛sl0[1aqKKoBAj[;:\I" ~2WmӿZ $.z ֝9-Y~g$=ium&kUE-tNO˞9|Ip6~_$`R4= qG7(M=Py *K!NGJ2.6OªY^ IU35> 6DHIRzZFmBZq,$`b}yE/12ڌܦp=j3׍=ʃ4^U_X+@uym-7G =*s(D2@:j /#݋8ۜDoqWpw`Y ,Q>JqyP¯DX@6.lgO\tmNhl(˘b0qJiݙr Y6g8F aw`:Xmr=$qEDP2)c8"edsiIJ]M mNmc5X<鑎o@"Lc$42 +FEs\Hd_#Q4ns\>R-+nv3pO3OK%`TH=̍+ +z*{`<,jBaSz+2ya4P ~ U'Z=}'EY|>y>߳_{@}}'fϤPaI٣7?5Go?h O~}E|/ݏi'?EPEP_ xbU Zآ> O~aIٯ>y>߳Go?kz(Ϥ'MYU{ԟ,]Wɿmn%v򺘠T$Zʊ#7?4}}'f> O~}8YKojibhKAH'jgfk +(>.gtDm3)% 5߳m!2$y oR3tPEP˿h >x|a:~e#Z%}'EQE|E[O7 Fʡ#l|m }$Kb'?Ҿ +vWm m"3ࢀ> O~_nLj4mg]E+ߎ6U^;y]LP`?խ}eE|9O5V#O,D袀>죾A4lT\"3[KqcnB;֔k6oy.`5‚ZW1\nO<M4}Mee H-<Ԍtj΍xg'I=jḒ LUȬdQC>оH<ź2~E>Ϛy "G3M%ܓD-18E$[A<掤s{ Mv:uU ɫl!-s`M]1pn&FBTF FzsE-D,ÓcG JQ/s>8U>t^%ĂIT>|jW!漝l5@9ct ݏ8Nsz #) 1,/h4w FM$2 +Ȏ=2V(Ld2cΥӯ%v|thi\U9r +1[E,ѯ'ګ bL!cx:5NU휌&#x(rhנZTdwg浻lc1TjaFO(o ;Dѻ#zs8' oЀx6mL֫vNzw{71ʖlefi?Tc8&`c\=|ڵ4a?LnnbbpK5fZ݁9IG@I ~u$) lC>f\9i3F@?Z5*-joHH7s.O1F2>ZvQ0-'n!han|4ڲ'R|%i9s1E, шuzqYpH$`Ս٦ XtSgkhԋDkm prߎi5 +[c(1ڨB\o~~aI-IuFe`(R#!$Z1`T _«<eKwMX|%mwOn:s޺Z[+81p[q݌OzXK HM]?3u 9NQbwSQRjv6m-,m!L2gf `;*5Z2o~VQ3$m'xZgm09hIesBY%g~qi1)l OjlEbG3q;4#~:B`_2l8 4k(sI19&HB\Ҭ fI_;#HHuJ1 ?ۇ +7gVّVכ6nX2x{vQ{;4r+ Vcwj@s\p8Ȥ6W"mg 7na:uvϵ.ヌdS\,%_7?c,<-ZcVm@K|zDw]Wf=C#R@3^u/ʩCzջK4m٥/7~Xr-cxw?)}zT*_ 7 Urm*}֤Zu͝eOxy\X}e!019*lѣ_b ܊~j3-Dc A oRR=0w9㣺oyw:6pJ.#x !hũOkm1]dQT,ݧm2؃s3֐}NR|n:Ub]HKWgj:~SƲ@*0\dOo tL| QsӜVbݴj鷷x7sf}M5ggrd9c9`5%p23Vɰ +O39 B9 +F\SS\?3SN n}[XK:-nĀ܂zk?)䍹6Y\ġx|g(SE+Z3Ms$ V~i6 !Um}IJ7rUszgkX!u^߅B썤[!xp^ki̮#yf1 խepFG$dqƚ[whVXQJ,}ZɝȰ|SAVLێWn'g'U "XR9X<9 +;vM7GydyHNqqrZ.Ӣ$1Vn늘[ZBd`( qUԊ.TpIsuC$q\[ +NW%Y[M!YS1XvKɩi eݘ:q{Vfdܳ@#հCyH6ک0X^˰.t8@1|.eYs}AS&<̟w9&:bNc;Toj9 +O-OU7;I#xYK~-Y29Ͼ*\d.veyc鞵^]]$%Fqi)&͓ϔ|wjw˻Kz"ֱDѴRbEǧ=ET)4ghcdAziӒWeJ(*v%,;r'P 7^t8j>ԩS?Α8҃1F/6}}lѦlq"cGLPk+FV*\#.YëMq˖'5FX){gEڣU?RɦTIU&^jRja(n `[Ό9X\Z15Q\zR\j)kNo!iL>SXPndvlt CHvlV[YnvќY{.7v>ڪŤ Ҕ1H]F@tk<vW'֙ӖOf ('X2#9]޷%](pO9U-ڔ1:6۵Tw1(e ݏJP[n`$.T01NYzmZjz$9;Yo-rm0ۜ^VIv],ňNrG5vXyPܞRh^!asHBrVBOw %rFzօ⹑@>nꀒKOgR 潿-Ec1?_Tbrڜ'-)-[][鎘 "<dhLQ6 sɏ/U½IS_M,no+u3̯>0si1ImpxAFc3@e +vbgGsU3˳$9sQ\/@1RYFʤd$A(GԊkf0&O-׏CLB©IT[nox^Q}*@CqڡZ3N{o+,.Vf#F,Pcb-沭}|eCL֕;!'jV)8ʡPnY~BsqI xY~V wO4n`CeGз-ofZB11BvR}G]?`LcPkmK݌_:CJqQK4@Ytέ8ۚWbean3 N:Z2^XQ"0@܀<!+4U]aӯ\6*X7QydT=,g 5pXОkKMM1nӥen{cE)VsM{`n8#cǽ%M>DpvRt2$qO[iQ Kc VOCЍE+vgngi p"9*r>ۭB=J$gls*d ]4B%s'/|7犣_] eF&Y##>&I?]Ϝc?k.ɵTÌ*ӕŮnG98RweӴ]ڄnhs*vs)nGJw4я=:R+??#9>k}.%vw,l85F2h!KAW䴏%T6J(b;?=isʜfF:̎- +2df Mœ] h03[*c'Vd <J$:r'gjuޥF>XJf eFr21ު 6 OiKu&sdqRiC#g*{D84mKVZ>`'z5QԆeC[ O RR7r=JM6[+xafVu1sZZmg\aޯKۉدZ}n]cG>AO[.QN}溆Y#11r$ %BFzj(6Kbv9\*!# <ӳMCn|1Wf]䬛ƑZH|2 izҝԇ*I]zbm)Zpɽ˸Ỏcjpz\ +-&I'`G}QOdloM'[')D68jm >Yߴ9銹olDg +w{{U9/㴻Q!v/Oi*pS$fxj"=ڣܱVO33ʣdr=?vYdg枫DgeRӖ(_nH`&C2ZN2xD 7 qƥDoo(H͌w0MFyeq:ZldGQe +dw,KRI(s[PʈD1:ӥHiDJ7 +pA繓̙[n#& ju̞?,z6棊Vi8/WYXd.iZCa}ownMOlxMȤΚVLx7AAgqM{yIs,zT!ma#5vId*IetQUdfK֢4JQ`k{;un+l¡*9=:yX20y  *jzK kvU8=q:mΒ *ri,^iF=Yؒ:'ȸ,s8Gn#<ڨɶݘ$ OP4kX/$`_ƑM)b'-+#9*֎n)Xm?0 8bmZEݤ KQbНjP^C3T"F5UlsZmko,Kq$< bNAAbKxQgVf77ebUIn)2)nF@s]EimXvP8s'{F^}?2Mn Dۗ ޱbu3C ef;Yym7|Nw +vɹ`QiQ\p0ry?J5S5ɶ2@8NZ'HK,CP`‚}H*O+6 ;bm m~uDy#7flqgEf-IY`F g Jo"uʮA#ҕ[q\լ+[]9MM]ik}e؁zqWn亅S#|'Z[X 6-#UeV*X{B~(jqvqH;Qp}pc_cG_s,7gPط+:lrgvGX_Bۜw +]blA}kΟ^8j%c aw{|ݳ u:{F.pNƛ6.n-H/gd_Ob%;qҔ${kHϡeprbD5@a/ 3AH#>##'Z~g(#\AGҮ.`t!bBHJZ17vJ`nnm0oCV4Մw.0NXl%By~SzUycYd8.ӳe8-gY&lڮܜ2\d}ڲ ۱µt'#pNc;k<[e%϶:PSmuY-T|Ítinl"Y>#96kn[ʗnK9QK<$bG2*Ⴑ$~TuІ_D6#n1Ոm5q8ԑݣ"LT Ϡ(MGRm|! 7ͼ/͘;9jwv>70$O>o|tǒm#ӧJ;%@i:3G6;i+$m,l~]<.[6*W#E{TE=ȺKI1RW6=}]6Z$᥅FΤ* iʇj(lw=@ӶrRrXiJul֣NڊapbtsT#)[$m$>hl[3{r.%ͳK[/dki)n>rwOX~Ē>*@xۜ8kR2iݾ\[5֣$k3.c9JjPkvn/K l?oMfǍuFZ66h6;meM?vBv*p٫|?:|K2݆63m ?Wmxqm?\a.젊Lppzto癙f6i7e*Ԥ]ϯ\:c߈ #y~ N3v@ ɟv3|.QY@wP1_ҝ8rm g-,YEzm"@O$w#kI\wJ6̗2F͑}(2hBsw#j7 }1=BHmb vicpҤ0J2G?^(W5y|e|)ʈ΂+rs'S&}'=h*V=*/>2$CP?/2aDH,?UH#M[jia769b9k}O@f|Y"ZcǭU~'.U-|E)EL1Xm'Ҹ=N{{mac&07zz}jm 丙đP;IܸWh>0hⲽEHzq` _ R75q!IynplkۍMȑp?RO6̔"ڿ_#nnb(o㲧O8\0\bmqzD"MX+-+NHy $׮Qc`7>Zӱ"FX\9kA36ўPR1;}s]h_Prٝů KoHpf؟o$?[ks3(/n:).TPU45!ɝ|a ]z>RaϏe$#ʏ.YB8%u#F$Ի騵u~9&~<-ůOv5*ǐssJ$MkhGa ʆyz +$ķDxU*)e59!,&o"2(jy~#ȪxKc֣BY’ Kd7Ib5oNb"b@9Z2q UCf8>^?ujj> }=j5+HXKkW1⤞'l8:t*t濼 +J(LI㓚{ƈ>OҖ(;sϭV59NKE{}$g1vUTvP KGݏ/cϔķLѝ㨣oKKfZ䁮" ԳK=1/Lg5 FbFpFosD%ʄ7`R鸿F[]Kkl$gTN;^ed>VOlT7?hmJF/2 dfeK+E&+/9Ar!#u>b!͑[SZZ&̳,ەc##k8,Z 2? +WSnGnXlgKyjHZHU[2+6(1T1?bPѓ'8nNoҒFWqQBҴNoi@$ڝycmKgSZ_odIi>'W1o֬S8K׍ ? FRz݃oٖ͋Ȉo. '!sd-byVănw*eٽuݬl=t +p|",lxx $j$ +Q{oY`F +o:Vb _J4"+t+-FXg=qKq p*ўJt$ґ:Pjqt *,r +#W< /*.7FkG*_/zu遥,2]G +j**77w#]22z%sǗtG֔ޥR_&GC1M9)ktCw1ӯC֭Ʊ+Kgt~kN..J#5 vTZI@B=nXԁjͲ6vJm"cD<.bi ;pX_x]nG >X's*'yˏ $|9Ͻ2PxuKcOGk Fz~5VϽ-M9ۍBKp9WN Yf& `r=J˴4eU[!CS]@$mG +pPRܤ,5G .N_JKO<<N*%Kf_v11§K} Bz֢g"h]*UZuo2`tU0ϸK°!@緯zۈѦh.n o9IjZ\b"ϱUjXh66p +MCQC#ݬT"UMm\f?)$|ښv\’S{ Zw*^&nqRP0#aG^\mݷpT46O-)" +Bl >쎴s7 *;m:+Ag;zn%Vy-2I#+j =Z[Kt㈃lsUtmpvGvy9ǥWmavK")_g+yM$9L1H3I.T`ƢHx,wuZ_ںM;_Ŵ1RT1=1ҦoE-/64K0p$meyCo+] ]zUKM.)1Te3\qdOd #i̖vNKU@_3p$cfŵwlDļ>By+I9wֳCq&*$@N((((((((((((((((((((((((((((((((((((((((((((((((((((((~,w|F[vjX P[~F)xYc$ͮ?2LΧpxMw_O]1J[DUF0fiK3M :)mnsG@9,rzҖqN>DhZ9&TX>du3cc-̑r#nMRc1zmQ>iFjֱH9gpF;=q`jɊrщ +x Y 4?:I02RҬC{9zU'{\\0ISdB$>C$.Jb+bGaǧZLBZJ׺4+|rp e\3#nbX +JOi;s)/R{xmnXg'ob a+mۣ''jF wƻ o)|Z_7~En29!qQs\ď+.rsʴ-,͝˜m⍷\㟭TbR8#1dkt}e In8bG,1<2- 9UnXm"Lyg¡NȒvZK&S40T d +uU>i;TMlAusOªI*yH=opwת5NRâyx:㸵yxc)ϡJɜңs\9mkPǮ})Joo> xd |nIV8W>i`ufRU9B<}O4')]Kh閖P6M<69=j=NXe1 IȂ6э >L6IF:UۖOYTxO,| +vȲviw6\[(I3"'?.njp2Dv@-=8A2M;u].巑[kFH g*)3=sY6Gpx(zv7q f4R}c.88:޳kNKVhrfq۽I*D9e$[ҩّef}ՊWFA& 8#֠gJ=EE6 Dcs+JMBvX+62 +,ҹ.'.Kf5dic_f\ck,Rɥ8fWI1/l7[Ŷv|۱hs%ocb6}}jSNI5D}CO,'F1D3'1Z/~۟_zR %SX Nz՝[IݥVݏ-Қi-)khRHёv r=*I$&Ԭ'($~>^RkNo# {P-gA8EN e@KXЭإە͎}xt-BSJK4f$Œ־u1y2"G\uk5%{ $OMcUnh˒WrCyu Js TdM:yr3عs6NSnp֟m~^7iX5_5{v3My5D̥O|T \3ۯi#o +ibļbrO#Gj5L/\cQnIWZq \@i#gV8U }?7%i߳$Cz@8{Tw7Op^Ғ,/.pvL5*)+fZyGꕓUt$P(X֍ܓѤzg=+6t¡dZ1l!BAIJZnk.nU$/wy,M4Dxqɨaԡc2M(*:O9z8!I&ĐNgIje*23xx}4ݛ@9'rjO6R5 +h~A +Z]$W>ԚhNʵ+G? :d[-*֗Ex3_% 0=H" + A8;Q r|[y1H"8!#.,hЦݻ3YmW-͖ɳ~7|_RZ:M;4]Ԯ?}e,VUT 9ux"X*V?禮;: +9(I֣>R>2`ǥ.mk)$,lGmr l4Q7n\{S%&IU綒;QB7y99cLTܶeKUtjAqkbfvSI?2;NNoHt|gh,6L_.2%u8Fq~¾T. +iJ[HHiR0Aoë\]5[wfl2~cYEs#,;*hf$ -+L0،Ұ/aw<*EddQZzgI{)@=TkSo4r3oI;*N7I%%harFN)P2E??ODA`*;D }qc5qE!wD2`hZH\݅##lc{7&m 2!l)bzӾҬ^X%ᑎr:=owNr1?J DQI*;7"y4ٮqe |{j"NB?twSEZ@.4$9FNݚ13-0*s=f4ċ+&<1(h$EnZ^]Ejm[$4c761*6qS=̚LF&uVXp8 9 +' v2xx2Pu(OS5e<7kn9jrRp8ӊzڄwKpȐ` w?Agosywe ar+ijLL2Y#8ovDaqޯǧInʲ!RǶG* pURC.[#;~KOԂH㹉Wf<NKefdH'Kb-ʍC2;OsWJG$'Vv%F钬`o79;'ZF[kJP jXFgUc''wGn-i\,s[bVe\iXX6 M/Y oaޠ7ygUb;:M^S&iê۸-5\vP^;2: +"O(%Bs5mf9#NpQqL~>q/H,dnlĜrzʶMu M;85Hfxx#\ 9A>-.&v| -򎝽+O+.duE{2bC:H =xl#Hܹck jxZzN3Qݜr1*Hk] Gwg?^ˋ9aL&IC@Ϲܨv( @ mpRLg\q2J8 [㊝z%.h//%7n!Fbr*ΧG)kJ#T`s)MD +'~ETѸ47a$Ե6-cpT>oY[R l\8oO ˈ[#qgu-ٖxFrמPE(Wu^~BH q hBYO^M2(L_\OFeyJh-4R8)Z!Ɖ* +^:V>[qҴu:Hl> +gڥD?wc" 5 KHQHNONqY{})rJlϳK#lpvRqSPmf]m&Gl gYK-+8W~c X_]Z1*®H`=tqSeC4$!pzsWgo'Ha1۽Es=F-1 8!rOKu:y,4k '秽LmNwr"Z|Aʦ}[$h^ǽ2]\ [;?O8-׊-o/:ΤUMK{)_)G56$ssq<c#~㌊Ύd@.>W;,YC60j[֓QQ>^ԗwl<,>P{uI;`")U${hTT-niZLhI)V1ҳʧh5bCyȱHJ֚[(沅䑒6!ԩS>J|ѳ1 {&6Ós9-%X+O9Ȣc tD!QKm +n UHÿ?*v-7%Tfdr '@*I+[~JyE5 \ Je7661N]Q3 lKzF-ܿ}I#=[8UM9L)%w(銏I-Ћ[h>g@N2ON4iY͖uۋ;VH6Yz#4u͵qnxMx&V ˨ j*HzdI4(<-r40sӞzWC=yv;>6SD2 }sV˙4F`'y'~v3Fk1r[~d_ٳDK'JvNw}Ǡ59dDT,ө6(T0sSK&SvccpCm#^1ޒ+MY8׵M'ڤgAn@{TP0I_&l$V?vxf7m󩣘r[]lr;Q#`цQwap96Ըp\iMoqi7mGˎ;֮֒SKݘF08ǭBD$sgҒ;op[n;]cF\ZS9+$t5mq-ߛ$g)8&I%2W ͻRw/RA٣` Dۜ ijj;mN?- HqOquj,DX$7Zٙ$;Alc>ZˎI +鍹a7Pb2qbԓE'ٌ# ^h\$6@8#.aNEyr = V\Ad +; +Z-/I&I1q5=uhM:0 t^zVc49@8:uN* vI>sVLEfcza 8x^.3wfL4zqZpSwv +&T8ɩٷ59O;vi2@\Fyy}jdxjM~\A^$Kciު`J]=Qow+^J2|5a{:I$LAңԅ:VE?^hlQ4V3 @}))6ٱi\錫.5fGުN:պ֧_ɷnFpjK}>v2K(*ɎjwS/exhY63ޯڬwHn@e +99 7?Zm%iVI]tJt8ss8TWԬ7R40: mlixy%'?F*0zwU4#NmdfgqQ>lzz{/$^OjVYwrɨ ByEꏟgzI$j3KH)۴.8xR>LC2.Iڨny$vW>V[3Ǯ=ɺw.wlp9zV]M"KHǭCe,Kau$;QHd r=n;=vkA,͌1AWɧG*݌6vѕ>ؙT&1q~=Y#jö9Ťk;}ѳƍޤzf  \uXww%uU\5mkDV-()%8"?9=za},so(d1ȫP 0Z7g>X۱5qnGr8I#:J َI +x+Iwfzmunz`q}h'z.$gWqB<彙qyoeFnX2(;RO}~ˈ-ãm?ĠcC?Gz ԒV{XFXېӮ6m9Ϯ~).RଗHPVKD[Ku~ZKT.7ga*<=EhTy:jԆ2Ѱe` VZ /9 cU@FF%.ob1r=wOj!cob=txc²x>-RJUPʂk{{fT g犹[j +pp>P6NlgљU^;{P98%}BĖ[^T}?Zв~ҴO(+^<5%.sg9%uRwg-P)A$yXUlӊmͬbw|?ҧEyVu!U*"Įv, FV*;_Fc GWP4 uKIJTy A3-㨐Ppq4ԛΥBܫR8 i`?\}سȜyҳ9-'RrAYm=V3HIT3mKFOQ89I\ei>msJeڔs+b=sKgMweq F2;/ilz?&ʥM_0z3GsN[%7#9랟^Mג@#fѢaiN:dԱHUA$m!Œ+zQ&E(蝵!4н™m2U{⸸2CƇU@{ +%U;.4B."n#qnO#~Ub{6#(2Gw5{I7As@ \V:ȷJJInXwg gmۋgol{ݥ BmRBZqJobi(9os +/*`6Hs\$956Chx'Vˆ8svZZ۴>OYgv==mj]my qZqX\I=p==(C,C̘Y}?xϿ#Xd06*4qiwzpdX$2B}mvF愠pN9yX 'ܗȢ3_p;X;fibR}D.{cH|SUiYXZ5[!Thwnu6c=a(e>P@9;YӤ(dhQ;cϔ>OQf +AKXsuB[Y`RK$%~ j"(LrT^OG+Ky}HϹڅZѤY +;f&>gM,nd#X:bE$)ɉvuhL`3qҶyݝ'VqRzz2K6w+K %`3s>6wOetpdr1j[{)o^bqq;zdqFmNu6Vs +""70z\@cZ"=pd~;gTM]Vf% +m;N8Fڮ$F\n1'-2N*kt=.€ !Fk&"IM{a5\s˞Z98XѬ`9c]{93DRJ [zN=*k3Eo Zf:g}(P<2Օ͋c{L/Udvyn 88U/;NE{ɼQv>Չ4vn9>ˌ1ן@Ffec-h_32v`Nj ʴ.ĐFHU JX  V;i'cTzZټQ(-I4`]B)/hmc#<~uzPP(?ʋ ;RXnolk[bne\D|)`O:S!sF6V5@mrt?t⹩ѣDsV زYEXn v'Sg8#,N (:8&lΝKrJ#jX {M{ePrO4Wz"(Zm̗ +!gRT=dѵ|#omuIRr>=xRRs9V"kK^t,p)Dl=ꭥm+FLp=⴬5;xÉ 6uM'ԏi{oh:1yT˸di!l`@<ߞkKW,.;IJEM\2XLs`qJFJWZ̹$Eq=Z].P[;mV<b2L=]s*Aaw"؅ϯj䥖)#Hq授HtE[}J%I$l*|V{2X8A/ ֬ nkٕ&DO}ꞧU@r{)3q& +옴LF:⚊][ ,[ }dAs+=+B;~f$P}͔$ֲ,n3^x0Ft+&G@`*v[Dd3s'mG`F#9QjWXPf|vYKqǏ=F[398r+#;dffV9DfQ)}網ߴ°|j=cOˀz`Ҩ--8fEn Ǵ#$zb>i}~NsUm{( +J$F=jh6|zҹܵhP"A偻$Jݹk۵3~NZʒL1Tia+XAsw;Nx$J +f ^o$?-\"|y~w;ۥ+CgA/Fwx~dDI2+aX`Q 2O(%gzLk6If3OS{Yd(H]lg[kvL97gV#]2c$mvzn4q䈊FAkBXxy"~2h:!8hcOIf3Z$qEYeH=Ұ(9fQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@`bRO6E$2C)X/* y^F&PYA\]4s)1IV剛x!#?NnSb2cd(VZQOvZVV+ nNF+ Km6"0Is)%kFSRqkNϚl!10A_+RAq,^T7&%KzMHĥ5?r5]*Ub^ۄD:0>b,IF+pmzzt|!q}93I߶ⶖ U%7Rcٓzs+nS|) ‡,wI&~>ջoIc$87gU-.c Ҥsq{hکʓ܊ǧm`W=LB6jX1LrsSZ v| nMcMi4ZHmX*58i[1ң_:Hqٞ 5c9C+ibQ)P >r$6F Hj"UKp x5vvvMd3+*T9L2Eb 7gֆhZF;P 4n5K#{zâKh]mz#i"_皵j~p#|O'^ZLm )͹e7G/|L=*!1e;ݽӭkq,$Cj?.yEUwdz)33gE*1r6=ͼWzw?eHR hj^#h[_ZTK}P_TQ>ԝ뚖O*SǾ:gj(;ٙՌ/OxZ*aa G`1j/(m} +t˖p6I#V:ɶ91sLU&1GYwlGmkVD6q _G#4`p8U-a-`Is8%ӼsHMmI)F\,Ek92L 1ɪhGI:aFKg + Jo@Uȭ"q^'=9*α'`Jִo\: 銊+9<$aLni"U06̛(mYyC.„ZT&(Iۻt;!h8ZI#d9/u3yM4+Yi d%UWG=8SxEp76a}3Hr.ӶqSF\׈^r0W`Yy`M&AyxϽ$yE۵79evOqZYpF3kIZ']413Gn*}:{ˍH../핺{ҧ$Q0[[2;y=qjMGRLr8df7}ߵHd'ոM3pԯ&-'PKm +Ӕ`CF՞+7-BNG+#N*ݍ4SPv+"3;\RZR\o.'bߍЇm3cO} >Y qj2ʋu5kSP/aU-e%N~X 0`IxnUx9۞&E)H#q^O~F@t מicc>jghZ\,Wo.HNިG<:1w.I(vH.ggAb@F}+CB[#Cg W>iR\{V*ecOF&ZŬ4Fs#(cMsR"Ź&A+GA _H;P#?;PF7 A2єpxȜq@&\(`F^{If ;r 98w8W1ZۥVd@*$oADnn3]aKmO1I x>[ql;)6o"4{;aqB~-tqTTs]IvR$ ;jp;5mٕ^kCfi[\HsXxõV tȤBQ8e;ϭ7RYM;RھD 5ͭto' $qQ]A ZF*3c}(p1LeGJ;&,q$̧*ܸInV'rylcp 1ŬyVR;N X-i-'ޜR]Ѥi)hh`HUɑ@Ԝ@[{U\C# j{ y{7gc.]l2zc=)Lҍ !;HĞQP>]O_zuv*r0]\ ?(,kGF29p095}Rc McߞWf'r\ߌUqm!@=Z؃MߥG2XN8ؘZI.rZZy.cZr6#Tzmݍ*8#QwVb=r#+x*Fi}sBVGbsŽؤmJmsSq~Ԗ0D;\PO A)FGhG Pn0 ?$?қhe ni.I5ɦ)s.z{Qu"eh'55I"IFǵ%7e^E j#Mx.'p?1]Z۴f,<iIL3V*JƲ˽qcU5 Wκ+?#*r*n͹%V-~wuB!h<Zk:F*K(K_Q 9wHv<&oU-p.0֦ܽ #'9)4זFAN235![3c셱G$c*O2Xqi4_{*)d1;(`#$ܚ޻7:|1Tưv^si. dUs\It%iiE쐤3ozB9y*\]bUi|#hOկfL3)W$cӎ_KVb +\s!T#I,3;TNyc~\޵vi#DIRN҆4ծ K8eeRߗ$/;۸>g6̲q$lpzsRrMd=a2*A9lsH,Qzub kuhIBNs}C<rfbPGQJ2yfLyH4xb +t?7˕䎹?\Nً$"瞴CwZd+4f@\!e`w G&b2oyOc 玞P)R"fnWXn-RMAMmQ?Uo/U{ , B4[,1R`v-yFP>lڼ`]JgDwM:;9f=3*D'$j qa]a84 +i-n,$"*'#xrg=^i,"i2yL2ֳ1*q\SM쉔!=Hg!mb8Z}[)Jf@N|;X:o&VT > 39sufyǿ;>{HF=IM:K@bc >lY@r=?m6*9=~fFG,GDᘆ<".J CصołI,@#`rzV]P' u>kUF* t5l~ Fr;⧣6nӊF4s\.W]$3ӏʫ_I\Kq!\`0銹V@HB[.iݝdqX So nP6kV8Y +2\ګڠK䷟,ҤP N<OȞP&lAGVX|ܾ6#yn&i&yTn mSN͹@6HEKT\NO˩M3aI;f̖`yc Z^L+%EA{ )<[[vkfCDI`p8rRPdq*noe,qnU&MwI/bpPl3wV-rN2XۥY}T76C +p +z2OJi7j/ԺgU [o=GjsMsvLch?|6h[f5\;ѧvB7$u⎥+/TŞ/7qC+EH7bjןc"ĤIHTxmT#7'Ucdkh/WL`3Ӄ5Ad%Σjw09_%rA1#fg ]Ӎ1q>r@Ny%ovuj){M/ty#s]xǿYtk_jQF&(bxNBgctKȊ.X`1$g=哓[ %Ho,ZW;S%̑38$ sv! ہ*K d+Iv8ub$hB5?z ̓j4*#;IN*P y0Wa3S} }O2OfϽoLH[Α"6B=j=Jb 듊 -,VH)-ΝȌZu'%?-wf_UeB6ҷlf,b+u@+x5@!ܼSn:V\Iv$ǭHQl][y8*M+QcRG O|َ F-ySFWIڄd|ZU'nB8;?z6A|@ {JYg`|lc)I&/5͵Ŵ% ''OZ8 gV'-;ӧ^fn7 |ލnW%v_^ Cv{vѨiaKSn:>; L~_n>ll9wvْV噋`2 k]]塌6K#JʹVTMh]o O(w& 4-+ >7Cq7U *RKi?5 +܃We'{#uS'CVF\okX$G!x\esp\[&'oBAa iPf۸I\ 1o.p4dʛ4n-Fb[yy!m2][[ƬD*濕BmF#Fx*,ȑvT۹εvA%y=ձ{2D8ǧֲۻJ֓ y +u.\3]@3`=ctim(yĿ+>؞;[*1ʸn9S/mcA廕'Ko'+;MnzS |p85jhmmdRJFOE1$@}\:P E~ې] }ۂWT;ʑ==zU{ZHQLIБ*_6Tm@D1=zg4[Bғ ZGeV3Jջ=t +>}KU끎OZlmv|€zV4KLf?jHBc99ϽO.$u +6бa*pjڄ{748/F1.ȿ!=d H5WFj\f6(MUhI%_nJRY-avgPbp/wt36)^ɭ9"2yRӤG 9q( +_6ӹ1U"a&GJTU[!e6 s)fE,pBg1r^n..%wj4ZxdX:}̰>~7tkoso.b#k. [xI3pyjKyy +B*9ֆ쑷=lN>T d 3^mvPPb*ayBm, `jMڴZOJmYZk=У߉sZ-D>Pʕ,&mB ΛhN˧vxtid'- ֡2I{w4|9s>~ݓIP]ǝ[XfRGf3طzF#};Txe+Fv!x4Cw#L wl9r$RdiBE3hY@Uw }ؐ;}6gjKFևqܷܤ`p=9aoTsۗ#ǽTf3\<Ճ2Z6Q>Dٻqwn1rd^[j~\C9/fyp3UKY v~j,+(6Ҥc=R0vo u?Zc$%.dv8V a[c*3cg=ryܴG>LENάrԖvqq۝$/֯Pcr<>ڒQҗo{b +mJs{hIIv*hW72$s1yIjMKzoD`'xKZ|,WP~nHTaoA|L~z>֞'e[PQ:dz{T QJ.ྒb%f#:d dKl4U +O\-ʲH;g#֩N=iE$vy~f^9=xL:5Z<ːːy'5c8ܚ4HL/痟0@*,6ZZAW^frzg=:v][KcaOOҥvjcLLQ=7#4jE3*fKo7aڡ[c¶PaJj7zZblnByhxsOkĪWozz[=3:lWz {i<$lڧ9%u`'[.QqLUQm75(\zTp8^HwFݎԣ-^] gvsGNzg-v) ^*1~Gs)uLق_FgI7\Vri*A;9c>U3:oD&O9;7tljRi Q$c$go]<my ]ʚa,6A9u:I6KIԆuB rO9vMjLJQndz`}>.z q&Qvu݃9ldt$r$:Oe xt(Ty* G> eڛoo{9Y;אzP%{E&h\Vdeph9W=4#A*P;e}ze$LE юyT|˻ߝ)`\q$CrѢop$djcX*97XHTy+:GnshKC9Ms^$Wܜ3V%etHٜ䷴2\K<r=(v +NMav( +QҒo??wn=OJw'v=cڞMA' N\㯽bK8bL`Nx(]J#Ū̷;J=E'u + +d{Ջ;ƆVhBAdcjS GVi2zI$ᥗ6}}yg;\UvU!xRm:f :lMǿQI6ٰNoe72jZF&OźrjTiYmQr@ۜkNm>haKuNy+)\W"L(.8UH(vQl!cd?(a'5NA !IvB+֨o޻TDZdT#,AA=yث~\ҳ09(E λp866r]e9#HZ-vx$^K"6! +6 }FH$$Q&#lߊeF0nY=Bb>Y h hQg*IvY_1x*FH8NFn#vZ^a$v}"oQ^}nKkq +Y?%<՗()6rTfP Et k>SbAױnII޹ǧzȷ򭼖$Rw=[.ѐ+(:zZN*+K#_$ H*3*3ӽRrZ2ǃ3V?m Z X9fua"#^sN1#ӯ$e5RW&wU-敥# &c%S(OK(of؀n7`F7{qZIpc~e|<ɆHc3Wզ}>KE2#3I)F:="*R6*K;V %1ύJ'XdI0уGrK(y8m}Q.Z]Kgy㧡5JGJ@׭t7 m9d0ax<%w `9&1P_1mFm~ + Č1V㹛Njg`*oG $yhN3)ٮX5(qW,u/2|3ncS%1Sqc<$ev)ɤ)ěrpj  Auh"86;WǵUipS^JˋigY0,]R|ߔ'AߋidWcIF0H<~B}=wv:.t-ė׼X +|YrNI|x*ȼmx"-9j_4#>/*Wfq}U͞9+ȠwMΜ3>߼ghs =wL\c/h:c46ybJG#֙r.irWpIlqK]&[i&I$m&r{Uo]yM/٦8CW[VE"+#ꑙ Sjv˦>Rz{|vG6FGsuТ+̤p c^6"AM_R<(VM`/LcFy9+]SJs, ?GtMkk($F\gA:⡏U]{6I0)E/^]^Zn7tV n-.<۝۷mQjzxc["ʤq}қAomOԽKqc>]QZHikѥSn;c9TPOŸ$nֆOQ1̂i09\= +epg\z6N*{in*m &o6I8 @Sӆ\-܍̤qZ_QyB)nNT*^壻%\ ;֝w] M [h99Υb-<#e 0z+Sqk%ԡP$88瞾y>E~b nn|x~I<]Q>7 KoR +z:ibQXWt^WEf-WJ-9X̍uc4%Z WZ|*BID>y94*{bxۘ19=B-J$ӡкjSJrkE$m q!^kS펦Io; ,[#!sۊ߷Iㅅϕ"6'I;ltrƢCk,F d_ͯ"E4=eN|{U4=v?Z:e/YF2+7OXR])xw_zkbjJ|k, Y%IN<\J۝b507"wr'ҲUKQFu[77 {hٙ~7oҠ.7s6ƭ +l(wӤ}B2.>XT:ΩSMIH#m+;H8kHGGsZť#n#;qX8r*+:PA+dzfb(l ZˌK#8+XӅݰڑNN1@S泱.gj+% 9<V\x(ݰRGf,JX\OqקJ0s=hl9ӆv,Ϧ/p ~]*I^TOq$ "[yj|fy\^/>آϩ$ӇsL[wc52ll@qhc;vPGZO5\CMyb=.s{'I&kmjLf͜2ʸbV-m;yaR[GXW}=jC<B<`}rtiZ\2GCVVcwav$YI0%ŜfwxNWZI;3{dnW9U6 <9ሟd|*ṱӭIKtec5IevhzzЕ.SMX.M@3{7_sB`VEw0a{)szuY:1Z \.5v1rMNPDyw15jRYU#O1iJr2ck妜`'/LfsןZXeBl +}m4#tdǭUKe`ݽ*o| ^=\ P2@T D鼖^FC#4D'a;ry R33ޡfլ>k`ۜO c09瞽*9z<+ =OZ=WݎxEP,vFYI@hE5"lnW,eѴw3I-FsMEh,x@8, 䎟Jf@:lg4^KurHXD1⠺_?Q2^Ojjt:^E#ɺ{hCɺ@w^"%: ֫Zg85nJ1JA W3CjS,%K5]ci#EBrlv!m֐Ilrso篧ҚWZ%έbSYsXj;pǰm=R>F;zTΣ/sELe>\w^JQKG$'n=qU *\nH^3DeP0h[p>S<=˂{WM9]ɪ]Oi)L ֡K Hb%˃ Mk +J$isSh$IRJ]5-Zl77,$q{}d{2,B7n1ڣ7sk.(tM 3׊n]z.]=~B6w6DRNjVqsX`:T`  ͞j <{g9.[kqrM3N:9˴{{Bwy}njCގldicA&+]/Y%19Yb q^J$,!@?VfgmrOZqʮ)ʷ^{( 9^Ok"KI3&A/8<{,e)c̊ Xs.FpGjcww(3y1㠦toR [e$B .=N`#S {@$dS$`0i=v. /Ԣd@#Cqȧ]\1>`߱Bq?:l'cr`X ?Z 3!Ug$`zNT;DcMI#2[mxBWjw!gbcZqaW$/`FݞV1fř@Hq۰re 8jՏɆΑ1}H^hLu) /m`X ҳ睧|{bGeie)nBTbbC0BNn(S#՜mX]I cӚmf'EVMOcҩqH*Wh+BQ/% 8hvN +rR2m}BvndVK_zlnu8U=B3$A4fdZJ0ǖ;wBw3yR}FjSsuŌ2:m)emǡa V W~;38†}JrY[ (nnRՐI%?޴X.& QH$r8*ֱʳ]lҫ3M` ֋er4ڇQ+mĨDmXQ?zҋ" (Ta=;>ª0mu54IK"nHn3Hw2XH͜}4myQSH Xh;Bcy#>jZ:#+cm.af{qА}ۡ#89^$@G3*dQZZϥY(v׊-ՂzZ:"#lr9s # -2}jBhMN$y 2(pvP)վvG4WRBǗYQK"ϒ? S$Hށo¢xmq3KކՄ%+/+C+}.N6DۼTںJ0W4&5D)⋧<^_"D-o#:t3@,BH%ubAsqDJrx-M%m;/B!wF^F@aO!a3]V'|ss+YʱN?xv{a-n7E#Se #SQC傻v֭[U^FhS㯭$Og V nکgq 5mOI!F2BQi@$&3yW'bgCI&7R2ޕqo:[G4bV:˺{o"y1BxhǬ\ąB8 Hs,bF ]&9FSxc9*K<|]*8F6k>;y+ n:*FA{WLǖPjX٥ FzU[[ |jrdپ-ԗ(vG]sϭ6  +OΖ^%rnUT*+:XSv@p@Q(3>Ijnq/,yo@ǵ%ϚFev"X}g$c#P:}?5IM΁8縬EmHу5k +2nwjn0Ku8kPWv &vͻ,c?RҢr +#;zqҡqpO\?=Z3%R0< G=G_<6FkT7`*\nڳ$|͑^sZWFB3ߟZC E,}iDJH~.vqV?So: 7 F8*͓PBX(TFx[HFkm\۵)#J2Mj>'k +Lޘȑ{Qk{)Amq=jd@H,jՑF9w/=w9)`eb',Gn|ʫ6=MѨT\Ȓ?HJluIy0iJ(S~4n-MI#ޛg~'YR[~nIќnYkإ'$ 26U&0C1JвpuA;! ڪޖ-VGI eO$mM~Tf9ȮMJym!F?ȤsPvwQDVwYcc:qyDm_G-?DF|ҩ/"fەԭ؁u$JҖPpN1U\n7 u_Z)&F̊$$t\zSz1o4մ\iqM+ӎ:)즞B>M@I2Y,Q]M$YldldUHm^6XwK;C>[K*c;H*=FsiZh䬱]]4 `'i׹T zYO,cLEm`A#uBCOK+43Lmm2zUְ1qJqRnpG[e[gebrwqӥ}IxI ch$vO!̅'fўxOf Hrj&qt#Ʋd3BM4{R/'\Id"5xՙz(g)F b hd\&Y To<C]!ɑ6pR$H%cONZtmٙg$ێ3KCDݓ~ 8ɧZ'y +]rO@3UɭlDO$r[*qۉ፾}jmJi8VWԮnTyt%F5y^ȅ%=i5f4#q g%ʎL;v}մ`@^1 c PR4y!2=GJNツn%W')+Xܾf**O#4鮭^ᮐ*,/liwOj0 +Q}xFRMV2C| w %\F=8YVD +O<=ЏR"Kv|8P٭-ܞK5JbYd7.%.Ͻ6['Of).K`cPEމ$7h9X?:K=FW_$3^҄TqeD8eߐOUMR9K|˴ cZ@bUb ))YU* +)؞dhqWV7fn޲o%I`R:ټhmX-s&рqӶ S[4Yn{TܷˣYd& Tr[u&KCjH3Vo'">Zks9E2e[[lC~r;qV#RFON{f;*1tI9"w@,OJZrۅ8=ALY?}dk6{˥E8u{՘UX/dPy*8Vt7?÷]T'mPtyfٙzڙ_هȸe`8t?/2q7jv"_n[8-,h}c>lz +[~jdMV-RKpJ%Hسm\z{;G.٤^wMʜu?XȒؽB!~NդԠͼdexvQ?~PwT}+IȖG8~ #Fytv3b'UF̹n=On-ê6sR\Z}E-a_隯k:b+وM9] +qJx1񫓬MF"0ҋ&do5[;E-z^n)F9?F?i.Eġύ۔`qSZrPb[N7%dOJW&n-nFc386l룝wU]R8"K]%ξlcPx~_j6Xb+!%Q>T n\Iž0> dqT6)At+pK@G1Wc],E( ʹ=YJcmu3ly a9FEȌ;v=:zՁqglw0_U{H2ӚQŶp3Et|5t["._c~ic@gFqzU{kۈ|l`{Զא}0o>Bcl}Jp^Xc)JeY sT '*m&1*c6*y[LX'))U,x۶stF*lz +.Ҏ͑ spz{<\﵌Ƅ}Ҡw>۩ZB)4 r$d㜊:]ח-qdl'';'.׷Lz-A;}z-hD;Tg6gڭJ,<`|5E uZU >C[zr:$$ +0 \Fmи7)aw_-'8H@U4FR稭*R M m-Jr4Q*MF$\|u^{ ~5ΠRs1=a0{1SikȒy1;" +>uiqC*p:m3NX,-mhi7y#UXӢG(ȸ rB1[u9Eh%ZdPIơ1T5޼g'MuqtKFrnnS#m;.)IAGJw6̑AXy=$ ֫s( +eW)?x"$* UX$~̀8sPZCa8u4XsתVV%9|9R[+ЮRE[qRThѐ+ȶN2s^՘s+.6ryj`\wyW3. +h2Qb[0,OcPkw$6SjZRq=@5q]! [C*TǷc@Y)6w6s(͸:cOn%n#zVw2{rr571Fd("F=ڪə +plAXV7 Gn*:+ߡ, m& h ;e=ˀlnjE%'MW*#G , e^rGijfBy.ᲭЌsڱȓ;[si\喊-,D##g9$m5i"-sǿž#P[Ynn%k̀BzRI,V9Ÿkv M:#9!8^ko浦c,D6[jUd&]0&41H0,}z}k:IH!x/"{k˕P< +! g)[H8ۂATZIr[A.3Hf=LIiC,*hvG#m*$p[ϥ +OD)܂݂cJ1k>["Ă@roY;qrvUZ2/'%ӛFUY0=޳'er-=*kNy4Lqi+U%{F,'Cn BZգ ĽpUc ́F1*O\\FHc@8MnȍKǖ*-WՏ9Ғm$k}dګĒ^h giЃ\(Z3WuȩuEor^c`呁9ϷQ&UfL;qqVn4{ycx1jŶDѢLzv>J\N,F6!#.7gzӽݚ-A@ jԑa%ZU 3ϊ EIp\`w&!&=֯KZ[MwA qŽ#1 #bӨ>lCCMF 4kԞhx"ze%ٹ̾g{ch-5c.[qL'ԶemI?ғ)ϖ˫{\sqGB +W, ]_%ŷy޾fޠ=jl rxOc]!e xԻSRo~mc?5%6WkxOJYuaQ\Tmq41+E:u皥 4 + '3qZjaVRdn2 +NjYxݲE10:Uѭ[V9B8r;V]i<VQZ:]:-Fq.>X5e}h!Ye`2']˟l}OR49i.[&1țs.zNh[5=16[#;tY|en~\ۥ$Z],0*Xpt4k} R4ZCyEqV3jB4p$4D}=iViaa* ^;lj1rEU"s< gZ]B Դ˳lј]MW6)ȓZ[:k%VV8ʞcJk(.P'y=:Bռj$goë G#nIaYR c"i7(ڤzUdWlӔ` *R(=U!Ԯ% "/MFwHAo<}xшPQFFt!F8ҒK(j\ S@F qp#iZY=Wg\ޒXٲuBpBgey!@J> !SuRNnQ/hY[#Ӟ+Uӊ5dÒ/ҭL`ٜȥy sRZYݽ{MD7'}ZS)52t*G0;aqIxGnv1=+Y\DʯeyکGxڝ +ƥ{t`'#3 l,6++O%-p|Ug8QxE:"1|ұj075-]lBqr[x5+-QBm둜m67S]f-6kP9?JsN.niu/H TF5ӥw'>y2|35[ 7o# ]63k+5 `vHN9Wo߈8_ nPr Xy%ĮR+-p g&&qٝ[z|siP9SF*Sͻ:~U/ᤏFL/'6Nh"(Ywn2:-`SkͷCo\=*O(i\s\,2G46>=n,u+If@ĥ7ogn It8'`U׷ӡeb<@$pCssi?ykb\B#+wZkt/;W4p:2rz%5>"bI\bve2-FNpjƉݠǖq 7vLM-<9HyD$f_ާK[ntIpѳ>j[6{Gcn}qAmĎ6TY(ԗ6ZId*}Σs#*Uu^wgfMcrrF2O^)%VtQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ĭ@i9l3݆:RF @>8J`wm#֡t}$C,X(WmӁD :1֤Eu}ҙdQcVC@8i]W@rMWV!~rc_İĞN=)MS46YG;zU{0yEd y:tZ< PĒ#1׊;:Pn}i^\6dvqVޑ˅U^*mY{Ж4ZHaz*gx%YP5ר.cGֳEʂPZNi-][l'T77 ]mQ tR9-P~j}g*\nm ])jf8+F[UVa [*խG(F]֪o 6+nNTޣMJL8j&P9=c1Jݝ0Yp&v589Õu;?"vp~cZ| Zml#JM89k5ח0﹉wVOO;6(FWoOKY\ e]Y>YhC1fa~JpCgqgvqjfd4>ړN5a1l`%G+vӕ$Ǟņ? 9ozgҴ8W2[<S4 r[>arzҽٶ6{cFP|J(";BdA9da3ҞbEΪh՗jFM4dT ,32pΩǩim,b`_<JⰸoC$e"rAz] &'_oF-Ibt7c߹}>Axv8H% Ccp=G:kKss{}h$e Q +0ךd 拴 z ڙx]8c*@ҋHebthkP%-Y +w*k4:~繗1fMU@I`UIUcx~g$s֧KlR0jZԑA%Cm4V$8#JΒ#ʿ6S< -;٥,(펁W>[;{3[o)`:D n0G^"/ +qVlgq#ynF#g#گ6rKfBce{78jf&Ռ azo\YzrO^KIqt΍pFycXY鏥 j8/+g,Il,K0G"\K-MJ Y\$/jϙwШB1N];4vi4R`gֳkcRǦ `.FޟrH>rK`~t'aԋJ-i/Hն1]L=jVT{Ay^Wg9Z$$:^^u*֚"7Th'{\Mu 3yj9 䓞?{;f*:Ǖe%qVgV sn9n@JZ9,B",:}շ_uL1qfG])a +ui#sT6n,w,q).ଥViR eqOu)O,7E伳ا~ï#]51U;Ne0^3r2*;ΠV\X <0qz]:ťlW$ٹ^/fF9f1ZWVR}XN8Q8ǭ6-ϔrӜVܴ0Wpcֆ$С`#DIᎻyЅi- UdP@v*w:d}JQB*~8Rq2N˘a,arHjiڵb n;Ovҫ敛б}6_E_ ɭwc=34β +OUw{vq=qB*++\<3ӥ8[wq}kCK/i~a`g$LQ0bzMSvF0Kh$CBp;iGI&noη)y.C?2Kk9aO1v;SM_tc>o;Fxy dw2ƥx`:8{$bN=z5:xQ2\4nwB}BK[h[h +9+" y&FBpVٯ4kUz ;JFYLv 5rOdKp%+htUY +`9ưſf6 o|9ti`6Q)m'Ҵty<sOzA P\Ͱ dJlt71_F2X85O2Vi?v*qpőp; +èO:VL)kt*ҧյ*,BE@3Uk=F+(PY|9.RiR]K,}hWk44/&T΂nsYڈǿ9]!rr)Y= +u\[]VD;5cc$F%w@r9RsK@XmkщxE#?OΚZ*fE3+WrHsёqTF%a.֝jB$TSv8қDRzZxIg6mhZSyRo6RmAF-Ÿ&1H}*/$~ZqSƼ׽'v2Inv>%ͽѭ{>w\, +# ,Q,AہjWUZ@'.}:;)+ٳx@1S)#[O\>NtM}5bu$瓞?JM:xmi^ /̡;PK[[y[~w犳;&7;UԖX9ϭUQ#j@3kY4X[^l}BnsSc{#{'vF7O_z۾!#YIϦj_LlyTpXfRkK[,s===#HNgh.nz]^1f S m#-ƞlŐxSti`/<һHd~iRI+̕m3jp1~~8 kI9Ͽ5eh4cF)nREb;'{ %e.$cL,0?P]UEҥɑui,`vjZhԟR읺/&QwzS"OJ:cw(t#1 ;dw=c͏rs z]mܽ^:+<#:l'8(Drm۸¥kbFvZ$%.y#S9;,UȻ؎.㍗%ArEjei&W+d3s"Fx|aCP\1? +gqdYIXwި~-/YH0q +ZtyrFŊzc:ѣ?>~h3Iy2lUv,S>^-NX'iJG+bu`Y +SO.GI6bWn Wȓ?X+\t)39Ѝdq/-%ThK1jŵZy|ҊYsžqҢi=r+`]:+8'vv=b|Т9Lڶig JsXw2fbp:zUFMg8/\{:*[Gi%ds3Wnt鍬rb`c'>3q"[eVsBNZS9( Yjx[8=Rdac8Ro9'JHQ#+=\]{ qWe)l72$0HڤTmpAr-BԐCyW%O8Nw}N7?P\is-R,AϧYeݩ$~bB" ufI$H3>7cPmD hRGҋh>ư]pmpr2~RK.wK 2H@,@ӵk[GXI%i[yjŃY1gR$^1z֦ӽRKX#_0?llU 6AY[0UǺI N~EǦzjeSRjHf"YdN +:S'&;>7V8! +uȪR|VMb}d۩T+^,iGr3?lxl)=zOb-hul¦w'O[{څ!HrS΃ߞ) {kL +AqދK~r#w5v ylR"32‹]8`m% =: "YI)X~6\t! +zCytmhԀFH&8lL)#z1nr8fr qW-m"#w\mYHJG<=F_m46d!WsVf + G@io\4]^˄F((82`׽V?ViQ݌!Iv03?}/bXWB8izZ_t$S縈#i+;?`jvl`fU3r--ek4"I *UK{k7Ky nkhAs +Lox3]MWo.96죺]RN$HPX(֝uh[RK&r8g_!ha0OVC儒wlԂ>Oʒ7[xY>YiR c'+uxg> 0xQO/!pLd0=Ǔ[Ai\\;HWLVڄiC 1Ͼ{Vׁt5`io[Y*Duc; ֪xψ!v#Kf͈7i؟,#OvszFE l|>羻Ԥ^ذF PnEC^Z[=1Jw'VrtJMcd.!&O 9NI^)1oPIWoRivKrOں:j[1AzXPUpWR |Q[I巴h+i$*lӥG%zfAg՛sz*wg>Zrn_=.8ӛϓ;SX%2=kxX_kdϽS&D:Dn*ܻum%wder79gұz>^$wn8phʓ3#9jd^Mtˋb-ѥb@=wZZw3{u)e)w^'i`14,mhlz)|Ҕxw^+? J03 4QqJ9;]IGnC<oRko,$C ֺ >k6O jإqP_ƗP2^xSZ||,$]q^{O۾3tzc3I\%nP𦩥Y[˺f@aVnC[﷘JV~)y Elye1Lh,1f̶Ԟ+QlYG$qצZ4Znoɗ,WzG.oZv{/S$Ҟ@Y?lw6}q]ׅ 7 mu[-gfUYCIS=k h%2>e{t]#YG'yFڳɾIz S/oD=*+"ӟJ$J3۬ 34ffaIaM;lHdyKk §)5G mm9l|w{mQ%RU rs*;wf\yrۣZj&e8k·ԮaR!]sӞxSM]u+[slb3WvGߥ;&.iA-N:\[2"<иF޾{nnapfI]ba ҽ{X?՟%t6$:M={{Q`X;X#w6_^{M:_ᙠ%Km8~߅{,_̲˫YH{~?j}GNTW !#wҥ + i 0r>m٦,3aNsیIz䨑Ü3oAU.kVo-p9){5ԣg?߮)4#$ +-aKD`!rs~k>2xEŏ%4dL`:գJ;{qnE+LcfQ\DX@N[ 5ϱe@ +{{{RfԬ .;)I~`*kcRk +b.?tx_Nul|>Q_Lp 73RmQwg1dfGFmG9u[̼;浼OMJ8kkp=N_\Vk鷺Z[\n'@+2=hսFdxU.sr9{kQpyqfL/Jg1 ^nY  Kv%Tx^fI$%qȩoFFν<ƊG60Zi{cבu *{a"F` pzj֬O^ԁo3*$9jΡps$,rZUgytMs滿|9oޙ5>#,OCqV7l`ǰYm%҇%g$s-BILHYiSЂ=xO (=~3K9YBZc&y<~TF2J?'z-gŶO\WC +<]k陎7;F1?+K NP:v4ųJ=zۛ[snRf2nV+Tx% pQcZ}1s&/R`tϥUk,0q-F{{dF b3J>vaJ5T;)aW!$@]LխlK+s39Hہ'P֚9'/cnˎSb½Nz_/dFΥN0sn:k> Rk{1 Hdcs\W7?Sg[\Go- Uڌ\7b؆ A1r+ oVh[yWC9]9lIß?85f_XIbq7sVJx_fcܞq^U"B>ܟS^/FU;A5zyP*vN|=e|F:f£%`?JXqq4I +89wri~um%Hҕ䥩djA D D{v[٥͓/Z?ķZoyK1^ ; '—.67^-Y-+*ywǭRѡ' 0dm[qeIJ8 'pEf=jm5#t@gqe:qVrYI$&U$!p2y +[m* /q0@8>KM>sHY5e=C,r3^Χv$p23W#znhu [VHgBT!$I[=qvH -%$%b|rG/'Y4*s7WoܳxIk+yrۛRЩ͌lY c|6{YViy!<#?ZaӚ4S6kAFv=@Psg7ns> xN/N..%iҪۈˎ3qI2}5ȿr6?ZI-Ue4"~*ğSZB)W^c! +f :ĪQ*sO7)e 6R?ҩaG~oy8 ڦeGe O/+Ӵx'[t\u3a#:L ?xk hKrtۻtj?Pӱ [xOy1Ң,U(gOK[FmL ,WZ=Mb9K]d=4[s_Iib簕⼵#/u+>30韭zNj>i'Ok7ELʂ RnWdt1tOzݾj<pzk*Y;Qj=MrMw!0t!C{:AS"}EG gr$QO 2y丝݋gg&Uմ̔D+y t4=(ݼeY3.UyT6 u8VdrnFF#SZvz|͒Rhr"ݗbO38na-"u+J_ d *N<0zqۭ/?'ZO*I$xNP8N)G5{u6o'viS$ c,;gܰl32Zl +V4,Z2Ig24qna"էE 5C?ƳM@*xdyV72#{TΗ Es33k$. +֊KKco~sξ^մ=7TO.㺌qCǾ3Tfwo13V:m-| TQya՝AUoid}Rb ƝBisi8\7m5X_丞 [Ƃ0# UzZw {SokMPBL(R] oP#v=}1Y+0McrۜdfgBlTlYf'$45.RkK)ĶϲNҵ=AR].Mny&%6ȓIzw x3 w~EIIu9!HX*9lJv\}el2p_R=:-G! mpw#<c{{hz}4:O3Z_oF1tN7 A*rwk.iT}ɖ OLJ=+N$B1P1o"9N*ksV,?cNNjݞidLD0˨}z´p170q޺ PDi3cIIMѣEŻHH޻rp@>KQ{`,`WIywYGmہ\RG(f`\RZ+b١q͟2ڧ' 50Ht\cgҴ/բc(9(ap~lJ9e1&tZ{VZ-4V&,1-rdPG 0 .<YNKg "} mDKo(fQ:w;N +kt2Y[9!F˞@sriǾj啛i2<1<1)IɌTki40Mc 15Vq6bHU]dlݣ+ƠמN-osE3 O^PRI~K15ِnwgׯҜ5,WJyC'#X3;s<ƟH_o@ZRv֭:-21,1LVU2wrr;SĆq&U9I`aK{7%փgy4"y "I䑊nݵ$n(2{c"djR/[6z~ Zqlp>FzWA+[f;J,ǔnq8@#BxrnH3Ɨ;Ϻ:¢{mʝ*[WNw5Yy1ٱ'8ou-XGF@ +e<)ZUverWij.˸_[kyl"r>%] &8RIJ+uNthyW uZk|<(_ojΝf_/ >o{դM139=ъUnkϩz0@F RӄmQ6:H#/pxl|ݻzmE8lUWH雌wЖF2yk[?ֳl^FewO\uۿr̛!dS4q-lѲ;Fd Sp:E7-9\f̹[u}\Oo8vڎWN[\زՒ7޸_NngiPvpzYlϥtjOmo2Ea'dŶl &id~mY&8=/NY!I8nq隇OH.|dͷ{zsx(Z+B{*ɦ3wGV.'c U,C  jw(WF3mŰ#`Gy:\Xzc99`lgOh[sp=yRXGd$Jq(oqH1".|?.G<{UjgV꿫! 8-kgJ'T $"i;$xċ$`rO@[c=^+t&6 JK +c:|s힢G4mHI\cMZe#;c%tGq ?uIyG=n"8u/i>$Leg 2 +Y.-ۢ"rq1IG\ӯz5W-F\$F$ 硦 V5ۜGHKAy*gp~*ݾ)mFv'8SmMqcIaR6PG*hWGc%nNf|ɷs:wάf9x_ 6Lg̵ ȲQ6?nB\_UVL0Uq̝|׃ҝQ)Y-IGv!Ssj$g0d&HZc=* (cGPt>L $ʱ+M+!.XJ&w{e,d=H=Q5O%SO8yl&bBBרże |S9R~H{Hyb 9f=WoȨnofku1z"6P[Zbn8=2M.{)ZU8MlD9;Dȭ!d1 ~4b|.f2?_6ȦYB~`13[oB+O=HL;ުE{ ,3& +0s_cIL`" iOud1׸/5Tb9np}i%ƣwy?K5efP݆ +ٝXOLu玵96Xd>m^ǎ"Y r9 G +\_CRwóKHX;qy b:>y'iOme|T$fMb-`HB~;]Q,Y^߽UlZٵ!KA" 9unUܽhfѐdG8?ҬʖZI:qֲ,Q̣cF9=SƱGsWe͸AuI$bcҴำlGp}Ͷ{QzEt sJMʄbU?Fpn݃Iimz;J{e f*c=I?C[Mkg->R~GNsإu$2i@_∯#C.ɆIs^Q Vy/_.I8<_Pv{f.fvA䍫:*+]YY[Eם7)o8TkG|w9et +1*zى"?30gp?Jwf򇳍ڲRv?/9lsUXWz)hBt8y$vGfJ(K78'vdTVpVl͸CvyhiZaԗ(I:)}E H۫/$a-Nw\HU[0o[/۪bxuMx֍ȊR>Hm2c%1ڡhY>ѷldE~Jҧ42zݞFIϾDٌ89^zYw,q ˞ԗ[XD2#l/"Q,[p)i=lյ3Vyܑ azS[tKprI5kȭ[q,q`@u8gFVJJ + +ݐǥ<{\na26|c9S~ZIS8O>b\cYrI֢Wŵ4N(m`:kPkqaxst&J18-N 䓏^ih5Eِ@&7Sc(nSs)j0w 2>O}iͦEb$Agz5RX*IΛu ɱH&KI9(;SmNMk'Oێ?ΪZh#22YpV cx^HܜsU%HdXppFqr+. .@02$5m{wiXbuS\-l.ExC җѕڀ0BԽ74R+F{bd:g?ҥbzuHfuסHtFO0Gzv۠R܊|pɵn0"X'i pE;) +d~nS=sBZXS"77BWm@*׏ʶ/'Jăm8U6E҅&$esFlvrl Y7͟=zS&-;__5Q&=1Yi2B wFs̩e rqASE +F|ˍvYsFRmV95Dl%;FpOs4vr'J,۳ַ F?ݫa# +*p*^fݴD3`8=?:1`3Dm |d`].icpc~czV[{G$&]/.EG$PR$JN[#ӧohL+֢Nl? nߊ4jWYšDG"C +"m<ɱ7l۵QP" ;pzLF|v+ z6✴% 欛{{h;NO^#J 0X~<֭!f(SI蛍([{Oڝ^d){֯MϟK3ڳ%ud&>mo4p֐[qBssި>Vܶ{5F c;o6e*;{Yf]0 n9.Hɧ}H䷗P% IɩP?d8[8}5yVD2_y (|2k(7^zhЯ'$A\g=ܗVbH {6rx`Lw ӎMU/ g֢i[E>U4Ao. +* 8R #) *79*LjvZF 6}Ux {qql6XZJw~Bo3B`1s5$Sј''瑄vQ˩ӄkn`z~5IeR!{xdFpáo]]ŨZyTw$Gj6iO(f:޳A 3KI-,l*ǥOmy1c>U09,RۥUyPy 3&7pG>h$zF=*HE6Ҳv#:]XO3Dž?®6K -hla qߥGu`yx-_[2e!Шe7wX`̙;T1&c}FGpqWn_>0J3u2MK}Ioj򰍊8 g>JmƩ/,$9=ߞIQIspn2@Y73I4, +t##4_;Ik}B̨Ҷ$@#^|W-;S$%Ԥ;[*HG +K{Ky'6F2Qw7cړc6OBј0PI?皳6k;FΠ d)r c8[Qۉg23rzRٷ7"&ٯ!{K˓ЁߟҡReP6Z-[1 |mڟ wrq֗ZfmFrhXW$J¹mxMXq̟aEǟ\28URW2'Ԟ;Wbe>yqU`ɉT ՋK絹6{Ly`51ΑwI+){ˮM©ɰ#sׂR{ T@V5rdأF3Ty%EYFɻyuEۨ% Imi gzUhYK qy+Kj<ʌO.z׆ w$.q&iN޽={Y%2kl2<@1\W ;1} +g!i81ۜO^jLR5?=]"8ˬvSG\ý4xE0d3nWQ^>$k%h!F>n +> \'y^oK#(秥jxÖߋKT]6DfFA7m ) N~_[[s̑+"=L[ǨA9){t/hx6u/@d̮pw1Z-׏mCd<N:Wxv}`Kz .ʫ9@zuf.0†d2D۾|`?Q²{pK0H_6iZe浬iR(73 +BgjzDЕTZYa +?OesIAE|ԧh %s-=Υ[hi7n>W)+;m*4#RҢL[a2-=ysD]|/<)\m"2?yٯ?ִlmeQ{zΚx S LV!+yo)c9]/u=SL%H0$L=ky'KD8;}yƋΚ\ kuoz·$FrVݳ +IO v>>͓U^᧎0+Yo0M=lL?<[xYzpH6'9>oj?_;! $|tezxU7n͉S=BHw<ԚB*.>o/G-b{Fr}MsGuz*۰&f`:6}*Mu79a^O#;h]ؐBM#ҝZ:7k[lw'{'ךŭ[Śvuwcc iOqDe,xm=Ns5> Zg2%{dǂ +K ReWx?? WӬbEIH퐰z|M֥milo|!!ݿ)QR?zЃQ|W![ݒ{6ֿl_x\j\K2W8T՜(pz?yT4XL)l4_vk.y฽;U32E@@W x?ZVw(rYnx$\ϟ0zmҒ;4mkd]߼'^ȲH+#^e߮^517$~͸e8z\tIkV}-QZ'Nu~e&W'$2m}>a_:6m-J E$AϖF8sju4u4ck>&8P K+n'dSy +|Tʹ6fyg$lIGJыǁMlYNY9듖u9oo RV!rL?|{(N;5MU`mƽ񏾾Qkɮ>#FXzWPѾi7z'd0L 6A>|1΋륊}cҒr<|OM}o0rpݸ25];V' IxOӊ_7⿰iW(d幎3<IdMׁb,]-jatR0k Fwd4N%€e[ۭ +VMlH>%}hu5dloʼN}m 5NcRj6z'|mAOԉn>Ԝ09/ %f jv$T60{O~kA -gLپ'nΣPC}Wq|qx_^ԢmIm"8xюl? +\ˑ/-GvM6r`X.7v pMy䱶 1\Cq_B_'oAhLj5;9.ށg>KSZuTcxίYVzxY2BX_׊ӸTaNj?IY29 6]n)r- jo[WFChR%ױ&S[/|̑4$qϡU =!04V@fDW|Urfzaڬ֓q/:'տ,n缐L֖I ÓoSxGŷ5SMc!xjj +[Zxdu1&~U-Oq;Wuu Ťst2I$rMrKfzgtxGD-hz:ڠ*'S^w|3]_[|Fo.ිhYa-; %2ndTmi_@Q. LtEiWWc-5,*ռ1}R]ZEKISp-Fi-gx I=-SN ?.޼Km#!4&[K4qǵHSY߮,ʌ̄3TQTc+<&golױxXWZM% +TDAB:ב}GSHJEWl&g ff2:"mGPEtﻃ*.~9A+^VZIJi'c2ae+2#XP'?U;F5wm?ʶSZnI.> Zl+_R|$ ;JӔDie2GɎh)$gEҧ^*eoi3̲Is渗ЊѿhOjZa&$w71̾f@fu +5z +--ؤpXYN9Wck.]mfޟU/~xW-66|ɺbIw7 +̋`[Py + j94୺sIՒ=IM=w--95HI%P0m+˝NqU#=~Pk_*;. 4p0ȳ7J?_{_ZLKU @' ~HrMZ3+-2x"#=V39~x)y/Dp#;}[+}j ~5ڗ.X6snG7-J$obŸMַg ?^ vJLiMBʨO{\6[y0InFzWi]?Ov+o&xhc '*8ŶVRoނ6n2^!䯦$ῂ)cDGG\"+l&t@ٸ ltv^]C焯n +Ө%$NMx֛K.\_ioxї$ +9b82qjdi#W|kZKN7?Lp8]uHC +,3\~Ui 4Ktߊm͝ aTބS$%ۢ+h:yn,V\c+7?Hڅ [F1qo]ْC m{`mT7>O +mr|k4JyW:2OyC_my8C̀{u\7SgWO3 ?p^ZC'.„Oǝ~ޭMj?縘 +3PՂg%c=;ETۿwu{@u&o$\\:no%ᴆSoz }%w~4=VOY<>lŒ{Tҳݣ~*?jRIj.bGhC;CH{\_k4:V +dRC^__q{ث" ANۯk=>bT?7Sz˕]MKo:KdQKyf;},~0xJu$@;q}kVPx=zbgV뽿:0z'{AFɞ{k&jOtNьە05ܱ*įEA-"v'oN-.,)BBȠIPBj+Tuht{nfD!W8QRkաOooW ^.j%!Ý+.H"P2SԖϥrz%n^^iQNe#BO 0֚TҟԜc$wa⟅z5 tOXNp191G*oeu;0O?(P8'@؜akȯ>xC-jԢF{l꟪&j6ƿ1O2]~>}6maW lhnx< ]Sҥ¥69+jxaf;WӃVmn9gmެ0^kWX;m,Qtuq*U$JQNwtK[qqmאelCڹ:]% ^Ok"gW 9#T巏/Nna +<~MբqQ~M+k^/u qιW)%#+$j65-ޕZkY]D6ӻ=1dٷ<@@U)mP'u'bIgkl.<$ Mye;IUfL 29Q_Iѐ_$ҧu[r5%ҳ=[Y$r3bբ_<>Z!z {x4+$wu^L +g+AJN6dԔmxZ9ޏ9=d<דy$~b$j#fb[=j"г3j6D^I-;3kPgң)x#DiMutTn{u<=~W%x^w7Wqka2vSh ITk+,B$sR3nv*xAl>EqZѬC65+--Gh o*TB.~Ey奍BҐw3F y[웎?,f4Ъ2-~ѽaBK{ Ȼ۠ߚy4V)O}qި[66c%Tdjbe({j[MGnHe4bId08aoJ%۽JGF++K+[v$> I?8$Tr ++g)1ϯӥ/1-`} +[3yjH[F.Ȉmv\DjHnr(2M_0o-dC6qO"RѲ +Lq=MXKF3L<~W< /U +:VՄH^P!l>4.JIn 2Ko'{5> +͹Q4-YN3yWWz4kϦD^)|;U{ mN;}=ℂ{z,bkQg >Go(In.lR۸4]-5J}#5auSV(2kZL}0jL錎gӽRٍ4 J975fG2Z  &㷞ߕsb+ns +%`R3Qky>`rB䚎"!jˎiUe㐭 ǭ^]*|p>I>7msZJBc!zZM:-|dKsVzdW1 ?wmnWWXJs^bp +1Ӝg;L9b'*&Ig$?3nڛ~_RZr(5KkkTMji;PֱU<|w2o/V&`9۞jē-mU,VJBGn֓.7/6l~Q3l #'_:P"8I~RFm2qBJ ؇0&FৃT7crRl./1Bm'#Uɮ-e;-7NM,z-UYg8oCbۍă1EMk]d{ZD +zS kmB{t["@BJ*cίmdYD muvzJ\b1pgJ7'{e0PP^4K W#<ԭ} +麃aĭ߽ bjU:lCud,tY-ZC!9v*φ mP7=hokViF? 㸨k[[{= >aH唗_.g˼+!1 Tݵc4;YUkkkI"CQ 7j;}hs)$%^[;,V/ ܠ|mlcR'cƢi'E U^NݭO#ڤv{]%,3EQmo!~קuv1DN&o4 +s oHnqZigR$E7Ig|W`zrudH ^V)/wO^2M:>#n9@+"ɤ3:1 ?\+jO[̱M卭8qYdǍp=(㢲+QEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@术w'V`yS5,nj֥ӢD #?N)̃j;tgtݎNQȑTJ#;0{yE;Wsmm$dtRqVVI׮* <Ӯ]ؤoZ|umrJ$D(R@jv~1Zȳ8VۄZo1U''Q*Q_33~U$5Hn⹜1q3{e¯:ѫДY 22CCG5C+DN0㷱6fYAœ9\F! FT?FȊF2Il Xz=ѵ g2ƏqPNt7c# g5GQҗX⩯v[ Iήcrv{Ug [$ӣu:$ +c#wWN-7oĖ6)&r!N'+Io=GPϨE0r?oAVYs,9N=;Q˥UVd{e,ާU@鵗;Af,COwEb>G;vZJunJzyUS\gom,qKV3CU +NżNKCKzn_ha϶V̍'=imr n?\BH6V$r3Ee΃j>zMXtj֝JZS^6jNpO55{’8tmr?UU7X♐z1ZTںe +;r#vRsl^!Ė%yoO׷^k&3U{y&E0+yNsFZtu5ϖɏ.v['1C3ryG^ڛ}' ֒c4{ŖokaTqn#9'VkXVy ϧZ| +#98b}@8Pʂn/]2 Uo2\48Qɘz:zJuHF +g Vu2E+c-s ]țqؓNXS7qǥhr|3ғOѧ!&/0'Ҧѣ+7:rG* i5 ;紴o>20gUQ'+`|I䌌5wyikyȭ^o;Rн̭wvݜtNy`.s<~^j1+5bK0RygX>hv +jN Y*N}3Co&SoQmf^H]vǦ);5)7,}:dgƯܽ ԺE?62_ʒ;rkVť1?D?w#Ti]ޏc7#3!21Jl :s nd%C`('*՞F npyRff8+695 hG(3)\g8pN; >@ݱ8nz h(:SfպZJzez&,"qx5ySo&#H;y7 f"O*=.73yh]K_oByNkwOќNUU1.D~jRO\RӤ +2 +/#銳=k.F+ kcώ`zQ$ +jJ7홁_ҢI4)6:ASLZEdp3_JшOckn[]$}U7|ӚlԈX3r3Rmwi5i3 ޣHiv3UEb<[YU^4D]L ܘ'´5C۷ ?z5Kgy<t䷲xA8t;M8Ȭ}G-}(IVE!&kˋQ\t֤%Y.K/ui;+";\3y}5#gSZLǗCkQ_iqM;fH?ֱZI>U<qZٖ s"a"WԁI.UMrg$q"dH=KYCZoO}HԺS~}oVQNRDIi\gi3ؤy|8!OKaZ[(!OPGҙmnfWi}i6FٽJ R)?^I;sʓ,j[+bk[]"HqޚM- R\VK*OtdD݅1SNWHZLn\7[+Hx G8P#X)l15V|K$ֲ^n}}y[8Eb~Y%ㅗnu$vy2+uۀyTұ19Ijߑtb1L,H:zi&$qqऐqӷ5Zv*^RԛrƓM$K) g#-Ae+H89֝64Bqom淁)20GVG7,ycT:-Prw=B#io`62 㿸*hr.x҉'ZvÃnzQv.V-#7NUn$7·##8z@H,s}A#FT@.@4] 圴kD_Ԡ:lvp$Hf^8T u~Fwf@'Ŝg)lx!i;\q[a{ć"iyL:֔]> +@#(h8fRn<;}R6J9N6}b6d0c= l +7*nOLI7*/g,,4*6>. ;aǵ57^##/*+KlN)ĊҋhkjSOq#%p4hR>z,sG 9 mq;tQ*]6x 5UDg7 66XǴ9Zc 9y v i T`n[wnu0vk2!s2V2'NN6Hx>P`agq>ՍKHFF:ถ')b8/u#xTv#CDBmY--fF1{mq edڭ\+#-lgڠiQ!WzP)SիҹkkUSoqT fb>Oz/YFMIؖQ"IJ=>V[Nz*@Kiasf>lp䆉IQ:|́ǭke;HyݻM.RԒ=ƙ&m ҨϢn3:HI%O[i%ǝd'fϿN}i[y{)]+è2OL(n{vwb2a]s=+%NqRpJ}3-QeZ: q]rm#H^*{%>(z)n3 u+=_K[-f!.sNV4k-=$˙T7c"SQ8<\NLIzѶqb[oSwBgZSi/fWVcLxJ-Aa $7== +%u2?}u5pq!-%qN|6|)ı9X=HN*֢nc_烞|ɻ&7 ujB[g>dMmww|cR*5d,7r1]HG9P`"?ZL~z$hc/#"/g4v58 ~ݸSmu *6T1c~4} i؍+z44c`g_I5 <-&6fGaܢ'+ p1j)rСrU +BAapw8guq%2v"q|e?vj[V[D79 Tu+wӍW!L&@~TmJW2BvAҮ?<`EJ; ̠f@c tDz "dfU\1=}+He7"vHI =ͼ/Gw zLI45n{{S Xʡ)u&Ml&K#ׯqYWwW7Rob͒yP9=zSw¬˰8JvX6M<ϕ +3~{zޟ\K QXʂp~u߀5+}neXe\)`o]+[CPDfmo +Ǔ u4$*sM;Z]w6UϖU(l$h,}Z<395 >OZ :}؂9~l+GY_2~1%:(IgO\5Bvl#;"0Ǽ_ + L\AW>QjHig]SWgg 7ֈW>W%}hv +nj-#^ w2&Mu߫y֏=n5mVKt&Ioo2{008)}ᗿuK}~ЍxO#w xC@=3p_^i>~k|Gyw[ȏ$0T`z]h9 :E")T|3$9\y#"sMiuK}&0@n,T}kMvmc^o rip4൴-#up8UKIr^//~l5i">\KE(Vzt;P9SܹTJPI'wm=k<;.4ӢxIM^|<1h`Mq7CL㲎0 [ bqMW>0 X6Q}%H< +AOroY99돹|%,2ImPtϛT+5%pِϛ/y/Tјٟ–K jP„ѿ2U>vCl ZS2,_|!c1yszNVkmP0>Tn<'boLգԑ#W1Pw>3|&^k0ԴOeaZٲm^>`|oQ1 _Âs)ʹ;iYcf\rO_zo >bF)'ͪCQS4?CYnn%-yBqܜz?\+öWyY5$*hxukeO XeݢdżexZ@n#E;q ~9=Dɫg5D,rte'^$/Nu;.`q %X##Q^ZXneE>#җi@ r_Cǭ 6Hl5m@{ָtԯu=Bw{fk3$fZdȒF!;d&?y9sZPWib{W1'zRjq__q^- $*([6ۏ W5zn}]t64Sڧ/}GyŭNHOxGbll^sl,- +zŊ?.f[c2d oǟ!$vZ.c-t2AFtOs$xEoo'O-2~+@< +qIqޱ>]N3[nY+#ž4Լ4O!6:L9޽+xplHDp9iF] R~?\x].2:un1cڭ*6gZu¶=ϭ; +3m;=TNz$`gڽF//j +'Hk<;?,-P3ı!`+/j6ծNE $cU~\%iu,˖\T{OI$OB]¯bԙl0U$D֏Ə\SV}GJMAXl_`G#P:QO2;#-_jOIer? +_/|֝·%y`+#{l|OiWV}}h6ʘczdiol ʈcxžГK5,XZ(f۽ =yYUmܸHK+gE%wF-?L _ iƶaW,0z?{7P6/A?2~ 0jPCtcb|u$HV|%^(^5scu2VW1$hUrp8^mh 81~3;jP=林w "y1dqG( aR\׈ݘZGE3h>V[7j?2?:~NۏuATI4֦4,-t?MsyڭK7+!#=Es猵<_ \i.K3FAE$`9=A_$}M|+Y~Ⱥfdn[##zזa⮺̌B֚Bv]AZ!FGIn'נ='ÏRLūp_$"~[x#Dc2ȍ`ק^+N7 Kk8~UuS惴eZWU.̗(&gf Eޣ^Z;.chNfv4:ZSxGkU}7CWVJ1-eڤ,qǵfY{TA`zD 00NI^d`e3Dvl0 xzP˄_-=B3om+}kziG}j?汷 o/ق2us'oX/7j륪8$ϧ5.&Y.f3H8|by'i;!Z90aU.oI6AR<!miȰ[ipfb03I_zٺD\.h"RJ~@) D'eWm*ͼ&r3㇍ľ,}4Į$?}sިg7?8GsS¼[N%PMǎ Cm_f]%9?SY|sB?ƽū4 ^[on}yA\?ƙwg}]1}ܧ20NWWL̉֓?4l8QٯP4_;L`I Ms3>NrkZ|lnbQ@V9el7Ws]pP:83U@iKE+xTPJc\ +dtPۊǾ/Ewr/caGl׌3=Ȋا +3 zX7=Cඍŷ:vc͔ZtGo21:usO%? hn}?651v'M5 \|T[˯xH04bNTzSIؙ5)_c@ιc;1w&ƙsPg7o^ +id܊mМu]'4߉xX\(3CYלήxOqK,m4ɆYT2 rz +M73񆍔|u>'Ug㎅~]*Oncc\WS-M6o:ex~ѓMxwl!qF SғW)Tqh]F8@:gv^k}Ms\Mg!W1\ +OR{9(;(|dO8lgtQDBnl_,Ab`Crz]~WG ClW+V + c ,017W?Zd7mFPڻ~>>tdp$v1VmK?-Eb(I'lTь%tω ⑤[DmmHrK8Wߴg5lT)Qï82ŹdnP݅s.ǻn⏂{X5{lcξ8B[QJ[q{"7D#ӎj[HJLEڕ{y=vh$(בFX-dMVy$.:qkkE |#_-?w+3*ne0~S#ᮝo!nK=%6"ܬ[vTfv[ʽXtۓ{@97dؑjGǾ(m4kOw#H짠%p9ַpV÷cS7-種P!˥hz?g-p<040+~//kۻ 9+8cu0Hֺ+zw:Ldʺ>.gdhH LDvA |KfѤg^iYܰa9>_kzUoh ݴsƲM(`8m.nf7JFmym,;G{-KXA7F BiwDZ~,mj!R1y@yfHcPMڀP[^[Òv:yKʆRr`q;<٤} 4%}¥GM^#dmA7HXܐp=z, B8cRHLPYiWm7,[}Üx{36Em;gjvZ +)is#G$wNK SI@ -,}=[v0p2@EN2ib5RFCf S_-Բ5ۉV9<"U֬c,R ٓ8ǕĮ.6DC +F7 1cn89X%4lVzw-mb֡IBW7D+nqhh]Iw nLZ{YXdln2p9z~lu U@C+m;sZWV\l +p:pX3׭o:ihgSr9#m܊t(jcbPHrx2*KwhrDx}F#~r5Jӄ\Eg_/ԭ9R)\D%`4\ߴzm g W@6Xbio'"SHndOSJ^._xCQC8pNYcwseh'80Λ ͤs)3ۘ>e 8]62')]Ѭq۔kB˘PXKiSPр`U4bNFܞ)A(M/CHbcV1wc5g-:8lc<+kd1~]ⶏ xhV#Eotd(d d֝w+k!QUJN TKC% UpIq[ Ii8TN[ EI?KY%;2 0}9"n&d#ֶⷂmz]'˃\sjvRb1)l+.O=ڌq|qPXjɲkx9>k9v2zk=.dGh`c1t7r k<1YԍV鎿6!IC،̨Nq}맾])mL*0{{W/grIS[VZҙi<݃lkAGԥޭ@#kM`Ιqa;RlLQq F(V6=fM iM҂egm d@#k" "X77dˀ;z}+KOxj`]8qg=*Gܴr.qڭ+TԱ%:Yގ6$A`:eQbJH>f8<w5+K_>^<{dzf奼;c랃֥\\5e%WDvB&û=x=+@v|̭ +]rI9XBA]Cvd.vkKP= +<ݍPLp7ӿbX3j +xHS5ė +!kv!6d)ݐsߥeE۱kn~o Sv9+N˻Gp7:njZ敯$^KX6čZQA\8/f.my|& ޘS6 ċ$e4d=shZԄKMB;]bir7SäO6IUB*7U_n@]~Q:c֫-V2 c +֦蹤K*=]Df\IWkrΰ&6"t5go$m.J!=+.n%[ʭ ݎppVrD-#'CgjӱԎj@W{LNݹfضK'=q}s_35ʰI&n қs4Q#sv; Ho8l[gukA ׭:(If +qjޣb~Vc95'K0(UsLA(iL`(㞔%(囫{L]c5[j4Q;eAԱsqtpl9445)%SFi4myXM2"I%I"(dgYt9sU颛ODpW u Kvd4gE[.E^z-`)Сky5oV0ipni+m[>x泩nUMUnzިPLOFQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(/ZL`&ʆ$uG?(!ҤlLun4k*\`rwQJ*B ^ŷzt$<΃Gn$VmxO^w2I{=1"y1T0Iځr;,8(xS",STN^2X K4Q8^ݢ  ͜b_ZFmXq2/#T\g<kT)9FJ;#J6DirϸYv/!O᧐!]G; OX[&yv§JښNjkh6\6\sҮZI@OrssUy&̀A sD֥PQ!yPQ{Pm4ߥ%FFX^Af#Y"C+x֦fwYpEN@֜li7yBLco=?_ҲIb*/;e9AbzNW'ڦmf]Xգ#p ’qthbKrj]"cdiϱWw$*}N;KeHFbRq[[#Nf'!< y0u{KHLHɈۡL U74*5-,E*#RUZHcٻz JdF{.Ike։I OOJoFqy;l>aB 6ߖEہ֫W; RM7ΒV`J(DubݼVz +ᝢmBLyK;GO  Cj C' ߏNݥk"[c ټ3fE=ԨZ9dG~*pj,1%}I)E(Y[Ev +кtܻgQ B[*v9㑀oQV%x oȒk`Ï[׭%kkVS^U$ K\qs)^zzSa3U"[H]i׎~]t9/5Gr!v.pF:SKۛڊҩMڊ$^'Wm|c96ߙ%u#0h FB 2+/,KW} *̗(.P؆cIV+)l9;q{VvqamJ:EsIlJh"h dC)*ø4[Q\\K27)"pAcڝ{9<9BrGA޴!hM芞^KI{YG5К&%NF:sR}N%X;7]Y9F;^ὖͿ >Nws5VD%G)-,Va9jFTV]EHwf*Bݎs֭6$6{pYIۏ¨j|@sZCIVҖY%o2cou3\%%Yl,~ Inp>9sYM`B37NXSijux/a_jjI:zݭvArʌ$}OzXTcAZ.fwg>Ss=+=%tV +g R}R;J}nt6z֟gM(L8c}kO6DʠdeqO綖y{pIPČ`{zer$soHcF.y[h bSi\]Ŋ |u9_QA{Gr *qQᎸ^(AZ˚RE2v>¹ֶplj.p;XYbS+7?.:G y#4v~^:֌eOo2J2o2xRM>FdoX\221֨M̛M=Z<\Op&]sU}59c[:I{YQݚ=W'j ln/%پM'=Og35XcX%QH'5ёJڧgQ@+Fd[+70hKqfܭܲO, +ǥ BP}iV<¸,mBv_w=0Hw˹q{jay8 lfU$,@Ie-,ga*$fm';uRgiͬ|]XRgd[ٛ=@i}궥yg$LI\'ަ\"2P@~n*a؜ƱTEԔZ57Lpd*l *Ɲu5Vɀ +A,,0vf?*?x-(lȤtE{M܃F Z}աO&s1Z{/_3k_2w{pQk'=[#0ʨF*pk{DWT{T/-L#P=@ 9ܤ{< dzŕi$7Ye9[, eow$*IlF} +'aogtla0ڢ[ OF6mҖړQ࢕bCZ̆4es-Q72Pl_֦ v#G?NI;;_&3Z6̣5XO-峒3W}flcLӾ]}1(auTG;K$$z#<2rrkQV{)9mޕ1eš:|+ʣ0mHT;sҵVŬ\9ì[z[̉[mϿ9CB}.n, @Xcڳ$xzUIi4 !Di9^3҅ݎwQO԰Ʀ8T0jZ\Ct&%,9Ȭ3Zk nn"o29Wnc{sG]{^#\ꗈdk`ʤ2jΟ>qfdRmI8ؕV#+<(m#oZe^3[ɵS uw.rTnWO- ʆLzT5%X뎝 RI| 95m{ُ.o3|mש(ɴ_OOz2\, 3VWIT|F}@5;&A=a08~~:6vЫe},;sno.D|Ġ+{Eʲ`:m>֗ftnk6S]ObIjV/,YO3?_VSh%JXWp`@?J%P #npjI&K?OU9\y1F!o1!^Ƴ}(C,3HS xo~Pq [4 +W.30}}(C▖?Pc+`a2,˸8 qQrI\d)TGX'A'ڟBkkءhnbN8V Ӟ}je'v8s7͒1ҵخTŃZ!4TAI5,%a `qf{,9çތcU+TS4"H֏sاw4ߴ?"h85:[}g/cYHܺŒ`gڕHkKKXL2&TVz2{ +ay.2H3zqL2-cHR ՛}Y<>[(cBoj h^i-L uW1XmY#('i#NinmADWs\e!P=ծךUMG 88Δ`2Tyϡ+w6ҽq(aMx\i3 + cv~|֍K +)5*謬a;cͷ秵]ҥ41R'=UR[Ns$u%nH8϶=(%TnKsE3>\*q}[aeQYzc!EfodUR+]|Ȭ 8{SwqGFaH]B\or+PM5E!:1 s,l(vR|%^ڙ.R(gU$i硭( +ɥi (#,I[٪ 917' d߫p6(n +#-*O~[\Fň$`vUc(LaR8ڿq}E_.ݎ=:Hg;y0yRi1)|qwXtfqRąC,Y scT3/`\05 +(=3K+*)Ww'wMV~㕒LC(R7\* +ۢAiLo%U +rGN.Z;mRn#x}i;MCXlOaĦgDhO#؁(DQ0l-޷O9?K#OL +iW0NJxGXӢfe %VNU/xPHKƒ(^t]GZ0[8N A챨bs©:e+[_' +~-X0inA'\-ǎam}:GmB8ZiWcX*p~ky#&c'nFӞs^F׾^]Ysvw+#0̅?)yI4qAHm#9ǽEZ|9MOzX4~~,{/mO-{ǂYu-][`01 K+i3x"K{Gҫ^|~֐ ]@ӴqVQڹ(b5iI.t>,. bM?3'޺,{_ ƺLj ,MӝLnz5?,[.eU#l.4 ~MBXLGQ?wPԵbU=×gTv\F#B owk:;u*Uڡ&mpYA^w.WtfAk08#;}1Us8Ú8$5NrqWk|4cCq ^d}RZܔ8e~4ּjPב!B6~ѧR EmK^4pMEЭlwh$0;LqHIfVV$qeT>>"HxxGR%GVoJy]^HTGjǠhΥgsj*gLt^ jX,oqhcHE=2L0q5F$jfT+Z:=6=㇄GN&I'Y8*y=if(C6@ PxWU7%PmA=~S^ &fXfQ0I)ߠdK}ZKCs:OGݎzr;;*n##l׉ʰA+gjHq zMLK[*I#ġ#3' Qu$;?t騯u0paQsV,Wҳ<{ox3D{z3g, 6[ H\?1}3>usww%fszUKOQ.Ynoؓ$dϧSnX6x8)rkԡ-ENz + i!?,l+In*2{0ig$Sk:(x #{qþq43*7{oibn">X8ס\M@(C_ :c޽O?n44b'RB Cן~_xRԵ+K++IAnvŽZ2⤝ŤkZ嵊Il*s^ AOj6j&Rj)t,. є+}Em +-G>)"9%/fp:~ x[T-4P +7;6׏gA67~{vWm3Եg4܆2nx+~=MkXo:|k66w[!s=ϽsG/#b['hd|Jy8T߄n!6Y##wqW.5RQyLwR%db9m\dmXpV,Z=JABd1Uݎנ"IqIv&B +ҺFkd0z[Gҿ'BZ[3lm/U^C)#ʟálLg8{2IҼ~7'5[h'TVWhNkо^% "C.T2ցũGnyeΦ}vsWS⟈OuQ1'sJkKe+XN?xlW=K)/,K1I9(蘚Ko:!L^8̟->#dBc%&: qxx _NO5%%n@AOATݙ u(B#7︃{aR+ _xGCxq,(N k> ~Z\.$2Y2i|W~-~Y6٠86N<}XݥMeocZs#w>5k xIJ=j7"8cqgcIÛ!9Uqp_&][XEXiy0+$710s֝%JTև!{ ,[Np=t>Ʃ m t/.kyNr9"Y]}]pB~T:v m?C4 i~J0CgHwެ8kyfm Be6b3tbx'$Z l#sp܏v5S'Ii{y\^RP#*;YԵ}Gǖw|rX1%FjiX+6mRֽ/^"xlQgjV@U?M5sh-x}fa˰pk⿂u>-JDtԖE_2\m'NF<Ş5|OUhb%E!PRMaxI.4 x0 0#]=kmhaikZ@ +{}uҬ5ґ.S0~dPT7>nFΖ\0 p*z^ݦ$B[tdINmF%5-6-L7zDZ( qH={W~!6 2qkf8XA=(B2+7oiܫ88}+ƭIJu] lAa~лiuq +2G80pI!ҼKk_ZYy";I${\¿x?AZXQ8P;|'n?X_OsA Q[^Ɛpa>.%4H_KТXyqv=>-~|BL%dI`VA{+kE23ɾ ϓ=ǽydl5'PN`9?ֽ3/4/͢kxNv6r=25(dy2" flg uk.AG!Gq*HqzjMcZ:$=g#s]~5&[GB3!v p>mroǾ9>m|nQ +\\+d?X𨵋xP-Pp99y4*$=Ax~F2è]][Y<\@HCʰ9}+/P~95l5#ԐW#qѸ|D`GL-GeizwuԶ&*T҈UgK մ,w,W˟= +3ӯ`ƅA|s:ntwG$dSǦCЁOa^I1<<>O_ΓSRnExC]Eh\iTBc>M{-O oiܠ7Z+7O]:;40/)Qۃr}kJ1) {sϮ~F3;ѳ_>7nL3*NzmDl0M%K:cvm?Bgi wOkbCw-ž?Zv՞ߤxWX'dkU zzVzC#cm:,~)#vo|m϶O9]?^8Əo.˭.n/rAʠdn`=2 w1weN3g0 y,y+>)Jf[]9.VM:o9bn oҒ]9&R=+ݿgV<[!6Cn@F_nx:YVaWΓo+}.o)[;aMǙmhOD"F%x!ϣ6^9ͪ |męT. 7L/Gr:j[m.n|{g5\?rJK(<<` +=*-%-?3xGSuk18CdsXV$څ@q נh.ΓM:i|<%>U<ye]wo[LIFyN~+|-o]Jmj!hc&9> 0xY3? +&0|V U>髃7`*KPwxKOQ ֗qkzܺM2Glt'~5ᮥ׵bW5+eZJz+`wݧM:&ܮ>WUЈrhA( #q@CU[fsGI:t\689'5=Z|8Kx<G =1?sW0x.>OIq 7R_<7q^\s{q-W09hIάvQH'x![O韙3>d%<ݪH2sxzݧqǮxJQ & v63h*ûyO3JK٤և;!˵q# @'m_U\XĥEȷ!q#o Ccp/촻(85=y֧m}+3\Ldl4o ]GP݁ʠ՟)o3F챥eg+j~0bXC + p;;]7^kt+Xa GzҾ-Al-rvf\ T߉5]Z}:Pm:1͕2q qJ:<c: ޼}i㞔+O3Omɓ#'S> 5yeODdƮF~_|Ex Y72S?)6?-rm +C,f]lHz +=;Ay[(eFm`4型6s˘gJS?<׶|Cu$,zNs} X"@0''9WoTs4'׏ֽgS|=密[{+Hayƫ8UQ0|1[$}^v3cOvwPGm +:a،,m²Zs>߅>)[x>mnSQtg +Gb2Ğ۠J_h>Cy({c%%KW6_#z݀?oWOMb{Ac)?7oJ?CCtڌ+Q'2H֏Og~oZ.ϊ+ߴMg#3W~0W_rƢY`TJC^%a]:Hk+#e*ñm&=4[43H +*(`v<5ZX ̑ɻ@? +}F[3 utѬimt Ӯ-`Y\#6{U++K F9vTjWWq,7[p@棵8MI"~w[ڥVcS.\m韯Bek#}Ve v_ª{{,FT.[e.,lUqeDU^u5n]2i]Ā ۏ#>:Dwzu2ڍ]nJ@!W#?*Β!pF3\V͕6!8=~^zԚK{ StgsLOݢK|bK_\o*#]sYL08$ 5i0_35Z:O~MEݭ"sVs!2}j'ʚRw]Դ.gHYY{V|Q4HϽumVA +"ˉwzP!Fiё'KаnghaIA8?Ja}1eyA*ʹYUsׁ9NNkzJq=zP8l{-N DIz6ӓY׳ܯn6 > aLUQ+*g/4]-ɮAlKuȫZͭ :ۇϘgd`ci9k:O$Rٖgk[jֺe2X۬W[ vN@:obJW,hBإ3r0@jDv5p9m_:DSȺ.?҂A 6q1ϮI$Sj +n:qYs'Z3>,3 8VLIw$fvldd .M&2~U )OI;/352 -@nA*zӧu0h^U3c8a\ʹvu;8-оB swnNSE˅Ͷt1\J%),2K Q܏ҝIe[f5rMČ;/irWziksK(]Qeu&)%;/ qFkM^%q `2@{V,iqį0M3;I #W} S]Y'){{fuF736QR˜6zz_FPڳeDlWCIw`&FVLHoM&u6TRS=sda\XbVSX;;rG^{ntJ.gyWߚf2u3=l^OKyifGec'U>deUd%q3m'Wr5{V (6ێx vMiVC4L{1.0siY rڲn+(ۖ3}*=OIDر˂XcE^-ĞJ֫Lq]j\F9RNMpFpŁ5,}&r妻 fR"Y'#<ж: DpPַn!}1y"dbz,^}/g?xuKFV<δ1kws?s֠ռ-lMt9#'M\vVk vϙG_3&jy$x(줌Ut{yzoƧ8 +OL^zV~ƭ>g^t$xԸێҹտ2G31D|r=+>x$J P[Wt^l-WGb!0}2,.n_>O#n,A:#4nnNAE۞%*͌jfm4Š(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPC1\jT ;C.T )9j¨\v4[z^l*;#ac-H QyN*vG>֒PV9rH8nD{G7eH#jVU$r_n}U550Ǯ:➗sMhhi%M'η,7"ܶp^G.-c=*.2JӬ1`9=KJ1ݑ^|>1ޣʋ{{S'I q1M8OS;sTG] up-pI5 W˄@<ҩI#sOeSprCm⡾KiO47æ»C{fALd>!${ld={c$0eZkR7f<,ci]ޜ?Gq w0鎿ZX=-j2r8#mFi"s8[)m9å^ӯL7!#h_Jeu !À[8ۨ.t11ǭ8n JnY/"߹vil2(1קz,渆?/l.$}pIiaI7 5:r8B,*4i ֌W eG(櫭Ѕ1&axKoxŌB 8+Ԏ3֩IjWg + 'TW rI֡BJ@(0OjsnqRkSUȤݢG8bCg߷5~x,a>|*Gz\h18xyJ^%*Vm{lgD_?9gb. +@^ءaC횶Bj;܋i%k ϥ$ZtF$H=Tx$ZW1 l9R{H%*4ROmSv4Ef.`+rn`lZ&2MBHxWڲ3Ĉ~˷kqJ%֍{X١"tާH@N̍Lg,j҈5Tِ`ziͰy&sON~I&tU;]0Tiwwwdfp3?AI%i,~}jܾfqzg֪3w%̨.[zUmB+?Cmfd2m!8=0sU&pP<ݻ38\+mEjMIs?vJGQԪ_v^ES\crg9ϸk an>UйOt$E\`v)5u˔hg o2u ,1#T v$8pssRf$11P :=`7nW{6@^3{ɶsq2gi*RC,o5y`8zKt\{f6ͺfC`\޼ۺ"7Mhl^Z=c0R{@rOSw(_/zPpҤ\URF#$<qRkFQsj;<_)`"轅-Sի@rv8f +ڛ^=D^켈|'YF2Nf 'I%Iqs(GJf pe%es0*w RWha?i +;]%ua3T'hMɜq u(nycE@Yє䞗 3 JpHѕL awgN(O9I8=UH*?;쟼T>slFj-(l̖h241(Þ:Mr Mi$\a)k*jwR[G&.t֩}H7ُ@5*+LD mCrd$~^@ڪ'==E5hطfBZgWɪ"fC/$Z71Iv7g8ECɒռ_xJԷ{SV,Z3嬩*,}:cYWWXݏAWKQgM +  Tk٢#zgwLinM^̭[ XfU'U67-f;d79CDRQ[FtP]E I'ӎkooYU6gp_y> pN9=yns=[H< N FhIqSii]ւQFA={T-h-lK#+%Y8>V{!xd5ٕTt#Gj~Mc)|ℂuܺ.d/"Fdnp02G-`䶑%2`[-M3Tm/Md$gok_朒ց WFA~\qYWrDJ|d{D28[Y< UfD2$KKj!$1%Xd{sY6]vp'E@q5^kxApQT +r$n-M[Qv[ihG=OH\~'1ұQH%H85wPUh9ORx')"200ERG4ݕ4u+ ~ uP6Nx N0J$ =ZAS=h=y+:q*峑5x.gGUK㌭XvrH_cU%F-*O_ֳsjK~tfG[p<~YAHzz"SkD,qZELJ#.c`k0#$qڬ9ᙐ:zRvܣ4k#-Q){HZ1KnV8T$kC368=1ڙ{h#eښ,!?B`A݁x[3dp$REsIsshdɜIݵis)HeYx\ѱW"Zte1,$ 2s8=NR>suJ΁N0y(#ǧz<VԬ 7M:uw @7r* DBH=-+b&$sjKg[+irB0'o,''}4.a%d,K2Hͳϟn3u"lG2 r NNz"tU c֍l7ce\ON*ʓc7EjY#Bq>Ai=jlʓoRho!c .}{w*Hh!!I^t⣒fdbwb}j婶[' ):;T6o([n +E=/.]E(P2#Sx8֬{ +yߜa9#8VF5c'f45(Z,;Kϳ؞fڬRIT?8`#\㎘j%֥ͱdg_eS~D̙dlN .fK-cNׯlzllV9ӟX&ܷ{Wz#BmHBlM7mr@mzϵhYjI ++g #h'9ڡ{ b*u*}^Q~6p~`/~6V6~nwo3;;B͔hK?.1^*OonϴlV4|SsH+nIȤj4dw6HbEmڲ"ц93[r][I#9op0\wx+4s*_/=UWr /ῼKDr:xOv"[[{IG+wGSW2Qʒ=([k  d!H4Wi'?{5Y[kf[/\<J (*mG|ZtyYV4SSN*ZEg-MaQ O$ҩ@󩵮jgn`A۲ޟQ1$/یb%(ɇth\Je;w @qIFښNSХ>M} i_-%獧jp Iw2.7gdXL;B8٘#YcެC=#/@H8',QMa7F9#Rkw@c Y AcKgK!z}j߽`|jLjpzdv"Qw1IA7çB FĐ4۲6cu$fOᇾstdUy&ilqn c&N:= ӓkvE}$wGќZo9u3&3 =}ky"fSd^UzZ{G3wSqRwKt<~Mu<Di.xS^,$n2,zki ZӜbnZ+gKr/$w c֙r\2q'VgV@PQԴ()=K67Ьp?w~8=O֒[xJNdbk,i1рA@ 䎠/MM)Ir:JIzq&xV\*dxKxvK!m2&w\T3\? Zpj-ɠ9.NU3~!h +HD\yuX:ndwy<XOҢӧtIm\oAn{Iws61!B֓C + rŹ +qid0FH4˕KviJl +҄Rؾ"62շ}{fl_:GqM ~l,72c'=ޟyxr(`ˁ=;{SNҊc偖1˺ J _j"HQDHڻctϵ5axYBy5z1œ_ulq:N>c1Y?++$J{\.}JcFy s  +j2sKWнpi9T,axdF+d9>lAi+<层xwQl,1M56։v4Rڴh5/#pc9^r===/VR+$2I45* sTbc {$S6+]4NXRp;i_4* SZ6]6#P\cVV. x|Vf4#A1 '4JzZVhmck˞tJUm XYeH QT>[ԅ(ۚ܏_c>/__DQڶ)[˓~S`v^xw4E'<Ч &Zp502eH>Ք$lW"_-vLV:WL,mĎ ۅy5_UóRRN| ݅Ŵ%Oֵ{Ӵ2PЗڨn0*$òց+3Y1ۇ/;K}ّΣ+_BΫy PHfvn95ZTA*]FE?zyٷ=*mm4xo9=3#Ǜ,Jy4ͬEL,IxPw6S%XYL"(|ÌTf  j[epO뚭>{ )" jݙ2)(V W '5~lksUmy@-v8Jۼd\)a)Sqkb>ПBZ]B6ӓW>YC۔))v{ҋhӲF6qYL4b@d$gڬK9\6 ^;H]+.y<֢i$U7& +B.vTx0Iw,.YK68'֩ەxG=2,d)Ԕ%[آ:l@ukb IY(\:楰էv.yzS̒ 1|:8Sy6%㺎5##5Wƣ]#(n3՝]HROO-}G4Ѻ[r} <8 h~i0D@Hrn85jyTy8M'=kFz-T#qN?:,m 9w1OH8c*JҬ8:nF٥B3qiV-֢e6!1>VD1yI;k-p0`rGqv-!0B>C_\Env#*PmrcLt&^_dWOk$m'hl !7U /d~V?x$w-+9&q"՞sC1`p K<[]# ԐyҫM˓ӿJ[d_"\rj`nk%__(,@~ThiO"2T)uikG 5Ҍje‡ا1囗6*ύxvX&RX{8cP#l.5W#3h:}(vB)Iر7pUr1mش|㰂+?f(cey$mN3:M˖*m.HRuR?.D U%NA9Wl \=ϖШagT.6$J6$̰}T(rZ[Je-;R}ǵM[̒KðURD9PGl+yBbS,Gb)k]M? +rH_O&m ]aLf4S:NF@z/g&kRE,5p̸@̗FcVuR1I UMל[Y8V{.sTH^( 2x 3GlioDwNvⲵ .++u;ԝP28<>b8tP<հ:,TdjYvvfy*H%-|͖=x +,r aqR>66g{bͣER02`c{vsB}p;:|zxe %Ǯ8e]K2 KIzҳ5b&$XpłlҩA[i/N䚝nHɎ<ՀZlsJJoV?c\9FC|ޭY\ Yb_o;tJhEKІ nTȸ`OZ$x癄{2NFqﯽ@Y Wڻt~eHgwEiiO(\A?ұ(o=CvC'* 4VBRt+ɷs1,N; +˴f(#\iۑa$gUtv6`.;w`YA9;V1lW5"@Dt*Q=E7fe{SY+VF %#dA+ g$} ]EAKȾZx$4-f7M&I$uQr{.IGqԻZHF^WEP'gT]IE+H^8ǵJй{̍mk4 +ƲRqi|Y_um咥d]<ٯ.IqU3u<#$8hǒQmbbm`4 q*gRMZo&poR1@y{Xl`dvE=ٷHF]M=PmWDC!9a(ʀ]cUYғ+Tmm9ܚ_2razZ6O=͆m(VjRDP:$R3Z vTeALJ('kyu<^T3ImBF}qN[rB~^ xWU1ݍYѕVQF;2OiWjHPK 7S$WVy>mZc'gާul&đc${cҤnHd&pr=j;#=z^7!%StYnx%]E%'u'Gy(;xmmkzc>Y7!>\Lͣ^,n ϿҪ..VV&F-:U%bfFWF*r8 Wš#eFf*ևƔOOio7c `ctxoϘnHC槃\ɶcF }?Լd[y3ŌG 3s~ԕRQPïC@Wx*9+aEA ėrƛ"Qd8>kS?ٱ[/9ǥngʅhAUJRIiy!mFןJ5TjrFD[g6s{{V7HHKBלV[Һpi{45tcy!\{ǽm-$DgT/GefcjYԡx?L0=:ևm>Yǚڣ38vxbs튊8ͳf`քMoo0\0WB${C3/ T"#[Lju-\ǐ?:q4Z{8oC"M|XHUrh '+)C6m<^m|˽1e;x`OPդ,RwtC60\Hi,b4zf5ݸ^Gqa50] Zu$p>X'-B[hoG,mc`-h{Xa6Fݻw_nfy!ps<7xnSf ImqflĀ~T4 +Z>2Hnty'vPE_#G]I9UE@\T2Gҡ1"a8Ho֢$v}ҒB#l'cjޕq[Z`@.{QvN~ikI +)ԗvlj!מ91%I%25q Yh\./fb JtHĸP]G^Fj ɉWuNGOJK6݂XTR$Nzmu+=.0P}έ\[G\|!GaEuq#Z+K}KuPruȦ/"C!!8n3jyYlBcO\U14!OPqJ蹸IkQ.e2֮="v㨬h.>H,:1"s<g:iSgPV}7SWsD3֪N,I ҙ>s"]8Jт9mV+ + 97/Ӓf܁&N0}}),S:=M$rT{X^O1Vr OևۨA߲Q{=kD(VrqZjڬvD>08_lvď:EjqE,yݎi9h[Ӯ Kv{ ';X\^SO +{qIi2;έ1#.)𭨧Or:dc$OoOzMBM7ˤ- c哻hL֚"hX>q‰-st$+ZLԡdYu0z4z.x{: DI.r )iP֤%x"*zsZz2D8, ǯZ4Wky#eL4fы㧎 !x"ouz9}꾨bW~OosV,?ncg gEf)&xLSI]Gm n/tuq}kN<c2f16c*o688 s4SKRήV%9qiʚ#rW)4ۘIdq֢kך9o1UC'5,C E0䂹WO&LonB=ѳyRI`zqSvz=U}yL7cKry^C uƢ<[q3=ލamw$KWiQҦI&{~vrIcMۚ[2h/mq>@̬Nd㊿gqco[oqqi.n!(ճ֧H"kw &٬)]Ž [Bk$DY"<ԧF2gb"NO+y/©- a:ԇ*<{|펔ivsFuugӆUKBh +ܐ^i[@$aA~KH<=£)OKnk\QF\CBNRɥ>c ̽,-5 ߚIGʯQ:c%iWg\B‘M%цD۶G󻃑ץ:pR쀒&~\sק6K8ƪ tʱ61܀NjEe= +ӌ*s^*}2w?qҥMq7vs׵U9-B-1Cֆwdmv0fKm:Ȼfy70<OZerN;wV*s-N ԯqi~b,v$qǞ;6$nS\6;>Ҷܫ6Erznlu -_>ּgVd.pųX-ch"Ȓ>qhdU;$%~tnۏƩN|·N{(Ҙ@ }k&E@>ARHΠD$`$@UӢ,gGaI%sY\y !EQ3֭mqzqӥe<2!yRH?62)3ѶfWMusa +䍻ygPS.:K[ sic p?V'dab0LTHKfȪ @Z;kX ޖZi_nTzg4ך^/m`:gޒ퍤2b#h9Z: iqm"P[(Wprv{ګƍ ;F #Ҷg p*~8m;^}_NĂ5=F9&-!8;Ub y^{O  Ƣ$X] ֆ٤)T1{=O+%StMC$%qzqւQ((2 =? +n"7٣ĥNKgq7v3qJnoYcza>!g<iw 8폭k^7e~9U8E]Y ݩ#;8THX$ b#2eۤ$2 Mk'ι,i$ !8A{㞆-oeeqV-KyvjFx$`;ޝgm ky'8ZmW6I#Rxǜ^UZiC+8*Ѽ"XdmUJ?jgp&8D%RF*Q4Me8V෷TJn%'Vi<Ȓ$n8:W9[G-5r;BS'JM[&OM` \v OӜ6m@]Q>~t Œ3@>Ζ[_R1=cM_zZ<2$Juڻ3²*!;~u7KOY9O+RxIOO2XlO4룳}4)lөkȒ4Y[p݃^_YAs *5=B#c=̲=o@g sӡGn˻oqߵKB,2ŸU Ȉ|4o7g4F-9U]`+ziot+K_=~h䑁Օy+$ddTIQ(s7$/+; g4$v޸T#l ?&Xf!$xtT5Cmh_?k鍧Go,0.bPВ{S2miM6[$slP($c׿zd֚IR[2nZJI+ہL.1s}*"T‘=`|ܼ*$14~ENzg\-r |cjJ T`֛ +F $` E-Fרn:sLcjUu8^3ZGm.@' +rے@Ku,(-'rr Qh6Tl|ۏJ~STԂwm$so@23I4+39&k>P6e|قD09suubC6Kws$YEb##¤n-'13*zc=|˸FlC {*WW3h|li36c<Bܺ4bR"n׊n.-{GGHNt̆F +r9҆4 ݅羊4Uv{KKd +Z?K$2H͖C=ZB#Urx(l6(ezѿрwf:coMOqc%B8⧗OIJHLXR0kS $$lm?`SkUi#;41N1vjטmb

      P cGHfrx'ߎ]-tRV yZ7mxiIRUv,Nzb$&[;5U>hH[\f8#knޓWԤQFL;±["? ?IHa0}1VD/"6ԘA9Z/]LiMk?z9d#g:;!lWnmmtIGʆ§NNkDh u#g {օ5c+Yw\2*—L7NF+ӭEV6!Ọ, Cv +4יsEy$ќs֥:d"|}x{ojLzcͥIX驥dRBeQ-U:;-[ozv{(nh_VK;jw.p +2qm:b2 `eK0yX獧ܲ*RfGն)*j Ȗ0r>$iViQZČ6gkKxH7aRPdFpFf)`Qq}Ŕ]E,IRxp} ^!8zJ>@?N:F~`GҥӴ}ڒF8}}eMI$3F^;PokP,+]$SQ fd|4ۉvT8Qҥ7 +"ʒ ǽ&{~$XI9ܦڥE坍pr9ZbF;9\"ۘMK7E(2a5Zn<}ا~E+cڪi6yѐ+VSttF R;{ZZd:+3r{Z.:nQ)h7}O5>4bViR'+&ilXL\O, 1֋jJj\M.!*~ |z⡞TM\`9߭Z'o $ʉ6ȠGgi%/'x3A\CZ[DݒrGZ&xJi"hݲهVp}ѩ8I +8'Ҽ{*HPq`7?ZU/2X7g{UN$QoJJT Qk.;D\Υ `䯧$ړ\)ߗg/ێ]?l7z[HY77L]A6bp4)j٥yum&ʎcc3zUG-- q qy*I۳\>E,mT8#Urbk?hfkȈ[QxsKC2O fݶ1x5Ky^kqWG6:HYrBSqC +[yo1#c]Q,vGiۈy9|c?.[ֳ=O0Fd/ۿ5*:ҥKDбexeh8A\Ֆf$FA=zy ՐHB~`ZѼlP_0pJ8Bjj󰚔pdRs3G۸ g$j}oss%#qU=E#\=MjCNK&9ǘdz4EeV-ݗ5+ |k\qңԠk-s=9RVƥ&rgc+! 8Yr%dHQ9[[p\_Jmnk/#Iill99QriM4-ڠ8ɪvG +O4q +#V;sګ@r#vgqhǧ;ZZ.*Un;%C$2H&eذGrNsӭ[OͰ3o҄(O*1$5;'5q(ݞfRB;4 0G\4Y##@rP8KTY$;u\/+JicxԶe 3WWZJil zSuO6d V-bqo޹*dO0ch[GH;a0ܚDZ8,֟1m^ȓWkٔm۞ +i 8=J[W;ئ(F +\:wR^ӝnKyJy@=T1-<3/˗bHVVKu)&~OX| _Z cm@%HZv\(}߽ iNJR\o"/ ޻A<Jқˎ5%:˞n؉<+,^MsHAE7{?yQd<%9Uf>_?άIiZM* G i@F:~&lsJI'bI-~ۄv Th'?* A:SRtToczS#ah䈆XNOG)F`V#95F" ǚ1d֪pc8֢/7qлRj]K)hF;(9(j4%{Pü;YXrsJ!YQ/TM&`sSGs'> +5ܕޅ "Cs$ ?jn%u +BJrݱMMkCcr#Jsw%xjnvV x.q<%aTôQc's)6wSZo4qR`$cߵ>[ WoMJFe8KJcwQϵH^kOLu2K2HQ⺎%dU8*ʡI_ʉX!/د"~^IIWvX!y#b #$t8vEIi2qry9UOf sZ6]" _pTq$,%e$US9-ś6.`Î׵gb0X5<3X:W=9uKbXh0qPӵLŦwVI eʐsڠ;smAm'@8O/i1̇8i&[r3(`0y鏥7S^DP22O߭Kc{%ʱ[@|sd5tK FMhgS 9V46I6ݜJ%Ib1AK 5&99ǵZwG#$Ҷ,sZĚHwC+35^k犞e?,*5uUZoB妇}KqJ䲜(zd;(`'UbmLS,iPA_zs1ߜqWVvD**p*WօيJPZƲ͇S \k-[rNX*M`#^eYټVFiet22Tr3i!I$cH\:Sjqn2reWETU)m7GϚ#f!Ldy}R};J{;d1>dJ q4\OD]Y\Zyk({hg;HjtNn~~=_P4hY'Y䕢j[y湷MܬɈ˒Q%Hlt/v6-&-VI:PIS rrpV~sٮsJ$ՒW}Lq#fr{fSUCdkb0ON:H FQVb t5fmʪ[vlztQ/0~XpNO55#x ?NvjUټF\s@j֧}skooޱڸ vv[HH=[k3_2h#ֆQ,9e[lmxc qacJotmeh ,\U2L +d^MFAqgknK%,u,Չy\r~ #0)TQ"p҇g*K;N;*5̉YG$gҖ=b"(NK!r>泞+'7;B#ϭ7MMU`%GOơ-5;ΔvG<,O)$O׾=*(ubգ+.偝D@8]eH'nyǽRIUU "ó;bexwmLMs :sW4`F>w%kGVP] ۍïOzK\[\@b<4^\3V[)EƣFfݍ|׹-R͈J j+wV%]35MI 3#XnJ۩oW{t-2m9PM@ ?v* z;2! O]2Yn"O q4̥+F`w]^8ֲ'Xi7` gJMHѳia! GJ%S+OLRFZˤto>k6&Hѷu*i:^ZH+:t3A5yiߛ8nN{QsHCekK&##M?H+٭cry=OZӴXO:R`q>%6pL^\\X?4y8Wz2l'AJ}dkh"R.$23q:K 2M*?34I+JY9Bβn {iˌY+fKeАI)Ld5t[i&T'{37N2^RIE*:{X((((((((((((((((((((((((((((((((((((((((((((( ܊p'y}XTT?]|I9z'IhaRINfks+,GPjo,h\2zSV#6X:V1DaQ b:b )f,aa=v1[6󬪧-=V"ѴK5wozs@+$ckǯG1JV(_C3fGGv!_ڡ0Ėǚ犾l@ei2>=.Yo:Y 8nhq*۱zPJ[0qUXBRF·vή]HgKp ~+>lQn;6]1W9Sd!0Z@wCq2'B=Nxէ-5 l 9DiTM!a$wG)RWm銑dhGsV5K&wEQF:8v;P/g'ٮfE"C#qM[ + +vƸ`͌vU$)X2F2=1ͼ(p@Lgj&KMF,+ lCt݆ =X0 ɼG`%❝Xsd4qWqf1U/M+"Fž늻y464UNnJaw-# +9J:raZkI/1uҁ6}{a wάD}xHE`~lc,o׏ڙ+j&?ܾv?Vb}NcN7V ~8/Qc󎆤a|77cvxO* N;&2N3#)oz~ﷷ[xy{|7Hf=K{Ir|'nb899?ҟϩs00:U/ύ0*ռ- XnsU=nBpqqE{-.X30ykyZ'bx +yɦ]7y@3> Hdzg9 \!'MZ_qvWi!!`YֳI;I߻2g4TԽ{,VϥC\ H!q'Zw"- kKk.|ju7VphW&h2!Қ/2WU2gK>.<#;FoOAT4ۨ#Ilop9R] e&sZ=F+Y.ɷ%J-ē\~`laFy❝Ձ F%`2}jV9 s s(lÎ?1<*,~i:L`RE5Iw-,bCq9Z}-ο7LtwYXcF_J|RKhwG7c9P&ߩϩ}g + +[RCgߟsM7vr\e0igS$YDݻo}yIO1ϦhFr@U  ?֭KvIV2}:14JFSRDTي-9mA( FZV;sՏ<}h`muꈞx&.2}V$gXX!y3M +0I$uiֲj,Trͷdg֥֬mn"aXj7, />jRMrQQX/1 b8*z_H{hyk0$TluAiG烿n:{Tݜ= czF)˙>ZIum32$!=j} F "D0I:Z]ݵY$^F(.;&z0_Oj" +rnE. +G\[NfCܶpNOC-V%[qYs# c"ReZK+Xk|~yjϖwQFe9IKB +2MRxy'DPVk}t5nJ}egUܱ6,VGʸa<`㏯")[]98+-YM}:[u%~}zˈug认J-rR-Oz#+*@#zZr$ߙAj61ʈ U]/NtK$ ETjO(i#A"q3zMuqD嫾dsލ)Zrewf]~s 濐$n[_# mS#:cX%ըԽ݇pŷV-#Ft26gNkK\#0U<Z九,վ7`c:5bTm'': L 79ǧ';{T\vEb^0OlSKʊ `WHgOz[H`V7s&6ʝ#l߆m7jf 1a1{\?lr3* y "~5)j:T]ЫXK2I%Qd:W#+cGRך$(#F߹C̕І--tqSY,>֜n,nlAJj[5pqE;Y08aI +MYHQcp7ČW8*+W%#3֙e͌(Y #H>0ֱyMX[]\@4P̈w*U XDiFT!$>z +}II.QH .wq{J(t|Fc-Бڲ6Jϴ+Q'mI-j spIkULyťىwQ'?oMKBDv8}6~ a;6d-5ozqK]Op"wRxlbVڽw( py9g̟3%[\F(YE#*G8< +҈(U `:7RK)n@Χ&rn[< wJjФcRNb2^$օ6I!v`O`>D:bGR6GE'ٵQ5h`A)I@*Wj=e,yjbLU8ǥM}NvG I_/ٷjWC>%I32^2o݂9;U+V 18'YY]I-JI{Ki*6v*->X4/3+G?[C*Mpp*ɪNU\\j +l?E{{TWkc;fbk_zT c ?QfBH8+cISnki!+A"FC ,WEb6~=15͵U#\;Y]TnRA#Қw35 6o1C, ,T8s;KigU7[2mdOZqټ&٘(v, Z\V!̸pՈ@9ym$WQ4- ^ON^>F1UH[%O#C*w; s֝{<+qLqkN}FĪ/ gץ$;*Gq +SwsU +nHP%̌%R:uj;kU+")n;(@JG'P*ƁprM +8lFX4ܩOԎ#2$0z٬pYnH%Q5+G3$r1 $.u(G R*$#' +JڎRJX\gPi]o{;Dkw}<?աb_&"G8G_Z|iʳO V1 +O4 ۊ8$g֔% +mϕr|?p#lQ@H^ +cuF2myY'݇jMu貊`ngj?o~b#-V,+G1Awh^9.Sz(]6jA&-ҤӥTgF; +rFM{"NȒb# (K/SiI5y4V$]#]ǑjŴUCf8k,iJYTas42)2L%v7.Q"4bu&4<+37R&RobmV6?2 +-݅"iЧ)ֈ,Z{Y.(9G|1jwvm4kv5 Ĕ8rMThB-o,m젂Oۜi>Ҫ]ivctn +OԊ[8.y鳬+=jަQZ7݅8>_P92jVk3O+:F͖U$ǿcQ G}K".e% b\隺jHhR[< Gs}MN.8UlwϥnօmF^<m j(8Z0kg97,riیUCtA/GxV{WLdsN*K1b#gi +g5m>!lep94;xed%B6A3h|ܾܵxnI|+J@b#?5N;#yB9fݞ:v]kvrcOI5YHY'9\c)As`<5JSH=ޫď4$\͉Tb4D)At~ˍQxOm^k"Y8qx֭^omp2(Q!8$V}lS;8+H%#n٪;3ޱ%v-$c4qi߅Ӿ{bD8W ޟJq"1>i%{hSX,ѭ >Fܨ`g+,c<֪=rXMdvcMi$^KyJb[:f3`*#>. +T?,fk[c:#83S+p&4s[lCgY5=\*s8jm2j- MB۶?Ʃh?i?t,dUYW854?ثӜv8@]Ԙ|2>q-&,o$,oɱX桺lpc$p +Ҋ;RbW<S +0z@ܗ*6R{k[>\f$>8bNqthō:dg9mbuh))٢Ki8|6W %'֪X̶9h'ִ=⦅C*\)ZE.qya;YO.t[''zU}>64YDLsq]o ,\22yq(&nAq#N{{V;cik<(Qh'zٴ,z|uj^|ZO*U#RW9Zc w^kN+o5H ɻ{Yxĉn 4Ow=F )h4sΡ>BO2*ZL'bIl3<:8kFmL}kFIO8ˆrA\dj+"9nVڜ +)xVKuKC*qϭ+5$2Wv[䣸F viڦ갻W-=VK mI |zqYQj*v.|Gǒۜd8Uf!ӌXSri1 UrnɏdܒK1'>+̑FxBF;RIu#Ķd_22tkH(-ͻF7C|y}4qT6rDzR~J Ycm,@W o(U.g#m +1.WU)i;C1 nwԩT5ŬфK0${UCn$uǧo!x"Jٜ=?HBVv#%B*2IsfW{aib2u[tS#+#z>;{xK ^T$rB$9(NGBCy84dwQm QL$jZjo`+r9O 1w @EtVXKKIQ#7{TgeRB1ڛ CdH@ʓo/$@ ~f?\5fѭ,WmIZ|7~dy\UO'&#ec#8*fr+RqM*+no 4K22rF$e[**=}(MBId18:Qk!4I O$rJ95= (lTSmYZkq UQe+ҡ>mH K2I$zmj\׊keGd|#`=U9jsƋqשEoԒx4EͺǞC)\>T/$cZַƱ1')6kͦyIQ)R@'88̎" dmiJnR*dR9*y8HX8)s{ {zk6Y s +%c(ҳZvݙ⦙\u20l>O$Y#„D}mbM"ye,Ht/g\V⵷f#dml3ϱ!*4E9\1 *43̶LV 0= [AvNKKj+e0ҋiS~R\Cy/296捲ƥ9n%/+"[nZikXZ!h#ӏaOY3,p#,01TSIY!`GB)"[rW2ZOora$SSA;Rs%Hc0`ppICW\̓O ~`~=bXNfi)9eOc߽ckldo)1IJsӕhEh0 `FrjbP")DnSyv +?iѭU7nmr.Dh$(WL7yWc]ߏVY'g[0aK,ew1q1!ǍxT vl#'Kk2 Xʕ;ՍMar"Pv@9T*wNfOci*sh]ɩk7#yHdmp{UŪiD~gDɧmګq߅MζT=~\^8eԭTx}q'r_ϔR_'=1JhS XvndYNǿza&A +I+u'=,G +q*9?bsNec)'T#i6Hʐ&R=`n%khNwlpq;-́qۊnDL>%i5 ϧO"D/i\QuNF$LnbmӟqTRGqT3z,.o;Xƍ 7O?Z]PK-76'栎H@D(rN?ƒ}rmq u1=:uRmN7 d6LIж\4랄#ެ]\YAwepy 6Ⲥ啥wfس19$4jTb)sYVhWj6 @Q-R)ݎG^jb[95`5р@#ʍF}^:\fBJE?17±Q n ɢ8l!vu${HKHS( >՟ C(jmBI_RHQ'0 !CxZ B&ek),9&HX8 Is <+\3v՟#|3BGm$nՆ>TZe̒EiFѼ u=[Zi$Vev-<l֌:ib@ +8j9y?yh!ɗży89"&6sx+y g <9CϨ#j񎦥-Mɴ{%OqK<)1өj욏,~cJͰ&\n#Hc2,(y '+gȗcis֬4Y7ɞ\:`A'֠yYIy)s,]ѓ>Y>e_!t5{' lqRw&\. /?9$wcް5 lbJ:8z[}\NJsS'I^@29V(8`}Gg%Ι2}qH)= %;(X{[Ͱf zw$2Jo"{1m8mZydG`6qԶm$i9ܲyLq:A\\9b28jhlf] F7V6.0qY,SO0c99AnOeu467âzvPeQT=ɫ:uЂuY\ 23ߊ7ʹ,Q4qW %$Ά \g%ۥ,1*$7[@vAzq51^~GSރ}V%ES8B(((((((((((((((((((((((((((((((((((((((((((( UXʶsSQ99C)괱r$9=KM$H W2U 'ZgؽYd9bѧ5\9'ӯ֫z۠0I&]TcUєbi+_=9O1=ŽvȪpqβ|]c֒_KelѴqA=Ug%k bQ}*X{`㞹IAFsǥOM +br@銞>y-A*y`ty +0Ğp:M$L<Jʛb83Z0~'3q2Y,2pZuL7:(Gw\i+el r;Ջ7|[Z5; {zJRn*yaz eHiQAoz찭kn;O11NBxKh ϙZAov- &3w)^YJ9oczT>\Io)A> +i])j6hy0`I9\8nckY0 8'Z/'[wyd峁Xax\>4"N1VJZVY+u1Ďce~%0aUwdҟJ]M':Bte 5f&oC´(œCYeGGN'ۊɺE2˃ΛxLfh%sޫQ+dsڕSFwӱ={y!` "'֯YYCrn ^V ϙ~ݠ{ sXK$uq3eyjug^\j *gcOsLV/J,}ޢExlFۉwQ{VMt{3]6 "nNzՍZ!]GQPCd8)3D-Y[m^K#:ZIdߪx}U㲂V2rWЬW̢>0O薜R)!EWtnc{U{D0Mb618Dv"N%B[°Pmsu%tPV^ <~'Dw{Iq>gmIKdq}5.QOuvF+28ARgqo6v̑Y,-<2ozO#RK7VE[>8^>...}ˈb.ZFc(?ZhnF(ֻ2T;K&F&v#Y 4j۰\iNөjNIy =9S.mn'nC=Fx,Z9_3p#'J TI:G>E{aic4Hʛp66 =yii,"O&/o6 #9Bi,k{k9a7a`Iب +v&SI \AǯZ]i,sy1)AjεmkdG$mk S,iC5NJFymZ6$@8\ϟux-go298&.B9UeWx闯ks^Mn<Gn(´֟7gNY<ɖkx|ޣYoz.41]Vs^N` ֨[eA*\a~(qKWBޚ3dI7l{ԺS i>)F1c1jolsYҧ0Zp|i6\yfoˈWһ${[ivgp=SCmZhYI:tԋJmE= PHOOjMfI"r~˰/o5pI%rs |G68+R48+bO%9#MI.NLTlO=*s.ggM  RߠCox]N"F29TWr|%r|yn]N^[t-j,F?/z!B}sӚidy<ƑI&YMC43:ұk[Xgk3|s{{U7-Z)f0TɎ=qTeI29ؒjĀY +GVI|s ѷ6]&T9-(tjSm{Զ N\vǨٙ^ؔnWGEsÂJxeaUpOJu~Sޙk7SR[kwK_"[[c=m$'7 v%qW#8JceYpQ6DO朶"nqԊ+h)K# ֥CY~wp9s֪v1^@2W#*;ԝ 7;JOL1Am빭h?n`N4`\jsI ؂z{rƼ_6$ߎNMBɤP-2Ƕ:EirnZϟOzji{[dyo:B*ְiM/:C$z ֮&8͌J_X*7QnWԞOzko>NF Rq׭r[iЖRRRj56bP" Ap5n%2< zƯhr]L&<)XuQŵ4;g84Qp\7ڤu]Iu-nGB?N8+]7L8 ATp_znox.Q(%#-̌ .@8'SG51۔q=>[[-H"<3T5{7t؊qs{z9{XsaKXUR?28737enN8>,wm{W݃JeިZĴJ12G˃Brwp< ipq0-UgyH47359Eh?)8ڧ28&i`c+u{SVLJ7"W &8)sou{Y DH3t^dT$xބ&O`HN\Lch\=*Ζ{2QVL?ʩGFIv$SipE#VH8CDV歮cm\-[js;)Mǿ ?Y"ʆ6v;A ⟣jd(#msj3z"xw v x^՟YZ 1Zu6$8X)k: HSɌ $.8r^b[i9]TV#Ae4nFtNm,9 5(Gm5R-bͷj݇̿c\1d\gG-n qGoȷ IwtҶKl4q`r5%+a<01Vء +`qvZO +R~b9ZW摂q喍(l @0bl|.܍5nW.?i5!^Y>lJRXۛ3#'*QM#퐅ⳤYfbs6KV\rŜ^JqA @r$;1O!+M488 n.9T/iUȆ@s,5RЗNIfsJUF#aN>1\Hn.qt属K6K,s;~TuPOW ^ٮ%}`gjk_BKwg +WAm2p *mʕ8EC1wnh5P$X3Rm¨_4<Ԑ=H vjWVyl5fK0Nȿx gsRХyScq=TE.r'JIm:Z3Ch==6JgBo/=yGQ鿑 b[[[(_bqAx5֞DۂIz-ι[$:cVt϶i؈y8AM-] +lk&2T|ւdelۈeZ %șTǨTLHAed񞴚K*}Eg6x#hnVkjҹmJ ,k({|$6|Y@o}"jQݹor[:O&G}wz-m>ym v1jSmn.VI @3^xY/d9<-RG7W׆;@\ M4 gO4c+$ZΫ̿88jÙE!d=IVXg)[[׶7= ̹`N w:#ZEi#px?Bcx._k?<6H9Ͽ^Էj9Sjӵͩn\ 5Φv1)}HqY){,voO{<=|:V$s~1~\l +.2Mcq4^,.T˫ pl+Fu[.1qN+* pU~x &T +wv}ZĭImCo<]wpӏaޓ]:N"-I oQI]@zԺTv7 +r9#xք[n $y֥lo w ~eGO\*:-qDOs.,mRT. 9ߘELTv$ =i^]Kkڅq_RXj% m(Awg?Ըhd?gTn{UM0iP|P}iRy_{̓Hە[?AMeť$iMt-vdbI%I⦇UUL '0994' +nV7!膭he1l!zjjivڸF Y}˧c##:lIqMڙǑMrU9P6Tj֞^U9ϷWVĜsWcb-E\Ѡ x?٦#{G9ct#S>) RUx g-9*jV# <(N⩼F'U'*ݻ6:*xC"fLN}=ljӚ斈V,Am !$7ӷjf4F+b8rdvڽʢkFcMzqOM[kx^6rC/Y\M&dU-Yy 8cZ4n/H4DW >u{Z@`;kA%ԓ*[ss&ɏ)fF|@B}-[8@9Z$-ҥnkNiNvHJ=$st6LaPs|zSk.M۰qTkTͷ+6Ti[3u)le.Lvb]77QMd sҢբh\ ;א8Os v3mכ`f?Թ[f#'{h7*&xH) ̚PM"HٗaIG:Ϩv$7QNeX1d>VF.u&1Gw#v"YvzVju''< 1[ڃ鬒:$P0 Vgס Z\ S !`:!9Twy>Jjo gyW ;&DIȋ^;V4FՖ݋-qaBZ+RNm_aO-ྴs) m'8Z׎ !,>U*¥ԣ[1bbȨ_1G砫'KFc:]i2xkS)Fn.^<6$J~@'$M5D`b9,ruymj nbPza;_a_4jbeګ^21TXY$~ZڭNIhI3~ijnmȲ8(p|ܭ_<:G"tc-/'UjյH`5Il䑌泯nŏvq' ?2]ZIfGLR+=(W'N1-QXD_$|ck$VKvyvni +-P*ETg=)9Vv\E%" 9隺5tg̈6P`$>`zuQǼfT +DݍoἊ5F< sH ɭ!tOX5r5O\[#,#^[[9G:l`G\ cW-;֝@D DaךȆ+vsr7lFooSqq*Y"Dmbo$ѸPW\c*@uơrn#xڳ&6?^:$Mwe}M/ x5cIO<@n1Ԟqϡ7l _67O0ç-#gx$Nլ>nzKi:!6OlP㷂)Qǚv51^>|H-pHyRW\}4F+JfH:B94ea4̐jehys "A$ѣ0PbpGVkpJ +k0ݬz$ïҨ[=Ծ\eCc?5X0 +۷.ҘNjΙq=~(l7 cJ漪RRܰbG<On$ffSN}z{! N:\ 6ۀ8S,tE3\HB8'ް$jYf'!u72m-A\RY%I.i9YH',l% #SuN[\}gij7\[GFwg8#ҳ$%끜u*JZl:mũ1ɍ98V=2* uc5{s )aUPr v4ؠ /b>rmqVoqΪ X*[9wAF84)Ybx`~S*K jƙRkE-n1O;BJmDpm^Z˜+7Q\@W)W5KUEȃX͝B&bޑim?-טR-&9}j1E/o=} +tu/>awۂGc*[Z-\%ɒ7<{:Ũ+D]K2I>=v4*>fn ;cҤ+gXc/Nzu}AF-]#:x⻆IS|jθ@hɏ:m"dbԶVsvbr@qZ+K %,ztUhs$ '+mY~mV0[y']GYzڸ_1:GZ"G"w;ۜjjv"KuIbq$\ϱS6ݹ;sf4,,v:o2HV2@N)FvJ(b9wb2\D(#5rL*cEee9?PX #QCd g=shP94BV;ClK700*[y4LBlI㷥W@màSY;4֟h 0:z}*ukf 1 뚜js!z}*^D桊))mtl#dfN3T3~W=#xy9Ms36BnRhoKU@,j,wJ2+F>+:]6^ovϿ[ukKA% a3I)M[VPlm׫ziKxFaw }>]5E7QXjS۫!9gqIYJ3[QKxhۑ=sTg-ڪ千l`AkwN]2opx}i5gqnqkQ|cIA8T%<(7Pz +s4 +mr<2ṀW9 +$g֖%~߁ ƣ-rجgb3iEYȼI' 2n8bX ؉6cycqR)\lJ63ۓDs@ͧ%7ȏ"ennǟT͵3rF ` 㟭VV(pr =%eShM_Rf2ʤ`v +Bt9d&">R҈mbS4HcZMJKV&[yh + {gBNzoQV[8'Amasx =ut_GW$L(ۇAަ% #PP=jF )[1,Xo$0:Fqeda@ϓ1=y|Vhݿn8i 4ҎYkvsXycڬBo;UX$'<.GҍD}ʕpb {g%[T%zr3j1/vZzwRi8A 0m*(}+[Oԣ٠ 0=mN1ژ4~^iVOXKd( ps -cQe%NC C܆0GUp&{1][x6 juQ'?04؇$ݦ%f$nUhXؐrsuciū=*ޟj.b屜q +q˻.mzu%kBTÙxqڛ5] +0007U oJiFV=7#Ul'=ZMRM@%_, m=:ҷBm-,5ݵ-3!ܩ]q#XSn}U#p)TY2>^IK+[>ڰ2J]t:[x+[#222ɒ=8f˱ ⮙qHKez X3+H+ VWѸ_;ðV-麨I+- +Uw¦ԭ-|&LKh":e tCMy''G#RkC^Ҡw{U5amPs旚4ʷ/RGLSp=z-;(ayBEfPY܀ANzTw7"NC*TɚҧkdñFfA?KFqB}H+;[o2Q2f֩&U&eKfL>S}5J|<+]Չ=@|ؚ''BѸsx zj4VnK@7o8צhHx봎>HhAl f$ǥ-6Iћ9Xw;xE ڙa99烎|ӥg Qw4˗c2Z Hqǩuh:Zna/IjKjjDXo6Ϲ:zUm&yCHzojY[G0#| zt6\b-0-嵝vȽFA[]J[8T,ky zzIiI},$Nȋv1Ƿ^NbFpnwsH"E ?ps*ޡui""5|91p|ԧD Oi2~ ɓ:hu6R'Ni)=۸|\LX2OaubEv,L2~i:grz/#14 ZZ:Q '`YGwJSs 5& 9j[^1 ]q &}daG=)oSeVۛ z?.by^^ ;sw5(y.ԞcR#e$1Ml͎xiqg]`pacFyǯZHHӮvjoRT,Hy=8إ^C[}nThwm$@Js#A<÷=QoOo;7T8}+nRC@A*t*ou8"&"23WM *M[*;d^yijeV.34c:.善V1wK$2E)[-Lc@aȨ9X5 sQZ";pqN?*Os +{6 2$dpGUzwv@>LYX( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(6t.6'pd8Ih4m#9*182(YX,ǎ?*k-LIu.d +g.\W+1P +[hR@XrT YnaT&IJ7D!X)'ޡhW+sK+yZ ]M9:ԣi-[֛l[18z#zW=_bP"nTQ<)rTz EaZ1j;)L߾D. vږgsTLZY?ḳn̍=qTW̺K}`tztQGTSBgo"Mapq5 #O7p~_ڥ ZܞT&]Y cgD` H#|99GRZ<\l^;>gR="!,s6ЄB>ltw2J@ /iP;Z $cYIr)ʃU-^-DM%|,jT *sB2\ݲ88v$c  ŋzq$~n`hƍ<}H&!TB Ͻ9 t6p E$8S]yeUqQy{Z $2 'n? TVs47g*z՘;;ww 3 X}j|1O[p ϧ2͡?60T!4wmOVGռ1^B;J*Μha󁌞N-Y#,dd;S[ҦQ,eRkH4) N{5J +CQjf)H_̈/.3YdP{'tSRj ۸nF(G2Ozql ]$܂J?&O_zdكdw]ζNƙQ!0Z6o(;KtRO( qqn-屒Qېrsޟa 3lӦD G,6s+GkhqǙIR[U` +<jp>eM^ q +UKk[U}nh{$q:Fc800uMk j9l-n4KlΠK>{trX> %6b,ViZNAU?A=1隧k{smc:BPGJ +ɒzҳI(̖"O{x,;dVS_JIhBiu'5-wB}y 'tqc ӊi"j][l˶fVO3Z $ś=55"]sQl"G?*/a{yxL8'=]=C"1Nr?Zzhe $#9gQ`Vt+:}(X\RZv%Hط +d繩!|e)wg)ֲKy} `lF0z.dycttOЯ*-Ua;||r4ۨb (p>PH`y,dܪCF\ӹgP ĠV2Cqҫ%_muwu9MͤwME[-OǯJ.42ftY!'tMT=rG+rYRܽ"nߵE R;Qr.GqܿdyJoTU`paqR%C[39 8ǥrA*m,`)<Օhmv%=އڍH|jHeorfvS,鷻 `:U]ͷnkao,mc >ջfFpH#>er=o.HDxNIcJ':$2;u5 +[r 'Yq}+Y>٢{XsyϮ3֞iE۱Ir6Ę.tVb̹ۚЂ $pq֖&Rwn&O-Z+%!bF:#muqrх/ AaV7WEѢb7Z]#b<08ޅY. 0 "/~IV B{v:t9=r4Az+ rR81O[KqwF#=yH,?'# I,H +)n^աk~:H#UoP7Fճݡ=▋R4O3z>P)4O,4ާG|O¥$8$pF+NkƖ!r2H}ޗ 9Ul5e*GR'bԧ5ui"Fi7T`iuv/¯SR{hnVB$A0B㷥lZiZl\d B2{kyVˋvGoʄeNQoVfnRFOڒ1m--`_ǿ{d 5ikߑ]|9&/H޲gj'M1[w3˻Y|Â: 6mym鷬o.ۀcgAܪC;.GC>k $|bg9 ?tS`[҄g$ؓU[EJ|&%Ӷj֥k˃h,%+Cg_Q[OTHn1@y[ΐkM0H&3FBoN~Pqso!f1U$Ɩ+Y&ISf2(܅)ڝzbGVC 6Fx92J E޼OR3A\ޠoc*V@}*+M="KHw%灌UIy-OzTROrbǘ7Y +FGOS[\Z$0F|oW :ڗ`#o31n7\ DztcW0tZFnZ+ۏ5/vWn&HxFQҫM\38;Xc#R5;{.X&ӵV[iZ"stӟY\6<9C7E^3ҳZ.-XeP7ds֘7zm- yX?6Lg#v fTkξ\b/:sum*8Iv{\ s}&%Tn +p1i5WvpI1T2a,FA#F''{O*6h ˙E+6`dUnZaҶtrjϺ4nUuI#z1E<9/n3ZͩTp3?x]HbG'+;"'&w`Wfc9KSr9R,-< ,7qEuxdrI!$JdskONXwsJ3pZ亇?3c{vn_Rܯ̊C}=6-c$.IZ\iTF/C7gLcakb .Hۑңc"W˷}OKgW9$8 mu1;Lȑ8?24T>mnI01)m\<">usO'Ā:u}lJaۿzom ๦mjN lesf&=:m9ii3* >s=4w }Зq9즓OVd;r gU;Kn}FXD9(ç׽aDrN,yXTJڤdt.`gcٍ9F >y.fM[MFŐʒ1N7i'HٶvGN*+jF(1= V7vhMr('cNЌ0NU&eB +\n. ]67&&.=mQ6w^(j|*7(%ԤhchcvU#6B\6v(He5rFCv:,-H"ѧǶF\;PXx0s\yhN0NsU,H(|hc=&TIHMIlE6~oK#~Ïʟk<(ΌUQY ;4`8%IsH;CCIᕁ܈đDAGL{- [yC"1;]\q~M*+XuE]r8<д R uV݄6WUITck(vGGsagq dF<ɽ# cz$D RVX֖wXR9## +81֪"I7hT]3_[&29}V6Cy`%h$cQ\Mw wmqQԩI{;ZƕZKB֬Ewyķa!/Yr42IhvZ0y[Qw1ڧjCܣǢ1M[ff9LIfɓ?ZM,$Ohۃ6yƛnƔ\dJF8LƀV8Ұ.i [b&@ FJƞ1$Rvp<Ԛm(;QOUEvجp=qVr5R GV;GjȷpĊ[qjQXfj=4mi>RwN57kى|Sjcu& 0NtjHҸ26{gINK_0ZZD3H) ϧ=jZY\6sfWS|׿JJnb]o#ûЗN[Xye#wG=6Ydldm!>[F-ݜ{{Tpi+#2@>})Oo5Bq$%8~U5[P$W8n^(QN۟^*9Piݱu)~ B u=%βKq+g$$I&޸{Шc89 c-\Ҩ{uq*y]OPHkZOJR}x3Lԣ@"U9g5b% /rj۹`< e,m3;KQvjV,[$t.j•TȲ]BX+8\g:bi1)})7Xe٫6G6K)犡qp/rx=8銵jLQ*ʘ6gLg4Sgj4G1+f0ES.$=JD< &m'^)ɻ=ֻ7>435ܛavdsH۩$:D0h^?;/+U͕Gl+zu +[rROs5̂IspX8з 6.iYt}3V.1_,Eq==8y:ğx`:P)F˷u{ԚU!C @#ӥe;Z6w`0qqhz 9K^Mdp]n8۴sA*e,6A¬]jq-[yasϙs\\I4$h)=6- +Ѧv9= D(@#\SU&h4b&7O6F:9X£7H>V6a) 4'X4rð{ʩ[^Oirԩ T`+j]z=*,JA*I?-3wbwzB)ʱSxtH{**fZKOErnBK5V{]+qKm}si&ŗsjXch-/lN6Q@朷 +?19b Tگ~~!-[N̨ڮ@Ϧjnr. )Y4iel<ûaK̫'?2cbZZXX$Yฒ\F>p~^˩7;{aF~oCX4753WݯcFvNzV tYj7_;7՚B00sϨ^+XoZ24{y(r{UKM .gg֥Ic3yۏ\z][xP:B:#qMA܍m'kg #֦1zUY[^xf 'I GѐLhm*=ΐnح[}ʨV9Jm=J:~-qʯ>ա};ib 2ɖ3q#=k>Sĩc;zn}Ҵ3F,@sOQ)F1w6mXG\,&yןZh{捼89B#=2+f5{8-Y q4\j6lKgo-0qs6rL'g2AwyhI0TUd Hc?CXqJ7ɥZ{}Eb}'z֬E*FPGuxw,b'ՄӔy`Cm&kAGfdS$C;>qJI茎630'z[ByM(*1I[tRstD cX +v. ݎV\\)*9A`5Zt7BO{U%d'I5'sѣb0E6]JG|;vEzrkr1ԬZeAV>)bU#zwS:#xqnQ4jv\vjӓ[X˫KjJDJ !y۷aGHHV:niipnn<8_OZ.GeԴe>l Ǖ&ys}Pn7r2[j+nc3VgӮ4hTQMuN =Y;n:Z017<>Nn) b岂ɒ ϭTd5Ced͋;o\{A }jqzo ̡@[\y +##/3Z|oltRznTm=tnYB;igŀhn$V-{s5|*+=MleRi%b/slDŁj8#I3 r9zbݓLDNr={?}Lr7R~c6Ap6 JZב4W +H%ozmsssq, "Bn\stw)8伹.nbEUb\jyUίm.Hזv}:$@V%9^Տh5,sҠXթ6hd\&)7T$w" Q;Br;*w2I4۩r!qߚdB_2giUw,z1ֺimq١ghYQCdژpfJ*Rri_,N]q*vѕ,QVӧKHVlc#u֗Vߪ]*Hg#w@qCB44%xH~G)p}:|דoe.ljiPpZUde+=qBmnT*+'FmPٳalgҶ晦8mH8jz%q޾*NLɰ7i:k{f| VY60ew9OZ:T!p]ǨҔ+͖|ߑfD4R&H]Rn#*u$rGv2A?5Ri.%O$c]M3m3V74ҷ<+\p2@<6BB>l`cDWhH#+i޽֛5pwsyUo:RChB1q6<[%3HWX0\$c~j5ŵ[Aisyv8i:+ NsSB+]o6dVGn 1NAX+ ַxYC, {jm}:}}*>l2 >Ҷ T Q +0"Wz%{O$nJg#Ru7Oyz۵ϽXeyJh+k5{kT0~qNNMJ:"]6$S4mNE :Y^Lw Lj><ګ_-ȍ,vO=-JI''J@A*OZnm-u;E dXFB aFDB$3(3߲O5vP0 =!%kӨhUXOz=}\Z'|0\ OTAc(3BHH<`֡25wWEpSnIMdZ7Cj ,"CsmKWm,{Zo:KJ3Xh/rZn0P8<脟8-jN"*摧&ZXQ]s=yֱ0I R3dsڵۅCn=HUy%F7rivmi6s[[. 1\zR |ɞW&2]]QTc#qJB2_ +բ8bgmʅtښ*2s늱A ~eAgQ#0C,JU%zhجӻܚ{[- 6}ޙTAʹ4:7Ub0Cu91>xq+KKS*K{8nVya>fY|}("}mZdr5ݚ C`{5kdRqjѵ:tCf3ZB9\)`}q)%} +NrձW7 I#>nrzz#h)UA9c5G +t\YGp"2%qdlT]6gVYK$EϧY/S&ʇϽZKLH|n9Q-@=ݗ<87&yb^m.(q+8zjy,v< +X!dh^Lj/$FpIG2LR-\f6獼s_zAqƫ\H*p7VΓY3E-6SB\]IjhNt*[8#?{U $2'C[}cj7[$昁ׯғ(ϗ6txa p!px^ڴ-ǬIQ#\\(nX> p9$c^9k4aۑOm r\ө-6O;a9b++kiv۸!n$ }qQZ#'pr_ t.qӯ-nQ弑gҫi֓H +zV!ꩍ}j9 +1p@SҞvwZllYQ+ʢA} >p֧Hl㙚&x' zzScO,DČH^֢V\.{E2 +BCLZuݼ1Ί3I y#i6sOKv @fҨebY,vKti:\:nzzYۀ n6'Gmw ,XchWT} Ii|+Rxm׃qd|ٛpIֱv[MgTf%3Ķ>sH̍n?Zm2)`p-:Q3+^gfkqΗ='8UWM L Y_5HC,̿aʮ3RiS[$$x1b@e>ZR~)+$uTs~^MpsA7\*HGQY7or8s֛>Pr=zU'x-cBv1m6e`lp Sl98=0hlJ= 3T7t 3e~&٨s,nBgjM= 8va{$dAk=w]4`E23U֖9k8#ELɌF*3PgE>XFd}ѐ*ͅv6qss]_4PMX{s[$/~j5؅Smch_Q短;SFmy0j<ȏ"H,Fj]WF̱l9օJcL[&Y &IFGJeG 8}~%݃(7<Ǧ -MRݮd5ъgsO&;~b8:~#)b9ž}'BV 3 %q<]NMgm$4/.N +sVGq Ē$$q:8zۦ^sp?ZҲwrx7S=U^}#;`RyK}zڄY sڷYq-"Ň\MRl4I vPZE=GZ/uV;p#,`F}7 +P|w\_Q`H|Şb}ӟj@+39$ƫp8Kn2Y*ƻFڑk9[iFӎ@"kRbӾ̑o, Z er.fR`{X R2[2w;zq֪]FI|X5=2ZqjHٞ;I6WaB'ieaXZ@TbX`uinHF\m@;TOjDr,rs5RKʐIm?K2$ X; +q֯Z- RVܑOMg%֥k4Iac\|cv}M`_Aݶҩ$>}CTL %Kf!%}]&*c߀{Tmpσ#G~(qzɎIo2C ywq0=>at_2xIv^0Mfx^GhRJϩ%NI$82ʃ~uju! <`b'f;M: TH${g.U= ;\U+Ek wH8+{]X^kCwܠd}+WV#p$3aKQ1ʲ0]ā=}q{m4j.1 ^O+SjۻM$EdUEi?{etMmY +g-\ 3I=2+HXnNՉFIF/A[=kR5SD +E7*Ҥۉz|4l( +zr[F {qEp4fHKnݻv^7:N{r~Cx*s|"Gۣi&nA=j(jH^WztSKGs=j]WUC + *'o jkfgIkyqe#Io&e(NrMxcVdzS"7glr]wB?I w~cSM5mi]?>x>I\5+ *N+5s3ڍK*Nۗ!KhZ¾Npf8A=kKD庻_!dVF3E.-?؛;\fk6cN{T7~Ӷ-Ү8 *͑95D$kLl~|a4u m8!$'9P .ݻsڙ侀-`XW%}\Vk$qW6)<_z4I'w +#mٌs"ǽ!#沓pJ;.."A?/+ϧbGg$.gܱ2VA~qޥΊf*n 9*0Z[GgVcԴEeǿjvJU,NGAքy`Hlg>wT~vw=*n~>_T͸wKj,Y֘'ݺPۗt=<Lsދ/r bY$p##,N3Zm5|yOnW֬u+RIs +(U]1™ żrGVD1TEJRW bNkgQmb'ڰHcg<{ϦMdԒNW> h?Ìcti`I#QԦrTmmj2귩 ˱F#mgd2'(@3,B$qܻ:qWF؟ۭOW@=Oֲod[,|ϻ8LZ4nkp7oڊJ鯦C3>-#3¯LcyuKFԔ\L&yLDSyN+BUKețp(nݸsW"hyP61KdUaKC d'C@rn2y"QrbjV$4Řr{:k4 +\ّN7daєеKUp`I23:T_fyL峩=QGMg>nL0>^hPq~ d 8ϭV3+??u\2Evm;XfBI9&YK7#6z֪w ;qVa6 bSrǖ&NW) rIoȎ6*A*K/u32bJJ{=ۂ;twm5ܷC+' -9i6r% +]b*i֢;spxJni]Hlsg֖ǥkb Xy8U,ZineREcB/((-Yw_D t֦$=*AdG^'KK{C*ij.2sZ^W:o!{q/g樤n[N*)(&UQWW6HhA;?z%MpŘgӹnb Yep9k5ݥ&7Hp0}zuSE*cAXjQKM?yZ9R9dXǭY{=B˘K#]],3$: U1js[2wߏoJ}2ۭF1⋇#Fp8axvܡ֖ 2Ivc 8PMkq-=Nxr;6ۖc8aYչ zdH1=*ͻ$ ́ AJJJsm\{<®TFq'8D%LgsZuŕVq\M)Dbkapӓ;{yn?Z!>dPU&kH ^jTnu+n7=*8i.S<㊒lʲC8ibcסI!B팟JR4~b3N3BA)lOD;[j)$8S3iO-3N}jYMo!PJjC,qUI"#EP"ɼ*󞹩,n'_-U8`A"y#gRx)[B˰ؽq2mc>~;>LXk %v{TRO$91r8+w4U#RԻj& %|$;c=u}Vaβy}FBGQ"y8Oo]CZ(*v] gqr, /ZN2Ts +EDM嵊Xʔ~X*ݼlr62]U}?AxΪXcv'zkЦX{Pm$1)c隆xeWkTو g-H4l] (n>Z+l¬Gj Yܫƪ*r2qQRؽlA;Cx*^L8 uKy4$#߃C&1 L;[}>+[(2GҍC,wj3CF1Ҷ&b|&%;}{?.tcc>n>U 7 k 򬉹խvH Fѕbm95<^Ggc՘66GzdhDIL#n +5TT, ԱX"$c/ߵ#Hݫo2'C>^_A=1"H!D%U&CԦ/13lcazzɊ"·*;xiv5%4{ldgfnP* ܜ}+D5IIN-]sh[EpngoG;U[A / +;U:)>kt_dV^8pµt;%m BUAs鲑+6KRlRM)=zZY p9F'GnՋsyjIQ#ӯ֬8{8̸#vp:up̛{~U)-JwZ"+=: -NsOJ)d+nܟ=p`V1%v?Njv-@TRn`wp9}Ti睷c޴+(oRc+x>JXوu8=.hbv6pG\Zw[ӏ-AGLxQ㿽f%GBj[VF&:qxqw(Uv9riϻUB,y9V -ѩ^2_w*ap r=]ܴ\"vr@?*JLѦwm8=[Z\X=B҈ +"YqT.Q^ バjǬ61$jbEV*AG2htIK[=Qd9[j*_K-۱mEo׵gZK8U:R6SC^R$bGaRu}tˈa*G +?X(fUdq48`i1kPS +sX#PIl`;Z}?*^ڨJZT+r٭VEjVV$VI$R2N0z{d})mp["e.m556Woڦ +o[vs)窖Q4,2 {5tHW- KR Ƴo64 vGU7b$;9SME=̝Y(j&mmcP`3g:U{T_l-lMEʜUY" t[4 ,1hY 6xF=+e2H~acJkꉬ t0r drq[Wv1"+NcOi^fSn7cJmnU$|zn:Ti| j (-ϥeE1US\75ź%b7(I,-Kd<|v5)N3$оy¼jJ czիMbKۙWʍ'lP2~cȋ|ɻpzba|U£vE6-"3ҫxte If{ ؚFxdɭmRM2$>\<|Ǟ3S~Bxޣxm7$r? +yǽ֖V[nsnyrp=5U^@֧ϯ^jơ#X61qOЕ%?Y`[вҫ\ؽDXe2dn#ջhYUl6aRFe3xmܮc% 2:C7~Kٟi2Ė6ggDαul zߘEalo$dlG#נYXdzxb3_ƚw0Mjbei.k0${+goyW|n.-4vN#$F>jٸW9#2*j݊U=<]0i@뚣LťvQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(5Qes8f,{ *IڶY8$_REKnbyc+ö3 +-ZPzoٳ Q46ѻcPneqx"R+i$k{p@ōĂC }+L3@t`|i<0I1";uȭ>&F{D7 1Zp@ fXR]2 ˖auݪX ۋ㱤J{-eN! +wrW]B4BĐ87%D(R:d,I,v?gk|''8 ;H>@흸Ҫ'%L0q'׎-^ZjEjYf3*fݫ/,xyfH GJ,[8FS8u@&c5r%z{PބB ͵84iddrr9zD1 3 9e"܉ctf.UN[=.nO3N9m.f_RޟaCHe8$QNeV + +1ۊyh<T5z503G 1qEJJ1t~SnGXJ1lKubCq-IDd3p8︉69r@85cS1DYUzbϗװ{w[NE",9==?mRi$ '㊯!K/3jĐDȋ™)^WpҙOfӎ* /'3ItRy.n:V ӼReqs5N\Js|MZ3naT[$qq֖~#\`*\?LVkd?'1]-SI,`T[8W;R.L+qfhx"{ 8+idZy)dX[#UYK= 뎴`[9iqgfj>=(KK2q.`Li8,F+WLKZE9|?kyv0,ġ;IxNӭZ=Ad-Xf{xm‡ OUlR|cՂSƬ [H08od^<27l2'J9E5vvC;M2q9k$wR6!7n㞇޳ጻxe= 4lQi05!+aK\ ͼV͸8%ŕR7TvTӚݞT +E*JOBh!&U7xS^_O֠Xilm©4€zၭZ?n8zRw{6]Ȯ$:A3W8!1 +ǎskծ,'W*xnj_)Un4EXus+-7JI^_:4mr ;#g˧Kh.@wCO r ,rU# su)gԮ/%n !jUGNhءs4%g=[4Mr dRzr*w#BV@6zfS<cjwnhy')\huIo9$yr\f[VQ$C_zиUB +zƗK"i~1t{c\]̂?/TNRN[1`sکQE*Ӻe&b8*[61[䎿94`yd qR⭡:r斦dI˺4HF03ҙ4nۜTU.g9_[$ 78Z*Sv>o7mp㊡s+Mp8gaDu.җ_ƨ]wA*kg]U[,L[5=+yǜvFͻ9㚊ٚ[W@281KV,b:,rJwԘJ).@..Y 3Um5Ěڱxq֡}>}*e3HASJctR\y6EWw~Rm_BuIlܾ?Ao4d:D3( -jē}Eer;fC"!ޭn#=i~$s&zq8MI_ݤ\LҳI{Z, 9z\ȶs#6{ceLYS{uZ&.,Xpy3JɎwd@r=*QVfqڏ/rFqT:͆/'=n*[Kf2랟J"7"P)^g{SV3۵Qo̗.NiSNü\u5-chnIvb1<+ +0?[RW.Zb1AVK{ao ѾQZɱVv3ʡ zV/~u= yPKn1hڤV)tCIcQ9Z$y{>l@:fb+A8UlRJC(\Z%D>almA\(ݙZ)ZרFKVh +W;UW'R}eبApyRr/F~Oos.qpHvFշ܉&EYgxW2;;fcbrI{vr33iJ74]ӗnnc/GPMDd7t0,{c}*W6ˁ/?7ٌޡv:&{Zml@ϥ@׷Zٮels4 +'VN<6Os4/_Nik%-a[)xe6n{ȬP,m|nPxltȪKC9TJiW0y\y?j.5#u3@N7FǞu$ "s.QoZO Ϋ4^&۵#?($ʕIh zddž/ԉJ+{ +pJ8N=*SO3gU8S{̹{b e$i$%qҫ^ vu#g$+N;ڟ%<('$u?AI4]OrPwf@""Lnu`U]+)n%ΘYpd$iƝ-Ϝ6[%q2v)래$Ĉ8rKH66GY}*%]72laKtJn>r6يUymǧ׽OZ[&8v>pl $7{gnO֝.%7I gۖ'ҫm3N#IR)e\0ԟjF^p4diY@`3{ϠKycj+M61og,7xʐy]<)%=pqz`S['k2Gem`q#}j;Y]AQNzbBksHk2A< +[,i,.sqGB%J .;{RU6Tn'xnXNF ڦAmm!;Ve4eQ,e9p`PUfG,ֱg>bMcfM28`6­j{onb2Oo]\܋WHncJ0echy{eZ]CGRۇNfUn<2o J V8'ZǦyu3#,S9椖X,|GAWqҪ荐mPJQe  G͟\UKXֵ3V?L|>UhdAQ0榳X5gr(tֈi$]BF^@B)4حv7,Tw_]+R.9eܜ 9&įFCsn_B䞗IueU3s}ǵCoswmb,)ƛlu?^fR͝#^p}?ZzyDţ(8ҩ;^V}L۫Ym%0w)bZ$kRM![c,8s}.gEIS/~@?Nia8rصi- J}9;f{1eФ1桒q$) =in쀹-fAr/5IYɎPP1Oɗyo ޣ#:+O e 9dߙ̞[ItnҵLONVm9 5jIƓk10nJ⺎V̅V{Kj+|ぎzұ4l&/#c1Ĩс*8T'hK4#P5k3HNzkm5l`FϿ-fޙ2Odac\Oow=9:KheI%{&RI7SX28iRg%v>jX&##'Щ9U3ڮiZZ}~Ej,@cW>ApuEPY Ȳdd`TE-ѧ4+iO[Ɠ s<}}jye9* V-5LA]_lzՆԥ3mSJcg5y'%ӾUU.Xc'={V%͜.yk.,ZдCn9=ܴ.7 cҔor*"kuH,줰@9ԓrZ 0;֊O$2)baDGb1U-S5=ck<\o +Г*&v-Dw)=QkY12A9j1f9&"-EldS2;6؀z)uHo$ .tN# =9tӗFӖQXc ozm{-2wewKPBv ˘1MLW9 ~&REim&yC䓃کYYجx5jG/,nd錟|Vvo*I:HU.~*M+jZԷCf^NR#ӎ*堶ʹvl3>3ק|jRƒS8tTC壷S iy Jh[-ܩ +p;I+>6 +T 8o4QYW1] cFd{RԫSrnU,I*8RWB,^s!$B)ZKS"y7!̸$(W +7ZLp]HRr^=tFD2$~q$ jҘhiъ8X0s`WKB>Ex8dQw6㚴t[ RqQM*~ASB\-'7HO$_?ZS[\kppYT;ɮO$Ooj-r%'FH=wխ 1ƎۋtmRzsҲwN7=*ŕj, *14X%B@fTBjH AW֒ədZuT> +҂ZZo.$"Sgn~+d33xHfr;rMKjm"M\I0Go-vH5ki!c:>|Q$.5AhPKgdcoL*GzY= ŷF85Xjo}Z\ذ remm.C- p} ;sZ9;:/:U~R۱M![_<Ȍ[p)ܜ籬62Z\AXdpwnp:?ƪMJ`cGRw4l,kƤ!A>+[ dNrW%}*,m<õxTOkm)) V-E)70drRMc39$W G~ՓpF:TteO"LN KC$v_ vsN7faX W kTY&qդI#11>ޣEso4K8q-=yȪYMg0w`Qcv=^ +VDp$ +GwLWOfDfmX#)9= UgH,XC' !βH`X+%g +ճCp#K'ތ$`8ȸfyn +9lNh)]F! ۄ#0o^$ +ҵq$ݷ@=hl)+q&ԇ'=9qMn%uW[e;;f.9nKK!g$ cڄUKnhOIKg̀LCۭFb[v`ipD!~ga)7)-o$ӯVApZd|Ӥ&y2N򦺤(-g {W/-vO:g&um_`($ks+c+}b' HoύsIszLe9.@Yw3&6w4+QTԭ [HyGˍ}95FEH? q޷g:uV\ vXg>T[+5uF #,<|rROBszeaṙn34,[2<#Qͥt"v^.SlKcVvi#C Mm=s*.nfٲ)6H羹Kw3T&PP;9b7'd~^yJVn.E©g%W#) Aun#$UҒ|'Rߺ9zUM69%"Hh8=>nO:H[򤉋'ןnC~!ͩq2c1m{mE2!FWWďU_`1A-oB:*X&[cIbLwg9*ݓm!76kA4ɌbZMVͥIwv?}$DY<)9VUԚ}96(r;ƛwy%GTL ( +5-N)yhm_UAƗs/ǥtP[ɉvٴq\y 2Eq{qu)Y]4n8٫͜bHR̅t0t\mUmڣh%6{Ug;xPTe A^4Km޸]#N=i +SUH&#Tɥ^\](%.98GPn:!,.,$>K2:4ġ4ؚgڦG^-ȷ/$4\dI3rI̎8 `ݟ~O{a>}c9{ԛFY g+ǸN>)DoQF븚)CaN=*`$j[ɌhKF)I9EB;I fc+ oUeQnӲڽNjk; o=AԚn7qԐYu\N=1PZ7j4TRGNjCi%,A˅v ԚEe|hHxClTw+$qӧKhْ Gi&hM̙e oJqa?*:ߕ 2c8])ȅM($$SVkxag=nP]o$l \֌p^ٙMכ;vc=Uao ݷZt[ %ΗPFе6[2&6g<˥hh/Oa$] ~+2m,%•GlM;:F}y-y2r0z +OY&+rM2fc@FEGX+A@xWQm# :ͬv RE+1c953<̓ڡ\nU&s6ﮄ$*h׵irC PC!_4A,׆;A<cacztK̸+űڅ-mgO޳c*aC)nΰkVnj.OƢk"}Lq͞jSĞk۰)=j4M ~cWnu,a{WtFCpB 8ɩoiOIhUX-j+Ygګ%ݭb7 :άQ +;jBbG(UKsN&/$\.e +  8RTc?=qyTY2o=E8oj]RrF=ʳݟ}}WA=Jܷ9LV]:H')"280EoA<0LJcsޱ. DPȄen٢ 3E.YU^&ܧ8KI|FQ+22VSK$LoVbM16pW=X6L'ڭiR6`ܟS̺ƌhQ|Q8گ $Q(ol-6QmV6s f5ی(PW2]ħ;2ßsD]Ebw"GulyRpr= - yӇ + gOM6Nn~8T,e/*֝-_@e$@rNCsX<'LxdO@zcy$ۆs+RZ<]n 79c)*`V6fKx f\cHE$.9rڌ\a׊,TdV?ѱS^BDCpr8.e,Cʆq4'qԇ-W5PmynT]ɌvqR,OD &G ԌuqXN^"_xa2yD2=7Ʊ/{Bbę, Üu9ǽeܽܢI>Z۵mS?L +ȿ8nvFT\z EJ;VҼFEX&[jKm *&܍]2Y Yg8n ı!cc`=}-Qhe²ȪxFs#mΗ(4mb? ۆsSwְAqZ%dB摆=1ڜ"D#aFjVRF9!HwԶvsp=8n"yjcL}x./-cXd$un=ymڴ4Dq,0 YSՉnei3-_jMYXҔX-kya9ַ_gޤe_*m &1񓎕NYSu'.t sIIQ;Tx{O;NsV8>2>'[=xU!pUŒS[/#mL+Y<5;v(R0 Ɲ5 [϶k.݊x9Q#?5e^ǡIF0 +ܬQ'異'(~Iǧ^ b#nk5=RIJ:޵m,6wcs>CO97(a$׎:V dcLB*f[6qyJoos:&3-ؤt5nk= LWq֩*$S*\5adW8/{|34t J#⼡$gZ.MX]`ݳXYkRJY5+R ~{d;h 2q۽TQJkvP#n9RQ$,ooޢH#v>˚S&SVN]5 .8=ujW]bO9ߎk'YāJ~3zYz +oO/$ݻ==F#u2ܶ*!eBz]#a+!n$'O0͸p(#8E¢mFC)((()H#4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEZش{WaYdۻ9ڲ7#ΨIw)8%z?YoA^byDHFV;bA$5~0 UH'i.n-,Jp?.kvГڬl$ˆ]@Rӷ9txi]ݍ,b8USbLʥ~e5_܀.јp8j儐%@GA֙5ܬlev:{Ud~Awz+vfۨcK#%zץho1ZG$ypTAa>a8 +vx'ҕQJ6QSYM_fGĒfG 0֧-I. ۸e&OSNg\[%˹3qҭ۲.8\j9Cm1V.Bwo8$⦿lmXs8=zqKбZ5R9?MF\CRGÖe3uc5{uDi68'=*ҥ-0:2[1}8U{%*i\|֤xT 1RX,,rO! ,HR@OKV&G73ޕ*4ӨRiMo%HI1)-LxG%u@#9+6 h~,S9PTrBrsqzn,2IՂbZjS팫X=hAqc,I ,օƤnEeuɟ-e\NF?>S_F˸ĎTxF #sQ94ЊK>oB;*Ŭ i9z}*gKb!Sm\~F-E>u3yڌnt6T13vzm_JeĐ[fTHd8ǭ:ɤ"k]PgQ}nu>zo d=j]_5[b,,c'ҭiё:FO$UVyFX}_SWȬY=@f3l_/zu5L1̊s +:OjU#nC5m °nl愖RIȷ.~oF9=GUO9;}Xt+ֆVuQlޟs:tw8X\%B&ڌhd925+73Q,rĒ{Lobf1$ 2Gq [3+*r:Vju'-ɑs:HTVݧTer>~S}_zmi#GP;zȩy$`hV| +u>r An/ +m:m;GY)p޳o-hcDa7SS]j_mpc&Gmxб-``S'I!A[+9c :9O֣{jp#ÁT(RiCۻݾt>UhrmݚCU7<8PX0A\5s(-ⶸq2W*@ ֱRkRI.X!PmLE +{cJP6.sx.Z3axb6{ Kur~l0 < +WmsNACІӗ.gxV\,-T9u o%AMF[%͐|{c{"Yl1<HE$0~[86V+㞸+r9c֎ZA -[퍏u3UԒT7 b3B"I'[.w10=N]枊H!NjEy."s_ h-;(Debp38kKo2uPIrqX7OʻXAZ%ي݌iI\҄\A2nF>^i[+'}*)m.'wTf@rA=kKIa!!oxDޅ6Z,s}F5mh`U'5ˠ9;[?VUԴh#G&*R:e5~1ķep snjk=J[;bL$)VF}BifgR7mNT/)N0cZ68ԥu;+;WLginX +dK} mM 3@fmr[7sϨ6Drqڴ.Y5$ ljs sHft22.2 hj:庈RFcWdLBqk9 nxbH9 c(U lН:n +HR`4dS1÷z5{+(idg +|z +H!1S$$Xnq.t]!*pxj^ߤpۄY!D;EgݗpF*r*4Bt!byxǖJz-#W0GyYvqHpv&}teMqRkQƧ,Zkq\w6h0Mϵ4e {Y7zsZ\[A!`}zujրG yީc85wV ֠o,2C}i_Rf'vlxEI<~g7s۽3=ZDQͪC]bkiaHFT\ T_Z (`tzC'mE.J.7ԩWtew2V[`d2Ȉ61\yS(!+.d͍GS%x9Xݻ#9)\a1S~/Տy^pz4u*RWCEX9dG; czu0C2D+K>ȒbH8|gJ޳O沓X8VmGJM")[GMm8O=ڏwի9t3қ.q6,"U8jn,Ϸw GF)8]ےg3l9sIoo,sHU 3T˿`/0 fY8-ˉyH'q-%ZR+ ®RyhtvrzG5NHd˞3ZV?ݐx?҆N:>W7TQb(qƨ٧A=֝kr#ӽHuG8"ɔGENzQiA[i7s-çN}k>] g}K2#M}.@OԼŸ(ĩ wBؙkYS9?!#i9֭iӦA2#7c?Bo'uRp >i\n9튛MI'WO5Y'g##cՍ*[[6`8=(ROԽ_f,r5p< E09Mpڤ\lV|n@,S}*zl'[4_6p2; *a.t`]$Y3>ۛ)_$ Yn!8GQԓbyn3RbM[{IJnޡuD6;1[Kyiw +Eh(E` ==bk݋8k5A*S>֋0N+.L֣7gqҫ}_ow{>3}+CSa$i +#=QTa&|1L$y4)f3֢gg9cV-/Y5Cc;Mnygy=}$Wۏ|VHa-ټaHc.iVړ ;R[$#,0|9'}MWM#,,m[ȥی`wt5B~u4~ao@\Hm j {N9;Bmu,(R(eOj&@9,*첬Z(E[{=j+}KhcBwo^039Mj)ŧn)ڕ +X9jӸHrm(C dpj :I+cL>azp}[Q-F壆0b~aGN&˥h›0A`#ϻ5m -+!UMG!̮f*z¦K$JCLOzhR&nukQ{,{Ă6(t` +2T}AI$䞦7*FܼZZP{/( PK?^Y$m+:dʞs)6kJZu]md~_jR)mY +Jyɫ?ّ4aYóiRs>2s֙2NnhW*W  +N֬깇Ky;rxҹt$} j.kYho0(tu׹4SFяf\V|gH U}l"Auw=r9~6h.$ Ȅdrq*vnw0jM2V[k;h$#ڱ9TM9k9i$yzЭ%V۾ҡ]9##j=8Ja6r9ʎ:z^C0$w4j䕪KmΥ$ӓG*1<i  U:(F^Mtn[;(c:ge}.36C'z՝: &k2F>+D <H~M\E4䓊g_1wqg[w$Ȱp;s韥7"ډ3Z^]a<2ӯI]5xAM~~8\~Zª|>B} ,@M۞!T$#Idcw:94fơgl5'h^b8ӯE{dwk]^]qcknI>las\|8rKq#)u +΍0FFFkoQbKHS K19ީkWQ4B v*NICP匜Q^+aœ dIZitP1ۆrkF2$ 9$G'8rkSm&Hay%q5Mdh's G5~VT6P{1zܮ'[;3J^:B?!*$9: *V=̟eO1P$ΪȎgJ=i:Kl(N;GU +eWB>Ui[;&<iۨq$Xlm9 +u$4Fman5A^jգʻm1SsEIӡ#r2bw$*3 L47y<O֎a5s1,UBc 8UR9aesH$%B +xiJ)k-PF0&`LųʙHm^fy"l.XGn1޹[1`3aNVi[^ĩ:pp9Ҫ2b hXF7H|~/zGWI0=3*Ny(w1cvTf­FLtҘXT֣1|qKwz.ul|  9B5Fi ,P{a"Dv~1i'a)ҳ*^'ya0M6,aHQ<{P&aAOyUcGG07g#֯G&_XdEY&FS8<'=GSF(ʣ OzR)g/+Tg9ƙ"y31azlμ2]Aנ yp[8 +N l(2#'i;@=7u4SCGK [.B.ӯ\k1u# f,3զKf0 .jZ--I^{_ƒm3I73L$Qqh FCZ[fj9J;hl,IݴqZj]̥E[Wԯlo} NV5жJ;2?k[rXrzEВ|7usHÒLJ+Qs LHT=sFnf⤒IՉXG˻8eitR<Ln`bc:mJ[ݖm4&EqVoئ2)cp8^WItʈwiQpWEo%xum+VpauGb# )ٓ&A8?NsSnazʕrK'R@|2pFyX́:bH$mc@ )mn +!3HçE5&fC13 sr0j9.6 8P?Z5dk-}<十p +RUA}2@a ϻ3Ɲxnϔ61QZn%:D˝z)/͍ۀVIp+{MơbyNDuOv-.?C u<6zgڲYJSVi4QȤ`Ux7-gz'c9RiEY]>kkFB i=IUX0P[o!Y1HoOsr#VT$~dmNQb O+Y"˜PiI2mK0Nz:`Z[\KjprRjT~[yX\\qN^?-g+2O:;JM'+BE m''_Z7+n; +`[;d`۷ג6u'$1yi#J)ޥ8Y"S F~Z-5}P@S ⴴxRk`yʳE$t{މ(Ir҅nMK0G 8bUQ-! /^bp6< ZA4(X#pzTP`.ьt=W"R|l-mthknB;kG:Iv>_䎽4K=Amwn;3$Mh%K4 +UIXv``WC4w}14h#Hv㎟s]I,)(ɟ-;go5r,DU4 +N3ej7;c(D1cU<89 T''>$Zĭ-* fӃVY +9TaU2KoŽE4CmN( 9 ͳjmΐ(Y6 O=MWR^md9:,ڴiUTKh^O IHg'[ҵ Z&ܳg#W 6+?-Y +c `jlVC +'*&H' xrrɷwy,-ãe؇#:~t]]+I=34z k`یd>ݕ?N8*K*M$̰^1buwVf!ʞZu-瞜OcQMvn.%Udr1vv^wMRX.8$ci'Y.H\zYH#h$޲+ dHBy/"'mv9$${Y+kq}+.m*J9jd ۆqJL{JR^E;9'IDl3r:uei0EVet?ucҪ:eZVWֲњgU H jcm +y*~RqIAIoGY8cwpSܨZN +.atX7 "}}ZL17iorISVkvtlc 9SE(!܁ ,sڔerKʷ<,rv+`*1sqc_oB=X5%nZKI]ONLJZT$u5'Q"ByZhKYU vbޜTj7)ܤ|42iWFn2 Io%GM)@|ÏʭY|΅J )QI*o7ʭɷޖ-F42 ԥv &KC6*ƧU#_4 HR)nck%\ %ztY}}E%m%<85 5*U%rg 2M6;4eQ#"jW7Vx71^r1u4,9cG}u%.c1=IEg~wlw 4vHl%rMt[;W85v.m˜[sާԥBabxV)`{棂i$U$n< +%YYdE( zWES=:x!nfX<k y-6ݨ+sL&YV|!lxrk*Qpd2įk`9)UJ^r%XH ں ,C24W! 'nr8i:zG)70Vʖޢӧ9gb\'5)Yl>K8M6>x`Ԛ.b["LvǹM_UؤuSy8*dUFb=W(Wv 2,ۀxDd>1AM (QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEglp̟cؤp5-HX6>I'su$Ɓܰ l#[y"o:G7g%z>޿)$LHVϵLL@2:CWi/Bhٓ~gG +Y#v-N{HLߝh`0@vyйUEu)۩"\gv3N2ECmW.b.~ކL90G8I`x94Mʘry>B1(q@tY\-6HOe+ɮx]U|i4BgxXQYvb7gv{SVٙū{ cr}hh.UvH:|0 IUmW"gܥKINI?4,a쥍do::(Yٺz\(a5Ď\J4pI_xء;l\ 1жN~ZWEr{8IݡBClMp߻fb̓}=oi^coV@r +fq\P1=ұ7fQMڼ-[Z6k\ XَƳ> +qd4C"G9⟩j@,-[9g=8uI~z1mۏtJ~Բ(\8+"tX$Ebz43sBEK(Q.KnѸt8a_Xm uU}T1eP0M=MڭiC=JK_N2zRI,F'e9>^*2]8#ܑ\KzeLoIi3k+ЪdʳmUv M<jZWޜ:mE٢ѳ2];K;E$sssʠY$) n\?ZӖ?6 #ȂBÁMF;cN7Q !xL&ZZJǖ1 1Ni G+e +e]k{3I񤞦Ӄp-鳷{;Y %z߰vRq68>6-ċq\~lRD39S֮hqr~jB`率)B +v:e^w~>XSxcID20ă #Iy6Q.ia^S\7| + q g*g$)ٷn=t^HfT?!3ӹxi ȩ-DMr` |'j +gmm5ܳH$[<O9]6U +0'1OʻrI-=T*@pZLݻZ;{ņEIdF;Tnp7;Ztov& ޡFAUKԵ{F3ʌr^|7j7N#V4T7RU{-Gou1n'$vgX<JHmZwR7._wba|ۺcJ%,ͦla&uaY0Zx!MuO2IFVGϴGc7qy T?6L};4Gib0cZx{Sgڶ'/qr]U1r(.B߷zHRyɝПq4[ٵDRASETM챙a0V}* +289ͣAE,-=ϩw-H xێ{;@~ͥ~(8.-ܼmI7G_UU62~g=6zM:wb<*pz58Hݶc' '<+G&l7*[E#hws'ڥIqꥤ stXlg QsM䴻*j``f "l#\~^Z~{+- ?}4VO ^H\~"ak,Ļ>ۜ8aUdHvgI-ce7]7}V؎m [ 3Qm!\$^DmghPrzTY\^^$8$p@gڭizDMat> :][c[M 6e]2<.dIfg@BƬ:[W{![F=?Z[tdGӖ=H ԓƱf$o :1VE,p(byKn[j5NVkF_F0ǗzN IehMΠ2RVK``sC>m~񧹶ٱLsOz^H;'q9Y!1G"U`x +rt +!ۇۂ>lҹ|]-g,tȠ<&Ὲg\y.v?Jy6vmh2Vw"g(CZ+.]G,PLq*ҷ |7?{Q[|ll犜ZY@~aۯR}tv]DQ\jW63I}=%QzT[i8%hvp+ןƱ"ݜdg$;e 0 Nm5Ԁ{4 %rk&ݥ2S&09) Ia!TҴ1%k +7 u'ϳ\o.N#ӹ>ϫedrYN#=ż8A'qZEʭ,˨fp{K⡿t/~^N=~%xn-',OX\_iiήnLMYk: dVygo*}ۗ8O|P(] +W ŤWg{BOZmض#Qpoo{-2 d֨Ig$#n<z՝%Qj4֟\yW"NfuO.q?Cicumn#p~?ZSy /2C|P +riܹwh-u_.yo[1ڳ.f<߰O6'=^Tb27g$go?OH21`_VDc&(n<:ѶMFub7l׎s EUBvAw)]6 yTc0*yio#LJl g=i73 +^2ThBԯsZ;73:f5TJ̉CʊX#-񎵪/m' O͟ojSݔH e2Asv5 ,:f Kˌ!'p[Kh mio)-t=:gқcMof3{|VmL[gS6Ƀt\"w &g T@C_/rA2R4+p ь$ye6ڵ![$`g(vp 6y^kyBƳcs޽FmďN~uoP#ce8s.Nr)qu@8Ie{kByFI/m3|?5<]ǟCo~|^fX'hQ&r捲b5cEj>WRn `a@sҡfc$uZEEvs{7gy9Kbn~^_Pf82))0ч|s=ާRQf]OjѤ0^3DpA"5{Y1Ȇb7_,_\u)l/.HH%~?ӵW[C9e߯aZvZT@(/w}GB+)*oi&8#<kVEݗ[f3qQr=>m/!2rx9ZZXX4cn];Sd͵q".ᜆ=4˙,8N viY,x֍In-e_v^:{rMiRY^FHsdx++Ys@;F:=ŷ3ڴKi7eQldZ5ŸK/*3'q:@ǩi~ =vځʫ/8[I8i4`"};Qe7 -mUd,R3Xܰ ) -&H Uݐ Ocyojױy\Vy 8.0¨$Lo[ֲ"; pmi OM؂86F0׶lp z:qp6rAN}ygur0HnM$34 @'ޮW77#ag?Q>Y+Zq$I$i[IoUL=&݃ 0BBʤ3܏P?/p1k+~Vuwt1- sUm-ش~g ކU5+2n}o/<ہ3X&@t-}kE4(gI>j*8ֲg fNï#ZiWeZeg-(X.OPr"deVVdhUlcڙ^Crp!zUymkK-,6QIcuoc3 AVSsnkcAAъNKKw'\jriwY pzq2@Wwm#Ie1c-7cʱ88*RwR Ӌb0z:s] Y[0^y݀ҵ8.2qV ƶQu$TM?uTd>αg'/O֝_%ۿG>^u _O%zsaq&!ls:WfDnTUe=b΍؏+ +>ޕr.U-dJs)2rkR(5[E=ꊫ8:Ғ{wnZ$yW1^Hpc19SoZt%ޤ)%Re|Laøpt'xAzT4V1 hn߻N1'eU>9Gmw~l1V*3r-|=EJRH͵5 ;jѼKkX~?[4kYK4Mz8V`z  kqqM[K4YYsVt׳ieV2c*ҲgPFɁrrvnjzPDo)\nGwQ#N۳n1P Pd m⑇ڝ4D'"id۔iUSftnmہpj'H͢0yے}}T^9+Uw,aS)ŵ.IW.,zS@w"mSf'J{k{;Ͱǐ[=ݲ֯2`WMXQ7ºa=i3w>bpڴtHMs(pOZ Q9R#hH03Z'Ky݌Z}DN`ǖq v(zгC$s1*qIKo4pAAC }kas49q\G&i U!Yk~xZ7W4&‚^S#XV[B\󞹪/jҶ榟 ;wX<_~9z }MBf8_3'qPd|ݿ'j:VLY'^sU;bp%;fNGq޳'w8M3nC CR'sF([G9':t⡊]7Q3 MvJrà'>PLL83w M6j)l_-_2pLMiu|]|-\tl/n¬Q]%IJHdݑdDe6팏6{k2D鷢0}i}cˊx2e㹭 -/TxnWDv cq\ +@5 Fp)XKw[]E-Ll?y*J8徵IU)e9<J~>u^0Ms?Zuյ4)#AsTᴼvHmOZqI#D_.. z!ɧ=+: C1<%cUisMG@5q²6c8= ݿfWF}{ae$V(I,hҹu,"A݃YqM2C1dWV\/<g}HsԾOӌT] s6=XYǭ?:J˘Mutd][i*9©ckn]Va96f۴کiº)qPkm<[&_U9LyWRqSY7z#g[5Rwb=K5f-iM6;/Tow[C zV#}oh~ (9q{qsC\9QoRěNZ:f"ݳ[SZAkء*qϧ&4(^j0MwФ9yn'7Rb9 .֥8?6=Q7:>kB:?5ʕe=hJ{Xmf4ZMtrW;qIIi&i ,eD2e /I[v:Z[jM9۟CL\IG] <:n&.+؟bI\I5lWgYmk4*ĆF,|֥2A6z>9F%H2sہJ%&đ0B>BRiP!w}o${]z3Ri-zP,Kmfrs5+Ǩ[`hP68?XHmR٥k'O͎Ye}$q|~k4q.v=Eh'UhmJlI;D F1sS7Э1>p\ACU#=xb2xbGpMY=n8~&pq~WOv˽B?6)WyN٘ЊjYf{MKDYf"rB'9ެv, f9}ƎL@?0w% ^hB]jk-{< j2I9jl NzfɍHn$[]JozUU獶lV{W}3{SeҮmΡBsuc +I݌cb "g/|~fn {p M\`!PmO$wJsCq7H#8>Jk1 +ƒir4ߚ+.p4[I$YIPXb +r3'M5"eAߴz697PIES@* %c1%ebIU+bzң +/F\Fш*R1;UfU2OiedSp)a1ҵy֍jPJB.|w5-ōeݳN7;dxp=ռҹ,@8 *MK}N+HlDnXd([&5Q*[qw%eӦ8v,hsJ,msyr\*j(,zba28eTRmnAw{rHa=qެhC%a3z~r1Qr̄HL@<*dCcҪژN˯_n-%Xd?٧r]! :Kp0V@pI'8n2[  @#:(3 7/mҴlr4i6&da.%%n$jùdk0e\ gYg2 RO=*jI(#r$_>Hp['g*mM$ n*v.IyFEݞ35iy)`%ONzz)S?Сc6N{U '>X }+j-^;%/F@ޫde嫲3&34 +Kqhcg.Ypv7{{,,ыFt%jVتm ?6qz\ME#dmMv6w O2$$w=Gz byo,HTGk PR:Ҏ]%\6_ܴB70 +F T7PE O-sVh- 10*p3O<7) *Wg~sj7I*m4%{y4( kNўkwp2P3tGPGU.RޫOȝg%}; \TI1Q{t[| be2qW-K]l)]aRQkiʃ!H-#|A *c*Pi󽌝GQjczMO;Acd8>کI$9'R8 3O}@#3W,hf2JV jkod&Y\)Oz|uoQLbUyP#0  +mӊfF$j}*=̟qڭn`h؞Ckup]ǷH9<55dnytkvh3 j0:bqj"8V8ˎZ1]o8PW̱%(p3ym&[u ~Tåei)7vxI},"F"/b__‹!ƥE;HKXMs!f!(;qzT1$ZmpE7{fҥG]w֙w5#EqT!c~z)R.4O5"ElL︣@׊Ĺq!EJ#=kRgBuK8% +ፕś2;9 +v*{g4~cWVΉI1aՠ5M>rOaʫ&8H#d*mZ38vaH U*'g ]b[jaRAF$g "%}F+zO#/$z.1*^Օ@FJv +SƑ0Fn;19ǧeU+l$/'b};/Oٔ f EDYOuX$ Bر‰W'ӑ[P1Eq2 =J r 7JWpG W8Jݝ!`Egt[>&wմ:mIzd)_#s"#3/,n,&\]nUOS}bK RȰnHxiZ[jF7%~c㷵.fZz6wlmdJF'1Y(0(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEhւt$zU5[hJ:b@q"TQ-}0`ZV-p:fz-G"&#v|O5\'֯jrZ$08,#Je*yQZ5cy,z{kȶ.#YHKl35m-vA6XPӋVjPYƲlܥ8 +9?K͠?ßjԵ!yT0e;p;i]",GxQh[-WORe:y-B'5y퓒'ZW Iݎ$ڙ0h$9G5:x-67^EVm˵s \OZpGC] m {Urz{jJ!ۤ@J>GELnF *x'19 k2c#^Lv҅MI\fHeUO69K<0(}+wM@,"NZM>~p:8 +yQBȈKd۷?I=:% /T!VdK G;vfo (MMKTpg4tY]ڟ-H)޲`I|. <'t%c\dcN-6R0\I?x%S~N1YIAlɫWun dStG9L}(I%s:rlXXgk6wUKldE-6jkHU;6޵էE*C<ՙZq(S4$N3Bp|;k &K[9wW=Y@R@!`)UX#90$d'ދ&I&g!FGM7ec&ljO`2jحάmÕK BO' #vUr9bg>c\$1Zͩ&`7\SJ0L4ކ·rH![IaiZTh*]sj Ҵq.OZNI>\^}bX|fv秥Mbp*Sui.ByG="d%EgTmmNeF 9# z81Wr~5oCN1|{ZPISb]y,>Z_G.GJ. S5rQB +:ۭE$GEf!Um:GUn̺|Ɠb=x(Uq^\in#ϖQˆӃ<^Kie2E"7nqT0A%K۠=i&^Ե o7E SI5sK-i6d>}owm2x9]>ZK6VqRVZXI=+$J*͆8Sn5$kZ>T1玵mtm8ϭ;7Z NJBzWTژ#vzoZF 39or[yR`H8Qߤp&qm:ZKllәi=~P[?|[~٥JE+O6եgqUBe١ץQ[ɬ̇pqQɩJ6J(Y-G{$xS?Ar +vgS鄷ٷw륵v 6w}_֍l55uf{(a`5nnӷR+9co;@q QѦ$m&i=r2ݬ~ݘ掚NpתȬreFѺ#oH+COx)a)JWl QC,6dzbM+s_R e#"7 G-LZm"yvFq> tm|8ߍ t#s $''֧S]G< NGLvxV17l}O͸lbM;<{ncM+O<:d9as}h֒[Y1 LG.C.96kIYSjK h*e mT(ǥI<m*;ɻr\2;fF-Md~A4ӸЧvO#%nfqWZ;H4Qó6:c*{l$^z66qW4PQܯໍv`H=x5jQI)7|m)Wq ֱk[_0sFAvDo,(t(69$2E楂#RmB۱k[K}KT#1F3J6RJ.;ȪPֲj{HZ#E;IBO|V-UchǬ »(K9>2)_5Œ?ƪ֎.%B|q@,"[G pZxt"2ɞy{umY,|S+Yɐww ԣpIczT ܪBh' YE-2HX:[) I'qqsLe Pҝn!}*tf"wƴ.#YbHzzejwy)# +Gɪ}RhsO;yLcaJMF +aH[dT^4RrqQ,R8#0ThlGJl玪jQDWf9뚯E2SVjÐJ5.nn1""WJ,,j~NjdPR9ךRrCqtzЮ)%gУE9 +&e ץ;.KA6uy1FlR([+`߃SXZOg.ݬQw sVu'3fs,gv+B-+XPCGq,*U20y}-;cԓHq5r=:IlȚKm-qj6!S,ԌGQZsNuuwќҤ7.NRAF~#c=;jwZ!k|VխݥF##3'[lZG5VH3Z=7ס.Q&YrOAҩދO؍vǷ3.UtikgC69&\z9xnT`z;m,ǠV9,D[K&cc~a֕k9JȽYX'J@>gys!hߍǥ:.n|n*ZI6Ge-r䕅yl =L)7qlu >uA=F;qw,R2qR/(h@WNF}f.<3l+sN}ZHL->c 6/ª3bK19$I&5ubœcjMpێ|N#;.;g$+tUimpi4%)E1ʇ4ROKCIpZwڤN U6o)u_6ƕv95enp?ɩt$Mk*m' +Cz0{o3JcZݺLWvw6{ڴ-=f>Ψ3 '9ֲOg$QX|џAН:n2nHѺ,0=ffXvl+~ivvx]ڪGAQ鶓<{H=]#)~WG H<\A`$0I+")qai+m2cikbY+:a?1=x*Pi5ϗ9뚊FX92ouRPB2ӇHҼ;^m{?bWF% Cp9sxBhBUl.g-Ȉ]0_.&@'*dVM'M!Nk2x9GbB-ZhUP.qEUZ4fF}j\F-6B >6*pRD qvzJ]•\J4缗.b}cqn(ջk~qCC@ϥI|j8[`.W ҫe'ڶ4D xf9v&sc{laEKK⺕(<=9LFm_>XV!E]rvg:U{MLk4Pv)ޒwE>۩eb8GO֬^޵Ք~mG)r>m f5ݳ/BPIo%!,%pƖTZy]G +|ުQs7 r;t㷷nOU6jzF'j#4QMd6~dT(?Ggwtm` <*ޡQWԩEF:AVn೒)v!%h9UjŔ(Np'Fqi]Xt=m>8W7)$M*oIa-DI =PXJr#'#H̹URB+[0"y ,ITdG8KHU183F"%˚MѲȭ9nM +PA+dzV /ey ^F{)٫jz%cIRGΖf]Hd"\m1|U鬞ͭ0,1ֲ_Q!dLxlc{jpXSi=r7r3ӭ]nX#Ю8(~eB.Ep#_#JO]RN$V[#ҩ'3 mi7cEɫԐ.d;{TX&0Dx8y/\_\`GBҫjF;dC9OjɲHrfstK֧ "yW ui ޟ4iKFxYDh8ȨbUf϶NzO5!1Kri-WZMu9ZRt9LhI8I䮫"qP6=:gҫH'I"ܪѹ Ҵ5KY7ʌ=}ꍔ2^\r۞sע ,^XS뚖5Cgv?:XDw>H|f0Psӽ3zÉ$+f9&KG+:b 5<-sZWWM ChݒqhVm2>]>$ G'3{֌TQjPڤ98ǽgIK-@P~G9C܏9m` +M=͡RWReYfiq"Iaɡ6)IUT5m.`1( ?/~Օpw/C)$LiJqO,",\KivBTt-שK[ذ*xjñː >b]kأG"oj9dpqI`P╴3~P.L#y]f8Db8gO=*)xD׊,4tA"cZW{Nr-O9U`вUG ~'r}:h!~RT*:c8>4/e2nmv>]\5kHao3N΁v +a,,S)NJ[Ys%: 79>JE+Bim7sh>%@'9Sni]X-%zinD "!}1I)AH$C#wU3H#R>G]YU \I%\!GxUQ]Q1$ڴG{7<{|$@H'jF8eh4PCӰi\bno!cXU];YT^jQ[_?)<{Ӭ졙s#o'=?&k MXsql999FMhlk cmx&FRBZawa#|霌;UˋnKK NܬVNLH% Ҷ&ڶ>5+x8 qЎG{'8UH>ʑZ/n'(I +_ӥ LW;r%0r +R$n~f~KȩX\0YrpnT`1Ӛ-N\=XSO FN6v:ՍTx4{fO"C Tr@3L)5ݱmٟqӏ_¬j/,[pZ//8Uu&ng^ gB[o1v*q5/KJnuRqؑ[6Rjjgeoyu>+7H7]3ZVvwH1.Av(ne^qq6}sOץU\$-'?6;/X*T l}:geζV!7rGn9=zP5)Mu DN;`?6s/&՛>Sli0>lgv\|1}zk}ey,_|TxSQip\x˳UcjgY3їq1VIq42y%>!ffC1I9Ҙ8ǚ;.#[[dRo$1#O/GȂ_:& +3zU]FIvClb\n9LjUn(A*lec Mm9YFs2i/7,$;|>`y#ң[B?5cڍrm5$2cX#}MZahS}9ȓOKn.gѰF#wii,GzcMF +!LSa?.swYŰ1$Sj70]\+Lx}_/\Wwej*5WPXI ;\vG=Oz1-U98q1ec%B c^+Tl>=̈́z"2 :{VR\.AjMJ{/o%դݷoՇ'q# $h}eة*IGM"4AI#0`9t}I_UР̨c#Æi88ޝ.~cD#ڳ Ui>nfyXFCa}HUWc/fC8{ +n%Hr۸_ sV4qH}Mtv]h +ۘN3NZ+ +s dj:kرbєa'j=>ᣑ2_#\Jc,UC{5KTa+F~鵭<3ibm"D\;!@$sV#-J +9sI'ط>_ |^Wr9c׊Kh,#2d:۷qWZR#[˻ mק6[gfVg'ebI;V՞{y$w22qyS)Yj̺ao̯3ץEk:8g66#y#`MJm2613)|62ql*ڕŲ[.P@Yr=qOG66N>n1ds 4^D9}_B2At%`>gM$Y FW _Au dK$el-Z-㸷Lar6zИ ൳M\#擑GK-Σđe`H :тP'K9fN3C!;- tˇ2G)̪PS_aZsp)cϵaI<(n9Ju0鑼dE9뎟Yvġ `6'zV{Z}eIcArKcuz؛&C4MϞpz֌AcOKx{һF-6=PG>ƜWQʓlEZZ1AQUji!x̮{ۘuxm4P朜_ȣi["xs3NHҳ]'e\n`C$4'sқvvnm\pϖ\Ѕ:wsv73ZdA8}}e{mh&K?xd@gׯ=$ѭ#}beTÌnjdOrsI+#o|g<)"k-J!R##0q{ډC2ƻ3>o"wڥmNHWj%FsrG_ٽ^ +siCb-V.(p1EC3Chq4#V[dH +A#sHltneY)D-ě# '_gqo$5Dr1?Ѷ&6lz(#}`@^SڃZ lLw)G7{\R5 m d*=+Ӈ/;CGCMn;a ϡ4 NuHET6)ڀם\[%DG>Zw՛Wmb tMVԣ;Ig;@'ҟ_ٳ^a=cjVvO __sMCg4ٷ$6QsS>|f +^O\tYX$dqSEQRie]9%r32\TRJ8Js:‡g_ݓК̛i|Z?p Vyk:ʀK./*70![-Ri?mx^ +^lސP^*;9!;n@Ij(ti<6 vZ߶E2t|[q+7}(K^g)kĈV+n )4dlN7g$kb8mᲸ xgiw4_{c5;r-VԄJ#@p=ꕼțں;=^ьE8c?75 +ZrAu$݂Sn㓊FuvBJ1\U cwZۈЪ.%{WY6e9ЈE)ʸ%2)Mi`mJ1(]dKt 1!cnz m'`!>^:yۥGve# 031Q[cݎ8Z;ҬR4v3 U2HC,K":͐NN!pF(ei)CdŰ\(̷Ay6M.:YtxeFpá h[ܯK T dҡtbb|1SZ] ݈ _O7eY`) -n]g[S<0<`nAe>zNC7vFz犩 1t#m['\UdIc ?_fǧZv!oݤ ˛H= Rjci,lz{{o&VLξb\4?3(LRWH4Iq('5j ScYmq*=Jr|7̌c8qZȑN=:;6=ᅼpqj}˂is}9Җ&3Lz%!zj6[OgjIoP$SΈuHĩޭQX:[v!Dn=N35o(u3qڍu+Y +ž0.1J 2EN*ƯǔLn"GhԋipA 6E+G63D$=N4&F o4O@EmDd +olPa%Oe{/=㱙Jqv'$ִc-Au>j0\WH?!vz`{A4z|Kun|pI=.4UքB;+s0dpG?GC5Ŵ\ěTLR /SWBgJź>}܏1cښw"N:Z+_@Rݾ2UsҫE9UG#>t&*00aFsRkepn7mtOQigdl<JٶO~v~>oVy$i#搶p2yLf#<ѣzFzmЖMFK:C5WZꅰ>Z&3E(MͯŦyHg@.b9m{z{-yuмh;t6NWWHHbz}AVxvl)JM7 Ž (-}KT:);T٢e"!dV#pz[y?ifRd6\6!܂ʤ*f-1n%I2D1Zt3V 0Ju`-m4)9ҫ ~h(ݴ_S 7ME,q9={6uݸ+2sȨY*fci)'빱YuvSL +BA n.lfĨAǯoJWwd 8cR-N*)[Rޡݬv2ǐHgd R=?0x5 rC1iwۤ|oZEsK+0rr*Z %Y_R]K}"&9+KնIJXYK|ïoƙS#n2\E /BQ˟hl> Vx1hB'i-)l}XF4$Fag*V4.HLry#'?wZzt'ߺrO{XRBq=S&x_#RqNM-;CK +y<{TbQ9}tfRW- !_\1,%!8㧽Ȩ;[/t-8֙-ě'(i9#>zS&kat5UPW#jmD2rW>jSfҊwZt2 4xsKcS5ơ16O;Pܠ},VDyەn+U;u1|ց){|ؤMxϷBнiywHҬm{XB2nHUVa9K}}BU li6DJm3PDO$W4@j+]J Ӿy?Z.cO~!^BOZ7%|Tdå])} o :Uk%r18n:q{I#d:QȨJ1V"H佶"2/}ꬬZO*RrJ8챶IL맋sg@?O|Jxn1qlx݃uҨɰ|;nF)m礸#vս.A3؅#ȬnmA&1BԫwqKRŬvQ$i`U[%:u9O#_N:U /; JqNӠ!2 lgl{w>dXy uPH$4$5' MJ(O+N_`lF>\dPiuid {gV[DY@2zcқe: 3y̧'Rrz*SIprJ ?Nb{h$ VthU1xɭI \'ZǖL | gM;TibbD%%f4ǵl"9 ۾ztgtI&q8V=dw/6$uʅ/!O- "a}:vi|;'FR1j&ٙfL3~,K,Vg iQX}3XW%FȬ;C,0h6c<JYi m8j4ʊʻ@@@I}Ŧswj.b6yTEzBW3qIXs;hnYPDL~۝.U8lPy<2In^ {"0鷒yR [+COTҮi[\JR]ߔJA2Yybbce8қo*D\6 +1SƦ}.bmvǷ;7<7N[UWq9P4bK淸pISjr^=%y皳6ޣU[88vS! 6:g8 a42`yoP#݁s4v36csڪGxdUd9ֆϱdnv uVE8ݓϥYM6 R8v.=':Č\bTR\:~dBWO}0H1!s,:\G:;K{$kyft>CW7Z\[!{FUq?*Y<$f8؜>zKnLol[SAzi2߃ZX]'TԹ qeRG;yo4-*'KcNjƝl+7iziˡ2pzҠE"W;nաs+iklP3hrm6]T k (Z܂s`kXi19 +T֫muWUe*mc^g%ZIG2Hgg|ZC| rT2׽DZ_$M!14Gi&T܈(]9MI-Zߤwj:ztA^GC(?(U#9P6{جa. ["u_)\IݎƩpbnB4RIobe5uf|c}$7>)o߻vLXYr8$u9J3 ׊N/;wsDZ1ꗐ`H0h;i* fJN2z-QV;+i FmÀ?j4bCFNjsw=sVlj9)bsZɒ{6QͷTżSZhf`ʑ:uFb8Ⱥzs}}-j؆[y +Zd(F,1#E" lQW"T`+';եGvj۷'3S^t*zr]6Q[#kt ΣOB5cc@˟0N}jQrci[n5.HH9*:dyyd;سu''8#M^5HcbJrOz@'nxk֖HT`X:ż4$PІKYG#A'W-eI1h``X4i/`ams*O緙o4ʠМii=.۱VgY'Hi +7Z褸'6$̶1XWjo$∾ï681) kI٦$FH 'S7)k4ΗBI` qED1lÅM0U!Alލ>[(X +H +y=+H 62I!}Zt]|n:0pMH~o83SObʈ8!jFeGZ翚)E;Y69ӽ;u&zǖ?hq)$o>%0N U< +HAʰ899n ? +6Kqrg(U# Mh$!Hߑ6[Y*| `0yMZSrpE>[}4EYs^nm:W˖'ٲ0Yqs'V6@~0c 27/\ےnWk}bq^[#k^1$,aRUmҤ^r#4"tQ cZnD_pjky +C8QC +1gl֦4v]٣/ġ  r. ';8cYK#Ϸڄoq *x OY,P9^2?Vjql+9KM6ԮCKX7!QאMK%Džlo8'd9Y(07QP>X%4K9P015."]],#I:qlpèG=VbPs{ +/j#4Y29̶4$õ\m'~p*58.0޹doʏAHO.ڰSߛWХs*s\c^tžmF? r!x󥸊=0vVg99fc&W9>FNz-؆ca).603}hv͎#S(d!>cہSKg^F֘AyIݝJj+B!WkÓqC܈v˯bQԑB}s,vl4z]Uk ~&ZI4'Xeޠc ܻzd&W;J~UӵE.[<*BҴMAn(s7T4I#{w3MJdrUJi ^` WVW&%X[7G֧S5ƑYSnvSK[)pvl ]h%'Mf"sԐ\YP-+kb-r t,mYb 6p9~+3ssZ2^Ȏa 瞞=NGKpZNm8I/61TRX8ܪ2UVi2ıV ~IsI]JmQXe1٤leK2Ŷ7d)uͥ,љrT `CZX.u (e'{)%m7w]De<([WI&U9AϩilL8 +X)$Su4GU J5yy,euhe\Ɂ'=zVU9W{KFVQX5yNO +b {ey.MdȊFO`tj^LUwӷBmw۳]{yRL%ASV6;qՉ='b5:M'u)BVі,\5'3TŪIcegsim{y$߷ N35E«0y9CPgtK㌎?֬A=,P]9ǿQ( Tth24vHc Үqٴw wvcz~FYΥs?j"QC?3frgU?TNI(q.bg>XjI7^6KFcq8֮}LieO-]Yxcھvg UBnt5r+Tc'ޙ6(MTmQjhBQ*@8{SXѮW"m5wTC1>_P@"PT*d?_zPwi[iz3eʽůc>4ۣni̛~#n3Pas +Ifַ-lI*dcߠiXy?țVa@[]^ܬq,1'Ak֖+ +Ժ,k|d6 '̑3Iڝ9=j;+kt=JQF$d?2AH=GSJ|mtDLd$6qH5׸Y|B 1³kkEw.o@#x֙ NmE2{MV|1 xC%֥]cp23mDęD +K:ӌg#sC&,D#Lgsϙs~%#bPNϛy.td@E!'o_o¬騂YY+.00GNs5%.=B& Iʢ}ӥdUx;YNMfYYW!&_9j1d]ԥ{t+1lcңbbݷ~6e,\IY_ju[M +D` FRo-̞\+dWmŭKbӥ1fmX)n&`jAm u FWTah<یqA\HO\**m+g'ҪkYoϝLS-3̫#qV(89et ӥwsfu4vȉ@K1PefQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEZHH왇.0?{־eQa;wIKu%XAp* ]ŘK&6ssKivG$q ȻT5 gP.GlWo Kh#@@ + "6c\tڠcdu2m;6Wta387lU$2oZ; boxk"7QLiGmGV7*Qfpvzȹ&Nw¶>oX$Cn(JG1{C,VӄUHLGֱ"$f +9=*KNVYH%!agI@9=yJ}0H΋ѵ/i ZIHU%)u} O %Cg?k>gcb̾]9Pc)cۃNR3@^{7WV#ZV,i-Q\6v0\M2SCAk]B=7qEfֱ+KߔV98HÞf_ZѺ%tJ%&AJ%'ͫzQMjKvxǧ>NwF͎/leF +ώAǥg\Z=ȎJ1SWAǤ_CV6w?տKnG$y.l.S &FF1uf.O4-ʭxkڷgb׋!Yf363OʪU~֨MYZ~4ySJ%r˃? +m[*#@qN3'P_05pA ׷Ғ6W|1\'< + NIYG9Yܰ]\ԶA$TfT@2 2`U#=*z$>^3\+XfIO8֣Kz14,|zu{Nw%I: c*FsϽ䪑'T2}·<'!?֣Q\Qf"BΌ/ZڭicE +d`0:wI~UxWR% ;*Čd5Vea!iF<]\jwKySGg8XE̋mWGf]qv _w]yo?ϥD];QPRwigUr=j|*×=-΄5)HԞ(/-m`9ZM(=z[}rIgVlI3³?ֵSCs׃U{OKvq|䚙f +* ajmnJE,su pҩjZZ#KI16qEZռ#XVW>w)n>\XuccU;R[ۣd>`Z l*exnfYR2G_ZҬmYF<_PX O+ A41A+2'<,s 0t\dLK$g2'}=j 5N)(VLٍ{qLrEEzY$ǝWnrF3Q a_-P䗻aV犿)qV,|P"P)z;(ɂ6a=yg cd|:qV5uK]Kz^om sǯ֭>cgIA`8?^#x*}x?'r࣢nڕpy<Ee4miy'Zo"}˟إN9?'U!@Q˿ZiAD۶6AcOCMF4֧?ZZ]JE(n4Y"bY%O}9ǭWk;vӭݮݽA8Ru_EIei#Lk4A5љP+$PH9Ҭϫ=hXUNz֟ſ{5@Fe9㷊MY:j/ir.;j,lYua,wWE˶wSI uҬq?EMMVc2dF9+y ; +}V/5J=ʫdM (!aGs#AJM2;Y\twJ4§iTIp}ffd <{ +qpivVq$gۻ_:οڡ=N G}5Ssi cE.NQYf aJ\z.H8"E7PQubc;9}uvCbVT21מqkm\tF|cq'"44tOKFJvf]ྲྀҡTo0 +]FXI!H6oW6HxoU]r֨Ъnnne\Ec[K+@6u^N{~'\G!C+cKT? +NBTdn,#w Z9pi Gn +ryiio?k%6b d>dsb3DFJ]CgnBܙÖ ݠXnsj_\3泻M&uh-8nzV{)V"+_b7G5QiOdr Q\VH.po)5}ҦP孇 =} N;ۿ:8V,$xP]٤ ʶU7C?hى-"<]C)9Jc6W0pMsA֟5M;Ԋ+ڄ2j$lD;vRWSTgfyYܚ]fh]-됛ש>F ̶ nیgW-8dvV +0TeJv,ǩ'& +*)fk׺v&UTF9ϵeI<*\GE,('Rk1K ;<"@3?vyI2#bK9jN42FKU|Bzgby\l`v<~ZRl&[IrA0ih䔽ݵgBjWZ&&,~ZG?ĵ#WN:[j#v@mb'i-eۓzA6 y2A(9+Ӯ}i|H-zrj\)<*  HoշWow%MJ'xtO?ij[ʐ-rxNS\v*: jv-HW9 AUbIxRS##Ӟ{VV 1tK.<sv'rgg9cZzlwO\;t 2<>õdNqG3vcԜ֖,֢`B܀>Q^0g߾:[[X[u#kj+i$Kbi}b}.)+IB:=Ov`pTt[\;,K")J#IY +>]}pH}2Qnvoc>[k* +1ث[9|c\6]ُLk|DE>R_29j:iTmɾvP$vf⑚dQȤ~W +a޵Di9UEp#/F3 o4 +N2ryWmYc,q̎T-׃uP + +x$!![Ot$jK]{\JwL1I=MW&[TƥcpC_m 0 vS|LA4ȔW/4R8Mzt:i0Gw!GLEcy}ITZz{ +iCbG}($)WlP:`"h!=9Q1'3*vc;!LA2(O@ Mf6Teh{{PD$l>L2=e m5&;zuU4Ln"# o=*<{onҹ"iF:wZ7xI@ I>`W'O4&E `:{ +]"(UY4 # ʹUe6i`X>V&`[<~u٠BuAY+X#PGjNU73bỄF /pvu+>$;ӧjUC[6ֶᗔd; g8 +FV= +Ms,$ +FV;BuCY1 +uP 8^2 @V()i̟7OZ, i`Cpv!I'[Fmhrާau,]jKdc2d11ߎhuN[$cƇPJ.ZH,݂u69غ9*#?Y[KwUr G ڮ<0saRLJ18=.(:$8ϰZS{l0۞:ՍF(+zR~Hڽ(3\I= s1 ֦ ]C$ãN.Qmto*XXؼXH5,rCyrX*R1|gְֵ +R\t$ϕ"o8Z\KLTyuNUpބTJ7ҎRgS3b$_.'wE%C䯱9XZ\Z#EkCS|;~zӲ>^-h[[imB^"1 1=%sV +B8={JYҬj_#?JNSl[yȣ c1cVnJ:y*EKxPەpsTLRfs>[v +Rօ7>K)8 +<*ݬ6ZmmBK*J#|=Qf6Vr'J (i/<8l!9!YoPݎQU5rڎmՈxͤXr󚽣 @5WTp3VJY^fe&}HR@ϭJlt3s۷#1s?3X֟S;Z Ro4a<}HGߏ?jb/4Su*E\LmS̔I_ZH7TGKҤ zZQf($8^2Ur[:wۯjhzo8WcfIZ9!nGXRѴED_8[OΞdB*PxX![:G~T+Iŷ? qȩvI9߷K+ŠE#ߚִc*c5M&RTܻ L`+'J "8+SŸzU;En[-b y{@۸ƪ֝?_ 9;#*j3"p^RZ(`Bzҩ~?ʬ\_m_jj&%p!IuIq $iڟ{Z4A4niRb9P+֋%0ez#JCC7~LuDyBOjZ|QR5=qJ={Sr&%nSX7LmyW^{Xـld UY)Dt9DYms#ҤӒ[n` G]/ÿnJ:VçPE>͓7tآ%vשOU}+> Ep)%kR1ev֋qv3Lyc#3WL o޹iOs:Խe4yIXu?ZjdxPTynߺ=AmxV@;ӟjͭ?A]QE$bXAk!H\lIp} (RoT[@?bI+RIAgbRe`n>d_=c^}0MgM+*OU^EA~*,:+AVM*L2(~q+.>_QmZtԛZ]J;u*(Xs*ֳ +Ʉl`sj"?XA6Ehr{ PĥDa~\Pj%;b$͜zKBЗQUj v'>kHb_+1aAX[ZyepI,Q.1BaUn#T61[?Sh؛sS\ko3 +mPW?QԺIL,jIUeRсv*XYk{ۈEw&A lYd +Sc7Gu^(s.'5łzիjK#sXzt5c[_yz`w$} rWV|SN.R.@%_BoΫb`OcԣPy7nRw-m8¶Ì&Sd?/Yonm/ w!9n,עK2[Om r/)4jRwЗ3]01U$5W6]Nz[ǔT)s:MeȈ<,34l9{T4S~cU#M)RQO˚b9\ ᳎ϰuO+[WDգ #)cRz|F\&u `-)-.NO«\/ӧҘ'f#e`qW>a H~9qqκK!>ěF+Gtgug ;mN `Z|Tag ٷVR&ue8ٚZ7q:%R`j/XljuxV9.+VCSim#3ypqޫe-;G\ +X+ <{gL@jv%V5b`[mpNsۦ=*o"ɝ)8nҢ@ +6@n:/]_59QD9?`g:+fh$ˈ3{=zЕro{ZBb+)#t=XgJGvۄMyG'|듚sy)nlwuh֐/ +r{kG Q?2Je2Gpz\nΟ[^3 m+dTNr: +Ţ +%M듑;V(7|sժO-4$ POAO{`(ǚ/&ʌ0+a-Fw'hv7|J5 \"m{#)r@+_VU%݆-8 iw2~9Lmy ynXicFIÐ2z Tԣ}w32G#=SPhMHwœ}{ +414r1 m<Qۢ)u Cdg|>K}LPpsVI«P "mhI1c+nmdO߸\:VA$NiL@M]ӒK20NYHX@= ͷ=3HzL[iqyVƴu+q␒XI'M.CmM +i'QBArl*5bnBƒg5ɒW#WWqE'{Q伣{unm|,) Yݪ[O>PUأc{ +%.%G15{@9xdC* QܬV]ߴWc8۟|Cua$z,e2{VgVkaD6=q%" Ã46Twј2'v$8u!&Wi&*T`s_w6N?+ 9qƜNSVPQP|&Q)U`r9zFA[( s[:D. +wd1F#:]6hhB?e0!d`TT%8Ի8'S@)XKH8ƚ0' k=;emѡ#n8vɪ6V"V;fFߕxS5U1 +dpk١F;(44dj7+(MުkV²͒I9{ZC@?˻<Y$UY$v\tfȠZT|E,b0nXxcRWҦ6Ljb)mU*j +~`u|ґtG* +7M0Vz[rV3I HQfR+tRpA*aY% +HRy6T21\' rM."ɻ C,A{; ]uy2UxhDFeW ȩ E#Lɴe&I4Gl1I#~j h;ڧIA jK(Q$zbqHRٮĐr$OdR0AZVgci$RTy8XT +4teY6;[b@ ռQ_3C']#g?MfJZ\;v8Y/#ݛ7i-)mQAQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE +endstream endobj 2021 0 obj <> endobj 2022 0 obj <> endobj 2024 0 obj <>stream +JFIF``JFIF``XExifMM*1>QQQAdobe ImageReadyC  + + + +    C  U" + }!1AQa"q2#BR$3br +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz + w!1AQaq"2B #3Rbr +$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( S|.'xgC jfn|7I[y,Q&,EQ$dk?!?KZ{6g0_D/]T }#hk*/-ɇGE5kmGĺ}hn.c nRk_ҝLQ{Wk7U?G Q+J¤#es>=oֿm?"cK|9/=?r$a[Y練JNPFp@:x'6ox>^y7٭Z :[WYW{&m174E]$~.mk^*ߌ4uDԡ-h̐.I\W/(ؿP{J%ga\(ʿ:{kA4гxPLnW?zWl?|8~O,غ]vOpnzW?*+_K?*KGe/ҿ.E9caqDS«J?WO ++]Ý?+bk_ cXÞ R٥I b eb7+qH24 +(o/+l_ w/× Ԯ`moQ6r#c!>Pq& +RE4_~א5ZԒ6VH.s1UӅm(^&WOJ?_/+%͇GE4_!IiOw+CֱYk-t+K8̱ϙ7`鴮 +g՟Wo,74O֞2_i_k bmK +!vz"T_ĉ9|a"-6DWwWu 8|;\xO .P2?-% $c&n i 7 h!ZSKr*7{~ ;GD +ŭVÕj}>3fmuog;T>$to-v-nJSio/vܜg=k㻏xJS]t4e)խfXrr zWϾ>.G xg^MGCǩFٕn E,d #0 :IѼ|~3wgުeҟPx?M^f5I!t6[8^#[N8kSk |-Wc|E䍨ǯAZMp1@ۼxcvy+)qVRB[f&}u} 4}_MWujxCoO OĖSK,JFw#n<q?|kTIBt]jK;;uQa^ARG]_k?>/7N-#Gl|FZ٩9,Um0*pw@/4mWkޣ i֟2n9ܩv{ {X9!I?xגgt 7g +rn +cY%Vd[M]#>f?]_-O Qፏ*Q7kfI6S?o]6?[;)Jݟ@.aZ|"c'1_Q3M&/i6Y]C#[vK+)V ":?'WbNյO .fi$ﰉdpS9oT~2{s;?G>q]qc<g;ӊ.Jo)ǿx.͟t 5w1[x|;99:?kf_i'~([.aClʘU\s__?u;|5]gQm: [r!dqzpR>?>/I^2ƽKAX_c\I%zg(O/ +>~?S~!>LJuh'X-#eIW' wni* }cIi|4gtl| X ڣdogSo!Ge(3i*<)$є ><oa/6(,ȵ׬WCa8e?p +\]0yu%G3)ZVҾ啞v_!fX̯ח>zlWv})?[~ſ%F=zSiocwBA0߼ؿ/_xψҴ%/ sLZ4r0pI UQP| j~luV:M~6Q hDh4'BUiZ4Fӗ:狺zNEW9QE?QoL =U<~ bb+öټ]x\޸'ȷnʀF +4|R>Ƣ? ;jC ? Moh&W["Vm~R yU^`՟XQ_m'PmP ]^]h6%IMV%P?(=}^8@_uR~2^6#k.g?\~ݿm|;n>ǏvCl˫hN$#lowiX~+J8JrgR=Okd =CRGS#}6vݖxC|7}hMj"Ic +V`H$ vݖJ(Vxl +U/7R5~|{ _!iimI!'@3'9w6`'SŚ$@o5dI[k=hk_/^x]%onn%}hAMk醊y{?3ڷ5"Z?P_Z+a?'B/x?KY߮ OPY0o'_ӷiWf?^<%=RFjvY^&c|U\FdVd$rzu+1 +}?)5 |4]L++w2FHe$AEAR9FO-&ra::d"5؊im??ŏ[׋%}cXu/W59 <tu>(2J7?Z?P_Z)KFc#Z1U<~g~+|-=xrm.$*fU<S_TWw*1gA߄ mx}?W=JP{ehb +"V* q?7ᯈ4;׆uu}JI,u[lQZ኱EVA#_lG6]n4h;?gF|oY4,v +YBxwj7NK?blG$`2YݿGrY5Nī}~x8?ic$\~_VW𵾗uiͬ&R٥##+:!g7 +g>=km.Q[-edyep6!+FBW}Zz~c!T^9:v"I6s OL(෷E(]P@)5+? :v>6v3 ⤣ǿ?U>!6\V"h_YŽkbٻZ_OH>w}c{t^CSw*#C4??D ti\۰e,qlTWRP ~*Ÿ k +^kMdv + $ $޾DX.6 +.gqgMZ}_>5;| \4jڬ@Z DŽ?_|!~$7S:twH.7Q(N9? +5 Ė隅L9#cG5(?_|tg)- z-Z|˕6lĜP>*J +_+?_uGg6 Ŕwq4" YIR2Gq^\/;[?r/oMtgG {~۹sduc_~xO_XR\Ѭ JƲKHA$Is]-x??|d3w?<+:zLX?i|*B݂8GPnۏ{(4~!!'k+W`T;ܭ1~&_k?> +Znw/3U>@׊?c۟v|#kfOԵY\]Xij#X,vOZ5O $k i6v̱#2攴 |}?lZ [_/~[Kl#+1BhWAkrZ4_- _iS[: <7($2^1_*k߰w <+Z}ޙ?kGvOrFX2HۨJwo^jW^]]i4VWrJ^Xٙbf%Y +@$kr|:O]bTխlN;V`X&:U%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ +endstream endobj 2025 0 obj <>stream + + + + + + + +endstream endobj 2023 0 obj <>stream + +endstream endobj 2017 0 obj <>/PageElement<>/Print<>/View<>>>>> endobj 2019 0 obj <> endobj 5 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 0/Tabs/S/Type/Page>> endobj 6 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 1/Tabs/S/Type/Page>> endobj 7 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 3/Tabs/S/Type/Page>> endobj 8 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/ProcSet[/PDF/ImageC]/XObject<>>>/StructParents 4/Tabs/S/Type/Page>> endobj 9 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 5/Tabs/S/Type/Page>> endobj 10 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 6/Tabs/S/Type/Page>> endobj 11 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 7/Tabs/S/Type/Page>> endobj 12 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 8/Tabs/S/Type/Page>> endobj 13 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 9/Tabs/S/Type/Page>> endobj 14 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 10/Tabs/S/Type/Page>> endobj 15 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 11/Tabs/S/Type/Page>> endobj 16 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 12/Tabs/S/Type/Page>> endobj 17 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 13/Tabs/S/Type/Page>> endobj 18 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 14/Tabs/S/Type/Page>> endobj 19 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 15/Tabs/S/Type/Page>> endobj 20 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 16/Tabs/S/Type/Page>> endobj 21 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 17/Tabs/S/Type/Page>> endobj 22 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 18/Tabs/S/Type/Page>> endobj 23 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 19/Tabs/S/Type/Page>> endobj 24 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 20/Tabs/S/Type/Page>> endobj 25 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/ExtGState<>/Font<>/Pattern<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 21/Tabs/S/Type/Page>> endobj 26 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 22/Tabs/S/Type/Page>> endobj 27 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 23/Tabs/S/Type/Page>> endobj 28 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 24/Tabs/S/Type/Page>> endobj 29 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 25/Tabs/S/Type/Page>> endobj 30 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 26/Tabs/S/Type/Page>> endobj 31 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 27/Tabs/S/Type/Page>> endobj 32 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 28/Tabs/S/Type/Page>> endobj 33 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 29/Tabs/S/Type/Page>> endobj 34 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 30/Tabs/S/Type/Page>> endobj 35 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 31/Tabs/S/Type/Page>> endobj 36 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 32/Tabs/S/Type/Page>> endobj 37 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 33/Tabs/S/Type/Page>> endobj 38 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 34/Tabs/S/Type/Page>> endobj 39 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 35/Tabs/S/Type/Page>> endobj 40 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 36/Tabs/S/Type/Page>> endobj 41 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 37/Tabs/S/Type/Page>> endobj 42 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 38/Tabs/S/Type/Page>> endobj 43 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 39/Tabs/S/Type/Page>> endobj 44 0 obj <>/MediaBox[0 0 1920 1080]/Parent 46 0 R/Resources<>/Font<>/ProcSet[/PDF/Text/ImageC]/XObject<>>>/StructParents 40/Tabs/S/Type/Page>> endobj 2145 0 obj <>stream +HUmO0_qҾ$Hu| !6&*u4 +m ІI-MFJn{㻤I{vO zIp&oOHyͱ)'Ļtp%\E/o~WS^i|3v%: g՟k /)m^ 8ݦ~w{w5/-7<6jnSSNF&/4w)37{A([Qd>>>/Resources<>>>/Subtype/Form/Type/XObject>>stream +q +177 0 0 63.75 0 4.1300049 cm +/Im0 Do +Q + +endstream endobj 73 0 obj <>stream +JFIFJExifMM*2:(,Photoshop 3.08BIMhttp://ns.adobe.com/xap/1.0/ + + + + image/jpeg + + + 分论坛PPT + + + 2017-09-12T22:38:16-07:00 + 2017-09-13T05:38:19Z + 2017-09-12T22:38:16-07:00 + Adobe Illustrator CC 2015 (Macintosh) + + + + 248 + 256 + JPEG + /9j/4AAQSkZJRgABAgEAlgCWAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAlgAAAAEA +AQCWAAAAAQAB/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJ +AAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz +ZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwA +AAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA +A9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RS +QwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1Q +YWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAS +c1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAA +AAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNj +AAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5p +ZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAA +AAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAA +AAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBp +biBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4g +SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDP +FAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAA +AAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA +KAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCy +ALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB +WQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4 +AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oD +ZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATT +BOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowG +nQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiq +CL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL +Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3e +DfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPUR +ExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSL +FK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUY +ihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzM +HPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh +oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3 +JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDks +biyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj +Mpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5 +BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i +QCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVH +e0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9J +T5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX +4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2Cq +YPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFq +SGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQU +dHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+ +wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZ +if6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSV +X5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFH +obaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu +La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsu +u6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJ +Osm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc +1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m +lucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe +9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4ADkFkb2JlAGTAAAAAAf/bAIQA +BgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8f +Hx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f +Hx8fHx8fHx8fHx8fHx8f/8AAEQgBAAD4AwERAAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQF +AwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMB +AgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdU +ZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eX +p7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUE +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 + + + + xmp.iid:e3844993-4b2d-4308-bc52-6d0c74f2d6ec + xmp.did:e3844993-4b2d-4308-bc52-6d0c74f2d6ec + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:77fbbf62-338a-4b47-86d9-26d9f73de181 + xmp.did:3a3c837b-7f29-47b8-9ef1-16e22e62e5a5 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + + + + saved + xmp.iid:4c60e89c-d5ea-4cd1-8f49-3bc91774ca90 + 2017-08-24T22:39:12+08:00 + Adobe Illustrator CC 2015 (Macintosh) + / + + + saved + xmp.iid:e3844993-4b2d-4308-bc52-6d0c74f2d6ec + 2017-09-12T22:38:16-07:00 + Adobe Illustrator CC 2015 (Macintosh) + / + + + + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + EmbedByReference + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + + + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + /Users/pangpang/Desktop/2017/2017.10.11云栖大会/未命名文件夹/IOT.tif + + + + Print + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv +#(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y + +' += +T +j + + + + + + " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# +#8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G +k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 +uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  +   $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" + }!1AQa"q2#BR$3br +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz + w!1AQaq"2B #3Rbr +$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? +(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +*ŕƣy~dgj8O2[K]B7\q@ȨQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE>)dA$R4n:2q洿ha}$zT4P;uWz͌jgXi6 +9BmNK-qٹ9t92Kk{nW -x5_hr,"ZIpbP1r:]f*גs.n?%ޗbFi2)/9֫j) `F?]9dCK9p3zV]6t4tVJlduQMhc%geGmyReM>KdeBy'^[Zyl,Evp@+סjXnyjuk:`[ Ԉ$rzcq?4W3s''_jxwPmRm&±' +7(a8.*6_6׷:jnR0K`.9SjaK)eYWT^VBwn>4MX3(sQ@Q@Q@Q@Q@Xk{TWp=~^颃^&Gs,i$Kkґ1ЏRWG#EPHQEQEQEQEQEQEQEQEQEQEQEQESImaElM]AkNa/ 8=+(mQE +( +( +Me B7ة ᇦ9/魼KV֩ he8*bb2O=v7VFs窳C`lwCV;sIZ#W}v4 dk>"r6@:WGMqV2ftl݋@گww^I4H2awpxmMmq!/7bI##9C:N׌Zm3XGx$cqS? Xiwym,ٚ(|*8''7RomnشLb'kGΤ<_5%X#HAp9ʱRׯnНH q6[Bp88zW]c~Z%Ø^4,cq!g_qڴW zgfvU1YCv.%)>pQÎ}*9;6:m6{q0hd}3ϵc SFȽQԂ?^ecj.%3GHA珗+D+nRhi, \uQBcNѹES0 +( +( +( +( +(6e-K;wwʈpA'~k/ q a}y#RC) lM}JiDf?QƢQvS[ltr'wf 3yN}m/ ̏&~64mGQi5;t)0g8Tuf{f{8g +z: bޢӨ՗o?&ݦeC8mrv-Y^}2IvhV7>)Z#Fm|v]JskJ}crjڄp]c71܄ҩhNWDZVL }Vg#3$QEL@.p'J5΅ hvN P:߈v(Жʃ=?!QcSI7چ=BKDQ`HNEIzMͽi-Ly;T;Shf68r0Kg=rڞoe472߳<$GM<5w8eIcnXmtCG"mH'+&tٴE:^#'rv?_Je}oiGxʈTqVqss?Dh󰌳mあ?. ^Nv3tpZ[G ,jMj[7+X^y#δ2eegԿ䷑ Os\iZOy S,NVIeUs=vE7 +

      22oU#sQJH²tRM9 7]?>u~ewcxO1ofЃ{gxk%˄ǔNr8N.x;kimY{$G'ިiL;yxۦ}~J )^Wx7gӦ8i*tl_]J#̚wH%.Awy?%w_f(0]'ip$7L3Eʥ|KK9~nҤc9秭 +MhL1thث+`m_F,pi"ٸ5gXmqݾM9o4{FԘ:΢Q@G¢1dqk:M!ui-vW6x#4lpWKu .-os FC.r05[k3Cq ʸܒ)Vڀqkr*(B((((((((((`LDC.tgֲiؿKͨ3PKQ$9`qsP&QEQEQEI v\m($A &)TrΖ=&8D{LCڈ)nm^D^Ws t9zV䝉 eH'jil`6BqОcY]zJ5=ww7V$x@ qiqv^-9S qvQ$wp3׻iT +Gzu5pPWi/'Ϋ⩴{]y_h^Guk?8戒ASsʸ;kia' [,9k2.fHdtݴIHEXs]$Έy|yfdX!I czeebB+lcѴ]5k3ުZ"A'ƪxB/5&K|ш +8~te*W?qEm=χ-FPC$`3(((((4{c{"e#1YP8Ѵ֋qu5%`<؜V}͌)吱8< s?.Gz"pH#޴i[fe s9ZZEFQ>2 IA9.?G;wX5]I(~aJF|#s_<>Iƥԍ١.,y-$[qr;cҼ'EgH2{]gZHjv)5oOs;}*:~iu5E5I,2{vzB,?m՘jLFOQѓ0 =5=ַoō|Q,Tfi+Ic*{ҳ,5+gr)nr0t汼7Z^xNQhjCԯ0 +)(N[CdKB#r᲼_EѵHFD1Nwgt/k;W9hdhҚ0RAES1 +)QKqlxjtE ї*wd uFâ-[³\Z[?t,q=u= WbB#F!_Wr9-QEQ@Q@hzkX<2 +xgQ@Ԛ<5^Wn_cpsw}0qT45o"`e 0nN?QY"GTd(<[,+5?ZɇǷLRzڛvng ڼO|nѸ kQu]fs9-YbzhXgp=ޢ;fi% '$A4N9k&!68oDb[k?Qzڴlִtgc\zrR[;vR$o^=jzMTpϟ*$`M :qv{.ۙ=rάT=:.l ( E t䝼ߊϿ-' +ꑓ>=jɮfUc{Usʟ-vYj?jqsuP3>yʀnˁoaL !>@NO' IJ±M<Е.|+9@ÌZè>D*Tmt]#qB&PO{aE_լ$HP8ڳQEZ(AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( *2q*ޥjsϳ,33U(ĶN`H*=B֥UR$8LUK+ۍ>.d@BqAКd-IJ\Ii1y?΀V:5"!8TlkĞѼ-q,\`mvB́@k}B((((((((((((((((((((((((((((('[ks݌ 6Z-_o#! 0]qZŝmbYyҸ !a~eyل{!mHx^3Zj0SU"VWTuI{}Km-j6eJI&]Ws|ASJmɼ/d4p.T~{.zH#`` R)lW=>k[*ylû#r5q%%9e2Y$`Nm.^X/.8i C>;ۏj*槦i7mrXd #<T 7nQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@oq Q"cAеfCRK}kŝG_R\$\j[98`y뜚VPX4FY&TީMǩM$څlE5NZ鰰O!$9yTt6$c:%KI"LƤ,'sm2KDmmov )gr7+)e~]kl;)cG*8kwRKI͉D 7I '4cUi=ES9Ţ)QEQEQEQEQEQEQEQEQEQEQEQEQEQETVwolnJҜ,`n>é!Ӿ6ʛۍ|J<|vAB|!k7:ēao,h2T8;gK+[IfY!< QgII.SѲ.ٷ+HK/QV~xN{a`Z{ǵ"'WסI?f={w&;o1b';O?^~7=E-%I & c;hRbm `5#0G!1|זW|{hzۈ|#]H$kOk+m.VJ$ˆP2v18I~x|@.l_QQ3rdz=o6Rvw i Һ&"_VL +y}Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ ES$(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*uly~S6㘔x,na6uoZ֩ +j  ޹(m(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEYtBBp푀}5RӤr0a4TR}@r|T9>;V_0M%"l[qcquZFsΪzh-Bƽf\r[i'7P6< Wim=̗|CC3:ךK`kbT_mq_^l +ɵJ(_+M O{{Y3%%IG <;dVK$΍?`i]_G eCp\t&f7+6 EvRT1Ö|I·oskZp0PN^Ϳn#ʉdP(99k駸SFn{Ξ@ΖU{d&}ꟊ-%, b/[#'%ՏǙk-fn2:t~uMXoRF`J1*ۖ +z +fr\9J+tsh;fd7!OryE( +( +خdV-*ԁ=zYRjBnRGSiH6p8ir:qYcH"Yc3d֤_4߲`"HW +1ִⷛ@Cj5~F_V]-c]m_VU$Ͼ{{Q;`R.Ud9% }I}pm*\0 ~q}_x6S:tq]\6$i;YXt8>㞝0}wiV֟-iլ}W9C: .O:ßQ^yHjh!|7o P;OP\M>#}jB$bc0A@Ax3džM%֧iaQ,pc+㷍|5I4[+mBRU;!sXp8^MxֽSUDkǤU`\}8_?SʏND"+%þ H7|s9nA@"{\ּiP}pk|Mm_:i͡`2RUqN v pǩ\jZC0EpGE1nݾ*n?n"$)d.eڀ>@Ox; $^= _1Ͳmm^ϐucԊm;r SS&2'.:_ [[YZBnU?GGZO;Rn7HB?ٚi683l? 5wxWSdy -OU>=hğx^&ծ%Oks#IM5|CUTmS/{g!ɉЎ>4n7BL;xA[><ǂ|WuLK?ym)"9~} |l<%Ky- b[8#J? w~N]Z[}"9eq|Ѽ+GZU5`#ʧ3ֲ-4Gǝ(Xmk0(Ħ#mw֥ex|>P9=kɫkJ;CikWv˘=N~! gC<??lg^A Ɵ4jG,ѪK1 gC<?7 ]!fyf(}8+3NOxj]P}+<]x|?m.۽L`+~C +γco2[8,U: fԴ߲]A# +׎Kw3 Jд߲K=$& |qWW|?msEuU˲ *݁ u۫}Mп{4d*+(z1E_JWῄ/jZ,R_4G \.1ҿb&(vR +o?_?1Y>'|i(TD-DluiQE=ğ +|1|!o[Et5arWs#^_WMi +QY]]jWk2ƫ+Nk55COG.2BÖ +gfO#ş9kF5j|5,|QKѵ%<0F[sQ[x+VZ:Li渖Mv +OJo"J?iG(QEQExOᏉ%YZ !A;A ~BRQHQEQ_W|,dž|;auՠyA*f/zki'؁g,@1 gqLEgGC?|_Aƫ?,' 5_ ]F෉[t# NF q>/T8:VjuH;۸r1y|@.m AQCv@~ѡ5K6h%[u[YqVlȣCҸ:{jڔ+ {u;lדՍ#Eq6kx>dQ]G+Я3qFXڭÚuDӴ{9.nA={SɭkK9' +?'džmu7K/`gI3#`BÁ߯zo Z%]"v&{vu/d-u }ˠO3e'檶?h7IųKpY/JZ}>:m;%?Fz~d_R66}遊\K 7^'J-Bπ7l`qY3xF{[ˉ#<[(l$ 7dv@!E\Դ۝&.VTvG *3vaEP#kPXAbQY*Ȥo-Oc}g3"Ƞ8'q +J_^ Mf,@{ +~]z4[Ȱc8E|{d`Cyݥ0vL׌քlmUq6v¥7{h44:5VܶЂ;Cx:eE6<ҸA¨$U7iZd~e"H\qWTs۲<ǖkZe>mL1I'n}+拯,/ZSfq$.NW>pq'⿛vcMfcFrqǽ}'x?C$ Ku) gԣ[v5(acn3A.u/CNGZe@R5č^]Z|kISQy\QEQEQEQEχ|gsʹK?LCdrpJ‚@=~'>ѧt[[s,H3H~⟊$fy[x .:2q/E~fJ.2q}g/xՆ t|0eӜj~"ۨ=ydg;Acw~n~ sMh$igrGd`pFNs^oM$:w& Ku0@qʨ?ΧCgb߹78񕵄Wzw9x>_nVth'W`=j׋Wj neEPN '?evrY$hlrà@U7hI^= >#KKe=*Λ%=r<7r$H0SMy4K3+yH8ݵs^6;yu$Y\,KHG>JQh^KqJ>Tu?Y47RK/mHwtZm&[qؙʩnGB}s ;T5UyI ZqV7&tk;2l0 Vieu$Y‚ }MUk[K[q lH`F;$E-3.v+3nߓ2|oR-e;[YCJ)cǚw.mulX" +_*q?]M+eo, +b8FS\Ō\0 * +}ǁsҙJ=WFJ#Jmt֚7 |+ ڙ㸔QEQ@nXkH4ӯ gBL~RA$IâW.pwGs.iK'YCĄ}}:+L1o32 ̿1O¹'7Z[*@#w\So $HVRZ's5 T$/4*m#\ҒG#qަY &F(q!pG?^ t+ pʰG)O0)ewvմs^-Ku~wFIzzzׂx7Ǟ U̧Ev\`Io*oG#\+WſS'.mX#)c'8߳߂줱])5fA81IwĚ$yVdTxç|1^I_W̿-4]z\aS.#A ooހ;_-4?x$կ3Dt/#}[ i<huc~Cֆ;%?,g*2!g`Ip+)?j^&^WndG āEQEQE-w1$6*GBPwg/$1I("FGZIpR  eu|KWJun?@x?)ǭu<} |#k2qBv =>|_SiΦɉIBBQG! +XiChx+⻿wakxd6<А19oqI'$4?7ƯYf(29&CH+J51+'J`|qERQEw -=}.n8`ʟ&Ǧ}(޾Vxoyzl @,oS/|a}9a t?O5ax?k&/5O<}> +bAERW|έCOrGFe;g&-'ÚϊoH9ADZz?- CY ΐ;;=~5}oAڶkMO +7s}{loZpbbp4?9WXu 2w᛼GA+Es=DyaKn7O+?c@/Z={\tG:F_sl+FY&]Gc,rIM|H_E4({#;76a~Umi[.Hc?hK4#ʷC&ꨢ8ʀ;_ɻ??p^*57zLѻdJyqȮƟn`O\pgi6uuo^?? +Iy|ZurEy$"I~U=>O?ʼNDeծ`a뼺Ԋᮔk6O! `֧##`i_ߵf:F:gҡPƹGG-'Q(C ++ݼ'=&/V{[ĉon|FFzu2/|#J%FIA͎{]gqwr&NA=*l_ķס4 YTL <;O'T?]/G /S\tMvо4ZWW=5=. ).X 8u'T?]/G /S\tM}]' RSVTpOh_-+'T?]/G /S\tMvо4ZWG4/?疕tI.|=[[F2Oe""sX!h7Z=zpPelq+t~Iw:>O'O@Ϫ~ hHaoc?­xw=_o' u=3)?}Cco;6\ 2#?uX0U3ό[ͧvpܠ9(8?F +G1忂|#I?amM΃Xs^k[~(Ƴ-_U>U.,4YNTϥrte + %ͣHhWmH?j=x =_ƟJvҿ(_jhh4g,[9>*|Y7fV6ʆh1A0*㣽=Yԯۮi0yXh.RHF*K*b9ho-+ƟJv^6|sjlABrO9'fC/5m;G5$ +̧ۅϠWU뻴.n!@,=߈^o-6ѮY.Cn);!s\> |HNohSuġPz*^!muqgprDY~r+Kl@  ho5G3?%y%$U?ƏKwzkWoy.qӂqYxڇӵ ͏͊XI&Hr0d uH*SjMoRރ.io_~h7N 'u5 n, ,ʣ +=OVZosQy[=:Xv CUKx"%$qLRPqQZ&$GXx!*cv3W1]|.Hm I9&]Z-eݣed0By 0k[R\_?KTb# nٍ#zQԹ^T䥺( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +)UK0U8wI9I V<(QEYK + hVӴ8yvٌn Z퍅В{{s4vi@`=)2鶞5<;qB`bWˉ#%rF:Ժ孭қ0.9#5$zEifԿN N(ue˒gOzw:`҅^EiGmgq <$m͓+H'zVmYQE׺AY=k.-r9E,Kxu :nKq 6KDcjJFHǯssֲ66ʜRɤ9FM+϶Հ+ =F#륰Sw DFb2rBxi{#sc>2G=_f +dxW1>$meZl ψ#]-cUBXc9qJhWEϢDiȻmYUpLft{漶IYO j/NPciS}Xo8A,`''NAޯIyqk:odKtrF1IcXEr=bִT,S`n:]OP&rn JG#9#?5{>WZ_jErFW +GMƺ$+m q8Rm'cٵ1(UP1 b/dSoijјvdx*;tFOc]|< t_ <:-vqd3t$J5ks8HBǠd_uͅfKkP1]dFAi ڬ5 V\y=1 ~+>%’yBNvV~_tST1=g$ .Z}KnN!^F +;1''8(A$;k)dbT :~[tv s?ƺ *i]O խ~i(Q^G|vY&A%݊:AZ~/_ĺ;}{~@P:9޾AkyfG bpŸ0CnZPndcO{A[R(!C$9¢IS|FiY[>p]}8{ozיwuoZmx" l@.񲌞ܚ[oJ*| {,l?PA)9zpLMǒ9|_}`~ҟ/ho_}O6Hkev!Q5/%Wkg  n}M[VmcӳgxDƝ}ٿyHr +sݜB4}%C,HX8vRjs= K7ÍcaU^cOxOH6ayZq6F;dҺC '|Ib8IՄS_ymK@&V7ku3M hDORI㨯ofߥL91svd*3TO>E5-i#Sq}pv峏;T˪]-J6ъx_jzMyyH$e^f?[$w_GzRFUMj%Oˁ38˧ټ[]BBTGazVm#HRN2A8EFvuT<4电]g}T@E,F0ܜM>0 XX!;Y4I&T'z +gi34 4(r0 z|a_[Xj;MьDBU'l̎UpANko6ӼChU\`]326{bhgY/MCGUv!XCzW3xZl :ܹ`zE~ ec+{ A+etWF 29WU?'\隝y̚m$sďz $?,? +^kɕw0pԓMS4*kB[k[lJYO^JlZ ^-<2_!:?h6oj +-Bˑ(RY$zJofL"xtсW-蟩>N`dB(}~*jK!6;k#9[ջvkOe6 -*ydģʲ^xCsq$#yǒI=M5ݤvwb,rIW #~dʶ?b_WΞ*E$óLSgj|N{LwAUN'֏`f +{F|Ga>Rt_WޅbO{lv@ + ~}4s/)C ll|-@ǽAl\ۖ^ +\7W쟴U-j ώ?+đڼn 0(į+J51)QHa_[!^ +|aO]2}y>/ŴsǻOG Sϥ{/cxN= +]āO+{xS/|a}9a t?O5E!Q@,l5{H̷,Q ~f/{H ,tQd8nL׉'X^1_5 xS CYoDAp + I1]Be$0r<8C$Ïf?+ѿiO?3+ZFX\\0rPOL_/"Tu5}H):QJ>f_GX?ٗ%(Y * trU>Z+ռ/Xk$$($?f֗[xG\w0N3wcI s|άqp|͡YͣjYI2#,8;j[ېzyE kg{ﴯ]JO~%FI'MxGnyk+Eq4HQRAB+fO#ş9kF50;υ# ljOkW\Kww s +@¼Þ9Լ_ߝVi2# +<)j?fx#^S3LG?"oZՇEs;X( +ky=)Db79Pv?W֨&W,6$R6985*YY컱Ў=q۽c$O7 @ltZz~bZ_4gq@w`b s7C3i6ȭFp8Nb[Ϥ$U +^: ],nJ+`OC֡MyX.ð=OV=u:MJ{i%Ҍ"7V)G]r.mi$iXiym2vO<i%pFGm#+,FsZ*n*:(? 觸aLt>SG>i6n'S`  +))hɾ?KB:88>Ra{k.3I'gȌjXmuI"|qUs4GT6*PGCI˅ICX껯5ͿlJي&s/#W/Oofo*ݯxI(  <װS[OxOKY? +_zi8w`{ +4Y󌹮|(۷4~khU£66;G% 0 ͤyAҫ$6z\v~dw$*C 9UK6Yb\'jgҤJ^CF++KbML[cOA[Mվif%Hd2"}As܃ڕ+F?<]PӴk?)|ɜ'.Du=+GF ,ēRz?G W9B =zv +pN2}$n8#Oh7׆JN +ﷸB8 z{WȚ8>p/9\#Q]gtl~ ֎4}BSlw BOVwzW4Bzžk rII&>xG>3k^5ְZ@䙀=OJjzCvhzZ[!48fu,Z_C!xm.'=BG\SΑT &=Nͩi(Br# 3DumW.ȶ$dN{cҦmn9B-N~ScYXܒ٦'Wa\g8׎kGEO@K}zhJI[hQ4xstI $XlUm3P}ea'Ԝ s)[ %1(>t(((((((((((((gý3]֭QLbø9xM;HስD#zsa@ +TSմ-oJ5{K)$mЎ#5mdEt`*r4VI<,qF*I1LG!@Hߏ0GhYU[.0h]]I$Y;3|5`t:\ywwGp(MK*y%w%A5 +6y>ᅍ/%,Y! : +ZdZN]cqgpc2QQY]jImem5Ü$PvoWqw0E4y06Ymma1F? + cwTKm`NvPv쿟{y76ڎ-oX齰p{~oGϘad*j]3'Z\"1j$~5G_#㴘0??3\wO}546K=;xc+$t=NN=(&[Y<(/N,г :ҳiZ]]Pi>pj٩ *}ψ1-[wW|t_Y!f*?`pE <ފ(a^>x7HE?hk{u|OLq^W[M/mbfR E-3z?*kZ.Sq$.#/up|cӦk|!A-sƫKU%$U?ƏK:ᮁsO̐$c gc㹯woxYs$~T!Hg.#Wy!W!|8ϿSLD:uύWuN8N|_$rkC>x\MsT!~G5%]'ķZ%fn<%$M'ZւtV2pj֣O֍ixR,U8?1EBsܲќxSJAɼUMVh$JC4`)r8댓mkNJ}Iu7!pEQ .W8$ڭǗo9 I5E>^?? +BBPV[[ˈXE+(?Ggv,r$Zwh_$Iz[|9Wgw.}G"xŚߋ"o~<1HRG8:@QE +( +(= /v==$m e\KN09-&y&M$XN>TP##mG뾁֡~\6 0}x5}$c5E^?!oũ{jmB&BIޠO|=O|OY"}ѻ#z,u_4<+ON6ڴ}o>*|3nGY4}4;_:}ώ|G#u-VyɸqX3%ķ6erI9'}gxJƿ}&k[I͝TfgJk[գEDUTaUn=:okfgJk{u]ŚvM};/ |3ּ+{X?%59ho$v A4_Gc#ӦIᰶ[wU=Pk JXpiy1P͂8V퇌+óhZv-4?+;U9a0=MQl025dsӃּ?5ּmZ*mȊɮ{ɤ)'Zm:|eo {?_-֟vg9 Jp::E#{W͔ hdxC]Ҁ7akk"3FUJ s[4Qk7^}YaP -պNMb Wִ}B;f“wIOTWgRu1] ?|E{~$fVTsݳ7uEu ?(韇? !)Ԋ #nyXƒ@$5~>]#ƐGUq&~`^Ooq5W64SDHCV i)׵cW/"J\)鑚Ȣ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($jJ(F[b(&o*EQoQjU,T`8sR4Uf}?gCW:h{Egfm߻޾ҳhf^?顊9ʮ: X{c7vwwUO5->ae,t=ޖ5^Iɭ'3>5^'[j U]rxȬ[UҒ % .ɦs9B6R(Nthݑԫ)R0A2 +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +߶x-p3NNM?SSLh"U'nSO9+3Jޡ0N|9vi{=$UJ ~Jэiڤwdwv3r\]IoofHS;gq=kltĩwj7['xz=Rg+(f!]ngeیp:q^^Cl +&4-m ˙K9OZf<)jW3M&o YBLC=tYZ_u]Z~81ڪ@^Az{ +lMcek.y%t{6+ge%0C4%\6XN9nvIa*Xq۹6 ~EђC!]1zz-%>Uw#j\/+zC]&5u䘣'=A^fqIz7vUfYVS8l_^ZD]\G MaVvm* ԤPda=OzMWwqApZW@7?hf`==V@[ +Ǩ`r01#ԭmxXݷsggǯ=kgjZ'no-d֒ӭ%@.G/L `qsgo4IkAHw՜rQKFuu5{y ֍x#>D.6dQ͊~F.濾}Hf9'5P߳> +W̖<WľMqM:(fy!h^){ WHW'@wx_̐wɤE9hV7?(AzmzHJҒ6~.wiut6X+hʌǧv꺛f%H2 '~>%[=. Xns#9b:Bw+ZLp~.QqPFTYihm]O<7ö:f#H yf$֭%M+5.{2jvaK#Awq&wPgoʼ~RКHgi=€>lWw≵RԹdvpiѵV)nTMl|ʨPc#jcRTS/}g7> vǙi? }x=zTG<2C4k$R)WG Wמ' Jz(?fx޼#hw_&,f+pFg9+~xcMJKpҸw3͖`g'=+ ]񝟋"S[;K[!A ㎿k֠zΣzX;8䑀*&U:ʥc + ,+1ϵ> +oh钲ќ[e,A}VXJ|6U8}^E1Bc_ƀYʑ!Ǚ ޼~^XXuxxFz?aukzU83-ǚ 2ќҶmu[ KMdDXd{MJSTYe#e \|$ѴH)PH-$EU\mbqm);cm2и[R֨ +3MWPjv2\Ɵ0X @=C]ƌ/#qٟz+ '&KCCSkiLip6$0 eIuh亃X),6([,6N:iwgoYliD2MqE2I?^j7\YIrD,HAcJ6߉vGsbu݂2;uVo;};}B,I[eÍoV+Ip9ְu){If5iUS89rBS;Y-NbIЇuQU+oi6,bc %<#PMfFxid$w9SqסV(fQEĉ :qPӭy28ǭMs4r3x*>gcCuZ~$''@(I$=:}jS|S9RW$Q%W)f9hLf]è<lJe޿vJ4QElyAEPEPEPEPEPEPEPEPEPEPEPEP^:v#LhBYʅd$$*ב(=KR4ˍFt3$1}zBi ]ذQ'>K˩H%OHJt; +|`glR (# ǢC{UW>)JvMYwf$BךWk QUM߸DU!6'ONjne6s }3 +MiQavd`Z3m몊IqF`9tegC0^kivK[XwgnJgjq=#n0'!w1OH6n>FN=񯩿V#/?+nsg\sLέj +$v{xFՑ  {ɯ.y's$9;M\?Ck#lAPO ³) (((((((((((((((((((((((((((((((((J(!EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPZ77W K3"2x)'J΢[CB&hn-GTl 0{zqOЯDhѯ\7<nO'sB6kPoql֯/U&,5|/MW|}>A۫:縕Uື s"3qi^*QL@,>c/=3+HIa̧Og>ƞ4R/T{ Uy×ĺ u6<'_R+?cڴ϶W(דdsgҼ[nGmY%KSpn0ZHm3Q1ɫ؈/nq RKduguWxkXQx.um pqmwnl||0 +T$Zoth?cӦrv';`f ;#J +EXsXܡPUSr8]ZJ[5qӢ! ?^;+ˡԯ-sQi?{si?^:t[ƷS#}vxۓ)Grgm&FG5?|o,R71NW<RXNVQ=`GF?X]Y{"-~h@UH^yNNJZncjZݹ (e;e**Њ=T?W¿o5Ï +W-Ə[|aE}{|+_Q@nCO[ıAm(_ }j!]᫸4}VPnbh[IDaː18# +((ܾxCibK \JxE{/,ѥJ|QEu%}c&d<=1|=xuM #F}ڊDOVPHNN6ׄ\+]_|Jnl& +>/9*7ķv.~7!`_r&;SlMvrji~[ e;Kc?Mܖ˚OO˷AXH4Yn#=ўUrU<̣j055xt>kav-ЎWz%ŸM)=t5S"G_ΰMfKyI%݀ӶKS?wo*B6;S.-8TxzG,l։&9N2q[o袊 +( +( +( +( +( +( +( +( +( +( +( +( +(:EEuk)8-?"Et˝>[D6:¾ӯ$1\[Ȳ㪲w|+i4]Fܡ@N=O~E7MKS5IA2z8Z>'Ckˋ Qdm"74=tjzl::zϷ8'@}|_k(giP+~+x#Vz/m.lmBFK3'yE}-:xRZX EU!GKdLiK {sWs@GPIR~4iz?F+8Thע >'UsGDAMkQd.slq7W-Mbc'i=wmzľլZ)Rʿr*}{Y{޸X-b26N7G8#䟄&vs+[O! lח˩EQ;7=־ &_Xn+ْF,ۘB fۜgǹ2uGMhUjUʀ_m Xie2ہ9>O__i7oi~(Q +0Hׄiz櫡4VsdG,2(auk- Q,GʣzӵqbI$ޒQ@*;PK18#Ǎ?WW4_Uf +?+}5eյ+o6Q/#G#=Gj:m%k-X!J2MӾYmC)dM\zC<\\K$yMwJVggV4KK[YbVkyHY@8%O|^'?G +tW-#N%eʏSqO_o𭿇R|w,2hȷ}_PA.2 dy2 q +c8X79\m3rwX\w9Ϛ?\浼O[Y.khj ٧^0zNw Vn;$7+v2>k JzW p,iPύ#GOpz5kzsJBG+܋m[NMg^>4^tϨz#g+pF$`c xG g3DXb0J,l.짆K["ԩΩ׾5xG:Դ7NoctBeCO>CP iڽtI_˅ d; +_A|6EݞqkVrngn#fH G=|@Ζ?1$/ ealzOT🈴H|OC-![WecT-?6|G}f$Oպ }ȣjMX/edTJ2Њ^F?Z,~xR[_j nGҷ|! shoz<.PJZf&5ּԵ[{8`P:W_fմ)[n=G? ϷXUk6nW=>3\Q^,/;j]ܥ-C>74;= -?׌uKUrE0²u} Vn~ϫiVRWw'=O^/R.&' t{+V#w3"ퟳ?\rU[^o}&S<1} tf/ L:|(7[gj׊ j:ܿa$}/Oc 1I$~ohTЯme1Esxs^ eJm'b̽Ր=}W6Bth0> L㥼q$c9+M.y@FJz^^> 1mt2u?UfbxV)k?3KPykY?#ghKij%X{OUC%7LW_M-p3DQu -Cҟ +Ɵ+ ]ōSPUVP4S9G? +C*\X]iw q )uzBf謾 +"ٹsrK$4/꺍ⷿ1kmfP?tg9 +Ɵ+ \ݥŅ֗pI"aPGZ?+}5JIdFWgYMt0|?}ͼsNHe@n2G*+Nkj-#Zƺ:i~+k#;bgi'5]X3#{2>5CZ噻Ҵ[p BYw#"V%].Pab@w;r3Ƽ;k9RG80?\x}W+'W5}Xۛ%Rȷ,=Fio!ƫ\^Ӳ)BƘWIH}Y,m:9|[8#N^!g}Fo45rе$GӷZk&zEyu٢=?C8#hMKKYgKXӘԑނנ|5?_BZ42Z,@ y8ҴmO\.as{>2Rː=N:s[w gZφFY-.Hƞ+>oFgɻus8^}wE[;WI؎{[w|OG}h:դel~_˩Xܘ'kX uM<Y|!yKin)gS@+Я3b6݋MV{;SVzwA[W3<\ǦMCEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPA$`77AkV |?^E+|e  {V=ZyKo2f_0;>gCa|-55r) ޘUd VkKC $!7SҗB]FSS@d! +_8*޷&YkoXQ8xUnn]bIi6ga_YM^Ikp1,x0{{kzf5|mQo&7 8n~:}$\t P? +&εhm6HdgCTr5`(((((((((((((((((((((toǤiSuuC|m?tW#E Q@(| 3F]x9+[\vaHw*IֻMcNܗS[%XAdc^]J:]f߬~hGqNլO(PL@\<1*ik}ePc(WSڧ{<ڭ6 [J= 2qx5>gW,Wt%1O]\Z+>hrqX7;G1+@3~zͫ-Pe +UnV=GN3nV/qہބ9ke'7gĶF~Y0uغLKj^AR3 [z[UpF@޲I/#uf9'Wg ݣVAswm2d]l&)meRdOA\XxP\M \6Sfܺ>R#+F9$1#߽d7hIb}oP0y!(NAΞv ґ"&<`N&Md")Ur GjKַksF1 ɵI擏ThݨDmfTY#fOTb߼R+)y^Bn#;:zfBAf:} 1oh5÷.]fP8zN.I[nӂ>Y``Lwq펾X ke[.SSJ.FtTV(ս<ͽ1k#+)#ja{E[%+l?${dηR)t?%k{:DKHO~랕G'v{X*=5M;z?gҭd{K{ds!NקAV'tȬw?}7pn2p~=_D5ux]w^I_\|)M]V:8xk'v0{䞜ڻMTգ6MaSQ66y}IdMYr8=={O>O'8+|G*8$< +PYfhuOR;{+?WѴFqZ/+F}JxO#u\h2)`Iqz֙Z&4>e@߀+e@|!j Zfe:^X`(8|JU)!#%zJW{Œu>(Q G|._-d۸t;Y ^FaMO+z~-݂0i%tK\qZ֛t"*:p@?Fm—o DRJJ>agqdizfGOѮ>ѧ@!nA?0M{ů QGDE,r Y]C.m4MD-.| +,NErWcK&-!nVJטPE{|=}}=ߒDF݊yʞrk5(V0n0] +n9;U (x־gOR%K 2ʤ>U3NK]:?2U$bp+ ϋ5],Mt- G^<@5^ xboRi/>HA"Xta9zf&בTК?>= dr}|9ux;Q4mw"q,@سkyNF0I'kKLJW3DLa`0H=W|JAwz!+V38c}gQ]*iVӥ!!9O3pǞS֖spRّ ߷^wZie ݪ95v}f?#ß?0m$i#SFzqX-RK6&!"lO_λx77RFZIL[JHrAay3 {qYtx-YDծ ~\xzӷK%gtˎWȆy:rsyҠqvc;m$n*/>eԕ`v 봜ri`Iw#o19} A+)oؤIyZ!U(w;dkJ-t|48ڡI8ߡw 兾roH1۷8氎kkm~1\ϯBvє>h+}EӵrHI$ Mɣ*鯞+{h8bb"W~~~T5/,n(˕c \6؊Mc$ m,zխs:|ͪۓM[PweǞ cv1=;߬Ko k c%IjSrI4_sS{9wQY)O '5Dj_eZ._i[NO_L_{Lw2EDM*?NՁ{>uŖUP|9rRSjJT_C>WWshN2q;}i4g˵۰auw$L&#o-aGp7g9"MFEH= %ǁU=V<} +~:um0}A;K}xk|?0ę( (C-I/9;^7brC/W !ĎfXW|99g[ɴMhY$ ǥC[A sDݓzv/tL$|pN?֦5SQNpa#*+p8=3~V ^U v|3AV|9}X$n򯙜cI='&T0n/ob6[2H+t˙3׭not{M̑ʋYؗyfj Zy{ ׊[Kl7w: (0}K`ir<9 z#J8:P"?x)xsF:9^o&3ڻm[i#"m-lNeo/L-۽y}yIbț-JFI+urĚޱHQ8P=a]xmmV!\2Rz-=1޾W/n4-?vH6{#S/ x^ Fu9d4|S5OMoD77*`3|@㭶o\ėn.@V~*z '?Z(aEPEPEP]+뀮⦱umOK[9.U((g4Nu^VՔ{`ac&b/:Ɵ- ~#dr;dt/I5{u yka 2\ ?yv^+4x2dK ZL9ǥ6^C5g *,9Q;"LZʌAr+2[y+d`J z]Ƌy#\ p1{eH+D |̞ e؂>a~l-w豈f F`?q)`?񖱧^}5ܠyoOJh Ko k.rbntu|/4 jw+ol󡑁 ܊h i fSu^2#``z/~FjVR^#Ԡ;{qol:3K6=+^~%nVӭgPFS 9qwz֫ue+!],Hdn6uyz-cNI6iqZDdh:rRU8~|?qgrO\x?-<-.uisY/aҷ<쏔'|P$[M\^Gep5K$7lNA铎 +u]]w]!ɾ9Mj|Vts+uy eHH#j#9\ .cnss藺u'4mBmrsnx3,6h ae?\Jҗ~| F9 oH$z +@jxg^?Ea-qwHC򓎧+L D /ͼF+[uq%=1>tWjܖN. Q-'̤g޼ٛSA8a!ۧ@3gPtvϕ!~RQjI%chlK3@,$Su}}.4 {nyg;GWt85{F4 fUdFݳPFAJ~=[=^ clzr(A<+L׃l Ehz[)ooR;Am23ckgxC>ӧX"m$3Z].!kiv^S^c:W6 4UM=V':k }WWNNMm`$xP3$Q_?_ ?X>!"KuӼAkkxҿ_ϕ}}: wzN BXv#rᇨ#z]Cg3\S,pl??4߇֝]r-&K+¤N +wR O|XRCAPNjlӼa\Y0=bA5zmγI+Q kj#% +d ?O '_|}@sLs3@@R}O8* Ah_| X>wϵ+zg+!yZYI!7:WbWÞ$k-2vz]:)fܼ +?<;DCq:WE,"v =uc5ke~i; Dn69 ( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(64}k&A 29誈mwr4I|9_MkC%<@!9v+F|z^7i$(Ɔ6ffc=cL}z66Zc,<3jfj>$Hmndy`1Q=*iҦ$=gk3y9us`U^(;0( ((((((((((((((((((((((`7ڹ8@$۲:.7ĖsK~B y6ayoqqs@ @=*[)4fiv?*zƨeОI ]ۙr˃"=7x[=>-Bh,0U*R~*j"G౎CHdlqF ՂGki{yklO[e R0N N*Z#*^ ei{}4s#IpX0B…u\ +{e-Eo8[[ +v|k6I&Ksld#6` +T_7F cbp0ç=ݐO[SBR-vPM$pwv>n0:+m +{mR,[9eI"GBe}qJEPWqyjkC(NIb\jOh"h'dܰ.TB<`sY7W-iͺAL:p?HO̽6'ɔG^yrnǸ7!XZFrpsVX%تmv޻^[?CN ӧCzbFYI,pkh/a +'rke2bF +WnzrEsiDg*Wܳi2HRy NO?*<{ +}s9˽:ݮe/27q߃ZνGLc5+ӫCE=h5[-^=IwİI&<,F@`τ^)Ѽ3}Cb魼BF)S]r;`Fy0SpPA0Wdd O b12w78xFm];UKni O<60qmK/+WwYn.2g,CVX9# (&i3q8=2F;洌G j3xM?<-ZH^\ M>vOqOL|@ռ5[QQdE0]L9#x\k |TS1%gsҼGgl|{ii$FLJ7q~'TsοsڵCs&cOH úƳxĶZuo* B|Wg^q0j +yEު[n =s ׬[O]- r۶Caz6|'SJTn&PkfOߍ%K Qno yc&?,pww*CǾ뺗%^5$p ~E8V?n|a4y>bќFF<^!ֱJd ҩRoϵk?▛W|9\/9R1FzV]W>" ks8b0"Y@#^3]+MTd +xV‹g^( +7+c؊Xeĝ{4w*Iv`=ŏX=Cw)"$1\ j4ktԯydٛ=1ڪ9Mcu}7/}=5]WHF.neYt +U6ܟ0lv怒d}~(|1֍ ^'!>coy t?Oq@ñgૈtRQKEкy p+>+xHj~lX2&Y3S9Y{I[T߀DHms+R}q_5>9rC/O/ +~0GQuėђH>+l6dyg-;vCǚ⯋^߅|p1l%` 7$gIntԗٺ8?i8ʉ/#9A?{:Tm#;uf]v_¾iU{igKYANl䞜y<}X;V;"=A9 jcΊϑin [kZ9+= #מxSJʲt0^FwB6KuքIKiU{N~f\c%xyƏk, n%!$azNSJ|\u7+*Cl ǜ">I&m5Z/>Ջga}"cz. 2E2 #fxPԬӹWMa:)]uJnh6W:EOS>O5)LhG*9n2 XwڜKܬ[9Vl=S:w.#T$Qp 9>5]52ZI(&Miw6yVRxk6ko,Mhd`{4w$u]NW~GnD漍ݣ$C +`N10;QW惷rX40(MNMV҅ēTVw+-l4XFĐH{ӵao~/puSxܪA{Znٖ[LN-'{fڠ7ߏVu>s 221yGMOF*ۇgKy=}AZOKٮ;#Nq$qOU~*^VeB>![W]їh*O 1TfD-%Ӽ۲=(䌁湻{[ߴCnىf~5KI:CHc&Y@)\}*r0}F]5c"*&Hr3،x51Oů7J|&tְ|\İ!Hǯt}o,-6RH)9?&BGh㕦  SEywtdy.-Ą˳v89 綻i%:JcVヒ@kTe&RZ}WFF*UPF 6Y[N[h!HQ]`40=8qag(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEWI-&K2Y`v7]/[Ž%:H${RQ\ݛ@Ԗ[ޱ39uL*9bhPLÉ%^3JaWxS4Q%3' 7j|0XvGTz(⶿E$PQaN{zU-Lry+yf$r;qoMK}DH;u+5Ϸ$DfT,HݜP4dOւ>d1P\c:=jd޶x "D(<ŕEBIRI,8瞹SM-w7jʴ-$:g"5-Xec>f=!Q5Ԣ7̄zd1Ҫd I[ʬY%t4--aҞ3#%r 1gUKQ9lbùqcXỊ'd]Ci%7`ҺeRe~Rz{* $ca8y M6,jq1c}j=B;dӌ~qaYX«Z7XYYyKs]f۵ێR9J6 87t KZ ׭o +ͺXr@ }ǩ,٭6p'*1J̷KXcBsP GJ9^Jo'[RiW䁏Jw6VHZOݲ1 ۧnjQ[KfcIÜsqIxesK|8W\+tߍttx2&ЭCԮ Ifx= tYk{`r 2*']TjA|ⴵ_jcE C;*3nnqCJKMr(dQEQEMkp "ݴ+Eo8K?.F +$9s湺PJ#9.7ޕwdY\e*Xw^J|A 諧=ML[A>5iW1O R?4 +V ,<1UrqT6fvҥIJ?ӎpRJ +n0Cv3=r4۹"mg\6ݤg_J@xS^@<cQ$6yv ^sNmМb읗m [ZB+H!_#9?s\{{owc^IVT +:ͭx1{*t$ / }DgVv;s?ZIwiw_5Pr xXXy,Ol##C=զ{r#, p2H]дͥc&FUu=cޣ`jwq)VU|c<;^FіPt`,2@lIڢbx&TVV "mFMڜGi@Ls\ll ![MB`qmښf5Y\hHƥTd{ +m4f{[\bmC8u熾ӤXOY[glOx9'<ҹQZZFshV57_nLQE +( +( +( +UBLU 0?Jǭ\ $oʱcb曶i$T _-2I\^G*}M@(HǡZ}PLfy sBdMQ%vG˙_n.?1܁ʆ߻P\ZR.ٚ2@=i41Kׂ" z괶4?un'Y۸m!O1/Ǒ?tēFݸsp :z/ M5^HPyw8 c8un uHnm=s 7鎙+9odz4$xuwq$ rx<{-[iP:Ip?µ1Bw7$sգxmmqk*rIFV.chyƏ\+ A9>ZCo4b|y#v}JIBmݐ k{QM.9ฒȀ +cb g\9]&v[fGVV"I|#+MT^ӧi67Ǘ$`2#>Z ՅW&f.-J'#x}3Ku >(yV4S+*`wĖF\w)8vqla/~\dgLblW?+-_"BPυ +tMMDȋIR6sW"]iPt5c*QW: >@I,.3bc2@TX/|8jvz*$d3`9u-RXd^@wb3ˌit}Zݟ-g8$c@-~H-!2n s[l$ cgpK0Kx jNi4&!`cDκȶ2-Kx=֦G-@\F8Aֳ"Q-"|#g5_PkFr>qTkduV9_cwu8=ΛtUu0Vri4h4Ĝr1m?tg=tHʤI2l#$8Wm%ԬKCgX`IFON֦X4Aq*ZIIPJH:4Hk[,M$ +Wi;ҭ\iJlV({&iLHϕ?֨\P`4p0 i63RB(k$[6~jhnfTu@6VͷJ<~DI3#rqζ{M!o*A@I׊Z:jR xj;6Z7qz{OvR@%'$.}I9AnqC4``>^Zҹ66ҩ^]I4V}/3Q6$-4|aNs'ס19]0d}EQuw"t&ZH!%dR +OSYn)BH?L N.8tzZlRq.G+_?/=7㻎kchV Kl#~GӒOܮTȱ$ï3N],.)a4bV?*$,ZtB#ݰ uԱ}B+8.%P}"*$Z9FiEεq-2E`:=sUIfe"ߵv[mG0ƍ303:VWص_J}JłU&rΗ*K[x~D"HHWf-4Š(AEP9RA@s~y'vfrTT7F+:RCNVRBs,-0F0x ]1͒ʖڌK08#[ Jl28=SG.NR%d`aSPHigRo3d{K[OQ '.P KxS[w)E#$Epvta\ٴ-+{{fy_ǃ=緷[n':_ns!#\|[JJ[~ +-r `)<;\1}5k3Ol>$v0G=~=ng39-m +RJoD;p3u,\nxXֱ)&8SB@(f#^kQEQEQETA$o&qi]mqoǒzsXe&a1P{VuRkSRPQL$ ?P=?PT}[0|K"ۘLx#Qw\T`b&UܴqdjҤ&sn$yKa]zի}BkؖGHާh} k5.g6耩\r'mιۗspG~;UGoIrgX 8S[Od6b,HC3o[KkgGup'NPKN;}{=JKRFq|8ѫ4_JGF(@w{˽*[K{D.cEylq򑍧zѰ?jJsGKq0R@8?N8o>uian JfzYTo#nXTc$1TlP\HaIEU)̩MUmiКLY1#:y S0کhr:MB0.n߸zϧjXEU.EjO#əq^}*w%Xo'4f1rGq4>m.䐤&# m)%͢+CHKBnj˯ԟOlt˛)ey.9,y#װKw~׺uY} +2SSWnY/.|\ǻ~х83ޭiso@eB aI#0V#P.`e>Br 3 s:QYV"v +[ d6pڬi,!KeGw19=mvY=â)c$anX` <*Z5L6:ѵip# ([fծ v$:[E,g`?5B t{-/hδ !y")'O@p/.q?ؤI&C7t㊷k\]@\̖ 8,hiۥKYɨ,s)g@<T-5:j9J-EʀLSyQݹUoƨ{Wy l`0G9$~Z]sI#e x?1 m.*NR-~ݑ4ܧ(jM°EaV%B*_jGfPc݃mǽo}j6x7r22quVuOJ#эc]Bᣑ !IjQC.Io1mo1}T?&ŗ9㧧X^\kFOWLk)?1zB4 =/pv)" oP=ڰ.4m'\T3[ZQCLDb%`8f=wzaVW:(QEQEQEQEQEKqs=ܞeM&1G,q5;jwma X(c$\wtP;I,I$zIE(?Z\h͑Y%^UuX5n[{qn*=@uqi!|wq{v[qx\Xr{VFo+Bkm'qhDRn5z f f^MAh90'X6CG7~g(t.s\DB;`g{ʒq9/q]/]Y_s?\,!NUG/QE|@2+XѷrZ#ŢJ,lITŰ=OʏA߽$}Z ?b;zװw]a2\|u)B4O,K1i ۳NhXuy܏GnZJ ŨeMr>:gϡo ՗ +ݸ:#VCH% RxjMlLo06xݟ^:TuƥV︨ekۋx!rrs%%$ڇGRp+!e30HʸTs[bqZags[Yk]B0DЪ>@O8_C[M,[-cp1`Kr j{}^{)̲pjmծ$<(qs~+Vġ$6<- +PrA;`U{;R_%˷$ +=*X'"f;Y,16ɷk`J{#)JIC$F-єYp2 $1P6~u,IsqS++1y{ +Q8芩QEr[5u VҽpY q +ZNҸ`l0;r0}ꁑPr2I?[3\B3`|;XȒ᣶W9 a.tYmo3:|R[mYl)XeأȗU$8Ogs+)B_]lPYGQܫ3~U,M6bK j̣dvU;fs$.IW.^b[^(ˤOp0H5}2+~Zŵޛ%єǷ pϭJaN+>$o`N'=; +4nEKSw犼 nҁpR #p9.bǙ%ͷ#&v{!/K힔=E# OMũ[$0BzpD$FxEYoD'L[y1iB$(?jtwwM%h9EvY7ccg#>w rEnq=ƖjH]1 {e2;tT,gv7{1hvgzt(RW4FrO׮dHm,h'$ch=+WQ)-^ L`Iִ-ູxm-J-f?t2;zVyu qUF; it0$zj3v3xt(‚Z!00szvOH F*C`3;n9}*+?41Tq6A`U"=cKҿ .ƙڭ2GQӏΧ@a-\8Uiar$q֤?E`iH#LC +G̠g`:5 62V;aA8) sh[yD1LWw+noш|fAq~5ի+ 7@A bsL6!vo>D.Y?~¶Ƨ#y 1:gMs +lDžz z:uK>;bs{HK[%gg4M BQI[76MrdRWh'uۥpWwmQ,|cvOo2+(-ڞT;G34/׶ڔ$ú$c\QWK[kHJ)<= +㶊)eqzqx]5PXy$C咧n~tіI6=7_Koa'rNڴ隸Ү,6ڹ8?j-T4ֶW/OS K 񡐸psPWguG2W[ʽGHv/Na lfL&eKE^bGQ1֧kK $0c `ry5^fBB~[~n:)m' `U2sUYY՚po0ATӥ듸M @.,hU%W>bDnY.-io?s$j +eX듌lr=1(i :26BE}s" /.5(#̅P`޽kOoܒgdrg16G\AE~rkN~T f240玟;[fywFpyjw崶%CqU>άZYj-XI +h9 L\[MuIq4x +~TQk:U67+_ rNvGOq" xC1hw_9$)~S֩O}wZ] c092$W0pewqqgU,D2 }kfN.67 +cM`}F9\zjg;̶$̰%t;y4X$ZPOL뚫s._yb{IbY2ǮثW]iʤMxsQi8TRD Ssz,qP}ю1׶;ӹkw]!j o>Isoی)'V2\jbɑA?5GOVQʅr9'Wvrǝ¥m/b%籵\X$KH +Cqc]ϒ_,l'h>j{WXAtUldS# g> 7w\w2OHeݱG.*1c9"c̢09黽sqqt+D @ŎdOJwrb0W;C8ҝw:Hn-%H>ވ.2}N 4uB8#Db@U]+.~n0y[nH|bC.2/3tgMqo"ۭDBNuh+=SHmCM/6L`>Y>@ y +,OZu_*I#p7Ls3?ږSHr V{JXy#S\n4e;rxV9Iߝ+Fl,u#ib]{6 zsҬE,KO=A#An##VN}u%ơ]n+u,NvP9鏐}JҾѧXY.YU [Q@(((((((*HB R uhЋX7L#H5N[|SYc%71q?ТcX $wmȬXHТBW~z\MMLLn7prG=882 Ri-Rdk=2Nr9֟LG_1?2/Pn#+9VAk$e?w(!<{nRv\D `Fʒeܣmw7ӦTKhq<{6RI9˷]MofK{gVj-dr7웬< qTU̱2}+4T0E<ܜ'LmjRO,0,#9ǯB9flP~wZjԣ%^w[dXͼL(' +q+:uF'G `Ogry u[zֱmyQH.cS1sZv9r.cؼPG۳5̡L pm-nQF-e*#-`̰~FODU"_öbE1$b]{і&C _0'?Ȭ +6.+KNTK\3}ʮINJ#cs [,b~֜WWDCr _zu3IܣkR \};f'@%㩦&m4޺[˺os)FLtKr@7Fw:㿵sKeky5RAd7QZ",i3A!댝wn>"4f!kijX pe\Zi2BLjaA%1"%ki/Kȥ1 + +V9ȌsnO8ҋtZ|#䃑wǭJW/{yU!,^$J[3SK{~X͋MTi5?-'tߵW'Kmăz(nЃUcoEB@s4G[ΎȩD\|*vVǖ^sK#7? *̶lμ1<94ևO᫝WcO$ڠpWI9 + s:)مNF*;⸺)XVi%dhkRͫ&m݀_{ȱƌ*O@ ԫS3njy)PVCW$%%5(?FEe +}+-563ZT }3++WkL"@O9QwekY~."4 gvyF8h͈׏P Vxd9S*F?q}GXEs=BHRSvשb"U#'q׵uFM!u6i-hpYa@VN"!FѱF~F$@P,$Ϲi +Nwnwtk {sm7Z.е/DA".7g 3;1jvx 8jM\ISߡʇjv+8u;hLٕ4eC=D7 u-+S.mƁF#zv=Ŵ:($Q`[0k5Ʒvp鲡g\9czGjT}彔:d"wEۂF6:zMΒ%³!\iϨZOar.B9޵ƜSmVA +UAuT9NAռ9ʅI=f#>[o8gP7nOYFuxQ@&֨/fڄ +dQ^w7ʭpsS46'9cURrv~FVd TgJVøxbr@9*|dpSO[;bV!bQ= cqz?iӖ_$2Xui$"]Sqy0:g;휿hifcJΰ3ASqjr=n.#d0ONʵ,% .VaJl}9"FqoVnWk^:K9IvSInF8n*-,%~*̔t8GUKHFSNg8?bمa,1lִ#w 7EHhVfmr3b]Z!Zb O²/"٧<2.֍b|'ڬ}K` v=/I-V8L)l8қ )9m %Rw7<֊(((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP6;۟*[]+Gk{L;L4o+$6+T^+L%b02¡n[idX.6SIJV64MWP;oeFe##9 xHKՕ PV@X\4O@7-#GeʲLLC͌HmATzY-cCmEM,xLQMsEhaQÊ((((((4(ˡ#O4gVdy^٥eFݎC2qvg((q =.vQcs`{wKz€J?:vv2u!dȲfw; 8j̶WH,†jm:lv%( G%q)~2yRf֕6fMhKy%o}<ʳ9nNgc]ۆ2G #X9T\`|F[0<Q)%{Z% _޿R}6X02W%F8=Kox2[fbh*F2 Gnk.ѹ%P)9|O9hD՚Iقyd($rxJ|mkƚ-hsԴV{X$8 +;cS.TV}ǀG'.k'U̅Ljc9Hl"]B9˺0 +cգȏu2\?(x+8)as 7ny)7ۦ%vrA9J2nb>Z"uߵf*򗵃oe7Cc{~?Pq(@2 Mmx{R7Ṛo}:ԩ]fR6f6PzqZ'Iћv 7K"ЄF OnK4 ?nJLn$$*1|; %[LA$9T %cTh16nwr NԒ_yV;=_R=GEamɘ~ [~sӶ1PGEavЏo+.mpyiiG?Wm>pG oA >?_ʋ4#ª\Hl'mKqww܌tUnO ̢961^{WC%ΏRlc2:۞:V&- !3^Ⱊx,bfEhSqj0T =ĚLS9c'$r+K+{[FVFұ,$7#]xvHd3>2 H Uⵁeё!69ǩJf;^Ռ]I6U+3|`Ip:Km#u$}Z -w~bI-ɨ$XHTNcު^usC3v4c~jZ)nKdUྂ9"]Ub8\`|ם׫h0j[|lS@`w=.g`%eKV ք +69EG QEQEf&5x>A%'ʲA V0ȷ$ aSIzޤ-?}ԑ4FșWVo771hֱf33KĊ/-bIbf%%r~N6A]]ipɧ#FYXrwZ[5xʪyf 5 +]8ЇVqOnLc2mB7?ҩYr5 }fѫ0Do1aG^8֟u=oIa<ǾiD6u6e%vg< +z$Jrt`eӭ%R4VFH+=ϥcl$޳dC~Z2aZ_h^f1I0y'W5kNf $y QH}~Fu읬Zصz~/6H@22Ofh07خfY6m z/-9^K6(BK , `` .rj6]Tio$6t)p#TR?Q}-HvUb}ZSLeZkEj](k|c83VnOqavBY~psu^67/m.6>~AzUA +۽X !ab3㝸]Vo-晢دXTo +iM5lˎ]H + =ƳK3Ry-)c~ +[^F&_!#gCqs, V b61*5oDULd人p;e-˘-ܙ @3'#XV!s,dNe <4.YoZn`Xhї,?7׌s>P\TU2+}ݣ^ >aUo,ćKq2yr3A8a)±Hu!HJaUJ_࿫mQ[ QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((RãX e'nI`FK|BO`//@O*9>՟]O2_C"c6oF ugp4R g;qC8-mؤ6vڪNP1'vF{~B|_o/Czb$SQ"n8$8pp*[~4j#][jgU=[oik{](ɀewdCc޼;սSY³6ׂD;|}tgC6j:@ CyC[S ' 'Y[6Op͞)7%䨮\>1̋*% q\Q880($(((((Z}sIXj,kQlG\rsă687F㾧O +4m/I]Uq.FsRNaj7:G+Ȥq'MT. +(((((((?yj,a + /쫣̡\. ~ƴWM6uqvز9 +;cU;XG,Җ +p0pz9MH_UΉGA(E[gh,O;0 ?;9T2}Aciy {i/.֩&&rN{CT w'٦Id3~sc:Tx-OM891ұ'%;cj8DQhy&©=*9.T62vҙv7Q B0$$sI4%%Kw$M`5D[O4 yg<8F2` {V/4E-$1O>Jŷو9^==j#uuwQhB\OHNAuQϲMBSq qѸxu vg)P]³A&$H^*Ε-f~_yWq oZnf@i6e +6Fulb٥Hh_?xtZ@0ISTަΜS{v\A[JKX%Sn1Vgaԣ`ʃ>E5ܱ-eXd%'zִ)Zp3YU )s91Nn-oQ<\GyyrI1'E*[ TMICMrV߼RFNS2>W*N{|MK^Z޽Ho(== qWDԂps:D|Fl.]WT1>mO.IŻv3=)7v]Ȏ<#xWOSmMTuW}Il,OyYDF3f_Z=ZKu®I g+MAdӞƆhXwa.tkJ"2`um*^_#o4Gi|?-wW==)Lɩęd]$)I^cRݶm΍! !ryҪi:MhΧ5nnqB,{+ŠR_-Vf#x8E9u?fh݈2vrIާݻGS{E+g8^9<~wuoj,SK\l# ̭nhx=zhlgm<go-vX|&H>zT_bgKH\;;*>x{(QRKNцx+8b Һso{]oDr˥jb#%*$ۜa^v֓uS2'qh㢎 +#9-Ik#K?!cl^F19<֜ +4[y͔ng8+ҴhyX#J9ZH~Ӧ%wXp \qҥ^:(ח-?r6>xCF|tkRMbKǸVT`zc=7?j8ʡ98*.4 nnQy.Fdj;+R%=[z֞WIO"mۑrNIV|I 7F# 2ijE;Ѯ=z B=[C}\ oqnխlZ{he3Ɛm/##ֺ+V3Tsbc\UjisyR`qݩBQFqm+Hќ42Dsd\s=>]NIi +۷03Z.4Hk0"rsWD;񎼊&xC*nYࠎc+'tzi:\#ϏC"Y߃( Tcz? \Ϣɔ` Oz~p g0Ŧ-뽤@3G=6(Єfh7XW4>a[v8'8=+1-͑4%2;|mEQ(D9鶤KTfVTɓ;p};Q+\USI[}֚lz稑Kn3xT<ɧ6y#+*C0Ӟ*ծâa3G 5~o 4c~Pz{!M-~m.ao%ІE 9\$t\\9"%/<[y!p"VK˝i@"i?!L01߰E ǚ 5#aɤL9~Z2[jMv4s!mg~sqL,Ȋg"Y`xԎ_%1A:I>Cs{V 8 34u U﹊J.iX:1q+ƸRz`v,ZN< $`~PxG$SY3:`rH ɒI'ۍ>_9s$ &ō lS-5R**=^J88w,?8;ɳA\o#M8ӧ5YHdA5ηI`˜@gnyޝ}iR=8(<0((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@vF[EH-n TGiHdWxSǸOId93ӊM\ڍ_f-M3RakqfQ&ב&9Uݝ؂@%:}=՜re̮xn[AlmNRĪR~t)*;| ˯94|(a3Pi=g1HyD-#>lg=mAVKE%)s1-O?եmwaa^\Z ~1O$Gq1VP%+w2-ޙừmBe,O yDI ,nFGzΟ-LrkG*/D!^Ⱥo{bI"( co$sRL޽d:^\irZG7.q㡪gN(QEQEQEQEQEQEQEQEQEQEQEQEQEb7Fme1nNجeu%˦-NȋhG5c1$rlsU;1+IxJL++;pkKP[Ki.]#0H#YzY|q`r3qY劻bE +] [Ab8ߚeڢ-_9{p2JKV9F +?JınicU߂}jVeQ-S]I۩$K#c'~te5rbw|ҫ_߽-[bIw]p:J$88' 8JY X6b_zw-fSg =&b0 Yv]ͷ,p~aG[o[dwU8d}H-^\ݡ|dFV ^\vbCZpZ?TJm,OG!<'٭n +g3` (" T犢\fv [QʂN =2iZиTtWm7]Mۻ-HQjڹ?7^H3Z3\Z%bX?xyf}nldP$ǵl6ɟq#%܎}+6i”u.f[[b2!ֶu w\Hr@`:]kT-!X/9\lB$Lm$@H^y"^: yz=KYWt[{~J+MMx HW"4v-͖/osugk@P13 +=J[L]%ѬԈi,xDI-ԇ2y[#-/}15fʼn8#KmZyl|gnm3Wn +3i7AO?*@ߜVV/·'ԴI3?/ dVWK{w<֦H ْ0E ]*&_ z=$Vr94Zz&VB*U1bJ[{h[GwrARCgs<[[}^hiZU%9)]?̵ ҸRE)!>MM3<.C rp3:=ՒEr.c`lܜzUۛ'[i!b둓V=((O,HŠpޗIepf V*$2C늆|,'!{b%/ +cs+ is[tLl,u.E#/,%S\BʠŒJ?cuK4srҶC8F9汮tZ%oiZFI3R*Ikf+CF>ګ5ka %T |1[M:9t4W+33z}8om=SEQL(((atbZ>TaBBK/X@i;Ng(zpp!skx$j oy'1\"To X_ݲx'9کM*_@eS2+f#Cx#&X• 0'8fڵ\ܻsvncx!ŐAXM-޸*ª͹XW-&f&[Q?j]E'؜Đ+0CLXY+}ƥdnkx܉dr=Y"[ye[2vn30~V\R4A4߳LVi3-+J"!ToCQѫ8]:RieȒBaQ׮Gu^eMgUG}#Է\UH^s唪:ۮc'N:YY=@'5_6V $΃ +xD&guKww?^SE줻Gڈ1#~>O_[p~h`'A8@=k?T{em,73nI$9`MCOaٶ]H6U^=kNK{\VS(weުjY=g!y#>LPON?5 +ȌXgos굽V֧Ў+6@$g;̰tم!)ێ1Gjϕ'̎k9Cɤ։AܓAzj{,wv P6xjڔ15rsFH1YQ6>XuzuJKlI*Jqnb-Vg`/^={t:cNN_Q$cr( +>4?q3;T/N-e}*Y.23,*֯iZ_E/&ܵϝɁ*yu N1qgQi}fq)BٍȎݣ̯4`^Gnվ+F7]D[I+nm:վ__Ұ5K3"o$cn${:9o:+7Y00x"k>%GlF8@xzKO쫍fɭgc& 9*Z{yFt B]*3q>jᡄ@;wp#i==Ye `+Fv9H⦷y++ ;YpAYv86<9I7?.xbx+{Y^ʑāǸ5ղ$"#;b,@ut}3RTO+͚x"YSjJ2 ս )Nx#?vqCsof-Pedk2!u=;ÖӢkemUqc6tjnt.]b忷o N_n ꤀pA]^[_hx@T]cyjY}NI8V޵_NUpƃm=Zz匔ІK e*[1yG­@rJ^fiDr0OOLW^u.X *=GWdrsM%kשm`IYU}ҳ%B̛ٶ99%ܴrGˆcTI34˞Yzt}-}-<@'3P0)5>-Y,\=+-y\TPˁ)=LjP|˦ŋ&>/SRxVlYmzG2'dLD6x~3,.GR,̥qR}MN ++Kw1٥ͺFPxw<ߍ7"-o>QɎ*K[5,$PvHp: žTx;U_$lwרf[7yUJG㊱ ciRg]̻I#?ֺ-;LlRkED9bJ88=qYZe<2m'c#S}tFTg+_[[ç]XY({B^I6SYS;21c\x93D;_ Yq–o*iF\#y{R޻:pWv9,̒=8}g ݝ%NΛv㞣hU Fq#&Bzβ@u>Ylw”^4QMFvEP a-3ci1sqlevPk;LY/neE5mm<潀NG$uRƊrZ":]A4|"{b.#3 W JS5f9"Y4xa*q: Oxa9ʶF2=l&8I R#gVAwo ܡ(\bsԱ-ծU#"]Ҽ9UN^f5P.3޵]Nd:[nmXnӁNj]֌RJ6ZjQ{K˨Y[Py71Hc@!=Wptt[yPd;rnYb2lwK{d}*egATT] +G McW`9<9=zX"4NJ@\}4>TYA|,x=ꕝh})3jpkr1*zSM-5Oۍ"${2wg4[4Y6ź59j-FchV%X18`}sIYZ)ۗ9=Mvʪ/."ɠ0[ 4/Fxɬ 8mƱTymcv/o2r@tE _&beEWhҹ-jW#qNҌZr>IN>][q'\8]ލi#rDSAl|-3; +X#fP&8=TTd +1Iyg$z+E(GN>5UMOH]2ōikOo5i%W̝+oΝa.kkMCPH$9EBx\sz㚷ϋ%2E69)EoօZj;}{o,d{%ɉ`tRB3cpMVkLkG;r|RXcSMiq92 ]ۉˎ!;Hn֣Tt7NNt;3KK. Ʋ bp2(;{cӥG[]u(T(I$rRLcjtMACb;psө5 VkxJcYv~RNN{WOĶ,~rϑQsh]rr޵{ 4[TS,qF6ީFHe2+JP|Uen8y&L*\ta^!Q12+FkuMl}J[;3i )XIy.c&]'qe]n^3sQr<~$D,&%*)XȢ/o`xSK^K[-WkM3g)yk-Q854V6ۺ +U˹ }E\n98թ5SRv6QVr/?\V0͏[ffzgΦqOS\6&Q|f^EuxCyx h]KB)"vJ若1PQ&YGFE$W7Qn>\Qُlҡ{Q_ӧ.[^:L@VVƀ ǧZdZ\s ~%F[9EmG)9KڝNT7Os>O9bie(ۜ>.%I{cX-#젖^s{R샻sKCپHajkbGkIjhYA#tKKxؖer 7~Y+mheFKwޙbyjUwT(Bx744i]M}ayc)c@F:AYϤjK$m`) Osuj}1Ey${՘/k.8b_)RFzrrri9]X4%KS*TY2γDKFdg'j +b%hT2.s {Y0VRmO)6:>ލR)3ɂIGimܽj.24 :`ђG㺋u!"33I6`eʻA69AdSYU"Am#KإU9>]4sBPɈz<9?-&3o  ={lu+9e3+dm" n`'Di#VmjVD@x\Fz9&gS|6Xvz(޺&yYY\&IŸԊXwHa#RۦF䳺(B((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEvLb20pzhEE2(8^OzjAY :Uo, W:w:)Y{Y+QE33WN \ צAn G#,S)^qw\kn=?XYe ##!b ~O֢K;p(¦2u_l,A¹F0|LV|%G%dEJc;ڟ5I}s&I0R)ç= +ii\*DBRKd(4't[Tuw@iIe4XFè8lն@jMgCcyo$ PK)l&O0, [q^if+om# Ce +ON@\v)մukEgD-x jn.đ*"v^c@1wFaއEKq21$NQs EL +( +( +( +( +( +( +( +( +( +( +( +(:EnLAaŶ[E=\:]nT+?Cis!~#yV3ٙ K+V\~2z}?#YsЊrCyцR|a=隦lgU.0$)H8KCj;fAUcr-)!  8vm+z;"]e'.dsϹ: c5QB%$<~3vJĿ{?_sX42rrv;kU&6{_RіC-7L*&kkHdpIֳϕ +qӟַy$L O;dTOCNַ̲feb=#*%X{l`%Q8p~ٚERWpjc$tWʣ{:ҽ̄_jV=z^ԥ0SCzٛk >o$Eh +,yf +.Ѕ Ÿ_V..,:Wi;q֭٭vaYWq֣KS$1 +` +G5%k +`4 a(9>RkfA$WϿ.s;j0!c Ojl0yFIO-蛶:jIi,[;[.Qykij E8YcREWDUL@K-ў٤s]朰Rmu:2Kb;gEe& 2Cn< F:֛ٝ\@Wˎms3B2m%8ֈ=µ9E^ (ZO3#azUVΎ& %;uUl-xኳF +0sqLCZMHcR#-$+'/?b{h v#@9ݼ3ӑ.-`(%w0?_ջ>-# q;!qN+2 ;,i ùCNr= +[79;7lYim ’A: UMFOh"fWoNM.puYڮ_CuqvgpO~jVߩMƧb^X.[VBϔ;;=Vң>Hq?F0#ZM6ɦ{òf?/9+ǯv"OnN}S3SY\K;q|>'(1g뤹*%YH+77c̹91$҅,}B+C6{~iq[bJsߵfߵsi%( c9={[dL7.yWVHoѮ݀q{ +is)SU_Zf`O .Bd=sߥTPhctۀϧHB$~b/zmګtb?ƫFoީ.irZ3Roo5>+>K&@P*˽΢CUO׏RjLT,uӊ߹j;.\9+,`IlE,Ie"X*68ZU/Dd%ɑ01޴lStP:uCby>YJ>%ԜŲ{kG{=?²nDM1zj]O,3`Wh\[VEv'R[U^W~iᴞeR/5^:MB7IqձrX\[]漎6{uUi.q<@ +SТJyՕ_Թ)$`gRӣӵ6NKx8p'$ uZZ͝qyo<~fH;yp? +݆9 +?SQ")﹥nER{x{+KTxibc9F1Ռ&qt'Vυ왵%lȎ(';.95l?k>S[qi iw[d$ ݟ\&:$0Mو9:z\E6/lD#9nV`mEm A=轘 [[tBM;CID-e$eD *2;gƲEkYf+6d|OzCotSZmC>Z# |#~;Z.uIeG9Ш)UkyvЧ,9ݶ2 JHӤMՉ${`{Okvc0U Qzt ppM\}.rUqy)-1+LD LPk.2#1_iY_n~#RI1Uh%aAqWihsVJ#ʺ? #?2 U@e'}GV5X|TLo*@xWBUsz +q>%h/M]2d[-Z]\x򴫸\1WMr lfM3sVmRMwsĹ#v#*1r7Z9[z,u<՝Wal 9?{W/hз<\U\Iu XY$џ,pjh[eyQa2N=Z(lrεNwgsOmvמBv ZZYR)beK|8R=O[jz4dk9YX8 @_ +͈8>;Iu4VE'ZLe=zsOO;EB3>/sב81:%+sŠ((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE_.TVuW-n៥uԌ2\Ƣ 01Ad/&AS͂G Ah83Cճ ҃;rOB=qY_Tz8Zut['/[Vk.asyAwjwZbi1WT03 #2:T+`ߝL zXLCtL{IېOs[J.M{K?KClfܬT܇O?OM;[qp.e m;Nz +fb{u>PpqQzRߠ-&mȖY"] Ic*FnI0m$#ޭ[&RH3cY88&}݂D[;Z;T-lṠ/KI7)ðc9k]/FV7B5̜IO:˅2ns;<ՙY:O&9WmlCʶ7y5K__J-IfY/ckx6'=jK0+"Tcj]W[[ RzjRO<0|ryƯb1W {vϯzfmcb( sU$'FSӵ~ȭ3L[yW33R+ib{ppr?cW$[X]Gq;n=Aq.[L{->hdyK޽A$gfҧ2r18 Y+wP ՉdkiЛx#jqo8AqUs(w9՟2GG:Ct&5 +۴_|dS-neF0 +x,ṋ$jHQ`*]8nI +> +C)zqW"b+I3W4{X*a2r0x{)"1F}FI.!C]܌⭿wS?|_]̌]y:`$9rw +O?JO6}zW10 OC,Tb!`;+6'U#RK>b ԩis{Zt^ܠY@~zc}q,_mvvNp0`UOXэU,$$7Y8޲hUl<{O{F + +[t.vu h50Kn3_Z%ǥTDC˛U +3@dV!p1!pz;/ie2ulwGvp}8/2TvW0F/T۷z櫮mQu8)?*$+VL9Nnj`m '⪈I\VxV1J= +%."FPNyǸ̯Aou,б!IALBIڿ|O{"IªUU +yjzꚳ\#nUK"jfb7nJP{A'iGm8rCc=WiZq{5+_w2AaҲa SkڧJ8D6Gf<|V"]ĎVic:J?Aֵaխ5vՑ⸌y@"\c*v:^)#n%d@1f-&EMGވ@;~BO\NxuML4m9 ӷ9g{7,BqLR\T$%.lI_vK<1@#r9) ݔm$g[mLSS]=bRULlѯ`g }ߝҰmVZ]mwXu?Q(u32ڋ&/K;I&XZPU^5sntaym +AP8gFԥј`{vyF'JU"4]]_O=856)$W%Q%҇X;I9Re-psW#MkP;=GLz~Y_a0A{BnuH-ĺIŒ(zvVż+0l"sOʆP^,QqKD:{ZY] >g|4KMYѶ'G#n85kmԄff](i-II/=x~5wPvYV)] +Frq|ߡQM$e4$K+.Ȩ{u#9Aiu{V{.'m>zqUP*((((((+CD_EaHƋw˜g*G\Z}L(Q@Q@tֈ7UB<4ݹ8Ԟc״ 5T$vxu!m;yWlݰ5 fk%^2q'w8W'0׎LA#8𨾇Zw~w2hcD$S=ZlQyH6ҡ!~Q}j;V@4O+d id$؄[84*V$T4QW!e89cʛm +|pS7cR`ٱҩpdvWc +FMXV%n%:E5">c 0Qp?:\IX@ Yޗv8``uZb<6GnS1yE^O +ubu%t+yl\%}awXKΘ?wPݭue[PDo1*:szjmq*6O +cӟRyosCJ*NC9qT;\ecuX?0'õkD-Fmʒ֋(R;KnD!c62H翯[|_5Ҡ# ͜z`c]>iFNI'6-[9%L`l{{)FP>,@>؈P)*gY-v)G?d= Ԅ}yqb[Y't{c=2à*"ubcW]Fzr[47&0 72z[UҎc70}cly&* kiamP;2 +!*|*NZJV.%%iuӱIo \o@`71C((VF3[JTzMnr|;r);2NKdf-bP2^`[HXyu#zYז_JP;I`9o^vájE٤}ҟi2"H@ːZ-ui֏Pd9%xթ'攒H\Ĥp=:{ +1x9#%8<ҖSK;ԸV d ;]JR~=N9`9$CA>^]"?=ۭLh9l{ԉ|.,'ԋ$ W3ΝrIWuzƓjE7۩=BO +) w$vG}m=Kt+HW nwW^k333y$*s^V(yC,rma=ɦ2g_CJԆ<$~[&\zv7^ 5X lK nn civF˺+wV~LrqzL+k%"3;rHMGrdor)x }s ##EIٰicI&a! uϦ{WI[O!ܢ!A}7Oн6RE @$/~Hp_K+, ܀ۆܭOݫؐw$$s<5ivPe8/zGlŷ0p0H  4sRo6=5YIg-$ڟMixFpҕ- ӊnFx77\!+laұ=#n[r7* qD*2ںSq4p@nQVjg +/}kem{F$7KtL~^bS+{P\WIM^PCsc9=:TZ^Ij+9F gǸ5 72YQL6OUKqf9d5ͬqޥf!0092ؓ+*k=$9kusǷu.7,dDU\@5M͐PF!n8T$9)o#xaim _o:m|OU6ԓ { +uqFZO,rX泔sE%d^ܴyS8 + : 5H>qF`,F1\ı̉2FR;zZXI)_]~XMvC"ݧ!xx`xCgVM̪圏T$UYՆцsކsta}榣i662"P:x㞕WL{fB<|[j%%v͹w(c5:?!6 pH8KRbΪp{-]YF$\l0IA\)JLU$wmBmXjX>u,>!M֙e .Fls^\Y3_$SB,q]΍#G?s79 ; +F0s]匚mso%W#j8-.VX +gq#`nf#,IޅmWIǧr?h%%Rr~*91'/yO3ۮ*xZiXudjr[qEWAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP!(b +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +pV*X)* ]w.cxn<_oJMR.Vr4UCJI?|:ryjEP (((((((((((((((((((((((֠cvVlpV-Ѽ[|lny9㷽b]Ii# tA"` 6L~:"^ϕ=Yo;8$C:S~]\|bs`r8G%E 2 U߳,s[$ EHIOT}Eb复|wr<@3gfwDF=O==7D "wpFxKn-T \`0~zYt%M;v* 4Evbr=3~+ AmK{vT##˽qd@Y0 \~M9YZOkv^7F =#O+Qw$2cn۴_+|2bM=䐈eU@dlvE(8hڷZSaX7[c-i,^i˘p;Gdy,y?S֬Gi+I G\C*;*ovH,F{O/,0H\).&{ '{EnXer%c%-:,ʒs4% ,wW[A15vV%.DۦWvӧz},kb>jvkkf0cA{{w]W3SoouicFd6p8ѨWRYky";VYA٘$"BdF14m 1D,JpK!'ޓqz֦t΂hr1A6L<~]?ZՅ%>Z +d/a}jȺ8t2iZ\,z"Ԕ$Ԙ@-գurȬL՜W-rp7wdMW*rI?3iHXבjS泏2KvW[2[ <oA08.a.M&L*>afn'O,~1f8?JmF0Jw}y G#]KIOz# h݃{םD!rUu$T;NϾ{-# Mo-E< [r9PyiVHdR2pv2ӥVH j*8⣸ەſUʞ?*F*vW_֣2_ +ǵi?ɻ0D FqsjtK3x<{CJw!OqD<_r3{L k>k / .:ϭPK#)O?XKkIFHǭC:feXV FRΪy隥yy,mu. >?:ћ{)D@` i)oc,$2.z)#ZqQ,DI7Vɯ@i]'P%vi"\r=klSiIJOʈs:cPOK} +qIUSkϥuʤ&@289=}ꖻعu=9$(.チ{5rnIcecߒ+kKՀeӉ41^zqڒӮl%[ɐ;@yR΢UR=O'E1c3W4U;q1 gCW]ɸ U^Ζ(nĻi9#~uV#Pef, gJ&q4L8l~J\]^I +ۧ lA-~Ν:q%%_tm$6r giG\{Sdq\,/q>ldɂIpY9#͎f8Y +zUwheBynʹ)瞜)lhg}}[.i>sa5 *Z uaIkc E“ׯZ~csd]@3 p O[7 jSE.YU xݎzsJ\%јM- ( zVZjV+!]L!8#=[U]6B Jrz~UC4QRKK=Eڤ/ Z@tMZ]Q[[.U$݀$uV4i"/$Nep>?.q-\iqZHn0HJOJ0tmnKLH|3FAw.nR}RQ:s:*}v%>&;:c5w1ȷL0q3JL4b-w##V\F[nPt}gmEJJooubyv,+!5t岕%WWu϶j+[{ׅZ4&#}KiMq梀@8^y/je"򭇓#n۞+cc.>C#.0y?$EܾiδK崜\EP.ݧ,1r~OZ26/`XizLUx.ڹCaĎXZMic-f2>V0y1[cKkILZ8_xXqVmR:!w@zo20 u;>?Ve/u~v3Č#C,g*W%u_߲(=;pZ/#ѭb(c!vϧz[&'+pOVܒqdH#ungxO8gw0Zl(HQEQEQEQEQETJ̠zdtPE{\X+Fv ߘDAN-W;E Š*kY0\FcJ!(yrdgE9UG?Ү\imZT1t;V43Io*uGj܎;i?9=z~UwGvӔ9%eu6Jp`eUl砩l'%jʬSbOUKC) 4[ ٴ mLL7!fn/j䔗_}?-&$cƢ4pU⸅Io2=+BpOH,PO-rLbNnkTTO_Ѝ4cVŻXw>Ւ (R2i&udf_,2$5K-;аG^x8[tv z/\Bp|L.0s5cw'׽QQRd,T JuK}2|~Fqu칢t7%ߚcQ*11ʩ΋=vy$?[u + +;un1D*e9zwv#h9;d0@}=P%YٖU 8};tuY.%IQW cFo%ʤh3Z48*tW4;ܚt +.d +/=Tvr%Z.6=21R,^۴2Hd~T@0Nw=Gjkk2'g%:n˻rk[[{i#@w^ުA\Qm +|/qu#9pSd8;վAsIY{r7e[vFȾCV2xϾ}g."O$Mjr"#<= ݣ,l9RIغөR&ѯ>Ũ Q1$s{,5&i̪ۼ'JŻʾLwCWa, sqӿã8ӽ)=>kI HY<IǵjϨ>m8yE+΃:g8$CmfHtlVweHݵI]Jswpw|&-dX-߀㧩ƲynC?ZtuKHv3yqޘL_1&$uuUr9)44צ#y`'?-mn?íU꬛#9zNI]sbݏVy +{i-PAZ/oB3;B{SªAdS+T8#ڪ"+ev/n*IBJKfYX4!c\AqdO0%72@-q..fg U+IYB,zʼdgWiV +Wn_1~Vr}=(]Q56Gu]Iʯ})dr x!TlKؐ"9;!ESRg(S|fv@n=ge@nNO-V8*yPn,vFud앭7I<12 ޹=}?Zv"iq&1y~ΫfϯNaA +ocUta0*7E-9);M+X[Y^G!Trm~`m&<ڛMmPK5^X #Dٗ:U4KXH$W;A*%%vrׄQoz +&HlWw*q ۘۻXBX~U Iajp_ѵ̙1=; jx'#C##$iܶK$K&쿗ʌsCIj5RU/I+[nנ66.cH&쑁SUڍ8u<S#*qZN20s4kST袊>p((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP]hΕ +GcoyoJ .n", d9~(Nxmǐ<>dpy5n-a,$ƹxe[FQ$sM@j s4rCe51\v-#sIoqԅ-3}OjVƞӝ?r&9ZI@Wf\w&᪺J3aiD+.U98Z e + x'Je|LlDGrINRIoP29uFq3w2]\rr99?Gs,1Rd=6{ 8w;v2zam($#C G︤*n)rz_LW9HsLnaWVl|?ZH' ʮO9qS.0!@ץ5dLUU$^}pvH% 8;xzF|h%W + QInL/Kl|Э7r9lj'nev.&4 1 緿Җ-N8#;\ˌqZ-YǧZ`\A.J=kOvױVTԖw,>|2RP? BHZ[ŒG22JkY˙/IE}ԭ)';G<wwm# +.@\֣]?a !λq 逗vUJǧ9KEFZV[3cy3ZQql1" +Hcrzv+D_8HՔ;~Dˆ8Th=վ/SvIE1L8$a}sj+cKpC:Ǖ=H:6 ˯-dpP>kSu#&/m@ndޕN t^ƭ85lcAMz6p9犨¥j/ɠ9bAE'U{m3"T*O@H=ji=qir,l'󚛥I^BrӓY-MYY^F=C,arʹ;j+>C%3U(빜r:^v:0xy1tZ{y.[]-]>s jNth{?k9ۅ%RÚym](  =[Ԕ3E<瓌w,gNpqWIq"|wyj$&b".x|>ߝOnM"Lv`H֟<3 "I9cTKfoFd;}JbQqvw<)buAU2i2<ޣkwINpHvg3_i߭5VUt. &Ğ{2]e~e zuIϟ݅> Moe]9Za=s*KqҨ7VK2d~3S, +KHvcr ENU[?PS/L9V6*FEo8'#=>Rc!ǠV"\ L3ө' +7gz/;O_nhM3Jk j=WHʾjuЏzomo,ǖgPezu7y{bVxG,WWۭ] J- dW#%?E\,3ZjGdSX*X<ݬcGU{R7׹'ޙq4:Aks]\ (ݍAC&OV$N>Է^]׹ AS<[ #]FlV3Qu_"d۸y^`y 󌏒9-t3FiR|ۥ]iZ""#pr@d 4pZ ~c +ʱyyMb<L`T:e^Noԥ>bߣL> 9⹍kBx{kT R9CVr J8#o̓B/euĝ89Z"B5c%e*f<$'5w̖,e9ǧ\Tˠ^V^iH ݜҎ p  Ct?vwŻ$Nz ա[:UR:sV[3MTQE|QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((#E*HN:Z!-ÙLy`9 V= ;3N]:Yܭ2.@ܧ9#Nw(c׌f;b() s*=I.;mD$9n&u!5!g[Ymnߵwn0\cAUV(Mrn'qU{ж-as短RQ+Eo-hLqw߻#Sk3X_T[$@fbOm]..NT!]BXiD76BF8_j$QRIsFQ_חHnHgHԖ{ i18^6mIKU`N=GWe~1֐$ RAb'5xb I-YL`xR"th qӜ: Ģ*P(((((((U,T:֞&2G7m+E{Q-/oQ7KNM,4v쌍5>hNeV*x8%^Kd1b͘<[yawuX" ぀GCUmwmwpI'9*ijHµӦiF27uFH,B$0#4R{rpxk.!a&cU$~+ +4\IbYsQiT[f5w.HAlu5I%g122t]>Iu|# +{ri"̑XCz1c9 3S-(=E!r7uF7$q+JY# w8gcw~h\2忑uI +ʲG~k]Z3u&In]QIWܓϿ4o9|'*{eY'`r8 *윜i:kDmp)3UCx\7jGR bkbqR[]`Ltq){K)?vIW96!F1T[*e9ӂ΁cd^HY@^5ݜŽV؊ts?;5)3֯Nm!8՘؁ +T]yq-lo?\zG?3*8eB +3v抰[B Vc\:UY$.qx_aZQ:t~oUP$rCנRrʂZZ7o\<1!00qD<xds=~9|HR2 $1'h~#jRmKi!sPwؤ+2=6~V[C. lH$CVۿ_0_ݜ~JΊVWݭeZ6oDGA$y*-.l<Q@$sӓZqFB;rzr~%,p#p:{RwJD9gQ1ʋ"0Ug` یrkzMI#?9U^vϯJu?v 9xz\ᯆ|>_c]$:'<KyN$X7[K7cnӓR6}B7k" n;PlL9_E85)?z_>Ŏ('#8Xe.%X`'|j6Wܫ"!*Q{Q +Þ*nAcC|<$ Lckc ϱC,K WƢU +bBIED#Pwdwryޓw5J5kwțrHg6.Xێ?ZXmї Fc8p9\5 [i!@dT ug{`.yM+CDs4җU餰ܲ(DxXzzsX3xCzҵ>2Gʘ=aiiV30QAJqI=u}jʞMԐ1Q[ ͖4eiHsf1s!>je{cKZW4{ʖ1 x'Ub'ӯ-f0C=fhiغ3Q)Ф&•O9ch(Pv8?ҭϘ|aXT)o0 >2H +NE*V_qY١ķL9P?zqN GiL٥Vpwc$뤆RYcubs5~Sd];/apj͖tqƱ@F F*&]ßn*qqayj[r"y-J[LICB3⡹ͅ 0<:*ܠv`8[£Lfw.O^;[ٝQG|9V\ݷ4[O^5Um268kO q#i=*|Ɗ[U98{V񚵏.ڄ/6s;֌7:vpP92q֬rDat/4\lg8J2Hn|/{Hv&H +pF{:tZ6o"qBǂA={^[=yL0 +q{ӭgxyqtJjw,$iRZ/]i09'Y%0*Œu>XlWyc`DPr8jkk錑闐F$pXxTed 7<)C6qUc}wv Cө||,Xz5idgms:mϿYFH[wФjCc;=:WE 6]8OZ-m2rNj[OW]K{l/.|Gq}x|Gm5ve*,O>xxX<+Ɓz{VwK0*2)9 q۷c}ĭeCKA*/CWE[%I@ǹk{BWUե j4ƊEYG{s9?:NЫ?hzߦʀ4yH)Ki;9kYi!Em*70jɿ][ܒ@]:UMk"»;yM멌I}ץ3a԰iye{UG-WߓT<7|vS޳ O@"g<~=Vź3UڻrO3q^nyQ 鰳laAJB8#q\[Xy $[2RH$uȤd\ǖpMM:/^#.ԐxpoQkciVtU.o <WZɕp<ٴ:m]+vk+((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@hio2\wg҂Ur)5t]9Kz6Zc,'=;VD8ɽqpzB]仗;UUW[ULF 3A Jw:QiCu +ro_i-oṲe1 da)cQfDDeVXFcls(׵_"9\ިRkpjvrS=n7=>lp?aZYҬ([Xea1$Rh/4,q=uUB0pk=>{TD2_b1vQZJNb, +}O + QEgQEQEQEQEQEQExpYi8q=)Y UpOn^}F'환GRh}ΊZSvz +ɞ}K y\9ϻ};Vg(ҊM[PuiK 9L'5+:Ħ?as6m0at$n;u,׊0 wnH=4kߺ^5LЬJDn8''ޠəftE@H#ik58aYo\ +ifl|VyiOBϱ#jg%w͖[ ܹ㜜~UhBw{^8\qçAZ#էMݰok3TkĒ#r?_o= 9'!`{Ϋ[@DG^QX`4,(@[qqZ8>4;Ic=±7Uaa)s 1Y<Ǵ4xRw["I ̥#m?Z-=ZyI]oThOC0.QuҪpI{JdP}zUD'2}t*;PE8.jn Oo8JN]i~v|b'p{pja|eEuav۹gZD +gjޞ"B4ϴ.=3R⺛SNwIzkȳ$9i2D #zv-Ć4ϐzl9p~S ']qsfc+hZ;0c{=Q21I:"+q-Qaӭ"4\ dS%`zH~SqUvG3rN2G}nݽ;~E$f@XAHd8 o#IndI+oྣ)\<  `N}ivrF6~WTXv*ҭv\G OT#4ߵd&~w?6d7I6sTvu|$lcGO č83p8sjZ2yR%vڿ9u_ZѬ+2m{mgz}8 rϧm|.`N1ߊlaY(8[Vw^|(Fzuc8ը*Yi>FrP\ GzUfȾ;d%-;IO9>#;yiIy| F2:StBda[)wVnaF.|bF׏Wt.;`,Pl @f8$Xh0+;xnF݌<lODKDa$@Q6dJ._/t'ɻx +^5pޛef)}3#q6Pœ5B'42`x;I_sߚnWDƊܒ0.g;HI A6Zq,7,h c=jX"7@*{clkuk&nFx=OUV|UͧK%7V mQ$Zum E(in#ZE$QdW!P9bfD2M[s5dۭt7g{<2 U6S +Xa cB;r1Q|W LhoԣVV{ge"Iw  aFKqT͝JM0 iO*(.-ܡe~LTFlh6a2:wUF=j[-Ib,nsڥj58Kfkjw36-6$AEk zwLism%.$dwڻ"94C=pso[$R2F>oߝkm Pn+[iڀIf #j=SNͷG+9^UiE(s%'3oʪMnZP+=M;Zh6qoypaڤFe?b̅#f*>[1@r^z!G[kB$+9mC|y-_MP P9Xl`^4d1Xbm+M˸1VoSJ\W-_;fK]=8.R$A'LXJQ_ ).qip`d *ٳъ"Ek~7eX#h#!I;9bkDum.7SQm%,=rj;{虷3w52kڝXS'V܁qoǚώHfflR3W:\K2X@ITm/㎵qz֩%ЏJ-vXӎ+_/.d'xoOjwm9~DS UXK@q*Yz8ևaӯ&^3^5څvcko=#?R8#j^ mă-s9C.!F2J =.5!Sz-"{8L|-$Dc'=a@+sq'ǗGJް#u9WEa zUoŎ% +J$֜cZ҄ -971?7SG$%YO8zVBi%U>ctKiTH$d>J.:R.>~ai'/$ +'ZB+wUx, YVG;^ Rv=hGD?HpsΩtgEE{t_R4i:8U!d 95A=ijI);ӯ`$1,$Am4@,s pjnmNr[=Bi)ϗ}TĞ8y(Q>H$V!ҵdTeb3kw7!y;/I>\t&ʵN:踷3YIWa\Kӹϯk.-94]X)B8~g4Ϧf+Jܓ؀ub]Ɨ1)B:#҉%F唭}sBv%c^gLTq9i! L/ϡ=]Et.X6[*Ē͓듑TDY${]Urn98 \C y[3..>hq}`nqVͭTџ5n}b]XKel#*2:eHeX8,\WMNn)=33-%>|7)o%aYR>\y|h/2Bj{;geUeM2{R*Ӄwwo~0jwI&`f$@0ϧt@%vΠsیGE8agS30 s9sV-cۢ+]R+c +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEUbQ%ڠZ-r9Gv5^5{scx;)SW"0rGj72Aœ]>vZ1ٲN3}uiJʡgK}ѵ@JY0~ca $[y? +p:?*mo,`Z:gN TƎmk*<[b9W Wv8XcoGۙ!Hs֨omp6+r7!dqBUZm (pA4YpuaԷu  Iduu= MK=z~r6RN| S\E5;qZ3c,mHdU,8?JQʱeR6߷~7lD+sSK/-Ѧ6~(Ts 8F!yKZ}{w}3o/pʎ9{tqp.X7L*SkCJ_[io&גfdUUQG,z +YՒ[ |įO;jLfJ.N7hpT$qeff[1EU)GE.c]I>DCtыR95j顆ʌ➨BoEed7MyrFdPq +& ?jyʒ"1t=2gP"`irݚ*ve{ beˌ*ԒCBT3"1eVnaAn p;N)tZ8?m&E2{sQy- dp܃Y>ӂ' +\t3tp}D +[b'+r +njKz~wiyE9Ӟ=3F&Wz0#D208UVdގwrw,iC>Zib\J0č:!\Ȝ8Ԍ3lf X$) NOnOԆ'}~ؒbgLX(N}R#3}{<dݏ1n"?/pXprsrk ڥ5.k-m2)aKV C(z50Ū(ܯrOJYX}=8F+2f o@89J|*rOO#K~۰J1 +\Y",^@9+d>%S$98;EIjM*)Iٵo6Fi.wP&ҟ1yjr U}iHVYfߵ\)c;vNqu5~K6UY`?{R.zUYc+G$@xc3Y暊Vw_I|2vykmHxx8T932ąFNE*k˜s׸5C.m-DUn|㚊cD=(hjְ[J`x!VaĀʧs'O>$IUgf%wу«,E2; Vynf mW4٪ “+9߭ +@˹nX^8GlϓUˍBC7{AVmJGg(Zc:kI`oU9-b )F*wgpbcXAX=FhH7TmQ5k@dk{&ieYTWm?^tި1pcJ[h@R$p䞕4qK2OҔTy~$x2_QW$[NvP8ZŴ&2bf[~W +D+yNVZjXYKVX̘#9֫ql Uy;O~rawr1TѤd$QW'$nApa…Y=3j_;D~|pN29瞢\Fl +IR1_"[tZB=Uv4afDd@=iί4B%) _Xp F0 ,s<ִ/Z@ۉz(ݓ8*ꌨԏ-^'S$>Uzt'q*Օ1r{S ^lbmv<♪K9!e`BSQkgrs]444Sv,͌瞟oE۰,YP981\$=pO ޻rIc皫Fzݦ.Лwne(HO֭v7p9=IAE(2wF8{yJ!ʜKaq7gsF6vy-ܒD؍¼G{LGuđہ޷n-Yn{lF^;~L,Vi2p}{TT犺] *AcqP.'ጁڣNTZ] px}kpmmBcYM׎j\yt7U\5kof-hgk;\ɩOK(7>e-"ZaۀSJ S((< TéG,lFc uUvLz7nZ K|KO'+V픘d ذ=-NǦvmB(tn:g#e0OqjnJjNogoȂEH7ӓ"tBT \@a=A$y}=8 -D#yM++̍F6qҧdrш8##k +b3zlUfASOUO]Z,m~e2ǷY:xc -[7dK^8)x _%s˾qO…'hLF$u-#2Usު=Mz[0AfNsTY+vtrp29* +oܚb*ZEgnx)j>"ϵKuc +3/B5 K~22 (V2I -利~P'v#)ˌ*04b[N14GR8"]r2Imʊ^_="Hչb*ƱƓzZ v.En+_5Hrq۞vdoVׯG[^qXc+9Özc ;"ʜ4KEܖ֫(ir3cq9|:[[X丝>Ԭȃ +1OQRKC;KsA0rn +,d|ӽJ;_)*\ݸB$ln +TJkXYc$x!hZH_*w6>9'5~diEUr +G?Wi2(8ȫDb76r/ޕow"I-#=yɫWfH/E#4A)--7osF*In7Cn&ٞ3ӞD}CŽ6UGO_+opFr?U՘)IӆŸGm2OU?1.yQUOi"@ ݵ:uJ[-K\5'بVwIu9l-c{7? n:ỏ@$ڪy<~根嵼rYK$qҳ_PjB"f|#`!Yr8

      :|Orr?E,.Ga҄ TNb︔1+>nIm$GKVb{Ė+a*[GC01~1J"$|Q}E({I ACˋsUݕ@L9>jq!+ +s֓sHZFӍߺr{f b@?!t u{ 0>ϴ<6bLJ ԦƲNvZH83۳beO+E2FgkױW69o_o֯Ds.i˕B42;NY9,sٙ$+pFqPž$їHYN5yW'A<$<,| dq֤dPA;wH<}G53v>b{qg,kgwN1ɝ^4>X1 OZсdo$*'ڨ/pIK3ZP\=[22`sT{~ws[hHۃt^;n[KCOBT)b +1cVWm]b~u8YVv9 8+bKJ5:O̻ c'@])W{^^88篥O6tԝ*sYH.G3< +cjJqbkni-}4/Y)=1zvwo{sFLcܠn|Oz+6nefXX$A+FsDYZ,Dc(QܲxSNhwVVF+o$[!ȳK=d0#qpxIi~Ͻ۲9/&ͥq|6V{yyO]VcͪXOy'RIOozL1L%ûr8>՝DKo n;Oh&y#[x׊eo˸dDs}/m&[ǩ!)eQ O?@j:״Qeeku mX2Jzfv0iyi]}C6*hź6Ij$p uj+)ԙYA?@Z\ޣXçv$0x-!ƻ A{zL{RϻSEzjun"d X{r=jmvKw'OI)y}4KK'1Oe%=?(o" +<č{tF{r<#UP);͂6HYt#*r0}4}Ȯ5 xɎ 00+WCO#Iwi1z MF &[19^SoE6c +N@8h愹Y{k(mbkP襛+:_-IKC5kDUvҹ<ӴآQՌr>< ~4$ T$ .tYdU}e%$!G]H:zwPЀ&r@ +og'v<9 +RK:o|+` f|āXAt5<}ɘ-V1t)u `g,(9'\Ь(άۓY&*eܨ 18J؃M.YR;lA#;/4lM=>hp$qZdnޤ.s4B@܀9zc=&BݭǙ鏙`(_J(i$w`=I׊M[gMx3bgv*KRKO(Xy=ZMo;b8'x}jP;'"i!ɨ^o59[Wmv[ӹnVm clZkn8-@Z&~~`3սBA).n9yRCeO?ḯʿ0YTq==)O(r.O= ZE sJf,1t:yfBY&{6o"[ *9e`+E1xCS@.#[]Qb ff9,rjؚ;;{F&6Y~ 9'~(%TN)XUKY]@H{Zq P["d1#`Gg$@2C>ct&eaG"#.'E-ӍRY&IrY;JK3Wd2Hbg +9=3ܚ"[C б/pWNP9Ka`v@ {Yd'>.IūY_CWEyE4kf#'2 +VpAZO,ʛe¶@qק=g$72˔BpOҚ3\#}0B?w'^CRcI5nk& {*)@+J;ٵ8""?>02r?(’54?Tsr-zg㧥eGlZxI]"@#p:vEc˨[F讯*Fb#G#ZW76WZ HG#E8(-. ˊ:)<00ݻ]_3ȍFgrq^2* "H!.VY%tNz! 0PtnxRJY:sح"}Ȧ0:gSFqw #F<|T:*!Y38:⥊xIJF&}|R-V :ũ.G(]CKo0;\b8{UVVvv~m2`{zGK9Pd'ßZ{"ddٞ"3qe :|sf`qx׿ M1tϸ-:il34j+F֎Z>#eesOάih$FqǪX4rݵc8 aj%HQ#/+ 1Qeդu|6!$ԯ݅ؑ`Dl矛Ny^A|6V(?N89+'mEH-o6$(c`0=h37!wD'~?WzͽȒɴ a~}ri+ZV2\,6;NLWgCv,IաkftƸ7\b<ӧ5J;bX.%K mp:/B0lmc>zK8 o`XȅV)c0<3omapvX+t \1%fkpZAqoT]9#4䲆n YDɸ{L'"*;<γ7WSR>ZGi P p>Pɪ\X%~SLͦ]Mv}h8­uGQ1ӚR*1?Jmn"|aaK(sB4ӻhe{y&$lN3Eh[ 닔a6C$Xi>j" :kl<; sUh4w⼚n$9=ڶJNk%|ۻڹt +U>:nS"58W'<&y6DžGQTswh“vSn[=X7) +R qW$ҿ-E7|0 msẐy-Ybm 4nT$^Dv-Wn׌~?-xc1Rq8޵tˆbR0.ѻ{d59>d\+`~H/ϷO}]_Go3ecoAKq`j$ٙf .#YIH)8`Њ +U ?c +oO=Fj8p;tڛWRy8q FTQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!4 QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPS}_~nO "o)?yAsOjޫB%H".Nb; + # cQdDl8ۜfxf,$yzkZ@Bҗ?;y6&"sxZqNȵ#eʜrH$m^39KIR'n:yjwgRjj)/+Qdc'#_%vdQ;]ǑznpqTst#[ ?*dv'9(7m]wJ6O g/vo1գov2_k4k,I\0cOT r栞^ +xGxW.X6;#ދ; Nsv^A#Zp_od8=*InmV'U?+g dS^DKMITxH#-{ Jb +_ ҫ:l=jMl@!OAץ6VԞ)%(7# g c##Vgվ<baס~qxNؔ|0xf|¤MЪ8Z1!NXSVm^L pizR^l$85)ٚTBקIl@lH&Rq-B]qvE٣))קAզa*I']0")q]!˵̕P9ܾ٥h&yUI#1S?Jc&R /Nȫ Y_lRpCLWM$@R25|6I3xR:d6NA9PKOٖy[/lMݢ3$n zubNI-fᏔ%<@U&2;=_MIt1o.TAxh㓤waxȹkU cdJmnLTI|q5T*/ncK9^ߥU4FH2ҝtW4Vsd._qzϞImoU[IF݅R+};$t4$5'kk>=5 +y|91ަgdV0_z,uy"5{#39J̹W+d8 T7hrܣJ~E[t|Y'I2W+ߎ5,H2?2D .ܑuאDnENJ +_ϳb1b@H!wWI|eDa&uqY"@p@qsV|Sn#_rfq3< ݼpy#wxz*  +ʣv8֦[4./SjFiq eysHE֨\AZ鶷YIj BXuǵXmu]`hvq𓒼g=khdHąpXO0-Qeߴ?;%bm6 uGSRvÓ]erM5hi݀Bzfv*H %=A0}q֤ZI#vbQҔa\HKƖ-rb1"dn2+퍗n* ē zHufݯh7mmE,Pҥ+xmݘ~F"o@CĞi.a߯J}lDR|黢]܆(X\.x֩cFsFj m@ʱmT6zm9)TuNy'9R #`V]<2cG`}3Ҫjhhc9iR'.6ݥ-ӵ +\d͠X޼ nmCc'A(aɍWs$nryEO>hhPO@Z"e݂Ri +v]-' fnJ.[?.cR19zMƗtne$y$ A/8Il]M$Ukl[HƓ<̛ӟ1NNxϽG `ɕO8GsU7WtgUt9Σ =lB58%F +07C;qZZL~;X@\xoQ |L<ϯYԡ]T47m#I+KymK!'I%m 795Vlݖ8ޛHr {E +2K@LZ4dFpagb..Xe~b={+H-WJm1Ҭamm rE y8?{)œfM!;x@?Go¬h]Nhl)<Zʎ7T1rG5{M45g0΀U\gg8t$Ֆ[PkSF < zն]]csvdI0FS#>;#gV7_!s1۵-M]H٩kjAqN0ˌT!]XHWzmś Ϝ{{dgm3y{PQ{rrvV+^\EpVXR{8UKlN4oCӥ6{;rdN9Bvdu' ,dBǭ[5nwXJn>t9Dvd153HѣDmAl^^5pgU˦yC Nп.zzuZb.8ERW`"tdZs+Cs9b@ NKj3͜`g,nQЃOoеa|Ǽ.xb?]mCPM7Q 2 8 YՌ3o To6ZPӒ|ȄM ^)[SE7e kUv-yn7mwzs~](!U;Չ9<⠶ZkH g4ܒ-εO&'C seq=꒥ac#ӥWk;yuibG$!XN᝹Z͖'g:J7UIdK#;zɭ+ -ˌ䥢*v-pjuwo1!qZQk@g$c#_;+g5ݽn`=<{w5F*[npIwڴl'Pv:moZM&ϝdޟsb؃Iw2Zw6iaGU$BCRB*:ZvnT63}9FK6me3N$NO>%2o梼Pm8^O'uHpQ>SI )֒/6mbΩOsTL-x'@6˰ U VmՀ_A#FЎM8;su"{S)EF#18<&sm %1]&I+yYN7u;]]p ,NhWYytۉTh +qtӧru7ٟ#ar(Tj@`YwLЕvQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!4 QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPZZE73 08op&e*B1kRf*,TDQ36ɖ #/xxߎ]혖Ux3ppR4RhQbm[flq2Ī4R +3B2(fڤAL, 8nr9]]9)Py8{3Vh̅@ir +Wofa5gq]yS+R>-|M&,0VR_n-9el`k}g˰ݑLSqXs@dGȣ'9O q 391cM&Hhi_,8v`NyPc %}:U pB#٥h{YlJom1uYWplrW(EX랙͕z*[ҕ7^l Bb8gKYAj)-ōP(@ ao<Ջk 68-:RYRRLk ؁RKhП&y'! +V.aqnӀ1ֲddNTsJB(A7bYe7޻rh+}jd,&K|OzԂvB97}Zs{* @̧ R$Ѽk-GFPrs\T}8G;f<S֢]ʇ#QZ}cyd,C~ONJldXC(:+IV61bwt>NkD@H +~uAsɥÏޟZMCN<1rUyǧjq5P[*F۔q^98U7^ŧWnaUXmWa8SU%޽/KG.\&ԍ +"FN;Z'W;DD,?{6IdlW찲r.G .;/i-v3쮚z Wo&PBŴ*ǎzu5JHn2i$[ݒ1/ZnbS: rБ,vÿڟWkmp?*VmI>+c+ Jnxc&Mą%obKmq"D_'׏V//YEe_y:c$]4bvK+feT&`[8t*R_q e\Y!`J!c<[`8m// b +T^bZt-#G2 }XzQaŦ鷘^i[P_sf]=+D*$ 'Ե]VV_?RNYԔ\ pzԩi K,wimy6;HאXrb$vqp gLѴěkCY8OE1*䜯'c'7(aT2$繪KZElj́>6^WQY~E$`u;YlUbitlGRZ†7q)S֭i#9+rѷ#2{֩yc$XGz/׵gO g`<1Z"UdM;=FOulZ #c`'7|>8Ry%nzvǭCI^y"G#5'>SDTN s6ڡD` Tv^A4@Ħps?Lg/u_X[[v*vsGL{G{%U`5:jlѳfwVܳPKf3x@a!Yvڕͣb$$ez<,\$ d'c_$=3EVrvrjj-FVɓ+߃,kq:LH֭uJo)%;<񃞜tI m6Fp˃MRNڭzv/cFXR7~pXdqoJ*xm.."XgFs4[H9ϧ G[3ʼgq_jR˸ew dztL7YN=T`jvl:MN&dXd= Maf++ nfXa]7A3߽hjZ}iԑ)zwͩ\oksB+lg#G^yj6 [pIsJ Ėcs6TV6U}w*AqғSSSKXeʏ1Lqҡ[ۍ/EmlcM[^\I*$1N\cj̿cmEvO;XTi -\K FG9 ZdH#y؎$gjqkvs#_s{gXOH$W $`n9RWzIS"Qeؼ6E6e.7N2G`=kb.dW LϭQm#Y9fBhsݛ[ogֳLQ Xl z FMdmH }\B&m=ĚĶ۳aamѩ1䷽$v&"x`pNˑ::ShNg<*r~^8?:^.$ߒq +X+{џJs;\\, N=*Xtd//1ZMݮԙGB#vVT#`U`JK1z +kKr4,Dp'X;:nNgs<C G*Ɨn]ݦO::*|%hǚs9۟ҟO oX +Ap玴A{vQk膗3ȩUD80G8f@r!5לzz'0671÷3C@X8CIRޛianfLN8 OʨI'. 0?IHC}8%P#H.=ĊH?=.dlE[-ˈ"%ҪEhnD${ۏ~AQsdl񞎁9tcE=Z@ݻ>Ҙ70#Q96pq=րWՕK~TZ{rWihWq% +FGPjiˢ~KOvTrSOTQE"(((((((((((((((((((((((((((((((((((((((((((((((((((((Š( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ՊK$HH\"\M 7J㸁~EcIde'hc_QMe py1& zޑSI+Cc4싍 U7daS*̷wLV$|mi!A{299b ?QLD:PC)? ++#J E?Ԛ5ZQ"8+#ma;RA;-"4,z*vI'\( };`u֫Lao\VF'׽ i 3ǥV&/ '*KV v0?\h`<2FyKZkȉAS<Zti/3Hf "yIZEq堕fӸٚ6`cBs:܀͒*GqQ%\==D^A%&x\?0:瑞i3#'5-ʴYu ;Uf$`mP)Jٺ{{XLLwmRqL}*JL$Fx"h42,*]㢏u(MJ.KyfS-/̻8Q-$E{`Pdb 8я;/[!(&d@fDWɓ0a+9r.7p0zqES| ߽@Iom[B-tpU@3֭g[|JdQliE8 5V;cv:b+]ImonLC>z\DF($rcUBv>? +(/,$C# ɀ# <\<ڠi51@SIXU'ޤop( +>:TKDYUx>f=@Cv`#t܇9=J]X[ gTi1?oY22ߏrwx[ +~f=GMHr@ǷZ^YFs$q1SC~Y-X˸v^qޚw2 ֝hdz rW @9>lY#TWFG>BIF:y#x.w}*qvCro#c1sӿTkKx` +6/>UY#w(OQgScm~'Ϟ I#@聎N=3S]ޮw-U62{}jY#K',ғnz5Kk +cƮjs85[zuƥ'.[)\Ns$ϵfIq<ȉ,:v1!swZ[xF=xEcmH.bGڅpmA$NɈH@N{ +H`\H,>*]Is1e߀Op;Yljn!CӊOQq%ʝm +HR9Zq#ȋ~Tgӷ$Iiv 'ǯcTR)=- m C<wӽBnV9T(b(d1tSo̠YsI ݷpL8Rs5v^QtmKvC2}UV)p{`~nVV;C'ڧvm19 +WEoyʃqwrKt xg􄳷60`UYK-?*3u*[ s4lM+]㼌j34jg GCqU7pԜ1{b0E (%p$r@<j"x!O)1m*f\xaM%sR]O#$ebzs([g/ b1"I$S -}˴s~Jޖ!6@͇ssVo.tgGWAGy"^qos5kBO}J-ͫHܬ +q|iWIfo&ku-1l, /?Y-\ +w^8?:qht+Gs)ZXN'lFy; +6ȧyuSAn9U=F_f!qMB&G善@ 0^9wCjNzn2\mz?_ʪ^ڋIQD:pjZ*).NЯ``sڍDQr[.l@dp_´t&?lqbBU4 E)HBȏ83Uq$9jÞpiY3XJPZ~_ٽsPқmqfgTVns0xkRN$!-ns8M;NI#J?!ZӶVfc z>훲:=?SPj$`yR->cىb: ^E-> =2&Q19fUq~T k2?wݑ2?@KHۮ5j[n%|&ӟ]ZIg"r`ۻā*#V%&kU +C5칌Ŷ0Kc5b_2ȈDxn߀cެ[M,$8R%.NƩsJR*I$ΝB`ySc{ɭU, AAP~K#G,l  ̵KQFU-qZze`m/fY;iF$) + $ʥ7"+)lKh"#=(.2Rq +<{]SzgU$G¢c(ɫVs2I +|ɶF < + 5`m w08^`qeg#mGHRBbӱT&u15-ᖵFy l|M-V涌߹.ԭ3!go9֨Kw$>|]ykGvPġ灟JE qIXq"Kdjh94˱y1Bpp*DL +q=cc[)y$y>|۫*9Wi'E7e!c+7>W.ڜ Osjarӷֳpt8kFM>[9p;n֪֓H_NL,#NHl1zŘ l Z'KpA5n1$ F<sjҬW :28 +EE Υt-P<`8Zutb*pA.TlKY$F%+Ǘ!#i:|4X+ag\|{FsҠ6EElc0:FGDeyGb&wZlgь퍍נ4JN[}3#Σ[y[9FڣMi5o/H0 >D'uH8;-1AЮ\<>wu +E4#IY\VIlͯGhm[ +oG<4JHrK1RyYt,G+=ΗbTWq>bQO'>a\zVYnTa?{FIJ-^.ϱXݡK13ЊeqYYDO2dS~5[cFa`i[S[ #,qRhյv﹗{}8Z3yc4q-nݚ܅@w=n͍;#*K1K#s㑓SV3d0Iv'!cE/8wrys,{5$~n7~<'˳o\ui4!&T+ #z~,m7aJDTgݐ;kI<=6$yU#.YN8ʪďh%J}GLi 2F[PVK+ r*$f)^6Q{UN mm1P[q~VG9dnрFPTnX%Cn-1ȁ玟Es).[(A 4i"Yǖulng+Fev98#ނ]i-fYImUf%t%ҵ17!d/ =c-:@D"!/ 3k2kw8L)GĄ9sѣ5%M-$ծQe36$Tm#IvR3Ji_;h8W?38/..maiM^nd'ysKD#;B9dHخwY-cm2Ktҿ+x< oK[Z#Nҭ¹5%r8~'ee,6})h6ban_klN+3ҾӂQ +SOXF1Uz12M`'򍴛Ab: S2]:Cql68zvo+FHRI,~TS:r2:DқIj2bH>pѣv8V!U{{U?[.H!EyR1(ZqtY8-wI0Uq NIneV!RYv)sMS-ݚ.61CN$BŃ,nXqogo/̬M"3% V[,X_; }Ջi5Ic;pP'-q8q<;t2-Iw_ZֺxqenZ U$FGSv:u[,UAr}%[ZXaPm$p3 +3&(((((((((((((((((((((((((((((((((((((((((((((((((((((() -!L(b +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(/ t\)e8gڟex<~jIc*).}*m̍9$ 'ym[_+ِ3ncQIg Iq20iv戼WN:殛+?/. +0?:̌q0ۉ~4|E2od##});F ;t\HrqAinCS[۽4 1Q>7ow?JGhK SZ%` .zjW`=w%c~[⑴[wMibW ,28Tc`ν#}{VqN ƄDȓ]Iў x3U(1'fmD9GHgg<񭥴&@#Gmᤂi"ՙ@H`:{-uR#I#kfSTdgES ^FH;YhFcKq!mlN\XII#4HtJ&T2AȦSPHSM++9sK"ػP:^H Xsj=F$36ǡm}y%ˌ3?U%c9TMsXN췰N$`HS*Km^I0F#-P<F8-*Ye2 +0ܱx#诨I.$hC' gJX,NVgQ{{R08F}{.4l8)5تrVb-"cv{%JHAUԶ=Y!ݴ=Ewqfx U߂~z]=R-mq󞣜E?68%'F[;Xg;NzemƔ@1`]9B.ndldX #FېZmyk-lbrs$ʃC댞\:e[d$c8$-eɨ1\INE=nXߜ36Ӂ_N%JQY] 9^yVrHP`aG{SB.̊YaOؾ(ɴ@q׶})0j<˦Q{*Bwmp:g&u*VX`w#ֶ4S֏%naAsǩ7n;P 8Qz etU|{'4 y=k*YZi]سs/=OKxB-OC&%nEZH #1`U/;Ek"#8 +sV_J -l\P@Bt8Rš\.[)+H>hоZD3fo=գɒyV]Ξ[̬98Utk;`k0G,lXFc:7|Σ͕sozH*l =~)[cr揿U{.$Q~ll|wɜ3dXX;7;;vc$U[dR[tqV-㷷tpw<s2G4"N>_Ps>>GZiFUpպlpY;<#z~'`DVUk$FR ZT[C~Ѳۀ19 V.-i]rJϵ8XK,pȑT8ԡkedN͟t'֖2(.xYw8_N߇֙m0bn8qSiy'2\x{Imq傜2Z\Թy~5ybyL($^*+k$ Vp |{lE[|l;H[22Mwc>Ɩ2Q7 :֞K Mq,ew+ `B;inmn^ig4#IQ*ф5ݴd|rINV48dEnF:J^.Bh G8UI)QAyI,pr9hy(>灕S#-T>j3Nڥ#iit2m$Hw\ 8+RA{!}dSlr6rOo嬉fLnzJҠS<;#?8z +zjI[yۤE*)8-t5X>r!yc3*֩ K)2bp{⪤\y$O;Tsڄ)-\:6RZ[fl`zf^z\GhvtҲn+;.6ҭjY+$f +5BXc-P_e9Ȋbi+Ĕ +,agu9 q VXgdBqiZ|@@(HϷO/x6K!;";wM8\09=Ar]62Fm8}j*D]G.sH -.Rn9I>T*r2vo_Em KEsۘEXg)\ Jy5T̓(gbrB8QH@!Ac@)k_}NmBM)QPIosD[*?:igKc2֧6mmg"NP)bEw181ϳp1 +jԲp:*IUbҦ}B'!XBju UVC#K[ytzqW`;0AJ&xPݞ==TĭCC_/^YpXH نGCҲ[vfʖ][Jhr,%x+LzURfGJ|P2t-]Hqeh-Spc9zALKqqo$yiȋf4ɡ]6yHv'ҳK%֑ 2NKbɩq,r$J&E9}i%4IO^zR_-HΤevl: +ձY۲]',=3L$3Fl+spTk) +sӚ{|۸`h#dU e!;̀rqSSд9Ʌ0[82:g򫰶!KGåZ/ w+.w,IjөaΉ@S$[Bssi,r7vg@wG'gڪZ+.xrAmwzO?0[ 2y*2BssG>͚( \G3-`k\[CdnIpYX=2jF|Ǽǿ֖BTj%X.`˰`}f E"~hZ#s~fxJjkk(S/'E rX7%j0Jg +G1n=:R#Lx|YI&爏 p::h.^hF?B/EtƸvQ#cчJ:4-}L~+ǂ5. R?O澆(aڂkxG5^S{{`ܲ( c`*S]€@ׁOq9{oz +T[3 + , y5|UvIҮjVrDʓ>ԷT6,,Ʋ*@a="\ixTHw.#e\^\vVb D:[, *&*YIHE=WSIM8% 61!Wq5MѣvFe$Z̅n(|# 8Mk$W?U4lI* _emk3f}8/$ 8 sn{$H ` ErVA zHR9fK[ԃm9p>Gla|0 ]_rH.R"!!1~> ^ v8ڍl+AԴuE!!pRA:i\K"\.#?:wޫm[Yȸݕ@FH׹~,Ζ#_ʏ2nUg}Jv-gti!\ ?jKj5Mh"`VT,o%-Iy̠cCVngWKgs`X=yi=ʧnMu]|vjV-';&کx $' ~)mdJ?gxd2vkɭDy3:"ϙޟ6f` +3 1񊱪Z\4Lj|. :u`n8:]l܂'O_B0sޒOr{[I-ϔQjF(msc>7Io-w& a喑UלJXF$qO=>=GsGݭa(lmEĻ%m èߑKqr<BHdL ޮ=}gFKqW=OR [iN-d=@QYb;9WP8R4m F(y~?9IݭEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE&QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@9`hݤ$*Oޣ{iУ sO{[x$a H0lD[+BQ9I4Pv gB"Yר *_mXK1s.{i`2~[A-w,]Ky'mnGYp[@}ڙ -3섒6a9RTO9c֧U|mvVNZ3N J=Zۂ.N@8"MA#Yp9,ngV +9 `!¨GK4gˎhB3槮8]CEBШ\q=i$n<m~w)2p\?-<ƒtkކ#9(UrH? +cpaq CD~Tg;WZ--5C.28=}RA*Rnw_ybB;~_ oB&}X oZO2h+mABr3)%w14R5u%t_!]Kٓy#8ӽCϴ.3 (;/sB Ϧ{tc i t`7.m"h&+ +dQo[ 0W؍G˳v`, })c)]*-be:ʮ ᙘ2ɎO ]{KJ2ry5b)nvĄ'i8C+)5E1K73.n,?5f([IgϜ=:u4bW>qxXEa8.$켗$i+.:q*JcḞg}:cH;6N:֢c\[!xHۜ(\oKR_pj[+U.Lvؤ<&HcOvݎ\J7'-*QQv=nђvp?2U#9̙,I8Բ;,~㊿gUn²1p?ß^ĔݽJ7!lJ׸5,FU’9}*{O,I3*rIzzӭ 8"}I !dBwEخo!s |`n?Ҵ[f1XS\cg8KLjlڕN{߃UcD,k"QsRѴ]˾2uOnZm1*H_`=k"\Ĺ0 QK,.V{phv@?3Vs)(=}Kڕ"/Hdb;} 4e82tL)b2NBn8V[m3oU?w=赁MܹtBd6`6M.oiF +Ueu&W%02{U +IEgqAya9EKU䓁ZwCg.q7;Ip=ZHIvJn@x$, 7AV[ȖȖxr$pp89V緰VkH.)'^đK hI +L-0-Ըbi":VB.`d1:v`cS +u̘O#Y2cV`HRp2p:S M%ʖͱŢ Xb䌤':o#鎏= T:@ajHʥ#rÃ

      Qg/q|~ƾ`Fn xmYI@u 8Èc#Vi6qꊄ#3,!9nBMRmĂy8C;)Տ5קb+Ǵg)iBvP2ZELt GftT|秿VkvSF]sYWW*۸E1]ҶII|sdq'u]b.wӜr 4Qy'$p%s4ne>y `gڙnftG8N zԫ?!MDqo9a=yg7R/ӓPCn8( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEt~"ԕ6(Jc;1IN.X1[3ƱdpV=Y:6'hMEֶu !(,dHH/o7[kR'0bdۏsR6T{7vsRFHȥ]ƛZVs$F$Eٕn{⣳cy+,s8~~{UFM6efS3iمQ@((((((((((((((((((((*3imrCG(ScgE)[G,OAcebMPH&219nA;oc4۱%r8kMҴ9"9K$(O]lΕN\+44(qny\ab꾺 +tNcM޲k 6[C(8^æ=,w&Uw'U_–k3J)ʓ׏Ʋ/$jc#jяT{r̎F +2 cQEm#ɭZU O48ԳVpmdmvxz5*QS\[Kj꒩Ve݂hM;0(QEQEQES */,M:-l!{4h(eC= ,͹†a O0ZL"Էzw8S#ωgsxөҥ+c>:N +ņϯ|Ԛ(^蕉uf7J|4ZCaY26$W-KUfU[ǥDV N?E]yrRA)(`pz fPӼ{C6`߆+5`mݧ$s6܁Zkei&eݜT:QSZoԎ8˖`7|kd.n? ~ug5ʕb[)&}c2fXF\_d0 +(o*Ky. "g~y=MO>3 *td]/X'[U=Oel|s鞴m$:ep)AⷒlSAUn{DmoɼSpv%ͨD2Abo02_@Wr5ZI@yI^J4i?8=~a].`dIsO-H$tҜ9e9/m< dt'֟!T(. yq&Vxiݺ(x=+'N8SG}^ K=ʦB_2~bH8bd;rLƸRΑ`$ Eq֎n PrO ? +M=BV%e ^Tm!pF̌`V Y5y;ªRE*-(~O}Ѻ>4vya˖\"4gmhmKU RJ3|t !2oeSc*u+*1\34#u +eTcBF +p')¯*I)w逸 $-3Ub>|=$6HEbۉ0"Qy\pUb֨F l ${ X"|%R2Jq֩ʔYrG*A$0i|%۝ ߇ZJp|+:jZwF:ܡ[=}}ߐ etNq| ȴ~J[ 9jxj|nZm>GؤWN$ߨlIG0݀2=i񽌌W-񄑔z7*. Đ9b'̞[Dt;Ɓ ׿ި4'&9ô0ytk nA,1P OsֲuM, +AǵR|#*?Zۭk{O#!G_Zm +]V@21_zd&lckis[¶Vdҹ.2oƳ;羻/ 44qc?7L<wr|#xDGE &rF15^ಝ;wқhƝ~IETMkY3oF'SV=Ьp0+4j2,,jXҊ)Q`ڹt-H=)J-|EaB~oM{$vWb(-U>ly,xrOjlo O6e_ƦtYé©cRAKgȅդ@Uxnx-OHb+C 8\p!KcFbw($zE#r)=W[Xź0Iqp?24Т%atH.j#88Eϗ,-eCu.Fc jilM5rd`@/Rx UVp y=v3FgN_=rc x$sAk^17f41ܲ.ǜp@j[S+f1hӭ[[AZm_(牐ʕ<]*O(2c QTl호m;6dzԺEiLnp=}*^h҃NI'xEk\ʒ'-,{RyifSoYrDR$d&3ƅJj1_sS`-$t𨆌ꮜo&ޞYgxU+GVnm/tӉ 5j @,!`|[=<- +4?l>|.p;c?8#-ȭGt$hhe)>\y5k* /+=Osk XRo6q zlzݰ2_+qlJSӎM-c&_Q\Ȗ?z1S>#*]1+2)u'ٰFf@Yd8jdMiEU5(KA,d?ͷo`=ʧ"~ 9d9ڨ Ep қe*]*EH: 0Oup\C2H8vN1۵mYbE$$P|ѻ6OۢoQpR]*=KGv$Orh!,QyKt?~RI&_$3L?,rzO5ŧ[SJ"@;Xc2m.4)p[? +*OOKG:[-~l⠷9R dRÌmɧ\䬒F3I /H?ʢ5䧲[eQ]Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+~;7B}NdF@=1J3S+'c4A ``m8zLڋ\ڻ5 Kbx!U$ :W?}tLvٶhy4aP]J]O)y}GNE6g7-P\>YvXRKNp*h&|1Ta'+iv_:rplEd kU,"TPxmvIf9UeY %s8m#(קJQhhϒQ3/oZD0>Y cTSq7q|8*O#Ω248J+qF{iZh&g;I,)a'9bks5 @ޫ̌qzTK%?SN{I mRi710U9m$p:TQc.=BMb95gњPH.cUf#nm$gU3/QG,c{Cd01FAI.߻knKiyi@hF}!*5 Pȧ"J[}})U99'#jtb2e@9*NFj; ?t~ǵ^2[x=qTCgJzܺN./R#|$C5d#ƪʻ2TRolFSE6 v,udu=*WF (KO>Ȑ@"Y W4fYKYI%pqӏZۤȈ;.u@8Z_y E4$4!wVqIVqj_ !LŶ:9ҬnDʪwYlP O~S錜haGNyvFtWZ%y(\ SuyrQ%dR$NJӻ) b`GUy2!,6r3ȯJ=ז1EGqf}1R,֋w. +涙5E OcIq5I$y +GZy>NJУ=F*NL(UK T`+:OGFR6)ӚElȒO;\M:2jݾD_ZI(hm=ż 6:>+bKc #>S I+qˑ1bKhՌۯNw_Y02MPb[@qOi47Z%whT%[OތH 7"?)̕%5Zɵ31#iddO%ͅqryr? +>Hi(u 6>ZkSJE~~Sf+"0QnqWK OOݾR[Ugʔ؟Jqwm0F1{ +N)ӫ*{m15v|+ss97vRA#jcӳ2$'{#.HBthSy89_J:"%fϹ&ƖGHUI%8'#VYeZ5^|{Ya%g~-U_4SGM:򼲩‚/.|K+V$*9RVF;G~\d?nnlMpG?g8.H38)Y+TV_K5a@ Um4>0휜{"ȊWy l*qs\e㶠*% rx"z[UIAl;uIrUXqM8UNdH8'Xat$B {U{[oB׸qa}e# ztdfsVѮ? +G̪'׎n슬H S}kۿ+}c7S8S,mpucqQ$:(Ԕ/dȢ3,U  )Y8F6ͨ0eWR>֦r+cg<#oe I*Iu,צIsUW)YdHX28w&d*NQ]̒*L~|L=ǨF]1FHYudD¹\s֫GB>k9yktI՟ʄ$R*}ûnƦfI"QLpI ׭hpQEv QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((6,#Һhn.#? Qʖ meY!*gqF6.{]P,% )',\R\yqd}H世4K_SONߕjm6 AIF 8>'V*1~R?j[Lnml::Uė&/pg j{kwu%0.qƒOke2S8 ,ʻ:N7:kjZmcmoo*pFӓ:_yښ&F1G̖7_C)C}sk.m<3)5Ã)&ܚ] ˄a[̛aH4xJjn89c}OXjWw,?:cR*hݣ89N1VqeEyMf&<1'ۥq3LcVcZӵHٔ<`[WìY7&MܓӶ}J/Rb#xGEKq[\l,G˩!Y4G4-KI/.$rsq֩$ۙH Atѫ ԧ%5#d-?fs{ۊ+LKFG=zcҘ%ُ1ӽdONb{[HEڈu2}}j췅LyQ֛q,R1#`>l;v+H^lL}Vw!. +4U.ϗZ:U{[~>7VPV SKgGQMw@a99U'|F{.x8o)'%-SjЏ-tܥĘv/!*#BfR'Y (venPHX8<U)rgRy'H$^jFpTY_ ?JzBH;Fљ1Nڄwo"fi߃ z~FfkhdL zb/!䜎18 IbO5 8){TҊWot L&ߓ+LtU ̇X!Oc/`$AIш֭5yBM-o|vI^`d<1/@^;t0^]PA}GT \x9 +$]IFͳVݦѵɸHۏQǥMo;I +K:LUtV篿R5}Zk-Z& r &~c?˜dFtH鰄x1 ta'*m_/-IniTdnv+}O;Ι4&mռo!F2y>|X`-$qT0gVPPm?zb0\M,Tc֡XUr #YiI0)bq;- .g=S~qn,Wq]$rG;T\n_nRpq$OtmʑVQcѬ5o.Zy^m 1 4[1bh,m-<Y\vgh?)*QMe_#/$'G?J {I.cA9j|@%ӌw[y.+z*"7Մi߯1FffpJn!Rcܥ9z1!?;`K1JXj9YLP3Wh$ σj,yTfmrNFSީQ7$ryb~ퟍ}jUkcFQ(łp=VчUH22&\p={PTkWzh;Q>ऐsR)~Tʽ9;Դ]ݾw_zcj>qFr@j<'b-r}Li~=̬1!4+:Sr/qFc90sՍ(E=[>9Pjned{WC[Gn#[o;q{Ԧ7#RwNLSRM36_Y9$km=+ӯcB\ګ=S}y$Z3=6;NQJKFo:WN6e$'n-^fG&vs^zpXfHwPw|du≯Rz{y;O>Qin]~GB01I ApI2FWߞ=*eзH7fBX9swo-bwm9vez^E{O-Ȧ(O5}R&%BCg xz'Rm,N6{]Fg[Ѣ1QCZKs1uH'st}Ε^.aq!rXnwcơ㙒\pK$ AC3R\nI*1W_?롡Feri7rYu'˽x9 ~wN9*!&5Y6|'zj]6{&;GV%Y%iGX_z{qvFb /^EKh7߃xN3qzSNԱay=}j1Ayڛ=?j1<U'}nY'4~EF]3kK|+ +=muI0b2N+sL-+}?Zv䗺BYEN'I, OTQsQFO, }r{Up4J;G:Z9u<%yۃ4b8InllFK+ ݌v^iJI;r~dg63!(ƠPw .I^%XLr8Ԭe+{f @*KH3ǥ6ť_ +W;9폥Y==-XhpKҜo` vrOO%˟>Ta0ssQ\*r^2r3Ӣ f1&Nw~uhl[eD@TgdEX~uw é +pWmbq'5vv2犗+>44IEW7-q6O ~육V<[zao+d ~z`R+I5_q.f 7ěʐ՛%HǸfߎ᷒5&.;`nfB^hr:6m- +(((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE{OF'S%3F8$5r'tj jXl|Y7TZiin"b"Dw +Fy"l|9J#EVrC5 PN㎀UZh9sQFrmɶQEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ِv"wq]Ɠhф>r2<1?s$1Y]Y&5bDKrۂy84EԢ}_9@<{*391c2NztC66PXFJX8oO~7dU~zl^-.1s;,cV|љ$ +H38? +UU9$¡A rGfk5p6 +!Yk)E.[رfunM۵ۜvXw{m_-<.kz MR{$ ,π@ϽGl\+A-`0 Ss'ÖK^-pgv#z7JַfNMF4g `޹Ym%\dr9]Z;G2 `G|u2&q*VKFqV#prGYբwg9ڦ0|҅Ҙ N7JW rH{9⤇N59$7NG $[N82TokoOdWP1dq]mBs(0s#.t2c`b}J4եou,}# "E.8AS,8cick@}ϥWY8PN>oƒRױu'I872$L1xԁd5[!p3> RVV!}zբI2`yYˢ;#K.i+__O,Bhg& +㊘A$g 6CRJHBYn췖~㜖_YYYtxm'Vc %~cUeu0.0xR?^Ζ^w.!8ノr?ʄb*I5iw|ŷu{f>fX5vQёWmز/9~d[h#9?J>m QO_GnWd!'=*j:nj<:S$v>[qGR:YϨI*6@O~*9ntJi^K%ml?*_uH\۞n ̉# .W_"FR=1U;4rO8Uu+y8rq,,lokuE@`ρz?J49IZ"24{ N'T[.j2|<1$=1KpD|by{1KWo+pGW}n9Z=_{ac7&"M`=$HV.򀒐Ju##?ʡ4ڐI#p; +IhOZɧpp1Dڤ +.z9GI}5o奻AQ cg5 Q|?ϽU3-P۟_O-Sʽ/F|I{%i1rBDT$  p T W-EvHcnjG1X9P 3צ9W&yRiϙ$Wg@;ַRVEJVzXK;M3Č9QzJTm<֖h-m6DHr'׭eipGďud;*[TiY{&!-o. ( 1T?u4Kqrd߸urk}GȋpyE>k{%+e-!pzJJ_-B~3-~ppƒV[ 邢 6yA o M /4ĈpOVTcmLU{Fؚ @\\w 0GOXh!Fp2iH乞EbPm階K!Ϝ${QՄWgI"0:arsV#hn"%әe ={`~pmi,n11nx呺fpH9Mg=Z/ɓXؔb3`h'/"O>bHS[zVK=m>{ͫVmwۡfOc +ʖb9]%!4rH+#GHx~jЂhI&)1o~[,֗qD!r1ENg$k F~j.^|:Q؉b&%nyQCmhtš_!ٸIBM&wuG*) +J<_Q{$V  qf &&Qڪ +RwfxѥH2{"p0O31G95.ot;67p;zV`VF>U>4cq?䔗39ԕ*I5I:<canϱQE|xQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((kŝZU Y"+tw"Db±pGSi(gjqN~RpǹNY`- +o|0`fW0 }|l=?.W3Zv _AKRҦڏeV-Ô +ӵGuܼK*LKm/]K88#h>A-ܠIA9n 7KbH݈A&N157:ӊSGۢd(ff#OX'Vv-N1y j%wAGN3WALܲ㎝j^䪴_mRm*'}?J$%եvE#|{1kY {1l ir[}I+疷.K<}8ZnZ^B///g{;c<=jwwbw\uWt[A`F|1+漂o+&~u0*x$_5U9TfS{Bg=x*{oe99ϠhܠE6ZR/:HA` .qg&!;{bhQYpȝw`ۓs$/4[rpsJ\K7\];]ŽМ`{=Jq~doN@p:AgMՊgO/b$c=k `˕ +-H]D$1,Q(Vld{{VeE{{5Ub L$ӳ7ҧV17+! (zN[o@q6RWkb!9 Ď?8c1y۝W(ٸE[{k~dڠ\oX#d G%-&V%q +~Cj_52'MۢD7?Z<^잭CKy?sOAItU\ӏ΁2H,cyA\TEm ̟h (I;r7bD m^V֮s;݀s~90ڣ#%4hZ0]?zkMHiIu7QXsFzwֹM`2"ѲpyuӥV~3pʌ$~5Δoa]< 򆓅2ZFInrWj3j)D{ߐF@Q舱M">`qڮ%$mJQvmtVki/S%Wگn. +BLe?ŜquXUDbe@<߀đ$i&ElϥSvV"T9--׹E.nNyi_Pz"b #WRhYcjH89ӥ\DlfX˸ˑg=14bZki$9.]vWR!l3S$PѲE#`MNc@q0z~5[VLJz#$gUcgeBx\12 +QlnvR@i=k~uN#Yc;Tj6N3suZ8gqPOY!i!n&z~B22]Л}~Dd #R@~9*fbCRygxr1ۮid$RQ=AUKHmay< d{4]Ogn6@ږg|#+2=#̩ R.Td +zՅo%f.s u7JK!Nc$RnE^vѦ98Y$[D6嫶ў@LYH`8'6|VVh.N @x*&XJGmې?U똤 uD==+[+b|\U[mJk?_֊ِ݁%,w + {>J r8=zi#X3ʇ89&Td]Qb-E2X68FxF};v*(-y't8GLcךϢTg(QE2B(((((((((((((((((((({5v?ހO8'innna$aHdƥ&gf%u-TAxcjJ俾XG22w!=VcDxUbdB)"iWo' + _OZ-/IyX&Bԍn*ϩ >Сq t%jW"5P@${.y,m&B +`$gY ]" u2ȣA5=ՉUh1ɱ> +Hө1!9Vool͸2?*hHB}Aj$Κ0[4aaDLeey ye9G!m]Q.LÇ I9Gu5-?"-6HXILmLwLeH#`{uzkLGNr1EWS7];H-;I3O= X,K1bF\R o-[ \䝣=Q/ZWKKJrTEF+roBFK'1xj.< !2HKmRdegiX쪒;g5,W(UmxgPp:c4JP 6uTYeSB;4MHVV#)Q@Q@Q@Vd9V*pFAx5([MſTP5&,Y"^'}\WF/Yf +o\rkY#xհ0y +}8y"zFE +5.kp;m9fDoD=2˓ׯN$6FVXVaI#?皩rPա07v$8Ïֳ;yO͚]1v@f<=,-2CX-Wx97* OmكZ;:i7sۏҋ6OUt՚Zl^e !2H' ^Zs#cc2gckFflW* '܏Ήe (`۶rygIrF5)([bԟFeB. +7zY@ 8SOc˝9J(dQ@Q@Q@O \O@HM, ̈Y=OMH## qO2r]m 1;` +-#[n14 Jkt^kr,r{ք1G#y+D[Wqgޏ&6rW`F1ɰ={Tko-)7iʤ#8:j7o￑hf>_u:<6"1Rp0a5j.mR!}^dnQ # qS`U_9}85JΞ +!R#iXzZ-Vh:Xj%DVHWJtQRꂶJ(crĆoh‚=r 2Vx#2IԢd E.FM7r-3afEnyTLr;Ԗ\.テĝOf*bF.}sK +{%V$Ns֕Ծy[eC}Gϖ}__Λyji S@)AzW4WgO*e!G+F,E$#%s#T+g +byS(#PpJoR)E{}=8oڴ + +\>y NzԳ ]iOdIfN*ǖ62"FO+Pi$^S8P oۀjOxUduI#ʙos³!F;uc(N\UL {Sݤrӊ;esa7aQ+&QE|`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((i/A6m6?㜎tP84z-$qUJ($QE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(Vyvp_<(Wv64=`,ftxonuYǘR0c'hqo=deTvcGŰcoߐ'qRt^[Kk0C\T06rYf[џ2jM%eP +"UdxU7C4Dyt[%N[).̼)g>MZ9^*^\ _ZbJE{)ڲF {ʄHHb2b8?kF͖vYN[Ui0$ݙ$7y5r_A=r8tIx74t;#X(`dO5RCTZfDlc| +$!gcR1v+lӚmRVC˯Z^SmG'49A?Z[cƒTn2jCp_` w3Cv"rѻ[k`6+o,qO>R-iHq:ҺKxy.d3QO֨hY~&Ӷr1MHwur ɖ[lJ5 MQ++d/Uv@r uUd+<РpIԋrqR)lZ;8>O\UJՂ&`#kbF$}+:by +cic f;iGES1 +( +( +( +o-˭m_,w_i\, +apzO~U^!r#]Y-@9zswh_~N=9m2E`f^oڟnA=Q_4%.m/gn[TFy8.55' Ao^j/+M Yr8cIإzpo]Ԝ*mhH3T2<p /#OP ȥcW@'<ӊ37 6buq6E`FiܬqQDwSyy[9!P,O9A=2OC/n +Ty{S}MUeoM/fgUڪ d4pv8q2n$ w$%QA1Rnr#M7+쇠c$*'GǀFsjY_R,ۆGT_0Ɠ,rA_ZL}:&p$Pˏ$w}*x$ĄhU=z~+N] )99k|Y!N c9=}>\eL*uW!djH:vfci>՘ѮZ%!O:3o,\;﹢QVT޷3< + #N/m3:`UA>?%xW19^jQq7w΄hٻ>za*\c :Crc•HDž`3SN̊Iě#TbQ&aRPSreBa*NNTXxɒ8EpM#;"gho~Iv?%c!׎X.dx嶐lלJK,pYGֲuc7TDs:*DT(A{/+ Ď:`cUi`l߻*ъY4\DCv֕!pNk;S_􌛻sn0UbBe I@@GA,r8J_2iY}]mcVH2d=M .˒.x9gX%кLnаylGRĖӎ?*vc5 +B? +`b6)8xKp{eM6I'cm3PSq]DG )a߷/fڹ_]'ȗ҈X870Zm$ku9T +$rA;QʓN-5,guʂ˻y1Mf_8a\#g<LcN +InA89㊵5"&sr^bҬ{d +{xᕉp!ާx+:T9l#3g[p"h)d㓓MCiȷ,%k2w"cu<|e@ {Ԧk:Kvq$rɷAj ?ȩ)6G|tiڠrnEĐVA`;M"[$WRTqEa#r +[nYfi#3G=9py%dCҪ/Od|}*p콨H^R鎙~#[d2D c4# +ΗNR^_QE|pQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((O<y*$Tij)ck]l-ŀh=ŷv8zMҝ72;\\J*Kzf]%HS"ӠD1o='ў`LrK:I6I%h=J4QEQQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEE+ܒ?AXi~VEʬ  wͨb1<#,cebA=O\ҳ-˅q+TZ]]ǘk.`3T;xSu؇o%B0_Q{W}Y,Y9aܞ8UR0?ޥk# >f#%NjHe2``^=1H9_Ub t!]t#n{$^7 |ͧ/ǯaڪEco34@-ݝzZQPQ|T3j=_ Q%6i!$XpVZgQ ǖGLU/l]I_8]^;/ ixs1wqHA@I^(+gO!3.vF'm앁##<:V4n S]ڪOC?]Y)!Y 1 +{mo1Os;1Ja +9:s[ʓi$p1dKkkO0[C_J?3qWYg c]t?j4*?@Fs֪0^_10@Ғ [IDI0yj]($(((+~ĈtY%W,NN?Z &dUr99G"ѕO5ޝ%օumIYPWRTd pʱO҈BEhIHϚ $pM)GDTk%*42$N 2I\?j]&@fwRGi̖ +9]]#6|RqFiF-4Š(AVlD皭V$"9#Hv-[au؏0 [ߦ*XY]V,:3Uam+^>IZ%M۸+gJMMs 4l lN<ՇU|W?w;UargN_jN#~ +\d*SW)Ved9ȧ$v9/nW1<)d>AیpL:NNw!7D[ ܿd֛G $1UvFFWRԢyYXD<6&,6;e$W-zY0`F2M^Y-(c/C8RϾ9TT#pPqڢ{'yFU@=I7&ZxvSٹ,!'_d~OQFmnnOZtuKKRܖ3zy#sd!ڋKpH`eOya:l}qVN4}pwA;+{'MN?:< +,d 2>*sh6n[M\i$f59vf +PIȢ3\ ]qҫca(UPryuo$vrǵn@LT&(b4oB:M-lbGu,01MO9mn`B%=[X3mU>U(;Us;PoZJHYQ[ɺ18jKU3F0 +OLcM㩑Z( 0~I"Csq w*5Z3Դ)otV۴ +GV-ngSX<-‡c`pCrҕTdA,R]egJ;Z`pFGZIqnp? +Ϟ Cq!m=jznJܭdK+0vpNr9o:I#q#ʷe{"BpNsoƩ&[3!bP bgZzu.cAn\~;Xb;Q+(}(Rq%D}[nc<$EєV=.L&L68Uv +aIoNL$*?JdVƌ:! Qg8%d.Gnr?sSҡ瑣yb/҅A$ 3ʁvOμxcW9\?h;3'ҟwqwKX#NIמie3|vȐ*+; UC9˕%{7nK:;A`SO3tLpjiq +ўzR#{l!Ռ'l('hǯMf] f4 R Rm nWNO4\rRW*o󨑔0x 8W\eAk-u_202@109 dJVli5bFGVc=8T(qܧ#w%\S,B>V|в$wǖ` {T]jeOb :cj{]̰*,H=3LHfC |`w~G`A%I<#_mmR+*dRaJpaeե:fz +@IÑ7J+p 1 #d=[ڤ  dl8mexD n:sDmۗQ) (X02U[v*`G-Zs+ࢊ((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@lt)&$4=fdx>Ս#PK"LU['{?Ky +]NiOA!EM^"KOm,\ ])O?nRſu=wl&y,#/n:>k}w]4r0s@6Jsheem#"cq3Jʪ[QҢkQE +( +( +( +( +( +( +( +( +( +( +( +( +( +(v1·:U_+w3.Jp:W-`Qu s#mA"9uSYjqc,e\sgM9{i 1\ m61#w$+FX.v47RHܯL`XsDc>fcGd݊Ylv<6ߠحr~卥[dcz46Ih|$7=ZOJM<ϱl3֞Q"C H1^(y*YPN*o3¬rN}?OBO͗4buUT`uMx+e&#&6Mݎxx̊Å-rK*p)TtI|?ƥʉsG<~BݡKuuo,aQ1Nŋќ ڦp* 1ӽCS ڗ +VSȃiC g4ҲƲV02Y`=3Pi3%>Tm:H3Ewx'^zRoPk~ex,-5č{y. xQr9?e2/-1Y,Epbq,أR0OD^LSQ;#\ria͕YA8:qpuС\dԏ%pIȪkDeJOa^'cy]D\$e'9 +r;KbK6.3iC@'j7M4\D=RbΤWa[ ya\Ȭk3pNr>{Oα p3Qk$ 95n~RB޳'GP( +W<:ոVۑrޛe +J_ +–'VA+vÑzt>q^+t{ EUQ@Q@9]_6;.&>mǧNb l1ǁ{T6Wmk/SOXP ӲGl9rz[dHIEaa\j;2*zt2}Fy8ojMEUkCSw^f΋)h# *==(.4bמ6=E!SԣPFJLn|t8n66<(8XQ7M i=! F^_Z1 e]29{*?^P!1ZȈl;T#xU+2bH33GQ ^;`Hn:{{إDpy?˜{8֑m38*QvZ}$eۼ|gAj |݌ZVuH@ w%F-jG<'KDЉٽW7gڵmHd,žU>mjcnLeX|b9ZtOyn) +g Pwg)6Ѕ8>uy@/LW[!>bwlڅgAV۸lt85_x9 =>%p],9%;#G()J]v? y#iݛ~Y6VBN^G,.TA-Ӟ"TlwTcU۵*|$CmӜӢ{*60&HؓӥVeyi9Khӓ#&A?Zmh"4c{^=6"f8oAQA"4k#Ʀ@8Q$fz ^pĬP|1VX⤑*FCD +Ydfg<T`sUK9l5*2}bc.MЕ*x9$9%HxV&iLҗsZ7tAek-"K8-z+lp>Sp<8mN sCxƌUbSɧޠƗZ+Stc 94OͽXʂI$ +/q^(mѮ.rqLWywǁ:ѭK77QZuK#97b{WS52'OHte8]4d[`ʇdJl"{M.?Ns1L:N2$++wRS0Nr e6i໑I,}˜F9#浢6 gE\EKޗZ%FUqľi4s皻lWO$g=}*~E[F뼶scڪ=˂$0q6aRI;vl 5RH<l `OgZhXƒp:=+- ˄Y!DQr;4,"v|ږsϔ{Y_i 埘n$vhjopdH4ZВ5Aa b@0ITߧo"qYp1dn`O<٥gݛRQG[I8IvJ9U[A\۷z*(B'8"r>8J[̌:A-)HwcB( ©,((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPRE4LFdB +t"Ӻ'N$uҠ݅SIXB >}sgUm5QE((((((((((((([ss,g9qֽ.e' WbHJHnn$i@#AZ[b_Ʉbp ךMZul-gGv`6(pO_ҫ 2)i]ir",вRG}3$Ze J΋4 DnYNm9ެ‘5~O_$35d$iӼ\}qNFm}pUT j B%3!,X3:d*n9^x! wLg[7~j9wʍ%7*bl" i=j#((q}&Ke\"A>3H'4Y K=:ƣ6+;0'ˢH@p[\㎙賧mVndydH<=:8ʥdܙJiaT]7tT-D""Frթ=*PjF1Db*9j,UQ1o2G3]kA 55g @Vَ9 -(Rb~h_\Da1=*+!mVI)E }s_(Gyg*x1z(#˙%{{| mܫ.snDD>i~(fepkdHXx,qzs+Up֓L4!(>FAs\+r@⥒{yl&ED#3SQF Fo  nq戯m>H 7zsҫVs;+Ob-HQ*+{nI0e%1G4y&p +Oye +te#q~t˞Ui۪^/EYu7a[#[&Ǒ8JVaES$((((*e5Е+{\6Z3/{ sǮ+'gRRo%1\H2nAPG1, ͓3޷P 7"v#.zGwM ;uR莚Ԣ=t(5ɱ_ +@, }QEĒ +Ʊ  U|&qۥ;I#:Pv/#Ictx=+*Vtq 0EMli m07OI:34|-Rޤc|<RU)" s])\jCN!ES HٮXӷW$un|vXQJJ$AuZM5Hc?0p j+; +\p0xv +q^i>ykeS*ث{֍yfO3 +7eAP=@<՛nTm)~Pҗ55x/=s,_YU+ʓڴm{,sZX +v6:iB+q[%c g֦SLҖQ4ԥHnuؠ +tǽRc7psK:mTr(UBUw~VV8?k5RJ͵]pCmE,BaX~O-WqAZA"HC$CՈnnWU9=ЕVNGh̯:Qp|H{Vڪ6NGU q,@8xl$l1 6nOZji8Jovne]#i^?5Q(*Cpnfr<,7)wcʹ"#c'=iE.#$av~6I!!SH/pA;7yp8~0}kJ#p)AEݕGRT]w#A!vb2+bjʵR"ZMpq" \zoO,̨׿ҡwGdkZI`drh3K%Er +qyͤ^O6z +eżOv/!1tMsbqPZ^q$`riL*b%w@B2J#T[ݰ2rJF^i8g46MHAo10U7~5(GۜɃڙXP_w%Ϩ*'XDfð]{ls7)i^ދ~ᦰIVoLl6 $ldgTW3`~ 'rufP4`=8ZJSqgE 'ֶ݉#U>a"RbsqϿ*j1"^Hg$;pҊ?ˁ tB{\C1㚙/Ȝnܩ5/)RM )2,hd gqRh9Usx9]$%W + kP]ny4rZ6noOбi [gor>#IV&!wg LK;Q: i'TV$ɨYv9sPLFyV-$PG)@'x8^&1r qFF c_TTS8+AYWo =](gkpy>[ҴԎt%H(1dELH.XS)($:AϽ$,Kʊ0Z}%f⦵_o%e8R;^ihvxӥ!lSңPѹS }jLRӧ+[馑UVTtR|*#=xc9 +gN +fb9`S3Vr͝ɺ4E\қu}n̬E֠h9=)5i ;$rz~4/ _l5'>CgrUI>) +R@Cj47zO7VIN*GUu9\y~2yYbe'@~p}Q!#*W%A߽$ls~ ׫v̝=EŰҢ<:*F2`p5<T=o ;1 qIF5ֱ`oټlYNF;dFk(5+qڣVIv##=ho,YpvK:i%[7pJYK' +r^,De[FB ;7Ria]͎j)jzX610jH@Bm56)C+>((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEsLdΘ[i]؆Ht`ݿ#-ǚAYvt9yALl/eti 6l WuQmuHm\?(9j[9a-~ mYgS)[vC{\E 隫.u%I+A$,!bֶk X-0xh'ŒH?rNҫEQ(QEQEQEQEQEQEQEQEQEQEQEQEnhvHiwuyVu+IJB(q\*3B%cnoW=h[1İ7^=K亖%.2IN@>{q ,M1`sHyOYm>)n`+cXԌ987beO 8ǯ?GnH(愻I>kA'YbfPQpzM0@8ԉ7r,6Hx vR 7HE Ms?+<"cj7fLH%֯0۵gyD$z`]V4a$GZ[})dd9ҳ}v)G&W֛eMMuc[%A'EQ2G,C4v33=)!dH|#nrO^ϧ<o$><0 s'˒ u}*)-fZpq1f۴Vm +W_n1I1e'p- fU +$Dqn hn-U SHVT&vN=*ljQn__!ͅ.Yd`^(O;1PJLVb{tSuǑ[ag88Udfw[s{3EϮos;iYܳr ~ x4]OO_e"7꬚wBiFO%rE%to4 Pnj|D1S!QG#89)-d P13gs_jɶw +T`h` 4HDn2QGI`wW>B$gW'4[Rԟ%ߙOgr=BF>R1N01c–%Nlc5(#b,+8?>])o51qhA^NNj:[_3 8.KrOJqڪ)y%t,N?z[U)/VO(3|Vo;0r˺YI*w,%9<kM&T0œȆ]*7g%{__ִ͒V̖(SCQ5m45w=u4mG"SjULsާ?UxEEḾקLq!.=9=Jr^D(T c=8ÖJ #l69vy7N:;R=;IU *#"r`j sz\ 4;4"])LrqVtRX|y32랔4 +;r!3ӯ`uIs'{t2ȷ>lX`@ZNYT +tFЪGa֪-ץ &̂݋eYRˈP<|qUt,>R7=qṀnMje2C9?= Ns6̑f@?*p$tS{j}E(1 q7θ}jM!0Jz8a;2ۇ9Ik8(j FO*6Q"Ivr+qUH& n1S$Sn ==*ڱxWl2kkGFp@ }j͌36P*}y1H I:lCmitD.mo׵}&feYNmVȆa8 +6sJI[,`eIE,j,ʁS@9F<^?S7qqPp>s^̪cbɂy(2Wwp=i.m;9͡t**S[1I!9V# +@!Si( +sTK4#2 i,F}x/]NM/:1Ǔ94|mySg*{iIKܖsK%C`߿=r;Һg̚gEWyEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP!(b +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +]] mMĎ`Z[Ixdwqvw6-ke|Hn?tNq^MxKc%P{tW/Kv HP;|VMdTv bͬDqg;h{wi71ZJҼE.#G?jynfed@{vTZe^ݔwYSEoy(h$77Mw<9fs~;m{M $kFnVrx$ҴQ.Y!~Xd3ʝ[%o70 IZ%鹢P$k"w1%fQE2(((((((((((E{ԅL9emj\qiP:sTWwWRlGbr[M +Zb{4OBSH<`k+8񎇧z#(":KnGq$bBy%OC?hԺmQe]6rPqp!,"m属<>Ua\R9R F'*Gryl즶3 ޠ zꑷ1u粄R̻f6!Hܱx7gMfM[m[]w |ЛmHF0[z2(68)z5xPa3I? +ϭ"9'eQÊ((a";3#J(d]Oԗ껭<3UŬilz=ֱ*AAȭ6H7\668d`T4֧\*FmE+66&Xn" fB\1z⦰tUQ7?G܈%gߍal!RF;m}UOmVH/! 1}===eC23d9r?ƥ-lGeM.ی7gy˪O^ |ȇ85fR L'Z|߻jKli q2ѣO_~vHBq$&p@R ʎЮDm#npi%swpf#SҫU>o4/ .#N$qte%eO9dkhMO6^Ѹ&,p +U 8棚# ,r5gJ?q#m^4 @NY֫a.S<9>Ԑʮ +6Tɓ#znU({;Y;im)`wϜ@-cqVAӢk)#vI=YOFpu8Ec(Э6*/[ j0D.# [wVۖ<ի E"T=NR\> v1NwM41`dEDkю.%|,N</)O*C8"X̢6$y]TZaQ(J9? +.|1۷(;R1]ʨq4@$ 6JFT|z>܆I/.CH*9֥TvC7E'f<,F{Uym%CH !\vѽCuTyn4R$APBz5jȉ`- #{sT;8*[eG1i}=ھ1UA[_~)-.!0=9Qy-ӦLyQӟit ̙09֣yk(*g&6(Iziř$!ZA׫ p0\yѰ,?Z 0nCѥ)ݹ;}0<$°}M`E4Irx )dmv\m*:[d$ӳHr_A͹IAZ[G;gҝ QcpFҭ8RqN,ܯSb6d1Y6AUG=*mm{wo\T _{02j]Ӕz=-]6FA]$r0u=<{g} +7Ddph{'ǖ-Ǟ1G5+8镼e̎8RXm*:,';jht ̎)Uh 4)9#5qj9kSJ)Imk~־cH(tp5(*UcOZҭ尪qОyg}+Pqa:sS8ta+Jj{aq8%RU,lQFLчnFW"/#H2?Sk"_i%uo,DHzԖpfb dzrXl j'J܏zKZ>ͫd)\mPlLXF0~&w":~9$BɌ3S[\_&E(ߕsֆHU!OI7g?OD.86 +ko@6SHɉ"$4ru9?ά6X\r}hjpSkU}'C)j}ϗp Xחr-T+#>դn84һ*XNN1e5+Nѐ0F(_$Xڃ f(~x㏩i-<ŋ̑XDތNrWWF+IJse0 +_jS-|꼏?W@'ZVorN)E$h *$`%nUFfGǾ8nUE,<=M @g`тF a+--\#ldˀ{zQsjӸI)bo(-đ%dQUv$oJzQQPP}Q%iw{S#`҆ V y +7g#0:x;a9)hٓ&hkk}ϨI tBsԖ7Y S [ +tcѾ7I\MlD9( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE :Py7ne庅'C梀0^lnM\9:t.#&8,3w ,aS?^՛m%SƼaZ,F3 ,P͎);RP4Wr%Z!WlrF+r 61Jx$RaBۆJf]Jic#eu%{)D2i牓6;~3I u- +fGe:Mg![~xJ|> e6b$ޥGU97iϢ̠ īopLdqo%\d{Vm"GbKȘ'}*k}R_3 W0(XOj|R FG7S\g\0x֫Um80(QEQEQEQEQEQEQEQEQE[Z}ZRD&wz\wnI#XP:gT{;a%iGf^$3Z*Yb \Z-Y2:{ܒ3s$ąn^X Š>A'/.Ѥ2nU-Dmh#Y (`晋i>X.-E)#NX+|w3>XFңr0H$v}O8ل';I물݆Ċ8Ġgv4KY+Ij,'!Sgv? PIp8I"i|!%A=}*kXC!|ȤgS;᜕/S =Tav1IǩjE &#AӭI2At+$nu4&NILltƫR9'9!̎CW(38 )-̦8Ǿ(j +5=$?ByG/v#oU$d޵<$QsީFV'iЖ/y[^X8$hÑ+[FU!j *Fp1| #,V)ʜe.ebܞTPɳh%J=Yہ8GoFl@;cbP"|8ߞإfԌ極mŠ^F!^UM\{m@pwjk +a!ޙ~aB6F'ۇTn=,mbK:*;.ߕ@V/|v`]uҢ{-ǖC V%[4-Q[8Tlguz62Oa:L1*D@sccZzL$;ǹ0k!+ӓim ?iiz| 5tqZ  GAZ}Wգ0 #_Υ鸤o݂C窌r;>X##$q$G^f2xvQMϙy8G&*dсEJ$ˈ$)jy-nQE +( +( +(5ԙ4mT#3QdG,\qUՊ Vg#qr ? +[;Vt]3g0l{y足 oZjʺ$I#Alq皤LT%w,sT]ѻOݗ]o4cs\qp8[ [MBHe_b^xD+Gi6f:!-X>VvV7%ӧ$KM:$lpr`/H񂳣I 83 `1*_S%^ n)BA'={Tb0' ;?a߾jy(#'ls=h3\c#"S! p2L2P|=E9;qw2IW phJNnDQı4pfیڪ\,C`?Ti&;$UM,ƒU%<ոXէVEoU[L28<$v%桊᥍@#}+^^κU8'j\eshդw?kjD{:)e lczSH7&ݼJmSdcqU>8'kH^I$Dr +i[DG91jKm~#d&[BNr>WAϽMnHgs'$ȮJF=d$c:٭Ryg,SU䶊+c6c)OU%vs|[nLI$,yrOa5 [XIwkHi2lt*7#I8E;\ʬZ?sve%0$ʯp0G*=ߜ% rS7m^JK*$#y!Y6NɞޞlAc;UqqmWXF|pA9ivpuZt+MY |Er\9=K( oLRqs< ʏjXDr7FsҴMjpש8Ub׾ƀvBYcW8@~@>^dDlwxm%%sx=jm 1;ҒKD:JJ_փ " Cuؓ8#E65a)˳d3-^].I:K{zbߦӑjE`Pc&,13K/yVS;fVRVݖG2 ?tQ! 㞕\K9vqqL+z9R:}sߎ\ھeV4g!pd)X1t[0۳i'*1ͽ=} sꑚ%w@A#F[[y#*[?_z6DbWTpfO<2M;Qy~ܶIlޯ[n!FWiX|9;A*x#&I >‰krymX-F'dC1}{sG%H٤I q^<e# {۰qz#c&"щ|#Yv*/d{gO>zPun]pXc֝7VS=;Ԍ0;G~WvIrGJQȮ LT5f(>)M#f?jl"W+YUC-HY<0)]Sj]Z@Ugkx + `p/sN2$0IViLn>pL-ƞVfQ]Ǟ֋tv>bBJ6vRp(bTazœ|@tXJI@h˒THRa$/v(䂊((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEr)(NPFԥ&JMj1ōFU͒3氇Z%x5fg6m6u%Q5_{ݝd s+YLMI ҙB '9>bo !'̤4ikRh}&b~BOӓIwqhMZKf}#i)Y+e9jG \7PF\P*eg,&$] Buuw9 q}s "6iޱsoRIQ*2߀ho^.~|ٗEUaEPEPEPEPEPEPEPEPEPl$*݀r@EjOlW a3+f,13H&cРW!&=3 qޥI>V6v[́20O5In1pGi֣Fw\9(́:.w\67 ol`p98nCqRͲ٬1Rͽa$4n cn+I4/o-u =qҳo"XB +1 EA@$b܁{ˌ\k24vjV%bO`ܯM0i8bHb۱vay9?*#)0FJ,㐣x.!J6H JVCe%إ[I$[yd2GHLRH(eБnv|(&1mlQ +7HzR\1I܌:}H2+`/Lhm1V㯮)%BKڟ|$XQGl쥘aqsNwjB9uƭTli !ci*_[2G/!kc<˨z~ pSBtgo:t>W޵Ơ$Kg\rOLu7Q CHқ{CY62ҸVȱ qqk#-,@ad*M=n`Ib6Ï(7XmonimnLuzjYQcdxQ;˸l hHp9涴:Uv 8Uw|d瞞kb[\IlDxZE$qu&OZLڣW+jimt)#%Bw}+56V@<ӌza7?.4c!6ݙ0%3eIG+FFJ=E( +>BW 7x)~q4mM(RTAևQEQEQEQE_k{9a q֭]XAR&8䟔c?Q| ̛H^VRCУ^8.CsG<Ts^Ȑ+}I(wg UVpۓXz`sҪ\^1F΍:n`~3+;;eMNNѡr#ڣI"I̟2Ƨ?^GLU֖s*g0Nݥ@ ;jzar~;31֗J+hQnmg`!=ťO]>\*{XY19q^n8}0Lc#8|zؖ?G-~DfsvAڝ )mR0I8'k[x,sV ceEc'&Ng>~+Gdn9Pu&ƊkISֵP/d 0)zgYsy*|s-֜*䵽4orc$/qϥD]aD*rOzqKf C9g6Hÿ 2 uwi9_d3~<\MnZ$0mRqZ-2]Ұdƫ z^]BPo[Kv~A~=V">*9g.mל`SZq5"11ں"5yf{3wV0S'v隭R5 oLSn- Fw')@&(XVvvz5^E)c|** g>ySԯy5JT$_8?&',GQ+rK*^C^apcXd{:.ɴ[a'|@#>S犬XsiflSl(FO{<=)|Tݏ0.?\Tf;~ל O[BzҒd}OaD?FdqX3ZC"a h~O(Nwp-ʭ$hLaϭK$<2`KgS,$Q{!*JZI"|cSCGleϘ@jXݑ ̓G^Mw1FQZ= չ.h:nU0$O9%O)I:R*ݤ0 E4acN{M;¤QVrݽ1SXI":sZ$TstE{[Ti?9J!6*M2J҇e } ؓ41|_D\["3H>cG= +ݵG5HJ[Q9U%HۦkFM6T{ @Q'3Qvnb.{“BWifHfvp'ڨo%$Ą*$SX]Ŧ}*cGS>Zd4մoVT.DU# 9Z}5v coP1LVqlw:vۜj,c6fv. 8OctSP|Z}̑ȬHֵ淈!+. @{+vsx">G˥6Y&᱙F%s:Spd߯ix~/!@O_z¾[yw('+{fIOJѕs{`d%7Gh[mItw U,m 7aך2V(((+Ú_?j1yo@+ <\h{6n|v9x;'޾LrmUiOJKxH٭%{T ]^Oq{ci+6).a6|Ǐ^ϖZ nQInRQ獏 S5.du ;54PI) FBU'8e+F}?Z.7+;aUU3]VтXrHuUbQJ0}:qGRd]W,1׭%dʫim;IcnP6;ןzj̷$cz$]mRRc2:LH(*26 -HU9bDhXp oέ J˴`{ح)D@wBګ+E)-7d.I#bgo=>Sv$evFm3 Czu5uA.F>lTUK J%PF$¥WckHF)JiJN)P܁}սG̛71=Ahx1ȩ eu˔e +%tkT,"_.ŴKw Ű9OemN"GשTJ̪~\ ?H@aw#鸻~읤zd*_PNK<؄C*#2Bӡ9ޓ)5z[ܫNO^R|̈=8M.T m9 ӧK,s A%&"r7#?Rə0p;qЙD`$psMFO19ҮG&" Xֻr+-bڡd(7'ϧ_zlrا`r3P~Qi2K `A'jo r#'),E)KN K\FPlԟnd2G CejZDYrI4ֶ&bbEX;mӖ2I7/ +w;玿կVJYI~d;F8VYv3HPqQ(s"o^fs4QЏNz7cwI;utJ\Li%-p.Pc$sƔ[65{O2.IH1vݴ~vKlwJ4.ayYb$"Nk[)+\/:3 1U CeoӎOo#yeBn5fKq$ۣ_}P 1ˑA=zv^.2Wm\,F܂Pm<۽jJX;1QWYK'͔9?Em?o?ZMsjiNqy#R$ܻ dF;kKb!m%',4WU9Q銿W*@lw=QfR'֫}H[\JWڹhgZ̪ک@O\r*?; _ZC#V`̏P0(A8.VwHS֬$eQ ݖ^8.)9J,͐ʹ +*QѪTܫ$}* 3)Bz/ A)2 ;F1R$4NNՃ,}F#sިp%{ӥxAt猵~#1f@6I,I&Sg;3hʹ 㧭IsAt~fiߔ!U`,sNzӑ$FiAh۩QZm @OhD6Q|'|#W*yk6{1 בuǯzhԁdɩTG|RU0-kK@.^I.1lnA),;=?]UEV!$=Jɼ ҋW*$tvq[:I,xˬ~k$j0MrJ2.7c֯Α \6'i+&pseζ_}Q]gQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*徥=(vNr:tکՋ(42yG;nzgޓI .v7լJE, !1dy=Nk.93I/ u8%ĩp(6Bj<8.] 撔޻e-$0+lcsǯ7sKj[AJL^fZ<Z;y'.AT$pimɩ5-b)]mR哟U먎6+o,)ɈJŸ58#(t'{ɝ+%*{2F1JM; EP ((((((({Mms_1r=kXBJ8=? +ulg5i*$GfI;2˼bo.f q\+fT"rVjyY|?f̽;qby$QbcV+lCt|;6OO2+F/ qq-E?.1ԇ$SbM6kr;1^֋QLe#s0 dsޡay n1^T\)i3J7z-[K$ccjʪ :ԯnRVCb0Xȉ<7犉'هSt=z gIV '@Fؒ@KEf1!F|`lj6pڽy?--bR2=d-$l)ӎ֝g9uLtq`(~f]`1L +xq&ri}tΪ{w:×.`U"'WLヌqiT22A9lsL% ?4(lQ˹Ɇ'Rz\8c̙cV㘫)yJrhbH{T\pJ103lpc-~UQ,vo66=Uyx$( *q}61ڢ[i'q) +'RmΜdSWoުliuW0V՘b1!e%FFIi o|.8?XCkqҦO*nE].v,dDxu;1ڲ連0ӰS>g4n8qf4eIA6{^rQ"S \r[͜RMv•Φ/1Fp$E0^g-眜ʥE4XETX&*K9O֮A7fDH cT=Yܧқ%ҥ/g%̊]+|A3q^K ӕp(U $##tFeu jԨKJ6;q父 m$KayhHvNJ!r%FMcU4>\vqk/%v(pdmQիHM JI 8Z_OX| 8;aszwGRXCyDzsZNx-gWiQy{֑a$1!f9#$3 yoqޝOi-6_?s*?' m4C{)\OOJ]XIir쌼46H<Htݽ6@9U4-X0KTC,]xUpN7Zk̲5eZ&Ex9h&x#5mk4+íbЗ2bhEUQ@Z#H#YqZZ$7v whAK12ijHP3m$I++*k$>V0Ivjz1ҚI^䱤вw2$׮bY=Ryd^fl iq#O eRNzS)RIO;#{S{3Nk] co3ቷ +wb?JmeeOr+Ā +m"^=r=ڊCcbbA'瞵7tr-9RY228>YiNVX`n8Uǰ^],Xxr;vP%1lݑOJBͶI3$w;deO czu7ٻ өged`)9s-9Y@%beِ3?zJrz!2ʪ9 it.NAA5^/t? +/=y5*a6y $ue$ۏwѽ5ǚKyj@#*&ŵՆFBv2:EFScIpR &',-ݱ~IkeF'V@_@/${tV78c';~t,5:$z%o;$q=3Jl13yoP)gc nܰS8,p=PkOcC=vڄݎ +]9ȯ̅n?A{##]ǵԷ!Y[<_j6?{v;t#[=O]MECd |r2f߻ǭYh`#9 ٝa^L~T($WŨoM?E>~_;qS.DtGT傞zI DU4 *9\a[ݓONa&ֹA,`c>Gz<$w&'y H>Α'ṛVIWo 8[R'׷0ye1?Z  d]|GlBZ1[$q޴U/aZ~[RTvGNxG+}+lb z  HX՟`:qSm NeRE3kl3ād{k-TudbrQC&Vpc9^hƵ8TM?;Յ|:}L&"f,8ӧA;JF+9FP:Po29'vI-kPFNjeŇf +9c'81))z դ1$m +ǿqSv$ۻ 0?+74- Ό#5?I?z`4ǝmx m?ZF >‡4)8ŷJgb2y0 ?K F>S42P\')l\4y&HBԪ:?h{VUl#EdãG#ҳ|WOqxӥeq uz%]JRWFV1JHY](9gҪOTYXLrxoo G`IPl֗%);ؒW[$V1t8 ʍWgl&x$$ qUyOn_^z;% i[wO袊>H((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPNGh20iP\6I░G}H?g3A2ʘܽ+sM֦UkH%g;C]]*?)G=zg16 +'בQOAϙ)*6> |fz2t!ٴfGO rj[]]c'*s۟[y9G 2TtDPZlI "igEmW̌w3z1= +tZbGPH,y8V&DQ":sRv9MNN5ЭR³k֋'0G Gl'5h.0׊ĪF'' cgsҫ:j)Õ78ximϦ)uiB[{1ZwLypޚVbU~c={շc0MWoTA:h r}5ܓݔ8}mlb~sڡivI<;~T&q4s:¸eUoR\p7GFX[,X Z!%rb +u5Q|_)P4ɸ4W9?TC0Jr#$|zlW6pCv:_%Ri'm?[V(ݑ0jR;q9oVRD#;=zzTimm՝#\)_Ny=VR}<)$UXÔ> +9MRۅV9aF'iadz}M +Ȼh^p3F>_i{[OfD2[svBH6w<,јT5j$}cp@֫] SRxnU~dQ;Yyniqq,S8#aOqީ4C:8 J*q})g 8~^H0y0Q)oo4 yq!.r9Gnna[t$DqgbH-|ݱ*,riRlklP.rqM|Е(?0۝Z9nn(Dd''eV'FN=qKo/"Az`p?Zxako!eXd0y'lҞ"B/񭒋O*IV/K$vv=+%c7@銲t"A"2a^„18<ޜ{}hMT M&]2a"7(+!5|BYPr0j1%#̌+[SJXZFzW4}єly5˒(|}nWn-) 9zg4)@d3u9{QY6W +v)})B6ga.6u2"{=*nKNJ#iDj߼8#9`89ܨl=ʦV(d!(&T/{Ih?1E6ޓ$ڳq߽ pNIQ=*gK1C:j\%[Xsmhw:B[7NFs{qۊwd걅RT5Vg3[=ct. ³:e%iYGI'^-\ta`ujҏg< O|.| PPuT$+V}-.1izH2qEX$ق08$wDiY'ӧ}Gf3ǵ* +y$/6Ewd8ݙ2M.!1el< rNKDvaZ=2=>%'q9Px.|ǚ}RomD yӞ;RjJX9d`>fǯ89$`ΝqhJyɭ,JjRIH9KZe ~NUs2pUsǠ-ٖE%RU|=>_G.SjzoHy*dcV<đ0=E0lVT89$2ig3Ԋ[\W#rd ۃޠ]+9ϯ=?J;m All%ݞ%tGn╬h)%r9W+;ukx__e&o3q !ڼ¦Jz7Qk2k,s8i`v'8&Wc$`ti^<FsIJu F|fsJD[d8bpzrE,i\NyJf%Giry?J9%N*MF[[Ompȸjr*$6 o"DQ-ۂiaTd Zn&.NOM|娢>d((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPNV(m~+䵖++7C 篷4if #)v5S47Ȝ: +V4ٱs P-WIǚd>󬤄]K#EDw,ya䚿'b:Hh1Η{ҍ;,h F}*VEEk-i{A ,6c{f-i T#%7uϿ5,0*G(1'An*8HEI gh>ٳi7M67~v|~YG9=j v+!lckJ$ag05wkX<g'OvP02JQևAEP ((((((KJ"dav]'6G¥ ] B'}k)NFaXQe!|t +vﱝqm Ӽ2y`(Y6oمI\|liFsF\3cN{%gl cϮ:ҿr5שr=ťa7?Zk[ypHeV垧?XKr8z{U6sӅNkfANnI+>Ug«Ħ9Y g9%ݲ663׏hMyM#jZi0ڏ)FAG5a×vY펝{KN1 ]#ۊ[ֆyHb9jJ\;T)7o TA-L.*#aykwW$'qW[[ |FhPj:v+2$.c#(nrVĐU3 _lsߊi&Vv; 1{kK+DN6eЌԏ-` O*(D +fym6YciYHUM۫؈s06Ȯ<ҭYy ;c4ta lʻ2|rpAi/{Xo)vG6!Jğ[ЂbBYEl9B 5n7Q \dr{dK+)o +`d\_zic:G;Z~2D2LG~>Q P/Ac?04(pN) +%(2TZyt{14aIeO?Z0/ +~\g'˲]nH١clCJu#=xFf7}2$yaRs))N.KIKOԱD%xNK\}*3\qSq$f'@P잦So߮25>r~c㎕z]:ʧp2OY1y,7<֍İ]4hr{#{Z-Ke NӜ4Ձe +O/Mߟ*kj LPO5dY obxU]#YMRE`zfe+~աRG; ҩG%čR6srq`L3#;(zM8Իֶ۹0V2q7q$$W0G۟!vNҤuUnfT_Y82?C0/n$@X6G?(6Ԥoݏ2]lʜ{VT"(H>$[xo"KyLUN qOӧx70,M~?նr*INf]2o>sWbL $VYG1‘J%28󞿕,EICOn;T*ѯ5Mse?Rh^8ifc= \YÕgorvc;wa u*$_3O".,gf\QOO?ǖ7VNe;6?^?r u +c<EsKN 0cϙ $);J=O_Z좞+AݴcXG,L`<|eM4U]NtW=rG/dSaֱ fAF]s-yБȥQ'CTI=tI׺!OvYTFʶz>OZK'ץG#Z0̬@f;zw f~cr$34qrR"t;jǞѻC_zW2$倹O6拂؜Y@dHqTvvLT *P ka۵M:,ҒrO4Ԛ؉R4-.s3DcH9báW!sid唉7`%Kc#¹prN{Tՙü,ᮖ^+YN˜]2nmUq{_<[IK7n~<  OM#NR礬~+@U U-E3)9?c쎬ftTgq_"_D+EJQl]C;)f >޿jpR]Π[-Yԁ1O}nL:(׊|h[㞕,lpJ*#=ݼGPsrj$ZTe)Imsɴ*e}lGAA;GNqcGC)Pg:6$Hҏ38$z+A$)'9=>&N0i pRvg隯i0u$h#W&mUvSЁ^fc6>ssZ)i*2seP[d6#a T#SY|.T FZceʠ$@㧵'aRKbjHFwʪ@ דU(r dЄ}=qjo,JLҳVI.#]0o:ܪҌTƞ.xp8P*;^AJVx 28* ԫ(e9-k[v. +mUʌOG!ER NdX~ucLIHxlxD!k{*۾#C{+rLdAΗ*nSb@ vوW)cg;' 7tשjL|p;V>^mrXf ?\ֳʱ3J| dS'ΕtCi +AK(`BYKrrvt yl$lOWxbo;9$ZLz[,%Dr6A958G*9=OzPu$C1?_;z9UXa9?Z#j5vZrcEmI,#7-寔qw, !٤\U%WFη"it/$kUG3N|gl9˕8>ίX),[q?ҠNyEWf_q?OֆKc ʣu9K|q#nZ,SH,⥝#mI + +$Z?_9bftlKw\RثEC*:_`__R* [xPʹ'ȓ,|_𨼛leIo;}D=fDoL)?zT?g\eb6 p^JXRGfJcy6ϥkM)g,Iی`ZwlŨmQE|QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ܑ@y<?ħ9@*}5sJu\f(wl&(3;HTm9U4jT|`t5\GzSpu !$G ǧuͰq)eӊʬ~5^(I* r:Ҟ丸^5Ga;b$\03W`VAMG?zW1$U28Қz8ZEm^h᭡rNN:~uM;̊(@QEQEQEQEQEVqpH`XK7u^3ͫZ}ZݣHVdfWFe4b̡H\3G^OJO3%6~P[n;hID~)֪Cl)99V:椮奻~/#k]ˏNO>GvȹF hH%IuU13>x\ `JpFBA6|?V(㶞b܇:" cqq5r-A)#LQ{c\Y#WF朴W_&bo rJHLm/UBʛ62H3c5֦ɔ| ҅ O4HQ4o#VnM u#w֚$ p#c*!o%hıe$;s(mIΌxF?< +8\z;R_VہC֣c=sDcޡ _Uk58ɫF!EK]kub *o6~j{9RH  XqDgS>kj'z{FGVYs:H^%e*Hir5CN?E1v4II}Sm6o4K|$9(l1QbX{fd<8 +9S:wFd"<(#'=Cbx F@ɩ`iȖoqU'bRKDoJԤ^JA`.:_6=711%:t!SiaL`68KZz$@ӶV.8?5j-.]oCұye2~q$i+EFzu/%ȷy%7X(=CY0,:B%wojN9P*9L8 2[Xܟ4e7Q$T #ųxpa>3WhK𻳕cҧo.'=ij~`֥pdY21z~&K[2E꡻sקhc/RFp8=W(Y˝I #4Ӷ%:Vj&=ꨄ7C ڄoƿx~9E Lf,."(ܹ;Md1[#'RqMj:.䙄r(# $psۃUlIBjA \}JrۺB3~]0rIr> oҥ-q#(bcֵSMhq V2n4D5}Hav5-3e=HpqڭNnZ8A*ǖvL6UJ_ 1 է3P?0\*ц`[ *ІYG÷9ymK̹B,(o'=qJ:IX|*;y?-|N5k4fpɷ=3mly¶G<ֲ,5 JP#"8݌_⢦V ޝn+Ko1*}FXL`Ô#'3dӧ+װ|k,АVO#||g$*xh +Iq_H Q+ +'ޥ:)BgүdEa嘒G#VQ;\Afێ3ֲn.BAldT= __nj_I}y,w `B庹(O.y @$zsQH.BY\ |h^9وvn9 V-uCpnHD9Ym=|#>9Sڤ\d>GqUJdWpgvJdrWPoh,ַiI}=e +}*iHN98 OY#  3sWhJ[^DK$m3X1wg='ެC7!>U<c"=}1SJfME4 ؤβƅݹpEjjfQ*b32bis<:vLS.mDWw@xx%{$:-RRS9:(O +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEܣ}3[JLdP zRCܢM 4Os"TE7~^~Zc3)cѰL͜UI9˛^[qe)xFiHmiK25čG|S츕QgE; \sS+n1\!5'Ll +:[\I4V5K6dCVI'+)c66:-FL9{Pw&5HNkm݃q6 ,Lv?|N %זѡ# :gU}{tTP5̐1CơdN(QEQEQEQEk3ϥW%2zUK 2)|²,hyom,_Dž/Ӏ: oC+%}ou#Yn9IJ?٥HEAԞ\$q6FDUHߚo}ŨO,띊 =FQJږa!J.gj&iI8pSjtzo.x +vT$tO68+6Ӽ9 H.D^-@y@*(n SȓQهʣJmں͘"۶i#i6hT48pښfb]x N89>kUx (Q/P1T|+%UcP|ҥfF +)ߥI.8,i?(8C /sZ'lq5M5в ~ښ( q ¬{!)_JRn +t;y~va{ ޛq#y#gh< +go ƀ(xYRV%O8}nNTי3SNOVXr6#p?wnv*`Ww~jX=szsJK[FOӪ 1c9i wd$l 뚃q i&99E+ܵoqLC`g..pNTtPI yDXRim ` /rIr{7ߙr)]chRG{Rup:U5`#!BqW˝VӑQKtvѫ9vV+ y +V yeqw?ϒ8TH#ySVłHO#VBSr3Fpjkk{KJ.s<_ZV|M4r6 +8jEV"C;ig +25 +prU ^s)&Rq aϮ)dȋ`ӕKT)Y-/>yHW ci H\N`UU6g i@QjY;<ci\Ԡܟ_]㡔G{i"! b8?seFШ!ܬANfPN9&O=D[J  +V:aG}ne[Np'VRCpHۧKw-A s8DF4*{i\Y-})wB<7ٷ+7d"eL/qo|`9d=N%h/Q2XRhFqg:ys\4Q,~=p,ljŸ\!nU]g`ǯ]ePQUpȈݒyil1ܦ9n6#Uqzؽy [I i Kyr$)Ӿ̀m2GCgK۾@T{Tť\E7R}tF$M +iXn-8*'(pGXmXZ5Ѷ2[$1Mpy% +xdU pO^*k5*FBONϥhͯsxI6kyIq~vF\1Vf#.GgXbt,;b=5ηWӡ'|rLFGjP(8<ֺj)HQě$ N2UnuvS)rA*c#9+>H{Xr:ڵ2XJH~5s\3 Q֜7%ޑr0Z1Ok2sGZEm4ͬ<~k-;jpJF6*0R-.YJgYm֙5nBO8=hw2ZmR}b6)AI5j#҃"܂\ c9#5ٞwLtp*(AP]\G +UP$c@VRQ:)4'ܺn;%ȚDeOlڣRIAxW "; #+Ov0*~`>Qw05D3*jYZ_^8̮T9VIr$,Y)#Sw:N.c:9%B<#(*s%̤ T11֧)" LB I 8"3C'9"-NKO_5Dv"y%99z˜!IE{_’@t_ErsXm `NWQ&UӯϷW\-!:r_ 8ZKohrłqOR{XI7P`pq}*is"rsM[DԒn:M/k-4.N&Hbyv1o;l6*G*lwgZj,K#,d0u=棸DWH ҇{jJ;oDi,fMba̋0a8 +9=Tfbxqi,q9ϿgkSu9SW7'Jn:P#jr/U;J"FA8dZeۈ!R Rv4&QIE{Ͼ%n=zS?!kc R#A +xZWLCG^k'̯"]N@s`bYsD (A'qP)ÂevauzS͗A/Eݒj3].AqsvR"\24Z+)f1[6֕xQejqO-# a=y}kD89m7wih\]"XGLgMYIS})ʐ;^Pd#ݴ5:}}VV5)@8=IuO>EWYEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP!(b +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +('IH$3+G=#Gь1]y`d0c*YFQwR*\ .v]}yђq?ɠۍ.OӒ9TnسDX9^qE{[i:"¹Nz֬sů |Uk$rs9Y@Yp/s *i.>/ +R:ZQd!͎\^vR|ʂ1yE%P6NѢW攜SU'E$JȣhZx `ӸgP=j +$ efn?O֩3Iu_Rs)Ve=Aڣ((((?6er}kqkn(t<+COۀqcTIu:Kپx_qqW-o-&J*Q1?.?Nys*Jl?Tʁ$ [S8I'JE]/4oV0$q¡]6y$|mSf(^\@%\.Ҙk?f{f? +IuvPӾ}塊3l%1=̗k$Qͨgq1އ KiyKc2p>f_h.1ێAOƋe$a۩c +썙NrW9? nHWkr3L v +"e*I|zvP5H>ZH9֟S%eM5O;Lѩ0GόC㺸?,0~^GRت2sV$dkuerX4 +smI>rdIB aGIl)yA8YA)etPy;Yմog2LN 鑚uԌS KGǖ֦ܲ+.)l#5}ocփIVYb$}p"QT.w PY}pz\n^CqTRJRa-IrNy'-3 ەXEZv.W.H>jS(TsPs\U6*#߾HJդ;L%s׭WtY#LǷݐքvc!sE~ȒV$[%["[w8dl #hfB>JN~SuV-̤w]#y= f1Da»UJGn1#xd~2%(VOL.lHX\TkIJ_ZR`OW (lqdi*k]7-ۿe`9$*Y.DpL`8b} ުp=*G1umd,77> 0` Gu#?i(*5ғI^/[]j2Cs}* +T=:u^s g_L9U\.'NZKO^EimP\9OwJD"aj +Hٹ$ˁU7HeDJ֪:Ti[yc5y\3O"WGVqOkKŐʮE +$$0޲]P`nN>|ה%Qi{yHܣ7|o'L^%U@O_Ջ8ܥ۶t/;a皂,$6n:F<7ga#IPZہ(\P3IocZJ+o˵HcT Wc<|\gv8⠸&:69'O5fR +`Op}>ΊiG]=7xVp:*Z/͆=84B< rmqPiJΚI^$g'!婳2$L N0zfY%2n7sK<"{rq1I-u4rM;ZPnݠVª8pXL~]jUdbO=ivb9?ʛnw*vscUb2Qۊ.Rk%,u^{$[Gb$¬G% ›&R4}>y! )`aaN\?_ҝ%0mCJkq$G ~O;(KBv;Zy<IHڭDҿ?2 +^+&h׀ 'zܵ{$m,'뚏1s*˛KZ@빀v GJFoRgl(t TfQWdsެ\lc=J$bB:֝~]v) ƋsNE +NZ>+bWl!n%β,`q֥Q:)ۃS-]lQFjd`%.es~e#u$vI`pNx>j;,,̅ +Tm&،FK tgȩM~ a%O#!sxKIb*0*fQ=nlՃin\E #nG'U0pG'W7-ʲ ++OINJjv1Mt":HduoK3jP\צݻDbPn§GoZ n%W-lt"mbQ{#xۚZaqm#*G>4Ȗ& +PNrǯXvUe8*ZD䊌ӝ_܀y#3Rbf*Em,ɹUyyHW;p@[fѧ̩u 1ݻoOʈA 394m2weO,.Q`Uj[K%eٓ?2(8Ku۵Bn_zFoݐ{9 hا^Ú/gaMu?Wb7 铎j yv9>⭸~t`7qH+#\q8,uif,B:gٓpc51q̠dd\0egGi.$/(VeMvg* FA7pOozܫlc$ e]+7jtͨ+-,Zn&v+uU=yת1Cl1}899PP#񪂪JdA#M1$ȩf`wx$]s`0 +N*[} /ce`H ;N=92|xf_)#c_7SƋ}~f#J\|*(t-[ᑶ-ɫaD9=ԮKz2) S HL{rm֞4o4 ~QT2%´ #]Z +Q`}1H+0N8{)?⑌jd%7r1UF/kx젒zU5Za rGQ)SYV'S$8BIRR!Thcden*9}?ijݑnQ;ϯCq˂-)"Ig=[+mDi%z5 *D8GC @:VN8gFCFbHQXqP`r)DWq)6դۖPrZI3TJRUt-I +]]0: PpOZnNP}ybj8R[ +$terqʨ'Vi ՌgzV482̾`w8,`/(p }jJ)Moup,AYvOSڧ8 O˱d~zIs8VW۷OS$Mtmq'Ҵ8*i] ([eA[Y!M1]A~`NZ|wfMnZ|GBGPu% Y/xgc~^;rhNGӷMo6831v'?Nv%0,CmR;|:/l*-o~_36KY- L09?J[hs(% +m[>]2CTfdrZ&>ӓN3;"E*P1 +0qꫲ²;/uⳅ[\yacKʲBi:N.J8Ӓﵴ/o*N~id :YDTt'JbKI"hXϖ*'-:}kG]ZxU?C>IIrc'ӟT \ni/*GO>-BkxfYAeS(R] њ-J6ufb% )nZlWl|zw%ŋyopqU͹I=؅U9u}bqWfl,0 +:{$gOy=x4v"<1֫\fXb;٧dܜIC4JV|&| 8$1"|v*!;gmC$۷U,AqNWʹt* X ?VF.$g,})8.5l:ɚ#c <ʪ)*pF߇֬D6džc=:♶%iLATP3Ϩ*'$ ;Csk,^j춎?,%y%BdVp 1X8;zTTbZ%2$'Ԓ; Wk|fU!n={ IMcq[˕sǭ5I*w]4+/4-6F"'7 Ǧ>2 a#,3VՑWxE].DopJ$9}}\C;˖ j/[f;G߭Xykoݑlb&"'X$'t*/#"g۰qK=NX#'Waՙ9)1J)CDZueט>zFP!#*YN^K,>lq9Iʓ\M9$CO:M^+:k&QE)98xaZ%qJ0/]MA$t̀cڝxG{ nLq<޳,!Ftވ\z?l:;j3\ܴ*aV41Jg!үjcZԹ21泞8N2 L&eIgvbGָErh͜<=nUgʈu 7VR+G} _nQ]GQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( "6$}+Biml^/ߴ;89ނn]bg?YFW#MY7VcӖ/"MJy`j?iViLo;};KXx%U|=1=UQ^73z +NΑa9J[Yi wPJu9ZQE +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(/*Or9<1ǾL A|tāS˭ѿ9gbh'?(\R[nc-V7BVJM#?jc_d۵]2<̻T)'i5"G @1秽#"HO?ӥW2qU2v\" +Hsޡ$I9'1QE((((57.ᓌTf`XsW1fyUI`ʅG~DǸ9?:d#z KteO| iFolⱤ%UUź/Uzc4anE'5NrHS-MgVW%1b}(Y[iO} -@ISW֛vo 8H .[s0OL`oJP@lqOH%bD+|0qWҮCq#:ezo+[4K,ie*Pwؖ+t$mNy:MOr`U#(21",;Bg"h*'8'oz=Ėnțqڝc +.Nx+́I{Wq9략2I?SZ2r=z۰[b +0GOjV,Ѷcgn3W*9=>ryC*t8׵kkܶO-\@Cgle7` v})>VT@T6+JN$RB=3>1MFWg%sǽ9BP_6?)\]XNM^*2Ds pE$'+{?YڪwaHgX Eء_Reu iv1xۀsڬPPa n%RK!ÕENWR˖tn-D]y1⭅m\X&a]hyWha:T4:a8VwK+Iu*9 X$ ?eɕ IAFA,99jœԹZBQB~j5=ಓ*$ N~^Jo| 2Y8SkMڔ^ljY_7SYFݴҞ%O%f5 +j~DIteR~ qߡ. 6ykv "n'E5m屏ʳEBC w⡳*1MwWprx^zP&bA'*yf*{uRc"\HShp@Wl*@7?#HYsn8k cpM'u wuD%vMZpFNqR4[p0? +Z҄5 < +=UߕVBsAV$qK^xDWwu38`<f<6&P,TpDG(Tt_"ݠbU35,ʊN'xĭe$g5nr-RU)݁zT:uk㨖'<ՕIQOXQLe4jGfa8=3ߊvQ%=]Xi"8to@Ohy㊡"fRi1ҧՑa߽dR;ԬkYv}zK=Ç'3=k8#^ _[1(XVSn6q mwL5uֲ;1w 9꼾h=O[hüU!|ںbg^1}H]6sU8bqnc1Pp=ZPF2 t6]Ep4F;j&3vFԤ<̙Nz:lc.^%X.THv=3W; %Ā($v1Ef}uy,ۿ5Nc:ۻ+߇* ew3+NMFyc-{*TcҖymuBC6#ϠʯvS%ZKGzD>etnBڭvW-$;nx?5R /66@!x,] }q%uNNjk ٕT<G*%wc6Kڸ "2N}Fa޴ZYs $ +g2EURG:;/6U,H8$qZ$F9 Js!YrꥥڬNGA:;cd y~Uu!r[Ū[&Й\c4q \oҥ6F XNybhicv*O<դ9*9RVH"trQ{&HWΥKjDQڮ#O}"ewOTڵ *voߓ4#8Ey2X'>"$Q̑[OZۡm >Sc5$c6K/R~I 9mKEN"d}(V $( +wX{if6 (b7͌Q@RI#>Q+f;9⯰N_'D4Y`q{Kq[Yo^#zUźIH=px)Ck)"c UP@9 +"MrTP3# +=~n;ֳuMFd$&r)9% +IX>VV3ݰQ]vjI96_m_սj(悊((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEb[1&(g@EMtu{c ̾MH  W? _-EYo`q*~cK!9AzBxMo%-xN` s;TluT= 峆O(HfR=j;W~sTr\ipqIE9tYgc{HeBMz&:GŜF.$6dg^%Ƣм8%Lq sTJ6"璳EPHQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEbu"e6 ֣4$$z'%uE O ;9qs~DG{|fi"8+u,ZYE5'@c]I6577Tc{\M<,8ګo,)ȸYTr?ɮR7[vJ$,q嵵emnbuf(ۆ9UVv +(Q@Q@qMi9~R jSw) |Hcۍ>Ե5|Չ>kr dR8?:) ry#GEоE,b'ľc*mĶy5S[xg1T)4^}#]Hb41#Z&(B1t|D7_XUW(u$y!I|<9#qRws{yIUVCK 3d)U+heZܯ-cw䉭m$e;S"hUHpCn¾9#tMF2n*jPVV= hʠ=Eei8?]XM,DY,3ZjZ]RR县v{e %#u?$v:n9[;&=ʫZܨZ#bq„*p}zyK{&#M#9%ʬꯍ_{6KgA=wWɘSDcWQ,* ~s4)Jjv*5epSǵS 9'.jNe°eC.HR g-A-jvm*-/&ٿI9ᘎJ o)c`-=1Z5VYE7 -cdwWBD@\Z8%K*Q/%.qRN;`zRHe+~/z/oFi| T<',s(;7Ea9rK) _n>Iq,QH.TܠcN}ysyazuj(x3'`'ӵJ\ҊM۷6xJ| ݁Ҩ^YBOpN3ǯ"Lj0U3ns1ϯKE, >01G~*\z2QǥYGf#T dYv>Rsb6K =px϶jдፚWiX +B=UԮeEn<ϒ6$>"ڌRVEn"Ž  +[$?'xa[$F\睠:ؼ7x*ujR7ӻB2(nv߭(+"UKdw_סPȂVr }~F(i*2Gy[$E8 rmg $L*'~U9~n˵GM$gdGVy%g2;:j< %!V gqJ dg21oƚrR~iBe ŗorrz{ӶCeq:Ҽ(Yp~qqDjƲ\l}k&#(ܨRq10u<ZDlU5,ED2~rr҈͵ry<t֝fw(6[==FD I~)mc!{gNj;K t*}9&kNoFXJ`w4=աHC z]Vn$hIo6i?r܌w8:RܾnU܆{ĿH.嗟EM-)-Itd퇎Uoip\bG/y8=3Ew$syd,(*A'#lsNɮn~ZK} Qoy4Hee7gL~Ԛ-ۤ +s@GNO>4Qrщߒ9<cB]Gm RrK7&9mxxO?F$%Ҥ9m={Ji"F!| -nkFKea.$@s^ B ge9rN=}}kRMN @4lNy`)S$*3MkQמ995-8|^j+oAĺI2(\60xugX5i|. ]Tp9ק~WkC#o%eXJɌeO~zTO3-c=y9iov$x$3Z"lA?'B{ \ޥ^Hs +(Š((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEMm*p`_ +09bsӄqb)1r0|ߧK,ƠYr1ND\z? g5aa$ҳ60jZh_Al݌PhNT^3r=J.20#c|^JF[8V=?Ɵ_ә8`%'ɫJm%l%uO3#w) +>`?e۷Vi#}!efTL1=EC)i1 }jXCLmcM+F[tЎHο 9S <5ibG]12 +bH! nzzf3릻k P`ڥg 1m ==@.^i i$m R﷑VE`b{KHqM=-.|p=B +;Ô`p֮dri)hXb;P[pOQe,dimXJokyI¬eba=k-gm8h9:Uy?d)C7|`V9 2h/dhd|U@\׎oz;KZ̶7 J|ZjxEz{,U' F]J6(Ñjq`BT,ǑxՃrG,Ɏu73>rc|ixH/sU$i#zp}}^&vFaRP _OziXU+ +îoz9kav[ieWvu` <ڕ[\ {zVyۣyxFGP_ްaG#YRӑ#jq3ey>Y;EVIfDq"d\1QUVxg? GnqRO:MzdtfBnd7Us|s>kjd*ԣ= ?3˸R^E%ݬq$=?ϭKۦrܱ8LfЕlqIlъ -XXg$ժq,@o7EwU VlZ3#lpB^,16rqxㅖcJqZ%!k?YLaT[BNrHTr^5gPS,F"ew^ssYVEw0esls䑢dxw9sIa'8߮}ӱnSZe,$qzh29YЖNjFIAP@rwg³wkf#Pj:8:TVY00GcS-kLXp9N7 9;-eFLqtc׽6VVYT0W@#kڮ 5ћEm+o2?.."8vzMX̋ey;NFc*rډj1r_ \#YAyQ톣9䙶bA>zU˟)R4o͸qYew`pI<TsbIX*z1{-;ELW$Pɐ9,dr yT6M#)˟ӃVJ`mrB//M%&jOl +ȝZF7ù!FEy_ i$1mF̯s}"ˎ\ʽ9rF;ccF +7wv4*D#HU?0+F[~j?{OΥ77TdKɞ x]&w*k)s' <˫تy*=Hp*-{XlylA,Np0G&Շ9BOӹaJ븫m38&!1lg)OңJDg7Ubd|Ιv>o:FҬh^@Iw8drtQEu4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((Vޖ&42a]U#E*Hya-'wսyW +!vFFW`7B32VlzzV.5&[ BcgTgVFX(`3JuMP4Ơ298 }zLIK#CCq֠OѼ 3FE]o-l1c+wbK&Q`Գjm53 +8TUYpA#?̞?*wO+oQEռ y;Q;)`kS9[cRIe`;:*:QE(((((i"1p'ӿ<'*?j(bte-1=?Jϥ>c溒CIp1jI]$56DF@?0[[23\?qM)ԝ8Ɯ]BiIi!qOHLa +xҪKz #̊یdb!Hʮsz:!RQ"V)$ 2OcY Ѹ-+ֺrwcnrG^9=N C,^yth#p[4s8#8>aNGĭ$#'swAh]zLѹĎz }IێZ}.fE +3{9=jmRU+ 54SYr˞*%I0rSUq*Z1NgKmyJ #oʣڥKp=ea?Uڊaa@V.4̆f(j/ +vĭh\@?'017 *଱ǗbW8OU/gQ'^H~V9#n:NHJźu"fBy:pI\Pshn[6+ޜ~n{FAw9_GQ-ʓU/-VFIFPr}iKVe7ӚUr.9f2[~wSn$kR28v(㟡D1 ` `(M_AN2oo VR#yhc r<5hK=8捚V2V۸`u ,y5މ'N_wldgU Q<˔ ޴I%ld_~\Uf39,A$8?ZKsJSICmvIx11RЃp 6 Ckpy!w%FJG=*_m ,$jR̺\sSիZnDb 6oZmyydrӐ֢ih^)vF*'1#9$}8ք0E~h.wВ]M5 xV $+\|+H +;6 k8EI#Q5ax';%nem* Q\$ג:R,~_=5MĨ"c[LܲJQHeKg+j-#cl +XOX0|U3Ҭp"D$BV[S]}m;efWg~Y^ɒPA +0:Z(wzql$gVa6{sTc Qs)p/.wx:&f",sz< sLBX,ö}s[^v9ʔSWi3v` )=:DeHW Fn}5 ڹl3T6]©BϸԚww?b:$ḯNFsu S%dyT)n< JQxZ_qڴJQW8jNYJӯJ26sjDbsH*sk C +@?>꭪}` +%T ZɩwvYl%t@ 7ng5wK*s#UfYͳ4@li``ciY\9)&mBWȹ* . ҨJ̞rccsOz ە;"J eC׵g~szK+K[HA gfFLG(֝eGi 1Ú06CnEn0=zU]q֛M5_6#ydۊQ/%xQJ. +1|ui;;`hx<0yl1GbCyLc=ja^[iܖp]HAy@?j-FGs9wt 2gy#Mm9PvΈ?ϽqpϦŽBHGd9ƖbTiqIYBkQ:~U Iq~ å̀ wxdinY`Tն2ԓrzRn& r@IVVlg^~u~Ck +L>ΤW:cґL›rI<э1,pX":cަaRn$w)s:Pm9 [y yۘ 楅[ޭ-2@gB`}~qf+sqRkhs՜q3-NI^5?ʭ[yŤ,d Wϧ8ne[ZGX"{& k®xbKa$Dr6MgIb-,ypd|{V|o!A߿3+%vڷv C|~ubQ6p w&(Icq$H'(qLydON>ZsҖ=Ws2_5{X"FiT/4\[Y_e-EAAAG[6&x(8> lfYd =+HI6&T -ⴶk*8b0?:s%A)F3V!QR$8L֝۳a!'eč 8YFG[:$u;Y*>?cͬm4Gk"z`q{ӎEVŮ :<6W1OpNJsvT2K\YKu{dNۆqtNO-uoYv1Un3֖KY4z24 ]vwgQNb( ((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP!{uݸkETm`n +EbQIkӊfs-<,R\،>;շbfoTܴsFeAr=*[RɖWd*F )[RnB H䫃~R33}Iɦ +(B((((((((((((((*ݖ-)]G\{P4vFƝi]Ho`.#vOtKS/v6.J3N3ҧMZy{gYڼ˽ ֤v\>Ta sU}>Si5 w}*eKF|2Gpu:R;mo?gI#v8X\ML3pZ(,Aoϊ {p1H5VVL{ڤ_zDbK +t{{d7ױZw$;J$>`N3K<R[;P,,_fsgcңnKx&28ojMui)[H`rxZ `>V@2q{U)%+)r=hk aMie%QY>h6biU-b>oʠa~I(EPEPEPEPE4q)h*H7b'd6G8=b@s6p0{yhǵv8#=)Ѫ6gET3MYOPDʧ7#}pyǭ$1$3<}R99rչ |gvC킄ۚwqefT W Xfܮ~Va'tO`˂0~1ޣ9b98K͢ܓqzexm<4i?(=sVy򝢍dXӷ\V :vsr;̽kPwnV #g~Ui&rU+,,4,7m>MxO5qHUۿ7LU-bv$7 cڡQ8VhmV.LlTD Oa)KЫnP1 J@Ǿ;RE0991zKFeRzi_CI{m˦9d\<̠d_ȫd:}*H.v`8T0 03ۿuv;+8š㡔YH `]{jyǙLBŢ 4<*68lT%湸HBy ֥VeӠK*㍜q:դ * dyuwd'#0pIcwvL +rWA$gv.y()3J<>}1U +}hUQҝcr\aV龝Nȯm +r H<6QJ̷[j.t$lvk6}Nr$Pm +QPV2Dhd(H*՝VwG|F# yVQ j'+PaԼ%g[(YYrwp:]] ]Re}Oک]\I 9NT.>Vc;'wz0pJO"81+7Vn̳Ȯ2Y88GI!WfF&h`)8i8Ӝyd޻ح$v@H+)Sm ^Ln`csZq~#`NA7c;CmR: +GnI#7۽6Йm0@ -rzmyV&U8vV |i'Evs)^]0Te9k3mӷo$2{v3F`ر6)' 4`!Vv0}?^:8V8y=*\)vIOZ:2_*^%R9wBĎy8U#h-nO 3N>r*==j\3Bgx"Sٽ $qj\7[Q[H從UK/6`CHJ+=*M,E9=7 }jJ?8ji_BCrSsr;)k"Ӎ)8ɽ;vzȡ'-w( r. F zsRpYq$sǭOrkj&Tӊ7ZGkH>ۨ\X=YG.Z#м%Um z6:5 g7 :`9uqo^wڪ*N޵ +#a1r%J'' #T-̀ȫ;glf-i/ BlP@ SyČU8e*ksuu#;I{rUd-~zJۨ>p3Ds&53&kGc$* ϔǷ6"6G1sU\V,ђPEP}hr] iҔU63%+wL:a\@VmhGAT6s57Ҷ F3$`<%ӟ\s5V7q%an"]*<؉HV%85jW?:cSOq t.C+ +XE%Zf!+ xc1ZqLKKy0UGa+n ˩LzVXy%c n}F?%ݏ $ؤ=m*RdIK)fZHpYQpIQ=} gcy6{r~_|u  +Im|鴞{ylI{-X ݽ1Rx! WyM@YF1{ҭCzK`3k*h"d!!9jebX][U[k#w1jh2Pӡ[oY.=jy%A Hr) N(oqQ"*v%FϞ)s_%r@=\+U]+M4X[i cOsڒM˚r g6i OlsԖ98ರHJ„oO9 #4N Biӡ~Ɍ?XI{,Q]s|9nf|DJsUīmL@];([e6$ԑ3J(CP}[;[X!%~4R$ f2A 2{xD@FqޭIsԡN:CG0' _J܅[@]HH9^5~WlRߠ)nlW򜳎?o]9 -?|N]=.mQ^adz./nL%Mҳsker+ @W$jEْDU{t=У[KˮƶZIaoǽAC1T 9'V5=NkJ.~Pwd sUV̻GE6= 2)η1-_OΥvS)u04{XО{fa$i 3)Ov2li#[9z +\*HWnxum#H+AFG5Ncn*N__Xhim[x]0N.kgmɋd"86;jMT宮ݻ0)kn<169L¡邚wv]W N$ıyTvE ~ѕ`9^+:G1`aDck[;hE``hSmF/⍠d?Pu/^GvښJ!P/A7d0^TCOHDӄe8Q߀zڝV3q%V9(<ࢊ((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Dgp& m)-ƚ +NHd<`YBŖYi;Ӂֶs tH䑑Lqf\RDp$gVf/9JŝUIbY${2QcM}1Ӝzz#,7^^QJrA#ӃPu'ڡʑg%99To!6*k=.|@#9% ?J%G|ի"nee!oI"~2UJ#bQ֋שU]x ҥѾzQ~9SːsjI.x1<@ zKD68,"1PXpH}*y#tf8)~IgSWcԣޥRFT9Cr1THR9n(,j2}hö6=:~nUdM2'ҭEnUpOzo FF @0q6pJP3ޟ5c֬UJH^{uM6'/jtTvmFe|8ji݃*Ld UTMevm[3 l9Q( &QAGTjS*I UpʣSҝe-{ce.Y,3tS.aê=N\G$-9B;ma*nry5Nڝy^r{PFvxp*[!-ܗT铂@*Yb7sU'٠fQ!FCJƘjwU~%{ ɕ~P$}kB")}ÜHPCy//Ԇs2G倊tƫDe9趲#9 M#`G#$IBst8>ca=* ;y +x+Vքjr,`)F_)>¥]!۸׵J ]һ7|ݩBec`mУ995E YU<J9:uQ{#+K .c(YJsǡR2b5#bh̏r8x)1.Y6Oo;n63bއw$OsLo6X,3 =3O: +nΝ%*g9ϧwr#An I%b%$pQ@ D|1^~|ұHPa* ~9G5[+t\*H$T[aKHKg.su$-b&q5d3ٵ/--f ΚvyZ[p$ +p(O=9Ui"x oV\~ճkz1FuYB u"]E4S0<T]znoFemӦ1SGt!FY1]6+Kerv(RR!SQ(:0J)r&6CEA?:(%lyh 3C2ҚD!)`$gڢ:vF̲V6`^uAnք> ,1歴v*##=O V޻;j1qyɴw.zO +@P ֢Y +(w896$Jy+}zc)(m3RhO1? Iqko+\*Hy-~mg l<.9?*P*eoYgKEUS 7ˑ¸*ƲDͿ*7rCj$A }OĭYW<NMYœX[Li#0,.H{cըȎ;xbP1}bkG1+#8%O Cޣ ! ٷla:cV>m-WB I-EeY3iZ';q\-򣌅 NYb/&WYV=?:֡SU]1N-bwոnP}3Pbrcs9-01tVntgC4-&@i ͹3Ku$o鷟P+^THRR18f}|`l`dfKۃ7W9 +U*v"]JLb)ksc֗kF-?Jۋk6yhz6X>Wm9VےXZ2~h bc+c"Yj&91SJ %vow,ȗF_Q 24kďsҫ fR# 崑۱zM4R)}~<튆.[Vb~Qt'U(%yC#MDʫ'h$v={(2m)ҩl);羵:wy^VpT9.QKJ[{YnΟ30sZM2o#%YjN2Oaǥ9=M$̴i(md,YqRbӠx;T`uҡ1D`1gLNI<19n'?ΕtR4c `N=h$3!dU$?=A@6u3 N2}:u7R+^Zo-ⷽby *  sL8iN|a'wUݭC1l6_DPTTzNZԓc, Ɏ86{t6*;nHeF+U=Gmpy!Zf +k۰vD\-O2,y\8DQekG"cnc'^:,kT 2G*ȼԴŸ]$dNwLj$4ԵTQ_VY-G;O7j9 +*u8ONT>JE?R2ƲZAT :hK+ٯsDgԆ8#VdޯF ]>i,a)X۞O9ۏ֣֭N~o08#zQԦIn_{"l^8zWt@]Em2He#`~M[ZRj+QH?yu)o0| tW.YfY ``5z i(N8%-(3}jTk*[3EVQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((r1GVAl[XHyZXq;IhR􉣘@zgҭ%LVRsW!emIJ+}9~QI].If(Ux) +t6T,jϽ_{zԷ^,~t~ITAԆyѓ + s~߼|gE@ +Ev=*IL#"]$^tFǎ=xVsdQn@ ̦8aWʴI"!)7R] جe8{L6:H5d#Vrİ(5s B^Qs4IHے3qWVT^LmǕ;1O`w>N:suY\Iy|9,#sonVQigm1.X tWCɑJ~\֡r[ISg-AiR=)S9E]z$:F4SMm|Ӹ0`B*nߢ" sHcuvX,#78!쌎IP+eàp AرlJ6쏌_QQqZj8F|{ +wJCS>'g'=VI6I6Jhr+Bq&q)ET`[Q@(( 6a<0?ϵY4pۻ 8=1YfHvj&^ևQz=pLt]UXIڢLsHv>1SciMYau#)=[^CeH<}jZX;9U)ȳe:[O8$cֶ$&H9A\i[L-JɝmsHSl~_r[`%EX;8vKg#s2$2 sc40+# +oYoeiiA\YfV,yke'PAzNLy%#U[.M–uby@5V-Y{NnȭbVr n3޵e䏕"jFPkOOETeiwDI;REr ĪY~`h'.TI,r7Ai-VVGPAn{Sek]]#1$L$`qdGIF=ˑT$UHQqqU(iBU:{kt\6W8*J&s!g0,qPĒYb*v suY;.mP2r#$F\Ǘ1i${-/>hY#CI%$8e?=HJ Mۧo:qh(0$cJ!U\ss'jPěrH8=horR&/)$vyr!`pCV*ҩYdFsYS3բ/+1ǮqjדlI':d4DI8y'ibyQzj)˔##KSrՕfG +1aqX[M'uP$#e|S }jt995<͚8lMg,'UUcAW,ϥ2YE锶\y|1H.c4A'&\RjV[^EkKU'w- *rn>^pqzuvns_Q4rF|ҹ <4JdXʪNsWn,bGdsUq# s13L"!&d#qNӪ,đ#UPzԊwyy^ZIPhR^GZy)nw:~䮮:Sq~~7vncxB~ eMVI̪P'=92.a) +w57ߑBmh䗆Gi #q8߃G9LCsA=*,S #2 +0H\w1xPsM]&mU$c(&I2۷~K#|rOWq_1ҳωJێzzӬb"cb[hO9(9̪&2e +RG4pTvko߶Z hC>r}<e9,*T*[6G.A+4zŵom*I +wu?f%O3xԡdcߧ4"(+>"{١O2w=j(ȫ1|#$~4’s#4.*1z~HrJV^I WVRtvX~>'zQί"Hd|&iXZA>qi۰td0h Cy$o0zc}*=D!C$*[hGL+^If +2zg?֤8$g}4*Q2(-U%fĽvdJ_wRߗ^"0Yw\Fe7F%PP6;U/x~u;uImONj+S߳_g"@ IWխtl#*78 Ne9X[h@44Wn3IH$>spq8?yp #dK;0E<ǽ%t֟n>;#)̧q#9㧯 +ˎ$?. ƛKc5h;ę3lgV!M,vP4񻓞uRjf2+eYi WC)~>ʥ9 FR#"4g٦I,vPw9ϧXӕb#i^ԵMhu+_%p${Ǘ~,ePijcS;8Y\BgP#pXP2ۂ?V(hrJ!8UK6n3iKˉ$-Q2{SGg-}P?YcJ ;]jjQ3hB߷Z\\u"@䃏ڐCq mmWU;#"4īt W@:ԬbIƥ̰m`dJ T !PX}~Z+ϔKɺ!?j e۷I{T6uAs;MBK"DE3tP}RO>C +G2/p=:ZEUPÂ=_JX3Kc9wDbAVand6oJM{NW%ѵ[=fs Q*G8$ui%RZCϮZ$Y #8#ާkiԫun1.R{Yc%қ )+!~*ҴR04X'ߵ[wV9QtuNB[~THj2By9m.%S,~E8\Ar-ܠnOn:UeZ< pb>TnGmc"n *^M'Y ?=R+*/en t*{m)yf0FIVRF#Yrqu}6Ay @ݑ9wD7qȎw1f]'-;48Ntmxtf$ڪ3)*0AG֧D3*=tgwU^]Hmgya:c=6q'Z)! )2O~#H /0`5^څrqZ8Uvh-WH`;I&ɡ ϡrsڅݶ#՗LX EU93D>횉im;1n3u|t޺ϡoF+QzJ?<7QH}b$K9%Du_ndg +Yۡi=ub"5Cy\Uc17˩.3OM)uRd⧚`%mʛǭ;-)tj *L@n"Z(CIj@-ٞ\瓃ԵԦiYEةDؿx$V//XOƉ<*0@fA'v眜m>gvރq5)gqyA6uS{3BZ +y¶vy4ғ"$aHQ[ߨ,Y:,qKJXV@\tqNor &E$s4Hw::RNUGSFv?htRFR'#ƐbaMQjk/FTS(V :Ik_Wq+ޔO)s#}IҩZr\_qc +lrzֈ. kj8ʐH?M e \t}lF܂K q*1uk)DLlF_NqO\-bXȔ|T-3n˛*Py=yY_l+B>Qk2(rر$[,2@qj =v3p 0-rm?%cc)ng''' eX,RqAQHn EYqRV+3KOmH IȁĶ\ uWZO4E%h +Ιc Zߓ6R, !'ʑ 䉝0ߧϥkGeB('^+.%VQ Ilf|cUOEuej/6cPfMJ+,AmnAO‹z,0;g4Xm5K*LbD$%A$ `p3EDQV󧻚VY9[#=]#+7Ȥi`06Vq=AU0-b +s1U{ +J8$ojyI@p>f<ڡhΙ]Ӿ6ȳ=S 6J׭$},s]쏠 *湲UD#ȁT0烎jɅ0g|Ca 3B''[^Ż҉2k9>ҳ>šk., "sjk0(՞{|nF>Pry?S+{Lg7a_NjWG5% %#}x=H,㹺gxpG qOd]"B+ |u&Gf|NIma5S_]I`i(d}Xz;VM )`-uM̊sZco5FC8?0&)BO-<5bqdz&)R4Xc<;kvmŝAJ|9 fDݝzFK_-%vnwU;R F8Lҕ3n®6I&e@ GcIj9<0^@K +ŗ%I< ҹ!l.҇RfV8r26|~pyȬԷއ&LKy|1󃎙1a& }(C}Q~X^ZJ +H$ۨieaF}95]mcp%F9,b6֐ev"Hx2G?8?QLHČ(.c[0(AJX!`ڙ j~2YY G~r ӯJ#Z:aF?۠-r:UH|9(g2Xk d?%ԶҼ/@ v3}Dp9mǎ8K{}Nf+}|֣es|zlsIB؏ )3'ͻ=@T*"2h[jLzkbFo0?^{ +B3$f,TyQHeAS=zдfI Jwv ݂~PItY# t RnyIդ;늞⺴hc=mR$yvW(ђ>mHA-6c(Ǘ %8,=~-Do v".F1 ҆E,~^3dz/b=F b '֥PCey}iC6^W5mexELl@ +VN-8FgNudb0GSjEPEPEPEPtR}p*cl$*bLc8 0geDPͷ]vʒ);#gqyeٲKmݷu +GNUx*NsBٿo b8F,9'X$.ˀڰFNxڇk2v򶟟$ +ʂs=sR@@#)pe*3>ZJ++Y|Uo^763]\FqRQ0FV~,[|n 2n8>#',3W)[cfwQ-em줌+sU%5tTU.]x $sfm.**WgM8*O?iQ,*rFRxJyIbHEa۱{tʄU³`qڦܻʣ]?OrHFF?>V _FS94똕YdX"#A%FzbQJbV$lCOj'X0` +|qJF!2G sӭQ&`[B*7{MnOl7ޡ1VlͷۭCo6Uņ!H}}ґq5 ׌*dߩsv! A#<Zɥ*w(-hc,P͑DD`(889哜\K.a@Fr N jPh ӏj_2؋izq636mdQ|CjW;{[ QJD)sÜòdy ׎T7QjXov =kArP3)Ss'ܬ6n?˱ /+18@ cVWLb%z>̟Jx.S3Hͻ?Z}d^vEdFH?)$(ԕ'd]/_ٽ1Y<l9it+򔢰V$d Bˀdp?ZK1fE܈O~ksJ5aWއNMF`YFwoSTu<#]K3sRYZQCH*ƠC\01!͑[@ +lUK8(AnFR#T"B9⳵uwiO)G)hmfpzuRp7 nb}ƱA\S9Fs9DK8X4V4V@zv]yFg==:7v4q6zd[_+ƙXd79jmtch3|Bmɜ^bPC4jhd];T\)E" n=z7>&FvL)\~>!QgvPq+MpE1 8u&].o9f@l|Kk4`<23޵t+[ EHo$3qЛ/>x;EVw7<Ó1T&򰫼;t _neal0VuXE nհKrI1ǥDTE'|-I&MBFI*i#S$ 9'O~Ned{`欫Ro7;I +)S\+;[/cC[Ws6R6׎ڮ:jHJ0p7g߭2w,|Х@ +qqYӽs ̔V8tYF^ٲMIHŬӺ|śc\cHd '}u0u(1d#g95EV1`v7\4Y-Úrz)ie9 +)$.Y،Fpy5KzH,$b;rqӂHŹu1 r9 !n$>jnl:G) o1 uƖ[Y61U39 EQf٤kt;BzA:T7apA#7M&di4svF珥hwCsY qcU$H+t9ꖗQ|q5NxLlr( ^- J, )$UF2qRj7ii7.t +Zi2Ldlbv0D֥`d>Wv2pq!XZR[THQzҡ%Dst J顛nN:~5AD%q*ym!gb&&WGVUקODmc}`0vuےzT0H nH(V9 i]X?|< +\N!OGSey; 4XǁFp(H*'dS+ˑg֐JjH*ђ1ӯרcH]^Ƿ!%/r |0'|䴀ߺxkR?`u6sC3\7\? rD#OK 5V8'w*QV?2fKy)Wk*:yg{qcrG=(1m$I#WC BT71IyxٞQv:%MEw~]$viTKw~ub{kvilggMo.dB屖Q%R0q&驭%(ԗ-Ǐʺ 婷8a?.cO1֯OxO;ךE˃͕?+$|>ʊ6fc+4%rۏZh%Y @}9s#9c?Z*m]>z|",Tf~yZyH"GOT᥃$m棝$Hh.s֟-q[YU: R`&<h3H@(0O֘)FRyIu:'95hbteTdnG%ɷ. P,(8?7_b365&V]$ѣU=$"J?dsS^zQMuO5x(p(qޢkiU}<-K\\›@@$ۭVɵyF + s-<kew,8Eh#wDY$L;?2|TڣI/3al~T(IoLgA=?*g:[_ir$U$ MTm#Lm+yb`=qH8u~pWlcQPcẑy)l`U~Ve0n\.12x!x;p=~?ZwD(/^"2)?*ti;@8?7J$JZD~` {һBF2woRI?'q]&ub4VWIwtcҳQɏYSy LINW`WnpH}16Tʲ]؍F7qje ' P:zV^ e@99+sV{?٥A*+;ћK2F贊4.v18ɬRWXLrܖl|evƏXuTmn.+0fUϭLecm /i^ ,!TCӷZI͌Iҡi='YZX4c Rte; +g3l)~\7ק}qr»fxKY&Yc`¯$sJkBey's4S+XU2yr [x_8 +\zچ +f=6d4É@3jŔZd.EV GAhhIY'?^ב۽ٶ 8NW,g7,Dgp9鎤B8#Mե7r@HBH䎘gfOutAxiYE܌RN tT[M$r+Tw3&QEQEQEQEQEQEQEQNDi" (Ɵkmߞq[{] 霞s*Hʶ="_Ҫ -sLڔfON%UIyUjq"a$}hEc՝w$۫Vn f9[ՕG +=H&8o.-G $Woj[bP /URݢ0ʼnqLtZPKUKAT7v8ѐ:Qd;)xw +Bޔ5/ީVDGUșҫs$U>bw;A!$:gW/ʀ A#$V^$R.01YV)HI)sEZg׿L!g*+T&kN?2Y`# +"yf|0LJH㑭dAP0P +YN3Tsm뷡:Ӛx2ƲDxqD 3F;K_qRtedn4"AF<qvwGk$lw8B}dj͂G-֎beIy$ v쬤19RvH'@A_iC?$BCA ˃`U:II.X<sSE IǕcw*VKVdICrz̥zv5u̻NLg'jgB3)QNO^H-cL78F}EI#w {>{Y_OⲺ.e!U92GӥZ6C}`#*;8ERcsmq v# =?^Lhxmr({32:*Ol)KT/c42j%L;6?QdÞt֋dIu6(UdGl2NzTGO+KD+~;U.+Y,#\4ȮxsZ$y5`c8ǯzZX"WhXrxӥA`jẄň~ugwгv w3)f\ۘYz,qqiۖcU r? +X ˼yY898$mG*);~Qو>M `ZWu#~q9=+2<ڃ`gzۏg [djR;dCJl8'P:}ޥ.Y.0m\ ('Oƣ<>hgaVL<YWI'$SG*3!<:jm5oOwy[;c-҉AFaTP Jf>>n9ғ[ =)#I.e_2/ʹ'p Az~`P]v ߵ^Q:IAIcw4l:;/Z]X _FT;* R Fs='#S7]G qSF#G )*{ߨBtv\W+tܹG?)rm=qM$ NhdA$dL*Q5Z'o;OUDy\[-8cXYXfX߿1Loo]e+cr:⠶v{@]8O{A8L-,BwqDm:Nm3+C[!vK|dP=ykY< o`VCK$yQ?/JRSJ5U[2rh%~+hfv=1ֳMP ӎ+C;a*hV/ӧbB?NG"X_w[i(7NqQ +V*$vqڛf y v8Ϛ9!%d*vYilL\IbE?x*oSk,3g\1ۭBIm$e0$cf*G\)!# s?*+uj..[qјrAǥ,\ieΕgcvyE$PN?hsR1%:3*Ҭ2K#U'[;&r@##?* mco*~U^ǯfIX네%QYZ"QI?/_4<+t41'1Ijk"JGssXJE;VCdU7z +$ dpqؐ9+G(R𸲒(2$XeNjͥt{kj\[y1V[LTnnyu @ca!a;3]:L̀hwCPR5wHc0I&Go(zg'y.`p(8#`SO),n$b&ץQEC ܸJsX(m:+{{Te e( `1QedbF,V-ʹ1ޠqN >"O) *Y@8oOxǦ*-4 +JoCVco}k|wH99>r;$ΤNI7%[bHIJ"Ee'8fXnm;q$I~PXzⲵUm{庸B>õOI.˨mC@&?gͧ];kq̆28\eҹn6;Z3^?aT*09;݁=}(6fcTOwU{J.z_z7zZi4,eg9Vr\ǧۇXK)H$zw:ݸRf:?}qNm5dk');iDx̞2V8!X{|.wgO&O3r38oFrQEu4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((k~oy$z}ԱE*EAÖ=X׉qJ%-_fxȹG8?jEuWim4),f٢!<`qjC q=?SU".ey| O2? ڒͅڤi-#m^G׷7Mj][ρBez:JRF66HE% BN܌ZjҲZeׯ@=Z*k\m,A=TI4Š(AEPEPEPEPEPZVZ!pؑ+(*2w7tN{F4:hԯ"Gcڍ*Y13 v ۧXԖ#H T>Ց$J.u%?guھn7ǴקS-<1;_I 7n9565**O]np1l΃62!0=gG*Y,e` x֗/ (&1#u!?:mF{.i;@1p**r;k$& +rųN(nQ;nj2 ={R(H}j +OaҋSH;Ŗ-15nv/Sj2k'2; 3ߧVmckݫ )`2 gS-Qqg]#,u+ b=`q֫$yd)򢙝x?Ε!{y BSoɪF2M7]D[R{ŷ<+ hɻ 6Le>o~faQ y-bJ|]hb#j~(Ag pwnvˏ~(efqҿa5zcգI# 8w0]XIckn)fJKݚ+Z%4lWv)Ȳ>zAFxY[lqQDُL6ScHM}*I ;mG wFvJ'G(/LG$PյC%$=6;bmTl2qsZٸ;qk 2cՍ?R6BS'h9oIֆ*RD[>fCm$1Ifh̜'sQ5i&##02GNԱ$q7,x?Q䎘,^ 1cUs=:գeM@گIHv>\UnF3Z/[^k{x$B'=V0w0* ^d/ɵC;T0rGX!oÞjӱVtb l }J9vSW`ys.XGYdvQJC}#;nTMR<}ВxjYm#𤀹9?Jɖ >1Uc*4B#8hY82Y9&kW +X th~ӧfʫ% +dVW^\.XjټŦó p7[C1fA1G~I\DO12$O SrQG"[iR\-t^} +г6`~jU}Z`c` ǁ +E72!Ԍ/8{-67zu߯"K,p 7jYnRVx[3@ +.^WMeӐ_G*[@TZ1_#Jy:`f6r3fGC~P =憉w3GG'cǡ'&g۾VG]!$ 5$s ҟ+џ mXs}+}H>c9)*9RAe;I`3Br*Z5Ԫ4_^HfPV#ُ YDazr:ԑ {A ]O+8u,1qW1J?Z{]?""`LO<y]WS[ cҬ[y)uaׯq2?s튖hn"FvX#(KH90BNi\&vhFOq~t}̕7 r{ۿ˷.#UWT mG#4qĨvFu)Fdv;gNc F-cG)Sri).\}8>p2uPwjhĐF'd-Ef]ccd68TLN7I*L0Xm"}vf% +TqeFHi'V!bFUOމ6?r=a;o֥i9cGmIvg-ۥZ/fWzT+x`,W<{Rnkol%@NLLH >n5b+WޗSʪ {bi >⛩N A'QRoc)F)dK{#}=w6WUCo5dH#6l4i>inTp6wX$O?am!̝deJ84'/0DGnOש*I`ξ[clNzԉ7e\ޒ|c-<? +-Nέ(EH5; 1FF3נ#ڪ'ͶEBǎJUjG[Kf*Í{ +w$<-cg}]-Vۻadl23T’b΍O\ʵJkNdvۑϕ*S9t;}֣@˩d?P?oU(7BhƩn^">aCwdߌ{[HL[V~]xaԭJM4G]w sT3R߻b?xT#9ZLjFpܷܡru1B23dO\~5C:sJ84uT3w.xA9ǷҢk M5fVICT$g.ZR^RZZ!C1raNz{dDZMrk 6ёwb6˜1hqG g9cHB o6rHӓڣiQuLFrj +Q2E{{KD>z7'f3;O֨B^x%hbg*\*qZ錺܊DFÀG'֮Ek=H),LCLdlƉIz\]GGFwTfI'<5jΗ[hWUQK?[-#z9k $~?6B ̈!9S$7rOk3@aES_CӭuM]6ePNݼdXr6rdr/cW lݕH<ԃf"rTQEu4QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((($ qm\G@z΢ߐiQ;YX:aWE5[x C!l^+0 Y1v,zajRMs91567dI.I +1e[7\)+LPykfy]̅?,3g"O'֫mL| @r۰'O/6`8#[`60YOJ)Ҽ;қtȒ6 `R1>\&ҫf c4[Fc@-K{"Te]HevΫ:SNǑJXnw*x=*fe$?Zw!ŽI39[O2x牜Um#c@U#8[,ʞN! +=+Z^h A-8e,MmKxN {g.ao3֬UYN1z.^HWV=TO~ET;_HtP܋ѫl8t^R$i˴1OXi%R3#`< ufQr,Q ı3=LzVl^{q㚲.WmjzҤ|rG<F .JVB@V*nR~n*r4%㐆B3pyɂYD\H&Ic>r-ùe(7 ҚoXGicC&ufiK~឵Z[UD[QL(fuҖfiecs:S-.n]A$`så1"/m6}ΕMŵOg̭\Rx IeDM 1ϧJDHB<c3O64`W~W1m-mBݼb(ힻDaucuȗht88"'yF >jI +FQs򥐴ʲFs[n.4#9J[)cpѶЮ?z\wYvR7By 7UdߵY#hH +sxU-gܥikt=,˞U Ie`t9=:yg +.")|}{Vj̡*# `瞾R"彝C32Cm*E(?PI\2{u%w/[5e6 E#ϯ] +wL:GmpbWnF'jۼ.ƲC8#1k5-Nᢢ_?t^tg$8@ /9ϣ=#Ex }xVFCrT{$bxeלzSM# +:"~Det*Ky0ѐ4ճateVd}:pe!pK 4;=SFa#y!u Ңr㎕fKURC9늎+O-Ywnҥ5cJ۹O^F5kǧ3 +Ì +`uiP %;苡MW)Tl$rCnQc#s}>Tg #53D!lF%Y9}={xk&8¼"7u'M .ၯDѵMp$p'#ҘAvmCX@=G$R;vi@R>l? :c率>ZGurOqr0ؚ5m yy0S +Cry +b?1~PT@'Dm{f DHk<?ivqb2Ei}bebH +z5xr,5@RYX%e +e ī Z:rQ(ihnHme.hwH5u`!ҳ9YDyc?"YrpX=:)G۵vۀm$I2|>8y[ZsA ¬t$yecsKilg YI@ 88LW5#f$sߎ:#I Ѧ),ͅf1g=zzYO,)IggA,Rva!-l gݧ\i^7r)P_f_G ɖW'xfa|iSy?$I yB#OғNٓnwZ$lOp48s8/nTld.GS=NGN;-kVkJT#ګ7rjZew@9 ts(# ͨn;,fC_TVU~Mh̹jKwetzlȒ2vp~w}51M+FW$]+y.oZ#[~9sQM Z}Y2, vcU8;7;K{%aRy#}(--ŬV4n^:{ #>v]IpzdU=([h;5˲M?Vr$Hc@r?T}j4%NI #Yu$ghk|`cCҵHc+/nnu +hTM$Kͼz0d+w?JӵTfEi xf3]جk_zrNGqoib0.FpqJsKC+ࢊ((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@-n-dM2Aʞֽ۶=ңMY\Z o*x_pd`sמ(`S"mhԠ<h-h[WMA$ duwjw(h ܝ9gSm)XdsR*2졺6MnC%`^}9{v79Wx=Kq=ܷ] 7QGJx2@>S:wƙEvb6Twn{qX@c}?g1h1E?wEbc`{P`f$Ir|(y$ޭ)(?Y^1Q 7\c'oZ{FɉFp1+Ͷ0PGwC EzPBg V,Yܯq<֒tG^^ +IFx`j Y,wӦ=?Zv$1q_sϥNs1B@6:c۠Ywi]T֭S#! $t=p3W R#~fzSN5i9FUw0,&JZN(QE2MDpj_y7Frx*ԗ "ˌzq==ieqn<ϗ<|ƙ u& S@2twͫ('n#G95 9APZ܆)anv*IķPRCW6oNl _(dZCuzm%5Uwrp0jF\(VCbMp^Gٴnu*䶷w} Ͽ}JJmw[߬m.@Lgj0IaU'6֑$ $e$`L:Q8'Y'݄3Z- B6eN?Creb6 ?JjokKw)X,RP6Oːyik` QʺI;U9'B.ij#]n9p7AG#H>dS+Č᜹)C{䚵mp d~Cj䵜reUNO~%9D%l4AMBXɭ'$Q3;đPd +`ً֬HJ0xۉRVrq=iTudyQ)S8*H'Wm丹[Z/$ϯ}-a#1'{ 7QF*caB9֫oCԗS;K$2# ܠFUsInFcpAdsW-.5;+6N7aA櫕Q^]CJ{%yl6Nq9k=YI,P*UI8>STBV1u*֊nݐLt;bQ&bGh 玜Uhg/T %<==jC"M!dBzK{x^MJ] d8дmQɯ_"~KrMvr}犮V$Kw8L]Ì'EuueH#zTnkxnHfh!2̹ҝS75tfEK;N31f@ʋ!Ҡ"!xo-x9 {dƯGlQwW=iJ._I;mrROw򮢹$\d0zӒ;ikk{l ?O|cJ_m7ieTnAZ8%o[kVe&>PHcލN.$6wlX)F3?M`<ط3 Hg>JdZK[@fʩrF209=},Cs>/vZn4Qƭ,e ƠЦdح%ݜ۫{M9ཱུHBI$XOjh4˧[Ur;e8SCB[ 5;!i b-7uWht׳[A$dSR+2hgq,ʼn߂MƟ+˫E=ƣp..5U gj0̆ίfeҥіH$MsSҭl؏)}iO4߹de2FzR(A&Yȸ[@K"R[1^k,6/A_m^D$dT\dsү[W gdPctΝnbZ[]ElJq,9X$ReKm|kvin.dRݢSVaT v#85M’K9(='Y x%[)ַ,/ (mnn-t AoL^+TɾuS! gRۈ6~LU,TOւz|2yps8f1%9TFd#8=jky|w u|SWW(QEQEQEQEQEQEosw%exϔֲjŝѴX͟ѥ)rSZLw;C$cH#j)#O$m |F$OA3?UgM&9&3i-#)p 2="Gh)̬$qLV`SBdlg D̊Tg<w3p峾so\G HV8;1H\d ZW +圖G$aYRO-Q8yZFO؊KZI@ ڝu:,oӒp;jkmi)B="Za$jORŜ ă <[2!i7e:/WKE'ri#,Jͷk3FUqe8cE+Y +g4e2 U\'$ӭBqw/̌(;U?"x`MH,H+P` QQnp#`Gz,p@ Q`WvfSGj=נﳖU# o>`{"_$lTf;2H6dqғmBV˱H9x0*;)]|܌)N>PuS$w7pU>m>߭fGt Y%eiݟ}ҙ$<)zSVC*@ץ@hPI=?RN1\Y5vh7&@=\3֤lgR!uE#x}ilknikAyk« VOJHH +˜9]ExǺEڣ'>ԗ}J AJ՜ݼnsӧ1u`8ڥG7p:ӽU'*Ż`VS$}C )#?!vVݕzP樢>/_c_)R-I zT3~鶀 k9zV=tzzh2xQqޭ[.f'jmǽg=g``qUY `ޥoIs6ſ Z4S} ֔A!?.ޘ4ٰr$`:ʍmi&!j=szTٴ'][OEd){QXS0G(vetw0cđc$.9>mUXF}Žu~&?ggdx +Cm/_ƪA¿GĀ.)TRt* g8ʪIY\)K4_! 1:˸(T<cWl7VAm'YLRqtbᴂinf S(.C8Efws!ӊ鶥n ITf݃QG8##H ޲-. =I4ޟYў7Bg*r_j+oe*?:+FބIUHmVp&GC*P8>oL"YQ{:{桿Ӓmȼ~Uay$/2Sz4;ɋ\Z/Gl^ԥѥӚ]C/pJx8~"`JT*8 ^{P4:JKDT##8܀ܫqj9:iOYl<B]#²Y  I Ńkg99[g8U\szg5V[Y_6ېhd8K]~k9-∪n5kJIs7lp uK`Q'F(Wzm6_wc{4l-ш?! /3yGQ͖h7w}?sM(HlßƓب{r0F "#,AZPhמ?z>"󴁻Ջx$dAd'!? '{F=;u/#^i!dSWzU[{F x؟W#8DHn@}%;K>|.csQRIFZΒann!gF#b/U8Y_;\KjB0eV *?09:l9_NoQNxb%xIcnޟ0'E@|y)FȩĪ->q;A-89Wf9GKnv#,B}XV28)%|;1BNbc~rSY=Pgu+%`aeP-NOaVv,qns׿Bz~eCۭ9 R8^YPHRIN_C|o(9mOǓy8\t`by$tVchF\-oz}"vSn,3#UFXKaL:<<;mŐތĬDVu@L4-݌|нzr1꫺zH{}JQk@%zw^ U,_HEHk封Eӎ9 "QM\o7^mU?QNbQVl}%c!"Ett\0ǒ2܌Y7Ѥѯz,@T8yPF'_Rų[Asc?&IF' zP]1|Ox5sNX*v$ %ӂN}MT\_G4P$ +rNz{8'_m!UJBĨG}6k٭Z;LvInmQ>cIhK*w\c8 5/vȐ2O$ҮH{є L6E@Lqٻ5f nH<֮>G]uIw-efL*HJmƜYE$Av1[9Fͭ+Gkckr>X7OegAmiq/p3ӱAOI&+ty*72d~;.yP%ea@%X*Z_ d˴Rcl6|޵^IfwRsIkh{WV,^c\ IUEQ/&h:8;wN[ ss֞Mw8-iٔ>qR^Y9YdKNt8^IWԀ,c1dTtN-ڄVb_.6 ѩ >~UfVk-r.pcwCTЕm['=ݾϕrN=)Z#[o1U%eݔb7 TntƝƧ UI-9u?PAV]v9WXP[ox_-՛v07DpFܜZo^X -wqfy ƒT6t!\HQ=>jT]bͿedcژ@}'v!%QJe p)-7hÏDUs泟T*8ϭk#H{+ lKq<ʁJѕHFV :(YGCμ%l3wY\EcgI3ϊWhP՞˽m4 8?vI$wq`OSfw`Ͽ IE \Dt2`N3N?5n62tTЋ٤br#0(m҅:vK m!b]N%WiL$n94(|2'q}pY#?u-gw.g#ͶEK LаT"NI5{pQFr|."kDJ)PO-쎩I؊[k~8U,X2qxuwqty<QwXƵ4O2ubmN1j焪ͺ{Zס~wGstY0zve<IB,qAW++h%s&Pp=:VO-uy;wnG;c%E9sK^~yVB,F=g#Qmb}uյH#@htH&،Qg?Sқ36 #*$H PZ[){2>aϧ42u`H Bndǧ)YU(&߷t $RdtB>j艊B26ΥDTo Als ʛPT+'q7jK;fu=F5j9Om#8=A @OR-%ʂO@yҎkbNԺInbɸ+qC;`7["SzA{9K2092ATP"[|сu ~~uvBc-5n-"K9.e30 ?%B3qܣ69bB;Zʄ|;Ki.w`0_iRJ̪ZvOSy8 BrXG'ҧKJb>vSŪ\oC`ǵI$sT)$HEcp8𧥬e5.e;zj35csXos GjH >?fK |0n_U9*?Wɒ2b@Y'tZE]Ri#oF۰'U3ͤAbJ1 Y2O%qVƟ,ac NR AȲRϸ.9ǧJ2{5F^0Z]͌2ow< cO^>[崖un&id'@={r)uWjfbc\rNLҷ/ Y7&wbUKw<ӷ] a]J[mo1gER =7?2NAh:-O$ 3Jn}q"[FE~W8JqK<7V9"WX˗2rA.oNմhZEo;L[H6gǭdPy7l,(cH_r{⧓ɚj.P&w~TI'aW9ݜ ~ c?j_2)QʶWJi\ev_/6ڤc@7qOvmXW̅#׆ V-cڪɖ.H@x*$zIoJH* x!nm7M@ @zQ޳܅15=h+dwѢW!sNW "$X0xKoO4FsV 烟¬ɨư@);yhnE_X\Mw,Av.G*i8Pʧ''?&Ϝ?sG_Ju;:PFN)1hGWv>-6 d$SW⹹#od2=z+8Q(lsDw+I d1 r*YџyQGɟNΡQkS*<-%q}*Z4)ԙ0 CTUc8R8$KQQ}IYH<Ի7fkh8I3FS?1')XM@"Fr>r>'!4!r{7Fp'$sx&!p ٤hY>` ‹kn˚K͈Du +HLdUeZs䐏 9tHE )+qNuC JcdtMj-P jpryclSyjdQ_o~ټ.y^iRaQq}bLeDž;y5Z6xbe;AeSV+lgImITl9RٗVؚcEef9OTb=x`yOJxa{Scy`hLh#wtn_rehC⦞Qi1h,v:Ndg{U4kLXbXY'jk Nqr2;q͹_nq<148U#n_jɤݙNrt~ͬHy9+/w};!R^:}}9fz_AZN1?b)r2 P=YKJY8ש;K;ng8HpzuPQ"O=[1"W%yNxMnf%S6?zhus+7cc:]yƾ^I#rd_Z$3lU[>.$%ՙr&z~>⋏_)` +F ,-W`*pr=y! +I+; |qQki\UpxzzqF5hJmͥ%ASh$y`\nwc2'|N=I6x'tx<_V+f+Jlg*+y( p}iыĖX#U8Ҕ47 Gt.Zɶr١~ˆ"9ޚ7-n7er18~sea#!{BΉrjG~Ȓ@(a;JaWϦi"%CtQ;GaI{fcYX"ssTB%ЭLd= QaITG-ϙo.|]<*yn%K38r/\Gz-đk,,I%[u=ҙBE|al*=9 +ȩz$^Xak,lp'; +i\LO cd`u)?D|N+B3Xlg=;-.+oʕseZع=$L㧠 3pd azf$n78ӜPxb7 γ_ *294F־fLY$;JIʌthF(# J@ITpfm.fBVNrONiVVY " #F>zJ|C=J W[-W)m#+>’99 yzvvK*1`n<~5BkK{x&imcrɁ0pH5MTniZ^*M8Hf.7*o$ '|r[ĥY&rz+mn!`cv7.I!8-qU7)m&u +ܦX8mEimh|HԤ7V$́f`!f$WtZnJ*I'H;לҕtԹ~KoN7B~ "2v3OI`e0ey%djK RU$͎`>[daqQs;jki|tLi'^xu`mm*t ڧ-y/7H$ǎGujиVSMl`5U/xyQwZ):m'ӯn bsAv5 +H>eŦ0"2G<Kܩy|/Iݜt띙Qm&MaH8댱ڴJۋVY^dK0Gh[]5pضЧ'ߎhYj٥l'% 8#{V lF3lw? ]jL&>h=~FLmM|Lnqj7IJ94{{f#K4ӕn}94u+XH ixyNmHAv3[Oiڄ vyUo#JZj֫oi:lth01n'MH"a? mV9Aq" #jޥ|P/䤈1bz)'ڴhe_QZPQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((u/AP4\'fELw+E)uFݙd;s.g̡vDr^wq%,aB#Fj*|inwxK|cxTEIjЫ\LoXT*;3S]G~A#4iZ֟Q3%+I(eEٷ1y,Һ);Vsb)T];g޷n-f +̩8aR'Ѵ'{܇Tӡ)$FW3Չ[wzj&6ϘO<3sMVAQE3((Vw&c'lrUAȤʄ%tn\AomNOUyoFSR?sڕu4{PƎW95#21}OBs߸[h!Pe˫U[̤yAm>G1PņK:t4'F1=Z#xdjKJgo䑙JYe'lP έ"csօg&{7eFL0>EYfR?{i!۞}iR_Թ eXV}ciNw>մsE{U_WKW[`N9:i&6^*P%Gە۰O#gn>LqSV!Ѫiwa%op@=k]0R?_zιY(!qR Rӿ)j5s]~c?:_Ҧwǯ摷OV $K+Y\5誩HgЏ֭2M~/,oq*DYY~?Zd+|%}Uc:f$ֆrRWMz^fc-ћgPq՘|a:7cTZg"Lc Ow.`?#Y;Nmﯥ_&a4lFIS^́3G|q[1,>~Wbx9f5ue_۬Τ26#1ҍ:wB(bky[ǧ' B*8z~5}iQ/ͷ>Vє RKnvcV7_{3NWpSLn!RAfGA"0qZ]\N*m܁:g?Lmeqv^ڭGnnLŰѯ#9AVYᰴv{΄0Ux/Z5 TcHFOTu{if udb. n.;rhqp9UeX1>z{sU(hCT5fuB|kbŴ[F;b"y!Te;<ң8k3ddrGl7\p.R`sq׸ޕ]A'PyG:GcqwA u⛽NZ/oCK}8U!K]QC<|:z;D]}; +7`҂Vn2GGuTho +w_"UwgO<l-{{p~iW8$J-IHbyt5B/6KgHFWpzuшn/>ůd1NN9=Gg\23'dQǭ]FCP +Pm޽HО:Sm,c=fHvI?6F>5j;-%V]3yT3A8,~mlԲ]J1"yBqsct欝n >#*7vm$s98'Qr{c3arI$#IW6~z,\p#⡾@l@ݢw` +~}eo-9GljyEKGNe[)/t'[AvF<6Xź8`$F?)횵^Gp΁aq .:=:%YJ9Y[,I1~ti'qZ8o-_d18=o%tR6zOznRɳ3#I:ʲIU:eץK6Hۛwkn@sOS!}<Ԍ5>:8Qp@_O^q[O7ڊb`HbI[Utm.;,O׶}gknER4elL3Sf6^M`I-i4#t)&Cьrp=k6L{Y(fۻ-Xw0~5KȱN,[f֑qHT=QVpQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((([IFA LuzmMo"G.]ނ,GH)sb@֘tǗpNq>SRyLҷ>̊`2 u#-} &YaB0ʹ;U g\H[ۧTa.oh p:Ճ|Ƴ&ppBqC:zKZ q\Gx/ r0@gUY䶼 ۮ7;y*fyWb}jIOҩӕ3fS)5r(RMrVI%`{gPlHq1XhlWOSp3I.2m͹B+;SS sG֥e&C+_$uc?!ӟҡ۝ &TT{" < +[]7T8sVYuZRgI-/ Gz${00*c Ń &U9JN*[ƭJMhјpˇlg>ؤX eܪzUd*dm{ToB29N--Ԅy>ÞFČ~h +VYܬH@9XE"ȪpiۨM13Bj+QJ$Ya'jEwLG0ys))ujalc0=V]<'8O^*599?˾1LQ+ҭZ1maU 9"RN1 +L'F*_g6ʄ=j 2;}L&FOwET9@CI$Bnecd6f"NI<2O9zEg$x 5BeUFزW1 +dc늆Ydx$L[yqL ,$'?QeYЎcBF_Z "+Twdk.9ثv^pcj%T+9Y-ZX(8mcOwH#pS2DKÒ?WiIzI3Z!^k_9*61·ڑ9*yQw0޶r]O24*%?dD7O$A09ˊCƘ`t ><g\ fYF[*-+M&eK!vǿԫk,F!Th!E#xDF'~8Kyikݦ䕴p6mpOZN~HLdP+J8Y#墖QF>یGO +y,3S'7"ĹqAu(C'>,]ŰY6_*Gˣ-UJ{(>8v7>7bY18ے}9@ e:Do#8=*wEX='3RHw$l/WZoioj[xbrYG 0rQ=ǘɰ2U_KeMqlbeiUDhcB#+D)8Ye;zu~x*`Z Ls,&)J\ҋd֚gk2Z-K)G2bi%{dL$wKMǞ˴9[{\_ۀrAzY /LQ޵uTe'2ߵ!8=jNd1Tsq#V!HSyqu pOkIv8([ك:",=qʡ@8-5j7wR0h ( =95'tuR7Ru0<Ӯ,W}{PtP?Os ,w,w^pop:Q5nh]BOp+5eiev ]G\sMf6h;>j|ڪBHL\Gӿ$T#\HʘF1%GmGiW`~wMzQV2Oz6!Wf$pykRK <3M$>Rd/V?aenB*mqsyo<'=qBP kv,Klk^Gmq LC0t?G'f^ oA^|/3#+_jdUB<{UAmk8%gӎjkcm'm kPg2q3PIcI%n"m +?$ ɣNK ܵ 𶍠/NH稦G{wptzj6XO E伓V(Kp6\Oo.ܐ*TCYKT|ܫNKlZEWw~nAso$rkI\eV. v o^D^/q?JIoGr%nN2:}{v]B~iQ@ۀrVmwI'cz#CSBk%*R<(ZicjϮr-kgl[@µRi_Ml#+R8zVkPJۋpxGTu;3I*'i򴞷4'}ByHn +y #8~fiҴC0Voȅ@d+0\jٚ9LHA^qW]KHK,o56vrOCN +&6S%^E[溂0)0v#֒(5I. S- <r:sUtZR)yI ppzٞ<4i`)!J5.z +Zux)delsҵ1Id+N 皊U\JmD~GirTOk2rG)uL/#N\#ucSQ!НÜO+KJQy#fw"1)Z-k +yd}QOU_x^fX3ƪ[X礽5+{[*FycsֹVki$#*7g=xIK|,tn280r=N7z7 y+EKc98QΙ֍c*irN'>HrQsבt/&J0oIeg `66DroGp݂IƮåavv{|ăǥU既,yofhR3,p$ +Fr}15{-QZ jF 5J;o-u dt&(G6]ʑȂD;@'p ;iusgYc7xX 3DA hiCr[~N:u8Ifwg+^Y4hx?lJ9dRzR\X]:rX).>wPx_zn5_ycolgU۸llЋI#BU9l5N=!QԴI+C((((((((((((((((((((((((((((((((((((((((((((((((((((((%QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPJ$CF*jd$~b}IgJƤuC,]x2=j2 ֪ETs_QL(((((9^"F2 iG,Wm]pZɩ!*?t7:(Wtݞ̲l`aB/u";GeVW=* 6 c5 ]$tM8.zZ,G%4hՕ'oqLUGsj,%QH`;?*V=({Y]HgH QuVi x><,X@ ?@$# 1K)6X|w֭M,R(`Bf%RTдJl2nӞ U8%&ݹP$L`RK i qV-q`WӚEa[gM>P0MaӃ؜ +mH8$qyWeR6=^1"שhR4hFҺ`88?0HcWKln݃);~k?I%T,mx=3P"Jʬv-~w{T_+VIi+qG0UGcvq[lk~|};Iq2C ''N7 ;A9+ z +qV*ni̢oyN&YA*G.{{nV1 ! ')S* +^>W:ӒO+\Ki齕7d` U.ZwtRcR mxݸG+q}^ X2/۽BC<.N0ZyA$d*nO_j`m&U!qBm-Bphi#)wA8_=ݚp9UL]|A9KY>YV#53{;ۣ$ki#۷zDh섷m`&Gb@"h(_]2FSDNN1SŰÉOQ_ǭUdiODmZkRM(u>4Y$`fNwSˀF1}*dqKEpI"p,qk%%7D +设ӕ;W +H2ji$FG:Qǥ$/=9=YN+=G ַlTN:GG +9cLN؎r]]<+I8D1pBvMq NQKB:, QE]| e`p2?Zu*m; #q{U-*Z*Os*[HyfF-'Hcvɫq4rHfg*#[ͦ$H]F7 +Iy4f,FV噔,GN4~jYHڤ8aз:-q'قn>$c!bP 9oC:)IY쒶:+I* 3188Z-M< &e +xSMG Ueʩ㚎kl \c=⩫C:rTG^[we䰼-q# 9Puu{(MqbeJT.up# FYuyYbΒ[fPvD8=Ի֛]UXH0c\8ge-rU2 $~qP?Y-'y/\G#OLJܗקbto,4f@)Ne+{رMRIg4؍8+$0 ꜐47Rwr]Dau'k5 q~`d +x{iu85eM;EQ aAݞsֲn#6m>g1ZwSo6B`;]5 $봹\G&ާZI߹uiHt] cnb(]Oÿ rGD=iZIhge97-=vOhnKm{4KMr+d.)]VHeHݶa:obEõf2 [zЬFYbszKD`i{ս4Ӥ pr3EpH8=_ojꑕOQ=y!{~u쒔WQilޖ#ʭCtY2bS=*{cU$$Pfޣ#XfLJQRխ$!F1yR&~mA6 ч + P?֝ؔT kr2 +HQrbKpfpT 3Tnc H,}}1[ mic z,\*&bOG姖Hby,AjC;s[j|K" =ݨ 7\g-*j)s"f{8%m3ā>idVw*&\j,4b܄mA7 mWsW䠩;hhn"t?rwy瞇og /8cS$P̖uvch9q׊ϓˊ!QjK*-o.^2K%.`N8#߭7OG~vvjMPIo$]Dg#Aޜ&JQp}{u)kfIGFwO۶d3L?sv:Tt;缞LH6c=s]De#, g_µlmY"Ym_f}qIjTJɒZ v(o0$==ԟhiS>ZլVFF2ʊ Gs߃Mhk/4)Mmj-wdZMtsS&-*M&s:Hla@4^V g-Ҙa,1R:rYbʟoQ4`B rW9<ӡ#\g\ .IY[9 +~k$0 w}˵ >x>TڑIz-'dWp#IhۢC#R6\RꚃA; v kU-ὖDI(#O?_Zy>" iDo?.}1V+kKOjG.ݹ 9vmJjwH7ǵoTOI i&F :~'R[vho.>UL@Q7ًLJV\89R_i3ە 8=vse>wSfPK(&dyLso#'TT1>0җ.f$uz [YHk?ښlF l =}yM¯$wwCideUm +wo_Ȇ?" La+=3߃R`n fb^Fw?C40.B{g Q FH9 r-{/rAheea-u%ױ&PEeROzMGjmAʹs Cj.A4Ju+,`9`=II"JRnE)"v6eA9}kGQ-KĬ&cH7rq;ԯOp!}#?pNzUrgQ繂4!v<uB)''4m-eyM"yV,X)={}4[{ p۟o sH=GQ7Ku(xnXK&Օ1䆨4V.QYxva#Ӧ!Zo0+&FGB۽aG}h,)H~888?X,(nnUٜȟ4yU q =jݤsrQ/4a_Ǩ5̒:c+dN;ay gf6=9,ԝ)Sݽn|nLXN9{~ Ɵ 4$>錟#>Z5 rK( ϸ#e]C($@~-&a);[hB((((((((((((((((((((((((((((((((((((((((((((((((((((((BQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQRE*ƃ,zP4Ditq;(UI&Zy `$<W:HȌ%r•A>?"10c?Zm,T3޾c|ݾF`OsN(ZN+`"|9W)aƍw ,3*82$2q\G]SF29>bFP$`p2:DXˑӞ1~g:imES1 +( +(,"8sla!meՈ.67w:Byu:W}$E K/cQ [8E11/\gflRfM.z{39,S<~dȧ!JD2ܜsOA$@G mmJ.Nk}E(1)♷ʙi|BM#@LВWw:ғCHk&(ڑ+\mYx=IN:sjTI`7'TPŕcEm|; | g4[O$`ۻg8ՆcNb"xbT^_FKRkOđgS'Πm5]A54bwS4!YqЭ3Ro/1XANJ2#ށ~~ +Ҡ+BcO|U }e [Sn"jvOMI.0 1'G2y, jVh܄!ZJN巰ݝSf~-l^K1#=͹YTg30p?^`C.eUprⳕtox-:4+ >3sF#*laԃ֣vq (FVapOw&-Mԣ):! ;\ *"FX%gz0TDSˈ +d)cΔUV|J:e՝$q/XzcfKV*ysF D+I,I L3.~m4ŞƷ|늳om73j6kt'̢C'ҒKS!88Rts(S囚Dܤ{-K6x)ɕ Xm_~!@ q}j0Īaq5)-%]hۏVfA(b2S\YGqdL>a3VEk-đI"0qhLn5=/5$6Hg{I@JrQWhj%K\u$ܪ 79^Q5\Ud]caBbw=ɥkrm$sY_k3+GҭiWݲRw"^N:xu\iOU}^oc%$蒅G;?f^~*2֧X/rO QYd@ J=ѥyI.JD~+1oUepY*K{m8QJpFzjLP90]N}?k&RCt?:k[ok*[}|Hc1DHV$c5$7mjl +[8"U؁#*3֠hfԧoev#$u˩Q_,-WrKon|N2}6»)܌U\Y>ϐTGkF:3teWw2F@FѽWV 3M$w±=͜VAR@y +XѪ#K +ùk0NVwkFLr=9wJnQk] +EHc+OS%;R EW4,ߧXnʥIJXϵYnLg-Szt%Ԩl"s8!Qc33~cEC'8oѕ[oKsu_ȥ]Ҕfܯ-۹5j fWJeS֠k[ŐȥT3W msHDxښuީuHPNzc%Kolv@W,MqC=ojmi$_2yhu;ISSk^<@9KxNt$lgң͒?1D>K#3~8R6*̗+K娍+ ߭2{{9g]q cEY>\uBVf qϭ1Aҝ7}-YH_&° EP(>*Ům2 y)sט$ME2ZT/Kve*z?: +N߷n 78"9ԓ^ʩ֖]R5T֪OV;{71|K$lE $/jw魣gDJ@#UhV̅>xttmԢM v6O%uerlV,FޜlF)v>Nvy9 KKk 12,xilI_l~{PiZۏPf!_ZȜ@Kwc4wH\ٝlϵ9qR.3N֬D nc^ ~9FfgE6s0^#MM$-և߰qKX%WS9޴t2M0 a$`=Ѫݍ8Iw61u !$(c$p:ҋYP0,kV8ƯAF xRX.IG~1n#Uո';rI6_t1EWʉ&eؼc?d_܉g76&MveHgE6tt;|I0rbĈ0]+kF@wt^ۃm -Ͻg$UccW|sp;S]iukw{N+(`PAxH̐#2aA qO=͡F\7>Ҹ<Դzk"H:y$r#w-"H$H0%9@ѯ~(L'o<*ƑԪnpK):ZSNYn3HAa{=y~kT0sԷ_SN;=(F,18=:˙X{iUv~u-P_Z۵ʅr1+g_My\dPR5fn'_.Dgą*$ m4[ ]7`qڑzZ32+u@O۾eiԭ4"xga`IQkjZVO#k{k˙ݾ@c8E`gTW%hYk9%ȁw2kKx$;w`$Î2:u"oE弨G8ג?:{D.N~bN"'~&}G̩n\l#z")rz CgoxUo#F![iewku:/4)xRI$fl"n$sZZeyCI*:1-[cx݉d ]9#y~<:%^)_{ ̶RDm'ܬq5R\sct rmFx=:틧 rcmrקk3L +~$ԑԍ[ܽͩG>/ɁoJK$Y%7 *H6Et9٘%" i5-ٳHEN0FG +sUqK3- @ ,mI\uQp3` tiUx:5onXY\p̓]0c+Ų?hv|,nz~4Ybxs4*q[v O#;H)%`!ҥ%hUG4O7wfy!iK'}B}z! jmF=%F@Sc $Sǐ9Lzۡt}9CZR X6vWn2ǁLPMO'W;RE*[s[؊W2J#*2oh\7p=:O#F *$Tmm|9Dފᆍ/gۨGȣ(ہ'II!QҠP` +dv~NX[;`O?{Vnc3{os% B𤹃ɐ]Aa99bIǵKHLՂ@M??:5lC+?L4"F'Zgۧ"% UpcJ*1r*}%%7:]I$ cy>Pj# QUwcΎB:֫ 3S=(rAОrlᐲ[[sDL?:P?2yw5Z(xYl2#P*d*r5~:=QOVRNYdV\W8RHՐ. iq3J +UIOI +e~?-yRfH}})9`e*FIDazq׭6R2;Uٶa E'_l|ːKUBD#h@YH#1UZC#پ^՝q=ecy"Sg'v3G+SZ};t^dt eɄS4\Ȉgp2[wjNx ः}GJ{yȇ`>֔(ם +dR)1&]U=:}XBm8*F߰qJkty jz ?*j͑:P4c֧7700q`Tʭo7䄍T+mKFIn>*_;+eU_GzJ (KEhU4BG=\R[+kM{|T3]CE0Ts9UStܐ6HNT{{y=PMIt$wdόE\@ӽ(K%#|NK؏8x0]KnI>b-f$+>M .Ӝ\t%k{v\*COOQ\diBĎp{RޤS̱e#=af+3J%1 @NsZE*<.2f,҅n/sֳyǙ W 9Ei5p&fbo$qSy4\iӞ)2ݥ?ԢAo +;0 N~Fx˽hbIX'a\jv,G{  aw5f\ڻ,5Q.~cՕT,fzʐ{vXٷn.zҪE$V@˼3Vo(3! Qo3ItT;J]*9{;L[ć6HӻUk"A$E!^˘ +y hN=Aڣc(NϿZNv+j}K}^.fkv-9U%֬V 9_݇8h9Ͻ1s}F N3Ld+{tkT#!Pw(>=qWNIִt{-F,ZHl\{wJiF"su?S&tЧSJB}6ľW܁~^sOҧ{[x, U԰ pw~خm4'i'tUXIK]z\pyV-wld*9$#Y|ƑdxFw\B MS9U#Lc}  +(=J/^>ZHi)sU58bLcbrq?fwmBɾ];8`#(`#XIK.0j([ar8?<[ȳ%Gx}{zRRw9ҋhWtd=d"t1ڬ[j7Vv~QpvSt(Ia! cjnZ'Eyr( ïZiΝH5Ahk]Ms4)Y'][43Q`CIvwn9ǰ<[5AjDTQ:'?zemo ܎FH'vR#)_[$cܹhm>WrF:A6+AA!dc ~^+ڭ!ʭpNU}l Mx!GQqoay?:DHE 7 U63-:|ZRnv\`)$*VoeV^fqk S[̒8'H8# 8Y}3KX4Ҫ[,@~ET5Kk-FHܿ&F9< (&Z+S}I,6(No^72,vzN}Ojڰn?1b^N>Sy4nV:,Dq9*omU?GS1dx*-|9nd$Hh\c5B%h^,`##vO>'zyv$`?*~@8֪9e?h2/.m-BH|p vhcFxxf;}B1-l6x$~^%v+kH7`??zќ1^5_Q[$O7c7OsUc;\yME'{=}RH\1GqlFu C )؊Ӻ^cmo-BCU#Vcoqjgq n לcYM\="1ڶl1s$rA-NpHR7{Rޗ:60i-HH ڛxpX +ɮ2ǹL{XS^BQR-Re@N yP-֡ro6mS^hMrZioywXI  꾣=O X ])rGyZ;¤ʡvS<ڴ 6(cghn + OTN1PQ}UfiBJqۿ8j*ryPN@"2:N !nP!1+yW{MF7MwQk{@PB۰k. fmq>|NrT)PzgۚMԯieS-QN56hvY8کu s~[[2AkEQZXQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ໞ]b}m8֟% d3ncj)H&7)d4(ֳiG%}8['1ӊͩ#h6-B^QEQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@DguEf8޶d>ddr@BsPi*;^Hc K˹"{F䔁yـA&ps2*u'Q-ҢPC*iϡf+E[6>038{*ѫm+ƑOXwg_VKh2`d|ưTdnFE#8nbs]@ݞF ➐ʒ4<>7—n|";yk!B 92b:娒( Eݒ3S[((IJJleJcR_xVS x:*Fcnn%Y$rS< +\G9^odl6Msr*[xcYa;* E;ecK8?_֖-êH#FqM9BmZ?6BM&#16diWr*c$Νe ?p2>Z&WZz| tgym2NAc++&*Ck#2$CN4Fh>#/hgϩT LGLTo#:F ̟JXM~_ 1Z36WKew +:?/^QcXGe梊Iee zF"b󶐹q}j9UݎZT֋_2P"`f/%F /^}+98ct֎|̀N@ƟnO?3W;s~G]]1RcͲA9ׯ@ +FYЂ0B'؜Wn8Rvrh5؈R? +6w%IGF[k< 2 RUyO^կZ +K9hX` y-Lj-lrg~nLߺoC +o7{~F4WʱpĀ ?G4e4cr +2\ټ\f>z$ +-ʹY6aRVLZR㾝7/鶮HEX?˓ҩR!@ҩP}kA)ijG!p:標Nt; g=?O֔e&]zTek%PG[,V WX=?­ؘɢ̄B2?=JRCIYߨ%{Kg~ӐjQYۉ"Q}u֍5j;}#[Mo `J$9{U ԔShf>cd-;UnU6Rm9=zuu-嶩۔Â7} +1-:HT})*ZsVIdXN[韭n tQF+zS̷#g`Luݴ/EӬ|z +%R杯{-t_z.OhlwR7),ӵO169=y<ՍMy(Ig @U{Ve_/Ubo(U +tUbW9"FVuϦjmd`(nrqV쑷++<CmlU(Foտ-V{t<8zb*I$8PX.3zgQUKY9 ?Q< y+ǿjv3sv W݈Y(,I0 3iLҩm^T}qy0e@6n+֕qi_4F`JL*cl$Y[kFgSK#GnQRq5j3kypIhp˳瑎9=}i64V6]H-]3H]ˆR;#RXے&rSE{Hm79"8u[;F< +9'7ETW^ֆЮbG#NIaAMl\Q_zݽZ<~c̀=A#߱Rɬ^K$ .ܪzg#)l\&] ;HrC*zϵTh/4~ lZ {kQ2\ZļfդϞ=*{ +`ϵCj !^9ƪ$m_cjt8G %d1Hӊºg|I*F06)> @T&F=aVf^0YBC%*77u=)t彯I&Gew2U 9u;Cym$2Fppppz+Ri%4kQIyo|C Gu.X=n"_*sKcU\Rn== m䶶6zwscuP>RNXqR~MVL̬$.$\ikl;"#xۑۏZm {vR ʹb@\c$Jqn#N=Τ˞mG$R 0`~;pxioUr?Ao߼c_SڑZ|r\Ki% >f@:VȰCy2PCJx *3ۧm- w ĸlNx+CMK䁈VLnzt{E%wEeY@sl=GXZ4tyy\am^5QE~T% Yw$1lʧk,1O\s^GUTi"!/?tk^R㯧Nj$IЋFԫ#\G4ur&ᎇ򥱲S s<=bέt$Q;T.AkcqyUSpa2O98KtOqMhRe*pE%\y "_o8m_awq*8(QEŠ((|iHqthĒggWE(IE +( +(4$Hp +@Ga:*g'3s֫vڷ4ݏ)bH=sIX՗:Cm +7t֕'HŴQ#2'{I/y(nvqқ4bkEVe|Fy?FsۯR[KBRĈ$vYΛ+LExן+yv#G2d3DR mљ^ҟ3\?ԯ#Js̸ĎFJ,͎3%ipiYdf.^dU~kK[H'&N;)M,IfX1l$eqPD-NKcVh#7C,t#ViX3_"%&܀R]nYq?Zx1{V/ahXl__Ҕ5B +ϼEb`OUI 0H:Wnmٻ{ʼng.{@3Tk$OFA܍FB˓.^)m,M* ", bzJJNM9 Oȸ%ڄq@#9ɨ˩s>$=sךiɨ^x-.8N8{֌X#h'&-lF|zmeʳYvuݮc#sTD26G\?[{]7t4,UԜqڪK<{E²6pmS:px+\֫ΐĬP2}OJȲUVWqqŒ?mBƊł*&6(y:SGZvbU'NI S0H@=8Km2~ RjۛFnJemva86MDrw=]3bex$s׏g1aѐZ}z\i{߈ 涽Sm*nz[w"H~Ώvqr{:Ҭy"&[FGZS[ZH[9eRGnD8Hϗkv2˰8݅*y ?ZX530TwZ9'2*P|r?F<*akXZ^bG"&YI=&bĒ3돧JsYإ™;N g$u;Rۯڛu, d =K_>3V@ӭsF<"C1NGAdQX;=&ݽ. 99e})l-Qss { o2o +^;7V\(. !^IfH&Hw1B@kӴuK+ӂO҈.S%)^W~;m{q0Z#@Ҍ 7P(mj)pw,I=)يQ֢Ghuh +?WZ_ěwCVe[f(rNB-ldߞ}y"]:Ki%Hܒ1PDD2@ aIӮi5iNnTi$VwXzU&I2#1#U[rRѰץ[,QNV^PuAZn?ЂHt+FrXӋC{{3ζpHBHb@24џh]#t~ǵ/ܸ曧u) 2PXRC`t4ZZ%a8ϧj3iZArE}ow{+CfsgN}2F< l1!O#V]SIJTLN<cΖ9>ns$qcwp==r])(=,M4%&`&( !#89+ 'bGjY\lGC1\28鏭^Pm 9FjMh& 9dkmzLb>O[G$X 2~\':ʧ3CRiW 5Hn +vʠ﮾D:͆ܨJwC`qڧԯ-/ݭQqh`q{p9x~;%`DK2O).K+qTmSTvܝ??4 GMaU,܎vA9Kڴm/Z^ݔ*~T^H*42G3PbuGo%\Fp|3 ` XA-ɍ❀ʪqМvwԺka/ dq`1 >Oue-rp9ߗ#ZEԒ^k.Ya +jƵk$V+p$Dr13dIjv7 c$ +rN}fX ;@57F|v6 + p-܌'*h. ,{$S 1UJ'm.-Z$`>{W* qӒf~;2y~\Νеr@#{#Odӭln!kK}](z3KRs;2"m##O^4#Y m4!>a܃wFD`jn[j'퐡 :1d].VI#p (F3@kL3] fRFq=+3nXW?i(|ZvWpI$z%pgxx03UKClQ3Ir9/@'=z{Qqށa$FLû%6AemFA>{wV2--Z ;~KwzYbRapO{{$ld@ -Keu%dIiIaQWNWl;ytQEYQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((>8FnH2OQϷnOIkB 2N*$Ԏ TE/83jq wư¨7+zkY/]l8lSOw>q&[895a%('I~:[HFY[l*ZYV8e ).G g?$h2A @i"8 |ٗ[uq nlӂ6)4'v4\#OKE˻ER\ڒn)ؖwdAۚʺ;qaVxtnH0RޖF=%/70ٹ3"k$]Ai#  g}Y10@ΌힸN=x u])I+ۤr͌dՔ쩀1ga@壍I7GQVSj6d=6p1S9 v#ӥI#Frp LUw0܊ݗimf14m<sm:җ1ë6Ҟ=՛Tz-QEŠ( "?(nɦH=E>w5U MFKNJo + )\ zHdr3Ly\uU.S +(QEVbxпu=JíuK8AɏsߠL4JWKlRsOZҺYQT{b 45q`c"%==X'Jf]cE ԆYq.8*j*!F~Sgi'4mtQEeuԧpcBNx]1ޤ91RE0]8@ +7)*Bdg6{N'o(XJ0Cspz6I>98ۑv]LIt/)I[ ѳUä4mBT嵴\a<`JF ztH=}˗,8=i1FޤRHxcϿ$WAJƣ^h?ӣ+TUd, >\VhM69֧r۵CC 7$"(!uA9TĆ>_}MU\LR&W~ ,m,X0G_p:{^DM0wypzN![#.m-cJӋI+/kO]sŒ ߥ%=[8"#/g(;4$`{ 4tpؑYseb۔SwMo{|Q`v…DZFz[kEc9sW.>s@5i6Ct\e˃Ǩuv!S%k"63J]pQWjĒ5Ool\` zm6Q5V}F%@E=~]5MME{]uC#]=챧ʘP\M>I>c|h j /CW܀s0F 2/G +Y& o䯧*v5/ou^]M$̎Dql`$Q[]$6c'P$lRF̪O=?:P YsqB 95ywKSG*(,u]֣c23(gMqTP=@l y0qUtg:2%_Ԣq@;&be3#de󓊩ik ݹa&?T,p@DmcǾOKdoFSo몶vrzi j69U^:ˉ.^/n)117i+AJNs8_Aŷ)Joצm((oMρҧ\H7[`GZj@)~Cq.gXB֜uU/I)%ZK*2²ť 'NBn*TvNzb ʊH ̃v'ױ[ +ma4n6РT;# TS~Vꍻ+W3XN19Ⱟ.5f_(#;ш۫1|ک'|kȢ2Fv4_[tJlS81ӥYXdzi@=+:Q98)<yK9ub m@[ F>iVP lu +xҠtf`%P!sjǛi ܳO{;v,9yy,ޤ" GQqY֠ǶB2=SEoc՞v1 cJ%YI)2-9͵V}7.F6FVD]ϸ0#=;ey IFR<^޵U*:z +hè,vӶA 1B3MY-ViJ6ؚh,/1 6T#̎!p݀=?fVkv.9lqUĥ_%ʨGҲUz4k[/ :3] =UmYo\\$(ylH|AkU p ‘9&mK)cTQN:һ__~̰rY+ @sޤX_챉?a6rW%sӿT_EkmV8H .c3m!KR,SK^j+#p3kiە$A)<\gTH4(l<9dry8W?a-Hٶ䝙v#87Q[&zUΑswPx]CڜwvT+(N'Q^kI +,> +FC'==*oysB̑J! t'=)!Fʖ I? 0$*6wu4q5u8y==*z&[z5;nσrK,,ыvX~(j=[xCq,[f27'>q (@i"r olʆSKt rO=jqqp>*4*qǩ=(vDU%~k1nfƢ.4ş)rx'I7QkqGT|W>iyBS|Vn0מ*7?)Y:jn@Y.ֆ {eS0ێ@銬9. ,/(-۱ZZ[,#/`rx+.9)Q6T*$"dN@88㿭I.GݨxlAyRO up)?5w]ZXk,ߺ]G'#f{2F38~,wGI=lyKcsܚWL+4i!>Hlz)w׸ˍ^4b`F3 Gj{{UN#FqNǯZmΏicN7ǰ?Q6n{G'5U_zV&PkkÙQEYQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((jlt@`sh q!K9;ՅKKk83Ȋ6lި\,.42:Ru_.q SXҊKeT֯;üc1:v +@1 sld0-TXm z$UD)$C2 R4&PƧ硧C?JDx!=){V3ڃ#D>fBjsˈr U^kle89*yMtčqI+QLu JDNhi4O3$ @ӡ)T'zq5'L׼̳M!58B77$5""p -mPa^h%m5x 5e$lA@z$DP +;' 6G]۹WKcV=;dVv fdߖ'f + m?l`-y?*6~@7|{uJc٧'hFV0 aGVl Ef_(|/UŐ~1;\Z7'zf}~vgmԔd$)?R,2 N:nam^l*#E6`v$֝S4AS֒˷RI%hTqjEbs{n$rI݅Q@((r0ܠeAfS""WEӗ,4g['61 p(7fX!"@:SV`L($k;hzVB+h&lr.SP\LgZ ެ5ʤc҇Dndk{(bdIaL{X,LTgҴL04g: @q3Ou_$DʄLB>a\u[) q1~ۀ/l^#}oFb)a ;S|GW~&AeI`d +0Aº1AJ _Żxqyzv[f3-; 5wNgO H-V""CNL`mTUnUVeYL0CvS==:֖ƧϾty-3yxn?tV$LBÇ@t>>vTXR1Q{* + Yyn(]),ʠdR+!8g"훋m| {s slHkҦ?bXwhWDSqQd洘Re9#K>o*ŁϮj idr@=uFBkW˵,NBd j"%T\*}qYiiX"p?(ޯjD+`F;d|s-z1}^B&U*J=8*nrLN93nnVy~FvfQ ۧL; .Oa׽SjSN9Nt_џ)ɎI U\I$6Cq䚼f( _*>`Obq֝hj3Ԅ-?u-&<}VK-X}K<T2epFrA=j˺ѠO" A*ܯuhT)sNZ8V$sj1$U:;|=JMo$W qS lddT0s@U\Q }q΋tYspF ;>d H(€?Nmhj0 *+:AInrE~npT՗Tӭїƍ%2x=j16;Ch /Zq~Osq6U3(px +K,X̆Ee䃑jk4y|ԉFL<={}kjAC y8Q5;_R6skJe%8q8<>omysIFI˧ AВ ="H@]#-5M]j?6uw$6X2\֮%%X̏@&go4,SZ߈Qy")`AO<8Jem~W۳_*%nduРSKDJ[^iѴc`G[Z=67 fwG`bG>ij:Զf;[-nu=kR$ҵ^Q_j-瞛H6E;4o"ŝ tV+|9c#8ֱD~u2"u\yihI{l$1Xmlusޖihn-)][A=.5]Jk4m=]OSڛͥidqV58lf1gpۥm2G_2~[91QӳD))][kwE/!PT9&+4̬Y#\;Iw5&m^\<psǽh66uq# ]N n39_בoTZ[ݢv&=7)k;m O8:(I!b\V>=p mi2$Fxq҇՜9spso>􊄪䎘rfVE]$VMƥj K }0x$§T=hY#vT`ztٍ8K5/jF{,7,jpύ jyCtRi壊DYP~j_BEb 1ͱ08'OH7^_jit8ܳ1G K M LHpavU$h,g l.)$"6b:= ?얗7Bіn}MUqtcmozǖV' 85m,ۤ/$8VVZH_S3LZ3'wߓ޺a[Fc.ȭm($sׂ?*w|iݟz +c̽5|@$w8Y_=F%`|$c;:M2gA+{GJY̩u~l擻fqOWzڥhBt{UuyaA>c'ӿ_֬#7l apo4^1mi0GXXcyRTaRٞ_-okuK_A9s䃸zSmi$1is # <֯]X%ޝuo%YŸ@o@28Yx.yeO\7{mZ˝l}l֭MJ #p;&ȟFugC)[["<Ȋctk}~krS ֗87'k^Hyq{k{m5>R +XV&/>#)O9펕&`:~єi2F y JӻDyCm98}]nTo^ r3m$۹ ceHc`\޺-sJ]W 8 )p9޲TiB(OA顜uxheEG QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+Q[d6 d0e=N(MtUZ+'#hN9:a(6(AEPEPEPEPEPEPV^kBc**^a:PC. +FǗ, -,#Cmܼ@*)6HǙM8+q5˶WG187\sEbZL.p3L#bhZ<w).d$9KnD#K6Ĭ[oBBsOCSt +$A u %7`F+ Y~cy}̶X,oߞǯLj1qz{$0?Z}5'| 0E^+ P%?j2JB4${pz-E# l&`{VL z +EGO%[+WMDf;^GFRnͿZKYR1' 0tVKXH"JfzY,` ToϷ)nh`A@jJf HKpѶ%`2NwoaJ3ː&mMd,X@ۜr4i׽@,v2LWD]m8xVMO;Mmw $1ׁe_ٮ%G6\:δQmnaKinTI%e=3Md[1+ *HXp[4&]Xs5'۶l>{\G#g$ǥZdDΣ{x%(ݘGy8me[cKdjr2vٿ$sXqGҢ9g m/bс&pʱ2Wba&[Pe@|'1㌚i^s-_dmB53ꪠd8Vc|Xꭻc IsPN1RHFHQ_n]/}BH,L@l +|&Y- MrۛUyFDgw'ҥBF62=ZN.<=0pNy|$G +'gˏґ>^Xwn,NSTlM-մ dN8MtZ[ĒGv`Nq?[2,~\~^ĺ5ZKx{~^Jm,L5{z_Oj+ .,>,oJ_LFsSV%ge?0;> &*Y sݜ1v=:UF$ˍ InRI僜fli^飅 ˏ\j5X?Pc>Eg%߱~bY^g*dn$ǥVy ǒGRVmt "73S/)tbq߱Q~_'4yZHR[K'G +\ 9*;OI~:YY3Ӛwm+;|P2=~cV`gMqo$w}}:Lic5K^ZO,K[ۜHsҘh[=2wuk-Y67nU+_*{;221#jV:V2o ypfiXl_5ю> +5(eUg8c#=qW$iw|D.22;n6Ʃ#>_Ս#BH.@*NZ;$n@=WKoAy^ h 7N̲6wRHm^LluX꯫٘^b$[%ԞsDQO{j \n{Xl +AxQFlG'?ZwI\RQOF;f`3K$Sxc3-ml<̱I,v1ީZ^ǥ7ewjݮuqnWq;(qWFiN -n1Lխ`T;%@|ՍQO]\y0vqӎyQH#uv(_~^s= XRn2Z^{0JhfaEPEPEPEPEPV=V[t@Hp$s;;w /#(h'-Mf?iD~ˡpqӚӒ"C퀻JâdNO>T$ۼ )zcRȴ,Hw?1֫γ2lT.6@ri.fIQHA#w4=O6s?36Z[H~y&c*Ė\GJ'%.aY9C#8Tc?j/vWQ#*O,('8'ڤcoJnL=9-yX2\`Sɧ"X??v Rj=ĮF@|m^',I(BrJ$j7"jESllW&NfUPN{3;_X@'gd\۸D>l嗁NDrrMd椃| +<݁?BeȤgH-\9A.vI4΂FO;>\? qxXTX(8/'5.uH'%ȩj񓄹\Pi$P>.ح%5J:5EeeN84ҪH ~yKr:gԭf${r7`:UDܰ#-(ybGK9eq +4㙻u.Jc֤YAUF OrťGQ $6vsp=3ZY=O:Rd V1)HN;}*K |FqO|fV끞腺m*IR;SL6Îj +#{jg_lQEQQE9ykr2nOG:~~;yG?:Xq8ǥM `P7 0zyI>Qʗi?#셣FH[`F5:p1]kq2:wjljL97(dKx#޳NWS]uJ˽f M(OZ-#j O~bm|L>vgj]NB? *[o4|֎Ƶ$o~;KQm>@%j_g5qsr F1}NԒfB(hCy瑎:V3Ϋ ߪbTBZm,6Sץ\a*D$-vAQO9[͉)6J`wVf mZԳت g>NJkrP Ɋ)V{u,6[Cn9>Sm~?.#W`S׌SxOht H8Zp\w#?ҚvN;duјGnDCUwnfX@$&A㊚{h5.H73N?m,/.octvnݟ4[M*z>Wfhi\Gvw sWnʷ.x;?\~.e2#:䎕ZXQA{Ynn8^*6~m:۰pǨnCI&8`#js^)l1X(X󷞘?7#=QMƒ>k}^7,vnMcӽAapx +zquh4(Wb'שlbY$HL2h8OҴNSTԪ'_wSѮϟpۢy`094\KlJ&D`>};zPh +Z'+3Jj] Ef!2zdzUYNRP[IY$X`xqV7G@a1o O{];Y5(#ss{y4o*o]W3ɂ4_0$͔#҉(2 @)ތ-9""2H|D;`ͷ>=K4vW䈮̚vdw9J[`Dl-8=~\ѣymdI۞JZwb7VB7<+FRټqh$r;޵.oXc%رvgi7c햬w,,BgF=꽬G4rOԁo,lkgT+6 XME8ݎvz]42$Z:%Pќa+qIGc>fܵKFXkFiF{gwaNhmlODdgsR3Ё$+~tվtw!^ N@<} D[GeHBM;[ܩAkn).JхבTwVC2u\K4a8}1Zw^XMlCDqFI<+q(f"fᑇn1ڭ%X4:d[ǰʎ9ֱ潽U"+wmţޤWMůq=֨-fQʚT3FDp!s;GRm>H!\WOdEkmpۓf+Lr+X7tԥEDַ_ޝ^TtA$~XM۷rNsǮ*Yt#&<|^P42Gx+8 +;Xigxie>n#s?漏UÌӷmWdfl;' K)r[-VVF߹!$*1OU-L+A_`ncB;.#f㠨l[ȯ%A0a,`vp0~jMqx.ɽ@\\j%mI8ny +vV;kl;L0\Ϻ͙ o Jr?SlN~aXs6{V Ԕ D 1ӌWC,Mn%7y8THO^Qz]C"M=lǚdnJK:l[Q1ǸLrjp"Y1x#?/:"?)[jZ.[Zޥfv.wwG1#' sP$" fY~ 7$O,;I +7* {U6ۗӡwyl +;4^ͷȖ ne̊ɟ6I:᪯s_+<`$!j #O\WN*G V(@RTEb F,y<N5n$v`7x9"u8|ݸy:㊵{uyqegF;Xn?Aқ]K?ʢ* ((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@\絷nv}SgsFxƪdR>j_\K|WW cPvUhF`yjoK"MxRPRGr}zR5OFfEn^a;j79$#ީY=XZzu s6]'i.W*yqTp$`vIfV^YL1Y=8KfJvv!G=j^1սLX|l!N x..&bg~3W0[\(4Pd.1깒k!V + RHM'*;H̠(=8J3+ phRZNchZ5@(e8ijH. +Bە>Ʈ[ݞCX99qѩN=ɀFBA|j׊.XÞ:Vm-+)TN?Ư^G $Y;sQt:aЬ!Anl`2u,[JT`y=i-DS-,rFe6`cȪ-VA-九/zgߚHʌRC1pt^yV7 A[ /]_qydy,:UChד[l\PQy7F0E]Ii$_i_>q':\꺕Of՚]c~ʉ;D }*73PtyҤx$HKuEɒh)#u9S+&NnWvd,K!kq x==*"$ $$n6$ :?'{fkT}ӿ9M/vΤ:~]wؚզȍC2֪C$İOzj Γq뻦:ĻMBPsFN(' +1VMoK-Фb3I;Z vVv~utG$6*trHf.\5[*G=_LjŧIūu aKK[HBY'\))#5$qIw5Ϻ<Ȓ# ҖLgq^8DqQ7CZɺK_p\ΐMeQ20pz';֊dQr9-FL˄P"Qv3r5AVI^t[˳0׭TI?-:ZJ-luO|oX»2'5=7~[+~[)s;L۠<|9T;isЌLyv\_1#l MK mS\uuZO.&+VDԭc21WHl. 9K*TRխ{$Mjf U/ h֫$ wc4xLgnhmYҲi-F%;[s95Fq 1:UH{EIb=pvC/IRI3vbWFBpH={UEL;$Vܝ++WfѾl\59zfiN'4_M+F`W^_cO]bb'eq$"N:[m=T$8ucEW٨Ay;oyh0FrqiA3L\h*˶ -m͸1}}jKi-ҐYd3>էtֳm o>Ϙf?^u"XNBAζMYJ #kew$y!L`p9'B^1;u׫7o"Qp |u& a%Q cM;]0{Ԗ \)I2% m#s Y0eI![yBD`UxԒ1ƬC m=NU[^"B+S~Ing$lcV` 1O20y8zH.h\7rziSp掝?Ay$Y)7~RG9*k$?ݜuhb%`>v?tEZzY8ss6Re/* Fyl69f_>FYCo(|IV6[K2BFIl: `zqniCpj"&Q<I 6۫+L(|PݺyDpI2˂>¢VuPSGzD`VI !j.'x|z?UkuY#]!p9S*GqWjv/;跷J$J*b7N˘DbL@"c /$<:s$]GFV(9t5[iӈPG, qTݒFpM.MIcaIO9ĶFDGhKn{c늬;ys>C=*贻>ؼ:SNfLw9 +|UR4o"&uI +"̡Y!q=jZMǴT|6ezc{՛Z}6iJ´}Q1Fc[J\.N2}}*U^YZ6NvRΩLg*]R4q*wx!Oe׹6LW췐=,d:{c{wG3Jd# 9Z' 7/Э6X`gU:̽i;cv{d+&R-..2=ҷN-/,̢eUđ$c|1H++ʀF60+iKu3ƓLs%LJޠx8?/BWZ+[qڌ,uG s$vvF!$:zuSOԏ9M=@aTskvt&G}2դHc[bCbTpb1vw:kjװ$&\23b+ =fE'o種Qiry|#rLLVՎ\7?,^GXPjqMu3C FWpqL[f[ myA,G&[NO銻YDhϤۣ2:A4kحLem;[2c:e팮fI#jF֗Zr( [A.24$r;7\L18 #E+G] +.2)$Ҽ6bI8MGT`}(AEPEPEPVmǕ+BBa8Z0hc_ Ah.gc#pe~?GETF1f\$QXsm㚺f7-aP*YWOpi6m;̀7җO70v`r+.\w}L@ޠ~]Qn;pl v"i.0˴18%03}M>Ϳ!ܣ_TEOvcI?xz=A+rΫ1o=~jĪ.pcqS%atp@܆rμ`u{BWuuq=NCw|GLSNsPV|QJPKzdmn!_0!xx^iȗKr#s֤6E-9D#*ƹv!wڣKm1CD=6}jK3L>` L6vyDۖ,= Tr䤄@*bZ+]۳Ina("0qRB#Fdm ܎*u`\H3Qo!!6هg\k (!$߰4ۦba_PrjK42r"nRp I_n]nǂH6N7N=‘=g z+1RwqʲE>F=*%:ha! im5 ЌqO_β࿒#ȼZE&3 +fn¤}5hXr=4|#þlZH ll19wNΘ)h*n*:+qo[|~tuB`VͪN98m.#$9_Bcnc*zR_.?VF7oLzzJ.dżq 3zVlbG,FH`[ۊ-fW;6Flz{WN-$dc_5o-mx>X\qH/CMmj4'9=O_6vM\}`06 +Jr1hnYQD71$)!Y' ;'VM/C3UMIM+,~P,DĶG'b[>;|T>:sTH^Os'^Eb.><9ژb =21kKg#iJ[uAEic a giq޴{NI19zރ},uKa-%XU:q8;(㧿z\t`9E=MΉ .m 9ؤnO;[9F:dߝhv=̷Ryv.~gմ'.&$dE$-@4+g4Z٤41.Z1!^1+jVͰy|s};LkiL"leUY8Q5r=6/?AE s֏""+ {t$M7فHBwF4[d̠Nyv\meq4nZ9!&&zN}SH6<`8؈)yƛd϶DQ,3CZOݏ$֭պ_^13Շw59}2F↛wa BQ_fgD6c4#$qJm%]Ō!X`xsҨ]Ylx^ jRtHM6qjϕZ vFQ\ lqիqkp$rRC漕tmEY>uqҬyE엓*4`Ču׎]*ֺ5uf]:H籁enH.:i̶Q-n |}C)ᱻպ%7FXsꖳ4Y!D@(l5Z@$HȌ@sӊҼHg!YxSffu˗M=mz\IL/go*b!'G2ԯނ>[I SH wy~`H`9(*9\]"Mm9 ӌsNC<_ibݖ]^ 5 c.>RFw,5hmH-.Co}YtW?ifW 2Ebpϭ_EmufGAn>Сp&NpOǚ{Deh?vՇKTݱ쯛zcӾ?Akuv(L>hæL/)" .sj]z.`u MWo9ǹ?*4i{%An71\Y㯭?OM:b-qX9LcRQ>QW+mF[8m#gtZL[Q:oMgYK(Sl$ge˧bԌ%mלҥ{٥t $=y`Hon&y_c'#@}T9JM#(!!jӰ5{BcդEp8++B9#grac"C;l{Պ`'n;91\1y;6Iđ[H3Ac9oԬ&!Z9 1ҳqKSiMZ`dksm`=.7bg涼[ϳ! -CדS6{hls#߾h\,)I;Zu`uRT6x[ {;m6tRAm-߰+- A5Dm!(]y\j9+X"I<˫i$-*Fr0W"t8ݭ6/X﹕9hG[v66\ɹd}Cyy^[ajUy-907;~Qhz1Q۱EQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*h#-īF7 =xڡbKI[j a7.vlqcQI +Br1S$0X>nVӢݡ +* z]XjJ#(PHQڙEŠ((((."e3oӮk uaym wv`K:(Ly7Lvedp28aeO$-`t;R<"i%23ǡ*lI-baf=)+(k]>;rÑ^ [!Tl1UﴑHA""\z~j&k"2D )%Ëy +I:P[A3[M$O?ʣ[-QF>~6\rKu? Km>Q `8Zdt$A>btWv1iM/t9dQ2y&$*}ǎXۊ{W`dAT1jRCJ|[V"F.eP,1sSf؋m%G\Zх8t$L\[ +Zeڼ!Wрq07&h ݱ[RZ>8 ?:,0]ʠ r~Bdc%p䎔l&E<,yW݂jYL N'"Ϝrz +I0)LfRE2C`NȬ$\c%zsScd =)\EX1|%ASKNgE3 j Nof p=G@A$p:S";nt6cQN4ڵ[;QpU`8fI# ]iMZEY@.G zYNՌ{E6~q/ \U$*d~TwibBHy3ZJyyF@7tJ] vNExS#aj0_=I:wdO\<Ƶ#i(Nۊthfd'#wl{fF瑜bb#%^y TmqpWt~_ʩ];|N8lB6~Moi +ēH\슍 aաmac=d(2HRH΅WMKB852 +I\((>jA-d@0ꤐ\f|z>,l_r;Np}*XE@@ =I$c)Jsm>\H'NsMTvS=W0GxBz玹֑Lʓ[8S<ϓk% )@gy$n[H9#vƩ,똦O,0f[mЉԯ%-,tQis'~$W"6GVfF-)f#<kM`d.qPO78 +Ó*=hBOO.xEvwFcA*,3ߎTV' 'p8}M\_g`2NDzi^^/~DRO)pl'PZ ,"T2=N-͕ 3H>~NI~)% q +QWҵG "[ܴq*R1׷NkB!P>^5H,1-!ޅ*esrDDFi +2Etfw*w|dT.T4umɎҖKQir3DRK"E~QƴR7еngKWmzӸ/cS9qؤ i\q +.ς^.ލ_/͔-&x[1t5eUs]VucEln'DYcfTaUm<-70__'=)aɕR9WyH{Pm;%sq_-OlQ&[7.m<ěW ׌sR_F-,d9ALZ W8e@q֯Y |y-x皇ktU^dZ[}ɷ!% -{Z>q',ʯʃ?ң^xód6v~4׹Xtym'2ٰc/nk=D i,?+s.o@#$ _oGV*N!.H*wMcDqnLjD8y:mI]t; nɉv)pGZ]Lc0;$ ҩi|Wr`I0z9_J'wT8ooQW7:v[r;nX̊9z{VuԓqoYNYGQU%m<2Ǟv<^ +нQksxmFF WrI(y`}qPKK1FG{Ra:ܼR+^V.mi-dJu3:&In.0|ǟNMFn*7${ n\FĒ6ऒFҤ,ādٵN\nsYOڪJp/U!n?ai[w KoR"XNJ!"; +j}vewň@k%r#J^[v^Հw 0Âx86``0bV9gؠ^*t>e؍FB@ +ON*A,,m^ܞJm3WJ3n3XS8f]ɸ{ji4hb)"AG_Ҥh%"ny@u%+o =1s{wkK ll%yH'U%@+$yAGGQ|!smn+{MI9Fta)~,$ei$x ׌ԗJ(2ҶAoM=F*vX)-tEQqQ-^S%놎9`;YPqlu[h7Nv3oޛ.P!GzrGSY$7it[,Kpe0P~_QεM ZoxgkKE1|A<քn-L! Y~|mx+*qb(I8jo=-G0;pK&$Dn68ֵ4VhY Ǯf6i<^]gޠQ-[[K ki7rInU$ں0V&߯ԋ$yFAsVuiEm%H_y ~[j))A :x[24TU:`={MfmQB>x;=bDLG0]яZT!r=? +,㷞7X$9I4F +>C|?4s\׮f+7|201'sڠ[m&\rDg sLx}Bs5RW%UÏNy^6 XFFx U<o6wǟ ۂ#s;-g`AT`Gnƙhv%yDMTr LUki +2vP%IN2VKq\̵{TṢ;'?BGj2N>n.-N_f;G=HdP|dvJ>׷̆+I NȋOLj^X\G|}1ܶ}QSAb 7PC5AȪszFܜ~/_z:)*2}n[L~ #6쪧C4m2NgO5Q5 [2{cȲ'Y\H廙pcH8SfJRIs:[hC5Ė]E WS aGϐKc9m_FgM,'%Ns Qw6K`Wβl#.'9U<5Rz8Z/[&My񋗘$鿕!r[UAd>& KdV|ArsGk4ڜI{$DVI1r~~KO:Q@ +Fw?R`=N:^Ib9PcܖH4iYY_a_zyKݢWb"Us׷XEo=(D +Wk /tճ,Zʪrs1RI:\oJd93̱ݩ7[,,*x:{k JKtjE Ď;hVffmŊ99O>WٮeUW1]Gמ[7A=X"DXzŽf +.#oXp1G5F8dy6(ǒ:ӳ2[0ڑBs~JՎ$qE-VpN1tu3kBKـ +wFF>Ii [t=(3bCʯ3R]>}(nOA֭`bI1;-ӯҨI% ٣1! +ǐM\mx)(t-R'SbH]ånURuB3rXM{c'gAu*aǑ • I:GXHp8ϥH.(*2A99cRj7*P}M@R(wC*XȲ\nXPzzUbRı"KcmS[[ol+;Zb)rerhbO1~_9k8\F#yOv;SFD(z8?±tJC6!VZE;R2,=s{ՋK5,f9# ^UƥZWVe@c ʛGf$NT$t +jZkudG! ڬG$6` [H 2TݚFJowֲp]U?BO?zV1Y >-rW_ågM$fRcJ2w8Ptb#Ep?+8\it5*dc6s+J#ۑ{~jy-;kYYd1; +k72o"Vx)$!x1PyYPH:f:`x6}EWԥIK#y>*ޢa̴9K ل܏ݱV/,kov;tcY֪!_1ԇSR4ev!ju\bS_ypcy ^HYI +wկQ1*w`|_jHm2!0ی4``k+tIDQ w2M|V29X׮qUp: })=o,}$tR֚f3N^bo?A3 q! bNs_lT\@.2g,r8Ρ޷q*6[j]XGihWK)~TG'>i˿r9 laĄmZYo:- m+ZzxK4[i~``V;{quܑpme ⥴htoz_CMhI.2Yrӯ?:?--+x*r=o?Bp<1W]UEBCf:֓SF޽oxYR5ެ +y@r$1qldg\j+q2$ ~.W~׺ڵ*T sӥ/fһ46e:36$0e :oog :7~uu'C&rXu].)6K0r5ib~ sw" gl0NTzZJscf7n? +OGtmÒO^!pM1āJ V%ԯas,m!x'yC{Ipsje~GV"BqYsSIռ%&V`ABcݐ%Ν4 `&B1R*QI;-W[Qmѓc\s^zbCkj f#'5bfy.fsFT3g'#Yp]!Xʧhqڊ{zhtok[j\,>X#PK umF@v:nOϦHa+!h{uڮm,rɘA,223ylqTq~ǛhS +Qi *1uʟPinu+ɧvڥmQT-cm4j:IpOnGaƯ%.Tnʩs#ړV*RS|+_ͭޜϺϘ$gzUk9]1 ≭`hDGrΪ\{SNP[xd}<$b7M\ԭ{ c#Oʠ_~'Z]=B k++͗&|m=OvYjW2F[d^X!2jN,4O6"&W@ Ҧ2y iyl8Z\;m_H&+ź,Je@8yǭ2 {[[JW@2[ vU !HI5iַ0Pgr)I;XkjT-m+<4cj°4[0|ާJNKeg8JM\*OoRSN;2e <{Ά6᭠pvfpyXVJfҸݤV1ҪSuq-Jρ搅d(䝬pT9Kafy ,}9dI;HFN޹}^I^+בUXLc:V 뻻:U/>$]d>Mҩ8My4xRyS7cp}GPkNMْCaU9\֝3\k/Zug\=:WI +C%Ҁ`vdsMh,M{I+Yd:$rY{T2.UDU*T{SPh3Z*+YrxۘvcsO-䓝dw&(ZGP?*n=OGUrcV.'ӯ5^Y\Ėo7zm8PE=Θז^"MlP&pA=սX||wNӯ.-Ѩ1\1Kw~[49~Q8=žy?zh-wt0KHfƜn3PHDHʬA<(ZjjME~Ce>Y[><]zxb)9IlZ0Ic֛ +7K7qh{0`['JXf-! t։&D,T䒸ZmC>^2:7Zn5eUbZr{Ii4VpExLxg؞wgxٙxr@>%02;]lw*QIRA + +>w^O!lg<Jj[1|UK}F7 I`G9 _Qb9VyvXLQ';tҭg BV~"&F$va#ƴc0LM+\✴b#VNy* >k9{ka k"iYcd-zN02+';qO]>µ'a88"`sN/q)I@$xcqSOz.Ţ`tQZ[lS$_;o;k8R*1C~>f@Q<^j(XΌsQi*dH>G+| =:tfʂr {U]܉XI3Esiۣ<;YfìnxڭM*֟:3N7%љ [1^z`ύdhKSmJ98&-d(Qc+^}i"\3.8=1ޫK5lrq֭Gq"c#sƱ\_w&^ZܒX _Z3 wXe6IƲ-2_%>PKvnI.oUSG-ҡ^]*nO^=wXm ݸS"GƁGz6ջ dk$Zu_7h*ڥsZzy~9ܘLңeJ#ڴl*f}玘YfH"5yZ<,y۟=+F&1Jxl«cЌdjN݊ilSQrU1$9 ) #="W;sl-dfލA c#ҰMw[/$I +veR4 lEa3H^v[edu(l"M׷ 7_)֖YX,T#>J6Wf+)T[fg>V8}N:biyq~R_Id7Yd%4g=H<^Nܷg<\^HK˿BYyx&ij/!،6c=XgMQY/1^5geZZζ Q)ə>8>U2XqǧzwfX瓫ə0BAWe1޲)c +8 c'^k9F}C΢`-F6zJ鷭lg|wrigIIؤ|ޟڏ2[YMňDA-0N}kh+^*nW^e}Asq۰ndx<q;V1uYݒ0žp=9;w,ilADʅLGP=<Զ g'{&618ERU'ahaq=(T/Vt,ڻ@ρަO6S.-rm '=oC)H FFG8[sF[& +GBS\qv=(V.ǡtfWDUX:zri")S|7ВX)VH.bSNr8{V;XYaprIbc>Тxhm ߧcX];\b,bBOV:jΛQijkitkR #ߴ)%3[R^X^i e_1k55+($!'\̼8ߵVx̙dpFʴԴs{9QK=?Gy,2d`>$018lW1fTs&Pt8r:Ք#)-_"of!nTsҫjwqJf[3$[JMz +ԚK_1mpD%,k3IIHdU";dS1Ҵ{X@`㯸#3N#=FyVk3Gt?YWoqj6}h1Xw=997} +n q%I}G,dl`GYE"+g'w<NcګΚb@eP zq?A50bH;N念JjVR[9I%v]־i nS +lOׂzzPeռ~FR+u1N4nXȲp>mNHA1B KH+ge,[X^}9ux8<1P\}+[ٚHhrrFSff qNCp䕥ƅ Zx/e޷12:|9񎞵\!ӖeGwuZџz[@$6sNqZU5b].}&W4UhU : rR7Q*ݝYU$eҭj5+m5i$l`O8#ӕtu#1*cR1*[+ۻs$ +vq d䪔8>\SZ;k I7e1ǭ?ÖSIJ 1~q?^nڢyj&ZuJ9 +ϥCMrZ*Oax8#VU/UG.X9 ~?6uKȬv$}y_ҳٝs*K]Z2G(MH2ҵ ͫM=lVHq+p돛N;wxX&24urAO62{\Fq~kJ#|DWd\T{ǃϰG |;avx-u=1ko吅`2yn.Z8TqگkRŢo٬(;\c9ӵ5D[|"c bK+vF$ps?:͖^HG-Xs|)m.F[iO#|BhntԶ4w$t-N3euDd}*Bյ{Q$)EUUr@N;y3\bkBդ ȷuMU?J+与=G͸ `d-mMn@p`:*l(KWsarH Z&8Fk)jLR~$U 0tKI$Ml\ Fo%618-cs n.e9"tI +CN-3:eLguqi+=v]+[K:u)Iv7yJ`88㊥\: +y +v~RfU+SzL$yMspNYٛI(3+.9mFս9[M.tiLch#׭jvci[ei^Qn?+zJ}r~Z_AlDB=O5Qʞطq5ndxW8)%)6Znb5xJ H}ng"_jq`@,yQ n^IcoIgZ#ܝe2c;y͸6J"Hi\Euܖ GoahEhvsO~k a +$&].;XWm\Z-.teAa}&RfPN?)\25#wu筴6FslhzLMSk$3J׭cuwwcdg=;woC G ٴ_g?JIL)Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*X {(aj,:(R4FP}v4h $%H$`qZA()sMlg@|%Qlc_ΡI21 +N}}iF1g;,M qGZ8(2Si99-߯f2Vv +(B(+DRۓ6x`v>9)QAQvf'|>ZFjpb=۬.%dw6F"#oQ׿~ՒўӔ[M5Βʯ1bn22r?OncGfz{:j[?qؤe}y]9`D[d)|FHh$QW8}9SZ(VHuP~~!)PֆYjK6Ǯ1Nth7z` +w#R{ C Z62nbpXrqR($1A9ƥv j洪rFO(##͜'#T̮IPkI<0>im +vJECQJvd)Ñ)k+>7&a(*8Q +SfG9ϵDI#W,[qD"$`U_b13K]?#S*0r!nd#%JS!k!MDAlSKm{?R|fU#qҒҢiYK!k!*#';T"VY\"Bʘ;J- AV9nV{kc2p>AH4$$gܚ0vkp==W?f2b0=1X$uȭm v y;:Q$Uo5߷n9ͽig蝖A!>h=sqfd0XLw\@yknh)¬[w{}޽M U&W$ƫx?j2Pv&YeVqԜ۳jWpI8yk:Oôcc*4N% Sө5>Y,ub$QnhV" )$zΥ*glaWrZu'Q{m7LJAMLIs(D@1Dti6΁[7 WCZ)o}Ͳ%2=M!O2E^B ?ƜKo TOz5n\Ѻ_ykikg"x=Aګʵ `tR*E 8u»NOրEĩh6tӑYi=~z##VH؋Lq57l.i + 1HTљTQ4hpJ2=*UY$v6;Bnexcbc{ZH,x8p +IUYL1y@ަ:hqZ;.ߗ/YS8fP4vLijʆ6H6HUxˎ?Z*\qzSZ?ݭd70Sfob2+cQJ*qR'k9Gg;k,-ݾa{y7LT2}q9dEEgjX䲑x.M3(JzE+yS 3v),I >3,Wo .s֯i!܉9x϶iTlZP:HdK= `B#9QP%2 in ʨiw7S.*~F#N}+f"د, rj bӋ=Zs"wF'};N6m8 4й$l'vH'JsMx+\nH }V֢mK#Քyl;Sv4jV9}FiC!!NOUEiNr{Sg(ρNA<_,;^&GIp=k{+=uYܥϙ+Fp(Y.RcTz~-q 1o^[A:NJm67{ۅs b$9<2INGjK$iĀ<*&-l}#x% +p>oӵשZn_ǵS+P2HVgm#X^?% w>֖^C و[vw6Lu95I3F|JU #ϵ_Պ$;ɧ|ryTZZwR6˄szjI.Ť5` D/dۦ1Q7huaIz-KFTvzz,H F$aFR6=gKv ǘISæXrFH UM<}J]mn履gZ [!-PNˢL*ܗi9M캔EyjɰaU^y?1K"svǹotqʜa+Aw:Mc sO<}q"-4e&;vWY0OogT[v PP̋nfi(.m:t0b1d秶+R;axzF1"'y? +_XN_i=DOiݒ,q8iU|dj3B$~qLVVmq;:"m*sBO5j-, e7rO qu=as} i-TDbWzz(B5ts9$g +(f䷭K$ZvO!^Q!eۜ9Y6r :}"6>jW_K[WWTE;/OFu^C:bWO$eЂ#EY~j\0s]E$&%Q3zXW+)iJ#ۃN$Di")f'Td3 uq|!V7b\mEw/ sҴmU.y%c$az?ޚ(Z~_؆k k{,xB3Fj 5A *L%Co{yo- +*ġݧ؊mb7>^KBc3ifl㏥ZMjyԄ-[ H́Uj5 NQmH.E,6"k֦%;x¶Ґ?H#6f)kCĸ%cnVSiMk{*Zu\, IJi014]̲5` + < *` nR@ 2>rjZt h1Y; .B^:ݓi–nڃ*䁆w/tZJoV5-#B'&(ˇRrz~4i]BֱJy$L0c*[ 4XvP{]vvOθp=QJ8'?rP˕'IQVc |ps:\١hU%aY}ڒK_iϒO_3N{jZ8 +/B3`kGY{+(;e |(CqN;r)ur]v|dp"$;{VfY谕3f@ӽJ*nT+oʶ›"(]V4#o V؀pA xd.i3 OvxyimidMkHҪjgP1gnQR #NKXnI7|NOviII2.U c'ZI +p[fwg𨓺;(F^Ү4jWC +hTfhǭe+Ѥim0c)keեmw`[Iy~J"cr0ad{ MKۦ +A; +VKQW)Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+[OԡYi|$޽dԑy{{o#' +zs& F8F-78g{#wo(P}S׭@cH- 5w9"wby&s;cjAܬ ǜ'8<_fI3>ylqAŧ )Q@Q@ Hz1b^? +WtǂQ~G8i=zu.̀ Kf<~Nֱ,1k)kt'nwpG>w:+RqV F%a%3z՛4{$+h`FFSsJ_9د9o#z+H$w[k볶)BYwܜӢ@4lxw܀.Hxk5ζ<{2c) +s5 HU(\SyZȍ=j$`8%W0(A>wTAx@֒(Nq)!DSWqCbNNd0B7aR[+;pzSed^`8ejs%Ӥkd=ZVnNwbLqJ|@9y㥜 vPg=qLgVKի=EԬv`P ^=*$ږe*qV_6˫Wp-B #18)+Ǩ?gK p +m ű1A6䃞OY\( (HQۯZ9\z;_-ī U۞MUxG|6c;aN1'pu'=O_^k}A7 EkGo ן]\e6w~]X&#p$ʭ}+$c*g!Tp-eITk_!E +Jc.xUu-#䈙F221IXUV#w"[!C'5'ik~_ϖ;n[/88T0`1}:p[Eps϶=*3$oh$ulgj|9- 6JXȃq8A!# ֧Ӯeb,h X#/*ftcT\E :(?~2V&ԮKh75u, ȪcR󊑚bdf'&d]pIj龞ZiZ r%jChU^Yvx?_dhg&U$cۃ}—I7XBp_9NNJXZQ?g=[Xlm~.ߔ*ܰ"$ r7kkgE}S ׎6KIcV'֦:3jj){u H!f19z{ԏk83"v,`By큚s˓浻8{I{Mխ11@:,߂??Zx$VqPY,u'vpXW&Hq" Հ8S}L#M֋k~(ý8\UX2%UĎsaGAzw8y+gi=G+ZMR+W==6(\|9wGBm~qenU!ִ. 7ezc<JϵG-b#.#'O5md{`>`q~ވotPpquy&󌃀D;t1"T2UD"#8:g#RykUP;]gNPM2;:˃y+ϱն3gsuU)/!I#BY70-ӓODIy1|29kuT];m{!Z8m3ܠ g)c#8֛ns]"@O!q8<.DC,O]zTr |2ZoBm$b5X~ei׶G{Y$T8ڔ+D<_4z 0=:K1UEZB}U]V7tܒQ7W[,"fBòaqs1U;QXl2Onا#9Y~,ium$lH>W8{Vls,J<2G>) w溹 DBFi={j 36A8>՝]ZY%ZOpǟ\e +(28;YY'<얽2|iҔUìH~qQZӨGI7Oq >Vs ;#w=O*hH$Y+N }h[хDfDjhJ%Pv}}#hWq}]{V%ܑk 2X dT[~.#[rHdo<Oںmm45ݱ!'LtɆ(x]s3;U[Pa7 dn%Ρ9y wn_K HW$$pG4ຶu|Ȳ0FGUV,>%c_zKK.Wer[K n O&8rF 'v;NWX`Fw3p ?9=:Wiι 2< z'TӯUi6>a7c+jr\Fxr,<*ԭo iJ1HgLt [+{VT9sYp7NR,zRORNT[ 2=qI##RHXzY9>2708jZ+Je0O9UK. +9;u=[;s5j|mn efc 0@ok;tGtd1wj4DfE`Sm%(O2&:n3KnUj&'q5gfBmSf5 1䃟Ut2}B;?0`G֭ZMc FT*lIoYDu匍4To]2<[ɶT).V"+7S!v͘ʩ< ҷ* ~uaif Ȩ gpH9vg+=J%̱EsiIjC=v\>(8YS`vPk' bYvwHM~W縩l)W'{h,Q8–3‹ynu ;ϰgf jּ-y/gxAAVXeVi`1~x{u%+yNqoujRd?:FA#i +ť V09T/.;);q{q!2 oz̽TwlMh}ՠM$n17p@3V"]>\5"ah\:ҫkqq1w!eqyKO XN$m}=)+a&.,S,vc#y]l8@߁'p fū\]$1ZBR 砭K̗6EUǝF֧_Su*pAچ{#Iv %m+郟±`.f[f 8O<84J8Fup.PNx#sP^j2ݙm`kxw+! 0zT2ۨ\w=RFo,+Ozvuc,%G ޥM +|>uvo.9 zM'UxۘnfJ{=1fֺnAe^ їxA9c unB}m,h". '8I@;|0FsZw/hfC}$Yd\Uls\_CN#JiQ&X0p8괶m.5W䲐FO++ʟQ ,`Ql\^VD6My $oN9+:\Z+j.y meq:̀d=1Y}cH$.M2*'2ؔ|񓃃U`o(I]U;﷯sNX%/f$g;+T(W}+rIߌaҮ[[檱qN2ZÛN_?"^6E`Kv4s!O=eEG(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( #LɞOuo5շ(8y8vTh&Gb>Ti9F.z?.̊$`3b#1I,b^j&H';r(q+HaW#9jt[BFW* KǏjj$,s.&+𩦺y#%^ +I>2餢REd %X= VW70DfL:fZ[ȶ 0 3@jh#$ 0 7qKD\fOP *XǺP$-X`">Pg?֩鹄W6"n*fux(ٷ\Pw`G{S` Ȭ\vzTz? v4viDqS=.lḿENIYB'gwPҲD|?ݩiwPSBlF~b92sD9'=z&wJ4M)-~c-yz梻pCc8s6cb )>kjd)^-G=J&%[ 1QyJ&ipH}*wfPg8*r$wH"# l̉r3yIoS,FYO:Hb~fqrzc1NX[[a d6{+&TOsq*Cu!R$ڣ .?o@R\rçNk)+r{v>cp"B~ao·/<R1ynTbUc]O H!6vzio=ʯw @$"ޮ̋s ŸIJeVBǢYG "BTsߜT:rNJNl^ɤƄ>,2p )8{vW/yZw +T? %GStA+2{ecҠxޯݷm|A7r +0O4Kp!WpǩUf# +#㚐[\-כ)\);4HIkߩ݄IlB]v'5$qI1^N=J;Yٵ7#GOQZZSo/N,s yj0pYW~J$$)xu*k,5ƺ!"$l$QZux#YWGC{ГZNw//6lk%/üd7z;z>sw{P^ISpx5ub[@V$PdvS00EfTقN+5웍Jj5/m+u O`m*Ё{S[R9$*ű=$֑~im}[ *y-SjCռ\'){j6т9vKw^gsw +VŸ|[{;u +J2"|UH^oF]qVjk!@ r jwՖKVԆjKI4* +A#5vyo N챴*8'=Zϩ RZy +^c#²؞U -cL'y`TҮM8oP uCbHL͚d4R!,JIx[MR=\o9%t֔.TfK[.n{ooe5@Ғƿ1<{o,lbhYKkێٖo~Nr3֛5ۤ,RʭbIj!XI5}-xNz7fJ +N}'Jmd mݹ>RE ̩a N3O:F5}Sh.RpH ?Z[m8Rd \r:nNH㶙ZBXI_>mײ0=!v FG=qIu*VïRݷ/w 0e +HZ[2nd;ww'?`%-ȹ#LZ7E1!ЌN-ߕF+HPI>^EU9]\ۜdvU na&˝wDTiߕHn3 +qssr˯Ԍh7%g`f0v^-F(w͘"]tgGex6Č +qU=3"F62>K6\+_/Ji=f2`x4_2(Z$MR2OǭB.ZXC$A=}j+ [$J]L%;ʒغɵ+k52s=sR!D c1M]a{C2oY'Ͻ\7ֱ٘a庑AB0TF4ʜDX~e$.r +9ډ +vKOk9%څBIc9xjݴLh`! mDjzw=:csLHC&x8ҭ/k~q1*#pɧm 6u}ʹi + vF7tɪ5Ed@UKy'q8z}jqiii,bhI篭O.G QXMW4rʧbpr@>:T{&fpdrpg$V냪<`?*3$"YF0xb~ZǸm&GayusZn*rE?QIԢN e8'UdҮdI9Λi+˧S>xۥ",$9SoWԖ#Orcy|G$׷V1`=dutK%'Z(Ӝ${UwH9 rN;{▭iE}{~FmQZhQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEJ(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()@,PRIj'IR#ڠ9{8#HI XS N;lܝWh4:)YH&"263=Fy.,FwH6:cqfu&GzQq +DenѓHkJew&BpŘO負ƢEϚC }}1rImrQT`b;yk(-yzE&TdEH:Ό;F0MGBٍʟcS}KrL*9ZBFȖg dC)ϭJ ;J'q8'֫E ~=yJD9=_$ܕV6M@;YٕQI3Lomlcls̤Tmw-A!FV .#K^e$CTEHE<Ҝ'fbrx2,S^I3{*؆B윌[=x'1&BwV@ +r2MFg2`rG֍^ Zd*` =`I>Rp ƬG>caFzUc75e\.Ќ0qps9I^ԌIc YRr,V9&|\.sP|M*xM`o0)6B|^4a[+0%NUKS4D/ʮξXl*ڙnۊơ D`\G uN*S}h mPqhWw :1ďM3K1#aiߩbmn^BFҠi4HA^Fc|q%AZ-u~Ko_.R w z:.9DYc=OnsdRZӅY^vI"cԌP㚞1 i #@ViY̧?J{@ I8'?Km +M[_wrO(TT8 +\]<I;Kcq=y?S'YԁP,27~NNN8[VRs3{mr?2A%[PH%QJw?ֈf(Y)ﲶBpA*[('~F̌A CM[I$a~󂍀7/?Oj|߼G6QPp7hl pNbtsBpU£n3YM ?ʑ|"R ͮ686xz':I< +~o)C G +qK0]\<,gs;A \p^W#xETV++8P<+NԢޢ~k[ed iKȍLsUUc(X\L6:H9 l +^}c+H pA9 O2y1[MJ2i++^kI,w4QN1ӎ?*uמ|H)(`ק]2v!O N/<{MG4v>OO;'#q#7_n͹/3(N*%EMѹd ~])d)-g*H%PyE@$0e7͓;غ + +M[k_R+ FDmmu"0Unhx.)2(jVP f.P{ND>tմ= }-I·1Iϵ5-焼pu*̏-uP%yֳ.~a +ߙqqRٵYqi>_10e +Fz{slc# g{ DOB ߊдk4B45ԺnS{n̫`kXdUR8 ~}+>XHppx֤Ԯ⒦XɪB+TUg %~t=@ȧ-"cAX@돭eZ"8-S30:w*X3dw%} 0\6Xh 8$"8SpI=?J΄֢_G$²4\+)G[EOwo#J.>ZIekQ5̶) n]L+Nk4{4sq1ǵ[{};s*9 + s=jKVŅS$FG9,YrJ-M)KOV+MqXB}9ش7H#qm䜏N֭6ЯK y+QgnזYAyZG=IuN1j>΅!Aʂq8Q.:PiZFR,"Q2@bd*{*kWVi<ҲBv QNw0gB3m4}em/ +h 96̧ū+~m%R3dsdqU6"Dys]5uO%n:x#hg{mNɉ/ >cgtqʰU8}Pk;"{R-,bvqנmncm2(nQn3+ˌ*JbXZuxdEsq׏ĵ$SFYv;mJf3K4RmH + Tf&$.rG@>ͦps X=APܳ=,(r.Spn 1tk98I8 p*NN=xex7+mۗNsc~_7S_]o$>`]"8vziҼqv|#~ڎOiDRJ"Y2.̄6'z$2*0O f2I+lxkR 'k`KavFx?w`ާMniRJ.=YR-)g_0M(G/--)n&ݒvӓڣYVY{@Ȅ +=~ǽώ FmlZ}M~_umklubhF%qLA,%;9ʖؔ*h'ϯzr_!Z8D*G'8v5OE7B-&V5$r>Lx. oV*eC;0 + =ri,⍼Kqٗ,>YR'Xޙ 뷑P+91nW;ޝpQOW2@3Rj5p*"UFmAɿ[bkZYCu'ZPӶ›$gU ̶RF&mQ0yUH7 ,IScڒDӝ9Tv/5䱶WkZ1) w^ 7 (E<Veү&-V&Cc8:lJoF.Iܩ5\#eRrj!=Ilk:s֥7t>$Xg 9,O'$ʒclc9s@Xox{a\灏RW'K =]屙. +,`qp22jg Q[y"~sD*p c1sO>u7آUc+. +;\j o -V% ?r%JwD}z?.ݮg%vߨ 5 3ݗ$c1UHg+[jl׽[ݞVpLoFZcxmmȖD"S1y@=GJև? 8[gͣ"]`Fzj{&,)R y3sӚ!D6#lң]Eͻn2ӟʪrkeеvV &'hTJ\cMwpY٤L~gQ5ᑢ-? OC{V(DR[wO(^̩?jȦxn-IW,fH{g W"YxmǷ\kD.n/;C1 Ǹ ;[qkoe1iϧ|yےWeC7k[}Nyo\43OvdG#bT&[ky2|0dHQ9u}FXLo7f#ND ^i-ve####Uc6oVl \DҳIsjUImz|( xmcd>Ң @M_d\=Xӵ26ۭvK(9ghRFpٴɪqݭ#cU +a#~SȬm>Jc8!HPNS܊Et5`Axvh6,LUt$`<r+LXRUզq -y[.YaUמ8vh! [Έ)V=W~>HUý}ew\IjYr#z +']5 QNoƮ\h4sVA3OOvfm6#e_1$#c;q7Tk(֏WȠŎlq׮DүYʤ,a^9ڲ6[7 =' ŏ@5~CG/^6BRGH;T2INN4oX%uZ +<:c䞿Ece$-V.3U=j$ڔ+lmeͤ"Mt<1Isr #֓}IyhnrtQEYQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((K]4A3,Q.7\7dE T|1|׵f]j7vKf>c =#ey#Qb6)Vn'gm/$Kؼ 8n~c˵@BL"vSh^Fm졔ƦЪ7#:ce!DPcM95h(1X8+@b"):CՓ[Rpщ֔LJNON5{A9NݤRer2)vda}VT zi܊bQEŠ( g]{S⤖Tee|`cW$K GUǷWd9Sg@nN*ͲB]8@Fkri/ĄA1 2y7W&evzIaX`'(Së>[dE_088 !_ -1K`zTQDeS;sY48J1q|ɌD{ +.ռ ?2Xrce+:Bn۞)]_C_g'o(p[TC?ʡ*D_88[ńrz{2C RUE$UH(M;4qY$ |6<Idn/ nXTC1QN~XeO519K;Kkh +#+qʳ(X~'g`phҧcOcފݿ[LFy)Y`ef >%)*0*w flI$U `d>Nzƞʝid憐m*zEJet* d9K ;1"mc[׎*}jR=?Q<&جsN=~o%ON}:J^LW`jz!\?M>Mtcfn&fEA2%e$j 'i2dROjW~+-MmԺuE}1a5k#dlc8Ydܡ# O*cŒfld c8Jvza{w,Eq"ewn,X|(1x$VM0ܿ,{cp *ݵͺGbU uWCZ XrUԥyU.3 ?)PAT-  +_¬ei b|ʐ˒64I.jIGVW-],"XܖTM,w+ѕ-b,0P{Z+YhneWPvzU%dsjsQݯCold4 wßZMnkhUSsȪZׄM$-jqN5hZZ[[я"#9I&~'f̛ G#塓xuTVu/pSohƸYmŔˏc8"{YãJ7esVvqUu#[+[}V,hGFCjKn +X=?Ze0lOʨ{cgB/B ` ]G5b\,OH3ZyT'9? +#6WG<{i^Jb/aae'Jde~T|Oқw2c';H\Ue6בhd8;v jME-4EH*ʻ*첬Fn}*{x'|ywۓ:tV[M\`FONbppi=-GOX7GiH6j֗$/#"x_s} ֓y DaUTnR9\ ?BrG\FNץgsq޽s'B$?jͽosx6ısLcm VH\K, 's-ҫs~T6Jܪ?3i[I0hnZRIqz۵7O9%@ihX?!<|NS/ w13c>µ---GTC&oy8=sNKM>3iKmd4іG+ },s5FQN0H'9k7:u [^sU\q݄bv8< =*}ii~egI-&O0Т2?ǚ7iBK;|&rޙ޴qӁӯBuѠPk(݃4T5;72NAmpʹ1 1. "3+3o;r2I": E,EvҼ)洌U1>+r.yИSji^Fǧ\E+SlR%G8Ȫ}mk+tfByR 3֋;EGWd[,Sf K`g 6jwQop?pclw=~asHڲ:o 8ULtaǰ^#JuiOy|io,Er0[h1OlE6(tқlGzxtc$}(%'zG,}Nk˘1m?+pL/mX 8e#i{VԼY$0Oc@ո\/ZlVDBAfsykK#I. pU 2Q֙}4.o3|ǀNs&ē[bT۷=Q\ٜ69_MR7 i=- 00odyE[12XڪZ^Y1S `E/+cKB:ܳܺWhn,"V"|ݫn+ffٛwN.=T[{Hݶ e 2`91ҭ6u\[]Z4) 8矘~B*rJ+Iӧ- qThVqXEqK`iP626 I#=JٵG[ml1j W!>̢|d㩨.,MnU6 +^O=Ö2.~Taڦ J8Td$pG+zXIi=̿B +ƽ~"̚ VvsO22N6@i5[iڊ+ϟ {u%>7'Mls_©gThK$nma%? 0BRxǡd_XM8V#iz$~&F3ħ$)<=2@'liRh2Os4Aa= +ʵv৘w9;j XQo1?4zc[3@bXHNȣɕ:pI9$ՃgvoM? _r*PIE_sM%iPvE"o '*&EHc@~~lm *]CJ^6p|S)ÿV;#;v&S4%x3/!g TT xc88ۅڹĒc?WI՘3YI +4H̟* +T#Ԥh≃|3 Xԭ}VkbD@zw"݌wcCF{:$6v@6jȹf[gha88`kWO{kWS,]1g9@re7[ .'q֋]N-k}>OONiivQPdkZ])n 1k>Ξ[@dRzխ+DOhl`91I)޸ʀF8=ihiRܩM<mctqk4qyk:|ųS^_y.O w3]{ 䁂xX6%]@j$o[j8{#T_H$н5O}*b6tJ%[hne2]>vH)%4ݯr^y:}H`c0 UWSY +TIg%QU}5.w7t䞿4Ck)ͽfyRP@b=m{ΜZOStq]IePFasޝm:-;m$=*vqmm,۰@f'׌c5jYФ X\%PRۃ,3ZSP9J(<((((((((((((((((((((((((((((((((((((((((((((((((((((((QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ +A$X6yl| *kkgۤmœm'? +]B7d/+A%&!$i.*G&ocJJ<ֳ5#qur U"#V& w*lA< k0k힄oWX,K !y# c#Y]3Fn2Ccs$99PLe7,%ф42F98,<=-^ҲlغEOyԊڎId]\qZLދþ=˲I[q,67dgӚex0oOҝmp$or:QK>,]y(W^Ailt+d wCgz5G>=鷶oe A3d92 E=!sӟ$>A5kwry\JKUd|.6ǽdg:8-"YCnV'xϭh48)l͐B'z~ cy$ܗY^R^)'1HFrp Wݬmde&ޤ=@g;{D#VzșbI$c&V49sw巩f{[ƲfvR2K6wSc?J͒W4B =}jRosYTӷ_7WMh2;)VnSko dF"E;F`SZ7]2eK +,*}4ӹTNyzzl8%@#?:Z`rUgj-ɹ@ˇS3ߎ{]}uwa]:t#ܚ0wq} zɞ9?]f-[Ul,+440ˌ?Z0Tt9 T@VQZӯSQ*PYw1G{dશ\rBgzε E䬅c'h: YmMۛ'HYЄS?ϡA,6g>fJEx~ɍAFノZIfTUHb9dpwk[@MuZT + pzcϚjiFXYJBFgVE!N:zvK-֟!,H,G^qUl$I)iGMù$RA{k K_,B-C|Mk87G.mPvx9>n]>9#mAo8ۥMmik+|$rW5U^5NAjSocPWmJ͹Eo&5@=GjI QOj#2xջh&;YYppTc&Zq&DjrqV4^R0^g +:${8+>)Xl9by?>K9nV[U 4c3Y[s0\9 fYLg ^>{f&Uwm>ީJP~lsWio#18 cJ+h&w. +,IUv9#'i==ZG8ܼ=*jK hߕN1ڢզKſуU6]"Cgnz֋&r9uؒ ϗA'3ANL=$1(n=[-OQs 9$V;vnf.Ӛ5Jħ KuUmd]ҲN8$fFF0A|yqrI)p@r_9*Km>+|RFy?ֳIIwo㡸@¨ t(MR[C 2A<2i/,/Q˯9%AzzsWlnvd#y>iu㎄I-[L/!ȅ\wXiy ;qN3*Z^rڜqM8G|7@[_,D,mdu=sCVN^Ȗ+GuL2^jRk#=x\prOaq 7RE|- +Nь˻6$H6ZyR*i-cn#,w|6p +d/fl(rUcE…g͑R:cM +20N; +$O餆E}~Ri2zfcEVrr? s_C5 & @a0zʦ'4'En1wK"S+wbE$0?A[Q+"TJ0A8X=ğb|2AO|>\~r!@NPFsצ}T! G:լ MV92 ;犥%Ao`ͽ8 3U-؂~TFrArPJ[NZZ?sQxYnl-|Y$(q=9PjP]Ccn']Ct=sޗXq4Um4kO[[Kgg(ԑK;7 !#qMkj.Q׿AnXDuǜZ9t[~<Xzc۫յ[&.fz;gU۫R]_4;- c ;W9⮤қƛSvxǽRSX ˘yc{is(4_-:ݡpթ`4dĄ +|x$ZfhHpyG4b_jI .1ڮW9h5u[_udqF*%@sVNqk)Uoq8JZyi.[JcI')x}`=*m茟/ΑȶFf#O8#H2C@$(Z{ $l-:~EĐ޶ƷWg00yL9Wke}o#2<[\,gRWImnfвF>X i/#*f' K8>_Ïz̓Rk,ޠǐ^*/JW/zePbo㯸=1֠66rw֋o-7go// '3ާґoo$eX@ SdZnyB塹"RǓ[ClR塿y*Fn0HړQ]!gSiLa +TnE(\9\ gX[Y[Zn$6Keub7q~sZ'tqrrOϾ֥9|IOO{?,@`l_lc*=29f.A'9Oִl,q HUp$OR=Γ!%qIbҚ\me2 dc.}Vo4$#()u`:>2+rLcyؠBűʯ}VBjW}v_>w2p${\:nj['̥,_*;#'qչdƠdѥ1/|gc(s݃n@-ܒk%ͲXTݒrdWᅭʖu%8t4h|V\,8XxڿAE$`!' :UR8H4䁀SIRWNR.F]Z]!bQH##Zim ]v0h~W:`+I-[y}Tqҝ5ªUj6+kR_^]:>#8F=>HK*?ܴ0<`# +d.o5 yUh쥉Gq R~32G$:,X'@6Jiz^M?i U@[99O^?*,~,i$|u IY`yXnL[޼b4%s \s3y|u66C[ɹddGʫ]6#H%BJAnTnౚkd q-dEf\_GcR걄 rXs#,t#R7Cdp3=Egsjje0asmu=zU;CZʄtYAn?3ItU97.W}v_մ9( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( ESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEUD̍]KEURZŒ+v=y(*;Qx"1t1Dʩ9 u3hns z`b󴍾ݧʨ8ԍ\zt&`B98!rFQMYۼ{2[g#)"H1)wl'?7h!V$2E27Lܤfe6 +-!AN~<{TotgyUY@\ǁTAp2FA{lm 㷰Bn"d -qXX`ʃ+lK5b&/O;]t_OS `ۋe`1ڢ7}Z̴ry> +#Mh\%{آfZhԆ ~|mV9s|] dԲc*sO8\ӊKb+T%jyu22dPn͔G9o3ȈA0Uԡ8vPǸ/ 4 kiev\m~1LxFvQprLwu"p`O͑$+!wOj.>HKO7ӎ/69}OV"bK+1$8ҵPk,jY_p.$|=j3% X^C~K6uTq(>qI(&1,3#~Ё80$~_YB"'1Ү@_5ܪǜ1i*nEmU瑾aRNiSZ02˜xTHIHJ6]"Eb.l='sjS=t̬oY$*y uX%r# $U&,1';6֮gYO xeJMtfO? U|CecqnOt0?a)-.i=²r=g} Uܧ$>fy +U뎇jI"QcK__+yB8x>EnFGzm$ĄPg}֣ҡ /r+N5G?tAךԶ0%EEuR,62)$㊝'+EVb|03Ǹ5ȵ*[<~p;ҥiw= ߼r3|sT6gL#$(6wk^0;Z7q}E0TK翧+>sh_01U'鼆P?ׯҥ#xV"Wt7K~p\0vl!6rȗ1/&ҹ+uYnDŽU0Gz׽pҋ(≑ShvpFG9f5HT~:oZ;12!dU j*VuL&di'8RɎ U$]ۆ#\m|5rQ.@h5 $J $aۥEy1A[>ҝdn-7m2v'j}6++wk' 1:R[B0NJz]}KF{bePXpܐ1}鶛Ԋp}crv dr>@>Iprw~&>v̨~2qqYg GGEH8\qaC}GKޟaڬXdddyNCZIc6%_yrILZmD*]2r j3j~\SZZ)e= +RרQ/_%>_eC^dsLo2%#^jK- /݆ga"`۞ZhYT#Vz%q!#|*K-(röryJ1̪o5_hoJ4% 8 }69hhT!/V! <-嬶4 m(c׽m߽z-̖RU>pP>){YFZ4i`3OQFW Ė]J ^8)NqG뚱5wZGۖٲn JqI-޳{W?dC2qfUc9Ktݿ]^X I#XS$#ޫc<4 +.PW#Ιs^Z{q"GiAjƕXBII0R1Iwk'9E1n6"N ?ZwdKg%c*w9#W:vmQ%.3,zvMFt:[}#$ꌎ-n.]nBKϳ$xRyqZXt> Iv@Y#fS/Ze^l0\ەPWG=ޝ WVmIJ)+B $ ['}P}ҢE*K_K~JSSĥ'_}ۓO|[]8q֫ϦfX(w8隲l&ӡYF'cדޓJƔQT_ī*˂cԶPF]"ysJI't9(VlݫiWRKRH2ʇӞǽbi֋R$)XHj[5/%XF*cYXX< f +Fw>JM+sF[dmm6 !&>K@'%O~{V\3$" QYxRoBB&[UM?I%TY|ST;YMӝNї/EWBEn?~7gi+c@<ŗ*Fx\O\֐t/ȎEWtӥ2RWC4a&8iF;ǵTZX˝}ouH1!$t8'Up$-$@$ϧZTVd{6guz8u5 ?Pd(bU?7S*6SױoEY{.̼j<`=FZ +<Ck{OkٚLBQJ2Z|;>%d&aRF ifOy3-#ҵ.m,0F"aA :sӟgX]X&fgx=;Wt˸KFc>Wc:D8wJ59ݿRXgr ȰFn g9~zOEe3f?gms[\F'LJ+2=KD4xvhFj_4!;GW(մ"d#I'?*ɖ4ҵkxi%U1r}{d~Fnbo$_䪆%Fu[S/`yL@` $*cgw4~˧ZİKpdcps֙\-rGaj4tpb\ +IY +2LJ9VX3V]Hoшf<O<‹4 +'UhMm@|Ё# HRyj4%Lk)W(@TqcM/m/bK&VE%'צ2j-'HThO!BxmYi -k!×lkgֳlۿP6⻘3+gOEH_9әtU*2nj\SG]d6D8Q_n1{ynKAKᏧҒynu ta{C6EU#'ʒ;[ȖKyݘG$znjZtMUpU'0@d6QML63wBcf<Ҵ''ʌ o7.>`U8`x9#Ӛ٭. &E ē23V1K'Spw>]X;Œ$>bo֑HG'Χ _ Š*`y30Ib0n  +@Q⋧I7RdXN鏽EŲjW$7;Eq*=NnmXr^Sn_ΪG]2t.+$exПq*W[.c6f6bwr3ǭM{3K ҫE%r -s~5P媟 PrИNPi!w0jB!n f,% Y>f]FG)kxU2~V6n.;UltU}vԚQiE^#WPM52ȁKo14f?a7~go"Jbv=v;MV-Rୟ H?i@Qs+7hUK8V)YaR"$^ET."iWH$luퟗ'J&cycc;m2Zf$;ӟOZ\ڕ*1nޛjW"5Y$i[VT]3Zu œ(*dp?JuMGW'uNo]m#ϥCWwGL%Ytu<$ {yor#$\K7^{Sܭ]w x +Aog$4G^i"W^v;BHgYg$GoN՛k[V{˱Wp8\u{3gq4ڢI`0*{~,?k>)gP=*HU}[;I$GK$q1dlڤ A?KT32Y$?*ɘ<7-lю3שi{;>]4^fi2Cܿ'$z^_N2nȥT$b~`R`VB +0OLg@%-lr@N=J ˹dNNÏU4֧ii:繛y|-5L$a=j]VxGv<=vʫmvXꖐq'd c x9ڢլ ? XFvv0MU+7{u2ro4 }o~Bo>Rw4R2FA %V +K$ 6#a%f!%\gi>l`gI:\5[!m4.q.͠uݜ2DrccZk{xXUI[s몗Ws^d'=8*c5$ךֿ_̖r4NA@ .c.#w4\ɇwTW2":,g7$+%pOS^S 9Gܻ4tL -Ajͽ_vD xAۋRUV30dO|PĆ!CT'8z~UF;T*ڡE^+Nx67VRIgs6|9X{4QPPz5MVoFl +c@=W5]+BYafZ +3MjRwc폫 9m=‚{}+[Yң+w51c ;<{giahqTcs>2R!\Ukj'+j{-6#P n7,*"$䟼O\ δRuEhd a&7;?皷w{70sL vZɺХ] +}VfVC?Z=G5˲54˩t/ Iqgtt |^KL7sq-I Fcq9bs V]G#"E,J r8ThEwv vIB6=?&ޕD3ۉ0qnצ3Kd9=qڦ֚ecm ;{;ba8sKc_Zn'.Z%[>&of g9P^Zܦm,Mi$v*Η1dr[ZaXz 8W-|>] =yaSP`>nF{ +R 2FN9 w{t+tInE9RGqӡ4 GI_2}ʽ::T^\2Dȍ[OҮאEuK,e^VyOGm%M.[.ĖTC$o2}0TzuƠլ5+w2ߴ`3ƥ>@jךV<.摣*,p[=8]CsZUC0)bx<Mǔj*뷟EZqYe$;rxⲚй'MRO5y5͢$Jn  vcEC&l9n{ީ6хJqݕhZs EhV&D8 uGY;a,At1 !0ir-9tsS;Xɖ@&^ nǷB^U*'º+oۡgRtm9u/Bf]~nR.ge$qIq,MDۘق21f^\+|4=;U+O[tF+pnj{I'eӸ^O%U f\q[Ag-Đ rp9KI 䎤Uahh%YQlH`=c)M|`76? ʂp,oyov@Ĩ}+cZ{qۤg+v8v{mi$( *1ϧBRIl Ž̭Kjxw.sՏ 㟥fyjS+$ΪTj0^i["1qx*9fkE.ēU&*rs֥zY{XyY*=w4pb~^p6KA:ޣI#ɰ,Y7ہr1zBa"zsI8U>wMeJݷEUEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP!(b +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +( +(7k}Tf}?*9U<c{UKFty,Hm g"ZXۉr Ru'*뛙7Xq۵QmhT1{%yb 8vg{xsi]5 m1r*HbHu28Qprri˦j +@) We(bmYK mq +rOɭe-HJD'_Ɩ(^U*r{zI0Hd_.s&F;}2).irv#*WsVK2VۆЃs9_H!6a"2H9sߝWYRB~rdzTH1 yq 6~3,].f 1CǽMyx$qJّv&Ēy$R[۷\*F>Kvz_x.,n-"݌G?X,,YcɻbTB|1SH} XSp$yZ.BG؊Nrr1zѪ+Icv`ǽg;DBZ,c''~TM)i,cxU#tӫ#\8"4\)’\ܨ.8.0NO?ZpXHA|l#>i]$ZKR[ Uðzѻ$0U&*ldLi *p((VPR@ +$TX[id0WRH1NVRnodSu< ۓ=Z3B&V ֌t`y4e#?T-&eB̧;F;^1:+RZId3ŽXצWat/rZ64bl*>J%\; +sޚ-RQ6]ӟZmEg`_=sJ̄9%cV+khFؗî$0.$d LjXLZ%arOrҩ5m}sZ}.b^IeRA##+!c$jМzVq>e&hp *` w)r.Lb9ӧ8R&eUS=zl6k;zm,m XK3nH5IodeiVIBdl#~i lm22\&b+ˌ:WO_$)uOMLkSNTJZۼ 9o[9 q}0q@ۆ9*+~!3=s4'Ԫɺl gyh<ׯI5י`ȄH +8?2ٍ#lʸ0'8<~ p +2}*TܣÎbJsQMEyZ˾b[v NwgqQA$2l}ӨI ?G*J&5.UM 8qֶuHPCF` c#+#J\;Ώ;OD#x5&A:yۥV#JPHCہTk緸BTDjr/onMaQXȅ74N6NqSiZw/c} 'C  cF#K6*v \-ʐ#VlnoWSۧ.s^]>DnT Ps[Aypm($p .4޲̪o}9~uSO faN1ϥ إ.[q.-5 jx{՘6iYEx8y!P+iɨ`[Ѭ=,;6LhTeTG]$ҥ3yAigAkfib(nhY#QJpr3_ !}%ެ.¶C`_9UsHI麝J7 ,Uwx=6U+- khX4XTKiiLM5 mȵN%c:I!ԠM$0Fp1==MMBkx@zѨ;ϧoV^:R 64lē#:|ͷdC5̊\ 9{v~1i&e)0ep +ӏ’T0z4tuPKqj#rR1 `j ;[\Lx7:cQT6"W o ;Ij+>pO<6v.fcјs9Vdm  +{W۸K{ك,1 y>/Sjuc?u.j[, ؍s!H9 Se7;yZA98a؎We a$֧M>K\@1F r;c\n+IKϰP-R  Xwt~Ds dnr*<&7Fm)\4ko!H@\ry4RT5X=wi?#׶O?ISX nsnMA>"X?"a<3z~5RId1ș2I f_].3Rh,*H'.,Θ<ܬs ӿJ{dʰZ7(HvYb+0DB,8=+V FkԶ#FEn[-Ӧ=+06CkI,+N2^m͞Ps֚S6_̕ėM7QK""(_nɬ""$hto#}vpkY,YI>\eXsT:0:Sg^[,GB1}?.jIF44OYKo=ݬ1@ݸt_Hf7hrP^GҺ8f֮řlCH08#,{avRjak+}D2؁Gw^dmG_8ZT +(@T{mFkM +!K0ztV+N`c<lO rxڠca3 IYnF{{vv3Jj>ѻ\i}\#!׭Es}+NKI$~57%Cue[aPj+5>D>RrAoNzZRgnnRY\̀W'd#[n  8=94q\pJmi ٫}7*˅-@9*hu٫ZFO$XsM$45) /OC5(z?Z#yK cqiepW +iě 8y/_Zq%ۓv41 >jNGnߍS.4>rp8h.)ĭY&7G?Z+2;_Kmw4;68-+_@໘4UAe-Ĩn%8x\p2B +(Q@Q@Q@RI1&(T%ÿ'`5۰X:ɕqr02NjIoi+ 9 +s#:|RWH镣&7!10b#cq~ji)nS˩\J|'=[KҲ-{: fk^[Cr[1J.^ns +r1ʄ@c>C@g#[C&ԩF|>^({uȪ(S\Ke l/OJt(F(#ޤc @;qKn~k:;pnU%鉮eWS@qZ$r'$`Q_5UGCRim1,+6'֦[{oZ'<S;ҋw)N 1:O'OX\gF9\14wZ -V'GUv4|ia9;w-u&S߯Bv*@dl6 6pq+'=zU=>W +\M< zT^l. %$bIeg#84^ޮ!ؑ$&z)ԧ'fdF?$x[?'h=AT%@5m68&%){[f(V 6sN -pK2Y\吆]˃lPKWkسopf2LൾI3O+O=3|S7V-$cήXD0?jM-OJ߳m-.gL`1,s Ê2[*%+qW,n;6Rss6idcGMoׯ]lBKnnQTKrd+#in{t߽Q4K ui>򪲱?i軍G[P̤y㨫yuAFQ@ 2\vù=s5q9P*[wO>_.L /:g"Z?Ox8֜`.4֬}Bڍ<#i?sǿz$RK[R4}^!_*=έEQ^ckEhʼ"&- +9Y^Wv—-/gl5ΡJD7|<#\Tg$c#Ϯ:.`2Xcvpvc8+ˋh%'aUbN}IbϛEN*dVr0z~NG<2C;NGqU 4yXV$$Ŷ,𻳁jefyӮ>h-uO$dޒ`?Җ"8R'ޘeE|Oz^ijL*:/ȋ#Z'{=*OaTcXzϊF`D`]IhC pa0^ǚj'fu&HXL(u%^3^dX#GBz5tqm\K*OϥWnMN4b +U6b̒k4vJ)}k)#n N9ҟ Hfw=Uȣy.$ I|⚼t1v׮^ H$xvǶH+>+&!aB}ܷY/0•jjF6sǿ?\T?jdNVFtkn'zjVot uMpdHaNvhRRVЩg^cV\[KuoMngvi!Hff3dTu{+ʚp&G\#2=[:0qF祪Y'x+ڤݧ2B<1p<KmCk3[Јy3ImZ}lĒ rO_*Y<J&F{:暫m.gFZ(Igi'Otq pjqͨlg,~irʳ*Bw*gict L=:Uw95o6]DAq0HzHYHe '# G+#. :MC'y#zsE)](߮El12? ͧ]DnuiKdAsY_x{G3l 󃎾K5^K r'ui[srvI~]JVzjǞgہ1ֶ,Iul/.]FHQnv99ϥN2n3K+L|:uH͉T8^O$~u%֣1<{; +F6?:v6Eyꫛ&F2p?N+;Q9VIpDL~Q$›K &kZuB9[8}1GOCww&+Ayd^*E/Sq)Q")S<8eOog3L8O9)NQvc/jLa,#rO$fN23Ņ~3׌Uۨ:ezpHlx뎝*wnE7JƧ}S{#AFjROĺ-8d!Ye1nTm#'Ao#i¬A21׌Ttze&e9x^Fr4C%ƥ, ާqMgE%ifcnbU]犇Yslt*Ch$wQOL{[B٢xܐ=qcКk٢YWz 4d?FުKq#S$U(oZldStzR>q7UC*lĢty$MdrS{;*s׿ E |Q3 'jk[.Hc0@c>Տ-6r &}|< M7:tzL?.Yœ SZJ,~kWpܥ%娸ޤ8cu{%Gy~T}%e]g9i$]9Ș4q> 6{~~Fw0GoFY0!Orry{`֨>b%88팃VơdNBdR"FV9۞ǀ޵Vf+ۈ XINHgbs_Ж;>+[K٣\Fz9T:+$J1w=G4iFkmMBGi-Ogio$3ee,3Mu,*QޛRnfF*6۵@IH,bX0S,0yZr:j,wvH7<U_ 1o{9DQ9=f5Q^+H[;/8@$~QMx=*qyPMѪ1='Є6QL^8##Sf;%@H$,׭\.mci"[?KJڛS _+LN=ڟ T3$NKY4R/0=3ګX&1$BuKRDRPI<7 Q2ayN3#42c + +=)] +Ͳ9a \֦Y'NUɔ8UlvaR %ӂbws$(`cr!rTq+sȋaeHRWFz H@ьn"9?h_0RzV3`H?9 xJܹ01nnJ-|]B5(4gj<&">cշMq|$ +yŘcp#Jj798)^kinYx!ێ?Jg:p),ăϾ WUH#aJyc 9?NkQHDY}GևT,ywZ kM]r +’hgeto߂|Tzy;j#+8KIEV,XqL@sjdHl֜ȖyK1m"$RF/Ty8#`zaQ ŕ)dfKvhꊕ8{XSln;~xj6xs2H0p{g?ҙVXMAܵl4VL+' zzafڽ=)bcAn +VKQIAÒi8m0}LĖR@U'k<- n2~ 56ՎBv g-bvjU= +;ʦ ѽ\p+Lt%>#'f/-0!/:Fqӌ~w q&~.7 1FWjGu \(qM3c2Üp@E-2\)i$f*g#9 [a|s;맗o%|GP2 qTY.cUI"9Vխ_pS班:,3؎I))hFn |ˆPYnV2m"=sUj; 0,sV"O k yv#y=C(T2]=>fum1 @=XxHg1.sRX_1j-IdKi$CSZ# GM]>輟9<61EKu#Yy %ĉB2Hzt"qpmT9 `~&r,:_Դ茣 +m!W$MJT?:ē4^$6 Jm#w^b%۴0g>Ww9`Iq~zq>|F}VzF#iD'0rBX7m>''^tFKZL6YO|q$+(Me9`$>[3rs*KO29.c9Pxqfݐa~U` oqNW˞zw=BٻK,86z`舨6M{]LyZYO?lXK],a,7N~ԗkLg[+:vZfb҇6a@ dvu&ަhSnoJ.,ՔO'k7w_ܤֱ%Dm{5: L'Lf9-:VV (ڂk)IuڥkV%yX~IJ.䜖S88f +2@ai)i=іI6FSs9=)sp--#fm׮gM-Psz.nlf~-88:SKQhZ7n@rsJOriuۢ4̤zU?H&bk[#5_"t72on-Dq +F8?@j\c D֢II +-)%=GO\1ٵm!Fjϩؒ*< 2'>փ fԾҊfSa#z*d$Ŕh"1}¥nUR%7ˍj̤4m&;V;H ;I*Xt{E^k)i\^Ԛ4Ul+|$d=C#\H@8=5<)^[" pyZIea1%+|XԴˈD%I/x#tn|_,#xDft>tnʭ#ךK[[tZZZŠ>;y=qtEaq>u:\nüY[IkFk|BdҢƑNI瞢˰YI&|I-,MIlpTگ:&hTK_ tIay,r:ݞA6Ziôʎy~hVZv"~O_MM5~atuHA$U$Ү+(c2!$ZqYx~ IGvx2 uhsƳ5=6 e ko {2&OS2J_k2{"7h8$2)[hU)$H.>Zi<Oקn[z: ]==ks2 ,*<~ =t{m Fa[v6U{&2ClD==k"^Npnqޮv9pߢ]C{&u`VIɕX>gEO#4F.Ԅ zMf&eĮ͈qz{U94R@ܓ+ӏz4Dmdr GjJUi՗-M^lW6y>P)"NqOʪ]^Mht-ep\=jiWͼeRSh.moD%\ӋZ֧>hjvЖk 4J&nA1V4%X68#qr[zՋC=ʋy!OL3NJv7Iqg/YaG8lS*RRz]X{cF,?8" ^{֨z֏-_9r kGTgk[{Dku/-Rd\㑜=;3.aDoo|q_Κr'I]4F[ifW܄ 9kCC̑<!Jv| ,a}ނJ.b]20]}rlI$r .Wcך@ۼ[ȃO\M) |#%l`ݞ*އ<|.y%=>]jڂ5nFBmtw⹡{/Ԛ;i%{KiCxr3Nn(NT{*ݼՆlXklrp:׮j}e~Z-7s{׷¥o\N!P͜ӥES4Sژ t!Rj9ݎM3C *F*3dZ:j}?mr1# 9t@F.i1V<jM˛K$B"۴R 8W+ai9 ۋifi[1$RI4k)ԧ$ޒGlnmJI?(p^Dl^%[v4Nv1߂gأ$YfH=^T>d˖`p1x:j.:BRntB֒(ҍI]Jpc꭬F_+=`0A+~f 2ܲL0=b_gJ"'#a֎gJoij~ 3}$wz@zS[XYZnmBȳ|~7~@ b3giNO````uPVuܣ; ̕]ќ5uSP{M^aP0g x\奼f[<, +dc +^8HA~j~e{%&]Cʂ:qJ5 +Jﱧh-`%]d]$bGy` -hݻ`u58-lV[_1~=:~3Vos5ƻqgf"dUm!8a4]6qdMw*#RH}k1&2*Hj֭qb;qݞ秠zU]ڊBV +jN8+HO >Le8'K +4xE0#9>zF*־4Zbo`{;}9kjuan̒ +ˏGuڲ 橨A i +O \}:xs`=;"iԯe)tKFxZܫ$3CS:[qȬU~ױBvҩ_jWWy6rX/^i_hfJU +9("*N¢)Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!4 QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEj'TG ugr~Vce88Ƞm46(AEPEPEPWtۄFðg֩Vۻwϭ&];+ 2I˪K#:d"f*wj@֪ iѶwu9AOR#;[RZr\"Lc9Iv,h^PEhjA93߭%×ܝDfAXTWew vW*jL`gi 8 \as9+ oLm‘Hsc]IM;@'@瞵*ȬŃ/#pM4dFvF9K:i֊M5z " sk7S%[RxVugmA? +A##Vuw&0I9TR$vD:4ֆ4D=$69bU[NI.B9=>4Q%0EGw_T) '>Yc`#ޚ2QVOE]Ϝo!ЌmG=C229\ +^jh9o&VrT+Jɧ4MAHJ{alj>rc0WqKmsqyZX`F)z}XZRU^qSgϕ08XNF:Zo[/3a\_ >[Kܨ-ag~ZirB3 P?Zi2%:w50BQzt73}k'v8L沪{iU]˸eⓊluvIЅNG&; >g=*p-@|ɀz 8,c' ;{D'g?*'^ڊ'6ED$@"21zԂ9'HyBbf2Kp^v`b)lZB, ֖FtCIM>£8ʇyl2sOUG1Dl5!|9cߞjmc홶.PV:(02o$Xǩ87)4DD1ezHcK+F Fu83ݶBFלاM{-ddQVigly:$L"Q6vlA$B2C#+V%E_yR \+!xr=F*9$y#1VެvJT +܀@+2FhH&ZE=Z$஭o{xEYO2@szwם-&QEW}M|@?jQgy+(T-|v)[R׽0p7'EI"YXӒ͑2: [&B?S9kihcwJI#ҳu9]+,!cҡH.|֑倱"&c8ڤkK6vˏ5?9#ҩFڙT?v K=nPJݐsZI.mz^Ң㻻[ |vc^jUE=8}jյ>w5{]G> uB0970H)e]tۃVڬTqQik&w9'IeךϱXAm s*3r*A!y ݆?5맊7X;Yϐ䞄c9mʘm@I@Zݮ%i՞"\я3/#YIvR!@P9=)4e<2DҢy=[RY%!.SP8(ثs]WnT2awk04lS +N=Hqqm4m2d.zg`ıA,DaWutlԌr񬍂&d8#זL2Klrn +G'qϵP]=BPg +,O^^ѥNI$~M>{o>s|Ajdy \fۜd*5^ fS!P]^OD1I>9pX(Qҥ;ԧ)E/_1n'ER |zozj8*x갈8!bGyk*ݮ7in$+'#sVkEO,-h]Ug1>I0qAQ[q3B¯N:MM}u<6aofTp=)tk1\M+ږ^ݮY]Ioq$8XUÀ:cCˉRkuep rFx_Mk<24^c#iQ[H]P!NWќ惲ӵ+ra㎕,6oq,i;9* ޞ//uvDߒB}j(/MX#~y*ࢩ'w%Hn$WcmñwDYRD8*:Sa.aYo9qN=7U%al YB*۝Y ؎O[j= +Rzq +q: *flH$d܄C Cǰzv֦28[c?L^f'O퐅]'4(Z\iA *a~<WJ2[+[¸p3uepɻ +r[AtۤD>oN9)A4iJv-C%^V$Y3Kic(`!jR c]붖"[{f9BN&*ɹik[wkkh2jsr\auܫ$w0@ӳL99XzElm^k V0@zGMm2Ǩy)+8m>M1ҫ)k_;H-(4Q8 2mB^hc} +p=UOD",{$$lyV;(mTǽN$էsTy=$vxnadҧ'TӡY^"UUOSYoigt6l6q =&73H k8`A ^?%<u?8ˏCGA$ԮrMbӤgȉݰ[ g=6h3TG QjXBJ.ys^3+HK)IJ:+8w/\$1H_(P+1ُؑOqsmmyoy?~zqMs@b⿆@՘'7'O-`~ԋiǧ6p-.:XC# Zv,u[ȊJ:pǷbj76%i&B7e$`>]$ XUOzZQP掉mz=xUm_HnSGNPyxێ{?YmF=[ +%ޒ#,y_։i*s `w㩡EVI%_>l7ܪ$V9T#OB[mLZb(=1k>F"1 WEwok6Kv9N;|##׭7mȤ(&rIHj;05oj6֠]T>Z-Yg +# mC\ҧ741 sV"-ۋi,Im#uC##''z%Лˌ#}SWE k[h k368~{E6]=V#xH>)W6Q_)[)&G +o*A$s}٬W,ytђUXU4QJJNA\ˉAf9-\wc-Zgs668+/L[?$ NhZj*T4Dm,-d8*溶Wʲ "ccSֳ氞ɸT9O4!O8X;]pi=cRQ*dD[PpgQEB(((((((((((((((((((((((((((((((((((((((((((((((((((((Š( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((K+p;ϭ\XٱA&}OL2+. +sNKA;~ΐ,0S$`LT߽E?mji[{x$FQEQ@Q@Q@]Ӯs#}R{Tq40H$|hkA}ЍU|1g{;Fx?efYP8bw)?J~d՞%V[Tzi +M,,] sӜS`N $ӵCqQݺ08>ќ}Y*REBT9 9ۑop>}#{x^3v~ej=HdQl @sR{C<85p{Ң*4{,؂M(Y[JxZ69'zvQmXo7,kn{U-uFȱ zL1Kl4kyYd ?t6Et"M2HcXL jRȓ 1? +иÚ~ ۂb¨Z n{ՙ-l69*"3qub%N\Z1eIfE񜓎@`n mV~=Fv :Tfo@%I$ }i'Թוu?>A÷ ^>~HYxϵf,7l.G3y!4r޾-61"ܴ(*ZtNqARMrX2*U^s? zxrӿ{JӇQ+ۍ<\2Ȫ 5gLk %I߯^8J}Jyf7qR}4GKS&+#69 j2CɻyR~R*H'8!dÞ}^+x!C,q֑pU纫վBCj/!ӷ$1t梎iaiQ3gq.mI!i>ѻq߭Fs6jY*V\~Em٢]T pޡcـ'8K=0$:T@l|W3irzX+{vs8\qT'3O ]P{)Kwc5m/\d<gXb,Fђ޼桌y +zztd`H"4ܾk)Jzwʌ[̸~Z}109O$\^*=@Tێh7_3k8PYKcRm`>DcUk{Olh#:c 2o?CֈMʍatәHͪ~Rs?Z0j)c ?L +=Aάv>USq)I[w2FF푱%r};rBI-Trqj;-oC${ۚHS,snE|u48eh8ݕc8n*)=eZu}z A~$h݉bC $7=j4\A5(.E#p|*~{}qQniO䴱GI)ݠnzе5~]k:3X9<7Va`dl191m-Y3#`0ݎs^w85}w.5rIG \+c>֥2$+p$VKP!2ZHYcj^ṝcB?3s502\l2S栊XhlgsiumMI$(vEBpM Z[<1\p99'hª!$S6&m,J#U޺< +NJ-ur$[z)ถ-&M:84|f W s?ADYQ]T6 +:zDzX5YrzI75HSjW7ūd$$nz ،HGm kŵMr ?1+6Wt! +ʻK +GvkNm:*H +FO8_m׆;v8y5_t\$  #jE<q` +î@oQRޜ#.?(L)iw$v5OisFFVni͚쪣!JΣ ~>`pcE\Ӯ T+ uʋ5[Nt+(\;4 4瓐HnUՅ&fgDK8c6RowCPwqzBYgxeXXL;rzcPc)1nzS/#3; }R] ]n#g݉,Ѡ?emq 3ר8s5n-`xpeY܆׏j +ϕ6?wv37ǽsc[ɏ1IT\j҃ /ܨ8'}O?ʈGFQ(_BMdݚOa$zWYc[h :7A jA阪?xAa +F+-I=j$7V-Ubvk;a=B煌'+ԏYy@2sc^^^ZG$QNI1eC:FeudnNZɶ'%Riv}~~A=Cn6FO%#ww6L4JcA$qRlnV5ɰ6OPir&$6rnm,q3nl ǠRW2RN,,xJ{q;1abӮk[gy1"N~ Z]ܤY\NޕU,^GvmܠuH')+|:i4մjZ|* A*`rŴ{K?1W5y-vyGvǷ8j-5Y. +|:o;t黭>JOGRjabF;I,zʰ^vvIm4Op+;d.Kq0k2u&RJ+Uk<ҏ/6|~SJ->8lt=* 9HZFđc$zU:4w#7g-Sڡ +SѮؽr-̖P>Knbx8fXPMⴎTZ:n\ ߁sYvVWvI yY '#WR^5 +GM}. \wk$u@@qyYUōd|${Jb]M& J]pl=Oe¶yK̿Mk~?--V6g}n1x$uK[t&F1“@Ig\ v{~%]͌"bI Tk]jTV"YWqKU}Ф1F#sN?} v[ש\\Ku3M3nҘ8xݕFS*s cYEXp47Wl@qӞT\u;E -Q[-yfXX81>RבD`V2 RqTF%mvܷ9EEPdQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE&QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@U`e1|@m̈*jۧn^]}W+"gGw +[gJҵQA!EPEPB) žx\AuR4M$dad 4Xa1qR3LǷ&0 +r?I~h$LB%hBgtB:r'?Jug̍0<kt\4ꅲ9ǵ$˜NI崖NP!$)bL2Gq^[&X۷3g)Txw++oO>=(Z9vOI _h8l#8v' F'֥o0,E2žKqUP˕q;z`DrC^iv`T4c=[rmc9 g=E:A1<{z{uB&,=xUd1g(oaWPoos#($֛2bhݟ2mP$o&v yMmu UΪ=;P<`1^?~]0`9Zk$$a Y$Uھ?@jpgc>Js}+ [tz}k)J0I ݐ wy;qqW<.-jG5 UEcJJM]v>7i)sjq*1j>HpG<]Ԡ\ޫ[($H?Z/K5iTzt/,wE:4J<OnK "iq1P*m:(dC/g?ҫ3Cs$H+.Oo΢->d2inS>H,,1'&n9Yrwf" ?*k]3d(\y[SNA;{s[\*q43r:@h9W4h2;A?/ZgA֮Z|LXA > ѭf-N3t!WʑFާLNG=ْ8ZyWɼuH$ܣoLj<0Auh`SU!mVKD7-?֥ڰ`X#8R{zԻ?CU0[d E8&ί-l;sTdvl06:z:&BoRhJ9v̳N|f["=(:Sm D8"0AKe m2N1㝹?ʷ59$HhEXǚ2{]s/׿V JȇiUFk+C D "B{Fai#%p3V!v6yOVOB,j`o +0v6HX".xW*0*ZYTw4L8y(nMfCT6ČrcZZ%cgR Ҫe[Э8 ߦ;}AERVSLt1O#xFw6X$ly>i"G>u\9#ۯUWOs9NNUL8}Dcom>fJ5\.q2gNQJ +~l(+z{ + +ʅIHx5ip#iBAf.1y #֥tSR.{}àS{%3n + (gU7o *9^fuRe[+WJ5 DB +58WrsN +SMKB>}c6&{G+/r0vO֤[Mvn Gnu 6YXsӀ}Ni!I9DOmaj6]Op˄G*XxES~D5AY69 w?[N2O60ovmUf8G8|fӭZK +ʤ,:cqj$N`1.o<9~d +ys9ѢJWVvoum!p%~\_z.<9*E$[W?9\}}-D*8%nH +*zZ*KSI"ef +kt jZ"Cq&Y g{;(l4@?]  + ߟdіPo^.,dw TȮO; +PZXGҢ9S]OxE[tUx˧i%c*y"՗ŧo[YO<dF/Ub֭k &$;يx`WlWM9m шmp8Fy篥ZnI*n?&vauv_jr>m;#B+dSOP,1:HdI>e9A>LL.]<,F@#>ư+eNRR}Kג[1VH p?72ÈW n$q>[)/in` $$M"LPjoJ(;I?Ŏz=)6=e}K|0t8~+RkkfpVugdtBF}Z^jzRE!~>;T{. +rc{uv"G;3䞸zqb?C*F! $j 㜎ݿ5&.mڬps#$X9ev=[POY`W/X=[{ˋhUj;(cI98Vƙ)e&vO7l篯jmU(+/NM>L`b˟$ +/d"":dUI4k+kd + *jI%[{1Ư0s)bZ0ˌ^vNb*OGW\l+򞃌JHlDOB9##j߼ko4ݙp@{~}D@q85)PԛO . 8quhsEbIm7˝܌Q*}L`sہֶ.t`KclSm5(J2t +גDw;U^z5sI-c9v4:^"j7se&"*IJq_jirJϹ`!dc#dܞf Si!_G& FqJ5+x4v֡RnN sҵOi㶋N el #ujWQ[EE$,Hr|NJ-;FFKf2W8ojpE|e"]8. xkYqis ̠ 0a-4'Oү5;kً:Bn XǧJKbg \WOs)7sJcZm pW"玙mZdfJ;;@Hi;J]XarzN1e-фw&ٮa'Ć&v6t5'm\LiWv%fhF4$Q{.ucNIeeRWcj3'xgw9;tYJڄk5Hz!IFFkCTb涔E";0mn#zQZSw*XAKС_=2rT09鞪+>X r)WA"[^A YBxO\U.#_"?J;;._m3oV2K`J7=q}*XH$VPĩn@rkWExKXIoho %WkJSR ;q!69|_z؂(((D}#(izEA%bv`a$RM?j}H"`%-NREqVnv˷:"wɴԕHJb!I\1I2DK(dv֠e4k?x{X:~OW3ldBvt~*/lmy'CyrUF2:uR@y{ +s5iQKuz&p#9 Ac֢nN 0 A`{ZXM/GSztxV՜KFm[[n㌺8ɫ6cJnA° 'APl!݄.qhH1]¶A*7tn0#K5˓ ",8%zw +I*9 Ԑ޼w`xI9$˛9RR'b#?J"*X*,^)!r~Q +gr0vNz~5&])K"sw塺Gh`|TY.z5qKyl .AO[U dGBF{ +6n~k]+ʄS*/:{a)YxOz\I"HV5U uƟe/VJvRh,o$H&?-TI-;Q8U*Fy$/2F.#BF=?TYI kɣ[c2uOFfqoױZ EH4^YG8zֶm)Q6|t-ҧX7C3G8؋!eS|2pEf}RJ*RM") wBIca.=1ִc>l1=xݝQJ祶3.4hݖ^LI +zqʂ-يPx[wrAv9ڹ縖@ܶބhs4xaNj:YT;[efUDpIgӭ6( c<+f+YFQ?_jƑ]uAwMmI}yAE=o.\isńe9g$du 7Phe(]A:.;&ޟϩ,d$1*By:cN?.*\i\@]AyObTG'ר?We핼b9j7pڪTߞ>N2nQGy=HHW.,f/*cF6HJg'akV "獖(c |je=I%NZ__3*Fm4S#r1רQUHdcLZ3" q֏nLm$̡  +VMW\D.F(<NiUSV2.$/&rcv틞'$S[}7I +}>ǟ~Ś6Pp9K֣X"Co;w=L)BM>>Ř{+xkSqVze͓[iqk,@:G`QtBAׁ֧tF11C .X)cj:z~`/&U- bh#?.jh]j{-:U<#E(b y$ VɃِ)-a5qig{sTPM7myo\tS5%٭5X>5ydifg*t>(_}lQK#c+eF +nBr:s]=suRcx`G=8y-ʠ\1ЁUFY.`l1by p~SIŷp1N72^K[H6wcס/mJ;y?x +Y_ G"툹eB jJscW6mFFm2p9n6_ղ6:լ YՀ\!9gLγSQq̌8#"T]kz"*\~Ό6*j. _OqFd$VY,m wR RSVGVy:sRhfs'8֑:q Y-K| K}m)9(;y5[o/vvp#:QҖXZZ6|OoRU 9O[t6mĉ,FsQUผ=qp<Gn,̄`$B +MW}M KJ,Kh>"IuKvdm+99Wxj!pE#a 0|GOʱu /隸I{]$Ike>HEw$rO"v:MFFҢo gN2roMYn > 3,j#u\,H$ӭM疪jY-fO +$ihFYH8N9qv} +9Bdn,銕BKH5[Xw>i\4YZ7!Tq1#;G< e\,Jda{yQDX%XZRcE}+Yy!<.wZ,.%T`W:}j]/GQ`2lcQ5-7y2Hs'u- N[ZZC-,1VRAP(鞂eu,P\,amLsީHR8ZN0ӿjޤ-%/[t3Nu30cAI=R  -}O5wOPՏl|<?pzȭ9U Uv_l;)8ިjm 2q5V=K=gXufߍ:ct~g4#-^$ȞA"cx1A2 +(2m 2668s|$hb:wKip[QCu/ gs- z֔;Ҧg؝ο!]sfܭռxHw?™ WJ[vvCyo}SV̶mKgtxYD"d.{uǿ5I۰3 qt?xz۸4tZt^-& SkD"LO'\jiLQ]}d}o0 9݅L5xl0_;aJIw[r42+4{=73 <{؅k GL/-^݌B- ;NfHAO=2iJt?ιQqys-h,LnŎOƙt,$01~OObu->A/pєۍkdjwBo{o1$u*ӒJ&[HV1I<2 ޲jV3Mn&RA^wtqP&N"'U+t0;ih.g0QB9>ٞ={)dvץfC%ijG+)o`]BRUܑ]TꞦŸhKk{⵱$K8Sy5̗` kj P~5Y=ݶF!Yt󬋨)-\P*}< Z^Mık*2dSKg[[[teN.<h衮#%t-egoΚ=. +40曏-pm='_p1փvCڼQR[8,C } [QjdXd!t~lUe},t6_#z4(;3r\D^[~r ;I*RAWHթԒA}]j2"d0Ju'Jea Ňנ,>彴wb=qjA;prlVg)r|= +Iwp r6(I2ږ)I-`$]ª1PNڌ1Xk s0e |ޔ5n$agTyG8=0Fi5ԸKh}ᆼ[a|joz^].r4NX`OYO`GF0 ~So4B;mBdex6zP=(ܾwofE3ou$SRKi4^)lnfHuo1qzҥ5V39 Q񜞜Mw:]пSp~Q}{0iJ y5ki;XHoV# 2ޕV;Q´Lee-sA8nU1\uOHv&7`KqsRo׹kf6exżl`:TqUn+e.lc9o%aFqT`2}@Z<z#s˙;&Ro v;bK5C +2F9K\2ۧh6ry?*]V &pIMjΥizqu5C"j8<Or y?be@x(Fy*Udy?lkZuc (qkdm8{u ոi>'r=='HlsYN[9!p0F>;QmVr +`Nq]yNVF?+7<49C|$D2K1 8ܷBz^Nf(9B(((((((((((((((((((((((((((((((((((((((((((((((((((((Š( ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((8tl0ZZm2LAf@ֲX'MџWF8I7\]+׽Kj4LdےN0*ߟ#dp8"l7sTߡ/=w$cSBO  מ3LEZ~f?79RW 8wZ|z[[*Rc@FZOYb,͵rNE'nU-ʏq(n*i.Uܣ;AZ:+[# +NAUa.$; I8_J7mzO#,<7wX ռ!˰(#::᣸Nxauh C`z~JH浑weыd|p;~U+qJB1Joyvc9ҪAɊ6fϯ [B$Gi/,dFڡg=wU85goéJ4W YdqS[YgTQI"#_0g/g2H8ӯU :P-X 1nS<m1l] .PCUl{Y䌆(QfTBi,hT\s{Q-t:2Ib1YݼVNX 1sUhGE +{qZ;Dps* 7/eE+,c8 YJwPm'e}W1 '-45J\+ Idp2GKm?٤eRAr u$Ә.``|4D[o^WIJPrXgf;T-zZY2;Ko7w^=ķw x܎9ՆhL\,#bNjɞ=$?;&gʜ=37!"a֪y%+k z׾=j+I *ʼr)˩QeR읾V?%B[6cucܳdK" 9GgKytl {77Y:˅SFE AzTCWef:,(2/ya5RYol|ȥ;x4 9#?MsD-›f ︜IƊh?.HFX7l8+EI&~46&6G/ + $z]#OHvmmn0Ak4VLԭ˷e$F9ɡ;(V{v,es,L+y\3uQ4u@t2kU#kcONM:b]9d83U5[bhёб. puK%ShS9`MJą9zbHg.E:2=X땫BKwFBHxME { m@l.C H˾?{1qU9V-JL>@937$Z^jdt!o(pFAK#HI{\7 KSJmnk!PX~bI# ;GS[6+E002x#$S[(kY|C2IjmxZt2<<@Ҷ߉& &yed)FG1tQ|j-Pʯ=I9CԊ[(Tu 6#91j[7c1X0*A}jwW/}䷳KyJqbvAx=7u$d[*vPH5mw=sqM}$Y +QR=n,Ӌkd˨5M RrO~)$ԤP/-݇XD 8weAqZ  "a?7I:M[sZsrWwnA{ C2ne<_W-$t 7k+%vpx9eK#IBd?{ F=k~P$,k4҆1 C0IT2sUռ-:aycqd;!@ Տa&dԬ|J)2,Vkt,#'zUs{|ZjMv3'HuYi8@~8cV9ײQZ]֯]Qæg%2H!G\lW'b<[8ӭL1iq9 qtT2jG`O_̞ݪy썧O'&z#2'}v9~U߲bL3>rI$[TV s3TCJ#X>a,e9PKQFJ}_h[0V[sq4B0=̵YVvqq;2$Dl/u=}M;P]%KuۑQF޾O,TRe47Ok06 6r3z{)ݤ{$vL`GrsZ2]yw64QuY%Ӿx/K 8ާ[m>Gk =6ΎPɂPqޖefidhbAym,ٲ@9GHk&4ϔvl]9ҽ%Y7k_o46RU!OJϺ{KBv:+mGI;n@~BM*Xgcb-iKuMT[?kn6;K +ۉvpy9;u"n.غ:+$Wt[+|gJ#$ +vRGHG#0''O7%R V,\4c, 5"qu4QA`9=ZK[+il;(k99Y]LUtnV\y$ѐ< }ES]OSnf${ 5h$0ygiUQ`2~f̽(BͮfQ!siq#'P, F+v?Z괹Zۘ +oCӦ;=͜wRCM`>ThM^΋QS"imR+ѥMһ +A9#FAiEKЂuQhq%`a7sAb@'N:YrYwzTڢo!`Ħ9F߼ ˜>j{=XZ+yO288Ib0,v!maK6*ܑ\@Y]%F܌ڍ7omg 7EH"5\ƭQmQbTaN9=~jC=队\|NZ$zyZ-SӭUFKIz׾8RϦYfE ;;X'3kOqm|K[wff۳~*W5ezRHI°عqׯ&ZI}w1S#9 AnCca}*\M<24q ?8Y6[_6 ec 0b:g҄΍w*F/Nwl>\gy篥iz(5,nKn0NGNKL'0\GXxĹ.\w=Ih:4^ioz&3BMvP==\ ;em&@}pj ӶM"ȣ #uJKk\`6GsB8rI4e);ǿ0X!r +Zu[Ktky"$sPkd$N\ORk2!D* .{*nRD3b!`Gn4 {GkyB(Gpwv$a{{xPc9XԦ4e 'DyXޣ]Na-w9J(<(((((((((((((((((((((((((((((((((((((((((((((((((((((40)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 4X.J3ELF~t˻ҡm5QEzHѶT*jmd#u9YIM\֕Wņ3yaڤ $gPs"+á 3|SvoI\t⧃MiE`CGlY! / +T[/#86u4sjx?ZJD2,PZƉ<ҫy:L6* +qJP q h`TΤO:$y$@1ut%Sru}Oa kL%rU^)mX$dE!UUdIT֋ِFҬr|9+ bw6*~|皅?v_ +  TLUu1Y 08^hj)jC7nij%c8i}~c3 ir1ӭEst4T!O8ϺW W,x-YTSq^-s<jńGsSqyM,?S-[ydb=*G,d5դuiBֺqLPycdcKFy&6Q,]]F% |.3I.qi%o=<<2 L U/u6FE`?K~"P-*@D1Ӏ;wIۉbsZ/NXՀ.9j_ٖ$>rSSۯQV$,$3G(_ʻCqN7 cgb 6Ia'SgRHZB@=? Pp?CZ 8g3܈>cc=+N{ /ݴVIq8<ֹhn%E%V1ip[IJ)w;0i8B+P)jG!܊\񃊵j[em_ZMqu]>PAϸ{/&쭶ȬK60A*yTΔo{l$ӣG$A'<)޺G!ln.|g5OVhbl΄F?1Nn};TZU]V%"y=ViXPҺ=>7i g<ϪXM a\{ըm$|H9_Lt uR9I%24ħsҋڬ,\† GKHUnhot׎l!P] 6Z=ܴ;eHb998ieg eGx2^1S]@烜B+94akaua򪛐f2T3Ow=}Clӽ>du#{_/S+MA=c5Do#ܑTg3 vhur3|D{)OM{pdGs0 myyOqxg!TR0Ͻd4̗FQBĚ]bkp`JdHZKӷkco(%D+dpqn<zpX}8d=*dxuu6j:BAӌRZk7RpI!!YIy NiJIR%۸4xmWHuYe8\ӮganVc=,UY)ڋUn M.k [Kym/(4'pzq5%5ƿ-aK Vずn]2&V~I8~Xm|YXBfkd#o j]5Si5Ē49{mgt\ gK+=/|LKGa8Mћw+:LoeqkKq3}*qw0 $wJmKMDeU`ޫIykfM ,03Okc6g+%} gthHc 9N[ǴcQ{;-ͅYuxxQ:ҟ단&DZb%GaϠM _ݹz'I cu4ѡO>@Y6;X *es!ەFq'[奝mfUTs7R(W C O,bu^lV*WdzԺch[E EgRT1-^O8Xg>C)``\*Hdy=\vQZ*|Kek{m'S{r+) kZͨ,C,Jі2 vU{KHڢ鼷>UGױF 4ptT0`~NqމrBNkTl'f`N|m5cPԭwK5ڕFBgAzV^$[ ShF rI?zU{4c(}:KZLf +Yt=sҭ-bʿhuc= )1`$z}?:o]7IhqZI+3 :lBѶѵFrs7-ac ͬN4m Gf4l`5ȷfĖXz}lJ}IZy.u K=XGm̼cz=bͨEWn~]d|t==KtRUGps3޽CUgp34*z sޔ?r}-:Mݶ)aN xX0O\Y.|SNy5u6-rz(ڴῼdƩ$SB߹-;ͻqzԧv_ƳЯݕ₩xUGM/b+j ƊZQT#k™Z/) Fe$U̗*>sX4o `@ @j5)P|qjOyٴm:FE;u'w:M{[r@0qsOӵ!wq 5"v_Zq "Ԣ8KI pX\S]&s4,Qa>ok^#*9䟺3Y +Ŝ0Ɛ+>#;Jr?>ht3=\2 2ӿz6dB#v{9O3|Rv}f T1ýaIOlZrΓabauw +rqPޣgnm|(9gdtMu򤺾cg$\#{/wrt;kԺDwIg#qxf U03'zjT7ƨ bYp0{ +}Viop6su=1I+h9Kn;mM֊Hl#s6NA=/ ~da΀*j )xjr#T N3EgX<Mٶ9(SSP٥סzEbfs^9O\S]j 6\zmZ|wֱr>`89O{VUY{Oש}}KhI %n9l5YAQ**8#ZӴYx[HWsuTtkTyV_*Bة<9ݟs{'TnOk$u2,Cr塕/8ciّUKE+a~^p8'vOJC #)O%@F;ߥEv&KϚ۸c6ΕQ\4QElxEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPHii aESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEnl.aaF7;ig+v1FXqE-05O#! <^KHG;wTp}= :~ѐ2͎N[}, ϒ8Rbw04y8Ϸ^^81s .v`tQyڬȤαspxIUX^'+TzSNS +(GqV"%6埀OΪR`è9L%,1}$nсQ fP >[)c8U.[Gn@:'U;5o9D@Bp<6F9LO*(Vʖ6I1U'-$f!uiF2ꍪפX7GsiP9J;$]9sSWȖW$qz"kVy#F +sT*V2ס5SH cO֤1q a†%Gzefm8*6@p6>Z7${-ͭo۵Ef+ +X985jElh`i9#;c++?3#d9.T"BN0[C,,e(rxFpH jh\r8GwEYc1ͼu;W׌c>m^R3dߜ~UU.nl#yfLp=QY$LGЃF)SmAGtv[-쩘XgSn2-g\dzji6(,` Qvta6ק֗2 ݵu審̡FC^շ5R\_׉d07=GJVfJܐ¶ iNYܹSqމ'}Bq浿/bܷgaa 3WczFl)g%>\dσSa`TV m^M2~ʢQGsI}jtKRI+rI!T>hVmu=?ZmLvHa~T (d.c8B3SLқWKBpDW u=\ + +$ӿK 'd >W21կZܝPlh +9OM7ڇ( + XXƦ[h o'`/c Sp?/JZ 1I @>r2}ɻZ}&k4HǶ3^-U]. P89^=KY?aB| ᱜdg5{=ΓJ*r{m[eku-0<]b`yc֮"!.#URj#}5֥ej {?4 S ` gꖐM4wlR8σ9<ҪNS%A2OK$QeU@p_~l#HpۏZպԞ%4c)fϐuݹC 癩w}(9{JK@n!Ec=ēdn$uG7ʍVPz'iM)RRq#HAszcOeAtu \ɽ$\{|^)"'AQO-P/{Ug-h<#q|Ny嵉mӧf+纒6u(T1R +qcOi#o/hQ1pi$nѳGEQd¶08;׻evufٹ8)438ΓTu&h:dr"NYpTu+X#hLQ`'$QNf}";xC_֝`s#\ìe[(n"E;On!ޖ8%S΅\9ӎ;Tf(* mɜcқְe7g<؋ {җ#egӽKwl!OKv<Ϟ<jJUXh߸7r?QY$8(WDU+OKy x8#nK?M 9u$>~9ATǬL Z߻m<[r +lQF$kac-9$WKo)n.8hW=*+^=RKO67$I8u'62O-بQqcrV#qbm]$#pI\k*m?LA.6 [8sQP+:ty7ۅ"}jȥ:&PWxUf58tژbes2*Zj:TF$isDTLD~cCJӡդv!H_)zuٖ+"FaAQ5W5؏P)z\v ; :jA*N1'ҋ]Ji& lfzOjQRGk3/)xjkMKGZ=.0*'~(m~[*w)!TpG_I-|;q~-A ID@vzw]FƤlJ5#b1 A~C֛SJ%euyk!-W2Ja[8ʟ|{K7t;yNf 5Qֺ&yA]]`pzQE͝a+"n\aޤ3B"m-wY˥Y"NޝIB)FVO?nk n`3M+B&9«ǵEf$ڛѢo-rHd u$ԯcrI7FdlGN3= ++yGuᑼMݭ?۶ʹu5pbJŘ<=q)c5'W"3t'Gkz11' + lT{svKw̬*>3Undh%W/i cspx֞Dbs0vm͵*8R¶ ј3̤xT_DtSIߣy'y=BNgv1TIDX1,wpsW+m.h.TݍjƤLܣ}(WܪI]t-iK[Ė態J>}kX +6hZyBpFv: [gx+HsDk:,@j։FNNQFbt[I U\H8RO}z[xekYmVzY3k${TfUyӵYӮ!+Gke?;M _'sBѲg)^iZA5hQ2ϩX7cw?j܋OFHݢ"XD 'x^D2Ry밐@q֙&{H̐Q~oy&Tӕ:6\TTdc#OCK)ZMǘُ}*3EϻO,4lZAuhQb,B9K}yܢ͆yV(p3K-gX-{ nu%7v#c8o\pMw0U%wkloLh˸`X:[NOډmlf-sH`wXլ/ n=1Qmy*I}v% t$uA%r?̸dHL*@ +Ã튷q RMމeVʌrO2vHO665ʥh.}<jnV[!@@ϘrǦGY\o nkI솆a0I$ċ'{/4YfKsxu i5=mgԒppIUy>%w dp=VHͥ3 "ۆN+~]:M1OϘ'\q>jDc)k%y%|:<*p#< wo&u$12 bNH8<=i2[ %i/{*[HO.3ܨ'GJT݌]YŸ5_جd'p$܁}Ҵu h5+t.o(q!r9jϓL$4`2 / !4hGqqMkRPVWR*0(((((((((((((((((((((((((((((((((((((((((((((((((((((40)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((u.Y$e%:gXI%(Sgc1-".^I?lbIe¢s6ܱ+庶\ВPyqٴ>p{ff1L^,r}wwkmmvZXiC%H1iO$}с?citv\:g)DK4rd3JE$vpԱ RM +[pI2>@}{Kfу d;9 8\βw$ª\IV$b)Ά6*{SjfхQ@cPycc%`N71Sq4{:G'v +T1 +zP +,ɦQ#f(U$ W(VBv1£c& C"\dFӌYbG,>+CQKcƧkt2q򨣸9Syv6d4bGo/̣ +Iҩn!@63O0A+nU<Q`z]&lR6쮝`9h+֜񽤅bϿNrqzի c7aH`A9mShۮMdGnHurh t¯aYmTĚ;kB6^us9Uql͂DR# \vWFʹ0q-pL$:DrNOjCuI~]9#8l.zg8HX.'I8O3rHn!AITw-٪In"-Bx#׏Z[O$fx>Q#+J(c=^;9y)ؾHsPެ(E|3*խyѰyVEĀYWnxHIe~Y/ ;x'C|I&cr ӹQj_Q'i緖h@{}G&*P$r4`z_zZ9 mnV_vJ#f60O&hKByH @Djpi<c)bDUHzf 2p1Pr?Tob(iES ^iW7ʹiFs՛Qmw ż˸nz~#ڨFD=19 |}~B]%.%Х F`)EݵHd#K#j) (,;|1X [ΒFLE v +sM+o{\ +!I ø.gvF*YP`c3J7#ʋqyE Ӥ\2wr#դyNIrΖnB` g*G?hUh%djϳ =ڠDw$ gUUnimrT.j:zoZj1f%X4cGOl M23Z$n z{eo!b1M3=ho%dqmRhb*gfRwDXn̤^#=P=ʏ1S1TZr^[ʅA#iw<Ĭ b$ +rE}8$\n H|V'xԣ3\5gsN1SX$/2ԑLUK91I]R2J~bOsZlQDmq^{g0i0Cnc2øyנS.dy1vu)=4$ݴO*):;d1V2\\q8j^0K91J,$z՚Q0mۃ^6蔓ޞ_IsiP4+p[H.-mK*@A>r,L@^wc?:+Vdyvd)ީ#N12m@b%@g_V9h(M[HqM6n5!i#`3MVg7֋nPۯ峗9Qw+t8Q|!l6|l+Eٜ\7bێG=ҠiƁ̆F |fpz9+9tHo.˻p烎i-MfRI]-HnnmKJ1,:ԆM躀]t)8\wa ;FqG^kZ/K(`.jϭFM-l]#w/ F#cAEY^ق2a}Ӄ׶}2RIWL1oC~U˛&ӭ.%4&&\GQ#gՊvڂqi1dI, ZkP{]LHIAŽï~q]mlg`KcN9f~sJvODg(k=v|9m]0$MAqnqj˵tWA#*XZc8eT,m pBd:J=[*f,aM,4PܰzuI- ?>]NͅG}-#ȥ+r0Ì p1zd)JsR#X``K6o2I +J?5hCsO}|"H~X;F3N=*-2kH6'r3סޤŠVR7+y-T$m<랟Pas 1gqVI 3\<Ukb~f[j8 Y,,BGrAp6cL3Ct,zp] 7`gde'T0綺Xbѕ?1#S hҩvn'ڵ5x&0OTyb;m[S g#"dW9zeJJ)*(H=UKoqcl̯3On_'RGF3+WW֭bV[DW?^z3y7n)I9^I{ Ekn #}[!ZݰϨQ>u Ev 8L+M6JT.}'sƦmtlE-QO4|1 +CwiiᔬYWccԳZ\-)dg8 g^{=[,gR{<)ޚ}N&>oApY\u#1]V6}5#8]S&OoXeX&>[3zpkm&'dbD;sz^W4ˣZˍ=Yc3sn b{נPjm ֐AfX9o{Z,Z-Mer`3,gs$Ai־|f$o qC^ +\a|IzOieTpI#֧Ү-eeφA=eL݂zVz7;mТO ISԜJ}٬Vo?ʤu;vJ.):?:[Kbfs""# qmgyOhzouocnig[q[%љF[[9#֮x^^/Χ{mPu38i1 +KzII+@#9_ҭr )Y]MZF/DEQ""8~*Ηs3E^DuLk7N 5R@I(Ĝ`c#u*Mܻÿ̖@dїPyV(r ,m4.Bܖ1;) gƞ1s@`hTP;sj+(n rOArޗ..:-v;EB79qUm3,IsȧxP${ x& H]%/1(̊rޣ5mЛiK ;Bz:K٦Akt[HOEvg0m:a{ؕDvc#j٭^$f8y%u*](XlEx`#oC\iqz#QtV(Vr~ҟiuRHb$H`sF0=hxtk{}[I=rFk;ggGY'8郁J+.nɽ ui-=Z@x]0ϵ+%d\*T۫H^\&9QX~Bǵg] 4I[ 3ׯZś|[k;," hnnSN޿Ozi,!L6<vC6k6vmp;pWv8',x OJ:mTC$>[Fsa,3g֕Of|!188#?Zzl&Ғ_zЮdo!( !-AX_46r9S۾?Jvrr$vij0P5P+,y|1׿6Rس5ڤVNyUv$T <:1w1ncL,p6ǧgyR||9V)/¬/C烐}@4Yg9%{2"E-,b(C Ԏהnfeb[dkdk2M ®[oZuBVTPmmΪ#}h)Ah/#;~ +9LOnlZɌK|vgy.2wf%;;$a9T^v[ZoP%4T_՗sFlwuko%ܒm|岇Pk]6{X.}.@=={Y ϲy5I0x sSj0ő L㌀:M5Sc+]=zkcKy>^;LA3 =ܗ^۶?-r99NF EYvYEᶀqjvs]A<-Y̟.C6϶k:o,+JRO^=j_Awt~hݹilwcxR])NIS뮾XG hq4&pHJQޫ$L,̤!ATO#^d"U<|[ +֋bGK%WOB9js1f$Iɩ4!>[;K^ fk9"Y}v>ZؙPv +(!EPEPEPEz+ +{,df /TIm72)(9ǷW! +69jء6@e(5cѣZ4ս-ܻLd,T4KtcV@<ڪ)l'dh)11;~bH&Hf8'U9%ߟ 1R@;=T`<,s:ը-! [Hԑ/-ޛS:qoɻi)Ul7*vZ~Իq͝JdM ])Dѫ;$$חG+t0=W<9oyu@V08ٞ44iKNqǧn՝r[DfpT$Յ?4WOA'N<pHw(òwQm#ndg97ؘ%ֲH\9r#ޙq eLi/󂜏^S&V>Qy9V-s#O4JXnݞs}*d8Yo}̏s]eC[R""$G YqqH2yvPGqJ2wBR;ozE7os!x9UB +NKݣx*=TR5EI--ͥyY ,qg'jdMe`VRY;Yx {)q8OΛ}Ees!w9 +ǾW֬pc杫jxDN_8Q1_ozzsr3q5-.#dܑpwdz=+KO`?5KȬ. X,=yg>i)5Ҥ1V+ߠk[8kv'Ea3̄)dQ1t'c +O=Q`eO[孴\]\f+8Yv9F£qӵUd{6Udy!o21#'H~GqEev&#;o^J۫پ X-BNF:c-Wh"[,\'OE>Κ +m~m5I7U?67U#tT\‘Рq=s&@e-%hܺN&b&y.% +aUEr1֙romHO1aBqȪbV9}$֞5͔8s2"ĢG-_Iy`}?U;(<AچZ`E}>Qs檼ڭi<0~\,)s2J^VW!8rzV-ETP%F[pjfjRշ}1^XUp$z[8j+/0A;}b<[måbX$s3{ 5^\XLֿf`T@w36)/l4:}GLHϸ A99z\Iڭ@<+yd /#$7 ,;T2G\Xi6 +M +̛I4DZ;o3&Rk)9Z1&FLӵ. ́`s=mCC5졒ƤH{UKGc<4eH8#$&SP똃*%Aǿ=:׋OR(.$g3{.dX"ȗ;>aZ^h!Hn$ȻuȌ}zU5ѕ'ք" Bd=~GnxG{MFKuATӠP R$/W NI+ޗtOedS#8P\VW,1!I"8up;^1Yb1\}  ZZHRXa)!l N[8ec4!؟Ҋm^!8^控wvbEhCkdqO_3>sbT,qszV4p})mT(ϰzZuލu/p 0BrFFzsZ>bf+jrrhHizLSF +[,9Z߃AQcM02E"oe8w=(::w۷0sZKWKğc{vhC"*c8=*u+_.i{wrbM6 qS׽PƚnLž;8zX9K˪c{shcdB@9ՑfV/aSj6$w3J2$E/q ۷%́%eU,'=Pʺ}j0]6Tim8{H[;Ԏ88*5;{ڱњJK R?t 㧯.2Z q"@=A5^e͕̭:զ hKs*;$B3R{kEÖ4۷~k d!ȝ[-# Gt؞m^K%Ts zѝ-t莛us"2?(J\m%Z]UytȢy31(zT'ͥd,wdO¡P[o$ ,Q9ۂ{tڤi i򷚲v{lwZVߨ2њ .W$HjrڋpYaXX']]3~P|ۻ쭧 L".pA(Nu!&VԷEv20gMMjk 츑]qsU-ONhES$vY wIr1ޥ$m-Vi1~hV?lu֒@DQpvߦ;T7Z P#TJ%S)}=ZZv&݂%pϮ:gޫDeyMS_ަB Vb(&6O8=3N;Y )EۓsӞ*cG*&|#{S hH &zjve̓Pk8o|c&7 +CHhyA=ڋy1:g'#J{++K馹ؼsgvֶj*^ƤѤ~N&;{ ~o&d Kv'p~2sg$cޡ;Scy2Lw>I=*K#7gw}%5~c.% }#Shv +ȥAP[}IfbP( kfɱ6Ҵ%=:1RN*6z}ͬ7Ztupώu.@'@|3FxhX\Ka~l|H65IXsB<G-٫N[CR-m:٭ *DX0wHukJ_Goo"gխFSifffg $<=TKvﰝqqۚ)5)ZVB.by&q]bN:r塘ڍJ5F%InZPT8ۖDZy ՛oq{vتq\nÕ4a6隌e +8 }YWdԖw .@{֯ SPFѧcA=G&gWy5Mݼ|= c Ofg&F}NhwwZa6 r'ոUi%F9$[=z$o1(ҟs@]^6n: \R{'>Hh_3UtK+s~ +mhߘkWK.dha{c?{y$K!@xVQce1X#e{*t~3e$09OaxF+sǽTF5kY*FQyބjk%]Y܉'b0~OȬg3/`.j3{?oȫ=Vz^/Mlk}L>Y })ŲMU݊pjIˇ|LtP8ҫ%yn ?6!Jy񚔝ԧ)+6{KvD6[,3;~UIilqnss(>:O5x!5mx^zl֭wldx sl`Rk)Fp<лN]`*d +%H +K{I8rJVߡFMMҤ[zbB8luu=QZM ,>c8˜wcqm-!b`EO(3pہ{Uޢos̳aۓFUaR̨qR۽0_[ʍF``鎣;TeL:Eх#~Q|m'ZT3A?mbߑc -kxLs'E +G$Uem#KjH$h 1'~Uc-4Ih"w MQ= 9TVfe b~;QTqQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!4 QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP`^dr E9;^GLp<g!{g46t j[4Yn.5a=E#toZėv*́#>zsqDб8ݑ׏4]`@t*B )U| +#fvJK'f&/랔-mu}|2v3>sjlF9S3) +C/ckpӦIv1uMx :cJg(cIQڋXNw .Uc&uk59dM;*n: )Q@SYjbz3@nImplS[5S xFvfoUF+e%`GNGZ^eD +gֱާQPg33̂w0KCxRE䵻6q~^IDPF\8x<~fm8sF9>ass^>yZ5<Nsu7]okZ[o~ +cԑGgag;>$Aˎ +sd}[]B`Xvn:)i\n%c n_ʜ~I'' +qW'1[M#wvtyV'!$x?et1Tg߻W5aE-8>Ǡziᤍa 8$z_틟-+4뗹|71gZVn7 ?DaH@8kuoė Lg޹ؔ\=2`*Y8&A&8 +9=[hA~N.2n{ISvV&p?SZ3\C1NNz}EKBAdڣoD$}Q\$ˈc<tKmeRc 8 TWi^];ya= +HY-'$1r1 8Gz+-:ԪsF[\MM&0bF3{d5źcQ}~by^ E`v}{V)R;Mwx]wN08KnU3~0qgj͛`An1Gq Yynm%\pddVi4bkhWw 'U-79Ts *TMBDpr:Sr$vblu,5{El{UqAqXuV)<9q}:p:CDO*>u"[i H4Wi]7 ԃZNӮa;|A$`ڨetM̉\n1Wk dH ~ +I$m .GdotJʃ~)--flw08mt{#N*MvEuI 3[Q{F[U 5tf@ѶCG9jx, 1 $^j hpQXJ6OM5Y$7HE'')E_CBxolt+obT[g\kCңeXz`Hջ4w7P J~bqx⠶G+3n26: -%k_Y˯* ./!_FyE) #iIe29*7m}]gtkKWh'1:qG*xhŤfBvdPnsE(iV)FoeF-Zِ0TIG}rrq9ݞ>C[υrFr?JsoHb/%*;AM-eUI|ElOVt +O_΋^:S+{|/̖[ |ۼ;Sbw^.qs sSTGRS)>aO;NѢ㷽}ѕN1s1A<8k[b_j50 m1|#>ErILK:ƑTb$~IM|$˸hC9ʐ;xaPOFDG#?{'x,BCcT5F=ǎѻ鷂OK뉞D߱w18}O4"jR58Ant6f{@q*ڬ$c9={CZyR,er7ӯA\]O##Qш'9Zvz =YUbv3{ӲT/ Oq,©rsTơ#hv𫈾"x%BHo:UV%זгY2(999=R{W $R(ApC1Mi,3$=>-jMo1*j( F5 +ea׷Pk5dxX=0s+鮛AOY/Pn.,|3<$]8R.8uǵ?RAZUrm$FxQ]5{idMp':s׊I>TeMvSCDdf2cߏj׉4GLAi.=1T+oyc6 t-pu6zҬ j^\:ZOw+eC9GjVvw fTbݭ;UH#< =#Oh |09Ǯ?>SMk&E#!eMnv%NqVkuR]j'ιF@x)V==4]'o{Nj6֚w[[,1(vzZNj2~lu2}os~TIt8yPJlF8ŵLqSjnY\E&h c'3ab oC ʹg;U=.=R $kڪ0zi;NK}q3#6?N̓oV@=8=*Ԗ73Z0cqfT6vs$4]&)k>I +n}߳ .Qq4Xj9siƗ\Cfye#zvo&cg. +dp1>7|WIdxNRZ=U߮?ڤMN70+oƵ`,"bt ڠdzUT3\drrzZv]jvkoaRY_UwBZV} &]ekDʲ$}.PxoN9q,FlrTZMwuk4A\jZ6ߩĆB;Z45@> NKI#{;Ѫ#/=G6,mDq,T8VTFw3a@rJȻI߯s6(`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE&QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@m=S'8۴5XllS=Ƶശ xHc̋k|r1AҲY6ݺc7nB9XO׏leA8JumInUY`'^D2NvM\C13*1&A(e3A"[]4+0{w!]ÿ5Ɨ!`c+=(kbO,tJ9lf0Mi\ナY#c*c +R VnhE-@02+3}hʰq=FjH}yjsf3 dON94SIv+\ܻcfXvl'5ngKfd>|mTK;uV8V!H<-9'hI6$[dLgj +fXzi-bH^e$̬ PouW,AG=Mh* wgO#K!P\Ew&Z? '&R_ei SQWB46 N @댎k{VIg̪3"jȃZ(9m4By\g~$#wj(DFWzaI&a |@%͕|̒XgO-mCP)U&!nӧ^')]KNEp_b|sioRP7D#gp`c҅r#n1ҍ7ayߖ/gr ]x'>LX`8űI%%OsQb9#P#F,$I)Gg `9U$$Ux3JGGAa{tܷR=}3OM4|, gҥtMk4kxB +_*@'$^p>[CLp{S"5v#ׯ5J$kc6u׊u?t7M%A#01s`1}'Rh`4cyUqrW책KEdgYI$i/Ps9wcg{%t>)*1[7ɭ)MF9d.*zv ,̶" +Dp!{y{8h*F?j^MErkbx. ]n[O<ze{8$Lf1P WF;x+COLcU4~z*SnQWĐRl9ᣑ`BI>J۔&ڊU.D϶wcz&b@YbeE­$kl~_\ LdQ5_qusb` LBqL2$sx"Up22!PY$ݺf0F5P(0R=TK\#n̒$G%Sn3Ja_9qTK/ZEGeA< +~FMѧ;]>8<@0S5#cV-|))7r4+bU:mA Gy shf)1R4^ƔdYuV_LUg`fXg-SVrMDi-myh/WNzvL5vMX,t"`s?NEAvi#ቸi0wqL:ƥ< +W娩W؟YBg%†^je?oϘ1Lb+5.ɩn-%RqxTk_c^1]Tzgzwé=h&u)GO֝,sx2JBB|}\eo 21⯩țQ.۠yqR9#iw׌N$$PHݟ_ʬOg,7R mcް:t@p$MvNp/ی3Ii|o=m¬*p}=8ku `sSA5Ah 6X"i7 $VjNz=;osHYV5H2.3THHLLÃ':wu-Y*-!7@ʻ[r=SڝKEk+&Ac$ }Az#ȒiD +툹"5vve湶o04N"IL-2 =Zk~5't<3e\Hj7QD+IsӜ5P6H2|mc֓SZiJ1]MF|72:1r?WT.m0`mT>fXՠc!,Ar܏Ϩi-o.~[`BsH=y֢jt*Z?}}h}_4 USd7^1V'n>"9-!ߟ4\9=aO{uf5!n29h/8ϵW;E_=~MELjCYq`4/VAu$N: +ޞ]&-(@w_w<{DV#2x2GJ Ս }$CU&SoWm{apdҹ:$2=k{NNxq92#ӌOcӯ%[?0lf qI;#JpqogygqnabU?0c׭Btl53ݒ4dQ.$34$* ]曩=A?tׇ5ZeΔ73<RzkY.p('D9p {tkJ==M< TeibBO#57ksGF5$vVOTӵ,tF%h翶;bԤQ4ZID6@Y]KEmC$ O+_v w#I*&NA}q]"ᢃRF;2~c23Ӷ̀sӧC֝m_YGqlYF;GQ$W%V?=dbtxP#9 3#~"K)!3J6'8=;Vf%텡DQʻCׯV5%}p(f`u]4%uk[5];zv⡗]=BW;#f^GJRlVl#^ƹ!II/#Lnjv*":qTl+=GD#209皊Q"1I;2v=i&BH$ v%BHJ U*_VMjpJ+jķf]Ҙ_Y+ԁU7n|#:D6F\v椸$օ"e cc ^96T'hKBQhߩb5 ؇\ߚjm;I^\uLT^*̶ mJ\rU=%ԎDq^pKH֝IlzZW)1g${TK{,ӥ.R4Ecm[:#ddX\yvou#3iIeYоi<@rNL3&<6$N[ T6Vvu8EEPI9Y[OlRKq! ҄.U$iw[+i(ch-8nƍ7T{;Y#T2+4l$dUc]"c<Y@ki:ӫ 0qBC=)F[Gg:18&DBs!Io_^]ZKB[cs_N[Y,#-bIBHXpy< +´]qJF@s?ZTc{]K6"Lv2 g'޵OES +l=+J@ m*傶6xO :DJcc(11<1)kЮZw^Wg?&o0#?JWѯ,$l`0 x9<ޮm?`;g]2\\.qя0chLyǧZkre&_IV%\Gӎ;~tM@fa7W uN0Y^\gkx=,폻gZqogZ9GXR0$qi'+;kU!fQIVH,`H&(ɻ5;hr{XI%DB11l_+M-WL\OOr?V5IDBy"{)R v6+.H3gո s\Gz"]N8'uABZu/icI4nK`TxQީK{Ǝά0 9'?3Zzqg} + :RmZS\mq)v4/pOJLh s[ksq0XXҪ0H +wT$ckC&RF@G~lOgeiPE>zr+ +9)D8t!V#jI$͸SyjMZuu8}ȫMy<⣸h/mcae$?YH#z"!B*rF8UNFM˴*TN:5o#,<~*rs ww  Yյn'C$a#i<,:X]O,т'H杕3u'e'atK.]O;}v]ԴbfpT,JPHSБ7V-i 42 pJ2!V"[-˫sif1zG^s~{JZw',yU#8GԊӤ[Zŝ zP$X]y*J=i[RUn="NGvYC,L dU=> I3 FDWpU 4ӄW;JKb#jپ'?q^zqM%%cvDd0(+#NO9*M#ϒ5X q氅& ږ90ǷyU&H8fݝ9oO"G֪7}[KK5³&2!u`gr9Z@X`w[5ͫ=NKt=&9&o;+Zw3E +*PJ_V+{fbm e,yb~]^}{KK[7v@@PH ˸ns yiw,5c-݇1GEd(6ԃPrw3gVO5T(2I8 v6x[8{Ժw,lv'@90ѽ+"9ߥRMg K4s&ywn@gYJ4w(%HٕnVn0 U͞01ҵx;QNHd$OoTE3z[ylmK_0qeQ$c0Kc Ymc~kGD%yUP_k,q+aC|ǐN?S5;|O%XFU2HsY҈G,eգb3.SB ScpA#Ι"۽ٶѓJk;Gs?ZCim 4FMWaU"]c 9p\z;Y@@ Q#8{#M gӢt pwP)6U-]fB>EfyIiKS^[~''ϵJfJP1E{h%e0r:RBs O5HWm,cm#f?-eI^!2">O'*7vj˹@'VQk`tI#2JʬN3*-\ZBT$$;VR&2mfҪZrs*.e?i=cLzS@$ B+=1Y )eSQa[ftB G*zwTK\[XYd;ϥa1bRI(y_9-Hyn17Gk!J}@ϻhM6g~C(P zU'sPI61خ%;29M2z!T(v$mgE C/r`Eae\ng1gfNmsmsh>V) ᶟJZ zZ[sld Zuk$l7ǃM\[sէSwCm6#î@8 N!gZr.oonfN-DXX絗r6E+NDVGfMn]$?aaݰ8@\W<֋=>S2·NHקjriwm -gןҒ)lH#q ؅ cio̲?2 +B;~vmԡ(/.I#t Le ]A~J\ pAN"gUp2qi[ԮWu#}Cc'|Q ULn܍*3WmW!޴ m䝈%²DtRvZHe1F +K>]9zUdQ»pgYKnN!oӻ19Q.u%kh$X]*S`ET<՝HDw08GJq~$MPk;J'IEUK[ ,\?3NX.DySCbbh#yO֫[6˖Dw U#5ZR6SIRŕoҺ[(DaZ-l 22G^I\(l\`[<J\YYZNǑCI$Kmgl<e4e\&8CsarV;YLG9ވ[8Rh4?0_j۽p\Y1’vQ =6.WQeE]>$n@~;Vd,aj(>=)ɧk9 #ʓi$H=xZ7H$0A׌:SZ~Dss=> a*TiWe.T0Һ۝j^Q͔j]\!Tjø]؊96ǔqt<9NWj~}nIa礙"XX`G5z0ۆŷF%?E[+urG=ԯw.-эHYC rp#בQ]_f^HBy~{s=Ԑw#`;8 ~5wzJAmùȫţ?ku(p%zr&2r k=)4@{Z>dw{D!Kvi:dXv_!cp0_X!Km@ʷy70OLGEs|rk$6W؊Qs;[zI0ONFXt;VJei~.c نA㷿jcȍqI~bϦxB2ZkC/Kxo2$m( +<0NOJ:=&K[/VholNCS)<9g.ƻveN0pO"u+)4[ <Xٝe?˭͝iB,wu'~\FIriC.if}t *o;?x1EEBc,%洊vrWi?zX/-E4nご={wZGkPRY3Ef.#&8~_}j^Voug˷,:Z)EcgE[]^ek1B6NyRSZ(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE&QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@—aR3U٥|sҥOQ>bzLc.!`'!<̜֋8VP\-$L$}ѓLhBC/'nc}@̒i%÷ +G=;0 x*Nr~})n`[b N0pj().Q 6vȤ1JWi^Gy%NG8k:!xi +dd)+'~ZI}}VX܎yU|j ʫ&גH 27tWoh2i#ь2%eh+DKlo1w`bKxEDQb)Y T`Aq8pN$g֝0A 8a>+Mps\g +#[9laS2#be]zL/-3.v5f%r &]9_Fˑj > +ljX 2iyD0r8,ܼjPl ֦Bomʯm4eC$Uot)oHJo/.IL-LT'zz:ts6BRխR;[7[3 +[\%Y!bی/&{8Ep +'秹E*DzݤKx4j)uz2I`F#)?g*#XG$񻞝C ptR+iBV4SOOȥl.#? +ر5ż83ck%c*?+?cOR8ԕ:uW?ȰиK`cJz6NܜU[սk>H&ZV\[2J)8>oUY!J# qS taG@۹zQwimaZ +pNj p!$g2m>fs Snauw%9֒Zr~ϖt_ə,+tϽZ)/lRx߉=wʚx"YF4 ?t)'ONjRM-,l{C|d ]}9]ww`dJ$vQ8?5]5'.d +s1i*wSz4Kr$Мʳgk).˼ZVmZ..7-r'ҒњU=%d]y,4ȮĄҘ+jts{'{p,ƍNTڷfЈIk`RԼ,"Fފ5ݞ`[fpF0NzK@/S r>nhd@O߱'xTHom+`1}qR1NיV4f +4(iQEb hL\8;c_M4IΪ᷒K54v9Y1  Ys-}zfĩtfG$jDi%cjg>ƢVt5e!Ipq;Ry.!XfdKP;|jS^CeuA9%g;UmG-slhe>=N橧{5oĂK邱tSWgfyb-<&^5gPO)/jt] {{rU@ sބWBg)Zoo&Nn\"=F'Z!tR!3: wZX:NPIa^N ƓOc-}hR;Z?=Q!{^-l~um][jɜ7cQ.XOʪHrn ԺueDс#I*ʎ:Ƽ;2XGIHf, Zgq]\[hw[}V}:6pyWl`k_)UWq ~VVYʊ 21z&NoyPȗ 0Jzq1YM23ZmA"\+$sVڄy+J#_n"ᢶb8d#$l*KwuVOq47,&zPZMu5IeyUK'c=i_ŧ[ +dTIlu#dqI_Z.d2R̫y xl>qIw_M$ƻ?rYIz +iq76Y8Z,"HNW<2_oG3cRCD@ufEs+`H<8Zܼ{m,17=v`1ɩlY\N'F;39 z1֍9sKA~$RJ~"ݐu: +Sn4W/epw`dt[eA[Cdܸln '㿰Y(f`69)Xӟ"Eͻ/S/_M{ [[U{Yŕ͖^C]xhvb_;s] V,,1HCvvf)GNޤ2[˲UBzy. [^ +9pb.F1uCf(E?.'8RH9f$V[3>f" dQ] #үȺmco#~R}*ibKt,?Ps*{{6DIH| o]pRRNڭ(c rJH9`:fXa0nTxr>㏘^R< Q9ޣ$Pm[\I8+KYR xn -ܞ I~9M_5w|FU/s[xҥ{BBvqƛ9_ޱCNՑa dܬX.՜F:MJ[l[l+)({*=rq^LmV[f,ǽEn1i$mʊR@>o֫=IJa9b73$nS=:]4.<ҒSvBM-4ιw{qp8jo%Ks{Ve疎<_ +qORQDY+aO9@rvebv /j!#жB[f[ wR\~c l9{j;"9Bb4x-kL} Uh#8j0ZVQ5͋XHswSIKuW&iH9ni^Y^P/Wy>Qai6f517uF /"xMmtl)n ؞57d2d7f)ڠgz,t+a13Id(sg'ߥc s)vv`'?Z%@H +OȨ'̮FҬ&4nVnN)s2[nˁ AP֜Mk%<*%2XS7-s{ R66/lyH0ʼn]&!y{CIԌۥhjv3#B `q}(ef Oaj-Knr=rk!)O!rG?CPEq,2tkMIZۏGHAEw\nXVS8XG1zYEO4&V MCdO>֦;il%1 \>аOS}8VV\nR222:m 'G_. +噁by=Mm4\F4h +8cR4E߶֤Pڤ_9Din)ZJ0vW'9sS&(OS?tc;ң͑+26`=qvBS|VqocQm4GxPJumBK<0JIH݈:}?PҬnF<6Ps؂ r"gיN{vHFfLq dw1,ۼ)fڤV܂ᵄpwJヅ;Jngy-J-1$}{~S)F'(Q6| Z8!V/hs^aQW4gyw֙| +"tVr@+p>ckn 0 T<@A堓lK(oH =GZ$EKF7e>VgYCѷ+uVG8@+Sk&Saȶ s'n;MgQ4Hva@WnZM25|U!)vNN@v"rT#WqI4046e2mfTvMl#YgWvKe=JXBױvn$Q9\~ rťP1QҮ" )1VesqHqiǕ-I5.(%1FFs>*=+Sul̠8l<{u_*B#ڙ95y[HXX1s18Ifu!驒-Y7mG9MAuysJ\?A +ִ.4xk1t01F{튊tXhpI~d##߽;܉4q~#~#G˟بle.=֍ys- 6G9O$]u'Mj1Y IsdFEfJ 2qyǢ׶HѴl0Uk(`ԶE2U'+ QC5,lf7f.rqxUV ^3"ՂVKtOh͖G\7\*7EPfQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE&QE1Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@I&0TՁk/3UkaRSoW9f\ L֜yTB5BG\LuۓtbXN46qݪd~bb*%@T4{^xYqxqQK \`{GW\ ov?uR[-ٝN8DZ&NRg:O6xcNfvFڳ}ȦNۘ{qq^vlR挑m'%ĆI'5ˆ`G*FדUcb$j@:ҿR)/u ' np}͟q +n|9~])e2)Ap#)Dx{UN*C"l7 }Ж+&3 +v}j6}!T=G'qpaqN3S$^K G9*$I`*C*5v4kfG:>lZ%ܪIujAF0>u֦vX6TbKc=*ĒB|%Ѳ] I֕8]oP%YоF0lHȦ)#DHcFn±Ǚ~z3Z3K꽦rL` JyoUu#f%~zuQi~que%(Hn.>̑>J(;戒4d ++k,fF8g<4&UEvA㠧b HkFwvC8G'f+2}Ld .RjӨ^- c^"5l\ հ&?sڒe)0,bh2h&@I ^ ꕓz+ߺ2w.pcP~5MFH= Z(dOG G;r';MKSU:eeg}PӊʚY_IA=iu\^gF[ CEҭ[[}i#hCIfUN11C6{'Dƒڭ#sZ>KgOy,(O7ПZ<fm( )fMFq׭foIŢR(6KA}zpVwn3>O@G#^Y]45!Eg# s>aȧdi71''|;jm<@B[hZkZ̏BŁ lzSQ^ܯ,7(ʑH2AM ,w|V0y#nޝ>ճ so)HԎϨ + !p}/A./65;ZKF#{!т==jSI_D!ayDg9Z5Xk*7qRdg qުo-Im-R%S;G2GTNowffE"F4nuO~uKia8⻼*d>Cii4Qنn:EIo}@$afE +֗yeB<{ vRWޙrkM,GX28zRybYdjA3ǯ\i7ifΰ8?jJP$Ium-b#bH;qWѴP7 |,y9q׽EgMj-< M#fB۶ 8r*ycl*[lK<`c$醗Mnlخca>ih%H5j {zvBW+NtܻttdpTY7onR_]iiֲI¾l^ݣRFq9R$W|1(faI<-8Vķ顩5A{ufI5\y.}J$ ("y~zCk+ TcqگAH +[LgvO|L}~YN&$ `ڭ{-w^2v}*yǔG.HPڼm=2j0RBS8|~t%7ˢe{VDU0(*8|ܞJQS}-y^3F?±cx5fn+ZO-bImf9uGv5Ѝ1ɻ19 aՎ{|_ G'Tgm]1yvf֮G 'zZ<6\֗jzƷ c48֔]wer/Pk8mratj)o{,l<+wAq3گES?16<18J;{+FFQ,sA\%|V+m2FpxҨOj#X|;>`s*mҶ2 ;dw`tws#n%Us֒n'-װFcTX#?Q}qi# y. =:vhksisAftP稏hvJbZ{͒{4-nwdd7jwЗ9;;۩3Aޘ%&؂ ?w1m =]spbӳvϱ hM{4jv8}a5&ð+ӯ6DRv} 8Լ2Yֵ+YZKĪU@8ꎣK]}ghlIEZ_j(cL?{uCQN4V߽1Mw=Ycb{d4:.r]wt|٢CKe/dۂ+4jO$ΦI> 3K1hǒA!JgE:6-B8He|¢O&i"SYr18:ZSK Y$%19>P}+~q3-n߈f)Ѫ^:sK>$1ݴ2@ ?ZڢLAYg$s +N-[Zͨ(f=9}]'b'SXg [ +6Pjƥ\iwM[n>tC }}o-$^28aL.Wih ?k$οt {wslΫ;JG{x5xX1~?WJ {u-K쌂q}x8y9>7#!eNHC2 ,*,ևW4dԖ/ak~>]F1ӊϝ85z5Pь Q5ܒ4„Q DeI)9tA6srr17z *` F1'o ل)Kb)ѥdn wo֜]jsvl;Os5Uun)+?Ʋtg:y\K0)™ XW \8qVLzO0 p1PfPW嫣{1U]ai$HO@T>c?J˼TVK cu1C y$5ۆħ&"ׅU"2{zԏ{b$<9hu Ҹaa7q6S TM[^7 qJceGN'W..5 &{d(_OJѻ+P.KPi$c;:`wxFflllVAvurDž#K[{~=JJskЪ1komBG!vԚoo%ӲǍʻ~Z}P̠ͱYsD*Zݯؒ>:Z&wTSz=IӷwKRޠ 'h'O\Gj[i`w"lAC%ԗfR`n-kcs8zig$-wfe#y vvϾ)5Yps2g<B>|@9=Bg *2=^x[eJrcq۝=q@$A JM"GR l{QJ[{2TJ +Fq9#lyW;+8"Onub +1^Ak}qJU4Aq D$mzv嵍՘a$w(I@3y]m[pNT0<{$ %ϗl{r=>ZI:]6,iL\ 3)<:\}n~TY,SB6 D.Zpv[q+SQ\hl/ӦyaTgd( vzߊK _ݭYXI +HU u +߀G'zej"V!GqNqD}I ^9`Bqr +my [1${zU~m0VIH9'8QGaڅyYc qKK\ժ\qna1 {⥒q4akrU@tmYHmȍD2䷙0U`Hxdؓ)<;Y/2Dv8ӡy>|[7m5y$euݶ[p`X784k-%+ g'#ys>n.~+eHod8QX6ܒG9,][2I0a096Xۧ&fNFBn?FI\`GM]Z8uh3so-GRo:h$u~b1F9 vʬy֖ҤF%'~ӜIM$V+xVE`>|=< X0&jĞuH%1J]zӭn'IޝȖID@6O]Ks-¶4s*pI.twG2r[ӦGZnBq!#l{BԺ׵"[6+|9Í,X?皊%ErPp8=Q98s +=IZ|$V©;d.On*mjmi%ey#1*8QO[DTfNNvn9+I綞4Pmpw;Cr񨍋<;|Lճ>Y)4ju9MεkR_*>!4o 6hB#W9K>@8oD)"־yݐ|͸:ςmFpŴk(iam%ePgz{4t-zk9ȢHT Bნ?si=M'Fޞ;{^)"L`B6G2p9L}F?B,e'=yqBD*RJRZ~v}މ5\}xh\2qyE`+w=Oɪ_hh<9)nS66}7j*/hopFfX`Asj-Ү\mсJ|uY5\!IA.}󚰚YR9=NKԹ#7nK-jmֺI<gQե  YԎGs$sT.iU0P,'׀*]2\[p+1 v M"e5$슶5D@UB}Igu}FmFrQ$;cq +0?cVf.`B>H# XVrmծl|pQF*O<` Sҭ-Y̭,a!ME"k{'Ip9ZwBZoSCr| $Gܯ\g> G\sYǂ C6s̋qTgiwb6~Xv5[Eg."09O'ֳTQhg7" Aֳe%XR2W\CZ7/ҡ̏*?tN{r}9t-"cslDڋ)cL MWH+{p(xѻ&4]_B+ ?>\Y]ʎs1v9[ RK6.keHsJ]MBd%&]ČAG{tn]4)<Ӛ:4o4_Lym|¤u?㶊VJktX׌`eGzYt;yltґq,*dsCJڕ ǝJ]_},vDہ#9wbI"""?q{&C89Wɉ]rWz}Q +\gVԍI_гotCw#"Lc$qڙ etO BDr>*[dE*l4nR@j-&f2-ECLIJ!}i"6>gȦF&'8dd 8 }ݹ]ڻq`p? +K-BPlb!%j ~{sjltՖINtNct)۟^,+B(W}KѾO gۃF>O»>} ]O̸&27OKhl0 ](Byyv}߼cT1ʱ"3DtUŒ9"em?0X I)< WbsV"ͥȮeT0InTb՗<"$i>uAYZȳNуZWQ! {Ug0IpMgTהSMimsh;OuhmV2gMV=io嶸DA?ʫZ9[Zl>iuI" IǭGi8I%.~Fx[]L(9{vȩi&oNrRO_4nF̦p>*$E' +@$Zl0<K۠*Ρoio"MF:btKm%))9Ϸ,Ʈ#OӴV;ȏo_ƣ/CMN5~w BKtT/pHI8JLK_n%b*AϷ2I@k[4Y( w$w2F^9!OOT ZźX~U#aV&XtTL(P:nwVlU Xۢ)$NUgx 2(`1<jlsB(۰+NN=α9`Lk2zu[VssN ~6K"*Iwh|(8:SUf%;n랕oVkkh(Ϙ ~2ʌ71G<4Ck!ڧ*>b+i.‡\=x5c@V$uMurQ"p5g|m"q\m]#8&yn-H#\SG=@k  Ν|v$dYp40x[5eI!%8#ކԘNӧ^/ 3 ~Qay8X+HQϩk l7#ۀyMXe ]2 RRiSzt?K8dկ^ZiVN b48׫w:,೎8Y]vnQ#dEgL-)'SN"WN=F喟 \i1mw׀3Jbp[_,EtvH y2 N[6a{㐩SQR`G!IbFG'4])V;m~] +-ܒ<, ~B^g-Lo)HF#bmKZ7W#mp 89<+FP 㱷]x:m4ԛlqYF9*Cn:SF*ɁgpxT&6&F\<6|w`9s2m/~YjQV%eh 6scR[73E49dtA=ҵpۦNsGQ>-j8t$X3bI۠Fw*jzO39+7Mڳ6A!Au亶me sKdx^򦕌'.y6٧"ǧV]K%ս˒;|9;ӷzc"ͤǖ*~.N2gaQhXCډED` LoUm` aGW5Ea pd`YF{{^D# w<@y,@넏* 汥٦o#n'Qj:}uZ_dPʠ >l+`.u/YN!cs rs +P-*uKMc@imund>̳g^A`1jOsd4X׎)\&WbpjhnN(}RP*2;E*U\$]Y}4O"(&">H iu-:7ݕg\ -bW1%-ql]~gYvec0%8?OZEI$6iyeoZW@[* >+G#P<2G|VK9mm\# +qŶm>l*8*~ydzyxH ;+l#zki=쌖齕w8~ R >šb0J1N)9+$ĶtG)r 8#t]Z3Jc<> j3[K5mG1\IBWm0ChuG+6.twy1{؎KfNͼ iE:qmS,Iŷor?hmakVRI$e H9MvK)p"UC6k24G1,@oC֚d +/M۩z,nl`vY *3IJmiiJ#Mkw$Q]rɍǎ2xڪyc}+Z ӐiZuyw^_ߠבiY,+2;eeq0"]f}OgFs,(+H\pi#%FsZ2ϩo$J|HH1I47$kͭvaOr}*M`)oQ}V>qJ_3v=[NH +XT!s;ͭq)Dv^;XJ!VYIfVIQ,P[E3+I8\Jj}}&Bc g'=T¤ֵ+MB+QojI1aKc6;>i`|.[sϭUci"l/v/q֍7"N\/ԩWhAw3~jp+ndBl˘5 yb<\SoRakS.2֑$l\m+޵cĊ(9)RS4cxߒ219ڲP$,O0ʇ8@ܥȓ͕#sϮ+E7WDAo͌pHz)>ᓂybnt/n㍐"= xzNM={,\ĺ WS,01@rG^ʵHb1@,2NSZjfcc8o# Hzr-%Xd׽ jX ۛ-#"ʊ@8'}Af ?ٖl`*I{Mkm]|gO$9}t24n0W&s|[Dk0Oe;8kcZ8J*-種b i*Y;O^=?T4u-?ȷlpR + =1{Vdq=3SiCB9}:͎+i~+"@xAܗ%mWO瑞 o Q$ %OSH'-KJ# Ȓ Ti"tY,ֵY{!$3 dh*T 1YRK2Ʋ6^VܿgpvOh[Y3 `1X[٫.qcV߬H&P6#e#L[eg۟4xg:T3};sJՔi+zd7q^::95Ȯ }ZF7+mҒ>o\vF6ONsN^wۛF'&Y(789L`̰$WW +>f:A ' k+[i-#9>064=b5FuI- +pskF {R[im+.GCwϵ.dnUݿ!6w$V7Z22zvhzdך3 +o_L ;Kfij2yku:Θbn.fQPBiEX.tW<#;G8RH"f;9 0*[u[X)2Fa3NMBAJ4i# aNM $*8뚱vǶ?Z[-J;K;i>m84+S}*΋rle22a)f!~ 1B0.3sң&hW*I\x oCZ ܈U9{֭ܺemg<ߘ{sSk浺ӱEw<0Q 09C̈Y$`V14Qg@Ķ'dȌ#/F*0RjW-bufAB z*p>% > n$ܟ~íTqsJ׽C IP0d>zant㟭 jܯog[c=M]͖5O9#垙%Η2X1rHBt㊩h!VghKarJQ&rkԛFM7HX G$Joee$Ire00 xQZ; d p=Km[[O]4E~&%%"X$l{wvW7-&l@Uaom0Q zڋ{{yb/-؉ciLOJMSmͫf FH"ڥ/縛b%E8Xң2gw[ɴ;F튳G%ꉄLW1`ni]Q iI#8Hɐ:' g lBO-ww ;$Yv r@#H݂:~di | (((((((((((((((((((((((((((((((((((((((((((((((((((((Š( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((+mul@8jյMXnQO;}qAQoBhyI#DHؼtj le142s +V2Ai474 ~~!2UA>j2G$Z |1sGcnw$y*x-ۥHR挭m +nely_|ޣ*ӘA]GdO ZfJ6 ^889;ShVF;H[q΢Y1 GzJڷCʶ88H{v"$'Fn@~`sNHc=*jZHU+$!ƚrӧܼ,HV^ݸIaI$G:)YqHȧeqz SGՑ >S yRv͐/q֔kJ0RomE9/M; 䯲Ipķ 5Zo}0wXnk:nw;qgfE'Ri`T +7NydkuFP~V#iؤc2db#L0ʱvVg tE#.ria o#`٘1tǝTa) $sZ5b G!bL``^sܞJ#a6ɢN:9ha`HQ&N5V%_:8KBF ⣹y nA9sM.oH ׌T-xL7hR^ҳ~tݍ2~Taj72@W=A'H`ha;p8 +q-aVpEu둚&sԭeCq4֠FH#_Έ.2 GoVylp:(3SVk4K(@$aykww0uR#<}i0Nqm$ǯ5;+3wi˞ؼ%[(K1'=1Pjms#sZY?ڒ(Omd6mJ2#JѫNJo,6 $! )n@}E-قʀLOЅO>ǵg+R}5n˹wmΫwd$m&J)>YnZ8@p3S,B+(31S)[_ii5|א!|qH4[>f_+tYF9fq{aܒݾ X^%);zsqRGT+NS`i}qw>S P{Xp&+Uxs {l- .ur? +Cv,cIe%b9o-i1֭ks63HGrO-ͣtxtOwool͆f zKXM2HbH'Yx)U+&:U[F6ewe|T;$g+x=GA֪Im{jx=>L\k~tjR339cST=X`i~d !hJճnu] +;1U*}>Ayɑ|FA\4+sQM5b$HQӯeXdm[$9g +3Ic+y>X\M`gbNI'$Gmq3Z\{H\D[8k3S}>K{e*l=ReOK6ѾL=52WT>\fE1Hv8?Ikl<@Wm%Z$ֲ[p SrCT,-dHR`sN/ܱ]99t8 =DO0v=1KT5|2}"#_}.m\>:3g\#o܍ޞ٬>Cdt%6wByb)ͫ ' "*O9Aކ:i81]i1)7; z9Qw牯-+ ެ5t-̰|S;4`)6q=Č2 +7gFP7,~/`-[-hwSڴ8NT/#[Oh3TZ<0<𬶷S1@P nJ v飖y#%t8Ns +YIszUf(n29T]jԽQkN)<< *P='3S4աR! QnUVSG51ɉ؟9pF}+#B{2\KB9zSOF1ԳrzTv q5Kd H;{sn:j,HI+ O&๺֡4+ NRrOphwأrwǺKr|1 E,wV+<<[ayI .v[bGG\Ck6:Gi6uX<Ǽ$8܈r6q覽6Yo1cUM [idd'k9sH|(|f3ӎb@u$;$o8,Ӳ~&al.-w}A `ADZz\YNʥUN[hэN>U${o\3 `Xmm}4TB^%o*6WjܡPv8qFu,p$m8|UeVX7;KOn\ɥm{+-+.d'ptֈ44@ӹtNj0]\ؖs񪶱p+Uf'A<еA&QR*( (((((((((((((((((((((((((((((((((((((((((((((((((((((40)((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((p%$Z۞&lSIpyc84 EK8؉'R?\V`.KeԂeݎ8d#qRH=*٥cp,#`zґ\=H%/ʂ0"AclE"4'~?ʨI7bG٣R$ɕ@OZ +b+621=@FVؒx6yq"'/{$+jlS#DP&=MC<RF܂]4戱[fu++d(^OAKp%'QTt4F6?ZvD9J["-́6LrqޢyYY1>)롤-'鮀 pɑA0i~i 9,03QH[hѸ*x1S(v^)iot#:h-ǜ1[ȳ1Y/ o hbY;_Ҩ&L".On}+;]u)˧HrˀvOZ:C篕$(-cEf%1î35I;Ú[t uH7Lc) +[q*cӜ`nO24U8e8Q5JmKφ@񅑘aW9㨥&Ycd$G.ǞORԞ~-|7 5CI%hH|<|ۗƨU>E8>IؘK`\L*TV7Jq1FwT-MhyvlifD~K#^:zQ4 (S?Ud>j~P8%yf̔N|_AeV +Ѫ$*n_-ʌdG1ͻ͚C ?(|~ndO!#AiuRJHjʌzՈ-.rpÐzdvStqVR?|˵ ݸo9.j/ԍ`ƠL\TGGHo5rIMf(v=@^=I-ѭr8{kt=O+j9O{TEc";w0=>Ե-d) ;` 9JKYC;G4M%{gq>cXa*Aqp*RЈU63F[#oSOj?l7!ޜbV}:yyVe/ȇ8ZcZQ\N34Gi,7/e@UZ6 N6Cbs'ol7 y 9!Sof\|~*q3!}9*wғTWMIE\qx3pzSoO*8͡i2aN*ԪUἹeyʜ,g\w\qU֭H.-! _x9$Y5no.4bcIE +?w= .㸉ـ~(WѼ0r3ǭVOyRBP֭+iAdbD3Nڵe9h"U  T][\Qm c|T0,2L{Q+X(Fiu'}_h$Rb{~"ZM:&A Ht>ֆjIqJ6Az%%X bRr|5n'f5 +qz⪽k5N!(KnTCoMK"79GUmst&I%PM#:Z_%.?![&O,K.9sҭJ7-o`- + 5Qx2b~fn2]d-GJR '6Hj{I JysU)#(3LQR6@{Ij\췐J#aeO9)/Go[r|Irx? {j.y׷WӣmvЦ.8tfi~'5%WɹmhzʋXJi.&&FK=8$ TZ좸R9t o֪i a- lrxxM*IwCioYxze80lҾVxUrs5Ynx-F$=Nq}+W؎HJ>]OОǥ(v%NBo`qP.ϸAeui$W6rcSp*{zS&]LD]iX`']hV'$c* vϸjEi{+nkBaB +3Ԟݍ-KiјMjHOo, o^r*K2ryIs $jmV6K`V ;=2ZFN=Q|oBk^[ Ȃ1*3Oz޵s2ݪ@c)[+M*PF)8mظ +BUg ӭK8˚'[ZX^[mJH'##KZI}HۅHr1Kd#ҡ{]NS; 20zӑYY'W*ZS7uҋa(;T̶‹2yJۢFqsRA=&t ns<fB:urʸ[7%Ln I=)ɏ4^k%B@s̷c|]8950sdk[kegU\fync2m8֚ʵb-i݃A$6ć,[h-u cIAiB18\[ VN68cLx뚩Զ֓i6o +nO%ݕveY+(by`'wO&mnbx-difrWlk嶻tDa僽$҈Wh4(P+wJٝ4׽%Ld^L#v4]NOU]>,/R4yg9LV&l%_-BpIEDI,9&ЪUfֻ[KԒb&Fy%moũGsmvGF9U,V[!F]<ۊkjK$j 1 +vɌZJ\ֿ^`-#iM6'8֮Ikq)0;DAzVu "c»y?Qֺ8u_wn!#pL? ά'#ծal$QڹA楗Îy[=w9qKiK% i2 #,r2sؑWьp>_!y(]Q#4YN;Y5K3jBKB-o;dps㌌V4V=]y(BUWۏJt5sO)eq.sש.Z[ ˉ1>;{SMl&526ʷ<܁A_΋Ux퉊}q_ִm,fYp8==꥟ڮ LCc;NwMJT| XmUֶyĀ9kۡ~/k pÎ$CPۘnb ]_ n*c 9ͣ%8hׯmlVfCS@Ii\AmibҥL ZgE9?tB0A XnmQidܜsc֒nJSzZM,O-m4q11yawIHzԺ>Dimg4,jqfFPO=q^=.n6 +,p +[8iis-O]F3Uf~ǵ.ndM>A`=8KgaŬr,D0ēfJ3$m5x2N $qtdU f2N>Fяg'Zؽ!;h.D'b>F+aH9 sVV H99cکy*evv< Ϩs1Jq맒F2_frF0+JѧG-ep`u;q۞9voy$Af G XfH +3RPmIj.TE̝€H< +[IEFU)! (yFެri}^Xt-Wpg *MikݔFT,䓜c޲+q7W2ɑf/Z_鶾˼HB@A<)҈##vަ%\b8V ӭ%+PQ}G-rW~]7GԤ5&0!M㟡O"eog1i-<ċܤdl3ؓSf0mSI(c8QߟޝSj-'1w!QBy`Kb;k/d2$|;zl$UF#O)c랸%}dKXZqi"lKD9'#sr{uOxId u{=2M+ζBc;L=k%֣.&RDpr^fgH3YKl$"cN{՘+=>R]ZITq2;Jc4O w}Dw "۬|gqǹ5VG%K*r>0'{L,<DOz<>#r6@p*ݣI+A_j#ޒ.kMc| ?_wmێ~JGo3P(QÞ)usȱş(ǭYH"hV}.$!)Ƨ;wfLgq+R͠_R'C@Rg<ÅTxBjM)+YRH;xY0v#'nL̋vNMc6$q F-L%P\3R$KmJHp|0X +ܣo#95h}(:nAqV>+F\M +d$rMہ ғTӶtJnc󨥻H8dpw܌qSZżbV0jv>J6Ʒ0i";9ӥGw5Y#Op$Ŝ;mePz]hws^Hi-: I)I|2ײ)~Fu pK)8ٳ~uz[&&p WAO݉)֪kOa9=dfN],6fC8U";G^}kMnŒ<۸NH8sIưj[26yvӏεmtFx@ӊydIdH +8sU= RFrO'q:z 3Y +ʀyv¼rR,W*,=*C<2v1ҮŨ ^ID*&ij쯧V77^iGgBQ^S}UQ:Vҧ&KBӟZ.f!Ufrig2O0R"Wmj&3?ڡ?*d"ZXayn$ݴ=zvLm"K{!TQ`sTʊxZF**Qs~uʹZuh2nqh?Ky|u*.O>桃2LG2Tt83V2ʛ8峊6;_1e`N'_^+4H=弩 k#ӏQ劷+;y=nI&S rsSlR+kBUX4p[8ԭ4GD״+]HgB-R.ɀ z{v0ʩ"98*Ya+ +eaOzH_\,<߰awΦBXd񷎙4X D0 Ȕ}@QY%O:tVo.?{in3 3UHWR@6l8^O$ZBu$q +A t95גEFp@Z-I.{-onB}Ua'7zxu$p#+>_J]0K2FBCVcsXpUc'>R_7F&ݺ3mlSk->{:xvx { fZJYxA#jhu+۵L`@|z4J*4vK;ٯ.u!Ḓ`u=*ސE; -ؐ|a늙-=ͽa$d/zuҳN;\,H7!y:Wm{(JgƦi/ ΗM&ߛnҲkp kxmMQdǧӚޞ#[}gGdx00=`鲵-NeJrJ 91J;ݷK3-80?:F6.^jfIqbA 6BerubgY٘--.  +s#$1K,qF<(o(qTE^%}\[bH +#M踷.FJH@=*Ή ,Ks,cڡsUQu %T +ǹ'?(oB8S;&'i7w2@m LTV̗JՅH~Cr;u"m[i?mDb$=kNiGk4km%7|c5^{h hv0ǯ4sj'I-oeJ=ABIҶ6N +ʴmX#`[ F1ǭS]s ǙPx7~U>PN]J+t^-);/OSKQ!"3s HACNWt-Ll@ +s>9o{ytŢ̌#67r=kۙ &c+^"Q&i.`VQ 5~;go"Oc%C@Vi 8n=jܷqۧl-G6ה(.1>Z~nVM|hiZ̷MY #,=j}u#hMWݍ.P1㎿s7&xqw*tY6yq#z$cZSweq,qFFep +ڝSqd! ZgnnD鞝ji&:lv)g^s8?ZXRVnB)4ȑ08;zgڥ,St9vf NVth*>iv)eƌ:SW9^Z졸kp H`x`+-D2,a9SYסc1U_ P PD?.j/&-~\" {O-ϖF{Ve\<0]W/j9wR-8 ==:S;hci^ـf(\zzkD)NZex Q'Ȥ?XEnvG[д%! nW ^5 ݴbg{2#] +]\LXq+ۜj2NPMSMJ2KH ]F9U0#'};ӯu[-ȫ==jC69 AV_TUr +rFN0)=77y%=[5Fiuosm%&Q9JFѼH4Hx.:qI^9d#A :T-Ad[Tqy9rIާ}5 o-nOX.#%,b]sP/V +!,Čz֤'Hh1&’*sqz/swuk{rY נKf$8ǫ .t9f%׬L>_iv22zcgu }yYwwƋ*{ș\gv3+~QhV'DhTM9qیӒC*3ԮҮ6һ$mų <:U-"EҢn!bIJzvkݾ^\Ɍp8 Zg6y㵏Τڧ{>rr4nerwoH]Q#i'ڬSȓXgV"%^*r\Z+!f89?Ozm\]tILHT~U[f֦M+I$" ,ym̸*F; Fivvj7ҏGwRצqk?Q]J$1}ݠ`gPCSGLK[̨UilyRIj% 4 SzΛrlH3 aP3>܉Zi$Gm9CM+2jO ]9,$HQ 84gsX[$ヌZ%2aQeK!_HC-wci ^fuR٠mm8kAnB$,kb[zճV5"ҳ[ iMujH$p7~ա{ h7r_VU+IrjŔ3H$[+\eA?ZKKA]cP7mr>lzm˭W寭B?I:ULP@aݑu85rQ{x|$zTwj:]!]8?Tc +՝N_/rze토׍ʰ*y87i<;A; wfI܀71Op)Ӭ7v_lu +Qa@AE`ԯZ^\46emi.qP#3b2;c5FK `@V)*9P5n.m?So~o'_1Z( 8'ܽ[dA^jՖvo#],`" $xNS1+ޅ{)r^t!"1 FNJnSԂG..0=}.+WYd L+x>uk& IJ63Rkil<$8lcgOyꌎ3wBsjY_SZiFʹhRX.sjFAۓ1V4"kI 3(m؈B,?tt7y"~ 8g4?d}H]gz]S_if@9<{\j]Jшrnj^mogHZ]Wv?:ϏHZFil +n4ַFXY[qqV)M1CF݂ m +#RZ7w2x0vTwUU\;`u9=-V"`˻WfӡK +e2wm㠧{6J۔lʰ[#Vwl" o>p6s/nv~N0'<$ZjPZ9F%[s~MW[P\ZDl!6pqӽVxLlPf#=m_PB»Ɂ`߿֪FDf +,{{2NFRV&Hgӎ6{vեhr.s<}OWmRw[h6O߽@|ٝ;r0qB Km]'ge3`Fclv{S3QlERQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERZC@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE]ӠinH2GOƵo- 79|pVmM$erx=jeKI% o4c`zzF𲍌瘴,HNUN>H +,imM@844!>TׯS2rk9dƓ'9IE +(m7O[xYTp=1JRI]R*剓RB$+0 ֆ[T &7[P0K oVR1ߟ’Iӝ[*oe:i$"%CNqwfTNT`dOj?K$E/ &q;cY'vnW |aEfvP9qdW F@9N&l`PďVt01JjrM-/$1 ͎W1K̩}Tzqs>C줷Cj8gX<>V%@Cq?G-Ε[wȚF,r@,xsT q.rZ9_/O}1R9P1LRKZ}e̅PFyʱYI)QV0Q|Z4 &Svʺܦg)*y-jN#$FB_C8%ټ@qqͩRm'$3 89Q&.GcKigY3$wUyϊr-s_^Uw<#$qUIn$Fv+4{_ޥG{O/O7U,8nNF)bna߭>OF.k2I8KcHu, r9Y`n{S{/+\^3 qVbc(崹BVpG8}*IlgWTFk!,7~ӱJ\ުpZAܤ1)F'⠶CĥF)I$q^?Z߻P\, +|1 RܺB'wFi,Q 98"4n+xuHqB#ic橛x]H[JnpqAߜ{t1\&YI =KvI+ TrNk2Kso&,w*Ad͛|ۣK2:Y6Bt4*0 L#P7fӄu]b8#_'kU^\Wש>yjb5 8'֒;6kA %l40UO"PgV rN$PAʹUc]?IcDWAUil/d-)Vbr2Tuh`[HnV'_rF;crKҠLTs(i-92atI,I$t1z7EsKhxYf'3OATeEUA9_¬joomy˾y#HP#fp˜O6Z꼄ӮMoF|#w)=>[5Hy+[;[iLw M*1oBBGJlsZ6f8ҋ%$ޟʓYA.,VaO˓ӎ$gi2 : sTV k:ʀtX8đ|EIZL&|Pp~OjVevD,yN}=ɧON&Vd +8֛i=vI*(e@ r>VZ2S-}?Ȭϲh-yg ǰOp!Ivn*پg+ U.#u׵c4r+`x4֤Tnve-m[xU@g*Dp8<֮ymi6ۈ\VumoU"x<'^8;h)CI]$L+4QlJz'֭hHEޡ#2h9W/ZcRG#Vf㸪N4i3<Y'=x.5///v4-$[ QXI9 mγ6Z!aNz +͞OU[ܬv8^&6@%Tp _CG*%*+o,Zd0PHCAY Kk`C\G=sbL J]y$1w"_7Qvb.8uE]Ve},& {fl./w^?$:#znCW7Ϳ&]Hι0~lvr,|-HDF7U%ܗ--mg+}oZɫ6Rj8?҂Tۖ?P/eݻa^wPBm*Ĭ@.94䳼M\}9j;ViEc"j SKFp9iddsE"p+/y*Ϣ } #3F$et,*aoH-O'Nuu0LFzԞ]=4dػ\;+K~ +''f cn&ݥ-#Ȅ(!R}=+7Gm0qXd!%ٕўyֆ*-$2-|ۅO,Lex9Ӧ*e6Ym;o4I )8֖9-"HEO+< ^i6[\`2F;q^ -C-!0\Rk?g֟쮏˵/,gKciy6s,2B՘ppeDri[<)q|"[EP$X`:,IGaCPj-I=EaT[x3W7&z`F3ޮj bcwmq?dߌcEݴYYK:ȓ+yip9S!WSVR>Fb]ErAyt-ʙ=V:KsR_\u9"e,ݓ4F<*EQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@!4 QLAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPW4<(c#Z#G3r$EeERyCp2Np8"WC,e69WGpE8 #$=^/r(![b"͍9΍a:Hb,r~j܃"fPpX7QTh_YW“Kϕt9#.#PH`FsUܘH.pFzqRkG~dV! oRf=FyWi#۵dr>Iu"Oq֡,X'ޒY)urmub-Юe,o@:8in$9s4U-jb"@?5L+, u8-汕UV+`>Sd8b㞴Aިb-Eop\8=8eE/ {Q[wH"ev!\BRvJy/̂X2- ?9h~t;ZLc-qx#S/&`D0*ȃ%n9U (8դ9Tj5#AAV9ilRiV?v<r@^8=:4i! ň6@*Fr:RI*JnhP"h6.o (eϩ?Z5 >VT mr]&{ܶZ7n wj .!k[h\Q۠*3L=:j[˄r\1?Cިoq 2^G76ӵl8#J/5[.Y[H{7#BHfA&@SmmvC0h28q%JQZLԚl0M;$XnN4ik9&Y(SO^W>ȭ(2pJU>^nJg~p>PXc=x?$7.a$8 1Ocj Ekyd+yz(UF巓'/abdc1}!)B]߽`xe9>Kф[oC֯_iaX՘ O֟%IANFύ.`"LEP7Eegm59)llaSnj:7% q9!{y.$ρ(O@UsuB ,A\d\P+GFG1~Gbx8[!3/u.O";y-b?/@~~?*ed'=y{&7Z#u#,\qU 6057R@Γ9)'(s,k4yO1Au%+-Czڴ!G溑&1^>}՟c >igBu鎄bZ3Nr~VAn&RrOVdD^cR9n皅\6^\9'X\ u)C })bi3;^JD- .UG4D ퟯUz[qco`X)9# 0*;*XeFUO dc?~u^E [Cs.x[$ӤuR08?wU"]7e_v2On-k^9]TLTa{rhm(ӋNkkuSai.)xfNH#k;Z7^L.F6=z~\] +ZA8dQNuD'RK G}\MkIʲ0-2~~&mx\ +!cr}+bPᕖ&,('PGo-1.XFFzu;=̔gճm^K( EɞӠ~spfrLnrXeܹ3ogYlR5>̹OӵKO:N +??"y-ZMV(̄G;z +ĖUhX]c]w4q֦kxt@L_J@8ޫX6(Qr#<څT:_)$Lyco˦ZȒ,dmF=qi-k2n*'8%[+ ),xOZ$IBj-')!ĹF8^g=*ܐ^xt\,[e-(PBl=OZ"fE©^}=;Um-whUn$l<( +GCu=髲fմ'mQp2a\ P2}ZĜ8j/dm6m&r9{U(n$e\ӿj~Wm~EmR7-Hԩ,3VͽKDᐨ#YqmyqrQ㶍!2"Fsy漉l^(Cy(}qѦ(ɥj7e䉾ҡUYmVv3)=51r$+a83Xm=E[Q,f ]bSj줞2+r~c$<}8AKA2ұ3Htc>9U6ݻn@˧N+)fYB@8#vs h%ZCa3\S둎խj[sU'p*K [tKr^;`Nr2:(=Hxx5F :&y,,N8݇lI`!!pG_X(SNLRԞMSRӹ&k"j2EA$wszæ٩eeg0#=k1Ȋγv5_[."*#g +8jϞ{q4A=9.ddUeT: {ӛN+\ ղ>ߍ5dg?k7^[(;4䴑Vʏ(e=x'ʬ[j [#Bwh9{q "% z(ʮI;^Y׍gF0DKN:tKmyЌ>,xqQFIܰA5 y:XlZKar΋' (TBL>7/\P+nt7רy۽ւZx tL 2PF r=CqqDLC;ne wV=X~Z4;P]r0RH>*x4oRyer}zP+AUx—edZ2EJ-CY&u*ƪP{*1@ Hp 9V?宯L;1ߒ:}{V|"}n[[AcG{UmneeKDOoZp3RG WL*Tʹn>#wұ^ xnT)Qy{J>5"[w57F0 &m9.6v 2\5Ă<oFzaV veʤw2 y`xF5SEp<1[rZ[k$ԉ`@=궷_06й9*kHvcqLu,!d'2m͏8=h[9܄23,`aM!xE$I?CPK)+pyϦ̺-溍]V;`'ޫOx+q.@'8JbwJ-?E*)f 鴁PϦ5V7-ΊDđI[ivgc=;3w*53pJ`:uґ~s #{{Y#IuZ qe<)Ҵ."&}3jwqlı*4ɹUzI4#4`լd,Ay jI}Gic*epaM6{gUVd#s+(!U]OL `&oRNXJ\(GhmYM#+#*;bfn|][h9aH[;Q1t +FYhn59kAojSpf;y42V̮.mXL *kA/<,qOMwxt;\c<I2KŀQHyhDKC-TH<}o: vA1 ʝ=:Y͢@@#v@}s%yI $F0ABQMS,a 7+Ȝd%O&ޡhЋ+umdl/CaJ +Z*iښ- 8 >՚*n1#<Z[ !q )bI׵71-YʶrK3ZMI dP^Cs*-3sҲQ؅C L)Kur.Lg +ʁX'i%b[6uinְg;ݻ~@W.)Kwiu G<Ǿ{TWvFأTMM pqEJ"[!3GrfT=Tc+FZHƢ)EPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPHii aESQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEV$MP@pG_+2a302qZ )-nE$W0ŻiHc9ky x̑ Fz{}i\.1@ϭE iXa;?7#K]-Е:!CytU0: +H0]21vۥ2,e2q + K]*uQ[Xqr\8_, ^.)cI[ycLK|ۆݸwF؎դ,d2|9g&V({;N. smŅYRqUN3IEu,bU@>͟ƚ̉w0inR县ծ5G|6>8ȳȯ*vLb=TJYd:``0F6IY $p%*ȾROzX˚KkVFdWwP~V*m dfvPSjd҇ZH}Lk}%%eet#TA,`MZ"\[85/mM`xmnp*>e^~a?27"GLGtTHZڶE}[la1=8>J +IpaJw)oVqO-X f $ v0*͔k9}y8zRk!UX'nCkma#nAߕC5iw#m[mܖVY2Nrs߾}8WlTt͍˸wQ2+]Rx,,V%36ӧzۙb@h90 6kGX6s ~5+}DSA: {TNͤ4;o.'*ֲe{g0($FS{>8s`7>=j-2 k"~^\G)A*4Wo-a!Hps9#ˍ̷.pI&7@CO8RqMVC[0czT-osw~!wN1BB)m?;uҹ{g #x)V9t"),8y9i5&|UӯֳYL[.N + +T \nZZn!3h|fpzEHv3jyW9x`#3Yy4v qYF-ġ~Q:ig +Kθh B8_n{ T)ݜg<.fss#!}9玹&Eo,\l(X㎝ѬcU-!L6 ɠf?ϏCUUk bU9jйb1۶wTF֩/ Ĺ)FqƧ.XY}0lfk #Ox.pw0֫˫,Sܽ+!ucLV4˛U4_L8*zԸB\ݞ)jlvg9U4{[h`X %YyjUcRsqT%Mв*H' +d T(m$˯ZJk돲K{oFP9#qSnu`Ș0~nfTpV +q9oʬKw\e6ƫy xT2VjЏN).`̈n 5q嵽ca'8[M:͗#,3b[*>\Ұ9ʺx“IQ]-<7Pq@ˈݰmߚmf{GXul亂 e\ȧ8S䰱EK9pOUt^OKhK.f}sg׽Cp-qgP=1vir1\~4$bI8y+Vh[èYZepO\=xfX%ATXNҕl M=Ҹ0>Peql\g.r9^|Wћq{7V7,@(h8%M6x.6cO^8ZdOXik Eːź_@}kjZKPWI߻jSk3HhZ^}L]B }6`-ml-LMd*ͦ\iS;x|F=9kYmV;{$!:U>qN*3G5Ile08!+FRIPH3>Pg*T쒳yJ#S-09ߵd_R(LdtCSdѣ8OK,r$yRnܜ{TY,FF2)ij1Hv3ɩ||1 ,{hI74&Zm/,dv:$'uTOX<愈HGmE= ! o@*ď9ciRdQ\xZ)[ #C]ԡɉ0LQk|Z(Lsځquv̌ڑIﶟr;FJAZmBvl>ZlqH}K)#GQiku$K"HCcNE=V" ^n܆B r=;}s;L7 @ᓜ1PV "*BƤUXofIȑ\;>Iߧ8wc݁4,ntQ-ݠ8Gܤg8=h vVËP22<Qbłq{-%cR98=r>UvrM$ł8nS'KBIH 2*YkP"E#q +ԙ5i~gldaV9n3Y\@cF +3g q.9AE e=e'gj[{ɓP䔷sj' +Cpzr{z{ҋm%s5eFH3WIDZ,YXCf +>+QJEK8a<ŔyP>X${w5-ťq$#0m# ]ӯlZ ..i! N[}xzA}%ͪlw#iK2̞I6RX}hϐ6nNGpCx^t5%]bdHgpm>\|.iu) h4$m+0۳}}~ 741I9 έu֩)f~0sx"F[a!T{?-bF \%ג9c̷ *c +qhY[jIl[1?{'g:UtۦpH,0=hA;Ў[ /ȕ?*wY"٤@.̪lO^լݝdF{O.+ov?^=|ڒO`X問;מ5 }REcjʟ݇HI1$֥ˤFv1|Kd;Y#c/1`6Ңд}w $VtxeʊWIDP#ʮhnm{Wg'-ӈ< +V3%ru IdխFG613*ŸaH# py砩&itAl l {r~P\%*Gp}辢R )X jm4]]CZW726WBa]I y黧qYvdRZE7CzfM%$\EHc1n#R>T\3I)Xp +'ҮFu=ndna6g tX]"]y<{1w6]Z3hz|JחdD۱0j4ZۦSs6ǸX^{i;H5vʱٽ…sCI#`d%w)׉cvO9ʬY@޽n"1 FEd/{#.AUw @(=h'fFF5-&6G':gZmV1Q{fc3{t/eRխf,3zuSK>ڷȬP|#CMԤk%L`3.@s8T^]:# b݉|퓞NhӧY`Ozkkb N1䞾G3ne.G(x8zrti!3J7)9Ӛv'ئ r* mR!fI[;Clw<:F ôfyżbUe%R<@\~#hM$r!M(qԂQt驦_%O1rG$*߇Ɩb Bɧ~&+7 q&tFscssw{Kk 'pt eeXK{88qEp›wo\̱YN<^ Ƴ>VYR?wv7x:֭p:]Ǔuef$,I%AS4QO6B 3FqArֆT1XԀOsҮ6w"THrǨiwF;^x&;tͭեśϙ|;cCv +TypñK$ -)ăϭC_ZipNw%G xdj*cF3Y$9QjۢI$]J1+^(``9< +Bs$0#N&b?Cֺ eDMx[88wE9^E-\ 6nW#%q碹,˿8PzQKc+BzՉtූE eixF `I╵..km`}n=U] Avk%ڄXy">#=jocy$]$c[[5%!$88ݓv4أoI#{rSի]>KH|N,> +=z<6j^JK7*ե-(Dz"rd$sނDå;0I8N٧^A 0Z*$b93vk9.cShЫ=>2ͫGZX'}bg#>l~tXh B(((((((((((((((((((((((((((((((((((((((((((((((((((((Š( (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((&g_4$6G^SnVK|J +~B8&iM]t7W +[~4*R}ܺ4cw#Hw,}ER<~9?ҁ''&0}g~*6H18s_^(U0,1GZ(!"k'>2qΚ~o#Vo纀UAF'XAi=6Ke-2 ]3Y[fnsTbC4 g$'یvfYby`*X"3BTƪjMh[yRHbD̀aH-gHcp:R\9;>sҧX h#mR@,3'.~%]PCUf> c`xLtbT Z1@cb8hO`ӊJh$X].ޝp=l24[$(\l-⿙fla9_>;)VF8qHQ{l_-OmFɝWpELlP($zuZ A+?OU9$!ch( X_Is ݙݓ:p* B$Fc S 92GPMnII S ш%G5V$b=p23JKB]-+\My1]7g-$i0оݸY(ǘ7c귗-N)#J6t (&JL{TwQ$3lP@08?P=1VYa_cUkW,$$2Nhrj؞k+<7pi.$]! +yRKnjɻ7;XsP[`d=:fU)\U-Q]H35)"mXUݬVmTs~4m|Poرd+h9LuR>vpU"BXW8K خ ̬ۯɎK}$(5ۜG=5|;M W|g 4j+F't($i5I{dݓy8?/,PT8({FdObdSd۹sU5Ї +߯@WJ`Ld zԶ6ruQ$B~"9.]?y|Ʉk9S^iQ{S{(8;d`ӏqׇuEuDO !RzQkW*Ḵ6m^*Wk}9ӿz>͚8 =2hG2ĎZ)Yj 57VҦ%9.U`rq"{eP8a `U͐ +֟8ٸt/yao,$8;Z8U6p]\gGnV5m:DK{ rF:{ +؏SK2t2GҦIt2 Rek3K fRXO n[6e$ =E >+9<@f1 +AI#=j[Sm%EuJr~^fGqixCRQMOtqoڮȉl4\"( 9ZYZ"ם(l>VR {WAVh3KkMjx`0IltoSP%{VJ,[ e]>ߝ}"]m8>F8z,*edY50Qs4( r9wKD n\[>i2B*+)HfD\ʄ)M)/AEvʶ7󹔓ZZn-%̃w#'h|%c((Q9#T-Ի!xc.JFʮx"Rq㰶LnRۜg%ڽ$S!FF>wd* 󎼑twf6;eX|{qқb L V/.-KK V?ȀmZ^K!hvVHlH2pyPyv\|Č Uu>,jmd&0J-מ{PrL҆K;kK$` z}m,Osn@ #⵴hlg])MdTOLW;j1Q<$T{_eҞMB2I.zpqF{{o4[IRkm$8< 92DJ9鞞\>'Sm +U[]sDK1Ksǵ-r݇È2cҫ޽!@2I-OSEfXՑn8$d[gH7mas+_֤AQC34Z$sƧpPH544OpqOn#gb2B)8}jKl4Bd\(ں-iwAB lm'4y-FH1lX=xROڄH i֛s+hceinde׏G]ZOӧ ]钐3>Ƿ$K~:M7W) +eHp< ?e3FA#95Fv[Kځӻ,۵IyZ2HlbSZFbHQ)BN,nOU$A7oYmmeXTt,s֣Vud>=2nDU +ć9J;iE:θ r9!]9^tu t- 0gSOgjL'1 +Um{IdLT\Iتf +$U:M9)³8#౹9i[i-MP[* (ϯ76D`"#zȭ#(1:4lUm_בb9 W?g + @מ__MN%nFю2ơydQ Œtl.=I^KwgM)qGL&dD޽5O[}ʥcLH4<Ŏ=pB=Tmbpr)+\|6h+k'n!5f >f/no4Q }ךSFI*Zm2\b[{i|vAD>n#P$Ąn8KjqzbHUՉIlP ay|\4Eq?*zufI )*UE-݌S#(4#zGnt8*Hoay'ajK U4:shYr{G##WRC+ } Mi#2cR[UBlYH[q,zSEagLE埕uJÍ8-5?oI(Y߼1Y7WyolZVaXV٣do3 zg}?>x1!ہ`97%no,rjYĺR^ .nק/|ǒcTJ2}JXd +Au`1՛A^Ί:6NG~K˟!š +ߕw %m(6$v?ΫpN=Oies}'mVChaVXo + >qҍޝ4$JֳbmϿ4[nb 2$?.y(Vbwh?.vaҶc盇$654{xk]8p$JGO@EZ>gk_IZå%$򣪘X,h6u kz9ٻ sYz.qLZ6#[nb@7I߭UPd]K*sr*sDeŬF;:@=i"X4Γ0Lo0ܝ e=CGdӓcpbf+LEErh 0y +Bxri VC`G7{=>oNFm%nnRߴl]N)5&ia'f$`r9ʥԬ[ʶVN-׌UfUg5b"I4(L GwڇuRPqeD$zoDph\ϵ6;i#4dF98UZzsGW0=[*ݾ 78j6ky2!Y-L ֜ZVVFDYA x7jeqۈr/bN;c JbMuAZGp.2!qq +m;JQq]èycg$JTcdƑm0wUXsd<A*+Drv`^ۓȧQE3(((((((((((((((((((((((((((((((((((((((((((((((((((((40)(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((*_f%_-S[ĒɵOEQw t&>>CҫTl3t:ԓ k41Q:R)N풵żw1( mey$UwHztp$y[H%]S{\g&D'>^w`峜RԿ[Yi[i.c#S!P֧yp$*6SJm#[K?_ƖZܠt@E:dsH,_i'sdOzU@#f(1|l @4zYtԝQVUsc52(mg\EJU>朲GK֗?jO ll2#<)=%qsH*r@~vyj;mH>ygki!Y6ǂG#Vj\IR2{*2t⢟ͅ]e?To».yK*,1ی֛$巕 pr?R;1 p :tV݌|$ϠD֗tX ܂P uV]MwG 3Bh=ҦF6 reMh ct6_44U{mFN^8Smv#THdxLk('?7^yU̥ZznIddy7|bkhP<GwbUco=OʹDV@O$_! >TE'<ցe%i`F~r׎MVɓh"H郁PΙTqn9%hvW=U$3*2`;`iilO 9y5p&52y?@+>#Xi%Ю'= efצR#őg'=R[{6%Fzp>6%ڔ`J 1QH3iǶ#18{E>2`vk1%Ξ21>f9Y]kjDOG?^)/IH;Nn)7fkJpiu ,ᶴUcm'UmORkpB0+H=6άIwaiH.cQ>n[Ku9>QlƙWy]!5X nf/=sX:hv1axj4Wr3(&F5\f;ǿCWl -+v~8ASAAcq#fmE~|}OYM &3d t9֓h1nZ)n pUGA G4r.,CBH <秧zXa|p0_򭅴ҷBA+ܶp=:c3(e(&;̍v9"uFv67F:|<2afK"x呛 +r1zn3^"d,Qt;?/OZς݈yrjH+=ڭ{94dh`+)9wMYk~m=#:N99,Os՞Hh (.;dcLses݌R}r 8 yY= 2H@A0GQZAaKJc gܘ ̆a'2w5hMg~֌ƒ c*1ԃUK< +mOJoChiF +Dw3㷸&xwH,G!@:-9K*=jմ g(FI#9OSgGcqij$2zߏ֕p$Dy>NK._'2*==H٧Ye\c9{99klʤ$M*1RVً9) 1V O_(!uj˾_Ti%\1'·&S\usdsOqFJ.廬1ʈC<jv.̇zo̓y85/Dvz 1!j=3Ҫ.Vdw&; +x ǹSh-pZq4#PՆG^xaTm^XAEwՉ=\]sӓ޴ֆrn~V,%ź+MLܓϦ1Ds[4S4&b +f${j)h,\B-P;qQ3)C8Z$K0[0P@rJlv#3ޚwNkQ^ Z-9Vy^rs#ԡt_-eb@XP^dի.gomt +z NNrg&O͑&kwy & ZW +Tb4D_lLr:u;T֚Tsi2?W02c_i^+nH*N:zu_%T,hdOPN\,bnm}cHwou % `:whei%{lCRs(s8- tDDn@<Ma ]Ou=gf#<5b;H"+V,\ܩ (p{ZYb&h-8I*8q{~Ei'imPO75n/\Ylvpj>E)*mM'ǵFuΐib䯨㧽 M y/fkxc{m T:;y#M +0B?RXwB̈zcWS1[46w|҄R<{%i eyj;@=>dId$UQpoRY*Z]2Hz4'sn1\2Iq Q=?QjmmfLӈW1ᔰcKK˝"l!&,crZm̒G r`(*N6wJG *.ƀ ^Wo<9l~un?=5ГtAv۟jsȬa0'ߑ՜ҵsu2IJB0 ;{`Vk`4%#G^$vpG6Dk0QwOURR]^.5޽6PCMsp89%s +F2ҪM{gۻu|go^Ci"%\JĨ`IP@LܠfCjkMcRz`[-?vPw+_[y9L +##'2A+: >kG1myw2d{P8TNZF[! rd)>Ywl{Ү;9eٗ{⫉`0nXE q&8vE+ToD׶7EtK#:zu9Q_ZHΐ"Qr̋ܒyU{o.^ytchsm̒LB`88A _v pL3>XXtYfi2(n;5SูlHo ⡿a2}\+npSnxjv_CA܄bp s\yqƥUghI7ucJ/܊nVeFl`gle(H$w^V761zGGFEdu%YX`;ֶ2m?n"I ~? WKy^XT!`@9־%cJB٨(r@On^qlGPILsߥ+T{y2W')$Q|m(:w1z5PYʼ`c:uZN;_-QAQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQERZC@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE$-xێFGZh wɘ[.0>S1۞*O>2Evt#cګV6\ +>]p;*eP^]ӷ5'G3Jb6a`v] st*l-eM뎔Zt"F晒m@ 1Bp{R Hp^҇0@\d%axX?ΑO`kyPzqL+d:sPFz +m;YY7$î0 _" r3+Oz[xv0+֍*K]Պfy8Z[wțU4 UWqO>Md&;994hBjPjR-I#y(d?{^6HZTw.YN=k(Lmܿz楶#"ЫF JIօHr!0ٻlHo&2:q QK"#MBi7DS8-4%NirnM|̑}tsQ<,FڌxCT(A2'CrnlsBjԌn޿5J[LN2; K*Y\d6iwܴnw&3mNqM$)Jk^jybhϓ!I?pEDBWc +if͜<ۅj&ZټK2}*%:h(Oe߱uV>vwU#+}7e8 rjm:Y-8$XZIac'?ZihD9N.!yKmʋgPǯ^)f} +MdLH7g:;=RCN$9}JcN&b:, aNP|ϹZNm/qޢxwYc8n)!{nH/#^*{2{KXgrpH +Uϵ"ՊW\Iw!mҫ'55ţ[`IV@͌qYZ)'FK6TOp<7~$Pr߿q^K3DJ͍0\3"CEb qw:S]`4WeVk6W&OxF`V{;ncjkXgB=*Vv +Y@MrJśioti`2X+ImR3#d*Ns\P%ΙWSp}84:}YK;w57oBqn2y*<ϯJ&«P FӯM4 \xsƖ4&_,18ɛe渒QU?)XF͂s6jFfF̪M$t %HL2D?VxE<&-?R6W$ܠ"6 u|@Ǡ5KhEV@hrP}4mZO69cir>\g=AM^rPOJ@\me"vclҤ-5Tt䜞x=cQԑa6F83j.m)V9BqN{XўHfaO̸$zs5Z'`r9 =G$[-3?#΍Fz3emZI^{BsFW$/'={+弻/+}Lj +yP/29f{eiy0O4$VIֶ#[-E$WTddxޜkl;\*  odۿsCvf<ѾN.-VK8Km32e7۷b߯[;CbaTjgxUaN2yA*si;zZ崶YіYqQ{zǖtD+&Ó랕m!,|n'5|YvooI.a<-.gmރ?ZWIt(IiܧaMu"7 +1S]IwK{WD~9G|SmZ;KYbmG 8PnI呕Uv?{' 3oPBjT+x@+(~֗Mҏ;ۆ$9g!=\y2LorS=[qs_K+}F}OTd Hְ\Zi>1#x~U>-[G)YSlY::WNM3$ݴ10p{Ժ4] w:09(Vjj=|wZ2lun?*eoQ6 Â?Vi\֫@Jlf9^+)t4caU Q5FזrHVmmgʆp?(򤳘FAQ{}NOլ-`sY8YGh#Oή] -\ طsۯSeu.nV(b"Kݹ|ȯfc33ĽZIi)=_zHm)w*Lr"h=YƷhBχBfOwV-,.Kfz!5 ԇ +6ߑBM-BRIr[m(tr@C(F 7ʸmۣ<A/o33|)uLXA#a8q^_tXj[e +27{I6[Wfg9q*ng{gsn`d-eok dm^@l[Ki&x,鬒dH㍶31l&7q@W12iB9=.\o8ʂ0?ZCm)%e?+Rq֩o}:ha.>zw5>lɨm,Up }N摳N߂+B~ҏ=JX5Eqz@!'L/pi[\cnm +99Rx~{wiGrx9➂庞M;N+pG$}6dֶ?2`;c#j{.%P^{@2HӁҨEZTh_