From d2d65beedee273a72c0f2b8dce99432e983ada7d Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 14 Nov 2017 17:31:16 +0800 Subject: [PATCH 001/270] Get_Amazon_tag.py Amazon'keywords in the reviews we could pick up and input in the excel. --- Get_Amazon_tag.py | 106 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 Get_Amazon_tag.py diff --git a/Get_Amazon_tag.py b/Get_Amazon_tag.py new file mode 100644 index 0000000..625e1ec --- /dev/null +++ b/Get_Amazon_tag.py @@ -0,0 +1,106 @@ +# -*- conding:UTF-8 -*- +#Author:Toryun +#Date:17/11/11 +#Function:Get the keywords in Read reviews that mention +#API: filter_tag=re.findall(r'\(containing \"(.*?)\"\)',r1) +# reviews_num=re.findall(r'
(.*?) reviews',r1) +import requests,re,xlrd,os,datetime,time +from xlutils.copy import copy +def requests_url(url): + '''获取网页内容''' + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +}#头部 + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#代理IP + r=requests.get(url,headers=headers,proxies=proxies) + return r.content#返回网页内容 +def main(): + '''打开工作簿,选择sheet匹配标签获得个数,存储到新的工作簿中''' + start=datetime.datetime.now()#开始时间 + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿路径 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_path_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_path_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_path_num-1] + if file_path_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + data=xlrd.open_workbook(file_path)#打开路径中文件 + sheets=data.sheets()#获取所有sheet (类型list) + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print "{0}'s sheets:\n".format(file_path),p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n"))#选择工作簿中的sheet + if sheet_index in range(1,len(sheets)+1):#判断输入数是否超出范围 + sheet_num=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e:#如果输入数非法,则默认为sheet1 + print str(e) + sheet_num=1 + table=data.sheet_by_index(sheet_num-1) + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0} 's rows,cols are {1},{2}".format(z[sheet_num],rows,cols) + rows_1st=table.row_values(0)#读取第一行 + URL_index=rows_1st.index('URL')#读取URL所在位置 + URL=table.col_values(URL_index,1,rows-1)#读取该列从第2行到最后一行 + data1=copy(data)#xlutils.copy 类里的copy函数 + table1=data1.get_sheet(sheet_num-1) + for i in xrange(rows): + Amazon_='https://www.amazon.com' + try: + r=requests_url(URL[i]) + print i,URL[i] + filter_tag_url=re.findall(r'data-reviews-state-param class=\"a-link-normal\" href=\"(.*?)">\(containing \"(.*?)\"\)',r1) + reviews_num=re.findall(r'
(.*?) reviews',r1) + + table1.write(i+1,cols+j,str(filter_tag)+':'+str(reviews_num))#写入表格 + else: + print "None" + except Exception,e: + print str(e) + filepath='d:/Documents/Downloads/Amaozn_tag.xls' + data1.save(filepath)#保存到新的工作簿 + end=datetime.datetime.now() + s=end-start + print '存储到新的工作簿{0}\n总用时:{1} s'.format(filepath,s) +if __name__ =='__main__': + main() + + + From 0198a65021820b2b82fa71592db322620d416e57 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 18 Nov 2017 17:52:31 +0800 Subject: [PATCH 002/270] =?UTF-8?q?=E6=A0=87=E5=BF=97=E7=9D=80=E4=BD=BF?= =?UTF-8?q?=E7=94=A8POST=E7=9A=84HTTP=E8=AF=B7=E6=B1=82=E5=88=9D=E6=AD=A5?= =?UTF-8?q?=E6=8E=8C=E6=8F=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 通过对异步传输的学习,更加明晰了http的post请求,下一步是得到亚马逊库存的研究相信会很快post到 --- Get_AmazonProducts_num.py | 139 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Get_AmazonProducts_num.py diff --git a/Get_AmazonProducts_num.py b/Get_AmazonProducts_num.py new file mode 100644 index 0000000..d5935cd --- /dev/null +++ b/Get_AmazonProducts_num.py @@ -0,0 +1,139 @@ +#Python version:2.7.13 +#Author:Toryun +#Date:2017-11-18 +#Function:Get a number products of sellers +'''获取卖家上架产品数量''' +import requests,re,datetime,os,xlrd +from xlutils.copy import copy +def post_products(sellerID): + '''获取卖家上架产品数和页数''' + post_url='https://www.amazon.com/sp/ajax/products' + headers={"Host": + "www.amazon.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0", + "Accept": + "application/json, text/javascript, */*; q=0.01", + "Accept-Language": + "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", + "Accept-Encoding": + "gzip, deflate, br", + "Referer": + "https://www.amazon.com/sp?_encoding=UTF8&asin=&isAmazonFulfilled=1&isCBA=&marketplaceID=ATVPDKIKX0DER&orderID=&seller={0}&tab=&vasStoreID=".format(sellerID),#匹配相应sellerID + "Content-Type": + "application/x-www-form-urlencoded", + "Content-Length": + "313", + "X-Requested-With": + "XMLHttpRequest",#异步传输方式 + "Cookie": + "x-wl-uid=1dnnurSt1bfiNTOwNHfLsu0IQMCkCME8HNKE7nQa/V9+Gn9aUz4xNY52zyADhI3uc5rHcRUYm/KA=; session-id-time=2082787201l; session-id=147-6188368-5590659; ubid-main=133-0860109-3446425; session-token=9Vkx3Rqg2Cyc6BtpXvyhmmeBNEN9ukAAN7WPivZz9U87xbRdp4yG36+KbZZXG6AYdqIjjXjwBSUknP0gESudqpwW0GUj69jdYrUZAbePjDk0G3Xx3FT7uqPCXIpEoYsEJAjEgedklWlpWQAn3BQgxKy0XicKNDVnT3uDVuiE/sXySDreYrlmM6EP0hZZdITGDlkI/MlKi7iW2Nz47Ufo30c1TcuDQtzJA3g602ofFtB2LCfA37oCqBh4mUad+apz; s_nr=1503652206665-New; s_vnum=1935652206666%26vn%3D1; s_dslv=1503652206666; lc-main=en_US; skin=noskin", + "Connection": + "keep-alive" + } + data={"marketplaceID":"ATVPDKIKX0DER", + "seller":"{0}".format(sellerID), + "productSearchRequestData":{"marketplace":"ATVPDKIKX0DER","seller":"{0}".format(sellerID),"url":"/sp/ajax/products","pageSize":12,"searchKeyword":"","extraRestrictions":{},"pageNumber":1}}#请求主体 + r=requests.post(post_url,data=data,headers=headers) + return r.content +def requests_url(url): + '''获取listing网页内容(主要用于匹配sellerID)''' + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +}#火狐浏览器头部 + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + r=requests.get(url,headers=headers,proxies=proxies) + return r.content +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path +def main(): + '''打开工作簿,选择sheet匹配products数,存储到新的工作簿中''' + start=datetime.datetime.now()#开始时间 + file_path=File_path_choice()#返回所选文件路径 + data=xlrd.open_workbook(file_path)#打开路径中文件 + sheets=data.sheets()#获取所有sheet (类型list) + print "{0}'s sheets:\n".format(file_path) + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n"))#选择工作簿中的sheet + if sheet_index in range(1,len(sheets)+1):#判断输入数是否超出范围 + sheet_num=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e:#如果输入数非法,则默认为sheet1 + print str(e) + sheet_num=1 + table=data.sheet_by_index(sheet_num-1) + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0} 's rows,cols are {1},{2}".format(z[sheet_num],rows,cols) + rows_1st=table.row_values(0)#读取第一行 + URL_index=rows_1st.index('URL')#读取URL所在位置 + FBA_index=rows_1st.index('FBA')#返回运输方式的所在列数 + URL=table.col_values(URL_index,1,rows)#读取该列从第2行到最后一行 + FBA=table.col_values(FBA_index,1,rows)# 读取导入FBA数组 + data1=copy(data)#xlutils.copy 类里的copy函数 + table1=data1.get_sheet(sheet_num-1) + for i in xrange(rows-1): + try: + if FBA[i+1]=='FBA' or 'MCH': #判断是否为FBA或是自配送运输方式(因为只有该运输方式和第三方运输可以查询店铺产品数量 + r=requests_url(URL[i+1]) + print i+1,URL[i+1] + sellerID=re.findall(r'\/gp\/help\/seller\/at-a-glance\.html\/ref=dp_merchant_link\?ie=UTF8&seller=(.*?)&isAmazonFulfilled=1',r) #返回第一个匹配的卖家店铺sellerID + print sellerID[0] + if sellerID: + post=post_products(sellerID[0])#传入参数发出post请求返回json + products_num=re.findall(r'\"productsTotalCount\":(\d+)',post)#匹配上架商品数量 + print products_num + table1.write(i+1,cols,products_num) + table1.write(i+1,cols+1,sellerID[0]) + else: + print 'None' + if FBA[i+1]=='AMZ':#如果是亚马逊官方卖家跳过 + i+=1 + except Exception,e: + print str(e) + filepath='d:/Documents/Downloads/best_copy.xls' + data1.save(filepath) #保存到新的工作簿 + end=datetime.datetime.now() + t=end-start + print '存储到新的工作簿: {0}\n总用时:{1} s'.format(filepath,t) +if __name__=='__main__': + main() From 9bd12baabb47e78c197bdfca64b26bb8422e623b Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 19 Nov 2017 12:35:56 +0800 Subject: [PATCH 003/270] =?UTF-8?q?xlsxweiter=E5=BA=93=E7=9A=84=E5=AD=A6?= =?UTF-8?q?=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 保存图片到Excel,初步学习xlsxwriter库 --- get_img.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/get_img.py b/get_img.py index 2c8896a..58d7f33 100644 --- a/get_img.py +++ b/get_img.py @@ -1,8 +1,8 @@ #-*- coding:UTF-8 -*- -# ======================== -#=== Python version is 2.7.13 == -#== Author: Toryun == -#== Time:2017-08- 28 == +#======================== +#Python version is 2.7.13 +#Author: Toryun +#Time:2017-08- 28 #======================== import re,requests,xlrd,datetime,os,xlsxwriter def get_image_url_and_filename(text): From 551345f56112b92d26e20b1c019fd42f939ca92c Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 19 Nov 2017 12:42:02 +0800 Subject: [PATCH 004/270] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02d1673..53380ed 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # Python_repository My python code_repository in the learning ,which have Amazon'get_image,price,feedback,and so on. -You can learn a third lib of python which are `requests`,`xlrd`,`xlwt`,`xlutils`,and python module like re,os,datetime.Regular Expression is also good in many program +You can learn a third lib of python which are `requests`,`xlrd`,`xlwt`,`xlxswriter`,`xlutils`,and python module like re,os,datetime.Regular Expression is also good in many program From 0c07547d2d8f40b6dd5083d250968373c6d252a6 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Nov 2017 14:32:55 +0800 Subject: [PATCH 005/270] Update get_ranks.py --- get_ranks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/get_ranks.py b/get_ranks.py index c418f1c..3fe8b2e 100644 --- a/get_ranks.py +++ b/get_ranks.py @@ -47,7 +47,7 @@ def main(): print "%s 's cols,rows is"%(z[t],cols,rows)#打印表名中的行列数 row_1st=table.row_values(0)#读取第一行 asin_index=row_1st.index('Asin')#返回Asin列的所在列数 - URL=table.col_values(asin_index,1,rows-1)#读取Asin列第二行到最后一行 + URL=table.col_values(asin_index,1,rows)#读取Asin列第二行到最后一行 data1=copy(data)#复制工作簿 table1=data1.get_sheet(t-1) for i in range(rows-1): From 767fc89336f516743d932ff23bf748996d0dd5bb Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Nov 2017 14:33:29 +0800 Subject: [PATCH 006/270] Update get_dimensions.py --- get_dimensions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/get_dimensions.py b/get_dimensions.py index f4a6056..a343e74 100644 --- a/get_dimensions.py +++ b/get_dimensions.py @@ -48,7 +48,7 @@ def main(): print cols,rows row_1st=table.row_values(0)#读取第一行 asin_index=row_1st.index('Asin')#返回Asin列的所在列数 - URL=table.col_values(asin_index,1,rows-1)#读取Asin列第二行到最后一行 + URL=table.col_values(asin_index,1,rows)#读取Asin列第二行到最后一行 data1=copy(data)#复制工作簿 table1=data1.get_sheet(t-1) for i in range(rows-1): From c6bcbaf8ad81ef82e41ebc3061b97d708cf38a2c Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Nov 2017 14:34:07 +0800 Subject: [PATCH 007/270] Update Get_Amazon_tag.py --- Get_Amazon_tag.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Get_Amazon_tag.py b/Get_Amazon_tag.py index 625e1ec..2bf210e 100644 --- a/Get_Amazon_tag.py +++ b/Get_Amazon_tag.py @@ -71,10 +71,10 @@ def main(): print "{0} 's rows,cols are {1},{2}".format(z[sheet_num],rows,cols) rows_1st=table.row_values(0)#读取第一行 URL_index=rows_1st.index('URL')#读取URL所在位置 - URL=table.col_values(URL_index,1,rows-1)#读取该列从第2行到最后一行 + URL=table.col_values(URL_index,1,rows)#读取该列从第2行到最后一行 data1=copy(data)#xlutils.copy 类里的copy函数 table1=data1.get_sheet(sheet_num-1) - for i in xrange(rows): + for i in xrange(rows-1): Amazon_='https://www.amazon.com' try: r=requests_url(URL[i]) From 3e9a4737405ecc7c86e30cc91b52f2522d0f94c3 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Nov 2017 14:35:31 +0800 Subject: [PATCH 008/270] Update get_feedbacknum.py --- get_feedbacknum.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/get_feedbacknum.py b/get_feedbacknum.py index b99daa0..13734e8 100644 --- a/get_feedbacknum.py +++ b/get_feedbacknum.py @@ -1,8 +1,8 @@ # -*- coding:UTF-8 -*- -# ======================== -#=== Python version is 2.7.13 == -#== Author: Toryun == -#== Time:2017-08- 28 == +#======================== +#Python version is 2.7.13 +#Author: Toryun +#Time:2017-08- 28 #======================== import re,requests,xlrd,xlwt,datetime,time,os from xlutils.copy import copy From 84238b909bed9a5af83c73ea431fee394f3e6f06 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 13 Mar 2018 15:58:53 +0800 Subject: [PATCH 009/270] add google_translate js API --- HandleJs.py | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 HandleJs.py diff --git a/HandleJs.py b/HandleJs.py new file mode 100644 index 0000000..89a389a --- /dev/null +++ b/HandleJs.py @@ -0,0 +1,48 @@ +import execjs + +class Py4Js(): + + def __init__(self): + self.ctx = execjs.compile(""" + function TL(a) { + var k = ""; + var b = 406644; + var b1 = 3293161072; + + var jd = "."; + var $b = "+-a^+6"; + var Zb = "+-3^+b+-f"; + + for (var e = [], f = 0, g = 0; g < a.length; g++) { + var m = a.charCodeAt(g); + 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), + e[f++] = m >> 18 | 240, + e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, + e[f++] = m >> 6 & 63 | 128), + e[f++] = m & 63 | 128) + } + a = b; + for (f = 0; f < e.length; f++) a += e[f], + a = RL(a, $b); + a = RL(a, Zb); + a ^= b1 || 0; + 0 > a && (a = (a & 2147483647) + 2147483648); + a %= 1E6; + return a.toString() + jd + (a ^ b) + }; + + function RL(a, b) { + var t = "a"; + var Yb = "+"; + for (var c = 0; c < b.length - 2; c += 3) { + var d = b.charAt(c + 2), + d = d >= t ? d.charCodeAt(0) - 87 : Number(d), + d = b.charAt(c + 1) == Yb ? a >>> d: a << d; + a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d + } + return a + } + """) + + def getTk(self,text): + return self.ctx.call("TL",text) From 99cef288638828f7b1eb82f14e591f86522a1397 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 13 Mar 2018 16:03:36 +0800 Subject: [PATCH 010/270] Update and rename HandleJs.py to Google_translate_js_API.py --- HandleJs.py => Google_translate_js_API.py | 5 +++++ 1 file changed, 5 insertions(+) rename HandleJs.py => Google_translate_js_API.py (90%) diff --git a/HandleJs.py b/Google_translate_js_API.py similarity index 90% rename from HandleJs.py rename to Google_translate_js_API.py index 89a389a..39e3cbe 100644 --- a/HandleJs.py +++ b/Google_translate_js_API.py @@ -1,3 +1,8 @@ +#-*-coding:UTF-8-*- +#Python version:2.7.13 +#System:window7 +#Time:2018-3-13 +#Function:python execjs call js snippet import execjs class Py4Js(): From 2ca64f5e445a00c9482a79f03daee441f0477c8a Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 14 Mar 2018 17:24:16 +0800 Subject: [PATCH 011/270] Update Google_translate_js_API.py --- Google_translate_js_API.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/Google_translate_js_API.py b/Google_translate_js_API.py index 39e3cbe..3c0fed6 100644 --- a/Google_translate_js_API.py +++ b/Google_translate_js_API.py @@ -4,9 +4,11 @@ #Time:2018-3-13 #Function:python execjs call js snippet import execjs - +import requests +import urllib +import re class Py4Js(): - + '''Google_translate js API''' def __init__(self): self.ctx = execjs.compile(""" function TL(a) { @@ -50,4 +52,26 @@ def __init__(self): """) def getTk(self,text): - return self.ctx.call("TL",text) + return self.ctx.call("TL",text) +def zh_or_en(sl): + sl=sl.decode('unicode_escape') + __zh=re.compile(u'[\u4e00-\u9fa5]+') + f=__zh.search(sl) + print sl + if f:#如果是中文,则用中译英URL + q=urllib.quote(sl) + url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=3&" + else: + q=sl + url="https://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=3&tsel=6&kc=1&" + return q,url +js=Py4Js() +sl=raw_input('plz input your translate word:\n')#输入要查询的中文 +q,url=zh_or_en(sl) +print q +tk=js.getTk(q) +url=url+"tk={0}&q={1}".format(tk,q) +r=requests.get(url) +print r + + From 6a3de2b54f7ff61b8430a8365ec5a6fd46b72d1c Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 15 Mar 2018 17:30:45 +0800 Subject: [PATCH 012/270] Update Google_translate_js_API.py --- Google_translate_js_API.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Google_translate_js_API.py b/Google_translate_js_API.py index 3c0fed6..b8662ec 100644 --- a/Google_translate_js_API.py +++ b/Google_translate_js_API.py @@ -8,7 +8,7 @@ import urllib import re class Py4Js(): - '''Google_translate js API''' + def __init__(self): self.ctx = execjs.compile(""" function TL(a) { @@ -54,12 +54,13 @@ def __init__(self): def getTk(self,text): return self.ctx.call("TL",text) def zh_or_en(sl): - sl=sl.decode('unicode_escape') + s=sl.decode('GB2312')#The rules for translating a Unicode string into a sequence of bytes are called an encoding. + __zh=re.compile(u'[\u4e00-\u9fa5]+') - f=__zh.search(sl) - print sl + f=__zh.search(s) if f:#如果是中文,则用中译英URL q=urllib.quote(sl) + url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=3&" else: q=sl @@ -72,6 +73,7 @@ def zh_or_en(sl): tk=js.getTk(q) url=url+"tk={0}&q={1}".format(tk,q) r=requests.get(url) -print r + +print r.json() From d27a4b7b724b76656a65b82678a0beb43e3ca357 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 15 Mar 2018 17:33:12 +0800 Subject: [PATCH 013/270] Update Google_translate_js_API.py --- Google_translate_js_API.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Google_translate_js_API.py b/Google_translate_js_API.py index b8662ec..8aeb582 100644 --- a/Google_translate_js_API.py +++ b/Google_translate_js_API.py @@ -60,20 +60,23 @@ def zh_or_en(sl): f=__zh.search(s) if f:#如果是中文,则用中译英URL q=urllib.quote(sl) - + t=1 url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=3&" else: q=sl + t=2 url="https://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=3&tsel=6&kc=1&" - return q,url + return q,url,t js=Py4Js() sl=raw_input('plz input your translate word:\n')#输入要查询的中文 -q,url=zh_or_en(sl) +q,url,t=zh_or_en(sl) print q tk=js.getTk(q) url=url+"tk={0}&q={1}".format(tk,q) r=requests.get(url) - -print r.json() +if t=1: + print str(r.json()).decode('unicode_escape') +if t=2: + print r.json() From feb24bfa7e4941978d4a45a5834617a8209a9428 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 17 Mar 2018 15:48:10 +0800 Subject: [PATCH 014/270] Update Google_translate_js_API.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复各种编码bug,找到GoogletranslateAPI源码,进一步会调用Excel接口(xlwt,xlxswriter)形成批量翻译 --- Google_translate_js_API.py | 106 +++++++++++++++++++++++++++++++------ 1 file changed, 90 insertions(+), 16 deletions(-) diff --git a/Google_translate_js_API.py b/Google_translate_js_API.py index 8aeb582..3edfe46 100644 --- a/Google_translate_js_API.py +++ b/Google_translate_js_API.py @@ -2,7 +2,63 @@ #Python version:2.7.13 #System:window7 #Time:2018-3-13 -#Function:python execjs call js snippet +#Function:python execjs call js snippet translate +#源码:From https://translate.google.cn/translate/releases/twsfe_w_20180312_RC01/r/js/desktop_module_main.js +#--------------------------------------------------------------------------- +#var sq = function (a) { +#return function () { +# return a +#} +#}, +#tq = function (a, b) { +#for (var c = 0; c < b.length - 2; c += 3) { +# var d = b.charAt(c + 2); +# d = 'a' <= d ? d.charCodeAt(0) - 87 : Number(d); +# d = '+' == b.charAt(c + 1) ? a >>> d : a << d; +# a = '+' == b.charAt(c) ? a + d & 4294967295 : a ^ d +#} +#return a +#}, +#uq = null, +#vq = function (a) { +#if (null !== uq) var b = uq; +# else { +# b = sq(String.fromCharCode(84));字符:T +# var c = sq(String.fromCharCode(75));字符:K +# b = [ +# b(), +# b() +# ]; +# b[1] = c(); +# b = (uq = window[b.join(c())] || '') || '' +#} +#var d = sq(String.fromCharCode(116));字符:t +#c = sq(String.fromCharCode(107));字符:k +#d = [ +# d(), +# d() +#]; +#d[1] = c(); +#c = '&' + d.join('') + +#'='; +#d = b.split('.'); +#b = Number(d[0]) || 0; +#for (var e = [ +#], f = 0, g = 0; g < a.length; g++) { +# var l = a.charCodeAt(g); +# 128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = l >> 18 | 240, e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224, e[f++] = l >> 6 & 63 | 128), e[f++] = l & 63 | 128) +#} +#a = b; +#for (f = 0; f < e.length; f++) +#a += e[f], +#a = tq(a, '+-a^+6'); +#a = tq(a, '+-3^+b+-f'); +#a ^= Number(d[1]) || 0; +#0 > a && (a = (a & 2147483647) + 2147483648); +#a %= 1000000; +#return c + (a.toString() + '.' + (a ^ b)) +#}; +#--------------------------------------------------------------------------- import execjs import requests import urllib @@ -54,29 +110,47 @@ def __init__(self): def getTk(self,text): return self.ctx.call("TL",text) def zh_or_en(sl): - s=sl.decode('GB2312')#The rules for translating a Unicode string into a sequence of bytes are called an encoding. - + s=sl.decode('GB2312')#The rules for translating a Unicode string into a sequence of bytes are called an encoding. __zh=re.compile(u'[\u4e00-\u9fa5]+') f=__zh.search(s) if f:#如果是中文,则用中译英URL - q=urllib.quote(sl) t=1 - url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=3&" + q=urllib.quote(s.encode('UTF-8')) + url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=1&" else: - q=sl t=2 + q=sl url="https://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=3&tsel=6&kc=1&" - return q,url,t + return q,url,t,s js=Py4Js() sl=raw_input('plz input your translate word:\n')#输入要查询的中文 -q,url,t=zh_or_en(sl) -print q -tk=js.getTk(q) +q,url,t,s=zh_or_en(sl) +if t==1: + q=s + tk=js.getTk(q) +if t==2: + tk=js.getTk(q) +print tk url=url+"tk={0}&q={1}".format(tk,q) -r=requests.get(url) -if t=1: - print str(r.json()).decode('unicode_escape') -if t=2: - print r.json() - +_headers={ + "Host": + "translate.google.cn", + "Referer": + "https://translate.google.cn/", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", + "Accept": + "*/*", + "Accept-Language": + "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", + "Accept-Encoding": + "gzip, deflate", + "Connection": + "keep-alive"} +proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'} +r=requests.get(url,headers=_headers,proxies=proxies) +print r.raise_for_status(),r.content + + + From 260135c805bc2a0eb5a1bf38a71753f8a92bf83c Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 28 Mar 2018 19:00:34 +0800 Subject: [PATCH 015/270] updata --- Get_Amazon_products_num.py | 137 ++++++++++++++++++ Get_Amazon_tag.py | 216 ++++++++++++++-------------- Get_description.py | 92 ++++++++++++ Google_tranJS.py | 156 ++++++++++++++++++++ PyAWS_Store_Reviews.py | 109 ++++++++++++++ Rename.py | 69 +++++---- csv_to_xls.py | 80 +++++++++++ get_dimensions.py | 67 ++++++--- get_feedbacknum.py | 85 ++++++----- get_img.py | 104 ++++++++++---- get_ranks.py | 36 ++--- keywords_find.py | 11 +- "price\346\255\243\345\210\231.txt" | 10 ++ xt.py | 73 ++++++++++ 14 files changed, 1004 insertions(+), 241 deletions(-) create mode 100644 Get_Amazon_products_num.py create mode 100644 Get_description.py create mode 100644 Google_tranJS.py create mode 100644 PyAWS_Store_Reviews.py create mode 100644 csv_to_xls.py create mode 100644 "price\346\255\243\345\210\231.txt" create mode 100644 xt.py diff --git a/Get_Amazon_products_num.py b/Get_Amazon_products_num.py new file mode 100644 index 0000000..3a777ca --- /dev/null +++ b/Get_Amazon_products_num.py @@ -0,0 +1,137 @@ +#Python version:2.7.13 +#Author:Toryun +#Date:2017-11-18 +#Function:Get a number products of sellers +'''获取卖家上架产品数和页数''' +import requests,re,datetime,os,xlrd +from xlutils.copy import copy +def post_products(sellerID): + '''获取卖家上架产品数和页数''' + post_url='https://www.amazon.com/sp/ajax/products' + headers={"Host": + "www.amazon.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0", + "Accept": + "application/json, text/javascript, */*; q=0.01", + "Accept-Language": + "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", + "Accept-Encoding": + "gzip, deflate, br", + "Referer": + "https://www.amazon.com/sp?_encoding=UTF8&asin=&isAmazonFulfilled=1&isCBA=&marketplaceID=ATVPDKIKX0DER&orderID=&seller={0}&tab=&vasStoreID=".format(sellerID), + "Content-Type": + "application/x-www-form-urlencoded", + "Content-Length": + "313", + "X-Requested-With": + "XMLHttpRequest", + "Cookie": + "x-wl-uid=1dnnurSt1bfiNTOwNHfLsu0IQMCkCME8HNKE7nQa/V9+Gn9aUz4xNY52zyADhI3uc5rHcRUYm/KA=; session-id-time=2082787201l; session-id=147-6188368-5590659; ubid-main=133-0860109-3446425; session-token=9Vkx3Rqg2Cyc6BtpXvyhmmeBNEN9ukAAN7WPivZz9U87xbRdp4yG36+KbZZXG6AYdqIjjXjwBSUknP0gESudqpwW0GUj69jdYrUZAbePjDk0G3Xx3FT7uqPCXIpEoYsEJAjEgedklWlpWQAn3BQgxKy0XicKNDVnT3uDVuiE/sXySDreYrlmM6EP0hZZdITGDlkI/MlKi7iW2Nz47Ufo30c1TcuDQtzJA3g602ofFtB2LCfA37oCqBh4mUad+apz; s_nr=1503652206665-New; s_vnum=1935652206666%26vn%3D1; s_dslv=1503652206666; lc-main=en_US; skin=noskin", + "Connection": + "keep-alive" + } + data={"marketplaceID":"ATVPDKIKX0DER", + "seller":"{0}".format(sellerID), + "productSearchRequestData":{"marketplace":"ATVPDKIKX0DER","seller":"{0}".format(sellerID),"url":"/sp/ajax/products","pageSize":12,"searchKeyword":"","extraRestrictions":{},"pageNumber":1}} + r=requests.post(post_url,data=data,headers=headers) + return r.content +def requests_url(url): + '''获取listing网页内容''' + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +}#火狐浏览器头部 + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + r=requests.get(url,headers=headers,proxies=proxies) + return r.content +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Plz input a number of serial number (Default workbook is {0}):\n Or Enter a number more than the last option ,then you could input a url of file\n".format('stainless steel toilet brush holder.xlsx')))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path +def main(): + '''打开工作簿,选择sheet匹配products数,存储到新的工作簿中''' + start=datetime.datetime.now()#开始时间 + file_path=File_path_choice()#返回所选文件路径 + data=xlrd.open_workbook(file_path)#打开路径中文件 + sheets=data.sheets()#获取所有sheet (类型list) + print "{0}'s sheets:\n".format(file_path) + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n"))#选择工作簿中的sheet + if sheet_index in range(1,len(sheets)+1):#判断输入数是否超出范围 + sheet_num=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e:#如果输入数非法,则默认为sheet1 + print str(e) + sheet_num=1 + table=data.sheet_by_index(sheet_num-1) + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0} 's rows,cols are {1},{2}".format(z[sheet_num],rows,cols) + rows_1st=table.row_values(0)#读取第一行 + URL_index=rows_1st.index('URL')#读取URL所在位置 + FBA_index=rows_1st.index('FBA')#返回运输方式的所在列数 + URL=table.col_values(URL_index,1,rows)#读取该列从第2行到最后一行 + FBA=table.col_values(FBA_index,1,rows)# 读取导入FBA数组 + data1=copy(data)#xlutils.copy 类里的copy函数 + table1=data1.get_sheet(sheet_num-1) + for i in xrange(rows-1): + try: + if FBA[i+1]=='FBA': #判断是否为FBA运输方式(因为只有该运输方式和第三方运输可以查店铺月反馈数 + r=requests_url(URL[i+1]) + print i+1,URL[i+1] + sellerID=re.findall(r'\/gp\/help\/seller\/at-a-glance\.html\/ref=dp_merchant_link\?ie=UTF8&seller=(.*?)&isAmazonFulfilled=1',r) #返回第一个匹配的卖家店铺sellerID + print sellerID[0] + if sellerID: + post=post_products(sellerID[0]) + products_num=re.findall(r'\"productsTotalCount\":(\d+)',post) + print products_num + table1.write(i+1,cols,products_num) + table1.write(i+1,cols+1,sellerID[0]) + else: + print 'None' + except Exception,e:# + print str(e) + filepath='d:/Documents/Downloads/best_copy.xls' + data1.save(filepath) #保存到新的工作簿 + end=datetime.datetime.now() + t=end-start + print '存储到新的工作簿 {0}\n总用时:{1} s'.format(filepath,t) +if __name__=='__main__': + main() diff --git a/Get_Amazon_tag.py b/Get_Amazon_tag.py index 2bf210e..269f334 100644 --- a/Get_Amazon_tag.py +++ b/Get_Amazon_tag.py @@ -1,106 +1,110 @@ -# -*- conding:UTF-8 -*- -#Author:Toryun -#Date:17/11/11 -#Function:Get the keywords in Read reviews that mention -#API: filter_tag=re.findall(r'\(containing \"(.*?)\"\)',r1) -# reviews_num=re.findall(r'
(.*?) reviews',r1) -import requests,re,xlrd,os,datetime,time -from xlutils.copy import copy -def requests_url(url): - '''获取网页内容''' - headers={"Host": -"www.amazon.com", -"User-Agent": -"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0", -"Accept": -"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", -"Accept-Language": -"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", -"Accept-Encoding": -"gzip, deflate, br", -"Connection": -"keep-alive", -"Cache-Control":"max-age=0", -"Upgrade-Insecure-Requests":"1" -}#头部 - proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#代理IP - r=requests.get(url,headers=headers,proxies=proxies) - return r.content#返回网页内容 -def main(): - '''打开工作簿,选择sheet匹配标签获得个数,存储到新的工作簿中''' - start=datetime.datetime.now()#开始时间 - t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿路径 - try: - file_path='d:/documents/downloads' - print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) - file_names=os.listdir(file_path)#列出下载文件夹中的文件名 - for i in range(len(file_names)): - print i+1,file_names[i] - file_path_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 - if file_path_num in range(1,len(file_names)+1): - file_path=file_path+'/'+file_names[file_path_num-1] - if file_path_num>=len(file_names)+1: - file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) - f=os.path.exists(file_path) - while f==False: - file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) - f=os.path.exists(file_path) - except Exception,e: - print str(e) - file_path=t - data=xlrd.open_workbook(file_path)#打开路径中文件 - sheets=data.sheets()#获取所有sheet (类型list) - z={} - p=0 - for sheet in sheets: - p+=1 - z[p]=sheet.name - print "{0}'s sheets:\n".format(file_path),p,z[p] - try: - sheet_index=int(raw_input("plz input index in the serial number(default 1):\n"))#选择工作簿中的sheet - if sheet_index in range(1,len(sheets)+1):#判断输入数是否超出范围 - sheet_num=sheet_index - else: - print 'The digital is wrong,plz input a correct number' - except Exception,e:#如果输入数非法,则默认为sheet1 - print str(e) - sheet_num=1 - table=data.sheet_by_index(sheet_num-1) - rows=table.nrows#计算表中列数和行数 - cols=table.ncols - print "{0} 's rows,cols are {1},{2}".format(z[sheet_num],rows,cols) - rows_1st=table.row_values(0)#读取第一行 - URL_index=rows_1st.index('URL')#读取URL所在位置 - URL=table.col_values(URL_index,1,rows)#读取该列从第2行到最后一行 - data1=copy(data)#xlutils.copy 类里的copy函数 - table1=data1.get_sheet(sheet_num-1) - for i in xrange(rows-1): - Amazon_='https://www.amazon.com' - try: - r=requests_url(URL[i]) - print i,URL[i] - filter_tag_url=re.findall(r'data-reviews-state-param class=\"a-link-normal\" href=\"(.*?)">\(containing \"(.*?)\"\)',r1) - reviews_num=re.findall(r'
(.*?) reviews',r1) - - table1.write(i+1,cols+j,str(filter_tag)+':'+str(reviews_num))#写入表格 - else: - print "None" - except Exception,e: - print str(e) - filepath='d:/Documents/Downloads/Amaozn_tag.xls' - data1.save(filepath)#保存到新的工作簿 - end=datetime.datetime.now() - s=end-start - print '存储到新的工作簿{0}\n总用时:{1} s'.format(filepath,s) -if __name__ =='__main__': - main() - - - +# -*- conding:UTF-8 -*- +#Author:Toryun +#Python version:2.7.13 +#Date:17/11/11 +#Function:Get the keywords in Read reviews that mention +import requests,re,xlrd,os,datetime,time +from xlutils.copy import copy +def requests_url(url): + '''获取网页内容''' + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +}#火狐浏览器头部 + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + r=requests.get(url,headers=headers,proxies=proxies) + return r.content +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path +def main(): + '''打开工作簿,选择sheet匹配标签获得个数,存储到新的工作簿中''' + start=datetime.datetime.now()#开始时间 + file_path=File_path_choice()#返回所选文件路径 + data=xlrd.open_workbook(file_path)#打开路径中文件 + sheets=data.sheets()#获取所有sheet (类型list) + print "{0}'s sheets:\n".format(file_path) + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n"))#选择工作簿中的sheet + if sheet_index in range(1,len(sheets)+1):#判断输入数是否超出范围 + sheet_num=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e:#如果输入数非法,则默认为sheet1 + print str(e) + sheet_num=1 + table=data.sheet_by_index(sheet_num-1) + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0} 's rows,cols are {1},{2}".format(z[sheet_num],rows,cols) + rows_1st=table.row_values(0)#读取第一行 + URL_index=rows_1st.index('URL')#读取URL所在位置 + URL=table.col_values(URL_index,1,rows-1)#读取该列从第2行到最后一行 + data1=copy(data)#xlutils.copy 类里的copy函数 + table1=data1.get_sheet(sheet_num-1) + for i in xrange(rows): + Amazon_='https://www.amazon.com' + try: + r=requests_url(URL[i]) + print i,URL[i] + filter_tag_url=re.findall(r'data-reviews-state-param class=\"a-link-normal\" href=\"(.*?)">\(containing \"(.*?)\"\)',r1) + reviews_num=re.findall(r'
(.*?) reviews',r1) + + table1.write(i+1,cols+j,str(filter_tag)+':'+str(reviews_num))#写入表格 + else: + print "None" + except Exception,e: + print str(e) + filepath='d:/Documents/Downloads/Amaozn_tag.xls' + data1.save(filepath)#保存到新的工作簿 + end=datetime.datetime.now() + s=end-start + print '存储到新的工作簿{0}\n总用时:{1} s'.format(filepath,s) +if __name__ =='__main__': + main() + + + diff --git a/Get_description.py b/Get_description.py new file mode 100644 index 0000000..47b6145 --- /dev/null +++ b/Get_description.py @@ -0,0 +1,92 @@ +# -*- coding:UTF-8 -*- +#Python version is 2.7.13 +#Author: Toryun +#Time:2017-08- 28 +#Fuction:Get description of product in the list +'''API:
  • \s+(.*?)<\/span><\/li> + + +
    .*?

    (.*?)<\/p>''' +import re,requests,xlrd,xlwt,datetime,time,os +from xlutils.copy import copy +'''从表中获取URL查询Amazon商家店铺30天内的feedback''' +def main(): + start=datetime.datetime.now() + try: + filename=raw_input("plz input a filename like c:\\eakd.xlsx (defult filename is d:/Documents/Downloads/Search Term Food Storage Container.xls) :\n") + t=os.path.exists(filename) + while t==False: + filename=raw_input("The path is wrong,plz input a correct filename like c:\\eakd.xlsx:\n") + t=os.path.exists(filename) + if filename=="\\n": + filename='d:/Documents/Downloads/Search Term Food Storage Container.xls' + except Exception,e: + print str(e) + + data=xlrd.open_workbook(filename) # 打开指定工作薄 + sheets=data.sheets()#获取工作薄所有列表 + print type(sheets) + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] #返回所有列表名 + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) + if sheet_index in range(1,len(sheets)+1): + t=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t=1 + table=data.sheet_by_index(t-1) # 打开列表 + nrows=table.nrows # 行数 + cols=table.ncols # 列数 + print '列数:%d, 行数:%d'%(cols,nrows) + row_1st=table.row_values(0)#读取第一行 + URL_index=row_1st.index('URL')#返回URL列的所在列数 + URL=table.col_values(URL_index) # 读取导入URL数组 + l=len(URL) + headers={'Host': +"www.amazon.com", +'User-Agent': +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", +'Accept': +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +'Accept-Language': +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +'Accept-Encoding': +"gzip, deflate, br", +'Connection': +"keep-alive", +'Upgrade-Insecure-Requests': +"1"} + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费IP地址*http://www.xicidaili.com* + data2=copy(data) # 复制工作簿 + table2=data2.get_sheet(t-1) + for i in range(nrows): + try: + r=requests.get(URL[i+1],headers=headers,proxies=proxies) + print i+1,URL[i+1] + list_description=re.findall(r'

  • \s+(.*?)\s+<\/span><\/li>',r.content) #返回匹配的商品的list详情 + productDescription=re.findall(r'\s+

    (.*)\s+<\/p>',r.content)#返回匹配的商品产品详情 + if list_description: + print list_description + table2.write(i+1,cols,str(list_description) + if productDescription: + print productDescription + table2.write(i+1,cols+1,str(productDescription)) + else: + print 'None' + + except Exception,e: + print str(e) + filepath='d:/Documents/Downloads/best_copy1.xls' + data2.save(filepath) #保存到新的工作簿 + end=datetime.datetime.now() + t=end-start + print '存储到新的工作簿 {0}\n总用时:{1} s'.format(filepath,t) +if __name__=='__main__': + main() diff --git a/Google_tranJS.py b/Google_tranJS.py new file mode 100644 index 0000000..597f57f --- /dev/null +++ b/Google_tranJS.py @@ -0,0 +1,156 @@ +#-*-coding:UTF-8-*- +#Python version:2.7.13 +#System:window7 +#Time:2018-3-13 +#Function:python execjs call js snippet +#源码:From https://translate.google.cn/translate/releases/twsfe_w_20180312_RC01/r/js/desktop_module_main.js +#--------------------------------------------------------------------------- +#var sq = function (a) { +#return function () { +# return a +#} +#}, +#tq = function (a, b) { +#for (var c = 0; c < b.length - 2; c += 3) { +# var d = b.charAt(c + 2); +# d = 'a' <= d ? d.charCodeAt(0) - 87 : Number(d); +# d = '+' == b.charAt(c + 1) ? a >>> d : a << d; +# a = '+' == b.charAt(c) ? a + d & 4294967295 : a ^ d +#} +#return a +#}, +#uq = null, +#vq = function (a) { +#if (null !== uq) var b = uq; +# else { +# b = sq(String.fromCharCode(84));字符:T +# var c = sq(String.fromCharCode(75));字符:K +# b = [ +# b(), +# b() +# ]; +# b[1] = c(); +# b = (uq = window[b.join(c())] || '') || '' +#} +#var d = sq(String.fromCharCode(116));字符:t +#c = sq(String.fromCharCode(107));字符:k +#d = [ +# d(), +# d() +#]; +#d[1] = c(); +#c = '&' + d.join('') + +#'='; +#d = b.split('.'); +#b = Number(d[0]) || 0; +#for (var e = [ +#], f = 0, g = 0; g < a.length; g++) { +# var l = a.charCodeAt(g); +# 128 > l ? e[f++] = l : (2048 > l ? e[f++] = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = l >> 18 | 240, e[f++] = l >> 12 & 63 | 128) : e[f++] = l >> 12 | 224, e[f++] = l >> 6 & 63 | 128), e[f++] = l & 63 | 128) +#} +#a = b; +#for (f = 0; f < e.length; f++) +#a += e[f], +#a = tq(a, '+-a^+6'); +#a = tq(a, '+-3^+b+-f'); +#a ^= Number(d[1]) || 0; +#0 > a && (a = (a & 2147483647) + 2147483648); +#a %= 1000000; +#return c + (a.toString() + '.' + (a ^ b)) +#}; +#--------------------------------------------------------------------------- +import execjs +import requests +import urllib +import re +class Py4Js(): + + def __init__(self): + self.ctx = execjs.compile(""" + function TL(a) { + var k = ""; + var b = 406644; + var b1 = 3293161072; + + var jd = "."; + var $b = "+-a^+6"; + var Zb = "+-3^+b+-f"; + + for (var e = [], f = 0, g = 0; g < a.length; g++) { + var m = a.charCodeAt(g); + 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), + e[f++] = m >> 18 | 240, + e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, + e[f++] = m >> 6 & 63 | 128), + e[f++] = m & 63 | 128) + } + a = b; + for (f = 0; f < e.length; f++) a += e[f], + a = RL(a, $b); + a = RL(a, Zb); + a ^= b1 || 0; + 0 > a && (a = (a & 2147483647) + 2147483648); + a %= 1E6; + return a.toString() + jd + (a ^ b) + }; + + function RL(a, b) { + var t = "a"; + var Yb = "+"; + for (var c = 0; c < b.length - 2; c += 3) { + var d = b.charAt(c + 2), + d = d >= t ? d.charCodeAt(0) - 87 : Number(d), + d = b.charAt(c + 1) == Yb ? a >>> d: a << d; + a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d + } + return a + } + """) + + def getTk(self,text): + return self.ctx.call("TL",text) +def zh_or_en(sl): + s=sl.decode('GB2312')#The rules for translating a Unicode string into a sequence of bytes are called an encoding. + __zh=re.compile(u'[\u4e00-\u9fa5]+') + f=__zh.search(s) + if f:#如果是中文,则用中译英URL + t=1 + q=urllib.quote(s.encode('UTF-8')) + url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=1&" + else: + t=2 + q=sl + url="https://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=3&tsel=6&kc=1&" + return q,url,t,s +js=Py4Js() +sl=raw_input('plz input your translate word:\n')#输入要查询的中文 +q,url,t,s=zh_or_en(sl) +if t==1: + q=s + tk=js.getTk(q) +if t==2: + tk=js.getTk(q) +print tk +url=url+"tk={0}&q={1}".format(tk,q) +_headers={ + "Host": + "translate.google.cn", + "Referer": + "https://translate.google.cn/", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", + "Accept": + "*/*", + "Accept-Language": + "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", + "Accept-Encoding": + "gzip, deflate", + "Connection": + "keep-alive"} +proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'} +r=requests.get(url,headers=_headers,proxies=proxies) +print r.raise_for_status(),r.content + + + + diff --git a/PyAWS_Store_Reviews.py b/PyAWS_Store_Reviews.py new file mode 100644 index 0000000..7d67c3d --- /dev/null +++ b/PyAWS_Store_Reviews.py @@ -0,0 +1,109 @@ +# -*- coding:UTF-8 -*- +# ===================== +#==Python version is 2.7.13 +#== Author: Toryun +#== Time:2017-08- 28 +#====================== +import re,requests,xlrd,datetime,xlwt,os,time +from xlutils.copy import copy +# 输入Asin,get网页返回内容和网址 +def requests_url(Asin): + url='https://www.amazon.com/dp/'+Asin + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +} + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + r=requests.get(url,headers=headers,proxies=proxies) + return r.content,url + +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path + +def main(): + start=datetime.datetime.now() # 计算所用时间 + file_path=File_path_choice() + data=xlrd.open_workbook(file_path)#打开工作簿 + sheets=data.sheets() + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) + if sheet_index in range(1,len(sheets)+1): + t=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t=1 + + table=data.sheet_by_index(t-1)# 打开sheet + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0}'s cols,rows is {1},{2}".format(z[t],cols,rows)#打印该sheet中的列行数 + row_1st=table.row_values(0)#读取第一行 + asin_index=row_1st.index('Asin')#返回Asin列的所在列数 + URL=table.col_values(asin_index,1,rows-1)#读取Asin列第二行到最后一行 + data1=copy(data)#复制工作簿 + table1=data1.get_sheet(t-1) + date=str(start.month)+'/'+str(start.day) + table1.write(0,cols,date) + for i in range(rows-1): + try: + r,url=requests_url(URL[i]) + time.sleep(3) + print i,url + reviews=re.findall(r'(.*?) customer reviews',r) + if reviews: + print reviews[0] + table1.write(i+1,cols,reviews[0]) + else: + print 'reviews is None' + except Exception,e: + print str(e) + u='c:\\first_Choice_copy.xls' + data1.save(u) #保存复制表格 + end=datetime.datetime.now() + t=end-start#总用时 + print 'It save in {0}.\nTotal time: {1} s.'.format(u,t) + +if __name__== '__main__': + main() + + + diff --git a/Rename.py b/Rename.py index 587046e..bbf9fbb 100644 --- a/Rename.py +++ b/Rename.py @@ -1,31 +1,38 @@ -# -*- coding:utf8 -*- - -import os - -class BatchRename(): - ''' - 批量重命名文件夹中的图片文件 - - ''' - def __init__(self): - self.path = 'd:\\jpg' - - def rename(self): - filelist = os.listdir(self.path) - total_num = len(filelist) - i = 0 - for item in filelist: - if item.endswith('.jpg'): - src = os.path.join(os.path.abspath(self.path), item) - dst = os.path.join(os.path.abspath(self.path), str(i) + '.jpg') - try: - os.rename(src, dst) - print 'converting %s to %s ...' % (src, dst) - i = i + 1 - except: - continue - print 'total %d to rename & converted %d jpgs' % (total_num, i) - -if __name__ == '__main__': - demo = BatchRename() - demo.rename() +#-*- coding:UTF-8 -*- +# ======================== +#=== Python version is 2.7.13 +#== Author: Toryun +#== Time:2017-08- 28 +#======================== +import re,xlrd,datetime,os,xlsxwriter +def main(): + '''把文件中下载的图片写入新的Excel表中''' + start=datetime.datetime.now() + fn='d:/Documents/Downloads/Bestsellers in Touch On Kitchen Sink Faucets.xlsx' + fp='c:\\image_xls.xls' + workbook1=xlsxwriter.Workbook(fp) + sheet1=workbook1.add_worksheet() + data=xlrd.open_workbook(fn) # 打开工作薄 + sheets=data.sheets() + table=data.sheet_by_index(0) # 读取指定sheet + cols=table.ncols + rows=table.nrows + print "{0}'s rows ,cols are {1},{2}".format(sheets[0],rows,cols) + first_sheet=table.row_values(0) + url_index=first_sheet.index('URL')#返回第一行URL的列数 + asin_index=first_sheet.index('Asin')#返回第一行asin的列数 + URL=table.col_values(url_index) # 读取指定列(该列含有URL) + asin=table.col_values(asin_index) + for i in range(rows-1): + try: + filename=asin[i+1] + sheet1.write(i,0,filename) + sheet1.insert_image(i,1,"d:jpg/"+filename+".jpg",{'x_scale':0.2,'y_scale':0.2})#把图片按长宽原来比例0.2的插入Excel中 + except Exception,e: + print str(e) + print '已经存入到新的工作簿{0}\n总用时:{1} s'.format(fp,t) + workbook1.close() + end=datetime.datetime.now() + t=end-start +if __name__=='__main__': + main() diff --git a/csv_to_xls.py b/csv_to_xls.py new file mode 100644 index 0000000..c435372 --- /dev/null +++ b/csv_to_xls.py @@ -0,0 +1,80 @@ +# -*- coding: UTF-8 -*- +# ======================== +#=== Python version is 2.7.13 +#== Operator: window7 +#== Author: Toryun +#== Time:2018-3-26 +#======================== +# 调用csvAPI,合并多个CSV文件写入Excel +import csv +import os +import re +import xlwt +import datetime +def workbook_create(): + '''Create sheet in workbook by xlwt创建表格''' + workbook = xlwt.Workbook(encoding = 'utf-8') + table1= workbook.add_sheet("data",cell_overwrite_ok=True)#取名data,可重写单元格 + table2= workbook.add_sheet("data1",cell_overwrite_ok=False) + style = xlwt.XFStyle()#设置样式 + font = xlwt.Font()#设置字体 + font.name = 'SimSun' # 指定“宋体” + style.font = font#把字体传递给样式 + alignment=xlwt.Alignment()#设置对齐 + alignment.horz=xlwt.Alignment.HORZ_CENTER#单元格字符水平居中 + # 格式: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED + alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 + #格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED + style.alignment=alignment#添加至样式 + return table1,table2,workbook + +def main(): + file_path="C:\\Users\\Administrator\\Desktop\\1"#工作路径 + file_save='C:\\csv_1st.xls'#保存路径 + d=int(raw_input('Plz input a datetime of day\n')) + m=int(raw_input('Plz input a datetime of month\n')) + T=True + while T: + if m not in range(1,13): + print 'the month is incorrect,plz input again\n' + m=int(raw_input('Plz input a datetime of month\n')) + else: + T=False + + t1=datetime.datetime.now() + table1,table2,workbook=workbook_create() + + file_list=os.listdir(file_path)#Get filename with extension name列出文件 + f=[]#Get old_filename获取旧文件名 + n=[] + t=0#row行数 + l=0#parameter迭代参数 + for i in range(len(file_list)): + for oldname in file_list: + os.chdir(file_path)#编译时防止出现Python找不到工作目录错误 + f.append(oldname) + newname=oldname.split(' ')[-1] + if os.path.exists(file_path+os.sep+newname): + pass + else: + os.rename(oldname,newname) + n.append(newname) + print n[i] + new_url=file_path+os.sep+'('+str(i+1)+')'+'.csv' + f_in=open(new_url, 'rb') + text=csv.reader(f_in,dialect='excel') + for line in text: + + #通过双重循环获取单个单元信息 + r=1 + for x in line: + table1.write(l,0,'2018/{0}/{1}'.format(m,str(i+d))) + table1.write(l,r,x) + table2.write(l,r,x) + r+=1 + l=l+1 + t2=datetime.datetime.now() + print 'The workbook is save in {0}\nThe time is {1}'.format(file_save,t2-t1) + workbook.save(file_save) +if __name__=='__main__': + main() diff --git a/get_dimensions.py b/get_dimensions.py index a343e74..aac9d57 100644 --- a/get_dimensions.py +++ b/get_dimensions.py @@ -1,9 +1,9 @@ # -*- conding:UTF-8 -*- -import re,requests,xlrd,datetime,xlwt +import re,requests,xlrd,datetime,xlwt,os,time from xlutils.copy import copy # 输入Asin,get网页返回内容和网址 -def requests_url(url): - url='https://www.amazon.com/dp/'+url +def requests_url(Asin): + url='https://www.amazon.com/dp/'+Asin headers={"Host": "www.amazon.com", "User-Agent": @@ -19,12 +19,37 @@ def requests_url(url): "Cache-Control":"max-age=0", "Upgrade-Insecure-Requests":"1" } - proxies={'HTTP': 'HTTP://183.144.214.132:3128', 'HTTPS': 'HTTPS://219.149.46.151:3129'} - r=requests.get(url) + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + r=requests.get(url,headers=headers,proxies=proxies) return r.content,url + +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path + def main(): start=datetime.datetime.now() # 计算所用时间 - data=xlrd.open_workbook('D:\\Documents\\Downloads\Food_Bins&Canisters_adjust_cell_phone.xls')#打开工作簿 + file_path=File_path_choice() + data=xlrd.open_workbook(file_path)#打开工作簿 sheets=data.sheets() z={} p=0 @@ -34,7 +59,7 @@ def main(): print p,z[p] try: sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) - if sheet_index in range(1,len(sheets)): + if sheet_index in range(1,len(sheets)+1): t=sheet_index else: print 'The digital is wrong,plz input a correct number' @@ -45,28 +70,38 @@ def main(): table=data.sheet_by_index(t-1)# 打开sheet rows=table.nrows#计算表中列数和行数 cols=table.ncols - print cols,rows + print "{0}'s cols,rows is {1},{2}".format(z[t],cols,rows)#打印该sheet中的列行数 row_1st=table.row_values(0)#读取第一行 asin_index=row_1st.index('Asin')#返回Asin列的所在列数 - URL=table.col_values(asin_index,1,rows)#读取Asin列第二行到最后一行 + URL=table.col_values(asin_index,1,rows-1)#读取Asin列第二行到最后一行 data1=copy(data)#复制工作簿 table1=data1.get_sheet(t-1) for i in range(rows-1): try: r,url=requests_url(URL[i]) + time.sleep(3) print i,url - dimensions=re.findall(r'\s+(.*?)\sinches',r) - if dimensions: - print dimensions[0] + dimensions1=re.findall(r'\s+(.*?)\sinches',r) + dimensions2=re.findall('Product Dimensions:\s+<\/b>\s+(.*?)\s+inches',r) + price=re.findall(r'class="a-size-medium a-color-price">\$(.*?)<\/span>',r) + if dimensions1: + print dimensions1[0] + print price[0] + table1.write(i+1,cols,dimensions1[0]) + elif dimensions2: + print dimensions2[0] + print price[0] + table1.write(i+1,cols,dimensions2[0]) else: - print 'dimensions is None' - table1.write(i+1,cols-1,dimensions[0]) + print 'dimensions is None' + table1.write(i+1,cols+1,price[0]) except Exception,e: print str(e) - data1.save('c:\\first_Choice_copy.xls') #保存复制表格 + u='c:\\first_Choice_copy.xls' + data1.save(u) #保存复制表格 end=datetime.datetime.now() t=end-start#总用时 - print 'Total time: %s s.'%(t) + print 'It save in {0}.\nTotal time: {1} s.'format(u,t) if __name__== '__main__': main() diff --git a/get_feedbacknum.py b/get_feedbacknum.py index 13734e8..268aae9 100644 --- a/get_feedbacknum.py +++ b/get_feedbacknum.py @@ -1,23 +1,37 @@ # -*- coding:UTF-8 -*- -#======================== -#Python version is 2.7.13 -#Author: Toryun -#Time:2017-08- 28 -#======================== -import re,requests,xlrd,xlwt,datetime,time,os -from xlutils.copy import copy -def main(): - start=datetime.datetime.now() +# ===================== +#==Python version is 2.7.13 +#== Author: Toryun +#== Time:2017-08- 28 +#====================== +import re,requests,xlrd,datetime,time,os +from xlutils.copy import copy +'''从表中获取URL查询Amazon商家店铺30天内的feedback''' +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 try: - filename=raw_input("plz input a filename like c:\\eakd.xlsx (defult filename is d:/Documents/Downloads/Search Term Food Storage Container.xls) :\n") - t=os.path.exists(filename) - while t==False: - filename=raw_input("The path is wrong,plz input a correct filename like c:\\eakd.xlsx:\n") - t=os.path.exists(filename) - if filename=="\\n": - filename='d:/Documents/Downloads/Search Term Food Storage Container.xls' + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) except Exception,e: print str(e) + file_path=t + return file_path +def main(): + start=datetime.datetime.now() + filename=File_path_choice() data=xlrd.open_workbook(filename) # 打开指定工作薄 sheets=data.sheets()#获取工作薄所有列表 @@ -29,7 +43,7 @@ def main(): print p,z[p] #返回所有列表名 try: sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) - if sheet_index in range(1,len(sheets)): + if sheet_index in range(1,len(sheets)+1): t=sheet_index else: print 'The digital is wrong,plz input a correct number' @@ -46,7 +60,6 @@ def main(): FBA=table.col_values(FBA_index)# 读取导入FBA数组 URL=table.col_values(URL_index) # 读取导入URL数组 l=len(URL) - counts_arry=[] headers={'Host': "www.amazon.com", 'User-Agent': @@ -61,12 +74,13 @@ def main(): "keep-alive", 'Upgrade-Insecure-Requests': "1"} + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP data2=copy(data) # 复制工作簿 table2=data2.get_sheet(t-1) - for i in range(nrows-2): + for i in range(nrows-1): try: if FBA[i+1]=='FBA': #判断是否为FBA运输方式(因为只有该运输方式和第三方运输可以查店铺月反馈数 - r=requests.get(URL[i+1]) + r=requests.get(URL[i+1],headers=headers,proxies=proxies) print i+1,URL[i+1] sellerID=re.findall(r'\/gp\/help\/seller\/at-a-glance\.html\/ref=dp_merchant_link\?ie=UTF8&seller=(.*?)&isAmazonFulfilled=1',r.content) #返回第一个匹配的卖家店铺sellerID print sellerID[0] @@ -77,18 +91,11 @@ def main(): print '匹配失败' else: print counts - table2.write(i+1,cols-1,counts[0])# 进行写入操作 - if sellerID[0]==u'': - return None - print '匹配店铺失败' - if sellerID==None: - print '该店铺无sellerID' - if FBA[i+1]=='AMZ': - i+=1 + table2.write(i+1,cols,counts[0])# 进行写入操作 if FBA[i+1]=='MCH': - r=requests.get(URL[i+1]) + r=requests.get(URL[i+1],headers=headers,proxies=proxies) print i+1,URL[i+1] - sellerID=re.findall(r'\/gp\/help\/seller\/at-a-glance\.html\/ref=dp_merchant_link\?ie=UTF8&seller=(.*?)\'>',r.content) #返回第一个匹配的卖家店铺sellerID + sellerID=re.findall(r'\/gp\/help\/seller\/at-a-glance\.html\?ie=UTF8&seller=(.*?)&isAmazonFulfilled=1',r.content) #返回第一个匹配的卖家店铺sellerID print sellerID[0] if sellerID: q=requests.get('https://www.amazon.com/sp?_encoding=UTF8&asin=&isAmazonFulfilled=1&isCBA=&marketplaceID=ATVPDKIKX0DER&orderID=&seller='+sellerID[0]+'&tab=&vasStoreID=') @@ -97,14 +104,22 @@ def main(): print '匹配失败' else: print counts - table2.write(i+1,cols-1,counts[0])# 进行写入操作 + table2.write(i+1,cols,counts[0])# 进行写入操作 + if sellerID[0]==u'': + return None + print '匹配店铺失败' + if sellerID==None: + print '该店铺无sellerID' + if FBA[i+1]=='AMZ': + i+=1 + except Exception,e: - print str(e) - print len(counts_arry) - data2.save('d:/Documents/Downloads/best_copy.xls') #保存到新的工作簿 + print str(e) + filepath='d:/Documents/Downloads/best_copy.xls' + data2.save(filepath) #保存到新的工作簿 end=datetime.datetime.now() t=end-start - print '总用时:%s s'%(t) + print '存储到新的工作簿 {0}\n总用时:{1} s'.format(filepath,t) if __name__=='__main__': main() diff --git a/get_img.py b/get_img.py index 58d7f33..cc30574 100644 --- a/get_img.py +++ b/get_img.py @@ -1,10 +1,32 @@ #-*- coding:UTF-8 -*- -#======================== -#Python version is 2.7.13 -#Author: Toryun -#Time:2017-08- 28 +# ======================== +#=== Python version is 2.7.13 +#== Author: Toryun +#== Time:2017-08- 28 #======================== import re,requests,xlrd,datetime,os,xlsxwriter +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path def get_image_url_and_filename(text): '''匹配图片地址,返回地址和命名''' url=re.findall(r'id=\"landingImage\" data-a-dynamic-image=\"{"(.*?)\":',text) @@ -17,48 +39,68 @@ def save_url_image_to_file(url,filename): f.write(r.content) f.close() def main(): - start=datetime.datetime.now() - fn='d:/Documents/Downloads/Storefront.xlsx' + start=datetime.datetime.now() + fn=File_path_choice() fp='c:\\image_xls.xls' workbook1=xlsxwriter.Workbook(fp) sheet1=workbook1.add_worksheet() data=xlrd.open_workbook(fn) # 打开工作薄 - table=data.sheet_by_index(0) # 读取指定sheet + sheets=data.sheets() + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) + if sheet_index in range(1,len(sheets)+1): + t=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t=1 + table=data.sheet_by_index(t-1) # 读取指定sheet cols=table.ncols rows=table.nrows + print "{0}'s rows ,cols are {1},{2}".format(z[t],rows,cols) first_sheet=table.row_values(0) url_index=first_sheet.index('URL')#返回第一行URL的列数 asin_index=first_sheet.index('Asin')#返回第一行asin的列数 URL=table.col_values(url_index) # 读取指定列(该列含有URL) asin=table.col_values(asin_index) - l=len(URL) - print l for i in range(rows-1): - u=URL[i+1] - print i,u - img_headers={ - "Host": -"www.amazon.com", -"User-Agent": -"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", -"Accept": -"*/*", -"Accept-Language": -"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", -"Accept-Encoding": -"gzip, deflate", -"Connection": -"keep-alive"} - r=requests.get(u,headers=img_headers) # 获取listing - url=get_image_url_and_filename(r.content) # 获取网页内容中的图片地址和命名 - filename=asin[i+1] - save_url_image_to_file(url,filename) # 保存到文件夹去 - sheet1.write(i,0,filename) - sheet1.insert_image(i,1,"d:jpg/"+filename+".jpg",{'x_scale':0.2,'y_scale':0.2}) + try: + u=URL[i+1] + print i,u + img_headers={ + "Host": + "www.amazon.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", + "Accept": + "*/*", + "Accept-Language": + "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", + "Accept-Encoding": + "gzip, deflate", + "Connection": + "keep-alive"} + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费IP地址*http://www.xicidaili.com* + r=requests.get(u,headers=img_headers,proxies=proxies) # 获取listing + url=get_image_url_and_filename(r.content) # 获取网页内容中的图片地址和命名 + filename=asin[i+1] + save_url_image_to_file(url,filename) # 保存到文件夹去 + sheet1.write(i,0,filename) + sheet1.insert_image(i,1,"d:jpg/"+filename+".jpg",{'x_scale':0.2,'y_scale':0.2})#把图片按长宽原来比例0.2的插入Excel中 + except Exception,e: + print str(e) + workbook1.close() end=datetime.datetime.now() t=end-start - print '总共用时:{0}s'.format(t) + print '已将照片存入Excel {0}中\n总共用时:{1}s'.format(fp,t) if __name__=='__main__': main() diff --git a/get_ranks.py b/get_ranks.py index 3fe8b2e..164d278 100644 --- a/get_ranks.py +++ b/get_ranks.py @@ -2,8 +2,9 @@ import re,requests,xlrd,datetime,xlwt,time from xlutils.copy import copy # 输入Asin,get网页返回内容和网址 -def requests_url(asin): - url='https://www.amazon.com/dp/'+asin +def requests_url(url): + '''获取网页内容''' + url='https://www.amazon.com/dp/'+url headers={"Host": "www.amazon.com", "User-Agent": @@ -19,35 +20,36 @@ def requests_url(asin): "Cache-Control":"max-age=0", "Upgrade-Insecure-Requests":"1" } - proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP - r=requests.get(url,headers=headers,proxies=proxies) + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'} + r=requests.get(url,headers=headers,proxies=proxies) return r.content,url def main(): + '''打开工作簿,选择sheet查询rank''' start=datetime.datetime.now() # 计算所用时间 - data=xlrd.open_workbook('D:\\Documents\\Downloads\Food_Bins&Canisters_adjust_cell_phone.xls')#打开工作簿 + data=xlrd.open_workbook('D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx')#打开工作簿 sheets=data.sheets() z={} - p=0#key + p=0 for sheet in sheets: p+=1 - z[p]=sheet.name#把工作簿中的sheet名导入字典z + z[p]=sheet.name print p,z[p] try: sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) - if sheet_index in range(1,len(sheets)): + if sheet_index in range(1,len(sheets)+1): t=sheet_index else: print 'The digital is wrong,plz input a correct number' except Exception,e: print str(e) t=1 - table=data.sheet_by_index(t-1)# 打开第一个sheet + table=data.sheet_by_index(t-1)# 打开sheet rows=table.nrows#计算表中列数和行数 cols=table.ncols - print "%s 's cols,rows is"%(z[t],cols,rows)#打印表名中的行列数 + print cols,rows row_1st=table.row_values(0)#读取第一行 asin_index=row_1st.index('Asin')#返回Asin列的所在列数 - URL=table.col_values(asin_index,1,rows)#读取Asin列第二行到最后一行 + URL=table.col_values(asin_index,1,rows-1)#读取Asin列第二行到最后一行 data1=copy(data)#复制工作簿 table1=data1.get_sheet(t-1) for i in range(rows-1): @@ -55,22 +57,22 @@ def main(): time.sleep(2) r,url=requests_url(URL[i]) print i,url - rank1=re.findall(r'(#\d+,\d{3}.*?)\(',r)#匹配排名大于百位的主目录排名 + rank1=re.findall(r'(#\d+,\d{3}.*?)\(',r) if rank1: print rank1 else: - rank1=re.findall(r'(#\d{1,3}.*?)\((#\d+)<\/span>',r)#匹配排名小于千位的小目录排名 + rank2=re.findall(r'>(#\d+)<\/span>',r) if rank2: print rank2 else: - rank2=re.findall(r'>(#\d+|#\d+,\d{3})\sin\s<',r)#匹配排名大于百位的小目录排名 + rank2=re.findall(r'>(#\d+|#\d+,\d{3})\sin\s<',r) print rank2 - table1.write(i+1,cols,rank1[0])#写入sheet中 + table1.write(i+1,cols,rank1[0]) table1.write(i+1,cols+1,rank2) except Exception,e: @@ -78,7 +80,7 @@ def main(): data1.save('c:\\first_Choice_copy.xls') #保存复制表格 end=datetime.datetime.now() t=end-start#总用时 - print 'Total time: {0} s.'.format(t) + print 'Total time: %s s.'%(t) if __name__== '__main__': main() diff --git a/keywords_find.py b/keywords_find.py index f3388c3..9dfa2a3 100644 --- a/keywords_find.py +++ b/keywords_find.py @@ -6,7 +6,7 @@ import re,requests,xlwt,xlrd,string,datetime,os,time from xlutils.copy import copy def get_url(i,url): - '''利用代理IP查询Amazon搜索,返回结果''' + '''从工作簿中获取Keyword利用代理IP查询Amazon搜索,返回结果''' try: proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费IP地址*http://www.xicidaili.com* amazon='https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=' @@ -51,8 +51,8 @@ def main(): start=datetime.datetime.now() data=xlrd.open_workbook(curl) table=data.sheet_by_index(0) - key=table.row_values(0)#获取头行返回数组 - key_index=key.index('Keyword')#获取Keyword所在列数 + key=table.row_values(0) + key_index=key.index('Keyword') Keywords=table.col_values(key_index) rows=table.nrows print "Workbook's rows is %d"%rows @@ -63,9 +63,10 @@ def main(): m=get_url(i,url) table1.write(i,0,url) table1.write(i,1,m) - data1.save('c:\\4.xlsx') + data1_url='c:\\4.xlsx' + data1.save(data1_url) end=datetime.datetime.now() t=end-start - print 'Total time: {0} s'.format(t)#打印总用时(从读取文件到保存文件) + print '您用{0}所搜索的关键词已经存储到{1}\nTotal time: {2} s'.format(curl,data1_url,t)#打印文件原地址和新存储地址,总用时(从读取文件到保存文件) if __name__=='__main__': main() diff --git "a/price\346\255\243\345\210\231.txt" "b/price\346\255\243\345\210\231.txt" new file mode 100644 index 0000000..891216a --- /dev/null +++ "b/price\346\255\243\345\210\231.txt" @@ -0,0 +1,10 @@ +prices=re.findall(r'class="a-size-medium a-color-price">\$(.*?)<\/span>',r) +weights=re.findall(r'\s{24}(.*?) \(',r) +reviews=re.findall(r'(.*?) customer stars=re.findall(r'(.*?) out of 5 stars<\/span><\/i>',r) +rank=re.findall(r'#(.*?)<\/span>',r) + + + table1.write(i+1,3,prices[0])#۸д븴Ʊ + table1.write(i+1,5,weights[0])# Shippingд븴Ʊ + table1.write(i+1,7,reviews[0])# + table1.write(i+1,8,stars[0])# \ No newline at end of file diff --git a/xt.py b/xt.py new file mode 100644 index 0000000..86591fe --- /dev/null +++ b/xt.py @@ -0,0 +1,73 @@ +#*--coding:UTF-8--* +#Function:Create a style Excel in special situation生成指定表格 +#练习xlwt lib +#桌面文件夹1中的多个表格名字换成日期号写入一个工作簿 +import xlwt,compileall +import xlrd +import os,sys +import datetime +'''调用xlwt设置样式制作一个可用的表格''' +t0=datetime.datetime.now() +workbook = xlwt.Workbook(encoding = 'utf-8') +table1= workbook.add_sheet("data",cell_overwrite_ok=False)#取名data,可重写单元格 +table2= workbook.add_sheet("data1",cell_overwrite_ok=False) +style = xlwt.XFStyle()#设置样式 +font = xlwt.Font()#设置字体 +font.name = 'SimSun' # 指定“宋体” +style.font = font#把字体传递给样式 +alignment=xlwt.Alignment()#设置对齐 +alignment.horz=xlwt.Alignment.HORZ_CENTER#单元格字符水平居中 +# 格式: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED +alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 +#格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED +style.alignment=alignment#添加至样式 +'''读取文件夹中的文件,获取相应的文件数、关键词个数''' +file_path="C:\\Users\\Administrator\\Desktop\\1" +os.chdir(file_path)#编译时出现Python找不到工作目录 +file_list=os.listdir(file_path) +f=[]#获取旧文件名 +n=[]#获取新文件路径 +for oldname in file_list: + f.append(oldname) +try: + for i in range(0,len(file_list)): + + old=file_path+os.sep+f[i] + n.append(new) + if os.path.exists(new): + pass + else: + os.rename(old,new)#把工作簿名换成日期,解决文件中文编码问题 + print n[i] +except Exception,e: + print str(e) +file_num=len(f) +print '完成进度:',file_num +t=0 +unqiue_key=[] +for i in xrange(file_num): + data=xlrd.open_workbook(n[i])#打开工作簿 + table=data.sheet_by_index(0)# 打开sheet + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + keywords=table.col_values(0,rows-1)#读取关键词列第1行到最后一行 + len_key=len(keywords) + for k in xrange(0,rows-1): + row_1st=table.row_values(k)#读取第关键词行 + table1.write(0+t,0,n[i],style) + for row in range(cols): + table1.write(t,row+1,row_1st[row],style) + t=t+rows + print '#'*i,"{0}%".format(int(i/file_num)*100) +for x in range(len(keywords)):#去除重复关键词,写入新data1 + if keywords[x] not in unqiue_key: + unqiue_key.append(keywords[x]) + table2.write(x,0,unqiue_key[x],style) +save_path='c:\\seller_data.xls' +workbook.save(save_path) +compileall.compile_file(r'c:\\Users\\Administrator\\Desktop\xt.py') +t1=datetime.datetime.now() +t3=t1-t0 +print 'The workbook is save in {0}\nThe time is used {1}'.format(save_path,t3) + + From b313e70776bbc3a54e25f5a3744b01bf20bd66f3 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 28 Mar 2018 23:21:45 +0800 Subject: [PATCH 016/270] Update csv_to_xls.py --- csv_to_xls.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/csv_to_xls.py b/csv_to_xls.py index c435372..060b24a 100644 --- a/csv_to_xls.py +++ b/csv_to_xls.py @@ -11,6 +11,14 @@ import re import xlwt import datetime +import sys +def progress(i): + '''Output the speed of progress ''' + sys.stdout.write('#') + sys.stdout.flush()#refresh the stdout +def rate_progress(i): + sys.stdout.write('\r%2d%%'.format(i) + sys.stdout.flush() def workbook_create(): '''Create sheet in workbook by xlwt创建表格''' workbook = xlwt.Workbook(encoding = 'utf-8') @@ -49,7 +57,9 @@ def main(): n=[] t=0#row行数 l=0#parameter迭代参数 - for i in range(len(file_list)): + l_=len(file_list) + + for i in range(l_): for oldname in file_list: os.chdir(file_path)#编译时防止出现Python找不到工作目录错误 f.append(oldname) @@ -73,6 +83,9 @@ def main(): table2.write(l,r,x) r+=1 l=l+1 + rate_progress(i) + progress(i) + t2=datetime.datetime.now() print 'The workbook is save in {0}\nThe time is {1}'.format(file_save,t2-t1) workbook.save(file_save) From 95bfece0a6423c70d812bd4c8eead37711986a30 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 5 Apr 2018 13:42:36 +0800 Subject: [PATCH 017/270] get captchaImage --- AWS_captchaImage.py | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 AWS_captchaImage.py diff --git a/AWS_captchaImage.py b/AWS_captchaImage.py new file mode 100644 index 0000000..9f1b2db --- /dev/null +++ b/AWS_captchaImage.py @@ -0,0 +1,64 @@ +# -*- conding:UTF-8 -*- +# Author:Toryun +# Python version:2.7.13 +#Windows Version:7 +# Date:2018-04-05 +#Function:Get the captchaImage获取Amazon验证码图片 +import re +import os +import time +import datetime +import requests +from PIL import Image +loop=int(raw_input('Plz input a number what you want to get the captchaImage:\n')) +t0=datetime.datetime.now() +url='https://www.amazon.com/ap/captcha?appAction=REGISTER&captchaObfuscationLevel=ape:aGFyZA==&captchaType=image' +headers1={"Host": + "opfcaptcha-prod.s3.amazonaws.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0", + "Accept": + "text/html,application", + "Accept-Language": + "zh-CN,zh;q=0.8", + "Accept-Encoding": + "gzip, deflate, br", + "Connection": + "keep-alive", + "Upgrade-Insecure-Requests":"1" + }#验证码图片服务器头 +headers2={"Host": + "www.amazon.com", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0", + "Accept": + "text/html,application/xhtml+xml,application/xml;q=0.9,*/*", + "Accept-Language": + "zh-CN,zh;q=0.8", + "Accept-Encoding": + "gzip, deflate, br", + "Connection": + "keep-alive", + "Upgrade-Insecure-Requests":"1" + }#验证码URL服务器头 +proxies={"HTTPS": "HTTPS://122.242.96.30:808"} +for i in range(loop): + r=requests.get(url,headers=headers2,proxies=proxies) + f=re.findall(r'"captchaImageUrl":"(.*?)","ces',r.content) + time.sleep(3) + r1=requests.get(f[0],headers=headers1,proxies=proxies) + _img_0="d:jpg/"+str(i)+".jpg" + with open(_img_0,"wb") as _img_1: + + _img_1.write(r1.content) + _img_1.close() + img=Image.open(_img_0) + img.show() + num=raw_input('plz input the captchaImage your see:\n') + #os.chdir("d:jpg/") + os.rename(_img_0,"d:jpg/{0}.jpg".format(num)) + command = 'taskkill /F /IM dllhost.exe'#强制终止指定进程名命令 + os.system(command) +t1=datetime.datetime.now() +t=t1-t0 +print 'They are saved in {0}\nThe total time is {1}'.format("d:jpg",t) From 909bb37aeb4840ec3b20b1075602909025c91185 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 5 Apr 2018 16:16:37 +0800 Subject: [PATCH 018/270] Register Amazon account Using mechanize register amazon buyer account,if has captcha,input by hand(next step is mechanize-learning). --- Amazozn_email.py | 149 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 Amazozn_email.py diff --git a/Amazozn_email.py b/Amazozn_email.py new file mode 100644 index 0000000..a839286 --- /dev/null +++ b/Amazozn_email.py @@ -0,0 +1,149 @@ +# -*- conding:UTF-8 -*- +# Author:Toryun +# Python version:2.7.13 +# Date:18/3/25 +# Function:Create a style Excel in special situation生成指定表格,写入随机Email和密码 +#Amazom CAPTCHA IMG API https://www.amazon.com/ap/captcha?appAction=REGISTER&captchaObfuscationLevel=ape:aGFyZA==&captchaType=image +import random +import requests +import xlwt +import xlrd +import datetime,time +import mechanize +import os +import cookielib +import sys +from PIL import Image +import re +#--------------------------------------------------------------------------------- +def excel_bulit(): + #Bulit a excel,Generate a account of Amazon 构建Excel,生成亚马逊账号 + workbook = xlwt.Workbook(encoding = 'utf-8') + table= workbook.add_sheet("data",cell_overwrite_ok=True) + style = xlwt.XFStyle()#设置样式 + font = xlwt.Font()#设置字体 + font.name = 'SimSun' # 指定“宋体” + style.font = font + alignment=xlwt.Alignment()#设置对齐 + alignment.horz=xlwt.Alignment.HORZ_CENTER#单元格字符水平居中 + # 格式: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED + alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 + #格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED + style.alignment=alignment#添加至样式 + + for i in range(0,100): + t='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + t1=''.join(random.sample(t,8)) + b1=''.join(random.sample(t,8)) + mail=t1+'@gmail.com' + table.write(i,0,mail,style) + table.write(i,1,b1,style) + file_save='C:\\Users\\Administrator\\Desktop\email.xls' + workbook.save(file_save) + +#--------------------------------------------------------------------------------- +#Reading account accounts and passwords +#读取账户账号和密码 +def read_excel(i): + '''Read account and password from workbook读取工作簿中的账号密码''' + workbook=xlrd.open_workbook('C:\\Users\\Administrator\\Desktop\email.xls') + table=workbook.sheet_by_index(0) + account=table.col_values(0) + password=table.col_values(1) + a=account[i] + p=password[i] + return a,p +#--------------------------------------------------------------------------------- +#Register Amazon(Using mechanize library to simulate browser registration) +#注册亚马逊(使用mechanize库模拟浏览器注册) +def register(name,account,password,i): + '''Using the mechanize lib simulation browser to large quantity register Amazon accounts使用mechanize模拟浏览器批量注册亚马逊账号''' + url='https://www.amazon.com/ap/register?openid.pape.max_auth_age=0&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&pageId=usflex&ignoreAuthState=1&openid.return_to=https%3A%2F%2Fwww.amazon.com%2F%3Fref_%3Dnav_ya_signin&prevRID=3CBEZNC1DVKVH5BS3CQT&openid.assoc_handle=usflex&openid.mode=checkid_setup&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&prepopulatedLoginId=&failedSignInCount=0&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0' + br = mechanize.Browser() + br.set_handle_equiv(True)#handle HTTP-EQUIV headers (HTTP headers embedded in HTML). + br.set_handle_redirect(True) + br.set_handle_referer(True)#add Referer (sic) header + br.set_handle_robots(False)# Ignore robots.txt. Do not do this without thought and consideration. + br.set_handle_gzip(False) + br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) + br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0')] + proxies={"HTTPS": "HTTPS://122.242.96.30:808"}#proxy代理 + br.set_proxies(proxies) + for tries in range(10):#解决100610错误问题(代理连接问题) + try: + br.open(url) + except: + if tries<=10: + continue + else: + break + br.select_form(nr=0) + br.form['customerName']=name + br.form['email']=account + br.form['password']=password + br.form['passwordCheck']=password + br.submit() + response=str(br.response().read()) + try:#如果需要验证进行以下操作 + img_url=re.findall(r'Visual CAPTCHA image, continue down for an audio option. Date: Wed, 11 Apr 2018 09:41:40 +0800 Subject: [PATCH 019/270] Add files via upload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Get all customers' questions from a product获取某产品所有顾客提问 --- Get_questions.py | 152 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 Get_questions.py diff --git a/Get_questions.py b/Get_questions.py new file mode 100644 index 0000000..83e8f4b --- /dev/null +++ b/Get_questions.py @@ -0,0 +1,152 @@ +# -*- conding:UTF-8 -*- +# Author:Toryun +# Python version:2.7.13 +# Windows version:7 +# Date:2018-4-9 +# Function:Get questions ,write in excel,translate into Chinese.获取问题,写入构建的Excel,翻译成中文 +import re +import xlwt +import execjs +import requests +#--------------------------------------------------------------------------------- +def excel_bulit(): + #Bulit a excel.构建Excel + workbook = xlwt.Workbook(encoding = 'utf-8') + table= workbook.add_sheet("data",cell_overwrite_ok=True) + style = xlwt.XFStyle()#设置样式 + font = xlwt.Font()#设置字体 + font.name = 'SimSun' # 指定“宋体” + style.font = font + alignment=xlwt.Alignment()#设置对齐 + alignment.horz=xlwt.Alignment.HORZ_CENTER#单元格字符水平居中 + # 格式: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED + alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 + #格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED + style.alignment=alignment#添加至样式 + return workbook,table + #--------------------------------------------------------------------------------- +'''调用js''' +class Py4Js(): + + def __init__(self): + self.ctx = execjs.compile(""" + function TL(a) { + var k = ""; + var b = 406644; + var b1 = 3293161072; + + var jd = "."; + var $b = "+-a^+6"; + var Zb = "+-3^+b+-f"; + + for (var e = [], f = 0, g = 0; g < a.length; g++) { + var m = a.charCodeAt(g); + 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), + e[f++] = m >> 18 | 240, + e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, + e[f++] = m >> 6 & 63 | 128), + e[f++] = m & 63 | 128) + } + a = b; + for (f = 0; f < e.length; f++) a += e[f], + a = RL(a, $b); + a = RL(a, Zb); + a ^= b1 || 0; + 0 > a && (a = (a & 2147483647) + 2147483648); + a %= 1E6; + return a.toString() + jd + (a ^ b) + }; + + function RL(a, b) { + var t = "a"; + var Yb = "+"; + for (var c = 0; c < b.length - 2; c += 3) { + var d = b.charAt(c + 2), + d = d >= t ? d.charCodeAt(0) - 87 : Number(d), + d = b.charAt(c + 1) == Yb ? a >>> d: a << d; + a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d + } + return a + } + """) + + def getTk(self,text): + return self.ctx.call("TL",text) + #--------------------------------------------------------------------------------- +def zh_or_en(sl): + '''判断中英文,得出翻译结果''' + s=sl.decode('GB2312')#The rules for translating a Unicode string into a sequence of bytes are called an encoding. + __zh=re.compile(u'[\u4e00-\u9fa5]+') + f=__zh.search(s) + js=Py4Js() + if f:#如果是中文,则用中译英URL + q=urllib.quote(s.encode('UTF-8')) + url="https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=1&ssel=3&tsel=3&kc=1&" + tk=js.getTk(q) + else: + q=sl + tk=js.getTk(q) + url="https://translate.google.cn/translate_a/single?client=t&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=3&tsel=6&kc=1&" + url=url+"tk={0}&q={1}".format(tk,q) + _headers={ + "Host": + "translate.google.cn", + "Referer": + "https://translate.google.cn/", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3141.7 Safari/537.36", + "Accept": + "*/*", + "Accept-Language": + "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", + "Accept-Encoding": + "gzip, deflate", + "Connection": + "keep-alive"} + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'} + r=requests.get(url,headers=_headers,proxies=proxies) + stl=re.findall(r'\["(.*?)",',r.content) + return stl[0] + #--------------------------------------------------------------------------------- +headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,en;q=0.8,zh;q=0.7,zh-TW;q=0.5,zh-HK;q=0.3,en-US;q=0.2", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", + "Upgrade-Insecure-Requests":"1" + } +workbook,table=excel_bulit() +j=0 +url='https://www.amazon.com/ask/questions/asin/B075XLRHNQ/1/ref=ask_ql_psf_ql_hza?isAnswered=true' +r0=requests.get(url,headers=headers) +pages=re.findall(r'ref=ask_ql_psf_ql_hza\?isAnswered=true">(.*?)<\/a><\/li>\s+

  • ',r0.content) +page=int(pages[0])+1 +for i in range(1,page): + url='https://www.amazon.com/ask/questions/asin/B075XLRHNQ/{}/ref=ask_ql_psf_ql_hza?isAnswered=true'.format(str(i)) + r=requests.get(url,headers=headers) + Questions=re.findall(r'=ask_ql_ql_al_hza">\s+(.*?)\s{45}',r.content)#获取第i页所有问题 + for b in range(len(Questions)): + question=Questions[b] + print question + sl=question + try: + stl=zh_or_en(sl) + table.write(b+j,1,stl) + except Exception,e: + print str(e) + table.write(b+j,0,question) + j=j+b +file_save='c:\\questions.xls' +workbook.save(file_save) + + + + + From 93bd8699b2a649195ff7421f88ed16a6ca75fc90 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 16 Jun 2018 16:05:47 +0800 Subject: [PATCH 020/270] 2018/6/16 Update --- 5.py | 13 +- AWSRegister.py | 156 ++++++++++++++++++++ AWS_captchaImage.py | 15 +- AWSsellerxt.py | 73 ++++++++++ AddtoCart.py | 125 ++++++++++++++++ Get_questions.py | 8 +- Google_tranJS.py | 2 +- Logistics_get_17track.py | 113 +++++++++++++++ PyAWS_Store_Reviews.py | 13 +- amazon.py | 28 ++++ amazon_cn.py | 237 +++++++++++++++++++++++++++++++ amazon_us.py | 98 +++++++++++++ csv_to_xls.py | 23 +-- get_dimensions.py | 2 +- get_ppc.py | 102 +++++++++++++ get_ranks.py | 2 - postTocart.py | 300 +++++++++++++++++++++++++++++++++++++++ taobaoSEO_keyword.pyc | Bin 0 -> 1982 bytes 18 files changed, 1270 insertions(+), 40 deletions(-) create mode 100644 AWSRegister.py create mode 100644 AWSsellerxt.py create mode 100644 AddtoCart.py create mode 100644 Logistics_get_17track.py create mode 100644 amazon.py create mode 100644 amazon_cn.py create mode 100644 amazon_us.py create mode 100644 get_ppc.py create mode 100644 postTocart.py create mode 100644 taobaoSEO_keyword.pyc diff --git a/5.py b/5.py index 64edb00..01e8f9e 100644 --- a/5.py +++ b/5.py @@ -1,9 +1,10 @@ -import urllib2,pprint +import urllib2,pprint import cPickle as pickle -b=urllib2.urlopen('http://www.pythonchallenge.com/pc/def/banner.p') -result=pickle.Unpickler(b).load() -pprint.pprint(result) +b=urllib2.urlopen('http://www.pythonchallenge.com/pc/def/banner.p')#get该地址文件,b类型为实例(isinstant) +result=pickle.Unpickler(b).load()#创造一个unpickler文件反序列化成list +pprint.pprint(result)#打印result output=open('c:\\Users\\Administrator\\Desktop\\5text.txt','w') for line in result: - print >> output, ' '.join([c[0]*[1] for c in line]) -output.close() + print >> output, ' '.join([c[0]*c[1] for c in line])#元组(tuple)元素相乘转成字符串写入5text文件 +output.close()#关闭文件 + diff --git a/AWSRegister.py b/AWSRegister.py new file mode 100644 index 0000000..62ae241 --- /dev/null +++ b/AWSRegister.py @@ -0,0 +1,156 @@ +# -*- conding:UTF-8 -*- +# Author:Toryun +# Python version:2.7.13 +# Date:18/3/25 +# Function:Create a style Excel in special situation生成指定表格,写入随机Email和密码 +#Amazom CAPTCHA IMG API https://www.amazon.com/ap/captcha?appAction=REGISTER&captchaObfuscationLevel=ape:aGFyZA==&captchaType=image +import os +import re +import sys +import time +import xlwt +import xlrd +import random +import requests +import datetime +import cookielib +import mechanize +import pytesseract +from PIL import Image + +#--------------------------------------------------------------------------------- +def excel_bulit(file_save): + #Bulit a excel,Generate a account of Amazon 构建Excel,生成亚马逊账号 + workbook = xlwt.Workbook(encoding = 'utf-8') + table= workbook.add_sheet("data",cell_overwrite_ok=True) + style = xlwt.XFStyle()#设置样式 + font = xlwt.Font()#设置字体 + font.name = 'SimSun' # 指定“宋体” + style.font = font + alignment=xlwt.Alignment()#设置对齐 + alignment.horz=xlwt.Alignment.HORZ_CENTER#单元格字符水平居中 + # 格式: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED + alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 + #格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED + style.alignment=alignment#添加至样式 + + for i in range(0,100): + t='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'#chr() + t1=''.join(random.sample(t,8)) + b1=''.join(random.sample(t,8)) + mail=t1+'@gmail.com' + table.write(i,0,mail,style) + table.write(i,1,b1,style) + workbook.save(file_save) + +#--------------------------------------------------------------------------------- +#Reading account accounts and passwords +#读取账户账号和密码 +def read_excel(i): + '''Read account and password from workbook读取工作簿中的账号密码''' + workbook=xlrd.open_workbook('C:\\Users\\Administrator\\Desktop\email.xls') + table=workbook.sheet_by_index(0) + account=table.col_values(0) + password=table.col_values(1) + a=account[i] + p=password[i] + return a,p +#--------------------------------------------------------------------------------- +#Register Amazon(Using mechanize library to simulate browser registration) +#注册亚马逊(使用mechanize库模拟浏览器注册) +def register(name,account,password,i): + '''Using the mechanize lib simulation browser to large quantity register Amazon accounts使用mechanize模拟浏览器批量注册亚马逊账号''' + url='https://www.amazon.com/ap/register?openid.pape.max_auth_age=0&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&pageId=usflex&ignoreAuthState=1&openid.return_to=https%3A%2F%2Fwww.amazon.com%2F%3Fref_%3Dnav_ya_signin&prevRID=3CBEZNC1DVKVH5BS3CQT&openid.assoc_handle=usflex&openid.mode=checkid_setup&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&prepopulatedLoginId=&failedSignInCount=0&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0' + br = mechanize.Browser() + br.set_handle_equiv(True)#handle HTTP-EQUIV headers (HTTP headers embedded in HTML). + br.set_handle_redirect(True) + br.set_handle_referer(True)#add Referer (sic) header + br.set_handle_robots(False)# Ignore robots.txt. Do not do this without thought and consideration. + br.set_handle_gzip(False) + br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) + br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0')] + proxies={"HTTPS": "HTTPS://122.242.96.30:808"}#proxy代理 + br.set_proxies(proxies) + for tries in range(10):#解决100610错误问题(代理连接问题) + try: + br.open(url) + except: + if tries<=10: + continue + else: + break + br.select_form(nr=0) + br.form['customerName']=name + br.form['email']=account + br.form['password']=password + br.form['passwordCheck']=password + br.submit() + response=str(br.response().read()) + try:#如果需要验证进行以下操作 + img_url=re.findall(r'Visual CAPTCHA image, continue down for an audio option.os.name=='windows' from PIL import Image loop=int(raw_input('Plz input a number what you want to get the captchaImage:\n')) t0=datetime.datetime.now() @@ -47,16 +49,19 @@ f=re.findall(r'"captchaImageUrl":"(.*?)","ces',r.content) time.sleep(3) r1=requests.get(f[0],headers=headers1,proxies=proxies) - _img_0="d:jpg/"+str(i)+".jpg" + _img_0="d:\\jpg\\"+str(i)+".jpg" with open(_img_0,"wb") as _img_1: _img_1.write(r1.content) _img_1.close() img=Image.open(_img_0) img.show() - num=raw_input('plz input the captchaImage your see:\n') - #os.chdir("d:jpg/") - os.rename(_img_0,"d:jpg/{0}.jpg".format(num)) + #num=raw_input('plz input the captchaImage your see:\n') + #chdir("D:\\jpg\") + pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract'#调用环境变量 + num=pytesseract.image_to_string(img)# type : unicode + print num + os.rename(_img_0,"d:/jpg/{0}.jpg".format(num)) command = 'taskkill /F /IM dllhost.exe'#强制终止指定进程名命令 os.system(command) t1=datetime.datetime.now() diff --git a/AWSsellerxt.py b/AWSsellerxt.py new file mode 100644 index 0000000..86591fe --- /dev/null +++ b/AWSsellerxt.py @@ -0,0 +1,73 @@ +#*--coding:UTF-8--* +#Function:Create a style Excel in special situation生成指定表格 +#练习xlwt lib +#桌面文件夹1中的多个表格名字换成日期号写入一个工作簿 +import xlwt,compileall +import xlrd +import os,sys +import datetime +'''调用xlwt设置样式制作一个可用的表格''' +t0=datetime.datetime.now() +workbook = xlwt.Workbook(encoding = 'utf-8') +table1= workbook.add_sheet("data",cell_overwrite_ok=False)#取名data,可重写单元格 +table2= workbook.add_sheet("data1",cell_overwrite_ok=False) +style = xlwt.XFStyle()#设置样式 +font = xlwt.Font()#设置字体 +font.name = 'SimSun' # 指定“宋体” +style.font = font#把字体传递给样式 +alignment=xlwt.Alignment()#设置对齐 +alignment.horz=xlwt.Alignment.HORZ_CENTER#单元格字符水平居中 +# 格式: HORZ_GENERAL, HORZ_LEFT, HORZ_CENTER, HORZ_RIGHT, HORZ_FILLED, HORZ_JUSTIFIED, HORZ_CENTER_ACROSS_SEL, HORZ_DISTRIBUTED +alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 +#格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED +style.alignment=alignment#添加至样式 +'''读取文件夹中的文件,获取相应的文件数、关键词个数''' +file_path="C:\\Users\\Administrator\\Desktop\\1" +os.chdir(file_path)#编译时出现Python找不到工作目录 +file_list=os.listdir(file_path) +f=[]#获取旧文件名 +n=[]#获取新文件路径 +for oldname in file_list: + f.append(oldname) +try: + for i in range(0,len(file_list)): + + old=file_path+os.sep+f[i] + n.append(new) + if os.path.exists(new): + pass + else: + os.rename(old,new)#把工作簿名换成日期,解决文件中文编码问题 + print n[i] +except Exception,e: + print str(e) +file_num=len(f) +print '完成进度:',file_num +t=0 +unqiue_key=[] +for i in xrange(file_num): + data=xlrd.open_workbook(n[i])#打开工作簿 + table=data.sheet_by_index(0)# 打开sheet + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + keywords=table.col_values(0,rows-1)#读取关键词列第1行到最后一行 + len_key=len(keywords) + for k in xrange(0,rows-1): + row_1st=table.row_values(k)#读取第关键词行 + table1.write(0+t,0,n[i],style) + for row in range(cols): + table1.write(t,row+1,row_1st[row],style) + t=t+rows + print '#'*i,"{0}%".format(int(i/file_num)*100) +for x in range(len(keywords)):#去除重复关键词,写入新data1 + if keywords[x] not in unqiue_key: + unqiue_key.append(keywords[x]) + table2.write(x,0,unqiue_key[x],style) +save_path='c:\\seller_data.xls' +workbook.save(save_path) +compileall.compile_file(r'c:\\Users\\Administrator\\Desktop\xt.py') +t1=datetime.datetime.now() +t3=t1-t0 +print 'The workbook is save in {0}\nThe time is used {1}'.format(save_path,t3) + + diff --git a/AddtoCart.py b/AddtoCart.py new file mode 100644 index 0000000..a9c6b44 --- /dev/null +++ b/AddtoCart.py @@ -0,0 +1,125 @@ +# -*- conding:UTF-8 -*- +# Author:Toryun +# Python version:2.7.13 +# Date:18/3/25 +# Function:Add to Cart of Amazon加入购物车,查询商品数量 +import os +import re +import sys +import time +import xlwt +import xlrd +import requests +import datetime +import cookielib +import mechanize +from xlutils.copy import copy +#--------------------------------------------------------------------------------- +#Register Amazon(Using mechanize library to simulate browser registration) +#注册亚马逊(使用mechanize库模拟浏览器注册) +def AddtoCart(url): + '''Using the mechanize lib simulation browser to large quantity register Amazon accounts使用mechanize模拟浏览器批量注册亚马逊账号''' + br = mechanize.Browser() + cj = cookielib.LWPCookieJar() + br.set_cookiejar(cj) + br.set_handle_equiv(True)#handle HTTP-EQUIV headers (HTTP headers embedded in HTML). + br.set_handle_redirect(True) + br.set_handle_referer(True)#add Referer (sic) header + br.set_handle_robots(False)# Ignore robots.txt. Do not do this without thought and consideration. + br.set_handle_gzip(False) + br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) + br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0')] + proxies={"HTTPS": "HTTPS://122.242.96.30:808"}#proxy代理 + br.set_proxies(proxies) + for tries in range(10):#解决100610错误问题(代理连接问题) + try: + br.open(url) + except: + if tries<=10: + continue + else: + break + br.select_forms(text='addToCart') + for form in br.forms(): + print form + br.submit() + url1='https://www.amazon.com/gp/cart/view.html/ref=lh_cart' + br.open(url1) + br.select_forms(name='activeCartViewForm') + for form in br.forms(): + print form + response=str(br.response().read()) + quantityBox + stocks=re.findall(r' + +#--------------------------------------------------------------------------------- +#Reading account accounts and passwords +#读取账户账号和密码 +def read_excel(file_path): + '''Read account and password from workbook读取工作簿中的账号密码''' + workbook=xlrd.open_workbook(file_path) + sheets=workbook.sheets() + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) + if sheet_index in range(1,len(sheets)+1): + t=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t=1 + table=workbook.sheet_by_index(t-1)# 打开sheet + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print cols,rows + row_1st=table.row_values(0)#读取第一行 + URL_index=row_1st.index('URL')#返回Asin列的所在列数 + URL=table.col_values(URL_index,1,rows-1)#读取Asin列第二行到最后一行 + data1=copy(workbook)#复制工作簿 + return data1,URL +#--------------------------------------------------------------------------------- +def File_path_choice(): + '''选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='d:/documents/downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path +#--------------------------------------------------------------------------------- +#Simulate download progress of Lniux +#模拟Lniux下载进度条 +def progress(i): + r='\r%s>%d%%' % ('#' * i, i,) + sys.stdout.write(r) + sys.stdout.flush()#Refresh progress刷新进度条 +#--------------------------------------------------------------------------------- +if __name__=='__main__': + t1=datetime.datetime.now() + data,URL=read_excel() + for i in range(len(URL)): + url=URL[i] + stock=AddtoCart(url) + + t2=datetime.datetime.now() + print "\nThe cost time is {0}.\nThe workbook is saved in {1}".format(t2-t1,'C:\\Users\\Administrator\\Desktop\email.xls' ) diff --git a/Get_questions.py b/Get_questions.py index 83e8f4b..ee27924 100644 --- a/Get_questions.py +++ b/Get_questions.py @@ -10,7 +10,7 @@ import requests #--------------------------------------------------------------------------------- def excel_bulit(): - #Bulit a excel.构建Excel + '''Bulit a excel.构建Excel''' workbook = xlwt.Workbook(encoding = 'utf-8') table= workbook.add_sheet("data",cell_overwrite_ok=True) style = xlwt.XFStyle()#设置样式 @@ -124,12 +124,13 @@ def zh_or_en(sl): } workbook,table=excel_bulit() j=0 -url='https://www.amazon.com/ask/questions/asin/B075XLRHNQ/1/ref=ask_ql_psf_ql_hza?isAnswered=true' +asin=raw_input('Plz input the asin you want to get questions:\n') +url='https://www.amazon.com/ask/questions/asin/B075XLRHNQ/1/ref=ask_ql_psf_ql_hza?isAnswered=true'.format(asin) r0=requests.get(url,headers=headers) pages=re.findall(r'ref=ask_ql_psf_ql_hza\?isAnswered=true">(.*?)<\/a><\/li>\s+
  • ',r0.content) page=int(pages[0])+1 for i in range(1,page): - url='https://www.amazon.com/ask/questions/asin/B075XLRHNQ/{}/ref=ask_ql_psf_ql_hza?isAnswered=true'.format(str(i)) + url='https://www.amazon.com/ask/questions/asin/{0}/{1}/ref=ask_ql_psf_ql_hza?isAnswered=true'.format(asin,str(i)) r=requests.get(url,headers=headers) Questions=re.findall(r'=ask_ql_ql_al_hza">\s+(.*?)\s{45}',r.content)#获取第i页所有问题 for b in range(len(Questions)): @@ -144,6 +145,7 @@ def zh_or_en(sl): table.write(b+j,0,question) j=j+b file_save='c:\\questions.xls' +print 'The workbook is saved in {}'.format(file_save) workbook.save(file_save) diff --git a/Google_tranJS.py b/Google_tranJS.py index 597f57f..6107cc4 100644 --- a/Google_tranJS.py +++ b/Google_tranJS.py @@ -149,7 +149,7 @@ def zh_or_en(sl): "keep-alive"} proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'} r=requests.get(url,headers=_headers,proxies=proxies) -print r.raise_for_status(),r.content +print r.status_code,r.content diff --git a/Logistics_get_17track.py b/Logistics_get_17track.py new file mode 100644 index 0000000..3327560 --- /dev/null +++ b/Logistics_get_17track.py @@ -0,0 +1,113 @@ +#-*- coding:UTF-8 -*- +#Python Version:2.7.13 +#Author:Toryun +#Created:2018-01-05 +#Function:Query multiple logistics information by 17track +'''通过17track批量查询物流信息,标记妥投信息添加妥投天数''' +import requests,re,datetime,xlrd,os,json +from xlutils.copy import copy + +def Flie_path_choice(): + '''Select the file in the folder and return the selected file path.选择文件夹中的文件,返回所选文件路径''' + t='C:\\Users\\Administrator\\Desktop\跟踪物流 (自动保存的).xls'#默认的工作簿地址 + try: + file_path='C:\\Users\\Administrator\\Desktop' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出file_path文件夹中的文件名 + for i in xrange(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Purpose:Check the Excel with the tracking number, the program will automatically check the shipping status, and fill in another Excel workbook.\nPlz input a number of serial number (Default workbook is {0}):\n Or Enter a number more than the last option ,then you could input a url of file\n".format('stainless steel toilet brush holder.xlsx')))#默认文件是t,或者输入任意字符获取输入新文件路径接口 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + else: + file_path=str(raw_input("Plz input a fileurl(e.g. C:\\Users\\Administrator\\Desktop\1.xlsx\n)")) + f=os.path.exists(file_path)#Check whether the file is exists检查该文件是否存在 + while f==False: + file_path=str(raw_input("Your file is not exists,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e:# + print str(e) + file_path=t#Defualt path of the file默认文件路径 + return file_path + +def Get_TrackID(file_path): + """Get a list TrackID from workbook and return获取工作簿和一组运单号并返回 """ + data=xlrd.open_workbook(file_path)#打开路径中文件 + sheets=data.sheets()#获取所有sheet(类型是list) + print "{0}'s sheets:\n".format(file_path) + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.file_name + print p,z[p] + try: + sheet_index=int(raw_input("Plz input index in the serial number(defualt 1):]n"))#选择工作簿中的sheet + if sheet_index in xrange(1,len(sheets)+1):#判断输入数是否超出范围 + sheet_num=sheet_index + else: + print 'The number is wrong,plz input a correct number' + except Exception,e:# + print str(e) + sheet_num=2 + table=data.sheet_by_index(sheet_num-1) + rows=table.nrows#计算列、行数 + cols=table.ncols + print "{0}'s rows,cols are {1},{2}".format(z[sheet_num],rows,cols) + rows_1st=table.row_values(0)#Read the first row读取第一行 + TrackID_index=rows_1st.index('TrackID')#Obtain the number of the Tracking number获取运单号所在列数 + TrackID=table.col_values(TrackID_index,1,rows-1)#Read 2nd row to the last row读取第2行到最后一行 + return cols,sheet_num,data,TrackID + +def Pickle_to_transit(i,e,cols,sheet_num,data,TrackID): + """Copy from Original Workbook to New workbook,write the transit statues.复制原工作簿到新工作簿,把查询结果写入新的工作簿""" + file_path="C:\\Users\\Administrator\\Desktop\Post_17track.xlsx" + data1=copy(data)#xlutils.copy类里的copy函数 + table1=data1.get_sheet(sheet_num-1) + z={'T':3,'F':2,'C':22,'Not taken':4,'Alert':5}#Check the dictionary, choose to populate the background color of the Excel cell查字典选择填充Excel单元格背景颜色 + bg_color=z[e] + pattern=xlwt.Pattern()#Create the pattern + pattern.pattern_fore_colou=bg_color#背景色May be: 8 through 63. 0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray, + style=xlwt.XFStyle()#Create the style + style.pattern=pattern#Add Pattern to style + table1.write(i+1,cols,e,style) + +def RE_match_Track(r): + """Match the return values get the Transit Status匹配返回值确定运单状态""" + r=json.loads(r) + e=r["e"] + f=r["f"] + z={'10':' + return e,f +def requests_url(TrackID): + """Get a url webpage获取网页内容""" + Data_requests={"guid":"","data":[{"num":"{0}"}]}.format(TrackID)#A single tracking number in request body单个运单号请求主体 + url="https://t.17track.net/restapi/track" + headers={"Host": + "t.17track.net", + "User-Agent": + "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0", + "Accept": + "application/json, text/javascript, */*; q=0.01", + "Accept-Language": + "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", + "Accept-Encoding": + "gzip, deflate, br", + "Referer": + "https://t.17track.net/en", + "Connection": + "keep-alive", + "Content-Type": + "application/x-www-form-urlencoded; charset=UTF-8", + "Upgrade-Insecure-Requests":"1", + "X-Requested-With":"XMLHttpRequest" + }#Firefox browser requests_header火狐浏览器头部 + proxies={'HTTP':'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#Free proxy IP免费代理IP + r=requests.post(url,headers=headers,proxies=proxies,data=Data_requests) + return r.content + +def main(): + """Packaging functions封装函数""" + +if __name__=='__main__': + main() diff --git a/PyAWS_Store_Reviews.py b/PyAWS_Store_Reviews.py index 7d67c3d..5fbaabe 100644 --- a/PyAWS_Store_Reviews.py +++ b/PyAWS_Store_Reviews.py @@ -4,7 +4,13 @@ #== Author: Toryun #== Time:2017-08- 28 #====================== -import re,requests,xlrd,datetime,xlwt,os,time +import re +import requests +import xlrd +import datetime +import xlwt +import os +import time from xlutils.copy import copy # 输入Asin,get网页返回内容和网址 def requests_url(Asin): @@ -83,7 +89,7 @@ def main(): table1=data1.get_sheet(t-1) date=str(start.month)+'/'+str(start.day) table1.write(0,cols,date) - for i in range(rows-1): + for i in range(rows): try: r,url=requests_url(URL[i]) time.sleep(3) @@ -91,9 +97,10 @@ def main(): reviews=re.findall(r'(.*?) customer reviews',r) if reviews: print reviews[0] - table1.write(i+1,cols,reviews[0]) + table1.write(i+1,cols,int(reviews[0])) else: print 'reviews is None' + table1.write(i+1,cols,0) except Exception,e: print str(e) u='c:\\first_Choice_copy.xls' diff --git a/amazon.py b/amazon.py new file mode 100644 index 0000000..439104a --- /dev/null +++ b/amazon.py @@ -0,0 +1,28 @@ +import re,urllib2 +header = { +'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 4_3_4 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8K2 Safari/6533.18.5', +'Referer': 'https://www.amazon.cn/', +'Host': 'www.amazon.cn', +'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', +'Accept-Encoding': 'gzip, deflate, br', +'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', +'Connection': 'keep-alive' +} +r=re.compile(r'.*?

    5 or sort <= 0: + sort = "" + elif sort == 1: + sort = "popularity-rank" + elif sort == 2: + sort = "date-desc-rank" + elif sort == 3: + sort = "price-asc-rank" + elif sort == 4: + sort = "price-desc-rank" + elif sort == 5: + sort = "review-rank" + except: + sort = "" + try: + pages = int(input("请输入抓取页数(默认5页):")) + except: + pages = 5 + + a = time.clock() + + # 转成字符串 + # %y 两位数的年份表示(00 - 99) + # %Y 四位数的年份表示(000 - 9999) + # %m 月份(01 - 12) + # %d 月内中的一天(0 - 31) + # %H 24小时制小时数(0 - 23) + # %I 12小时制小时数(01 - 12) + # %M 分钟数(00 = 59) + # %S 秒(00 - 59) + today = time.strftime('%Y%m%d%H%M', time.localtime()) + # 创建一个Excel文件 + workbook = xlsxwriter.Workbook('../excel/' + today + '.xlsx') + # 创建一个工作表 + worksheet = workbook.add_worksheet() + + # 第一行参数 + first = ['商品名称', '品牌', '详情页网址', '原价格', '星级', '图片','图片网址'] + + # 写入excel计数行 + count = 1 + + # 下载图片计数 + num = 0 + + # 构造时间戳 + nowtime = int(time.time()) + + for page in range(0,pages): + + urldata = { + + 'keywords':keyword + + + } + urldata = urllib.urlencode(urldata) + url = "https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=" + urldata + + html = geturl(url).decode('Utf-8', 'ignore') + #file = open("../data/html.txt","wb") + #file.write(html) + #file.close() + + #file = open("../data/html.txt","rb") + #html = file.read().decode('Utf-8', 'ignore') + #print(html) + + # xpath解析需要的东西 + contents = etree.HTML(html) + + # 找到商品名称 + titles = contents.xpath('//a[@class="a-link-normal s-access-detail-page a-text-normal"]/@title') + arr_title = [] + for title in titles: + arr_title.append(title) + + # 找到品牌 + brands = contents.xpath('//div[@class="a-row a-spacing-mini"][1]/div/span/text()') + arr_brand = [] + for brand in brands: + if "更多购买选择" in brand: + pass + else: + arr_brand.append(brand) + + # 找到详情页网址 + detailurls = contents.xpath('//a[@class="a-link-normal s-access-detail-page a-text-normal"]/@href') + arr_detailurl = [] + for detailurl in detailurls: + arr_detailurl.append(urllib.parse.unquote(detailurl)) + #print(detailurl) + #print(len(arr_detailurl)) + + # 得到原价格 + # 这里是忽略了新品价格、非新品价格 + prices = contents.xpath('//div[@class="a-row a-spacing-none"][1]/a/span[1]/text()') + arr_price = [] + for price in prices: + arr_price.append(price) + + # 得到星级 + grades = contents.xpath('//span[@class="a-icon-alt"]/text()') + arr_grade = [] + for grade in grades: + if "平均" in grade: + arr_grade.append(grade) + #print(grade) + else: + pass + if arr_grade: + arr_grade.pop() + #print(len(arr_grades)) + + # 得到图片 + imgurls = contents.xpath('//a[@class="a-link-normal a-text-normal"]/img/@src') + arr_img = [] + + for imgurl in imgurls: + file = file("d:/jpg/" + str(num) + ".jpg","wb") + pic = urllib.request.urlopen(imgurl) + file.write(pic.read()) + file.close() + # 每一次下载都暂停1-3秒 + imgtime = random.randint(1, 3) + print("下载图片暂停" + str(imgtime) + "秒") + time.sleep(imgtime) + arr_img.append(imgurl) + num = num + 1 + #print(imgurl) + #print(len(arr_img)) + + # 写入excel + # 写入第一行 + for i in range(0, len(first)): + worksheet.write(0, i, first[i]) + + # 写入其他数据 + for j in range(0,len(arr_title)): + worksheet.write(count,0,arr_title[j]) + worksheet.write(count, 1, arr_brand[j]) + worksheet.write(count, 2, arr_detailurl[j]) + try: + worksheet.write(count, 3, arr_price[j]) + except Exception as err: + print(err) + worksheet.write(count, 3, "") + worksheet.write(count, 4, arr_grade[j]) + worksheet.insert_image(count, 5, "d:/jpg/" + str(count - 1) + ".jpg") + worksheet.write(count, 6, arr_img[j]) + count = count + 1 + + # 每一次下载都暂停5-10秒 + loadtime = random.randint(5, 10) + print("抓取网页暂停" + str(loadtime) + "秒") + time.sleep(loadtime) + + workbook.close() + b = time.clock() + print('运行时间:' + timetochina(b - a)) + input('请关闭窗口') diff --git a/amazon_us.py b/amazon_us.py new file mode 100644 index 0000000..9c88a2f --- /dev/null +++ b/amazon_us.py @@ -0,0 +1,98 @@ +# -*- coding: UTF-8 -*- +# ======================== +#=== Python version is 2.7.13 == +#== Author: Toryun == +#== Time:2017-08 == +#======================== +# 使用列表中已有的关键词,到亚马逊搜索results,并存入对应工作薄中 +import xlrd,requests,xlwt,re,lxml,os,datetime,urllib2 +from xlutils.copy import copy +def open_excel(urlname=' ',sheet=' '): + '''Input a urlname about a excel abs url,and the excel's sheetname.Then it would open a excel read the data + [通过绝对路径(urlname),打开一个现有的Excel表(data),提取sheet里面的指定列(col)内容,放入数组data_list''' + try: + urlname=raw_input("please input a url and name which is the excel's place in the computer like 'c:/js/s.xls':\n") + t=os.path.exists(urlname) + print t + while t==False: + urlname=raw_input("The filename is wrong! Please input a url and name which is the excel's place in the computer like 'c:/js/s.xls':\n")# 判断该表格是否存在 + print t + data=xlrd.open_workbook(urlname) #打开一个工作表 + if data.sheets()==None: + print "The excel has none !" # 判断Excel中的sheet是否为空 + else: + p=0 + z={} + for sheet in data.sheets(): + p+=1 + z[p]=sheet.name # 把表中的名字输入到字典中,方便后来用序号查询 + print p,sheet.name# 返回整个Excel中的表名 + try: + serial_num=int(raw_input("Please input the sheet's serial number which you want search(defult serial number is 1):\n")) + if serial_num in z: + table=data.sheet_by_name(serial_num) #通过表序获取 + rows=table.nrows # 获取列表行数和列数 + cols=table.ncols + else: + print "Your number is not in the serial number ,please input a correct number." + except TypeError or IOError,e: + print str(e) + serial_num=1 + col=int(raw_input("Please input a col what you want read (defualt col is 0):\n")) #输入想要读取的列 + if not isinstance(col,int) and (col>ncols or col<0): #判断输入列是否超出范围,是否为整型 + col=int(raw_input("Please input a col what you want read:\n")) + except Exception,e: + print str(e) + col=0 + except OSError as errno2: + print str(errno2) + data_list=[]#把数据读入数组存储 + start1=datetime.datetime.now() + for i in range(rows): + cell=table.cell(i,col).value#读取(i行,col列)单元格的值 + data_list.append(cell) + end1=datetime.datetime.now() + if i == rows: + print "读取工作表%d列用时:%f s"%(col,end1-start1) #计算读取工作表内容时间 + if data_list==None: + print 'sorry,it have no values!' #判断列是否为空 + return data_list +def key_result(url): + '''Through the extraction of keywords in the array, query from a website (especially Amazon) , return query_results + [通过提取到数组(data_list)里的关键词批量到某网站(特指Amazon)查询,返回查询结果(results)放入数组(arr_result)]''' + try: + headers=requests.head(url) # 获取信息头部 + arr_result=[] + start2=datetime.datetime.now() # 计算搜索结果时间 + for a in len(data_list): + url=url+data_list[a] + r=requests.get(url,headers=headers) + html=r.read() + contents=etree.HTML(html) # 把html 转化为 xml结构 + results=contents.xpath('//*[@id="s-result-count"]/text()') # 把搜索结果导入数组 + arr_result.append(results) + end2=datetime.datetime.now() + print "搜索结果用时:%f s"%(end2-start2) + print r.status_code + if r.status_code!='200': + return r.raise_for_status() + except HTTPError,e: + print "The Error code:",e.code +def Write_sheet(): + '''Import the results of the query (result) into the table column[把查询到的结果(result)导入表格列中]''' + start3=datetime.datetime.now() + data=copy(data) + for i in len(arr_result): + if table.cell(i,col+1).value!=None: + col+=1 + table.write(i,col+1,arr_result[i]) + end3=datetime.datetime.now() + print "写入表格用时:%f s"%(end3-start3) # 计算写入时间 + data.save(urlname) + +if __name__=='__main__': + open_excel() + key_result(url='https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=') + Write_sheet() + + diff --git a/csv_to_xls.py b/csv_to_xls.py index 060b24a..3d194c9 100644 --- a/csv_to_xls.py +++ b/csv_to_xls.py @@ -11,19 +11,10 @@ import re import xlwt import datetime -import sys -def progress(i): - '''Output the speed of progress ''' - sys.stdout.write('#') - sys.stdout.flush()#refresh the stdout -def rate_progress(i): - sys.stdout.write('\r%2d%%'.format(i) - sys.stdout.flush() def workbook_create(): '''Create sheet in workbook by xlwt创建表格''' workbook = xlwt.Workbook(encoding = 'utf-8') table1= workbook.add_sheet("data",cell_overwrite_ok=True)#取名data,可重写单元格 - table2= workbook.add_sheet("data1",cell_overwrite_ok=False) style = xlwt.XFStyle()#设置样式 font = xlwt.Font()#设置字体 font.name = 'SimSun' # 指定“宋体” @@ -34,7 +25,7 @@ def workbook_create(): alignment.vert=xlwt.Alignment.VERT_CENTER#单元格字符垂直居中 #格式: VERT_TOP, VERT_CENTER, VERT_BOTTOM, VERT_JUSTIFIED, VERT_DISTRIBUTED style.alignment=alignment#添加至样式 - return table1,table2,workbook + return table1,workbook def main(): file_path="C:\\Users\\Administrator\\Desktop\\1"#工作路径 @@ -50,16 +41,14 @@ def main(): T=False t1=datetime.datetime.now() - table1,table2,workbook=workbook_create() + table1,workbook=workbook_create() file_list=os.listdir(file_path)#Get filename with extension name列出文件 f=[]#Get old_filename获取旧文件名 n=[] t=0#row行数 l=0#parameter迭代参数 - l_=len(file_list) - - for i in range(l_): + for i in range(len(file_list)): for oldname in file_list: os.chdir(file_path)#编译时防止出现Python找不到工作目录错误 f.append(oldname) @@ -70,7 +59,7 @@ def main(): os.rename(oldname,newname) n.append(newname) print n[i] - new_url=file_path+os.sep+'('+str(i+1)+')'+'.csv' + new_url=file_path+os.sep+'('+str(i)+')'+'.csv' f_in=open(new_url, 'rb') text=csv.reader(f_in,dialect='excel') for line in text: @@ -80,12 +69,8 @@ def main(): for x in line: table1.write(l,0,'2018/{0}/{1}'.format(m,str(i+d))) table1.write(l,r,x) - table2.write(l,r,x) r+=1 l=l+1 - rate_progress(i) - progress(i) - t2=datetime.datetime.now() print 'The workbook is save in {0}\nThe time is {1}'.format(file_save,t2-t1) workbook.save(file_save) diff --git a/get_dimensions.py b/get_dimensions.py index aac9d57..f07fbde 100644 --- a/get_dimensions.py +++ b/get_dimensions.py @@ -101,7 +101,7 @@ def main(): data1.save(u) #保存复制表格 end=datetime.datetime.now() t=end-start#总用时 - print 'It save in {0}.\nTotal time: {1} s.'format(u,t) + print 'It save in {0}.\nTotal time: {1} s.'.format(u,t) if __name__== '__main__': main() diff --git a/get_ppc.py b/get_ppc.py new file mode 100644 index 0000000..fb06936 --- /dev/null +++ b/get_ppc.py @@ -0,0 +1,102 @@ +#-*- coding:UTF-8 -*- +# ======================== +#Python version is 2.7.13 +# Author: Toryun +#Date:2017-08- 28 +#Function:Get the inventory of amaozn's productions though by post +#======================== +import requests +import xlrd +import datetime +import os +import sys +import time +def File_path_choice(): + '''Select the file in the folder and return the selected file path.选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='C:/Users/Administrator/Desktop' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path +def requests_url(url): + '''Get the content of listing web page.获取listing网页内容''' + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0", +"Referer": +"https://www.amazon.com/", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +}#火狐浏览器头部 + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + r=requests.get(url,headers=headers,proxies=proxies) + return r.status_code + +def read_workbook(file_path): + '''Get the Url 获取URL''' + data=xlrd.open_workbook(file_path)#打开工作簿 + sheets=data.sheets() + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) + if sheet_index in range(1,len(sheets)+1): + t=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t=1 + + table=data.sheet_by_index(t-1)# 打开sheet + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0}'s cols,rows is {1},{2}".format(z[t],cols,rows)#打印该sheet中的列行数 + row_1st=table.row_values(0)#读取第一行 + asin_index=row_1st.index('URL')#返回URL列的所在列数 + URL=table.col_values(asin_index,1,rows-1)#读取URL列第二行到最后一行 + return URL +def progress(i): + r='\r{0}%{1}'.format(i,'#'*i) + sys.stdout.write(r) + sys.stdout.flush() +if __name__=='__main__': + file_path=File_path_choice() + URL=read_workbook(file_path) + b=int(raw_input('plz input the times you want loop:\n')) + for c in range(b): + for i in range(len(URL)): + time.sleep(3) + url=URL[i] + status=requests_url(url) + print status + progress(c) + diff --git a/get_ranks.py b/get_ranks.py index 164d278..944ada8 100644 --- a/get_ranks.py +++ b/get_ranks.py @@ -70,8 +70,6 @@ def main(): rank2=re.findall(r'>(#\d+|#\d+,\d{3})\sin\s<',r) print rank2 - - table1.write(i+1,cols,rank1[0]) table1.write(i+1,cols+1,rank2) diff --git a/postTocart.py b/postTocart.py new file mode 100644 index 0000000..1a621a4 --- /dev/null +++ b/postTocart.py @@ -0,0 +1,300 @@ +#-*- coding:UTF-8 -*- +# ======================== +#Python version is 2.7.13 +# Author: Toryun +#Date:2017-08- 28 +#Function:Get the inventory of amaozn's productions though by post +#======================== +import os +import re +import time +import xlrd +import xlwt +import datetime +import requests + +#----------------------------------------------------------------------------------------------------------------------------------- +def File_path_choice(): + '''Select the file in the folder and return the selected file path.选择文件夹中的文件,返回所选文件路径''' + t='D:\\Documents\\Downloads\stainless steel toilet brush holder.xlsx'#默认工作簿地址 + try: + file_path='D:\\Documents\\Downloads' + print '路径{0}文件夹中的文件和文件夹如下:'.format(file_path) + file_names=os.listdir(file_path)#列出下载文件夹中的文件名 + for i in range(len(file_names)): + print i+1,file_names[i] + file_num=int(raw_input("Default workbook is 1,plz input a number of serial number(default {0}):\nOr Enter a number more than the last option you could input a url of file\n ".format(t)))#默认文件名是t,或者输入比最后选项大的数 + if file_num in range(1,len(file_names)+1): + file_path=file_path+'/'+file_names[file_num-1] + if file_num>=len(file_names)+1: + file_path=str(raw_input("plz input a fileurl (like:D:\\Documents\\Downloads\1.xlsx\n")) + f=os.path.exists(file_path) + while f==False: + file_path=str(raw_input("Your file is not exsits,plz input a fileurl:\n")) + f=os.path.exists(file_path) + except Exception,e: + print str(e) + file_path=t + return file_path +#----------------------------------------------------------------------------------------------------------------------------------- +def read_excel(file_path): + '''读取Excel''' + data=xlrd.open_workbook(file_path)#打开工作簿 + sheets=data.sheets() + z={} + p=0 + for sheet in sheets: + p+=1 + z[p]=sheet.name + print p,z[p] + try: + sheet_index=int(raw_input("plz input index in the serial number(default 1):\n")) + if sheet_index in range(1,len(sheets)+1): + t=sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t=1 + + table=data.sheet_by_index(t-1)# 打开sheet + rows=table.nrows#计算表中列数和行数 + cols=table.ncols + print "{0}'s cols,rows is {1},{2}".format(z[t],cols,rows)#打印该sheet中的列行数 + row_1st=table.row_values(0)#读取第一行 + asin_index=row_1st.index('Asin')#返回Asin列的所在列数 + Asin=table.col_values(asin_index,1,rows-1)#读取Asin列第二行到最后一行 + return Asin + +#----------------------------------------------------------------------------------------------------------------------------------- +def requests_url(url): + '''Get the content of listing web page.获取listing网页内容''' + headers={"Host": +"www.amazon.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", +"Accept-Language": +"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1" +}#火狐浏览器头部 + proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费代理IP + session=requests.Session() + r=session.get(url,headers=headers) + return r.content,session + +#----------------------------------------------------------------------------------------------------------------------------------- +def get_form_parameter(r): + session_id=re.findall(r'',r) + merchantID=re.findall(r'',r) + tagActionCode=re.findall(r'',r) + storeID=re.findall(r'\s+\$(.*?)\s+<\/span>',r.content) + token=re.findall(r'',r.content) + requestID=re.findall(r'2Gh$ig!i5W$+TFv&l&)mp%-8Skug}o-M{mz>kACpiarD#0 z?+^H|m~I0s{~9EKe~b-$)6#qJy%uhR-`2wI@Y_K^d;*po+HeTtcYrz&cfz*Ao&a^> z&=|kFrR;b~*`u*1ISPJ7aj)V&*iKL%f_^!vf`Cu1GN9JMBOIRs4I&t7iKkT@mQz9o zVY}d;0kt8ng3fRoFd~c`3H~THx$s#%&!M>n8pZ6|6Zq#r=MldG+bu!N&8R=7d0rI* zjp5MaRA&)iP(kvJA$|?E2bQN{w#Gr{)I6?bcY4eUT?B`4KK~MI1q*Zu3yZcF{)9Gg z8O>=!SHNoanO&POehuUyeqGwNeW-FY)i7F>6jwo45x)VB7x5bC8sh8lCl$O2|AvAo zaj?wdBN^7 z9YV~R--YG+>Y-=Xg&#ukFpOG19hKpRrb|>;bJqEI`Qp;{8 z1*k`-nh~1VuKwjTJ3n(ne2w3O9hQj<8N~Ns%WK5n%5tsBA5Zib|2%Z^Em69j*(lvC zPOz}+Hm=`x?Tl>bLN~}@osuNT_9)-aBS%5D?Zi>cQ?7&2a#Ua5O^XW*AKYDiQczy3 z-naEAjS82CF3VSEsn~W|V|B_Ib_xnfKiNzQ$8QwervXeevUWzd!#b zQiC|JMp7&i7)deBa8WaSdgHT+i0?Rx3LootSG6U{TU;p>N6q}Jo8xwxZnAMudtb6j zN6lp4xgLqk>WwI&FiDQ|xpf}vv%>Lz925tI^0t!Y+s`tlLrC0j3EeD&)&|8EkyEDT z!=xZ(%7xDoDoIm#({-}<)A?n0kdXQoilm$QEOlCbqXp8iPEOL_PomAVPHfj=$I?l* zEk0WEg9mdDAI~jm^j4OC;>7UL+|uKh4ZP1XeuGC18ll_L2G+N1lxtfFuTQYlP#;k! z{Tq6w>Xju{`;sjcjU;laO=(}Xvay_wVc2L;YSkmBMiQ=*63X8CPIx5YQmduAbuCkJ zm<8K(pd2>yFx@0IMXr~b=wFhH;`;bd{)1-+L6ll*>TJrnqBPI;3*|?FG|wLa zUr1qIL3t07U@uH|soXbrz-4SvvcpBCC8@Wqw}vydyk)B*PBCGUTR$8{W%F{2*sk+z zWO+SwI)B6)m3&QYqX_rN>CG;$V<5ED*o=RU|8vom+L?N0cN4m&>-v~;jhKoV@lKgx zek%NQ^HVYXUccAvb(mh$Z#wwtHA7~A&r@bleMC28&aqYeM_G54@whkSO`1MaW6gj$ IZN@m_Z;2$TtN;K2 literal 0 HcmV?d00001 From 493913538142b6e7506d254a4b0aaf7acb89d8ee Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 16 Jun 2018 16:09:56 +0800 Subject: [PATCH 021/270] 2018/6/16 Uncomplete From 06eb8330849bf231612859758e4471349fe4d554 Mon Sep 17 00:00:00 2001 From: Toryun Date: Thu, 27 Jun 2019 00:55:04 +0800 Subject: [PATCH 022/270] Read CN to US shipping fee in google spreedsheet Use google-api-python-client --- CUSfee_Gspreed.py | 86 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 CUSfee_Gspreed.py diff --git a/CUSfee_Gspreed.py b/CUSfee_Gspreed.py new file mode 100644 index 0000000..a95b80a --- /dev/null +++ b/CUSfee_Gspreed.py @@ -0,0 +1,86 @@ +from __future__ import print_function +import httplib2 +import os +import pickle +from apiclient import discovery +from google_auth_oauthlib.flow import InstalledAppFlow +from google.auth.transport.requests import Request +try: + import argparse + flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() +except ImportError: + flags = None + +# If modifying these scopes, delete your previously saved credentials +# at ~/.credentials/sheets.googleapis.com-python-quickstart.json +SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly' +CLIENT_SECRET_FILE = 'client_secret.json' +APPLICATION_NAME = 'Google Sheets API Python Quickstart' + + +def get_credentials(): + """Gets valid user credentials from storage. + + If nothing has been stored, or if the stored credentials are invalid, + the OAuth2 flow is completed to obtain the new credentials. + + Returns: + Credentials, the obtained credential. + """ + creds = None + # The file token.pickle stores the user's access and refresh tokens, and is + # created automatically when the authorization flow completes for the first + # time. + if os.path.exists('token.pickle'): + with open('token.pickle', 'rb') as token: + creds = pickle.load(token) + # If there are no (valid) credentials available, let the user log in. + if not creds or not creds.valid: + if creds and creds.expired and creds.refresh_token: + creds.refresh(Request()) + else: + flow = InstalledAppFlow.from_client_secrets_file( + 'credentials.json', SCOPES) + creds = flow.run_local_server() + # Save the credentials for the next run + with open('token.pickle', 'wb') as token: + pickle.dump(creds, token) + + return creds + +def CUS_shippingfee(weight): + """ + + Creates a Sheets API service object and return a array of CN_TO_US shipping fee in this spreadsheet : + https://docs.google.com/spreadsheets/d/1c7EkmwQNWVEwP2qgKERSx6tQnrb5tvqSidyY3m5BP_M/edit#gid=0it + """ + credentials = get_credentials() + http = credentials.authorize(httplib2.Http()) + discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?' + 'version=v4') + service = discovery.build('sheets', 'v4', http=http, + discoveryServiceUrl=discoveryUrl) + + spreadsheetId = '1c7EkmwQNWVEwP2qgKERSx6tQnrb5tvqSidyY3m5BP_M' + rangeName = ['xuni_shipping_fee!A2:B80','xuni_shipping_fee!H2:I80'] + result = service.spreadsheets().values().batchGet( + spreadsheetId=spreadsheetId, range=rangeName).execute() + values = result.get('values', []) + + if not values: + print('No data found.') + else: + for row in values: + if weight<=2000: + for i in xrange(len(row[0][0])): + if weight<=int(row[0][0][i])*1000: + return float(row[0][1][i]) + break + else: + for i in xrange(len(row[1][0])): + if weight<=int(row[1][0][i])*1000: + return float(row[1][1][i]) + break + + + From 219a6afacd61b4aba90e7db47893f4a04c0a7294 Mon Sep 17 00:00:00 2001 From: Toryun Date: Thu, 27 Jun 2019 11:29:44 +0800 Subject: [PATCH 023/270] Process the excel of SMT Products Included set the CN_price, OverseaWarehouse price(Not completed, only part) --- captchaImg_sso.py | 401 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 401 insertions(+) create mode 100644 captchaImg_sso.py diff --git a/captchaImg_sso.py b/captchaImg_sso.py new file mode 100644 index 0000000..7545068 --- /dev/null +++ b/captchaImg_sso.py @@ -0,0 +1,401 @@ +# -*- coding:UTF-8 -*- +# Author: Toryun +# Python version: 2.7.16 +# Windows version: 10 +# Date: 2019-6-15 +# Function: Get the sku from the youkeshu when you have permission in Youkeshu获取有颗树sku资料库(服务器资料库或公司统表表格)的成本和价格,进行试算导入表格(适用于产品上传和覆盖产品) +import re +import os +import math +import time +import random +import datetime +import xlrd,xlwt,xlutils +from PIL import Image +import psutil#处理多平台进程的python包 +import getpass#获取当前系统用户名的跨平台模块 +from CUS_Yuntuexpress import CUS_shippingfee +# If modifying these scopes, delete the file token.pickle. +SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly'] + +# The ID and range of a sample spreadsheet. +SAMPLE_SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms' +SAMPLE_RANGE_NAME = 'Class Data!A2:E' + +url='sso.youkeshu.com'#有颗树sku资料库url +discount = {"1":0,"2":0.1,"3":0.15,"4":0.19,"5":0.25,"6":0.30,"7":0.35,"8":0.40,"9":0.45,"10":0.5}#营销折扣:d +exchange_rate = {"1":6,"2":6.1,"3":6.2,"4":6.3,"5":6.4,"6":6.5,"7":6.6,"8":6.7,"9":6.8,"10":6.9,"11":7.0}#美元兑人民币汇率:T +Marginal_Profit_Ratio = {"1":0,"2":0.5,"3":0.10,"4":0.15,"5":0.17}#边际利润率:t +OW = {"1":"US","2":"RU","3":"ES","4":"UK","5":"DE","6":"FR","7":"IT","8":"AU","9":"BR"}#海外仓集合ow +def currency_USDCNY(): + '''Get tbe realtime exchange rate of USD/RMB 获取实时的美元兑人民币汇率''' + url = 'http://webforex.hermes.hexun.com/forex/quotelist?code=FOREXUSDCNY&column=Code,Price' + r = requests.get(url) + rate = re.findall(r'\d+',r.content) + rate = float(rate[0])/10000 + return rate + +def capatchaImg(url): + '''Get the verification code and enter it manually.获取验证码并手动输入''' + T=1 + r=0 + while T==1:#如果输入的循环次数出现异常,则再次输入 + try: + loop=int(raw_input('Plz input a number what you want to get the captchaImage from {0}:\n'.format(url))) + if r==11:#默认循环一次,如果连续12次输入错误的话 + loop=1 + T=0 + except ValueError: + r=r+1 + print r + print "Your number is not correct,plz input again.\nYou have {0} times left".format(11-r) + + header0 = { + "Accept": "image/webp,image/apng,image/*,*/*;q=0.8", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "zh-CN,zh;q=0.9", + "Connection": "keep-alive", + "Host": "{0}".format(url), + "Referer": "{0}".format(url), + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"}#验证码URL服务器头 + proxies={"HTTPS": "HTTPS://122.242.96.30:808"}#代理IP + while T=0: + try: + captchaimg_url = "http://sso.youkeshu.com/include/of/index.php?a=captcha&c=of_base_com_com&key=of_base_sso_main&height=25"#验证码url + r=requests.get(captchaimg_url,headers=header0,proxies=proxies) + time.sleep(3) + print r.status_code + if r.status_code==200: + sl='Plz kill the cmd.exe if it is still exisit after 4s,then input the characters in the picture\n + path_img="d:jpg" + _img_0 = path_img+'/'+str(i)+".png" + if not os.path.exists(path_img): + os.makedirs(path_img,0755) + with open(_img_0,"wb") as _img_1: + _img_1.write(r.content) + _img_1.close() + img = Image.open(_img_0) + img.show() + command = 'taskkill /F /IM cmd.exe /F /IM conhost.exe/T'#强制终止指定进程名命令 + os.system(command) + num = str(raw_input('Plz input the character in the picture:\n')) + pids = psutil.pids()#进程数组,判断加载照片程序的是哪个程序 + for pid in pids: + p = psutil.Process(pid)#get process name according to pid + process_name = p.nam() + if process_name == 'photolaunch.exe': + command1 = 'taskkill /F /IM photolaunch.exe' + os.system(command1) + elif process_name == 'Microsoft.Photos.exe': + command2 = 'taskkill /F /IM Microsoft.Photos.exe' + else: + process_picture = raw_input("Plz input the process name of the program which process your picture:\n") + command3 = 'taskkill /F /IM {0}'.format(process_picture) + print 'The pictures are saved in {0}\n The total time is {1}'.format('d:jpg',t) + captcha = int(num) + T = 1 + return captcha + except IOError,e: + print str(e) + pass +def login_youkeshu(url,captcha): + '''Login to a youkeshu SKU database and save sessions.登陆有颗树sku资料库,保存会话''' + name = 'zhongjin' + pwd = 'zYKS1234' + capatcha = captcha + post_parameter = { + "name":"{0}".format(name) + "pwd":"{0}".format(pwd) + "capatcha":"{0}".format(capatcha) + } + headers1 = {Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", + "Accept-Encoding":"gzip, deflate", + "Accept-Language":"zh-CN,zh;q=0.9", + "Cache-Control":"max-age=0", + "Connection": "keep-alive", + "Host": "sso.youkeshu.com", + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"} + session = requests.Session() + r = session.post(url,data=post_parameter,headers=headers1) + return r,session +def search_sku(sku,session): + '''Get the sku's weight and cost of the Youkeshu database then return.读取资料库的sku重量和成本价并返回''' + url="http://192.168.5.5:802/showsku/index?sku={0}".format(sku) + headers2 = { + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", + "Accept-Encoding": "gzip, deflate", + "Accept-Language": "zh-CN,zh;q=0.9", + "Connection": "keep-alive", + "Host": "192.168.5.5:802", + "Referer": "{0}".format(url), + "Upgrade-Insecure-Requests": "1", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" + } + proxies={"HTTPS": "HTTPS://122.242.96.30:808"}#代理IP + r = session.get(url,headers=headers2,proxies=proxies) + cost=re.findall(r'打包后\):\s+([1-9]\d*.\d*|0.\d*[1-9]\d*)g<\/td>',r.text) + weight=re.findall(r' 参考价:<\/td>\s+(.*?)¥<\/td>',r.text) + if cost: + cost=int(cost[0]) + else: + print 'cost is none' + cost='None' + if weight: + weight=int(weight[0]) + else: + print 'weight is none' + weight='None' + return cost,weight +def file_path_choice(): + '''select the file in the folder and return the selected file path.选择文件夹中的文件并返回路径''' + user = getpass.getuser()#获取当前系统用户名 + f = 'C:\\Users\\{0}}\\Desktop'.format(user)#默认文件夹路径 + t = f+'\\'+'products.xls' + try: + file_path = f + print '路径{0}下的文件和文件夹如下:\n'.format(file_path) + file_names = os.listdir(file_path)#列出桌面所有文件名 + for i in xrange(len(file_names)): + print i+1,file_names[i] + file_num = int(raw_input('Defualt workbook is 1,plz input a number of this list:\nOr if the file is not in here,plz enter a number big than the last option then you could input a url of the file\n').format(t))#默认文件名是t,或者输入比最后选项大的数 + if file_num in xrange(1,len(file_names)+1): + file_path = file_path+'/'+file_names[file_num-1] + if file_num >= len(file_names)+1: + file_path = str(raw_input('Plz input a file url (like:D:\\Documents\\Downloads\1.xlsx\n')) + New_file_path = os.path.exists(file_path) + while New_file_path == False:#判断该文件是否存在如果不存在,则继续输入 + file_path = str(raw_input('Plz input a file url (like:D:\\Documents\\Downloads\1.xlsx)\nThe file is not exist\n')) + New_file_path = os.path.exists(file_path) + except Exception,e: + print str(e) + file_path = t + return file_path +def read_sku(file_path): + '''Get the sku form products.xls.从产品表格里获取产品商家编码和价格信息并返回''' + data = xlrd.open_workbook(file_path)#打开工作簿 + sheets = data.sheets() + z = {} + p = 0 + t = 1 + for sheet in sheets: + p+=1 + z[p] = sheet.name + print p,z[p] + try: + sheet_index = int(raw_input('Plz input index in the serial numbe(defualt(1):\n')) + if sheet_index in xrange(1,len(sheets)+1): + t = sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t == 1 + table = data.sheet_by_index(t-1)#打开sheet + rows = table.nrows#计算行列数 + cols = table.ncols + print "{0}'s cols,rows is {1},{2}".format(z[t],cols,rows) + row_1st = table.row_values(0)#读取表格第一行 + sku_index = row_1st.index('商家编码')#返回商家编码所在列数 + skuArray_index = row_1st.index('价格信息')#返回价格信息所在列数 + sku = table.col_values(sku_index,1,rows-1)#获取sku + skuArray = table.col_values(skuArray_index,1,rows-1)#获取价格信息 + return sku,skuArray +def Process_sku(sku,p,skuArray): + ''' + To separate the single attribute of sku and the multi-attribute of sku. PS: similar to delete duplicates in an array.对商品编码进行处理,分开单属性sku和多属性sku。PS:类似于删除数组中的重复项 + + ''' + i = 0 + t,sku0 = [] + + for i in xrange(len(sku)): + t = re.findall(r'[A-Z]{2}\d+',sku[i]) + for i in t: + if not i in sku0: + sku0.append(i) + if len(sku0) == 1: + skuArray0 = '{"skuArray": [{"价格":"{0}","库存":"999","商家编码":"{1}"}]}'.format(p,sku0[0]) + else: + skuArray0 = re.findall(r'\"属性\"\"\:(.*?)商家编码\W+[A-Z]{2}\d+\"',skuArray[i]) + + return sku1 +def read_all(sku): + '''Get the weight and cost of sku in the company product list which is in the local computer if can't get them from the website.读取公司产品统表里的sku的重量和成本价''' + user = getpass.getuser()#获取当前系统用户名 + file_path = 'C:\\Users\\{0}}\\Desktop\公司产品统表.xlsx'.format(user)#默认文件路径 + if not os.path.exists(file_path): + try: + file_path=raw_input('Plz input the url of 公司产品统表(like:C:\\Users\\{0}}\\Desktop\公司产品统表.xlsx\n'.format(user)) + except Exception,e: + print str(e) + + data = xlrd.open_workbook(file_path)#打开工作簿 + sheets = data.sheets() + z = {} + p = 0 + t = 1 + for sheet in sheets: + p+=1 + z[p] = sheet.name + print p,z[p] + try: + sheet_index = int(raw_input('Plz input index in the serial numbe(defualt(1):\n')) + if sheet_index in xrange(1,len(sheets)+1): + t = sheet_index + else: + print 'The digital is wrong,plz input a correct number' + except Exception,e: + print str(e) + t == 1 + table = data.sheet_by_index(t-1)#打开sheet + rows = table.nrows#计算行列数 + cols = table.ncols + print "{0}'s cols,rows is {1},{2}".format(z[t],cols,rows) + row_1st = table.row_values(0)#读取表格第一行 + sku_index = row_1st.index('SKU')#返回SKU所在列数 + cost_index = row_1st.index('成本价')#返回成本价所在列数 + weight_index = row_1st.index('重量')#返回重量所在列数 + SKU = table.col_values(sku_index,1,rows-1)#获取sku + cost = table.col_values(cost_index,1,rows-1)#获取成本价 + weight = table.col_values(weight_index,1,rows-1)#获取重量 + try: + index = SKU.index(sku) + cost,weight = int(cost[index]),int(weight[index]) + return cost,weight + except Exception,e: + print str(e) + print "Plz update the 公司产品统表 to newest version,can't find the sku" + pass +def Oversea_warehouse(sku): + '''如果添加海外仓,怎么合成sku和skuArray''' + Price_ID = + CN = '","属性":{"200007763":"201336100"},"库存":"999","商家编码":"' + CUS = '","属性":{"200007763":"201336106"},"库存":"35","商家编码":"' + CRU = '","属性":{"200007763":"201336103"},"库存":"35","商家编码":"' + CDE = '","属性":{"200007763":"201336101"},"库存":"35","商家编码":"' + CAU = '' + ID_ow = {"CN":CN,"CUS":CUS,"CRU":CRU,"CDE":CDE,"CUK":CUK,"CBR":CBR,"CES":CES} + + +def pre_price(cost,weight,d,T,f,h,ow): + '''Calculate the price before the discount.计算折前价 + .Choose the promotional discount, marginal profit margin, USD/CNY exchange rate.选择相应的促销折扣、边际利润率,美元兑人民币汇率 + @cost:成本 + @weight:毛重 + @s:运费 + @T:汇率 + @d:营销折扣 + @t:边际利润率 + @f:判断是full_charge还是包邮模式 + @p0:full charge 0%边际利润价格 + @p1:新基准利率0%边际利润价格 + @p:价格字典包含了去海外仓的价格 + @h:判断是否添加海外仓 + @ow:Overseas_warehouse海外仓是一个数组 + ''' + + + t = 0 + p = {} + + if f == 0:#full charge + p0 = (0.97+1.01*cost)/(0.87*T) + if p0<2: + t = random.uniform(0.0001,0.03) + elif p0<5: + t = random.uniform(0.03,0.05) + elif p0<8: + t = random.uniform(0.05,0.08) + elif p0<10: + t = random.uniform(0.08,0.1) + else: + t = random.uniform(0.1,0.17) + p["p_CN"] = (cost*1.01+0.97)/(T*(0.87-t)*(1-d)) + else:#新基准利率价格 + if weight>5: + s0 = weight*0.05617+16.17#如果5g<重量w或者属性为406/407(纯电池) + s = s0 + else: + s1 = 6.72#重量w小于30g + s2 = 6.72+(weight-30)*0.06972# 30g<=w<80g + s3 = 6.72+50*0.06972+(weight-80)*0.05277#w>=80g + s = s1 + p1 = (88*(cost+s)+26.4)/(76.56*T) + if p1<2: + t = random.uniform(0.0001,0.03) + elif p1<5: + t = random.uniform(0.03,0.05) + elif p1<8: + t = random.uniform(0.05,0.08) + elif p1<10: + t = random.uniform(0.08,0.1) + else: + t = random.uniform(0.1,0.17) + p["p_CN"] = (cost+0.3+s)/(T*(0.87-t)*(1-d)) + if "CUS" in ow:#有美国海外仓 + + if weight>9900: + return ValueError + else: + s_us = CUS_shippingfee(weight) + p["p_CUS"] = (1.01*cost+0.57+s_cus)/(T*0.86(1-t)*(1-d)) + elif "CRU" in ow: + if weight<=100: + s_cru == 20 + elif weight<=200: + s_cru == 25 + elif weight<=300: + s_cru = 30+(weight-300)/400 + else: + s_cru = 150+math.ceil((weight-3000)/1000)*43 + p["p_CRU"] = (1.01*cost+0.57+s_cru)/(T*0.86(1-t)*(1-d)) + elif "CES" in ow: + s_ces = weight*40/1000+16 + p["p_CES"] = (1.01*cost+0.57+s_ces)/(T*0.86(1-t)*(1-d)) + elif "CAU" in ow: + s_cau = weight*38/1000+29 + p["p_CAU"] = (1.01*cost+0.57+s_cau)/(T*0.86(1-t)*(1-d)) + + elif "CFR" in ow: + if weight*0.001<2: + s_cfr = weight*0.001*54+25 + else: + s_cfr = weight*0.001*50+20 + p["p_CFR"] = (1.01*cost+0.57+s_cfr)/(T*0.86(1-t)*(1-d)) + elif "CUK" in ow: + s_cuk = weight*40/1000+18 + p["p_CUK"] = (1.01*cost+0.57+s_cuk)/(T*0.86(1-t)*(1-d)) + elif "CIT" in ow: + if weight*0.001<3: + s_cit = weight*0.001*55+25 + else: + s_cit = weight**0.001*50+20 + p["p_CIT"] = (1.01*cost+0.57+s_cit)/(T*0.86(1-t)*(1-d)) + elif "CDE" in ow: + s_cde = weight*45/1000+20 + p["p_CDE"] = (1.01*cost+0.57+s_cde)/(T*0.86(1-t)*(1-d)) + else "CBR" in ow: + if weight*0.001<30: + s_cbr = weight*0.001*80+25 + p["p_CBR"] = (1.01*cost+0.57+s_cbr)/(T*0.86(1-t)*(1-d)) + + return p + + + + + + + + + + + + + + +t0=datetime.datetime.now() +t1 = datetime.datetime.now() +t = t1-t0#测试时间长短 + From 93381fbe5d484a0458e03b8381de935a4d76a8d1 Mon Sep 17 00:00:00 2001 From: yotro Date: Fri, 28 Jun 2019 10:33:48 +0800 Subject: [PATCH 024/270] Update Completed Yuntushippingfee py --- CUSfee_Gspreed.py => CUS_Yuntuexpress.py | 69 ++++++++++++------------ 1 file changed, 36 insertions(+), 33 deletions(-) rename CUSfee_Gspreed.py => CUS_Yuntuexpress.py (57%) diff --git a/CUSfee_Gspreed.py b/CUS_Yuntuexpress.py similarity index 57% rename from CUSfee_Gspreed.py rename to CUS_Yuntuexpress.py index a95b80a..b5a37df 100644 --- a/CUSfee_Gspreed.py +++ b/CUS_Yuntuexpress.py @@ -1,24 +1,30 @@ +# -*- coding:UTF:8 -*- +# Author:Toryun +# Python version:2.7.13 +# Date:18/3/25 +# Function:Read and return the shipping fee of the fast yunexpress China-US from Google Sheets +# google-api-python-client +# 对Google系列的产品进行api访问控制, +# Google sheet的最大单元格数:5000000 +# 由于目前我不知道batchGet中range匹配多行的写法,所以暂时用get代替 + from __future__ import print_function import httplib2 import os import pickle -from apiclient import discovery +from googleapiclient import discovery from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request -try: - import argparse - flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() -except ImportError: - flags = None + + # If modifying these scopes, delete your previously saved credentials # at ~/.credentials/sheets.googleapis.com-python-quickstart.json -SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly' -CLIENT_SECRET_FILE = 'client_secret.json' -APPLICATION_NAME = 'Google Sheets API Python Quickstart' -def get_credentials(): + + +def CUS_shippingfee(weight): """Gets valid user credentials from storage. If nothing has been stored, or if the stored credentials are invalid, @@ -27,7 +33,11 @@ def get_credentials(): Returns: Credentials, the obtained credential. """ + SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly'] + CLIENT_SECRET_FILE = 'credentials.json' + APPLICATION_NAME = 'Google Sheets API Python Quickstart' creds = None + p = 0 # The file token.pickle stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time. @@ -40,47 +50,40 @@ def get_credentials(): creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( - 'credentials.json', SCOPES) + CLIENT_SECRET_FILE, SCOPES) creds = flow.run_local_server() # Save the credentials for the next run with open('token.pickle', 'wb') as token: pickle.dump(creds, token) - return creds -def CUS_shippingfee(weight): + """ Creates a Sheets API service object and return a array of CN_TO_US shipping fee in this spreadsheet : https://docs.google.com/spreadsheets/d/1c7EkmwQNWVEwP2qgKERSx6tQnrb5tvqSidyY3m5BP_M/edit#gid=0it """ - credentials = get_credentials() - http = credentials.authorize(httplib2.Http()) - discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?' - 'version=v4') - service = discovery.build('sheets', 'v4', http=http, - discoveryServiceUrl=discoveryUrl) + + service = discovery.build('sheets', 'v4',credentials=creds) spreadsheetId = '1c7EkmwQNWVEwP2qgKERSx6tQnrb5tvqSidyY3m5BP_M' - rangeName = ['xuni_shipping_fee!A2:B80','xuni_shipping_fee!H2:I80'] - result = service.spreadsheets().values().batchGet( - spreadsheetId=spreadsheetId, range=rangeName).execute() + if weight<=2000: + rangeName = 'xuni_shipping_fee!A2:B80' + else: + rangeName = 'xuni_shipping_fee!H2:I80' + result = service.spreadsheets().values().get( + spreadsheetId=spreadsheetId,range=rangeName).execute() values = result.get('values', []) - if not values: print('No data found.') else: + for row in values: - if weight<=2000: - for i in xrange(len(row[0][0])): - if weight<=int(row[0][0][i])*1000: - return float(row[0][1][i]) - break - else: - for i in xrange(len(row[1][0])): - if weight<=int(row[1][0][i])*1000: - return float(row[1][1][i]) - break + if weight<=float(row[0])*1000: + p = float(row[1]) + break + + return p From b331b7898dbdebdd9a1acd6b8a032df7eab24f4c Mon Sep 17 00:00:00 2001 From: yotro Date: Sat, 29 Jun 2019 19:27:47 +0800 Subject: [PATCH 025/270] Update captchaImg_sso.py --- captchaImg_sso.py | 88 +++++++++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 34 deletions(-) diff --git a/captchaImg_sso.py b/captchaImg_sso.py index 7545068..773abe5 100644 --- a/captchaImg_sso.py +++ b/captchaImg_sso.py @@ -198,30 +198,13 @@ def read_sku(file_path): row_1st = table.row_values(0)#读取表格第一行 sku_index = row_1st.index('商家编码')#返回商家编码所在列数 skuArray_index = row_1st.index('价格信息')#返回价格信息所在列数 - sku = table.col_values(sku_index,1,rows-1)#获取sku + skulist = table.col_values(sku_index,1,rows-1)#获取所有的sku skuArray = table.col_values(skuArray_index,1,rows-1)#获取价格信息 - return sku,skuArray -def Process_sku(sku,p,skuArray): - ''' - To separate the single attribute of sku and the multi-attribute of sku. PS: similar to delete duplicates in an array.对商品编码进行处理,分开单属性sku和多属性sku。PS:类似于删除数组中的重复项 + return skulist,skuArray - ''' - i = 0 - t,sku0 = [] - for i in xrange(len(sku)): - t = re.findall(r'[A-Z]{2}\d+',sku[i]) - for i in t: - if not i in sku0: - sku0.append(i) - if len(sku0) == 1: - skuArray0 = '{"skuArray": [{"价格":"{0}","库存":"999","商家编码":"{1}"}]}'.format(p,sku0[0]) - else: - skuArray0 = re.findall(r'\"属性\"\"\:(.*?)商家编码\W+[A-Z]{2}\d+\"',skuArray[i]) - - return sku1 -def read_all(sku): - '''Get the weight and cost of sku in the company product list which is in the local computer if can't get them from the website.读取公司产品统表里的sku的重量和成本价''' +def read_all(): + '''Get all sku, weight and cost in the company product list which is in the local computer if can't get them from the website.读取公司产品统表里的sku,重量和成本价并返回这三个数组(考虑到公司统表过大)''' user = getpass.getuser()#获取当前系统用户名 file_path = 'C:\\Users\\{0}}\\Desktop\公司产品统表.xlsx'.format(user)#默认文件路径 if not os.path.exists(file_path): @@ -257,29 +240,29 @@ def read_all(sku): cost_index = row_1st.index('成本价')#返回成本价所在列数 weight_index = row_1st.index('重量')#返回重量所在列数 SKU = table.col_values(sku_index,1,rows-1)#获取sku - cost = table.col_values(cost_index,1,rows-1)#获取成本价 - weight = table.col_values(weight_index,1,rows-1)#获取重量 + costlsit = table.col_values(cost_index,1,rows-1)#获取成本价 + weightlist = table.col_values(weight_index,1,rows-1)#获取重量 + return SKU,costlsit,weightlist +def Search_sku(sku,costlist,weightlist): + ''' + Get the price and weight of sku from the list then return + 查找sku相对应的重量和成本并返回 + ''' try: index = SKU.index(sku) - cost,weight = int(cost[index]),int(weight[index]) + cost,weight = float(costlist[index]),float(weightlist[index]) return cost,weight except Exception,e: print str(e) print "Plz update the 公司产品统表 to newest version,can't find the sku" + pass -def Oversea_warehouse(sku): - '''如果添加海外仓,怎么合成sku和skuArray''' - Price_ID = - CN = '","属性":{"200007763":"201336100"},"库存":"999","商家编码":"' - CUS = '","属性":{"200007763":"201336106"},"库存":"35","商家编码":"' - CRU = '","属性":{"200007763":"201336103"},"库存":"35","商家编码":"' - CDE = '","属性":{"200007763":"201336101"},"库存":"35","商家编码":"' - CAU = '' - ID_ow = {"CN":CN,"CUS":CUS,"CRU":CRU,"CDE":CDE,"CUK":CUK,"CBR":CBR,"CES":CES} + def pre_price(cost,weight,d,T,f,h,ow): - '''Calculate the price before the discount.计算折前价 + ''' + Calculate the price before the discount.计算折前价 .Choose the promotional discount, marginal profit margin, USD/CNY exchange rate.选择相应的促销折扣、边际利润率,美元兑人民币汇率 @cost:成本 @weight:毛重 @@ -381,7 +364,44 @@ def pre_price(cost,weight,d,T,f,h,ow): p["p_CBR"] = (1.01*cost+0.57+s_cbr)/(T*0.86(1-t)*(1-d)) return p + +def Oversea_warehouse(sku,p,ow): + '''如果添加海外仓,怎么合成sku和skuArray''' + CN = '{"价格":"{0}","属性":\{{0},"库存":"999","商家编码":"{0}"}]'format(sku) + CUS = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CUS"}]'format(p["p_CUS"],sku) + CRU = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CRU"}]'format(p["p_CRU"],sku) + CDE = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CDE"}]'format(p["p_CDE"],sku) + CAU = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CDE"}]'format(p["p_CAU"],sku) + CUK = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CDE"}]'format(p["p_CUK"],sku) + CFR = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CDE"}]'format(p["p_CFR"],sku) + CIT = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CDE"}]'format(p["p_CIT"],sku) + CBR = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CBR"}]'format(p["p_CBR"],sku) + CES = '{"价格":"{0}","属性":\{{0},"库存":"35","商家编码":"{0}_CBR"}]'format(p["p_CES"],sku) + skuArray_ow = {"CN":CN,"CUS":CUS,"CRU":CRU,"CDE":CDE,"CUK":CUK,"CBR":CBR,"CES":CES} + +def Process_sku(sku,p,skuArray): + ''' + To separate the single attribute of sku and the multi-attribute of sku. PS: similar to delete duplicates in an array. + 对商品编码进行处理,分开单属性sku和多属性sku。PS:类似于删除数组中的重复项 + + ''' + i = 0 + t,sku0 = [] + + for i in xrange(len(sku)): + t = re.findall(r'[A-Z]{2}\d+',sku[i]) + for i in t: + if not i in sku0: + sku0.append(i) + if len(sku0) == 1: + skuArray0 = '{"skuArray": [{"价格":"{0}","库存":"999","商家编码":"{1}"}]}'.format(p,sku[i]) + else: + sku_Attributes = re.findall(r'属性\W+\{(.*?),\"库存\W+\d+\W+商家编码\W+[A-Z]{2}\d+\"\}',skuArray[i]) + skuArray0 = + return sku1 + + From b5fd934e080289bc084daa9c8033404db91452a7 Mon Sep 17 00:00:00 2001 From: yotro Date: Thu, 2 Jan 2020 10:00:07 +0800 Subject: [PATCH 026/270] Create Dijkstra.py The Shortest Path Problem in Grapgh --- Grapgh Theory/Dijkstra.py | 71 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Grapgh Theory/Dijkstra.py diff --git a/Grapgh Theory/Dijkstra.py b/Grapgh Theory/Dijkstra.py new file mode 100644 index 0000000..30e970c --- /dev/null +++ b/Grapgh Theory/Dijkstra.py @@ -0,0 +1,71 @@ +#-*-coding:UTF-8-*- +#Python version:2.7.13 +#System:window7 +#Time:2019-11-11 +#Function:The Dijkstra algorithm for Shortest Path Problem in Grapgh +def dij(start, graph): + n = len(graph) + # 初始化各項資料,把costs[start]初始化為0,其他為無窮大 + # 把各個頂點的父結點設定成-1 + costs = [99999 for _ in range(n)] + print costs + costs[start] = 0 + parents = [-1 for _ in range(n)] + visited = [False for _ in range(n)] # 標記已確定好最短花銷的點 + t = [] # 已經確定好最短花銷的點列表 + while len(t) < n: + # 從costs裡面找最短花銷(找還沒確定的點的路徑),標記這個最短邊的頂點,把頂點加入t中 + minCost = 99999 + minNode = None + for i in range(n): + if not visited[i] and costs[i] < minCost: + minCost = costs[i] + minNode = i + print minNode,minCost + t.append(minNode) + + visited[minNode] = True + # 從這個頂點出發,遍歷與它相鄰的頂點的邊,計算最短路徑,更新costs和parents + for edge in graph[minNode]: + print "{0}+{1}<{2}".format(minCost,edge[1],costs[edge[0]]) + if not visited[edge[0]] and minCost + edge[1] < costs[edge[0]]: + costs[edge[0]] = minCost + edge[1] + parents[edge[0]] = minNode + print t,visited,costs,parents + return costs, parents + + +# 主程式 + +# Data +data = [ + [1, 0, 8], + [1, 2, 5], + [1, 3, 10], + [1, 6, 9], + [2, 0, 1], + [0, 6, 2], + [3, 6, 5], + [3, 4, 8], + [0, 5, 4], + [5, 6, 7], + [5, 3, 8], + [5, 4, 5] +] +n = 7 # 結點數 + +# 用data資料構建鄰接表 +graph = [[] for _ in range(n)] +for edge in data: + graph[edge[0]].append([edge[1], edge[2]]) + graph[edge[1]].append([edge[0], edge[2]]) + + +# 從1開始找各點到1的最短路徑(單源最短路徑) +# costs: 各點到店1的最短路徑 +# parents: 各點連結的父結點,可以用parents建立最短路徑生成樹 +costs, parents = dij(2, graph) +print('costs') +print(costs) +print('parents') +print(parents) From a9b69427a1593bf0f6891e590d272d47ea681746 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 11 Feb 2020 14:16:13 +0800 Subject: [PATCH 027/270] Create pneumonia.py The realtime data of 2019-nCoV in China --- pneumonia.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 pneumonia.py diff --git a/pneumonia.py b/pneumonia.py new file mode 100644 index 0000000..f5d2cef --- /dev/null +++ b/pneumonia.py @@ -0,0 +1,72 @@ +#-*- encoding: UTF-8 -*- +#Function: Getting the realtime data of Chinese 2019-nCoV +#API: the source we don't who create but thank you + +import requests,re +import json +import time +import csv + + +url = 'https://service-f9fjwngp-1252021671.bj.apigw.tencentcs.com/release/pneumonia' +html = requests.get(url).text +unicodestr=json.loads(html) #将json转化为dict +dat = unicodestr["data"].get("statistics")["modifyTime"] #获取data中的内容,取出的内容为str +timeArray = time.localtime(dat/1000) +formatTime = time.strftime("%Y-%m-%d %H:%M", timeArray) + +url = 'http://api.map.baidu.com/geocoder/v2/' +output = 'json' +ak = 'XeCfCY777qDMTKSqyc3LTiGPnMA7fqzy'#你的ak + +new_list = unicodestr.get("data").get("listByArea") #获取data中的内容,取出的内容为str + +j = 0 +print("###############" + " 读取中 &" + "& 数据来源:丁香医生 API来源未知" + "###############") +while j < len(new_list): + a = new_list[j]["cities"] + s = new_list[j]["provinceName"].encode('utf-8') + + header = ['时间', '城市', '确诊人数', '疑似病例', '死亡人数', '治愈人数' ,'经度','纬度'] + with open('./'+s+'.csv','w') as f: + f_csv = csv.writer(f) + f_csv.writerow(header) + f.close() + + def save_data(data): + with open('./'+s+'.csv','a+') as f:#'a+'参数是追加和可读的意思 + f_csv = csv.writer(f) + f_csv.writerow(data) + f.close() + + b = len(a) + i = 0 + while i Date: Tue, 11 Feb 2020 14:49:30 +0800 Subject: [PATCH 028/270] create dir for googleapi --- .DS_Store | Bin 0 -> 10244 bytes Google_Sample/.DS_Store | Bin 0 -> 6148 bytes .../CUS_Yuntuexpress.py | 0 .../Google_tranJS.py | 0 .../Google_translate_js_API.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store create mode 100644 Google_Sample/.DS_Store rename CUS_Yuntuexpress.py => Google_Sample/CUS_Yuntuexpress.py (100%) rename Google_tranJS.py => Google_Sample/Google_tranJS.py (100%) rename Google_translate_js_API.py => Google_Sample/Google_translate_js_API.py (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a0e57cccd236695db3c313c5a979d41f441c73d8 GIT binary patch literal 10244 zcmeHM-EJF26h4!5;*1BL;^fMLKeU>GXIH8Q{Hpfhu%` zB08GczkiDFw*Hbu0t<9itM~Jq-Zh<`*qqb5uGRZ-PVa_R?~fV165S;ipO`|rM=ctl zwkWRWN?b+g_Hi8p7w8azJyH>+9HL2%9!Jc~GTexU+V+?!6<0=NQxA{PR+BvW>{CyR zXJ%CVd%!=S25=5MkHCvVUDWoZl@6>e;7M2tPw%8w?nA#rK75Z+8)&hJT#Fq7(Zh#v z&-DGnd6L6!XuR$qmLWc&u66FOoP~8*7}6myoEuHF+{3dbW&!4M$dBkV_!yr2wGk}Gu+>DbjKHSGCTD?ortrA2z-Ejd>F6v-MpO%zv=;VX-zUkCYVks5(M7yN zL^VJUbEfzUM+I}G+Sq{i30E#qebfV3O7L2?2{Vj%sW5XPv+x9H5B#>li9=8SfnC+c zT4sZNSj?v$6Cq|t+XtLeDyEz<_APpzIh%5&ja6oriZ5k;4iIC27_~U&Xyu{8(K^}< z@#)A>)WoRf*(>6w{QNC`CtBTlJ!E@4jM9_a7wxF$5996a-^9vl;oMtqTh^Mjw!ZdF zqZ^JJaVs7TYpuZ}e%f!v-F8|(2*X}hZ?(Vjy>YYr{=G1WTYlgTB-nR7sC@mv58QBE z3rB%Fly(})7nW7Dip}!o$;s92%l7rk?bFNl$<7YfuiZR7En1r&SMKaR?jIeWe0Tc& zbIfrlBK<)~?fv=P!4c+wX_&8zQ3a zn|O5C7zDjA=)enRfFtERijWswvgrVK4_PvpUDbKy=klqH%=74o#!}lw7B=Y#Ms0x6 zr2sNl$$H>p^st5LOi-a6j0^URN3q79%-Ugs9A|Co&*Hrg6CHr`wLg^)msWb7vW(G zKJttjV%FHDFX3yx?NVJ%Zlz|M;Inoc*JE5nXI2E?N6NPH}}P zDtul43!bp#K305=XunSCW-+guIWvm4j_Ae;oTK4$kD6H(Sy*C5HZE9sll;RU@>i@k zV>PMyz_nC3!6hae)!atLV@<(8Fc1s`1Aol`?`)Cbo?+-IsmWW6Wa;#0k1HKpLrX{U<|Fx=Kbn`MZ)g3i z;Yg)n=wKii=rSO^FQt(C|BQc`-X>o|LInfCz<*^R4aU>)h`aN<_1iw>uFV`b93m3e pib0{>`3T?-IY$n3(&n?+j4K^mL#ZNuO(({OfD#fa82AMS-T^e5SYQAE literal 0 HcmV?d00001 diff --git a/CUS_Yuntuexpress.py b/Google_Sample/CUS_Yuntuexpress.py similarity index 100% rename from CUS_Yuntuexpress.py rename to Google_Sample/CUS_Yuntuexpress.py diff --git a/Google_tranJS.py b/Google_Sample/Google_tranJS.py similarity index 100% rename from Google_tranJS.py rename to Google_Sample/Google_tranJS.py diff --git a/Google_translate_js_API.py b/Google_Sample/Google_translate_js_API.py similarity index 100% rename from Google_translate_js_API.py rename to Google_Sample/Google_translate_js_API.py From 96285e0010df3733d3047d270ee2d887ef7051c5 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 11 Feb 2020 14:52:33 +0800 Subject: [PATCH 029/270] create dirs for amazon and pygame --- .DS_Store | Bin 10244 -> 8196 bytes AWS/.DS_Store | Bin 0 -> 8196 bytes AWSRegister.py => AWS/AWSRegister.py | 0 .../AWS_captchaImage.py | 0 AWSsellerxt.py => AWS/AWSsellerxt.py | 0 AddtoCart.py => AWS/AddtoCart.py | 0 Amazozn_email.py => AWS/Amazozn_email.py | 0 .../Get_AmazonProducts_num.py | 0 .../Get_Amazon_products_num.py | 0 Get_Amazon_tag.py => AWS/Get_Amazon_tag.py | 0 Get_description.py => AWS/Get_description.py | 0 Get_questions.py => AWS/Get_questions.py | 0 .../PyAWS_Store_Reviews.py | 0 amazon.py => AWS/amazon.py | 0 amazon_cn.py => AWS/amazon_cn.py | 0 amazon_us.py => AWS/amazon_us.py | 0 captchaImg_sso.py => AWS/captchaImg_sso.py | 0 get_dimensions.py => AWS/get_dimensions.py | 0 get_feedbacknum.py => AWS/get_feedbacknum.py | 0 get_img.py => AWS/get_img.py | 0 get_ppc.py => AWS/get_ppc.py | 0 get_ranks.py => AWS/get_ranks.py | 0 1.py => Pygame/1.py | 0 2.py => Pygame/2.py | 0 3.py => Pygame/3.py | 0 4.py => Pygame/4.py | 0 5.py => Pygame/5.py | 0 27 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 AWS/.DS_Store rename AWSRegister.py => AWS/AWSRegister.py (100%) rename AWS_captchaImage.py => AWS/AWS_captchaImage.py (100%) rename AWSsellerxt.py => AWS/AWSsellerxt.py (100%) rename AddtoCart.py => AWS/AddtoCart.py (100%) rename Amazozn_email.py => AWS/Amazozn_email.py (100%) rename Get_AmazonProducts_num.py => AWS/Get_AmazonProducts_num.py (100%) rename Get_Amazon_products_num.py => AWS/Get_Amazon_products_num.py (100%) rename Get_Amazon_tag.py => AWS/Get_Amazon_tag.py (100%) rename Get_description.py => AWS/Get_description.py (100%) rename Get_questions.py => AWS/Get_questions.py (100%) rename PyAWS_Store_Reviews.py => AWS/PyAWS_Store_Reviews.py (100%) rename amazon.py => AWS/amazon.py (100%) rename amazon_cn.py => AWS/amazon_cn.py (100%) rename amazon_us.py => AWS/amazon_us.py (100%) rename captchaImg_sso.py => AWS/captchaImg_sso.py (100%) rename get_dimensions.py => AWS/get_dimensions.py (100%) rename get_feedbacknum.py => AWS/get_feedbacknum.py (100%) rename get_img.py => AWS/get_img.py (100%) rename get_ppc.py => AWS/get_ppc.py (100%) rename get_ranks.py => AWS/get_ranks.py (100%) rename 1.py => Pygame/1.py (100%) rename 2.py => Pygame/2.py (100%) rename 3.py => Pygame/3.py (100%) rename 4.py => Pygame/4.py (100%) rename 5.py => Pygame/5.py (100%) diff --git a/.DS_Store b/.DS_Store index a0e57cccd236695db3c313c5a979d41f441c73d8..9910e3b413dc3b86e43954c59b21f8ae74236c70 100644 GIT binary patch delta 621 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAsJJm;H$S7|WFCRj^~?;84B-sH zo;mr+NjdpRAZ0-81T>)YKNtXc3=B|JIq8PM$@#ejU@-^*mC4O_ae?aRFj@A4)A{E? zM})rI{1hCrLLkcvGLVg({65;*1BL;^fMLKeU>GXIH8Q{Hpfhu%` zB08GczkiDFw*Hbu0t<9itM~Jq-Zh<`*qqb5uGRZ-PVa_R?~fV165S;ipO`|rM=ctl zwkWRWN?b+g_Hi8p7w8azJyH>+9HL2%9!Jc~GTexU+V+?!6<0=NQxA{PR+BvW>{CyR zXJ%CVd%!=S25=5MkHCvVUDWoZl@6>e;7M2tPw%8w?nA#rK75Z+8)&hJT#Fq7(Zh#v z&-DGnd6L6!XuR$qmLWc&u66FOoP~8*7}6myoEuHF+{3dbW&!4M$dBkV_!yr2wGk}Gu+>DbjKHSGCTD?ortrA2z-Ejd>F6v-MpO%zv=;VX-zUkCYVks5(M7yN zL^VJUbEfzUM+I}G+Sq{i30E#qebfV3O7L2?2{Vj%sW5XPv+x9H5B#>li9=8SfnC+c zT4sZNSj?v$6Cq|t+XtLeDyEz<_APpzIh%5&ja6oriZ5k;4iIC27_~U&Xyu{8(K^}< z@#)A>)WoRf*(>6w{QNC`CtBTlJ!E@4jM9_a7wxF$5996a-^9vl;oMtqTh^Mjw!ZdF zqZ^JJaVs7TYpuZ}e%f!v-F8|(2*X}hZ?(Vjy>YYr{=G1WTYlgTB-nR7sC@mv58QBE z3rB%Fly(})7nW7Dip}!o$;s92%l7rk?bFNl$<7YfuiZR7En1r&SMKaR?jIeWe0Tc& zbIfrlBK<)~?fv=P!4c+wX_&8zQ3a zn|O5C7zDjA=)enRfFtERijWswvgrVK4_PvpUDbKy=klqH%=74o#!}lw7B=Y#Ms0x6 zr2sNl$$H>p^st5LOi-a6j0^URN3q79%-Ugs9A|Co&*Hrg6CHr`wLg^)msWb7vW(G zKJttjV%FHDFX3yx?NVJ%Zlz|M;Inoc*JE55pgH$(JPT-5jmu)?LMN}QS`djM!6Szo?;z(ky75sCs|4* zFB_w+!w47wBVYuKfD!l~2=JS&<#5mMezx&dMQUy1%xHcl3Z<|AKmjZcfI3yP~tD7)bGl zy0xs5=IavK^$M?;YanC)c`CCc{S)*bq>rv($ zjou!g6aGClS01Uf$qcFhpr)w=Z$7T%tg{3bZcVY*m-4k%_=R{PQA`0G0urGP4`UB<+A=( z_L;S0ug2Vg`tAA-@3H(y^woSCT8|NE4}tq3)ML&6-|m0^-yR?qsS#))0e5iPKRqGv zm|HgxXs(@6KT@^mxJ|HLLgUkMtWU?W^&f_uXAD(M9_=PrdMN+=MS#y^{M6PMfz}fE E4eG7u7ytkO literal 0 HcmV?d00001 diff --git a/AWSRegister.py b/AWS/AWSRegister.py similarity index 100% rename from AWSRegister.py rename to AWS/AWSRegister.py diff --git a/AWS_captchaImage.py b/AWS/AWS_captchaImage.py similarity index 100% rename from AWS_captchaImage.py rename to AWS/AWS_captchaImage.py diff --git a/AWSsellerxt.py b/AWS/AWSsellerxt.py similarity index 100% rename from AWSsellerxt.py rename to AWS/AWSsellerxt.py diff --git a/AddtoCart.py b/AWS/AddtoCart.py similarity index 100% rename from AddtoCart.py rename to AWS/AddtoCart.py diff --git a/Amazozn_email.py b/AWS/Amazozn_email.py similarity index 100% rename from Amazozn_email.py rename to AWS/Amazozn_email.py diff --git a/Get_AmazonProducts_num.py b/AWS/Get_AmazonProducts_num.py similarity index 100% rename from Get_AmazonProducts_num.py rename to AWS/Get_AmazonProducts_num.py diff --git a/Get_Amazon_products_num.py b/AWS/Get_Amazon_products_num.py similarity index 100% rename from Get_Amazon_products_num.py rename to AWS/Get_Amazon_products_num.py diff --git a/Get_Amazon_tag.py b/AWS/Get_Amazon_tag.py similarity index 100% rename from Get_Amazon_tag.py rename to AWS/Get_Amazon_tag.py diff --git a/Get_description.py b/AWS/Get_description.py similarity index 100% rename from Get_description.py rename to AWS/Get_description.py diff --git a/Get_questions.py b/AWS/Get_questions.py similarity index 100% rename from Get_questions.py rename to AWS/Get_questions.py diff --git a/PyAWS_Store_Reviews.py b/AWS/PyAWS_Store_Reviews.py similarity index 100% rename from PyAWS_Store_Reviews.py rename to AWS/PyAWS_Store_Reviews.py diff --git a/amazon.py b/AWS/amazon.py similarity index 100% rename from amazon.py rename to AWS/amazon.py diff --git a/amazon_cn.py b/AWS/amazon_cn.py similarity index 100% rename from amazon_cn.py rename to AWS/amazon_cn.py diff --git a/amazon_us.py b/AWS/amazon_us.py similarity index 100% rename from amazon_us.py rename to AWS/amazon_us.py diff --git a/captchaImg_sso.py b/AWS/captchaImg_sso.py similarity index 100% rename from captchaImg_sso.py rename to AWS/captchaImg_sso.py diff --git a/get_dimensions.py b/AWS/get_dimensions.py similarity index 100% rename from get_dimensions.py rename to AWS/get_dimensions.py diff --git a/get_feedbacknum.py b/AWS/get_feedbacknum.py similarity index 100% rename from get_feedbacknum.py rename to AWS/get_feedbacknum.py diff --git a/get_img.py b/AWS/get_img.py similarity index 100% rename from get_img.py rename to AWS/get_img.py diff --git a/get_ppc.py b/AWS/get_ppc.py similarity index 100% rename from get_ppc.py rename to AWS/get_ppc.py diff --git a/get_ranks.py b/AWS/get_ranks.py similarity index 100% rename from get_ranks.py rename to AWS/get_ranks.py diff --git a/1.py b/Pygame/1.py similarity index 100% rename from 1.py rename to Pygame/1.py diff --git a/2.py b/Pygame/2.py similarity index 100% rename from 2.py rename to Pygame/2.py diff --git a/3.py b/Pygame/3.py similarity index 100% rename from 3.py rename to Pygame/3.py diff --git a/4.py b/Pygame/4.py similarity index 100% rename from 4.py rename to Pygame/4.py diff --git a/5.py b/Pygame/5.py similarity index 100% rename from 5.py rename to Pygame/5.py From 5704b3f0af75cd93c9da169311d947f572a08420 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 1 Mar 2020 00:52:22 +0800 Subject: [PATCH 030/270] get-pip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 下载太慢,备份 --- .DS_Store | Bin 8196 -> 8196 bytes Pygame/.DS_Store | Bin 0 -> 6148 bytes get-pip.py | 20651 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 20651 insertions(+) create mode 100644 Pygame/.DS_Store create mode 100755 get-pip.py diff --git a/.DS_Store b/.DS_Store index 9910e3b413dc3b86e43954c59b21f8ae74236c70..68625c7f7a2c0f400ee47e4702c17c30ba723b5f 100644 GIT binary patch delta 61 zcmV-D0K)%-K!iY$PYE0V0003101yDNTCE4O1qcQR0UWc`5VrvbHa9FFGB7iDtee>-zOigJ6=7!v0DS2`1poj5 diff --git a/Pygame/.DS_Store b/Pygame/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..de5fc6d436626a4593a92b055fe82089d037eb31 GIT binary patch literal 6148 zcmeHKv1$V`43*jo1hQo8=r0H)ZFUpVp>uzrBpCzAlA)XbynRnnOOM`gQ$vab_LD8i zXFoX05)s{84oi`_h)mIlN@YMeJ!rZM=Lt}`#>?@v-yKgojJe<~2>0H}QWkQS_n-U! z=!qSrlhsJS$B}+dBmLH+{BD8o++#A33?u`|!1WnG&ZbOfj@c&z$v`sj%>eI*f<~-? z&C#w7bXEcYJ4~BEx2Hd_Z~|BZnY+dn)hIDEDhKs&*lYMVM-LaZFJqnf@>lVq zQFv%EchTyYeKL>?^clGK;hg#Z8NbqCk>3x=Q8JJW{4)l$+rDl$I8@};U&mvvEog6O s6#6wP5a^bQftHFf;63tSMz?@^_`{|}~") + + def b85decode(b): + _b85dec = [None] * 256 + for i, c in enumerate(iterbytes(_b85alphabet)): + _b85dec[c] = i + + padding = (-len(b)) % 5 + b = b + b'~' * padding + out = [] + packI = struct.Struct('!I').pack + for i in range(0, len(b), 5): + chunk = b[i:i + 5] + acc = 0 + try: + for c in iterbytes(chunk): + acc = acc * 85 + _b85dec[c] + except TypeError: + for j, c in enumerate(iterbytes(chunk)): + if _b85dec[c] is None: + raise ValueError( + 'bad base85 character at position %d' % (i + j) + ) + raise + try: + out.append(packI(acc)) + except struct.error: + raise ValueError('base85 overflow in hunk starting at byte %d' + % i) + + result = b''.join(out) + if padding: + result = result[:-padding] + return result + + +def bootstrap(tmpdir=None): + # Import pip so we can use it to install pip and maybe setuptools too + import pip._internal + from pip._internal.commands.install import InstallCommand + from pip._internal.req import InstallRequirement + + # Wrapper to provide default certificate with the lowest priority + class CertInstallCommand(InstallCommand): + def parse_args(self, args): + # If cert isn't specified in config or environment, we provide our + # own certificate through defaults. + # This allows user to specify custom cert anywhere one likes: + # config, environment variable or argv. + if not self.parser.get_default_values().cert: + self.parser.defaults["cert"] = cert_path # calculated below + return super(CertInstallCommand, self).parse_args(args) + + pip._internal.commands_dict["install"] = CertInstallCommand + + implicit_pip = True + implicit_setuptools = True + implicit_wheel = True + + # Check if the user has requested us not to install setuptools + if "--no-setuptools" in sys.argv or os.environ.get("PIP_NO_SETUPTOOLS"): + args = [x for x in sys.argv[1:] if x != "--no-setuptools"] + implicit_setuptools = False + else: + args = sys.argv[1:] + + # Check if the user has requested us not to install wheel + if "--no-wheel" in args or os.environ.get("PIP_NO_WHEEL"): + args = [x for x in args if x != "--no-wheel"] + implicit_wheel = False + + # We only want to implicitly install setuptools and wheel if they don't + # already exist on the target platform. + if implicit_setuptools: + try: + import setuptools # noqa + implicit_setuptools = False + except ImportError: + pass + if implicit_wheel: + try: + import wheel # noqa + implicit_wheel = False + except ImportError: + pass + + # We want to support people passing things like 'pip<8' to get-pip.py which + # will let them install a specific version. However because of the dreaded + # DoubleRequirement error if any of the args look like they might be a + # specific for one of our packages, then we'll turn off the implicit + # install of them. + for arg in args: + try: + req = InstallRequirement.from_line(arg) + except Exception: + continue + + if implicit_pip and req.name == "pip": + implicit_pip = False + elif implicit_setuptools and req.name == "setuptools": + implicit_setuptools = False + elif implicit_wheel and req.name == "wheel": + implicit_wheel = False + + # Add any implicit installations to the end of our args + if implicit_pip: + args += ["pip"] + if implicit_setuptools: + args += ["setuptools"] + if implicit_wheel: + args += ["wheel"] + + # Add our default arguments + args = ["install", "--upgrade", "--force-reinstall"] + args + + delete_tmpdir = False + try: + # Create a temporary directory to act as a working directory if we were + # not given one. + if tmpdir is None: + tmpdir = tempfile.mkdtemp() + delete_tmpdir = True + + # We need to extract the SSL certificates from requests so that they + # can be passed to --cert + cert_path = os.path.join(tmpdir, "cacert.pem") + with open(cert_path, "wb") as cert: + cert.write(pkgutil.get_data("pip._vendor.certifi", "cacert.pem")) + + # Execute the included pip and use it to install the latest pip and + # setuptools from PyPI + sys.exit(pip._internal.main(args)) + finally: + # Remove our temporary directory + if delete_tmpdir and tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +def main(): + tmpdir = None + try: + # Create a temporary working directory + tmpdir = tempfile.mkdtemp() + + # Unpack the zipfile into the temporary directory + pip_zip = os.path.join(tmpdir, "pip.zip") + with open(pip_zip, "wb") as fp: + fp.write(b85decode(DATA.replace(b"\n", b""))) + + # Add the zipfile to sys.path so that we can import it + sys.path.insert(0, pip_zip) + + # Run the bootstrap + bootstrap(tmpdir=tmpdir) + finally: + # Clean up our temporary working directory + if tmpdir: + shutil.rmtree(tmpdir, ignore_errors=True) + + +DATA = b""" +P)h>@6aWAK2mqQq_DmnV=tvg;000#L000jF003}la4%n9X>MtBUtcb8d5e!POD!tS%+HIDSFlx3GPKY +$P~rjrP)h>@6aWAK2mnAs@l0m_Pvb`c003_S000jF003}la4%n9ZDDC{Utcb8d0kO4Zo@DP-1Q0q8SE +6P(>Xwfj$MoHf@(`KQCU(&8g71HO0ki&o<#cYNZz>|C(zo>JZGyl;FMx!FrO6t%vRrOrPh9=?L}8oY6 +ou)77Hd@$a4r7F5rryfn~JTAHWO)@Mv!(a4fto86JiEF(QHSJ}y)-GntEpbmcJyNSL0Vx@Gi7c>xAuL +EgIxovfWq|0NvR`+SC`IVq5DSMEVyuc5y>N3AD=LF+DESFFQK3yL&bIL-tGT-b6~%(tWCE +QA8qFLP)h +>@6aWAK2mpz=P003}la4%nJZggdGZeeUMUtei%X>?y-E^v9BT5WUVwh{iWUx +CPTLo%Uw_N7faZj@LSe+0>2VY0AW=lB#CeT+5=Vd1~%QBm2CNi>%{~X^l-m6*=W~&jiBzj|)~KQo^RL-ia`q>d6a^DnH=JcoDppIT>zpfvvxyoI6S@pQ4^NpWvUvf7nBu +=ST-Ta4$G +~01lcqxI4VmYsPne%e7BVAXbijf)+04g}2W*3FrPDmouTuB0Y;>SSSh=z7kTx%N9t-i|VFtR8#+i;_q +HONs*G%817Is6CyoaQ+vTcSA0(?Tc4jqxsh0&%5EtSu7$yx`ypzwlNiqWr)YHHmA?#_sq6LhPN&N^L?+GoC4MAGoNb)&jf?^;EAjRR0 +d>DZbYqKungv%ZZmuqh@QXMW(r7yy +XE9Q%y;pC`-1<7T0&=UO2E2C4?4Gy9Pbn-Cd#2)lxE9Sk7e*t9W;H_jH!L8r5odK4S25QLl@UF$lY)C +l^XdWrkFl)+1hMZf;N5>orGzM6Ywq&XUvQ42Aj`g))?vh$RWQd<`QvY&vD*JX2dyj!9@>nOxsoyoKrM +zbh3Y~ +0(Ubwj{j#BFyaD(S*E;Q<~A@VW3tdv|GCFQ69G$}wuoHjHTaG~Xg!LZ>9)F-k6(5RVPmBf&De#=$LxKTgFxl#4PRzWQR|<0QT>SETLZCp6b;c|7)@$lJGy~qN^q+WE +jEybRO*I)3K@3~`d!qY1CW=cakN{L?;J{wFx!I;rY`L#AlVf?3)8gBHc&o9h=M+PE5z$JR{=3ygm=I|?rmTu{;tCQSRVIlDiWo@@g#J&bagZ0LQN}5lEdtVJMU=JJ*|!;;A?8K0qSrFW0wk?t +)pOt3uRabbod}>t?_NaMAE!(rcU*%#3P#pbIvJq*ud4!}8wHnXofM)@2aL!_Qs<=}!#;V+`L|Q+5w1M +@EPL2m=^oJ6wA&=EBG@vUbIJGi!m4+@ajvJBkLJwk2j;^W_FM3&k+z5zvreJS>Y1?$`gNHvIA&=L)1%vs(2Fm9~JB`^kBfUT +(4VK520UJ+tt#VN@n-}x&m7N +*f~?;LX2IEA=BB-L9~l2uqghmJsB{uAVjT?eO%7F^3%xt$)fCHx0~TRdX5d4T7AO)l9H9q;SvBg61lD +FiSa938y(J$N8k(O`ZWzTfk;S?Enekzh%EbVy7fCuXh2bwJkh{iVYD1S5=nF>Sl=i6fbX4FwnCga2C?*#g4iY)uBEP-Y_#H_U6(w>;qO|`eJVVuNfuVM}UT=E6i8mhFBA4U{ +I!uK)KpkOU2_im+RQ|VsNw^()PsnI@@P#VI{YNq6nlr`#JZa-28?CmA=TwnlE|4$^xpI_;IHT^?0|Hw +YWr{W8w;^P2~zs~@dJv>1PqkS*^Xw>ej;B%wb%Pi=*0Sl53Qk3ESbC*th`j{04VLCE$_bLPGP(N$!Z3 +FucZgvq#fw<)f6nxu+4-bfZ2KWH?%mt1z0Em5pUEMkOQns-sJZBn<-OOyo+TLsfD}c)T3EChs>cd0V; +8_IqiF^(X>i7CICXKK%|nZtVTCm_7 +#H4cu6f%e^D-i-1A*b;;({va2^Tn``_Zw)EVF#oksIxr1#Fp}fxUB`7IdV0B=11 +aC2rfwXxX`aENNew$wZ^GF;YE&|WYa0?=I@0@6@3mHw(u?ZR5S=vpoXot6^MuB?5%O=1GpTg36k`4qM +g2}#A&yf#Mt&C9%OW6K)yt`E+Ty?9Y9M@OWvXcPypCXMRz4S=<4iWh!erv+Me^GH~dVQhEZe7`)ExUG +Vh>{fUW!?0{X3j;WNnQu*|?ZjF8aO#&*#{BO^lPKF;j~FY-=tUYX@tQE0UKvB`bgI7)!Wfh# +43cKX~g8s4RkTd>%FTG|1f{08SN_;>jN4_DZCwvhRr-P@Eq3%VXH$nreJ+?AS_F!RR@>O^nE(w%C+yN +{lFgpoH3eH6u56>^>xK1Y-a-ni2rH|xK9dz^=dF5#D7wu_Fu!AUMOmK5fML|5>~^Ax)ux9L)eDy<$@D +cHjEZ@5D#!(;ajvQn~2nnqENt36o4EoeN0dtrAn;D2a7xq!Dt_R0_3T!yZe +y)ovxmpWR*=AuOE~VFu#nfW!r<+dgY|>up!z?cSRV)y>0ZF$iYR1KkHNCa=ELU;?s$h}j3zm*W*}80} +M^^*pLa6Jp8s2;Ot630viuc{XV22DKH^uGo3su?IKrt$NNs185P*LFo&HhuO};nXEkV1D6I(TP>%=|K_Re+ +=_UwmZlb7A=2w$FgNzAEepUbd(^c_>@LkP1b#y9OTmoLevZQk5_cmCk-v3J6(8vN2|I(UK}IvQT*ztJ +m#il#(xYRR(k3q3}>a8tV7Bs4NI>1T1EHodfS5(_M;otv6*&dvKDCYWda^X>yxJFMxFh1ote=fmz>8~TFmd2s+ITq%nZ)Uf +kcVlol7<+&y-Pn&J%2}6+IL8k$F=v`@LGde)iau0R96yYcIjA5c2Z&IK(9%BIxwtty@MVyjl+X@9&f$ +(9YRPibyf#;%eQ@J3BJBr_U?ummohK +gX`titgneyl=ykNCZ?eF^ZPI>t~N$ISMS$4&=ZfC-)BPxr#jd5En!U9j4t7mAN|$moAiO9KQH000080 +6;_WOy68vlKu(+05m2502}}S0B~t=FJEbHbY*gGVQepAVRL0;Z*6U1Ze%WSdDR+gZ`(NXyMG1YBCxdQ +7`wpUmjK3Io5$8@>jZi9wkQgMmS~$BS<;eJ65pc#{bndq5+yn*?ttE&fYuT*vwPu4lz&Bl1n}ah4SMS~R +OgsY@mmZ=RLAQ+qY4w=6|DqaxQ_<}7o&Cc6}HMUkrj&};?AGIXVbk46NpQ?vP{LA)~Wr{u0o8Jux*#@ +DRMw0g_4@}iJCrh(XW6o=@i#bcfoEOpecM0vxN0;(Zs{*>^VSD%|VEVZJaIvt!#SpZLqTxphp3ING2T +}l2Rib}nyM3$ZjSuYzpcexnAhxrzH%AXphS#r-d`~nwc2s$eg=CLiS9Jbof3Nh$|kh)?S&mTg_lK+AK +=vrjl;Tx4uSgnNQJD%&H@*Ji;ltZ>Mxo)vT$N-}&MUx`sJ!zj`UteB>9IwwmE-vqG=$pI6`!jmBxTf~ +a&E4tg`OOVj#PZ$p@}En)Zje7Nu5a&Nzdv7oq|3`&dU1KTJUbv`aF|TZthqZD6xUTrol6|V+6k37lnv +Lkl*MLBaFr@`@YU3KtrNE>=>wN&mNeP&nRZsHc?x1gJh3^R~@+M{UZ?kvsuM!V%VRY5Tr0O4^tli4F=v%jubgk6LLf%XGT# +xtY7G%JQ158e(42ghuu^E_%~ +9<03n>kyr~uog#aT__SEL+u4mI`n^N#QuSk_w(@gwIFJkX^{2LbDDn>LBgcI=*89a2L$@+9AZv~+7IU +q4+An-_6ND>JkkZ#&0U+;Nx{<~pkC%xc}nvN44cMN7fe99?-zwAgWof99#& +A9SNa&G2{jdm-}3iNfI0RDeFlTdm7+91rL~+#G-tj$r~>^}u_+KM~oa0bZV2|z-OPuTIQ!UbhxKA2er+H4TIhvibA^sK{(e+DT@toOB*H=u +z{Z*Ja0Nh%=G6NC_J0p$n}?q#6p;Vtn^cf%Gwu&*^G723(ZBZYKe;SC+!oD40?y#un%?IC?y0N+eP3N +j%Mbes|h_D^5}A@1?jKFqMi8l)V&YTG{X$xOpw>Up@YUEa?)WRxAW7s%ry9D?P@{jSuFWf90sgjMjEY +f)FDD0>iA-^FJLHLKCF5Sbf^I#%)ml5bgc)D50e$=qSLL8q=!ncOHFaPYPhQC^WXOLT#fM$I9AnnTsO +5}DBZA^A4sbtoH}?VdX(^6+j=w8M2cQ%i3^sAlelYXT0oDim--6s9Z&_N9$*S4OC*F|o%jmwe{O<`%K +_m3obn<7Nda9*lrS!TfpLvz4wOh?hc!oq>jb$fYsc|vaG9uqfIL1< +HOjuJ{pv=40I+9;OPdH7>>RX!)4>hh) +d@=}QbuTi5f)pc8HjLkRLGyy;A<|w${|qN1D1`^3*_J+u9M|z|G9WZ87S!GdRY#$Ivm;2hqJ}321B|H`(OyPTqP+6E7>em%2(AUnw-1I4X{@CNa!|`DN?7nG{2QqxBTw#du +Y(mKS2~2_Jk%nopDk8mpEYXG~GGYH*q;JWKOVMHM@RSZr}0!s$eo*;50;5rGA0e%Mw~2!$5+Dn`Ics_ +a-$>zANK6w{3{NB;W?_+cxyZUkw0+ISjM?5Pj-`@gtu|EH6xogp7(wPMKQ7G+@OV=T3w@Fp;rU=0^i{ +-=9?`ouCW?PsVc}7jQ-$ +`fq3B}!ifC_%gG90Ur3>zR*-b4C>I+1kP!s2=sr0|MBT>vTkHB^v9iIg96Q(#U9mDiRjs7*0v5319i0 +Qx99W~!>HG*jhPKiKnN5pG6ZB5&Jj_)kmdWwi3`2@!CjuM3I;H9#4D2?%?L+a|1pc0&`+oW|x>agMS1 +vwmikH*b{KQQthQN_VwqnhAx29Z&%HKk^cS^<<3$u+Cc4(u#da!wZxcT8Pg=@c<(JfH$+JM{-NavXt`mIv>Zza@pC8^MuAN~_@IozM +nK}?n%{tQTWq+>cO9{{Zh)&K{aD!x>o_!Fwy==f@vcTbl{(gitH*VF*o7?5~wB_XYhn0)NTfalzJ4Ik +0go=TW~`ufj)F8&k!UP2!Bh?Kd@w6%&m8wUGMvW!HRPZ;ug{KO +^cwIno|=Te&6M@u5YXCj`=4l@_15+(A!K4#WIyGUdnn&>S9sbFJTH)7D`Bz4uFTAdO^?<89@H(NP9=v +>4Sr}3VS^B1WhskN3Vi9l`E?~}Cnn*#%ybsCk{No#=O!(<)i304omm{zF0@5BIQj#CV2fv)%LNY7%(r +)hgtS-p(vzvRz;=h8;rYCN85H2&ABgzY*IM&@XyDU+%7A{CLanA{k+tC7a{q&sV{G2u`XJuNtCv1$84 +Jm>;?ex|K`FW9=p?*Fgf$-=OdtX4r715tu#hMF-f<5B^uLHcleZeXcQ^j)#sPW`(K{DdKK$zm(02m=v +42p$=8~?Uy_fs0JlfUnfc@W4O9KQH000080NGUAOy*s~PMQh;08AkO02=@R0B~t=FJEbHbY*gGVQepA +VRL10VRCb2axQRromp*<+_n+^zQ2OlgQ4AIPmL4w%b^$4wVl*JP#Z;Epg11{p2Xc{Pb&!|b$8n!|Gm% +fMIt4g?POt`C2~0Aygf5Rt=H?naV=Qe8QC_h<4Oy~v@m_QUawbs)t*>U?0eHIQ4~y`x>gy+?{r)DMil +OSwesV2dpOAE5MII5G7Rtftiz)bPv%ka&h1c1ZF(bXozvg2i#E!%cWqm*991W~ym$~z)v8>}r-%%D7U +tXu9aGB22-Wa9FWXbcO&~uAQ()pGF;!^!Ke4=|*~>$(xYdeZ`8polrLS+5YSn5*3V{BugC=t9_KO|c6 +h*^N(BXEqT9q}|ntf2hnDgI7-Tl<66F1m<6I7PJYbt@$RLS)AYQ^w_WnQt4R!gD&R15HW5bCal9giSq +`#?`mgB5Zzs9j%)J&Y`Av4>PX%!;0@v&oI{V?f8KJaV0P|9b6P_&H%Ng0Dtjy8Q&8)lG-h6k1|AJyh4LU6sE^-Rzh1#!jgOL_ttX?&YX7gfsrF-46jQ!<>{xQP?{zdyevn<|l$4(Di?N8=U49*0~ZJpa=jjWfi_iC==6!>3`{8d1sGeZU64A>&QOPQq~Pr1RCl=8Be`JnZ+Wl!@SnHBb|IDvw?KVs}>Cr=`H(_yK1?7cms&Qh +s{ou+$-rQfpb>Qj@=cJDPm2*0;|ekQcuHX3=8nWMm8saf09XZ#VY5s$UR|98SX3eh+wHnKp=_EI78{2 +^kI21ZTGB7DskH$Q2}&azLpO=qz3<(MXa@Y +QY~MU|-jOo5rZNW-W48OwUXUeZ*o%lc@p8%3K4tmEG259|b%)aoJ=OAEsZ;??g>nc}-Z?R60vYM6JbV +7QGqIk*>R7x;+V2wdH`4N0O5=iR5)KH}Z(5Yci8Ch{eB7Oj{GfZUZxB+ppSlPpNO%(fX9`c=?AmS8ns +^#?DQ4hc +{x+``YNV%v~sb$J+KaDoj-53#DwY?a5r_?J)g=4S8RO{Obs8#J`?4hkOL4l|KNm7Ayo4PaR@{&>gd<9 +qL%5pn$V9M3zF!m=}J}=ZZlXKY}ZV=Z5_Qi6OOeM3fg!rodXq +fR~5C8CZXz*8SXZ2TMA0#M&Oalz0>ZM$Sm}MkrMes_i?^T~<$@>o%axcXlm+i#hH;(`ts2kF$eB`!}> +Ad7SO+9sz53Ri%3`SMh_6V_KbeZ47w}1iqTGqS&E%^Y0l;v@VX^BuCWBSa>qbTovI9oPp@4lC{&w`?Pkg9E{jYNV(?J4;k=Kfe$Y_&xVJ=E(at=nWYl*QGxZ +fo0|BxLI_yxy^&IM99KZcYTON$wanVO7K*I;LP5jx+Ca6PWz!=GJO;5g2ytUYvK(UmdB#sPkfi^1XrM +<~oaE^_bqCO3|6=iT_R1_F9D+JJ6&XbSQbuX8j7u($chL*#oO9R`s?qOuT@K-!)1Fa7jx8eI}&V^lLGvL$wOmP@ToIrX5B$26iAGe2{E%!h1+X1q`JHQu$j%$Z~czg&x}u&ppr2oKawWXZf8on_ +8|Fsx5zG%aW=o5jZn!an_jF^|8hKR%vc~ESo+FpjosPH?Nke%aBhaVUJ_&8__y28aF5}(jUDDcQq(|1 +4qSDK)0H<;4cjrh-ICG2bSNTC{bK2Wb3xAbOkrgdj!Tu#ZpZ;?;`|s@ey&;=a)rI9bWX?Yl`qkFq#d% +vh-jGf86#(JTAD>ZHl`M6r$k9z-4XOPxf@Ab0){zhk*=YUv|}K)A-SPsskh@Tth2-`;MS=pSf~59t`< ++>#Axd^B#h}$r4Te)#|ISnN}9dR4><^$O +NYIf=*<+x8g}DmZ>a!*9Euzc73w2z%+Nz10wD!GpnRhjSyI6X +TNIERJ{hCviFvA@$?-$NB1PL_`;j)$PGv^1yB;CA^7opw({dN4aB85VzZ62sGa;1=8Hz|k0?}GhgQHt +M-!pSisp`tBf?jf{1*4OaCbvQk?rtKJ-8 +v6jO<{{%Ww7(rG8>TjZ%E^nq65L5gO#u%g<^`&X%7^5j%kb>#g97k&+15IhW9S7+IFTzwRkUF-{bq6F +`4l_-HD(PHGmxH;4?}(Bcg{U3QeON^BeO>0R98_BhttYZfQT}~h?FeHp +shGcKFY`YG^N;*Nw!KQBZhBL(oX?`P^-IgED0dIvV_|3C3iKA%OZ#1WPX)Lgf4*6XE7uy_H?!Vk{;k( +GB}y$Yvi-#OJDSby=SlijGms4y^bWs#uM^&Is_wkmZb@!vE=|TEL&T{V5$f~dEcJ%6;(9m(f!FhJ2ct +{vJggKOzh;+wZeK_mzaJo_vR8CuJzqnf^kLf5+rBb<;6Zn&4Qd-T3H@N=HQ +hl|V@Zrw{|8V@0|XQR000O8SRwRG@`aa#PXzz~aS#9i8UO$QaA|NaUukZ1WpZv|Y%gMUX>4R)Wo~vZa +Cxm)O^@3)5WVYH5bl8zDhbKesDUQUwh0hyf@X6lwgw?fV=oh#WJ$`g5#+yTM&FX{&9d +hw%94!NeA0+rU3z-MUGF7mBrm|iAyDbgY2}XtUnn~q6&bz4*E5Nu8D5!rFuw?>gBE1lygL2zOq7OZ$q +Gw|@B_jMRRk2#szzIfOL{}WsyiPfcnuxz5{|2l-_3^2Q^Vk-AWz`&sEXR2RRp3hEE;~ToADFmyY0C?d +AM*Dv?q2hl-D(BVC9k^muKE6T_xj!K4-k~bMPr@xa24V9-Nz3%e|~s#chlqaKyB58%O7A*5L|iAZt%~-^sbilaLP9BA^u$4!C27}Z&1nCz{IK_|IA+v7vwfCbB-((K>vY8Wk#naaY+wHo^x6x!=Zl& +>*z&M|K-j4J2kneU@y5%J1z~g;W!8Kxb=s(lzdUjy&VT#kk5L^Ep6d$nfh9;!XPgpw-OGez|D(^*&j| +2@_l^dZ6Y&F1IpYJ&Re>4 +6D94Lz|N66EL1XhJmH(Q(1M0Q)Y3X>%7+Vkusbc&&h9NTxphm#XeHqVc}AZ`-rnRe@_7F2EGvHsU3AW +=FmRp#v@%I7yg_F7gh003y-~q#|)0S@FxS!uR~V0Lz|IGlA8sGS`KJoL;NFYiJ2}7a;YGiP7E3EUs0o +yXf4m!8mXPpWNnBtONt*2Rmn@pRAnCDSkumGw3%Sx_BNZwz<*!wF>KPn+l{;(0CRk +I!_Odp3=ko5{^PMwNEXe!sQThQ4`9e_-ttmnW^=*@JdIW?}^HaD}02Xe+T_e-Oai%3%!?Lg5YA`cmC+5$Z33L;;r??vQ|ouS +?Ja5opIRA+;AEfwuv)1eKqz5-|p=osz++WhDx(c+B6la~|u~VDUxbVS9XU3Ohw(8J>=sv1x*{`&>vtP +<|eeCFcuW`PJ_k_DbA&uiEe7vURK9nX?Pmd|c!JX>N37a&BR4FJob2Xk{*Nd9_$ekJ~sBzWY}Y&Y`7+qs#``92)Rp9-Z9)nGBF*kwc>)&=PGkkx4 +Bn#qk95-}kGc9+YfnligV#8ZEI{tQWufO3UT)XIbo(_*ELYQwL?5#d5h^EcBtat`W*PWBZ4_^!rM0`p +3%dcG~RvN9z}ht+NMF>pIInDN|aP)w1{~Nh)g_U3t;T7SdRw3t8#kRc_=##ap#$lrysGg|#Ww=L_puV +Gp%zdNK96mZogIa+hRFdo-1mWiO45`@FGv>#9rQY;D%4L!Fn}^_$+|`4{a}(O7r7wC%W8YOwpI`2+{c +_w??Ct`zyX68yMWQ1Fx!>pqIvPBpLiU6OM|@;qHE7DXk!7o4KRZa(1T^mZZeLy~?pLT-HHWPyOP++$H +Y`$?C|Bf^x`vNKlW&DJ_m%0>#dyVB+(62`jdcUwy*4`Ca*d@J5zzq1yJ-HHbP^HMh70Idhv +Hmkt4z>%U&tXXf^F?EE_CYs;BKmE#k!<8fAr`_ZB#O5HlG%x*}}-i+mxbLmHt +UzQ=N%avG$U@!j|q*1#H7v|C-S!=X4$y8q|*6Z03Q66xU^58gMa+FKsyQEOnN8v{P{;miMT&NiO2N?& +Z99rL?7y)V-Dak%qZIJw(qdKj`5tr4Po2K +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 +yd~-qE4krnDQMC|$m@u +=B_+AVKTZe-6jQ|F3_%-SO8s?D&zWqaslj>eqA|L_>h +DK0pUe>4+*)u11gT(17}FPwg`d8|vc?E#^hT6Ss9|bcR7^r#Yn3<_Q~@51F!gqh;lAO<(}6HIKIi-@? +!CPbHm1cuni>*DC=1ZQ=M56@B2)e>1nCFKvoX>^9zi70UI<-Pa#O~|8wp_uzfopJZVf4fFeGH&duc4# +2>JrC>XvV!Wis}8g*LG?-x(up@7DVY5REoxt*X)5q(i8Pm2OoD?l57mq?tF@KVDqS(dL_#ELNbU?VR$ +<=l6%NeN~Tq&I1SRWSuZ^cIG1uvUP?G<8aC_2Yi^rF6;SD2yhjx7IvYJh6OL%?}b1UIPSB18ow0AQ|Xc98f(GxekC?@B)p(Rltu;-}HlKl3{Xcua=SKN`sKVNyV=+xDK4R9O4j- +5}jHIF^Q1(KKH`s`sUOPTdqJsiDh|248Zi2F(%sCV(_hD6u`Kg(x`ANC%^o3AMb#v?YUv-4MCbKsQ3m +0yiHyB^8uPDjXc;qrH>OsLMLhK!5NNMj6v!&-FPM{0RxRG3d(@4Q2IO00B5BcnZEVdxj9OX;kYohO=( +bB#>qtpcLglhC8pl6{#3#Yvn@L(rsgtPfXX+1&R%+S_5xM1v;Vv$aFY4QAf>lZ#%%y7LtuIS9y+2J06HKAr(%Wet`NA;Lz*!P +i>#x73Dxgp&XPbjK{_2a1`aGi_)xfH4^@HuJ?8#?IS<&UKpvYX9ZyPjcnIMkeaFzgyJ1xe>G!mb-KqR +3J%cBMo{#B3Kx%lnoZ(9kqv$taDV%{^fJFhAyp3I<(sd2Z&u-VXRCl(QX60OC&yJ3kkcaIeEA;xP**5 +$LQsk&<>-y*q&tD#t(iW|y5HK&FAHO<2e(vdiL_?KS+gR1Af{FwtoL)D0>(Y|F;*AURD+cp#F8K7b7r`N>cFn9eXnFUQ07T#^c9cV5ojRiKnFB}m)Xcx;G`9|l(-sPl +w9SPSMRSre7L$v241R4NEB@|z=et|KF6=C{L|a3%MX8J|Mp*TXYV*X*rS*H?g~P|&8jkm6AF%Y%V4gk +wG}w$5dnrOMqjW_u*@JVZ{B>mytw@7j5!Iw2MQ+DIdfC@#JZH_dHf(}C!;{xPBLN-8Pn0Uza<0CUbfKjsJwrT%6=Vf9$SNqK`eI7(I;xpmYf}ZO)$0L20IqDv61;1U+8-=&amO`F?y +n4cxFd2^G9|g;lPR}iH9f$ZAIsQxG|PS?U;joh6HiOdv_AQUILV&X2^CHRmWl4-L%l7J_~$%|J%ydLrM(um**^7*cSF*|6IPSh4nJxhK&N>Y+D5 +*f`N9S!qlz$d+9{5MoeqFmamSaUJG=R7GhYwZeCwl&N@`tu3<5}qBR2K19%=?U4&d2=zo&qB +1qqU{O_WK-e2oGQP|uw#sJaxi6^cYD{2d&EEr1FDITVn>8{iBNEyQ-#Y)@aEeT8-iEGkJia#WM;Ed7# +rv6I`cbJS^j`or0Hp?}Tqxv{h4!^NN9zPtXMq^Z}TLcks`o*Ar>K~ug3YHNhjBs~ZSg|xsfM)xxSc*; +ZHx+jC{Mlk)qramI@ig9C?09Gq}Tcef#oP|vDAgD^PeCSum6tVVca!GR}dXTe`jA6%GFOz5`S +%S#?k}M<5K&5#UCi{GG^`qAmg7xI|`HPo7yc&Y!_>4!w-O +4-qfugo=kPs|%(LYkQB8{NB9naZu`u!Wjc+nR@6aWAK2msks+f1PH*ti!D006c!0015U003}la4%nJZggdGZeeUMV{dL|X=in +EVRUJ4ZZ2?n&01}5+c*;b?q9)EP(;Q#!gjHr4CHX#HthyY(;#WPyYL!X#-eR*WXVU$c6>$u`^^kViIi +lgz1s!OC>mQLhr@Y!=7o%+=w(^Vrz!L +FK0X#&9B7*NV=b;9t>~>Tg!ElZbgxmirIHsK6c(E@Gx1GTcO=3!_k^6EtF4779i?^=ZScni8ZoYPYD! +tp;W2*<{{s~v=~IhSS}WPwolEnDe7p%3b6|xs7+D8F4Iks36*Z8sx}~lVml%dT2{gzuSX1aw+%=PhJ8 +G3Dw*qKCH2fPB?`S!BF&^4!S~JT@T_XTMqS!@?|!}cHGTQh#ml$p?Z@lu%j-9wuzAnpF|kZkLkcltC# +)#{#mDUR58pkfVfcAb>__aCoK+)s2@LRi6v&m-@cUZqKJ3@<^F1kq=OgxEv(5$09S-QvE#Dda+>lDyd +7$B>{Tg_vUSu@?tt>K_WS5E~{2h&$t`sbQ)<-n0872!+UD2~RP0=CJ6h;kB*!BAl7i0F0@9zcM +Xk+^&G5yGRRe@h@DtKCg0Mv@-^4|iT0V#mTW@66L`UTOA$=i%9Pf(Cz44w!)v9o_5Z}bAZ<{f_!)}wL +X8pMVOqQK}>29}~(IcK`usF`3f*o;(VK^OyWgLX4?gy=7kIj28h&O6xUFi~Qi^O=ZG)6)?({>21rQL1OA^8h*~$prAEQEPx(T#000hMbd+7)SnicX4|jfpQfPv!4_85sm6@EoO2qX +Eg53)%zb`T%AXYyu9bR84E_Y2hFV5&oVRC`|0BP(|Lq$>{I(>JfB^7nhJ>1tY8vOBX7I8yh&fazkYrB +CVhQ*b>W7mpI+S36hL0$+z$7b_=J!Sg4P3+(JTkShoBdi_kTbbu<{3U`3c+y#`{sLEzZRF=Zz}2uxZU +W#wu{|Iam{V0-w#mJ`o^*mLY^c!iZsG8d3VNl$sglV9-{8;ejYy=1;5d +5=9`H=ly1FWrAkCYw*$J1jf=4WBh!95O1cS{sOuE$~pIM%R7il&JXXC)R2t+_Z5~4RQeP6;#_{EV!*4 +z?qX*5i9AF#MBa3^sT6I}06nnn@0)QVZ6J(47PmNv_H#m)YK7&5B?p5zRS-(doMA#a4>AgeTmWFVi9V +04+Ight@TJWJ89&#%iucfJmb4n~pK-Vi;aW-SWU->i4W^s?OK8G}dxT%p^ +1{t_jqI9_$>5zP^cl0QmW#4Emz0gxefxA~on&z?_*!_NHhN%IS(oH#v#AnUKS=1_6ra9{Av_j-a0(i2 +qnbl{l+VlJeJ;5G!XnJ`(c^*hMUlmaI;ctlvSE0<0Mn=)kMiDdO_Q?VQlEo8+KhY5CQ~vd` +y0)+Pe%3JFO6<6zaqVu)M`R$6o$-EJAs-`r!BT@d2x`d&tLuouIMZA1NmTwg;kkB2o#woqRF(O^W>Hq +BtyF;6zjvPEZMseoz|Aff&8RC9{K=9~zLE2~lYVTGEEs2=1DF86nw@a6i! +>0W8-U!H|TsWlCu$`YIz3d%VW5e$R*y$+mt=RXe?ocR?u1iQrW=q@}L}@Q5<6b>c=&mS6W^V^1LOSln +mUm=&wP^Yhw|>DG0oY=G$+x1(1pJI?joe(Vg-E!+4rGufIg^E%}k%4`r!Ibn9UxJ66 +frK0_YYI#8pY&E~+I<-r?zSJ;e3_o@-&$7OyzL( +W-V7#aHWU-yvcLrVx=({rD%g47-49gw?HmI?=;@z)8@O{$`KOBVhqbj?U6GdN1-rs$G%9jKBV>rKtF#8z3Yj_LZ?93;t|$50}kT=RV=x&LS<9eT{{GS+5mc((3&yBc+aTy0_^&2)uWLH_Zu}gQ)N?igOvuEx*yQ=N7mti-cRW +A3dys27&O_N8Xw-oD>`yO_E4bEFt!To+( +`WjW#dWXmnI5|6H1ci&bU)oZ3O}F~K%-4he$>kEX)DM;+^DuEBpSKC6@nP9JFZPmuJJTB>&yxItu-(t +d<|hRi(47guni2vm#NZP-1Pv2X>Yo+t<{-45LaG%sD}y|L1ckQ1Nm(2efT))tY6b>i4%{8E47)qqA6| +*6P>}Oxu0#IR6b@k?-qWXS0dR=U^}%Pe6R!mR- +_yP$J2;fk9Vl2XZg1b;j(egKy?xny$Dun9aiUXu<@iUi?Y+r6v7$Qe>vkB8C +hyu@aACVz@#$t2-32&O1s}c%wr2?b@DvYUtFm$Fpe9|-e4+#F8T*kjmvaK%=cr*LEXTkYf4Fx@*(Z+> +n3@eUZI!zrQ%Yr@jXvE0&`o?*+|cwptIgI4uXNF-To56W0_KR_Z%Zh-9*J$LIMb#7+YuOb-ejIi; +@Wb@4W&Q%xl*4nyzgpXa;#!(6N?pKBmDlvEE}E&K9D;z7TBOT(E>t?THVhfGe7J=+b}=nE(31M4`E31 +e6(ItfkPOyP7Km>AgtzQsf!wpbLIL(Z8S-(W*n{ZoajKPJS3q-L0>%(c3-?Ka!kd(%R;&3*hvky(Vqm +b`aPvzx*;bwh#Xx+{~8d#tT|?CF-6B>9$)EeT#CvLvd1ZpyOYW(Wah92kSlc?c5n^dvJ5-qoSannbSN +24&aVHBpfQq@7`TpU5(j0*MP1|ZJ@BJOx_Di%{K*6^6w_}Vl`X3wis%_JIL)TL&3m2qXc(~Pg_OYskv +rzs2V-oh_}|zT+x_#)4Wr?PVcfiF}RSyO?`FG&7}<5Eu>Y${e$WNG*`bZTFmIHHw`d9VFg=;`AC3!zxeeI0Xe*}q$k8nmq!$Vk||Ims);& +L4D8LFQ7<{)! +n9l3)i2;YD02}0m}AMJ(f&V`hA^%A7XdUE!B`rpKx&Vh?pZq`kMLm6dD^WBu2uIo6%LW{xBe&9$4w9_ +3Pgzn=<5dC9Z8>B;eIQS1xO9KQH000080NGUAOi~;W;q4><02G1%02u%P0B~t=FJEbHbY*gGVQepCZ+ +C8NZ((FEaCz-L{d3#6mB0J1z$udvwUrqsZD;4)aqm*ExA9#z$;95>_FNxBiIBvaB2|L4txa=(`@IhU1 +VBo5lKYssInT~UB7uj8hllqKXi-;dktB<@X=|AzB42N+x)JG2RYlv#gufpg=;!lgZa&I&nip}~@sFusTT$-=zd@Y;pM%uQO{j@34W>M8^^SzellUm_u_S;q+94rw1O}>efTUlmREo`U +1wNf=|DpYVJ<`Rv!d=J7n8ujITco4P7Y-&1^c%FkYA>86qO{*L@bnf~ABg(MjLUPU#(S-@-4^fi +1xtLtiD05gL)WfUykAbICdb~W@Wm+gwF_q`@*Muj*s^AURRkc?C_^=-&~%(xlB%9{r +KizlZ*3zJDZC4Qf;bI4NTYqQBB>>k;ghffW$d;DplU(xAMDu-t6g5d?q?ROG??)^8{yh@I<_MdwF&&{ +`AA^_wP={X_3pa5xEj&1)N;M|IrtIarFG#!=rBxpMN_QcdL93L{b2a|L#^>aR)24 +EUQ|IW+kaNc57C-L8Xr|@EcI4w7P2G+P)CDmOi2WQ58mq6mV>4u+y`g@vdIcz%M%*rN#r@OnXb7cpJ4 +sdI{e1H1t{HL?z>`x#HF3#V+xtIb!Xnf^;PJ(xq&TraHlI0+#=CDkOYG<3eno9*QL2{~gEvE!7%M}Ry +Ep?v?l>KRwsQed@QMl7{US^r$%oHr;RMhLHmhc+-!D8Mw45uwOFeWYL^kA}kLP|F6rm3nzC9^g!GBdf +0v&$dfUA}$$`Xae_b^gO{0I*OrG1Ku9zJHh3a^6(+c6YZnHyyr%MJ=i{dskOW5Qz%@z0I@Xb-SHg)`g +D;2Ti>_rs*0zs0x%SW%al8fOm{Ir#G}ExGAIYv`4(pv$Z5Vx4EktCnGX^%G +BX2or^O%?MK(>j_sje(sCxdyyQT;iB6{e(dv1m$;gA!gMI50-L0eV7nCZRuk4=_x}Tr~7WZf_^#xSOSRv|vVY$!is_b#we-mD22 +hhryRTYwt&s4v}4s4d_a6IXblHE3J(J3^FjHBM^X~I{c+A()BD$#r?6kzj}V{Nk;KY +zKJwt9Kiw~^K5iI)kDODVM1T>S<8Ff+3b^v{YVDMSK$H>TvPxFW7zB(6KIP~{JrB6hk(v$nec<#(QOt +0phf5R)YWbJ@S2Ie;hP`K#Qeq(L^ +I|0^mP>nsoc4526oT%fZipu6y_cSTOw&V0Np#?2T|Wnr~Vkh;3^ +&N^48}1Ob$e(%Xp+KAZQIeraz?+uV{V10^;}cr<~>Afb{Qxm72Zbu0BwMVo0}q)Le&fF<(p +s&$%|HtrCacm%95+d*JnB|zZ3Ns|!dwYglj4fMT#6-SBm6-y%Pl&p{Iy{jRDr6piy?@ukn5SuGJrR)CAwUBT6D@qw?ENi#{5 +05$-Rk2{|p3vKDj!4e(er+p$7vbM75xg#>sCg`^Lp#XlOl+foY<3j1y&?u8yByi(iR|QJYTSvwrd7_} +U}Fj~J$a(G;+UKVLv9Z7`;?N^d1u85BujkQM?O$jHL5?t0m16S&KWmbt-1M7Wox?7(=4oZUBdI&VA-> +@r|5NRtRQs==uQAR2L3Ll~5B_xd~cA%uZKi8FrWEpU%_u%%+vPvI?%ngZ{!5E&RM4WkK|ulM1{3dbNb +h;$b|(;}^V(6RP|vvi;U8qPN~WWAL+7{nJ?z(DiS1NLrA*v+qW>-k@o1^CdpTnvCF0JJftOM +{nu}3sAjYd+_S9x7zWL_nF0Gep;u^z0W4yBf$&tcZq%#yG9)eTc=|CqCzO +>@NtaoWi0_d-;Lp6-4B1M3vb=59cL~q!eZCY4hE`#7RG^LtWB^Wvr|8Rl>9|y~zC#Nktw+03a&psXq#8)zpK;c2f0dosA$GZSS6pkrusJjQa-@ZK&UD!4+H!Y}*9}S?V3am)+ +R0P7O!`JR-oxq9pztQNO*_~qK;oI%boj4-l;RRv9=_Q+$`8-(=>~3!s4{vhx=qT1Gbl8fJ)J7-GpsMp +Fdhpnwlyh`#5O=T)syk7&HBQmvWJk@`vei%&&7qXBv-x15^`QR4I=wSyF9y@BhsXoG%rZ0VZpu39-jx +zxAeRsy2IQ|WibaD)I1)TduqO;>W~nI$)_<9yv~wg%uUia~6+@+Qy4i4ZwdqSO)4CH~eSOLjOmnmsy8 +){Sl{~-dD{LJ~8Md^JuD$jM?U +gNlwdZ&17VTDTX*@x;|l;O}>_(AM`iyHS)z)f0@f#Klf<>LiIkE +ie7n!ceBzm&50yOde}g8YA!Sx$Y|p4G*^e5h!;mk{%f{;9mpME8)i3u2nrpDN)gn^pxKS6qwjAoDDsX +OGI$ayj2=?IIr>e%2}lTd1>N_A2G>=VFLKf}PA*OGTh){;%k~OZ*6d7~5ZrF?RKxrwJP=@oQ%g) +D341&?)ZoaTRNP1x6V%?jGvsZ!pk-{ +Eztn!_J7#h|?*p5OFSU>!PZfq?@{18{ij*(ltPCfw+ocAd-Nh*NLyAA* +-t_4;iaJ30RX#C93Ov992j;0i>I%ZGNtm={% +yS(;qQ1%bnm8#uBl80}Dul3D!)^ww?7 +gZ|fQ@1$i&$Erk{^5-ZLZA_qcMl4CfO=yX7#@r#byoY4bdpsx^2hgMr+DjXUva@4M+#+^VCxY&Wm!|8 +xgA4v~6d|X-#vRvUBIk2!769Em0qFRD=34}!gbwg@{H_ScLdd7AV6JH8()-2Y*qW;di^cH6PRE?33a* +(Ax@`Q68^`X&3^zv{jO?z)VyA=rCnFLa35@fM>$ClmzEN7u)z0Q@QG64ig^X8~Z>L5rgFaXG33UVG*n +^jY>ty=fanu@Z-`#G*)-@u)AQd_w#02mIECc)KGX>Irr#iEn4>o7o1m5u9)sxc}KP+YibnvRGh!150fx +P0j_3FdI%T?+=VUpV1+E_l0yfQJ97+Yo+6!CmUeUr;F(Pfjmdu&>IV2}POa8v+Mey`1iZ|5;Bdhcjoc5!RU6`}|hV*P?0^F9xHD!}krJ4}7{}TFMxych|=WgboWfkj)GMWSw`Fn{qM!P~q +95QAf?TR9Wht!@jj&60+ju9}ng!_PND|Jk{Hlry<-ycoq8U~YqzIk6ua9(K`Q$hM3mSig^mxWPLm4eh*_;Km1UMoy8 +k{ENIN1Xa7`|Mmzrds}e%I3UHbtjiv}6|M%^6 +f9W!$g<7Y`sOt*6KV%v#jD>&UgKX~5S6QT>Mlu^67rjNR>Wnwnrbgc#Rq%Q(Yg1AP+x0e|2TX;dz#z# +YMLm0R6uzMT$$8pxLWnitZCd0R(cF +QI)Bx3IgklHX0mtJ^NgG-dg#9UCR_*SfsbO+GRj#VicX%CeNMx`*fDcMcK1m=PZ3fy|T_*sv$nQO71i +eo0!sG;rbA3pI!d<=7BYmfs0G;?zojF@CKs78aPVlIRTSnpjt<(ENi;GTdxD6aLrx!NtVeFa!1CTvlc +?&|>m=117<8Uf^cwv?s69VGAi_Zg +;ucd>cz~@GHbWh2Y7WM?xaRc@pZ%c27dR>wLet)Nfx&RjvX?!A4cSin2}cT$1VA)0=uzUHPMas +*-Y#PV_2ITwr>6tBH!Y-4Y1VWQgZrY+cgZqG}yF2IH4Nef-qW-ZT(D!l`1N85XD8Juo!a` +pPFNAd4+wZUU8erh~S@Ht*j-%K=<+&ev8!5$X#N7Q%@A{De8$U>dE(Q|WCG^5ezkFwEDjZUee94FrU9 +d1|DvE=;W6AqUX+u^>Qf6j5)bfh1!##ecLH6?hYb7P4@4-5@w`aDP6Es9^=Pkyg56@b3OTcz)4UtJ(2;XEixF@) +S#Y7GR~q>M3MDc+wsI6UczYxCiK|h&lvmWBIkm;f#YC{**i)j?R{Tl;o>b=t_-Mrcz7KJ~-o+%YhwxyK&N{>V +cA^C@4HgAfpKqcbIXI7tP4*Z*PsI1oVecRs%+H% +VGuK(gm^9_!g&WeMlmTTJspYtyjVEZQEc_W5aeLw(D~uMvENK>LjxE +SQelfV4kc4IBaXVM}{TU+gAv`quXH8LYrF=4$yQB^k}0`eQwT_749;f*_?B!8KjdLbm7>i21(E61#$# +CE}cKf3nhrBUbH13+J~yaNUxQs4)3E^YzOu>kjWu3|b&Nu88AkLJ`#AhY^;VNjsA63?P`YM2U~cu#pv +Q>Cyai7ID%Qok{nSRJ2?{#>;bxTFF>ng~Nj(-Y$gl~wj_q&b@dyGsoa?gKKcm{l7YH8CSup +`iCeM@EA{47_XqbF>xt-zTIni4Vsf*NVL6bkyaqW7k`@T8tC6XNFV~zhkr$>AKvyAa`Q$AtNh4k!=L9 +6n!(Hn`1Jcsil>!6ka-~fgig?Y?k;$aJqJgw4l7e87(9O6xhNG0fzIsNLifQe^3tAJ?mC_80q1Pug7@}KjW(%?wCAmH%%+Nu1d7BUbV +>65(^-eYSwmG8W&V;wU-h=+h)d>GL6~>~~v%&7*uoG#tk>w~*4y1MzSs)}gO+#CUK&if8PF&LQzAChS +uAdI>Ma5^TuTY*!Bz|!Nx2ZZ$DgIHr~2PGg2EO3`Af~BcF14mK=jm0U(Iow +$>H5Yk}#Ub8aM(9Z=qO1ZivrhEc4=`HOCF*W(6Pg{LE5JLluq5f>Xd&#|~W)wSp*(c`tl7X%SypDo_w0@uD@Nqk_(@5g6(0mR0)F@& +YG-IU0oZRH|L?0AQx;Hnk>=KEYR~zzz@@S(%g;!SrHBRZPF5R9ocB7EF`AN6Y;W#RdAF+($9`K+1gXlrr)yQIyP2cYqO=TDb}R +a+U<)6;dA*)6WaH7(9f-y?~*>kdo_7v+dF4>u0ii@B;Vq)>-;pv)BW|9D3uNFs0qXDIAOCFZpIC3|{z +0&XbZ*dZP9O6sCZ2^nvJ>8HCVl(i;;TB`S@Tr2&;LKDY;j38?9f3*#N`4c}@YojY?nBrh7EY+7fuWQP(o#(yC3Y+ +6LMr^jPt@Zl=RifBbeZ@ +cNaIfmdLSI*_>d;R~CB|^lWSm9L*e@;;#FhBGw(vjGX(oB5#;|N##Aj8Lo3T%b?xr0r-*98=B-H1b661413_T%jB$GMq{@j*+rZN7_(nuvWB`5V9F +Z;mNnQ$dw9UN89S@Be|ut(-tRXEVyo7nV1KEj1%HpZdY=@6Y7C~m$qW%w-^n)ASbK8wYP01)O_$m0Qg +)8tj1656z`B5@wG)G)NRkgFHsI}KO=G@XF6zPaiu!bM$w_!8T@d8HG{(tOefUDfBFZOpFXL21cawaB| +IQ|KksW+WC+V!Jo3VK60dlXe8^8=Yj&ls*-r@gd_`h`Qr;j?6PXx3LMK95^bL8ws^19uP2X~}7mofeh +>tT6ojHeIb?2C0Eel786@j%Nx7|jBVGO1XB=$H{-4!95Iz&v^~bNmMYh4X4RxR78=-~@Zk9$KUaIvCU +^yXtK4kMF0AhbcAf=D&|5L +4EJ9O&PpzTx^nBb58;ws6LQB|6IvA#Ts9^(AfIdn2ky=xyMV8ZM~k2Ip}ow+75D5Osk_vsul5%jF8JpH`x-dRF#fe7J7(ffm +qK)Uf;&14TE6>^##)%((ea@SG{|6Z_w4#p+_+h9kP(KloQ4Q=%i-_9FQ=tu@~?nk7@c(VSHRIB;4cT@ +#g5(TD&Ce{TctBax>lWUfW?hyL|E(`kj1Ey1157UM-4~O@t3W>n1@PHc`!-K%XcSp#7LI&-0>Wo%SWA-2g5kh>caN3v|o_fIbfckGs +75AA}5%TqLQZI>~p>=;iX>&$)UcHjemRzbJRC59E*fonCZBSq_%5(u7cYL_Npq+a-sYiC4-%lXtuD|1 +>zJ7xd+RLT8D>P{~t1o(1Gy9Vk$oHcgi=*obq)P8lBqk+7nu*v2&>ycEJKi@dH~IuL#8N^f7L0Xf&1X +&jnXI(Euvl@nuE|h^FYShuIbbj=Dd##fXi?l>kyyj|x~0`6>Xa(G?ZdIPxRiA9lms%q= +Go`?<2I|Ia@<$PM6HM`eR{j*IVl3TRts0f)Yphs9gJK5=f&g%KEuy{Oc=P{PfW33$DMsa)Db<=6j&o+ +bfYJZL9b@iWfCev-r9#!j%k1}RQ9#?AqJ7}r=}Ws#(U!LzKO +jXvn9d)Jax8Bvq&6)U-Naze05p}**N*npPb|*jWqj=1mX>d9>v-_#e>}_N?XzXxfQ;N!>KWgze8^X_9 +pcTXH+j>QM(Fi=Q#JCK6NT`fzA^$>>Zh~!e-;<7-~Notg7-7%Dzc)YGIqL#oiB&ffE?{&GMFIGfzo*J +5BRm#=^t_lKLol@OUx(YXH19XjX4_)3ttd_BXYbEKtwBC3Stj4cgznN5EoL~vn@c4RXf8PNFc{1eFpS +;2091m|Ln!{fBdZ#6b~x$o)XuC`8d%-x`;NRVAPmC$D1veN>iHzD?#vw0yt!WH)3EF$aT=d-1#*=oNK ++@e;51^0~VU%mv(>FBVl%4o&AU(j%`DG +q+{BI-~AA#<0VIJ=Uv5UR=W@+@64;)_nkf(+Dd7j_ff9ZH4AcvjI{d63ML{><4DrnwWyr@DfZrcI9=> +CqFVK?7fmY6Bc6e4=jx?M`_AiGCaB5|3fxVX(;it(@3C?*x`kq`-dtz-{sOX>7X>!oQ$h+~z4Z?M`Jd +-Q4WmzAKFAcV809iWn!E&*!C$#4|j-RO1f(;{dJ;!#y~Tqfyc3&dVb$M!{jR#Fia9P;~KL*iwhkY>E4 +>Q&M=UYHE&l+iTyFS(R<+-2bdneF_-#BNwe6tnM1R@bvtHcM&(v9S*&6pYGPNk7M^jvGK7O({*LAK;u +uo7t^H+Jo?0-YV@fnx)$4;{%4qR8l@Bcue~*|e+iqxap5t;&p^e;AHkws`u>R%}{^L3D;dwI1c@q!$t4XQV;M2u2LN#umY&^_y;# +-Y1EqD2R~A#I19ADW)Q6~LHlZ*9U4~(NAtTrw(RE?><%saF(|*ncGfs#y%oO=@uNMZeh%`Mec4Q= +V;lEpS$ayB-oKy=u96I=HFYZ4QyxXD_FwO75gXv?60P^lzFqER1M$oE8j=ymH|5lC!dVn3wk~MKX7i( +BV`BIC$TNmeK|)R=v2n#bj@(H^{aJzmsm3peb$>J!32qFSh}J{TRP;HuMS-Hk&0W`=n{rS8J2F9j$_b +Wmc5G8+$}f_Z%+B#LQ}7xG=L=@QDE9HB<%s&TUh#87@P1(Z-|ErNe2r?A4GL`spMxDh<1gby-^=k7&= +@4+K1H@gnrg+!qQH<=$!8};?sTr&u$L;iSFUFx_tvKyZ5cTY@U%-HLj=KX-w4nd1E$0 +J7nvg;{RCfCdlf>N-SZoEuE(6a~eapick<+!U_=#*+b4&tLhtH8W=z1<0z1G_!CoRF-M;Qb=CPQ +(?H|k-@aqekM}6{dJ_+N5_>!cUtK$Bv&(=VgRr)Hkcc#hJxqiRuyku|&SP<*jZsndI~qi=$+5mkTPv? +je6hL_slONT&W{SO#YVYKqv{`in85_$%hLV?oxwA6dhA2jX*YK2hI&ApqcarpCd(TA=lL?%o+HDL20C +{XwL0{}hpPVYVfc89f1^w(Mx-G|n9*t7>tgIt6-!jY%DFbCBR=EHb2pF2^gE{Jn`TDuAgC=bG#44@#5 +BC?2*Q2BLlxc4zU76G!rgX6#yK +kTeLzY4Rvqri5>qDFmFfm6RTl>@-lK#JIe!yArCxNe9w +5wL4{cKFN`4&@8zMBz>Ei~QhUqZYtcU#(iO(+p#%OoKlyPGJnN6?HvUggO9KQH000080Oc~vOwTXQq| +*uj039Fz02=@R0B~t=FJEbHbY*gGVQepDcw=R7bZKvHb1ras)mcq*+c*-v`&Xbmm6B8?b9OQx2W{oxI +C7lY$;UcQ_AoQ0f=Echm;|^0DO>yN_jLoLNJ?@%wWn289Mb|Cjfd{nufg;4^Z8?{%1T?~MeS84s*SVt +dSmNKlrp`SYju8peztP95R1jCu4<? +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 +aTmu>2$_Oi?)0OjQ~b +?;)b5}m%0Zuc-c8nmNwBqPPmf_}g{h)w0cpk;U6{i{2Hj88x3E6rfAHEi44E;1lL@n*l3q@^bTcNn;v +0JN3^I2g)_P+H4Uz@~9i)k`4ys~wK|ObkLeL)DL=`)$;5kq6>Gfv%PobEb6%RIdR88ne1ZGH%!6AHd& +Q*jkX5Ef^Wor9fGptx)+piMY%_W7$ZB>Z;zS;=BSDzBf9a%`+Y#Y-AOHKzNe3IazgffGnH>qZTeTwWn +59J-MJ(=W|&D?}P=1j7iq-xH}W-dVaO0dLr80b|CuDPtR(NQVCydV&W2N_j)|p$S(}PVnt0C=Y-uRD#=e${0;Fga~l_Y +2d0bf=qTOYo +WnOY^xU7X^w0XjfiYXLIHzy3Xrj{kYs#20YaJ)q^Y+HIa6)qQT^ZwokpD15AJ6aU*Z4Vm$;)&-EB2c( +cSq%nO0QA5)_DC%Sae&k#R{<3G@y*iz7FAz`|kJ&>YM!a1y1*Sg?QwbC>{_Q2^30b)^(4qw`s?v@}mQ9+GsihAB)u{x|m7W`yyQ5oihHwGHr +SWv7RJ*3R|P21pF{S_!7;>M`a{rNV<@h-K)zQ}*ZIAq+R28Xt%hr=EmjSC+#s`1hJ%Imx{rtcG@(i^uAiZW??TRJx +5|9nAifRsQn)E3AN*ni*_X9>X8nNVCw?bxs$QZW<^ttk@2b +Sv^BH<>vSU +pxK`qjWLZ7~@0GzQIP3n-a^Rur@RnCEkLwriG~mq29XE@=iLL5m1zHO+{yJHTZOD+-@^nHVS;5Mf>;K +_WdjA|VK4TKCar>ATDNloaoZ=G$FMluS$onG5O3(5I61KvX%n)A+$P7+SkN;)+m3It>2fZI1|kYCC$l +kgq+NFog7KhxCol3400KI$yL3)fbO1ahn{X+wd5J2!`QSiNn=g4OypC0OjPc3L(v@<7j`1@0!UxJ94| +<5TO)=0~oBQumyd9^4Q>vQ3L-vY9oF+8;*{A47sgfC`AV*9FbokE>Wls1BBpn98qp1?XC}psJfsrkvF +hfV$@-k?Uq%%h}EShmt@}sY)G|WLHk2+jQe0KhN)CMCrlYcl~p+*MuFRJ9AN{!;$h>2?K;z<$U=>$7kQ(= +i^aPK4cKUxQX-qRKyVS898OYUrcZh5Z0E +*ls(>>zw0`CpN28?57BFK`exqgS&Sqc};wP!ry0z?J55(2GZ!(OyXw`V2N4gK>V_~#pbCB8;NDHAat5 +(u#Mi^*-&AHbww{kPb2b8yg`hoh4bnwDAGz!6f+q^-nZ;>Rbx?#Hl^=X-}puc3FCd&fbbzBg%ZfP#(6+>qoH%vTb;wZNpf?~bsBVoD|VEm5EOco@W;OXDKNj39+P +_b*W`!gqfwH6Jo?>m>_ZE8b@ORH%oT +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 +Bn+aV5SehSUJ*k-H@fYh`7MmDUrp=&hI +qAT$zBZb|rWwr!-O}&$wUM2%`G``%!2D_-1>?mUiS?xI(_M)J598s4IZ8)kZpC)|DeVSlSd(x8CS9jx +7J*VT^l%XQqpz(Eam8a~5;97~QeBpw<3=`T77Hh26Qj-iXl)6|OYsRC=du;oH2N!VNiZF_=LHFO--f_gB&o?prIluplZQOueM#2w*1bnh1C=D+V2%{fEqDpWcx9WH~efJzP%`YCWAic8u&k&AOa +Q7A&JPrbWD$iqix5fhiU3$hS^15~Gxft&Hhr&HC$-4#*ycA(B6&Dazc&%>#99Y;wB3j)^W*%FNbIJoe +-!rnBK8f14aQo%Wp3eskM$X<$uU3>QXesc}}IFqT7Yn%S~0{r!-vP2`A)o6?mtlX$~WVhtp+I?U9T~P +XWcU*`4>pUXrd`1^ZyAt+Z(G%7lwC)J@eLrW{I#{|N>G+Eo%-qHEXW6#a=!Ue#d%GUq_PDs_V`V8$5y +%mI98R7cALD9MEQj(PP_U)SkePe2qKRIRrEKXGA?GCJJ#s95+{tM0G=(oe#;0iM{rn5o+<>wV_#57tLRAXK>*M*m(Lko5LGSug%v*1SW?gG0GR-Dr$96=iONa*CUHVD&}hQD7Xx0KG;VYAxxYd4}eIIjB6 +G@(vZ)D|2PY0uK_bD6Gf7?M%S})`~&Y(A4NY{pMOqlSZPSDq84FKQSD^jF)^z;(KFiurPHwGL0IV;GgPJn1U3@w2As%pLM(mZFrS^XDO6_ +Jiz^F8vw);)nmLOG7A^j83D3oL+PIFTL`3F=E{j=a(@;84hh*zauXocVUe3!6Q(^N%UyEqpElA%U$r5 +yDhjDA)xbto^J0Fc{Ahltf4qk-^?*rSCP5LmTqYyyfvX(Dl-(GD}fOugY@_qD-MEP=$5;;uH|YlvLnt ++LFXPJZk>+6;1lL0wdzOLXRP4etJ*W;1nB94HeKRZ!MKzOO2=lhv*5~!@gjk#T&(eagnpc5{+Q@aF09 +o*Z2aMSye=*%+9N!(?F|pN9`Lh9C2XpxX=O|e-zW9ucCW9%a(X$$Q;ZYscbjbc;wbFuyHYlb3^`$yyBvwxp{`5)yF2{vMt_ +772#~;|j#<<|ddv%#IR&h%AsZYoQ@HTeK({=|Blu04)#`2cdQy$-xpDLXc&xIt?p?H*^x$C!&Nt?H{|zPjxAW5+ +TY-pZqPL+$)wn*%58O=#_^0%|}ZFNz)+okCvWvKpI+ho#q9@#@(t@yQ=PRR^2-PTa1vc25v*q4!ItzJISWjoV$g* +86#HYzTuOu&Z~|SS_>!Y%+Tkc4-!U=BFs=E-ZY(=sJ;-up^cZI4TCQ9QN5O`@ca)U3!3HFsYGLU>_Y$ +^u)WXb52}!cVTV@CkRSAVeukgF;DC=W^yuxX@<+p+h=sbyCb`r~WsN1qd=Fi;hcB!4xlUwgEig}bL8B +po>LeNNOeueZ&V1COTxebHR+Np6(LJqk=iQQ>dqnm?YRj+fHdb;PS2x<66;8o{R>_bQ{8}fXMb*Cx71ylT> +8C!fWD<3TC}Nel2g`Th!+3Z@usq~{66{GYSjwq%AD{}IceQkSX>opY;-$yuuRlkoU8#27-1pMufkr4K +&m6rufC|hqr4r+s<3B#oUuRwEr6<4muH*_mJ~P!G3F2D2vJWlAl&lB8zl0*w3gH;X7JpBrfVi4-zyY<6OFHw07CMhaH7{c>H~x`BxxK +@t^Vg^A~wU711f`9ajFZGMw+0qxd9pZ`p!L9?aGW3IFi(oz2s=tZ0TYZqt8@zkE9jM&9?Bo>sqREVcpiD}@XcrGhI>Dn8o6j4EiF1O_nBHm@4RQ*z +^;>T_>i_6#3Vu|MW)-BmyUxfqP-5KDz0G4J~-Kp}nctbigOfRW-ErT2<4dqvtE +3Yz$-&gRbt!d^siGNWmG-_=wie!!sD`+3*+pCURa+@cu}Ja5vg#1bb$~DZ|-lK=)mc!He2U`9>`aK;` +z8!2sGkg4s2VVFXu3{^3;cjT4Qz+Kar#@)jva2auE0r-JH_Fx5DBV9b%N7<$TX6J4G>>$n_|e8|veb* +XFmh%6iwy07!>Dp%BIha?PZWl`*wGSOFlX7v@`TxrYqrM$tjKv+O8+Oe|7vawJNneTbI>4=HtcDnl2I +ws6b^u5MI*9xAURJ=gQ7iaK~4#HMt#3OOycn5}On1KX(V{V?gamo9E_+DKYK)1h2N>!&bV=wb&k=09% +1K_m@R7q`#1sX(Qg|(5@La)%C&ynX|vnqy~;&)W{+&=Z-1b;ymjNU}cu5!T0SL5-%S-4htAsq_QnV8k +zLH1?tyU9-Qvp&Q;Hirp+Ia0&+@)FqEV0t}daEcP>=HY&ThF$c7Gn~hOvq<+>b}RzveS4 +(O9@N!Ovc&uuT-u)=16EIvnvlZ_+;l;8bR2eb9K*p_i&97DI@h+%?D-{fd3`LYn+cb93T0B +UX<{;rnyc6ymOdNk2><|{7ytko0001RX>c!JX>N37 +a&BR4FKlmPVRUJ4ZgVbhdA(R|Z`-;R{;praIUi(qvAk~B{oo-Og4W%F+crg=i{2p%1X-dT-pHaxQgOV +Z_qXpkht!Lmmu|x_e@G;X=kW01bKW=_jo#}#b4piM>~5uzVkbqZ^_^I2BXV7>)yAF*RauvnrLeA9uTO +<^`DiqX)<$ndnywqy7@4L*ZEJ0u$W~UDjgzT=kD@THZU2oRj#Zri?FzzZ>%&=2^|=o)penajiM8AUe~4a2O{1oBXg&Xk~aEjx%iyEIfrTK+l$ZQtd&VYVX<7E|78KWIFA1wUEL}x)~b{O|ABrk3&DrK+LN8aX`FaLc1Yo +FrLej&Ij8|#>&8WcsYw)FRyoZgO<8`IZCI&o@?2WGZpw1svImRsw4g251ym{kzmicQOX)CS+*Bpx#9l +YT$gRE)s>#?%62bcD)5WLsaCh%6-Y-6$f8g!Grm0spCBbPCK-?$p!NmZkkZZ9sU|8y>rQ6Kh0Yh40+| +8cMBY_{Woc@0y0fvI$@q)q&1{^D3#+LRA9%!Ih#Cg~l*q{8ORn@O}DxTligjMVm#C0vJajWc9#JhMxb +Z<9Nd%Nk^4JEwY@so_01Vl_zRjS&gO;teVUK!V9rL6A9M?id*@byYunFf0XkTM1pf-s%4!kK2Gmp>Kn +veHVSft}eYD?yl{KIpj3Z04L9!%wjvBeOECja;jTc+zji^y~7NEFlSr#7`B!ITIV{dOf36W@XSbIvvb +>MrSk_V2cAT{Z7(Kr<+o*vhq8asEQDPgn<8xO4H&_ZaJ#8E@BVKapI}7RmNyznP;WmsGM~579{naqjJ +d+8+c=05U=#q+cu?Drrj#wJTs4{(Wi8)3knni8se?WwsPFQBYe~UF-=cW_KP%~cnWqH@bEF0hYR2+Uo +a}3w5R_(@ff~Vzq0I~hwDFgmeGrPy^u9|pvR+KbX>t6Fb%d!5Mmynes}Tnhs9jnNm-K;I--16@WE7iC +&tQA{Hrv=y1=m`z-NZet%MzZ*Us#F!=JYUFQ7DZk0+fWO#O#k)=pe57sQrc(}}o%DWE;`CvS|Al@mK{ +?uaX0oFRWh#FZ5=qjLwwCPcKNw+a}@2j#}y2-Ecniv3PFKxgoM`5^O#*+`L*GhLolMEg=#8%$i02u>j +xb-E^$>G)s}r1Hz9`0aq@L$3}%)&^0}Adwh}%Hke&o(K=K)msVI!Rn>DlVV2b&77Xqdv~j=*-BNjB*E +;D+98QImS$3f;YeJ-Uny#DYeL5gq}R^VQmv5VPXwoNMW>l(4F%aXIJasj5Q|UyPy5&oY9jb$Q%ZzFD +It36Ty5twAmmm}ekWa`%?7a5d;dpS+ekb6{U3k#!>rRW^-z?K26Ce3w^Z5Eh;1|O_dxMFbVl# +TiYf6NT?<(YX(3_OmlFqNPXkK3EN~c%q*3sCc!2WITyF&pHu50S|nq@`zM*nqZO(u;Jh +=3^}Fz2|CHj0$Yl{sOI|6dY_dImo%zUPGu!>SkW=khjFgKIJ}>+-N_RR!@A(O=SWg&h5C5lzmGI-1J&Nci{12JX_{Q)y{@cLIR}jSfn%Ok;Do3rOHA#j%>CfhKiUx=L-r(y# +sn$|GACrVMlI41x>vI08bEj4h~rOXwMsb^fvpNd=531=U5g-4^c^N$C$P4 +`ncUG%+0E9!T|5>MCt+3+T!y(eL74jaJ3%LjUD`~SCi=9GYp=>5*i1EjCtqLx~%VLdtIgELvmTh7de& +j0Jka=7OA(Og`Qrc;#R1jRI8Z$>xYLif~$muJ-YX$M0wp&HLchw#yyq^S#-H$Ku9LQMe`!)=ZS6Zkv0 +VC*5E$Dv7}?9aJAT-c;~^~*R8P{-f~Dmo|6sP=DT!^g`j)aX_^u1q;3g6qTrE`Rw>1Fh;*uGgqysBmH +>p{eo{LBF8QhX9naR9utOgtf!HS8F9b_8yi@j +x`Ps9ufo=`sJfXk62)Sc*cndx7@wN(B3ZIt*Tj3>7g4rnGJLA0RwftF-|W0U={v3%w +Y7+Jc#_2p29csK78YU{EeQ%w`Tw(!0#m8A`P$R1|1aRc#SEDrrj-oLP841l*VW<@HtTNq&+?=8ilQ8u +GR`Q9rS}R4f5X_<^Qd2%A)h7@LLU0xaCSbFgGUnyq9{L5CL-6d+Fr(yxMTV(*ihW2MC+YOtSIKvxNxH?o-&oIQEg3O(El>Vak@rW4w&q~ujfZ#Ob#yKL +iYR@P)h>@6aWAK2mnhl@Jw&HcK8(z001s3000{R003}la4%nJZggdGZeeUMaAj~bGBtEzXLBxad97M| +bK5o&|KFbiCr^gdgr*;IoSdh=8`p7D&!n-ZNv`R+9v(zO5@L$vfuwC+Cg1&b7XS&8lH>GFZ4wa#7W=| +)AJAwtdLuHScqJIm5_X@fTXrw21-m-GVuuGW*jc_TcqOMYmDP%U;PWyZjYeBDl`mNo&FZRFB8r$?7P+ +bzpO$%AS0d8STU%y4k!4j^GA%>=+m5FBd@i%OeJoO5&2qK0&q~;D<*IbP#(6fA&8mB@G9XfFmf}23MO +?`|D=kl#DiKN~uVviwQ^+EWWL624@if$&%~Lszx3-Weq1cJ#E}V<%Esgn6l<_4KgdxP}preCj|(*sH&no-rb#p%hXdm!@J;w +d=~&>SK($ll+Zo)y=^LTqb4T~|uQot +Q+5}uDZC49fva%4doXNQ7mtkkM;Ri6pL6M%`gPz~J2slfDBk$bkJRo%jcp+0hOL*_jzy@s2BU9CW_jG+`@IJV>~HX1lk^BGO?h +{U;4puJJR8U`IZS(W*nBTMp~GP*IYBHUP!5DGSr%kE>{eUy$ +zdsnOI_4$t<-+03lPj0}M(}W-Qn1JO~Uh!0kS)4-@_Qva1(~0o47IefJkGpP0j3*m-`|aYx&(YQIzns +2(dwKQ^2Hj2mEHk9G#c3ej{yP^Eg? +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 +T?Eg4oq +VVW2cvjRf(0x-sUL#vAsQ43IRPk4!#rr&VM&TECC#tJq`;>!Hn|RKG#*W<8HRn>0Kn6hd2l#rmH0q!5 +p1+Pt5Q^-0`#)q-PC&86DAfhgqmHEC>)CmcU3X?whrTW=?;c9d7Sjm#&mLNIH?B)9yj7UTl4X`A6@dx +oBLA;i}hL&$K)I59?{Q>F5(Z1joTrB^C+0``E({sU4p`pGt)#T#r;!=zVKR&_Nw(lZJKqBF~Oi8&FQu +RxJu$w2=JYpz74V^{Eja7z{%zR-`KFHOxV)$xA!m^W@ZOf$u2ZQ**^0kfgUVkm%mhPZ>UIYmX_woi;$J319i(Aj-YeDlrmF9K7ruYDnO2U=7(#=pZU$;cWn ++5Wzj0qmKP7U;j3<2B=C-)a0N-us=sr3l(^0}Ky6`pRO`ZAgj&mpGHz!X+4Ok>M7pl +4gh*%d!oQrc6t?Ebn?8c|go1Y%2cGrq#R(Mymg|4koVei95-lCH5!Q$5W}$ +MpEu#qseSJ-_xRVmf$BH$=g$QvLQNsbP=DjZ>iiojhbofiJ_i(?PKS#1G1o +($c*Cp+)jkGi!axvbMNo7_EzDKoui-DkvEe@N0IIu*H$hFamJfZx?rXN2w~F#=3 +T?$2>JvL}D{Mpd>*nn$PfvVdR-Db}hs2w(;^BB1MV|mDgx$sLf!52tiVv=lJYs_gQj=ctH6R@XFix+L +G!aZ>n?WD!NwTGsl)|mJQT0*5sJQ#^>B~|!!7leDt3( +U7iGF*=+q!i6+VWDspl`~P-K%hWK@Idj#SeSLh93(9zradGsB6x6)=F%aU?-_TJxBc!(}B%*O@SG9J=f8!5I9 +f7v@9oEONIZ5uiCHF_GC?7B3S>`HlrS8rLCcx36=>5=<5S>K1NiFD^%OIUnJe$OYQ>U>Bayd)49Z7LI +T!f2cKGVGlT7e6KhfA%pXoB5)ZGPy7OH5$1;X^WH-#1lRun6C1z6AMROuV~@4>FiD@8zigvhL_R43!B +iPlT6@H+fJaqCv_Sq4^m?`AW@`3ckQCcc1})d`Q8tk<|fxTS-HddRnh~aJ~-iL@Pp(*mEULlaXO~*sU +|c2_nG^Ak?qXFxe@RZ>b8KaTrIkYZJJ +fY_esPBnM^SlmD1{ZFgaeIe6kww|dw5}iFB?<@T-p@wo3e|$mCuN10Hnj}-E?D4}o!(Ao}@IF41=pS; +VvTl}c#Nlbq4ZrK)gg)-fb+_xZ?-2-~OS&I&vgdrZHy~EuUn_#>hilv3GGwOPZ!3F9OBH^HqI~4fUge +;Rq=GIZA5T<23|c>Cs7byYPse1iuXC==9mhHoFjr2jd=?=)KszR{sbC|N9NyI{`I3Kdsyw@c_!m@~g9 +^LW_Qo7fjE<0V1MI2lMZ*~zs(*HI!k{{9ev8v3#pxu}9sG93g3>78_7>F*^#UkRs|R%U4Ggcpi3`HrF +gYt(58wOgv^%jqUS%)4L4_GIDF=f?TRIqJUU^Uc+8Z={mN&Z4)1g9>_Qn&h9FQ4LGJWT1x?*QHW9*@< +{~s;rdU3b)bpWOHfLL_Bl-sL(Sy9QpZ7dW34s8^lKTXnhI`U-fI?)X#el*=}qKLAIp*;0T>TAn4Cg$g +Rvp(*0-6w3r +k{e#wBu?A(S|U;GPDO9KQH000080LEayOxvt?_I&^V0Gt2-0384T0B~t=FJEbHbY*gGVQepRbYXOLb6 +;a`WMy+MaCtq8K?=e!5JmTMiX1^(w=QZEF<56L$;9QL(1Kuz#N_@K#O~gIpEu<+E0L*|nnw}!oZl%Ib +$@))tCmrI8^Ckl8}HR#ZNNB3ZlNtOo{?@Sf73v;E^s#(jDi&8NQ`Dg3DaP@CzkbbYcL7npJ5<>sc4vBedU| +^LHI30|ba2sbw`J9+Wm&1bsGDrP&Wmf66$>?M^YsG1G%Kw}cPp*eBQ?v5th!g*Y<`nnYwWhkn&e;vpq +5p+QE9qto3_$vs`3p%&SrJFZX2EQ_k#m@J}=j6J#X@|sNJK@HeYMN!9J;P&7Z5RUaj+)`MNHzuK_vpw +XBnE)~w9eN}IpxRomni9!#*Yf8X1I@3N`@U^UNSmeu&Xjgm!qSFFoyVOzsmq)nLu@g}M*5KH +`fsH^@o*IQx((>Xp+@Ht~{%<$D|Rh88Q9^Jx>7Jo%n{1F%hCpJ+Zikg{N^P9=Rcxaq;InM@$d3*LY{o +(Z0>HE|4^^13ZK7E(|c=qb_&5PHk6NL*xWKHY&O2b&gkf})`3~8X}#X=WN3Qu=;+2r*+#0FMuo!0GaT +a~~f^#mSlaXT&2x>=NMGf^653)^dv13fC8Ezbi3br6nXu(w|`4t{&f2C&*{4lZ{D1}`P1&6ZEkv%TV13zz$tKN<;wv +u$3!}U6^{5rJ_m}uf>oTTbK)`JXLYEG@}JqU`th45PY(`AuBG}@qfS(m+^yEp!NFfn-(8%Yze!)7zkd +7T{n_`gPT^(zbfTV&4-O7+p<&OT7!j0Q>*f_bi&NTbX^PDjdI<}JQY*&YFi|t$z?&L2uXs68gu0!?*md&8dVGR^#nfsXG*~6=c9AvOf49i5bxnk4yiX$axG!(x0|$e9 +$o$61LQ{hXr9|;G8Yfi^qHG&SClNQPgs|Mtl2(?7cnhYS!Z8!GFxdb+nHumK91+Q_u4>>M;Lv4x`Q%F +dQGM;EUaSH8Uw*aU;dsR9%p!WC*R}4pjS77SN34#HRTT9)Mn2ZGRt_zo4YZo5uf8hQW(LdrQ_9B$Evn +B^+jTbA>hO2l`({-Zy!wZ~JHlp1O?kwRskw09`>NGA=_N>3I1y_#UuDI$UL=Om4%N>;|E%7fzC3^T19 +6Zp?-OKDd=iJO2ICfG<2od8kW@{Lq +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 +Z6C>2aIEy0*C3f7E6|FK~I39~be*-VCyH +w@0rH)XN)5lJl5#2Y>oax{Nx|{r`$%ebB_)b(p$vKq2+wlU|*NFXRZ#wN6&tKfN{T%3D@Je2EOs=h8gSWjzdz*7higWF!r;1zGe%l{wIeT;Q{>7_Tr|%@lL +ghQYv~Pmvyj)hRqslmybJ{ce0Ylwih+605ak_Svb8~hunj$k`^2q5Vn2VHx4zgQQ5RvWq|{3W)-gj;% +B)~d=oQy^q0?g_8i;o~%CJem3NL|zXD)}<#(G>&u*2UW4zQ-So1Jxf$*Wfx?glFY2U!*)AT&@6`yq)r +AkMBJbQ$z9#?Vw|UY%{}1{I9uM!naD~fS15dy0c;eiY +O|&H2sTn`_OH^pn3vb1=^N%os%U@5YA2DVG`WIry~as-*&w~&kS9eR!0V+z3^ucfiu~=LY`B^>T$SmmlVxa2|Hwmk}h4WBqZd7_nVKry$W*r7Zn><3-(I)!`2IMp*Q4y +GI1@a0Rlp=3Aw(mrY@P3jYkIOibtOL>I;;FG{N$%V-4fY4S_}%7moNF+ +g}Wr8RW7?ip}6r}#C_Wuji=2)v?5@MHQv&j{UGbmNi>^8tZ4JY>tODN@XM{Nsw(rdvAgn5MaZO;9nr& +ToYpom<{!VvdgpiS9U^%Z!g|_ATSUt!t{NCLu?zr2OEcFwMZ)b;j_4v*SC}FW&{vzZfOpj?N-Hs>env +?eY!zfXvE=VX9F{{t*gJ@!c@kmvXNU_AOmOH!j!lxHC0M;4pB9X69WOb1E^`9SU%W&K%QHWGBM}PB`) +VGmJtNb`P$>Ww?X+8f%v@DLHA?iGvrypQwd-VVn2oKb#+9rIMMZyvyJ|mc&lz&KP<%5j=Nv_a1w7hTI +zOEjZ-r4Sn_8BYDh)h$sy5-N(h{e^0OQ{d0P{y*CAl=xa91-4_hA(Kid~BUY08w^ycUOm&Jp@oMT79S +8yO9|{eFa+Wt~8rOQgxHSs~a*QfZ4%qon$k%+?VO$aFmH;RH=F~u5I;_KrN%jU=l%h^GjePgWosK9ww{8K( +C>=>np3!uq7M$eFSOX~BfSlao^^YHtrtuBu +hA7OXcHNzd@#hz}szjh1=Z^DiqU0-n4yTTa)O=prETbp~SbWdQd`<#L_se@___=!JF)cr*Li)&we;=p +b|lb-&5ZyV9f@zK9rKb)2A@~aa8axkS>LiAI*!Ab%o3lOXB)j5C1dOA6#`_){8^bDk7bPS%bK;Vih8DJ5NN-o=`bJzewH4Rv5a=fpWYpvJoa+a ++-4~sILui+%<-4>Q<77I!A#6LO$PjErX%Aa8a4@D~%>DxirPKreEbx#9IdYhWf`1WAvWRU4#rOMzt@W +JI(*dZhUCUS=l2D%vX&<$q((_14MvCy(gRN4aUmu)NMWH`MH8D)UunI%v{&{PvQy<=v>V+x~Mtw3ZF4 +%!%x1)$6_#=Tq6ot<5h<f5J(=oIe68=^dSUEFs4d0a@1*45Gn +y`}j=WAnI6q(R@=?vF=O_vd(MQT#!_cztM|K?Ujf2KK;-l$a-j7!X;0KC(?J +H1->Ky!yCjE?lQUH!8n-Fx2Lz<&JWzgK7rgA!}nBtf8EZ744`+Y;0-YGa2kX)jDnbysBp#6MMIYtG11 +ELW@y=>RvttaLsl01f$x^;Ft)v +tILWVKEy4Jys5>)LIA-~!5<^Y^F6>hu;)pq6t5!Aw}#GHq}qlxlimYN9OHc#fhLHDRlbDua07xHt`_$ +f}p-<{Oq`RkKQGH?_&#g4J=^R+#1{SzF$%+Czm!XYe{=ftA*@DFEHyHbxyRg4D?punCUJW6n{EcQt$T4h{cWBvB +lo!G^lY1_O=P3^=J6}@W%8!bP7QXyj!N`{cO9_1V`= +uC5D@K7nXsGuV|5vMnA3tS41_E7vA0nl4`>hvT`BI!zCX(O+|J*Uuf=ye?ZNE(a#F_(Y=X +)`3lXHXacz$dhwoVXm4dtbV1f)l2;TuU-iL5BUs@5 +i#xbrgauMVlu6LwKeK4V3r5}DS{bXT#=569$8NH=DGh%Nl{WGXEMJv|(<0l*ue%)MJ!LNOBwi;zLntD +5XH;vl&ctCJvOibo3KVb*-jT&3SDM`~6!CSB0i9mzw`bz`5u1>qN^R->329 +nxcjgvg8>($SmF3PrXvih>f3n6*AGg4Ajdy794r-WNdg5DKa=V8E_KpF1sx@*ICgxzh@1hxypF=fMq# +vNOqrkhkgZr~>baf}N5#!b&jo6EBZ|gT=d=tuYY+xJO$7mw3BmSdNE#hvF=~6+#Glk(0jCN4lqu4 +gJ2C!H@036)U3sXLN^f^g^pWQ!6va^!Z@V4<5wUePvS9+w+pyS6~j>XTRu$4RK94 +GB0Z}fej2699~>ZN18HzyC&Y$b#}ZPBkwLoMpevr5Ovb_V;aAT(_LvYgy=VB%dZyj7#CFuG5Qg8Ln{Z +mmi-G3s{Czm&#b(LvWzSord4;-7-}k&{qX!AE&OBs&vj;5NUk+2@5;0LJr@Lhe?;g_q#SX;ktV( +Ip+&r3S~uts%Q|S(eLnK`XH4~jt!QK!!@=)N=B!+Q|#PjEsZSbd7Avso?3^y7ARPpjwZUpsFsQ?9dGimG=7j@dC=+FZ#tOv=};P;U$E +6bOT-6lO#ILfnjPEP2peb*M#!QCodNUQZzZ`$;wD^bdpCC+(xp<$4qBIV4VOy4(GNsn1>lw)f2Irp7d +YJmZKHvT1J(Cji}!R(VWGLOo@5}@UbsQZe^9Z%=^j8ZLv&Q4KXF0Dh-Vp|EK~(}XE#y(onC9z(oVUyz +)Aht&DAxxcmF`=J`IB)QL4!cvYd7oN9cY=ICn=lHC0p_3V#_Tt8Vm=$Hjc?O&KzM8HBZcU7#9G&7ClC +`urO^sa?mEVeQaidE{EEG+B3n#F?^du;ySACjIB8DDR5>D9HWrvbqUbAE54G#||%?c%dwFZR7zesEtu +_&ms9`KKrQgfqsTi(g}(it8wo~Un~q(pI_m5=KYRs?1a>gdZ+jiJKZS +?{ya9Hsbk4iASulR=Ku!zbGz64Qm2%@1wd;2$IDP!-(()>(C;7DT?nSXq#wluSS#5kc}ef3A7pW}FP@ +IO#X0|XQR000O8*;Lz1D*_1?+5!Lo#s~laA^-pYaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZHUukY>bYEXC +aCwbYO>f&U488kT2U^l%O6>Q*#}3Y_@2o}QJKw +V$s;XZ=?+LCg`rF^u_Kgo(y#_ybxlR7lNrWUO4cOLtJbs%@|>``k;)MIq9tz)!~Mg@Bw^JV_jN+>ajato+rGplUQahRSAkL$;NSx)m=E>$%uI8sg&M3nhEb397OLJ^xZp#r!IKTOmzSckD7N4TjM>08H;= +;7fp!k=W3B`twN|iT)UJvR`gBS-EIehm8>wR*Y6?|w8rRyR8rxa2{IP-Pm&}hRAdJx*DdZS272zcpj< +ww7E<4MykXZ2c&UlTjzLN0v4{2xi%3g6$uT9S#d36JZ)Qh;hbqu|Li-eT$qdvQQ_U@H9+R7oDp{N)oj +L;G8qQLUu$lADQ=f!YVU%xPaH_S_B@pzKM_VtMpNY?6l|%Jd%{Wzk2^QCjw;HHLXlvxVLMjEApjD_Fm +6BBzXD@LuEOEi5hPh;l;=1(B^*!}a8;99cVvg^$r!(r<8v}la#p}0(H;dR@ZPP9c-U?_8`A&HYH%du0X1E}&2q%* +Gqk}hpiyg-dfnb}>xes2xRh8E%IQ%%oYT|KQ*eaH;k~H}XP)h>@6aWAK2msks+e|ARM}g4+0040X001 +8V003}la4%nJZggdGZeeUMV{dJ3VQyq|FJowBV{0yOd96}SZ=^5`z2{e0NY#LZQ1`l0Pra`8xR=ogWr +BfpAYtRs)%^Q98K9Yds;fpw1mpMo{A@i=)_E9g*J;xU(KRMn0ewlozkI%xZ +6|cnYip=dJ*v|R$p!F>nzMu& +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 +|Vj}yXO16gg_JS| +oW1b0mvAV?0qYx{6mD6~Y|yp=^AN$s8*pve_%4e_|A@mnZZquo_^*wNZM##s^q{+rdp-hxp&fuZ@woHLQ&`wdI1r`)Rr^~R3UN@PgKove&9^1#4-Qp)mu_a@c~vs8d +>(we-JrrhHj*AOXX}rASB2?3(bfUjm#OLGC%Q0Br|kiOF~N}h-zvyoFau=460_#z4jD@m7$Z@F?l-i{ +DkvA@`4#rv?7eEmORmxXyKO95(=cEWZ>0DE=6UQ3B!BV&%}ykWKQ%4xN6glZ>*|~0@K3tj*O5mVfrI^ +@8ZBcxec1~j=Xn%*%{04dio?u79{QDNSIyrZxM9+m@D6Zcb90(kxvou7s;I~QS6_4VziE7Pz^v;wrI# +1J`-osf*l|}^NQ;%ixevlG5Lzhqk^xm9-bV^tuTmN(PU%91X;F8FTv+s^}GTr~xp*{uVr891>v`sbT`I^e(BCEN?Z9)L33fG@ +?f|JjxS)l>eld&8c11smiUk+*6YP^dDM8j^tW*T5NQkX`4;k!<>l3-{q~9fEJ(6Ot^=mtg!XyXjo^

    c#1Qq+@v=1@=eb8rPU1r#6TTXLo!U?3>2qmEc|OvvW1n=Q$q)Pee?*9ct=Wk1wIv@ +F9??97rqDvJZE-JDK*LQsp5dO#)t +P$%PL+OVWKXd#Y6ow`AhS!^mK!oKN>W=<)gU +-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 +c686YY25+;y0oZUT++=5V=8 +bgBe8kd+W%|gKPxfH(mLV_Dd`m?W7s;f>ppWGtSl$|3(uSi$`lQ_CjwBv9Jux3A`3V;}+4dhexlZ?8= +18m<44mon07wnyirA*$s>)F!;=_v&w`Yn9#g0TG0x5Si7@KsuZv|)Q~58mdcDO1Y7V7SY9veC3wG&IP +JC=bLZPoj20mVCmWnEa9Q&P3tcQ5_|%kA^-vY1R(%#2U=!0|#P(Fk0vEbPrD`Yx?eUA8y0#E!HM;-EP +<1Y_(oSNhrMkY`Z>uHlj#~5?d`vP^P*xqsGOVFO?4MNQ{2PaWaOZ^`aGjV#1JJ}ABGZRTxYE~!EEUw@ +)s^X9NG!v6dIwGGjJb19XlVaMm6#=4LqrElK#fC*wwCgj0q{&O~}xJ{=v%TujL%MFTmdMutjB?pf-LaAP*V)`e;{!)RqM@f +pn7bqM#&$q>rsR_ii*WiZ&AKjCrg$C!94F$w;MA)p$`5sxXrUC*M%mW*@dNlli7oyG2E1B4xZbvxOwEYIo*ql4;)(V +Xu2g8uUbr4dJCF&}y9IvSb2)x%bk_ulf2rUT=;T%FBMKjta*Miy%%U&h7&84-dH7Kox0Qe^=hHhKzis +s6<1vS&?LxfZQ#-*&ACPKXk($F%VGep_C&QdThjM~cmH#HAd^p@8hbdW#OpP+#!Lc93`vo2BRbMjX$- +~QV*HNi0am~MfA4Xu!t;C*Z0j&j0TOA4`wW*I`T^SuG=0lh^Wq66UzY}IhcA30rpO#T3*5_~sXGN2E* +EuITj~0T-_{9mv-O6}k1zG!j7=g}p?dnW2%7g8;7ZHuh!DC#b<`>cRIrtb+-*5s2*|gnNzrbUB0d@Gj +jWJtu#xWW>!hp4(dweiF1*pRjLN($@Mx(|M32fgT%>ZcT=O94gE6fK>R#IRrQyB+lKl&J=N_U2}P%f& +ue<|_`;|-N^(WU4lC-#Cuny1iH3Nw!T{+OkPuyI53w8bqBv%(Ee=e5aB^-0RG#PKm4cZ4;(~kBvr +t|t-044Qm@y0MmeCG4Pr16xlKY^p2@YGkZ#|2%G1zNg<-8;_5U|-YEH|Pb<6z2X3>cewit#*BVqCveu +@xMp6Wp7KU4VeBUnROLl8$e-B9S-ZZ{;Y_%hi?bTDi8RYLjrrLa&^YAf5TlLzjW+E*Yu)5*q8>fp9sQ +keI*R&`pFY%s1WV2CNgKq!thka@s)5+W!Y48^wgnG^f~JN&Ayxdej>^AC@S&2{1ej7z&t67bvn$1gzi +Sz@6sK(Z*a?Do4|1|&40f^MVDH^x2W{{<&V#zL3gif0M0F}_;=NY)c{BO!4=dOIzcWPAS4>HVD_0G6L +Wbi&e|5G*+Mj%<1%}`2>4cbu*RFLQqjW6P8Bb>ZHorK_Hh +*{d=Ppr=;F@$q5B6B;X^fY7C3#If!!saV1D^Cyv`|JBXH|9#*>5=M8`opmyp)Yddmw;VZ5n;~e@xMe- +5x5M-^u9}&I$eq_s;!9TcijfeU*hR!`?TC^IbRN6r=uBJ40ma00|N_je7N~Eejwp^rh)}uL#l-t5@i! +0__YAvbYwp#?8m^2I{=mH=8f7wNO9|q#!7Wl*cQ3Eljsh=^zVaS;!w0C34NrgSfXrF6mH^<7xW};2ic +IicNY+|_cEnl#FOm<&!$;FG;TmmT433QC-eR2A%P~WT^%w&JGC`Lgl%!WOd;?N*6Da2DGJYiYb9vw3I^p?13aG$lu!tvETh9@E-%8SYg^_MT_o{%TnIt +VO$LH9$kuqcQ+q(!kHwMLr5Zy)&?|*hjP1oE^jyxDGs~J=!qryI^RAw~)-pR>ix%N$n)Mytx|tK2(1r +g@heh|>Q^Y-yZ1wuSJ8v5iE|Y+>9u6xY(kHfRmVu;-S4KAIO(FCltWjg#vDGpUH$kNAlp3VNP)lNqvit=m3qjw{o08%XrkH?+7 +lG&h~zyKHh#|8qqd*<{rF(SYuTS$SCq!=PG3LvoMRuObM6$<)`7WMh@m2$pDx$oGm^`{ky@YBDn6D{3 +RxD_=L?jA&z~S{axjHFN7NZZl4EvDTkrbJ4AwUfu;&=e|G2+-i?`>n3ND$1(pYmFo1RXz{AD +9?#z=e+7*iBplQmdG9{b~x8a7>{E4Fz6~OFYU_KeTj2O>8zDLLJ+J{6m8t1-H`l;WoU$zqRkaG5v#8?k}y>n2TE +L!B_0RV7NkG%T;9IUNvXtNc2w7NP^hJBdUhc0iVh1XV-LF)tbG->M!po*YdEbH}G}(=nB(z%l1HTnYH +cjG|9G6deH@7H?+A}VsrER737Wu{c=SwgDN-vmt1c~w|)4avq(O>FYb70s+; +*kDmek*`MiY6fAzAdJ`Ej6bdTbpiivDwflS`eB7@v$Z5+ved`nfe+;n0Wp=H2!6&D|gbvP^y91S!Ys9 +<*7DhinxIi2k4IZ@tzqY8Hhl!IIlf7g!l#9nJjR}lP@r(y1 +UC775f~NV8V<=;M0n?kspm}Xk+Rw~pD!C!J1uO-dqK+2q2W2Gx3s6e~1QY-O00;m;L-9=GHQQIO3IG5 +KC;$K+0001RX>c!JX>N37a&BR4FJo_QZDDR?b1!UZb963ndCeMaZ`-)}yMG1YqL9=%N_)2}umC<_E3U +f&#ctS&eF*{`Ezyn|S=2}>v3t1xzUSeKL`t-i^zMKeL2Q%H`#ULb1>cjR*!HRytSCsm@3>HeZX|Dd#R +~I%v9Rl(C2!s5hVOQDyIU-_NTaK}ytrp=#f2jx>%(j>hsAu)@0oN^U+S)Cc)Md#`K0PrG11Z{-%!a)z +TeZfawzZ2*BErUuXv|w-VXHZwql23CwSkj$e!M@!T^}17!7tPSxCb&{6PpVVi=l-1O6v1@92)b$Hgdg +uj)qT`&yO`C0!7BRkc(_EelrFif$UVB0B~PtyHvWSXJP@s5iY9ZMDcw)9$ng;2g)mCnOdNbR839?R=Q +S{ztu*7DY?<5DD30u_zlVCHV+!tpQT|o?U5ym&>JoM+h>=Nep);SFlz#eT8y3on*eyDAq`lP{Bw8_<& +cpgpv~6eF3ysD{EEXGa^BL*yIANnFnl9P|zVk^hB@p5@^DbgCOK(C-{zB+nBg<8?pyI#1XMi2%jfL(2 +8v#KkBwtMUhI@Y**wJ6+2Mw)vLP)YY0QK1M_*tS`h@#@&Vh&TMT#*u^5pOWI_1ceV;?*w5n|Iro$$_k +_(=!;Qs~hRYk#C$tu{VCE~0TsW>FL5I7o*Gb=%$=Ly*uAsb%O=J%E`O+IW*BHq_R^|WE_JyEw*ky|RsuHhTn0GEcRxtKO=ROWNeq;_NUH%)aSSrW`<^sX6C +v*?f%N4QYNNNShR>Y8vnsfmshBb{6r62#`}2^D_>91#ES46n#_|GaaG`{iWu@ +He?9@{n2KhewiC;2o=$^tTUYar3aE{qyS>#MCq1D;60cVtlk7QY&it7-yKVZqsS2xjvDH(#9pvm(=-B +n5ktnmoqUKF@<1|UgJHc?epra)%cUB@g4GZKY=DzNF;s`+MD|kvAsOp}wSAw}4D_q$+ +o>0Ey!PByZ{1ctOs?1h-J%;6uL9nJ*3c^b17GM6?ZThz@o=2DHRW-*g=0*MWpcwX05)~YDrk~p3JgVc +eeR4Ga@O-+fn9hor(OzehjT~>gexJ;a2N{#hjZs7tinPwI&-=ct?dynga-Fap)(xq;ULrTC~1j|<$yI +F>9{Xrq#b08bWCW!Nj^^9hd#?eW0(Rw)F!MKa8^EvhhZOB$He~}{AyZYuEPqCbqR(S^8sd8EewpV!ig +e_1{mONM7!nkoENOMkWy}O>{Lj;H>XX4L$v^YDO-BydBv1lbZx+5cgBEAD +pYBo@fpG3F_DoUmD@~Ir)m$A^l7*Nt?r11jnD;UbjC?R)9UsJjpg6&8H6!8`wuf5Xn&h*Smu=#yb2Fj +RHTY0$J4vkr?8)4Ac4CWA({uP#i*&l+iT^a;;7c7lyguyPyOuw+^Xm_svS13RYD`GWV3K(w+FTNRy&(T$c&$#n!7d6o6YF~TrWGH*;Vn=A9HlpZS&;|4+*ZlFmfqNTvpA(|$TY5Q$y +;cZJ)3QAu+EG+;0fiBh7{-F8-0O0*4AYsa)GzeMbuMJSvddXbFu!!2V?+y*uPH +N-sp7@UC5;>l{bHuqmI$R|9zz+Y7hbtEu~>QkQ7Hy_X{6dw2SbIIXkx$nzcQi4ZYCgw#b)2t-2o)3k31qXdR;5b +yI%a?M!ekn=%QfAB5+zXHAyhgDxX$iPIoag%KOH~)?XOb3`1K#wF}0yhP67(GB`23o`<-->%r?C7lvcb-t7uJF +Sqzy4f$a9!dbM(`eBGJJh9#74Wtyz1%yHdz#vZ*7x@zf@)$a~-mJ)yEX|a-r(J5x!QqM|7YTVq4py=( +^JKwvxTlTIhLPlH-vTT?kVVf8>cN_;UoXge{U~_5=UjlXTk`i>{n&5Z?yXXtyt=&H!En}Z@{;c_yJJT +$ySlrqrR&zcC8+T~~)%@}QC^l^5-etiS#V!uV8L#CBHpo$ +t{;q(>|7k1Hmdg_QEJ~$IefK}2G%%-tmtwc2M=K`rlS|P#AjuX(I`bLeT_DOz_eqBTH0r23wYr`*ZKK +DpF!%!%(5#mtt58g7J_9Tft=^9^8k<~wIp}aZma3D>sP?^(3pTi7@4I&!@v08t(o3%A})%cFL_by-Ey +(I=X$OwrlIgI_cc=qWfUgKz#&GC^E5k86+ecR&Za2>Xu-TK&2{A-2g4N3=C48Q)251I6x>3FU7v;IAR +;Z<*EY({?$ZSZ<&Z&RV{F8^cdD}MZ_Ckp)Z2?mO#36HRjpQqu@_Gq^uzD_hO0xHq=m`;Du5o85=ESqw +7p|JdDo6j;k$LJ*b2lrzSck8H6^3Z`C=b)T#p>QWqI3BpT!$5!nf*whR-xFxRtX#d+PrwkuqcIutu*T +x#Hby#RA(#zCm~=wDWbtl-JGj&CwiKPZnnWl;_7qq*U&gQgrXHPn6G>%{2sN7_o;2flWP+dW7?z&6x< +gt>tSv$5@cZ|?a-0|vt|DQ6etN?W1+c#a8YJl4Br*_(qgZ0y1(5j5FvSk4K#!!sd^FqP)h>@6aWAK +2msks+f3s?CUltw003zc001BW003}la4%nJZggdGZeeUMV{dJ3VQyq|FLPyKa${&NaCxm*ZExE)5dQ9 +8K{N;?rLvIj1qFh+K$m7%fiwwf2P@zO0wd8j8;Md$Dz;bjzweGBX}x$wKTH8^ndCjZd+vC5%t}@zNz+ +xM8_Cj?@UpI?CiGENMWb2T{+>+icu}p_T&&$swO8&{vz^{bT2EGpm{mo=GR-TY9OSLcnPmApo&lU$RP +#DXpP9%j=@!*b>r^sTH8Nvrv?{4-_C!&E#8ldV2nP`s#H|wi}*pKnT#;xEhBs_D#?i6Fe8m(dc&Q)W91d! +C1v%@JR`fZkad=3tybj3z+70|E=OEwCIu~$N2*v>l_eFq1DW4nUS7@TF}ZBVkBNauO|_F)Go8Xj$zdv +0{2z8qB(JujsHorOj@O@zx(i8#8W`xM*e+vr&+AsJD=8~^OrorER;YxFobCKx`@8qY)++E;qtXmSJpR +pX`r+;3^3SVz`p514&AVfAjpne04P7UQI|`k`=wyOZOp=)k?*u5iHe+F$3R=R!h$fRsR#2tLoKcx=tX +-k~jxHt`882SEXs5{vVjArrZODSc+f4-_if9DpR0DEy4+lkP%7L%nzBEkk-y{HGpv=M<36#ML%vhrU2 +?pI7LQZR0t;w=#Nq=xCZh_kcaI9WNCsfYqm9)@p(81aJ(r}3fNIZkoLN*YHIG?i>qzNv#PSa4aVil7! +D%T3W&Yrf`{C3M4XzP&_6BLLNFW;3s2*R2qEAteLQ3=h>3s@EU75D^G9>nlDH4ziUy-A1*JqwP_luXl +SDrdp{$Lo>MiZ+FwAu~z6uX)+MN +twQykkZnB5(&kXxQ3ttzg3F-in82u~+s0VwY-6ArOP5kqtdchb*6;wmjDxkh!S@>skwy2l7E)H9FynY +P}DmzTqQ;QQ8Zm<@v*5%UVLhz~TdrQz7aT4?t%9pHWvIZ^VFp26a`qBt01nkCK=7xFxc6`hd=k*D>rc +T){j$+h$U~V#~pH`(Z!lEJAUfs)go7lG><$9Z#GX&!=6eA}z2Hidww$0bP}wD;MX@Keoq{ +xA`wW$kzZlt4I6;2Sz#Ni4`awI;jwDgKlBNYIxL^rv4EsP)fO)VUBn-|_6`?C=HyCyy85K|$SkhD9?> +pLFas7ioy*rPr=r{{yee08XjIZxkQNv0 +R7sV#>Yhhe#PV2LtxmqBWs)wVA0aPKlGP<^S_`;Vc*knc|dzeXkA0g7uu0dTEpiAnP?kD<6t0cy@A5z +D2yS@>Vjs>laAe<%CINw;_%gh^qB*3op1Qx+6|~aW{P(&=JocywZR@G3`f61@=S|{feRyhx{f7M(?r3 +gpecpTrI^r12^I&fezv0ZBedP$&ksS7QH1D+bbrZ=lyny^dmI!@gq^65$V)ra=Mrd11aGP4Otn`4PXy%D71w^}k>r6ec +h^nuBXkL-w|n#*@i6#X1P}=U{GE|-Y}rfla}*_?D=r*(Cx>92z=r;GdZvJbQx%ZYBOv2^*MEXjMZ!}R +dFj}?I*N(k)H_G+`%JbsCTKQRRfq~jLr<8%gK!*&`Pd~nHv!glxvoT=iVK6%d{;Cm{i?NOrWOEdjE-uCjSCZO9KQH000080NGUAOdwaFgLwx40Eid>03 +HAU0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*Wb7*gOE^v9xSl@5sHWGf +}4YC8r{gbYhg|euOmsKeKW7 +iWU0>fkJOlv-1H4<=s3belex$W1B|FkI4uT*nxKiw4U%i<9BJ&w90|tMy*^E9>g2{4QHAmjcs)Qs|9m +Kd43?g)dz`VD-L8xnMke6U@$?k8j7vODONM5!K)5G?H=U}eZpLkoNvEWCjz=V)iI +tAKc$x1NxUENeWwytWlO>Ni@#)KbPk|b74b>La^in`9YGvR{XQF8;*|7R!R6H@*RY95Lu_mTx`QR{9kNkAyhc +`UIJIzRXFvAXQ*lwsuq20!Ko2+%e$go-SR>S|J7a;^-71cg*0!wqF{woz>KXEP1+Tc%LLE%Hn>R`2fl +~;kR|{WO>10CcTLsR(fhd{gm?&i)0HOXCjWDWF?6CXx2&vMT3veP>r;}v@TP<_5`}b%mh4L*;6O4U)w +9e6!Xvj|7}C8RLE)1Iu<5kw_Bj2x-#U +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 +j?U%lwe6&Tt= +r)F$lQy9u6mGbSy$69iu1dGD*uXA>{}R5N_*n+WXhW0R{4Hv`-^{#wmlTtrDu+y1ok* +RJ!(?z83qZ1O6Qjk^1*0PZ^$JfEMw&5IZ}QG<-}@JmAaVj#b+4(@S;v!pFl(C}SZVocT@=jPV!v~|0B +^|>_a!?PphovHrQ*9ClBKW6Wi=hciKvsO3Cu$u~h(U{+d`7A$C#$9*mK!yhh>942V`mv^KPI>p^O8hs +JxYCm%FDE7({|(^;E%OJ1*X!+=-Lwd7q}n5$!S>ua)h&x6$e0Z>Z=1QY-O00;otRNG8@$te +Ci0000#0000W0001RX>c!JX>N37a&BR4FKusRWo&aVUtei%X>?y-E^v8MQc`kMC`e4sPE1c#D9K1HQA +p0uD@n}ED^|$OPf5)wh6om=78Ioxr{my(ha7XVO80|XQR000O8^>F4)WWV|z&Hw-aq +5%K^9RL6TaA|NaUukZ1WpZv|Y%gtZWMyn~FKKRMWq2-dd38`hj>0euy!REpHAt)Ujx)7Ac +QS2i4JuxYWYPCKkGoBgSQ>Gb`PuATqj+8C?yPfHVY?mB@KY^bUWr5UZM(7zT>|Xz-X@<}`J`zxr{Kk?(b}`sahW!ttFG?=CsYjNV%kc#yR9 +falK)qtWD$H;`X=jE`utieqbxc88T?8sj)#(4@7G>L67RcCLoMZVSCXGlO9KQH000080L +EayOaK4?00IC20000003-ka0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1z?CX>MtBUtcb8c>@4YO9KQH0 +000806;_WOd^O@<0u9I07(-703iSX0B~t=FJEbHbY*gGVQepNaAk5~bZKvHb1!3PWn*hDaCx;?ZExE) +5dQ98K{y{G6{@iT`;@`MhNRtsu4&P90}9U&Xo<2pOQK3r3B02JeRrfNQZG(hU<*(*A$iXo@18q8S}vD +=(vs&?b5RpfkeoHF&RLytrtt5EW=FbbYO!1{7mGrQie#cJS%wCR@Tw6~lbTj6*KJd>?o7j*Rr&x(Lar +go;a$PXw?H&bL_#)~4@@e^HT-@lZFM0*kl;nm3X( +}iHA}l*OBFB_i|lC{J$rV1q;jv~tF9zae|AM+9dZUl`C@; +TO`SJE9(% +CnTp|<^)>rH|fcPX1`p;hj7`zyOT#%lyT +wf}eyulgRGrnq}&z31nKFl$g{jz0~T|mO%Dk_gmBJ~h*NWWPyZ?s|$v}|F%ZtZsz;Pg3tnFCi%;bZyN$a>^XcD5b +1+aBh7KIDF|Atalu#CN{Mg)pxKNf__B10JK!!4{)+~eP2}m0`SXC8DqgiE!gj0X10)qikm@9iqZi6=K ++F)39JQPLaLG)Ur{^wZx_AF$7dmv}*P?0Qa}jlp02z?`2{lsE +YL`v=Ii?9f1Kt6bjs(9*45>= +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 +>tmL;MY_*Z6rUa% +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 +=pNd(2t&C-q4`iE$JbTgB^TkP@(>XpzAZ(?&Bs +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 +M6VpO?~jru|=HTOMCEpl*8qiQ;~KDo;bXvz_T +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 +Y5D72q2DUB$nQu8HSTIVa=$L~Z5 +P*f{DH5<_j(N|d-*uJY+Nh&L%Q1BjwU1J-*^z +{Nf86mQ#}3)oIftbp}t$FlCmu&2soz19~C?cR+G16{2vzW`?p`i>B}21xC7WwI;FC9Yy#9_kL*4S~HUUngqM;+1!0zVA|8QQ-YZZb}dwsX?1^7;-4Q}k(c*#4fTvAfMb|NM8#fT@8gLnh1#by3;fq{~rt-0lU8tOjxq +6aJ95+lY`jFZVT!=kLORMBL$bZ|N}BYqX~k0dcz*)i5u#F2;ggp%>1(d(Oenm1^c9$tBB6W%w80n*s(gD~k+yjP_9LECMyA&wrI=b9D{FzG?N*}*9=BT +15=&4N?@tJtt{?ZyAc68sXR>Zj*P?zZ=$BmV#m +ug$$ZwJ4DE20f-2i;lXHUp9jtX88cr`+fS+qbKu2O-@-0Vwu)fb0PJ4$uq3!L&m$8w*G{g~vd6Ma(Jz +a(K5ZlVJK0&jlRFh|j50=N%d$x)ZQGhmMUd~ +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 +>pz!tOtsR=)K;>T!jml8*w{@i8u@%PH9 +|6I|&-G&SqekcEV`|AJ-NA?x8lg0HJ5$`Gn-Wk`IbB-UYh@j5Y@h+~ka*}+x)xw^x9cSRA79LWxQXYs +T@g3Sct~+RmC>IQa}Wjbhih8nw6qzNB4Chd%b7Jz#MiY+yJPFRBnzn(RzqPept??Bm^S_!B?l>xi^zv +Sj#5(Q(fz?Rrx@I?9v}d_2XojD-dc^$osDgy!*cye2G6CH?xtNvjen)S1amd9)F)l8GnwXOEZ4vzBBH +uTZsqA{V)-hz>?&H

    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 +B1U40*y9~J_X5@N +H{W3!%jGS*M%FuTK5oEHrCp3WwFA8ngdTLLacoe-$}!l7lzv2FUKfC?N|9v1W3 +Mg2|z)$(wwGx)Av7bg00YS-%H%-PHx*iqZz6@e4UZkO|>b<4u@J2S}1nxG%N=-^ObW+5|sIjuRF@gm3 +SQy#fz{3?%`(1fPuV5uqmAZe8;SUXQ-f_&hzC9SYn)@-k6V6){Oez@xA=axAJn1pl*Q3C*FBi6DL<_Z +76Zin3)kZcK0(Q2IMlUf +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 +1C1;Sla-+dKh@E +@6aWAK2ms|W%S@-{Hu|ao004~x001EX003}la4%nJZggdGZeeUMb#!TLb1!CTY-MwKb97~GE^v8mQo( +N9Fbuu>E4cR16v&L72lzB>*f3x{bij^*D$}txSu`lBZvK9htTYW=9SoU#?~#0>n`UAGij6zp+S$n1Gy +~HFvzyz43xXVsZ!JxlgNi(&95VEfT;DWJj|12d?Y}ihOF-V`>;2~j^xVRa0TzUw!kxfqo)HWz<^)134 +`f8ZVL&TRld1|dXwXHNnJmV*&yY~n7QFKw{-!8kVoVciQk&BXTDoZUj#Z2J)E0^xAW*IxjR@~Zx|c#L+@QU!axj6v}%G2K-}v^pP)c6J3S-&(>r3;MAQ +aHWGwWUzYtSTus9hh34HtxgEz-^!xlbm`zz+w1yXb0?$helhJh~@XMu;uugt{nE7te>W_-jApe8R>)w +nAVDr>7-Y3jMLc@ax{`~3gs@bL4}=azk5js5z<9lSEja_EW%GhrR~KTt~p1QY-O00;oaV82Wr{VZ4s1 +polN3jhEd0001RX>c!JX>N37a&BR4FLiWjY;!MXY-wU+E^v9RR_|}yHW2;pzv7^*u!Pxa?W|avEgjZ0 +8wvzP(RS#EZ4hYbEU}SDjil=M%l`H~Qj&iq-3Dw%;8@i0?)dKAkMZZ$)?rDkyu$>caF3 +Ec`_N+bGL2Tj!%ZiUmIbRRHdCvCIzpltmP`tKC`h>tIRrscX4ttA$+2Dj9AL{Ml={vZ!{xq=#5rPa!p +D*>MT}!(=?g{2WLYT>D8;7o7fvCB$Z>ML|tzw$G4@T)-9{}%`Z1M$&7?5NLX?e4=)BsjZm#9nXK5_8A +Y$xw3an1(ICDhzj@|2sj$<8yt$wX?&@H%Mz(mh^ClIwMwdo3QA!^wSZu_WHjJbc)$D?wTB=(%ROs-u( +dL$%M&J?^AlES=f*h47zJby>+SJFFLW +-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 +!+lgR*KO|laMX&QJMNW3M +(MrC_vpSvzRK{ta8w}6td1b>wP@%IR(d*i8mO*>q^#+86@Up0l_zEv6c}aM#TE`_`nBgi#?=FlI2bsJ +jbzV=pAi}Q5(F%8sIf>s~GcTlr>3;-v#68JnZ6=CL|%xhuO%;3(_zsg_szTg^OT$C%RDEhG|?@>9yR^ +PWx^5>e3pR90*ENc;&sUw&`>8u3RE;7nirRP8r`u>2adGI}KAhb*y0X9EkH!&&8GAH?)|YU7cN*C+Fw +RA}7Mh4=_4KF7_v_uQb$q`-^SC0ZP4952qvY5zwds3aqKgZc8eH79k9*QG|gbl+=c5Q{B<7$C*C53g4 +ZJrzV46(#vVY6 +;6#N+Bmk4RsYUDtuEdmm=lc%1Qu$OtvL;atR!te)Odkz_Q^pjG9O$1*8hf9Q#wY6uLyW`{3tzLIAe%& +Cnyy@{w#pS0qt<&2k`1p_2!k(<#->tc)I>hzBw@I?PcoD1XsfUrX*L=r?0*LafpU`?IJBHxTulk|?Dh +$ZgeoY%V^Z(}`f{3FpUu92CCAXiQAF~+s^Jh|kYc0Q=?wXg^$rvL^rURnI+{uSf*YMnv6nWhG3*awYN +ic#u-seAEt72(ePSonDk=;c7v!g7D`806nQwK&dp1h60H^+#9EJ(V!`S#haS+c0j!rm&u!bH^4u6<0M +u_5bNh!9JA69>NPEP?CaN6G#@Xo8&71N?p6y@PcHki2IV?q(>4PJez9?mgzK-W7@na`fl{myFQ9hq-z +w1dbcBSM#z{Rq082L~yAA4znl2nB@O(pi|^QMnL`>3ugMassDjY0i?Ml6D8~Q^8kk4dGR$&OwkeGrV_ +>GuJc65QaX*I>w`rA@Xx}5g172#w~y{ScG_d9Zf11mE_~uhhIM@ZYcH`pypqWak#PjD9@V_9y8}hIo< +=u+Yye_+4OpPdUEcW;&~m2rWc5F5fUYm7ZEyfJ`}pqZd7dq=c4Z}@GC#JDpUsK_6_1+*gw0L32Q1sM72yZ~G%8$%irwkU-4gZK6l{wf +p=UoA0l{BOchR>^JNl{$emhI#+OOHc!JX>N37a&B +R4FLiWjY;!MdX>(&PaCz;0?Q`5VlJ|H06GThfkvaz=yyP?s@$q1S+z}D=_FCvc2`!7O6PT%w~bEZ`@w;Ez9@@Ee +{Aw>ZlCC?DoXn$bD#2Zk>>i~NZn|)Nw2j^Ro%|F<+9DSD$=c9s!3k1*IBWisGCi;*r=Pb&6ld)q|5R~ +HJhwf*$Um;ni@A70IT%6&C`kjoOMGn7?swlZkCDpYTuT%{j@9V?BgzNHugcK?WcOvHd*ezHEH8MxAR? +9E_Cg{)VJpI>)nTSQt7&ED;ka_`@@ +UZ7iWZIQ{7^EM317Rl_}`ov>}pYg=%hhy57)dntNHOCy!6RIDY)a@#z;cL(>d^*OW(0a-A+gdIqH?o3sue1zieYlM^mxTEWXoLsZp(ver#PqGa7`( +H0~&cq!1REl8$#->}N=>jE_G1X2&sBHclTFNu$rW!s>GE^0{iAdniSFJ8UA_%3)Jbi^bKv1z1hUDd?6=v!%Q(j;x0O#-e+Xj@L+9UL4$9P5f0!IRA~f%%@FM@a$#B?)o +iw?94c2Bsd-BqnOa^IxA}gt(diI+-5)`KQrFAAglL_IGZ6)2ra)HYFH8UA`Oup;h2!H=CSVyngy>beO +e)wRSM6@sOJ6z;x@4^hot4`AGFfdZdC0P7lTwg}@I0hj0!^M#~m8Ta$r2Kdk?4$D@eg`7p)F +lI92_{fwRpX_ex9eyE;6}AuEp?q{yd8-=9WF=eMUmes+P~`MZL=ZO^I81aBOgsH&?n&;Q0WuVWZ-w;d +9c(ggGf?VNtI@`j-Zw4i*$pIApV`H3oH0vlMm-9gQmB&y2)rY+D2Vm{Q2_gbxci$6QEAEy@2ykeR0KTLQUw +d3+WXdvw^67b1s%*EJK|6Qbp!ukhWqn8Y3cJ5c6C7=V{IIH6oiVrkP*Aef)0fkIwDMPKqW8DZQ*nl6Z +HEoqN2POnW%U`W!x})iG=6L-hc*9_e_!XdCc|Yu_orUT=)&lO=lE(6Y|SkTwPZmdn`&OZ|~QdzkD}GB +iDa6GCJ{lsQtb*zD3Ia&O6?&R43|q{EiHncAIdO7)p}R3Ci9Hd<6S<&LKP5o$lZJ^$?SP{Hrc1%x!*khPTS%JS^Ut7z30ij~xznpQrx!3lvZB>)?-B11k8NwW`;N +fDn2i|fi?$+bqM@#Ut^obOusQ7q_$;z5=_6!{R{zS5OnjAGzPfn&UB_cb7@PR00n-512^)w0Mqg|QLL +?NoKz@96`TAn&K_R=730_tiDfKj0SSO|y!`*434!_^&iVa-X7Y#ib(((JjaCiB#!M7iKBJB?uTnP+k8 +ma3vC+cE*q-srX3&TMq#MqmGCj-kI%T}tz&C*hn{KPt=rEm*@exB5U!M7mE6WIskEO!`9Ef~lSV<0id +l5A4v=jw^S*%>awSkl&AiXbBi$UJ;oH+riJdQSL8Q#P__W((-5F%aC;fgpONZQk6`A5%p?THvaw!G@R +-btPKR&UoY|T5{}BEf*lM*rO)0xb)g?<0xHX$_kKY{O=PQt65C#f)<4Tsgct}AuJI+q0izfZLsI;M2E7|PP#fM7zwweB3{nF| +hP|nnYdZHc-V42AV&warsb0c=)0WI}LTiA~=ti@e4jq~z`6l7rYxaP2L_pR-YjLl|b+J7nAs)GY|`x9;$KQCBnmM=%W^Z?7KC?;UbR+d;<}lJSt9wIvxUwxNmLxzW1gcZ2%oU=bCw8PxPj%oi +cx3wz$H06J24gy!*f3DEX|{Ps4E`+?AsfPw1dNWhD&3JOQ`M|?#Nx?dy30$brb5BeB;{Jx8R!;(HHgq +IAU&E^i%nEbzHG84*I&K;uP@&{e5J25Ru?}nADz(#Va#AF_PD?6{StegHsAbKMPHwNnZEt6uiicU`m5 +>JSM9uu$N&!P()e;}Wpfbtitr8E)sTT@FPUnEdjW%CKAFO&TkQsvUhQJojwFMO=`v}X)$zYMKN>HS#i +lJj$WRDd{;JQjGXC!3`O`PwzfQh=^Zfb6tK{nPr;BbW{*vi@N$!_k&;}slF4HEJFk{O2ALrQzqWb)=# +G +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 +tUm$i%oUkDIdbFKCs4 +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 +lPL>4L#bZow*ct98Z4k{qwi0@_}me3p +WZ?eXrQ)|Wx3!#Z(uoE?kJv^7hV*D+v6?FB>Lr#gBu6zFtiLa$ky-xAUz$w-w6q2-0Hzq!75!KI%boo +Y!LHW3;kzogv%vrRFjI}Tc=*JUObf%ylJh3UI%gPw7&1=$q+OPf`EgOG6hjh^JW95j`qFP!p$xWJu*Ov6^;a$2h5Dc2_ +T)~%Ia)u(nT!pJXHE~`BC0o>88{6!!-!*1(8da+R7hRxIN>8=iYE~aUIdn!G5;Uiw|zD%-ZXB>v##v|Dp^f4hwy*62yj2(ChV_>liXWabN6&Qopvw`4KQyB+?H(>uPQmY?}lW@l ++~L4C*xg!<#|otHoS!yyssRctQOv&Bdc(oUq8qERL&a^pV*g@^}n*YcZ*f#-6Ow#f;aAfJ;#(OFKjqpdYl>Vqi{P>U%oH21 +3p_l)s0#K~!Zl+gmAjy|+?5zP+i!_iIc^C6b{z8O`~3$DHn=Hu8W +@zI`sNH9CSK+V$Lr(4!I(6I$|L0Zg=Sk0X@m;y4Cf`>63r|cRBD-%IWV#Tf5pap+~}DJlat9%BpR>4w +x)htss@6aWAK2mnAs +@l5PF?HWD@005j60018V003}la4%nJZggdGZeeUMb#!TLb1!dobYx+4Wn?aJd8JrgZ{xZVefO_mwFn} +&j!+au3k25>i%o*NxVgE-Chg*OyAWt;9CIUyDoNQfivIVWp*}21Zn{A8;OJv!IGj0iW~i;vrAX6l;~G +P0DpXl(k0s>q0+2tLnMG)i$Z6+x55hXcvnuuU4x%N%vIc+K53ld) +cajR-%4+P7PVzn2hX99u~6~$*c65doot(N=Pe)cWL)BYnMxK(rc1chtAGCZaP!OO$8&4TPmCNT2xt1N3P6DJd=Z{b+RZZKW**t_Wtg}kGCIw +N^jmj-KKXxKZ&)7E`GhbD6cN^r;8u2FMhthc>H^`SS&a*WbnRAQ39Ly{#l%+l`N6?CB(8qS}Pu@*nVK +IA03h%>&-XH-12%M@R!pTU{RHFX&PGyu0$rWMfS84;Xi(pSXSqN_}ydi4iL#Vt*UrXTZxFpeVh`8Qv_ +FfL+`}Bmbq{{67;I953)4Ke3P*_aYRK;h!STatAN1*Xu5I>Lrk(jN4ocj0nR9h&pd6QL}-hsT>E-r%mW +gm^)vD8#cKnUgyL2xOH{cZiY@V2Z)0A}b_bW`^K!o}4l?)YJEEaJ-rK4&{vWBEScukT2ahziLlCK8Av +|2Q3f6p45_iT-@Q}>{?+gk(S;;4|w|>I{!E7Js#fxeV{;vJy$prBnQvOMZ+>P?Fhug6IR6H)Y)hZgrByB{)5Op`%?tnTFo{6PSo +u0)I4+nP4$_V~!RDBvjl^h}9Uh`6@>F2OVMnMn!_AbH#Gu5r2BmiIPh50u-Q}JPfbd+|x{ya-s!jcDW +KNs|M2dogrng?}h(+hjYAU|s>?mAE5xbD8vh`~Lxz!x0Cp1mgg=t(0FF +wL#C+mEZiJ((;gqSt8jXRwX%!fknobA0Hl{-rwKfe!5&TkIWKqiEUl-ro1jM)9a>%s>lWw+7&y}4;{Q +2IrpI5oo=f9dg|bvL9jx`@<+*d%;6n+f$Xui#c|CGMr3O!^pGlQk$G+rxP2E*$+1Qfjb#48kbf25T9`WPTUYC$r3>2SfK4!#NAe7-@t+0 +`M8H;6XeFE%PI8&-AKZ{HssQYM96<9OJ_YsP1K&l&$o@%;+L^MU*{Y-=l?(?Y*N@>90c-eq`r=ahfkvn^vYq5P*2|)aGj-T_72iixx5h`&t(&Q?5W$BH!Fv;+@)Y2H{7c?=;4(VH3gA`Qo+F;Cq|qg +qa~{qMZcczX{Aub%ej}iT@2)^JX*DrsC4FNKTujHsaySF+mQ&Z;3J#oFlzs%V4`x@Sj0KDPQBz^opCo +x{&22mmc*cU8{ +7FkaO4Fbz0(K6{pcBII+~l2d#MV!!TIkW6`Qm>-4wY%&#{WBwH>c{iM^7ZmCqQtycni;adp*Ce&<)5QbmB2^0K!`eW=!Us@8Q;n{5x%L|r%%w_r2dWXr$b*+60-l{y|E;O{=)eZK +orC|N<87L92XrYZ2MmdXHo*0O92rtNzWbl*$4*>JJxU-e!Gg=N5s@iM8I(x`fl8^nCoet|PE`x=+PH$ +o~5+Mt@(NxDOk%R@~4x=9sk*{BTl1VtNUugoUU<8_T0FE}c_fF0er6h1i@29;oC568b5)`mbj2y7{o+ +C^VevO#m_zC~#&SVd~YK@j9vK(@u~mGb)Ca7r$%_hu_aG>Fx@7-+!wv@?f67t5+*N_i>P9Cq>WnGDN +8y`YRmb#{O~J|6l8a4=YSWU`9+iE#Qu(Yigwv5Y|oYw$qdE&@T`>77xAf9CFCH|78`{R9q4@JK%IU@?T-SHly;* +3$Jq|r+8Ot(H2EfUQ(J$fl3l>}whf~}m>cQ2K2!iL7Q(p>ftslGszwNF@2kU{&-D!EFr_-Q7!CUiX2x +0e;v{TT&S}tl$8Hf1!n@XVV)$M$u|KB4^Q-pHC;7vaEq7SmY}MHqiAA06+vDh9fs9w}E$-avw3yD{K% +9vX;0YFwX2-J$X9i_StvvLJ6SH`G|G2)qySskyhmi~zN-oga(qtl2yQ1HS>^8EH#ClB~jTVpj4nV#&h +GFmzP)h>@6aWAK2mr=lzf2aQ@=Ch^000&N001Wd003}la4%nJZggdGZeeUMb#!TLb1!pcbailaZ*OdK +Ut)D>Y-BEQc};+_(f`Xzjy&IHLGc9gQ>EiFx+aeQl^FeaXml@O-*8>wgg7Gj +S-+bv`;D$R{!;S`cIKF%jOw^58y*wQEhuv;d>w2}`LIpB|IJxUR1^z>e*n7pny>X#+>pIlBnukUH#oO +wPY?y@6aWAK2ms|W%S>8iu-bd5u=vZsRr(eb-k^y$@>xT75v!6ezk6TVUG-+5r0~(9+1}h9U)$O6&&t_s)zci;5kzLJ&*5oS8Xu +X2{OF9_qRq_&$21#SDrb?q~Gsfbpx0ZR^^qp8VPsMbQ`)0z8n7&)Q=Xoj-5g{s+D7?h2r1v)Oz>GZ56YG#( +YX_-q3x+tL^+dL0K);;8e=pP`+hszNXxjyk06jk2&u7z4JT2m=~Nv793G$|`o)c^S9x?HhO;JO;E;Me +QuO4wT@%Z|T<5+vScZV<+UAF(8aIXS# +g&}M*KBrEGFwbfiHQ!p)dRQ=lOSl8QtrYj}(dk(iud(y|Fw(b3fW83VO)P|AjZM!PU5*TP#U2u~u_@U +6IR0d&G7*BDgp}SSaKEUrCJR|*i1nVLk^b^sqn1I3PM#m+}QqZmzzrkB=oh-Y7ORQw>EN%X14D+H!6F +Kv;h`Z7XC~du$j4bhS&qRzWHbZlooYSZ +R0jn_jAq%+4gNQbAhx=}{|gO{!i`!hsOKKa1CYjA`bwKCV<1PQ9TSy$=OQO)tM^Dy5*s{XO%_br{voj +%=f=r;1{<@M8=cdoYGLiO^tN_3Lj&13hST;?K9y1rKNU)Z}TK{s_g_i@%UUoIl4T4inH|HxN1&x}!_h +8Qw0*W#Y;W48pE(=R9Czfem91QY-O00;otRNG8H3U1JA0ssJW1ONaX0001RX>c!JX>N37a&BR4FLiWj +Y;!Mkd2nfNXD)DgZIe%L6EP6Q@BS2{aNv^Nr7hwRi36%=sSs6#%Au!bvYx~iUVHJMg#Gr+c+=1pqA1F +)?Kf|J^SoFru0jM)nB4?+7#$7dv-LYj8MEynPoq3p52GDhrPjkVPHSi&8+x{f06n@X*#tQR2M2KAGsMDu4dPRaDJ?B!!wXwXhUK79HUsuK0rD4oXu|mVpbqTRhYSYy@@A6NrY?s)MMKDSC&m5Po +o9ES60m44(I*HcKl5m3ojrLSB5s_p;;j`|q7frz<{L`v`NcLwbvI?hF3-E;pNkgmO-V~`!U{c28)V`= +`YKGnN9uE}9t6c0DKW`b-3R6qe*(t9cSb7FwUcrb(ZH=YQ1d +?gJ6*Xz2+xLY5Fk8P*e4~sX@_-H6jfRvDWv*1LCfq%t(f+3GA6ivcgN-$Q^QQb%|2yScj?K3z0cyaLS +h`9i79jV5|Y)G25P4!*kB`DGDjf(LmL+b||cdmSbo+Yt?lm>%J#ux5%(^Yvy41d$&$oxWhsVn=pD({Ye*bZMdvkj|AGh28EUoI&N +&Tf#+qM92I6%K}1y}FiohkL5wkt3>k7?C)JDW|}v^>FXtTF5)Ih{?ZQ0gwu&pxQdVxiQ(W#QvYU;P14 +O9KQH000080NGUAOz0m!(qRw)08=#p02u%P0B~t=FJEbHbY*gGVQepTbZKmJFLh}yaCyyJZFAeUmj13 +^fl(%7v5{#zZSUUotnb{^bz0Bubvkh}nNE}8KqO?Lrbw0mEvvix-}gCqAwi0gH*NPtGmRw@I5;@3&%r +^Lb-89qvTSryizH!kU6r+Fe4)y`(IT5q857#%}zWH!FHn7n +$SFzKaAAcuE6&dYWlMU>hx0WjPla^(@<~mXGH?e<$-d4dn|NQC4pOVY(uP*Al~ +i*ki!^UCTKsmav{+x!PzGxSp=(3hJc%dbF%^|&SLP4oXW8+~vI}-o7Gg3Xp+lP&-fv=v{Ri`GmLvsV! +#$(PWCGt{i4wU;b>dASNpr5$tf~dru0=LyOP=Qop58}xF;S$YVfBKP$+fP#!SPb&V$P<1%ye!T!df&F +ds(uLU|CrlX?9oyG2cp1?qdaH7GzzgqsRr(DiD{ZEHOL7?1XWWRB{YQuJwf7 +QjS@tJy}G@;zGiUT*i42c6lJ%t-57mpf#6lNTlRckmN^ND;W6oyC|0FXasgIT_&rZGc_a3=;n1`$&B7 +b0S9YwIk0aOe5zM_{Ket@$$dyF8uJks6aPld|ug91|W&)EHvnZM$oO*E5ry(ORU^Pl*~xW#Jy2d&ZWsjoq}4Ar_Vru@h_z;X5C(+*lb12{Ei~)FVTdTY>LyR}? +w>mQ|S7K*GXGoJt@(px>L;=g$idnh%1tgu%Pp4D!_j{9 +eNM52)$nsY7SbYi4FQi({BC`?iOE^T+5u-t>&HJVEGFoeWai^IDv`C@( +$v$36u!g)H`R3hT;*~>jRXJSj^7imvbu-JBGnq4EbeA+azLG2oheabIa6O%&xT&mLg0OV^IymGVflRc +Nx+kq-W`LJQ;Aq9G;uleOYphXC>?TAmv?!CP=RRFM$g +)xGwliook@fRM4$p;0=b53o;#DPzc|eRD3s&SZ` +66YA%rp +**}~SUw6UH55yM6l_jmLI}{}ke+6s}e*R1U=hxFc(CAy2W`1-+AE2YpPbk);N69{&2YO0dV;;W~v`_4ueZgjf>Ka!0 +g1wCB-*AFu`tL9!aH6;E7JNn(*-(!jpmue*84=T3kI_@~5><&^n$Os)hf-$jH&K`EnUE`z<9IiY@&}Z +h7wj}X?MF_>+Z1!AhZsI%CoLh8$n-=__i+w0)2Oyk0S&qK+~CzX8+gH0%WFVMYPB1y;XmJ<^a6^urb^0>Zk#l*J~5$C~=$Y?rU-iTY%@{1k +r8d5ITExb9>FG98v*2gGx>1>`ygfc3ZlVEv!0-T;eDpe7@!=m=HAsQjV=Y7Lc|$VTG{O#$D+nH}PnlG +crTqjpfc#0WHdnfIF#vu-@AO!>-sa+4#*u^)wjkD$kL7Y98vD{<^CjT;D6@0=v@DL+@9oLNfp9z}%4(Z%?J`cyz&xn=*&?jV`n9_8lsIW(2%5 ++>T=$_iK^)wm*9PS-hXj|oRx`lQv+^_|3mn~h{VQPbLe)LoU-(`(n#c7M1uFNN5eoU~R50Jo4z3qBEekVaZ}yt+a}G~{t5nKx)nO0liTO6OhXh7$GCV;;kZ*@1#v;moDwF? +oo$28K{Cz;7K^;lg=2{S)HGjM?O=fGgWDoq&AF|R(BmJaivoq%9uidwBb`ZfoKbRtV#cIK{cs0oe!;0r`kO6z*-nytgj9e891z^oqsq(h6jBWA?>AbJ15qOXGX+JP%5JA*O@IgV1RIe&{F%^R)V`8twM +g>uIojTE{r^RUrwD%+#lcfKh;xie_)+URsn5;W&vLB5tYG>?yeZKQC;&og!_#5nY>_(>%zkGjA7>g=! +1O=m!MaW<8j)HA(ctrT5Ivi*)I=-+CP6~br`Hi}m9 +)JA!A1Bih-1v-Ltt*L;YuihU3_@ +BkSJNpTV1&n9HqAV?=1-hb(x9zUl8}BS(Jby_Gb9(lMCYs$qz%lE5KtTVt%N(U;r{jEm!#O@};gWTsb +rw@55$*XskxCiG1@ltAb=X`r{u;1KbuCb;Xf*`_YF@Mp-2t+`R8DxL-%z=c4JqewgVaXFwyV}&{WDj! +5`n6vRd&lsgN+f_H`l_6<<$7OfwOK+NrDw2;25?QeO{nB-lUN9@>P+~6}#VBC(hVJXRV^+=~yJT+IfIJ+03I_5d8Ox!7R*_Lj +7-3u_!AEY|IytX|b&G9UU6C9VzV~4%CB4P!&&X5|+JrXmPW3;+A7mQpsOVKO> +Lq3E2Dn==Wy@caAWHUTZC~X<*$+aK`YvLhk{8_d^`ml*O`~O`ofC>c!6c@@bd;{}v=V(UILda87OQ|A +h$Q*KTdZ)C86^J9@5;sH5GBAoJ+yNbp33R-%4QTs1m#+G%UFz;S$i%kHQ|%VZ7r$<3wX4*W0(-Cjk4g +DwQ6$QqB^JJ)(uQ(M%eR{#GbSpTbYEXCaCyaBZFAf<4*tHsg6E7!yUj*!+RogKr%qp-w9Quo0g{Q!`Zs +JFG__U873UnCL)KoEEUVvmlFe&9ux3&VJxvtQ3&viX(JMyi6Ps;IQe7tGXUsdRO8bTnIQwPi`NuB%#$ +Bw=!kZx~-0mDiO>?EkZwdoHvtl>aAJmzT1*^#3a3|1z7pl6mvr-puSer7Yv*N)(yWv60vDR$U1b*E-M +T%CB5umn;PpCZ=AMTBX96CDYqV3$XG +SVFx9gF|r^Fjk?NWFw(`w0nBFTBaWUuNn7mVFwg?h(N*>_)j`mmkaWoX5XNUefAHK(uM{8^Hq=m|Sxu +cNEfL`xQ3iYhTWO|*DdOD(pdsG^J6Y=%}KG>mlS5W~P9>DfF<3cdxaTEMV0=fvPv=4$naNUO!^ +jJQQx#NSVfl$WN?d4(2?_WQt;B9&{IGA*to8FHnVEKCI~!dB!8bhDGyhVf#L6Nrv`&y-y)wyQkFrv>a +KQ)^ajq+ymVvr%=Pv6W!3zp!+M1_;|Cx7)hnt6anllh$O!8V-#tWR)ayBl7ietF5#?%weX*t3raL%{IZU5;G0`B20{Ompkjlg6087f|jQai;5iq!&qSizz%TO(udKb+F0y#I&(@ +F9sp{fyqiP-(KR$_D-=yi~am4x&>IzF(BzGB*kPASf +3kL(CC=Jhzb8&NbMAF(-{ndbbw|FGzqN^2Xq{Fc8JNg;Ob;N#2jop}ZW;i#pm-1{?{)>^|}*z*aF2;x +m$Iq$`QCQ^%A{`&sm@VN(;?MtB3_ZcByeX}HiaD$v1z&+}Cu-^8x?)=x(ytG)Nb?3MOP`d;NqxWD)?> +}I0ffy!EDR#Yv=Sv@Vtks!x1M!5+FfwLC(MDGIYjcS|SAS~!W!6#{;{64yo;Fo-HwDQXGujWrv$;3A;&^S;`^0*}tvXYoJdFP7}{ +_;Z#iVT!0?8-67i5nF41iDx!6Y&c51s`NZu8kEr)58CNPn{j6S_`~c1OoSlb?y>chi?~tvqO%F0=t-w +c3p7>{H=`$AF2XS2Y~cAEJq%y-9?>hF*TT#flQaR-;klWj`P!`+yK!V1?in0dD}(3jVlq}BWVD*>uM? +Pg>unD$(%nWk-S3&_cCc+;<@R~IMcSPP=eN?_3_a(D8!|F@3ATk=h7Y8R``32*G#Nx;M98qKzGQb)8A>!Es_aLx-NzqbLb97_ +Hi9*5Jk9w{Y>P25s3X}kjSkOMAcmy0pCz!CERO$p?pTOBj->SNb7NeX|P)HL +DTDRT?V9!m79p@(TjLka)f1!#UN3&=z^Am_26fPe;T4RtWRN6Rb1vtn(!KhC*`a8TcUpmmRKu-j +WA+)6_mct*eCTfjDL!X@oh^7rg^F<5IsElB-Sscd~Zi%O0jhO#Zs#sh}t +qQ~qgqY|#1ysy9OB4rw_i85dg~gzCVL)My#4VQYrAjaZmD$em^$(mjg$0+0e4NMr1c593`sD47AZ!qo +aW`QgECE0J;HR@c0|3;g+PBj%@wq8m2)rRqY+-$qz|ppHbZ=8@mXv{*@+N4S$zH(18sLkXBwg>o97bJ)AaQB-`6V7gdUHCGy +){y=+&GU@2dwN#@7`O97$5m|C!V4?q3a=Vax(&E7h&t$>6nV>_(J;Tg>8RAi@a= +BBDjb9!OG7LD=1%l>3sOl(IY_isl3am~@@m+bK$ytq_| +kl708fD<(yv0$x$9T}<=o;-xa?)oV1tHjZdK{Yu~5szRhn}jGzTvK$o6?S?;V_p95Z3&SPK0$8=c8`B +%!c?*#N)5?2&cz}I>&W+zg6@i3@yv=Na{*orcMc#D`5Rf-dI(zlT|ET4MBuEcq>+0*=mw0fnJBH{{D* +S>^5RE^wXNoqul96tfMs%=(uIfJiKFWYWHo_MX80w>*m)=JAH4(?_OM-mz_9qm!Q17i5SL1T95FlUPI +=|*0=5KZd||_`)|tf9$4-f{nbtk>S@M6G +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 +u*D=S%NE@Ljh^H!7;;=!7zyF2RWW%gTh +Vi$Os8q>GK>*+ZBVKDG~m8pdX6bzB@sWn>a(g^-+z#o%bj}PCmgRYbR0Z>Z=1QY-O00;m;L-9c!JX>N37a&BR4FLq;dFK20VE^v9R8f$agHuAfE1N8Q(NboH} +!zrjz8_&Nvd^?=d`_rdu@u?Q33J|!Fa1XMqgf4lJWNHUH^>Yp1iM1@m7^L`|iG2k-F&_GRp1)MP9WV1S +__~sXNp{j?9zK_5U-0{sSbKCvC3gEXm)g(z0PnA)7FnhA{n)g-tfA-^%j=h_th6d-3_eXJzy(-WR_vm +~(Zr7h&A+ +|*^3B=r5d!C84d~RZNeg)^(k(aJ*lhW9IbrbA0<^beE2WCKMVst+m02)Ekrmt+_JgeA?(Q89Bn$|NHn +NIn09fnCl4ekgy-NLXR;W_gag%MuP8b-C=^cNBYDWK_Z>wq_J{$jH%+@~!;HX>Cj4(~Y}(+HYb0^mytmSxu~Jlp%4Q4=b;iJX==&M)pKnMcWFur0F+5B=7y +zq9l7N#kD4{qap-;Oj5iGDv@**{$z+2KWT<>~0FGLyRV^Ww(%Y7UzqUrQzFuxQBgzD(#L-?PMLUny4T +Kr!SE7}4PF&&+ifWZ_z1FQb{5mg2#45=N=8IHh0mXprG#BrbdZhr#-Oozz$8q6Zy7d3Lx31BVDJdU16 +Q}&#lA6edlUN77EHvk2*76dGiFaXCqu`hD^N&KMG1eV`x9qq%kL;W@tmL*?|*IR~+IjSS4D +garOtVfzCNkdJUsD-ML^JK19>ZVA3y_@7}+8`&0V!>))IQWj@qL4UiwXAi5J>muY5$VtgIBj}frPY}F +w(Rj%sl;x#Xf=$N7dOiTraZS5vly=Oe_lJ4mmEv5s1lUVspug_Y;5wPkpOi>hg8sH0COASfH*KDthv{ +7HJ$w`N7Sc!~-V-2Rl-~kj*9Uvw{T4C7dHpXFK`C%NS7Xg?=!*lAH{}e_b!mJ!&YWn#)|{LH +_YsKQ9%5yw&*5(s82=&5hYRbFD1*k;VSV0hNsuduWzP(t?1-weo~-f;xi@}POm`6Ir1Zr$;rvdC4mrs +&~alp1-3!L!ng}AhOyGT1XaeFe3 +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 +qUrbIr+Kq8Cik&6EPk*!4qYVOLGDt?-PL>zJ +i#utI=9(~xT7)Ls_0B~R-Q$Q0<2ifKcs~wR5t2*=ToQqrZi=`NGoVA2WauYYJTrGe)k)TT%37|X+A0zhO;VL1hcs%WVy>y4A4&sN +R|!Kjey7UzU_3+)zT!WoKoL#)=Zx3&c(I$_Rf2SXy(*b6G=>360 +>}R6)i5cYbb;qXndXN=S+D+x0NAq$XdG2pL|Hm4Gqx_;}&p|_jUm*Vtl*Hec(Qr+#@;{Qi(KCC!5Yf3ozG{A$T1F6uF0z2|Xj!2%6S785HY)LvCRw!IZeZr9s(J|w2e6{%G+ol)9n ++)SKFZEs8>v>o;4egEo0E09HZdnw>HxC11=-|W9T+zRE=p-1N(T-=|n;57-ZbDr#_Yx`zx +UqNU)7{p{v{GF3una;1WTC@`MDiTIGDk=)aVKSPOUOIZC{vc26$-?Dg2Y?5kqQ~*cZb_w8>PW}n+E_k +Cr*J)y;KdLB4&c&l097c~`F7bP{{T=+0|XQR000O8Ktu6Nz3DqZrV0Q6pCSMN9{>OVaA|NaUukZ1WpZ +v|Y%g|Wb1!psVs>S6b7^mGE^v9(8Gmovy77O13L-%u>BUx?4Z~KW>FZn3Hx%gJ8#?T5K;j9EMcaCjL_ +d!DamPuVFM-&mOc +5h0|W*elnFZOA65Opq9s*6)v$%D{oqsp>)aMbr)X~DQ=b~&TpK7LUfp=w^HMV*V2L;GCRk5fR6DN3ET +tT|xBtW5^1=TWLcuN{0|=zYnbfETly!*!7Fj5lVNA$kU!!fIud5L5IHYwZaAB$O^>{Xy17NkD?F*(}q +CIy+S*(#e!yw{Swbmesx}MI6E6?L~a|_lwnaauFpKT8YC5Qbq7q6~>5s0sDY-pL-}%#8vc{FQ1nzPOl +S>a)B&Pzn36cpw!4FA*)|g>q|Yx2VKkW^Q@C6YEFW7`vt6XC*Xj#6)CHw63+@x!0XBd +;eW`FaQpm(y3y@;2PNj*Mfw|)mFz^lp8d)L(8mX1st(vchN#cw6_W=pg>#1Qm(my8++In7Z+cMfM&6^ +*j6veoE>)p6!0L;j&XR=MuBiOV073ZPyq&9OViO#6~gV~=v9=Y;MDq9m>r#;wvq(O_ZpTvq-9>ogsK4!M9_;I#JZ9SDK<@T?UTP6;i<4126ZN4`V4V +MmK7aSaAEG6TK1BcQ0h8{n;%2=Ao;+_#wcu*Ki!HxBXt5zd5ymn&(;9GkN$vtjq=fxPHtk-l~Hder5%dICd3T2Vy3lsN%tt*Y}ki6);?phrkj746akCV_ +;z=)(yQIV-Q724={LNe~T^im1SrOe!fb{PoYXQ-UUHghjjkKvIf%UsUjH@t=4uh~GJ| +9O|&+aw?>@lmwu{Aw3ocYK+g7kLCS{I{QAmFs!@ZyGVDPfZNfGR<&v7X!;O8|zP47{v6KimlX99v7Z&WCtpmr>)lI*8*pb)|0`TI`e-9q)xw-rPfxC8bdSXMzL?N4{j +=fBM@WKQ1Bql_dogc9iN7%e$I!$TaImz7=c-F=m0(FrH(b_U(w$qd*^oL(`vSQOEwVDL6x6V%SUWmW! +KJ0^QXS3h*!h2?z#b1})j=Bt#Imq^A_#$0Yic=NP#JC%Z}RUaw{Y7)q6aHMo5LY&PuPZMjTRs`#m>ny +N1t&`vlAc>~P~^r~Pd@SAN5=x)dLtWWe3*fL_t41WYrY8N$}vo}&g*V$S#84*S{KRDWhZ`tcvV6E6Up +kXVB$Cew=EF`xhFCWikH4wC4r;}Zx#RHMC#Bud*xk5)>owZkcwORt*8v1uU93ya3uWip&LNe3M1Jare +iKn)s4qJ!Nnt(adiLd0#sqh!ke26?|HJ(>Aihk``clsP-%%~U=1m(Fd6m+SIs2^w^ +@P=>bHw-E=rMKT+5i>v4iPKjgwEJS+_1W9Pch-=Lcg6vjFxH0Sve6tlriw8#3|AP9QD`R^(V(ULN2%6 +{^EU>A(L~Fx}25T44+heh3MHmD;O9!uu-OpZ%$!Nm>Jw(F3TC|p#_{A?J3BQ>c$UL&gL<70oR*Gf^5h&VMsow;^0h3bjh +YF!6Y!}>S;x~~U_xL#6`aUqyrxR2)qlf;z~s?F=c_w0=&B=t&ztwU0rP(aNYK@f +N3ZLZ>dQY&y3Yft~fAiAl6Ltwr0Fw*%=QAaY$y@uj{oO4z(Z8kcoor?2GGxax+3akBeiY68+r+pWMC{*12^hpAdjZ^= +7sB1V9{GODN(lmtE547lQMUYr&O|`rXKC1a_`beByDaent^l~|9XIug0XzygZQ6ZVe1VNldEgu)ijFV(3Q8A;&nx2LKcrodoO*nc;0b3!CCS@2 +Cv3WLGwLz*so^HBw^HqgRZw4?648d%c1S`b+JyKF$4?wdb%JRm5Exd;hw)VkomAH52hs(xdp9z +FxZ_aFX#pU2-O;1Z^&Pt5Zziozt}z5)Wspk +lEB*dTUjqGG`^758dyyFDBW}C_RG~BbO*Sj?45Z7;U@%6|!RX<;^2nbwer#(ho1R*))sVSx>P+FrA1A +b2l2grQGjGr_F5>M`4%?e`6@T^PCl#-}kkBJa(fk?qq{_jkDUtqSNHO1Ml$N +iO=CXn5bv4jeD&%`~BkVu*Lz=792cit&`cm08mQ<1QY-O00;m;L-9c! +Jc4cm4Z*nhRUukY>bYEXCaCxm)U2oeq6n)pPAe4vMovXAPx&ZXzAKwLx~zm#r2 +B*_nk{hwq-kA6)X>lP4a&5+;h)m(lkw4)n@rUHKnmaIkCc@_)RryQBsS~)D()GFe`z>!W+?A!Wl0bqL +PorbY!}&8rqiWZk|<0#V5tmg7mAoh5w(OcxBR$jEF^c^)q;>}05CArS%87faJL2mA1aCXa#GkypQCj1 +>TCd6CAh0M)<#Ao9qcu>5BiI$Pb0h-nPH1&UB6aFh+PjqZQt1e$3(zOmH?RKs?fUJ_wRkCBBOl`Hz1k +w(mF%=%2yM(A>J`%~m8Amr+y;tBfeRvYlrh^>TC75CBLW)=Ny8aZ<>;LClGdtem=Q1mlmS|-!WlC1p6 +b@~E{+c+YPR7n5eInVBuo<^a$OtFl!wK5I;uth;F^|7Hi15`2|SZXkzwB`R|Uvm>KQXqR=}5dR}tyh1 +t*omd8tYUq%SWgm%RJ+=H_jF{pNR|*fS;ryZG;H_zvtESl@-}g=%pou}?s#+LWD+*)XoSfJRSH0B9AKc1L*`5Q)Zk^dZ3MDTVfuT!v8B4FY(1M@{G+c&WT^-PPs +gTKTG5W`(IQvD=`ZEh+!crKP_+a^79Goz|B>y!h$o44uE)g`LF=`NH$7MBr!G$$1ShrJtXD$v!{-l4i +iUmL9n9PM$Bsfo&3Oz1>D9{FC?Xn&-2T&qe54P!nOo@`$YG%fZ&v88BWG(=H;@6vY>k2}D=%u2& +_iEIFK%ypp9gx2o(1oro42<|-Z(I*69m_w>C3(S-X;@&sHQ-h(|73JxE-388+GijYe6f{iMw!U^gXqs +ty@HnGFI$|FB>&v>?{DrS7VJ?6Ep(+Uw2yC0k_}+nNq`ocMDr#qk5!lm*=xXs$=qP`I%uFBy*^_}l%#wrQ3I +AQY;EF`-WD}^f275xP%+h`|@(ASN$gJw8%t$u1T3Q(j4%Tf5a*Mw_;P~(=a)y}u>W-!CRuBh&(OYbgraF6H?kYpepe|vw$Ok;h__}6aoeS{#*c3~G +HeZmpb`CNRzvrUe(j?&QMJF4R0JkCb5WtJAQs0g5WYY^ag(`ZcpTAplh6~K+N>(-nsSH9LS&Yj0RxML +hoHuwp4W({ot!FYHl>#RN(=lB2+wC*%&D~mgc7uWjXoveR0f8~U0sZcA0bEk*y);Z=As#Bb~Mr+L)yJ +t4G-qfe%v4jzPF5BU;@!&=lvpti;$%!7ZAHV%%mV-B%!gFjw0KA#-UJ6!^GHT5k27lF%g=D%#hIdE(x +L{ekg=#m>O|gv+qls98e!84yps6*^PcWIzq5Xof;h)vKRK;ULX6N+bTg;r!YyS5yuW(nMs{fCdEFDdF +k@8DeQ;jhsClZ>ORm%ozc7j#EGs(iW;M5cVImybWLse|S8EA?iNx>pv&bgB_EVXBQ+HJNVmz3}D +4WG~JC0#Hi>1QY-O00;nyCGAY#Uj{Tl5&!_>UjP6W0001RX>c!Jc4cm4Z*nhTaByU4a&s5cH2 +0T{;#LN(A!6nk4*WJbUL0mGj3lxKAqU!$myg{l%r4-Br&E)EkRmR@0odzeWQJ>tttQ{K~WbwZg+Rq`j +OBCP$<;(LxJSR-e-w^qkvAB|tmf9)?)LW6t +=;XNZFcC!-VJZXPRv;=?8g%);_NJN?UFG&d+emwo3TqCN8bPbPZ(7ymSw$*J>QExE?7T|SdYg%8hHUQ +z?|{e_gp9T!eC2`x$E^km-W0z*p*6)bM|5w$K(BGbKu3pq-(q3sF`D@3B$4TOHJ4De8HTc#}eTTxQ%l +IlgIpqorf_O`?z}crgePI!hlVN92OFXOvE8v04>&YVu$rTUv_0o%`TGhIE-R@yb|Cirmt6GO3*eBK3{({v^gg +P5GCC+vR2d5??hI2_wyG-!4m!9l2`4&#q4A4D!iQTB;clbzMo20hjzf^|TK(hRCtyI1?dz@v`S+lRa3Wv^w!t +j*7yEE&HL|~+!5=&ZH)851NQWq}i5KkcR;hve3#I@|P~^24Ev5&W29lbf;56*D7bH_;sFeg4Exb4dQ~ +0rUT%@zXT0D-?UE`rA&|@qg$L?AT{tUvHc|Gp<4c1LSXMsOsdWm3lz+8?Hh7QL?yM6`!YsuSi66<3rGn6m?kx8^>odvVmjuL%LzDnuHjr%?&5%??T=Jf6%p{jIPPKaR2r@qS%7 +O}=9B>1LeE1bft8>wbwkJ#r7LAuvoTzQi5R53SWgyCD0x7196P~`=7vE?rVpb8>pJc=idf0XX1|6B8# +yMqu_FW{MPXN9&FO*_d2w#_O1UIwCt%?i*>ilYbg4@2a}3XFK8|)A&WQngDmExvP8>NR!P${Xd&yk2!nA_N>?%rlCJ(O7%a~sg#96h +cNZUo-J0Lcg1MLGY(X7z71e&T-N-f~=B#f?c_GC;0H2rZD5(JP!BRbMGCmy(O*Ho;S1#Xo*!Vd=?*e; ++Jqk~2;F?WYBX8}VHTxj}UH*%s`({-PH|NWC6p4Z;D?49j8A&Zv=H42qztZpL61i>0SArdZBd{C~F<6 +4Ue;TMG8{ghsYKFr_0o39l=hnZ8dmc&5K7jW|&l%DbRF7T#B8j_Cfhrmly3}N1EAhvB_IPe1YAAnFg$ +A?#komUrcP8#S2U?d&{p_Du*4-zMk_fYO^b*o1>s`hGYe$4wC@N=f1 +7f|g~B$Xph1!z>LA)*`D>!3YsO{x7i|D64LGnA>!@ +{h{JL{^d5P<=(0tXc*B3{JSwl*Ma>D^2H=ANV#M2R8)H(wmcYxmx2(1TTk|qQEYqE~~m<$(}gmyx4)a ++I=H9>E@%AuEro}_M!=C`Mp5h0|SDMf?M{Y4@HTnCax>#J3l$DHbF@vO~beu3E_PzvmkYgNNgtBo>V3 +l?gvp}RGi%Z8K5sqDW{emOF#t0W^~9Q9U!R(LVL8=#d?1Ss7S(xPN~kAU_O(0)UJHuZ%$@r|7bM#X@* +!jz<|7qJOh(qwe#xkFqRng>^i6|DfK1M6kJC%3@bdju0hT3Z2nrq<1VO!H@h2=!qQ*cSRjKMF@IjcUh +dZ(FP&H%+F223@6+VQB)cHj4SENS1OE;As5CiLadXZ>6YN`7f` +9A*sPs8p8q#M5Bu%QC>((0AOUGpZ0PmC(y71!+S|;9Gnj~|*mZ;HXNsyxt(+Z(xce2&AZs;~2y{bsDg +z*UW*5<&^kv)y$@&k^fjLw=7UFavRE~Xr`1btl{HJ|(9Fjq#5g`k*v`Zplw4^PR2=+zK4{taH(aCW3a +ENbRu%;m2(Z!oL7w0MF`+tw#mig@Oh21u2tD(0IXfdW?<~mYPrkF?@%ruUpB1j4A079f$2!X~=aWD8- +F5u%_CYvsz$T@tee>w{mRHAM +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 +5iZaDlc6HToI!VjeWl2cACl4bxe +3g;(797E%q!DG!$Wk;gaCp_6$REHny53Pubs{-bm``?QqrG8J*Kfxp34bELur0*_5@zAEoO_$Y9~c))-_rO_PTuYz}?{e3i+N{Om+5=6ccw*>2XOK#l_0 +Ci=}6<-Aa}!_h38lBjdjjh;o%{`B-~(SHHMX<(Xat8}ZrPn~W(NONngZ +Gk;RbB8FdKMJuG(99SpT3NM+L41sI_tks2h3}EBKdb{P5|m-Lf{!}LfD*Bk3a^j%Pf!0odJJMnH7?UR +4w5fPiJ=v73*H8Q8W5REcBJ&zzt?|`(gfN;nOpzfjGZ6WEi^(v4VIz+2Ah@MrFzOyPDWp8EE*~c14F9 +1OMO`l@@X}gU26|0F{^7xvoNCHMo-rVVW_pjvK3P_LlEx^sZxpn8GaI3js01dSB`4X`s`cGS$P$w^I~ +9IJ}G9>i$m$CmF*D6LKMqO9WukE?UYj}(%c5l>hC5NW&-qqb?6A3&KPF5dIiWe%WW_XlVB$44bT&usG +>}vN2D3+P)VGD0i?t&4FZHTE0n>I31j7%NP$KG2M5G=(Q}&2wXz2_KX9UynMi`W-?HW7`O;**9>RSO(9|x?aJrxzbEyYgVVR?f_E3uqv+|Pz#gN4U5h_#;2HOk&nCQmbZ70A`)M +CE4VX4wh#3c+&YElE*rDT$=S*n_DOSX%jvd}veK^1&6h)%bulz8D`GjcYzA3D!sQUxN`XavMgt<8>uI +Pz7gw?sKxC(YEFSSR7?S3|MpL*#8fi&?0r6_;D#a)>nag^LQ+szFyZ?n*IIH;v1LLWaDOiHV>H3Y|}2-xLTlBL#TmzFQrvCF(ki +Q)>w=Rf8Lv6?)JT{y^gL@Qvg}VJn7Wy&861#?^@F|9%Y(l*Y%O=e!2u423=m8&8GrBW4Zsy00DV~%bI +Rd0$^1_^6)1TEHJ{XgqKj&l{eY_$OQeZ~MoW-!JD04|ThFxiju`7Z#xOI!9>=vOW34j7OY08m1t!xZW +`A^#Y=(DORI-jqTf4F8Pg_T`l;FnPI!#2#PXeT6aA=ov?XuJQ&3E67zWMj{h{eY)OF3xg38o_~#uq$t +Olmjgc~ev{&IGhi5)yXq79q6uAv>>K9+LGViEzFxu{-80aBay}zTEP)A$ulYqBHXn+n*-P*jjb%w2cv|TuzTQy5Ou2xn%4y}2w@Z|_G`p#b;yO2htZqa3n +uD}nm)#-@-Fz~(K6u@Tz!@ES6_>bB5MLnqQ)Es21(vxr9O|r&$N= +>8bCY_OaRE6j@;36hk;?@;J6LSgTfn}jFnbvX%#?cDXm&0F@|?N$9+ax1;Sqsq*n+M&}hD>RwEs&#yi +Q^CX=QgfBym`3@yGtjD!J5k0y3O@@Ud6P?h`_qS%sdx?O4OAha<1*39hma-nNFfg));cB`lv*ZW`2_t +#bzJ9D(f@a#bk$Xrmwl!+%S>fq?(;0u@(b +X{H3#5S*6@I8@W1O^mJVP{SH|_A^YlEg=oYHPB%3FymlW3{Kl~nT#w+9wkn$S82OO118hyrbhQg^0xk5(U{ax6zb-9i%- +3tA1Oa6g@)saS8_y)n0+Mlhxv1&D+qK!(ctP?~`apJTdrc01Hr?I?8hF)f%VrT0webZG}a)no*B{nz3 +eH=t8atV*keKAGp5^4(3+l|98o;K4q;euuk98?iG2XBMQ0Wy7wfO>!6G%GrCg0>%dk)e%`guaP1#_Pn +7`s<=r6O!KSaQm4BSynyLcE0GQ@(o)%&&7Lh1IRa?3IXh6qv7!;Hon9cu>f2A<1xtMWe=yq(van-g?qdD}5tE_d +Dqw#1exd~An^vnghYUd$Y5POHqDI~|=n_!EqUd2HeBjd@`Zba@o0u4k@Ev7i%+ItCZlbU>}lSEGM;rJ +`E_(R|?PntERq{&1BnvwC16+5Q}=2<({!B^!jr9w9q`n +pqAkKmlB0+GsLnYPHgIlkJG{%WXrJ9WgFA0 +!Egy)3%#eLiCJ?Tv~WC*@zk$|(Bnxl@@Bk!c5t*`mPL8C%^OM%o*d~d&}>7u_D>3XHd2Q+ih|A5$Noh +xa0h?#nx9PLryUl=MVvV8sDcuD5WRk(X#yzno?1G@=DzmKAdK#Bd5WvH2D{ycKDvnUq)~hH=u9I1k>Ls0IYng-P$?D46ml(Ya>qSgM5iJ)-v9&NHthOBMc9?-eUavU_ejNI@Gz-Cv%!F>fJQ@aq2 +XQ+Pbgc=*-^%{z_JO=8FT=}c?uU>=om`l+4Y`qFNpS@ntsZ$2~*5Vv&#iXMUb#Mq|v0>dONDI?icZ0u +MZ&>{ag9RP_(Ls9I_8x1P_C7eZvnvb(dFR@9smJ*5PU+Z=GA$^j~*W_E&jLZU22o^}u4Mfe`rA0i<3^ +GZvkMZHgV!+^`TVDa?@9*8s% +w)s6<=(%^_cXE%7P(0yvL3Xi{PGxmM9>64BWc{XqoEFpI~s-xGLT?x;6t)Ya@Duynqz)0X{nPL>}aR!;rvJ17V4UMoMQ%32)H>=83#jc}bP(qeA-hDrw|<&G9cw2|015cS!}VI%L3@iE{t=bd +(84t=z??-*jMH|~xMOH^CzozGA_7{BK#5tPHG@NaOq!3I$6iV664sy@c2eS!g5tKbZK(6A=9QlB$n1B +6z}a4iMZ2wkd@PqK7e@lvP<%LZ3xbdL0&1$q6v>yKAhEuMJ#8;1I5g~ktPAuQfikHuzmq0G7DQ(>Vi7 +-z6RV^8lR0zum7P_jg{( +__96u(1M+N7L#XiHyf)PS@b?U{X_IWJo{r{lNRhj(H@LeDuU6#zMj>)v{~Cex_+fy_*lfB0Q9LU_tw0 +O?sEM*f(rhOMm^&^eV4m+g&@&E+f3z6^RRS0Cq4OU@HYC9{{7MZ;Z3i=9m>+#X#$Jrecx%hWg6(3ZJF +yn#sFH;wW4WREas};p0~9ixIlRB^+54_?A7X#E*&;z>gN9P`%6%BdwqCMb0FPi1!3{`(}WPw9do6`J+ +a`;(|1l!8ymPE(9^~S_DAihx6|h#J$>f%w6RP2{vBPmJ^f)F^mZFPq<_!fxk0H*83gc`y$j@aX; +Wkk5j+5tB}sGQ`0WAx$TRPZ^fN$A5FeMhgYFspju5tXY1S-p@fwz@6|)J(NeO7jId8bxvou0gvle4EYPC|YM`Zrb +7GU9hF%S=^C@MFdvafT)vBwLOn>oqPg&ae1ACcT|3y|E$?ld?PEN6ZhLuNsFIcnNF;|!bo50RLAH8&9 +Q<74JZT3THGhVEa@*D8vrEp<=&47K;jxaSi!4Y}~h>6ZOfcjkgppTIG3tgW%=IstOhdP1cNv*1bSFf= +Wt4S;szLenZjRaJATO7a#^2n--vRF(n9Khi#W!t+1#Xg>NjCI5ePog@Cao=amp +I)ma1eMR%;RJQ^^#L7sc1qnpc^;q39vqJ{-~inG-|2gd)B1)&Qw^bbSGh(8+isHP2GqA&1544s7tHA_ +z@y%hH$jDoU6+yDrKEGyc>Wo#8{w;FSn~2F%IS(1A6JFZI!0iKIin@#0Qql*t7&x=P>VY;v9(yxYL@m +%S^fpGV(vzBuFR)T0ZsHQSt=>kZLMRk8KmcYpdnThDstVm%q|Qd-|tOwsTL`!@{Vb)ss_sg6QtP3}pX +J8AC4#spM-&8E9BvtiByHkX>xp?*dfd6S{O`^KJ-HA!zUskX?j^rj&PT0e>+b7i@{Zv}Jf=>&4zk4BO +bMb1zKU8Qc7jlH2XzIpl%muQ~ri@r_zcwY;UA=Z#+qC7R`6$0_{-b4ver|SjS&J +~)=U9LSJC*d8@^&lUn>8=eyc*I7Qx`JJwkYU_)J7U&2J5+$c!C|M0opU@!NEC}PT0jCDB_ +SHNld8j&{YLxrJu7ED}lB=IUNd*+8gudJLcs>#-Of&2;5sBbP!^4PoJQXsT@N$ZvRJi(6D#0?fYJ_b? +wH`_NNwy6@0eIQLBppE)3j`lcD`AqcjEW4rLTm6QDkAxfO^SwKO6s4I8&xXRlIx}a2_xaMnL111K&Ls +@AY{ol_Xw|I$cJHgVgTa3e`)?I4ob7!De7b5ARnyGC2~*2!$(}?>%U^-juVr;;T=aYWL4d<6)EhpiT6 +did=W-qxuCcy+g73hH=?;vLNuqx&l6AcMozrx%QhRCqE^yxAgJA$L-O|O-bbP1QFn09>M}J72v%n|P$F{4zfdXgDt9+4x9_U^727KQ;y=Vfd%G)+4$1}{6?DrfR +;7agT9FTieCAhM&Bb>b|z@hQwh^f^FU_&e=%W_Af(1apy#&V8(^2zquMnQU^364adJ$_w&i_>{y4DD! +?j4DS%1^i07x`2-VH6~<#FyQ%vX3l=guW@}MSGbJ-qW>MN;QfTEujc+}FTH)+TD^PzRyjo@#fK7j+r&WKGTm5Knh)2fF~{u&jj^OHP(fe)4EWA976_LAphzJBmhmbuI< +ES#3T>TD^IBH+Bs9NK^yPJ8sKrU~CXT;B=ayvE(>C7W_!0TEgOL%uC2mhf+IXTdw28Er;ksF=0 +0S|*z=U?$;rb#mE*2Jk%>5$_c-4MgQXkEPVLJ<#`O59r1tyl~VaJrvh;(gA*;%NA(f<%>z_kO6%kt3B +-9N)ULo&W*dJ)edgzt#;zZ0H*~O_ +z0FXc`3qmRm~&!H-Me#n#14Uh^qVc#Ut7N%V9?pEmK8d~XItzF13946E=@eBlITz!g(f_=pSO+cg5h+ +kh=EU7iby;^4)it*DE>gty5cqcF|J9)Dx-==JXD>HhJd&hs>M4JUcF^@qcMt1leA+4t-Wo8eqHs`!rPQgY~Op0y3X4I?A=3@H+ +lKMT67kZ&d&>f7Xp?sf8UW7EC?=4g&HkR0H+2`!yb*tnQ$3pXwC?6|hIWl0iY7yI|K6!b(ki*H3S9xq +Ck+9$Fao3lJ@LKwzaS+Dfaat?q}bpD>r729mAN+_TW8ad{MXP{G=lKCEhLu1r_0Cd-^y;21Kn2>ne4kqH<8t+G7c|aSF5VpBcNSOKJ&MNTOS~s&%Ut~Nu2BO=lbuOn +1XzgZL@K>R(*l%&z@n3kx&FqG-Io1JBcWpqQw-~G%R(_&|cm`!CQsROt +>mbuZmlw99lqOVCc$GjR#MsKI+gtg?@4}*4R-Fr^*?r+J2?|e3E@Q!B~qOU%V!BBZw@F~8-pzjDa8Q9 +xUpm|Wz7jh62v(dQvidnh<%N~+7L_6c;<^BoJq5(jzJ;Z)>geFx|peeux>x +G;}QG4DDL<>6hP)_C%ni>e*_0_cj)7KWvQ0T*p1}z7P160nrKol-4`25ED#7|27!3*iK+m<)VkV<{`T +|1XzL*UujcvqX+e)41ryjYy$POB$*T0T`zxMxr3up;&3**DLZ3H#E(NC%COICscBMFq*hz0Vjh?>OGN +jbRMAG-WLkuQ~##EfMGlsD8fqX>%bJJJ_*~kDb7zvoS3t(Ht!>dp4 +{*0XnY3(YyliOh6uwL^iOf}0N1MFX6#lE*WoyF7I#WYgG%*Z*206LkJ;spo+u=mvCWM{~Q4=PR}G?5; +K%3w(ZEuLYT<6PD{0DB`llk5akQ*xH&Nq)?}Qs#JZ0FjySAFIh32Qt}f1fs#L!)k}KUH;0K2oPv>p&+ +;Fcwrl7mT{ZSScMC#cZeAP;(x2&kk3e +QkEZa(xHZBD{QZtL%)O7HMoe9l^Ayi)WBH|6^Js)pKN{(9GY^5a{|8 +V@0|XQR000O8Ktu6NE{%&KemejF>^A`b7ytkOaA|NaUv_0~WN&gWX>eg=WO8M5b1ras?R|T98@aLP|N +0ad>3T@o6h%@pEi;z0ipQSOITL&C*hzNR>+m$mrqnUn&0#n7$Y$?n->Sm<(aokF9#8Ht_j+s+C=?2XL +ZMLjVUNAamN%>9{Gwp}Zuc4cKFiMMF*{2qot-_#eoQ8Dn#WUCWbCK+Z`eAW#w!*EnzJp(-adDNcKIfdTot@b#Td>h+wl3DIcr;?kVwtT9=u< +MurtxT=6!9vW=Q}$);urj)$TIj!e32Kc^`zL@8I3OERSsPMDkrSb>vTK)eq#qD_9|N}p>yK|sNJyHI- +Ouo^PSOzei$WbF)D7BaSrvG@Q-$Dr&!$#cNlz1%dmNtp0{@5>q)#U*xP6kzh14f6|c37^4zBZoI-8Uw +UU~4S@@H_1#-}9HohrW$Eajb^HW&ds2aKnkOq9&QD5d +#fTso5dQ*xfw>~N47XRC3aXL++6tvS|UdUSggu-o%lk;gV{!M+k6rDlBnwUW_$&)lMqI42B$Cq +tiv07Fo-bNGu^Wp_NZm}oOgeze96()w+SurR%swi**S{kS4#f9HfpD9_Rgt2O|fHLxy@arSpfB2r$Wi +MElft6$Ok4ff@vj+Zm5fuz))Nad_kDw#9? ++mn$x6ez)bBpcXpg!Nd{_$NH|Ih#2j&msARxG?^gCq5?Z&~+x=6q!DGEG7K8*4MrpGnM$3+TyJmNxLu)n}Xv{mwIXbrG*(GL$U7PVypPj1;Y +A;v0~}Xbbo(u|{DMC}*5Kz=~QjI+JXj7R{DDbU4;1Rhn{WNUdKhryC7v6DH8ApeY9ODB|Tw&z@xX9eX +JZMnYyCD$u{KE)rPT6VNiKtsA~c;`x*%S{>Pw6CwlcPv$_DjXq>WG=H~(r9Vl}|D0SWX)_!DBc4b*JR +0TmtjK9G#4+Y$_(MEjf=1GKVbx3Mb8!)~4E|U#>eVXAVFk&c7&!zvL*pr`k4EzXDB?ms8pXeiM&kRw# +Voqak||$YNz?`MH_8NqY#dJ_a2sGO*ffiC)RYS#Gmo`$8JY>4tX9yM`3<{?3)Z|SiskU&V7xxhJ4^1B +WUKRoB+u7zuiHK9x3pRiU(Gz8&)U3Ots1jn$EcsirS;=q)-dN_DB#zQXo;6GEe9_Jev;jgV=%Z**+tw +5kiwKBY9@a;1b6A*yu5#NGVHQ@)R5mjD&+MJjU=**zXp3+Au~||tD20Smv{6IjBYawzs7hsiEWT3k!@ +K5d61F2C7*n>cFunK>(P&|-+uq$2WbAVkN+O1f5S4VEY>OC2mCdfueqz%)PEHnp`8kS%jj!p4mT9E*F +Y;Jwh|rMIS8_E<6;rzpYK98JznavC=reGV!sZ57X|QbvuqcvA6vBbuxFyC#AL$EY# +?YJU@bNrdog1@6v@v9-f~4>`(0gbT3201qp0U>nS!>#6Wh-O!?EMz(>u$jAvV6T<&Xaih2T3yLiU5lM +EYpu4ANJW*GM^iC#>jJ;Ct$m|l*VFHH@-nljMno)^y6phveA{(luC-h#(p4E>YpSRSr?6!QB{xI5S10 +X{aAG7G3}^;mxNZ1m2jg~>iUVcr(@ +Rsu+$3p#cOT!?9vAtF3uy-p-M92fTKI|gP3kF+>9F|bY$0pnHHmns7Y(pNl)nCV!C=LG2*%HC|7PbWE ++G-YQ>Hhi#TX{=&4j`Cy@&0#wn;U;~Yq&!#;S}+DTpE@Jx>X8Svk>*wKQPZxSc^dk#7VV+hyTi0rleF%{zC7 +Xq(`yLjqP?w{i&d=b-xmbDqIJV%Vz5T*^Rnp~HfA}JfDcq*qMNLMtb^hEa1nC>O>4A +ofDk$egkiQW2qR!zY(J_Th%uq#dDbKv%p=5>)}3?{{Stj5Q-MS*@)X|)#~R}0%wn@6#2l{4eGZT9XGb +YY%dxtiwb*RGt~;jYZMb{*|1r5W5-X?lY%sWpQ;YYp&QpV8ZmWN+~0hjO5Xa+JeDSd6kIN-mm@L`=aS +Q5k{F7}YQX5PYQ%dset)rExrsr&2mdnVpyihN`g+k#05)ge>?m2mRb)FIj)HAGiB1g~cXIV+KSRFuX_ +#jF`aiJzDLW4wNxA_?;BTEJ>#_h9bh`%6rhlcmt(iNz3D3)-j$VfX3z73LAosuAvhXiqn9k_f9SK3+g +hM8Xz`La&nK1O2RRamH!t;*G5QL7xX$= +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 +f-CJ@%~nrk*rE0y1w0uPm%EM& +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 +qfl{l)<9nAWin`pU=(Q83U@@LHV2J9*E(x_UA4 +gfPk^w@<42tKG_Fa$2v-6qO+Ne)}%Xf>6RgTbWxm@oln3Al%i;jqDvqd=S&;zG5+&9#Sx-i4SZ6FS}} +z<`LY)^tXNQjPgE93$Rt{y71)nd#?aW!cam^C7H=>z0h9TiB9gVh%J(Vsw$nM0x?Dl8H;e{PoA>jW}!>XP5E8IG$zVJw> +aJlGr?}MU0*@JJ2V)7Ok4YAfG0kWotTRwwf8d?z +3LG#&rW4r&`@VVg7@-@-{XU2y39wrXPjTg7uy6Z?rbS>_QSa45ViPbP@TfP%4dXgkt~u5FEr`)(Mn@z +gNsLZ&kF!Sl#7$R@vnb(l~#iJ`evx_jx${kAPwb`xRUd_E}Sn^b^&=z!{K9=tby+O>|$uP(^yV;L!0) +omo)T`Ra~0LtW?v9EQ+?!SCdKzqX3^iiuYwEA4-As3wvLJ!b3XQ>u9ilNXi#=$FUgZAqo=m~BqT*CiefuSe%OuSqPq-16AM7MAcPi(06o(9>Mi+Pg#bp_kc)vI#_L@;01?HD~$!O9B@8v#L2Db^j%?);<8t5k480Dy%v$*r5oM~aK&3T)&b<9HF!Pd%@;<}XjlDNEzwZLbVJBhZWZhWb@iXDm;pKGJTCFTa2AySW0wrH^G&^~ +va{ZIcEmV%5>=%zRe}YbGp&BGJ69{fz7% +e#?G2j@gdmpU5ZM~9nj2|r-sVyY@@&&C0Zm4N +hyrI;#|6WDR$fJu#d23pLPP|s +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 +C|Ii!!@>%f-=W9gnK^9MvQf# +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 +hIQ`1~3{hE_QFRr=2@;xe#Q+{FZ +~Fc{TapjX`sX$cnvWD*q9;^V&d#GGiZRlg*agvMfhpS(swMxaMF7nnu3j#`QD=ag%DsIOcdE41}sWAk +b7baSKCK~*N*@2vB^&QrS6*)%V8mVu6kL(}8R9K{OlT1{GQj^p!W?1YlBI|cG8p69S!*gDvGv3Echs@ +`sThJ*DT^SqrGx{KoatK%Mpe?apaoK?Sl4v*jF)gc@f1n=?@Cu_W&X5@jDD3?|jg(RXNPOM&NA|S%VN +(3a4)}+4TqBW#9OgRDj7(`pON@s<%!m(CED_SW3G-C(?%m|B~g#^(r?nY(1tFwPB0N@&X5drhbVu?!4mo7n*&wAC_&rzrX63BR6jvR8LT +kgL_7!k^s-pv>W0WHx?EZK;<#Y#S`s_+p?4^kO)oQDHS_&h=1JpPT#>U)Ire9@NyJA*zm$JOKL&rLYf +yLsv}wG?^uW~RU0J*mJTdtq2i~J0a|*UWDFFgHo6fm1jjHopaI8P5{|{Dy)y%V&B*A|T|nXjcI=KRUV +(B8Vzf&svKX7#aXLvcjvVkivCkm}aG#SUmh5*64TA`)pUjrV0J`SP=;~%NW<6$V!bSqeEjlLlG{>65U +*j^L73f(*S|o{J4Z?c75-eHOx)XOe8<3G)dX1`_Qz*3PCdFO`f47$baF3*@l;#>2BmOCm(Ratc1oo*) +Nw%vZI9?EIQ(M6lg#D~v$gIV>$qVpD8zu86u`j +x03r+VpD0)+3JBz^llNk_x=`te0Y<~iQ3Z`HkU32Xv9+4Avlelg_Ia!8Zd|GnSWdr|QD=bx{%wnX2NWDI&r-d7GimB}v)NhG;rQz3Q82zL4dH}d@f&p^pEqW;JY+bhg5Eq`U~>386sDax +yqpf_+D*eUj0v%z6W4OEuP<7Vr>iG?6ZD18_{wn&u!U=|I?c*tBQ!0BA;+<$y@>maLBEdC%4fD?$92A +KJ}eALMnE(;+Dw)hm#^B`TfbO=_cXgIWgFL->gSnSwg6b3ZuW0QZ`Pi}P;uQ_;e8-44}I+SncSTaxJum)0x&5Bg`7o|yd@8C71z6W4QBUVULd5O+-RTNzpZl#B}RJ8oUegcO>y$LwCN%AN`tq +h}9p75%Hx9bp|#l5>4^K|$kqR%+}u$stFE2G4RUtOa35VO47kNdSyQrW2hEK#H)RQn*&yv$}S_91pL4 +4#p+^OWz#@+JhiLr6lIExwsUPHvwbCzYea|CGUE?_n><~%;+$vX5>U48!pi1EPI4sGL;uDTGA&{$g%kxv2KmdzObhk>OBc!@t~-Z8X5nxhlh_=9E| +6h{1gDIt~l!qUPWHU!kcj6YE*bXHr4{h_+EW2u%f(qMQAP0Qd0jnYM`4bWw8pnP1@%tq)%Q#19C4Bzg +8vh@YM0;QyzZU=2;ZnwqXSAEfC?P2jJ%&c-%%rh{sreogT9DAw4Bfo1L?}rGxJacOXUbFWE0>G0Bsyh +Ban>%5l3brG*AI!@P?9x+BVDL4o@)fel#&$W%I)F(&+>DmFcG +49}m-JoAhlAJaW)=}fWV;IBlREedQa{HXr#@!=a-UquQh{a<705V!=ong-d-tswEOp!IYEFD{U<;Rhl +Vf6~Ih-aq-d>4UbEYVnG%pTzy?JWo?ITgB!mfG3eJbhXIq)s8vIjZhm>OvMiT!vrYLJdG%{`C4liqXS-P{kL9H|`LprNj{X+vF+B7 +iw9x-GT+jfu3N?tNA^fs0?3Xt|E%+-dQYDLPvT5#`dR7J1njYSp~_4UMQ0z?nUGw;$nV7J8w@iwB%{M +%k-1lAwiE>I){=nAiC<*&-(r=nx#5}MIT#dpkZan`|1ETf$=_JpQHi$@;GS07|loxm?b8jq5^qViBcu +<4KZ0FQWG-eVN#|=qVE}m*@>Ffx?u#h>?rN(U2_YJ`I)68fLV5Zr=fW!KhycPu4Lt!Tyhbc9+@k^uU2 +7D=0b6CAxe4Gj(TY{azF?83eY)GFW +QA_vUG#{6u{R=@NXol`z*R6o6%KH(-oo}%8!k1Vgs5~h*_-;$|l#Am`+_S&`!9({C` +vKj1U#CMnViMzyD147;Hx#qto>elQ)l+)-gZ!*YehP|3bUtvn(z$e_clfdeFF)QW@$$3SyIb{FumSh| +`^or4KAekqWo8t4R{KDG&+VMWLtF}AX2J~g-R}P+XU_kO08aVWP$ +UY|857a&~TTHX(9K7mQVHFRmjDA})7pFQY_fU7+{tg`)PAI|5FbCVPG%;(0pOiba!t!jy!Bg9627L<< +xhQ?-ZsAykD^B*+qPeqp`pgG)LZB_yJnVOS@W{FuYAVnRfe;i_~%>0EWRzmHXVlx5b(R&~aW*1IA8*H +!=Ee~wNAPRC`^=ZLJby3G6)wjZ=RGWjPqC~}I{+r}86eUXtMq}**`4RD9d-PE&Ir`g!_w}4^DAwgC6> +M?e9D+nY(`S>Dfbv&KK)J2w>RCRq7U5^4`YfU#dgN==i?&fCqDSUzlo0}UioZgyxbOu)^Za&eIMq5%Z +CR^ERv+0J4ji<`GhSo6XU@O?%bm;;f8vSdWf2zCjqDcwRC>h%K!`9h}f(TfLHCJn0xTm?Wb~ymg8-+! +9*Rz<^O4io~!?1c9%KKPh5gj`QMM2=)*plX|u`KQ!p~qFWr~J!0n962@%&NonsJr3D0uViI1SCA`R=6 +U!xg*)_Yg+G-jV5AHMM4@V!51-W71~u%^;;r`Cp)8wnD)zbG~x9KINnljavc>;;{~`udX-D%R4-|0}1;Nw+r-u((Hi~ErlUAa@9ef +4pYIVHJ&~XQAZQkAZPP^>4NwTddzPQ{2QN%me#}aVc88HmRkW`TMNlAYzIO65iM&N#Z{AWh8uQf#Sl( +VtwBWdb@7@hQS^-Z^mt>DxyWL{-vQ4AaqXFp<)92ObSvRPp{*g#=BAU)wSy%VZ54TVuy!prIxoSb5!c +n)hwBE!J9D-2WEq2Oy~~hXP9F}>w)m?E32ISI$Yj%r(#Z21rmh2hZkW@LoP|%;K|vMQuKn(6haXOI9p +1-*_$>ge=3T0oa0ofu=3j>fj)cJs?v%T?+}54Qm!(WaiJ$#vrb=?=gMj9+QCHaY +!nrqkuV<9m@HK3jXdhA}7Z^>Wuwq$46~6u*2k21-)Kkciphkoec4n$%ejZGrVWiH)95R^85cVp-66Te +mjfT?kl$>TgFZlBC1RdTev9JJz^T@h|4L)+c$*W|`O6n_3!9?!dLZn1V-cKnKYJ6TwS2{EK2f{i}fNL +b2;Y04E5*jcOH0S6A!7&BF-*>{`8*KXSS>vnccWm>D&7j%`HToipNS>*-go&P+n`rm;*~!j}=Xb(Qsh +nM0@M)Ac-I5(rQYs(B2+zombDbtPj@Of%iMpR*B<^dRv0F}sW`e0tL5lSD4?_H(LWnxs^+k_n +n~7;1uMLnbZfJ4}IcFyp4eIoya)#ju@czd@3sUQc(^g<~7i0hI9*M={rG6}h3OrrPD5Of@br~0WZW-V +k=s4xJ9&c=MN#29)?ao{Lj8WDXlzxnK`Z776T?l_N^u?7ys1c!b4ES)j%5P<4@gXlh|$M_JdYP +FKn8)db(41xIX!0my~D@9%n!!5Hb1KCzK8;?!!kBk#1&|Ujw-o+fS&|Vw37nBoDk>uxCirX80b0HM6$ +gqYpQkqJGQYTATKv(6I +#0&>X3D;*_q}5!q7???r#M)~zM-|rYQ;85^V4lqPh>7i|I!zgA`Z7-W?B+7ps{#tjxM=J|RYv2e+M=q +Vuo!|ebkbAN=HUTlQ`@0Fnn@2t2X6}0R}|Lth}Q~X1TxZa%tAMpDI9k;9LJY``6Gk#5X32yn>;1pTW5 +7`i`#W8wM88%h2uA-QkfZsslMvzNTO_8&J7-hbklxq4>pX{?*qy39&ZO5zPFa4fbPGT2qa><9YB9v3c +*ksf%Lja%7Y>=%PxAD!=8l}wV#4s7Za<@uC*GaE+tb*qw<7j&GRYID8CSgY)lxKVCFz&Jc`$}rObULv +c?TLtl-n$7qr?zycnmyCIQvMY*=Fy4>&xb985Vc(a==j`gCja40o>ZY4nAerJkM8F?DSpn8e^Jr2cQO +JDSP|D(5V8XE;VSh4PMKLSOXOp<@IIU?x+Vn}8rmDx*MHS{_TxFbQ)T)K?(q&n$C~*bKWQot05DK)p=N*M}Z%U1gG?N+NwwYb`}nsL0K +`gK6WU!pkiUO8PB!y)p^7COrpo!n3qY3Bz%K+hBq<^Aom~09f+o(#UK{9mq=ki`vN3h{kKay20lQ)S-xtnHim|+N0K+L$pjBTPW`WEQE9_+u_>%ZK8^$JGyrD$sZRj~8sAHnY7%e`RtyPY@R?j1+L- +rx7$1poJk;}dxP`t{zMljGp@Grg0xp(C0+TI3;Kvq5x2 +gGW~1g?6GRz(10~b82>qp6LxcXT!F+!k!6rx=!r3QrP&-gJC)(tru)hBJ5>8E5w +$A$<3Uos`McnWuwatCR5(+_5*X1&#vS(fLmAF4>lh1N5ZG +d*X?-kL_Uvp%Q|e4= +nLc;UOCmeUv=ofdjFb6rq2eYH7RrKQK$JMo%Y^w}B~ri +g@qpg{6_w=afK@DtlYw0DlFyJoUZ${~r%-SA68aKS+HT9s*)mf+g!YPbn3R^f>P7+K>dWro9yHb@#}W +D+1*9$Fp!h!lP%`v`lTnu}t*Ys`H-^SaNwhNj1d_(`wd|@F)_N#i5$e_6)B#WBw%v0Q&%Zq}U1oIxGC#3)Y3s(@t$s`8x +6U3HdSW%&(ks6^8w+_Qy+E(fvD2sPE&8`FigV0L +n0GVJiMmlZ!EP@AV|Aa*zzakh3y!~-N9>R>BnB{4II0#Y_Cq-Avqx`TDPIC1!fPSdkZpM7|bTKF>Ef^ +Nf43=0T8SYd%R#M)-{_u82<*H;K2a)W;n8#`smUnZZA#a3VB;3jEUNS;_Ey`>!~3ea$=O$q*4ypA(3t +!*h|uLpA>UjDqGDD`Zb3Mln&6OPu#Wd?CyGjbOXT&CVqgkt-U`?SzIGQnq-x@y4C$4`iK>ov<8EA)1; +Id#=J-`QnL9XfI?#Zs8G!)2br-1g{BejJhlRg)d1hn)u7`8^}XI{g#C;go6v$MU_IJc-~1eR9_3lm`o +86b|N6t>dm4GY$hg{#;i*RWo9>MI>PUWHd>?GAuLoa#zW#l%`Nfy7TTAV$zu4GZkFZh{eEG!}Prrn}n +_qtQ`O_~x|Kdx%P43wl>X8g~Z}BooAcLZMlMu|0;fa6B4Lp826q?IqFvZn{z3Q23%6#u^#O~f~23f?? +HWPRGx>;Hpa(lNT8yyJv19v-d+5`xieU!p2ryms-e|KGLQPAMUF)9hOJ2 +27+qFQrz7)L9HmX``iP&&GtF)6xFKVf|aI@zzT=}-g;El#y3bF(A0iKSukY`d7XMo-rkNKLqtc$mc=& +ML*?-_7xJ}au26=w-Yn4ZrnJ#w+vDAl+XVM5d0o5Pd6Ehb}?6DoLwYw%HRyK*;75jEr+1&qL;ACGeCN +r2K*Qpd!Z6tQE}+N1-y??s$0f%0MLd1JbXM6_2%LP9aeU=_g-(ka@Mj$;fFjwT<*HZ7uFC|LiWMiQ|Yef5Z&*Zn~E2JdS$3nT +S)!MXr?q$S&>eX8`{PE(P4!@doRg`CDKvYdgO8jgA1K*xhi +pIaa-pl(Xw;=v-p!N;)wsKS+^m(>_=3zIM53?@?0^WJIAlD#^gg^_xO9w-hGtl;2M|-QNOsAoes~%_J +xLemlSIY_c)ZCfL8W~_1()-Wycr9WH^Op}6W&rYA(6 +(f>Pr&H?)AyGsSfLI)}o?$KyK{R_&AWkmC>s)t9)gKNH2FR+tf@ioY`lLbj#J~{~X!g5iX{5Sj_r`In +665LhC5L`%p~7sTzSZ^R$xJ{|CA{%t>}0f5HEQ|Vbr(;)J>!?R=Sw$QQ|J{N?W0jOwPoo~Qv1(YJsii6`)QoZoaz5NH#~AX +H8iGdw>B3qIFYw6Y#q?rocCF^!1+GEV9=9$dv2j0f~BKCr!urNp7&?lTx^+e41fX8JOVV`# +iAG>Q>k5I0?5)3k`z=UL*Ymmz*1)sXljIc6>=D5Lo5;&2Ta^*vN%K+<(m{^h5=Cw^MoBCWC%jhC5*jH +Z5yJ1^jNB;3@fdPbrmE=8cX7}cOA~af%_m~g`ca@o;4ZyPdC8L5EEo1@S +4;e)W-gV&^<}zBa5J{6Mft@-2J9iV8;}jC)6TFp_`@lffy8i|*G=~^9L~2pQ)r@>&T>pzLf}Ihx`q6| +piYsUnr9lt}_}s&C44JVJI$mKB?b<+5>+`AFHPguiW)dcHJpYDcu%LibgR)m|{oi-Lfog<)DuRTX_Yd +AuJ&Uk?`gF8~-dsm@zrgx-i~K93zcWHAsRVE6fSsb%xPhqN-D?NAN0!XGVs>e7@2{z4O{vLK1a2@4HB +vv2Aez~BWefwg3JlDk(INWDN?pD~dzdTJXn=@UF)KFsZXh;d0hu@#IC>`x1`&s3jqeZbiF+{Rq__M4v +W}?J6mpt~Uyg{%0*;)pZVs=PF*2s{e+x&4)%8kQPsqI%&}K7oaemekm^?Cz69wIk1DG<90iBExd*<-5 +Ed=8`BkNs(G{|(F!af>;Et-IgvobknB}LJ>tDSoTKKgF^&bm%1KHaL5EkQCyA$&$|@OWBP$z)2pcUU` +2=MFFtcu$M_1|S-pzg8hD>3gH_N-g=Y#R{#AaBr#)r@P&`nqm3o% +R~6n;)dj;cPO&#hVDdSLhD4v3B#wbqO*_ve}=%JLD25e@K_4d|-se5qid@6C&?w8*#?#h*f>=WV>UpL +A7n2Y``}vPQ1PVcBBV@K2GQalVnQQYonNF4V!2+VI4r +sc(b%VvWdWOaV=c#Qgf@cyntH~-}18Wa*H;G5A|1eRp4RGXbJ_wCUv({uBPF43@bz%ma<<3r7=yZeDO +sSW3}leyokm4eMA%_q+|01D>})+9Nuy$|5@M_s-ED3svdF{*CAgoq^eiT8gf<|+zO-s&daAXLLAJCTV> +Epe4`k%TYBpPiq)0{#><0;ajxc^ma$BXEX7?y(N)YqG(Z=1Ag!X9}dE1MTip}IYC@9`s%O>Wz<-;UTQ +ce{S6Z$qdWybULA)Z$KjM#6x58&RoypJrcPsp;9jmrsA?=_-$I{P=UCay0FFb8}g(vy>WcwL@>K> +(jE_C0u@hR5DJ=etVu^v9fTKI2S2hD51dz@H&c1VWu^w53YiWHu8$e+dCGjgCZk(A2Jkx9v7)|-a0HS-dBkt8V8Fdd_yB +dUr +-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 +IERBE{2b}f#ZmD=UQ{=-S4X +dOvp@KUY&(LI-O!B7M?T6v}{W8R0j-7t%5sj1hI?+iY7Z2$J`MTTxRri9<;+B1v%ifhKta@O6L6ozf8&EdOf9Sh48qKKMe)aVcX46$1)rq6SH|#`Bm%R>X~E$at3z^8WWZ8h8V0nEXLKv^J~? +}G+D7B}q87jXcbb%A3QCAA>VSk4gb-VZcnc&3$P&_0LA~aHj8ZBK)bs#-j2wwt#`E3QlCx0@etPP_Xe +LkrTKg?Foo^VZGK>3UDigyV*#c``O^M}2F>=YwEl^J(yY{%i2n*Xu@4^|{Gs!~L3_Z +6sC#&Pg4tha1sGr(P1zU8=0$sRM_dH-LN!AV0T3){+dXcyzjUh!K)urw=~wL_vs=VYW6X753H_p8nOF +{WCQC)k-4))U7s>jSa-k=0}VLDm#POc)HSPHom~7zx{Sb2uBY0iP) +(Gl!9JF}uM40%OpCGce2&c@tSA>i#NVZ@_MU +K^DE6`#P8rd6S0fO_fX)aRfSkzPiHLY-pKt*dozS+nq2IIWcssN!v@T0FD00eO(qNq>~V+U6~Y{rPKA +v~FPDv*oL0Xd#TfWluk$-+9~TScpb+Tl_CpjGRM+w{U*wWhFULDG}`hdZ{(&XQl6oEp3bbPEIiq_@Q2 +kU;5xO-sKhnIodv7yYW8n(wC#FlSr@rC5Ftmz8E12ErN#WqR&xZ`WLWvZM()0vM_f*Z^@`nB!X4LvSX +#tY_#Ib@64G4*9Kpso6X!CXQv3R@IN|vP32`%nGo7>?Q%A5Z8W2$@%Mur~fibkq#5iRzjSOAb@ywfvQ +KmS;eSpczAPu`tGXU?LiN;lH_h>&sBnHAam;a_ +*+=HC=uf>>qm^GuliT5?gj^8@ffq+%_mbA!yuqrDKMvxD}e)V#cw2Y1sZFum509?n34f+j@)ldPPNr) +aq$%tec0~g?mMf(Xz~=@zycOrOtH?TC@b6MsDm~#L&QpJyxo4#jwnF>%h_Zq +-q9&u+_;HHn6wZ?7lOMm8pSe!0fS8xDSHGNivXiU!+8W}Jc$i@!Xl9drZY0J;X+|Hgnh(7$$z8uN5_n +~oCi1Y+>A2@*imu$%s3coY2w{5tuvx7*}r=)BRr@Yz&Kbz;*6PB5Gvbgp$lsX2Q|O*;_{6P57|P+Z8Z +ecLhU$QAkBv9fOBlAVAAqhLOMXvh#aEj0e-{XrOZ@X1E)Fwq72`en!S@0+kl55zEa7%N}dKYq>_AxA{ +litgYNNFEY8F?PDf#jCZdn{=90jR8VK5&A!G4)d&fF5#)nXY;2l^s%x4xLbII9&L?9H2b{xP+*bVTEl +J$U8(4e~nfKoBQRU1ca3bF+x7z$-_BoWh*-jck?#A~BPQrJ+kDr!-vDU94?A)W<#tuK_<^0rQ%(8RG*#>R>y5^FEMlLQ1I!r&hpYh#J!FbdtMFxSeKXm7>H#D*)hmPANV*%FwWo +j-Uo@PSP<*tIFc_`qSB6q+(0WBA^I7W?U?0Or&h-_p5BdM)sWwSVPK5|ZFZ?@9FVae$EZe<$OWmG-I; +uS9G>5)QPkS4m_cp%x+J`h}yQPKl;drzvxw`o!H0loQ6ds(pk=quMYmHP-yFM8AAYC8Xp3=j|n@?+i? +?uXWGCrk84pf16zf{W2E}}gj-Pr;3U+wH4_%r8dCHqrX$NqUOq~5(KxlY9k`*d3*aO4)Q$W6!%ehbWE +zXdj_-RaS+*KQ2z0Ro$rQ{z&)KT>@cK;Eg>+YIhWhP0;K7FpKi@Pr7lXD45iXDeBa_S142V^jlSe4*N +)4KNZqZh3edr&kFb$zVm-4nUGMhDA#zCg*DJ-Wf4?OS4sc^OT$N-Ry;CdJ_q;h;LNDUbfve@<_^%2)M +aR3TzkcUSkqOGej+)SsIlfEOcy>h(PgOp%f~L)2TS`^a}bFb~xf14a-WSY_}(5%>^w=X>>afp|@lm4H +BdwDfd~Cl$9iGJ(VJrC;Jo!4Zva4v~aQ;hTSCVKl!;j(^le2yMspz)d4Jt)jUy%Wtj!hdr>k=vwCL9M +u?u`B7|@IUDoE{yvlkBChp9KaR+Vq@#dF6xR~^U0*QnLwh-Yz^>HX!qIQ_CmLA^47$lY$R1ePsAs$J# +<+;S;eXA#2ev{K-?)J`7zGp)8QCtDL-40setDTdbgHFq#^JyZ~n6I#)PTwtrhE@$AR7WHdLHb>94Q$X +Q&ot?Ap0b9VYtX|nPpHclXZ6uC_k-{d +YCmU+m)q3NIZAbds%G*&5&Px~JiO_y@(D;o%97f)l$2nlb4TiR?O>HXb +&gf_J)>-Vo!}0rvfQkRv2b!es^pF#3((SG&LOrVc6^A(H}SmWe%`-t)R@~h$3~29{(vn}S?4Bm63;L&D1{{7oSg8Cpe=YznNiu$CN}PcO^a{(r>@PBEws +6<=iqi13XFk=$-u8YyZ%)&Cm +SrqYeJ41MGw#6;BY0+eYgW~So_LI{32vtzIEpozh{sXs7$vnpDtTF5raOi`Ty}k62n-skeD#GO;DZ!2 +P(&!QEtJVIn|^HGPFF=3&L*03>z$VX}ug5`W0rFX;_?ygbx{p>*c|cpO8wNDl8vbi*0jP_9qk(J81Rw +`!YeRmoK$j56f0Ncxc$`Fd{omEJl;A2ms2KLC#b-Y|X>88u&QAe-OM)3d$2hiI-XE3Lj*LU8ICCrAi(oHeR+PS(LkKygWR9cy5u4S0Hp*eH>`upZ9u +NW*W;e4yM#g&l*gd3wpikLrOI?JGvSRNMEb8O-9uABz*lMH#_F)1qq2VETDV$M8MTNGwJJ2HayJ6^L=>M)378uOjvO0 +{04_YKj=zpIrQND_D1_I;<%OYJDhI=6Kb<<>COP>w+yPATu1iD-121fhS!`Tpg&!<#lvALGooRW5>Je +J0}tsCs*s!7omkxJhSYFLWZ_Q6`e$o9s)-X?7$r?!E3VU0&TbZy7(Bg4KeG+AouNspH7pAl0bJqBYraEbzrcC6&-`Lo8XLHhgQn4jVRERz`3l*pgQ9%8%8jbhc5}!Tqu>QXkR +m6yYH&Mkahj_M*f2#mu6_G@SF0|sSNk8(LXP)FM4=Kn5OwFXGf7Hsd7oAzSOsY^naP59SRJ5=LQPVt! +hUh`*U28Hxa3;I1#1ac7otjuepO7-fI!ThdHe^FuIjyy;o3%U|HGUSfi{T($=-rLw5Iu1l?}g9Lt +YlL7e-Jr4PKC+_Kae(w +N9pZ&Dg4j%Fc%DCY%&VjdHt;LYJltt>|pz#C)X9$J^*v;(C(_SWv}m#vN?k_{%q0Gk*BQd2{F_Bq2<2@dw0FE){s#>#PVlGApTwAz@=MNbw; +Q&Po>p^sZqgfJ`LQG(j`YGE7FFhyZ^VA?@EFp#3*!nI!F_~Dm)HOEmQYJB->D+%V-O&#hSAzG8$dHoK=?S=#xU+cp_vQ7t$4k5=1~k +`13A-&Q-li4kjn+KiYS1@e+TD`_Uo)&&ZMy|Xdun?z>()lGmba*<|81ziphCVtzXWa8R^(D-RT8hdOS +c@$61>_6(fy@o?Qmq2Z%d8ygJj78`jgXmj3C%f>!Z+CW1zWsK`G#7QF-{_J*QAuXa;c44 +?j+tw3+jEoa)TmRQ0^ZL8V#+1;{+e{vi4-K;rKgOJwSY>Kn6VN7agMZ?1fCSq5?%t-@gPMR +>Y3Sx}z5SNj1vRnu}zD;9%tIs!QBGXJ*oQ-tWKqfuYrTm)?ba?)m+HJ4RA-++CLz@Wsyy?7mQ%3uSZP9)NTCYAX +hYCoo8wV^w?O}NgpZ3W&IDV!;+L2E3`J+UpLC*~YG#)&Qo)aS=GX+lBOX)h}K6BLsYx{SbZ1iz+J +OF6W~!##`Y1L=4)BV{p&pbYk=KdHS%)n73PJ|n{RTW;wAOS>zl%YIwGbi}%DgYiDM5#(5b{WXBTWofr}!3lLFnAffh40Y54{lhdNm);&FjAqBi +f1ByOL$aG}GdGvDO^+TDYE>O-`U7NWYO#2azaDrJi8!A(8}uoG+@&9?Q8>YsUGCII=OoAhB%&L=1+*K +t-Wv@Iu&b(>-P98%zI2g-Qu3et#EmuuN*4Z(323T!+msi3urLu7q}{lSn#%Lt@N5H2jm}Q}E +yQ&Ts6iA6=X7`45l3rYrYXeEc$e;+47H4;FacTrW>D#Ge|`JOH^U;wx))WG9u7qp&jLh|qc{F~#{5XU(7u6l}v&G=M#Dq90QaI!%hi2a +WbT3O%NeERtpU;g>4uUq6KLrFXaZ+b +1|y3`wabivsbRDu*5G2zZ&76??6dPQkEQ5h3(tpXilXGF|O4C+piyM}~<8l=coC_#9?8C7E=LBqZI}V +C8YFk%*{qN=80xhBHau+r~OZfL8)1dePed`%eeEFJJpy&mIuZ(3U?nHjx}qR)vl +PA33Kqp%wN9rQn?J!9_vnt@_uvlRh$`{>Wq4L)`>%I?>hHffS+my)$_GnYp+cVbvg7>Tt2;77A6oD4Z +Ns!oSEE=7n$^kg)>zx{pLNk}z;Q%x(2qG-eC +EooJOzrC#LTe`u@E#P2>%No$JOmk+vVy*qC`ww^wwXI4$G8?mT_K$0FxnktBotUM{6H%y`C$c}@RUZ?p*I|wq3r5i6!~l#+WKASrG2#>oYfhedy +V{&z4s}vNx8UfXcw1ivyr$5YF9U@y;`V1Rz^Oy=E7HyD200)gX~ShD%Ianr7YfO2P?zb{2-VZ-v +dC|=pR&6xA@hYgUD5kz=C0|4ZEyiuu8)$aE$Ie(&O=cnz0Y7)Yq5c~pg{$V>G`_dC_O~$M6+Q!MWU_5 +vlV;lQPlgpYxdVJ@oDMZT#6p0_zJbuS{hYnl(k6YoxGI}WP2(2M|_Uqbvd-r +vBw`M8B?Ey8vxbYgTnSj(C1<453B}K8|mO|?3SVt|irW}*Hu9a=Rst`w@RAip=D0C?(9l9uDudnP^C$8Z2 +2){LNvR5{DF(-OHsbE6(KHWZGi5W(FTxlvTBnb@XMcG&eEhEWZurR1#b69{U9640nkRAb{N3>O^Se$L +e@|dQm+;`-@Gtye7|+E|L!I;h8Xau~msK_0dh&#PMDpvT7>)BAl(wGyGQ+UBAo4uf{PNFFzyA8kWq#8 +g=G}Qd>(bnI(Oa!c%B3!8kh(%4Rd#VUyKz^{TvyLrP30tq`}%f0`ur~3ef`_+%imu9Wfy)vz3YTO?f& +-D!EXnD`APiV|LM2=zyJ34zwGmGM?)lp#Np8%)c=PoFJy%_QM?<2Fe&oc9Y5k7X)RgOuc&tJr5`tN+gN1zGqNN-Z9Z2>?F5LNk;h{P +7(C;Oj@r`!?tQ5P{zqoL}BItGGhxQKF<$Ok88}$rUBhzs+)>Z(;xVK>{i6%0pmDleA)K@fQH;SbGzox +?pOXJJ+ng1H4#8XrxKgrr)ql3)2a@fHbalm4yRBrkb*Ay4wcqq#Ovy+LQq!Cy*YG>!YFje2O=|$bEoG +mw>iQGgdWDlVRLTPzkHpVHCOJvFJ*ffbd7bKU5oJ`z+##i$Xj`j8}b$GVk%<4%#IMNez`+orQhTk=MI +$EYHVDoSCuAZ!QxuRN$eKVGPE~)Y(xvGIc#Nx6#BbquM$k_=0w7rtsyZ3~C_24D0d4P1I(?zkM)0$at +tOY3PU;E+&KR=PK2?qC>Mkuoq#*dY!d+k7lU+f9-u~dmA^B@OS@;PHP=DttKtXb`C{SR+jCI-&Jg{t? +V4M!ly;HB*wgkONy?UU%rl&cOm+i>LIEfg3U%05YRq~v4|1}9S$jLfNE7&FgkQ*(f +WkCjUhRQXx$Uk%f +4P9Q=QfG8_YS-7L#w~y#5|@_}iU6t +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 +>k8`zr>=c|XW763Z~C_#Inm86Ap3I`7UYEqW +5Q3i44LHy5up@A&>26DCbL<+DWO`n5 +qQIRwyV=;V}mKQtm^jgA)eKO3zmcW5}^^S+7=GuYr(0;bXV0L1O))Y7J2>Rk^!Ksa9y&7NeJ;&f*=JT +`AmsSEx{aDf5!#7doKsh^+S_$&&PxSLJXl+6rnC_j_?YHDHn$zrqvqK0AeSa1rx1#%cp<3a#0tT$nSwd;&vLb +@Xg@F<&Ykh|sLy}P7063y4eIYDoK>r+bo`KZeyO7|fc|$7;MQ+0aaU@Otcs|9YW(vwcha&TY8hn>Pj8 +Vxb&U6ptb|w=sNWCH26{u%-Nhc5(_I7LQsB9-9lwxV*E}4)DOf=|NyXp^WH2Nd&1)2ruie;EV4VNJvq +RvWMG!$P-u)xV)oji$xDuz{cIu-nIM2$sY9%n-PO>?2b1APJ*caZbvxCMaJS|QSzW`k%pI~aVelN){e +B(LnI72p%l!h5CGIxhi+^r;Z-^7Z?CaL#s6Qu;snWFM^>F#Club5p{gA#ao;X3(tBzv)Qb +u$*R_{>qE~9s&!xaBXts<3N%`ylYHCJx1o4w#X?VbJdw)rH^$5J89_rfXPh1!%AHYbKk`#TtqPSG}5EdrfKVh&s9YV!Bbj{IFACa>B0K +nMi@s+yYRb0~16E$^|(edO%IdJ^wQo3EuDEhx7 +Da+|c(!P}C-V%cXz3Kfn(0lRHb`dUq#V1cX2=5B@{VS&IS4AfgtjLE8ChkCL|{7`TG}^xUyOQeNM_Xngy}3OO?CMhw=1}FZ+TFv`F;* +BZ`4P-<}|-yZL96@U;YMum65GNtQK02uMf%Vks7%P-7&&Qiau|*Q=XKua*c}ioIGS#jZu?wC50#s02s +llkA*c)eGg`tIsL-0*)Y*_6J`?ja^sV<$p>tuhg^6XRL9C`GqE9@14U2jaIp1tMvss9Z;#?v}2ERjAB +^o*=H2w?F9LcKz}2F{^MkKzA^hKDMws{$;USne*Po1f2`Cl*a#W0oPsFEPG_h^l6*u({z;YmWK^m)@{ +!hS^q@A|f1k{!m>F}nUv@X@i}b?zFb8b?2ZQ%76vBA%abI2{q#xn^7Y<}AD%{ke|m86@~_bkub)1B5j{Tm>1p)pr`N9z +p2GLN{r`!`B|Uol`sH6=h)lZ0SvJW#DpRb2`R0Fr+I#&p+JF9fA8H@Ieh%Q_%bUZ!*U?{|{%!AvmoK8 +1`-k|ifV9vSft$hAf%BGrZBc+K(|p2D1;EL;7?~>ggKGRh!Ox9xzz4DwsHHV&F>nFmS3*?;I3k>ZN52 +RleM|U(BuxKTfiV1_!lns)5<9yH+V +)a411JbOAVDv6tT~_H81M(T3QPSj1zEqeaa1jF>hiH6f((agAUCJ;(IK$uBEgUz4x^$0j?_eATB~VD0 +~xh8HqxlIxe=F7gH>!+ZsD6#kIvX4KAjLlbN+ua=IBkl@+F`pj+kgrDfn+ +mCc5e108-%J_Iqm7wx!BO6ztg0?0?Yh#50khEAL>NqVAtSo7jto=<+%F^Rpk%Q5$42~W>6oIF(~%^J; +hjm>&+7OgL%(@91-&Yinrdaj32w|RpLHbd9&y|H?|;^kVn2}WBVl|%MpK|KO~?8xZql3_JZ^BFNK~Q!STd#pAdKWfc<{agoKkEtVd^@rj2^v!U70r#g(Iv27wq4#&kpBs@<^-C_N +ra=axHk%>O+Eb;AnDK72kdRC&tg7IY_*h! +P`ystGT)#yMU+7P*h;D||D&XGBUf;nPe*4op>G_$Lg}n@mFv$Gz`_dJW!Ea{DCG3!qas)=Quk6$#Uf}Nzp4P%~uAfqD(MgKWq~N!GF9{NZ6}S897&98R(;s6G$4Xc>a2!I_~jFSE_OltaJ +yVia{?BTg^XXQJo405L*i-(_W#LFV`?n%B4M*5h^dA1>{-l0}lf;Bhd$IiRbm(JmoDONk10GC%b>FW) +&32w7p3ye(zdmX-tgp5LbkukX|mnli_NFveo~@At+of$~S3C!%(b7pE8|pCnm*>QC=P08>1R_9$qmDL +udzc0xI0B0~YxpkRYlz7ibhNIMw`Op;fM6zt4Z*OgkdRx?f%SBunqTj}@M7O0X3qDNV84_r1O;vNv_a +UM{4s5Bap3 +a3o5nII5+7-O-c}I1Nfl|5;OJI;l%s +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 +sTH>9*+{7z4!;gLLEkEY?2d! +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 +UMzVYg>~r8IIgVy8!%bdqNwyY +!mO0Gz}gD1H^bv2sCxE#PM%Yv4(>2JE;%0S*m8Qa04X1Db^`n@LMLGN!_L{}pn&huvKgWBJxLTDk^oInoyI5Jh6aUFF4~G;U#BG> +y3{z)kscjHV4+Y_7ZsQT77`lmsOactTC(8EtuQ9l +@*Gp+BRuhF3#~@W0VG6hfHjjq-3Y+&P*FXp-cH~gzYBmTnQ-ZOm`63r3aNihsP@~8fjI|y63$Vnr7_nrM{q;LOuA)HYOl6DW>CLDS8Xg;>{T4;($(FcbIIx4lccEYkN{SdUzUUbxERUneAYT5feGQ3@QU9sX6Q<(G +?NGa_1SJF%ddW8$fWZtQ93xWmQq_kupW=&{$s^q6RVAKHiN$n(IZ|{aqx__Wk~Dw0$3*j&Oe%FwI2#D +Ds%5&>%^C9H(*L5AKE0+~N4w9gGW79HA}~SI}X0S|m`_73@(&!4sCp3m6FQ@SJRcq2d0hzPUh%`6DP- +Uj!Ylqj^HbHc+eVyyF2PUV7FZgK_sqlIx%c>awrGR-&LNud^+i3_Kt8WOeghUW>>weq0jk4IwYAOz|Y +{XqtA2b;ZU~Y~6t?3&Qi*=pFQov;+epU;wH^mhEiMuwO-c*7RE3l1~8iQ9!YR`+xu&zKv;bp@&%;o0y +CzNzH4gR^KYUfaYp-wHX`w_+uj)u6rf>PWE^|;G*32Oda0T=A%>V(Y+N_Y+v(HZ)`2VYK2MENR^fHd~ +eiq?+9T(8JW=m2@XX%G~nZWM56{-{rER3a4^Tm&MDgLOD~>xQ(9W +Dmt$he2p3NV-7cr0!Uxp%MhnEd&&Og_Tk>+-D{f|M{gS0h1n30C%F5o2`@w~qa)^Fb`0C?>V7Nw4RU( +EiSCb_iNFpdQY}CDrRbfsHXjV$6}?}6;cxGL`K7hFx#{l?%&G})rF6c5qBepA>GP40sN3yt@C`Qt?^^ +E57Qcmt;oatgqY|$s51|z}HSuZZPEdu~U=Yw>GrbH~O=22-`mM?-PF@adr2r7OMP1GshwB^lDI|1PnI +RVJnl~rme+0lBu80vh~@19K)Z4ucVuwVVO_IBe#t)8~NLZ2+%;>+%=+#)pg^-Y^ +;x3-SbZwNFC!V0WIx~s_VsePg`xnlCtV#K=&N}@}eAJXCOKtGOZn!+s%C2lZ3kMZ=;{OQH>{g+Rk0w& +0?Nd0SK)JWun(k5=uauIK#_B4MC?CxEzjYqW!R@{!Aq`&dcOsdz`e>{mt`6;j|D#$GhbxI@sn*GCS@9;M24IFYgA!(RlLDX)&9>KmTy?Yq;ir +b+GQ@n*Y^Nxi&;PoSt>B(FS`dJurB`Zp(8vQ~a%`yx0F{p0?iKfBN%91O=@%JRJk#| +?$!#=~VeT1xZ8CY8&DwphuI$L}fHA?r}ci8qUSL{bc-+W55w@bg)>DM)#t9Cb|Q3ImBN<^A#eqDJa}g +s|862P~J)f4PwK^6u!_W{*6Rt!Sce^u&ep#EaQMNsqK+u43HXy0C4cbwq3zCGM2J!OpbaQkqNW;?88M +*OzSyFTBlB=BfA%A-hb}4UJH5B5Tw3VO7^#rZHhditz;YX8YqoG76sq*aciUpQ{@e$M>AoI@A20^Zr! +$vQZ95^Ko|;#C +t8?rsk+K}U|jXwYK%DU&l4$1&9*W=>d2LiA@O_XOd+-Mvog*Oj^@KTc%T=@N!UIqG1zP~$p6ATn#J^y2DKDv&D4>ljdx#3}ijl;jjvk;!+fdc+OYxK=MTIjqx&Hv5(}0O)cMj)ty(!qYsfy0%Gd|U&R8~cv3GXWKxD2{mwvSu<8!@7|CKb{lp1F +~jh^%iJlMjlsu`-TSlsbSLkUV!lJe4`puLbf3wsa@g}~73x8LU#O2@&;rKJ5vOU);fKo$d)rqR93Mj2 +S($mz_kW7Mc~py!Mtrp{DeC)6z&cWg4kmm3>dN;RMJHl6i)`glrhA{sQ2SZAKv3+)rO0=M~^_*%xaix +!v`n7(f)ILMIE%B!5cS;3a@AS-pe1jpK&xH97|lusi(j~T&)GX}GE%!D~ob4TZ47rvMr#}Uob0F1lVB +4xj*JXbS{NNO?(p?lcnLLMvgAgR8&!8@ETuF%I4wB~d^I?Rh%k@y+GH#VYHE85(QvMhS`EZWGTjb7Bs +oH9@+aMexMg@FjC3zHsGC4r#rqXAd1Ms|1+y#spnV3G4B-`QBE-Y~dU>$w&pH|x&^c@Vik^b~XdUXAX +^F8gz5+4sz{hqc(tF@(dEyj_a#?J%Vre^a1 +?%O7Pt!#BSGq{5#$g|IhOmKRkK)BYu7M@-4;rOOHJRf{|f=g&y%i$Z}?(zGb7{YvEs}~07l(J*R%Q-2K66wS)QG`H%+`ZXY_&+I9aQA8K#pP4;pF%EH$ +yXloiqGCp`b3`~sQ0>4I^Hz|$4>CvaWpLv7kg2@fz_j*9XjIDJb0;D)&#cN$yvf-|v169E2CUE=hP2m +dRjKBdg}J+d5W)NU9^Wf&l7-xY6@K9LbmV)&PSzb!3tGNci9G)j{xJ1CW?I~uIT9z#ioAY0|>{W#TLF +m1X?J}Rp~)g{7GW%|xe?LL{VS)6v`(CAt1@&S~3y?2Z{3baU2Dvhqyjo6}eeAj8x4B)_k{qx47Rn~e7 +ynd^(^l^08{gQE9G7bJX6M;0XOhg?lr*i;gyf5g8%62S&$0fS@R>F$!-_~Pe^i8b6diQO`X&eF8B+KD +kU|*5CxNh3MTkN9lM%68$s=t;gGU|O|%lAV~>#okIb@j?YD)36}#;R^=ifYZBYkgCxdAjK)L2DHumv@ +UM+nTG0_3)HVYk8ksN_Z28x^`PkWt@IePSI^XrCTBt=$X=S;62JneP3elq>PYj+q2#-u0BjPJdTvH^E +QaF)BI#7KAX)ZTlepq4Y+yUf7j>6fsG8~UGrx9ezqIoTiEnZ^X>Zp){6OS4ylbjUMS2@Va(Pm=&XVeZ +8m0e=#gn6OEYDc;EZa#Cz#@(KYFLlq%&(jMHTCGf%~q5bfI-ePs`^y#10G6#lMEP{cR|hKHxK&>pbKF9wVkU@2wJpZtTHUvKox5(L88AF|P`+k|ZNTE>f?S!E(G +s*|8_4t>Mo*Zgt8lWYE25;+Cp0y5%m)ryiwb?hSzQMbNVN2Mva68Xe)9bPcD0%vqal|OR45cV=H4Lvo +WX&OXN@CF(NvkpFHD?8-e*ptlRi41%O&gA#Z=<@PVF7b>Q*ghRd66>_fJPV@f3~AfR~NH05jdAl0%!@_i`YRzV{`A`WlZN_*o61t2sefUKKjrRlJJbNyuLO +VnwWOjV1q5Vi0hgzCQ%ZPiq;l`1y}}dJ*8KhTMRwbG*IUNj8WnbjT$?%zoAL*N&kZ|2i955RlpL|4K^ +bi36vnKp%NBp=*KuJIM?@{22%ON&qyAk-386UVTV2WqZ?UcG@InVPC&_i}T2I!)vA +XrL4n?;2`3E4g3eBkj3m30UuO1WG)SLCqy%&G){NLWePfxFvo79q!cxSUAI^Ot-xb0s5{jT%m4Gbko3 +Z-(<>|&Dd#HZ7KFWzlM52KB!6>V(aFM)6hXOlB1oj!;*;lEbeswlrpnyfS2>&8?!RIdEUj3Itx=b&T? +{{`g(cpkfX07fQ*C!r3z$r-zrWrT|uIGPQ-ESM6q#ST6pm!bFN!ApmE2)?;U71J9LKa54n#5Jh!yE$$F`P3+Z~&JaqgcyzIhdZ8E`);muV5dd|l-s*&`SQ|3l4N} +b#*0gaG;^Iq7TMcnV(%Q;`vL%tsEUP<#N9KuLO^*10X3!vCSZGLi)aT(-or=;`L6{OsAZcRywnCZP>z +D21UHYDtxbTIdSmB$ak}lYf(SD*hKA!Q?%$&nDfRYooF00iWvzr7AqGSR(X)T*k=tYacsx<6Us3MEk7 +duhKL}Cjp!ltbO9btJ>`6ftO#4va`F+Jue97|l=f#EMW5-(JG`=7*+yM%6Pk#&Obu5vL$U7_FyR?9}BExX5ZMMWaOQO2>J`x*97{HB>kO<8_`q<8X +*Rsf0d(U#pTJ|S3Z=6l`+9TKX^sZj&3oi0an^?tFd;6QsL$4=*?u>gQyd9(5>-*D$)UM{M;kh)VQ$TF +w@=~MnkqTBv9puuW??`wJY=zsWo%G$!l2W=vyS|wlBG{YY*)a0e2T8gBm^QK*C%l_7a36$Ji0AZ$qI7 +YjO}v~B}Hx$ECOzD!mEq$<1m={mUbEy85{D6g~pk8wIdON6T#hJPbua~o22Xone<|&G%3@gZ^**&A76 +1)NRAxGwg$tzdzOv*#gH6W$9N4-ril@3l~Xjyy}+w~MX#0O%;|{=Uxg#qG$-%a(M)^)4#y}~WJSMgk_ +cj)0MYCHi5Pj__u(rFXa`5%4juu6`Jhy%kBQ9KqmH=4jm&GhfMJ^{r&TSUWGb&~Of7v5+-Jj|yotKT$;Bv$|Y>FN;d?dUc!2~5v(H?ZKl>(J;iMvSwHdF5bQkB3bq3qNbhx=r_byrgb<^T5CXAUEWqq +o~NNH6?!!B#qNk<$qirJO81L(FyBR|Y(R1|w25BoDTqWDgGK*}0&PT6P!dIn9+GS#MoMQS2pqgED<79 +5gIk`Xu#yC!&|&ApRR{W?l~ZswMD&ZZMLci%^r!K58LO7enNoYAMJ%fvgbu*HqjWv +u_~nfax}@?d22(AGj>AN*$d-Yl5eJ%GKv4ptdHLC9@TbOO*GtQKqQ@fRy1zsRrzIz_j7aG__KxJ+C8X +TA*|V7LCM}2JXhuYCFG@S_2(Mktc~oRClW+Y*%Ot_gsn{jRv*KEzk%7R~VIYLXL%4Wt~?Pm*>pP$grM}yeonk@}@6N5NZ#m9B!$%{Z +7y`A<=NwqXctir1g4x>!Ec(#@$9)AHku3e&U%xZ-OT@;1|(0>|lH#xLcHp*%hXX@9abmN_r!^u~Gsb+ +FwRWiXiWn%_{W_sY586SQ7JwO`GJ7-L17YCctpLtvhyAOI*LD0d11$hSMqJ(td6fV-lgsSC=&KcHo^I +XOWflX_{n#oB}dR#xs=?^6^Dtrqp_*>1TXL#XI3fs_5h=kfQ*V27$l;IOB#2KR5Bp$KZ;-=IYt1Xxkd +49&j(JQa&%iX?;~hY`I1Bd+_lC*phu*H?z?tRoNs;e#-c-2)fj#VARUeN;D#sUVMCfOe`uAJIr8F{28c`?Fyz-dYp +GnnfA9YP7E+8G4vlLEpxa+61=Z8W7R|ZqMH_28ZTxES(-3$fh1WDXFuCM^&Ux4=tIZ=Z$G9`l4@1-)9 +@@HxKzOp(V@7Pgt0{}?|ok-|(qwac~3K&#YD^YsW@noX&;+)Jesv@*I$k9TBJri7`b73v3!fn*zF}tIQ3A%jywuswK~kHOX?4KLT{NcZd#N;HrS +NC9C&h5$_LicB*a;&DD +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 +zat%e(zyHduYMwh@ +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 +1Qhqo)r+E;k$X&U#a7zp9M^xyHEX^;y +Jq4q_yHXdxV<)rFyp*y^(&;>$cz+oX$XZEE{fLby$>wLA|VGZ-1-{22K>|q%@Kh#%Dz6|tE*Pxf2JwkK@ojzg-?2^S82__r|Uk>9)-=(q17`lOf`Es +{oWOLFQ!335kj*JHdH7CPYz|A_nhkNwPY2SXY&5(E8@G{dihDj&wz8ViZLFiDheAB +LGj`cBUGFnleoYua#4W!DSz4WJkQXF1w&HN9x~NVAH4IQ`f~?y!9sg)<7fShK<9a@`)a2GIA_M(;GA_m69q +4Rl^cx{fRfRzm@`B?)jK#Q%aB#2nsPS$Q|O9z5-8%o<-WqBC6eK$+p4d$ZFo$wl2!rFqa7bx!&TsJ-R +h^c$NGIj9u|`cA?DCWZ==7QyTpQmECCDXP@F@#m>N>zL!X6L7;&>$$7(CLAyVUmx1zw71JS_F2o=96}x6ZNqs@70?&J=FTNc=44eV^PPOEq< +Pg%CG#>gWVTO+Q8LU}ceQ?@b16h2TJKK|uQ!e2vO9EsnHzjw@Ln +0|g}USkg>)Dc?mvwFpe4%2Ya3;AA+d4)x$d3o04Y5VRB7c||-Mc&L4mdCV&>Z#uuQ(Y4=NGO4H05A96 +FypTr7)C14YNWgn8|b#`l+}gTI;%8m@%IV2bwo}WUYqEvHt0{+b^lewaV78v4oM|&4k6eRiz{3cwhFZ +M+kFXWm=BARlT3C|NADSdmu9UyH7MZwUe-8FfYy2LByLLC-1}B*q`kd0wnb|=X4bzi;jO3ZxBs!e(5k +c5vU%9zU8Ozlc;BD|+Rnw3&5K%u=85J=ZL#WPZccA2hF&wZCG@J&q~4wa$NSQG_J@8kLCj}W68;nlrk +4ku`#&r`&aG&G9>jS(JJ6DJCqENJR(J|liaIg*+#}EqpN1)BUcEE+V +}3dfKNUO=+Mle{)R9^Ru4=PqDAyO`7hDYA4@uE+nz`@vjn^)FN!b=BJG7kgged?hY8dk7mtu7sKJZ5j +#Hu`8GY~Brb|PAGdrn`ec8@lmR30BUmg_Y60H*us+RI@+`7cmQ0|XQR000O8i6!k!Dka?b&m8~&sCWP +X5&!@IaA|NaUv_0~WN&gWb7^=kaCxmgYjfi^lHc_!aGFY4+EsKj_9S_>-hK=J{g?P4gFo!G7lL#lE-pR2_&;;z)oT5Y7^42XZ?S>(KR<_$#S#QMT~CWHl15hr}0I3YiIJIx;{kXv=? +wu}GwktN{%VxTh8u91;}P6QN*JC8`8-9#`SI+!_ygT4r$o)k?y0Ll7O+`iFE<%t3@@==#|m`^TleixS?#pL35@sHWX=}1g}yP8k0uf^pYh +|SKg&Sq1{on4%qeLkIC{31R8=EdcWIGdf%Zh-8~B~_`2&8F8#?tD5w`2@+yhuPWe=Jyeh`Z&9}K)N3< +=VBtRCi9!w$>+1lTwHygUtL~LfrV2bd@;NDIEQ+s=hKUuG1LorV)`p2#Pz4i*%?*_)Fz*y4RhpDoLpZ +0KA-*a=|+6IJUg92=7%Y8H~DZj<;tLGCuft{`AD2j&L_W23F{K*U<(nDc@$qhO)(SeoWQ@6o7v?BHs< +8=;${xX5wvxFlOunbT~9}1GM`(Sird?GJtt8WjZMIa^C<5raxa#bCTk8IynPs*NDsw)! +^e^uix)~PCXwq4s>D(O7R%OGwGo#K@)5ki5aQ|Sd|S7y+9n2-W>sAueXdr;Vo;KrCBU3OL%M4Bhc3*^ +kHyWobL5h{xS=kGz|SjXLw+zN*N)jvYm#pPA8kZDBVOd>Gdqj&VY{?YC9JFn#mJCE>zaf5%D_?ztC_h0awq&SxEnU`I3Omulg +B4mbOVpW8rNCip=LI4j_u)!m&9=7+bQ(vdJHx$P7|Cs2K_(m2fIIH{_*dP_#f74+kdn-3Cv0?~f|9T8{+*#KGKOk}POmN6DKgEHDBrHgV{(~G04 +bmXrlvo-S^^6qakj6#u5Z=QGv#bQ`8n>$@IzHgpz&{%YqsZ=j@Z-Q^gE>Rk525EKI580Naon^(D(7@4$2L=iGDFr=l~r^dfYM4<36 +UACE7>pwy`uOq&CPD6>8s=Typ#Fy|H{4=AI+k$BynV4+eOGn+&NT8d@zv16bcfY1!1p<0nDc1#JbGWa +x=VMTAT_i|xj!l0yZJ2dyf_A@M3ga(!#&P1uE;6*JXMjckUrrh#yRlUs<94Bao+kNCxCmXc3bTT(Kw` +VG;bXymgmAhVCpH8rqI6r^wD-7`U;SsBX=i3V0-vJPx*utPkg(+NnaP@0cQOnkYC%LT(j>s@m;HG8^V +iycX0*gN16@VVc9yz8SkFgp_jR-<9y7 +vD7Pus-qSgNUD@f1eGpl72DFbc5o-X1X(?T)1sZxIpi@CZxnR1et&Zd|OPa&(1>8hYaSVsiW)Zy@Hf +W(0N~~6g$5VkS!`uhqW1x!BjQs20Ms4U|8r?=)OC#|&SUCDfDKRQUv#0aX^yM%Ox>~C9Yr*Q@MSt9f| +1~Zw99)q!T*&s;7j4zB%B}l{ ++%!0JvF#;N@F=6=L7zqhD?9k}pe{j}3amsAc2lH=vw|qkZwc*^IW(dz`Yd^JP?5Q{9p58!N@!4Dqccm$6+gD`T+>e5>=NDaQo;-I|2$_nYQ$f9J~Wo#^%g8978&HjXr_V +!Mm=@XTG}vvYXr-Q3Z$8Aq3s1xmhzHA@y06#`9Ecy?q*IC+5E_%4KrE!^2z!$3sXXmJXoKTa4;VqxTpo&9C?*d*n;snk@2bLP-mFWPU!oRb +|hO_MesB5ku|D*-Vv4g)5t|?2lS^`RD{30Edxpc;7>aV3wO~ax4*;UR3OcyNn35sl=v`P+63!_!P2{n +@T`c8VIs*lUmZxQU=k;u&S% +7b$8-zg%Y4FL~sF#qoRDef*Wx_Y593n_SO@vVLpKflhu4VkdDp1d%u1z@EMC0U_Ss9_0v5mqtxxi(dr +o3%*oGZ_{=Q-1OjQFVu;m=HF1oOZ2&;%08C{{X-kBu-%=-kURDR`&!bvvVm%`vP`huul<$sXzb~t3djBFNU50^D#*g`vA`rIBXBu@4YXX>F7NOFfb54HmP02=4WUVLx}9VfvCgs%F5_?!riJ5EN +h-$7+$LI2Yd?-0!v*3DH9>Hq%MDWaNoAV*?fh(hby7@picm4t-QuM?*Ac`5CV$skCN(YrPr2WgdQ@$>?e)x~${I~|-ANw~7u!L62&}F-6lcZdJyAXSXXyKUl@xt!iGc$HzR!*7b+IX1=IYGu9s(hpcp>!iOtRWSK*5pDi +;wJ`uiXQ3@oH#`)*I|J-hkCa>W-O;Sb&ywfkX2G77D#VvnYo(z@cSbuXVA^1^irC%}GQdsy=krG02dkiXv +nOtv50>X*W~G_;S*UbrXpfFaz~bWYUaQIb*&2@o0-5@uvo|_G*z3Ja8=;$h^?d9YZ|`{zTZj8?d7AH> +M9Oo1=M2~21r)P%CuZ}!-N{$4Wp3Uw2XAqUhjkZRIpWPew3(~ryVV^a_xRP^0d}@a?f_-&?hbsOpH0g +i{9&gvZ=m7^&c3)Ou=s+JdJ~4%D}A!rIO=mM&3fD1+THY)aQD(%!tB)BX1<=Qw@O*s^tLSGZF-w8)S5 +_a)!SHtc}mh((_BTbth*|6ckKndFp@#D0_rMS&p}~r;`Q +K|z2mel{Q5-&bEuPC3?71r5r{$L~qD3% +6qmAu%9+BVTAVjU)YcEf$m$tv&i{@mJq_OR!&_2(ZWa;XqjeHeC)LpMaNw@FR +!}HnKXyEHmq87d$Q!mB8ehC5GP<|2q%lJRBot1ncjn4sH=6tCb$!@;PQUO#fAtfL7nt=ey@ueMP(LUJ +Vy;f)6XLO?-IGYzyz`1h+3wXRXx)(mJZs_FQ_x7AfnZ~{R^IS#$30t~H2L-{xpgYgI>!P6DpuhlyN)C$ujCd>{NJxa +}Twf!;P2T4c5BU|{q;M*|~o84fKBK7TxD`lF*(tBGvq(G_G;@zn&aRh3wfT1Dd+OSuh)Uv)l`w +g~oWrKbI(#o6_(H)6z;=cGsP^(8nl!y6NvV|`&S$LTqqvu%kWLbTq43&(_@CnPfkRZ_|%3{goDv_fz1 +irDu#qd-vb9v_^;c}fS!`%7d!uA!2N+3k>R#~|T-kKhpS^!1(*wz3u-PD3S(bj}gMoSyaG)~#MKG^O9 +-YT*1nmYzcqW7Yo(w^%63+O$g|9RMyF$P{*HwIohMlyq84}XAY70cwov3=iO&>PMAv7>$sf^R3+E4G8 +p06QJGqpd!=2KP8G0B05mMjzfM+%hXf-I$IVj!Yptt9pz=9GU^Pd0`6>wrZ$Ul)jN +B~Dk#x8C2=k+EUbdpwK0YYLgV;Jy*4aj^jXn??7SJOx_2waO08=gHt^Tj9o425u=HOMKw|g;A+%J&VH +FTVbq4jimQzC{B&?jYwjl(PQPn`lUO-qq9rju^IgcgO)C0zh1y=tTnR4_#RVpwtA-$rjVn1zk$K)V@g +*r=9ISC*qjf$Y6pV7Pi07CC0=4NYXVku+Qj=`-&3|)a?#2V2|!&b#)+tz^w02Lg= +Op^sbqjfJg$pBx`|J(gzlf45v?wEiG!q8_dqq`W}@fBDT1&?mmZ6m-?P58K@wH=?KO#BB=K4P;>*|E- +`h67R`OZx^iH=-S$%S{a8x*dUv0lsX|ws#7NBQE;nd0oQTW{*6pLm1uYk7soUV;jA(YiDSPXLU#p^Nd +c(K@camaa!Q8Se)w#S>(P2_=Oy|jM_kk&E=4+cDxzmJyDYmv$TbhYTGti#Hnd)yJ!x8JspV&)`?!coj +&!{^XPwN)^9tis9U1Npke+?#(c4D(8qgA!ME?sMO)U0K^YkPaD@&7{7)G=f=e1_4oA@Qg7gq?)p0yT$ +Q@tP&!GR)hyHMk3u;x9Z=xZ}A>f+ogI%Bu?pt-QIdJ6@-PtqY00u!B0-!YjKAT*6A*J+NvIr55b&85U +Af_%+33iV$2vnS&z)YG>|IBP3UF2#Wd(!H{cqz2zyIb+&v3O@(yJp-uMHraNJNZ-)G%}-p4Wj}}Q0I2 +)tfcbf%TX+LtZ1it`W1WHtXh=uMtlk5dpl;&10(&WcHr7RI9OrU?lJd9)@(4lVB{FICiABFLEvAhpJj)R?!BfcY{R(2Vv|&{@1s+rYX)bDknsA2L<51LoH?dZx@ZV3OS?&ogi&h +>yg|As6E{Hf{G}IQfR{2|&0ZeUC2#6N=T__=Np`^7MbIg@97rq`o6qt?M#a}DmxQhM;N+;~mln8C+Oy=JM(pV@8iJ5^rLfpnD&&gfKJ>Nath~qsCsMbO +s;}{1q%=I<#RhEnc=18s0*LofNpFysRK4*j}TO6nda6RMSk4F|?04hW6p`hX&rTHVe0J2dX-Jw%B!S; +0`02Y|?NekN1iTBF&8}X+O1(IJY4- +^J_M_WCHMm3W0q5Hc2)Rx;vjEt%^h8|%6@G5wtUN!Hp{gh+k +xWWKnDrkIecbg`hfv7rI!jUv6pF0khe>SpZGpZK9WZb!EteD`pw@B(+_B{V`r0igk~_8>Io+Yx$y&&9nOymc%9CF4M?_^lc=bAw@-Eb?wPvf|<(JMkTPNwwPR!UUKuVeTSO{kMpveQz?_&LkL +e-wTWnLk#-=4Ep7P#y1iS2+{9~I$4lJQjL^=Lc?IIs~Znj!fH^_Iy@`6VxX9Cpd-AI?h6?}uf}#t5>M +*$gx8?RWM+VwvRpVDs2IkFvVe_Yt9$h$xgSTWVvFa`V>R;@%b2Y*u{n)`&F-8=mwuM4sB=jI=Pu%8*WdRGhcwm +Sod|KE8TocVpAPwfT&4xS?I1i?+NeHYUDx(K)-4PUhGzI=cs8h&a`oo1_VZ>evX(S0e}XiG +2%Hy-ch5nN*cj^96Nn_~AP!|%VE1i%J0 +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 +4rX +%4M<)PR*+X!1sY?I3m{x+q0tg^?Gi_vMlmOe~k7)fK1NdZy-G{!kWFU +oWYMH~jK*-M|y;MztQoMJyV=Ov;pU`ACw}i#1fWYhEgXxF+kKT6O+N#nOydcmA+;9Wctd0n)8w57LfT +8C|-oMgs0FkO)r~iy1jxoXyA?UY#voOqJ&TE=`nEaHh0XWm9KGS?6Jr@fm5|SnK=;c%`-;dhkyl-=Wc +xn!@%6|K{AT +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 +Rft5T_C-6A-xJKD{>4*jGimlTj22Ya +nE)zB^YL0nts2_ZW3Wk9+XU7ku9!|>#pp`ee)!R>o1@8O1eck)%+2M+2+hp9*a5n{G5CYQE3_umwqHk!cG!G7Qn|# +bh#QA#jh0-%s}Ael+_Xfw|-4U6Y3x%)+L$%q?{OI9#8Rqszj+^^`U^NL+h;?EIMO_5KG?O9KQH00008 +06;_WOt?`E57`I+04f^*03`qb0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%giZKk;ucko~o +j#YSkFnGR?oeTnYCtp}MC}TFLJDw^D3Zt6ifis70M^4qO(h0spnq_chBOX5X`h|F`AZ=uDfY%}v{I-R +*ger@oh(OD&8z@HZki{(vl3Rn1Jd@L$*0KmUj8TH)dp(esBA{~G?;Y|N?VtJSLDJJ@W$z1$Q$R|Vf}P +loGwn_R5`e+|cTrPngUWo}ix&A7A=5!1O4QIae`q1>?^1IBbT7OWI`{SJm?(1gHS-~3(>m@tJ-LlLtOIAIC*jZo@8VGxUrl0+ +??oUDYu_E@W=1Lka&H5cHH4gyk_X0lrbp7@UzW@I3pwY=-_K1)F6$k*dJ%jgW6)0JrpycczO7P34FJsphY3kiX`ox1HqyivMA9G*ZXD3@0Jb(y(hF>G) +(FoSOn<1#t2>1agk(P~lH>6BP338W>mi3{z+0_`SLS;Wv3cmj-CLx2c>_YO|MECe`Nr!cgJO$$ +pxHasZ2wNs|a)Jn>56ufYrF2rt!`(%y*z|E1P1fgt}vFy{4&#-K&p^3ChvkuA#W(G7oq) +K70j;LMJ8)b%7D6T1eAEY`?1k2!^YH}Z@Xh%G%6Y(g}PusaW)XORF&@v|T)i9@Yf>_J}|Y+GH#cy;)j2t}5Z4@t5)5KUTw25F@W~qirxiwGA9ta{_P +CQ83(~9q?OpOHnaEVM+8KLZ5Ucc3dHGncziGey7X(GcsM5!o*P;jonH9cWddiG2Ye8P=4h)@PvDnSli +YMvEsgO4y8xrT~hQ!M$|oe62>SYJ1I{%ta}UZrBito5ReL9g`!ehG^&ndQjO4n%~=g7<>BoeF+co +0DZswX+amT#?=A-PmqUl`w$caKoEQNF+ewdY_tvNaUvblIXaOcP)A|*{Xb1}n#3=;-4i4I +@li@vP2ttxBmOz(wSkZ1gSSnini&iNSOwcaR9KTmh}qScEFYi20Lmj1E^Z +Ljuz}tz##PviI9U8Fb6oRve4uReRFkj3xD(SMPtdm?xet1V|P8N*FSwL*9k7$YKv=CYdR<4mJh2j4*t +Kl@7mh;=H;u~epc{f$0!bj#>pqQg^oa-$!xen#j(;BmOto|3qUW=;|}*}gIUiE%`!IRqm4~~&EfYyq6 +`5mW@1E2l6ag9t7$y^fEWThr=^&9G4xu!nT~wi#M@(G*UH?`XFNIutthX`asu|L#eSdMOKlppu?#AqU +F+hNB1U>Nu_(>!hS%7f_5J5G<860Z1UVl?(ML?G-Dy@xu)!z4(CK+!ZJ2Eyp>0YWk1u+ZaANgMViq0| +QcTTr%wd#-`XF@c+4&h}9iHph6!k{!E6$`QW9Cc}rF5AT02Muh2p^ADx4u4+Uo_Gf!_LyjkkEZ`2ooq +ew{_6%x8=f7bc!`Id5*~5$|3nlijScQyU?AA=1hwg4}iR6{hOg|rrtD<%Gh;LV_8wNXG4_lyK`g)J@-U-X@`!LLDO0V0>Wz`_kTMAW5Pjq9}p&8lrsP$_ +HLdXt3LE1)XmXq<&JQzFO?u(KMo +V^ej20Hkmf2NWW(~v|DxG3pH5*$$+R)I-5fn(kF3)%&7H_dp66sx+x2)9T%YkjJ-tvb-~GXdK%QQ9g# +vBAQ)JeUj4@T@aCbh+`ft?lKRy$5J%Hllf)H#?T|Kk1zQdd%HvC9_s6q&d55ZHFdeUE=xijZq5c=krh +sTC%Pref?}(MkBIn#J!MI8u>lTPc9f-N8@6p8$Y`l+YOKbijXcus1DIZMNjH9)}l8lK#*}Ir<;cRNzQ9aCqJjeoCKf{#WJ6#j`~A +rnPrped+1SFY2RlOX}_?>0(lAL46x8wl`j+5A|6A7XOS*A0IloaPBb{62FFGi2mCzaU4AiLbYuNMd1-H=HF3nt@1p+`3H}dIO9KQH0000806;_WOcb +u6UFQG*0G|Q?03!eZ0B~t=FJE?LZe(wAFJob2Xk}w>Zgg^QY%h0mVQ_F|axQRrZIQjMgD?z*_dG?^2_ +#hZN(@)MbEoboH<%JB5M-OBPk(9nNeE@Z_W4ds4lTM~UR9$;29%~B9kRSD-ND@rjL!Znl4w1sKgx#v8 +qFRRLNw4GY?+YrLqJsc${VYP8zAayVD+NviPJhIK%=aA14d{E6B=TpWBanj0@m6pqDWfra+>>%>d!*m +19z_3wEQN5F01wJFkCOo&j-)ov7Zg!VvCHaWr=8CT^!pro2U*z6jLaJ90J>`=2t487S@920O9KQH000080Ei{+Oc}qpFgE}I09F7104o3h0B~t=FJE +?LZe(wAFJob2Xk}w>Zgg^QY%gPBV`yb_FJE72ZfSI1UoLQYODoFHRnSYz%t?(;PE5{7RmjXO$S*2Ua0 +7}sg9Q|n74q^66S>mBDvMH6GK*1_27!c7)dB!eO9KQH0000806;_WO!CPQ!4U=k08tPC04)Fj0B~t=F +JE?LZe(wAFJob2Xk}w>Zgg^QY%gPBV`yb_FJ@_MWnW`qV`ybAaCwziZExE)5dQ98!MPtMcZL#lTL%OP +up~`@0I3b6+0vpY1X?;ptR+$)sW=|`<9A0=Z&uQ7{$hzo-pg~(9Z#aFmA0(lrYOZ`Cj6^1vs|l+S$MK +L&1)9cGsr;NnHR=!%F_Z`**Q0GK?|K!Nvl;^f^N4s@kO^hn_0a-nKArbi4s=IUa3ZAms%@5gQpZ~%T~ +Msx8V1^V)gz_{PFoS?36{ksZ>F`LaY$XQ|_Z8RjR2AS-%un^^VUZVOX%PW<^qP1`jOv!T3c3 +fI!6?41k!4|?WI<;g*G1A0@WkQA>?ht8mdh(J#81zV)c%9teu2(moX2F14y12bOyJO${%jL(58@3Z=$ +#O1ACUUd|&J^RN2A=I1JPBisv%K@Rf;NB7dGlJr?zKB+;yxHtLn`vUcYgyZZw!!*Ha?IBkwG!H&MbvM +@|qjN@CdF2Wlo}c=i))6-%ekMtBv}dVp3U_W9rq8nSE6Xxi#cKt>F=Ag`riTB&sI%Z?_aQZe!V)o{q(XuFK?}#L$0*Tf(uDCIuLJ=w+u=^+Ho1kL2x-&TqcDHsxVpFC$OtF`k_$`m3 +r*!VBut;?xuy*AAQB{T6R{Au`aF7gO;os$~zbwm0UWJZO$_4;xcFg*I%5i4WM3OAd4|eT`@IQl;R)M!b+8H +LmE(-DO6Kt!+P~zkee;vaT_uPs@kOx0m3()ZZYssV43eDgxj!d5r5j|HBGPv+h|GW^30#ikchj@d@&m +&dYIKS8RAqa){};eQSYzGDay#zJL+}ZCthv7LTZO>N=s#sOxdFMfMCM@o0il`s9n1YAnI-k9IO~dwe`n(XRh7T*nk9C`%}Frz^}zFQTQy`9 +Bb}Zihl29;aMVInZXus9wQP)T7?v#Qx@GoI8hXO$+g=vxW(Ha#wf5tPs3ahjfC`@&*!7H)%x!8gk2-6b%tXFmI^^c +b=wPBSi+xhH?^s-L>Ky_;1v1Efj79+?P@iRwj4UUcqYjMC?X&IAa#H=9$P( +N*P%;8ejer;c;Rj$ivfEJo2)C@qYe^IYM +MBEDe=){RL!-YNDsbq(g?;H#P--^X9kcDGpl~i@1QNOgwtVT)#iLv?k8cbUeRkKC9OrtBkOOatcV?XR60i +VNuKaFB(d`iq`^HP_Zbh?jTd_kTY5{mX*=!an=gFVEa3HMd3lRS6G6PlqLY?Gz5M!u}Mn+QNPS6}i!R +MtG9+^J2>2;AdXMG>b&T`tt2)^4)OIjs1Blk3J4FjAO|jsaO9foIyU{^DWN +denf%3X2MYaa^MIy&cT2OOwp5UDDM?P_dwl8um&FgA}XX#n~U_|@a?K1>^3CRQaBe? +oXfxUh6MreQ>)19-RGdR}%PhW;amj<5|5RIZDV@UPpO*rVh6P^Q4o9o>u^&U^0t)T(#?2oU0R@R{yE^ +Aq%oeDfi +Zgg^QY%gPBV`yb_FLGsMX>(s=VPj}zE^v8ulEH4nAPk1@JcZX&B4s?lq+YhmPCHE688L7=Gzt+WZTI# +wNlH?w<&@a|etsMGDIP(oe#~P+rNAABm@-&*a^zwVqAvwjXUy)1HNE`L*})A`oiNy#q|xRFO$<3jKmS +~rS55d<0zwGmH4%KGbu@*VnrvT$06rFbw&jA$N;QPO?|@YUr(roIC`%0XQ)=Z7m>1+1|29NIZZfQ(EQ +O_HMQMw6aMFIn4)8L#gtY&N0XKTChY<5MyT)(aNt!QN#M)Ygp754ggt(vU*K?h;9J2}W+_aBx!OMJ)3 +%OYYWR6*TMdd{-HEmm6)Q&BBM(@sRRbPs3XJtIWX4XQ +vwL0)_i+@l{0|XQR000O8Ktu6Nt;|*(JpcdzKL7v#9{>OVaA|NaUv_0~WN&gWV`Xx5X=Z6JUtei%X>? +y-E^v8EE6UGR&`ZuQN>#|rEyyn_Q7F$yElSl<$j?cM2Q#_2;^WIwi;6Sz^Wx(bY!#G@3=A#w3{3P4&6 +KzRP)h>@6aWAK2mrTv?M#C!+QBCP001cf0018V003}la4%nWWo~3|axY_La&&2CX)j-2ZDDC{Utcb8c +}pwG&s9iHEh@=O%T&nBEyyn_Q7F$yElTAoD9X$$(EzhGG&Q*ZP)h>@6aWAK2mnAs@l2R(-T^Z;0sto( +1OOfY003}la4%nWWo~3|axY_La&&2CX)j}8V`Xx5E^uXS%)MEYo6Nca_^Dza2jp-k$&2`rnS$f4v`t{^z%IALMb^{kzQ%eh`R6LBSYG(Kx|SFh!CK3= +=4fgF31}e3P$EM1GV_&~G$?E)p&<8>HcKiCGT%V!F>Y~Ky>|oF0L1haWVi8N^t}3q=)+n +2-%cYvlv9&3RQ5&GUYanU&3yP<~&Fex`97TaWzSU_>4%t1S0Mk<)7DstzFK-7_Q!IXNY*oxN;yFP#*; +pE2;wZ3$Du|<+vje0GoDT{oPzVarSK(5oO5w=Q?Cz~o&t!|8q#DH_4W3}@`d%ElZ6Grlr-Y*!ozW>AS?>GG=Qge{>6Nri<+zLYyXV>w>iN0uK +g{&g3%K7npQM&Um2Q)M{POQ|~faVx3RB9bR@p7|En*$Xg=^KSAxyI$rzql67_$Xf`h0os10A{qgvmcA +Rz!k+Uh{7AaFhtR0*K=S@U}_ai#eY2mj!$U;edzO`6%CHtXf(uRQcbOz$+|P^f)Gw@s)8q3&h;ETQY4!&&^+}jwkW1?AGL8l1SP*e&d`)2S2NONK2TQ!DdZkv1$5Iq8}oM6sRFN8-ZR +TQiXu7Pe%@sM3FC99A3{mCN+J~@jMkD;v+T(*xSMK3k)zu}!r1C@lJhmKQPV_taDYCZbMlmL%;CCIF1 +scz6TYIR>IAWYXm|P$-4o(|kc%Sb$oW2wqt{dWX&1K=g6@asb$hMw$0&JY8F9DFvznDNRj%bnkg$L7# +I7_jm&Z`VW4zdS;P&h=Pn^Mut;&%^ZZ(W)t@VZs6Q+B{yotF&wxt0)VCyD}V}m&4Zsgb|0K}EV(*VbX{3CKknO +=VxI$^(bm_kK#I-j06p<28E-2Yrj)_e0;WkM3Ol;ExAS(zRX||r6tA#u72;WI)mQ5L2=-_H5Re +?Sit9u3tmk`6PR>q`-SfS8aMKFj-r{wZt`PP%1Z9&;y;-+U%{%vTcS+)d&efO1Ey@SfnPr>_X8YWxD! +YOI}NSFzaAHw!Jb$07u*tO;>u}*GgDc%k{d2c9(If8h`z09ZEV>i@INNnYs(YKTOtns}79 +|-zpria6tZpw0#)sQFBd~kz$Wowe3 +(i30dG|vtq%lb#|Ch#0onQz2stJ5zy0uK}T6ud!L=!yZG3o>!61?U5Su$hhC>f)l5>Q=QbgUL4F`qLfmmHyU%L!o{iP;Cl$;s(7xZS(T99V()XcxGDOgM+I~hYC +~@*yMHAvnt90>!jc{!PCgSj6*!gwG3fp1y>oCU|c01@}I%+Gd5P9WM0RyE^*(Wj@-T%^}_>~TWANbog +qj=9m{56*U)4(&_N{zrq$k=3oUKW0oNZZft7bs_b8Nts_rV>dR2SCulV%{p$sx=T*KMgT|TV@bN}c%n +?E4O>Yyp|irjlQ7rShG7@4xuLkjf7O$f&j4)M)C`p+{|cPlJo1UBW0&#ARCguIg}MqWij!mFA$Mi84kg&?>+4H+SfTw3u@@}9QaHAQy4q8j>SuOjo(x;ZIM?KkY(sSnC5{B~-x3NXuWeB5+dl7)Vk)wgeK-(Bk_>m~qUG6ul#qxt{-rrg4REP(jEL$m4I?w +b~O;AJY-{}KMLZwSLM-+pQFpWmdq`R2d%JIB$tzKy@tw{rRgg8y$G=Lga+P1=8RjGyTM3X>#_lMIPc3 +{IgK0;2?uQWQ3NOM +I$k;I0_{8#GAY%b_prYj{0Yo*iA&D2I2$ym|9jIVKq2O}}I9@;lld?aH2f`-SnXB9^^3;p6swT3)oRR9;Fbtjc%nHm1nc0H +Xl2>Na|YRXZMY7XPTMp0D}-%#KI1AQb6Rezb!QJhuxfwO?q6Q8AMuOGqRGz^+R2;^<)V)k;NX`e0j(h +RF#ZEaddw$(uA4wbpaBSrOFK+S*wlm$@QwlkXtc@K&TcYEO||R=%TM!M{(yf4Ims>Hyo_p=etybYrW| +@6y{80bLPal;vG{&sxr6s_9MYY!RAS`X4uNxqr}q=LY_`gn#n}F82@m@7%!Gr|{pofy@1a-frN}wCkU +;F106b(t(aS+TT`m0BP8fS*c}Ha>`(?S=3m&dZ9OnL}#TJijFQ~R94A4;d<#{h;jmEq2Li9q9q?!8QM +YnO1j+Turf7(_|h&2c~*2ZiJW}n{!~==vWKONnsrAdwfy8Zw7A>x1nTb4a0+_4hlzY3raMR+ +^rPt-cI!Zj~Cm!Rivba+v6jmWyRsiWCyv!JYek(ogZt=e;!EP_cL`gcZ7S-VS>ms#*r=;{795)5pi9- +HFl;$hb@6?yW{BeP*!DxO@wc>%lth(5skAm`2Cqbh3f-dP3zw9Z>SkV=p>!4_X3Xci;G39eW0B#8LdP +^ck`(;Z!V3yEYl*Z>=`r_yK_e($x)KxXYAoz)ff_F?%9PrqD)H94bQ{FH4g^WMne>rK0Q3);=r6E^p= +H;*>^STWZ63H)_8waBTMmlXzk%cK9zFI;fxm5xOeru^8>58QfjdWlaa$#-)812uIaOU-PQf6t13gc41 +4N`fP$G2em*2Kv_zWqlD9*VC0R%U+ikN@?90(|c8uvCeoUs%cig~R( +GBcG3+nz+jP>f5XPa~$?fypWA&-2CFBGdKy842r{Faf>)!3~}t`d}HWhKL8Yu$xRFh2eC=0#YqqF4Ti +tO{ny3=u~-rtm|To^Ku7?qSln}BM7C!Ra9iW=_3~y|& +$U8#W?#fGsr+az42Tlox6W98VlpV5S+?j0t0h3$)2TTG~v-@bfLqbgNgUSZj`qmi0;t0@w{D8uJ@oPP +;3~$CAx>RNExyC&}@l{$W|!l9x +_<#vVpS3m*YXcBeXcz$1T!h ++jd>fA5)w#JEXSuX{7g9^^c?vV +~lFs@1fa2#+LNlwltV6zjdR2az*7A)SN7>==LtM1eg+nj5-ohUYj#Rb@x#sNL4u{iTKM@Dg(A&;X=G2 +;OuVLECP=)^NahMw<%!=S8JH49hedTt_U9MytsAp(fU!wR{+s~M0^Q)EFT*wx@Z$4RK=kMh8N=(e##p +VZ{&@hy)W?JYRFSe@l+SQ&KT?;A1DhZAGRXAU-G_St2-Ue9thsjfS=aC(>h%7_$RY +)|L|C`bH2Jw|5bj%4gdTFHbL@R(8Db-h=yQTFhabID9n=i2LzZmRHhn#?smRtW|k*0F{x+Go@2(OWeD +i%XcHL!xJ{mQgB-O64oN8RbS`!Y6j6g&YanZCg>*^)8li>zSmNK(mXuBEJeaw)C$DyGJ>g#3Mh3osn> +FMJTCm4vUj{L@k<%Xy*9{%F<|r&bSFrn+TwOP3IJvUZ!zx?vOz^I5c>eNmPE!vGYuf$0NPnp9GPH1_6 +ku+h6y?Bj)&EciP(>wSodqKk!Po%HzhZ_^nK@LOMP(@lBId$-}M`uVC};F7QMWraNA1(Kra;RFUl9^j +wP#lt`o>_2s2dZ91JT<6?{dI^p2_vdgL(03<&Jar0&lynOrPr(*!Ve;odW6a0HUe8Bc^TYrXW3?m4fM +5wP&8sHm{{|vr}Xa>LTn9e&ejhCvS4x; +`MCcX=?vn#{$4Y5=p^c40@{eri%b+FHT_xF&dmD%CC|m< +sY%sLYyKEQN!UzXjhvV((|m8pWK|zXvF+-8I+(V0M@Zx|lyg0RZ0iKb>6=GcdV*gb6O6FAu;x;Q@^f* +>3>*7K9i6hKSv(Vn6L0s1gvDHr(XAc#j=`iBVL6=6fO2k>fm3Iy#YK^1OlMYICX;Tkz$0ejpGhV +#7NFjl{PwxT3P&0&(CYQ{OTk4EXd0ZvX^SQU2_XK_B+mlEuL4yd+5Ik&qd~7Zs`2P|BRb^2#0=1~r*O +6b?A4>(c7!@6Qz)n+ysu*TPh&ROg?ich`(-cz{LEsn6LpvH1p*o&rZBeWC6=RMy3HJMXpCQS~sXfg2n0xoV@rP|y?_ts58x8XEIk1w3Q&v)mP1QW98{oxr#pdsOqN6}pn5R +?hv?E#l57%q5s?67kz_+h%bB7#m;4o7C*#FK2MRUz7p;r{2n#kesKYE$7r-r$vnc2U{iE*GUb>U~Ks4 +@4FH7K_zo3~3z|4X^i%{J$ijUb{x0G?0v&DC*Xi3H8yX$J>k!()^fCosC49nuVFfD_FJ)V(7eca +e<`WRv2pQHB+GH<#S4^BdAZpP+8hP>T$jj{xcb(*0UC1oO{GXTjD8NdkNR4t4P7VM@Gu_J$q%5kW`39 +1R49W7!g$nm{r}KqC6{FEIG&z8LNm25{MX&hQGoFDMB8Ef_o`n4F&~I%UO!c}vam*+E-sYy}!cR@o7q +J2DW>qkHE|HMty!!Xcvk8QRh0plF*@sDFw`)AK9_MO^_bpD +v{r>mAH^L>5wofU<^2N&{TvlvON4=gDO%lpU+F`)TQ;rP6ztwZ)OV0>{q_^@!D(D7Uwp%LwGDAs9#NI +hl^65%s8ou83D0D4x*gzwxvWt6e|d_37V`@)3q9f5s}&$_bfG(H%esoy>+YE?!SW5JMdfcQ7j+dxDYxsg$(IH|3ODqY19{XCoA< +086Hh^K4&+KxvqgF}7g&tZDJ)p#$jWVKRGhwZ!_4RMyat+tCQ_B5_DM#8z~(BD*(C48v56(@zQd*njo +yDMQAchgI+Ksz%$J>tyqn(BYs_Ct +1eeVAsNAruV{ZB{o6Qe*#oFriy{nF9~($as$v*T#V{f?p~qYi$Bp0Q}j0B6tz#}@{Y{7x(f*t=OAP_N +u=Y{|T)@g?Ui0&+Hd8Or!Oy8u4`B7ifCWKNjhPz&mn!VNeBAP;!5B*2B_!Xo@=Nr?mO1df-ZF}0-Z0r +^dZ3)6^SGy@22&~|a<$t6t?$aOSWv^t<16u6>zgNJ{l7R8bZj#b~qvf*^P{ToZW6@JEM$hOr{%313Jn ++5B;JNrGtyZFA}gSOkBZEom?&#k7u3;sAn4k*R|{#?OiR(!X*fh@g%V?f#_@5#E$tm!~+*6l(gyieBc +ke)&1LoRkI-+q96@#FaSY`+p(eC^-a+V8vtRZVfyW^j^Rh1K%KTfUb;n)xam(t!O10c=w>yg_0=5CHj +MZ@&lmRUq#nZFnayGlxZ3*k67&mY+JpnTlM_-|cNMI&X2Lc`l339MJpD61ld)LF?yudiL`ECskn4PuB +nUPi9FCds&$al +dj#91SdZeg^>vl!lPZ`AELUBo2SR3$ry5+QH&g8?LSli?(mPo4Esx1)rD|D;nw>s6cRdn)Ewf#tXr%d4F)i>t}CNO$AeP7Exz?a`InO1C1Igj>hf2znG~S%a?~aGB6On_? +ZcQ;c5O3Tq=34EL_-LE5D$V=%BBA5qdiC;%&T>l?%hcBFk~?AY5C;&O`9R)bJr^0e?H|UnTND?^cD02 +>gHyYP#5W|8UvN&1E|1i0tQm_q-v>S@qW5X_`E)u(_6z +XbZn<@W35oRk-UoWu&7q4@z;?LMv`3uGx{7-iLswFxMEjaz{x!8~rTVJ8H5`|4E>BgZ4hUqwaKU2zjg ++hVWQ76e{R9?VOPh>OS305aZ|}Utq>_|7dShqpvY$joz?F8^gmcltnZ*&kmLec0Yw$t5*1Ri(cR&Djv +PMT0PfL+>_Gz5$WlPzq#VWI+V0jnd4cH1+9}$C)PTWH{}%OC`-}E1MaqckEXqT+`7-yKq?4+Ms6th^K +%VEJtme{yEWHWV(m0K{jVqD$Mu^5@Rk$*zW(c@@C)AYFE#j{X#bbWKM?^O$Ehz#Kte4Ua(=Kxw}Bc5d +LEA#FsG{T9V)yaeKO$)mSf~{hm0l44SEos-S;Lod2aP=lI +V~2lSq7=BS+h;dE#QYCk{p)H@jnRId0S1Lx1jp^s$w*P5@t5uQcc!SiN;ffz2#@Jw|)R}AN7hntz#To65=E#SGQ)Q|c +O$xHR-J3wtLx|hoAd8JzsodYXquX4TqCjgj!%`4o$IKZNL2-iL8qJCJ%Zl7WBLq4O+OAK_U<9W3 ++bWm{jb+A>)vzF+IyyHSt9E(A_u9yg@y)kZb{f>kE_RbA-4@^ACRv{=3Sz4dhM^KozU){Q89>3BZH{5 +>o8$_=^@ls=F5*jU}T_Fmloy@5skPY$PTZ?IOh%1JP@|@Cp +9E_glB@88_|U0+&Cu`3t^$uK!2(8YoDTSn`l)Fgv4*Aj4j{Np<2q{z(5$%U!n`pa_B2<8Y +31>2moZx}X{Mvf-1L=^niFF%YTvD|Z{<9`Z-`TJjfkLHIwp*U~TU^=nFp{xGMGtR2 +wnN;bC72na@ALYbn1fY89W()u*d?9$&4ea?DH{y)htP!+D&`&#TV(6{mx5P-jq|iC?{~Q_MQ#dKA(?0o8&wAYH11g%(|fS&v6}5`LO849VC3P82djjB^_DVZju=f +_mz;Mj13$fRpeTTPPW)))RX+aoa#^rPs-eRU>s#5?(g;|s$xI*VR1U9o#CT_K5zD>6yrD(dFosqgDdY +N_t=xL$Tuv%Zi%e(?KDQ8ayh(w`!-s+vB@+Hw|ZgOJfD6jD2M>jU+AyWZr7PHZLda6x=wZC)cGq$2vz +Hsy64$Mf#IHc+b5{cD>^@jdcwf4d%_>OzHvo~{T+*$Jj&VIFt1h{WymQdDH!k$?~|B~|k^%6{B-T7ja +x(DmUnT){LlMv%R|-}y`6pyQUyU8n9;nwV6ae)0xQREIqtAk3XY+>8D!)|uONRiR^i>KhHrZ6n@=x>) +v(G>cup$5S5h1D;rQlXlJ%lMl*Na(Nv{XJkjATe;cdwSCWf!RaE8wYRbfg?dl~c0cqHf;T +j`C(hUpwvMdCQ^{rHfpU3gs?f!3{{+qLh;k(sgcc#<8LNeGP_f|p|rpmp@SA+LL2KJeLpTKS80-`7u&4*i7bsmQ8sUX7HS^gDx +{+^zT!+}5~a{54T)NAU-KJssP;IvJAFTofaOeE+6bc}lN(E74+G#Bq)&<*exGa{@RGJe!=HA$n8#?vt +5Um+J{eh?XA5ZhSn+#D$b0zg7|@IO!FA`2I7RR+x7{M5Ah+<(iqxP(G5o6SX#FjFLh_w46XaiGC*BIC +GwE5UaV{^}g#;emC6pIdygY&OV=qdbc$aEfA7Yuy1y@(#^c-U5l2YDwwQ?-~dr)t>GE!XV0r}>m)^3f +AB}Npl%n|LzVfk{ +p)I+{PI58dS~v{zVwCoi(4V#S4b!Wmyw80|SJ3nBDw&?EMI?pYMiIVi=(cHuqPtAEgFG!Z#hvTCWx)G +}6&>7F)SyY8T%m%rcc7v+;``%>+y%Tr!`YMJ_(2z@Z>|f01QK_e*K^8H`e2)Rw@UXKj2;xJ5LB+Z9@L +D1L}Q&aZMh#4^>(Rzxsfwt&D<($98MWB-Y);ma$@Lj-WZn9UIWO +rJhNYT2}E5wbT0XoiN)UA|0KqT&B1J#dUiK4p>fGCedHv{v$K0NDf +qp8dbpzy+tjXxAAZp56ol7NaiFut3|6Q_#{#$hEt5*M%FnvS+NSQEv$u|q=*8+BOQLRk8nAw1hgy@p< +1xo0}k6+T##;M8Df-g@4;;MOpS);U +QM%XInaOlSxfzG>sN`q4#k-4zN`dQDRV`E1gOC5p6rSf$M6m<%s);dO7M~L8KALnUw<@p8^uQV_N)pI +Q?SzN^W`L^%^srQq%`_BtkRmrQPk!$LWaHGP5Kgbv0+nkR+`DTS2HCxn4DGc<`s99|pNn3Oxk!lPAjO +5f<+>r>U24N`}Y%x;{LZBZ-IcZW}!yHwbD6c1TP;UO9(x@|xCn4|_LEl&gDThKnnCs(6HaNcq6ZuDGo +jRv6B~xwTt=JV0%Xd%Zz|SuMag0<31k(Xs= +xwTlF6f6K4mmz07-sXYSqQX-3VpvAeWsJhCmF=e|Il6TFg>Qz!8Ly_j>{1gHZkX`q)YP&d5TxFR-tMI +~2HgHmjfeU=J7w@4NHIh@)-1}o~$K%~Hun-dDBzH3q#G_5ZsgU(}_r2KK-IcZ*!4h26mqhHs7S+B8`m +TR;?JKWI$3W6lnwaE8El}a;uF*@kVvbW1)9zv1b>GyqS5~}9urLohpGotsF7worfkFBfRU0-c;Pg#c0 +a4juWopMg=5CB!06fJlbSa(ggDR}VCk4HFN%KPwijvRvrB*igf!fkh@$ +mtF9WwSXwmBYOzu|4qSR$0-U{ulVt0YlQEA&jq)F^2dWOO^NB0(M#`LFV@~ +z`{N{QV2yMq{=Q%5^=H?^e{>u@Yg-)x?5H0(!^iscf}4~)@AW$|k +>VruhIo6i!YT6{Gf!C-$zXWLD3?`#G9N0E+%dsO8%RotMC-TozOja#x(3Zg%Hf(-72J8Tkqu@$)_9xO +%``tIm+bqgW(30xwVi{?+j9;1>3Z9pbaOl!0i`$R`z})VJ^T!~{qB^Aw{U-du!wTK!F+u|go#G#1Y_u +&=|VhaM*EoGh6Bg;ruJ%K7a`DK~w$v!NrOX_iApk{p@ARtk5up+)usO)AcLSZKE*+PGY+8 +XE0gdz<(tV~^n+_2gN$nr*w|_{{HhHmdhdtXzzII>qd7$za;@g4kpVhGFFw$+itjC3@nsQFfB^-sJ@w)ZjDEf65WFl#U; +uR^H*~nPUScKwEC2tsHUUMKEDI)CaxgG-*%&B>7o&^(U5I3%aQ?!rKvjZRVmGkA?0P^)%VLEf*u?Q-u +qDWnJi)x8B+P4HBHw?7d*H>8Baqj+#b~KUVavIfos$qSnm>j}>LmrUeta-8UBo@aG~hM&Ja8+=l8_4< +dS6+`0@pxa&@@eD+YeqO+C^#VrubC(@2L%yU6r$U=61o&Shf`)-WHWDK?-SEjkiSQtyFilIY71hd-lS +(6;tG%UXr8uP^l{kbaHA!*(q +6V4Ti_y8-X*FPPD5)LN6}d!`koF9-`-Ogi8iNwx<%5pSX|PRf?n}0cCu%D-afl6?bmiWL^gDJILP5ld +8t%Q_W{L>ezQIx6#AHrOap^SRGE$!Yx? +(|T?;$kCds>V2&OvU*q61-`2Htt`i-N#m@^t>6xN&h-8yS?TdSw5(jhrS+hd!~Pz}mX}@R8skQdqPmq +fbkRDm%1qj;tUR~!cI2Lke*jP(lim&$i8bE+yx-o}*_6L7GJsyGmp@S$-99Sn=`;=NP*CI93RWCGq_~ +y{-Tc=V3i=4fxNC_^+%e=2MT2Y3*;wCi?%pzoLA_Q}r)E}gax84Oe%NeRoixl9>(U7gXy(r?3>$6esFS{;{*R2DKqU +hunFr?Ht@-RHS*_U-<%Tf-xBb7f`RdQl;@5kx&Pm03}Yw|B<)dKqCO&=XFf1G#chl1Pr1`*0X6TDCl~ +Iu&}sp+0c@(Hda(h%UQquxn|=V_`?00<_ZH +2+vbF$cUeOeMSyBK1jHVXLzz-LZzN{gC!QQe#Y_LRDqOaGq1F!&10S*E@1AquXE+Q9yB4U=H3W>i=3u +O6Cz90~k02qyzY=GYYTSP5EdLMqJBSZ_hqSO*L0_7Aq8MEyCy5uN?uhnwY;w=!#Vr?whi~f?wfWN#2^ +yO46kOnUc4wh|vK>a`Om!rPc7CioBHBi4`*jCTQ0Q!ii^XzaouwA+2rG*)%c|hFzvOO;e$)7e?1@n7k +dd^q{*sf5GdVu8j!~ubmgaAdJ7nyz~-G5qkeSPTAux_b?B +xn##QV(aZul+Vv36;sN@c&}hKQr(J1NRV=VCX2*1*q|S`4^v7+biaqHUsmf3dxJAI{%z*cR6z=_&@49;L`rEj|}v4svW`J5~IiCJ9-^Q&9 +KhLXAvmr;77x`S;^e$NU#TzCcDT|YDd+3AL2Se0`sVLJ|mV#PiRnGWga;_CU_`@!#J6JGfF-M+q?SAw +;I{zT8ej%ot>zeb2`NkrmmkU?q~VVINi{Es&<@w<&$mHtn*p0+6=+B7un$lF&iGcE#X}lRFU|)2&1Zt +I~?*-&7qar7gzOIk7QaUFwQ)^n_6C<+}dvXQ)}(X74~Rn$3vJo*J`QqQ~aT}ZY*33s5w?KvrWl7q)(^ +?W({^~4g`H9B(0ncVNfgvBmcr8%jt?9dacQRe|ahk{ +Mj2fFy4YBvZx_xvTN4XQbDugs)F>q(10=sSh)%YtYs&f>M;r<&qTzi +i)^zr8O^?wyyP;U~1b96xVEVE=fCCL#~3VbC5dTnl?ym9KELWy!U&Bq2Ri%tiL`&bW +bb%D{Rk6qcnZt@F`|9^Oz56u7N6hH4{LlZDck +___|<^wEUHnt^~UxS1<-9T#`CsWYMt8<~GSDgqI&kdLbC#luJ6vD=(2u7KOWvnOYX +&gR?F>>B7s#z~n1wkiz~LUVs5$aEI*2J~quo&%WT=0Qc9w;64wTrg%}g@I(FSmTN!lN-CE8{ZFv{(+( +@2Gs>agr<9Am%70JiC_i`nFLvTf`qyamOtmj|@ZN=YD>pN0lZHk@ +mBRYFjR_?FoT9!_wMRX_sqQ?hs4$lZ9v;(N7Tj!h#`xKH^(s&8+=#p=-C>1Z$78aa?Z=Vgc60@Kl(-F +mwS~aci(LD=#A{>*a6W`c#c&yvI1&x73mIg9zi~63W;6@ZKcjwADm;-Gf_d~ZP!sBswex9zPzVh{cc= +zXVg|`52hS&lhPP(V;2X9G`-GaL>f+y|egz(GKlLeAzmb+$B9c_&voEP{8h>Nj(2p(@JdOhFT^HN>r< ++HxLVfkbG17_6&X&2MBOJ?e*C&N_!dEyr0trngT??Y#>AIcr7f4nd5W&^{<+IUb0ke;Z2Ncu +cExqAGI#k#(B--jMo7_M^eC^`WIf?aAU@k-2|oW`aJZrhj*4fzj5KW$+TIgT +U|oI)qQ`HqjLczH^s}DvQ8wWz?|rLbQ|$e;tXD9gX!|#Ro>R}O1sM}bzH%bUW?S4=Jn(m9FEL6p&^QA +%*Rcm*cpL?-g9n!Umn`?+Rh?+xYkX> +-MyfyFw=Q|E&@ol;o!wNSTnQ^T+`4f$7_lZeZYX1j4^L2~t7O)W)()Ug>b9m*%A`?E*PftAP9Ar=+xZ +0FPR%Uv8PVS_N}b^4+B&Y|MlBw?1C5g6k=gdxCfn+&Y|H*p$@|kz0J`yf^M@Gq^OCO~w}j-k`*1yF7G +_bZn-RB0*RtatI^T43^>=n%{FPe0vOIpJYX6+^{kF~T=-V%OAt?PNcOzc=1X97WR5PKM{eqUn3v}^B{ +BYq~pac$In?=AIH29Lc0fvP6i?tFa%kl~Qm1Kek%O*nsx-6hXUmG0J@ZzF?vmwkvwy1EEP`}}BG_ja9 +(QC)Thw!tsMd5#G++L=qu&`IA-`dgcGkdBQLv%qF!G)ge@!)&{CgRmXL(_;@8mRAGuq%paAi +GcO#zDi!ZBLBlOev_53tL{_rM#`dXgyQyuBYclV@f{zkR5*OwaTfL1Bk$L7GG*+sT<8Izh +<7leG;oJmy+&o1hiwS$w&dza*JGTZhN5oXG(PYEP2{ZFlHE^w%s}|R@BhQ?I_$abtg;fYqa)Fe@zg8_ +}u48U3o?M4A*_xHrs8D4Bh3nesqDKJp3JXE4_l)?%;Mn_iEvNo0VLmlnIq-#s(^5l?RG~NcCxOz%9L# +Ixz*ZY&d4Fsb-YZe9@Xb>YDs>+knT+FRTBim@YMpHc!Jcbal8%#%GO?ZOKqsJ6l&&R7k)vaW>kCHl_> +&98p_2g`?kJHwf3eSv*>rI_OOXrqpO!_d?G~Qp~;C^!nYYWv=Xi!&AkEu~Q7t_RPd+@Qjj38}~mRu`p +QWQ7pAlq5CD_ySI-}&P +1h+UB;7t)eaT4Oe2j^W1id5pl!dCI`zkmM>#ak=U!1YH;X+LWv!yW5LT6(}Rmi&TNzYiGT=M(1N9x +%YqC(OqI)Bo~l`@%orG4)s@8NfEr{@xvv(`-)x=v#(=5%lfDHgmqlM~)O6QEZe>igB}fkxQJ?E9m5Tb +9I^VWPR;`{7~u#CdH73)=zD^6c;owE-%!Ur8YZR3V$6J`%ob4oUjJ&YaqyR%Ah;d1uLcPa|>k0L#Ny? +s5WrEtzXgD@sPSaVl?jH;FOO_pR`WJqC=Hn8Z2L36+8GoxrBFV5+z&(T=$|@q2j_}JWWSGTi1@oriXf +C?Z+0E5Iz+=8t6(v?SVIoSOpc{bO<@HLwjr>DFj#u9Bln|tpY>DEOKrx(DpV}@EI%^EHa)>(dVm3`&9 +}(4gcU0fp)-2;eoDqSMJvsC{B+uqInG0e4MzN@+ZF>p9 +-hHUJSspfrea@P4XJR{8UZeW9TlPnoghr|(^gZvOqE#+` +0hH=>8ij&aeNsr)p4FM`WzepN1D)@Ti7LQemPOuB+7$hzyobQ|#L(l&{EJOc`uF9&i3(G7<)%V)ZTBS-(#;^SQYN1lD+yBz0I!B_f +YH>^^y4AoTKnxiB3}QzFWNWZMVP+e}|0W`w`PD$o-!OW#@H$-6vA9u6GZY{?k_cK +IRyvlcQ!l0<6Dq-qN-e)M$bme%scqi@3C9WNTvn>(^aFFe@Wl10gH$wu=Zl~g%MC6(95%&8>sFWUA4r +3oqiU%xy;E<|To}z0Fu +4VPY(hn?lA_L#_Fj|B@-mu+Pfm3nO{~t#om@p6`eg5&OjtlchP8QGxGeNdv7?Njw+yc8!Q +#WLIOvk&JhWtZ}2%PQ?RZ42}FyLjS*xE!Mj+yclWh*OEAR4paC}M$zwA~pqm6|dv$2b?ZS1{nIQu-~E +eKrc0>^WCPJA%+J&om#d)A^XnZf~GampkF+T +EB)pLkx^~$1&8Ms3E`l!uND(~kK^SH~2xi_l|_jWpkm)SX#>lS^&ulu2)82~F!@^~_8iw=p*&cT~lYc +Tl~uvj>W!|jdE6&0!^0O?f({=*L!VFU?SXSnC<%#+jAahB +Jfc$q%)+oh`bBV%L= +<$&&80!G}Hli7ngHYT_58zeJvmP7__`?-uuVTN~?N#!vroqvHozf$!GMqZ-&=H7SzL5K|hohj_j)2KL<@zZBz>|W^hZz%yUPEhTP +!V#yoS%$BPw-G*^$s2!_c}SeqsXuA>q3)85;sx+NE6gEj$!n55F^5ud`AJAbQ*LiF7ExWaz{#z9N{9TOn1|&|n^7HgEEiRmhZf)@P*Y +O9xOI4m*}GLLBY7KrD~_($Shy24Wfm}bHM`(*X*v2T4s153)i;EHrcXnj2}%^|73k7c7D*z+GVIs+gi#WuXMu&rOBJ)T&-~5H86JC(mP9kVPt4U_gjD$($4zmx9p_5g6Uk>NPa{O +>PoJbskND>0+{I(8mR;#s662{@x~k(gt7mJWybUWF$M0deX(Er=85w5CfPf~JBRt%eQW>ju_(vD--ov +U-R<9^+`n1)Qz!Xz#hAAT$`;}h;T|7uVPu5w6s_znP@ag4}N_M?h>~jZklz6+IMSIYj(fjZio$k +fM-TL%R?Lw*lK-sSRhQHZl`#4#=7bt&Og-qXiHG8Kx*?G>}ZP0rzZP%Q|_Hrilp4Shty>%UQmO>cxf}-h!aq` +OefsGvitLrnCOSt-#gccYoJpcaqo$Brg6P0`2f+@K@`bf{ZqwEp68L>+TAIe_=KMcnxr?&$sqZcLw}w +Yropr&xB>*Zy3w#XRRcXovz%4cnG_oXcRauWq1 +>t0RfS>op9tG@wZ)u3{x7omr7s95I1H)C$0>p))~GjlT>|%TGSRsfCFOSQ;)~-L`A#k+&_O5nI-D3tB +1k`)gF-Fm*tZnU4_-Xb-SPe3FytRKHy=zOvnjOAJPzd}34}vRMMYCq&A0n#JO@xtNbWT@#=r7H)7m=) +l!M|#v#rln~d|4TKuZ;nJ7RSsyhT0(1m!pe#RlDSqgM+k2&XURhH4ypM +o&|o=Q~PDJD-^ilcA9DnhVjSj!beii1#l99xv|1;QXV)3o?FF#+3o1(_-nA#+ldO5q}CbXrFWN5u>r;4Pn30EknA3rPD +l +#&|r)l6>~=T9pUJr|EDk0+F#+WEx%8?v(5cj-O+V%dp&5rFw}>8C=<->v(AmG9R4fqVuh$fsSc5Pgfa +;QN7(q;Hk4Y#(jGsQo;~(*Hnjf6eWm#CHAjt`)cXK+xZ&2XWJu|K)@NG^p?g^-e(RiXH$!iYG%DGj2E}(^A@^PFg_hkp9Nt+=(A(4lMR&e3gzsIs?cN +PWV0`a|?ab)kI&1OrTl3_Dk;F=$vXB}4r$bvbE#U&}2kX~UTeNrbfTtAS6*73?#aa=9H*qWESL9X1sJ +4733G)K>0q3`+WmQ98$-=Lnu5I}7W8ucA>lgq2#=pxay~Q?L^3^(v|6SU!r3BY+JNo7+sg++PVE(Zqx +59X4&}})dZMVZo>8Oilq!x9$@Z?8e({d +r-FgEgVn&4xI|Xsbt8cHR^@>1sKyp_E~{?vo`Sx?z`?ocRMDCbHl1B|$M!aXMNNeSc +wK&{rX`aRuFl&e-9nMkqS)=w_kiWAnXcD;zj7ltjtYvo9*e4omzlyh!88up3^6)>IeWOr2^C<^h|8U~ +K1F5~&gy|4j*yWP+oz)9t6T8|sLo%aGUey)vZ8F&kILni*v6d|nLKtT#_eGMD4c9)ykDcr|&?7;Ds +q0IBCKbIyX@7(&bE4O>0oL2YeTI)I4?3SF@jHvbjMQc!m9!ibLr4sNTp-hi3g7Q9mAozt`jB ++r=d8f^c`Q0Fq>z-aK9F^#B#AOg%_nqrdts4?(k>}&`1v*PC_aHST&KZTe{ZhYhVPgloYmzi69{_Heb +THs%Ij9c7_qMo{N%tQepQV9=A8PPOGpBRs;y{wtr`Ct;6|{M$6Hh7zeSsojIakqH&_E#mx}wBsI-2-* +sC1$H%{CgzfO582L+{>X&67X~V~miQL8Cbgp0bZOP;7ivKt6+n)gBfA^WbLC}xS!u-`?10rFFq9KZcP +y&Z>h$d)+rXU!>5ELc1KQoNc_~*`2@P71TUvxOa9SQbnP-xFD=wyek^GuO#DBgF +&FmD{w*>bFOJ5wKQE1PoGIY;_@HaU(eXFPa(px%C_na$v!`;rrrT1;@!rR$b^h-~YyFYc1aj$~B +4BNpnStn>t;Jy? +`$7t^uo5U;v@b$6Pf1Wvv^m{%MG7b64|Q`L2DS?D%Tgch~R0<)2ac^RH^RU{6FwYsPBNe~L2erV0)q6=BoC8yo$k>Z +V_=Gw@j~2N#Zf%}=4x#bjR5;NYhuqB0JRKY|%kxeB{>WfLWLd$_`{gwPw*X_aiW=6Ov(N*o)ZJMrT{F +d(sg@Ms0o}WE7UPo^bQXRmO=;j~&M#f%&SWI=@i;E;V*B|mwUo8>i+vTdLX5>lY<# +``LiJhXbXD)KI4hRvV*NeFTCDFd{GZ=~^Lx(~4ym4iPS<6ao;Z3K})b$)CIHc44m=j~z>QrTJNA2~BT +_c+FuUFsdy!{aGHO}pEv22IvFy7 +%kc^hxQ^jqI6-Ak!i`tIBBo|L}@@ON7EEPq$FtUeKJD1dKss2f1}&fY{5l1UbfA`lIH`+12_Xa3XKL6 +}e9sMt#(MGGtJJ@WcpC=`!tyfDjex!E7Htp2j4pD3{Z@FhRhJ}!Q}Hv8*e@%PU$)7}z~#+D_T?0YL;c +Ou0t4aa}lWxO>1ttZM!xvDJwL1_w_R+QJ1V&x1;l +xRc2Nw5H&-LV;VZ4l3qemy%>KDul-|z{T->e=a6uI%yD3ADHG^IxO!$ddZ$8n>Nvdlu#O&s*jK%?L1u +Qn@UQ@QX+-tiZqT4>?#mozA0I0>V +wUPDy#b!<2am8JWG7h^IQunK6#7K~%oTLN8lv;#Q9Qhn+<*6<+TcXS?q9&DMM%oL(41G_9q0ErUXGzIh_CJ +3OANJl=ws=%<+l{UiVnT{U1~HsVMxmK7-uBhrVXRcW%Qf6OfS_MH1Fv)}OZdf?j)y_?p7_4ya(@4hd< +Kl#G^-S-9fd=^1qG-m!95qu{?@k{*Wl@mpt)XN}I!XqqLY&jWbeu8uO=3{_MjR!m+1OY2t|%;Q +qMB_(ux9v^j%`)#^fQy5Ysc)T_@1Ye6ZjN|}PBUwJ*E)~aL`YRx{i%Vj${$l8&B+zHRJRMLb%t +DfJV&QK&i12HWJh{_)x5^NSH(-Yjfp#c^7uE^}kO=pK^SVhq>d2=DZG=XeGlfz#TbO)3$ye)43U`*}h +nt&nqwDxXudi6iy)0S7xn~9#sjqiS89$=><~Hf5&)_6^hiD3@f8HA$!+TbyP4b78#zogReO{)IKN0iK +-~THR{=fOKA4T84-t&7X-cT2N>vu|8D3Q;s2q+UlHc8U8_6`-)uQ_Zvk%kI!WwTLSi3D4e7nCOQpNq(w1+h*t< +pfCfJ4Hj>%h^9V72o^fuMlRm-DYn<65%B>uNh%*G$oz^y^`@QCtf!Q{vw>T?&ad|u2r9J{oBrg|90!&?g9So* +0=L6|8)!U`c8M{ujwwTJt~m!#Fmxak!O!JO5r+5<-91zhd!LhiyCGCrJW08wEUK^@(3AD6A{P?_cJHYK|i|1<-JV!JGli*d~0>vUQr2^Pu=ZXMlqr4y +P>0=<1G`r=d)YBGThBgFv^vKt~jBJoiJ)#oNCnP>s*mdEjiEW)W9Ug(mqlefLD2>Cjse;j%R1&sbc^M +8vK*j8~E|!kDU+T+@Oq|qmPu{1AVYT$=Ooj0sUKO-IxTb!@m^Er})eAaB>QksQ?hF9Cn5CO~isEB-Ne +?cKMjTNQWXeGCwN37q@W{+qM<^>MBXYtuhF?6#-&z@8Ikx^HA +yKiisBSPVA^+E)P_dZmTTmz+b!bCUW&6-LkAP$CExqldmVQJ?G6bIX;T5J;%>1pA +qdGg!>*F3C_^0vguizQ@oaDcKIvF>)U}XZub?AiRBg`(Vo7^JCk3$Pihu*6db(~P(M9S%^CFyo@^93P +#BviwfE*7s&QBD}{KbfJsfXj-S$5x^m8|+Tn#eOk}EKUhd@IZQhmal^i9WgQxY#usr^UX4x!+1s|96k&ZyhxZvY%q@fq%N!(IxnI-|tth<0^{hP_pd91iTL*hLdHG-R1~feyz>U(1Wt>63-Su`2k0d +%Y;~-Mn;+KAp#Cuwi-c#ER!c%Hjgx)2uvwb +uW!FIjtea+i5YS%7IcdHKS-Dt(%-cIB@QBJToNB+%}-}Z;Tsp`@1r61y*xC8&GV<_Qp;EwS$=YcTzj2 +xzVN`I~D8<1ZUm+J30JMw7EDf)Oy*r%mpkBocG_ju!Z{K4H0#W9t$hFZ6{}ct>eZNU!%GJOEI5QUvfu}Ejd +PbS~Ycs4RN}Kho-$B;#E#Y3}d%*%c_mhGTV +ipQ|62f*-c(G|sFQ9o~mzLlkJvt=QXx|e1)TA`gjJMmQs>`ERXKbXMUN-{*y~HGSfR8OLl2>$#untEK +aKxKWG050}jp;o*C+tpXIK`3ATF{W1NbIIJ3A~q9eB`bdyxW2<>;%P!I9Q&zDXD;O!XrzRLdKy_+w@* +O&ZUR+=#}C$m8CvD(vZFosBsDWQ{kg}xTNGbyAgSM8n@td3#Cg>g+0?cbAG0}mkce=s51 ++zzQ+(}ZA1TI@JPpKo|a5J%^9R;tIz?j2L;KE^q0%I<53A&zdbkJ&7T8-YRvN%0~z?JHPmeP#kV4RxQ +C@*rvibm##!2WK4_}T)n`&P$7&_CR=wOg+c~crKz}jb`cr+HuSHgjZ|uwnz*ngYj@hEe?OZr+Z#vHu{ +eDaG7H~3qh>1_LTwD%~nIjOrq%(gaHS4AVwrl@-!cX8BbL!hA##2p)FU5AexEJ^Nz_c}04I*LV +0I;5oIYwR1bw+t>D>YSFt?jXgypT><$n``UJ%rt_h_YlOOKE6TfX-S`RjORPe93^@I++L5^%laag1I{ +2G2@PQ&Sq(ca}yQe?l4SfUfeXblZjTmp@B;aQHz>D13DsldN?qWj~J +F3z3TAjrE>jX$;wnh-+@xw@%qa(ItqYtxv+;~xKCI`&tVkS2%F~iEs&L$9270gNR7>t`QrpVsha~wz6 +5Fo;cZ8ocALhW1PYsR4h4Y(*5PQ<12}p;tcKb%9g1AOU7*ZN&ZqPSCH%TY=+~8hF~-DdEc~?35DCJ7a +61)-d0|$jc=}PQ+^|cfuw?69vrbwVa7D5$qMYZ*OirPQpVVgNINpjtDXN3*(*krnSZWVNefff~8LWHj +t?6{VAD%3YLU*unRkpzEUuT2&`6U)WH!Z2rogpGU5r@%?$`7N)RQ0Cczb(Hz~Gaj1enwa_!**e?>TNmJk*PcuR48 +H%!F4uo9G0m5Gxrar&zVq{*CV$BM#~|MM&)1xU7Q@pkPK!omOe!M=rIfAc^;Pzy*H$4Ho@Q4B^Po +FXX#feDhNF?tKlNEkzKi2788lOq2Uze#Rnw1+rQx|5=}kZ9MwqV|xAj`r$B_*R}KKbM!@g`&~DUa|cb +O7=m-hvNTas+Afb5S%?~xLgY?0nC!m^z<_a+obI)H@S*B(<MU1;xN*caQ4@3?U%;l-lB+je?iN{Ry&QQ6ql3xQe{)!Ql5;<7ygLeF15O-INDeqFAD19Ux1dEk>s(asI~O{ +lfHqAwAihbbqnuFp!z~G%nx+gbm0T;vN=2nnciCw9-;^P!RH__8xvpgmjK}?|4`cg}G=!uQ^xazf+1x~uuxu3ID!)*0b>kY!jLcPU_x<=$_@(Q-Vz#KKfh=Y}NtU>SNL0U3 +Or*WgZBykR^kl*;@UlLBB5MT!eQD#AtmtN4O$TU2JSuP#K(`OxvLBckdY%WFxt_DSu)d^nzn(@gyvdC +L!|`pSU&pM&Rr^FV(A&L1D-M?M~nZJ6O_ +I|*P{smAtaC#juwhY;_^J^nUlNZ*nG*v>6asC}#3wu!gn1M;@}Lh!w#u&qJghT7X>#^esc1pHgjyuU& +7qlIwg_$hY=mNV{Rk+^ro4J66@+>@dB-vUi$mOjuY`5t{fXldU{62R5^Zdm`DRQ2~7O5a`6MBy{%ZF^ +@+eRbY`egABGPxU)7mWL%sZ+2n5ukqh&@Ct|!=q2+^`e9oN8AE_H?`nxGB##JDcE{3>q5glRLWxyVA$ +VKjp;}fCr#D+wFC3a)mr!lU;&g7B2Mcf}uQ9>7vnmd?4+;MgYsSIRvNBIeF$WAI3(ESyqMSTrt2Mri= +gAEo@$rHB-La=hpeqO`O9|9eH5nPhDa~h`ZJmSJK-t7**o`Egs-8d@I$*8S9=H4@-evtKh-8T4Faj9L +9g-KfCu>NN?57m#Yqtg#b<6l&R*C)*>hL~#O(TRmu*wRdr0`jIq5Zmy}(jdO{&==sR +r&f#MM*GRJiHj~_?O||=BA*Z{=K_~l0CagC08hk!rK%Tf{<>ZIan0nJJ%UJJUtd63OB3dkFII~1GniZ +Um9$3}dc~a&dT%yjvr^Zd6Q`vuztY&EZsymSZSf{b2)JrM8CcYtM8glGen!olN*nB?r%*W!-*8aMHuR +UX(7-ZoktKbL=oj{w9iWpI4W780=mE>O#!6LG@lEHboIO6QQSPB{)#?0DM#M;j1~O{QNl +g?0o>A)6uX7MDEz9RXnia_$Vj3etL1^tUMzwW`!l|fI(KIUKG^OukJJ(8k0j$#l5kpu=qTOvxsG>Kp&3X +v#=k`%oCiu#n-o?vfthjdqg!Q*`tc85RoO-{#mO}-f45p~1IEi0uypXSBit?%^Bu0zosdU1M3vM|}Hb +^A>3n=!XN>Xt*o8`#1-q$TkNb-!u~VDADxzDv)<=+0T+Qe=$SQ&RHnRk@|h+oPm!zC89;EJUL{90=d) +)yaEKDFGX;5Xz0NSWI!R@(k_Ri4|C-7WXpZ<5dTp&$QSK>C=~ZyGa +;@;$W4+t0l$9M>3imfdJ#XSE%j@;jLN(osO(Aj*I50inHqx;97rPby|_t8a_3KCHfl?=i7?`s;V95HI +bz!72)z+V`SrU-XsFe%H7US%~t7_hA3|BOCpq%K;dU{}CAcJRJ77vte4K;ohYMK-wg66B@N!l;OT`SY +oI#qu`}JE>6Q6UB4xEk0U({HTQa*(xsv~e^49NweA+GST1nUN9e2?>MB4@J|*hlXy*A$u3NhKsy)0KZ +_n1F&UJAqE`B3|pyoZ0wKTCgYB)vEfEQP=PBxv~zIL)s>h*}$kf(h-$`De^7C41h?)kLd@~l +3nSTE1T3iS1{r`{q1hYNH8?04QaWGC!Z;m({&cT +ql&&Rwc6@}3Tj}8CjtnJskk>Tt5XuM+ufz|1r +vbV}xDqWgFg?F9^6p+R!{7KcVOE)_!;$eZBO@UvK!a8oT`uLLdslaC!qqY&ZGC2#VZY|F-m!#AzIQ*F +OJRj-~d=DC)}q7PZ?9pz+=x&&a)+3ZZ-9Gfdw$NyzS8{HfdDmu@(=x57ze$I>l>q>=ZWGyV25qISz97 +}^uU7!BLe_erQWK59vOin6@u~FuOdw8y7Z7eX1V(B_$xv9gC*Azp#=d +1I|)z*W7sW|6M0}o3Ba0->9LFP{D&!=w^iXg-H=yY3|JL>2UN7k21NgaFCt~5`0o(x|=z!M}G*unRd> +v96>n2B2N88|sIk)ui(a8{*uL+WzfDYBJ5wq3Xa30fl^PPI7Rnd&GqEpoVanRTw7DN@#v8DA<5EZzcBDg^llMCusZ^i +`R|CC|>A@RddZA7WZS!LD~jn4JbwODnZdQGlpVfz#Nav(E)gaOy>@A)An%g5g)rFPQCd{UWP&y}L`lV +HC8=ZEVFyyd(g-LyEmdeg*K`RSv|P0lEtRu>B=i=zC`mmG?saunn)ZVnTy%!cGXLQz3MYdnC{^K%i4S|P}OCDS{ZfJ+g=lS(mk!XHCf +rvJt}x!E>GPm!Zx(65=?xO>u;c^8h)d- +_F;=?|{|e}7I4|J|)0`QHz>{owBdBQ#BJ86SzGC{1twLGdl$+bw?xoPtnt%lB~nQ^P-a2e1v;w%lt&l +nv5wXom{;&2QcZmeL(ph_^g@jDK$a^ERFRGK7S`OPIUiPxe+mMc-`ax0NhH?4lR@BvbeviHiRN|Ekpp +y)kUNVcXk=jUlbslKSn?;0KSZ?VnXv90= +$Zn_#OIOlp;DdbJj_*Ohk1rvUn?ClJ&Kig~SxAs~hzFl3n1PCt@$yv5^%#J%}-E)~}!CuFeaX$2(`P# +6Y?@EgDG5_Y-x8-E@x|`8zmi#(9-()!UYr^j5_tKp&46q+Yh2N=_XY6%KYunA!_lzyAvcJhThJIHox-39Cn+*e#)5bt@=wSq@HQyuH2!q$dH(^=@Aa1(P%PqYNNouFwxi&}p!v%a@A4Kn((a0AY# +2Ine?woeEXBp_%CG{n0G43MAqpDc$GKxwh(lzqDSu4H??F +eFK@ivR?F4o?tr_wmBQE4qK8lNc#G=-ql42~dyU{>v5zxAvcUqI(c^ry@himy(1%ri?Fo$OB<|y|%CVHkOTtfi~UZhnZ=hZz&h2ZNT-58s_Vs0s)VwTJjDr*2xRMzJ5a<;1lSn#Bzy_GaKIw@~MhGdcK4FYo$-~+~$qRCK%lWhAxA=MbJQ5K +l6k=oCR5p6ShyXArH~`VVR_s8)wrX;+4umFAAR?h)-y4jR?x{H#ipBiF$f>fSDwN=^w#@UkR_S1d+vk +(V1maT=|-g?ZW +xs;#1m*iOXa!{;Vm +x*jc%{V?}2kfIf1dtbeFnee$$hA+TP=bP~};qM!rf82&Y^2^`A>L&E?~Lb{Ox?HF!@(&}b)y>{-=2)!9z#jM_yjw +giMmKSvm9FFJ1MLA^zr&@T`by=!>bp1bTEV|?$Ep>M3B-$g})+&g5y@JdJa1PqGyzFb7_N`+9kgC3f` +eP*ehz=Fp+&Y*9q%m!P#D0a9{`t0L8)O)fB+fi))8Q!OLcW+sI=j_nG)xthLcZ4B65Jq86BO?hH*sH< +$v%v2YC2C#%skvn(NVCT9jxyL5!NxD?Ycu2Bw`z1W-0~J1X*wV(St&x^voWm9LHYLS{F9f$%dp08h{J +2}7hcLw*DCh-bN0lW{Er1q8%>57)!%3%3r9&az7~AmIb2`?-*44G==YGs)nrClh?njC;pD&cB)@jh@^ +=S~1KusPTwv~?_00N5%@@jZcdQ-t1Xd +a4pYzjqm~GN@P_uxq7~Pr50`gA*^O*@-j0RT`d#Xr~`mL9N6(XYHQH?gX9Gyn>Fd71XT$-DPjPgBGtLJo!8t&GghlD!X_r!TEN&; +x@&1(?NLZ~iEt$-}7L47%@0-9FWdFi$t+L2V}6`GU5l-BZCB0Hpe!AU)qdn6;E@#$54n(2|((_^tcs` +G@G)l}+9Oq3ohSlSXFU2#R`EgwSXQzb~=GwqT}uFxJr7C?Kf{*k`xBZaqJV$t3N(#?tuNt%EIqWJg4h +6Y=bF43&pTF)~xCA$Ua#As1Y1ib)9u|5x}>J(R?32-nE2$E%r#gW5xmv>%3QIujV4(>!<8_&)gUkj +8ISXkkbCV?0-=c0RZ3B)>p@=lGRVbb?zh2hkOO}A(9pL)KUtTij{LadqA&<$C5oleIiK;RerZ51Z$Sy +dh0+KjRGp{%eKhOZhyGozCMJH6!pHV-rTG&c>Ob6|C9ctyEt3!ax)s+Bd~ +LJVNx+j3I5(uXY4Qi$$jx>Yk_^Sk$+X+=BfE&F(jKedEs4I_bR*vI!+by_`xa9@bhnWyTA!mnpmXQEy +~u{3bDTDFI-(K~W*ephec=N#)RvIp+tHTpjF~LSUA-;dD6{ZZ^G^l+Ss@9 +7}QLaPZvZTgH3_Z2vCV{PBs|11NIz;6^?j$if}N&H`SlQq`e3nX7>x-@M< +=1xJ!eG)%9A>E>r%YX$($u%3-^v>=v<5FYh>hf3jSQL_=zOWwhx)>T)fa{VI3+}r>amElx71v5^jtEQ +oJ-dUDN`R|@45}0wu860#GHjmRP}(}G2Xt5#?+a|CpZIvCa~SJQ+x5|^N)k?U*yS*s`~mAFx`ltMZ_; +Oc65o;t(wa7bf4gf0U7SRvItm=BXEr=_K~*O;zrv66|Lu+0a0~byHqO?N_Y9PR9-oraw5(c114obBm-2JJoDEjEOcz4rWh%oe>(h_Pg^z(>&@wngFISB{AHw +Ay<>dke-;a<9W<#Jf!l?IGM=C(qv0uxu|=K<`2FG}$+?g^ycIxy5hE?_;)UukaEd{w1>Yn(Py7k|*f# +xsSCL-~`}4IKFn*c +~`?tFRehBJ5+s$v{w*5`yzQt{?izsEZj%itpEm_64_L+JeQc4Gta~ut)if~rRc|BVd;~fISbV!?k;|g +VqhWCPY#O_7St1q57Ni9!5OFTR^4wW0iuy*)?F;CJYmX?{}zV{?X&@BZrx&yvNUL##JdjSw?TZYPgo6-sA8iBMH;lqE+K;=tTH_UUBoyIe+vC8ELkqg-3LV?WIeQx)ll|N+zX``4 +H{KigYF4cbx!&y0p-Mfrn~ADO8~)GDv9*3g0`4(YVFt?yWmtJwLNetVm~#p*XV$MHfgl1{^@~)N0q#U +iwQc%A`M0$RW#u=EL>!T!;3%G5*G5@a)Ey4TTsnxd5fm419aShQdkltkStcv1t9tJ}ai*iXD_g>+^sdL +OXDx#sq%MY&@lugxQ~VUSeYP$1zVYA0ZNlHhZ4e0D{*$;3VwIy@WNZhY;Um6tNBnZ(a)iB~5at|2tsJ +#=ASl)jX;6`@C0mx6;O23@D&OR%U0xu6rzEu{B3GwRpWL+xc2uBXj8ywwnBN9Gxr?&!x)~MjEz!rTn9 +T=n*o|KbJEOea8EE2fAu=&9>Pc9=z2ojDkq@RTf0y^SQhDCn70-^XL42)g3&O +EV#g?IR>!nG*CWdV{V8AuF +>1NT;WuEwh}ESO>E>FNZs+|eJndE}tI(b`{ILh}BFL{H>0lr9;duP6GviT&r(XTfLuKVRd__i~wTq2BYo8S_zRZ +VA15==%-6CmsB~&fGWdJfv0059Ik(w%rL{+Uyd#(?pt7{6wDDtYDPbxAGz+j))Ta%zM}Bqac|81j)X8 +-(0R>2u?fVUE2WqrGnoF!u+rJ@(>`*KW~MXZMSZ&Al)s{>x?dW_l4z5Z>p-S_)Bnh?L^>7%%I!Q+sv& +vKCmUi8TSmt`thDBeLW_{u{)q;8IrE?)crHdPBT+IqD#P|87x%C0g1Ex`jA|ov!aMGxa=NOEEK90inhz8ATYPGDc1^?#5mVBxxU~7LAM7G! +ZAJh`0qyt?|%yzHrtr35U@*QV*L=NT)-J)Ko=aK2&qQ`xI4J)I?$vi`}uK{Bw7b?$?bElZUL`*uk^IN +-~g#q21ERNJY3{kAiifN~t-%DF%S#;Q=s6CXJNz_FuHz=%{6d(A)zK7wF+|3Gu?+iQU;jg3bI_Mh +LzsByEq~NoDYl=(4Gp`UM!dBSp-(yR(q+tFb2`k{kqJWUYDXKJI$!CNsAICC^hOUW-31dy6M;xRJH|V +HTU$YGRm9%8<2Pw=4{nLk3YwkS+MOJlnm2{fWg+53Ll*_}4KMWEX*0Qj@R)MFlN{*IbyIJykDI%H)$+ +F3@{+Fm+I)69zlEv&w4@@uDPZV5f42TUOsU9I8*&fz`zQQR&cUlH!ZvAMU03Ng`FhF`H;ZSC9&4E_LM +4)#ej2tdoCK_G@0wSFTtb(YD#%?vVi&rz4Rbec9{gms!R2}xEXv_rwX||Hx~F4iyY#U__S^jW>Pi{8o +vm#Y==-U6A=V*TTHF_nnPzc!!h$8evuo+Q7w^(^y)w7zz=0K4%t_b`NmOyd*hod+>h|{ +RgzseKhO8&mF@qP{NI0}FiigS!;b&+m(<_>ir&C#&eFdg_w28}YhE7!^Z(#wyaVp%m+(Ejk_>?|$O5A +b3S;13f+SHevxZSLMIk7I!wmc>ye7KHSY9E5Tu{s$d +zYV7!Uu(KtXkoCa+*hFK+aRv#5I0VNJ9{ulkLei$%!MZrkhvfYC6$#NNM^@L(Ttz^Mgj09yDW*vcxQE +)_N?U^wY*dSgNYnO{(&YI(Ep9}|`IyweyLgu&hdT}*38NbQK>mucOFTta-X~*zeLuc-{_*b&=SLbI5u +OBKKiq!|F6b|jLdU3tR2k-p!9Qs5T&RL)pUFr5OPK-|BB|(?hD-r*qh7ERn?q%(w3hD?{XMt&CnPOJ+ +F4ws>)>`JJ%3m>=41KdmPkN)u%wq}Szjo-LwMEyxU*>o4`P~fmca!7TkCWrU2}{{cw(NbDlO2 +}Rqj?BjSTW+8W44{5@9|fdpzJN%A-t7ycR{muwp*FIbG#WM2(x5;zq=&mjy1CaWl}kKM%B5%2hX*Pd& +&{C@@TgYGDi&l)gi}zi70b9SrV`$@7o$8_ezlXuHGXOMcrmwZCU-{JyMLi(XMwt+=%mww5bbcl;@JcZ +!bMHMt7=}0a%NlNyx6Z`-n}_C0N`~gZr$LiB3*xG9_F`&Ijfd?vh5oO5^UabuswH=eE{`V&0$^`^Dfp +NWWSbsyq}|bi8AWU!wd@*mjWdk(|73{v*K9jS9{oDcY<&@zkl~C=|D>0D7y6ur!$MI(-z0 +63=!$20=Et@dvnLR<%G4aX736f{0CfJ-yXWF|u6ce2@w9kgQtbf?!PveXKKVRp20P>$);}2B;48|xD#}SeuNE#++hJq0i4A| +q#3lxdK2u^%T+eu=eeV?sUcO(U(jBGWI$uq#TA*hvSiGc_pU*eVI(=Y|kK+X@Q3urJa$izUMH^~7dl% +N5tCQ3nTC|-47mUox);5e|q$$m8j2$X&jzS +H249L@R#>5J~YbUU2E}!xR{hAgRZhp2>B}{pJV*m1u__;uG6E+LRt^Jj+ +n&01uGY3eVLVtna%a;z#d#-JSCkuC5dJ6(d;&sqP+q#t_E`rlYb?sqW_i+_x1K87^l`TabH_zx +Z+cz)1-@&Lb(r~ds1_}y>e-+O@I`9a@5z<*%S^V}^T+5M?Upsr=L>mxlFFqPzok+!TCwciMvy?G$K@m +z(f>+QCu>6R4J*@Mp{f4yGn{akI&gcoNMG{BE}+cO&u$?p_=jKfy-f`loA$O*7#Rg9>r9zD|`;coAHw +zPY=w`zLiy?#CKMVk7p7ZnPLAA1_bMQ6BfVjx!B +S;@qGTH%cUDlnQ*{ojb~gP03ZTmeX=UKOIm%<<9Lr1>zlbjKKaho$trJE$k7X~47T6sPYs9A5KOt=v= +f9a#adu)qp3uV)<*vbD#;(||9-gNhy`1W^Vay_QAvs*UB4?rY#!x$T4H^tB+iXtDCuQc#hA!kQ&s`Mk +*%A3}7x8jk2x+~EeVi72Du9S0vP|wwY_uf=W(My1;C)r=^pJD$B57Ufx)=B6-HCB37Ie5_hev&$8WFA +~lJlEAPS8+?)>%ao{abu=bKCn?W=dbp)%HxoYZTBsLk0nI`jJ$?v)WfOvb5`&p`;`xoO1{k2L +uV)Kp(6O{T7g_rryhVC4C{oDj)W_Qo(0%Wo^DwAoXW_?+(Wrx<#)4wYS$Sjr7;ycs60PNI&`W-F`3;|GLWuB|L_qD0~S&5 +R^bEilS+ZL@8nkMsSoQX%dAo^iwT@1k82-bMDp466$7D +7OnkY1Kv}_8Tl7`3AWuMpB3}*pi1c67Zv~2l2Pl?Y`EN>iN8UKGg@1_pwdC+0r3CMe6Fi}$0%sWkSE4%iKTeBJ;gDKcSLJ@eX}+@$T&TyNSb1G&FhhW +Q5`jg^zZF2gWmKUOPA+Yaf+ooD(h68q@g6;-5nF +txF^Pt#ds0@UN$WowrS-VcboQ@h1UtaC~^f+LgYru1-l%SPB?G4?6F6ZK7RJ?<3O|97)I*tqubLKZzn +ir%nZq#4zSvGQ3F2;&W7mvsk_*u@N*;yZFJ#xiLXmJ7d|r<-yox>We(2cz2vpZ<97ebo#-5%Yb(}S;H +w6#1d$C?Ok&mL_m7LLsIjK=!A<-ZT0PK5QiWOVQR&%>+nh*k>?UmUR5LjwGD&*W+4TT92Mp}y)xfTRc +ER_+sJ~*K_~KsY!EYa+Hv>Btu|74hgT6V~{p9ELt+^oxg9G16U%1#w^FS_Fy^;432aZ#(@ktVsbqI}%92VhBti1c9R%iYzHPy(Hr#L(v5DsW8uiS@~)L2hauw1jYp(m-H4PL3X{s +BY>I+=J*42wP!9l8?uTwS1uUMHt^8j84XmGIIl9Dg +@28?xL(CuF!6@`I#e~N&~Qf$@rUj+uhEg%UXnF1gsLGymOwFO$2D@#`_j+VRo{jBD51;cNR`6ZV+UyR +B<_l?eQN0mNS*URUP`Tc(mhTrt#7F3hIV3qxy!Rilnd(d;QVXac}HOH-L(3l5;J2kSTnZOWd|4*+7`g +loyaz+27YW~!1D!9p$7n$KiSbD!K3P)5MOKV$AfpFeIXY+V@W|z!rv>hhRi2tZC%kFt{mP+JR&yGeZI +oo4-u_3ifRVrcjtmr&>IcJ|{?h&+=lp)e$Grn5%PM06%{p`E4_P~z>vb~(U6I?%z7)DeZ} +BUFU_AKAM8GhLlMBXZh~%j>g%!Z^V`=6k8!+WFqrnq +aCCBQI*LRRpKpwgW^8>H%{-BT$F4cS +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 +pn&TAFoK&@E>mtcb!DGd8d3dIo +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 +OErlVA{7=UQ~Au58 +(hRFiK6-1zag9CujKRdR+7ZhOC@@Z@KAlrU)>0(AYV80IM{=c5rl3uiXKT5W0EJG_RE+->f8IY_aB6`qc$FTcGC% +=Y{!7H5=DJ|+k|ZuTORNmdBnQew%i$L|PJnCWFJN*>DI*f>28JdvP%;H2&{fJ9ND}8jI*42`a`|Ba%L +VK~Zn@5eU@LtjCjhh)E5#&RtG>%N@M?AW2ksGfP$?z8DI7}4nF-xAxl!jO!lG(!*wfwTbBftVR;KIC- +!dS+7$Xxck+@C!6cxW@K!9wvdP^<~*aSl%k5BuG?Y}e@HP!b_8?L`PJpOKq0$Rr?1n~u$k8cdj^sNQ> +;WbUdKL`n1C(YJINHxDy#<+_RDc&PQODwRtHOm9bBADzyoR^hOvFbx5UN!y;zhfNB(Blq}{Vg&5r8Lf +$p@>gyD4_5C!`^KuaN9jnJrg=aqxPt^KR3=Ck$$%2_gsxLAw +R&UXR~!sCe0ALba`Jv17949r-q#%A?zIuIa)#9kVu;1ccPz}k(cKZ(Hr6Xyc!ekp7{NV;|14NFwueGv +Y{GVLr+DZB9Oy%_b?A{lj)aKojAx%D|dux@S3MzPn +8H*{sDZCffaR$cZD&ky*?)Yj0Tchksu1)E(+? ++kG?e}-|qCjbTLXG?87?eqvjeS2`H@leda(cbC&nHtxhqRNa0e1q-2sfvC3`k5x<8v2sOP+VWK>GQyU +t%4i%VzC-Q}A8TB>pXURva^Aw%xgHC6vPH9QH^hoIM?}+85E)*yXiPJwaTO**6Q&t0oseQd~KF$ymdV +e#rK&Xrxhci38x**4HH(8ox}8em5;@n1L9+dWB_8pg2Ar%w=^Fz}NR(TF7NJHjz0$Sz??es^=`}t{oJ +JZ$g@C23**k2w6IEmvRooUrmoJUo<{81Q)5fNn{Ib|2y^&^8`7gwIMjb};wjkkH+~Bhm +mDK2jNClN;cA~<1Bp|(5rNnR!*jltA}ZVrQGC<2v}(npetN{Ws=4s!t}uBPg(`AO=?{G1#Xfx;Ht`9} +s#}jDA>&{pQ-wBKd9?4la)X6q$R|{cRnd~Q2h8Rs>n#Zpk7iFc{9Zt1M|r4&oT+0Y`1Z*pQI4d;LS>X +%k`9L&OUvwF^NqTfh#M{6mMrYya!`+InCedAv>U9}5{-ly?K +`R4gz(K?OL~?ZDo>qTwV6*gkF{X#FC*b_RCtoYoLHUQ|OIdlhwO`df6G&5Zz+y17x+6J}TNtvkY3zG!r^S8y>L|FEcG{J+T( +P}!=igOKd&&z500fAQ>(;oNVwe2>*WzV$-^o8MJW_#5aLq`7qW7!mXHT%L^FWnnkQgvG=5WRc$MFj@`2f?{)#?>=xpBZqTaJcjpl^-?N3h>kDhv>Uoxe7#Wt9yisb +l%i8`bv@9lmCF)GYChF1Z@6mKBJaT)0u3N(?nFd9PlZ0caUZ`p$y!!mXL3w?tTw`E?i-G_B1^pMgg58 +3l)7`T#*jYXJ@>eJgwR81)`Z-bZJyD1cU8}~8*;5!quo5}_~BzZb>K3-@QCwaFY;k +*Fq3^}^SeW{vwjjX?7X=XDP*MqK07{ozbj^^O8e`>ezD$|R>&rt4)UrC2~@nZ)+U1p-38V_r4msUw5cwVw4)t$!om#3f-x*;_l+AACpCvd6I^z#spA%x? +_w2|tlSbm8O8Nw4Ph(0}?s@o3PT6dmLhcL$WPLwB;nJ&rqVWZq{u%G4al{knfZHacE@rkZhhwt&h-o+btp1=v+I}Zjscfx0i9eh=!K8afo1-rY +f@&rO!@Zcp*b(X~~_{1K~xXC$K`JL(GF5{hHWWk`?{p0@== +l`cpM(eqMtVYlq6lNHTplO0&KJ{CO2>?zQ4qz-{z|uXJj*;~08BT$*O$^8r0cZj&;uy?@rsygjhyuLDlNBPZ697v +0>z;skoq%@q0*gcjdejSUEQNuxWrg2J+z>dE!E--t{3o^%O9%l&?{h7O@1M5By?|6~($&8k;VGcyDJ$CivpnK2!vcLipW0oZ +IQq!|LXMlq^HAci4iRrD*H_n2#iw@f;x$JG^NXnVTTXt8_Ujxe?4F%=2`_sc>adrKX0xr^LghVb&bdG +$xLqWB<|tp1Emu3Hn9gtX!nn_@fUp0HpjZ=+!+marjG8UJ{|POj_kT-xM|dpx@db*+Hy-$TP?v0Q +@ClKg*;R~j0SNN{@)4<%wU9m$p1Bqc=crI6k4k2(+!=axDoKJrqIL3uz(-m!UAZC3x>%$9=)EUvhK`u +Bz|wR{D}@5_f#~O%O-t9>WfKkgmN{>lXxrlwC^}ZN;kUhaM0|M9L>_=#M`sJi{;C;A2GBn6DB9B-rrF +pku`R?-=DLisN#<$U=i616$wh(2(_t0^%G<6Q-E$tQCEV|;PB?U_hKx0I;j*+nC^$C>!drVN^z!kI*C +&lCHHK}_!Kd_$pXasB~!U_*>DxN^Jbbpk^d|Ek5(f9+g<@1yjSD>a2I0FI$BNue}K;0O#aKa&W#WVs8zFJQl9x-j_* +(%G8`Fc4%}dxiG-!Hd;b`>K +)(uHmbj(Xc=bJQiQk{m_qYvOGSDhr{O+s0EQul;C;*@53I?mbw8uq}=aG_E` +ERRq}^(LG0p@j*|U>zSapcXhfb*5=iEpScD?-`fWM&NZ+d3RYu=T-n)cKXgZA1L+)g%R0e(MnO`=X)wsH99b{q5#70%;w5Y +5(`_h!wiqR*G`J)fd3-wvZ&=Ak0`f_V^7KtPPXVMYc;k +nz(uk7qu$Pffp$fA?DvwT~MSfvr!j%v`yaYnd7{JP7m_i(?X;7Gh!Rv@A){{YP}*UoVK*zc;v}|4#>j +|C)38>mcz%28f{4h7%Ejf(a6+0x`^cm~{&dKuMlqwzz>))Q2hHwz47-;1O@@EB!WziQh`^G5I@1{+^* +=J01a=@|M|QAM>^{1gz8`+e^T~QU(-0!RQTWIlo)c80b$U6j-By+ss??hm5wv|7xH$de=_h$te6DV%_ +r5>^)kWy(I#}^i4Hp-u2bD_7KnxBEip3t?2FTw=fcY>PAN(M+Bp+Z@qc^FJ*$n14seq!`CPgu=3>vhj ++4b;O2GJ^?hpXew6}tA9>mQ7hCS-|2o8c6%zbgA!hv)Vzy`k8}Hcm$wn9YIsq&EAR;*Yoe%@g8u}Vyz +74GE;`~RMHdO*0Z}7Xfs-oQ{O})P5+kO?Bw!HF}vFZEJ1pS-X^j&CLp?^Yr>pS|cpT-E4#w1nx=zdQc +D3ANys4N3b2KT0P%21HzqhQ{MlR01S&HVKJvJFPBMA_E~){SS=FB5;#bx}zOb5BFTb-l%udaG?okfpu +&Dws>eJ|v&lRkNDN>~OJHJREO_L}UvSjxWZ+sw;lS^==6385AKqGQxFCvDH~RN-{V>< +}{uxOfJ;h<%-x4t1clsN{GEjEhjT^K|w{c|H332n)3})@)C`9hCN&-Gcj3Sdp{%2yCgp5}|p#-u0<+E +9m$)-Ftr(hM_NUxbv51E%Pyzp7*;FKP3FCWcMlRNA%An0{!cBEZ4FSs(E$CHqI>$2!<2tr$sa_g5cQr +sH$kZ+me#aMF8^y^V}Xk4^w(zu}&aY`k+gy4?XyoFgU(-!uZx$yqCSjf#Z^$p1sjp#h4x8l{Hp7vVz+ +_TwZmzlw&_$gl7{SQzROo7hURCTG8&@BiKNj;8>?QUA_W{Uz+p=Os|`y4 +O>N5>vA4zraHxkt7na&!K=|>vQ}Pz>#erzjmK6d!Jq(n5LE#q$Tsh(`>q{Vj4i4mjNl?DtVtn)~k{dX +s=sos}zm=0vP^c!~gmn@DwPWz&6fnFg2DDu_xIw<>f46tto?;@q4Z12_Nki?vEwqZzIwFvZM?mKeVN#|GK376&C&5k}`lxkWq3d(1hofr|cLw114BGXW%%Ny|Jjua +-2VtCs>f&Q{5d0#hj%Z#T*2)))?E1b;x-jlqd9LRMQ^Yb5`5awT@v2M=upuHsZrgR5R^?qU^YXok;Qp +aXRpq_2QxBpocZ|()3rvFB!=o!Yx#32fo?Lc0}#9_XD0})W0aRLLb#xf23J?ndv3Am-Ti3goQAhxGks +NiQdIC*oO@9{HJRNI=w6!vxaQ(hV1x$7(Mue)Q7PRZ)!OygmSi@<>FKmAM9WKWi2DUlF!i7qMCa$&5C +}=+c}TZR8h=aosM-lHg~&c#zDY^)0vlc#of@NI~@71ez3Xbc;ki*m~El;k=wepP@Prf1A1@6C&%s%|J +=^iz2C;P>%Yv~{92supE{$`|FMJX{~M?F2h-NScUnKhA<)JoD4fD@n8pbjVYVnlVibXrI1Xb7g_88gW +NZ5Eq6#cj5Rd@k2@pZrvPC+6mn+`_Ob8Cx*r3YDd~6Csf^e{9tQY}UHCwQtP%vS;9c=p<5}-7>ZNxqa +G*Q4vK6<;*yvau&#Ub=9XTQY{fwmw`5Hegl??FqLY+AkgY%Gw&O?E>Hifzty|jmFMV3S<$+ +r+%KTt*>P1bBZojYJDLef=y7$is?=SLQ=7W6q0vVk9CE-1Kjkko}+iLPlI{KZ-dw-U`yP;oZeIZpO>O +@JlQ|jkq$>Lulz4Kk~So-5%;!CiD{w&&o!JV)DQ{?-1_lEGY{eCyUjh6il!uf|eF!WIpJfk9Z=|s*nU +pHj-qdiiDC2y2S!yl_8wHnnVi8{X?)m4I+!K;dBORBQ*HAeSvbz$~p;E)%C?^d%t_Pc$l#RPNFc#=V}nfeOc+b099(x*rHjepRKEn9!ax>@+yPF7+8THCk +me!_uta;=H<9xwK746#4aezEX@jz8X3yVPj~S4@fP*wLKX;riS5^E^6 +Bp7hYz+czYTva+oy8;VvqyJTMx6_Gf(?y?!1^ +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 +a+sMJX+hbSbnUe)N*hco+vI^_rpVT29 +E`?8?_G0`zYF@3>K}f>YlcMP|)t~_TvEB57lXZUzlg=P!}(Ygh#1tp8Sr_u9p{szqxqOAINy0nR|aA? +)}1^5n>N~apbOz{!Dyjkz;OrBve%0=5yYlB5|S)<~~gbSq)_+!D)rpo=a=^qp%(V9-ABJ5QS0ZY~LN>@lq;AsPj?k9;hbjDXrxyVSUS7Q%~V6osACl^e19j*@n4sdz$8AEoBR821}&5=tsmFp1Q8svo#xRC +0|8Sx%x^M=B+5rg%)2LVblKyI22yh%#<*_vq93xAea|>lPj!-`t~MnAyV2*ByX%`A>oAAHVoZIQsJ!{ +t%gP7{Mt7r6>|%2#UsW>ch#dEso#}n9BwO-Z7XHN8g$p(c4&&WIzrATs7W2spw;F*A_F9x5Yge;)>q~ +%ihKz@H@0%VBCv(TQMeY!>kkm{QWJQ(CIIN6}F{38Q}JBM+A)g5K!XL7@Woy$HI5yOk+?mkKbyX>D!i +MJ42cTIav5M7D?Z8X26L#dGplX(_$c!{&j1a2i4Z`@XhGa(00~jAMKUC{-V9ie+gXB=g9Tv?d5Mt$(F +<*ZGdTG49uUt$d_v?TYu?*D%E#8$nML))VQq-tHw2p`9drfFLFB=HPZTgHiqI{v&jW_p-g2rup=mzpW+XdE4;(CKNtJ_Zs7_UH>9! +4c9Y~jboRiu^BuXrX3w3Dmvl_x2%8P;MwG2-3V71^T-%kSq?K +=0f*4L5C1#b7tX!oHJB>V<$pG`{6x!W1!t$h7Ln?&i_v4#ZrM-Feu5wM)eskbAFh`Mw+LZsb!wysx_}ye +brA`cnStObf$JZKXS|Z-pO6rVLr2Ded_Z8)Mw~Kn7vOAvj6h%O6L>4C%K&^me%IosxH +T5lum)hpFE`wX=c1X9%>iH%tKRLlQvH-ZlcC=D$|3z5uz#D*c1kmg*H}{_uyT9gsbyv#`Yq4*%@6H5( +TjoyVY&`tLKow@V@q=Wc1t;>y}z%7c9M+389$K?K6Td(!yf$?dt%RI6$-RuMPO-%*y!Purlc8%xeG9C +lK^ik>7&Br~_bpTEoSzP5Uu?Zszcg8RiT?C`@Sl%JmboY4OC+>ap-`qP+aOm)(71b5GG(s*HWDioL7E +!|rlD#rfnrsy*4ozQ`0Z=x}c5OVw=2%IVr3_mRHvH=DSkhro- +mPO)4}Ip@cLSoDRAcMMOBdzWF4ThQ3u_yb9t+w$SZ_?keLh3Chfhg(u<`)X(DrIwRkrVp0mgmPIQ`D> +m;hb-CeZ0WcgRPj!CF6%j_$Q!rjhdEM| +n%=!`SwVIQTO!{LP<75~R=8{*% +uqhC@wzl)ljse}^61dA-I>XhS-_wB7)=g2oroz`<{e7((PXqxSsH{LACH7yU!p@ti*3}qbnqg0yC1H0 +xns7EvYhy*#}Qvwx0vYqvG1vHs*lfA;|~y-af$s{JnYg22ktQ{31zZE!j(HjjFRMh(2^aE#-dVOF1I$ +^k{QC#NZXJxb4^C;0yVLkr8!mV*6qa?Q@>xA&a?1Sb=ekH+PpXsRp>W_4%AVwJn^g&*pXSau4d&&lg2 +${%rtpiE>2Mi$K$fdsZkgD?2y#!qbqcZHnYVCQ{PvRsLeBKtiWvA4e=Je?rXOVypeb+rrf=)W7zgBKYoT$W-^4qA(gcH8=1I=&o^C)EB# +yta%cKRWu}wFz0j7V345HJhM)9v=tcr}(ubD`xA8Jcx|!qEliCY~k}*$ +7fcrF)A)QfQet?jCMf#zq^3O61sMAVHs$rP(UaQJvkKp2qh#dkKaCqNj@TrMxcyF^SLfjyeWhSn~b6M +(+45mh!znl}!IX|%DEIglz$eY*8!b-B6y}~V+ihY~x&7kXBl~#>?0bNKsADCgd+_TMJCs7&>z`e0gq8{eVVLLpK&^h!tu{O2k(XSLunN;1ysPLvI +UZhybiY*UBi_=a$cYz?U!d#W3Z&K`_hJ^nmz!_cJMu8i+2z{20=y12oG`G6eVA9eEtW +)BVLSR+-X;Jy&^*O~W7yrP)DmhE3aMoqHf>jLmYH=gP@+^C0xf=W%fhV?qt(+TK8D|5F8(5iUll;?m +lV!2b&u<4%*s!|uGQhP+W0w7^V_)BP=DObfj9 +HSTpWF5zkgOXg;Yj2qFUhGG+0LT(J9@=Z66x7-PB +%g%PvPl|(+G50{Pmd3<)P&|RoaVgp&jdGdUhIm!K!k3piwlv4niGXo0h<9VOQw}A=P}{38-f|5Ekx*b +B6tp1@r#0I9G=;XU`{CAu7m8&kIKCeebU9p}_7hU8*0w +L(|t1e%@Inpd1`6U&gLtZ-&&{?Z`?(AMh-E>xy=eAS@XZ@~NS@VlvEi5@*pj395>31ocF)iye1Lnz-k +?b;oWV`eHDxp-+MFARqj>j6DOo#?q8WIldQ-xgP_;6w{?U^*65XQ_M~jMPiyEF~Y~|VfUd!tMt7ZAK8 +AmI_OS=ex>l76o1&1}|p}i40J8;>HQm$vlu{fyIjTB71}MRiT@ZTdfeXX^2Ps#noGiN87jgZ;Vp@F%-{0gT^v`5pl>2t|+>OcFQ)V>E-}2*D5p +Mv^qiFbEEBxbVYv_y+wV_-%0Yb{9=T&?6vVz=qneA;thag=PR}k<{Naf{V?%-=pY7iwQDdtXQ9dy{>r*~8*L8>C9^D!QNJ1| +ZApj@L@(nv+z?*wWk|$`}S;)g*NFiRtPPWrV`tMz2e81@-=;pyHoKuRm`S^2Je7eP_16_MFgQdHKIIr>3>TUCuR&DPd +pUPd+*aKgOM`%v+ramfH=P15Tug4*Np=D!V!aO`EjPe?^d#d>d%qOR1u`cZzHCUA13y!pIs(2?ANN)l +=KxcQiE=k<;v_9_n7XzEgV35c@g+raZG3k+udP$BD)Wk(h_9S1EOJn9c=>iSm@z5Bj{x;uwy#AByF^`%}_^Z9s=OU +g93UCL^alP#jDmG&t8Bj&$^Pb~vBiY&Nt?1+<(YXTMkx8O*kR?6MG}`GaJf5CK#MPvcZ(EO) +Sk?1Apl`|c(X$w@E`bH`*hanW{=ViedO8A5?d2hNRZI?R1aOe^UdvO_myw{G}q`qFvG!!5H3eNI5@0l +GE}3ltioJ6FGzaYBcy&OBF^l46MNmoL}ur!N;M77C6VcA3apx}(|P7MZNlX0R=It6g{9Vf2_*V!Hbl%_-xUs(u93p><!LgCar=i7Y<#rkfjY?YRxfAn5E+MWi?pR_Jh=PA&RLo^a&M?Z`6p0 +y4J>1XrRS*Hi2nFB0c{6PqAq<%lKqjysXS6@hk8kCZ~HF1x@u~kG{nlLtSLlkRe-T2g|_&!JK3DSj&- +>m`sGGJ;a93Irp#BbSP+Rhr@^qLa-OuyfYCl{S1 +<8sp|<#{hsnMl_)9Sede3^I#Z;yRV?Q1Oo$O>HTyKlfq4R)iTTOP2zshtbh!+EFokZ84He +qIg!F;;u85e9#7H2>d)+i@@TI`kX!mgBRpS2>7P|H&Kwg)?Dn>Za#^)!h3B{Lqa29V;&I6S*oIP%+sK +X@T{V9N8NG+ByCK!$$t%nG$eth9)@J1MJ+m&U4*P^LFl%>%)R?3%Yx)+A*~=#Hn5nb_d-^rP57TM?sA$kp$T*F~;-$XWu<^v&E0D&cs)1Vhzbz +0-cc9zvieB93_Yizf=^)U45-54R7+KcGhPMc71X*Z=m&e&ZialXh|XsR#AnKS?5KM%>!zsXa@Y`ZwLuJ{!8-~2y>MDRkOPKKYI0YJuzbG7%;O#b`nY~4ZH?Wsvz;FP2pA! +5oWNxq)M*-HvNpQ9a4Y;0w-zBTxSV_ +Wmncp8QcNc=wOR?QTYy73#ms@DD?X(^JZsZXfY`-%v@S*^9KaVM}uTPFd`B!ue{WZMiN7i^v<}$E;^& +lhV=4PR}my11WCO!k9bZ^>U@wDoo4cUJ1F5IGeVv`PC +*&R2MfUDH1s^XbpO*{A9`WrCBrBfRrCWrQp`sUdxSmq6s!zVq@z(9pl?4vVFojx>FdVKAdys|KGvvEo +4?I?OM>)-~s9&bNrR3PDIkSvn*pevSdgOI_AiK+RwnQait~NyE=6(x%_1Q0wA#Lb;g$T^wS51ze@ +?=p{*#Wv}(HDw}t!fr$`ul3jbvN8@CGf&VmC($lf5k2@|QaseG{`PJ|7omec+oukuUxl3xqy0(2%`Wm6nHR +RTIqFLENy773I+8lL%sQb1ab27Bqj_b|ZdlDFi)I)U0lkh@c9f3^IsrP#)w81MUxDAS^Dklg(SwHL?rx&OLvQzHtuHjXgK3~ +t)A(iH8%G0+POQKE=hps$_s_fVOp+CN$De}mv@<{w!3k>x03iD4F80hB}=ASMw(9bK(KV4uxd!F5R-r +`HN(sr#b4`}(ZfY<30rq8#9e=-Gj0mWwMU2Wzc(}Dd?-76P;MgA%o`e`N?tF~*FURx|^-um6Fk=O_f<4ONOzpT1qC*S1l6`U6Bp)U?EPmJUrS{w;e9UcHG}SS$ +lOB!t;z4F-Ou8Xr>PLYh#Yp)z>1wlGK=gYk_QK)q|YG)G%&R4niRv>|vI)aby&g +VoBuBx|%N+(3f!Nmgi)o<9j$z%KokK@C7L9Z{(YP*SUG33pKUZECzpU +KrEfWKu7*lH;Adqx8Nv~bHZeueuH46xL;qu>}o>Y!9j0k+(Bst5_@u(lik#ew7*g#s?YhVtRJiYXO= +H$&fYq;v*Oi+X!s0}JaEkm|SmBM$!(_d92R`{nQW=XVp{-M!2?9e;uQ`~M%}{_j}eXXOjMj^_j@lsAm +hY^V1}*LvTBq{v;bWLJ3AwpLVvlT( +V0U9%ECAW7kN~q#G}$PC+sSldpJqJ?L3%Cv;G4cRyU(sJdT*mQ(SY-5g%H;NYb;dhKE(kKE!Z6TWI19 +Gp%lw9dsT(A5$)Vrp$9y$SZbU~+8Vmaz~P#|Kp%x`xj?*K-1@ZAQP$cM%>wRhd#M35Sy8#O-s=>(#_1 +`P4FP#4t$ove)9FQJuYRH08+1!S*G51^e>Qs6`+V_m^!QFIl(~r6h>Z;$l=^yjHLVIqQY+ccnh)KK+t=KDQr +m2OeIGT1c6B*61?ewdC;Pv$>d`etTQ%oJmJ%tqumRLRfS_Ann^{dMwn;maYh66753Bl5}5w%&dYtVqO>?M9Yo4~cryH359`!zs +&<#DaAs5&5!RbW+OCMxt;l!zPHcyV^0Lsg!_3SBelU+?D>7OEO;?$6wsot7Wy68jD75vxt2wc%n%8)T +(2q=?_X&nMi7EIS9tr3Nb4p#rtM9GQKXPd0UwXAvr>_z*x%33Hj@R;+!{5gDya7j@2x_m43m|-81h3Y2+9-Ruwl_F*3NXbFz-*0y +zKeU{K(2XT1^!!-*%&`Z8@weC8rg-(mkZ!TG0x!i|S`OVHNj)FKzST>k;y{{r`+e~b5jUedndeU(=;O +h~I+dF8IQyeGKJGZRN_ewg9DrG;YFG^M(uV)%@f`U<&^ViJcgIc0w2BKC;;{O!p$1a*8}Gb2FgWD3Yk +x)b4!v{P2Y`c@QZ^&;F;+rB(j=z{EgUB2m)o1Pl2XQtz-Gl|bv4-0`K96d_c#qeH=9zHIuY}(}X;JVA +cPp%sbwD&WV&4+nN?J7evUtKzQ5bC5k=0&@cnUkxAiPlaXTJ)}jXzPAY2{qQ}Vs^>T?UmKN6$()!XG% +%ph3d#C+|E+C@WgPP^{oFlb#K<>CYp5%-}5W_p6@jC)DiCm2oN(uOcHm@2qBOd#PI76;Gt|+y6o!iH% +@#JRq3=+3{uL^+G{^+uLYm%{LMZPB!0R|=@#YGT}zKpolAM)%IvN(^PB+JVnN%>k~~Wx?ORF88utOd& +aZxbL^q`OeM#rw#xPu#)jd31EB?ZwPV*cCbar_?0qj>5KD#?lff!7X#c*rSm%<$GCx#zhub1Sbr{)eS +?aQ$7xGvfw2or?3vRU#aAueMA?1>7(Cr#@X-LSdHJj`3&smi^sYurA`-YZ@nv*5HV9Si8XpHAg6J=9D +*axz4;T?6Q__B>lpI?B{zYC~dPRLtR8(Oq>$Zz`3J*-6KJD$hsU(eJsmYcYI5SJZt)~3>=UnUt|ElOg=7?ZaC9LDYUt^4;Zc=3= +9iewo)41pymdLs4MDS>5cm7#e)A7LOp^J>WTo_jfWc;e<|f+s&vT~hixAq-6#qXZnPoY%^#R +OnK+C$Q)PtNWG2Zk>wbRPR3R_)50ius?Gg`MzWh0~2@v>COY(Z8!@=Sf`uC0=!Z#X>*f~^28DVEQM$b +ibbf;s8!WDqKa|9`ctK!oALN1S#T1i2tIG6I +`OG&|7sF3ZMw%@ZOu-4b4Ka>^ZW2&hE!nxIS5eyJbUwFYwF|K8;zN+c{zdA9cHGta#T-PE>u_2R(U`m +BT*J~&cvOGXgsB!vlr7?k@GshD0a9`i_CSF3vw_uFsJ89L++!zt{6uzXz_-X0BEh%k}FHNmv;p^KAH& +Rv%Ja@r@OknsEpeG5V{5LYkReUsREu--|hM9e-l$)^@}=bi)M~KF!_$>@PwOf +0cO%i2N%otk??X8%jYT!@1%h>qi&Oq4ejoH-`X45CX{_7r^&p{+fxPIbNs4MhjUcPQf*W88VFDM)}kj +KJo|Zl*rT4^Th$pJqlzMWH_N!m!t#0^jRvt@Bge)JXd@2(Tp#rt5I`Qaf0 +n2n=y|F8*b7S|FFr_L0kdf97FS;U!KoSn48Ijrzzag=|Ak4LmwL31y=^HAH}{t7p*1h~U+da>@okkIt +e=xC^n`tEMrCL-PwdtCo2{$TAUK+ONyYa#GV0p$@}I%@CR(()A^D9(v?YCZL_zx1(ZMmu99zmcj#mx? +JZ$S>nn(D92EZU)I-@GQH(@cU|EH41J;l{J5U0xqit2J}APwS}?L$kiX+H+-A4+qxKtE_s4UcG%o6E~KKD77ENM^G{SpSQ|%_c5Qw!zYDg{+S~hgM)i;ysWs-Um;k +ts94ZvKk^bm_?Hf?XunHVZB;{Z=Q2-wnFaDM3%eFa2#!jn(d}|n;!(S?dUUm3c(8BD6+ZRt@j*bn<-w +BY*$?`mZWSP5W%f%sQGIvNk8lh83U7Y}x4(@Z=5bF9>mRF;zE3T$*FHIw68qRoPBcx +kI@PQkjwxgM0>EI!i%f;aLn>c?A5Jw%cW$6YFi_^{$$^~lW{k&hdr9p@lr!Y)QuAgP)(sc?8SZ@%|@s2#*XPaS12UY; +^VI^iOH29Lwb_LlP_aL&zOl>S(uy%*eYw}$~Kh+L(&WKOKD2aB6TPthYdX7`iu-K^`spD`?rx?X@a>T +u8`Ax(p-O%szXhjjIyL=1o6EqnH}rgBE(T`70!QGkcSsof;^-OC^}cNDo@toqQXr3-YDi_^~eRi}1#Y +pxGBy>@VX?W3og+fSLJw3`}W-Go2lp;TO6xeA(@f*plrCf +~QKzhxCT>R8ss~bmrv_Qo=&5hBxvH#cy}dJju*C^xL`F*Pey3K&DPdLipwScd)(-wzJS;t%X9<(>8Uj +4@=e4Zi7xmd+@c1yYPU>1H2{~K`o#YOLb3wQr}=l?SR|L(beiNpxC?Hg?(v~ +1fA+5+d}J$xSDzz>TzdYJBcIO|_S^g|?GQFf)0bhZ)V&GjhR##d8#Ps-T?e8_OyGTWRP=$&!W+hD}zV +VnH~i3xH$*IE#)6+pO;;L_B_TSI*F`CsvP#b5^BN`yGuzDCHF{3J9ccb~ +GE4(P*qcZBvK(fBh_09U*jQIE5C=6FOJL?6y)QySoph7_NCYqD9K-xmkxq!k?!0hr<<}6rO^ZYx3K_KxhHoD+`b6@Z8&vCtt+r>8e?X89|Y3Cl3^$r>EcE1~lQEc7eJFKD|gOxDH|2Un{wiyf +{2bA5!*3`k&4u +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 +`nX(Ht{wL5a!X`0 +c~idKG|;PaReWy@?Nu@lW5SG{7y7mxS-u#G7-i4)117v1{!pYY_@yT0Q@M`HI_xON&`3*$47_7D+-ky+$jfjQZR#sk +L5>|dQczu1O4;oOIvs6ZnaV{oone4lyJ??sJ$EsxU#))2zc36=X0{07fnd+!fh_DQLtZ3f~=hLq%;5E +h)oA&Y8%aau~@AnOM{5p6$Lt*9?4*8>gYd94Qs{Cws9Y1N-OTD4K2(pByO)>yu*ScOQ9`}kAim&Y#Gh +~mvtJ%_hcJ9F=pt`9=Up}tu}=H-*MWLFlQcrA5gSQHVAb8=W{mI5 +2*PcoaPHG{_+&R3`ySHH|TBSYOTLBW>ZT`sX3Z$$nQUvH>5mZwH3yrgPk^KccPrUr7r=ZW>QG-N1b_j7By +B6EWMZZnF&OrY<3N-R73FMeWpN%hvoQGNv0cKFnW*BxgUMhwCkZ4SccVIOL<^38Lb`qN%y-0{(}xU*p +;2YXX*T?+#3#Si(Vc0S`8~uVGYwjgDWyZg-2;`FJ*XeE~k%Mzf#M&P7beC04Ne@OD4CTj1~9?nieE{O +oquMeJu*)7&R7JYn;~+kovbX0?hxS<@w6>jLK7&UPWP1)0#kZ@DSuo&^H~-^_&_kmy#}7udMSCs14~_ +EZ$sMO}p@U7xHXkP1h?C9SMRBUC9KcPg$S_$Kl}IL7I_5X2()tx2q{OvnKtYQ)}qE_Y%4PDD6RR>(s$f6kI6+CfIl|7P_WwzzW`ruc-)fi9Z+2fQ|=u$ta_R5Yad^aXnuP_?9p8WyI1B?`K+Sf4g~Q{*NsjO#Ks|`iDKQr0UWA<6!>t|I-|PXJ&R94? +6~JD#D@u0xTQW99Z;QB>OL%>+2Z6Uq11dl7BMZTSCd!e_BCdrBo{!i_ndvCFF)6+twPo={Ay;XMOBpM +eG?emQ0&4U@4#O +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 +*@tw{$ulX6{pC*6H^ZCJ6Xw>J@!;ybc^xAYs +{scsuySRw3AIDl~S3|bW5CF5KORu|Fzkq4g-%VJKncdMQ`Z1AX*J_91je7`txS^W|{lOlPEiUR@25C> +_%!-k`utaBjr?=?!)%pHRTB@bYT27YiTHQGEvK)@FY6%7qr2YD#HZE1$%ga^xeMK2J%+Ijv{&A?bujn`Jf +-gT|?f=8j7(!wg`eV!CZy)>xtA29ecarK4jT^{ab&US&Q-6Qu3uwoLNZo@0c{sM9Om(2u!TV~pI +?jQDM1O?Gf=&+|o!mcZLa**Qb>}EP5GFGS8-;#n8G4D@c0biY=)Su+VA$M!)?CLBeKuHyb63>q|cB$d +@tO?;aZgr~Dp*oI5>94jX-$Z4re(u4Z|9Z#wykZP!I#WNe#r0lpb@IV6{Ayl!btg3;}N^78j^bo*&v{ +fB%cBa<%gjN_Oy2Euy5oE#)fok7o~sKKupA>NH)NRS-ST7WF3LUeDGWMyipk|U;s3E3I>y$KJhWX4_| +K{o1){Gq|@=u$1?L{o239WZ?ivXcjBxQS-Nsb&JQy`E}^4p2Lh+qB +*)1Q*X!R~V-G76$0TiYB*Uu_(XX!^?TaP^Y8{@^7JqJdpaS8ymy=A0e?o{qBTl3*_)%&v5%qkq^o&f1b~+Ft>#65Mre$PU{0Ap{1+E0V5W!_HS(q%$!S2| +;`KqbHF`BC<^?XWaC@ofeg?tp8+~`COk5N(*K@%scolZE3b +^wdQLu`}p$u#?hf^{KGVF-TB>9kfXWOA`0jcwmn=O=+A$mJq?!c*6udGTV7uL){(|dGW`U3;rd^0s7 +8;rX?o(iCiG(ui9`;m|bbYJ+A<=A}3yV +x@X*Lhxy;4f)O*OHy-)(Cn-R(%IP5YO|AA6DP!S@-peI?1yyCpEWF=Yhb^o-HI+p?ZurRysPk9HHS?N +UGUB1x0&bZcp~Jr&*bglM=m2JmG2N=2LG5#NW-*4k^!EI@ZRVtl*y%Hi>Nb0A*-8m7AyW3;DpqFa>}? +dpyHpA<`f;_KfOOJ$Cj;t$2rr^o)+izWTvESA(uczC+LYnmQikx5btN4J<74 +1lk-j@77C`n{~a9H;uvZQxfGb^B!wPj|=I;3`N0 +2g#`&Z5^lq3RM|J2Ja5GfPrR;d97u~nWl2qWFdJuX-&d_;fPSfYJ{P5j2ip$Q^I(-0RQ5>Tg(xXi=RD +Lt5u4X&Ow*-yFVIc7qHpT0a#;T^(9;EgdF6#vNXMU!OH|gka1jR6Vr$XB@zETEpt;(lg3MxJ+}$pH8q +>n$CEpiZo-isA0}#eKtT{}KV~{ozcp&Q=Hu@NuNNNC;_PGa1%1dWdqzb@QX6Ip`6RC>jHqgA@iWMcwo1oidG@dQg}>Znkp;7I}mtQ!X{;ZXa()!VARr +fe?wKHTRaBYq6=2a86xA;YQ_!P6%T8L=TNL6y?xzKww9UUdDDg>ISo1Vt%T053Pcj&Yb`}@U`km +5@QRS`(x-7vlZC#MJ{I+&;9oBzAT5_@1vz;aySt}E>I!N2j+(~$-2@Y1#hReUG!#ur~_*_fB-UDxK*D +OYRe#t~5;p*Oc%!Pf&~+nSj!*XVY7fr{C6d3LxEP_*bb_0Qg^o +Y(PG?9dwX6RR@oQ%%-n+JU^Xf7F$EAv&GI2k}xxz6br{ +9p7(bc*@nBdTHS=J(+2B5u@E0)o(>k9x8B({a~Fexml#!brNOA5uxLzZbCdcD`%`$X6`Ubi1%il1coV +kZzh-FUL|stv(sAiL|AykXh~El}yfYSrwE(1X051#Jwkr5{?)+GuoQbK24q2Z($$ciOKx`yy|+*6=`+ +$d=CVCwyW!(IUA9qqQ@{Q{LHPl37w8Dlxo$Lr>DJIdSnbR`!|1gM*Ye^{GT50J-v7kj$kUIciZQ18<* +hO%uqDBtJw&`!UmP$KRGaG;F)t|Px;{D1;PU*s$z%g*;)Ju8;>P +&XFcEXu1#`875}3Mi^>~8L4V0%RfSyZYrdAz-owu71_vdqpaYve&VclMuh|y|8Kq0_w|+ka+SYqc1+_>E(bg^R +p`e%iGq*v73kw|PUc4=e~Nx;MR$(&d&SYif(bwD#*t6)>mk6Feq>6KqoeU~83&K_6P10fUxA>1=g7g! +GU!jZSdkqIA3Mj(kdM_8dKBptpM@3VBfbrOE^w%$;D=ZW_;EwbsE>GEeypt!`LXV^UzqsFlOBsN*~kB +U=XZa-hO&HQ0OtSF?D*B}@E6i!@$L#-HoE`DdgRueerO62lFn+=j(Nv{-paz!4u7~5cstR_rf>&CX`{ +2R3MQi_{Cx0tndzf+Bnspo`a3jD63odHy)p9i_NZz7YMr}&BXi$q)DKbsM?EL~zB(@ar8!djsr?t1uCzWMDpSz +Zy_vn^`0~Beag#;GS`mf2(j)6^2pS2 +s0Y(MlOVWB;#iidAVa9+cr$OJDx_V`2Q$Cn;L(o +ndz<0Ek@Mig3rI2De80=SDKNa{i%Ig&zTtT@{>pDPzcg7i_B01~qmn*(~<1fH}BQU?M#rUb4(uM%~oW +WOEWaH}c6a{0T-=h0E6W8~j5tyCdcsJy=$Nm)DUEhGO;&XF>Lj@~NbRsTp$)ZkfCURgV#mLRUy?H7zl +|mH~gI%YPSlXja`R@2g98$2NViUgz3+nY0|y+n<}o0{`!cFXgN +iIK%eKmafAFT%J&*y87XgQfKa9kG>k@$?AIUB9Xt*G$p +wSL#Bzm-V>>!jUM-At`1O9tJO{oKplTU5K4z474obp%$LJnCmf;iTiVC*lc3DB=a34-PPAV^a#k?Cn4AE1vYKwxc=@4b)WgcP3I{T~ +FR8~@PQ@LMfrVeQfAZ&U<6$dlgPA5slpsvmv?6NR=yB^9UMl=MNpd#%RGA-5epA3Jz*+V@AlDh=&MZ% +1VVpgHMV+gwa{+E|l*Z3yv%AEkphre)ms$JOcMVw6ccr0*~K#BaBF2h$kwHq9;<<$K125-j^?+oPj>< +7f`q5&0e2j17EG>R9C>ls~3U8b&DFC5Br%g~vJa-QP+Q0KW%OPL?%pL^V%+E*aVuI#0Ytl`|;tb{C1! +SD!Lf4-emc1Nl5(1@Pp+q4a#`n01Ok?K~Fu?}|M291AJF9|-o{p$)O-PDq +|dR;E^n}9Fx_{vl+$-`}N9$WPR5B-w%n`~gg8(i-ccn-!8zpMdahNZp#g#cf8QCobwKZ +D8HQW$}a%(AJbETTM(w21a7^V4gETo33PCDb8KHE2ovtoWskoqI}L4mZ}KLay`RyMe +?^(kJMbipHKbu5l*@RYl)@lJOHsC{2p>0TCq!Xcl1E>)AA&-tX#(gkKafKO;x=erC3nEfoK^XwwURsJ +OcQ?$imf83F!zwG#Bzve&cEPy`>EnYCD(fYG$r3r+B#~GhyLU`_Im%}IPwuX4+3bE4;CA$Cq>u6X +VK@>gUMRC%l4>1D)ALGiwjclMW{mT}C;I|Vmdp=GJ)uMzn7QJVW7j^*0UzkZ5MkB-QH?Z8Lv(7NyN +i93&Y^cP(Ir^kLn;{Sf!&%GQ74*s_I?~n`l6gJ==1#px&dM2rlavk#Vr8w3GKB6~B_TAdz*T9wh_#Y* +QiYD@@_Ct^(940?U@8AX{N7x8cM;uywJP)zrP@XHmKfzh_gV{0q>AOr1i;F#M#^Fyf$49dcLqEa=*r% +rhKNc!-^e|wg^5c;F5CA%q8RE~zADkF-5=)HfXV!B^*_;kiE^9U1O&NQM7mnLMTF&2GN_0a! +ExqSCcZ1t_xgnd)SEf-8h1L410wWyHgL>mB94r@Q;G!@v+0rH0TAC54JwSQi)_U$uhKTfs;?=H(m&;LoV6|r}H6%KuEZ}V$kMxOyFCkQlRaGTbd|e{?^7aCaqpqMhLz3?G7b03WhLz0c0BS +tp((gJNS8>#UR(N`?-kbNAbnflxuEmaWy>NwOolw>$w*FLg?sN8}6C)Z^-7I7uuZ~FLd>wa~)dT0M%V +0?-%k=3Z4`LcOS%^Xt#O8$ZRu&47_^c8;c}Tx^GP1PwIB11`M2o;*=DQ6f-Z@jD>1g$`F!ox!hw!Z{s +3G!yqF>4~;Ft2kf{`UvlOa~o^a;LF{n-mx}gDbBe;#~o;U +p6)7+ynMOI+_&~M2XSoE-aFgbH!zt*6Ujr6|E_9wq8poP_OtUvoLz)qL;AVCVt5=C+j>9zU{<`L#cpaxP +N%^xhOH5s8@xCX2Cd;)4BVC=v@?rdfQ@yZy6K>y!h4wmG3U2dh-o$AsNyh}q;Xh9zlCpnYp0D6_qaer +tWF4sIMv_+Wje1$BwnVQFlk8VyK?3LQ5i?buRqY~8PIX5@KzUR +Pbb4BwgJbWJHIsG_gU)IpXgfVl^8XH?=Dq(Vtp3x({~E5p9{L}M{aeM^9n(_$2teVFDm9#aa>VGN7qm +y8*cT0hk8RcdB>8>AC50a)|2r%n8DH$<9|a!r2|IQc@xQZ=NYEaa?h$N}A03Z}Gz0ZfujECi!uhoiG&0ao$6n2t5MmqhSC&(0-4S_qVbSl9PXp*ye%Q@ +1GDG{4HV&^gl=J%Z+|~!$#Tt8;EUr;h&(kyXai>3u?OyaBTeD(EjeofIl1BpO5UHc=syZT5;Ag*C#}~ +u-8|x@Ed{EFQuc(zOeJM?|}AJDpbW>TU*)g;SMY|(lNynrSA)J>r48@E!1!k#uF7`iaSrFwl?siJYAB +~U^5K_5XXSRNvbxh>xrr|9HE}kitssM^!%yBXUz;FhPY|O1*(JW%Bkn56-TFqNqY}^BH(E{nvkz$%q0 +^m%?Op89KsLR65Yhqu_dP}o&!2tH*59H7_D^(MaT+?KpWImxV3^KCk +c7ne56Eqs%h5DZ{;id2{p!}uTJ!Hmq>k@b`sgWr%40y%*Y5W#)hvUU-;vwfk=x#pTYAVMzyD*Zjv6CT +Sb%Fyz9O-GN4^dwh=Qs2Z}4Z%$=w50P`?^~+-R+K`%>w00P#`%0;Gu69toSz29Q6VzdtDLg`ejdM`J2 +aQWpD7uKs}i&+R;#JF)|oL*0I|o(_~YyHj7aj;T0M?$xEZB+wZUb7MX801l>BCDRi+v>}fA)V$Z_c2{QawNP)AeoN18O;%N~p}(&_PydUn$GZFirWSml?&o +#4{UMh$V%rQMZPRQVq5srGlzc!{SKWY>d6BbHaRXi_gfCc2phEU3rQ@p2uC0dX?I^Pm-@lw}&9sCBX3Q1o!KB9hbx)o~Q9Kf^?0Cp +4E{z@$?L+UfUXwlVc+UZ?@z0iR#b`E!@^Z91$5<;rD&Ww6!O;2bK$WXxc+p!eXMdF^3WrLNcb~d$XJ~ +b#AVtu283<4Ga*qgE(Q5959^{#2+sb%u8Mn`N<6MaYeH08xq_TgxexB^8WoMzEcOE)@ylJQ|m$$zDKT +PR~36e{|-)7gEnd#YB>+*v~{^(@RW&sj0`K7uk`bC*`xa2etIRTJG{AWk~zPvp0mu`a0N^e_lDvuwij +q_QTtl>r@Vg9y6r<7+Re5!8rxDBgIano*m@Z{67p}=iZLed-V_7_5=BSZT#ig)_#Nkj?X*@E#tRs4${ +H!fvsty!1%K-$GR(Ic=dOOz&9fd&aI{ge0+>a}H;+eu@uA^bZCw_CY-$qQa?Ppt+GU;3zL$GcP6N*qV +|TBHdmJ_F16!r3bX^Xp&r#>+H-@Q13Q12i-B7J5RjCDW^8FMRW$*@}#7M9}(`1{G<2{3p(Ock$%>Re!4TJV8EG<4sZxU3gODbk+16$!1+h64e^(_=kkf%$MHg3;u +r%N^LgjPX8qDwaVBVa;|6sab?WOk_i4FHqlItSJkjpy}bxe +wjNPizo3C_8x59;&t3=-HyyM~v$paBzW+I0s_`&5T?YH-1ZcdnqACZ=`&3I-b5!fO(G?;RG!#~p!Boq +j8bbzasr<#Br&l@dCc$(Kk3{B~iBY3y3l-6^7lK|~2t +7h)SUx)}zRP&acISM3{JhM(w8`mQ>4b|!h#EBBbk-Cr(Vbz}cP$>AiH25V3PI+sqkE!IJFOu>ZpIDi+ +Ce59iyg45>uW!O9q2|mK+&bSZeJ2dBLDRX^iO&L*#4X?m)B4WK^);6$)6|tXt50y+e-vIBpHcc+cENo +j8!4fQ*Ll0GcS+(WguDtF-Nrj>0Xq9NF-0U=_%a(VxW-_R<23Fi>uwRc4EFkW_#&Oap&{sfWS0Ek#=q< +bVbJ_c=(-4Ne#b3AA9!_3c5_hOSUUAHIG-Crk8m(aHkp?WrutP^sUkn0F++O@@f@^b5^c4=8*im#=+s ++t#O6^V*7&qvkEHLF>ZsZ66z3K!rKonG%7Sifg-1yuAs@&ocR*&BKB^J1)YBdQ(VUAtbY8;>|e(nIP+Fw02eWy`HLnUxA8cJ&Ts3Lm2XSeiXwQ7x{SltHRWO-SfMG)VIBUN>`9DiGe#WLJ5?_DVzj +h5Q^@jU(%D5k4(UaK&+_gH@s*EemjW +lT`_H4|Le@0kSa>$Y(Lek=)azd40{B$3_a>S&0zWknOObFIqw}jVBmfG$92mxuT4cLlFo-g6RU~VJE!~ts}5N`PIrCsNOXVQng6xpPg8bX5bSvl +!Xn0u(U75WcAgzJZq-#|-zQ;$?tX#&@bN~0^Cy4V_blgr_OJ9#Ja@0B&do7a)NlQlub)a_gEX`q#iVJ +oq~ps&oe2QLpV`|Vkq}Fz}tSgVzQGU9zvP2K0FvO2^iBVF# +^7NAv{dwmeI<*YXE2rdxzhb!rGywpaip6T`;Y{a~(u?lCkrmZ8$t+;lEuj-s)x^RZBUU)|~95S>ka7TO#Q+r +#j+7nm=x?gqVTqf`dx;$*G;gRBoP4Z+uK&-9{R#J>7XO5zDn%wDP_c4$LeG^YRNQ;`jPiP7if<+@YZ{ +b{RCULX<{wju9Qf21w%>4+id1}QMvxUk&&U>Q;W_Jus`m|0%2O-TlMb+zgUH9liwk{@&N3urusX5TmH +^#Hy&hI02Ii^cthBEMd$=~Gp)L~v4|3fXoM*k+^A>2YFoTET{MfY|DB420{znxX^kUFjU>`ra!kBcI{ +^-AB=JM>#T^z~bISckTdQ5&8H-YW4B0Nw*Vq*iWTjR-H;_e;yw)>3+D+0Yc4`mM7 +Wt$D+#TJ~>Sh_@kymW{)=n24`uDrcIN9Xvw6Lg?ZCrLr43kq(zgKX{Mn?_ju%vM<6X3@Uuh7^t7nap} +8~7{WZBTGtJVpTkZ#5K{_w#@;E_c9*@hu-~Pz+G+-|KnS^jZBmFowL<`f>B1(tLaYFvbE4s&Hc$`=y> +4aupw3yNWVeVJhuatkzsO?wShrACxHktb|lKp_{7+Gv`+i~LkM8YwG=osm~-~JK4yb*tf&eJOW}Y+}g*KMREWt((37xS>>dZ6mnd5>dDvHCF+=2k!gMlO}wrtC1G#y8jjy`^m@;J{B +$U=cT*Ptz2X6erw-je{J{Md;(%0eVK>UvDm^1qP@Z&iq#@<|6L$T6$kxi6q-jhQ6SG>a(};%HG(gJKX_VJM))7+k*gH6dgPxs{2Kx{DlZns$&P5%StM +mHIhpZuNAf$eWsAOm^5{x;#=Nxz{@)+Qrt1)PQ%d#q}gdu6zJ9Q7?Wa#yFFTOLawyp*r!!#$1XEzWfc +|VVpc`h-bY~S@Tr5$MJ^3S>V)R}YEZThL&TKbfi+a7TJm0kbuL3YGp{GO@{y4>vI~B5;M$h}BCkA)hv +l6XoGPV92P3_DO>>2AS_?fa)4VSwUx803!AY`XnOsi!$wsW=#<5MD0An|KuWV1?%?3`Au* +-O9rm7ScC6)+#1Yg`#gV7Yu%pQMP&iAD5u%5T* +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 +Hp=E%r?ej427>^SjC%9t~E@V@zX(oN>QlH +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 +i!*kn%{L?%{M#py&ADL +_-C=@6gtw;8TM05{)FH^LRHyEf;l?y*fDi7JO~{JMT9u?62Q;2?dUVx=om;z9GUL@*!#Nsfp?IYBnN# +LOb=oS`stY3F;|2hxC|oqYy8`&$`oQy7G6vlj1W2EsIpB_zeaOn<^Nxxs`B@!O6MF*-Q?e*s;?XW%cx +5F+o-A-%KJ*2RqUeq*?hgR;dC7&L@e7$D1uVRfajC!oYZ|?mdLq!kTD7x^7eAv*X4Q-56Pl`-!Bh*Ix +nP~QFm7?u2-zEct#a7ZBXw(hYr=6y!;(Z`RWos%=g-@8D~wJtFfLepE5;6@h;3lfeHx;m&0aqYHK`Qv +Db-OTOh_Rh9CNzz;Y{wrd6rH(?i2*Rbx+{@Gxv^IInJdt23B4Gn<2!;{;dlac;)y~i&75#= +xDz+QYw4#NvTyB_=X!s7sO7xBi**8Gxb8)Z+UkUGX$yi7^cFV_2zXFuEthxKc^hNub~#%^g+uILz@CCuzT +|EInHt7u-Ct0k5Io7NDA$G4ZpEi?+=FPT&`}k_HZe;};q~GqDKo*fHeF>$KQ|Of3*fCe<^|dD<*9C3^Z_2@_X0I$@7!4gMuYf4MCE9>vlPo>p)(qcLoQH2%PD +kL-m?SSSDwHh}SJCs|5W)YdjlxeZ|`GHml)T72I-;(>&7Mbhr|FO5|on>*oU5m>l6CW}UoZQpoH%{F) +ich#=_waB}fBA255km*1$0EQ7&Ez7fp`MG2d(K%}>AapFP_@4+q6@@hxMY`xn9mMu#!C@3nA)grI=ph +-d%VsRiR47ML*?!Ea+&JH5yU%tn1gZB=2n{$Ac-XHZlr=>sTlMYv!~_Xpt=%A+%G9xMehB6TF48(Fz) ++I`A#5dGMM+Bl#Dm+uH}HjUaK*L~jpUVZwUWiKvnDSP} +MOc0R9$L{j%}DjH=YXjjFbFMvVX^o`RfqYWYyyDmaJyCXO(PON(U!=cPIK@pB{w4eq?5FPGO4Zen!GC +)-xeLT~oiP3qM%zGZTP>98-YENG|e^il^!djY~jCHmI9s*jEk3Lnj06NgS3XpM5ocB+Cn?dDR-%s%c( +Y;WmX}H7wV*LJe%RW +0ih&`7=tQgsx+1~z`H_bnViTSIq#q +69J)?DipB}NFEqEjiF_f##~_wq_|cNNaUY_z(GHhCP(2&^eFYTjlbU0=(71N1YFlKJ=RqtC{xwgcB`xZz3wo$2?zUc=I!kbVJ_OM8n?f> +mpS`>uv&LV~CJpbG>-THJo7m`%WswiA{7IbZlJmPCefp6coDZOm)zBtUSOV(qT?SlO)UOvjky_oPa^! +^_Q>ELIWjmoR&T{-kzn@_wtYioS1(RxF)iWB2zPcr4zNKBIOC+cijv7B1O@mGFk`H7$-06eWR+*wN0A +Y-zA)yG3z}_caS@FIg_WkOQwXsU1i@j0- +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 +q_MeBqP$JvH1Rr?_*r|{=U +g+&pFVH8#gGNgt+=$@KF4>f``BE_l`Oz@NfLy;r4)k%J=`krkPQ|91?72~l{ +i1Ac_hq&7y3lm^LWix(IT(-DL$*4XFf?yAJV0Nk)Z6sq`Da_(HD0}xByv?PTdLD{dx8XI+>~X#9wQ6h +t>JnxP!!y=(Ql!a4LhGaY79qURLCZOFb?OlXKI7fSRlGtj3R%bo#qBtiu-ozjg*AHA(%gEtaHwX|<^G +cdhr!mb6HJW^-Tq`P%v8eFBromr~K^8(KG2Qg1WjAV(vr&;~I +N^-)R2a()zQVLjQ%;{6{PO&TM|O%5Ur@ia{6%Vi-vg1VVrWK~TtUH;?ILAcW%(3M1c7x{#kfpZJ(`dT +97(N4h>jk0k%mb@WBp0r`+Nupg*0nm+Wh)8!6Qz3FL9##ticjGnD_Wn1TNyFZ8jU#jmZ|FO9vwO1c<-C+SlDw~{V@{gjV +0{yRjHGuAU(xI=kNfRr0Ym+Gb72vzBJ)V)JuWChBp2<8{x_Z#FtkucmsjJTkNws5=ATVA!!M1wnqUSz +_<*mdh#h!!TC?~J`z93*AH(xYzg;inF7JfUga_(?r#gk#5{huV9;sl9FT{Qd$=CzhO39_tJu^2G9L%n +?y?F0fj3;;;3zy_VD-OZ&tMMZ4Jp69*|FjNw~<%Nq%g8qZ{-*SAEMNtRNyE|g}jQ0f53z7QLaXV{HiY +d0k*j>tAdG+G)jEA_O!Y1J!~3#b0#8#05 +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 +&x$A_X5eql4P~GAU=Wtr`HSm>306W{m +P_I3=h7S}3RFScQ$Gp&O?iJLfkdprMp-(kC9Lvbb@{b8oenJXO7^hOlUYol)^I&p?=9$Ql2 +7eqvha5DeY{81j9cy@Wgr3mzTKBN%k3?P1gr#vagYw?7}z;ut(^*CE{Uq3axdBIzC%|EMn|{)EKfQK- +Q_VMBQ~F12QdrZGxFf#u192e{EjZdYybUHt#MXJfZg!aABIco? +!V>HzhiZ9M}KQBkA{w~^PzXEr+r#ba!_qPR!>5|m_lj$*%Z$AZ)Wn@^{)pZJygNfK>sd)(#33mxMcL; +ZZ>hd6j5t7QN<4``(R_&yvpbR(Fs_b*Bc)MyRh||HgSyvEV{2)y%f1##Jkim8Hlcyn@K{Lyg;~6NYLld&!!TglNzPH(l4&T^$Et$E +Wd*E7j<*KR-S>2w>b2kM>g#`EPvL$DGDqr0@-b}7zvKMFfBW#=UYPw;RS-A#B0lT|l*TK`ASW8xjpDf-n3!W{+{b#fTzVi64EZ%7Cp%`jN;Y>)<>v!7XY@OVT& +I4UlTDKfd#7`9TRd^=N{wo+8KqCEoX>s%obNO>R96~&;adOZx=E5rcHD7+*V3mOrc&FTzxa>kG!FrUo +FYjg1BW6S^;K1`z}Y-yHwmJAvsfvkjjG9jTnPC1Xhg6OHVOV^;S(+ykUYF-_7)!Q1tp{*bq +$i|3H68Uw4^O?}sYnL^$7CgeM)^3g6xnh4s_E@#Ko*XK&d&#D&7-Mrwxnh*&ZchMZf)l??PiP~&?mbU +QbY%q1IYf)1XdX`~OKM1^Yr>F77^;W4K@qc~X}fdrbiOwM$ZgBgv+a&RQ;W(jQItyZh05#DVheY=8_{ +N%%Jk$3!n_J4!dIFhF2GhhfJWSALk9 +U>D)V;gzIcEqREZ3j(zFcj(BhXd*5ltImAJiInq~AdH^q&`mCKCPy1nt4E+p! +pr8ZCq47b?p|DRi1V5t2L*n8Cp>{;IW3L@@r5_f|9$CU4g+KU^0z9@*AL32?VY?hn&&hFG*q;_Lg!qH +H%3q_dd-Z+P<^N06RnPML6?HLxjJizM{}1x|I%)ElDtSypws}mgnxpA=1=Q-7jk8)6p(=c&?{w6D7P!bi0vGH@;9_?kD4CqftgfwXuz +)>ShOU=xMCi6gq02+IChSG$6e?fvLh>#}Xe-!QzZ~3_Wrm>Kd$4%cCis_}pQw%noYF^2#lGtx+s-3+- +h$E|A;Y=LfeX3Zsd&P*k5F-O4t1H4T{@@BSv<_88bv{sC)MjRSL*_88Yff&P +u%uEJYa(&i#jgwNvC5)A9OLgD&ehT#&U^dWd+!$rn>MTCOF50| +Ycv0`>TX+7E2pnxs3Sxkv>Jq`r0J~Y!Z4ShDAWeRp5`70QyXd2sk)MDZF;=3!R6LR@1Yl4nQ6hDa$Tf +OY?c6&%6aA|M}Z#eXxDx6u?R}?g3G`PcIz=p!*3YAp{Dy(o>NW5IDW9^wD3p(0kZ#A(cyqxm$XkO;i=Xj1(@PxuC +7{jD9pqN+dM={J}Pfhm%NArL_+6h}}Pp+F2i(p%)AD1eg)g~H#}5r~kZ-;DUw>~?IFeu|O_@>7Z&5DK +M^hOYf5MtwTTevs$NKKh91LDWD$A}i>psEA=dk?7I6kAG%=9g@fCXY@mS6he{kCm8!tLt1iFA@}1_(J +`(o`7lJt=zv&9kre!-{L`cOKzzoBVc_wNM8^S$PfcMz*uLWqz4nth8rZ-id6!}b1tv`Y?mP*D%>_26_ +beQ{)RKA1Dm?GIHC<4R{Y=?(XWt&94MY +KGQ~jW_cI~p#xU!9b8q?_J!oJhh)FmSTV}qJtN@TQ~E1s^mk+cI)~}f8&*>gr(MW9W%|CdKAqDoK%1n +{8XG{2`LWyi`HbVPfhfT#a+6FN7~{n+j%b^?0g+oU7Ekb24hobOEwQowBfD1$^?1D;;FK0I``XT}ro7 +`w2OW&ki_^(^Uy;$?q`Blr&ucQ?A+Ipqry6{hhWBb@{sYNoBJTkUY|xvm1`}0g?OQ&oK(Fr5z`%8hQ5qzBC9=TOO=xAnOI^9CA`>(#Pl#O +|q4g|ChPN*3my%&GqypBZE1 +-g4Qh*=U-pSphZ#vQKQhrffDqzN$q1z*@-)nSC#bq#SiDCVTlERsy$0L)P0~^YiX;>HCc0&Xc-6qm;4xrjkatfQg1q2@q +XXk4!IJCjvcJs73V%fmSVw$eU@K-8V?|ByIgs}*l*wLV-li(&V$p+Ca_jq%Va2;;A4pfr+%r&w-2UfMIU1We5DxwP}qt!F6(CLyhIQwbrUx|@qsXBAA3!C?sYn71IjSV$y3!u|@smV +nD4+I2|kC +$zC3^yE(B%5u!UNwIBB+PH>i<)D%R_Lt+97qR#!TeZG+H=A>fjf?ez_dAv`CG`VVjCCxUgkD6?ZVn)>M3VV_Q7eh5Jw(%bj}fRK*~{Xwlt4>O1SXO3MvAUa^wr;T_ +BZhxjI5aO7~py3aTA3p}TQuwH}?FV7#sGCv5r-BuIyjGKck)I(B8b5euDfVeWQpZ>Z@|WtaVtC9?K*S +Fb)&_;tzd=~~KSWr=qJFc)TE*WZEJt>$SZZrU)Y||xUrF`vP*wtKo3SER4+nEpWL3ur?b7@uz>`!W*9Z=q17>WUpDdikW-}OBIK!v9B#ZAL^;%!O4|h+CgmfwU-P>NBhCPD^wx$%VVz44gAy7C$AE +)>=TEj`BL3U=QSY3IgRzv!zS;wY6SBa^a2 +#JvjPuiE65&$)t%pAI0UC>E-m|hE%E4U0R(462f>^&Y94A?hTzyU^>JIoBzU5&;E!RdIXv=i-Iii~Xi +`##c`af;v^aThw-un*%e!F^8zJt3H18e!9;vB#DnLxnB@xHO&1^fES6f%QbVcmbtux_=Y`tK$M(6Y +pnme9N##^q8@#;=?>f`Q8dT>rd1rK;2Dyk12N!F_%up^8AL!<@#YybyC<)WXe-kAD03B_l7zC9P>W{R +rzJER5tDuKK2MnX=Y#$ype0ed=dN}rr-3mak4RI;nAkMP_F-iuI}#0~CY_f}w|1}0=k6)|ra@63v{c1 +BSD61SF-=2+BYg1StoPcOaUp^A&M*g2}9jasD$FWuAAm0f^0`6+iUOnoAmuBcrj4HLc+@A1HveCac@2 +8xz>wzdmKY`QUD89&o=D38gCiOvNL*b%Q9l5ZvG23K^Wwl)~tR(+Bt;c;gBu#7dIM9cZ%)}}(=WZ?v_ +XP-_-Utb`Zl7M#U1T|nwIlpHhdL4)B^*pohx0uA4=2I4W6{n5>d*V#PnXo?1dXBayB}yW!i}vCHUD+D +!`LT8#-B$29zlnvQay}Dw!aLu;#A)0_4@LHpGTYvU_SQ`i%hXFj*qoMQd=7XzMa@;_VFLrj*)@O=qkj +tJNtM&&UAg5suS8z*i8rsj?qMO~x8f4M1MfYkm{#^UaEe3uQZ-SU;pi(~&AFf${Y1p1CVxajCOT-~$6IqUI=v&tCxLWN_{; +BYS-heQcghmWPsNOu}nU;oWSYUQ0(g#JCR+eO{tzqJ|Tbosz$ew1j^8!eIZPoS#se{_BfA{?~K=pF`~ +OzmKU@E6aX46fd(c|M1^^Hi2zcMD2e~*|QtL|10^we?cIK{^j>q{?{-0j;o?Cx8Jh#mwC*78Txkp1Cs +my+uFV%#lO9--*dUJ9TCzfj{FD}V)4-?Oz4lp7jd|!K*<51pzMRl&|_Ncn6rx3WBB$EN&YKTDBKQIxPB-23s!s8)IaHUjvqq*>korlz`Vli(E2KZ>ERIYg?@z3p>Mom$=$d4WlE3ssIMJ^vgo%9HLk2 +xi&-_E!4=`xhX7xna!hx1F{%`Mx(h`Ty+;1M4LKH05T}R{e9VrKT>c9(WZv4{+@F3t{OGlQLwaq}n|p +X^>%cefF@hDw_nVox!a=`UmhsJ^Zw$Ia(G}2b2l`S5WDb?(;~@MwR{!~h{pfuG|Kx@J=zRhIo3x8RH +QIVIR`dlz8R?9*@wA?Jm#z+r-KAG`ZKewqD +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 +Xov1xP`W22|{XI?im2SaPJz)$_5jeBbQ +V3>j7-ja*7p~zr`+9SCE``!DYz)WnQT-NZ!o_aPWez`bgM|uf<15?Iz7CAsquMoid_yuuS@=CP$NIRU +GAm;%OZdUF0c5`9U1d_K?FcRoE|9$v%K%;)>s__uS_|9ee&EY*)had>~1w&Dqrf3NLBlh}_?(iLW{ov +}~H3)tv{EL0{{H4-E<`T{Nc+np`6UT?!R)imF8xeHm>U+X{;2-j%vYp&Q)^U<>(HOhdXfm$)|~ZG1LLv4tL<>b36Qlx8eiSk<^idA +G!MuACV8+o%-l<9Mt%~;p=tu1<=Pg;Kee3k8>_LwO|7pD}0;5P`|2*%`pPslTGk7*7>G)as4pDD+baw +4Zqq2zC)$AY%?+N-AM2&^ocuqihS)zpuf*${K`4sGj5x~H9L7<#ZQX60e?97C(gOqD!)-(8*Hxm-Gkn +MxH0axyq^D+WIR|>mP8=bz9?%VZ7lN1jyf3#^GxemGG +X5+4N(gu5uB^JyYA;N?mEF;LxYWo?s-&m| +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 +oe2gv_5gIM2<a)^Gm)ZbT=WSK%qhGG7sVW +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 +ZE|U{e8dOI@^4CzT_7TIy>Qz^kzAv +LY0)=9hKkH&Pq%M{`=w{9Eq=N7U805p8q;944^zi$wcp1h?320zml1wX8Du{FV0)kU>W2hdj1{Xz#bM6vN`}w#?j0uFyx)&`Znlz?F2x-q> +?!T?hXOFOZ53m4nZN=WxK}A-P%LROUcHJ7Q!k8pySXvMa|ulv7;j4OXcP9^c=OK_sE+p%fZJvH?|>@g +pMk2MH~&vS)gNockM=W!?J#P8rwE!N_WF>fNP;A26vs&vgK-S|QjZEJKckq$A<~R|9LvJ=7-G!QkBU@ +$c!OogQMqC1ztZT>Koy>SU>J1BO&!vq@gX8jBS)bZM+ar^aI1h1Y_r3*Ll`JeVY(-bwd+l +3bye8|)KXKnZYL!fH?2~>Tn5C1QNs=qhM@f}p@L!H(-ZdtjbI4B~3XY`J5@W#2Qo7lIPZyHDuBmEN5c +-q!4Jhny97@7xg(zY>DAC$p%i#X;XB2ea)iG~h5Z&1T)*jX*=fyXFa3z=(1;p%cBOhS>KcJGi>3UJXK +3F~OXQo=9%d&Q29VU?YVrd;^eZSERfz%?A=>`<>+;_19cfd1uQR&}nq=0pIn>))Z$Rp{I}*B3IFR?bW +B+`SkY#fXNhNLXl=t$|5Qr-_)25;B+O_V#%ROCl)a0pU*Zb)Jj+&0`Pao=l3^SUs-5{!6})^WY|8TBf +YM30Yz|-W?(Biz1g*L7(Cfc5EQG$93xzO=4*ge4zL0Js<(;DvkB5dp35x+gZG*tk3Px2NmT2r3zS=PV +j{bU_L@`fJmCs{;QgTn^dxlQlvUr;wA>Mmp{WPvV3nj;0i&>4HU^}#)o^F(lWIYWl3MlO}^6 +OUQo8|^F7>r{9J?)1BToQ$RFgzML~#Ix9FAyugqmC_NFQ(BRVT8ai#}}d=^aUB}dOr!z=Uu5U2{vCt( +#D3gB(UI37;x*bZ()9DTf~KY*(58-KO!&!FnxV;@SXyd9i6LDYIqRg1r~6%C-W31hXusgN(q|{5K +Fwh*>Tg6?F-A;TRwM{vtUKSPF*FO=3YOY9OOZms%1qCvMj_E&DjEJiwB>)VhDKNL|&u10IE{Cart6(x +clA5=$D!cQNm}luw&mR^)xIkxplc}jqiEFkVgZHFB5z@z_oD%MtY{QKOr8$iSQh(q{NCgHf(6fJQ9bD +rI@=w5WPwAEjT^tVpY6p7!0!1ItQ2=FuL*!4zck3rqhg>?3E?Y5}p-Z(si! +(_+m177MwW*7@&zXUb9ucSX)QTgxNfQ@f&(6j8MTHq+>Nqb9Acp!um$v10sbfPJ_|SPO43DLcpnZECr +tN*)tib9|sUh>|&Ydc6z4gLPal*5k!WQ(t#`LIeZmeA-+_UNRw5cb9>Th_hKevqK8H4j_J#x(WAM_5i +T=Yoz}2kUorGsvhCZ%s4Z15d;UzI>(5)YCINGb&Jyu*fwX1V6k*rDTCou;r +6UH*YS4D3P-%||rmgWgUb>6HtZz460xVqag|*VT{5F9EC_2foU3pDFTB@7$zYMKS&K&-|^HJ?eD)2s1BF|d;zGozYC}iJO%uB0M&t~fUg0SJ|~}p#J`g8Xy7X&r@!IjBqfyY7Kn +@kXT6>N>j@{3W*#CI%-#oE@x91N5k3=Ynpb?57 +Xp)97l7I+|*vm-_#UTtPXo!Ge4(TxxBgJpGi@$3=s>jAPjJk)d +!9i2U}e1g(m^6g=2FWdI&?ywUg4&}S}GonT(2YG5Q^Ns`mnWFI?$fEdP>1Qf!kE46=I@Ao%&w}GOkL~ +c#K|ns{N8v{i@6bv>k4iWE_+P`}5$v+~=-Wg1@%(;?Np{4<_%8>@ekN{R8CkYA@@!kC5nRPfJ|ZSp%w +Otp&49E0(aBGBnCEv^=|Q0VSOPU3^vy)t`)0`V>zowujb)px5$esqH*DbNMR8$8`W}M(-#oD0y?|jL- +Qj2BtYg48kHH_G^h@^gg$H)0bMbc$@WC>Lf}1h|!OhBD#4D5Ahs*l|74?cLQ*vV#!C{>5{N6KPJ8l(! +U!lAM|AghmsA#K57f3i~TZ3c0x8^bMAjx>3DXfy0@nQzIRw~gXR*Tc*y`t&PIBOZ9O(90S?F_w8p01W +1l2itb?b56Q2tYd;9IFyWZ_n&amM4DVA5Ar}MH?)k+ciP6Ub1qTCj#o^Jlb&m+~g`**cga5H^K!N{N! +BmglgQpbio|!D@u(peT3ZlR>~|i4DAG+3nQJ4S-uW1RWcOVf+L!AF;A~Z_7aef=EQ4;TAo3rMT9H*S|xzR9q5iqZ*5d2A1_$!UdM)1zmt(7D^bDmVXT^hY +LcfF;72O*&US(`5!n +kS%TQ1gLEChPsk{F?E$7xMYyM*$Z_VD)1>DLS?Z6R(0^;GC&P&I|?5rVGAvc1ci?#@}GcN3*)04)9j` +``P{?&6aw8_?s2nuDHCR5BNBjI70@%eg}BZGAdVpnOp5{#MPfFf2xIN#mQ}6Z#?#m`p +ZmK;Pw8(XI`*X)ijTt*CAFvlU7{oAJ@yM>Ft}R?&pQ*5+O^DurRvQ(5?OY4LvQ&5Kc?@4P=-ZF@Rp5% +%ynnA0o;MjvU0-EowYf!-w>0eZSVd74BA)*<8acWe^Bp1%4qz2bxLY*I3+aYoqk{YSI1-JKqrC +@TLz+0+O12S0Vhx +OfO*-{6{8O=la=iBO4G=uLvn9KJOr(U!sZ#L<>OKG`c?qff7RxdM?vEwj{ZnE-M|5%1P|rdNH1EFxX6 +O!J5+vxt(5>{Vv|u*ep+~3K+t0M=mqFdNw|CkzTa?rIpKiPxbStic}?WLFvSgXeg}5vO4{Cw) +CsDmk}nJ-P+Nx$8o$Cul=zQ#oNy5sFv{k|K)V(wi=ofbF)e&GGZ5zD)L%q6vb;AQjM@G+*5wOx3+M#b +(*vAK?s37Ymuf1=Yk2|KHGjRs$NBC}jzrI7d5cypEsP|gZaOm4?r9)bNXSm~T0kO?VL^!X0-_mo0>jR +Q0h+5gK3$28pFTh33TxH$Q{f923ifv@k5BveA1|0 +OS|}B9AurUUU74Xz&hk@Q=Xop|6B|n&jBQW!P)7y^`C{uveKo*1&h&=`kHyDd1o{)`bc{=Vy}*V^hblAfR#0dSr2H5;cn$R>oWPanu +_bhK9!0~5qV8d;?L16aMkQqFY&KZWE2GIUgPX#A>E=>-5~iKK$xg+TwvrhO)z9v%&v$;`G2g*duXB~iac_ +~aT!GyKj_`onM7qvqK~0ClD4;cm9GW!-4L&3sUdJn4#iFrk+ZT!;zd|b(XI1p1m(FxP15ZJy8+9a +ugxV^jUXIOS6DvX+vGC_W(kq!CUubG;Cx(iOx#0*6MkqiS_QiiLseZK=-ro}2 +^07|Eg(&V!0+y`)%M$yQ%;&mqE`&*YPZeYMH37#Z8+Kj<~g%92p0X{$TmSGbZFB>2W@Mlb!p*rm;m*5 +G(q@YQV%_1m5mgjish6`a}+_rHtL4l>5Wf@uCjKJhh%1hY+L`z;BH#8_`s>1h+09O-jPOpHm>(Ce40X +se2$ikXF7DhvxSCE+nu<=V|d!zZPbpSjptA2tLs^I9PoJ*uA(fv2j`@Z9$0=;I%ncD6RT#1Qsf3_#*1 +toj10n^E9g@I-Px+?a&i7)Q0dGqSzl8n*d&1)V@(Y7k~HI=;+kHX7Z$Rn?Rhies+{4n`R>1Ye +%RL>1*K6a$f}Z%;6{qwwdIdqPq+GG@VEx{qr)%zD5Y-?&=P^l!`LB1a-sSrQj3YHC;MK+Yf^WQnc|A< +cb-Igv3ALgB2Qt-66K?JEx8C{DgZlQ=PkpNYY`foZ)lb{}*oH@uqaj7nFhSrrg%cD>9WvA~g2E(%LJ* +GOD1{Pxh{C=CSQz?|9?A|z +vR}JEqUFPnw4q1+TFt_5wpA<}`2qnPa+3e%p)Q2K?L^`?tJMd(5T}_ggnb<-Y; +eehTaR75zE|{;m1`X))P<2C(>V0LwZ6)}C`T13m60y>RByZrSoWj`HX +;(^6*rrUYp2%?$O0oqQg7v&+JNEdeO;Q1d(I_PRVC9av2pM_(0x30B^qn#kw#ckx-m09n(%S;Ljv&3v +7B)Uw~g%trTMJgpds16`!JSQG*0rqPmnPd->6a%Rqb&G`#5>MUl7$%)wzH*fJTM*);v!{=W^>-sC~^~ +5j~NbFGoupr=BUGn3&0De3fMSezG|Bw14;boS#8+wHlzz_fVnq@+*h9JPUv!vK&s$dxC~AvEbQ#0|uC%Z3 +6A?A;U$}ZKZU7CA|?vFE95dr72H%C-;ST)KoYoO=ve^QvF(q?keTd&@=(sRV}Tm^%-wN3{{M +D8@NKg2${qTPsO#smPq8s#}5nb-QL!YdzcGEn+X+cP@L~Yg^MK;{Vlzg8a>dg8Yqyf_#xsD1@SLnm}< +JreF%i_VfY~I7K5k1nuc&e~cpNmlgYwCh&vI7Jt}edr7@l*kpLD4j|z%u};PZ(G2+{9pdYRf`>;zon{ +9c?pOu>$k^eZ1q$->67?B)I#w|7W7;XsKEqbgpO03-(Xke?SO4K>|2^iehbfSKq2` +Gm6mc|tjaJ$`uZe>$O*|76Vq@t-Ra+ts21`K`V->8h^Ckh@ota(qZUX^dPZP{515q~tS<=~g{QE>96E})cWVHsSnMe^{$CIz+=S9mv=QtsWPk&duo)~KE!!@aU^5T>Gu9l#~T$cEvUYN9mnW +QXs*z7gRxoo~?D}XhXqfi5J_BhS%94f)Z%l +wFY5wlKm?o3-mjXU2om8?!M<&^%2F4jjc$DYjl7S^dn(v6HF_s5WyZVUqZV9q&`3ve#0ZNwvBh(MW@A +M;5h?vkiLS`({@vjg9t^=YX!S_4{6%JCT+JyEgPKRm;k_=yS5OXktWpMhuVlwnx0>ioQ%;PHOA*&&x1 +^lt{(GnPmwin_I&gB*B$blhwH~O0FCgNHPi_z5Z1TrX2lu2zVd0pWgwc4f9dW3d}Z&zsrYEyxwHjy81gAWX1j7?Qi4JCpKXB?4&jvOb7rIZ5<(@ +{J``eaVlh8M7ek{V>AluEF6LGEagLIHatu$RvdWh@5Wm8jtQB0P`o*D*F4DsCshukRaG^6>U)6Hp>21 +oVk0@KJ@+s##GaE%3hej+L9)ZZpk!?sBECZjlKi(X$NckT`1;_QLdse3Z<_EcQPCXg9yPjLK!Y&Zk~% +K%2RQrQ|a3{kF9eJkmI83&lGwteP_c^z9c;@$+5pwmloFEO;dUE?Nw<8d?~Ka_w$spBGoqN#;eG><_! +=HO}#q3Y+a3mo>(Us-pMb-_pQ97-^>df`Lcc1<(-EYq{v0HYfe%PjQy1oG}c@rK1&1&qi +gBaoZ5H$kldFIJ;lmjdQvfC3uSyh@K(bLa5J7Qw{M4lRQV=$uRGCe6)X&H=DB^hEC +Sh7geo6nOb50Hdf-{b{V!=#D8T +~tKM{i1?2iBiM&wU#u)~R5$Nuo)#$if#~Dh5Oun8aFf)lgygym$w!rVq0kF$kxr_6Exv)n6CJsXX1`a +~M!a@80G(~;U)UJV~&L5Ejkbikh^JjB;v{9wE7*AJlw&m{T=g3uie{S^*kha>-c;}19pzS%dUxu48= +43V@*ll-#U<?#ih+L6?ESA`paTK{9}Kh|qt*HkW98r3e0wP;F_6r#TyyK +FfXyhzXuzBm;Yg%vb&om)vhrhTYePn?@$LR6%nQEpVkBVm&q{f@p)hAwWD0&SBYnGFQnbvf9$;U-)3dL8C<-e$iV +x`Wj#H6qEc_{qy2Z&B7c=8&sg-rBr)R$uJvI~@Xm*S%45<#>*Q+cU)SM+=YyOkL?w@|}*xw8u*xv{q* +jK@WCUFX)_TYiiBnCq`a>S40pA<>%2?L=piu}?m^>Bdu=o}{aq0I=BM?rOH8-B#P_b0RDaD&4>6x#Uf +WzUQ_=%*BREPE!zQQbrzitS!XLGdB?xYuQSbU7Y;Mw;MH#YODD=RXS`dxXG~gAj&&Ea;BF03Fn`!z=a +U-HK92+wQ2H=;JT;sRQ@AEB?ruXVKB2I|yXRAr^MT#pu|5zY!Ap8}wL~I)cZo_%V1;BFXb}XMx`S{d& +Jwwr9^j2aoN4ICwz+-vtlj{1=)OhT0cpvV$PqIK4$Rg~m380_{$+1wa>2gv^gcPGp7hp%@{LH`i5N#3S}!mC(fF}(ev0A5B0^upe&B}JmU8lgGWU(OH(`E)IaZ10 +bj0E{oJK8F7IXQ>gc^akY^Zr(->1&FnFNP0zXrqf0LOwzce`$>Fgm6kV)U`;^Y%J3|2DKZ%E+H>sG32 +Jp)`7o76c8_=y^tz-pbMyBIFC`MJC>W(PAoMlR=<%XgCE^I;-ijkUvyxEQaxJ&Zm8tE(0wgTmMP)+bp +t6%I969RjO9#WVjP8foM5jbZFof>^KoE?gapcPx$pb#XAEpNM(eKL+$g_hB8b0)Bc9?T0I3&l)z@b?ae;Kdf^w4v_KlFMiJa`_|Cp +;YP%g8|i!9I2g1aVOKp>KqV&sZgz{h9Ctc7&jP3-X&B26Dt482gnl0)GZ1>CgNDl^vs>ZfXyBhi_flj(#rxcYmf$p!{MXi%*Pn!D9l>3M +l5xKi>d)>1r^0v6{5OY6>DM7E;KS{&ez(D|hR4789iQdjn63K8z`CQa`(yMwu@(5?$&wX+ilDmZ@V?G +k-y&!}8;;~*zYZ9D?6Ux^+$`u5%^9ztHla +ROmt}h2&ZqgpFK{%e4IH4M +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 +H+Wc1rsUM9=Ybzt#r9Vnu0F;?d2B{89W07WbWD +Bhb~_1pNEC@c6`x*e`u6|^kg>j7@;)yHu07B +<4&UQq?SIk%WGjbzZ_GH}8mNp`#L>&y4@_epC7Hvo>rZk&L>|qgls@Ln(2s&B9DUfF=+PJ2@d`>GWXdr8@FSz+$ +sGsapXH$a^g9ySp~Jz-+&6;{hUFn8njYtlk2&kV%Kf6YaU9G3rq3=bp_HwAz2IAa7{2=Sa*q1F%eIOrc~)N@Z+Bsuk^6pG?o$velg_H4f>F$ +yf-rFCBA4VUXpB&(=YS~cdWLb86bS`e_jSDGYrp0N5+-f-@*@mxjnZMt4hBW2#VmW-qR62VUuIGbj4a~sStmD@WgRI5( +oWIRn%BD60pryyS&q;bkH0uB?EPFak+omjdBNX!>-QG&ts~cMqRBlq1q&+X1J>lv0477db +C7RFoCOK6lIeYVNhEJ1&mHNxmuo=zIa4%$_a@9s3wc#HLthMJ7E8{8cWR_z>{3>v6Fd3>ZFb2#`TgJbAGPH#6}p +|w*SVOEb2nWS^rg{C)edcf-PNa4)0pF;%8-d%x_6UYsDuQE;lupSB(pg>ca%tgS(%jy5E?n;&%MU>>7 +ub4Y#!zQ+OV;2%gfIuua7O}5l6<Z+p9B +rNn~o9X|8<%E_R1Y5fs!RL^HRuf-U4>iBf>Nz^CrU%TrPn@DUegQl4*l)^(5B-Lf!urpH6gW&=91l1Q +wY^S$v;1pEK%N-mPRwZ6XJ#La +-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 +*bdo_5!VG+DhCQwA{fX9 +pOFQQ~T)lk;iY$Qn@2lESy*Ep{aQJ9lLm&o&xd=VTd&nIo50++pWZ2!l4!D8}u!{N>;*-2cAfHqf6A(f{CdKL+ZbJJlbvcTVOOJNI3mXz!43h5c5>le@~z +UY_qxL!X6f^s59P@op$=Ie>Z_Ee3DJnO&%u*yA?&HZCHNeapvx^G1TVj1C&_HGlNpD%xxN$F8}vr2rb +)oAQ584;6`h519UDz$o9JZo8T{>Y;r|0h_l7{$n5dZmRk&{PwjEeYZR(O~X~te{1gTbjagPqWA9a9=g +7*yaHS@YkTaH_x^LuZV~rOVZIgF^W`gpk;C_De{@lL*us|m%@-Ekw{X8vAm3}Mf9$^}R=F?V$X|tycT +bbOrG8LNeZ9Qf?D`9MALPFs{OfJ>akI?`Lig_-v8rqdlU0^-BGEw9SxrhHELI)zkqh9 +A8YWq~m~~6%(6LEKk$U@y4Wd{43&U9j|kO#N)4&J+V+8rjE`SPtvKGdD}U(!8^Ue#Rm?-5ewFH{EBok6QrhAFr}l1;V~C+Q!KCI(mXk +B)ilw(dNbIp2x?3EBpfj1`HVywINsu^7<+v}rstJ_wB&-ZaO(;-)`IQ1psq*1a2q1I-pMYa=!g+3&C6 +zxCC)i}a}B`v;w}wBtxN{xCGe@GG-K9J7>_p@j)DGV(JoX0oBr!)%<7y`ohZ>;*ss+#z33qW1hkiO?6 +Di4IZ6bV1h-I}JW-a{myUgzE-6|cvc|nJ@B{MF3;H}p^o6^L357Xb`_ciarBdZc9|rVxK(ARvAG7ryj +sl!3!sATjIeLuNBsHIpmkhB^Q6*Tlr2uR#UfRg&cR;hxVVWlrBe^$REK$4E7^clKfg2j*I9?y&VZGIU +XCDMxBJDGJVVDPkX9H8)X{BC)HnH!wplPy0X7;%rqG#hCJi`#a5Z-+|LUT$2-pcAU&WUx5gIh9c(`a$ +-k!79XHUbu3WFi+ReLk#_ct5gO#a{hn7GSevim0tEogHja@Fn^%|8IN?l +UJpT2a_*yVKzpmyTE)=ntgAwa6)dg2i%@NG}aV%S#auyl-`9_n-`u=;-TNn?U32(s@Q_aCg@?d`FmR2 +I0W1!j8^#cfhdSp5PfYW(r**x*O;LnTxQD$$D|2v{CLG{)x|*{%mR!zdVjuUbjAz0HMMNOAupW7eC|# +rPbG6%B9=wG^(IdU2U`-RV_|jE(-beh)T)GpIIg{tV;|PgQWr_-AOfGI|TWd{Hu(g+8g034=ACv?oox +bTRq0ps2sz>6)wUSG@x-X@O$Km3n2RK4)ze)dol4XmmaUdT^;Y(o%IFNi%ZBjMn&(PPWe=aHEB*#W~SyR#lOzc!o)@7YjXSAT~3tQ7M7}y>P28)5pM>TtC! +;6EwX;r}GKnU=pa#_XS3D6Seu3wuZ`to(q{Vw>-G@cTyBxLh7Tg=D=T3PyJb#_A3Sc|MpzJ3LSqa^D$ +(XGu-~)1c@JT97ieqBixA7J4!^+xBd$DUa&@X=orF#QM~;a(EIdegL?4>3gHiN<00IIT5x19uOnpVd! +TRVh#Yo67ZN-50(%ohb_NCVrY#fuxrxs>9NYEy=swZeWu>ECOJ-kH5BDPva=*d=-%;uA!u{5gp{RW?e +8YG3hgBrSkL-%nZN!g%KWYRetj$Rk>AUF +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 +MDho%OQ+ds84=){)l0PQT_Xuk9r}ODjWFd +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 +(kA~D5DTv>SYEGILMa +}(``(F>Lra>D)PhhEf5o3IxqnT;&${qT(B*dmp9HQJ#gV$hcl4>*0rTv1GtjRI8rbk`NAnZ#CLQ&i +9!G0S=OL8Bz5tL%1_okI}-yH&Cgt&~Z3c7e;x6|w?{nMe4B-@=k>vlMKklgw+lGF+7D&U5c4=;uhX9` +V;qnSC7C4d=qn}?h8%=w+vak^G;m{>uU9%36-{17iQKFjdp>M>}r8WI$)Cb!%?;5;hVt-I5QJJ%)lju(q`mqgsd!<0YnZW$04^!T0k-hl#IX#QiD5)O~6~ +=;YmiCMd2%6EbBNJmh(W`(dkjA-3@PEpzvA-uf;66fDRy8K)>3Esvt=DehK#2($co3Tlo%R&pfl!v^$2{nq{+biiaRtE^(FYTnRTZa{e +BahM0Eo38v_`!HK4d=xwA{EI-z(9fd!ZpiOnETjw(_+-33>>3x2Zr2Jr@H7RI!ivG44Vlf00DLrZrQI +t_lbt6f;E2-`FUM?^ZWb_16T#yr%moQ88bSsV>$q>(cheDa3Ms9<}YG_mP60T!bs#)L~somgz_$O9TP +Q}p>VrVL2Jsz;B8s*-8>d&(jR8|6JK0|)g2%}zY=o;r|tS0`Rzt8j25M+$j#>bpq0aD9i=&Z&0YH+3N4u&Co?riwsAa-mv9I_NZ$++BMgO-?5#D^v%^!KNUi;8}hm_uBz3LGVz~KXl82toW +!p1Xw5vLY)q7&T5zbga4J0#|q*#DmuBK*ZiU{A(gL&8=g6+ncz6+5nEW^kus1X6Y3{DN%Q4fV1j|!F# +Y|iUxdR7JXx17H&%gQgxbkU`5}D_J|nO$JbNYa6r+T +!IFzbb4chmzfe9LJ&c@0|oHEcvz9Qg +_;$jVkY}}BVk +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 +HOpeAP|JI4DR=Pf~})>F*W@>RL3WS6p +$%r))=DN<9*z%M9HhBzjyO_r+F*o9;pG5aMlm!zbizlB*37bj?RVdB%AiJX&*)3CeZI}l;yTV{NVROZ +G`CoLewd+)r6gNLf*i~6j-Mt_xDty%9J3*^>g@NKsr_T~T?yZ!ICrI6^=YR2>$@r5WlLyo##sq}!UNm +Mh+pOcOg*|u-%MIxWU)}fAWj1uLl|VJTYm98L!krfH(Mnbaeg!nrQBW7%x7>6$gUYeG7@~!19?+L48| +a?0&p2d%S@uJxEjp&%;w-rb{U`fP42GfZSpZ3UK=-<-;yP@I%(|P*N`WuqH_3ok-ejJIR}d!?%e-vQx +heX+)EhN*uX)>mCz`zZ#NC4%IuyHTzX%Fhve7-9dT5IH3}d5~NoF+L)!)D+9agfMoJk*h$q*}EkYd*^ +5b0|9tZu*rW9L>0kG#1EOe|mhu3c~mR9mHN)pVa|pw7IAh5hc?Bdebmjzag +^JWB{8-4O4Mt_%RIph_5+U7IpO5Q3Z8>T*-x2YvuE4#l_Q%CpeDZihnC>O@I*ljts09S~5apO7Y0Z@M +%-R?vzUYFIfuY!aDJOI(fawNesphkQ_8;s+WTUe|)@Qp_R8AH<>VU0hZzQX)p>8~xBA%kAarFS^$)gU +pbxHgX6SSuL_QG|Yn(ucH;}P09FhTwc_K61n=8gCDss(7o2>`4%sHfSgm@(DUg&kVG30p-6S8?Ia>`b +4G76%#<^Ra^wrAqI>P0%%;SEY=Jj;>lolfu2+5#`#HS|q|z-g6U$hX`m3NJ;t$oRw2ST)3|*@y!@D+! +ORr9{j)owoj!9w`q|{Vh?5bew$>fJqb*&q9oTleYL{2J%yP)#jQC{{X%jXTEqy^pkjfS1ZjF!O&%LKD +s=VmxS8~p{=FqVq8s8I?nXWq}^)p^!=H2}h04%~d6av*AhqO!p=1Ic@$(T;q`S(W%Oj8WfY=Z)dPS)C +O=(c2TX^C`JJeTzfFAr)(3E89h1!h;*fmy0@YMGzxzN#h8%#V2oof%7@^V(ys +qwbw~lSLE5m^s@<0nHqZgAcud?Cj8#z+t+}S2g2N^zwz|kt@e$6j+oZ*RYxKjjum7+kA;;JrB)rWJf! +0t7;JUVMkb`^&3aOTKca$j_HuXGL`^aLHxA>R!p{dh;xnvA23Ujq*Nm-b+`Is1;OMy$R;5hSSiraMpt$XoMkEb7~iaA>U>yLukEpppYfujdmUV^Fudo3YT8ghWg!}r(`DurD@a-h! +#iNUWaGW5J-@e^gL#~d{&?`FY?(e2;ony{|zr%1W^q^0gY$S7}xx&FYzdh*#f)AduMUqb*cXaMGyTPaC5RrZE`8qzW9yO270H)ft +*bqUb(*1WufK%IFv=O@FjXW!t@npRHWVZTvr+SH<+MrO1{%1vO91~f;9jT@w&L&+CK0oz4iqIOGplbR +M~8O!2G@t;m3UbIW=kphrQsIEEl5@G^b(W=tU(7o24?;;y?hiLvwAI=Oq4-}nY18X-%dMOl1B#SXPjX +F4p+SlcG)V<=;3`qUTN$N48*WA&sjpdlV{0XXjq+gEf`?1& +;i8Ks=P|#@HCC^RwZ=XBl87%;w=(cZ-KnwUSYj1!B#nLRq#dqjl?dU_TgoBcn{D0N-mT1dP;Aku><7G +H4oHrJa^!&;6>BnK&od`6vRS!vRzEV`ci +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 +17gD)n=^GxeV}YtbCHBN)&PncBo0u~ZOB +PN|5iMLgyB){&LVWVt+`lomEEO +lw{1HGF71Ku@WEG#$IxJ7DfI+-_YPK9zuI}?tc`CYNI$De@LMdqfUt3%Y&AOGwdeq^`jK!+ImmioeV< +bJ*CEp^s-ask+SPt4BFUrc!Jc4cm4Z*nhVXkl_> +WppoNa5*$NaB^>AWpXZXd6iU6Z`(K!z57=T;)??~+PJ#~HVq1_qS&bse?hWQr?I#8xOKDbg7yVX4qRg_JDNW=k +n-LFW)UR>BEHKJr&C^`0BjIk__&h@Ww1Q?}s-2@=bWMZ1yT3tkHawtEN{W4~rI=f8UU}A35^3d(*pyD2p1uA83(=IBAG8p1YeYdegbW=yO^eFyv +})^zG*WB~GnH28GbCfp)Z +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 +wvamo=5}X(Km+QumX-F9^6D* +;HWeQed%!EEB7MWONO8WEm&T&wfpfJPr4A*ncU31(?8D(x}^z2_yfWxwOM3u|6nnGI#SRW?#2*DZBDk +}AnnwXK#zp2P~OKxbGEHT2z0ML +H)V0o4zRvRFd6BX;9BK|d3|6s +1Ci#08!T|M^x%U(kws@lhlLL54#B2}b;opEZ)D#czGN;(*VJDAh0tJb&7IUCB~@2^c|=m{;3MrYpCf- +Z9D0D_`Q73T1@74TU{78w~bLLZ+I`xHoJ?l +3zpmz!0}ih?`Roi+inC>YbU1R$YR5Oq=(psZYXS;!9^6GsyT_ed>Qmq!G^QW>#6%%OozqtfKvhzoW1n +2VG)0S+@OVRsWS3QV6Q4;VpUEI7o9XBKR31!c!nN@)ZLY%{?oSc&c7a0C9)0F1`QTIwjb47#nLTfY}0^Dn9fZaODCZM7$R`>w=CQSkf4=Y< +<@u79{fpt%?3I1Zq89G2>fMyjGXUDM!Akul)5blT{@gcXYnWFm2W5BOgFms*ZK?<|)CQQT+>=8U%!9% +28SMYC5(kF>j08iIAna4(_!3`iF3^uAC8s-I=#SgF)K-!{G@cz(jh?e0}e$mbsf3mV@i9@g0Kq4h30# +#+Wx*YV~*a~9TP?>CHMdJDpR$ym`Ra0I)R&bZ{=LdvZn;;q+;NfyrUAX +FGeR=P-a(BHw#Fi|KovLErU~>ZB(foX*41 +WcI0Tz;mre+nS3YB#V0Zq7L(6dZXz;~2)+9AZx#Ahb+&*qG1#cDN@R^Fc0DGAj5tW!{Hra^#T~UQL27 +XjQ1da&U_+M@rloA(e`fXV^Mr0E$5DYq60Oa#8v<$62njQHSso?XSgtHRkEAh4xd=gAG#s+fX5Z$j*U +@{KTn^*_`m}+lGWz{`aeHphVAO)eXp_Gm)I#6zYYiiXSs%BmV8K>%C#Ed_5AhVkvb^?C~A3LDfCk+-= +s~+;h=B8X^GIMYSqQ{ClVP^p0h8ZnK_!)Jvvtcl>;4`8uZq`7EZo1gDCu|d{6^!f%5)jO}q#_{%X(9k +@$Cvx;Py8F88A;G0G-oq+WX(=GvKAR<6(xt{(@9mJ0i_tzx@sjpjgE#dEv*UaSP@?vSjSHCL1jQXm!1 +O{K_PI13A5ZxYf;Pa#YUYHO{I{3n!cNLvfHX{3a~TgFc2dvC{>vf`nyxe4W?PtV7b|{NQPw&-4agvBA +&xxC5Z?tywNP3d4q{6s_2eJq;5|?0%d3I33xQ7bY*Cc-N_s~U=dn38)(~KP}q{oT&c3})#Muwo~jOj$ +}p;`Z@J}Fe{=(4ht`MKv6H%S2-0^l#ohtarqGy%2U{wcfAp^Fbt?sxqJ0sXP(>m$I0v4iH#ZfowAm&L +69)=lFoKMMrxYSw0YY=jU_SXsgec3qRU8F|v<_AZF+L+lY(Pl}SWUizYIFiNMlv}Hj5=UIbv5*@d&g28^CXz?MQ5BNOZ7Pv*3ke3)Q3}-Y=+S0GOjc!Vs`^!`EF3JH=n`b=LE4&Ic7 +a677z}+93?IysVOt!yqZ!j=aGs0}aF}M3L!g@KNP;697!3h1GE0GCUW*w`gvsm0$S!EH(kK}gR%Ok7Z +UmVZP;G30F9G6J95uS{@E&akBc6?pI{9MIaIPST+1Q?`RIDInQC(PV+7n{8LIo=tE?VuGSXE$VX=}L%wDk2YN|jOt=(!@6c=rrhpZKv>TjaIfAJMh$tU8RP!e!lSiakBs=gyD9Q_MKG;gsj1eO_s0IX$9(+I#5A-ZnmCm^q#Y +robrE4uBl&|#q~Gm_{=OliqyRO@AsxFR{Aq!QWl10tQ=C~CD1!XhhJQSG%j&8&P1+kJQnYNa8W4>D8N +gD(>VtS>)+K;6F<9xexIu&$;jM%9;bjeJ0>GCGkfsyU*bY5^93X9+S(ztJqn;_u3jGS!X_kvo2-jmSrC7 +>vmIqbX5_1B)3#;s(E6C9J!s$t=}JBzi02o;Zd@#m*dsx=qMm^DLPFbSr-|`2m2 +68O!yIGB8Hv~w#iq^po5hML*sMKK>Q62Vo6SZU!GAOrWI5W-LB?F2Oz$%%BRT6XJf+%31?;Newpe+v6 +L5`bGB6%8l~qneSA{)F^up9?;;EK;yh+g#;v%T}Sa+NC1I(AY8=7*zl +{9k`itg(`8GmQAwBZb6{h?UMsv#-bS%q~gw>#9-LOTT4@!reL5H639phq*QA +B8RaR{;i5ES-JZQc-P8f0h|1x>M_;}x`of<{eH`Pa66g*2!{L74;r9_q88oC@;dFhe8ShY<&m&&hP0M +}IOIlK|2JTnKzJaJnQoGTH1%VK{|UWD|>LCz#uaF$TC`_2WSfJ=j9)K4|vm!!475O!NfWYPQPqKmwsW +LLdO8Xbxr=WiXltdo@ik1X)tP_T#6RJDz3j +dml$nt%iRhu|LY0-Uz`%Sdn#d0_gVkxsZP92#tsOj%22k)| +IYr56@(N&#w8DVj8us}~R7mm42C(K$!{!jKtRT@S@Kx*%m{;nznjq>Y02NQ~Y+<|bYNve_M?1U4MDVZ +>8R<_3=A307;#2lkcxB>)K@b#Q{AtO6*%<3sB_9iql?U*}zLQ0G-~$LZl4On6k_Ash%*8WWi?jf~Jb| +6rD4>}BN7avl3o*r`xe4KN3Ye3jwb;)iR1iz8g>jPL2rmn8wl}UW51W{Hp_OD~!|*=SeXu+3(Rj1Zfn +87*#kieLpoCmKIRs#VlE5|c!9W0($e3dg2q-%mq{vaq`|=13I}UKEh=gCFp2mW0-EzXDcXJd +z!(3aXSVF@FrFw`5v)&qB~6t$H=jc3L?=C(8=i}h9{?^KW#DE&GPV&CJEVg5vFINUcQtEgaN*5f+K)F +%Ao|oQI14{Zb|@JfzO9&0LQLeoWSD2Lr)@U$K?Y@GAFVz2eKHcOyb7vR12du<)(xq*G#^EZ35RgQR|t +#jAmoz)5PUb*^q~MYGx)%XFAP`53^;Ys3eA&qW~fch0o|#X5Cm{un|NskSdZhMvi7=mX>xPg#>!y%^J +i$`KA;ClD7}qwme^|okV~7fLG3NTK6x@TNWXlaNrlCm8Kai@wU+HOygu{AmgZelHiPs!HrZzbMCe|lO +@_qb|4Y%R`Nkfd#!mz?aV;S@6b_G>!g9SD +PDnFnqbeV&Tb_AfCuXNr_1l>79E=i_W?H31RK4*+T&RFirDIfW&Vxw7ad4g7i7cT!Ph3e%GxR{edsoE +%p%u4RVchqYS(_kGcTo{f8yObfXe~Te9=4|u$X0WbV{=d#91q6U>-2mGn-d<%yQ{gshg|koXF#1pr{D +l6D7%6qiV~K$98?5n6k+_clST7Cz_6gh8FsGB=0VHCJ)mOo;8~pAWN{gzJxOmuXp`wL>M_HdB+XC2ht +^w=$pzi4PzxM)h3yzSF}6c#T4Z^P(8MrGh?J6hWHjd1wi9IAmmn&zjo$`qrguUgQz9Z1;2kYnZ<-jX0 +KwYqo|Pv_OTnM)Oo1qC0;64MyRpk)BgkD4w5Tn^+=k*bs4a`lh%YA?mKBs?reL$H+dm>Z)gL(iC}ttl +Sk=}Z$wpAx)JZwd{v;(fZrX5ZPS$AQgWx=?)kQ6P6c4S@OJi{3UtBDzw){PXCotB@yJp%LxiYDFm{Yg +yKF=aS^aBK$+n6uR+BC>QATC{-)?P`~49U$5z`9foZiBhA#3h*^kX2ff)s7d@EH=#(Y$jP!G$v@ksv; +fqU{4Pe4TlTG6D;exW;G|R?RJBQ$50@8c`e9`CNn5&3JHc4x&y^qNQ;O5lg!#ABZr(sE(L@eOisp

    ~0^C9iGoP7Q>dgXkl*t}%_0Yx}L0+KJ;^DA#IrgA?WwcYIF +!NY=_`!k6p)!>S +JQPltVsf4YodQ&G!WYw4(X*XVV`rRa0bHZX1eAnxOKTxL>T8gp?zPL!O~>HQM9@#l2UNkLNm<+2_Y&0 +Ny~x38)Wb^a8(fd<&c;JAS+Wz}EK`ZJleDZ$?YXjMBjNOhlPTq7DM&stZ+D&8e6wNUX!s%s61XZonYw +M>3e^)<>t!4E^I*%-&rF`6h3$CwO$aF7N|`;mq0{G4&_s?^?FHlg0CA!Xuu4lixH1*ogvy8AIS=h5%} +RiqN14SlVUMjmp0!iy7Oh4(_>4();g7WTf?IVlZQX0%K@bn-%1L-TgX@A-RnK$>xc61YjUW~}dVJt5E +<-J;$RyXqNX}t`PGZ=d;{>33jfw(4Y-`g$3L-)hG!rs4^r*x9kU&3bcyhR^TkylqPxIc1WUvO$MhDNP +C$Gm4UcAOwENx(f7)iUj(4;P_%>u89gvq3S>o`D89m^gj-zU6};vJ*2%J!1}oMO-qlhTcJaJ1>@-lE-haxl``JALrrxq4tKtS=h=* +h=mE*MVpp(0KK~0h}GGp=p%e%@DJ_Kl)QUW22#Bn +W8HkPNRu&=3n<@5}u_?<`?d_OY=O+$Fqc!Jc4cm +4Z*nhVXkl_>WppoPbz^ICaB^>AWpXZXd6iV#ZreBzefL)k;ui;Sv~d>;Y&R&dvSO!3e1l}8$df=zBbz +8i8YGoK{rVpHnx;0e%O`0rhiA?Vr`^7Ms6TibO=&!e2Ge9f{qZb%rYo`SR+||G|d3{zQFT4usaqaA+j*4W(-fN5^*-kw<&o^x8&J +H+3w61KtG*0^fpsT18&@AK!s0dX-rpin7_n^;FNJGQT!?< +p1h%X?Kegr>W4H+uB@pi99g}dhZES9HR%+M~Ne)D4XaK)c_kmc#-`xGm*1=`U!n13{J3M!YiGoUz12k-!t#*8i)A%INj3UZk7_eIQwoHoi-5R$_KA +eZO@VDChomG4xr`rN4Rz68gJB3lgLcWdZ1+GRAhPZ=7#JCn0k0KlOU|cfCLFdqm3wmTQLw)5rg~MB1% +ZVNFRvxym-eI`&&@R;VBSYaY?0QeO6J&k?){`}xj$$ia4zdhI+$trXctYCfh#J5SPhCVS5@1u&<%Yi9 +b8Fjz*<@#8y3h;>vutfCV==gMEA(`1rPW{-n$tJTVsaBgqjGwfU@j&*@;f!Qc1O(m92nsywk;$Ux%tF +V4L@1VN0iwI5$x93jiK>IJ(<@k8H#cK30?yUc!cOdWUQ;~c!J +c4cm4Z*nhVXkl_>WppoPbz^jQW^!e5E^v93o!yQm#kHo->nc)0qp_s|XZ&SE+T$%X7`$5>1Jg9JJSV8 +>E=-SynitoMm{`G&`hadm(>1W%gPe1zjvoAm1KK%6akN# +u(FRp#>=DqFtcX!+8kN1DQfAiw?_R+(uyY2q%_NRycegFFPi}?Nf?|*!A|MJDVhsW*Z>-)Pm@3xn5%? +CHvtxwERJ-d5*_xSg_SMyCidU*5h +@&211<28Tv_Se6Sziiu|UOfJ7`{MrfUmx$k-`?M1hVQm_58D?%zx(dt&3gY>s@M15Jid7RnN|Dt@$PP +W`|$0%pJHOa+kSrdaeMjV&GvZr>i+E#alhT +c=PV(n0O5Er;nd~^zU)UlMkPM`t-x`QhjPuRV +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 +U!k`w3EEr9-EC%`?bc9ZYfRVp()0h5o=+ +afCv4c6n{gl2tx`uj$YT4as>hn}*mX6FANViqYpj&kZ6S7|#7o0edppd>)_f1w7S!9NIk)=`&w`MpqFIiFn=@v3Q=z)|e?Fum!qGi +FHj`v!%r$8Nc(bI064;AUu2vFMGZQNZd4e7Q}1Ijq_Oj#z)E#L7a&AX5a07?o;b#5pYlV8(pND(hJhv +?V9ojmVA1q{M~=XawKMbLza*#0odPqLGFtRNj9z#A`=RSMv2{l`*3x~&o*WfmO7{PN4xHyymvM?KD7$ +!=&Y2%oHNn@-c2Y2b0nd&nCSJ!5PbX%mw +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 +pU5h68_5T)#LT+^20kv{QE~;-80tD +@A9ZOkLAP9J}UJ*j|}m7Ebs1qDX*^Hmiz11HxG +08Y{X-^di(khclY`HPj|0xetgHDetG*k%VE}!*Y`g?{JMvK`s&;A<@G~mTK;tX_WC}n`R11&Zf{=Y!( +ZOKx_aS0GKjLM{S$}x-$ozAfK +l8zlGU<2aHm7m_>nA_?-7WZSrLW7)TZesJo)t5m(N~)$Lzm&_VTN +zFJ6={zJ6Ywly9CqfBEdQZ@+x@${2YUR+=Qy2Whf?``sbZt;&9@~6A(CltDD=0x%B +UHybqb+?d$U9>aW*1=2zD@v8Zwt7y0?!|LP2H@815!_2whLZRj7%&5z~n-Q#8X+x<;!C)W3Or<+lJJK +xI~{i{zd%UbiMtGEAlndn>t)hlf2@#=@$>*;~{8w_S?o9XZKlnE9Vd{Sed^T@I6_ +>nJ^%dq#l<{)W{OX +Ujjwvgg;n@N2!S`;xznEpOS*{JK{ES!1VryX-Z8Yi(ICFET;~Y#E`g>v37eo}u@=yPWxOuUpIC#&S89 +ZMm#xKGM!@%Rghk?CY^)e11AJN?UyCfxvY5)V`Z*OMy+e+H4dKHM#kSVne1WTva* +_$9Y>Nr?fz#`Gd}Y73lg-%i0K9d}w)8VU^{vGkdR +~Y}Wf2G4aAx~rn|WMqI7Q8Xjq}MaVZP!FwX2n!H5S>@_=`K%K7uYm0>d0ia#tdpt3nbOfry=I +qYoqaq_GFjo)q@${y>8MPf>LdgBC_mZ{^cL4fSQg5&eIm<_gy%O(cqDMy^J;$a;R$ow}@iWe3>hflIq +b!F!kp1vRWe4akCX*rZ5FUJS~6;B}>RC*3zWZ27f!Nl3V4mboiGp}u93fMV-v@QV68b6A~VTbkPJYq{ +RDt7L`n=-jlz{rKI+F}!RiFd}A@X5?3n1Zzdumy`e@tGyo7GK7}b09eV&J6Rdko2WZ0%w^jHWmEGk;&n!L`9uMw^n4f>n*jLPfH8Np5y@K??Fh)2$l;Fq0G3v{Sah(HTDIH78fb +lRKf`#tc$QX>nR4{VzIJ}?ncMM@)9hzyztzw73(#k?t{BezG)ib9MOREH_{B2ZGL%d>}vsKxoj9NMLj +g35wS=eFRgE^d78k1w)jUd>0a@UP3aqM8PnQ+yO$BISbj(BXGuyc$Vu!H$A8^PhkZ&}I$a_x8`PaaEl +VC|Z7M&)=0h8Ir+=2*$e;*SnEWKJ;~jerH{quU_>#=aH~WpvzZ0l?Xsjp)_cnuGJ$bAn^R%eDhwuAI- +dWJh`qGbq)Go7e>QTX|vcU~*ij1L|FyYl%I9qROtvb_Sna)**alDef+aRJHCik1xddyl24!KpVo&nU9 +o;?Hnt{$TqN?gti6_3;;II8%Ip514fOI-*){Lp!AJPjx6Ssz21Pi&Xe*->|`VE^FAVGg^KhY2;Ei=fH +Nby#EXghAQC$qzhcQ8Chi|d14-D|1*&sGUVy8h2EGjKDBxq+<2lvyhd?#LNpCpB;dukAm51PejWvxkR +$7TJ)ex|`q%LNuN43fG{uMjshHeFtkGy7ND>_I;0}6j9M5^k+BgLk1&YV>4lqAY;^gBWKn}P@Fuq9 +W6B3BQciqF6RHh?&1!LT@;)E4s+A*x3P?Tg99#5lLi|Dv$kiiZVLWGV(SfQ;GH(>=sa#5M77k-tI4{MZmRHUeV?j +2SIp6Q>L>>wwBmTj9_(vfbjC`Pe_-c)EPu;J@>AB7Q^agI!opT1A}~W +EgjvTfWo5!AM0;cLF}Hk{g>Kpyw36_li^4iDx?T=;6xLmIKbQlL5jmb@ +o+Xr8hHY%4h3z@d3OxZ{F1$pE&Ta$&$`l-Oj$P>SKc=FmrzE@Z~I1B`4c9=G|MKL%nS!iE~wGqG2~ +}E08XHnbLB@k%L3zIa*IdZ35SpddGRLqBQ7_i-bvc3FrX1nmVldq$)Sqy7(z0ct#)qC)5t*xVV!ss#> +&YEdWN +m4%@-oVP$b;KhlC7!~8oBX^AW;LUvp*#W$RHxFc%(sX+Cm{oQ(RS}rtVX$EjvD)r7pE8qv2ef@ZN{Q!%)spLjj#Zt{gbW%7aPx%4x`VVQemzMKU*t+TqxlQXvOTaxEVv!Iuk~#)g+i5I1pBa<7%q6&gmspr6ANIc_y#O00iS( +_V44kx@2pDGj|%GVde3E_5-!e>3CP77>hBOk{d2iAQ6Ut1*_6A}p4l^uxPGbPB$%*13aWJFb`TNZJiaL5~R%H}WEuOte2_RTY@f;=9&BNZ#1o(?o>%;{}kai*g#$ntMnzuF_`A6jr5` +E=B|-Ky<+FHj|%?N=!uNDu$So{j@3KRa%WEXAfJUI0FNhV;Qe4_|bPcq*4_W1FT5uJ)nU`95$qz0GN67JPu;FnW-Vz?gLe1$JG&@3c5r-N6vmqf=Gdf={a;x6>PB +3sjZpobqoP}9l9PFJ+?GRu^Sm!L5;6a-9`ew_GV&@va8>o5`qIf%$ +3?&8@_u9buUuHPEap{5kM`fIBKzMrh*z;J{c-S48@*@V7eEGubebDLPlkg=s3k&R_r^f#o1Z#PRX|Ds +xbS*yQZD2dno=w2RI)|+R15*iQrjdK5-;L666s8DcXS(-vWj>kcBomSx5nmnTneaCGzK0|CHPgLj +3A3|k;i2tWl@`EL*xa2SMwB1m+@MG%EXz&FnX|T|ym^x(^r~>7Q +1WL0-3J#}F$BKXe!eI`Dhk!dI4;MLW&m%62p5L(KoB~@#reMkl#qUt7D)S*U^&x5y(E#v5AQ>3)MZie +1kCB1c+mwx9%p!}G0?v_Bu0+DoJ#T~naILUYwNFhWh}}TEj;@`jK*0bzCE(K#aB|+edJkKbt%*edlpy +EJ^aDhrgx0Y_UtARqdRG}$b9co>Mx`AO^;!#Bccd~fHG)PbI*? +1$S+E743&@8cGct+?$#e;tkPB!xtcuYsnU-6UyHSB0KbyJ`MN2`I7^KJyxo#4Np_>m%pd9Ss%Oa{WK& +P6gYF$Vu2NFnvKLzNij+f^+ZNg!KVWFZg^^rUJ%YpQc9P2^%(9KXZBDo>MVrtj2u+v4s;x3Z%(N +bcU*>w^-v>B7AY%l|4yPLs=8n$MC9e&`?wR#k1qZUxMucdJGQG*e0Zu%BWxyTbgk-)i`lJe!FlVWTav +BcMK!}Tm@ibUTCHYERqgb*jQnOl2X+=9HyAE2C$3Y>RRHf0G5A=x;>Lh@yW@g0YQp0e4ssZVa^vk0+M?S;JJ5Tq@urqpMG4=!N#Lseu&9Bfq4 +6l$mhH-dAFQJJ2_13q9;*GWK|M$MoUKoN2rAOI`D-gd}NTPl@EacUsjZEDvs8E^kozf0$FP^OqGmg86 +2BtdE{rYX*eqM7Z*)bpnU-?auz}kD;*5DV6bxFb4o(+e03<3m8LlpBjuk;{4iZ>!iYQ_x9TV{vHh6^t +W1R9d>Z35Q&VwkghWCDHr0wD<3LC07O|VbhQh&WfvJbAyoM|&O7kxj?q?Jqmnvx6y`!7MI4hogqk!fAB&9|ybK2 +9^rV@zJ>Voz&w++DU)ZZC}Dz?u~mc3AdhdBw|iHwqDa0QVr&V(3wH1WP&`PsK$o +HrRDGEmNR@z)TL#)eAk+c-C}diLh=VlQ#?-`3KTUqk5x`}Axi6MKOi_T)of#_p5%8>R4)cGaBeL_DYA +gyA{T&q|ks0vQGD84{y-WUVEx_vzHAei_&KTakTgkRZW>^ox3k-c^yY3m8In05=Aq;jF(l=8g$qd23a +|Eggtp)1Vjze>n$g_RQER|$MC0G;z}ehg1xGcLY9V4*#||q +39+&Q~*&_Yxj&1W~5$uwtzn=pC?sLF +LLO1Iz9Rv1C#OwX`8zH@H(Vp``qnJdQ-yBHaNV?nqabPAi~T4y{O41W#!;Q=sa>N$DLZNH*)DIzg2|rbr4i_(~=fkck(L?b|@`);M7szHw1Vm- +^CblNz!3SV|h;oFI&tJPIXB!%*3ua-(-ZL5h1`iMYDCK!6+>S8v?d!1+>eyE8|tK~2aQe=2ocZ0}RO0 +m^~AK=i~flBGDAt$c%yAA8tR4@{xPPqr&8t@U7_G3}w2ON}`Edpa0_IHpE^kzlIWKOUqrl9$u67xBvy +@UK|wU|Vs+U7&>xI*E%kG53UPn|48I<;8PAN^ObW?=Rcf_2K_1?eJOqBumYCaYMH046^L8^E +!wzM*p{$DO+VMb2*EaQB`}ZJYQ|aRX25kEPFl>sTT2VOVdb(W{7n+@q-Nb=4lJz&LFRPwtvr)BbjbsD +Ks$lErf>g8eh#xH$u$oO!1T7tvkBBEkl6K4{M2QR7gcN37&zjLtIRnN~0nPr;_c-fQk^#W*hy=B%bFDMa@y6XWr5i9+<;_Kvu>$h+Kd`eHoJ>#iop^T^yJE$tzmEv8h@(QI +|~}>PNzLl2d;Nm`?I3I+b1C7ASs~QHq72p0tSY++J<8JR91+hrWi;sTQ!VU$ZHJUa;>5gY6^k4n`$0b +`R&)FFC=ds)+O!#6`yEvsO}0eg!UNNiw$(fQbUYAIh)2vqyozAfm1Xt=%y4Q>OLzz?6v-LzrkZ4>z)_LXDyzDpU_;QC?yZHgTO+Zxw2EgV{_v+k&7NupApf2(4qc2hI-3ViOdp%%a +Mz8mD@KVNZr>MT2NF%c4^aGIa0)NhiWUF?*+W(ll`hVU-rG)`-~d;VqzO*1pM=r1cYeS?>+_ +Hq!bSJ6OE;i#=Gi8j&<3p9{~hIm%H3H~Ox*(|EbLLpS7=A;@)Fig3Oa2yJ}awvzo!!)v(G#Q7MkSwMkloow?-7H2!+Q)2F!AzxT)ixCC5rhehIF5yZ5|GI9he-`Vu&CIHO3+GtCV7fB(R +?Fh#=QqHBt7%;0ThX>uc#(d?=8(XGY-8fDk1X7537o5w;8BVwN@c)wmlGcq&jx%Tg$*dh(g&0nueOP1 +R$~*HoKj=t`Ta2IWLP6mpVBPVQ-Loq3I%ZH;aylDHiJS#72Rpz&|gV>6Hx&%S-?SSgiI?+ree4r8zZA +9DofsJKXcPwaV~0Rg!n^1=zr)+TryDOX{|w+5SNl)A=vT5*89lZP3YHZPp-N>#)Ll7$VWWDyj0SFbk#?lVtSaw^>c +A#7v?iwYa&fQj!mkROWW%*NJ;)l$FxFd7bTpK0j*H4-oH>RfNjs(I~noLwp+3w4xsO}LoWal3bHxZT86zSB)=Ek_Ix_EyImKcZY8o;LQ| +ofTCG?j4vo!noqcj(tI{puqgz*1hZy|YI5u$6w +cc+Sg5@syJc5^a}k}PNM5qhVt8ho{afaVL`QgPm3`5qRP0R|lRmJAUTFd1Fp+x9f*CePyfFUREGPN)z +Qwcw`Jo-Yr>;R)D<)sNUO{08@9B1CD}(Ui1}hwk?ebo_u%CeB8W&1>J39@$p9G_^LVn4LlN90f4e@TL)Z;zNfO}apVcc~mE>{EwhfpPa92>k(g<7#RE56F!ez+5*h8jPYsWYxt9sg{sSX8F5+<6RK +3=}#bIlfXmQ$LthdTCbWu+?x7KPSKA1nrCL)}av>~=TFA*O&8w)jz-=}6s8|8@^e3g}~6<;7$fF`HSW +MS}$T%9Tv>FTAG_J?pT +qHGR_b-Tn}4D7w_1ahi!NHW}VzofaG>SQ}GRr0h6?k?rg*`B!DiOu*$j+d5x^zG>pLxFgQUDDFV)GU1#s~XZACF{EM8IMMj@-PBS_|JdDArVnB^{WJ?v@r +3EKt+oB#%gcMFGI_p__YCI;1O1HFqd3v)qLxsI+@=Wp-{tGj`jv^(b)7f+d2^zAOeQ=;> +j%6nTV~PEEO*qKq|2$e*S6Rrwh3w60@AO{1r_xro!N5MIZyJ3u2qdINz_sX80f)>%V`cv+J4a*L%uw2 +x+0(ffIajbvVv+-*w%AtYx~R)myQp3(Iq+pOg~$fG#^A&?3AP(gTJ*w-WxHm&eVw{sK9Y9!gb#AR7V9 +3@txo~Uq<>y2Ug<}?!0&BBL^(jkY`s1En;Sk`g9CTE*6nFz{pH_4$SS>KB=OxSvg(*3R~-Mlle!VPT8 +7wom)&aSp#scS&PkeSHy(?fV&1;8+W^b8VT4{ +)u57a-yUpC*@lv-To}=3=^U9rxF5!@K+r02%U*zz<2rAetr&Xzl8Y2*DVDaYnEQ1@G6cDg;F3&7>l5h +YBLGAF;-X!hb5Fki#TdIHyt=e5{=~^|#l+k7yNC~5MOrq`c>avCnG!YM~pB*Es5elHaOb3a +iSfH)D9F4p&vwY)oW^UN?q?%pK5E{K|pD8`kq{4hTb5&Nqb`sO@Sy5$T}Ph)VeBtst+M5PhwlZ@Y~X6 +(JK10)Vmt08JkJ+7Pm;xI^Wx9A2weV1ta6%^N4G2w15d<20>QF02<@8!3i%b4jmfW4gs#nWqG*-~|Lc +zlg!U1Iy*R&3@Qi7qA0d2T$^ZqaA?N$3lltrSOx|VkxfG-=1xD`m(e!=96Y}?z%mMy&ozN3g{MRd$&Jo6{J+%Q!tY4+2hDaDuNSH(P@r<|5LVEnV*0ngYav +<7TD_h2;a`k@@USPQj$L-N>XZY;igdxYaSnZ<6!a8l)wx@ElJ;ruUT8)wS3x&yQN!sem@UCZ-5OQ)) +x2-MkUvUi)C`pNvc)>OpgSsWYQ7zeLh)M +kIbc`!kD*nRE=3-7opu2kwGz}HGjZS#qlG^Mmsy*#|xro|4>x8bejZV^h(D81&vAn%wL$Fx^cOXyl*bMmq8G0ynk~{nF7;HLutRy?Q01m +Bs9~o(G_w(s>p6QLC};cKGH7>b8e{<$wCI_zCS})%-|+yXkyZBh7zTj52=H)rJamZ=tDCWbv|@hAgEc +l5pzKxcR`YmhZKT(!@AIxIiK6{aIQb&c#zkjK=V|3};)xYxzeB_hMvD@Dc@66^^1=_%yBpV~o5j%P9( +uo<+gA3pS6hb^!DscB)zX+VytU=6%)@W;IOHSV05es>#J&4vInZiFHw4%L;nz-Z^vD6lZk9r_J#})5G +4s1}yh#bhFE(^2-Odg(uLjMFsA`3jBTrQ-_F0Xi+90jK%?)ci1+nuszq83N@!*vGmX_iD2dZX=owPPW +0<}X)eqQaT&SNjUQ38fJdzSLPjqa$8ShrDz*}&z^B1ie)_Uhr03jD=K7Z?8@P)h>@6aWAK2mpsA?M!~ +F{*N{T007zs001KZ003}la4%nWWo~3|axY_OVRB?;bT4OOGBYtUaB^>AWpXZXd6iUMZyGxgedkwh>N6V;T;U-Z<@1cQ +{GD(HphRMw8|nriqnnsfD7%uNm#DnwCst<5mP|qZ0tf2H>|G|dj8IutT +4usaqaA+Qt+BfwAf~CY`*>zqc+P26?->7lO4z`)t?|^xQ!BZq&ZkcwL2qF5=Kg<3~5c5I(G-*=K2 +?X6r@-q@DA{)`CGNZ21Vm1=EeN$&^>J$XaZ+HZ_L^bc#4Tv=i3;8J0k$(h1GL)abFrlL$}vYbn|r-u= +qgwFpl7WmTSvZzC-(mC1*sy*A%9X)&)FKEaPO6h?$TXZw6R!U|74`s&MF$qW85ObTeQ~e+$JqV$`0sY +S1J7S4^c>9U1LxgUl&hfPaW1EbnmheG8rnwEkYlyB%VH);`j4oPm?ldQ3ckz#pC(o9ctk;vY6kVNtRnBL5!}f(7uLn5R7`WV~LF-fxpPM +{$DdxMz44M0&+I=j$}dF_%=OTiQU2W{V`pzoafud(q~bdK6Fqd^bds*q=5Hj0qVXo#(?L1 +bk6xl{jYg(~bBFL=W9 +zbX91PqGY)3)MrNr4;E?bUOafpYHt8jo?FS**ZD~V2s>vJ&@2P2ly_vJ$CtygMafnVCO6rt;%@c+wSE +P4IB#eMV$?xO!;sLJ7UD#QIHm68dy})%XQaO9KQH000080EZ>* +Obsd1vY8S901h?)03!eZ0B~t=FJE?LZe(wAFJow7a%5$6FKA_Aa%FdLa&KZ~axQRry<6{d+qlvG?!N- +HKUkhhs-0`vYp&^4aqL8Mw(PN;W-@s*9*Be_))c8DNGs}J-)DCL5|n5schh-2)1FNNi~YUNE|`OZ?jQ +B$?A>^xF2<*4liM@(=Hlw~7xl#2gS`WFw=n9eNajhVQ+1lhMkQ8V=Ko33RI3kJ@@NW+H_<{D)|4tXrH +RVCP!X06_dJDhmXryWy)};}%~z&S`An4^q_MvKxm|4VKb_`FJiX3~GRZTmqQdCX#A>=>0=txTVL)xQ0 +p&%hdZ$O~#qse=kmy`KRHHOiH?-EO8)HrJXkuafG|$Q+nN|>|XOCVnYnQrsP}fO1FOsDis1>+UWv;F_ +jD_Am1|nQiD%mBkQ;xGqhxv|eT +JCLh#=vEWp_GnpwM&2=?RlL(tHlE`G%C~eh>p4mmCsdHlF)-j^abCB1h(w~$`@Se^lW8#T=F+B07If{ +J+oAz``{KI%F+IR$}H!6iS3cqvMse(q*SS1;gT|oEv1q31J8qTDqMpf3#s3i%Ly%}GO?>-Ut=i|G{+3l@5zq(N)bv?Sd8 +=ro-7~QDr4>#9Ww`W6moH1U-q|7cQ*D9WY=)nM8sv+2rkarjmoby;+ej)zD>%Rgq62J*-C|bc%Bbd`H6$Zk1K$D`JF#L$*`0*&p9t4SxLb<=+NB?jzOwE3uHyy +{FgfB#ZO49h|&)`H~h~eWV}>fEjo6$enSq( +(m`&g+6+8u0d@e#z%qe7!zy5eUIR5&#b4s5!UmCScY=lIbkz=t1mq`DXUat*OmR}~S8rYSIk{QQvoah +MAnM9VQ3ywehl;97$I7B?pby-1BXm5udFcT3o@n6VSL*>*m*<_idx@gJPD1uWcClB3dk;;o+tq@3(tw +tzMM1iQn@x# +WXQ+7bdVoU5~Q63u`P;E$_<%mUt)BB>y=tUN-Hu-HUG-FCofRnsWezh>1=vKC7;qF@r@*}G#6`xl2&i +VZ^v#0iK5ea4wEdFLzbZ4YK^hYG4MWe$3m|yRa(xhshP1Q7$C`RVX3qxol%@-HE$WYC?{1gjPNCDQyo +2ktr+$j!Ociv#9=Ezsk!7vY(#;1pz8HNFo+Y|=Tsxvt#JnJn_7_Glfgz~&Zz78x9G<<)RFRHlp$)jpjavs3LPh`vJUqB6nUon>sY5YSNo67i)eF)!Psf{U7CK<*LK}(zdi?~qX>^V@^Xiac^UbLGxX3^NbyU%0`^X(37?T~d22}t +!md)iakThoW?euy7LW|&FYLv&@6rJ%BQdSOeng$~8xZ;}YIUiTes@8Q-#DYTQYXcdPM0~ATHp!`iBd* +T$P2J_=30c3k{h@^FSzwsQ{Y1I5^K#PWj63RMj|7WM?3qZHpJc1dPr-%99!lAHAw7i=Qzz#)RwARasG +0u)zkbDm^;7|D*-^TFEUY<*rj^NQ08bQ5W69k^#z6;QTu%^eBVCQxO9@+blK#u;i-gmf?EAYllYnkBe$aF(FIkdhGXAVaBr8_5iIA +ybwYOP%(E2=u|yc+wV%V$5i(sY5s|v_abQU^Fx0)l;WJ4-O=ka&?>~+-YuOA3A~ZK(mMeM{p3uk$3xW +uh%bJ5GkvqBFe`?2fH99FSe?>3t?)d5Sor_f;ZTjX8;G(z6IzBZO)ntkyXE<0ym_G4LXP20HTlroF5T +ZD<~j9sXbEI1#)3~9#AJ`fwAjP +6b&^JKqP38M&dK0`>{cl;oQ6K~%Yd9@PiuGn|6;=FCM3sVvbHd4BH!$TsaQn>EdQ3jJq&XGd|X~pn9o ++wC~Vv#^C&v=X^#b&7i2;Gb#R0TalbAhZ^Be#JdH)Y{PoK9SKY}^x{K076(5>w=H6;anB?4eYyp_STv +Tk4Wh=t^HIEk8{%7(u(D>Bd*AEYix|jip_ATU7;X)jFSBjkooQU}{+lBA5rHt)Mq1xXcZPPz!3dPVJu%RC^oKxB&yo@} +S$d#%>_2#JH+I}hON4xN`#?fRHxl;$q!Z%=vqa@vDL{(1;!u;AtHH +IxD0J#JS`89X1(<(_FY?YWJY~%;^@E7I(n&GMXU>B`hF~$2>(t#=LI|-rmtxh5Y?{E#<|}@Ij +OhO=8osfIcvRUMR!D{=@~twJw(H{3so5#I6@paV(S`U_z1iYZhNlQ)QYbAZp(so!V}t=)!zNqJ=Ts{k +Up~jk1ag}*gqw&3a_@a1NbJ9k4!H#u@GQA{Tk$Jx9WvgLk^S3GuJ$JsMY3 +<7!sX+_jYi*v;p--mv=LwoHSy8Z3`dfDSfOO)Rb7i{GHrnt{9G)fvz$`BgaMjSV|nGyL}DrkzYwIUC2 +Wb(-w}?Ea>$gphEJ!#(#x|;c^HRF>!&7II{7e>hqG|0e>yu3mR_I9vme5h{^6g4g?G0j^qKt +lWwH# +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 +e=1MEGG_k%o9m~?H&^ej|F2gs{9-hIeR{rps +Z^W~?-)|xrQum1e=^6d7uyyUl!<>mF`^}}DU-|i>*^8W7W;pWHp`Ix_X{Pe%(H>LdP>fv9@cQ?0xdAR +wdd{*)fpUTsH`R>Eh&-Zud^XF9E-u(D*_3(jN`|08Ox;)R&!H`)2?n>W{Yk +JshuvApBE$DjW`Q(ti-ug)7OU)|^Mn%&=(>zn*{uKm~RhsXS;_~-WVYUhZTCD-~lS5Mr3uI4*BewsJ^ +q1@(bJbdi=`L9mF-=Fktxw+G@Kj+-%A30z?=-(1n<;Uyt{_*;!_qUfhLjJb=%Zu0l{O$Lz%d>C(T>j< +R%a_l-dHv_#T@uSFg +%f-@Yu*%6HFRzJBrL_g_DIS-$)J<#*q{dj5GSudc5@PBD}DYm@wcrue5E@|XLZ$+y=}S2wqh`_ccL%l +nu&c>A{eeD&AsT;?~|H;Jfnm0RT9hySlNyuH8si=H>T{Cz@yS8jePclS@1Kdf$!^7r+uoNSGV`~50~YO`^P7K`ln~v_i(f0GmFDY`TkXY^Pl}!o`3WE|3{

    Wan6r~2vP{+Dv~BMa%rpAz5y`>Ff_kaBN6CPv=ezEAsbo6naP;C)VVZjYS6U*5e3Y){v3e!jc +Ez5mMx&G{d%-d){Yvm_7K|Mvd+?oHzT>c`u}?A5!Cjhv$&@AF|_efGx}uQb;4@4x))kKb)`^+6`%F}L +!@=lw(OyU)2_^I6JgpZ)i8d_KmpYJTOdfBb5;VMl(|%s+m$yho$s;q~KJBPWuMN1Y$PS~X0!{^IR5#^ +~ezVDG(T(aL}OI9U0o@*Df?{P1ahZ~l41n!U`&$VvRizIXW}ZYewZ>g~7Pe>>y1vwxOfeyV|O?W@23@ +Gi~muU-E#pYy)}))&8jd2x}G_QUHxfA`|cXJ7yD`xmcXzkKn<_pe`k`^^t8pXL8@$oTwVy1xAR>VdgV +EdJZK4>De?L%G}|Jp1D7=Rdr9@xPvDj~adMfpeR_{NeStKYaD_`TzXk+n2w8{xbjhHy5SU<1!7d(e%q +=)3a$bGylO?yL9uBf6aDTV%lZ!U5%q&#?j|x?MJ^1>+Ld{We=>k^^5#qmpPbU`pBO7t8rUbM +RGZCJ$0+@=lI=j$7wNe(*~>@=Docr~Hm)(Nvmz`Wiu#106YOrtaK%8FTOq`GnpyH*JsG>xJ8)Im$cgd +1320Zr*;-RGLPk85uP5GFME0t?ZT)+Kya@SUl#+2hq6mxX7=y6rHE%A=i;pn=@^d2{nz8Yw0b!`}F*W +IP#f|J0Fp^Q}dC$uN)=DdB3Y)n7;9RmVAs(Gq{g@(wd;ipXPdi5zp<$txiy|_#MwRd9KNGO`dCZjcex +IukJ{{Vs#gfme7-?sRv$C!DjPr_DKAS#4Lv(OJ +3Tu+2R#Qp2R*^GfoU5;VXjeQzjb!>%sI??+&J@NUgQ*k!MsbGc{2via##(-wb%_dxE8hmTa*pgO6(bP +W8g8@BKH*6*SKCU68MdsEvRD#5?DFC3D}i4SXM5X*MlwG*{<5cIR&{4Y~kR}7vJT==aO$cWQQELGcM+ +(CdBerEB8QNp$ee}@(tu0$j@KX@C=Fg^kv5HR@%uNG9PBoZ+?&6S?nWip@kI-44y{g_Z{P!GZ@&eT(< +1aXn`$imYXQRXs%tu0&V-?!!PppG9WqHV2qA^7KsDzJGg}hQ!DOU4a7+#s(6?RpIW +GeHkmfM00vocFMq{$vx!X(5U=D%pl+(y{$REq4G`_3+g*|0l=8JLDmt0_l^J@)m`U@kR_${$CZeX;zn +L-m>5SVuEtvKCs|D=bIBilF&KQ6Em49V9`e{n~J(d2!CTP<>d8Z!TCjvoXWY$wCK6|k32bdDQoC!20H +m%XsZ6YmXYlszNxTbeiHnbo~(sx+6H46cZ +kh6~~mS<7rX7EmAQ7U%sYFUb#d$30@Sv!Ofg(bGLTgeB2z+%K#ppDW}|JmC>g$^47KG1elQpD?L@k-s +0%MiEGEAsuT4mz8C#Ol?dk9GkS7b`4e^+EH1p9FiNu`+D0rYw!|p{1gZ5IADlj0~FctXgFZk%HV)m`z +B`Vn11i{!0|ec*ZX^NY@0b{4Kp(k$Caifmm0HfK^W71>pb!+evXmNu;WT~uttT&On8< +AC304A<7GNa6NPv+5BLPMNj06~g^EcRh!`Wv;kFnRSH`WcT5bqUTu2)5Jxyxq$H2+eQ9Ef!YHnX!BL3 +or722+;zl;#u?5!;@1c*$a`tM80VD%R! +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 +>V2^RBdkrKQLyR_+!;*tG)C3b(p!C7fi>rw%U +Y%M*hO7Tyx4z3~i)nTw+zjloo0X%H00Kse27}Z&5@iAIUYHIztPUT59)#)h6>@F=Z?s3Cgn6;J1gWr{ ++0s$4(BFda{qFJk7y0vNa99zJm-bEa>VxGJ-;}XA30Rt<4uPIDIFR`(sn+i$7ywFevV +8RqxH>bj*Ah}YI00+Z2;!RW)#<!(vkWMe30`-}t5OH8%fL9Ela_3R$Ro;;$nAR=3r~hsgM7;z0pQv_Vsfd?}Sj8aH`KMMN +?@sZlBAAi1C>IBwrD?%uZ;gN?yHDc&THRGQ8V!0<`qI?hGoCNFVWEK&zXiGs^-!DCRtFtajSI?uq|NK +2YpWGej-%rMbTdd+?FNfrQp#*$U}3+^0)r^>*!se?d_6o%k1H_I}ZIHE}t10@v0>W|azQ1|LMQB%1wf +*{2f>{)gcTY{9d5nVY1tFmF7`tHtJhRWQgbSq2)*+h*CFA)iZwgt%_V;a3H3|6u3!lW}95T|Gg^i@cw +f;Y(_hq$Xa(8d{cuLU^ylKdq}E~J|2WP{FMC=8axf`|}CP_a;uRku+vzuV-78N|GBQwbTn52 +KI6VZs8}dn1RWL$S?p5z;n1TeBqA}s^qb~->7?a%8&{_HK?zXLieG4uQ+RH_7MSOJ@9n!YDWihCf*Tijf`* +6Ei$h35=9kD&PXl`Dv3X)NXm3fNrk}#+C@Px@}?cyKa3_MQ^!-<#@+WdzBPKrh`D+tP +%j8p$mpI1+;-`ceKrw+goJw{5)yig<|1RmLEk($+-8LU^|=mP+-2j&6-p&~?EBGKFV8b{yc;y_&0joe +8DR#!W0)CzJ@l&}m(z;20lDM_4kn{3^XG4 +BmGjQY=(kVtUe^kn!0b@h%LzzA~X~#7E0ZDQ>X6Lru>^spX$7I;LNdl6vAWXLnpg9W?@T*)q;~CGI_9 +L1=CAP&(8BYb+089ti$`LL?F42^W>+v1;QSiss>$(j~m1dpvY_kF}Y{TW!+9ZQ1@z73mWRPRmG>eOUR +5O0uqk}$5WQX7+2sb>n!;i=dE*UGN4;W#1&pp6oVoHBj>gxuT~v}*&#P^EYtzJa25dxUDIsYmucq#` +xa8P9t2~S7l8G^LN7#p{qb)?%O*$qLyOT(1a2}G@Z| +)m_Nij@$*Zkx3sG4+LKpP_Zm8NCachND2G*W$t^k=sRbp+Wm{i|lH}9|yT*n%F0l;O&Zr2{xXDYrDPU +3{h|!*ku_bCE>zM!mqpC{8bmUFJSwYbug#)y3g;VeIAzp$GBN0N5k|4QIDOzx`hJ`PPnqK$P5}a1C5! +?ZONHXl$C+yC3OJ34B9$28BW#R*mS#>&_QCb+0Cc0gD_%X +-w&IGT#SsghUfXCKynqII4IbN8d<(*_1(Qh&-pRLEWoM?w}&BD!@b}G?krGhhfyMI2wu_+KrNVC9!P> +3{XUG5vAh9!_+xp`HQAh9gl{hXWC#JY&?xrC~k&03*8Mz347Y!2Z#%l`&@@p_gbn>E;BQsoysXarJSY +|oUZMMlVJ(iI;P0TWqRqMgVEYpWG*#s=lt7_Md2l|f2oIu7D~}}mx+{YijBitpIbuSQi_2TZldQiexv +R+xKlH4K=gx%2@I_8`dS( +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 +PDx1D6EO4I~F30@||FKd5gqKnCYe09kjdtUC +NhV6uGYFHKrnh0%lohkJopwxt?c`};f(VVqFnwJlGlqiDZld>9)LGUckmk>y4k$e#pN~K>GdWVFMy)T +?8naW3{a}8dMMOX7c^t`UZGbW-WzN_WgCJf8D7TXrMVZxm$+*}O{xx{<;$;*7+GaVlvey3?ji0vuyQznm@h6m?3kMbg8XnGC-D%{FIhj0uce7IoDMh;bC66V^wm;*5lis!81IWh6Z?cw#ryZy2kRU>RIc&KJzHX(`GQSx`bKx9?8qDKx*u1 +KCUa3;bkRz(E|LQ)#E#&HOPGB_4NB98TqCJDfzl_6gDB!z(9@FE9oG+~5V<(Tx>DV+*RP%_Qkh_Q1J$b4@yB^7wGTcN{Ad&2|^#E)Q +2~dge$(NW71tps2Y)G4oBtk(JNam3V`jG51f@zqFkY33xK~WzrZ*w>dkC+y439AJ?W3F8S^4X~b)@aTNP@j_?U_c;^ +wXAAvI|=>XgEx(IH0ql$6v>v|OH>56{rmc#E{0qnwxbIy~J@CtM0SIcV`*xd` +BKn7j(j?$m_3()9at{fdRfs~eyua3R>3m?JEp4HIWvV&plm1(-Jd-p3{m`!K`okVm)iiwd!=%)aBr`Ix*{tyZd!HeZDTsg&JeleW>nd`gy`xy}6ris+8B;CQYlKu +AOYOP=_YZ=w}c6-91{CJ@Cmj#X>w2<^VnEh$lmRw`cw#Mlo+T%B*b{*+(BM_2pIxYYulbL{*!oApNtC +PiXC3{9gR0JuyH9o4;BLtsimo*qg!Uo3_;tci(K5OZ_Bfr=L4D&t_7yW~m=-RSGTUO5%u(_D~9K82y0 +ihq`$XEA_t9PYmmRoj$DXrRS;jlbUvt&$Mj(Nwe-tErWg--5ybL-nZq)s@Zf#Tqfx0(mr6jTo<=`k;< +f6y6bjRM*8Vq!vJgwaUd7NSzext|a&@)$$B_BBPX9*SC>=?s +aBV#2}?CL*vk4{jV+iOy56Sif9EW)aM8O5{h;DN51iFi$o2EA@ptz%w^yc +OXs`G>WbyB_;bj~$B;4jc~jM#HjK>U}VdpiC6P!yw0E2W{=s;$C7lnqG^6l9ESBW#P3d+wwq& +pG)(!{e0Cloq1N;&DO6P-!w4bgMQ4|Xva{hT_owLF@9$>N{i4>t9O+?Q}9LlPUiV`?K*eGhf>^aluIu +vtr_jb+VrZo8tc)l;=ZbH*(e5?gP~k&{UrXnxvl0#UUjT(K9=IXY?n=|G&wI12tNvYPk5AX_pquIT~y +-lgu)PQ#+f1`&}^-s?uNZBd+T|-!1254+e-YGNZ#)S{nfGWeedwhQl0$Awt2~uwoyVQ_NnuhzEd<2G% +b~Tjwe>4?b;51(LMHzzIUgGv@OPCkPs9Ylq%$8L+|d?_8<1hC=gH2M6)^K(PXx@k1UYM~u)I5Pc}f?qa{+a44< +YAPz$^Ns#{7lL{#HtfYi(|+hIb(lX3!98!gDJRpWDRKwaXo&r>W#adH;;+NG{9t2Xa|QZ@Fw~Lt=rBH +wO|UN`Wo4I_Uj2A_HOxu3{DIDXFs*o +}YvT8h7a&l{_6@vq;U?3q9D690M}Pn|zG8jut{2ZovbvZGA0C0!c;8r!V)4$D +W70|MpT}>Ge!Tc{2mQ04dxX1V;O=k|^(V)lgX(gv#vToQvbAUWXGNz{Q|94mH8zH4`uXrYl%EaHoqq# +RO9KQH000080EZ>*Oz>#Q${-5>04Fj404V?f0B~t=FJE?LZe(wAFJow7a%5$6FKl6MXJU11XJK+_VQy +`2WMynFaCz-oT~Fgk7Jc`xC{1hC-IAMem6MRryAL!AGiYf*Kx@=b$Rq_=W9+Q$bPv1Q|GwwiDc3E3gw +U|kJ`9#gTvhkpbI<*#0{P9G{vYw_@R#FLadLccczSs#KAoH${6h?^edE0mSNB?+%3z=_Fg~Tx7SR?9qw!r@AcW(NZ(Dah4W%%$HeS +JwUNI&+>YFp6jU83vu&UY3!Pca?-VYgsJ;dygPU=u>+ju4kx8;Xg{K9U=XZ=v! +b1Ct9~MsZTqu75>%3jj(jl*NHB)*!c +QL`uUD8#uAI7^!EfIxP>hTE&aR?*+5Ade2`%vh4^xbk)a=Pc>4D(o5~vxiq&|$SC +>_mi1~e#M{^`kQ76KxSVc+lC>EJ6$U&k1K;BToP@0wckFwG*f(C>-j_&l&7rI>KX*C?~iQ@6$272EuS +LwW5MRkf+svDIzx*`>veb4emC8+j9fJ&Ybz5@dZb-rB2Sa}uQBzmuE9tc56Pn6MBky6&(M2HkB=6jq< +HI|=N$z23&DQUXO&T>>RRQYHC(2=EZFI_#{z`$Q8BT`hXkU`&~Bwl#l2_UEA>j53&Z{nQ?0{!joQSWy +l5Z&MzYWi +}E52=qO6HHGrMIs|#${Chm*$m?nqEo1o<3TjzHJS-5O(41pBokPg(AX5BgbLqh_=I&CkZMAOHBc>fWu +<09Xkf9L!aXAqvK(TJ#_@dyb#PX}*&#H$P(xOrrdJHSC~%>GNCAlo;8-xhy^DK_dseBL!YOcr-hdm+f +kH_vCmw)ONi3IG4z85KI)!x#>lD^0tW$N~%mRwi5S6GOp6hyqzoO=chEitc&HL1s36fw70Csanj2DsC5om<6jLL7A7PB>8fP3vh?x!40*7#PKQXNG(VWED2Hr5lTBnH@+(phe~iJ6p2 +utV4Mnr92$|@8jXgU2@TT?8Y@mf^N4bYK0*D6oS^TZeoVO|t86!QMrv*Y@4e@3?reW{r9ZpU4|k<@mu +a^bNo{09i!oh^%3>G1Oo%cPlU1Hexm&lCRu^iwo~A2Jt1iSlkff@cQlutMH)=Xj)s<#-KUjCAUHCUev +?L)IRmI6Gv8qB;XI+uqN^H8)%bVN$naz#nsktGmd2?I5PIJ>g*xU#yYi@N{!U-RLK_={cmX$a}7y6$o +oz8W!2Nc0yFn$~7I7E)6;&Zdf&McfMJCCXxu?68yFp*Q5&NXJaDE$OGYF109`VNOSob&mLU?&I^j5jU +wBuejUxYR8JKYZd+8%MmS#LX2n!fO3nR==S@4%lgnc1MxeK3wQtvbtr@On2oLE~s97gn&$VL60T5#t` +^@vmFF#P0Y|G2N47{f_@I3vTZKUXdlM#zeh04yjtgoNg!3xtC~O$B2Zh7_2hxET>CCN{HQeoHN=5@DF +WF+<386bYU}EG9Q4Perxx7Wls;!hHR_fBYy?|!!0TTz9Hxy(7KL>p_4%fl*Rrv-bsmK4__wRHeliH;C +Jw?Ln_FfSL4V~9AW+N}_g^w +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 +?{^muprJ1&hGCI#`A2qCzH_) +&NZ=%Xk}QkUK(SuUr3*oUmg8S~yS-(y4{FVWNYM~A1sZ&_4cH~{A3@m{&Cl8EN_K^n}FJXx6tt85iS( +V7;C$fScLz9Da9!pJns#kagb7y$vH4ud=K+l9ziX`wnW8u+Epu5HqiWn@H?ACqRoQ*V5$cJh_IfNUtA)CH;+FIq=Heu8lgMi9osc1eoq7VVH# +R-RCq3!zB!Nw`=_{erXL&xyw8cZRFBSwke*O%h)dN7-M*zPH>-KjAK5=nUpJ?8hH*)X6TY)=$c|^S56 +NR1l=PkE^|kI#u!qM08JzGNf;k0Mlwoh{;YtRBT_#68_ArIaF{L~9HDP4qb3tTicgAwGY)8(g2*%C +fM+E)3s}Q3jWEoCEOSFnC8_2U<9loX&BI%?1Cne;%HoIl$Ob7jP0ULB%D+ +S7(QtzzV)2fj`JAC3_U*!($9kQ|6h<$IfgDs^^~6lX`q6H6F0umMfG_JU$&AQhuTd1eI??#$o61?_bd +8u!xV?QG2{B!Y`VjzW2VNj3P;)mwlnd(VmK8T)kWo>x8wQanH-MA9ZqUEck44S%tq5+o%c8*e>n-_yV +6uyDLwaj*DwG`JY2qYvFh$Mqh8f`@xSbG{0fO{sC+BkjRi`l*Zk+!Q>jMT;5SN~r)cZ4&G8ByT^xAY6 +SsPlU5y3L;D8&L?Mu#JmhSq$mInhw!L#(X`}DDzm4XAdwFPXG1tn@dP-|j67Bv7}QFzML%0&A!uX4mQ +;=~&(hFFchfvo4G&OtjL}56nP?xXytm=Ydq`X*DjjBvkAL|rRiE7_HZBAoB{axJTfEk=CVc#|F87dEIrn%* +iX@MD`^2w=5sXNrSIOcjSQTrQaY$jeVzaEZbU)t$7b9WK7rqcNRfVV(4XF&t-oU3G^?=K^zj5SY=t)VNJTXV2E0^N=}-SO2|2k#Z$lElq!JT +VW{`Y42@8m1w*OAC` +kz&eG5M{!xt;@O9KQH000080EZ>*Opj)*7`+Jq08uOe044wc0B~t=FJE?LZe(wAFJow7a%5$6FKl6MXJ} +<&a%FdIZ)9a`E^v9(T3b)!NEUwguQ;042wHM8u5uC*TBB8mZEXz>jDgDkoMGdYC6Xs?42Gf#Gxx=Fc(hpL`@~S#7YWB|o6P=h2X9BO0nmg+J9K#eM?eq5Cj{M*Gp +nqXgZB6aJuU*Lw=x7y3j~prSaS>v{Yf_zA_$^Bmpr0-g_+8YVVb5CqY)zvj@)|WAV8=R(_<&iD=4W(Q|J0QwDOg00KS0-eLcICgozDWpi*~gyez9q%Am_(3kd|n +DHYRro8YYK+nm8Yr|~iL9GdLO(*2~3EO8l5;tH7MPCt|^q^=KsmGaTf&*yj{_OVK)!i-iFTc}$e>m)4 +-hTfKTDT3f2!@oC`!e-hFoss4^R0a71^!c_FP7 +v6{Y>s7`9W;bYv>|&5Xu$rf=ljS6B#rem_;+k^X4=OkY7-c)Gx#h2MmW(GbEj(xA<%go{Sa$PCv?1}Z1r{tBtXeFQ+43{SK_e_k?lCRKJGh6psMSl@bbzMQfh3DF4#Oa8F*{tltR +ySd#kCDK-9|KrmLVi!07^&zmloecQj6JQnbko*MCbdSDIpF?iw=4LdMIp2!A4@3P@x66Emi~fHhK>X1 +>nV2v}bXwAi^k2_hR3Y)Hal0yDC~6rDOy3qqvLLV+4|hO~JRdW(r583vSKCgD~ +I-w42z@Q>tq*hjYb8BE|#iBK?z*sov!hy+^@v4dC=oC+%w)FWafK)?nk9>+6*7HS*BVGBbMEKO`6!OW +ln$199TgwD}I9GfD^8o{>eb&_Z>K5}Kc;2MRb9=zkvsMJqHNY8x1AhoJV2rCMookL#~}#n->=eKUFS%)>&Lvfdg=9OMzVs_BUI7f? +~P!M4pXMo?doGPU$XCOM6-#H1$_6Y3heRJqD^N^&U1@ +PqZo`DyKC4#FW>8EUfkaH!ile?ZamSFBGM%I&8idg0c;ySqvs&=DAWqP_Dz4cCQmxJ&_uAh80{&Qz6N-kHj2o7MA +7+@_JA}@Xj_UW~08zu84zOkGl<#SllVATTO1Q_qRb6LAJHzw#h~-aqwW5O(k@BDTTg{Q +D;#h?sId!~9nHj=J#UtN&QJDDcRr^Hkw}c}5P7Skrsfv51@sIIeP)h>@6aWAK2mpsA?M%bLRe;qB001 +yC001cf003}la4%nWWo~3|axY_OVRB?;bT4dSZf9t9Zf9X~X<=?{Z)9a`E^vA6T3v73Iud=?uNd6oqA +lR&l9WGF>_eKHw85rHkfbR36eu>62v?E3lHAn0*#EwVmMD@E?Krny>@Ki1R7>J;c;?KR5gq8&EB`vx;a_Qu?W^DwT|Y=V&*S?zjS@P{W|HE9K4*WAlO)3RZG)-cemNbRU +UZAI*q;VNz=I`>mOtQJmDZ8W6;}iC0vMi?2Tv~49EG=-E&$E1W0mpQa<<eeEiAsmIel= +)+!IsAC`g-&Gwr1VjyGDkEQi`yigV)AJ`m1!Xgkb;#+`TQi5#cdgh*&0u$+s;&kQq0o>yR4iV@RWJR}<7KOZ9Bt3Y5Eqy(?{&fE3 +nhwss(bt2^%Y(D)Z|`9XrZI~ARi5IA@vke7U?hzdG6@x{^{;tjP3{+)#W6mya2koXIkZlcEa!8`4_ETQQ`lt)vDr>KOmC>BwYENPa>LIp_j2XvzZq +hwafALYtJA0CkEIJ%d=UCMHir>ooHJ{8NyTljr5U!>D=5mgdhxo%wE$`z^L>?zA7~|+;;t+;Ie5> +f!V5txgR^%`gaKup7f}4 +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 +kC +>JS-eq(k_2H&ef}a{xu)z+C1VhZsd`7x?_n)g;JE=vHsN8+kC{^729vKsB7Pwze7YvlDwtrr6qaIg5v +EE0-XBAcg%}EaX91H)KUlr^+(U4Wdn^bUxFIY_7S8ijn&gO`I0B|X^HKWmfpJ_XZYn=YpkCEew!~ruV +}-J-$bT&Nl7JWJ^cs9DmrRk>y(!2eod6FavvVvC-k?DY^c~v|UKp%GHeLA@w1B$st2_E(jYrVxKf$lo +aMOM$Cc;MfvhEPalKF)HZ>YK@Mgfyd6!_<@L4yW8uIp2&N%JL-3A8%%2mEf}+*K2Bu|t;YvufyzU>3!TkUX +LHz^4!hRe^WOv3IaNcdCn4^7>YAS9sM5Tq2;+^@pZsGd%p7oTS@Hd6^*nEPv3EkXTjj=`#eM`cP##CZASo)AHGE+ +KW}$M*g{;);Oak +s>GyWKDNVkzE5w(`3OM|`(2UrzOLpWPAP-40*oVssbt(OpCu;fU|<{Qb}(zSjBsp+$VH^ZDAu*FK-GO +?>U7UyPrXW0zuH4B|7IC*jgdgd;v9<+C!g2OycB55)KIA)mGF=L7LQr2Bz%4qvR~Lbwj`b($yP(o2LR +zD~+#Wo8dRviMBmGe6|Bw*54T&os3QjgB+$4e*4?X0DG2;qnTN4p+r0yfY4r~hKG%N3XDA+wGyRPeRSUGSF +Mr`t9CM=9nPe|-j?d|p5rT*!V8Q%?ND|dF##HTzLQ^qEdS_P+7#T=X$3xHIF +VMeh}xsO3RG#WW9n9-Q)#Ao!doWV0R4Qd|Eo#|3;m_8e6-aSS?d%ri-DeakJ{!(}@@2}iv$WHDT8+Hz +Tz7!nVWX7>CCdWDF+m5Z6KBV~w-7Ahu)xI@y9y>dT7s=dLZP!Mzv7YJSH+;bc!Jc4cm4Z*nhVXkl_>WppoXVq<7wa&u*LaB^>AWpXZXd97COZ{kJ}{mx%8x~Mu(ISQ%z<)Tz21QJv +N$QYfXQ)C%?468G{XuZyr`|JDGfDPEB7pYdF;N6)w^WOXjS69^!-Sr=aV;T*6{qd|%ccV$~Z@OT6Rl6 +d0#Wc}kDWo4$PlZe(p(pi2#Ia9vDPCD8xCvIiPS{Y$h6AHC1u$*Z4hTajjDXoazjCZLtVu;=DxhIMW| +IW|hHD_st**6^0Vw)kBL;2cbZMF!tGF0z1=(^qR0HV^oMcp_i$J!?3a +KieP!yS{Jl17U~3V!vZ@fjyXPrm*}QxPwDH{2%q(WBEq?u2*?X1q%@oQErdp|Jql7d~ +q!S!egU+#7XkTxw0PDB?b8m`7-=XY51>ID59-BN@WNUELX#Nog9>Z7|&_ +M3HZ?iOV-F~nl54yzmU>sIFwZI9T5095yl%^y +9mv5pNSy`>m6)CbRM2@0km37NsJP%(S}Ac%fPPtt-ZO*l&9CJ5mSKeEBU#31)B~hzQVwSSj74JCzt~`qYJQ`?}L& +wwO=?JtrlR9>e<2T;c&)gnjP*9S*B?Ey@9?hc5X>7#Z*6;~f{p1a^kGZ +7}A3kJ%t6g%F>_f;Ad7i+w@w|G%anwZ1%cU2I7>$2BR+9Iq_DND~qIxxMldOBAm7^Ww9DQySXs~bP(} +P-iK33572ZXyN8~M}{iwPQe$-45^gG$D;^5gnzyGiYrf}zH~G#R~jlG!;HDWf@0b1C4;d0zCcxhC2dn9Z>=L+l-1v&2&CYmL=?0n8RQ^_TAjvaS(xxNo@y^!LE^2*55N +VfQJ98t^g8dT!M?)#@O)ofoh_D}v;I%`X!GAzM_0PIpz4jq!_w0KwZ +$HI{IKTAK!aJ_kW2$bMddO9NvoMp-Ia1UqZql)fz3B&4=xzvUmt9Y^-(}x?q>j*w@Yr0_E+5S-a>|J; +QnLAAvS=66N$bPWX+?-Uw3kJig|2J`4JlIxj!dgXO14@6zsp634oH>b%rS%P%kMNsrw3-G0v-IZaSjlaNlJ$a;kqB7^4D&yCIn5p?j@z5Np8M$Z@iMwU-!TQ*w_ChefNWAN +k0=+5?<|Y+&3WW_f%O@S+P_ds0|XQR000O8hb8SytxasvPW+y?*vCIA2caA|NaUv_0~WN&gWV`yP +=WMy*>YIoEJNP*Ha5GA0|XthEnaljp8N47 +Jg^w;k(9|Hj@bt54q_nv!v?>V-)ySx2Re=r(PX)+E5(|ADr$t?Imzro(s?r6T@G&5o?6q6L_l#{UZpn +nM|87-7};l?79Y?!g!QOX@poHmpI+NvEH#!5H=*jN6-rOvq_osqji4g8clo3NZCwA~g;B+Ln|EIv)H& +F%xl6l$}NCx$b}Q(Bcf#_Oe+@mzU{r8bW0L4&&Ob_WzU;VtS(Ns-4|in!(Gg{S*T0A-6^yKghuNu*Fw1_+DVS8L1!sehMCe!o*B-`>dd` +joO>#DK?zf2cq;6^DahxDsr0=zsNd>TWTg)kDuoDsR>#fO9+e+W7c}7(^U;VaZqQR$tfWX#JP`?3mJ_ +p-`*%xj7@8k*aNvQY@q3qBs?_7%G(m0CQV7G9q +k5=;RS>k^c8!OR-6jUvqCn(04zO@=ig?FIrXMb^w^7{-gN$S4=nsa7OwA^#5R`##F)x3sAd +_zUAKc0-|Prm!%cs?D(F%4%C^(gE`^Kr14^dbruQ890L0X@gat9mhav; +@P-<+?QW;je%JZX?hq|vM1J?sVEXkBZ=}0gEi*Vtt;2=0HoC}jqgRjs7W&f{AQN*p@|k +d#Ig}JG`&5N4=EF}Fi2W&S6%v0R#}x=KlAjkV4i>@pumW1Ix*s~-Dr(gCu}iLJbH()|s(_OG^IxAYMh +p?EfL3Dtv5M&(m%Gq-CDmOZ<4QTwBBgW3C`XdCmP^e`yniSp?}^I{yEuMZ!{~JlZ%&`Gw&`_=Z4)VJKA)aIy2`o +b@Jo}-_eQsY1)6Qa~u2{Ii&vsP)h>@6aWAK2mpsA?M!L*;Sc2u004<&0012T003}la4%nWWo~3|axY_ +OVRB?;bT4gUV{>zDE^vA6TwQaUx)y!+uh5Ji+RhkX@FzZI;xUNGpQ+Ikpu!z8AvR;LZ=?F +OV_2@B^7{2i%JIluZ_Kj>SV+fynD_0f)MY*!!ao%;@z@$b#Ix&JJ9c4aL488}g6`_k1dAa^!na;7sO` +AG{Ag`~fM9om#WBxoVcLdY&Mw)2hfq@Xg?l`J+FZ;hu44mv;Mm*?IkQ4`C(^ +>3RZAUUEjNo>kE`sgMMVrjCp=kV-JA +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 +Z0XJ4~9lA(E> +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 +XeRWPJlDzV^5{UOV5xRXn?ji?L +8eM_my3m#KX1xYNMVr`&`-Hg?;xJc!Jc4cm +4Z*nhVXkl_>WppogWpZMDzI-#Uyu^41z`nf`}KGD5#h&y}P|Tjq|b0^qlU$cR5 +Zltg08hveudpFBLJ5Eim{;s#fF_R%k|*xCEJ26xJeqmNY{>PDm~GT#zRWp32B-rjjGRMZF|c*0 +#811*H*};Yy*lexc!uX0FbdBQ^E89Pva6kAcz!!+xaX`oH)vN0Q)%91q5B)~4&O7F~yX*jsnw?yUJdy +}dubzHH6E-PP@d?ssl?Fuzbs0|XQR000O8hb8SylLpr^0{{R30RR91BLDyZaA|NaUv_0~WN&gWV`yP= +WMy?y-E^v9{0sv4;0|XQR000O8hb8Sy_a?NTpacK_)(QXsB>(^baA|NaUv_0~WN&g +WV`yP=WMyYZ6F4+6Yd;-XT+fvFG#+U3Oiayq$^cV!j)ET|O`DzZ*4IxX6 +Nvf`QP#fKXbr=eZJVB8kDT=yxy%9wLvLz0HFRgBRCyMYrM_8#GnyJ!Bt>(}xiIj+a;0(M}WKuiNSmitNtA)J`5946jh?eOj} +sR-lGGd|8x+7LB-w5nn +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 +)9c$y7Oi;>YfT%OVAOgBKByST!k +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 +gIht4ZpsXK=OUtKeewGAIPP52VfjBMc5!bN +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 +Vrze235j1A7XLTxM}?<#RA|2gV9HJY8fNsOYMr +t|ISl=O`Si%%_;c;4jlWbl)YX4rg1b+#Skz~`O&ds1+^C0_<0gUuZ0c$4(ZwZAc9?XCHaFXXw+nj!d4 +~1z*iR)k#z=ltjE4K-1(x%a#apbB1C;(*{PEyR@z2q6^*=<~#Gw<&y0JkdK$#rIZH-Y;YQ)IQO{`2shaXB`UzK@IlEfz^sSu%in0_p}PXO9Uvk +Y#*HL#G+AjdD?|9aK6+ZR!OAFW|{5SuirsnQOSa)~1o1e!jmCVg8je@WNu;*%bAfWS(?1ECv$ +pv{#e;i4`%jlL2ev=#b36M}LHV_aF!_i-^uMLm|*PBtEM<*@W5k?8#(g}oFtO+N~BrGN(~Sy=Oj;S8ZQ^1Q5Y0` +ztNlk4419LVIWY=S&~{}@DzWM)3shWgjw{o$_@9jEuCmFMp}A7#+b#FGYCf<-G63q$n#fl_r4=XhWkv +%FM9`p{EjH9l7MPis(Fu`iV#t~_ZZlWqe<0S&!*0T?&Hexb(1MZ)1$T&~tWdX8VF_Z?zvw!5WTK(; +FiSYBEqvEC<^GPc#fnK%strHg5q%fvW3{uCB(fmbJdY59lt0n^YndHp={jcU^O)7W3 +Cz=C@&nR&t|1L6S5@_MIj$$SGd5b>H5}6Q;frNGS%alxN(|g$Pd177OaNi_onk*y&@n^dEu>I=3&n`if_|7Hkiw*2RshMTLE9r#MAKiA9ND5pK*h +62FDu8t__0M~b9pW@_4%0SxK@1ft2<{i4p-}OZzIkIHoV#4w40GK#GmGyA$rb)(19 +1s)W{aD{>qjm&-@sK4z=5e) +NaWKK=BIr;kKXeKFbF7hkDjWbjptfrE)md{AsrwG>1PUF7=vDg5&X{O8jt)x4rMS*=%VyvX&j-X3r=9`{(AwM%IUE)vsed9%AN`HJ{?mEN>@RCUP_Je#}Mn;c!@l +YLD_A}5Zwsb)=8sR2iC=(u^6;+d?=SFcaLn~IkwKU_@3Urzq#Rk%4r)}4h(wq(krq)G{6(uYEvXE#NJ +*PJ7Q4tE_*+vhYNZ3EWfZKJwcu)FyP6k@rApAzTlK9z)r@#x^7wU($TsJhOY3NhTAVv{$8kgL8q6p;V6=BdwoJ^YK{gfZiTLAe_N6G3%j{~lw% +LydsyXG$Au)v}oU^FqPqg;9YU~D&Hb<&nHc>~dS!p}A8l6ps=@ +1##Hb66gUW&RJz6#nH=tt189VDID0!>g`E2M$=RV%y7{^7D(Xr-_Uf2RK!9GzfR4w#G-_-!|PTscX+ZPyFBX8Z3j*Gk>*Zk4$Q|pT +I=4%5~((W*2DR=DXHcembLYrH6XN3bRk!QJJ7b1X_t9Rq;>+!78ttNV`g5#FYJZs%P@g2-<-ZUQ!dtm +Z3y~&fDC5XUszA+^6>4>7gwfvt(cQavJEGt1D!m?7H&(F`y-J~-(U=tu9JFiW1G%u`X$ZLp5}9Z;=)A +kaA4qqZ(OJvfJ^Mw_ +PfQ>8Nf}z(YgxLu=%oLfD7}x7N5!wj)z*qPTueDDf5n*ZE=QjCi_*1#;`S#{$ECY#3XTeQ4}quF$lHJ +#n_YOePOWw(*D?45DSRjGKNeifAe%nhpWI;hWF&$c87_=!NMOyrBnxm(1va9(bg7b;Svpr5BE&I94o-tJTQ4NIWwcDdqh0X +`BvqQW}+s1?`R%|y`KH0f9|oB4R5dJ_^Nj6w +tb_jCH3)xdoN|{UHQD@6#JFVeNd?D^cwR90|VRqD(i)H&iny0La9{{rZ>T43rqo_3|&_sUFhPdOsxra +8C7>A6MUa;uz9yx)sLxuLm@+OcR5Y2NN2yDsu-a=aEx4Z4pY;`ruC{U=x_+{OS?K(mW1le^GwkFjRolDc@fWRP$r^iI1=+0IQJc+h2l%*LuA(ZdG5b;i5!i1%dr +q$hp=yB|FCT8)<99NDZTHsO#QFe%0)o4|63lj|pzjng4q2(f_0T(I$EaQd&(+ZFJ(*D)^jR+>hDVl$ax^1MSE=V}C8x~+Rp_!SDl1NSD;3*f +G7eTZ7iNrnb5fN!-qacVKAg8v_?Rg)tWVg22{-rR($xYDVKbPlQOFocwGW^U_41;mOOg~uc2Qbh-rQi +tDPK#eFBpsJl;48hQnrY6UzW%UsSh|ieER(4<;CfX)05Zk3yUwKgTKwM@ZZM=U(Bx_{!YHa%X}@DF{t +&H@g)H3Aj|i98AYb*P7mLqB;&nO#*H6m5{x!YBl5RDZht=sKDJ-nxqk%e^$bpmugYP3y*F17RJan!=)O@8a9 +Z;N7&Xx<4ns$ZvcJo2Ctddx(ODypwE*OprQ|J|Yk$MYVEjO{%JNk?v)r-)oRE@3y8tr=1p5%3Q?e`m4Z-|fHo{} +03e4Y@Oi_rtrH9=?A#&v#+f--8F+>Aw^02kGvixvRVp(Eu&m2IWngm8RNO4L?+CQ!Vg+YwdsRRf~W2% +FU8@vxCD;Jh$5ZXYhJgHvJdp!43e~l4f%iRz_@Z}g?`^j6Vlai3xi>dFTqhxeugPsPE*6q0l}S6#%gXmAdinr7YDVGEI)mX=10Izp +)%X7~M;8j@}fME;Q1J52_Kc*W=3gOJgM7_}}Fc4{!$)k60zP-vllBRy2^p$5;L4`zz3UjYy^hxA&O0b +nuaXC2EoxCU=lxCgp|~HclYfhBp3fxhz*6wY-$CnI-=*iKc0g#a*m}J^##!OuCI^ +H-4qEgI89HjmyB|gv8s&5ZfUZ{v#kus>Xio#*-%0N>aePMguC2APZ{hBVpfhLgi|8&%x!IAEE85tWmK +?F&S>9{zw;HJIRH3rt6MIaAZtZo5%~rbZb`!1`<__WNzv+fs-P?e +G+{fIKrT}bh$wZ{%L#V#Lv<~3}7^@$&$`MB~**#ZN-5&Y0EKx9{W{Y=VnPX-7uCmO&El)rpZ89_u1gw +tJ_@wE&e=!mW!J5@OAXbPlk<>k^tQ_;PJdAAfC&=lrR7(+PW#1o8n&3Au2bM8s!c09tyl=_W&=N%&|s +y5z(8`d(LajxMC!X@!>ddYv1Jp(yy3|J+c-nCMr)nwqc+KubqLyv5&3$;+S5Oj=neV-gn#f_L)e2H>= +!f2`;hnO?s$z>bMaGrK%yt!aA7$9)l#r{;He40D=NOcc2 +v(v5p6cHZ<;L6nss*tx_rZpDjZ-tiWLH6Mtc(CRX$sEcr&E+EW!W3P)h>@6aWAK2mpvB?Mz10CphXa0 +06Yc0018V003}la4%nWWo~3|axY|Qb98KJVlQN2bYWs)b7d}YdF_2`a~sK#;CKFtwit>AXb_sW9lWD& +Wr;JZSiMftc;|vuD)7>Bmd-uOzKI;8wfSR$-j$4F1BG6S?Rasg2s?6-e?D*(7n>UNHzBblQH&&JsopMCztG5qHb*@tV9z1{ZLO`W}Omi=APitO8FQ!k3XZ0afWd@n +@y^2M{W*YD4!{e7Pm^&)%r=JkhnFaG@fhd1xu +dL{Za1;>R(4#8zJPrwRL@uP`y_jH_TlOCryriqzJ2lX?Df-EXOrxQe?L2 +WISU?0P@BH26qwPvXge`$#V?z(rEQvI^8#kHn62ApE!uuN$+%5jti%j9d?wd0Imp6KD~iQT+#~F6lHI +kiljiHQ_kVc@&qYgr{(ukL@xj5tY*thikiltoo+EzS@^XW?%_mv@XW04|b=N}+v2Y*S7BXt6tJ?qZy-O22(%#@$H*;AKq&WL;HNaT>!vix$5c99SnHz?9HoJP +hUTewgiG%0bW(pgXb^af1q~nq0uOR@%sITr!QZgz00F}oxeMK_U7I5oc{XX-=DqzaP~a+_XZxlfAjsj +XJ_xBoj+;l`TpOZzJqRK9{k1YZ{N($e*A!QoYE9az#z=*U|tnnm(89bg^ZfZpT)c%pU_x%uJPZeSw|< +HsVG|&>os66LyUFAE)2j7&t8}HO}4OhpmV@2#1a@qS(p86HtIyRl*8F=@bdy%ltoo`0tU%SB!+q}rpV +HOiIrVeH|+}OW1BU#$d*l;37B8zZ~Zh19LJsF3IHL0`!DxrTtnpND^UXrgQE=3z6Dk$4)k*7l_=VwwL +HTHS${2YI01-#k4P+gL{`~%S;@=IV41zxG3hA}I1c9>e=;!jVzHo!PiV&y(|@{HWQDV(IBUHeGusp3E +5(Xho{;SE`@nGVwUtY1%gC=AV79ec)rmv<`sZ`q<0C8#zl7}wU4U&^Yq6>N5p}r{zyi-dj;BD%qF&IC +V|^BU3W}eKcVZ1<0=O%j0o=~4S-M2eB#ZnD2o&1T%0~TmUCxPWK{V0a$J62CF`=HPuYt-Z0CQe#K%R= +Lt5e#^6u|-4?wx~^k)+^hOtOX~9nFJ5A~9Cts+eyxLI+Be?ukW4{bt=a4g97TDaP)C12UkkBQl`1!}f +1FSVMsrgL5rW)&g#uwiMkod$FXg@77{oE=#e9%A-tU4w(QzTm%DKSUN$VAKDF!+h3QRLC0NLRUiqP8) +6;E##&foTT3j&N0uLVpJ6?B0)WB4plAWRLfwWoT`EjTidT!ky>)3^@*uU+D1!x$Tx<2m>Bn3l_O9Zoj`niRtZ7Hh7%%Sq3$^9Q}ZfgN +>nx4R+ngaL{{gUJqHkiZg2a(kR5DJ_EW;egVGjb>LTLF_6u(=J;iq_4uqC(XaIQgZR7r+PL#96SY@yo +K_+~X~N+ +3_6jS=;2*)}z5+*1qNF!595pVk&2$KkV|6mrY5UXZe?*E{8(X3%+t?MEa$oKAo)*)Pgeh;qTU0;CA%0 +gl5RX^>H#2XK)uw;9Zv{+O2C3?UUIC>Hw;fJx(Zr%TPpK{I>S?bP5~ +)FH^^tRG|U45?H`Zw1oiWDBV}@b+iR;rsahI773`RuSPthY0= +GqnTcXG8jn%x^OxO-1xzR#e}vcrz4Da%f;{3v;?%VM#QaQu)^A37d;9+00OIyOJ|suQY%SEw=@iGUOJ6g +H;iwv2Z8jE5DL(T9u-z6fu027f*L4M8dY8*TMod>PFVwF@=UU*$0SdL=#1DsG@ +fB&R_x$J@YzD&5|9==HC{7lg_D+#EmaREPi`H2L?W1sZv3Xa#Pw!%30%f(@`+wC^*BM*&8!+-Cg>8X7 +e%{py(t9$ax0gE?(i6y(Fc*yZh$2;s1nu3pu?_Vft!_R%ejpn!UPNm(5g@m(jSRf%kJ*CYa!>~k$XJ0 +K8b_DB`Q2Ilxg;UU7#O6ITiST`j0C8qCtl=ZVVh@xsABk#99YIjs#r>5X`Y2py;jzy1)@h3Y{ykRLk` +cvf#r#am@=+cY4i)WqRmiQe(Et5Hwc#MQLCeU+!G-n+b;gH`ha +UD8NN8oBREb+XV`#Et4lwP2F!q~F%4HNtPWCALMnaJ_6~~hrN-&1#=_#Jr3TMDlip&Xer0g2smtTP*5 +%x|DN>Xjdz_Gz&WGx*=WcS2r`=zGff|_|;yD=)8MOq)wHM!i>bJ?caDr%?J%d&-4fx!&ShIKUZqSj5e +YFfd<%9cd5PUN!UehpkgER<{Yn(iDr1>@oZodh7x;3pmrov8uA4-@%hkfH-j17g&$QT)kOo|69}%Dt- +QPS_5uzx%0BcM~^ao1O9`;uNIk9^6H!k87`f+S$VOO7q@6TJdS=Dfvx_vwuAQ%ylRX7-f+$>16Fcu5K +QVE#(gPGRJQ%1x4x%YRN>`BdLo-;@8068)!_*fh$`;7^7!Gy7$~?aspCUHDVf$Q(W&tFM7??4@@ODpEFmzyR}W^0hiF2M&S`?O;rW9@W0x +hNN%c*_Rws`SU1$+-0N3-8j!4XCv2Ea_vW{gZ>3Klj24qr>wy1aX)}%l$SM-Kq=2`V{O~xb^`y0q4#v +71QT?8*bX-hH9(J*l7IgiPDg=<1^Dv{rQwIRxGmAQj*fQ$dis}NWp{;rdy33w(TJ|jdk@}qaVr>_R40 +3RGnq}N(|~6-6i0+@q`9A~j(LRXyY8UZP4-B&esscqq0r)wTle)gO>_8(2xk1*dxQ9#h3z_NsxGIFu0-Z%lW1%S`9pqWBLh)Ca7< +?Bb_MP`L(`+!k7fVGs_x~r6x#$MYfs;c?U=mGKG@ENvYPcwLP4Xwu+O;fHa@e=_TO}T6h$Y5w+*4QFx +)G^~;ph3mO7Zq)(hYZLIS>z(I<5xh2>;>^3vVZ8U}_71f4e8W}ea91ar{NaRAYqIg<%=iz16y&{dXl3 +LvrTT=X1o33ZEMAyvv!UVn&QRE#FvHTM+yQLozX8`ICOkp$U&|EcH`r~p_f~C@zz~UDIW0pic-|A>Cd +tL7Zg_NP^mVDee&Q0CiQTWxRU}7y8;4uQsEPx~Qoe~(_d7fTYEPI0o3i%y-vqKF|bas51d<;l#no5u_ +)zJ+VcJU}*T<9oAFh%uc8S+G+K>{U1tzdq&^z7X=?ZVn6=Bx9Y;!1eh!{rvW@YbFu?j$Pdu9ksONd^_ +;sa{Qv{q!wiTT0w +Qv49Dk(OulfQj$sv|?n;yd8HG)^W!G3vJL<3WYHK{-P@r~IGbcxzr_W7w@w4yWy`+tyz_;CmVuw)aeKE6;hrwDLMRTafgrq;i5xhe;K1a+0y;dbGDY3#p +V;xxM(+ndL0ho@pGWPnqDz=@ub3vt0TW&S#1h8k(!P`gFo3gIVTw*E~4@BJER0aQdc)VEyM4$8bBR2LZ*T|I{&@z +Ud(r;`UQVu)Er^v26c#c58D)QlTTo7Eh@g5iJ2_qvfUo<*Vw(WTI-Qf&K!|Saq=)p_WO2Y(7PFlUZI_`I@hp$1|Vn=O%t?*#xX4A0bvlN3OSyD16kZ$9% +3GCCQ}8{A$DSrpDC)M#=%Ld?@@!v&L4LlQGfB;n*$YI#_7&^pe+7R+ryAa_2_Z;ry&h#A|cx0 +elyScVlKeAbMK +J{-v)p0ZTCwRD;ddL{wc%R9Fk&EiMpsFpCkRSh=?7Cyz#XlcO9Vq!8WEY&rU-88ONjNvzqmgjFXC6GQ +zhyGwU9zXfV&ctA0udia1o1G2!Y6l}@f)w@C&T}o9TPb`uO8fK^h4O&QuZ~^05*vyps7eB0Q)K=`&pv{6EHc5bmnkZkp +P{53b~5_)N5eTt;YYXv<`v$OjGVNv)fU(;Lh8W$INcU^p*Ut +A=Cag#5;_zD}zZ(shAzrla-+1KBwXRF26GG2KY+}EFfff2nNC#KjL(4}?F#fOd`rO%hSgO}%YM~I|43 +@Laj$5+L#n5iu=B4t(9Y`I+ujp9l6>iO3@;BmGtgCi1D1Q#eB9g~A1-d>W}lw*M8bnwKAdoWz)WskYt +LmA8*1;kf^3|55;fdUNbA^a*Y5rqLH2a14OHWj+!i4ODA+_$@3o7>Zg3^K!8J}uISCwRl}+gBcpDUhL +SIMGU7)jCwKG#KS;Q|C-R87E*q?oPF)?@e4^8}RQV;)~KBZ+Yo;GpIRRGIVcGji#9=q2&b?k&QHD>(%svRLa#R4 +(9@Bz}UC%t5gYq0xD6T9)7(t`4GT#Eyo +NisO{J5Y9N|9-@$VSD}$#$p{Z}zOE=iwPSB*#=n5i8Oy%Yg +@|X5oHWvsc%tViB +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 +w%THZka3$S^4Q$%s_( +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 +}k9_jJYF;cs)vSFa|TVO#DH&f3S+X +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 +`E{AK5B{32CQk3)VPmF_fF +GJdpA4UCOb$;4@2Tny_)A}bZh8Id8uZa?(7m>Hm)8-B``OlFTPtEMNHg?jup!4-kiXEdXhE79Gn$TH4 +aP6pVCY(+26fjK?!aQ$!$*JwruE`mh^yqd?jNi#OhqsL%tf8I^#!+Dil<|atFC*!yBjk6RgS(}{v?O& +U7xVR(O;Bs$Izb4#nU5WK%UjduTR{wGGWg#wWcX8?(+W9M6ENR9Rxz0MRQ7TS0(V=gErfuxH)8bTt%5 +q2H(nDNle@Lr~%m^H*6cg*o~t(o>y$8@>QXCxJT0!V{zjqZTe`tH0dO^De4WVZLKxLjoH2pkPF`Ik2v +ihf3tZH{0dbhBL^>m;a9Rj&L%evlsMnhy4}pPooGPpya3vdxG5!5H=LiHt?N8F!{azWeXZoJgoFzo@y +7qWV+&C6(^%tP(3OtyD5O0WMs;=EV3TFVU1ga;W$Su0WliybKw8so7&j40e~AEWJ7aquteq!nN}FonE +-aZ+EnI#mdGjkJ1IHal^;TEBAwq~gAjeD(q}Z*^xK%OA0;QaPzPNUA{&2&u6VsmCXxCSLW+Gmyx-ZAa +qdOxBJ`w(&tw1Gc;VhgnIA5dpkJl*a`BDty5KQS5l{nP(`Hd3ahcc)KB%4jjhLr=zG=Jjs$CFsBdTUR*+_HWGg0V=j +dcKqZH9N7QQifcN +;>ZJq@%;>&XZyWS2oYHVYF$*%*+wr~qd2jDfb0Qe0>$c}g)n|P8xl~q=?Mpj;c5QB|<4{ +d{094uF_^yP6^M63p`J^TC;*a$3sCavTTwo1h4E7~QyOv12Ly(dA_xk*B7bhYKK>f=Rk!LqM!e_cP*p_je$80j9j?L$U2!2g%?3A=OyC3* +8#Ww3RmgsZ%Y&QuhOSR3z-&IGH?RnENU#w0=)Ea>j#Be +R1M>8kfc`CGxkNfI4$qg~Pl9d4x5r*lXzlz|Z@fJ${S?k8ok?R${4I;&- +Jl3Ws*WP!ZNVeSXrUCNq#?qHQZ)3UBx4KmLX;Teue}AfB;Q~&4_x_~Qgw}ni$VhL8{b@?B>OJ&rG{xZ +bG!S1lQyu4B7`XTj`~rRGg7)A60=rWz75sr#e5_S4acJsxu;+KyWrW=On`e +nA%#*B7oO=j!KT&=HLH^L-G)1Lk&Y2htCnjdYv7_1K%bgMaQ1*1C`;59)1vaul^YmXiJsqZget1-BSMmP|o5pzFy(d%VaR^DEC*M^wzj9&?9D$ +JfU?*;=CxkraN33_pt(n?m>No89VxZQS|TURUO*1X;zN&ok~UjP9Rq~xTtuY1n&w6R117Ze6aWE^>yjYwDn`VCeXM +A&TbZ`_rDc9R7UtBdo^kfvAJa~9=4F7x{{39=tZSX4jXTFZ1*mwCXE9xu_nlfmvvf#zGxhjj`RXJ~Nl +PU|oDK|x$G&#J34_Or?&|cA0`E=8i@NH3L*(xgeITc^SA4yxl%8x?4YT +(rw0K%@~XM2vINKJAbUH@)=lt?-aoCXvN{cdqhMVni&b(O6eV=1MUsPBe%hsSS8i=GSFDJ>c +HNs@~Um-N5Uo)FKR_{5&gHfUPPNZK~xz%e)u|@L`=)bw-~yMf>>#J69wt_@+Lc!0R#L*m-{0WE&{?%c +g9wdXd$$WDTEcn6+XtX}0UE9tYD+zDy_OIxDiO2hg{#U%z;nrFoUjnr~q;mpJ`(@VBJSoY&)^$=)^ux +(C+F4A82ZF#)Af9|u3a{Ej}2WL$vGk|_W;hmQyihHh+qdjX>`4pzx^Hc8>N)L&&yf-qG5@8$bge|lEj +B+ERdR;3caTk5HpC9|t6ovbSum#W#~aKju-W>uB~jpxY{1`d|XrphMuGO4e;ovqi)yqV1NWyVvs$Qp$ +BPZ+KVqr*@u7!nvnTs>YmTnb@KV3a37lQj**tE__0FRJn_AXt>u3cB=lg9DMuu)wfSyPVf&Dtui8d7? +P+8e~#YVelj|X&XeQ$gX6zkd@>402T#6z{PNY)*KXOrzNtT+UEx49@aYWxkK&I<@aIqA7)w4I9en%x` +|l>mW}ZHOJ$e1VUp%#8gh-k9ubS2JU9yImnGrL)|2Dd6MqjO#(Dc_&zj^%QcdsYUo`3!HC#W1=HO;y{ +y?=kbUFY$d7-C#j3;G@&9HiNtMl@M2iTV^#Qs--2&S%fdA{#OPIXpZ(;04fZsv>|&fmtb_O2Kte-WI` +h3p_K(fzQ5;snRLXK(ay>a2mV@?hGp?DCfke%~BP?J`ElRO8|`}uo;HgZ7jC%%I63kCOJT)Pc8mSvrVBP +ez-gH=}t4)=*X9LX8|#{t&_DR)~|*FjRDTmxY?-7H`zgSuR4+4pID62Ap}ml=R{M(YTtp~}L#t%{RDT +uUvwImktVM}VYSl*Nmf-kbzb=Ev!#Xg0wQMV43jY!nC2V9tW?N~X@>3S^6jpd%T%Iv@!5lj#hWWCKm+ +%Q~25vt)xDvkB^CTN5(8(t|LR`Y^TAai@$uq!-Pu%SI;Cvo-+CL!AVqS%Q-I9U&g_FJw{~(n9!?LKJyMR$o{eo+og<{My&@G=^W0~fS_ze?()X{t!N4r5ql>t!;_Cj7=7PJE4VpTS2hf&;2+HS`ea!+i0n`{IAPFHRJPq{UHIQ8`7mqr(h +|UvWvK>?N13gJW3gAkvYKBn`jLED7SU!@As5FdZOaK`X+a0ih_2o1}^tzvA+skJDdI)Mxq&YCnHhWv0 +J|JbzOV0oAqxFIz0AVD>hnzqeOQsQ}9Sa+89}=2ls!^KdMqdSnR3CV}38>?Az^RQcPhe0CL(+EWMHau +eJpAl*PrtdeGS6_eBju9g7T5m=x>0@njjxCXfx@RnqeOtE4tsl_|K*n=9t8o1#FIfdMfWCDz|*I +4Gff#cjb70riJ*oDghadWo7e#pI#!q?lz0A!&QN0Zs{wbiKVnB|Vwu@J}_n8cDyq9VT!_Q^E(CyMsQl +EJ2ZmPT2$ArGrm!5^$c>B%o-RO!5L$DuBl%i!U$3WwuCW+wk(T4_MArqc9Yu9u@>lJrcIHYLQ}IY+pQ!y#tK15l_hWfw}zGZ} +tyL3J8jZm{lVUga*1$t@S9;P_LMKQsd@(VBrl+$EqG1ux>NzInYsnS}WV7L6y)l0B%$S|J=arZEEZru +x%_5+lWe?Gt0D%TwQTAGFp8$H?6a1grao@$`Ony*+a|$QJ5j(yw)pCf(9U*epsVaNoi7I+kqWdi-Sdh +V=YRlPk%<@G>779i)LKbhph3r?Z@^g3MxCOJQVgabth> +l5Ag&=3)Kf&P+amhF@?w)&KbZBJq`sb{FeTB*7!DdqMxmXC85kPX9ux5d%XQ~rm27z~rWt7WWS#d+$5 +HT~xQ1YKh(-kpdg+?0iW%H0NN$s@O-2Tpj9jdVX}Cxm{3NDgX1z)4jBxA8_;7XMHf_Dyt~X}k*lAX?E +Bcx1>vzhr6HQE)hymI~RB;Awkz6eP$@vDIp}``*fjN*$&*Q&ISW4Dq&?%IH@83>}u{@yYDL-T*-a+UuJk|9D<2wc_ +92i$5^sAtBY)`al?IsRt2VEMsCUB(!y((QATi0TEdyTcDy62X^frOwe#l&EyVNuSgxPZ4M^;NL9gXi8 +eL52lB#f>U0Pkl{m**7X~2L+@!J=V;{XAjvAQRFnKs@Ws)#FuV|@fWtEXV&SZp!vY(3n4)lZSHJbGa* +Aw~DY9XY<%&y83=y+Xa^9&_FI*D41citsNL?`>(r+&T+hSB7NH +>j`_c&osywWPgoTS!CLhQrNU|yme?gdTb%fk)m3*NyEa_@~ubYaF0}rBVoy{HP%rjU>FQ14f(CnKz1D +0A@Q2H$Qoc?T_=Up=ds3nY~VW917YwfCIXwj9`cS=pAN&+gO)Q|1GgoS4;q|6Z&Q#N0d6`1$)$M;;)& +f8sgFCM84F}qw+>3A6=k2H3*6@A5thr|CdiB0F%VZpa8t*@ulagpvAWh;(;SRFj`QRO43#=i8wK16WJ +L4|-i$SV?b1NGi$)k1gvmi4B)()@UwIYTPYd*_20vfs%{GXDpjs(RB}SsVWh_agMdD~X^l_Xa$L06XV +PFpxb82}AmU1}LiMP~A$LR;)9zp4@B5k7d(5)pue#8iOEAv)VoMvEtMj?pZfE|P=U+z`xce#f?Cxb5c +@Dti#U+xdGj|*EHg0fWF{Xw-iI3VL6Hw{`yq+lU1AZ}G3*S6xc3{R~ABo6V^%d0-BV71%EvIjrI04NI +p+u)o}no_fnNnXs$mL2TXJ+g*z#o~rT&RT+S0FfvPy55pVbf=?+H^wxyE8Lz34mhJ-4zh~sS(U7{?pp +-7X9#xrA{*H%GK_2v>(A1h03RM9s87>>oo(yj5W90Y4i05#4_lscsD|#4rr;1p;qb4mK0Ic}p#j!EEk +rrEooXru4_OsF8M!(NO`*LR%oRo`8azLoj1Ibd!S*4Dc_ea!LJw%~I$6~iUXWFw=FdSB>lNWJr}%rkE +N{{C5`#WjH6nPk#o{d7!{E0UJJ*q(x&B$eT}TVfOjU0*eqC@fOn+^ugG&W-}v;!H|c#qo=pv@xMpW +NB_c^FGk+&hVG&QDG+Mk5k6H^^joRA?XNVgQfdtY5^RsN=sddTI{?79U}Iw@HONMp2k^smJxs`Eoq!*e +?QYlOqfL58n-bZ%59h#{YxX0OzPXV-L>wGx^1dtz?>w2$Fn6>ROaOz+0eal@vs0l&lZj(^jLBPVx$LN +kzGqL?iH~BRyIC2PZdu1(Y?JC3taCr6Nwxlsj1!+bGf#YuLW#)2I8J1rHCoU^DplZeJomw6hD35VdR7 +ll^tsE}(f>tIy#P8Hk2>@x2r>~zMWV)vj4)aPdt$1JIT;)*wnjp +>%QtI1Q_u%#iprnqCOp@fK`Lf9~2UP`D~5}X{<-hU98`sRo%j{nwxG@Gf*Brw|7YovN=AfP`{+m45CjnHV(%>TG8!T(^KkSK%lRI25GkSc)Qky8Od;|HSpDwLJpmUZld6L-;JVNN(v`$;0dxbrd%%)#UgNPw4qfS8(O<&4#OC6oeYeutVSw=OYv +cMXw}lG=>!@V9plQinF&(m3 +UUQL?80csJqHXj~=C6Srg)9EhZG*sJOzvejCwuN5iu9T05whW+CkWRP2RdcDNNCJ1M-Vd3l$Vuhac$H +B~xn&7ZtuBD@@Qz&^QUOK97slfx0X3IFoN6Lm&H{yK*wUK_z)82nNPKYjn*F;r^9ZGJ^|7;$qHul8{ZPYgY&;vau}4NKhGMcF5S-qjGTV}=~sPLnS +k??l{lqo=_O9pKCXZJ@gHKtnHJfHt$_{t +8X*ndd!PO+)2kCa)(DJ*M4iNLQdOK>$VXMvh}&O@+% +Mir`tg*~W%0K6@$w6^M~m%yISFM2B0o +7DlB4%3i|6qt_i?cwpoyyTTvpFilz&lV}uqu_I8m^j7zdPb~DJ$?iADF1=>9JmFLf~h-s +(bHLccK3i0x?2Yf1bu#!evgR{z%Fl)BMn<&_@A$Scz#!Di1orcz^X7RO;*hlkSQPo;Uz4JEhu8ETq4r +vn}Yq87|BNPD273u&_x*u)D6Osj`zH`%xk5I(V_PcCuW8R9`!$rpy-b;C*Ob$?v{f{ExhpGCq3+wz}8 +@n(VKrClenONf-;hDd~-Ya9rG00UaJMfXSnE3m;8mD@(0`k}%j?Uoth%c2#eis^ZD{quHoyqw$Q+8R!mb?+;9O +pB(U+ZsZu*5=B7oW7sSw;kQh?t5AN9#|X! +d#o6@WQl8d8>FWFrk?U{3sb771t_1qMcM@@pSq=d1Yf!ouS@Q$jcTe(ad#r*vs%(+H<Rp+K>ZCR1;eahU!5LCU%mJe-aUMD{`29*$D_k +{p}aYPHzB+U-^q(l;l(4U_NIWhBlz&i=&J*4r2`L7dD!sq#D@hBUfA#sB81q3-De%_K6kPE!h!~vL2o +(PS?~`3yy8DUF|AK1my4Y?4Jv$zuK^9}6=zO64-YTCilDK>M;D)rT%i4FIyh%t|ItCed$G-W@?(*sR! +)njrFS{H#J)x|1;-49Hrg)($tslQZN^x*Rvdlr`Uh8J#N-WgD?W|p*?jUe3k_tktst_n{4A!eC^JFOHcD7->Dpu)Rx1QH(d3pWnAR(9J3 +n1v>3GP#5bwEX(n5YC5yt)?I99&#QOfj@B&#le>pL~d`e$@{o~(1GYfxie)%GFY)@WFY{9h+B9}G4eC +jB+gFc7Oyh&-vgxZ}~gJI}33>NV;S|+P$ngAaN!h84boxDXa2H4P%TKNw~quxL$(yVyX0s3vFo%yef_ +CFXod| +VQ=AM?JDH;&N@`x>QJ@0iKZEZ9QEr27?NsMZHl^0{>SNeYsou+qwwth4}Zm=DdJ`*fAAb(gW5)o{3uw +IC2K_Rd7ZCA)CFmK1Eari+gmb$mDM$wyrhODpn8@Yz$~e+G&1m_cF(cLz#wI+aw8G@pT9H!J@{|y>Cqn_5)9ERtQ;z=*|9pc|2e%PH(LIxd%2 +5isK6}Xw7zJ=*3&xax{H<3Rur|^7@LI81O>o$t7iSM2y!URT`rX}(tje-+cO<)FLTU+STvNV`nNfn~k +z%?pidv&ousmau|D=w4*)`Fhm{3G=I?OBr^;TNZ>A%uZ2P3G$5I1Z9&NkNCP`l7DK-37d&-5-hveG)X5{B}W!`z+lu5ohGV +)BVZYdCbi2La|{KHZ%$Ld^{%m>Dt~zV5=QkpGR1?D9PG2tPcb!`%JMcPd6Dz(_N_Yjub3^60w{hs*x+|WpQK1 +uz<6MeX6`>Y^A0_KhoDpwknIr))(YgJlpMLxv?--F=LH6f42!RkbNdE17k)RG=}ika}z||&uDR(4ndF3K602RaM +OPGnWem7>kLQg8Bxf(LZ66)Vw-H&aTLEx=sMD$|XmGTV8MyqSqk?SpRG<;Hc(~By@h7==z}~FvA5|j$OE9K<6)xA8 +D2$XBExfbx%^x_N&@646!cX +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 +N-Q@!cHuHjZqCzCZmFfPRbi{E|| +mFQh@|}F9!}3Btf&m`BwXbc!~wg5@dJKrx3VYBcO-OZgc*|#+>Lx|H4PT6WMvljcAbs?RcQGLMGXBML +ZqUfYp6VsZ8};wz$wju@TL@K0e1AX?dB{1;!kb`3tC(1iqD-n}T^;>UBj?2ujtx(0D*L)LxCvW}vE1T +CeSLH;orDx7v!3(7)N$jwG$6W;^Y@0jfc(yrN1rd2G_@u)P6)2r!~w@oKXs(uj>5y>;(IM@JSh?COC` +Yu6;BioK~0J!C-r7?^OQHK=VGkL^Gi24wBAJUf00zr^yVSL%^isHwI3nOdr2ig}#yZPk+Z+qkKn-S

    5wvnX)Cx;gW-i7e(mL?%=xe+Ehv+6QNV(-7aE=uS!Q6TB`}4z0M +a)}?M~fzArjG2imKVnzT~+8xX3^7J> +$KA?$k`8jm+myxHHc*zf>#NV;)J!>F&$i^TDk*LT3#Yf5H|)y3@IJ$r2sji9Vy{VXZBRqad60yFs)Ar +10M*S3V!J0k=RTHY{bEbS_EV;Q-OMMm!bWL@bNjdsvz>(tsO5z$7UD{L_%@oHp4I%1xkdK92ddgvSM1 +^gG~y>-XHJ3egF34F}VsA9hj;or&|Z;0DAPbUTV)qD?#wIR#;@cB1(CPd_n-{PdF(_}CTAujEvVm#m`ixD^fWw +}m>fL-W|FXUS}BbR_OwQq@uTCyE~h6BzdvL*EL8xnGcb0@~2yjObv}i6LLriWH;QjWJllAo;=rVTZ;$<&`gvKC0fteFfM8a@fKr+qWdVRIz=HEeB)r6Eawy5KOJIPT85Y5CNs-!bD>ei@=G*(}Cs0m)`bmnUX@%kJz +(gXqfs!xb_V#ut#S6fB3w6s0$Eil{#jvX62ri5YS-O_EH +C8p9lRhb%~ul<0!!e!~0ww}jWG*=6j! +yAW&1kLT&vZQRr`Vv*0NfH6EOCpY-*LWWpdM0X>irP(#VI +(!i*_nY5;IqfDqG33$R$XHh&GFHF=-p`2^m^c@-MJ7ByxtC? +t(BHCfmR4ZvWTl@JT=wf;ie|a(e +vb`LMcxEI|y+ra0WgtLT2suxEs`~+_A&_Tf`Cuqi;}o$*uDL{=stKZ^4Ahx*;n@;KfCC7=qT-?`-zEy +T-3eS)XB*kxKwkKzde&=Y7#(qx5(>Q=CIO|7L)DaGL33@$mW4YY(&oK}gZw(&n{gOHB+Rbt%AhkTh!` +-Snhf3q96-<(>QUl9)y#~?S!OVf(|VH3Q>R81UW~(jVD`oB4}J>j59N*X&zrV8#bpa}Sa3!{F?6zjtt +xM-%|!2x$s>BR4zl+BO)vs|_5F2EN5-1Dpd(Z2Ls<7FeB6tMKq|7Z5Q`KKQ_>0Z>^2QH&+p*}EXMm~m +2Pej-ZDv`>mpPR!r{ezpzeEHKFeX8BH`)-yx$Ceyr_FvvG=F2r>|;sb`RJ^W;cxH*8F@MU~og$JO;BA +rsR}07|?+5_=sXQYo3a1|2!|h#b;@J9m9(gwsPxjbb7EeUX#R$TyvJ9e^@otZ +My~jhaN4k}R104~hB*v!lLaDkV&$mTJX>5K+HZ3ppxd@-t7a>J}F=)T5PiiyL%_q +GqGLuXnUjgj!Qg^Rnsyn=dVUgCf^_bj&X+)`ftfjC$v7}0ir|oYLj6<>Ar{IV}?Qg9RY9Y@BsY4)=k9jaZ-cfawKi8B5OLy@*}Lt%D2RgFDm~!^RxmDd*tWw^7X=!YM2gC}5eurT_d?TB$aY22~%L81R(JuxvBcTKyco>*&FGNv- +_gd0ElwfGoD)SMRixyRGv$063VHn0+@=DQQM)%`N?*PVhEb!vm0wh$GvW;eDf!xwXv&ckGneT(Gm#_c +hzy2c*zRezZNXYUmwP1oRVR?dux2PKsYqE*phVLbfb#6yvMxaUkQtxgk{RyY+t>+vC*}k1%r$rGwhK~ +m*V91MR`y8}T)16OuDK-YfCwP{aE#@6e0A%yO8FBTY%?paS0HxTJ#biZtLJFV7q*=yvoC+yemK_Njup +&Q1au+TsavjAYrc`0br8T{o;C#%w_#+cQ4$^346Q$cL}@GVzXkqkmp#d{oSO#8^{f^|f +^qH#sn>=vIh|bEBPfm@KfDdM-rL!^zrP0}Ot+^n)lmW1nLp069ifBOV4dn#7U^X)X|zN00^qZH2mTX< +VqycCRR%MaEx@{`^`%vdxT3h9H|oHZ`qwk3XU8P&vf>DNI%k=-$SZx_+Y2te{j6Tmkrv7)_K1+}>W_? +z*hi0p84=OyN?atHf%1XQcp)pWhL!r2U6v{HR8Bsg_FTR=Y0s>Ric@_Dxthtp!wjo1hs}KJ1O +XvwJ)uWl2Umpd6#kE+(e#KBTa7n$otzOlm?UWVT*{${Y{$Y;(4n|u|DI*fKV<~f3)2pl*>T!;}uUuAk +Ay-0Ig8|5CkiA<~|By!r@thmLjxhEOvPG^B;PUqUg0{)!8%_WDvAYGwFjh>q3`CVD(#mRVtYmg_$lJr8S)A{CQp? +F``FsS^`0qoW4WOkZQGb9XRmyrocPg#G_CgVV;s_D?(T$SM#bCEy3^))NGfj%(Se8&)=IUJYnTe<`|J +Ve*CD3qRDMljI+!oUFfKPc^#x0$ONbAp{mT2Aibj<+O}w4INCjD&eiv~Q@ +T7`)!{VK1p{-1C_UCp%18}8B!TaR*IT) +G;Bd#F4LXsj}+Oc0NB=?pq10}`lFl~ZA0sv_)zuo^r|uHDxMWWpo48YIQ5isivMphtCSZ1sv&kV0E9= +Sh6S1c6>6shrf0M)23E>eFUe8w)S&6K@1!?h=7r%NoP$R(yDp8)A?O|f?mijLy#HmwSh~_u>P3gRWWE +aSiF$^Lz>>jau;)p24GQS<=ePIxt)tf`Tou@i5pFL*(5^M(l#1dxtGSsL)34*Wj42gK1ir2q13bAXhD +fl710OC>{U;S1x5{L~E&><2*Vwo?SqTRG<^6Yq-x%#>RCqUkwaU^120OoAm +uFn0)mp)yfbdA}p7HiYLan8BjrJ?uM%vtf7^B<4h!o5Fq9#yf +@4PUnl`f`(`j=tPs-a*7LdiS;3?}DX=J12BZh%sRk6S6l!-ZnNc+BHdx)<-6#YmLdx+j#7S|{Zh>Nq( +nk+sYCsqvw>Ez0{s>c(7YsjAVG)6#rWr=ARqSWGzvOsIS=8Vgur9BDA%ntXuHwzOI*`3`n(kuk=F(Ce +DyxT)|+rQOAQi@dV9B_;JTyj!L&>6#^sXcmW0#hrzo`ebX1lcf}E&8*N1;y9+@QXCVZ@q4NhRR~+WS4 +Skwm5x(PhR&N=_IX;ajImy>3MonS*?^(@rK`DRN$k9=oU~z`avj!dD$-#30j~mzACIh~m6K@|dG4Ymo +}q{%mfpUTU_4GLjExF><(xpQo2o3XM?n8V-Yj70T3fgsw70VZ-Mr6kvw1qrlDMp{cktKFc~bqH6whA$ +nZn@!RQ@P|;r%k@Yz`_bSOp^$blT41VwygT=wJ|S)#-OW)(s{=Hl|%(-lGfA((4F_`ADC|>fv>j%x}z +!5$epoD$(rR?{5rR| +r&i$UsZ~j$7P$coqDFML95>?~r8M0TxlKOV?>Zv9;)M0<7%y +)y8L_&r6q(9=T>o8Tnatk$XE312G>_0q_&e(`xHyUCL?(e?aH3TYDW>hU-0|Xtl`GuGb@)>Znk(LJn2M +l!8;DEIFu=q6+i&3SUr43bOs}4ozMXCb4`2dm+WS_i-$O_B2rr6IKkd?E2hfKC0f}@<-@{KvgVlog +|=iU>OvrzM&jR58$XWMYU0jqUtEzUt_L(SH7j1Cr|o4DON0CQe6#O*Lt>sb^;%~Oro%s;VDl?1l#U!wxM(9_OO1o>WU8{?&cu-deP(f@T3Src^`9chlb;N}S#|_U +$gUK4x_8?9qct&!Adtn^H90VbjYEATf6;Pc|;ook!_||wOQeTGEp8jUN7S(hZFKu$%*(3s3w@sdP-L1 +e&e=B+mb^0m(4PnvC)+qdqc+AF@`Nhy(TTU5>VKsZuGS~mj=9q=wBN3nvj@{moww!NZ8Az~nik5tc?z +$@PYm))|9V)9PVay{1uC3bk1xAC;JW?d6+aWh!>-s$ctCb%83wqR!)n{U?NW=5p-}Z%meH(r-*KcY@* +S`Go%g0|Z4EC!{T!dz5u +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 +2%75l$g>bnia$ZFzG~vd%)}nWWb;xunm7#~~&% +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 +_-c0jcR9!7D{qY=Mb+dWw_pWK^c5{j(`xJ +KpK=Ro>!(K!_v@9g=s7y?U`s?O`9AV2;S^Fs_O9>0eT-_ZaI1sk=?i&lw_i +SJYq!t-o?HVhz$*mPhXH#jADQeP#0CKaGR27W0r*|$3hIGx`x7`(?veY8A_(VXP8T8ut+jzxRa +juR%~h^1u2a79eL$t`y3KIHA7R@{%1s5meuXh5RCn&?+Bm)Ci>R<_hh3^ +>Vbr|T!J6P+=~WA(>R7MhKUt0QDpluYvk(MJwz2AmN~%Sy0RN(Sj$ZI1?71mvBQrjEM_fl(<4|U*d-A +iU%F3}0EEV6cfRW}_8cGIKdRjQ8X+waS0^a==5Dd)DTI&XwWj(6b8jY-}5q)*c%F4!^qlg8u=Kh$3u{}oV8Va2g(pj0&ZPK78GJz?* +%UJ?wr$O7rUxc~_;2@~X>bsYNI?#RQo?-Cu}kZadX5 +S`if?#;3DYoTGb*-fa`J%bD#(bMMwmuRP~+MlihyUP`za*vj*iN0`F|741MULQ2)Q@I(&+TBnYg1@*2 +uLJRij5CvWqgmP2X#66_797--x|~yGVN^k9`g@Vd{8MU=Icw@V4@ll6iQg(!6W^-LxN;CJQd%Z;VzwBj$ +pNOYVkyJu6GqC4E4m+~qfn)3sH0w$L`l`+gbVa5E*NS8gFRcqy3p9oS2G*icV)40P$P<3dV-*a|11@p +I#q`lh=MvT6AGp)6CyBUtKgXMm#hkgx0YmI5f#o0G1dLMk~J~LT3cxuVQs-*JK8R@;}q(uB45o#g|v{ +ctZ}d^T2!&wabJ(GHd~G{EUPPJQBx`L>SS9QLtwugHV&1bLY=Vn4RcBF2qsglXKhO3C1$GH&S+QosqC +}eun+@|4@Z*;rh#k)ZcsvY8XZnrmg0_~G~1;_Pdpf@4j3w;QteRjJ~_W2jl4Yf79zMM0hhJS-P9uUx6 +shsSfbc5vJvVCS9_9X-ok~jg^*-D3qepYUfh_VA+ae2BDcYV<--04vb~N;n4|0iailiTuFSKVGhvF*r +gYPV=y@qPt9Dvydjb;x@ro<42-m!Fy=8n)Q19KGZIYFWT$)Y98BvIl$?A~M4qfiHMAZ?P3}dn={D6YV +!NFsKzoa{-m;jCObwF#uF&wKOB-)s;j#$ehfZC}fNjP!lH%DDw9aPd)LyEzA@^}x`U``p3C27P(29qF +SmR&Xj<6Z>!@v`bH=h?cvxGG1_nZL^9c@;1T`V>%qwmEy}vabo4$AZ-|g)RiBxI*%m;oTLH^KA1LUWW +bti!M7Fe(@aPV;X~4(Hf3;GF#oH2a0UiCLI67D(|Gbr5`=v*z(~Np@Iok=hc@E2SOqf +@jMxM*4D7Sr?gh;RAbAm3y}_o$Ldby|pQpvPv@AX8C70=inaBrI#(~tdl+Hnm2&AJa5N9mC +4;)0JykkM>##y+i8b +gl(>zO9ykYd8hmst|wyNbFXKklfsx^@e+h#h&NFgUn(99HqFB0L +n0f6w;XWKLhe_81h6{xP)EC3tx7KIOYMUFam%Ky!;Bs36i1(cYEy3{0Zi5jxT$c6jC^F#B44HmqT+lA +X9oU$6j{$e1MS!cz59)-eiNmI}iEJ^e`KA +VU!nc|C3B6sSV}x^yc?D4=i1iVYVzKAFq#-}N=MY{!zzFjl!++PNEc} +>s~D_YSZUDXc^L2>pU*K#4Oba&33b^XD33$8|IF>b*ptvv2T_hwK4QRb1csAP_W|Y`CXA4j8CUh)<6ib?_uNu{ZBqR^#(da7 +z(8Uwr<8Jc3_`+MOid_?a!4VRg0@kp)2(PvbJ;Toz>7*&W|2=!tk5GK$nkt%r1GiEEi9Ft7>I@=Z{TK +wzTCFJ%CZdm4EkEb7w+L8c;h{zlDaD~sZ{{w-qHMRL+3aI>S2Iup9uDiuh5|t-GaKr1gMAu2>w}a#+9~D44! +;FVZvl;aY;Z|b7i}SCYyK2@9l}Ne-vzkTG05(>5PgVH$_zv?r=dU4TlD-YL$TQaCO3INPo3HP>V2qYf_>+n@=WBJk3iw`L1a<-S=?5T^BVPry7j+eL9B{AJ-{85HOW|o|D&O2O;_+vsJ;huM0WQuT!QRp1pa0(FlIxeUiz+Ellwi_(oE%r;5O;*IVFLhxaelJG_t|CEncf^%oURh-mi4^%g +A0F9A`SklmW1TF>;Sh>cDX8Lun7qFSCj23P8&psSK;m(?yxV^&z}jc_oQFsC6Mj|LNbuwGd0w}f%9)c +uHg!S)vqxn4{mpeGhPU}>XXkfO}UcRKAA))V1|>^vc^leHvi`zjzs3?s8~9Ufb-mrM=boSg`W%5hOW% +J8DRW( +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 +oqW7|A4TXm8l7{WcdyU5qPy>#lil5 +6R-3h0;;pdO(uE-%XA*|={6A>_Q?&kjHBvHFldiu%3YH9Q6kI9EQ4k7`qrm8u=EXCM7^E8Vb{{aD*A> +j`fe7xW#ODMlFdIZ8a^GT<6YftVpDscVf4iCq+EhdZ6bF|52S@|iRG#T3|AAgdY}-UBrAk=1qmUo%Ly +bClyD&lFEg&aLDNxi&-0gsfrG$!i=;dA*mN_^q+0gYsDtQ~Vo=ATO?O|A|jv>@?Gy_HY^QZ)8LRVQ6K&zKTD@QxY2SM-uZ-g6&Pe2`8qv0&5we2R7@`JD=`b +)0x#(;z-ft-N1Ui~STYX}*4|i5=24} +ShNiU-iRHU2HwxSODkkn1;YC2J?1ne-LRYXNlRM|r&goma`)0g;Ex?!-OJgr~)v3FmnJ{)OPLJB%@S` +pXuk3O)NX>UO^OGRxs9^h~zp8;6hC&gYdNo{}l +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 +}c`BL`3*k|N1<7iH)gHs;c +*z&vslv)hY97L+B!#C8smuzMrNnd?0iw&bPs0pw(*$DV#tS5aGnaA(dpLR+?-WK4kDA8op4FTtt1_Hlvbt3c5_K;&6K$q+M&Mr?&*1j#zbXWAJMLZ4P2YZhe@W6Z+ +jZ5Mg<_#qzSj(XxG9e#Gex?aRRQK<-L1Ih*2C;}V?^)z^pl(=c7z@a`mJg8JN0H-fsUX>j)<)D?Rm9% +6xw@FkOdkjX>-gW__r1~51hz)wvN5a^c_C=bW&As1HD7twKQyZS79_;HI@=A3WW5G@+=0A`qwa%h`>2drG)n{U|p)GW0t}rlRdwT7%%*oc!id;EExHw_E8H2f@ +6&(#$+0YEQ?0C1jIib1idxzq_+5Z%7Z$IgVEo{?wNSgLjYvH9^xXHrq%?vkQ+U}=ZYA!i;l5(kJaW~4 +;8RSnr3I1@qU*tO-^Qg)3eAp5udPlH|Ln^E2CC_61{Rkv3^-B~QvUx9O^y%65!xG;K6>#4qg?6Fa>Vc +U-qrtOKj5yf{>p>VA;-|z+=tWjj$vO)KEvOjeT$=Tuyigdr#E%&X(heZ<8DVIUAA@=@r*Sw@K8kr$C0 +AV7u;r4}oU{+_&b>_kZKkB0Y*Zkk;kt>%K&#Igt1 +Ol{5AP~>~4D&@av%&c#<)Hma<@p1{Ql-90inahf~fCi>zolwj@t#d@aBlMTO>fFfrjU_r*WV0+UFS5K +GmSM;`8f$k#B3ta345jIoI^x^D#7nNt`r1Vd-v$$>xH^Pp7Q}fYlu+Fz#h`7mC1{w%ke{Kbm?ADQ15+ +0g>!F}KtE3yM#5qDlFNF2C@#m!Tl*jCP5p6-2873Q@j>xt?EPj{5Sb}I!9$GTxl_BgT%Q|o6FGx#_)Q +}WP6+NtM5Vx`#%~DC#14ydm|EFLc&a)-B3KelJN^%qU>KI)JHh&lw!jvvZE$dLons0G-#hSAOj{>Cie +wcG|AD&ORSjQ5hrQU~Ak*i1cJrC7c?ZGpa`VxqI1rOI?Nk{|dpAn|hi;m<)dL2x3b>Pm76D09xsf??w +lF?F$zffH#Zc_IyvX+&8k5u?NWoP?Jw&*QEd=sG0gsW3$34Vl{CN94WLX1W8Z&6-rfjyyC{d;gNwCM+U;ffzWz)%*CQox$c2D2V=~oNd_%Vc +wi71Js9CcIBHeOSRM*E1@NX9sUqt%WprtCuo-CSD?kD^t%V9m{~t9A7+1WppBN{Qk@n!RH`=&IxnC46 +Kw~q%vj$|p(o*Aa^uRG(S}{7NF)!)H;AL}+7hN3c-GaGZX^x|xo9 +Po5kN_@q6pOs%YdrN_#FXPENcA1C32vpP@v%xOl2V;|2hyGY?1Yul`4#Gf)D5^~3vh0`U<1w}Z)5b9& +Dt*PI;QTzuXN%rY$h|i5<0Vas9O=5H+xCBqLQ1=%huo#fWC@gZoX6P1vOh1x@~BxY^nbh#aDb;qO6;2 +JBAvlZfUvAe#UW(&w`GIO5dmwE=<^NtWqzu$hT8F=YWn{I!{45_w`B2oTAZlIX7E+_&D8kj5;|tw0dx +5Ko?rgu5_;;YxLSp0tDoYX!^XMB92D?y|`^xj@WrUKKq$Ksy$pDs_7IfI?g{=P+{Y<$+iDX>YUp?qXf +N++G*5S(Llv9z)f(R=d(!4Fxayyn0yblf`_qj#J3y7nofn!3AykTHs{21UP{(y9#4@L!1jkl75WM*o6OlILREuW(vAUg)OT_Y`6;_>>wdj#<5@ASAS +8_z435(cYUFpV!KeV@Vxwm^1E***<$p9T +?y*<10eT^4R%xJTG@Ie^R2Rd-XP)&rl9uQ%#h +sATy$z_lY9f`q|{|Q{~K^-?vtTZ09s!LK@&I%nvVy0Mvg`tgfiyr&{Ayy1Ni}y(Q+2pBq7~ycPqlYt- +ebn!C^za#Yt7h>XsyqwCM_vxz{t`1XV?IlLEmbYE(xOnQPRx{+XXnRn6_*Il3ZbjK2{0C>z5IR93TwYn|l_Tnuz0NiYD#-6Ls)7ih#SNF&lIjQ~D4K_)sW`-eUM0U8oZC +Q=$=r8J~UEZ#NrBShqe;kKXp=)WT(f4YK*^nR2iA`+I+`Oyy&5$O*=8y+1dBDa#)K2ixn1^LTIl!&aN +M1%tRhfp-d_cg?2yM{)Rk)W3AC**;TC>faoWMneF-jJyhl8qlF2}$ZlR}d2IUV9c?{Ze7b)V +J4+@t0Zx~!emf#oY>bX%Wn$im!LJM9cP*+GA?8djF>7@x!PfSs^Wh>iQFWHz%?+E-fMMXTkjb*9FaiQ +A!2a)40F+a$!@RFNTwJT6_yyQC7Kg8wvyyPkfMB*lIXdyK$C8Hq>E211%Lu&bYZ7DQ5jd>3)e2`B?8_ +-SAD$9+Qmvu#ArffsavCv@^!qzlce^o}b8BgAC@6M4{(}@oZtr1<_;_6OV_ +LIm}FiJu$LsHHri4I_R4G7mBe6eCD>zG#yjjf(a`p@9BkdMwJ07>l`bv-OM;S&PTH6PwzQF|w)Mm|qz +TsFtp7t!%H@~WEosbpr^Ux#{?-P@Oo6}^u4EcGc+NM8h`mrKyUf(kP?ud#Seo<7_bZ*UD+j)Y4C#&T{ +#DTvQa{cTA2gwKY=)m9L)#fl#Jmuf6Ofw4o&oN}08`W{ +7DRC0RmCbecs{b8)6AopVc;#$}l^5ZFb57dNny#i`~%P`wH|Bb}c?L9a&8i4@e900l6E3U+mRfC-h67 +0@lWl&Z{4QL>1p2-smjk(~rvEe-dA*HLD*{Awe{rRvIhL&Yh^KBm@EkB96~v))pVXFsrSrq?>sc~dQG +lnu4H15!l~UIB`V6+ppy9qkt31Vc@w8g&aNTI&A{frS~Ixxuic2*$Vz)ffO@>S)=T9V*h{^(4IW1xd| +@beV_om+w_v)&Nyn;2k&R@>cWd>S-(ZU~~wKj+EL5O)ceYwKYmQ_e!%NLrQHdQyP|~nB*CbiXJ|NCOi +f6q^S4qx)#x!7&O`l@JpaUcxU^;5&WmBUL8ZSljT|GDf&`C?MjZsyLcmjQU{7smq$5kUkRI0^-3DYT3&w3azw;nu$9js&$c5z;T2u^mqm^i-e_o-o +sy-m_y*|Gj3o`LZZHXP{m!(;v67`>RpyK(LfpV7LRT-zZNPCU<3nLTh9zq$maI--$;>LDCZ5jyHIT8UN;Dv*#1T`_a{)Xvq}1l(l&jO_YY=l%Rp1~+og +p0HKhZ-6s~VrC76R>0Akaiapb4<1xlChU3L;RZUQVl$7!?dA1xQ-guTh+$?F*PH9nG-A9XOq&oX?#`8 +_BK!ZkzFYEkS%APT17VbgdhrN7Bf?1gw7MTYUcmV5x1+5RmKY(<-_4ogPW9Uq(zlvx9X^rnGt@xm^RB +GhF3+??bCkN>L!w2@-u?z1S$FT8#|M?J7G69YQ=QDpH#UV@{n)5+I=G&?m0#sr}6I +|^6LwUn{D!V^5Xl+x?g{vmV=j^5^|=QQBOg0PUHD!1?wR<`9@k6(<@N-CF>=&_ci`Sa$1KseH(20Xy| +G3q;je*lYj7W3m1 +jnq!r)2nXZCPoaUNSA=Ev1tMCQ0UQz+aqgWmh-x^4~d%+dwnqOtmh{ttyu4V*duL_?|&(+OQVzE5h2b +g+g9I#zJr5zM{{K!D@~0EMkHMsCQ^D +Ze0iHEmFF9JDRr67s4i?bU>+!ITa>dEH!{GwH%6j)C0Xp-R_Xq4kb^+_RSRIAwedpSj-KD!b;v#T0SZmI3UI%KwdQrTc*8Xl&U^+ +i}7guARB)h4P?>Ia;cVz3AR@eOm;b%2@06v;K%$TXA~sVQNo#GJIPx74Ftpp>wJD{fq>xCR{qJ0G^6k +Q1R$ZmgB>Yc4U?0asxP^sSN8LrdtPz7YP-t({TE1x4X*2`bzoU$Sj>D!GV@U?pNmAS=fnsi_Qw+{S^4#ekwk +3Yl|*ch26j&pjAWkppAaz*S+?@WNL1g@2og1Vxa0{Zew0Mre3XJcBf*O{$;Q^+_O|I9Hcte` +&EYwPnyDpLI?TW;A3}23Epp`@uQ!oZ`qlVSNG;jvVb(VbfF6uIMM0k%H=;`QX>JcY@Al$;T17W`_MMt +wT{6uoiyUA_j?ROMKeS_$825;};;|Ku34nsVbguuIBzBlNG_{p{`()msj=2zhDdPG$L;z8rqmsMMNCu +*W@lUB3&r!9w!H(v4FPm8RVTIkicE1vsl*58hg{j}m^KP}vwmP2ipLy`O@`6iDS&xHIsE9$*}>Csf7d +=6Rjj{5$I+MeN)$e0Y$-w>t@KVDRMq#F5ZoMvkGnxyn2#{9psoqI20d;v%cJgDJF@8IcSn?eSu+ZwbhMyikn2MeGsBC3da^7j&;Y +!C@3Z5T@rg*weg}h8CBzFk-BK?ppcc_wN#X^K&piR-QXjc7jf$V;;$(V9A2tgtev?|3JkLvXkPmO$m4 +|ldxM=~sk0|tsUJ=iAio8BI`QXdMwYgh`s4+Bm7rxEGzp2n7$lZT~)EVeygy~GobUb+&R=#$9WmKVW1 +CT-rgmn|YP2LG=a8R>wKywJM`k1(}?cK2gN-an0@V}?C7^$4s=fm1vFS%)%rY~{tr<=%-j!)~WMHJM5)HtN)bNZacAnynC#Jmh8aVbs=%jm;OF*I} +OM{SK;eQz@1;h46U>D4C=V9W9&xhy<3V#~Vtmbw>x^47>LtNz +L@>pczZa1xBHed~X=Wj%5G6Th-D@*bqna7qicj6Rs)|WIc7koqo`gm+>5Pi}T<* +S!;`tzHs6soE}E>Tg80arru+jZ(x{VC6vGGlyQmlNd*=`kT54^+mQC)dwWe-dJ+8!IPAfe}}!kXyVPn +1{Q_yu1*@EQy)MCLgkSvH;BtONTo*M0&5API26b$mv*faHWsjq5HZ(X!18x~B{9;jjfEg#hWWHu$wu7 +mPY~BU3w^Ok>Kz-0dKXaMuAs=P +jJZr`cPBie+C!x?p)Z>?X5Us4q6(R|S`j4q4cx1bmI3PnU(yuj0zjPk5*huLY8mBJy0;RQ1O<4CW1=ikh9t}fU +6j}gz=1)kMY?ONapbAzq~DuC+h&u} +-=2Z5fg9mwTOwF7DVe?Upb=35j7S2%RjQr`v5z?tKW3)A?N68Zdc`JXhQP1~HIfiAUyRz+t&vjlH)ml +V}5TE|_$)?ST@)v5HAEpw{v7rNW{_J=+sHx_Z +eN(jEe)RG3N1&%ZUCN6;>*=eW;CWi_tefQslz>$GsycIhyfBHX|=he%L_CKvZprd85}XpVC~AJFI}*e +YY`TRqoNz}u#^3a*H!<=w3`w`{Ec?{qK?A)o)w*}d}LF5Oe)q|) +R@_0fuy(FE!vmXbXD#R0+t+%0~>4LKL7AYS2LLV|(9FgkzZc?qIhV72?+$=4-VaVsj0$ML63Mf6$nTa +*xn<4hFY*5b|Ml?OKGq&6N93QLi@>CVrwViQ}wlmJ*dwf!%5%0izz4=k^iMZ44@p?s9ugaA)a|_($pU +BxGOVZ3;_p9owkP=PeaPY6_D8guLN?(i1*SPL&D*BpJ!q&Tw1=RcT8+e +EmwHfccuN&1lZ7N7`ujU-dT_@6=Ve8&C`&78(lV8pK|!+%TxRZnSX$(Jr6t(d?X*C(X;7l|e_G<-lfr +WYaw30gf=w2FV=K83Q=sUSta#T5vm~P1B +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 +)z<9{g4=Lw|`?rgG^x^u`q)SXN2rf +v>dOWg&;L*0es_I=nwr?SmSoHVMKETC>FnM2)WWF~dpB$v9YNH%rX5G!@p5th0e2t(bCB>ot>e$qqT& +4f^Q3+bRPN7|{ogS1h1Cuw<1ZNkgQVUt%e_GLV5B!8w}ycbNKre1uXj66ZTc!WtFre3s_A_DdP2E99| +_eu2LOTAB__kU6E)9Ce4??Ln~dn|d^vgonoP09Jxi`OhkKJ}v2Gs&f1yqia|5>3YQDUwPPP}U}czeX= +AGRQgV#c%17!w3^_x+cxFr5sF$GkP3rBY{ij}f5A)B|+e7>#UX0kJM3gXO>m?4U#J(K+#?e8u0d}t^{zuNP +rVz^8=!?`S6*g9#+6Gc4imk_o9ZS@AEi%u86BpDTFg8(hIN>nTFi7cW{$(;*J4J~m~C?%^EPLymsAy? +4&|3uWU0sd=TeE;VJg=0eYlsFWObNIwV0S1V{@36X)!OUG1(52TZ=iM#^g9mtF)L$)tFp|X^j@MTaC$ +cnAT}A_o^`q9HuQ=%vv>Op~J*!F}JEQPKRlS7ITvtQ|vJ9)M93+F{KVutrjzu#%x>Wm{+g$UZ?dwDNl +Q~^Jn-ctu~{)pijrwGn;gl=ZtysIT#>d7$6?F`NkBQ)U2}{Fy?LjT8aoqbCVzSTg?I&HiF~&>A|G_{~ ++bK?CP~gV}oA)44A8)Mz+D6;;g3^9?wIT(am~>+;DK1#cNirTSmUGv?|YtkDF?rUt1{YZ`SeGL8Gp|` +7RwlBfXQG93j@5i}d^ih#Yd5sKnVrD?-p_)(q}*!UF-jWUpjUM +G9EI6(B)q~+_B3l3=y*d~N>oYFcJIC=X6OHA?_1!aEV}<^xqDqq&3mqjmm~!Rk(;mxsGul{g64%#76r +Mv>?)QDx=^kwrd_r2O-swJuU2SfDyX5Bd9TdOTUtxlE2SYSIsfyW=XsU|!K`2J@ACP-56nK7nK^ULnK +Nh3%z2)fcuS=PUS&fI(_=JXqXBtyl}km4skhiubCEaoR%43Z2g*-Ap0e*wPf**QmC9zB$yoh +>N|fSl*Xds?OOGSz~rps&nz>e202VV>g#JB~7p_M9*1N^tRoy*7yj}T)0X6R*K*K;@2vE4~pLn;unit +TYoE}pJA`z{w2CEtTK992ft>sYfo+DJb%ZB6oYpa3bDWh-W9~l9ZAi^XKPyHw0NuO2=V4)e1QgsVJE! +He7|MC>3mm9W$A6_((^8k&5Oksn+}%Gs=_?-j4vWx2c&DG%#(`mI*a5~yQ{Pw`Rc+su-&VI&ZrA!($% +uo=3=p$cd=N_yZ96FyN-UBK6{0J3y!G^-fPNOxOpvB?hX)%)yvJ;g=FZt;ED6p>YcmQTl3e^DA9CIEr +w4;05ZFziF#{+TM0c+b1StvO*0qbaZs7M;0osET_**Vs-Msh9PUxrU}KW~e2D7Vmc +{>{F|hfMpNq{_GC)tGkx6B_)O(`zAK7mJ&hKa4jA1*Wr0nyPnxRutiOM8dp06p1&2E>`X%!|hcUu2qK +HM!*#;D0dSOt@R+{zWir5K#4L;$iF$u5Rrc~-OxV&<~()bmu?C{c%i?%49SAhjrWJk4{5Y4)nWNtZVC +bJ)l2HLX8z=3TTWwM4D+(~#KKyD*Os0%ka6Z3X!_6bQ8ZgSBW +%Ht^Cbs>h{gtfZxAFK|~@dk2jw6SSzltt95=>|7Ci=F;R0;GiQ`1qn$7O=d&y5JVZdED4+{RX`8BG%l +uh~Ire_<>OQ0VnL8LHz4Xodw~Y=UJ*QcppA9!XK_|i-6idK?ZO2w&69>vRCpR=|zQT{jt{V-tulqhOY +ZW`xB1!*2{+1EG?9l=RYYwlrl=VmCr|Ut~RNr?7@~1PK5^ygQT*-0rf6sE<$QUn>E-c+>R7qkRnxmc^ +|r7zs^Q>to4b@RPW_j=FC)`t$xza0rl5i)SphhoIB!Trh3Ku!daJU$Td}G8v2^5v($y(Q(ToOKVRa7q +~i?fa=vN45}%sF>=F;I +m!b)&3%374^J0G;^IEarLg8xqUD$k|PyleZRHPYO<=>oXoFP3DwUiJ +bt{1sTdSbBvhKYeiLoCJON!e5t)@OA-O|3@A^CWZOI;pdkqD(u`4vFV*)Je?^Y#c;YfvNY&M^q9eXPlkYq$n&UH=R??kDszmX|j_9>L1z=Cv> +R2rxHaGUPR9AGd?_D-)##r0`1`Ke=4NiqT?<_AyF3S#BewMW&u_%Oetmu(C{-)>^w@H%>{iRDM0=@&~ +RCJI)lLhNN#=8AlUEtrFb_gvgRgl40Sh8r2rC4IcO0>akF1!dAv1u+vk=LlmrMNMbIats4l{LH3FF-s +s^ykG(>tibN2sCp<(SXG!O)|b#(ZeJ*ec=@yr3}=*&k5Q@>d0%tju)u11p{TG3=hgg-NCgBSL<=jv;& +HW8Cr8;ds_XMP=bx(*(8hT-j_Kp6*fQtHrWu3#iwf7k@950e_=h)NI_hs@pcb|IR|pq| +u;e)zezGVwIMaQ0V-Wmd&DIpztw;%M>S%hp=*tljr_UCD)Ji*l*d}lU0&EyI60F*K|&M^@A5Fd?2s8rE+*Qbio*lY;gcTUookpnODN*=PB>B3gXDR5Mn*aVkFd!|d-qV{7HR +YC{tm^9XRecr~FYSPU;LmGUPPG#nT;z{zx8Whjfa#&@ju2}S3+Tlh*J6`3PXnKTv2D~qY+1G8@gqq{5>2F9Jyg$>p?J=7KPGp{tX9%bN&sLv +9~40{rXY77~aJ?VztD_ezo9_JWs|`7lK_C;qRm|sIjRmmhj#wdPw(pYly47W7Qhi3XW9~u1@*tg5_Ac +P`{oeS)1;2AYcS_j2bFc{Y+`B#gY5ET7Kbe``}IC1Nc7p5lS8Oi=nx{Kuui`i`7osdf@HhwSpxgvrmb ++@F6fI(p~*{4`=9c?IrYi$V8@f;Y?DG%bHn=Jw)RC8%^;-W?|<`crC|qpDCAgbK7OHzDp-uTN?A5=@E +a11p=4t;FUPxr!777O +u!FIidYg~W0n=^bbSYMA5Xd-~i$R~c2qnu2$8qt@+Oa1wIVDIiNnIF)as*HZ8BfE5X)Pwknnk?zXAk? +todq8L0uNwA>MB5#r(Sa7cZ^4|KuODGt)(X|MDvi*rOMs=?~FdPq+CyATwm`OQ12wElF +BH49V8-kmS#Osyu}t6cvu3-=G-xoLacA?(}kQwgbeJOt8ON<=kE&L&c5`Vyb2`1n~9TF^+bsIr0@WKj{odX|d8U#z7 +xHeOyGMYPP5n2&m1ZbgE2BBLy}s9+E>H^cx#bH`#N3_6qdc|~)ngOo&@o=mX_LOo@o{S|g#KjVr}!UZ +|8I1evI3hwJ~1KU>OscB<`5Mq(HE_{>dLzpq$v_qsZ^hPvG|x0v3UYr)U(DrInzkSuY#J0=Vw8tmx+97_ogHd1{r^+ +w59(*H8N2my@lwC9?*ty0`Bm=ik@ZC;ge#cAxZz)IuJ%s?ksSUt6VoFIjq@twWb~iWDogTVub#Tz`z4 +ISi|IwlGCCciR^xR@|y+MK?}GVQnai9$_eE33D?gIWe=!euviEMzwXzN(C9b3TbEN+-H5x7G({f%Zf9 +1zH3U +2_`lOG|uTZdRFG94cC1ol(k=|A1J&*0%ot97w+OZPk7i89~nDJB2ZPVrhFf%3V|m)=V?B4Vda~aQA-z +3x~S}?J-C%viOwXn+B}ERBe_ ++itX5@@4BB&$cn?RERDz|b2y~jNZfWYmKq$SBrPqY*KI#8bvc9LHiM+0+uR1G-H8Lx)tj;*c6dQls7 +mj}&!XR=m4niga@@h44v6HJnoJX`%ESPN_-4D|MtHuT-v6J+D+7*(-$?trj*fD*6Dcr5B&T@7jy_Eqq +)2R*T=0;`f^PJuQAWi{B&I0WUF!el}Z#SL&ARm0EA9-T%#kA#=$sdC2_9ty-_t&rL~RRt4QQ99C~@XD ++r194?FBz2bKhexE%@zbQdqsS7qVg+)Kf@rHTFx?8ZAkwd*aSMnL9n5yA5+E(9dBw$HiBX4`J5gx;9G +)8=d;i`V3h2%5x+$#BuKrUu!?C3pd$AM}a2g=XEXSA)J&&ab>_8DyzJ|iSA-zGdUxO6Ii%XY0Qe_8m9 +a4mdBE0IIomKQd``Vu$$8a-)TxW`GU93VnX(40~W@cLRjEFUi%JST5S4xVkYgGWRK2$vDaV&(l5xIOE +@y(YtLDc}kYlsgEB*XlvUeff`W65-WRhOwsVSq81CI^EFTR6S2!c+gEDNq8`JxS_nzbYm;W8}ei7V#{ +B1Q}A~$f5CRGDPJJ~yPB%~j2%);c@DnD`%L?sg3?+ +bjzg;8DLDK2u=1>MEPM0G(2;V^<&5WQ#$uHY;d{=3HLsDwCb8esX~D8|+g2K6t4Fn~;YY+ +(`f)miARt7oMkquL*vi)iNYWsx5-W64BbC9W}R<>G>U%qB_tP3J<8wD;%)n2hw7azWj{v79o@5Ejqwz +Ik$t^#~EGa=awC!B(fx(cL_hy9;YgiN+VUhWpa&qEecf^+<=qlTiZ-29-1~@7F;RDO(9pWXyuG=+Tj^ +jZx@V2_D3$ERU1+Omr*a?hAb-Q}8Q3VyB +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 +z>*z|b_{uD>WqDW9w`wcZ +AXPYX9^8^x1n8nT%>vfD;yYa+e?!wuT86wu0tsN`J&1G8>+d1=Rn{&Lld~cx!&RWHa@1U7tSOBRI#cLNA%em<3dt05DXgIICWSHzrz!kOp=A|g9u)j3jG!=)LK=lf +DLh4C1BIs4-QK*(*h#v+OreH?+jYj;Q0PU$pTcMgk5DjBSV`es3cD$sqVOw)j@5({1wRU-DNLh~Mj@B +N;}lj>*hJw&3Wq5CK;c(>kbi@*<`nLy(4B%Wg$N3<6sA+irm%#FGLn@QP+Z0MD9HVfVLg!l&FH5TK=O^;jM +ungD73#q;XB5{v-FX +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 +2#k=VG4!u6 +h={qpb!k$6gpFAPNDicDu==e3MCXiq_CO7CJO5)tfsJ%!cq$P6mltKQc4|DJu2nK@dpQ +_iPVI|=awzlZwqvBT%YU8f{~XdgJdR?#)rW>7EtwdrFGnieVFP<-Ywe72D)idtWkI#b!Cz-uD?#@jYwrkIbig_uBj1Wt85j_Ws-omH1{sxgYVQ +ial&s9u~OMP|yl2l{dN?KKl3X&xQ{l&Jq$5SZZo2Ga8LjMdjzye?D8idNq6f_1D=)AAQ71N=n$*Uw_S +R-@eV{rkgJk(+zf1r-A5`2lJaV^}c!Y4vX8v{7OxJ^O||{7A!!5EBs*1VSeyBMen0~H@dk(dFg)MJlt +CkA3S(a+(QL2tPOO9*QAK}c?&AtE>mV+Cg0CH>{gBZDJeD5eIC*uJe-npc%OVwy!NX_K +HWQia-hwFFC9EgB&2{pZYSSa-1>?%CWQ;l?f1fgtwtR@OevOwU2ZjRyfDCDN+9m5zc{?1``ZUaS_FE2 +IV_l0Q+6>2K=>beb^O8Vn#1`eBK={`f1j|cx<*7JJ@L2vrD`ss1^)rUDn%o`Sf}Bn6fNKj+@xscwp2c +(Xjap;B=4MKekh4RSG(XyL6y%WMbk)7$?5F#g*FoMDDZryqTooum4cc=R}MLMmu3BrCnyFTu~E`Wk1HZrtD&QyRPg?nVrS*sE +Sf{ah|uUB9SCvcHX~!OWaBqdH=XHne$sI3lChHFk!;3lu^EK(K&H;^qeuA7bo&X=H9y|Pe^2W{MB8>6 +9Dg{6@Z_|`Onv{Z)QS@A7gA$*RI^%wJT?ia$t7}N*Y%=s3ksuM_R!rx5k-7N6(%;nWv{G^Y->;Lxv1t +VPRn`Dk@6wZtU2xEIvM-O`0@`O`STGElM87X3m_+($dmcMn(qH>-9o^EL^ydtv80Uw;mnB-d_~NOfw_ +d^4a0+nXEAOqF&3kFAikyPyYuHOKy~Nh7TgNtT+$idI^XAR0xV +Tv8vQIwwgdN|rnJxK+v*Jq5KK=AlcHqDP_Qe-pu%kzhvJ)pxuv4c_vG2b7j$OHQk{$n*v-9WA3%MvSF +K5@T{KUS$!C7TxCA)t8x{wtd4qnth#4_eWLgTiQv8E(9&8V@rqz0_v_pu>-0GrImviW=tTg_LoV!nl) +;71jG%Gyx=?v&q~@(-c>qbUC*%0H9x=kiu;8RdV8^1n;@ODO*_%74)=e=o|frTh<5egoxSLHXaH{JSa +tQObXk@}Hsn-&6i_%72COSJ~zF>P6#OGS#zbxVX~5*ya^9hJ1tiv^~@akF{d_K4PgUXOppk{U|n*9ekMdPb +C>KTyr1eA(Vd#<$sj&KTr9$QvMTm`B_UA%i2+!?Z#FzPinS)>@Z1wC5vLb)x(Sr$Yy-(3XLDgQpoPi3w;P5CcT{z_Z^hX}$*f{;oOo*)Pt3Bq22 +aGoGkw&Lv90i0bM%URVN&aSWG?8X+(ZXM;e{GBL&Kgu6U`NvWI8I*r6denO!-e +!{tCPNZZZejQvObqzZ>Q6Mfo41{2`QoBITb$`Il4v*C_uk%74l(f88TdI_w{XhYt-K8YcWpY*gPqJw3 +X2?={>O8#XjLDk>r(Iy^KqEF!UApWeNDdJG@lLxB(xMbY#hMHdkfiJlK4!SLZ4IX*fjJTf|zz(kM}$*;;MM;jPtTCVS|p=mqLpJW;BPZyUNcls((QOhyQoR7zt$l3HSqoVu-~tkqSs-3+<6Jru%q9 +SE1V-)F%3illv?&YLvI$DkZuc9JsGYe6P0bcG+TvV!7BM3vF7!w^zf>awHHh7S?PZLMC`=Tf^d??AXu +WxvGZG2+l(6BKqXnaC)PxT1=fpZ(RGiQdeNMh +RQS$fLb9oJf25q@~7Fy4qyStsD*mL8?jT83BBHeJC?eThU2wR#O$yV#b*#}D^+2$7(vBCSvrXW2x;%m +<0FGw~+E}fry?m712i!ZXZYuB>%>({dl8#V}A;r;jD7xv)CAAc-tg)d89XD^byv6*azy?ghvLx&Ct+u +-7bv+Tl!3+&>>i>#uef?d9Rnf?096=56v_Sv|K^@(E>gb-Nj +_x(qihsZc@SSWd-_Pdo<7^c_&9?AM)PGmn<);oYmPYj1)Y-0li1PbUel6vXru>sB{~XHy1m#~#`QM}b +2Pl7SKldLy;$BykgcI(^Ky=BV>NX|NR@6)qq@19< +*+|>`Zp!<&9di3s1X_44%cWSzVB?c>#@saGpX(6U8~2Re7_*~hC{(>@Q#4>X!SeZAb=n)jhR58l +_ZMaTB-`g%2Ub8Fhf*}3_HYIR2^myUhAG;?c;2VU-7+q$Y;yL;j2(!?3??{DwWn(mtQXxgNSC$+C`Jv +%verdZ0-h3=_*&(3Xn_we-c^2CQiRDNGiPY+MeZk~d^&UC=%*R7l6S;|v07K}+aM>#a+7*N@zL3+F>( +N&rs!gdgkh$Nc3>e+iZlvg@j?1Hmg>VL=aSKK1N7q3vX?b@{~n2LbU;(9e{(u6dNSlg61C6M;zyA738b|Y8yLRy(fBc +bCf6Bl5>MKl8@v~>oavFbg#1jpi`q}TSR%Itvlv}4jMGQb7(+Efm>R$ +d9ht2bScHX|d$r@FfOCW9Khcl$&Znup4I&&?An%{WpX@1=WedPx37| +m;?xZZ`SAOdjTzkk1ID<@B$6xW~uIso#9c7i$rZd?Dwx$YF_p@%s4J;1rw +r`X4i^Zq5AkNb@CH!pGiTUFI@YAc=p4E{TJ?p)>J;W3D8_!XotQ6GW^;0vCEub>BY0o-wox<7N~j0m^ +}&%tlt3poHSz#IHW9lvs!^N6oF*B;|M=rHGl4|49apJ>?2d0(QT*AC9Rf6V!c)124T)V%a(@F!hw3&3 +9qN?j=7ue1}i1ISCl8P12FG;eY-5b;$B^A0MCYBn +t(gf$HH7T7V1W2sk!G2lx)2qmCdqkbmf18nX$6#t{A^zm;ehdV=#1!Zna+7({ZDeNw_d^*HAqpGa-uU +h$_sgDd(U@=yH{N2p&XikyS5s0+vyWJ93?Z5(n2xktND&S)1n;?8qEnrOfl4#U2dXc%&Y^MEfT8oa43 +JhYqhKD+)r{-ldn_3YVm5Y@v9v@__IhUkE-Hzr@;KjP6ZARqLM{SkkW+9+uFj`Jv@A(Cj={4>9o;};4 +qG=~3;8#g%hGj#%JP=Z27Lv_*+9k*`X;zvJP%Qr5F<}b_%<${HdOo`}+EJCw*Q3{2?dx>44lruItmG&;nV99GyM*0e^j7Fn`rJg# +RNaM9_d^YB}eVWEx`6az2W18u5)?dj<`1d+raNL^`!6>7;H%L)Q-_-Ac#ehVbv+y}M2RsgFlLe@A_w{ +h~im>H_Tn_X-WbpY$Ftc|MuHH9wfYHg5=jg=knyG~h@g{W*nbm`HexzaY_|v}e$uv}fp~0sDyWdpLg( +G!XwaA5r_?FTfmX2!GP|LjI|(t$;m*HmA^`&;lCJA2cRgz#n?DcySni_pu=UCeg5wXjpHM@Xxuz`6Cr +XgO&4yOHzA=PKy4vwmpLer9FcNr9DF@_1P}KT(6Hm+8O#6va@UfG$^4y9SyY+g%%v!@&fpK3j+DOj|T +BKa*2kyL-=o%Kk=_`N;D)A4U>N)8tmG0wA`M8gK|3gZk%D6xRMI`rpsloks` +MIrYD*#*Q5uotc^W8E{2=L>pMNXpx}7UcUaQPH;w>sz1hR==gf?yEYpG?YT&9&-ISG+CRV_bw6Un2-E +|A8CEdw;_wLOT6BGHyjT<@o<( +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 +VJ7bqcjX4yg3`(#QZDd=vYfC%HP +PS9+G`qkn;DzAdQofd#^Ub`HSAmlQJjiQ#9k1ty!PSjC#GCmkewLr-7x^XL%CE!3xD7b(0n$f+)h8lg +W=Dx=KpX>@VpZ<2=5(Ph(xrMW%%- +6J&mRn3)m2^9RbACp|I_*xP)h>@6aWAK2mpp9?M$Y8P3Yjh0001l0RS5S003}la4%nWWo~3|axY|Qb9 +8KJVlQ_#G%jU$W#qkkd{ou70DLAhlT2Qm0WuICkr4((BO04p6Nl&=G9zbXq9~%Nf?}hQ3RW7<09Me%l +c^cDW9hB-dhNru_O|%wZGDjh5fTEKgjWLc2%rLrvWEj0K$Gyw`PSO|%w%}jd%y4Bj~|(H_IvNO*Iuu^ +_C93~EEmjzAXwl}*9D%rofgf@16701e0up&(6+p8Fh3%F2DS8>Q&MBUz)ro`U*UM^}9&)L-u?zdYC;MqJMzrAD; +a%`fHZ=>S!B_uQT$mHl81`=RH5In1l6Q+~;XNL3s3+slvN+cRVmKjoxa+C1aY4EHz39B=bfou{Ug$_7R3Bu_A!<-D16 +NG=Ie1G!w%43Tac-C$+I)r1lT$slx2(z!Rdh`+H5kXk1`~jda1VC+a`_&c_Y`FGAQA(t*chrW$v64?A@Tq3f1!3Uv<{v +D@~J;O-ChxH@;_PU((#xf +`p$=-DisEMQC0G989D*jjoRfL*?*U6!M${ljVvEdvhZPFbU%oDaQH8Nzf$QSktf;KJ?v982yk$YVQQl +nik35D%ZuWLd>rXW;?m$;mIXCqFu?zkE9Z*JKvhiAHMa#(TM@0Zo1PGXJz0BR*?WOAZ#Ux2g+B9qUFY +dZa;o&I6$J6+X1cgv*JT2EB3@TY;dVM +4{-bl2!VxcqM^aORcI2H)Y%Y}?;dECjN+|&NsFKC2B^^|hhzS&Sm`gIH5 +eU?Z4!(P8il6CSDNW>&qFVub(wr3H6Uf6e_g_w$8!1o&;xq&AVJ7q+Kmn8FFjiG4UT1?Rfo}Pe2lwsn +BNX#u!Pon&Lp=s0b08=GBaNvY&h@JuE#W&5~x$YT3+jYsP(uSOtLWv8sH(?6!;L{EHwGQ(hHqST111G+7fU4`wKXM!A +_2iWTP)2FcBn#9^#0Ki(rTx}^J$^&OOj?clxR8A|{oMVtckaW=$K-JK`;5{s?xp?&fa%uGvt3Eig5OL +Qv8^9t$)%3n$3^u`5&B_{O_0YB~e4FW-*1KOG)g+JG0JvT7@IyG%i`J1xCVORaT6dVBepwwSz#1$-&a +%cN7#(Q~kWDh#4J9V1kGh<&B7KmTbU~|Gx?=>qt9_}W_j6oK<$NtogZ4bQmeivYLhZpJB)iIQ0&1k#3 +b*TyzwHA_gmqS3KcU4~Z%bUcGvvrTS2d6(r0_sjZXackCf|JMV&V3}cHQyXKAceB0jY7h!08V_W7?{8 +7TCndlDabRu$1_dGOy9ChO*~ +U4W}3z`{ex$^{tSk){|=F>a6D1pJ3uy}@qg^)SY93gSjq^I`98!RugfFDlobj1TOh#C1dh798Lf44`l +|0?W1Z87^BskDT2Je`7iMt|Vrn_S!yC?fZ;A=Be!GWb*lgY5-)kV7x)D0P$w(+iT%V>pKH+sv;vEk{g +^&pGb0K~J2j>}t_I{+XNYrI=1WH}shn1bs9iQ#PrFKaA*k;T%OsZF`pK7ZFRLZYZPmfi`OJpaF4Pk3z +1e875iw#e;!Ft>mFB9C1j49J^{!AwQu?~TCZ4YFW8nRf$Tj}o1II)TKVqF2!inM!mA42@uT(MrnCI@3 +)7Bmm8yFz&$P3bu^#NwnO;ba*QBaM@3j!?PH{0dg`AFpxx%nId(480Z14;BuJlIWXDtf +vGNba+Zn<-OLvHtl$l;;NMl6!&>Dsq(2MjyWTN>y +SmI*?kvS>a5V8xqyUotJJIJqYNRh;PpMV`c6o}lk;}(0Nl +0)gvi#W}us{BHglTkFZ+u243#D!60uh?HZ6Ww)Y^XWtbrLu&I7@$ut>chG +~FQkGiHQh`VGLZ50_PGT8hB9tLTpdfPZYf;Bx{QrQYrN*lyM_ggVO(}>P#2)M7I#Ff0nYNN#OlS({#n +G#4103|vC;YVE_ntCn{vk!UNGWXctL-|7b$)U_GA*U@V&Q8q5eiVr3NI^>`=xB=ME?&^Fxy6gU8YE(!ouDhNcfv7Z5CX`jF +#kW_JQOz+J^yzQVKAZ(kFo&leuL(lWTCI2cb#WA%^9+%zOKhH4tAUC01u~sfmIR}hM~}P1H2YC#Xw0FSf1@HkMb!5V8*ZIp{=yx3Q +iXRm!{#;$)*pnI&zUiu7#Y}2glN>iE05*S%zHUq?;jn`SQXhZ48LlK3LdXMhr2jrVn8|h`mOU7L??M#Sv-#|prB9rEp!lo9ZO=v8VU9t;_%ilj?^R6Jf7_|#qY117K7?B_%>zzi;n-gV +eJ#c1}3*O$&_*Wy+o!Ip*4Dk1{&5mA!7FuU)~P$FJhg&y8o5iwiE;V$6pX%I=K|CNc +(jKWB+&5K@E@1_R +a84pSX^5BOLry81YIz!--`(m@4=nJm|9k9BAqR2;T;&^vJcCmUjcoQc?g9ZP4WgpqA{r8=6DaC3`!(( +ewGNF%e{x!gdK3yY5&8@i?Z7#>(VZFQ71AC`>;CVHVa2+3O{z*__aq5L?xf)bS?4B-Wassi^g&%Y-tM +;H?{f7+ypB#Ly0gY1u`0qlEJx+c40LtD`_hasCaSI)tSv+c=^l9S)ElMiBypVz@|Fzp*imQFixN&8Pn +HkhM51n4*1+5f95m)Ez%$<-6#0m>5pefvjXVO~aZ;ZZov$>=i7W0pWoARL~l5Q)P94oWfyGkomJ9(Wc +QC?KPN^;h(T6=>rs{^-Lvm7Xr)TzBY>l^ +uwdFa`5*MK4C#KCV2$eBfklk5%>~@q>4mHdCy;9|h*Zc951$v8gO+GZR@MimZzjV@zUg?FJNsl`#KWr +dKuUNWY*GI+T|~?7f-g4UlGlPxXy}5uinMcQ65JIDI{jfe!d$2a`6ZKp3dSg=-jOUyp#AlZTooCIrJ# +#So!5=*&F6`ZMW0@CKyL6SkpQ;KDj!S+z>Jka2tPIl2cIZn)GgljTi_B4Jo*bq(xoD&V(c+ZdCe3?tQ +TC@ETh1FB5WM&}n{ISviX>io!#Fz!%0pB(lB?v3etuo7#gT=_8{P4CFY_?gm)P&&A$m$=j8KsPh25-bT;BWCQ>OoW +A0UoZxM8ey>XCWPOX`sRS9^UFq&pTD2dF^@C6}aMIm31 +Ea4OSwO7sqS2dCE97D-mde0VRxGs{WDK#sCBNBQ1R4#988Ax)>YouN=ef!WlBdCP$P&<95KCvaaNb-9 +3}<_Q>?yWBaRWej5x_wCg)#n71LGfQjGybJIQ~HX-cqqXYbfX%Y*eS&sG6N1O%AD4&#<^NEN-3CudYk ++>uuQQcI@*;WxZIxPONXwZv(`|DnTiuGmx3Z_1+|V7Se3>^npc7xEdd7mqp)cK=)r?Z(=j$r2o7IR_G +PjQ6DfBwod4Sr%`muo(Gvgcf)0Ia5E=hXpbwlJ_iZPAY?QlC!?*|+S~MJBXP*c)oDfIRVJ<45c)9WqI +V`D +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 +yE_6`|ikfaGQ5qa_ +rHC}i1igf$`-KJvQE=MU$M3-ur1YfR?u8f!3>_-hh=rg!ylp*FVDleGx{uw->6dM)l{%ip|Jwway#?p +;{y8B(S|^{g!%loB|$ob%uz#Vl$2Q0Wr2&yxP_NR5 +A$&I%Q=wLRViQ!7&cB$cIZ1FW0XJzx{h|exZ%Iw@l4Fx*g5&8f}^51AdVV)wOFaaB(U;ml!#@%c_ZwLBAGdLCaIQ-28@k?NcMkyhXmeFws|8Sn>$0v*PHz2PPK1h)yar-Ozj) +ID77IQCDNK^FBEKG#*@>7B=Pp97Wq|)c$+O87Ia*i;j0B)@a-N>0GsT5FAUSoN$J0er{}Qr#9s0K)PX +#66L~;WZ%su!b4>3s+&BV}X?B<}H*`q~rzAE>FZRc&IobttSytFohW?TOhyco%^oiG*q>X7tDJbGaBt +rcKAe@W72X=q7*=haF2+d~XSw4`N*MA|+Vot7XPu3ZTjQI7QQR*``6B;E!Bp?1Rlg;Tf2M`~SmbBPqeQR(B6gvAYrcGreEfds$V5;so{4c@C(-Hjg@&+xr0t89 +xN-S({2a47PsQ)S!y9h?y8MI>08tx@rLYQhaoW7GK2$4JUs5c|7L_hE;+Skv@W>|<5XF_&{y$3Oo+NSH42 +OG}89dl=iDUD!jmsYg=8+6}n)kEAF+!JjhxDOZn}mFemci*mhsBvl!vZ&Yrg$Ic=knf&+*c-1_x93*U +yWZwdh*o#d68GkE}x)~nY5(r<#!(%W!kM2lGY;@buY+uE!lgpVUh-?g0SU+kLgyJ7tl%c54F*W1>C~E +7_{gPe~Twuj)Dd<`M2&l~0xinm#D{QQ_Kf{A<$>TtEN7X-&Wl_I+-V{s&!S@`hmZ4+83@K7(rsn_~H- +~h^24vI@let_yYf}cRXEPOGAr>Vq0N5}=yDmW1ATJ6q_kQ(n_%1-s;7~7FiQ-4}m-vfN(5zncXu!l`l +Koi}mg+X-b;P<8-py_9ZA-6}D>ky#^h-8$_0cw)pszzNK(gO~Oxh>(W7Mg`78mp^4SKc^gqF1^1-kbK +v&nC8lY1ojmZ=jJ_qz +PlD#Ai4M11C!-=*XUGF>5VAWu_>l-TIW+2Y`_~+i?JQ8r5WWRS3*^I7a>yBSRyqf(dh+vKtG4U+-8@k +wqE@J&`1FnP`gp>M+U5HAfnHzl#?nmQWYmEYr($<<@d_aMBPO<`M+G<25N8RVxVplPyTQ?%Ff(9FzRd ++N?4u90d)}G_wsnF<#;m7!MJ$}3hX_B4# +_hQ&^IYMJ@?KLJ&ya#+(h`$Ial9hT{=BY9d{fLLkd1wL;&EcVuJT#w&vUq4Q5B2ZC5UDl@os}Nr5!~Q +w&0Np4X^7tm@oTdgD$`fauvsG99SdbfC_1`ZPX}TivF`2`m^*6$7EGnT--9O14m$gEd=~HH#pAQ66jfH<1gH3xp2P{`LT +wiu(xYeQ*W2vX7Jzv`V-01+Sqo)p|+X|a%irHRC)+)YNa(Axya?`1n&4CJO5@-(STxV{U#ClJTPpmIby(1D3a +($qaUP1283b?mdWe~|`UKfCQ6D7SF`0)gvdsEdH*aB%z>I1?uK$=1AnEWC7H?`9zn5&gCwk*Hd&%MFx +kSL*x6!Ey4>6qS5^?=D>6->4XM698Axz5rF`pO_?Qnagm!>UeTd#|EgOuS9DIIXo`WG@4qU>XxGtgVN +H_^}iZ#E{eUPiRl>;Y(4hJ#Ip2)J*T3ic8ic)&`A;61E=`%vMW&0aZZ4Oh~BFQC1LZ8<W*Lh6}@DaxDG=**Fp{VKn?udWC1@vf$7ACvX#FUHoZU;dEjd>SW`*Al^dvWB7Sow< +#6;Syv*vgfEL>8|6&jsawK@l1N680*E*ZkzX;U; +SM;WRNC$d2u?Q?Jn-DVlC#YafJI9C?A%h)3qpF?9JG$)_%p_%B>XpQx7TW;EE3K<;SmVYS;h`*jBP3i-Y305I2_K>va%9C~ZWOELMzPlq#EoL}nO1g +!_$|gU$RGX%4_=$NVR4d)c^l#>(mE3$q2BCnsrqi2*L7d3*EQdX4x#sH*N7|cH+jXCO==0`OW~1{6kd54z#Z +C}JeDm={0oz*(uoJGNrLY~n4e0a!%VZDDhZ-*|A+g;iqfi<0?Z}Mz0iILNhZXn-?1>DDdmz76>M@&?^ +y+l`GH=G0+8_v~DE8`fr?kv#`?9VEfu*Ij*6?jrz1ffF7WGZRHtjaV%{%h|4zEiQk5la%vB(D1L?%16 +ED1w{pcX*hi|WwVA)r60ipnH1->};SH}a)h&Fyx%uxw!wJOfMk%ULZ0;w=5{TjsnM_s-v{0WyO&*?@w +ffO}uBqJ*i<<7&W|ZYKA<&ZSO-kUQ^pMQZ1oH +_x2182T!pFyv_3Z;;e5#YK-kK0i68;cOw)3E_gZ9wv)C-lX<7Xfs)U*A;@losT0^hOL9V=cJ1n!nQJ= +rZ+^QmXg2ZuzhqZ2t7LQZXmdiGo}2Q7%ss8ul1h{vLRl<@6^{;Gdsl`tK_^B{v|uHmc8J%z15|IAn|? +D)z_>erbX(ue#K{ees%t;U9>FxK~E3{Qs0MDvpk(rRq5xJazM3f*MQoBigavf5Ojp0-xSYIJ%Yd8?W6 +*%*88WgASO-bDY%*WcFyH#0j?=XuSD+`uC59E}ERq%1TBkPbg<2|tvD=O>-wFJELiysoQ?X1cCYCKi> +OlnLU>B5|c`a-Ux0$nStUZ_a}bRcBcI<{ke0&B5=WV<|DRLj~0~o8P>irI9-=HLd!M0af%je_{C;nZsQX@3nS6X_Ja_l^ctGY*MZhR}L0eN+x&bq7ksbe +~>3FGfU_*h6I>QthK-MB$#s6%@1pup<^E6M~bvyY +i%*Fm+n}j@u${+RDBCt;nO|z)=B$UmK$}5&aIg{OcW=h^zX=`0{>Tjq=AK`&Lq1~Y3_NSwep;MKnYu?eL;3(d +d(R`jio~&%QEkX(Ua?HP3Q&y84luhT8)mYeCaT`qGMU@2;`ZV!|8?`QSEbB%&Wh`UfXa;+5h?~KBPM~ +;*j!QXNhL$v-OCsYxy9M1+M})+Pf{e-CtUM_bHQxD0)FL4`QznG>zFirn7Na%0w2fJ6u +m+kbGwWCGg*mQF%CVH~m=dg%rYFUpkK(%;ANdq)Y%(MkVMI*~i7Va1@(>xK)-r04-$6Iq7~F++|B +jakG@D6J^gec-HqqZ`IhSD6>~4d`obqBrHEEKn8>MtlS`nVS#O=*8`%LLE;!c1pWa5NxcQnlEZrc8c& +OM!rHrq*<@RiY^R3J>6)X=mKT?0QeYTLZbFtBMAKRNs~FVsxfScq!zj>12sd3i^smu2#!Z4e!^E$XtSfN=5)Ms*p;MHRN43Ov6R-!b=j?`5z1$e@GE9*9-6 +S01sHeakSv#;Vu9X2i)&m>&>^;V`{q>A-EyHZi&L7R%Fd{dPG;g|@BsXEhJ9U$ior-1|v((eM0exE5YlvhS$zvnzD5b$dl(IleZ|eTVr@Hn*)G;LF~--qu#D1!D1_f`0;*#2qcb!LkaGgur*8t^swTVn6 +xE?n)7KxIN8f`|YSCCRgmyyuR|ti3wP)$?4zjCp8e}v!Zt)VQQCZ7nDsw|+t==)ZfHjW9!$rYd`T(yt +SV*TG#2pT&c1@`1=?SfAELR@ABNJH30!r6P2l&OYAC?1SlnZeZ@f?7yY2M#{=^%!HrYJY)+3okB@09|vwEOgel= +ij3lwhjlXiZmK=@-k`vm;5j7ZRrjd++hj2rbyrhs@K3b#WCkn#*d8kCN6npf!!52lk~lyRT`_df*T5>FO>2AwqF0ESe0i%q}~(cpvUgVt3YKXsA8^J0Gh^{71%&T*lW +imj}0AIQtD+(3S3nK=2A#{y*Zcy!?|bAPg6Sfy0+h0t9V`5o|gU1~LBY_K~(pe(`hsq5{DH3aKt4y>Q +~&afQckOJnrmp*}K0H)^372Q3}&j*LoU7sUbp%1q@HP?wk{10K0dYU~-HeL030{^}!)O(su%82kYww` +9YSQ}>Kxzw&6?3csl@YGyVnhR;_fp65dlyGV8n|Q7;cmv(E6LGEy^v*7z_aF1nYzPH2K}MVP0JBIjq3 +ryR1);Yz7rkf1+6c;>`7)Vq&z}nQ>6chY>5X205JtC}vZ-0p8Q8UOs^Kes`&r|Js1caM5 +7O-T*pH_KtWY;G$fZGQE@ZT{w1YOt6G(jZ_~23J;AE?pmA0VE*vkuo~{RLpcvTyWsBtl!pg}zi#;J3wCKQ8~!I^%V79}67a)|z)KhYutM;p_|uI)eZkJ|>M +WNKyO;a={D0(IT?qaV(#Riunjm{E`?!|*cSiaR*7f;C+{s@93YC7_!t|)G3z?agRvNLmfM>;79C9=u% +Lx`X6IhrZS=dm{!tfVYZ`jwVW@Z2Xf!AIBKC%K|;jv4& +-HA)N-RGR!9f@X*M4b+FO)j-DQJ=~wn@#gTlgFmDX?d2TrTHtusK*k$5%bT({iRIn0H!=6oJqebVeCa~+JwK +P|5vTc8Ki}?2)KUYlv7vZgQp#PSinT~=R(Qk^%5^JJluWhF8J2Qm2yL~^1h1TorP0|l(7GoR3FgX#mg +RBj$SbC}WOBcqw9&paU{h0U@w;0X33&~*=_$F-2Oq`)Cv99HnuLL`SfC$-YzTCrM>Xk?BR744+q)HAa +`Ra$U1!4vx_~o}DVw{mJYXLExt11)`a`Vo^<$~E#PvwqFEwcQQraFNDj| +BgcCS|{tZ@Lp&l-xOS|HXCAI<7m_i+pwC=C)=C&Tk8{pJeQ`u%~fb<0-+0p;fb$_#NRlgoHmArV``H) +GF=k}B@^WJD%VG?WSLEf6PxSkgdr=?IcG%&g=KCiKdQxRB)(aZVPRGdmN^dsi9w_VxhT{iE=BB=q5PQ +H|5Qs;R|T(iYn_vCE7UC9BOnMqoDJ6D*L73!D$0di8CZG>Olrb+HDNu1mT%&DARjLQ6eM$tER$2TZw1 +AAqcF&zL=8%Rvyc6MHOfgjB;+1;vc3+A^kI==srtM +rczsftTd+(Xlo>Hlh8H*uMX}5+@o5P}%0Bg?2{`LUcISic(8AoTS%;SHiW#2*5voI{U&!R{6kqtch3) +ix^`Efd&0j$6eOL_+x>~Hg30-=t&!>pBFQ%Z6zLG6f-reSFY}exd2dYD+@$xV7Vyi&AugasS +Emwf5V|GIkVY?Bz;mclMw5^K@9L)JI-n5#kL(pzHh3dUZICaPyF&kcv(RSkg*`Z{r?d2-QeVYXxvltb +dm%*o=KS`&uYY1O~%K&;2RJk(8kEC{vgP40D2XT>_%+@;OB5FBo3st)j4J(IFz@G^58CK&6zu~cBG;?NyOL+nK9M +CdejcOz8hZUOaQj#%%0Mc3~zI_nW%iTcck!b=L|*x%TBkyW@jmF!BXc-X&1$k_}b9~(eOcI%_s2RMn> +i&skS^@`oN=>;(_#&72E0sCs|N5mWnh?!DZY!9YGvL*Hpfw}v|KD!h*yEtyLgT7Fcft*kLlA+`v-64e +d(TCrnaenEiT#yDFn)C9-Na|*zt1O<;rFihV&1Jr>cw307%Y1v1g2nN&b@vwBq6H9(?TPY1Yh`$-b~8 ++s99@UJ00^L&R)OTmvOw!cegm=qwlqx3ipTBx&A=U@fY-Cd=TVT>#$Fb$vp7gO2svuQ1R@%gxxZ6ve$ +WN(_yDH&Y`-LWKP4^Nk9Eg)D)Lw>(Cbs%;+%-uw&N?FSBXjIQQ&zpXd(Nx4*@^2At`pJdH42HAafK^Bd5#LWV0*qMP#&+sS7K(m$WpuJGWO&0>W_Y_n$Y`B>BZj7U>#9m+V%>=a +)OF=@0R#MUBpteJ3{d1u(+XB}={Ajy$wyu;N$xuN=kP8Vb(bvW(P&bAYWnT;Z9bAPg=PD> +?ur;gzfp8n9jXP5ZZNiJQPgO7gY5vj)~n3MZ}&p>ho^Jud^X*&x|)k6KSi44%hIF3&Hd_noBQmNS|9luD7Z{Yo;rs8o8;EuALP*CWUYFkLb=zusyBhH3?NRM&^LNNey=}T9@*MVrGMAq+grdxx{f@I%6}Pw&RLJYxYF`QxF}Ka5 +WvG4TpcUV3fJ$z=;qmV0pcf +DGv_AM%;dXGlJ%mBJ^T#SCVKmW+}shg(~ivvGZ3uId%UEBUBJSIG_D$L9heWG`p0LvlQfJm9jNARD5q +^^8w@RS#NmW~87FULJ~G(ZV}fk42tO`UlAmjC$k|_pnhyt1d; +z3e{pL3mY8G$@kN+}ft6MfJe>aA~fV#*B1ZnQ02o+~JMf2-0xoh3=ID{_a3GGq_RqhuGc6xoe{pXW5D +O=XjtK4z$1BjrXv%(Pu%qN8NB>Gv{)Cx6F#_C9%SuLOpV)iN3l;*OwRWlhh6!9dg`xH=hG!jiA*aQ1K +;Dvot`AJJd-B1ZB=0BOJpKTl>z}3Ps$1;*_S +IPch)6g`Nu*)>D!x)qsV1gqlX-}}YTzKWTS{j=W%0WM8(u=x`n+vwlQSb2UEej-=O{igtoPSoVw~V>? +HcPxA{i3TN+0E+uR=oDH39o%@R$AG$TTS`R+7vI@8X(bCCObQFIDy^bLZ5w*$%t3euiE0h^c2l=f!=v +9+g<#f@8%O%qPl$P$>9$#{x65pIV0-Xe8Pd1)ff{(B|1Cf2$h^&Dk~ew_5_ +IP698|aH?860o=fq34u-i)T4vk+vjjBi=WLhkf4tC`ZU6sW>r#x(DIzY@&0CV#%X|T&8?s}TBgTCuVC)ctkK|0{7xYm;hQ)+iI=D0t^Ro47v5>bo3KhZXuJN+-K#)l^IqM|KVm@6;Z|uLN+qjM +Tvz)_@K!8b?|ay19%h!t@6`V?GR4Fk^yP{+N;A1rYuGw$GnWxoL#>lHGs$BdI&W>FucC!db(ciuo0RM +2isK9xC|119g$OLgjDut+UNw~cHQOw`8>IocqE(KJE@ht}_y8)7ZDQ_~G_(TG{fytc2{pN^qgHF55cj +P3{=KdNe_g!s-AVh_vy1n#XF@Hskk>d3-eW!e17~zD^7GUkcRtPB`ne--pt5)j2$hIF#ks-W_{;J9D7 +?uP6i4aH5R9W>%HROIdJjiA20x90l0}E^IJH<9IO1~2HCq>)%R3ERreQkg#>$U@9_~IQ2#p9(RW}9GJ ++%$!s}sy{pAP2rcxIcF;WRwmIH`emJ1@bq?iS?=sAv9k<|d>&MlFilEMg1UC7daE^oIWR9@H)Nqsg)P +v=t4Ez_=erhXj(f5p9i=TfHM}LTI0o1yj>AFoA9Lq +@_a$)bS$K4koRXPhGyXV4sfU4M>*XNDeG44Bh;i(jq3w|{lI0lN<1GS?oe5Dq2l*$#gzwO0eUL#`J +53+h2tsUOd;A!{ix(U`EG|~;a^(3YW=LwbqwIY&9(K1aut2)m&vseGTD)vMKqMQxlG$fMLjq{Y*@3X% +CPh5w*!G_v@1A42%vG$Nx7jK7@cZ~spSIYx8<_9ta0g`sA83*zA(SHN`IpLKFE2PwfT +8sESX#yp1{D*A#=q+7ypQ1c|-GqJNFiSv(rI%d}tA6#phE4&`#KvZgqa6o+4$((b7#{#8;O+D)}vYl{ +CPDGu-G(5|g1{xD@A4(%h_u$tlzAP#sYc0%;73$rxx8~kNgUP*dqn2kisKtK_{1!CkdgG+2jKX(zloF +DhV9r=23$vvmojkoW!16p~mQ_Q#Loe&b(eX{87s&+dUrB}NJr4X;^t#*$Mrh}lZi!V2kK5=CxeXX1^5 +$;poqIFJ!?C`S8T-$_x_FyvD!;97gdsr~Q9-bJ-h}G0MdoTkugkU{Xx_$#^4s-s3+R*q +9nD?xDwGg#_ed7Dr1LvL>Uo!Cd8qOJh09DWtyt?sNT})sy(7(C6GXQnZE+Z%Wq)$>G!xi)ePz@<+G8y +t+S|FT)+GXJ}oVUR+Z^t|<$HLUX1QDtgOS+Gp>q}c^u1k~ksJOBaQ?}9#_pwPGdT|Cw_0;w#qd?^Sho +`#VsieYhdhpMfC%tuwE@*%Un+kgXOkyn%QGm5mu~xg&gH}Y26D%Is9@{Fl`NNZ3*gZ*4HN5jR%%(S2y +Jspr*ySJ9ZVcvydXzzOq|{VhG&aa?7|BG?g?bPLySK%(!FoHkpW2!>6S|0921!pt^ib{!^#pB`oXV6* +=}IX8Z5toe(3mU`JGV$y!Bw!qa0m$t?X2-2qJA#otmZPI1+9Ad2S6wd1nfkw +7>dAN%KVrpEfBQEa^$T~QA6A!r6=lidKvZnf +nHf{YJ<(U0-)Oa-p|Mt<|QK1Oz*STIwr2%s~-X??-nawO-3?A}%-qhp;lMTnmpDhfm_-2?S9QNpP8@$ +>w%SRUxg+;vEZHWfB`!+8(FyJjBP5mmT2^zgs&q4MaCpU!7uA#YZ!eUnQMAci@WoWwVwdJ=C(QJ^Z4^ +Skg_Aa6U%q+oAks;RJ@UHZ)gF5NM9J`x2ABe@$Fc)lqi8A+@LRve45>*7H!9{8-#;iuTL&qP=27ygLH +@4jWSQ~gs|N2`{}LT^45U*z9&<35{fgIikFe+b6M$KRBo?<(${=$8_qv>Y@@Ap2%ZGT1a2=`OC{%69tKwxa(a}6=$y5xpJqq%^4e*g%2Ae`6p4zSbSPvG +s_cjB%?oI9%Xlw1K>y^%jqbcA>Bmx +v~bQ;tgRqrtW$o&*q+llcU<4}D+z_))@>GKpd1{NsZ-yTuz5UAVT``u7e&SU48v$cG?{yv{q2_p1)H^ +PPoGoRi$=f=&NRC%(TAJ?tQTj00ddc3{QbLi|Mf4M-%Q7gzFLY}FlWpTu7L(db1w>%}SP#kZ3CTXcl| +_n`RRZ^YpRW_>a_f{y$FywVW(<4!#B`^}}Dd3kHRGe5YXGfTF{JM*37{x0}YGU;kbAcpb%vWxDV(j#} +7XyIyIUmkhb%q=WCj|jrj$K(oN{MI-33dV&~P*+wrGosk3_7-77#ZG +^li=phtdE^P2@;i1H)ct!=3Iq`aSjn%r3FU)TAbLkHb$(;|G+trD?+c!Bp`$>}Q8WS->e7eR5;-B0y- +^>iMS!e(yr-hFr5AyPA9`R->N-_U>RK4klc-SqgP4!94uu!!k*f0r5NgnR|weww-s5cN_|%8GPX7mfNKx!}7DKsC{iz|ZvT7#$yK3g +LYCubW>qGWc-UGU$`f>IJ);H<>A0nu5*I4_#s7tQ%b&4TW#eB8882)cSHL3PHB}g)TWCOY(Y&r}R>1#tMji9?e0A +08Ub1P-gktyHkdJLT-Nv0f`v4i)aGQ4yL-L{X}cZOH0OLvS6+U1HFZIJ)|GVb=Y9%@H%iT>;`Cra=0q +O1#J@ysZ$=teY0hfW5wiLYzix}YWVgqD)o4U@hO(7m(-rG4d^68wC+GPVT2la9;51CJ|9@H5>^-L?q9 +Ja3(^TpQkqcS9N&li{sli_z4AaInmmr3TwRrny38N96A;ZsYee(yF}-ZelIo!3db5j6xiFq-JT`Hy^DPg4y1PryqyS&gF^qzP6Hn5K4k0VGe$C4D +k2(dkMNn&c=4&sIWi5F|2L;_~wqUj20aI=y396IaA5wU0cahwG#ZA*J2pC_{$+^frrtHFZ8qC@mRPW{4I2HPPytCc{8!9~wCQ+v~aG@EyDk*8>BXVA%r{K(5MoPf>dG{{d +Bkx2}_f_$R38+ynjXk5|%Q^Dw2oE9a>5D=x_F-VK>dP*FwM0V>A=VJyuZUTLyf>D{syTEuWM)^q#Gs! +^*&=!Xsm|Xp6uB{&?^2n`#Kvj4S97nd1jqG%MWLxF1C4)p`6HhZkQQ`^%{4CE`|3t+%@$DQY8>2wC1i +yEp^Xt)b>85`Tu*UoUg{+Znwy9#$E$Yf1b%|@S0P1RQ^K!2|t9w1;EPi;y}4V1XwdbM;x?+`)H$oHnFT@gp-K0`8MtaSA{zgq8@uf*ArGe&%^voUXeta+4p9A +_|cHP_&IlmBY0z#m%yBD_mfRjA2|Df8#lRyO)dNzAj*(RcSHu*dq@`#^t`9OJS@2ha*BBB#(B{-NvqwuQ%jeZiMG2mHSSWRIM`O?>{3+|XvLdZed0P5BYJ*Jm +!XWIzwtCN{{$d6_4$@_o$Xvp^(OVpcYy-?<{@~CCYX +FCO3L`7|zj*(W{KcJuuwXJ)7$Em%*ks&+2}=h8=q66Q8QmD$$Na{n?g09X?|{a}#P9~Ervp~OSylj5Db$t +<^ADD~kATyG@vLWjf^eD#|GW8F#g;DjBN +{=kdMB}|`2O3N(8jMU;ooWOT8sCN826jDJj}nFisE@J<)sThlzYK>47qoY{3hN%3@dK=GP|rd)oxcFU +XcdyZ_xYMzi0g)3H+o+jZExic!_G0Enwa#_ipzWZu5`(M1eIitq;oGUE8Bfk(-a$;k_8%Z!q4kg!ke6 +HKVpC*eFN5CcOoJ``Pb#_Ir-~o@Kvh*zalf+t=cmJ|oFf0u(*#Yrhxb*BZzY0r;N`kQnv8i(Y1Oao*4 +-W?>RT{8)bWZx*9@>*HB*>x@|Y8+IDi@x)?7sBNEV@a|ujjF{(Uu^dG#2e26H8usykKg~4KALi*oBK> +bHy*i$L8&7Xq6iy)zJYVlj=2KM;nKb;+)Lm=& +x~Ro}UEV`;}R&$Rt)ad*WI)UfprsOnxa?s7IN^Zu-@C;p1Ayqa=2?6t6TXVw^*Y-2EM%wbyr`d9ugr@ +|c340UdK_p!{YxRh_&rr4!_fbSy>EewvP%Cy!$pRh11gI5QBg@!P_R%m +8JW=mA@P=$mLd#7Axy(eVtK)UU2(*$ZOh7b?XqRN?XF$bY85YeDKBU@(@H9>mqv@)0xa|Wf1h*CJB$d +`?r-;Z`TTeA^?ALuwx&lL@d=T?{QAR#;=T_Vix!&&?=9`_=)+Gx=*@sKj%SG?cK_Rd +M??)kZUa{wV2L8>hjL;Q-g5pO?zBb#iZk(NQUND&zpA1RFj(RSx;P?dRiu_!KKRk +id6^8j1?FBR)kkv@OO202hO3j!U68UY{2U9j6d@y6Q6k6+XN*%tsM%D-IF@Y=jdlPy+xU7t-cwb%WAD +&PWAPR4NSg6sdwMJAW_Y7e{FHMRL{Z~XT>nH`>k~ME|dC3YH~8aKS)aB8|lD5Muc&@)dMMeYUb#c`MF +P+-L^7!Gd-glWOeJz?gatOk5Y>*PDA&m*S6^7LB%KHX<&7?8dW!k4&o^C$VwB9JiHG?R@JV!MW|p(Z~ +l%yDmisZP3Ca#qmsk4MXfey_XLRJ)de&h +^@cZ5>%*6vlWwHj8jRv>eND4Tyrzk^;F^f^lmkmfcl46x_4{PnX&H>hrgYSLzrU9LHQM5+v$K}|JrP_ +_VAUySu`f5?qd98S<8$Prc;nm_JLwqXi_J&)#VWK-v_39wqM~8)gp0dYmI9s}h*E?{i(WIO^;ON3U(+ +6k&oi6DU_qzFvh?)Krm~7(fk#`0!s$lgq$f7z!q?4LoEfy!GVn2KC$rPtbb3%(K-4Pv^E+nu#+X_rmd +LZs2$xD)cHl_crTn2B;9T>p*wcuGaTAkolJPwbdh@w_SxkX^t8;-oY{WIVr@QAyq`OO_)7_tPT|>Tg% +=_M}Zyo#9Z?!tc+^&K|)#7f*qBDixS2ejhp}M&30nIntA%4`5-p6?fL`9)G^6V__1y`yg^jPtVMc&L` +nVC|*5i1yj6RB=p +3)-xa%9mP~pU+V}K7;vFtG?cJy;58$F5@aTfkZ3w1Y%TX2qad?5J-Yz;z+16Mp +&dO2?DVyLj{tp^b^P&B}yO*lrVu5DEDBCK$N +@JC01x{j9HVK@+?{&YxsU9h-1x|HIStf9jl42Kl9iMv&`~=~11WqlPk|}UHi>RauypixEfzzvEO02+X +7m*9x4L@Rb(@t|xr6z#|CXDDY^)*9)90b*dD2Ea7DWC(VmWk- +(D)Um$Q&38~B!xRr3Lz)3ZvGEU%g2u~3B0>WbiUO;%Xz)4M>5+?96!kNI!3IDcS4(!8UC&46=G8i7|Hjsl`HYReBlCkJ!zFzv}xI!;&}AiD$UGp +{VS3?M#0~o1SO-W7^-S@@22Y-RV_(oclcndLq8!gt{lOmKIUgW9B^+lkh=uLf)GuuRy020Pc6a;eAFpYA3ZgnO7=ar@c|(!Fbm@OpUib6$(|SX1C*uGMW +qaW{wPU77r*InW5#c%adQM!QDP0vt_n4%0f0wx0Be7QVN(^P{r^$Oq8a0LYWd;C;?t!`8uUy<3~I +m~qTg>-kL`()~x2Jr+=>YBsqn@Sa}O;1pr0ad3~e*TkZecL%#U}{Q@PUWZSLEY>gl +uZ#3tS22izsU*{yEGAAKs7I8}{N=jW5wojHManQ&q;Pp|g7Pgr=+U(D7`^=GPd6;DI2&iYOlLy0?~Z- +VvoQ&@-nQyoozO>p%^JDJR7D*otxUWx-bt^X8B<`b$tq9B^xu5}!@NARTcM{k`CFc}4M1lC=HZ*EjJ! +)#m7)!_F@YhsWfPq@yjq#N!8?yu9wfI@=H#0mQgn6! +-|&lor+U2>hh%bHVXxMN6)s@>yDji3 +^}xY(eRC1e8{LtnN8_nimZ*>_o(`oDD7Q^3Z;iCz=n%?LOAh(8Se#&WxGaaL%6}+KYHZ6pPp|RJGw9* +qNGNPtemu2;t9%rn~!_QZBjob2VoM^Dc@BJ|gs#7J51mv1t)l4d%WFALis5K4Di-Y7OZeYB6k`idokz +u4mbr<=&&bHi~CH644X%=7~G@rZtmWV4^`WTWx{on`;}A!6WR-__9bjYG%dZRB|x6|6ZjUs{8qIXEW& +mY?#M|Z8NO(=gQRhYwcyC;w+l^425ff*_vxk#1rb)z#dzxrB_U-h+`1 +RLy>p%9RGL>Lt-lb;AOS1GO_Dj#8`!C9jCct-FHA}ZbRf2uPm%dm5Di>C*&3Lt{pb;`;G9$;}#ZsF!| +^n6S8>CGo7IeMZR!l^p^E$-SXb!iZPlE)KjsyN$hO8LQLnEC@6)I3@ht9g{%=rM+agWiB_GBF!JT6J( +`Aa$nwNv{#==Rs@p*O~6xnu!S&En`;r`R^l54R3nh<~>DC6;Y^O7GsX1!`-x`Z>jPaDtqYoOh33hCBa +b1b-Su>s&L%rpV06Fb-NL!@{5aHX;ex$dt)SPL~4~v`Yl!rS+$=|CRlTiD)+pH_OjZt#mZ0Jx=*;9J$ +edC{!sO-?(p!nv@HqY8FpN><~G6eHZ`h|^gyApH@lDWB`Hke%QD^jXjKZR+3J3a)~4WNn_6db|G4UN8 +l*b=CDx7sZC7`YJ>us2pE;db<$R%=Gv2F8Oe~7q&fUNQ3P1U$-T;0m=)Frt()1E)KYM>r+Tq3t0<+cCL&@h7R^U$9 +WM04AZAR5{31ktL}Kx|x@p|TS}bZ~SQhWexhRE|xCmk;p{O1afQFStP(aU?Z6e<8xO=8!V!J4!Rjam_ +%j-{(Vu9()zs*K6p6E +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 +7)`pl~UUK(K5(6YI~f>utD30 +3#1z_-YL68Cd~#>y=NMc_DsV6I!`LeKM2ip#UVdWqPcq3YT~lUcbDoDkuou;h@hf`GQ=MfqhTT^Ov6M +zDy(WDsbQ|y38S_k*LZXCEIz`_+N5oY?zXyXXn0Fg&+*w}RVX2luL{vH*mqS(i7NGuSRZ$^KVo(7^Zc +cQ_s!iWF)?105D9TEjwYKQgggWdXaGu@xkW>{v;=ymITR``-W<2`J}vcxdvN~)O}tei&aSuf1J(0C_mTFF-q;%cCe5Bgp;Cx-Fii}C`ptV( +qnrntjCgWsMJYLs;lY2EbE?TwP3N{ba%v9`zak*By*yD0{lhzP4XSU-rd_Vi5Oz?al`Rr<`5c)sQqQc +0TT;F?B)-1~Tw2%DaiibNGNqu<}dhaWK&YO0~eO~c{b<_veAMt)W6YbIhz$Z!WVYHI3F7%E6db5ojLX +Q=uUN#`yIW1L8Gt%Jlv76Ys`Q#9c$94M5QnQIDk{34sjUrm!jT6eqX9rMV)8Z~sFAdNXcH}{7bLtCVX +JWbdKCu?lm972S&F&;U4jd^0<41wb_&D{sh?=kdB<*rA)~5uXpd?RUc^fujg8AJfyR24$-3 +hPlRvi&sE5OW~id~Bh>v39yH71t%8gLO1Bqj&_oxqNb{mKm)>l)BUE~IKwU-PjlhiQ?yx$#>dghStF+ +g?R9Z|;*q0g{Qn4Tm)uMI|r{H;a*XMyWM8aT9Dshn78`9kYwfoF^z0Q49nfoKVmV2pJR;+B(Qy9B30 ++o7Ysi}ygH!k?2+y~UCzYNfn=DyfpQ<{r;Wt4JwF@OBxsl{HsvwW?)-;ewmimpnH*FovExIKNd9lvdw +ORrsEM(X~Uo}=t+rJJA!l+87KTuVDZTt*8pfD%tt9#z)D4O|(KlYMAej9<6f=YGfJJ|r(yeu<%qr$^i +gu05v4ddXnj#V^969+-Figf?Zl21DK?0_v +?IlVQ81&GOD7s;<>()%(ga#zskon{^1O7Z^2!r@I%8KJx=oV-&u;It@Cm*>G=|Aedc)*2MLnp-s#ij` +aH4;*i~HXw@v)G@v)tI^GV&=X*VzJ34@ghH6P|ueM)#L=iG8ir-6<>XoYj3P{n(H6@R2<$_dI#E>>$x ++kxuG5%7D3#qkB7u$a~UC_rx(t1%}GUNd6PYgcXPjtU@}ZlhuXReDnZ{CGHZsRsZJGXm>GuTTQBNGRG +{&@bGS)0T}aVe#eyKnbh8?&iu?VMc*-JU$p4ofs{_&&+i>nQ}?g#5wT22h^ +CZfR`-l=PBEaC5&cfs#&8&_&0P!8rgDeC-nAAXyDT*m`x=47>Kc=cX_y$u=SSL&X +7By!_tu@^`DMPEJmUHnKB3Vw(H&+j{`o9Z?(+!q)FfQsVo@+t_qRcMT7Q?ApS4|PZ3?<5CFn}fZo`%P +N^i}D@-?&n`6sYPU@-|I)Yk2ra?fjGX{$?sYRKV|V8cpsCCU>KO}G+jl +*C&_4OdMPLM +0tM^Z(`M`13kG8rd2Rk`+MF|YBh(y3WoyjKnh7;ZJQ?2l8IE2J_ToAx=ud1-rD^4^px6CgR;~oa?kj5 +!(UI(7LQ&T{;F)c-l78e9zT=C^`&;FcZwpdai>w*f+)dzl*85Jy04x0Q##OBEG7L#qDs12C+pl_D`!u +LCYW~cvSH^(FWxFgPta%*R^zQ`)ZqL2?Lwp<@imHivwKf^3cBleEQYN8u-^H;*k25@ZV;TT=BFLFh->YwTANQ>>ENxZx +&|xzY+6LhDVr<=f9ye84#|T!?g`@QoOq3wcr(`l-avqtk4##z?;BY~?J&QBk}j{HWVplLoVdoUOP*wS +d7e)1S8H1JDfJp=!;U)BvF}%X&tGJj0|;9uY33oNcd-QhnA1owfVr#_%QJQQa*Si&oLHX6l2^gZl69V +hHuiUOdp}P!OgjBaPlVfbz*!?tB+|`X4s_2-OVXGy1yUO@J+8r6xLv|s>6XCq+pn6vEE3^lnYwZP>j1_yT_J0+bTyG2*L~XAq)h{y;EvZ7v-?&JxXG-sBx?uf#1kS;8qvMhT__5#SRRWMCvp|pr<{+Wy?RuQ3W}nor#lT*y}A7 +rY5#Q<(*DIlc}EioxMQJ6yrJ^ROP6zYztFdoEMJWuu4zuor!l#BSU!B)B9ad#ykSZ@UqTCiO4z6qkwy>C +N&^3%w5r*C(n?yXBkZyCV#hyqM7ukx%%WEZGnwB2Oby4Txq`_5G^*FP*Cl5%D$Pj0|KO3=0H&}S)K)4ao>5!RX;bX=kT0mWF(g%oI +Y@ApJsp@;v5`QkB*D^v+nTVoZKfIq(@bYCLb2l$1EgLE1t)hy1Keb|-8^?@U}CdIv0?Ol%WzBW-1X_x +)NC1)o!s%sbSC3cTGxD2Q|_)h+RWf!g<>`>|~*jOU2))K|nJhhUS0FY2znBgk +GRj%FqeEq2ZFC+}f5dh1pK~Q_9?&b^}4a$J~0Q;gNP25*nEYw&gsVJ@VkQ1 +?`dL{ob2CPKPd&5Lc3={HeX5O5yl6p|qcGk`fQDN)BYK)^PtWH~!j>e@eTo@u(BpbE0f}@O*os$jvg+ +@`O8THGizH+Z#&!>?^r!Bh^Fm+sUbl9_R0{s@R3;)IBdCBdnK)Z2Q% +76|{|`)hTO!htlWkC&Swd>ds14?myS+!2Sn+t4U)Beh)~vS;ChktdsB~2^%F07$9IT39pfGx`YK1u8{ +Cy3AaeNSHia?JR@O~gq;Qo*iXU)2{#TAaIJ)S(!NZ>)e_z>;U)>6mvFCy?@IWEgq;Qn7$ae_gqafNOL +(V*t0mkd;Wi2DC2W*XA0uG2ghM1ulJGhSua_`SLc4^^B)m_;O%nb^!dE2RD`B04pGf$PgqI|Y7%b%~V +S`gwwVBlW>KEf00o8We&XD+|lpMXi_xISU0PH +CvFfh<}Lx-{>nZQ_Is~s-`)53+-+~)M3B1DEPTc;I%aGUZfPYBOIe{a+fkBhD=lSgF)L-ctb{q34Syq +89xGzB<(OdB@p$Sa%*7wPvsr8=o5Y5*WEq!c9?7m@natwlVHUfdrL#0Pm6^G%gSl8SbFxCjXk$iv4*X +HPM(#hHg>X0%RHm{S`1AFnxiZ+NgYx7KTrtx@=qzU9zS{FM9egIRMEsG>aQHESD<^y|W_Ca$z7qWJLT +ZW6EFNPfFp^Rpx69`=7jwS_NKq-U9QN +?;!XX=wDxUmpI?l+)O@i16{#8rHi<8@R(e% +B|jxdxslT=;{HX-a(K*|oQCtXkt_@0#|EB_ESAN?wg}X&;?kp%kn82iSDrcTN~)OiNF^wj=Z=H(;+4GHWirC9rvAE=ozq^)};3 +c1fTr-<@9s#|04L%D3`XAqZ<9z_CBBIk*IB=$Fjp*$SD|k?`G#V4sO=C5n=MKkddE+#*1PcrkCd0AA~ +trnioj37BWJbBcyrD_re@0&Dql2MTN%?Z-nQ=02rgt?bA+oid;Mo*giXz@1-b3bV=km +mkcd`-e^)Z&xo0n(iMtuU8q@{s1GT71%cr^eskh54d1pO9u%nzu=F7O(pbJ}#m02Ia*KypPjby)+hwK +O=Jb@)2bwu!RUor9^NM;*)P9_#b2Akk>?g5%;-RjyD7aqIVlF0ZZ`zbv#_#SS;RJK7iBDzKq&fue_}I +8w(qKSF=$FCUKX2}GGqsb<>)*~tyG7ER#q%K-by@r-!S6yohHK3qL5D^)t+paP8vh!<8lM +_p8b2BzBEF?wKD79?c(r(lP7d!u9lSklfg=y2sYyaLO}DdtAROK}l>qD?f3 +9??Shr9_M9PKPoJ5DhQyB6`e#o8 +q{&ar+0fC)@^uZyaVd0$(5s_WGc8luXBf4j=-hKM^>u($|a8S(PAwy%Y8Wwl;@DcF|BS$4BjlSmEU +7<)q-^P(cP(4KVkP_k{b#)5FV_2arQ4N%R`jqx^;g->-{n45`TXgA;h%5#yM6xre&L@M*7!dy{{IEPE +AzDAzq4g@3Ij;J^C!bLpqQZus*x`MUk$B+GPPZvLg|ZB2Ju8~*6E_gB8^?uyE) +U;TP@^&0ounsxWAzxTf1-2dAL9^CNI!;fry^mo7C^w{H1Jo$&Gp5FY-AOH01pa1gLEzdpw!iz7xymj0 +5S6+SXZ##C@?%KU)@9X>aA2|5Nn}-e`Ia+t@_*-wk^X_{m-amQjgAYGCUH|bXpPo7U+2=~b7oKzHzx= +B4>u>)4?RQPhEf>E3;o^^%)cGc0k$Nz8dkUMt&Um<_m&kXgc4}D<{@G(Eo##{rl-p +9PIjrpE7=JjpN_qH+L*T(#tHs%-oE;ql_#!Or6G$*dbN1LpZZQ9<$?84%_k|i^oInF|i!(czF)aIDF@ +K#%{Grc&!#Icw=%$9WEo|#kXH03%A@33W;*j;w7y|5GHSQaSfEV4~3DH9=QVdQMVERI%yM__i5i9hvJ1f?Orc#jc_vpq=QSj^^q9omeNohyaVl5=g(%37CJ8M`LpKoFF~BHX&hlb`ZKNBTue=LBRt2Fd?> +=;ircW7R2;=JuMOFS&$}^PUYplDqmHO2>gFl{;Rvoy9EX!hN`M6WOPD8d3O0~_>LW#oISf7;Sou8Hfd +is#+I)xM<|A93JMDJ`k*qqeTm(E1%29axgH0AjjmRsK6SG$N%q(1ND{(nZ!hTYYGpERCaX +3mG#=>G_W{#^kx4=eo-G$PVL$d>9( +1iISthB(kFb9@Jg~hh9Mlj +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 +F`MVdT}2)yPc};TjI1NGy7{e4W@Ke(ze&B +Ld(0m(LQseqIKVh)GKB~IjEwXN8T0#g?HLVsc!-rAhRjF!2__1hmNCC~*RDNej +XEl=0j{9QQE5Na54Wio2<2`MORjQP?RKWjwfm@E_InC|0D^v&EE_SYt+rKDf(EXoh)n^6$cEu+V_arU7P(W +INkwsB?|m;bWbIIC*y$`(WUgnA4lYX3Fkxs~mF?T+Qj*@QOZxt|`VXydu*)2H+C$O_wJ@7Uw%vg_FDL +JQmANMkSFZDCs;Ucs(CfH4KyIqQ2WyWtZtW+(%E;DHC&Bab}79)0vt_Sj>Ou_vE=l8+T$c;N*;9(?7M +SNK@ro!Y0_BN%UN!B}DM-o5O|kt2L;aORWK?2}JEVQ0>qVIGf%ojZ4qee?BKd~ERDci*uefBcc%+pMz +ZU_SPPPdghwfboqLJL={7Ty%6x(b3(5j_xTIslLcYsyo;;^#HqFeT&_ze!!kn&!Ycs^a+m+F&i^_J38 +C-S0ns22%n1Z83;cY;crLyUnBgZ2>(37A4K@pe(pcxl>dxV{;!TxG(GOUdi5GWuqRja-Ya@=e0)5;FW +Jl3t5c(3Rl!{S5r`jFtjz_6qDfsU;+1H{K>dR+__Wz{PWLM^rz~(@4ib5RO;!|r&Y|qRdPofRP?hSDvHv8w0?a2`0?NE+O=!t +#EBCVnaC%)GSY*ID;>lOzpEI_+&gH{pwW=wx-Y)?LanW>^~(9^(W +C17@4wIaME-Ez39qlOS5KWf#m$r^?ZcRdLzKC1zyA8`7L>amKvVht`|s6nzWL_w@4WNQ_D?_k^fcnSK +>m=<-=MyY1`q2f>_5ss##0oR_apwbkJ6xhlqcFp{A=mZaP4cG7VQJi-Vb^1{e11|`)ByyvuDp*ICXAhi|?07XPSjP<{}ke51NUVcvZ6P0l~%A?m+M`EcoycIr( +0VEzI27s(xUc+@|_e^XPFif)LP|K#N4Aykg(BmNH`KCHg_>Z>a9T*a7~*I|-B<;TH;2l+?5A2@J;*Oe +0|PH>#kKy3h(H>xL;N5tF9U#hC@q^eFhqN+&;RW<%~RgK%Fsv~Mub^05s`p2`X`dw4gTc|62ewK3|{& +(!yac@ja%xH|^*P*?n{NQOIeo5veS4t1%1@TTe<^4w=eZ)V)N#-PP;+M(+rG@w=`BNT0eoj@*@2YC*a +aBz@s;bu>Qq{x*NW)%L9fmXv`J1W^d_`5)eW0orFJ9dEkMNJS-un^%+Nb4(_Wd*Ugz5p6m)Rew>f{ru +n)VLlPia6NT=S-?jzSuW-&575i>jJ`OjQ$hc(*2g5&zB2%~Y1xCMG5hL|Le$G$0?YNDJ{o<%oD}FC8R +zk~!rOl^ZJm)b3)=#u=Il{->N0X_)x7`v2NH*XXFKERPq`46a#gmVB96^sJdhCcaPyjH4)zJOwo%YLq +qx#D)L?0!au72|+^$5CtR#P?Us+Bq<;usj7&)6y%|xw6Bh0D{8Bew#SHrpn{FhJ^Od=J>jOTgg`TEzI +fI;xv9s!XaCQB?|rLE;+59^ilL9nP3|Fw{>+0Sm+W-!$Lt{e>NCXJf8<~Nkubw~V&$BDg%`*bvSD$c< +H#9uk6zd#dchd>iOB7WVTj8A&F?xG;u=Nzz3yO$QC;}Y7espQK70Dr7B9K<(o6d&A1cr@Y)d2@$a-7y +#s2d;eu49_Gv1NgJ`@?O7;aJw4M(LT<13xZ+oJ!w@4gfDGp!~V?6f!{@gx$CAAa~j-h6hItSuf +Q%cmyD6H^im5hMOv34t){mSR^>#n;lTJ3 +om^dl$XIFNhfIvj_^f~+G)AHTL)>ZZqvzaUPY%#Sx1825cHGTgl!nU@r4UB>L6f8~ImVs~{di=PVA31q}Fuwqy(Xv6EY7 +CrR*u0rHe$SgROnraAQI9}^k_n3|619Nj-O%%ls{ze)J6gqH$Ks1cRO +7I3nqY#lqM&tDkHt?k~an2grsZ#ZVY0CyyVIcfWTqj8Y8uex?{a`aHzd=cI#+1o>mM2#jsv6?5vt1CyssIA! +GBo;>=c_^tJlz#u%6HicCND!peXD{{1h57j~kr&<$ER6FAc>5q ++T(E>+|Dkla^#BN%`a(Wq#&BnLA;i%o;aH78Z<@iG1vjL83s^W)`t#jss5Y@VqYR2R@^Fx0vjs$2|bu +=&A^8dM=;l~UoRUsZWQ7oJH0$m_*$uKsG3-zbMx +PY}Hp%L9wc4bWc?q&CH&Gr_3>AvuVa4#E%F*nML55IlQj#aec;<`9_8^9*}Gi!mk*TPbNk8;SD!a|^m&boVTFs~QI(^L$w{&x)4{+nF^2l*p*mN6X8iA~zF&^t!gKY% +OYXe$&LKHDIj=w~`iKscl$00@Uimr`PdK7e;W<{M@$SB0ON@a&KjP|h*l0KYfqrJqsrCi#i|QuqJQVkofm1W^E*p_uU +@^bA3uJ4&bV>ozEC@A_)uG0D|g&+hYTAwOdfgU5qaW?CuHf;rG_5zd*}rNz5qXAagf7+0egxZ;tN@0- +@-xiRvq+zE3d36JRM^cIxz7nMNl{Ues7?rv +Z@u+a6C>>3zu(9Mv_mUAvT|kl0X}4pJcqarUZ4-?w9#kfgIAw7gz58Z+g1|?uIPyH^y}AeX;oE~se`b +#tIJYaS}LijsdDkf7t0k_Tp=1;8(N?P-SAE@*cpz6iA>pRV_RQeHAZ$mn5h2Qi81ic8)pubZI4Zm4_@ +6W-<~{qQ2E{A`a@-9rIeMGeY0fA5}7k+&dCuYMo3mxmf3gBD~&9H0lfexw1FcW3pEJ*FmjKNMpvjukV +o($e(>@S${*fkbjk>n%T2wzm1*_88SqQi;E2(zySR>-gu*=rKOqY;Q<)z1cS|c +$;F7Tk$dRmhzxDn@nVhdNa>K7d7XCf&!zz0|yS2#Kc7D-MhE +p1Fv&VIF3lNWp%?Ikt6H@a)mvHcecKvG|_JBX#c{{uei&vzyA7Y-NQ2U`T6IcHyGF->V~Qx219y!x(p +pU)X3JFHERt0>@|DN|Im#dV1Ia?*cAC8)BRKC~l+qbXT=k$EKc9eeB^~ +OJTUzy~K(4)K+jV-vV*yw}uTU6eR4B(^KV|$LRCt^q0Q|$kyO`9Yb3>qI83Wdyh?6vMwv)Z=%)JGO8? +Jwwa^L$RBQv&tpfk$L3P) +@r3xE_=m^z<(SA8$CqAu$=F@?0DVQ?p&va^d0cZIX*cwH>z`^TTIxSwz;_bAVE>Q<{1LvBJtpU5@8N^ +3@4^QjWAm}K*fGs1OkYDWpKsa?{m5>6a^9A_du+UP5t@}(_|<vpA7oy+d&(|`1Jm7f!)PjB-15{^4Z{qH;S9f;twG%5+@6-7Qo!^G#i#(>I5?&8%Yp_;#jeTR(= +MTxq$hcGE{XuH;xec4!&WO4H+2@f{uKnRDk;20w$?rHlHfq826#nZ)k&$nRyz{l8r9B$J`fpvjbh$xu +yQ!+vr?6)lbDmUt`?=bs|53a2zQ*UZ8rx3N7?{s6T%$8uZ_L=p ++Y-jy{R~zovHBWi_>Goa|TR(SW{-1Szqc-=T+Rf*&5FTz$6%Mz#X8viryZ9d&Eq{lJo_L-;)p>0LL5^8Fj?zn+`kd^ +nLC9173NgKSZA~R*!#bEt5U)DVo2gYn+?vy$=Ka69YpF{%1#3wyA+p52hw>*Ju9zh|~9^-)7|Tkkf0U +$Adi5qoUVIpK$oA=F|gref+rQ`#Cdb&Ya}!ciVWDBe8X`WT2@fQqQH1=v|-QEB)hp!sId0?a|QdqsN3 +iUiG|VAMEf(*7!7WJ!e8jrV^17ABD240O#||n8YYhkZqM{uS02OqbY^|clhUiIs#3jlur_ +kekwL$WnkxMTYQkHW<({!;c;tJLJf$V>O{dp}PSEf4u1{PsW5$e}S+izM^7dY#fw~EM!JxiQuPNa6`{ +*-K4@Dm7G11$Y>-Lw5$2#+gIhlqABae-zd*9*fhxdZRd%*C2@4N)l@1j>kO_SQVl}GC0^jGLjm>!qA{ +>*VVo3(E7$Yb1Vt@%$(wqU`6^pz`DrlO1F`^4wqh8FgK<6Hhr(>J7FMO}5HTiagk_7~6z`XlrTOEU(w +>;c1Tqv_pxd=Caq=-&qKKdlpy9WVuCljYgDN#~ +)L?U7g+ur*{W59%j=%*x7|pt78=F%lo_Cg(p>PSu0G(!F0iapJ_6=`{Hy_qv}C=(SdBety*Fd}QNHqlc~Wa}8oU_M2KRGDt0*z6Sc??IXYg>;mUO3wwdx#%4n2?%lf=` +8w94F#2C!UY=f4QN+>oLr$J!`MIU&)m6l +CviP$^7wpg4!wo@?z_+Qn9&Q~%U};|jhA?to(gfhVpw?=YqzW)Uc>U%B=ARhd3nY*aIdPZE5a}K8r<0 +Ag9i_;JIl4r`mCe2#@PQzbl4d9>8GETRjXE+S~0efnv?A*p5xkPeb%x57g++Yjlt19+n0m}WQ-mM^`~ +vyw%Pjx&voq<{2i%*VrQ^@@VTL(0r@+sd$GXh)KAWJ@L7{?=Qz=?GugK`$B#Wq6Ph};`s^+9OrP2Hes +;IzJfAbezklT{KDQgyCY|aJd$jeM%HzP*t5`r}s{V~19l&7A0$~>>{` +HkQ2A6#8sy(cz0_HM&}%fQ{GC7#$&HcMpynXMK5*`XO3?Uv#bI-)ZT5WL +i%b*4*?7k46t-;C=T6QV`}vN>ooi& +t6el(u>*h}6kL0i93gjv=nk!W)UG!SX$)O$jXWb1YgH4R{jpkr0PB_;f7bo{3_apBk@9e92Cov2$6?9 +{_800X-i_bhh)m+0nzWBkZ=}<=?XJh~16F$h^gSz9Pn@qe#yhp4@tVyg(zEQt&fw=}bN3zlZ|Ar4AZu +;EVF!rHoUyW=njWhWqu{&`)c>}rA%#2&i8pA#oS+D!DV#Nv*4|0zPeKmNAyoAT%je8qR+&^<{OUw<}E +$pBA1!K49$#MUH^`(rbOXB57(?PSJ2xx@baS3l>+IuKN_fO~t^LLq6XRGXzGlc3NIRzWG(m4 +qokA=R7?#KVxh`UgoqJ?qhu>FJo$fu97h>B`>ouGb>|4Mt;kS-j{DG(o^{f&Y>BF8Cg+T{EdrF&mWvq +IAwB1UUXDJX3|)GiZL#Fe0o-XMs$4a)oq-7dhx5*MqHnBNtrsC}TevG!1HQ|+l*pMRo1*FV3$vVML2_WA?$hw7W_Pt{)-=pN`9=o?55qy;7hiURWkm4W +qv?STVBKKp1K2djdh3Wn(CVCqUvMx%tSpmMb93s=jZAbO7$9x^(xhRod +&(q9=%qhUacw695^0074QWw40a244@L!h24jMKgNec9U`jA8I662nm>Vn#mIf<>)xq__hT!(#p5TFCW +AIS0DcBr59y}HFg)R(r3v~}gg?ff!LVZJtq2y3XC@nNPG%=JLDhic`=7$!CDnr$w^`VB)_RyZtfly=U +P^c-?9P;twCFb|&(yEK9E33CxAFA$N6I0W-Cb1^DCZ#5=W_0aDvscZv$IX6S=(_Yng9SC0001RX>c!Jc4cm4Z*n +hWX>)XJX<{#TXk}$=E^vA6J^gpvHj=;VuVCxVBb7*OlIFVm{MNm55~uZTKK$$?-Cf6JC<(F|OC%pjSy +6WPf4}(vK!5}(*=_gs-Ys7nOB65w27|$TVX)_o?~lD{HcQgWeQ#CG$A7>#gT29?_bkgdMRIvndBL-x_ +xRzXZ^!V@@4fd)8gIO__*0UHQ0!$g6=^AEUX^*(mGDkB)m4^yXW6`3$A$1-WUF)*R|&j>52Em5XfLgb +WU{I<_;y(cu@q^Au+D_=ULHR?dVO{jR-Y>`PG{b;H?QBG9zT8e_RZ-TzJzjvd66x>D4MUTRUx9tOO|< +7Q~*DLp@?XaRHBF%cse@*fi0CVKcOTZi8ZUoJKuA*v_?`?w4 +U*F^~|3FR-q>n!pNGI?yo?eO3z-vEK{ACv9MFs$?&B(hHRYWf%9Oek7D4s> +)GqzlgXf|d^F_hhsI9EM;ofXS?k$e%e_x!`idzY509DmgBj*22H1_LA#SSkmKT0&^}CA|xxD2JG@UD2R!cpewi*3e^)38^{N#6j +^C#6+u;4tX>|7P1;5g?9ny5t$LJ<50^dMOn$5DxA0qP7tnz9A`(9_KtXBMc<-OAP?$O9hWS{Rpz8IYR +1qu^FH@^44s5yY%^H0VwtOA3>(`P@z?>3{Nu_y!v!>|zWWhw%H?8A&lzVRlMZvfKM<6eB6y@3*p1T2c +|82(z*JGpJy5zWTXn5vnWdl9V1ef(nJ8O#t|3Q24$-2>$crkLmLJ^Pk5T4~By=e!WS*| +1f)iZ|)BV0lk_SuZI80#q!PfAJz}xb?_nN55xNs!X&|;FI)&qdp1wId0>Y(E!`HLpH?M!a&hOIl*^ft04`2V#YIIWgAIkfCU!DK_q4F>L-mQj_Z6=uzwzTw)~{=y*nU=qrO1h$e&a +J;Rar!W2JS8Kax#m(Y~Ra_CFw4pS2KegAwa;!V7iFQ(t8Cm9&DvSHu)r`)zDbm!10nQih@!s=EkDIuO +aMF;f9VI;m8A71O!mvu4Qin=c>j9z^v=En+#Vu%7lRdx9&h8m +cZ^CeK6XsD)k5`s +zFI68f7qP^6d{aZKx3*vPn(4(SBpvxv_^p@rB*p?rOChe$GWSFEbi!PPyb+xx8v*I +(1$XH)=CJ6R=*8HptcYZ@L&-c%Je6H$7>$}M$(ql$FF1p591HM^a#gG5vJ +HMt+i=~nNBM^DCf?#Hn%kPA8* +5TXWb7$+J2G=8|sR*PB0oq-bk!7f91ydi}HwodD(e8cb0Nn*XQe*__dB(xO9?l*rcrdRZ1oNk)Gfs#Z +k>i~Bskcy`3SzyUbYQSDn64S7$jbKOs{%o~eZv6J|_0;+g!$*z+k#0nCYW2N`Ei93V*|JBtjH~HYpen +bP&9c2xPzwM+%kZ+uV6#c4u;%<>tC%@VQXKqrX<$-4d)}!a%BchyU>4alUU+Kwuvy2X3%kMBSmG9LQv +afs+#?j($6Z}BsD>*~Qb+f8#I+mW_()=@ml~4|Zd)NUEI01)!TBzzb~yMOJqMM#P#CH@WMFCDXKPLXqVs0Y6)<#tlwFQzxewYVJU*cYMR ++d8_-yi5X4cB#M&j%&n)U4yFpmogj~au_4FDG!_M{Hfm5` +N#GOqzCf^^U9l|Qx!w20PhQc~vfOXP(E@~Vyp6w#=&M3fmZIpnQb&)+!vM6utp&7!9yto8BZDV~kt(m +0Pww1JW?0e-H%{gQBAL^;NRs&7xBL#efNex*x*P2yrv=c&Hr&Bt8T8DVyYj%iCD+HQF@qw3u#de5 +ztnVi8hMI(tyXm#y|ursc_3ax#6hX$A}74Y~&UZ49cVB_YlBL9HnJ +g+Ih~@?~x#ltp1}kC%%BjaBw9!I!zs3fDJK*e-MKlkh#3=4_KGwsZeX2f3s$g;rCUbWi*6@|sQ@% +Zpq~>W8F6H-a$w(s40v#DzC&OPA?@DVQphjsB_g;a;b7r8B;24s91umEz1zS9QKsRwz!!no>!t!?V}S +6_ndvGb-@MB;p4u|W%s-j7>6is(8jU>A>nd`@dh9-A}o@o6SO_$FlbRU7yiUo7IhLyxZ!Y-tB5}NOJa&9#9Rdtdcxrl? +RU5?omgkg(QU#jjh4N|4=lvw#B?zBK2FC0Wg2`9-;;hpT37Wj-6Mad)lM=J75MicBIN_u@4|0c#kj88 +H4?U`tIGQZlP$l(cMm?qVK|O!GRSBfqa*cv%5DCz;-C}Z*zCJ(IYvkZLH6RsWmW*IT`K#Gqdm=AxtGlCfPr6%vI-oy1RSYWtJ4rF@Z100IF3H-R6CP`a4)%_W@`1KkiT%rQ%7s_wOUrO~s2F75Aj470b&;< +wx3gp)zu+n9GEhvI3-;j`60;UpUZRRM*OAlh8_OwDQ$N<%Da@cHAdAb91F`}5`JIY|AL1QD-@jPZLv= +I^#9J*+ct&ycmpzSrq^+NuWtpoUf=tgZRaf@602v9a5@ddR}^t59~N+)v9Yvzh#6IVCnDg3BQbT0sV3 +E5u781R_mFs?{Nx$iNpRXb|tPB>;TNcjaL8k=-Hdo=f?7(?pZ5DuZ>*IqG6SCQg%~fRgKuzERA<-5c$v`C$bquUtrB +Q-P>Jc)Fu9{Vb#bm!0@lfCml`F-EihVZ|i +SgB(ekfyFGMc*ceC`UzXCLX8GxwTaCkP$`#m9${s)z+j22Y<_WNL*#KHsS0xLC^^e$Wjb99*o1sX!Oj +2~mp`geX{yBZ7hB~dT2+O_u(Jysa1EDsVT#Jojw;WO#7||Cv2HEq#$8Z9ufXor&z3}63I5d5%=&Y3x5 +9&e<2X`4EAY8C>bWk=#1~HFeCyBK8kE7BqoQ0$p@bKwz$M4b;h;eJZKKHsyRk7OEqlQ1y(V?bW($y#F +owS*PY6E8q*%Af@!W+Q2)r$rz;a2N9@ZG3knYc~=fl&com^ErUu%r>*6^Ibdd4i3e-%))hIonX*;j2? +~-$~7Pb3NYa^ly9Ki=-g#U9IM@kzOTe?k#ng1@MTm3?ZmjBSpvnK|_JSr%nR-Uy(Ln;>U6d@={ec1M@ +Iw25L#r9gGdb(UWv#Ti~QgosmtLZosW==71G8nY+!|MV3{#WfkS9=15R`9WSoC>Z!WY2AH%0Tdc0)o- +AXt?VX96o~OeeBb>QsDnTu0PTXCqXE#&?HA2jTn3?x9-oH6^)smBnyiH9zF?5{e94!bkG&K~TMUx^XZd?I?6I{X_!#jVo`q=*SmL7ZMfWovHo6X>(=UPuDp?#RaayliBsI}jOt3LVi5HXD3=T~s+MHi +G;`l&X`t;Fs^HY)uWc0UfzC&pbCu=ZLfn8PkfjSC!!o`Rbyu)$*cC-PC}NK&sk}}=BC4odnysD7I)RS +U>J;f}iN_5DI@rq&dYh%@BAs7Z7IBE;^Zg +o)cYEP0V;tIMl;{W1ypv-I48WV=82y?e9p-i#zMJKzvaC!~LxZ-;iofd7L?`5eHjg$bJ`E3u{7~PIT>kN8z;3S*#Bxyp1oht#K`Rwn7?el=rFWPM=S``#Cp1wb7wbmI2zm9Nt +!qmz}tk7LSkITH^|K7nE>$0fffyCnOL9dSPz`^^^W5&@5?sV_ZE~sBWTuMCP^Xq6~tz{b +<-_iE8#11(;18O^dtd7uf#j9HE}EU*f2$gNn$&(Pi3b+BH?V+EO5cd~I6+q6o%#|NiwFy$YRywj3X<> +;v+!YQr!PddDDJA{_7INB9HF@8d^UJoQji`4Nf-99oM!Huk0f9V5O+QlwfZ&>H+QrSp$W#?`tu=TWo+ +Qo<~m#+9-!aOX6WKtlsC>QbGhMcG6b)1dS@LlV?z;zneGAR0?BFbc?HT8KPOryEsF)-vM8-eOx*5ceh ++fz10y0$T~2Ne~^-O)~hf@f_a@WjQzC7&rt9j8Fh0EP8K2s~?d-Mm>;*jBliYLhe5>PDAOG=SN3+=u+ +ncVq?*t-4XP2Er4kDYy!h=30F-e(r{o5S}20MK@UFTYoB7!_dhxhuzoZGwNvPFO&%XVW)c~$fs>64X= +92afGxhCpo(-o;bjsw-{77k1xj7nN})kA`Y +ei9yJnL1D@_$H(r266tk$Fqu;YrrmDqm-f(g7sCfdIw)#dz?+X8(0P8rW$ob-k>~Tz?d4b-vzlST8k({bec&N0=dl`$i +MA%m*pWN7;55H#|@PkHiYs-ku4UJczR8NbTTP{31c#ainu-FDZLr!+Yw8*lTAe$Aj5l}t?)!$DlS1@x +)C6(z07XJV)K;^ECWs`71{F(s)(e-%#`+jbXPZULY{2GI$;k=e4`>!q`l7capSYjifdj;Dg{Tlyq@9b +hAj~AAS$ndeO92k#ASEdLp({VKb~-n7V#>b!i;qZVNJr9RBwIywOY) +PmYyv!TDROM=F@2h!v{I_f#$Nh6*ogBEAIOI@devjt0JhUJ|dSs?!sK8yFXn4JQP*1O +iBuZBXYdeaV&g%7E<*vI*qm1$45PVqpi +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 +9?YgIS2(>fo2mv}_6IgX)laqY6uj>bO +n0%i5Lux~hu8GJ^V(t?RO4P^kiGvl@v#Ice*|vl9b<@?iPpjJ_^@|JSp{`;TwmzIpfI<@e^?e5gBnVn +46!zBR9D?8~~Y>SyDlUu8uTLZ{XDw`*NyYuo*8neC23)BynNhpHTa+SdC3)V96{6b*2o7K^MX77O@(F +~OZfPE^akP3FdZ)z7J$B6@AMZ!3O~Hx+f|+wuV5wlErRm$vt7Bd +yX?j;SVjp5kfUE0AZ4)oO>cT_w|Udrx;G3bcjeKC5eQtQEBD#z#;*|ojvn=<221pY;WPRnpeEmzRc#j +_(J-NGCYL8Ct0HR}L-Z#v%TIY-l{;JVj?Q>X_b@^S_IY`14rtuFEN|@E++N!f^qLGnTY(Cj%-rOl_0` +5yds~y4F^NsLsTztIOv+cFgAKtdD^SpGkAep9U~py{MuTjK%*_l)9X#LXdpjeA7t(ZlABbuOSnPIamR +40)tZDV7H5R~huzmpfoz2$23UVpd&zew~~0B?JB(L$#LS0Vi*BuwG~#ou#FzNDvDIZ +iLLs!2oZvyl4mmuk}B|{#3UOA)%W718_Ic^KgjM^|jrYK*y6!Q?KS`vu@hCDQvlIug{-;`_0oQXaDXA +B5O|OnrsbDeO%->)&Kyotp;JB;0zxCSi~FQfV_YpJbmVLW7%y0E1a7mhZA0X=AP#p-q>#QEYv5ngwZ$ +d7hEE}t@G9&`@Jd7Fh4%xFQO +MsDoU*V42m0#CiCpT!Y22DVKDXMb%w!A)wQzk +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 +PW9!UdU{58)zrP} +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 +iw>@07Xmq;rlB0W*u5&(jr@6aWAK2mpvB?M(8 +i-x28^002~J001fg003}la4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mb9r-PZ*FF3XD)Dg-97zx+cu +KF`>()C$s?6WbmF+aoLjfgv7Oe}B=)o1G<&vJp(w~=Op#iG^vCvkfBVf001_ZU+u3&Sht+#+BoY`5fc +c&Q+-IX_BNk<|IKA9vWicPU#wTn2wLaU+R(E-PxhR;wH((ntUT(0{1!u>1#Ue}DIGYzYVb0mxtW0NN5 +oc)toyMHAcZYiiAI1kkaa*u3ow2>652q)GZ+(9(3&Dy^f%F6*lFsAHGAD2>PUl&^ +l%S#g+FHC^WqE<<@<`}kS@kXF`kS~DYx6u?!pmS477M1Huflv5=R;^2Cir}<$nUn-7w4`CSj6HCTxeDQ7`Y37ZcfLvY5={gs0(>d&Abt>o9je73Sk*c*P +Nj6B5p?`FnzmMDwZrAPEaxa_brG&E%Tr0`|dtBccUgavLnozM3UGy?~XN@j07_aLy-s-F^JuK(1!B1^ +CH%QRXSL+tFLK8AoGdBa9xjn?NCR-1~sv@~AArX~Jd0$??h2e;w?dPTuT}4`4?WSp+}~h`!&z&IU0Ut +noxBNc{$U7KJIBa>kdd;*P=aVSagi_TqvqfFh=xrz~28=_Q{LCn(;Dg@RS41Or$Arjf_|8omRIAtG#* +XP0@nWQd@15)GtbPOvM{&CCacaUtLV_GLRetd|x&LZG*bre&PWdca&Zz_Zco?TaAEZg}nw+^g0ekQVV +v7N@?|cBmK)5b3kyz4edd{|H`oqI7<~iq6lkT`0YL@u%a|#BKNe{?_KbxY2^0pNGrY)}|B5&3`45l6_ +*K8IiEj0|B$LISNYV_r|~oE1+mm^oC6RO0p*0Kj=VFu)j$cbb=yJk +{^FA@B-FzvI82{&e(V^5&Prcl)petqDMrXnu){GK1Hu7fA}9iZbWbTRqpyB%1%B+(P*hXkJA~*XWeWXMpyV8gkf|QUUJ+m5^0l3kc(9k7rqyGL-uk2OkMSwNGQ-)e({@N26aNjL|OAv&x#loxF-^8Hbbn74#6H&lQEd2rMBw_E_WW4v&!TW= +8fNM2h`C?#FhP7vQMvh_U$!dz4JsKPmj3%(RaQ>iU0g +=O~vp#XTRWl_Tzu=Ep!745owgxjv)TH-{%2eDb{Y-+qh)AhOaU<13J9Kcc-hI0zjtxRR920%(4d^*^BpeZf8`nk8vC_JaqokiYjACisnd9?UpIJ`Ck7DMNSAUtO<=ZQMN9wL_8{i{Dufb14(A030u(54sXiTEK2L6DGGX_3`<`;kqjkRW*2t>`=m@z0hC +t?5F@7gxNS4djO50+vunpum4uZFAFKeRp;@c;m|pi=x!sHN3@`_Jd8PHuAW(H~*~wOop1h@SX7EE64i(L`!HuWD~<4ErQ=R99` +qBMDGLBrDUJZ=!CS`X=6LOanjMWHh}sVjvbK_*-tU5)v4t@O#qLKv|EX9vn<0ZAG344&70rnPE8(#p9LtC?fO^!9S?nGk@9&=O_6Df9d;i-r$wg1zNh +G4!ju3=OBh@ +e0}e7g1{ugZ357J6I6$9a@Uld^6>VA_r7UGjQK0V(25iVueq+G1t(QJK;g?|Kff>a440@8Ffr%p8dZN +t7;F^e+aT21z3-f{=Lj{1$vn-jZ<)BCwEs7Y(u_oHnnB=z&hrH*Xg`(tf(K*6Ea+7J|xIiJ +T(Z8r!uXx<55}%Pzx!CE6624r91?M6PSG-4&qIr!%0ItF?Km11?nRlOF%6fJ}s~rYH_W;hit?4XYuW|#>9HlXP=)u@yLGzbPJv +X&wR!QsJyRiF;*;B5|C2Wz6V`FotWV!g<$UqMU1gWTkxsvJWI(ue1xR5QYFoK#VMG5?YNoBn|wrJ(MX +-x^9L5kxT7(7XF~(y=KP;H!glV7GyrKWJeGT3_;e?>jgecIOP@swh(AwpK)j?X-eZ1mP3=0{B$}N=gu +*jGU0ZJ&BjyY+6r`nq>~ +EWfMeyIG)+20`Liod@iD_QEhJfUC7VEMtmwOSd~v5qm2(wA7(-C5;2Y!yLF>n!hMNOj&EcZSvbvI^ab +^sOnE@N{2SF&M}p(V7ycD^wh}*>v8jf0!E_MV%4V5r#cF52d;(sqeF|!;|bav +6m%T!ADxLw|SJv6XkTu3#H9J0;kVUkd$L{cwxMl<2QRWPFh7i;(6)1uRk#ho)B8(R7Wd3u1Ex=wo#yP +Un+zHpA@2puu ++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

    `5CdJcN}o +7p+4PlTw#;b1Z?8?D4U*Kau|q*3Rf^y`vpZr9aTox0(}zGbmOebp6ZAa8uOKa*e*=5HMA`fw_>?;WiQ +XIAN-ahJ<%l$wszbt;SAK=HDo?y^)4-#it*iQgE +@!WNb~L{XuznsFKa}kAhPyNE`=Lqz&jtNCUWklFxFyp-hhZq +^`tA`zCzm)j)X2^~iN3HH|Y+1D&7PZ*38YKh7aqdXCAaXo?Yn<*ZGK +tVIawbS}nN#&f%%A%@nuPH +7g+j8<%-&Z=#6uxJ9OfpTpi`VcS*qH^ +zEV^gQ_;j|sC9_{s+92-|RimfF-TU-pK~npwJNSsm^mRPIeD5m3)zjl>u{B#2bRIi>Yj5Bn56O2B$Z127e~wqr5h1{{rSho&NA4*?qrfMdRjcA%!xB14~|?1!=|jpaSbeo +d8+Da)#X0tTqYyJ(&o@27FQJ&LKtG`TGDJW95BRj8ls&>#FCP)h>@6aWAK2mpvB?M!&4HD_!P007%L0 +018V003}la4%nWWo~3|axY|Qb98KJVlQoBZfRy^b963ndCePXbK5rdyM6@{Z-%5RF^w~`yQ9X*WF2Sg +X?%?B9y_+nP$VR=rU;cFEo-Jfe&2flNbr!O#BHX^OiU5L!@Dm)J8ZN&Vv&fGY&K?PF&+II-wbvJJM2I +#*LgCV7tB5I*xt7<_D1mEOLn#{<|1PkVp^=ioU`|$%;K;}MCQY)3(nbxql3efi$lM-FIbqx?BMj|^8D +yOKVF`mU*JoaH+cH=>EIv@rDQo@=3Mfu0328`=PXTR!NinJlax!AWGrMcyvmbFsdgD0{$3_`VG3(lA! +rarQt9IgTs>qk71rOwdMOs1EpstR`9k`%Z?ag59LBRnSVVL4H5IcNpkTfVX`XU!p5$5%2Gd+Dn9ua9c +d%WWOb+iOzC`Twa3mJXurQORGUmW!t_KlWGZcyJj^{-Hv*&}sAPB-V4Fa~$uAJjAOQu{F&dp$e$nhLr +Yb^a4FFw#aHwdzD!GpjX0Q*CB&88wv#frylvR2f~Wf%b`zF~)_9|pm}>4y(*&n^ywv$vO*hvz2%H0Oj +caL;wF;j`Mk&YU5>KK5|I@$uow<>9;F!_moMYx<7A`^J5r^8Rs!TL17CfQ`E|IZ9xM00)-MaXex4}qI>?oNdI2?d( +8KJ*gcU1$^e^iHpxYaIu2@Pt$gYKlZgz}JC>-d!P);Vzdt<*emXqAI66g+fhPDMHwh9Cl58rj#(N;8h +!on$%@vd1cvN`f0fP@H-rJUHPs$`MkZ9PE-!D^<8xx@MwJi982!O8z5Q+>USmAP+u5s>Nm?xr?473L( +WD<#5%|Y>22m@9EFpz>lU_cKspRxe3PKqFKB~PbdE}`W6CnDn-Su@`}AHn1#1nfEB1H6(&m_-1$nlN6 +5dAJ}rV|ED?;1dWa2L_0Ijd&>vIRkIObH8^RM8>C;`(S@Q+JqlYB>r{H_e|sqdO`C*WH1265Upa@^Sm +Y~a4g^iP+S$@Z*ack%jQHdIwg{QhFoY4ni0th*Ha|#sQ=knIZ2a&Lx5?D^C>I#gN< +i!&p%Z>6ZrF%@{Ah6c_|aGnutKC|QKN@^K;xISPEFAp_j8w=4@j#rffXhxG97=v+N~IQe0)k +vrDo)lD@k7oxDaTrV%e=oaVVjC%f3EO9yx`tV%8FXg-%043*HT%)p@!^Uc?=BKqg0CK&?fMN})5*i+8 +ql`2O!BpDu_D&=*=smh7#rO#LC)sGkek;)tWSp%M(1ch +FLBL^l%hsZN(t$)vX={9P4K`k9;sRof;$Hz%1N_>VlT3}=T^#qi)Z)j;Sxdn+5v<<4yE}y5sZk{bo3u +F-h0&{rc0}1*q*aC##<6x%3An=z{^@NDCPfxtY-ORHaMwp680Djk`QRGZ#)p>>AR_Q^5Eya}(I>g90H +R*^+Z9laG$LFSP+rJY0{+SJKrNDSW?Pji+tGCPxF8={(Q$(`yUDKrh+kVwlMiyO8I!hRpKS6^S`36t? +(;c_CP+*H6IAdU{8CN`h*zAcNR{BkxY3SPn4yKs{r6!iH^s4Y$~5%CI>D^tl*qvwH?- +HIwsXH7s!#AA_P?rr^L3kNP_x)OF5E37bN|$9i#1hj&wJZ9b8?7X!g7)#FemTShF +6Rqz$NN_6SzRYoA)y>mjT5*UO``VZaxTg=Mt4MoB!~p+i{1dlRLzz^p~%pI*L5Xea{Tt>=>6fvrJrO# +3gI>GhJ5eQ1lZJttWaV< +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 +@&ydlea^n4-wOfH6x&^}7^ER`f%4xk~E~Q?9 +=?*qFKEb|dubgkmk;$|brcWv6F$M!~(If_rxFE7ka&`_2`_0kUM{mD7f;B#>N;a?&0voU`N&^!dcbqM +eYDk9x$7Wf9$iJ8~Nq<6(n0v^%b;#L|{t@i7Bf09F!`KF#YgihPb1_(<^*x$34P%J1Fiz2^DXTVGW?- +d*4F~v2FN+x1q=rvofP~KxL}6_+a;Xr$_`;iwO%w0+xMqv$mL&vWV72AGf^p6+R#yoeMA$9|V{IqOVG +Uq{Pw|u{LUtf&7#RY|-A_ewcS9t1H%C%S0fFS?Q<0o(h~#8rB#rY=Ao=;HBKi4-NPhlkBqy6Kw}A4Ce +Oou&!)g#vjJ--+V5fME?9=eFp%s823f+%HUPa#{WUTEnpp2(@Imx@i~0H%_lIi5{g +*|_-Sdbk9tpn!vi=ID@GIQaoL}^!-?8XAyJd7B&#o&l5%I=iXNb;by19UVp|5Bi0W;!B2s4HQ{-UmKS +Q!Z;SDg13z`S6}-Zar&(O%Q-NLy9&#)7bm+ywhJyRC}cdNTnqA6TP+A~+mvUbHPtC(HS+F#4bv$nqRL +!!;;_EW>*gzA`WfdQqd2-N{uTsl}NWTc|%L=ARS$Ei8my10vb1TFvt^ZUI?nmX-HWvt%<6D>JcMOkvs +MzFjXSg}mv8q1cNi7&vVDb%6XoetwNp|*`9l6_6$c2f0J7Wa=>>J-$;kep6R^d@2;x_OUZ$=XL)n@+l ++g3_Ox%ue4cW5&0f&o6EC!rXD{FeGu~@BzAK2goeOu+p6eNkXWAXK7x3oBxo{ArtC~iz9Y(xOC7niTj +-HLZ4mVP~6pjX>s5#x#wxG%S)+SGU<@o3wo*S)@CDj#^z)_s#ydx +dZM3AlHGE<$rj|9GPhmWX{JWX(~Em^FvDGiZWQ5*+Vg#8dgaL5VlAC;f^B^S@c;tr<>8Bi)2Zoi_1s> +*P?FQ|;FEMXB%v+F6T&0_O$sL|@pqLKV4&QSp+XoR+j!V +-6Nz^+1=H2V5NiuVEbRJG$Pv1nnqb9i#XFI}q(96rH^uM +S^NPYzx=F2MNgF9)MPXQRLGjD9md|4e)OFiL=K`{8g`ekXh|l*YgiJrNWt2^@Um!Fh}mliludg>L7CXUc7lCMTE+ib}%pBKuDRoMMaCFB+8Wfv8UNPtmUk(Lf>BlQY& +(+ahna+J-N*IBt*uo|=z=oOD+1J3L^!$1oR%fJAFn!(XI13b9$7GVejs9o_W9!JqZo)|W|83Fj}p>KJe|rzYBPs?fnzvpLHeCKg)-1S#V{#sJasplX}I8DEWZa%{4EFpf}XpJiN|1> +>~M%C-Pu&9!mDjn+Xs%|QLn>Z=t75H(Q(t66FX;3#?qTL1O4A$7-JNyRp!MdnPl#NT0}&!VdWw156?G +%s$L*j{{K)fF`G8NW1;02bMD35)v-nL2~*00P12E?e=K9MMRz1wEvdmNXXn{OQ}5Z=<}L(FAE4Vi*bm +K{5*0Cpvhu)x1Tce@lCO)1oZeG))>dzZ?Zx3m0LoSx{(da;mrw*@xMD)xgpio)DbWI2GP*P_;kWZG#>a3Ku1hn>m(Uy77D({o( +2<`3vuS#HRmX;tg8*PgE3Z0(OmqwU|GdgLR6vO-@LBiugBCe0m+75pdU+9xKR&t5IptpPC;!8lCYkEM +>s;$gbQG!e-r5Mqh^9>1Q^-MgqE{;A2vjcR2&bSZXkGoko@FM?Bk)W?`k#<~z`4IyL#Qsp63F_v0FhLOZhR@oz?&463H`K}nhsFM9_U7UH$w;+E*k5gaMlzCHZGy{5|i460kv9{1C7ZW<6hzKfkyIONa6)yK7d`bbxpi)6cI5bPNZ&)`dAl)Bw +pZq6m7sJp0)7e5+Jq +OmQ^?HMzwJSg^p})t?5|phZ9)d|s#8h!4y!p8YN~v#zl{j1)8*l%R;v^Ej0whY9CW1)_v_G^CbJ26vB +%ph8d5(uk5X4=hZr`zr+zPZPC}yR#a(MXNDyjWjF8E&afh*>=NCH4N#WEF_xS`|eJId;?wy(_Ws1%ru +MbzCRM3l5dNJiNRKSE*|&@8hCq|ZZ$p%XADt12SGkV~UWoUL6W!q}23e)JzdjeQyCD0pheDa$Fa$5DG +U=4)+f)E{*u7Y25nslVO9@MpaU>rsvsbu6RPTod-PKZC(-*oRPkkh9?|grJ +qB>Re~-goSGo2LLZf?f%+0F`wSBN1YZ~+YdlDDW?HszHzTGs%Rmt!TffldE3e*%hX(-={KE{M9!0COW +BSQz+M7%WT_BBS6QsQ4;VI%?w$l0~+?M1GkT(+#`iVKW`hu*zdW|)rxmxCb&6C0cBpkJa{i6^UpRxp^ +&HYv5V>);~<888GekjrKwF$BsMBAX3wn?FQKlF|Tk=F=3u8fJT4mas&&ZxI$B4d#Tv4C!*eafJy*sNw +{v(HNT~0eQp8B)I(S=Dg3gCy+2v1+^R8txX8d>D|!8PVhpByTA(1XRm_~7y|PK>WVb>l5{4Q-Np~GEX +@feN!Y`qd_Q$Jlb22)U{xrlE1$8 +gBUfQ1H%ehD<_kFn7-Xf?4A)51f~|%0dM%nrVsREPqwiiOk6U?%??7@aRitcp36w@RD?!*oT+8y3m>6 +iE*dlX=RGQUVMT!IeLvQd)>pT0bZ}N*$tP#bTP^gGdxJhE7PU!;IJHVAXZ9EQxfp3PHrWS{Wcz)?SvF +X`6I{;vY-SCC!Ou^=SlpOf==+JRLq?wVoqM&9WS$<2 +nOqKXfHaQMtzG&dGx!!_%mEXXF<0T_so^7Nm;0oOs(0NJF&O)9AmAYhn|e2@CH43gyMp@_7a{*5VN=> +?JqR-}n1_|!qtZ*oZC#SgB)MS-iCSk5u>mP<>(a#&lZtGEr>mvJrjLHp&Wo~`bzg;i!^>XAoYsl)0?t +bF3gMsjTXR>x;j;l>rs9=d4uQkWDD4Z=w-AKKfa%N*Ts1k*Vc-bw!L6MyR5#N&@Jw0aH?XW7=z!5|{^KAEg5L|j_ztyoQJ^qT#*X6{GmOLm!1;V=seH&zXjpMajhj$Epj0PSJm=zG7D91Xm_ +Qg3%wJN0jO0t~V4o0z#uR45+oD7H?A!*$Z$o0)!mH~;IXBT$9%e?)717jTd@D`EDkB6V47%tO%KP`V_ +fI8;&`EKAiX|yF4f&yDj60na|Wae&E=jG_(xU46Lehh=w#7{IO1tD}5z +I!FeG@2;V&6A9|U3wPDHDa@RfiuC8E)H +Er^Y#gb~7_+gGdxNm|aijB0MEs?@l(A>qx{05UGz{b;In15#%p_R}#(Qgk>V(kfcy<}u?zPd`LRRe;u +U+O;g6V3Js)8?829ei#t_w%03R!L&GY`s*$#>h{7$s~}{J+;~X=Es9f1cY)XCS!+rF<04WF)tGjnUdX +M)1tD0%%n+1|$5C>Om-`@{LJ6I*k1nNx7tYcN<$03A!7QZY?uXaijCrFA#!18s~|(5je%{1Su~EB_QJ +yFHtH`&Z)m2GwS#R3QC3g+NoiFN>HeelXm8(KyRVt=a^ +DvnC7tjgKYx}U7#tAYv=x66^oH=s&Jo;?kB9lzvf1^`m#1l%Rp&WH2H(eh;17)*DmxG~8(jBIg+aT7A +{NN9Xjj;ldaX=A$?9^Hkm&C+jp)1sTqM4P{!|zNw@H|tu?;YR`rwzXi?SR9twiUF&dT=SQ@iH(?8Fc= +;r%gov`#q&+@J*GHW|O94S$3F@IVPv@Ix~q{8rf@arl$ul4^9s#HSXx(4W>cH%X>We##r+?-umvV>GX +9PY$x}GXz7;l^|IjT-&50(W#z!ZtAZ*!o8`2@cxb3TL-Ic-Z;!b2Qr)Sxttx*&o-isDB_0f6y`sB1Tc +XusXXp_e>GT6Q#q1jPdYNO|6WS`UR3mP9Id!?mYBKbTqKhB$3N{3Cp*vo>!ZZb +ot~^@!ry*5J(?aLoW4acan5TrN6FJ>fZS?U{N}I@j$UHpAJVU#zXP`qez)OdO7`G4#G_^b$=u*mPkOct0R%E6UBi&WZ6ZLG*cpJi5NzyVRnQeS;mGS^ULYGDIk6H;s= +d3FIA3dxT+jM)M7@M`s-p<%ya!`Xf!b-yVcF4>OqXHADhYiJ)lH=3{b|)+oG;YIz{9(PJTE#J@`KT_T +cp)t+cbqfr=hU*Zvv8qMNHO8N}Q&Lz4qKIL8MY?qYD2vqeH(1f!*CGp~RaDJ@tkTSajyONn!bRBWGY| +MB^yBGWmP9-0cndGo~4ZBd?onP2=C|3hvZtnAMc%cs0HxzmeU)<}`J5Q|<2ATs%L7==PVyvc~xRwI!h +xUQaM7edhaM +tHNLI$TWc5UESJWVqYWR2ZR~nvBuJQbjx3SQ=(W8?NROZeATB7cKtXmM%zi14T7tI)@ +_FRlY@%8*g#_VHKPM7wi34*KB-?0nOwa%^f>{e-$$uX&W)LByaSoslxeNhP7 +IINvXZmDDvLDk=oA}U#5fW-zpn3X@O5lyZo);v-`f&=euK*E4SjcszbDs{`2_GpfOwJZTkI +cK*i$NV(0cV`g)@3Kmgj(|6JHFMiV@;xWMtwue#cYYmpXLs&ENr=cs`H67_*sFQYIN{9tQ2eg(vy>wT +o<{SZjjW#w`wu7qjhm>qJs435S$IZPVbJ*X-yldW@&A($-ecYkv(RbSuMp^RwT9k3eY=Cx%BOW@`&rh +A=Que^_fC-N79z{V9M7E>Zp316r6U{QM#p&j|}txl!?Y*mUF +1q^QWT~x;Tq}S7RHorOd1QGtY!szE!W!5P&TB69S>JWw~ +LAv__A?3?Kd{J=F4cT|Ni@*J&B%63z?cTCL`4;*uogHP?s9+}Z|RvA>)<-bFV`rwoV{E-HO$V=eqrCp +jrPtsuk7R50?x~_qrz_M1VQ;o^7i*5&$;!nOxpL&{q?cc_PJNM +}w=+j$T7g)}8=1L?4&Gb8OBl@&OU)zxm-ob4EYxr_LqAw*=LbJMG){ZV3tsJ0>z-=kr7)x97odnp(Y3 +@#-N4%1W%=j?TaDz(j!f1C< +Cuc9HYWyo0a6lPXxx7N}hgLhD_m)|mEjYq^(E+)-5PVYsE(M&kBlHY|!eSxQAq`*;Tw^qbY}?}Z*Th9 +PVr5|BVZfW2D5wcw`~naT>lt4#nRUaO)~rP#p_I1(qGR&Lm)sbxqxc$pXf-z5r$n_)_M;;l1xfaeZT<@cN?;UO$vb?&lwgwNDEO^U+I7>S2f^;cg> +H5@xkj3)M!;6{dvj^^%Wj8EKf?V;+W>OqA;PbJas$oUjLv*T&-K%!W;qr^&oHS%?ed{WwlZei2}>}z# +?n~#ZkL7nf?>bULeroCp-?YDoF}{=$+w{T+B>p&C!oTr>x6Tk?}g=)@QV+$1afwZ|KMdsNWDiy +Gcbv$lu9Nk9Bxvwn1*yY__T~U;<2n`Fu#pay +_zKCuY*a?B2C%IQ%A&qri^EcZlXq&T+bkZ!u~ocDr02@ivaOL)tB3pu|w(WmhYOU_;WkZSra31LiYBT +!zquV?u7T$DgbHq@ceU*>jbTbb)UOplh_%^Z94eqKlVc!mzCxA1TtZ6{ +n+hHv-;nz4DJQVF1vPZ^_Z4@)6W5wo++~rM^veagqGI}&)nq`Sq;ktDpF-Ed#?tSpi{xLrh7Z7bY8lW +8%Xg7{mvcoA^-b9Y`@&RTDb-wXl@nt+K$y*Kho!w}Oesjm4@#95*zsgdksPZ1-e-_71=?Lm?eR_b#(v +CtL^X5*E$0LN2Ksu%sDiq8X3w`Kr=!FaoY`I&3_$+V2A2ElCRdUs6BOrCEn{%JM77fpSGQV^u`h4_>U +^!WcljRe=BYFJ3m6fX#C++8f4gY%j<-rRK`+oP1e;qxFmeaClz7L0t%af)MYLrc`_0N*qfxJIT8sEPW?F? +_E5wY-V^H%>p96|*99xQT!msb@94Il)@;s>@;}lm$c-)z4LAGZ<5;i13;Qi>y)8+{(T=bw9e0jUZoZr +mqxA8zPF_BSxF%3o;ir4)i5$oeRtbqXT2FnxwRw$iGt+41SGWECCC@Eu|@B9O1*6Ggol7GHCfvtL|a$ +(=|S(3HHdapOi0I+3IrvboaaTz)$h1{%2$U+Mgw;EZ@OLn(B4Q!tA~aiJm~`BBqj+kW>BeD4 +QL$lut?eO1cuTHKp(42f^JaR&CPvPz3N@RaVRj>>@v|^cyjEXs2D6NqckfloyOCoLJxM=yuFo&556}}@WNzso@+6*q0KDh-@=JmAwKimV^V@5TDPb4?NHO3TLz^5aQ!#fiEwFziO}nR@UbcWM0+=po3S){Y2Ch2s^O4vF#90V${z397; +IISBqtm8%bxN@2qN;X3eZ9h+T&utk4C&Kj|}4al=tm%f4?ohq0z?9`i#M#z!n<0!vR`l8ybN@ebjxcK +f3$7OcOy9D8srheAUrkxpLG&WLlnNng6 +Krx(v+Ty@Y|*bXu1UfD$@(t0No*%G%cb$SC{dkAc7_7jCX8LuHtL>Ng1s#cdCHZ9XK*1Z#$mi%RdRJu1>9{bA@(9yDC=4X_Ws@LHy^Iw#OgsYo~P{f#}A)B +y?gcL^T$uu_z>tuo2uBeB-tF)p%O{LS&Ox@ce1coS+U*1%8&L#%d_w+1ElAQ0sK-1A^M2tZ7p~wY;-xD%{~Sje{+K +K!nbDR9&WQ8S2_AL55OtA&fHF~r~RFXKQI4RQspi_t>yO(F9rv|Tiv;TX}RGIP41ca!PV391iZ^(dG# +@W9-rv70K20y|n0$U3PN&xA37m8~7++2PrRgfi~1p6t|gCCC!Letk}?yRwR>oqn5{83COM-_^N|IcQ&enPf7c@ca~!vm>~9!XVRoTuyD +5HRmvd5SDDze`9))YJrs@9SQxz6GVXv`|0$qS_|q|!h?Je3Fy+f0L&_YcmalsaVGM{lb*2%0HOoqD +74ID=xuK@X^0kj#)pvLQeYm>=FbN&>h!Hbs(SR6-x$lP69T$RO0n7@99`>Z36Un +S(P6MKCTg37LdETiwaxfYad$?{(;)uw2|5flcXwKxRtr2g;!dJ1<741p2els{Or%jojSPkqPEtd+yt; +Sn*6}l3zYu_v%(pi;hCv(@7Ft-fd@kOhHPtwsHgW_GllGTFYr1m%P!a+-BOnJ=wt;u +9FFw(9M^NDo=3((0!mM_+_5vx4g~4EE&;;IJlwv64i;OA +;8FP<+VQLfE#w_sF4yL@5&l*NyT#y*bpXN!1QWHeq0gfC`Wiv2L)9Agn{a80*WV)p*7LwP6v##(%h+) +5->m7*;P2|&*7@{7QBn9HSgp>pemD7+g28AIlqsv+2Sii#c;ll5Uvr`9&Kk%zXdyTU&|ITu +^L2WH(xA5@bO27!iz-``>;6|3G%23D{RIVr1#92u0`yaccrY7mFDFzlr-A?!wD-Q{RvJ2S-C9SBAeF6 +ia-9p|s!81^9N8;mxG)ru37A!bgXwvtl*V<2c(t_K@kx)>o)ua_0O~dRJ7U1NLs2;d%M&DrdNu$)qDxhz1qfSM%4P5tmI|35n%?BJsvtpJ7G-of?T{U%fF@&!JFh(@W8WG53r4%3cPz9#>y0M +}3L=)x-c{^EyI;D|2Mt974O8I{))k4rNF1W;FKq*opoQx0wy1Q+#{ZXHtJ>ch9FzvZV1*6y;Bo`m&ak +)rk%I{$q!IBBOMiU2IwDAngU|n!WeY)vw`U+}=UjAo{7sgGt?O`2dlq7)E!U1loo!dc==gXAbGmb>si +A9Zo`%5H>|td9xvtoA_FD#5k)dn^jsgGucw}iI>U^RAqk(YF2+P9477#AtHMg~o8e)Y#76(`iA_LS%= +J$7S{EpWIjXez!ACt(*v<>Psguv0lIq8Qd@u1J@RE!h2Y-*zhQ42HgWoRO_`2&uNQ_~R1Nc<)EJp^4R +0H6mP7A;rJm%b&5Q0D$r2QXH!rPqtGNEZ5zhP`;c#NG*=0)TQil{^h0a5PmY5b-)4E5-Ux)EKmHXHZq +g6VR*SUC5=s^y~@}bc)2@A@Q54Dtd~F6HB{EZP2RUhFtm#DNe=eu#G06&uJD!sM! +`iVfH?`_eFL4G`S}* +4aR(a7;U3E}oyXE<{MC`VblK#t|&#q!B8_=!V5CDCm)cXBM?H;JxEh{D(jzR8hVI4+`pPz^p_q8H@4By%*ozeRSA$V|R-bIC@pGPA +%)iG#mcgSAEf1E*EuZnLXPqctcuGqz2yANqe3FtZ-bqr^|co=5E#W_rJ1Q*f8Oa=*b(R1Wdfw@}w-(^cFlqGfJ~p6d`ncRbDi4Y6p?dcW-kzY@?N#@UL +?FPOpKa`O#EHQyg9W`#tl<5^FzR{|f)`IL7Gi{;$J*?$w;*U@A`ccT)`;%C+miRV!(m-%>fM>AuYS7w +@(vmIeh9#!j&;5{iYEWjOBS5YmcEz>T?1}2Smzv!sJk5jPfP +tE82X~C+Aet%3{(9qXq@xSQyGtQkpV@eEJLWe9~4kw +^=(wv(-F_RI5>qBdEWZ}-%%@=#LgJF(~dp|7tHJNR>t-9U4^DzW(mcf!dKkDG$6~%2$AIjCtb~F9)Pj +m2VzT+eOYiYcm>>`y;{xH`pQPQ0BHstP8hBKqnMdrL)5CUJfUdQ$*t$i9}cCaVy0uwihMc)B(|3iyby +atgPM&SPdP)h>@6aWAK2mpvB?Mw}i`T?&K007BA0015U003}la4%nWWo~3|axY|Qb98KJVlQ)Ja%pgM +b1rastvhRz+cuKl^(zo*r%1&T<;NzMn~I#BIOAGfIkw9)&U(-GsVEYX=%Gk10ggtltNZQO-2g~{q%@O +kXqPRLK%>#`ZZt=1`t6iOd7NaMb5_aq^ap%07!5}3MP3}rWV4mbe=%lHA3u3Eg@3+dza?3CU{~RnqzG +Wxt0dx?;4zaqlUvT-9^^L9*j2uk`>^EfWnN`*C=+-FKX}PPSTB=hvZ`bbcbk&)9nU1fy5gL@TD-V?eR +UbgJITTjXEe-&Qh7%?lrAy(xGZ!uBU@ +!vW|Wz5&>>JWP-}w;XN(kL_f@x|f>5qe_OWluuZaEpK^tJ01*h=Ro1PAwd8`U(qvvxy-^HUoK(P@|Vk +(7w=zPFMqvwy?A+fbqy0d&l~*s)7>s*u(kkZ&4*8d$3tfJJ0HHkemVVN2$Tb+glV4f`S8HS@Tcd4A44 +JdZj~Mw%+JJpSe4nih_-weis>$i%3OdjOo6oLq1XktPljw4X33fh`J27i^8u?tEn=WXA`cEa_-8m^MV +SMkMP6Q%(KbQ0R3%{Z;fL?xCGK)QJQMI!9t!xmPqJrEhqLDcfd0*N$`s`FfrK?IiZqFobPAwoiA$FJU +sY0)P>O&}r-&EGi;#qOIuwx#-Et6XifejbV<4fWwAo7ae@|30c?|c}FMRuFt@N&qi +qQT3>yQ}NvtHtZf<-1FesgjdA0aE_T`=8M_!M6oL-v9LR@$^4~&)@nV*(doq_;& +o$U%c_)>czXo+w0}^<*#pFU0f3Yz;JZLLIIveq}d$gce&h!pa@IvoK&V!;0dZdJ&QTaK}Ah(xxdTf3Y +BMFWzqP&RT}t^CsSry>H0ke`C$u>a|Q +KLucDkUbNy5EFaSc+j8<+XWakX}vQ;JAw1ge4??i2@z>3`C~R>ufdqWP9-lvlt7YMDA;2f%kLsyNOnp +8p^m~Ee$HS{o`Ja$Re`($$uKhee9oQ*-#eQW66|mp>_Hh2wKMT4^Vr!L<1KWa49pCE2aGGD@c@nDU_f +HSvwu~&KKqNi*13YV9H3T1l(YxV*Gx)?kX9P}d19hvJf%BtKz`HeA-&<=wiUhw4cLfZZRi +d1&l57S;*l-pnrP4`JgkU4+%@-oc&;pQTU?{>EArBn@51gL^rsX~X-1gfXT%UOZ8*lIjf}_MDG~aVp@ +y4zg!?OvqC<;ul!6^MZ&b)@s_GF9|vRvBF98`ww<&}V0i+g8+q2~bcV16691_chr_q>e|uKdRr +Hmf#IX@b^a>*-(+rC`6=6)EYjAW)^BufBi_)N2ffieVQ_4TPX9f;f(W=tLzCLFANv3r3NN3R>!CI0{U +Djesb4l&rOb6oIpXnzNJ~%*Yt#vSA!2IHK2cPJ1bLV +^%_?yD%xS1StQ+?OM^kjh@59T6}XqHg4`;1YckXR8ERn6bBSt`;AH)-C~I8Z>8qE&_C%Qr9a+3ud*Ex^37C8WsuFa>9og|0tPQfmk1IXNw1NgP-T{SZTQ-`i9P?41}rrj;%9$p +0U|&FwAr^L!k28?$Ol=dh1#L6?j22!rbe%!20va2EGgRRi5?=>qo;$(OU9-lQJjr~uawpobEtTFbI#e +_eAn`lLEE2WHr#DFi2V#J&NYf61TV~Z5CUgA)u|&DUXcf>vAFHhy1Q@or6_AiBTjtF6F-e7p5?_zLp{ +RF!ayciuG8g&Oyx^J56pUilMR%}8$aMi+3Sg^;pEE@Rfo-BJY!r_^BF@s+iVE4CgTir0w!BQI~l5{n4rHvX$lPSE9MoX09b +d6i_<9ZDNGBoTDr=zIW$ZqR+XrWZj9{wTO25U8GSOCV7x55A|Zgr~ScOL-^x*K*`F-%>YJO7lH9@NvM +i*k}c952NnBsA0t3WAIf%+R8B&~|(&iCRN6OUk}-@3sX2!(l)RvsksCphlF(pqcJu*N)sK|@IPaW#((?^~A*|MGYU|NL!u5+2r68=3B@$JF6u% +aqn7W^3X33WH=FJGS!}U7ToZfpN8c)d-qqhj*=!twi0xr!at?jlcqm3N)0efP2tzwt^c-O|X1XV)?>i +j?R$ldU^ofU&WltoA~Y0fQ_14@Ak(oTwVS4?+GP4P@QVFE-IH?`=eR)(zSe?_BkT*}p +@{0JDd8_W+oHn^xecWq&0&ZbbAUkTP*A0g6oP(sSfRRF*!O6-XJcyBYZqmnslW}4cM5bD;aXKDc}5`D +B?L9X6s~RB`JE6UN)uI$@TMQmU(&?dO2xP$sEOe2MOXl5~AWba!_L`^j$-j$v`b`fW&{(MfIXs+x7G1sn{i(ljBV=|T +iXXGqSK4FFFTBzV0Q2iC!&SGgl{&AN@`VeQp|KwE1>uv1Aexd;L1kwIM!c%LQs{udfW^?>{NT!v_zeh +bq|&FDH7&nBXOR*p@ci`$%Xa#&` +I@PILrwV7_-y*5c6X!HDP^sI!p@@CqS)-nGqS07V18=tVue1S@!)uiBYZQ +mcf0laXEfg;9i3Nd;^{RJjF_;R6Pi{l?0!*49C`$h+CmJpsXm4851F8_6{jO`fLc)6!*O2|9My^c^l$Y4SMX0JsDBWQs%8r?cK%8!#FAYFS(u;ELbUFMhV{lonfCCT0OuG*k@RotUFIMy{*%nK-Dni0}`%!&yM}jm6@882&)gBmh2iUS +EFWk7WC7nt-Mz^Nl_rL2_*hNnNsJ4M~x_6c>IxMRaavF9BDPQHw_IBu%E)IAJQ!Uqh9WF>xkS0Q2`#Y +WpU##n#c^>FWkUPH||;y*pWi5omFE}-RRM=Y8ZG%bjD88K+`H$F7Z8Z@_ts-o3(T=Lm3DOx83iHt{?u7aJ<6&b5p +Ufrr$N4x<#h5JOChnr%~il1RD{ZqODaRo*_yh4@W$`hbzHw0{II~H?cC4AIWix6pCH!X74o3GyDz +lY2U)l;#3LH0L!R9Zgp(TP{PBeK3K7wzB}jPfLK)#Pwe#&jKu`TXDLZB1^&zbEwh^TQr9qARdkrjl%(` +<}5VXrvTrw0)UAS0SU`*ioTsnaEzLcXoGF`v0J1#sVnsAZ-wr_t9`xZI(gJ1737w +HXh`}Fl|pL5w&6_}RmIx<;VpPTEE-lfxc0ReKd`I#G}A}yvdO#aYMeeg46I?VnnG@=4`WO#)+&*!D!S +p4I%8=W`)4A6T=qu~G^W-UG^f1~XP&r^b}^fLk5z1EqbVTGxDXljaJ+anL4`sROVJI{Sj(*tC&1=@~ +Vc0^1O%MqS3wE#q&te3DE%to%%!+%}=l4>7F<@oce!IO9KQH000080EQ*) +Om3xjC#$jm003$M02=@R0B~t=FJE?LZe(wAFJx(RbZlv2FLX09E@gOS?7e?{6xF#nJo_t|B%90v2?Pi +bAt)Nu=n^Ddf(v9rRDuf&yF^I93US?1#V`X{2_&5?W-@HGt=_BsYOh>suU_pfx0PQixXWrbC{{qlC{& +|O@vM_-EHNw)GT-MpGrI|B@9q1?`+5I)(afAV=Q+Qg^PJ~A&vTx0w)(Ee7!$)VX82Q8hS|?(|D4SK{x +1Q4Ig?(=VP4L7=c@gNh3{Oo)PLWG!u1Ug+}m*Xj|=a)`~LeM;0u4awy;6Czwo~M3oGvQ6#n>uHEVCk& +dw~-%Xsqqoj06*@~Xz<-<>B9H2xXhF-u$HCHj87@jd#M8()O?2VH+?{D{I9Haa)yHyjB+AWWsqHLaU@hxGN8OG$5z#131ZK5pMN1#8FCHSRsZT@C_`!-kQ#f*y-)h{dE(Rn>serwRkan-A;_-mAti%u|w!SOx}FReYmJTGk`E5{_7-Noq`Zya1a(uxm8%SIt0p9_W +m~lG0Ha#mc?Ju42|gM~t5!_XaFAp~m;mJ|{P_#W9mB@s!*PWyWFtGlzh9&0Z48Vi?KQCqtzS(|fUIsJ +>)v2gcCayjW2mIXV)*`kpp9~`J?uEgJrVY=hdxO{kDJ_v(XO6iS6{#aHP!&|Q(7CaYVr=tFwh$Dj +p@Zgcd^h_eD)!uy+6Qsv8qK{RnR9Nxd$qu#kY?SpX>BL4&}Q^&n1eNP{kazZiSLlFWV06hJ<>@2tK{a +5!>*UVv=0FSXA9u$nNT`S#?Ak7^^pM10cxWF9`{96*Quz1_pJ4*YCf6u0}i10@kbMu|OD*!dEH}`us1 +`vFvlhc)Ce!jMjCEm3bVcGsmECTga7gzy1b5;#ew$!-{kdFH*=wK%bYSkD@f?XcyjBO!odtEN*W)v}l +#wUPqhjm3!5^T*xI}%>;}A1E2?sa;te2NVdJfe!;5d%|?Jknqa7ed>Z}X+!(pjUpg1NkP(0eSPd4ED)Dn_4%ZVq5?H<23FD;swlF#1MA_n*&WF6sCm;h%vi-OMYi>V1qxM+_ +OSmb9hoHqs@lAxs1;{z31XM#4wBLqz?!w +W-hW`#B66_Hba@;YKeaGp_Vv}CZ5z1`?SP$H^?=%rV{V^Z9` +0d@2u(QuAz(2EknaYFff3C_x4&7&C~?--YOfP8DiUfUhcSx2lEnwQ_+w(a$36c`GfZgf;}CZ5sDE3In +nj@Gh5EeCA|ceF=a(Fv#kMIKKRxP$di8j@!r71I{OjiOKx90P7}#O(R{w3cv#zu<#ya$d+qav7MDK#^ +1pqtz`pN|9&i!IMb2!1jE33JpRs$$a{WsK~+N!=X3kg#W(V?f>BuZSiNjMIkp~u!2mX0xPa5nD#nbE1 +Hp3;{7X)6$`|$Gt&Dt*AIt4a!-V6>1Za@4zAR1nLQmMQC-AI2TrZ_Ts*ltGL3m(-FNK=Ms{v+t^A|XO +fTy_0rSn*?tzL9Y7OsXY;+)AI?(wj{mA2|rNY%=LrnMWzs1X{NgaVdyj6xj%D5xG_u;Eu@Gj2*YBcEn +hXm1LVky%g{WT?lE$u6r@0^GfB1)Z18Jw>MBYZ0>KJTr`Cy*O(!Zw?eHmcV2&Y_3`CCI?N)fr+J4FIW5qZO3n_hg=x_7H$kvSUGf{}3WYVw9i25BrgN$vQ6-?1 +iwqU0cG)TIj!=u!n;x-~?tx;U&b%t^^Qc=n<^R-d`iX>quM(^cpD)DU#Cpj=7`xQK`d1Dju8;P^>Q9MCrDUS+>7h^Bm&X9a>-CXev& +eHxeB?_Yjid1*7zRf+(zIYa8;xHNG7_+k^(qKX<>P@oRH?Ds9tMWu_!KH~#DrY(;W&ngF{6Rcke@)%9 +#$R(2*FB40gyaCfq^KSqlHh9UyVT#gN2;gm6_LBgHUGRkl8OMCh$Av+=-ebTC|a`RkzxFkegaC(n +h+uvA<0^S$H+EU{Nxuic~uzG|ejWCe@GwF8V7H&$Rf< +m%^Uiq8$N-I`&5Bb5hfa^+Du39JM$W?x6ky*}hWc$a@W%!YDcHvkM464=(=_GzNz@^ERW`|{3J|vEoA +yX=yB~_EK95clBJJ%b9T(N4s5h^h#nKBC{JI$B~QpaI4qamQj2Fr!7%w^+Rj%w=RwW!qSV+cZq8+dxy7Gy`^*k8F}ERGOx(4J6~l$xzFy!)y|`dObQVUZ(daP +ne6`xfSJcBAcx%0*myas5kchZ_CO7%|I);I)+IKoE8P`!7(v}Ly2Ko6+%xS@#9o#&NIlRqm0it-&Mw=f&SZk8-Z)(J|=JF>asXJ3 +Wff9znZKV7rd-QQEG<#SvvxKqp+J6p<mv+ +2ASOEJs251g&U@WS1lVP6Soq>VUPb%<|GSAdGAeSpsF?LiPg8jz2>OVJe-ZFI*UvTo1Vk0m$LehyW{t +{9r|GbU$O8%S3mED{&Ret%LmO`_VL^q&eCf)8+PEm=Z9%$#XYhi+25HCJL>>#DLi=m0}v%aan>TFm8E +W)PCXsmaABHVzgv6ijhL`u(|ns6R?aeUj_#20Kx_kKKXDYVUf+jCXm+T3*r}(B44D*W*{GxXC3Xl8Hz +MYH$nD!&F9xchAn?uWe?Xy$+Q^^(^SqQ{&)-NgEpw8SQi-uJaiayq5X68HcW0FTn%+^8Ylm$xFd4jB1 +UYBNqs59G%vC;z-elfOtHNXw1Aa>-C=A+Oyo9>7Q;3-DJw-bW^Jz0-~q&C1xj#hS%z}Zo;xB9lgep@` +OT}X>NZs^jzC9gL1Sjn>{{N{!}3lX!vljuZ*oJnPSYh96U)ziBPNUuw}dJ(*m6`ZH;p0(vEVlxQNAF?90j(ki~unS)eMNr +h%tx{G0XxRlRJSMXOl^zl2cUKPP?@jo9R>6=aRxwp#s)F)??O8#IYP11zrP={lRK|&oxeT8RtMnLh{m2woJ~je56BXrUAs=|YRqRmhC(fNKbLDQlO1 +!A@R!;zQqbjFn^6BRzLjarhaKCTNJy&V9!jMXhz4E6#D_7=Au0AC_=ITQ`Ajn}YA45et5MKeSE1P%GNgarBFtqgPRRhM#l* +R}}jR$4478iQ;Az!$jmd-)xXpkYV%+U&8V@nNWI% +W)$zuKtOm#@H7c9UaKARNz +EX`zn0+%esa$qw^ZT)kLwh7lF=vV~JmFW`GH7U}SW-^B~!2J}^S=7YmlJcPzb)o69x?3%)?G~o^h*FM +nCE874ep`LylQ}4rcl*5L#}vf{S4!1EPM4~;oKGQY@qXNesV{S}0!Yh8V39XypBq4wa)AWdGXYfhedf +8!1QcllhLDSOqq%jBCJmdeLX!smRa>V-^!dM7cG=K8Mw)U`jh~W(Xgm^ymDWm)8`Uh#=Ls@PXSHt#@I +p2M#(&13pf|#YGSdy*zB!Ps9$3Lh8T6{d!*%Rl&=47jh(N>$fEGTe7t0u_dVrq|9Ff~M3#5I_naAzB2 +{X3?>|ua4>Y0DQ2$&f&3GXY^j$wdr=mKy@*FbUPT<7@k6xYD2x)ejSdVoE_YU;QMB=dB3s_D08Yb3K4 +a0qHysRIWH2su%<%G_v@R+$3^kC*)MHaY=d`Eo?L9T#zMe6T3v=7hi&FEGcaq8^wo-^t3I#UDwvef@_ +`(3g`)Qn{3r#50p3XVUsBZZn|_cf80OD&oNV|O^5D!D#>>$-ngd%-Z2p?`S(ELIKLQ +V+Tm#qgGOgVVSYxkR))#+{3i=6INEAm*ha(p)P*bSj8LSiZJ=sKSErD7e3K)@9B*>X6&GhLS5DMi5ur +jfx4ke>$R;FN5U91y?o3rN@SaFL-abgb2AOE{bXI>9k0A0!~Dn}84jDFt +0k9?lxb6&u13hA-Rd_;l9vb&5PF$hxAtxv3VBeVJObZj}Wa%(Y +B$(7;>7L8I_7?fN>@Sze=ixlon +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 +yXQ|mNMwTI)L$<-py|J-YNUf^sMB$gYgva=(? +rHDraoi_t|eWIU>9pPD`1A`3=Iiip)@v#nh@7A6E&%xuYp8!O(^~WzI>!3Gqux&(x@Mg10DJUBzZmcy +Iv`ps~nt-Z%ta@3klA*m#<+MC$wtz#_PP~Kj0%|b|HI|JBt4lFdaYde;EoW +{>bAdp*!`hD&e62C5SwP&GPyPbEjUk@SM5_y9{wXi;{6a_uC2$jDIy`@R9qfwF4q`9{d-72yOX&YThg +=MLEv$mExev&$Wl!tP5IqSlB^4bX2f_XPxC}tZpElP!KC{hk}^qZmqpYwp5`jjUM4u^Nwn#gf%7h!=q +G*HIZN6siB_FgO8uzsiA$6j&@rpSU=owr? +z{>nw46~imrrtf$AD?T-@?A`ziS>7D3U5n+PhOg>|PjEiyML54KmDn}eqWOQ +3(bk{Oz>qDP<@{?@INWBb)luJIGUNKqkAU%(5HkZ{s8&^)B4c+fHB>Ipw=`f(e}@lcu;q4viVo +z66@#&u?jtZK|cGrN!t?-m{v)RU5;|x6mMKApQGE#Wd*x=S8_+2bCXX#M$Hx|!-PgjHFwLj%Qvo1C-< +Xq(|Z4rVVl+ql$}>P)?N4us-Xrl)0nc=dUW?fxufYbll@fFd86Qb0quW$nOw>G2Y8} +$#o)syrs;~-y4_#sa0x`gh9>FB8~zOAl;jAFeRrbC?^P3qwKIXcjna09DGxzS6us8kl@sW;}NbCp(fJ +mGUe?Y5zj;YFyY=3HmZ_%N#9b<`KD332)L=YUJ}FOV8fLuck0HI?x)7Xxv)i@_|uPG%@Vz0i&5QDmd` +6Z52H14&%URo4E9$lqADj1@+>$?d9+^of9UWo%g^E9BxX0F1|tdXiwuaDi+yK!6i5l}d{pgyF6s_k^R +gl4x=OMp6-jHNYV7CfRkGtp8jaiI*5Ee;TMaq^7aj`(NJ=v?R{{_OQ2O&4ZlY?Nd`U8U>Yf1o5Fyt~&Gb6IfzTp~q)G6-c*-YeGP +hwOwalEUV3hZeRE`X(T1jd`ivOaq8OCXhWYa$3=du^-~)Dhh>S*`BgoDPz1YrZl9^0+-Do38Fi%of>|t8jRzpu2VD9F=<}ED +~eg(5b}6Tn5@Rf2ciYKB4WYje6u-8xRmB5}@^(& +xPaS#_Qx+^F3bwuYU`=%t0#q=Hu@E0`d-4HEXg^L!uCpW+`qt-=_mUt^u}J%uyMH9t*;_DvTjd>3OD- +M=?*nQVBJ0@=t&TEr5E^vFk)ZQhCBwLtZ>VE=7k@7O}-0;%A&GGX6+bq$d953WiC=rYB?Hhgj{b1k#|FWYAk%tm +r5H{7(U;m48N@;S8a?97y&?SPGtZ^4X;L&q;JDfAQE)J#XMgOLgYwZJJp?Uc`!BgHjHx15gF`qgTkrQ(Y5lHR(6qOWs8X5@Y-dpp#W +GzKG{D6wn7I(Cpeu801E&P(2UaBts65y9i}IR(?aH3fper-1`xS>IG6AOmzalKB9n3n)zy_`6y0>&3w +!=OTqKrCq+G;Cxk$ZKv32ktu#tg}Q*HmZkN-C|@?Tf5k=Ik1<1*EPKmJ}e@}mR59ezHfAs`&RQ-i{h1xQayQ#a1UIY(V&=Jp!qN;yg{)lIr=V%U}e^AChSz|qhWSs*W?10NV%F1dQ7W! +*6C$CI8;KxH9Aj(4V*4p4Zbg<(8+^T!s}LA8*EN#t-R4hwlc1xW7b)aJt?3*N;5UGw3YA+2|EIw)0b3 +rozPy$QJ_sAc|9DzoBmMt_oRn-)p6eUA6ImNX~?#5*o{3Hn!7YvoJZDoTos;bVzb*C2N&Too|a@MEil +9Qp9MW61c#&j+PtHo4X+)%Ges(PD+MWV}|Bp)*AYzxhyAm6`J4<3y^qIU)@v$%V&S$;*F-MWhpCnO>L +*6Unj7v9E_k}9b%>7Ig*V1i37l=V4*MjzISUEGB9GQZpi +8U*xroxMIZ7&|Xib}P>!TKDXoOqm}u7z!e+2gpD-^0i3Y~I>xnm-qC9RE3$?)s`69UJmPa}9VT4A0p? +QoAWr5diq)BB;RReWw!qngPdXg6ic>21|&>%ugPGSyMr3yL- +-JPYHbYUe(mqK@A-8f^yn`OqM|=i#T7Kz2%=oUZlViJdemmNo-4UXB*KdT{`tlU(o^qq$V!F4`S!SuI +C4r_GOVr;@Of+j~Ue#Dsa +WsTx&Dfqpi5Kdw=TWOA|{MmGTKJTTxOesQNV@?7Ur0mBl!IE=hbbw3-3&&9R9#|bWo9 +#!ZKFvD){!GpeGVMg+vlCikYBUbmI2P6nAxc@ZbRTT1FJ;0r~piIp|eQ{BH%VX?E98vCxh$##ONef4p +DD6NKS@q)oOcd0W5pawr>VYgi!U=Rfn;%gxW#KIyVIz!ud=I6ZJ~1-rh-{dMH|B_CnL;)-MA-tF^zu`!X!{~?gQyk0UPr6iD2FmN6MQ|0vbinOaUmFtjl(ly{9C7n +S;aNQD$U@bmFD+Jn~B%pCfKx1J}^Eu}JG$f!LqmofCGa48S3b3^JFHp~+?F(4y9PO~e-Tz*Sb8dVO9g +E`uTs9Lw=7M)&U~LZ*UpYv()lhs1*!&%+&INIg2X6xz1a@8ip2n^xzc-v+??p;IwV8ELOIpJ?GFk__c +p_EhuOXL7=MGhrn8hvw->w}zciF~=ov@m|dqOMbV8Bk2M?Ad6+o-50QQ_f8-6Y8A!F7KcgLs4&St0TC7&MGpVbRCa5qHz +e@_s3B~P^u`$91Su~!w4^JCQJHm&`iy-)S-72D)6i&!oCWy8*)hG_>ivfhrsCNxQ;F@vZ4 +=e@C1LKJ=|7N#I}Tm(ajf7IBv)h%h#3CYewQZ^&m6L=fw-=hMUfPBz|V%t;NS%)5VxUj2nc0xg*lWnj +-kJ!RsyYb5kU4e<#~z-jx2s9Dbue8KBXNQ( +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 +t+D0)R8h8Ndi+JfO9x4b) +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 +{D#969G>}5P~5A_7Eh@(_p&X5X(Fp +MMCew4T(N-qv-&PXK;;`iH2F$aOaCf7Qfd`$p@m2Iqz8mwmL;_PnT +E5KhdzXYpli-7CU=iO#Xj*FcM4RVHAn>mY9J+MsCjzCX9&$dw4=+~k6rGVJYigjX$1G|9YTKtrb<+CO +_k4fi36=dn1UZta)#dep$dcWP}Wo^?nPbR9`TBYYg8 +g2Nj#27yI)cDdCRG7|r$8oZhRi8>y8onkh7JgOHYU~VGaPo47A8`yx3@mhAS)~|m0~7SGQtRtXm9Ju> +5{e~Gu}dderGuTj3YyTB1zj{O#0~`K4gYHeLv;3Xoy8X8TGNkQj??@2pySy?-w`&jj%Rx~i?zi;#TG* +}Rv(9Mm(BX!SrF<=t^O*ttQK_0}ehkMyTn;bS*y=5 +a@@34(N(0vdm!NQ$_1f^{#Y&=kmo9uyc6W^7UvgoUdkQ?Ki)H +GJI^zf<8x9?bC=|L!B)xz)RD->krtPsNQH`0dCB!@@o5fxS*rJp(X*spP0bCQTJNXRsjk?BOpl(utT@ +c+%Q-N#ElLmP){jI?Tp*-Eij54Id&<~x6mP^uy!UuTq0YIKq#Eb_*<5*!aenYae8a8pu}%H=cZ#JM1| +@3CL?nD1l1sZ^0bdE)Xu)`n<5Uh_qlS{fBs8X%4 +p!C}RzOgU1d`Dxke?c~0mI8?-High*EESb$}ZNG79=0~xvYyZT0(2{2=jU}N*U5`A2O&Q7xi2pNa(_W +=#TvMyKH<8?(`%6ERX~iazppRx&9)seWZE$r{rCu6h_-B-FY@G8#-${CF15oj5FJV+)9JH+G(iSFSo2 +EhEX8ZbIj7??Q?_ykiJ`nmUY-?6*XS{Q^B^6h2Gxdj+=m)^EG<4?oJcqAF`iS2E`t3W+z@EWq<$El3@s^m$H-aMod8~X(yl7{$rb>AH5b2@8joj@W@riYClSIQ9&^M=3e!%dgfl$ +*g6r@T{())K&@TFo|g6p22>`0>?zJmT2tDW!}{oqRs#&G!kq3)O~v9}tZVF@@^NJ=@ePmma+tR+*O0f +w1Ll-AKyFD3JlJ<=(}H{>&aHkTaPHOm*aeZ_>KxX>wEOL|`!H*>#nC+%jlHxe>U +aA?eHcD;zZ6|M%&@B{+Vx{|X+KgwX94o`|419}!? +o>^T6e!v?L=^@`Eg%f0dKN@oqRz3P0AWT&^Q|CDjxA|?rQL`FUAMvX4NER-@!BwVfw|GBeFi +sD~}^6o6vp>V0W8bgtt2&WOK2kkQ~34&X(zvvKxUkQ^4$V>+csVvUd2B5YbpS%k9I2p27R0JQK^qK0!ge*E)$)CP=A@|K1 +y-mEacK)!UZv5WQK1=2;Q@gJK1JZnc6pm2__bCtEO)kV+gaQ*>{RC)~>0ZllzJ$Xlv>kwamT!d;BsO$ +0!Y!o9Cou_-3GoLJK-`6HN#Oj=6nWiWMC{S7Q;s72>y8CVd2RfDmvBMEpggm>`|xG}-mFRoMRZO+En8 +yTdZoruALZB<(CaDD0ac0Ejwr6+2o!AsEaNsQ}bqlyMEqM=8OE7~Z1Q{Z=6YyxW_S3MDGu2&kENKhG=IPu=U(ZIxIbSScc3Gq3gW2^MJsATT} +p9@x+nRu(d_@q~DWWrI^$i%kXHCNq6CY%LGWO`ve!?rwqA-SjOi(Ij_I0f3x8Un$|e}wBZT+2JvlmNnq`kCy; +JamE{S2?UpBgsm1cd=T$9F?5o}K#A_voTb}48Tb}4DTb}43Tb +^hQ3^s_5hwU50ceMrL+fm8(#8VCHusyNr-D!Oid6L_ovRz4cphg% +mo!$4PxKbXC)z2-C%9HNKJhk_j8Dvl@rnC{@rm!N8=sK+xLX*W__m&8cp~!Fh9{H)x_!eF-%xPv4d;+ +@XIw=|z3PT1WE%`M*q^`$;D4LtiS=t$mM7L+uWES$Io-bH3DHiuFdK8T<%t#7|E%Q+kz8GtCzJrUwmh +*{P$Tduz`!kAov_MQCnhLXCw8f(fG=7`=_jKvl +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 +A|P{Rmeth-b_Dkk^dlHdF +pj`Nu!P`6f_Df$B{)M+PH+d|ZzKpH7)UUJ;2{DlK_0;xg0~0`5&ThKBg$}zm*%E&EoyCI$-yS}{R$J? +a?r#Y&oa6FPJM1-mU~P$#Zj*JrhoPz?%3xPg$K;LOBpMpraZJw2%AcO+2k~qjbVdXSJp@M+=KOI!&$g +UXDl1RB3LLJ$-;!oQ2Oh~(&?`s#m^RD66L=x%t(1je@3^<9Qlt4_wK^IyX?YPw1gcCk?OqiJ|{VD +Wo5pE+`CYxE!Z6t-VlDpy(L-#ClQHP>g7n??qP42iN={Zf#7ta|KPRcur!l#fQa7>`*sjx#zWnreYEE +E!MO1uP$SLq_*tKg{MrQoCBpyaLOE9EoCowt&&lBbdn(n+B7Y~+_H$3PfhTlqeQutkV$m0KL8lPD;xb +R9#X)bCM*bA~ETjKEF(o*-zE@>B9r(pJ(_(oy2$gM@zR>HV?=b0pH$#TZ4G5f5|dVo_1u6BE175t&3& +wTBRdnWvi5rw$pejYj1nu*64bCy+c46#kKWm_R8rinBnZ5g5>L$WL>q7D-*Q$_umr&w$W7AZ_ +ZhIpiWkUr8ynn(-jAPtH)2WcQa;vx=E`*kU&09%Ht~CZyTK^AOc@NLpIvRHe;pJhVDbFK +>Ol`VD*AE)OVl{F^ZnWD0&XF=+ltfaC!nYiNY;Oq?s +sHx>BZLu;%CB2@10snZBs+r9en0J>sN_s=hDYbYr{ykXVI_o==ax=>qOYJ#R_D +3%`Q*dL==~m?h39A%w((sIzqOZmoh}fU16OKV3+>kj<48vv14PQtZ|uO_<(Kx!9@H=>Chdrqm}LtBOk +iMN^>;bF=Y#&dz5G!7BNm^`~_{XqVHFFg;3^Ce?}^~s*=@kdcq8*a{f|ZE{AU7kFow@{*g&#icsnD*e +k_GTGK^o&Z6Iea@|zTA>7>}+KRNJtEARX(A-(fn820yiZnWB*wWJI(F^|?Dl4Y-VqPA;y72IDPh7nMa +8xA)H1>%e=dEWC1O&uIdoyM5q2!0?Vr+KSY`XLmf_XE&o^E>j^VYNfT)2!k{dIQ#-RyVs-%zTV +y8iNN_^TRXf$C3ln}6!~3srv}xA~{UHU4)O|NnsN<~mLOujT+v<=^dIRX9LX`R8$)f0Z2Yum0VNe*87 +1KlPj1@3u*n>8|>IyYyDlUEM{TAIfqUEVSq4Kl<1r$71J_f~AiyTmFwHo_y-*XI89y_PJH7pMPP^+85 +WY-|*7Q8((?#wN0;p&j(&RVv(LZy^7 +vOLzCQWQx8I#QedhbK=YIInRq|8m&%gY7zU;zp7cc#O`AYfKKdx0=zrp`y#YF9jhucz2{CCs;-<|)zT +`^R<|Nn^c$JtK}r&Z55$5@dYma3i~S3NINJug>1|3mfsgz6b*8!OLSRnIUKUQbF-Y`+*{ +R&-`@DH(~Gvtq0X)|AW)xR1>?TSiVvHBYrhWF%!;(uGHy6lZuswl!p`HD#tbIy1|bCETQUDH#?;DJD! +a56YY!$HuZ4p=qqHW5nf^oBL?)f?N{Bw2$UKx-hq?rzc5b`T6-&Z~+0i(YcFAs_NXSPjp-^$yp?fMMv +YL6=UbzMY$A$yDQV_Jqczi*nPtu}nrEA*+N=pv(xB)an}G-TB@v;JX=>`qn7Y?|3hMV4YUPR&d-8#9xX7?Arh@0Hd)x(f} +bh3-?tT&lY~+f%Oa*;&MRQi@VZQ+ny?3G_szjjV~(PTi<(I^iih**qnI9Me)V%v7Ig*)^syD>=n#&dy +4hYBnY$Sr|!0FOZO=$8QskpGdn2}tJQI3{Uav|m}1GyNH=F#-5FKM%WO$c$w&|tLq$%py3Vj=Qo +&KZRZFTSq{pbDOYvrnp$0y(OtYc#vW=b1GpTi_BpJ==S=KrC)}7B3Vi}n! +60q)prl2sSD1>x#dZuL#YsWg!Tr->QM)}EDgB#W||N4cGucNt1^yQ;t!eTtyXSF$1d^-Hq4qFYRzx$D-q?_i`)B +f9dG~K=s?&d*U)}x-I@Im|dgr?R-@dnQ|Bn83`+Ih&>VHV(Ke4NcWp%CUf23Oc#rM~p{-mJV)5pDg@G +a;YRMr1@HUDozP44GkRL|AJtqHI6+oXCftQIaLvTk~PM%7Kv)1xJSTvJAyYNe~in7Z?6Ii+rY`;5B%p +O{%UobE-H&NV{tlIfqv13f#j)197&8RY=mcw +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 +nr^#MTQ0khlIs@vWP*XiokVptBs +HV?4zV4ngG5$oRXPG-)CE3mpC0841YGHS!`Lk<)_J~$ ++5L}X-mWPD2`(4zTWcirjZ4{p+=2?cQb$ +M^P%H+2uE3`UUuJ%a}e6k56cLk*sWK8*sxBg3Moln1vFM6@0(vqx~hkdXVe2G4-t_^9}(h;SLpD22Ns +LVFGh?XJ_*A0d07tRlkPnwp6CzTJK6d1*9_hZ2TBF)A{c7^%`f1RNIfE~GXMBc1Q{9B(8JpV|IlD!*GN|BkMbb~Gc{=3Xk>h7RB#aS8e{78rE92f64ozEUPKr#jOb3?!6EcT2fG +t8#@(@#Imo_p>&wtDqyws!4WwtoG3AuGK7_S-@peDA&Ygskv+;mhnfk~cP!tgv_QUiQf+p9tCD?3wS_ +nKNhD*|TR^X=y3@`RAY6Zx_xB+2Hrze`nXPUuVm&aP}s>AHAmPXS?I$hX-h&qjtG$Dh+gVXrOzX2D+D +6W4?v;;Jer;et^y3$JlaylD)~#(fD1aicbS#G|lLts=-$0MOd+>4wrttFW!wAO_%>>E5Aj)xcAYzP=+vQmV_ +(C)4e7mQ+xDG0QP{@5ZMyq+_h+rz-PgH$>-yarQ-DSd8{X5ZZHLa?8`ST7kL+MHcD}E>UhmVH;@o>jq +lPV;-*sR226}z{dY+y>_Zkc>bzUv+Yu!L!9}eAp+cfjmc(?10t93n3q*4fYA#-(iO@KS-Noa=wZ^;ecEfG@UCG;7nQ4GI;2&*D1Pt5=VD7GZ#uN=lfLpq@f(!%# +~6@4B>dx<0oV9_5PR5$tb#;e{9CXxw@K{Q2`g{QB#!KhoH9=9gc7IY;;JE?v5Gp5~=zPo6ya=KlTrof +?hCzkmP!-DR4Z%jsZC3d-TnlppFE1M?jnJ9cbOca&A5+lC&aqBv%7BY!C9k>#n;39S+BX_uq +d%%C31>SXgJI`)BdLc<~}9S!Q|r_U(I787}?lr=NIXVWGR64l^bC)h$xKK`fca73?{qe^i{I}nJyZHI%pTGP4_uqdy7Hqwc@`_F +DmXMwz3$fiL&~v;c3EKkE3!pE(cvf^*ZSoCh7|{DDK92Oc0A_Huq7(a>=x=k4C(eCbKfD=I2h{TckJu +Xh9RS3s!?1^!AqK|27y#C^;8kmH<(eoo~N8mJC>f5iFyL_@}xoL{csJn1Os0lVBw6Ssx`l`B`k%S!?S +1KSZVRId|-&rztCr@nZ3hYlTjQ9Ue0J44@66CL37+V~6Q4}Xjch=+bgeZ`)oHVPWP;XHz92qzjg|H +5zQx{SQw2bS0ty{9)k#fsT)TFSAANT<-!M0lKRY9sKb>h3NIduh=VQO;eAFqz~a +(gD8>94fsgHn4&pVV=e)SkQUklHl$xQA-PpXzx@&z?QoQGcEX{J|&H=>Xq@udCCc&;niuAANUd3x9c5 +f4B +M^EcH8+Aqcfr7qAO@UGAR{HfpLh0i4N*XH!+FU=ajUnCk<6Aic$sQ;WuG>juW#+;F8P}(zSP}(#4q#p +aJ+>1HC7c@}$8{eh&e?TPjNlo}ue=qo-+S*dcLuhjf9SSX=0pme!yaoKxPi|ch!ryo#h`&lSY#XZ6>ERD}fpVWzHX#akV{gS|+q4Leq5@=NDSZmY8?Av)8 +kPWmYAS(Y(6?W!4n^cM>M_v_cMBkDo{v{&E_+Bly2~(LlbFXn2Qc*fNi3ptgYa3>sdPX;>-KunaV$4&sj`6AejWe12lMpaB>9q<$(Hq +t^#D^FR6wjA4)?02?=MNi;l4G%O?<<`E6Js>>LYkJa4&0Ds~I!T-e9d7$OdM<3;zHf<90+zuTIEr{zn`ZnK +__W&;>8r~-wM0+M0&?hPFc@6bRt1Q9%nJg23f@oMuG%O|>@`;ZYn8m?OqE8A@$rx{!*4+OCe}(^pf`U +2%2jI78(IPhu)#<2b^)e05$u#_f_-N_$5bj8kXuu_83>u$@6R +iGGjK3eTo39qAa~gk_j~X>9G9x47L*R<`h&C{P{(M1$n!j#UC%B_cRi9(kbbYz^4Y!Pe_FN#h=W17-@ +(=Jw-47i)6!pMgdF2%$dqI|QI2?TD%$aT)>Y}5rI>CiLY0LcEXwO7L4gE}QR|}NWvSrJPsPE*RI(6dl +@$r1ah7BC!a&~q$w_2@y$&w|aU4Qe!_=Dyf>t?#!vm#@ +xl-u(%Y74i*f5(m;29kBgDEN2n+O>C5Qc^}@Vqz)vqoN*OeDOs-a^y%J6BEM=3JUnsPe09{eDX1if;D +6$!wF?$3_zdkdGBT3SojX_5184yLg9Z)a?x+LMpa5u4=DnDULB0mx15ez+L!eE~Tac*`p8Ar1` +1$$u-m+!OABK0<#0zCwSD +x>NKUgcFwAZg>4c;7@cf>D{|`J1WCGwC9~WcM2L%KF}Ld`w%oFBqZ?R!-osrTEBk1z#nCeGRHIUMms? +N19!-#;2+4^Xa{HmXcI^meK6sEgVM=s-n_Yq>ixyNd-uASwC3Y|yZ9qtwfv)$D**FF;6ruGNw&bQV$m +L`zB%!m-~o(LC}Sm#qEAFWiZVt2|JGY?@i*RhLyUp{{O3PKJd`z+lZ*PcNi;^zCEWLr+ha^x_qg5l8z +H|z{z3mw?QtpI(cW+eE~sy`S>jV6OQff#i@ufGx)|Tk*MPqjK14e}yF{IUPf!QwlhyJNo{=u<2=#&So +an_DhUhmvZxeSn{%T%T^RSw?fg9)o51}nQ_Sj>b`YbU{t1sZD0OFvZL0^Om{DV0W0Jwv$7hZS)I>t2~ +9v*)dcQ^iu{7>bb2O5-qu_iiD-spp9>=yF`@D#?{8g%*sf7Fd4LttG8d=FkinWGJ@z-InGU+z`#SMxv +mi0Wf(by{$Tj(y_9iTs&oo)P@5E_VeG4!i_j$2-OV;I6EXkX*a^U%*}9ub%(X*s~OTi7^OtDEfZ%AL# +2a9;xX-*>2mmjX(SBvx1+MHVgpWif$fq6W+ly%K8EInJ;U#+J6OiH~#8zQ7yx$Wt+O{1h8h!8WA6KAv +|aUzThqNouEa*o#fM({vyBMgg{YfzvCxKkc~r +Jt!2f3^NcnM>7GCy?(U|KJ_#ascoa?)&!b6a6mA0PPk04*by$h#%MgjkpW^)%s8BC*1lU(15WM@(cPu +@BzjnjGZWB%sEl^s0T&Ai+aF2`h4`Y=*MVIA=WjB=D!y27~H@^8i+7tE2|`ELf~fqf5ui|HPoOM}bqS+gpbH@^`)Yt|{og3F{kJ^jsht$f$WclI~kHPzBr<(n +(t3;z!MbL2ah?i%^7mG9p2-5}rF$oF9Ro+ID6bl2cs^}8J-`wJKL_jt?T$?A|5q374>t+x&O>4ggyCOrA%ld-@7vJ>VH7$4EEV=O{n4Otd)3jFYlYl5qCy%1|WSnq^R8|ypJ$zzS}R{3 +KNKy%OxnlGd(^Lxy5kuT(El!-Fuf!w6NuwM4ykJ5S{*2=b&)ug(pa-FZn4B!6?)92vJP;{FPz8!B(0mqoRQXjmHh*1e#H6^)*1WL{qw3k*#=_@&0iBp&W%;?!$AE*1_mw|f8Jl2E +_7hf2SX>X2g* +Ds+j^=R%LD&L3;9SU--d#*Zd>jRtFdSYrY|`tOwb2PJ>VKkBv8>g(^o1=nVIePZ2ANgsRZ{7-zrg{nA +!A7iWWW3aqt8YuH)wRJj?Kh2X8R<2wbtHuL)gU@lth4nV*RI$DQo$$72vTnI%_|qSpTL_l{N2Rqkv +0CPK(3HlzC#U)0<`e`g&EHz&evtUMI_ualj?`k@B5LaPmsk_OHy(&<-Kek4W3e^_c^r5s^J-<^An-t0pg)2iF09|a@o;6EsEH +p{yjElX4;g#z+_@Q#J@!~S%Hi?H9~b=|`dy5D=>NeBC=c)=@>Z`o{d(pz{>zy!s7+Mk$FvalT3KEBV@ +!db13F!lG3Hm)7Tvn^>T6+2-JmW$SRT#G&VI(vfB!`#KUypK@wxfqk$sKhKc(-XN$Crez7q9=vbpFw!9Q6$oxf`j5qkj?etdDxVE)!qS-kY@NzQALe+CX57-%w?=75g* +^XF$ynKEU6KtKSWK7G2-120{=ROl|0xev-5ca*=fw-M!0eN4uMG%4Jt#9MXBe_gwF9ZT(A%mXpjV_gP +oOC)FU2@@s=x@*%lSFamo99Q;MQu5gMT=xh5RQ|}Df(kC0Yy4ol@exw1}4&@D9E_e{SbgXNjeW=$FPzUH25D&PZEYNSG&jg;kckh0j-QF67X +#Y!=EJ;|qc5SRO=SDpPhiTKMaese*K4QcOft#ZDQ`UzN4t%5Z7uc8h)?07EBxbYQ$Xn!(JkkHy?e{V6til{G?HRwj +4eC*h +EYJUG=xS?s!as>h@Ru#CN;KTJfauuuW}##E+pbyzs)77hinwGWAivZrHHlA1}T1Qk8yZ)22=5DUHlmU +wu`$QyAU4b?YM5tXZ?`_19k)^{I?usAp=^U#R0_J*}vy2zu6Ql*TFIze{L`m>Yv%-=H~2%-7OBs9=(> +pF1Ox+OEV$SnxDtI7OaO+7$Y-_!4Q(1o`w+5^H+yuOc5ajKRnYZB3aIsb#^0U!*zk_TO$AhJPp6hQ0~ +y2)HWWcO2QVo-faoWW%ZQ+zInX%wI8Az+5GO=1MCGFRZm`1VsXL>lU=^qQp8fgS;KHk2Rg31g752lf3&!-c#Bc@MH4WKGDrm~ +U)adv$KVGbJqYpzloZ7pVZ_6DZ=97@!A-7}RfVtB=^AM3o%y*n`q;h%gx#xsDh&>`$S +3_NbU#iREM~XHJxqseNx6BP-MhC+TwL?LH--2TFs%%%4p72)%V2 +=JhIuoi(N|b|g2gorEE0=1*jw{purmzH0kF2FWw1(&H`rR!v48-ncY>ugPdTJf*je+ELmGvZHE-5GAv +@cgJ|%6AadvuIM)rVqHcLjo?5WA-^n~oL=_yk!nc101)~-`C)B7c4r+1s#qn$B5AtNQpoNbLYTe4F!G +X}Kl(Ji3ez=rjW#{O1|EnA#Ga+|3IO7SRWwt1?}l46}Bzmto_Ji|u0m=mKdDKk^j%+t)-Zcnv$xHtrk +5E*WsX-+ey;dem0gzSinnVHkgmUc#4O2||kr7)mfQbJm`x!u72|F69(jn1;T!XL8but +E?`-efnR)Ld64?w8E!Y6DL_kbMz*8eqj7luUXi=g>MH?a56p;b~LO=z}5;Y==V!;oiE +ztpZA*|-^`sm&wZYG&%EbO`Vaj1--D&b`gA%2EmzKFhwzV+T*idtg_Ovdim7Xu726NlhPycH+nG`tUsy?4)JCB +A~O#uJTAv3MPc7szH(NBRd7gOXrg@J{e?(3~dGt~8A*I)o0V3+XEQ1p7T(!Va;c>>P{vNRQ%0e6El0e +ojR@nI!wlfpUR-Q@$^2!}hAP8mn$oQ&kJdgj}f6AL~vg)$}pSWSSeygXU3FW|o_EW}7)?uC=4>WV_Fv +v;Cvh(fiQ=ya{i^d+|wp4qw1maW@{rvv?6(xwfv0%k=TQ&&_q8y7=MJAkUqB$gjv-WArS&NL#UvEQO`Ao{TcZu4lv9NH&%gv!~exc7a{S`*O+^AI2y0IlPtVEtr@j?iL%w7V( +kTCk}eloD>b>l4vR0`(g0TBd9(6o(snC1^gxc3a +{q7JOlI+BgK=VT&(eH+Chf0W0(?7QZv+QwLx7}3D6O`Lq9mCFX`5%z3FID%q)-7#b&4JVtZO)wH;&ge +J;LatLzrL&F;4QZR@B*)FrCMEcde8;tsgK#^*LO)>z}T6-gnvWI7qjruxj;#g4PTu|zI-E^jGPY1*{&c8}t`=8e6;0?kDa>H{QqXVfU>2liTQaeK%5RESAtLzHZ4r8cT! +P;8bwlXKn&*M-wT~vGjgAi^n%X6|>*eYxvb_`R)V$YT7jB4I1@8eWT9P&*)Vi`NKUE=GoPDy{)$AZ +KvpksF~-mYFy*?#p7KOi^UH_C8-P^pu^aM>?yXFon}w^bw9!cCTCvxtF^MgD=bQAr>ZDNHuD;CLRGRLdNy)aJ +C&IFc9-9=UM(JJ?4n>jY&SI}Vl^!SYLd +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 +Lq@7VA4|TpJA +?VXFhOP~j#-YHRdXrh%#MND1KgmT-1#1|%N7ktJ@8C#KbpL~8aplk@L^*5vR|ldNq3-M-N#8(WkCu!L +TO%=(uo2S*$;Adf#Hn**TbL>&G?6L9SYxiMzdJ{=n%mJRZvw$dOOY6@tl43HqTQ|A!mdREN!GiR&tzBD5W +yiiy~uG2toR7Otnv{6PxLO(QG;^+cejgDI?yOO@u)1-dJsAdJK-ixIChBwiKBN0?lnr*;Bw2FVlj^qa-MH2(zqOO2ePJ#A$ndKorZufD`nt +e~w#>b?EXpkI}!$H)4Hy4xMVidxT%i)>sC5W#hive96#i4HX3c7Guk_nu2B*@-!ru)RLOK5bF$$M@l* +1!x6gn8CljX=+dpr`fmD`oARq1ZwH%G-%HFZV6n*ajK@(l29d*)Id+qk#Cl~f;@;nq{7 +wP=X%4If*GzWoxFO+krY)ZqlB|cRBgXS(dr#1Q~Rt(bpq%q*3l?(j<78eY|^Y!DP$8PYG<5JHt9SH6wA2} +K5>GI_q*VFOU^R-``b{wiljD8Gfbp$l&k2eSU7|3F}+-FSFVurE^sB#XCK5ifyZKpH6Ji3&13njfPq* +?|LVEzH486uy{P$ivX&)(zDsbPgwda!9hTY48fz89l_AeNyKLM&`Tc(aW&^-P4?2G4x +}BYf3lDe8#TQV&{|za(O%B8okzF#Jc?klc0SzR$jETG+-Xu3heNaVZfmW!OQ$%Xu1bg&-xl<>Ykeaj5 ++~p8Hu$xKu`c-KhCX@QwPkM4c$_Hl`@2WI5^qY``}gk(0~Pd6|<$tNV$s1R%Quf2CnTi4=@mfAF>Z%D ++WN>!N}uC!kUp|<2puRxdLEmV?4DUw>`zW0~MZD6_pczJ(5faEd|NmI)8)-65GT&i>zPHj7349XkHXo +bA6=IaA+-PdjN=8#X3k3>l($nE#n&#LOH_UpLejBw1dJ_%(RuWgOUSUHHayEKaUIBpCiM&AwX>SoTTp +ovAe=wFhX(qQ7`g&8bFW(5z{BurBwK#t|P#fMxvgcRGhW}81FHJZ>1v9xNd{TYW3D^~c +ruD?ih?*S)a+b-jMmr_y^P)qOQ(B-Nvy#QV(g)smUlGzX9(mxWiKX2ipdG{Q?@|kIjf|7F?Kq!bQLc; +S}Jw>tkBwu#3)ke02qa*Ssl+*xb3pJHPML{)``Z-V?9Mq+(^}naD!wo+9vkg#VBI!UZ6irS_ZB#sJqB +%Q!+3!hzTU7n8{Oakl9vVXA*9Q)>+FI1?tV|iTG|f&q9YrJD?Y(j9D>O73YU`q?fjYZqbhbIOr2%a>7 +zYHevcmdi_ZxR-kZ}X0ZA&(X_fol62&^ +~e&SPxV`c@kR0?sNKU4nC1CX@}4F!uL7#ky3Y)Nf`>iHf5kBt~;DwnbuO|Mo?j){}f@N7RFt|cQRt+6 +@R%Y;y2=|%3|CJRM27`*H`-O1110>kq+!|?|D!uADDznR~GO6B+x$7wbLfWs+~?zKc@B*03#oo^N_B5 +gMjM5x78=OkW_Yww)^RLTH$NgF|MDThw48$Ce~}h7HyOx6^Jo@^JuQ!qfS3wx$`ggE$R$2Hmtmih3R102-!2og9PuqrNwA +;u6us}|jl~IL*4i|L)%Di^naw*0!w+?HP!6HatUjUr|m^yY8Sew2!e;ZXX1W>R_m7yJ@H7~re{vKxywT+5&|j5QSuU%`9$i%HBVz16Fax*QviXkb9(SOY1=$a}qo76!*k5;Hg +A0m_K6LF%_sp}~6@bZa*R_+w|O3S?fZ~LubDBKTWhthv#B>QnIyn+~UIrPJ;q-qa11-*+tcr3o6Z!i) +o`YVXi_x4-S@pjmbX?^j%Xgjxlx!o`nOWr{}UoN*g+Sz8+PKcAujn(<+LZcpDn}LS(0@%NQM? +=Y_<({JVged`o1jWB9g@i=W1LpFc!)_z0sZ;P@q(}x{aEM+u7m}{nhie-Mnd|16$U>;Vy6n^yKB&Mx!dj-`7(X$|CD_sP? +tN8@WY!8?3snTip@!iwt<0y`9Wz#KJAE{-A+pLcV<7VC557_2P>ku@9_}rz;;xQA=T)0KNwq6jpEg0G +?5fn*o@wxMvu^RL(8IyAH&5LgnfvMCE=JkL~8bo~eq2vVB!Gd_G9(P`3QsZVF2wP`jn~``>YXD+k{S= +E6>&>h;*4I&Why1H~{x=}8#riBn4zLIfE!GwA#&@%=KQQrTK^e2oioY*096wx-2BIU7kI%r@_o6^$IB +s9hAV3;$W^aIiR@gjuw +qkNEkt_l7M1FBjPciv4NWPXy^wkP6bQEb%`H$p4czSDbxCq4DX3tHcR*mG_4Dc^&$s|Rwpr=cG_EpGA +iq7D>_IoB!SOl@=7x)IU*9fGspy39{o`AWXkzI(nmVgiLzF>;cB!nje!xbg*U3)%Qw8 +%ao}w;9DjyrGTkDv{dQK@cKWmpUtwy=-Iic^F$3vDjF=cO?+YSP+!o(yas!;`GmsrrDy_+mBdJ3{sKC +H|ndm>^y_iU@yrcfSqs2KbueuaZ-p+#IkKZ6iX4r@XV{52PBPMt}o@s#k(P;M!U+UDq09C}?K!PoHpo +^(waZ9Fd_K_&UO(vgsZdy7^Hk#zd!xq_mh!lYW+*Mh?p|B1IQMeTO^}B(e=vz)N?_cd4t>sfL#R7rTtw&<~H@;n|2}tcJ-h8Tynz?$C%LA6d+N5Zt=gfqhq +ArT-zRFx`mB?P*0ulYTo5hd?s`aCxV?A1WEq#!NHSo%NxTkMsxW9|uH;+lop`SCgzbUnU<_gVID2A5t +lw<{t#jFCWz&s$?EQ9nM$Z`kEk`~YM4$C5j(s^S8A)EcYuJ{V +_#LyAuLls1G%2p6lVWpyj20FsfxpVnA_CprKDrLfg267lyonilIUswgrU4@1=!NU%J6S=Vg#Mvb%oh) +ZE$tCbRE?eg29gIvj(Z5YVVaz~dpQrGT`JlZunsigwL{WANYbq`Vw=$teF6r#wiK7eP +uTukEAu0>etiX!{>&K4KeN!nyzV6tDfy~;CIO6*NmdJHA(_22<#X0n9fSj#`?R3Dp@P5j)EJgE9N*O; +m(G43vyjoJQH(;-IJ>%>jS7`ckgx2_BZ>=J(?=VegRB^j-D>J5|Hb)oIO_(xNoeZR8)l&;CGv*bj<(q +9BVBBZ)LM%kVd(4->a^gFEvP^sqV*aeyi5RTPn+*vA|NIxpfA=xk1YQ?!BgJ;^=7Y@Ja6G +|A@(OCgY_~nY3>);oKl#q&O>qYxf*bJ>G!ll<{Suwg&_fae6S2l(6xxGs7cleRLP>qJOhPv7Z#cwjPJ +~`%Gs{9S#3g_*iX8S=8IJvHkO7mJ;b>VSumQ-1h-{+2$Bh@qpZ^n&Lks~yNH!+iy5^F;MQk&jL;*p5HP8g`-XB1b +_BhB#YfvNHlCWuSLvURdM3E*Ko(bHq{X%t_&9h9<`;NJ<-fuA3OFNP;Gsn1oD#EfpBU><%^=1qSe1Po +mMZ7jox{_lw1kCMPY*OX%h;&qo4O*63pM}y#b)ydo)-xrz7nIoB8k*!6B;sqd#O1!<4UGG{fI#*^FDH +NvcD^r&=}+}b|4Sl$C`*s;yX~j<^vm;1G7o56w+uu)b3D|`QO6RDl-OayJkTX6oRZuyzLbAM^^p#k&* +Hp>V)Q!$U<6U7p!fcRNmiH^F9}6_h)5`}0+gLT$Y&3rO5PDNvvz~h38}j!*eVZ-@PtJ3V(}UN;zj&S;p +3yQMfWbRKJrWk!+}hZT76P6x5o~Imy@z374{naJ@ch&zmJjUR}-!TNNj4Z=FmKwk6CF{1^#X;_iS$|B +VjFCe9qDn3&BNy(w!=MguhJX{tQA%IBWl45GaYH?wBzSBh)yG5N$b4L;9?Wy7SLc8N6H9tm2|0n_v^7 +d_=>J6b8L(rOyiUF5b*M&@v;m!RfCZnMDB=9)`r2_OoSh`CRsi(Wg2(OItm*~sinh|34kx+Gl29n&WU +nWrad%4S>y}`&ImN3twJFjg#LYXh0S+%p5wA;&jaX)bY9dozdZvV-flvz|?*( +;$_zi&GRSCo{vLsG>7aZiYw~EtVC(vG41Wy4CK0K!>so%Tk-_x0$DB*4LG;lCwh^*B&;M&AJ^%u~AMP +Ix&i`m<=nR(^v?;=QU1>RTu5$KPe?xn@lA7CP@ +P)x!=pDt4U$)3}7cI3X`Ek-V!DyWqx7LxT?W77+u1#P}QagQ4ozPAjKNLlD_E(7#_+7iA$6a5HX;*Xz;n+7h=FLPh6Ov*1cDH +Fvt`QjScuG;)WfI{GpQ>!_kwl +u=qVOA$eZu#hHwWWB|L+t~Gk@sU|?v7vWJ{U8X1Z_D(BD{Q(se7{YOJZ%R`w-!_>0mvNNjVj3gAQi;d +P(AM2wHnbq7Y?k!g)p7@2>fKf*A0l@_?hK>WDYYTzN_p3(kkUUm22~VU{bCY*9;QZNG4DFvJtSrugjK +JnI-dX$!5aXV)Ir{`{PG&`y+pZx;>yZ*ow^`1#*t4?*iPazr~?pPeI}P)&e@ww^>Stv0WYcE+5*vd}# +0Tp}mVk3+C(va6@P9(<3XcIVQS9KZE|?ot`3#Sfc{S*17-2faf6Fsu#Fqyd_xTlHr>#;w%c6qZ9 +`@id5VDop&SEW;sXi?8PwScbJwZGs2wlbibx=Gi;Mt1nzXOf6tP5R+x%+osdTMQrX~|72!>6bcRU5domWIPz=V&oQy&T|>)`b~AQqY}=-T`^(h;9@!Q2NuYc>ug`(Vz3b+L=Kn(h6U}6Lad&wW +uG`0Vt|ie>Rd6Cgzkhv8l^2$)wtD;)0!-QPXPI`9bIT!QB4Ah*T=or?QpgK&yjXP|~Gj$i$BOkB|d|! +{sqX`$}wmQ4KEi=>a6HMyG@>qiP;Jn$Qqk^J}OJ-A%fDrUCtWW`VG+U)K_0=LO;1^TPdm_vLr--etyn +hgs5j_p%b*i^uW)ZBF#hXR4jY5Vi4QAG_*_EM-47`h*Ios*U-7K +!e#Dib*AXY;U@b^-t;92XDApt8MsjWpYV88a?!}@|5=$n{1@>J=14ruF2%w909OBpN^k?l(0SgbUJ`L +t(ZC?Sv;wtgv#SW1fvWzY5K8GruHQFQul=0BbES;Lu6!D85H#FRIZW3u)sFc$$;p^kT^B~fj1!_X +*Z*9b;SA(;AYU%4r}jbb~3Js?ND*Wh1W|zW)s;5JroTp{b;@7nzznGAfh* +a`O)?93iv>T3rEbkVG9R{*n7t{9#W1KeKW`xap8g=bt!V<_Y$N!p?{^H$;&-0Ir#L-BY7THd(P3<==j +0Rn4;__*qA1w*wBfeQ_!wxJwUFM;G@lYubz05-kdFWR>w1kIhd1yHgJ;_3Ztwa{_FpqeNub{LBzTm9% +PKf^?i!O_ViuJg)H%cGE#xWeh9#?vgjyo +Uu;rLCP`g!72VjnjzFGafo!c$n!wtNCLUkOjxIXA&emZ0xP{Oy_^gQ(nZpZxLICt`q+4ORAnUs;7<7- +LQQ^(_TeAO$ghB4@6wS{IP>vBwfB{|1Ty@rY2a)yaINndrGF6M+Yiyy}=VSYFjo>sBuH3rqzK*-_Y+gEnX^V8=N6fgJD%Sb!dLib3) +q})UTw}56SCi>OL2GnLY@FzB23nxs&Na+~Lzq|%1r-bYUfih6&ev%hOXl>Q6JV~u54?t|hUaBY=J80| +t*rUSo^VkMG6vDgdNO7ZEAKj%uV}-?pgk0#M6v-1m<=Afy;O5+$SGM^| +L6a6Rtlk^MlmBU%53clz|L{KOm%{?8b3!~IMan2hj>WEp>fxqO>09xTa*c=|O&bkBZ9>g0H(bCr@MM_c($Bhu5aD?bLRwh57eam^?{-K|Ak^?@{%eR#$! +9=)>XT;&q_03L5FNK;evFEL^+aB{;Tv+^C(hl$}dV;9ssh1EQnr$E@v!ejn~-1a-w8uU=*y&(Axhdoi +|&)j62@xJK4g(-RW&umJ5|7Z01Vp|@LdLH$6jCvWOR{KMrDq9rNo+x77F+x1{(*=PmZD~ETOHdD0p93JY;YeR!lbUI7g8n+Vp$cAXaxulOitgXMLpaxF80z +3Q7+zPM~I)s-4RU`ZsxAC@n(v^YiSb$xN4XZqshbCOv3@N?_Tat!du)io*A1PseO4c8KCM1qRda=!3` +Vtxjx;Y6IYrcUVM(!}vukS}vYvKwTM(n?z*%h<2!ZDvQTqf*ZxWtUmEId_Mm5aZiaP{k +n?!cg#(~@$Q49?=F@wWob~qLfF;;|cxbhU+IW`=#|A?br;r8q-f2V~T> +=0S_X33)509l%k8z#y9J&-XOL}_yw!x3dT57u#bWNU?I4grRM!idO07sHz4elic9jUO?>y{yY1v8nHj +3dypcLB@2|A2<)P<1zVm^m*Z|x=+sTZ?j(Eb|%mIuI7`B!&(WItiwIN$PZg#KE|-ayny2EOj<*$&7u@ +$)PH9H%$QX`C#7xSte;}Y)4tRXi)(CIEG#n3cgZDkRjE5-uahEh3ldk? +P$&)#k#Sw2Xp@D(WT2gRD}nZS<@Cb+)Ps1_`Dy(`#oQWjc@&0iEa#h}x(MU4D}jiB%fD9n0~xb$EOhs +Q$V_|}F_FSV?haGH5f*zqyOcp8^Va-@WJxaz@cs?O_lZhF5Cr(N9HHsbg-)}po8JiAuZ>Zv6ACpO&1I +u|Az{KWRv#ASoDgO7ac8?%~v-D +h{cU3X{1$t6r=35ew*RA`ghzq_%I52{!F7KU~CF#8*QG`D{B1Y%K-UACWRvF-xQC5hcTyk&ME0tL65B +}8e&A!=Qf&s9$R%!M?Kz{Fse;!JP9OS^npM#;kVcm%9c$rLQ!UN&TQ7I;t|)tI=I@S#ZuHXtkSEeYca +EG#dpy9gC2W)6FBr+-pvgtM*2LNdKSwrw^%&q*hXAasbp-Ft52f=SbR=KK`G0dhCJ-E-y+$@HHG*IYs +v*{3f9$AY!fo+7yCVDBweJ?3VbQ=C?1j2w&H~+w5&C$cuWKV+>Ks1zlT;xA>Q@ii~ND2VbF6(BDy3_J +0f|GsIC3>TF45t^z%qS!dUlmwCT$}f^#xT?Tf4$VG34wI^FFx*Jz4*{@{OmW_i$BJDv8e}p@g4NygycDahJpVMitoK +U0-bVzX?%@_%^bw1YrQd?y%9`p>ws)rlfQ%SEmU7u}sCIdRhVyUkNl)LVNbC$0MD=wmK@)cCsnTleDuYbuhgVH^DtE%6Ow0ns@7?{Gp@jFvy +Yuvp9k$N}|tTH}(*Rht)CkGpIHO)f!FFCFs|}Cdq^QHc+eRJICj$gx#Ej=sqv*t%FpDWsatEAA<|W%? +_$XCcJzYh);Lk!2mg& +AU!h4kwZt7QQA{B6HX)$zTf?lv&qLAkPM?QO_Lq%f4ia3 +wCB}kL-Ux_RKu|d^RqnL)x(!|%$LjCU|g?ZVRIX-hgR8`aP{-tl+zzZ{6d-X{puR{6A8IzT^Ewe)3O<4t4Vi4#Q|-_S-?dLY1W@uI}x*-?oCoukyd`v&l{k0E#65-D+FeD*}{ +velj597{~vzY0Alr`4-A9e*jKh&&kBUg&I)=eE%|_Dr|x<$T|A7#xTrFMW!TI0&@m5Z +Y`{o@0uxEg}!1h2LSXGY|DGNPt!B7Z<^b-EkH-sNkui&LH~B90xI=!xt%#4)|Opvh<|8`6rDrQs1nY&mnIo^;$E-s;aQL;8o={ +jc=uH?8UqnI@Sv3gsniHO&=%UyCOG;9H{XdhZR};ISku5Zt=bt?xwYVV}JEtzD*CD|2$B7{nD5)DlVW<8y9rY3On0J<;L)SJRam6cZxAHhBXL!z0&!BG}Oitj<2iXLE&*`9CBn9Z>lyH2S$i1EDi|3L)P +MpU3ar_5@q)pNe$E0q-5+pm6ArkT0ipxtZJsm;w4!OKFIDSWtAbDCY@3lF029Wac<*%J8 +xJ9oo)N+73I66=JDsbPyLpf#jaAWuR!m?&P@VXyE**(xl{0Ji~_e9MJCl!0;(pF7AYa?BrUdpZLZ8Cd +T(p$Ufs`88VeU>=!`5WSvUWS@_;qWD2pbLx9OyJj{Dg2yVA!Jwv?luV{O<2kzxmEU}qaKh^6f2AF<2g +5_%=on}#&N~d%C(;>hm=AbL`>8DrJ1Ac3+3$E0nvC)W+En +T4=smbk)l!p^rDCYb&Zw0$z&DVKM3H$Dp#^}+p!N_ZrKi3Fg&p-$D^=vA`lZTpir_gS9N-DpxqgrBl? +H`>LTFylN$cJ0%1a@ZW6?gaS)(zMQRwbm4nF#e8bnAK}&)BA{L4Y{(XLm5c_!$b2Rq-KD)9bUjFEZao +A65c_OU{Zcf1nucLD8=L~0x~ky1dWg)x6v9dvW1R5J;FyeLGeG%#{CKX9<9vGoAVcW$joAND@ORy ++ak)gXu9P1S@6Z{WU_u_T3 +OLH-Q_)b^>ciN$x7oHvP*9qm}LE*0p{$gr}{(RiuPiz_le^3H`coBH%z#mo!o)mw&@F%9WcU5J&h3L# +n$v*#QUe$r%4*E7j{2j=^^t7Ug#SMHa!PbzA0Vz(htuk +O+0c2Z4INQQsT(Mz)yFN6|!Tx@ROZt~#BIdR9V{gyJ6Op}%z}|oul~tVkKk&Cp>q5EyyrUO!xMLS{xK +B8T`#QnlK1^`9O>quaLVvs`$>Fv?l;Cj7`*XM@Nv3pHoWm`lC41r=4xNVR)IG@Iq9}pW8}~3Kr#;l4$ +t~~CDRkCm%9qM+?9~=8qVf+?e53sns+DX{_fpLHrM~spZ@n$U9|7t +%de`c>Z>ISUZX>B2SRebs);p7Y+m(>Av8|EngW7st1B!yqX=!S)da7cjHS`%=HZT(OeB~q6YjZUFe?Xd{&*y&ZFD75Htk?U$DSA{ +7%&;i_dZ1JLlr9t!PPxQ24BzxdKP(W4{+1$@gc~-TG>mGAvRX@WH%BrKFHJjpqUiD04hl<(l5~8m$jQ +tdi88&eZa}y1V`cTx(v`)L$U>`8esXb&9;?TX|-XCCicD7}AcfX4^*a9w<%Nr%q(c$KtcQMW7=cE^s(m?jI(e?wbw8-fi@Hl! +`L4CSY7%P}L*DAsxSk&$PPgwguz^>1CgwFdHx+^P6`m})B^9Sq4BeQ@mV>gxw`%dV`BFVPiTP8GO6_M +Qas4)5?IZJyHf1Q#%nZ`h)BdVSc~v`nE=Z2+^WxzbcIc9)LlUQU0CTE8ids9nU}+S+W@kbTpg#7>Ht0 +G*yap1Jx09W9KZJr{By07ruw2JEI!wp2n5JpsUG!@ZeK3Y)|%hJ>#AVx0O{sdvF4`&+dHbkD; +T8Ofr&Dbw%L%(2Lh4VCVymJkFVC3JHTIaRCzFw0V*hf3Y0rT2bJR5^kg~n0om99MPgW_K&k@0cyhloH +)EM>C^Mq33@^|NMX}7yiD?N&ia+w9K_&BAwi^X<&`-DpuNFO1%V&KAM5uNJo@sBAJ?-L8eq>?01)*QU +f;WE#wa2g;9CVdfa|0fus5+Y>);yPj=c1G>sp^(=G#TdFEV{L7ey;6wpnPM1d{Rul37DIKEK_#qZWJo +w@8P~X8a=0s6l;(YN;hv*vY3-}z}OVs%DAnc%0_F@LzfN@MEoW^tDlN@O6pGs360`vg^|S)BLkXVibI +Q^xidD!$N0A&^BX@6#|Bjo`Y*PG89M*l&{%E+pfrRmC8U+wrr&8z&SwZ3Zy=$?S*6Ey>qRc +o_3UC#l8k>Y~zW`n+VuOMI|)Orups))Gat-SR(G-1Ki2GLSqISyi%y8&kt~;P60GwSd>!sgxCiR+$qp!C2q51==aIdQt4nSW`} +iJ_O*?b07|(@|`sN1HdZ(=RxvFiInrn4(cOYib*pvpS+#yuFW97Z}|xg=>cB+;@Z~i>IB3F+76}{beuEWKtWK~E7!~QEm&SMC|Ak7q5w3vEU#KC!b9|%V5;Pn +4af_C0GjD1_W*9C^VV1W9Ap7(X_%gwh-Ca@>na->u0tmI1zoGz2X_csB{(uo<~#*Ii&vw@Z&d-6utT^x~%9U>7uQS$N2 +h+?%2X55N%^=-~CYc&FO#VJUh4F|2irO+1uB0d9P+5ZydH2J)b~@J-Q{y8}TG$-a+Jze}FenVZ}Gd8- +LDF;Hx0%!3#-(k-~?*LA&GUAPan6I-OX0U_l05HtkcB@-S(Vs$<9+#b5C&0^Zt!A{(vUl5|MD2gHot9 +}2>1RvUX|0KJLv3Wx9B2P2do!Je`pcAN?{~Rhl;Q1%l6*pq*#`e$XxyQ?%7>L +ObR=-IVpwxgcs7yL>k@y98aI@7QlmEApf2M;g{XeGn-fPpUr({0BJLt0rV-T@(h+eyDGETWv_eb8#yr +IE&Q6M)yGkf=vFq#p3_S+sk%8~3Rut1X1=S;1jl-LD9k~M~YnRe$lX*t?_V?8x&rBM1 +W+T!Rt`)Hk%?FKIHIp$dyq&-I+2dek7{jg&r&TfcTzEs7<+!nOAzII$2S2KpBm$n1A`oFsjR)#y2n>< +?h6BNqgdsR&JB&p6c`lNC#dy^rT%-t&$<=6O7w!%d=#XQVVP(MO@RU+r;&4RQr}GLaJqeSx+&Nm$81| +o{!Y+b$Z!>SJ3)=WPE^7avT&wB{QHcXHA&~>9;_qLOY+nURqTw@LeI}L;4`Qy>XLvtDz3oJXfiMc*@( +iQrsO3bw9HMPnDaIx?FS$&~=`^;Ou{YT;vUR?m2cSs-63D{I((P&k<_n$DYW3ejizweG{O#DnQzc$uZ +zR^L>QkH4W@?2y`35BXni(H1jTJrMjap|9!HRBuTxhvh8opf7*U3+QF$UmZVxf~xMiG+ +g%EjqW0+7sN^FIl~Y`uL#_=>%}w72j|RY$m3~ICZa|$K3LuW8J*AJt$?kP);Sh0>MCB;P+DxRX+y%Q; +|*qzl-n1cLg)GM*{7%V-4-R-pjFZ5#861>#w`9?;Lr{-5FSJUhJy4~1(>26D;C2CGXr+}S!&%{Dp +pDq4XKnsui0B&CVktMP-7@qY{e+@__O-v7%Q!l-XT1>!bK-et|b&IusPvx7?ol{De4GxIwHv-jr&eo7 +(60}c6-7JyKC@0{S!q8SodOp1qk{VB0poMv4GwQ;3LPrcxj-Ryg=eYRu(|G*W_;XeKsid-JXgszI4Qj +FZ;?I^clhmUr$WJ7(2A#IGSdmz>hiQ6#?suTYrinG#?B#An(PE`y&0ZF|R~fFw9uRA?Sg2gAc>~FQ4t +`XHfFRmz!@YA*1WRpr!s>GI188{N7a2*hKgx$NI{mNF31(95+ZV$vsJ +)3fEczq+3KbjFBV9(sDG7JHbB_*(2yenwr3J;tfA7F(i}Yq6zbO&VGNV=A|SXtCvDs0k{nzXJPIVzgHH3h=s8tuY +0NZI_(0Mc&b?y8sXffLU7@0Q7XD)t5g=NdrY0avjgv0xMpQK85!?*qLy*?x@J_2f$@7vFmC;1AC&(a% +Z#8U6LzB?mS-WbKj}YkeIg{rg{AtI>`Ry76c_daaSB*fC}gV*S*Q5fCzPyo)W$(0l_FQ8*>+!us%eNHnM(&0bM(xoyDaVm&3coPi~8`a2Bk}Cv1V94jhgR +YfWdhR+{~!A!Iy}#y^6RA!%RqNS@P@IO8l%+08jY|(eKt-weKYXBze%V`36A8-8dhjg)KxQXp>4yf|viZ$%m5vU@N*lf;?o`& +wIcB$&jLuwIX3F}@#ylYrhHF}B)PhVc$G6zeRZ>N?|&( +9vL-H^H7a9Ec!SL7-mUK$^C=aL|rxSG-Y53fF%?83A5kfYvcm&n=buh2B6jLB;#fV$OTP;K63+z5Ps8 +P+qaiuqcxj*ko(EIosz|Dk_+m1mM_V{?J$dtp`AT@AAizyd^JH=-2GbeD-CykU>c-?cbfwxwx^a+6@1 +x;L2=I|g#t!~sBp`XGo+QCJq2PC+IJ`q=p+sCJ1jXFgP#^A%*tR0p&B4PlHD+5NVQ3KG*!UW(s($nFb +jPMGzsi7|||DNgvcoL@ATZt_B}SGZ*cjG4+qA>-+CnSAGCSAYMqfjKf3zsk@17~ApAZ+dQid^M=okXf +&Wb}AED+h|LScOb&bvDV-2VQduO_=Y}FB0WABs249UiuaaxH2x_Ws`1lRt|w!s69&FLCs#h@jwr&VO|;@^gMJB +;M5AXVirR?~qsVmMQ;1QIuJL*SX{IeGEB+i3D+ePPKs>1WXgQ8<|cdsamAa2rvOR40-r!b$KrE2EK7U>I}=g0L)MB|D~W5 +iGIm7YpMl%q0Ja?5DqF(bC#6+e>HF-%5FjY|R*jR54NPWY{C+soe*0(r1ztJG=OFq&_?@b%Ggqk~Ffe ++FiyQgFYW4vu1E<^<)gTbb`~X>WWQE+$;vQoePGPTn(FYUNjFLE+MClAjZa9Dm+BQp1hc4nZSdq*sR* +Mg6fnfAXUeKjT@H-wBTGg2xWgPrYQii~9t{6(=HQ1u(&ho0FC;5vhiWk8k)YGD$@u-w2Ui^YxT8=+u_ +*05MK|lFAF&fU+{|OoC?)Q`O)dTSA%~xND{t>TVzQDF!zMtPcvW5PmjBi<~cKYl0lUsS9UEKu)j9oy< +-15F%iu+ZV&t^C(E4j9S#1>HfMJT6lWrw<&P@X&lHOB8{jo+ePHQ#1Co4Bg(eEV=2w+|=8=(yJFBcH{ +!UMF=y^_okdvG*|vPCr*IiGwset94h6}#fyT3->fW#dqO`+f)n^cTri=-=LB4Ra;-&t*)B9Yuf6W9h?v8N1)@r^P0()SP>N)1~fkD8cQSdQLfw}b7Vzy1UN#6qq_rsIWL)8w4fVx48|g=s1&S9TeZdIf#t-9#_F`Jfw#H8a_P +D_D+kAwF7!l2pSvmdvl~_VzpcG7nX%g^ZKnF_^hc{C +voe~Ut@WsPUzj)ZmFD}G~y(uy5_*E(!Cq{j2`?gW6v&+mYV5fRQhV&gV*=RlAkDp&L!)}NGp&Gxt5kE +>nQUiQR?=a6ah2kgdw7~ONX$?GbMvpju?yJ_Kg#5ro0$iB-c +I@f^ZH*th80kmt +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 +l6UTrd&)k!kw!f8m|v88*HEyZ1TaxqMbD< +R5<*cYWOmwIi#hlXdPf{cm2BbpgNYyAD_MT0BY^I<96Bf5-R@swLx?o|4f8lfD7ay{Hf+P31~Zso*gV +LMd!Hc;Rswge(G6w=9C1?W^^d>ciLKo$PUpN%z%0QmR{!-0+nw*1W+sR9XNhS2p}V_Pzx!%A#w0mg{m +|5Kt7GJZH``bEbM#gQD_p=wUlZIc;eDB;+vm>2?yGO^nI)ipo1>d_ +SEDk>u}|1*xnTJ(i7v|2-9z`1wikPWn8x?Fam#942F5l&7L~5KV*F2~ut#?m$LL11(-3%f$9Zi8$NFN +@ox@N+fPzcF~36k0{*~6=?e$IK>=+Jd(3^Rm0gg_Yg~fx+bL)n@w#gDt2lbCUwFK$}#}@;NG*qzssI> +%zL)qTRy^8VSOxvY1w#j_mfi4thMTGcUpojcR!@n)?|7%XkzyZ`=a?S>J2D(xi@Q)Pp>&)_rQLVwgdX9*Bj +>XVNiZ*&1HP9mc#$r+>mY?8f^XtY!D$hX-&NlRM+e+R|hAhB&}+)DCs0Wpyz?3m&=uW`Z3}iz4KiIPOXv@w^Ejz5O_VBeGY#DW)DheE?Fz_14C0lXP<+!Vn%1J28t;GBFMCqEi ++1s42#*EIb1o5x-{aoQ9@i<<3(HlapZA-3EuiViJKN*1%Dn544R)B6oIcb-h|+V-K&R<9D@OG!$iXTk6ShF09j4ZR$@S8Pb$S2Itx(#>{UZ +8MbF+RDL10?Ph!)oW@!DxYhhG;{zjpLHh%DUCJF;m#O_H*=N +(izih^rIXXla7!sCUwWp`gkL$=@1Zz-AI~(%f9CwH92$iY0CM|ZYjp +K6*$OrTIMS&A-8YAxhqKk>c^uP>^30!ZnQ-#2$_5gNBTO-GSa|_}3w9z#)+IK34wIRRnHJg7xqPHRFY_|sKY^C8k+qcx_v+Edh+!^dT#sVL +b#u%|#3KBr%ZAr)Pj29}~EM72NY(|gv1x6r0jF5<9lmlU);20^IBi#awV+1cjU%klD`D^sa&C9Ry!rs +{j94r!#-TtzJJ%&{{*hAsM9#l;M5v$T|`>BQ^-Mvn@gxmdWA4p@yc9>t)OF5=4li5ttv~z4O-mBmJK3==T(MrGgN&7S$V@X@5dLZsPr(g8d%P7?a)i#O_?MeZsUNnoioo^ +LP(uxO^gXnDWYYIRx3`{R4X2XWH1Kigk}MrL)|W(^l_oz7CI@`mOiyh1r-Iw{NR=Gb{3K;9(WqxK-u0 +dJl5|^YWlR9(X*mzQxlrlOgWrPQZ#5KLPONnpJa1UQaxY{>GyS5 +&ud#DC1nOiW%t`tfie^#DevCl`32Ql?Fy>AeDg@aQUgnr@Zr$oOPJfVsH&FC+nKdYG7fWEDIdP?(I-C +6-l(5>yDhs3N{Np^B`cPFiGxAwzRt8;JY-a%UNkkm)CgS6HbH +>zK}LByqqtLz`OZwI!x6>`Q73fJRNSMUYGg|cE)a(#8Mu$zOg)IV>~v$61AJO!ep)5e!hE*x0N4lN6 +BGbCKt!4ReJ97AG+Cm0ehJVX&cVI%WM5vmxX71l5$Ls-U;dBPHgWD9u=DG+XDNRlv%Ax1&RkTM} +Dz)iQy<22wNGB`!$433~xnz1Hk{24A +soG?5H@!wW3IwLMHoEoeDg5fcUH!&PRZv$M7=5=P|q-aXrJU5Km!vE#ip`--LJ!!?z$F$?)xn2QmC5#61|ki`wijqstX`hNAM2Io~Yb4xfxT*)Hlu%t@xF +)^PR%qIqX3YgC%<`WM-w=ths=92_Inarm@^GN}pH0I;Ye6-+`!hFsxXVVS%+{k>sWj;pmQ8S;T%%==| +CNQ5p%N-LCc#dM8&n|b&MBu4pp7$?zOiADw!aU2DJL%5tUjg+4@Z%zWFt9Gx}^(3{*L#7k!D!4t8GiZ+_uqs&i<$mc1(z^+D_V;?S4-tD*Z+j14u@UQKQ`U$2OxSC=3FH&VYOc +1u9=D!bzOU82Ntoe?wP`h>KKX0E5f%AsFLWrDzYoH2nk^JqWUpn9?hUb%{#NVVk7=!~A{B!Y_UbD4nG +f0(+6Y+q9T)e(N*Ldw701lOE85IMwe>#+0UiN(KaMK^_hYC>MVrNjUlDlX9_(9a+dtDjgB1mdt#*A7E +P5eb)^=}rfA5kiakLePQ>V|%32AL|O1JcceqNnj{j0Zf9<55^WhWbL4c57?Y +GI1aN-%0P=DD34`0hjCLw~KSO(*kcLfXg=Mv= +4S|CkC9TKJ%BDtBbhyKteLyTLsHWdt05JN0_YDoalAj>2`!x0U)j7EVHWz-K)E|KJ;N2K%-k_h_~N=S +AqIvtPAKUk}1&?*kW!iAOItGtbswlF4h_5rqaFk?4p2yon7++%km@LZb2b6UQdzJ+$t7aYvBQ#aZf!(cBUa>1%T2>9cC<@3pOrS}8NAVy(8C1TV%S +ep>7isDTGYdJ^hL@^XDq&|nsj#|?Z9=2Lj%vpH?5KO3hHfsm| +8j9ojKNOPh0&F|1XW{BG$SdQTsWYpr5Rlh(aSo7`jy#yGD%hXs2h|uo(6?>W1*?axv^47I-fW{0egv6m)#MUeJjb=eTYsVe^0;y8vyNv>z86B +)i8hdk7Xi0Nm?Ko9icrUCT?w9R%VLi@l4H%aqx3Tz0RcuIY)ph;+S|R%L^A93D#*S|6c}A3v~^e$ekw +RI=--0+O?k&R?o2{pe?pd+AA+us&J*Lt&Jfe-F7s#(f@4r7@b(*ga}6JqJC7nRKM`@Z~IgyCd9-h98& +0=d$nuNBB?MFnpI3etjx(!Ep%qZX5f+Gz6kYvFKu0trSm@%K8T)*@N&Nz-?^Ph38Y-=q0O9Z)1BX7V2 +SiETBnFO`-Ec%{JOzG3=u$jNvNVpzrb4Qt=Z6BdFeAMen7+lO9P_&8e!Hc@FQK5@p?)xJfbV(bWBHwxEkwp-`FI1a68C@FF0)Bp?Rz( +JpLZ2W&a(sC?P@|)~p{jE{B1h`PKdH0+mVu6YjS;s~BZ-l}bO;+xF_L=S53odh7|Plv{pkwMU4~x|dc +e4kecsdyGEzXsTkT$AElQwL4x~h+(LCF?*uiaf+VChp-6TH(FVYr?4?gzx?X?Gdoo^DH--!tc5~qQj1 +08w*M**l_{;~-Bt%!&%0at+B`GRN@kSJQwy*(fq2C@}X$TL;0~*pu2Ce{XE?KB4+$3_Z~E`5k4qGw@B{iQ=y +K2(&5xB2#$VJZsnT8L?710C)0es9}q!mC`~El2A&>PH}5XY3fWV?{uU4E@c)UmF)nv&-AdWO|6hC%> +fC=Z0}R+eTzfrJr9Xt?6cE*^uA8dQBX*l&7&Ejd!xmnSLwR{K{}V$WJb>iX_9^B@N|C;<)%=qiO%M)P +~5jq3>!R|Wwr{f6Mb&>NvUX4RG=zA47&(YCs1IX&h{l9_SaNGNV*$tNoiA5Rsi3v_e-cNKkuu!uMQ0Y +KmkuYi&Y72R#{i}%OGaFF0`M%N*|rWEV@*wqq9}kJP5*yW!rUVRN<*``b8j72i+IDPv;Jjc85&y*B4} +5L(h`pmFXkH`6u&N=+W7I_DKGv95@7H3Vu?AjWV`TE{SiKgGq5dZhOpTC-Uftf`nuE6_wtmF7D%B*xs +AO&FUyBZlo_VJ-(W8b1yXRT`D&EH{jOEd9(pYM2&5~7&dkiBO-p@v;D4$z2uIk-p1!e&r@vh#AER*qx +A$Y$IIY%SxR{>g**>Hy#gqAbjg^tO$_^FBFp;#q4~^{DK@-<0qSVAc+h?a@(kr1H_IT!PIpbhseEgPZ +$2K>Q7P`*PwmM7*XdE-1mF^Vf?_8U?XIzStq?@FEV3SS!;KG7+{%xwF&~qr2)T|ZP$U*in}T0=-&G|a +D7~iT$4jEP9%P=d$3Y$x4?<(UQB|oGdSJ_MR0q}G8T3QY{Ahj4dCFPGCg4$xmeX$B*UmUOcRQiBttsO +JCwJn7weXtwj&dAsF{V5?&>aNL*#T-iwyLdpO^L?W4ykPWd3A=X)_X+j#QhU}Eq+yfRk*?V0KGf7zRC +;HwdX|`N2bHtsQGxzxl&1Os~u3s*5LuM43Kv|r&oOW*VDs`DB05v!S2y&YwpMRV%X$l)-8Cb)E!O1vy +8N{t=e3Wsb@%IF +g#<-zU$Y!}ZD?mLR;wY;d0$k5uTuCgCy +xZOp43!#nq|w&uP7jIFU91Ogr3#t2013NyOc{N?J{1F-%WPbVxtcM#sy$(?I<*+J4LNyyRY3{%-IvIf +IEpi1sktaHbO7Sgy~-`oQOhLoj|G0fu +dX%t8bmqrWDe%HIl3x>ZXU(grt9X>-pKmWyAgl4OzC>`g&utl-p_2yu{cv*kFbhvHHIO%X3Fi)89LOC^5byvCLd>C!xV@le_5MhZUK)A4`r*m +PI$5!imI)|mRo!8k~Z6{LJw@{lypQNn+Kzv^~iigW4i)N3?&)58LrL%rlwl_4Qj9i7iq4QU^H>3fM6g +I5sW^d@uH4afszNUA3L!VQ7Lx&}MLq}6x?G454z`ZA78`hz{p#xp)4Q)^TLwiG&sV?@04qT_W$1(I^+USY8`3}(Bzr@ry4V|%OcS8Jp*JtLH}v`jd9A;zy`g%Ls_S&Qbz1j^ +sfyPtd|rZ3RlVSWodD8Xhg?yC?=Y3EL4$KpE;lT+fg2u5h`zLvUJVc(>|%guMppwwZz+2;Ks4?DngODZ){+0T0iwxBN}<%(VSw +n7f6V|9Wgj#^bg;VtqG`+k(KHtWMAN7NqG|vC7$CCVFJ8d_5%>iBycV}S9qej=s3MO1iw1~ZS&IVdM4 +C@e28h9Yv@h{oZLZ`9VoE65vWosK^;NOa9yCb(Y7Akidh +kZ81vL84k_kf^$RLXjl^UY*n)QOk0A2;hUDmSTn|TMU4#caw|~g_hreHi>Z2!fX;vWj2Y>f2_m*oT6n +kH%W92H%T;zn2=AUv5{-BP+k90fiNxofCW+R%m?WYzsAQ684YfGbiA< +nwG4)`Q=r&iAL^EAX648lMGD(#52PTQa|Ij2++a+$2=!|5N=#*rV=yQijqN9>YqJ}G(Bx0>$FZ#csNg +|cSA%Yz?bCX1Owz-}q;O2;soJlZqM1~S}t|3_Pv`BKc7VSsO1rjGAi6`RRh7$a|So#`E!ssDl*k{+W2 +^i0zLsI)8hf$(M@Sg3-C=ssZk}kh*_>b0H8_aBxlV^6UQtn}Eu4T!SzI^~zD8*gYT*3oAues2E|CW$0 +YpyH2+br<_aAbPgmiRnLMres6z#`jH +X5KbWh*6HDLZZg&$0uB$fEejr0TZobH@|IjV`z+?LX<ad`Dk&5ybNCN3bX+))7rchugmF0Cf@cy#XIQ)@8oT +M5N#P-&x_`_;WaP5n+&N}9#rf+U{BHJ&OphuvwDUc`urNmC%<}(JxrTBO^$ZT>FpL}@MiMPuZFSa?S_ +f`@M5r?hlRHXGHq}?zF8VG*w=9*u7TNQ&P-Qe3(yrZD<_9!+VKII)%4WRKF2wEBP_Jb!u8eJO6iUmO~ +NT=2b$hMc+4DvB3__6X^3SQ-TjfTu8v}#WU^7JD4?gAQ2ScOZfD0U<nw&&yWFtCD|S8H;8>paGSiEAFpDi(5WS +Fqby;pN(b-LA>ar&0R|^zbChvu2Cl~l9`n@>VcI|R9r{TH978>Z^3t6wUomYMdy+fyuTi}P4Jq@6lB16uYaz!RpB<(DTn)yEKhed|^dISL6g#=jMzIrhHu +sBHsk8Z~ZC9r<+tuS$ik&XTs|V80rti9;_3ALRULCr7GJYbb;q;7JW!sv@t1w{QlRim#k?ND0=?P`e6 +9!42)a34>Pb$+^gVbM>Udzl^>%l7n_{FHUH9K@lTCP(nLj98P^NqlZNlPT1(k`Y`8otCK8SE&Mlr!5Y +lWuWg()qsFI!!r_-S=Tl2y*i=jqQTQ_8!W%sG`Z&RGv{(MEO#^Or7YCf4@SC~5T2qb}igft +Uixu9@SHDJmDBdZ=xGilQRUld1$x$raW%4?KpwGJ3va3Dy$k=`b^`u +SWiXJ{T{ldg5u0nAoqhuVN2T*OYwp5FX%DqryjR>#%QBEA}LTSV#p}yw!4GoQWxY`hCJyC$^53ES!Ye +_fv(9yTjfuRh`sVQ4xgatzL)a+MHS;=XbW +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 +Y`*yh +f8cAWpOByFcrE=pTNLS)uy$XY=iVZqkIeDi8qb@4ThC@1-`zC&DR8!V&YTa8Fo&|EC~tsxpQ5VKx(Pd +HiXt^dETk9m^KV#Qf1z!*qdeZilNj(;4hkXY0Yd&+IUYZ6q_5$Yv6xL`KJICt!h$WJ`Br2cSVZ +{?I;xflILv%RXgz)(vkzk;1wXTZ3L1W3W|c1$Z9Y@%RMQ1yQkV5(xU`WQ1Prb1Jy`P!NmamSv%|Hyt! +;bPK`Y{CJ9br14_C4;(YPhGZEuP>K4C=P1hH+e%-p~FPI=qjAVmcgJ#pK?H=WvQ_v+c%%hCf3u%8e85zFw3r*EI(UYnh8)tm_9nI_D&vHSyS|aPBKnY)=iB)BUmd(y_&AZL@=77YAu; +rno^Nw$x~=0C~$R&#dmRw!MpX{+sCSA#<(oDWM826Hzwo6wO1eot@@Ec$U_7KwA^mZf3?Pr5z6L{(J4 +-ur#}S4m4CHSDO3bltYi5ZTM0eG^eR_ml_0J{pVfh=6EX0A2REOm&j5wkms=RJntTzv?4IHaiAd6DnDQC9N2>1Ha$Xr((*0yH->M#L|-=R3__u&(nW%m9Npt +PHm|54(f@k6WG5GDXT9KEb2SRAIvPc$ggsv0xtyiDx0%f|7^CyN2w>uNK0#rQL#fcJYG!x^CIA5TM;r +n_SrVa1Wuo>0~);X-`4){cwGcK{QpQOHgB%#<8RqjXfl_zKs(mER2{icf6-KbcrIo-BXY@H(iMfOIz4 +FGY+uO_XO2--Kx>0CNwKkk6GCQ{yrNgiB0fwzAO~G=hm~A9bLpWyH +<4&USO1cw5L9US`dejCK$Xbw|2yoJLm4y9k{kgo3DeiM~w^c|0LFlc;^yDJ&&{+stB^N)<`Io$R4(&C +S9L5Q!`ba+~WWu(=erD{%<(e&kN26N%B6yO|^Nv4ufc(jrJB=;C{9nlkwBkwunMxrCBWCl@FUoHGiAW +PtH0_0Qbh?mFzMiM2|f&D2RJ}dYiq5g5yKaTqV@6cMq8izytsfhtn!$5asuSp-ihgyAm@@FHFh$z2Tbi6g!d(iV~;?oKB;;Larl+&vZIE(9M7^>@uD2l8?Hvi3;z +m+C9kQ>vF#AE_R!ycLdmNaaiAO66caIgp3g +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 +C8mISk@Z&LQEjqm4mz4m~4 +l_B_bC|+m5{EGyhI1Iip+AR2YWF$bZVr7sy2|HG+`oatIu3Vn_!5WPIo!fwEr;bC8abTDVG4)w9ENik +#G#x+!ePg647PG8aM;Y@aSod}Y~Zkt!(AM1=dhN;at@8%^3UclgToXKV>k@wkVy6UmBBAK{D{Lk4mWX +F&f!0@2KrZi6%)Fy+y1wO{}C;=OzAm&iU;#=k~5g$%U~@pFJlseXrdA0tG&AB!>u=p<(D5l{I~wP*Zq +(B{oft`A5H(C&i@}x|L5=j=I@Wrm$-HNx$~ct{Wh>Uyz@GvaiGr_+J;O-EZYXN@?; +P6m*j{_b9P!G>0z!Ba63+oubQvi+(2N|NTjKY8jpd0uH0UQv);>QD=0Z(=x8OZ=R3KsEsfX4&0!V^6} +Mz#X{8lF(VPXQb@kom^|JjC%vfZq&)`uB%809OuX`6C>wWNn$Kq;{WZe1xe{ERGuB)7*bMz|T0IHw5Y +y4Lpc-1NaC$4S;V2cmSS{0B-;&UITIg;AA-D1J7@OZwL4;JhlBG4#2h;$P?<&0r0kKSzEFJ4j#ekpal +3yEYK0+90wRbl8^$x5q<+tb2zjM;BBJ_*#Q3803$}Tc0~dlg!?!FR|0$(o~AGv*$fbO>v)99hzGzs$3 +VXTz7pVH$FOp10it-W2Y=kF@mV7DHR1qwUl08S_*(!&#zVP)M*>_l0m=ou0N_ItSU#Hp`Xxi#p`QK#M +ih*ngP!Sm;=u#z>NTx!Xp4~2Ke4YmQN$V{7J061pt4W +#At=^)MP?VLwtmfrGRV(W?SguhM)o&o>g09y3Szf6yIm|!TvctIOX)#=QC1HdOZ{uV +%y~9C{RMy#nS6`@{OKlWBg +AP1h=+PM0d55NE60BWxMCi|R|537nT>aZe}|_5@RtBydkdrCNPuOx@b&`CgQa9E<_YjOc;bO)5Z*bT_ +2Yd2?^po+0{$xj)-7P|Lip5ekQexG2iTeg{1z#rFfg0(UJ$_2Y*rTTr`edz`4FJU{Yeh=9Xy*Lel5VS +;Mop%Gr%Re&=$bU0p6YmZ2`Op;9Uk*ZWX|f^I#- +K*OnA0~eUorKLET6coRUk2N@5<1 +HAAM)C1!Hyys!)N5Jm`_{$?O=K%g2K+|S;2SU4Q0q*}Bj6uK=zValDFC6axm0Q`ojc~*^=06f(%{E4p +EdVo~f_mcI4p9Cytk*FF%e;i=o3yfAl0K;Dd+CdzIkG{z32C(EM&PxDadWoe)XnmRSPX$2VR~YUOuxK~%4a7${{SB +BuVb0V89Qr1-3-D-w7I?A&F9SI30OLt5z%LK5`ZNRFcM$J?19}4N*TCu!4sdw`t3w&$??E3yoLYdMjf +A`fco4ujjcl%-2k>tk-vaQ{MwZWUfY*M&>M#=Efe+XiX#hCnGniwso&b-2#(450fU8eHUjxsV1N`j-s +{_J^K8Jn>|NQ_Pzl8n*9AWKASl0uNaO+9NR|wOZ+1Swo^gab$3%DGh^%RqfHUW(P9_B3YN7xC^7l4x= +2#NcF%Rc~(97p&J$9Dk?7GMs6_@MxwY=L(f;9CLq|B=mCk$Bz$&t*XTc>wSDk-yV_WM@{?5CsN>6!pyIIwLwJ%$5A4Hqjg{L1m$VZ5w+J~DcOQ`>_-)z$UjkH0dPZgusq>cxLkFaFzm@!!>pe?u?+$ +9wS?dhka*YzO$u?*W+$hPhKrpseF{C8Hom`}r(uWXf{hQ#6l?p}UG-ht`!^Di>@8jRm~BtQSiLGHfD!i&KFBD +x{}ix7@Kh_i;}&)h}rG=5{_kps-5o#uZM%V%yVUleUe8nJ5NhxNO7rm*mn;VZn6Y`Nh^5ZY84LQqn0UhYRR5>EX)wkI`nGKD5NR-_KV~7YV2n?VpdV+!G=Ew +*7EI(-{KtaH#ldxJn%&DM0}BjxdEDWVl@m76^zz7fJlAxSdwJHtBbE~xJnry#!=r#_u!wvf#CiRX_&h +N&5!PktWcKXYS;=)&W*wYB8gXP+fIcI==${>dkwkng_x&cWwK+#Ucjmhq*X-q;g&8t)We&)-AV>^ +Zw9e{l&}16`EAM-gsB;apOkv;DZm6haP%}Y~H+?Y} +vAfY}>Yt_U}s|D8KgFYjiGq>#euQhx=Y4>wXr=Ypo)A_uY5Np+kqr2OoSujvhTqKKke*a^l1Z^5vIbl +C$3(Cm;SIlCQu1n({?UOAGn!?2qKz^CD?&Z6)pP?UYyW=N1R=2Uw$f0n^B9K^6zT@q@u02m@Ft_92tR +G2~WpCRrgaC7Z;JHiAppMmsyA^lNEe;m?(1?j(q^evG7ETnI9NgsC&tbbI5uH|dZAcw>H>Cq<<9BzX<8;A^kB(|D8*E5I +!uf8sP%#LzK|Z~pH>iJL}ec$-T>+6L;5=){ezJHbx8k_OL`JWGDtrdvr(j$#KN$>jvN8bZzVb+2 +H!%&F-9WJyo-oSHxqH=D@1&`frv*>x};Y^`s*OQ9?~y_^ktC#uaJH#q<5i=}$$dGHMIYL!a(sVktIxThbWR*H=RLt<8(}BuU2h&CjoXXi_@& +uJ?th>T9esWfNR=Q5ZYw5W8K$n_0B{j}N=6fR#Kw9b4Do1$M__!b+FPSV@3pK(tKjvr;k2jN||}?-UGAoeb=nMx5bDA7HQ)zu>?b +S*huhlY!R=am}Cov_Zk+(^Wu6ol7w0ucpD^e|1;jZQV8TQEuM`b+N +?EQ)n&IuzxTn?aDM`}fFmYkGKkl;z6FTsAkEhFSAXSALvdNT6cC6EommX +eCu5SRD0_HjGry{xO8zwW90es+r2goCjJVG9Q^ilHoCz>#v0WrDgZt?3F7s?$6ujv0; +|z?;T2xZ6fEV4}@S=N)1dBV!81Wr4Q*0nh#Sh6w@eA^@_#M2zTV2w_3o!#$^hS8u){cbq*FpLeNS_Aj +Z-w+rA^l$<{iBfn6-a*w(mUUCf66I;$|?U>mw5O +B{@k8~X<{{Sew5$fi-0SDa_B;wK$J@N#)Pd8z-6-#?=m#`@xx|FFS>2P0AOK@)-3`1tt1%tEiZM04I~ +0vu)vdTcLAfgNqMIb;R0pbXViZTWS9gPqmkc2> +Z1ceYFBOn-HWR#~Q-GGqpL_nT`yaYv12}A)wc_|Wccqk7eAZO3#_V0!tZ4wfOt^H?i)y=P8zu!IId*0 +{#x>Lo^v#+>E#6Nug{Q2G0@2op>=FB&zPoF-azUSDfQ>TvW@$mWc=g(+f`t=uIe6j3<4?dV&qehK}(b +3UO986)(b@&Pe`%sJ`&mhd%!Aef#!J)jV1@Zrms*PMi?+r?PkNU +J6ul`0!!T{9AZmF^KxvFH1^FzE!M8_w3p8#^%kN$Fy(XzNsh3C%!UrrziN84rqa|zjh{%?N?a%s>tv8 +Y)VQ>)6&vX{#W@QszLv6b-#D14nDv&TC`|UANrIoL;sE)J7n$JwW9RNnl)<--N%m~mv6rLMv97xWcTj +f=5w5*F#@lDt>?^Nwrttx)vH&J){yPN@#DuomX?+lmy?szRpV-CUsbD_p^6ladB +}CxNddnKX>k&Xe=|mZr!@gbPsb*o;)d=Hf<`~=UuyY$>*PcZs=707}|M!--DSOI$)!t|&%;>|GoF#o1%P-P?^XE!u4E@N*fddB&4~`x^YMw(QI-xpjj>W~rW}+ML +gCl%HcQ|L~&YgySc&Pd>@ZsuJd$(C|==00^`W4<+9lpOh^k2MqQPd3?`HzZKiV4?q0SOlaS}eY??>{rmTu$6&w)AaCdiJc71Wr$rJEh{Sv%^1z28O}2?N+$_>~lgJZ0MDm +Y|T)23#Sas!hH>BJ}|Aq}4rq`=iubIa1IchKAhrs~7>^b`i9(V!mJcjp&4jnR+$Lu-#4ZX+#SfHEzhs +WN(i^S~}iQOa8dY4Fxk3^boR}5Q4?o|x+-xY~?MfdyKSBWNrS2m8*R +!z1Jd`N!^R&SnUDOzD64U=Tz5Pes})t*sP8GnJdP{XzPZibd+JckaWiBK_(!#M*!4U;U9VLwRE5oPC8 +C$Q80-aiHVK8FG(a*duzu=yp`(QN_?%<^PZSf*9HqiM0GUh#^vS;SXCx8f>gS{c4M+-*wkr&6E#0=oz +-9JRHb+Me@b|^FDro^RP4S5&yO7C>XvJ>7*DQR18Z`Nma)8I%iiz|4%>tB9z|`L +gU@J5Lsl>MXMd$H;4gVhs^JzY%%zE0M>Kh&%#@&mDbMnTfXg{9#a^u}Sqe1ogSm`k+p$#Vzl@1snR6& +r=?F;DHFW=h@JYoP^>)?vd+I92N_*jvO8SXob8vB3gXI+Q=K}Z4Cy-GvA6l6)bVqdK7+y0 +=f>D1wW)WhP5K|jP-jihw(1yL9{mv!5oPkPJ{~{+3x1%#_yfxe^nvFV1N5uilTEMp5&y_&Su~=JcooA +u#lT2V`}wqD=%IA{=~xhh)n_nRea0r;_kr&Fdm{IMLH9p=t?K`FbD2-dqhIa4k$=^-9O5B#&f>6Gz<@ +ufNVcFKJGpXfJ1Kmzwd5;?g^D3>XpsK&Ga}D@rx;2^x*refGd8L7!E5>q2CL6tu=2iz3ujNtzDq$2&nkvqClrHApF2DH+^#rilcGKj` +e$pC?p6$S*OhCR4E-A4PifYyS%k(Y+0c(&$Q=!Q0Ew^*?K*n9FC>?Xbn-^SQ5E=tx +ahLxGEWa+5Z5>O1G`usPwNz+r>$&`WZWnxkX8Q-sijOi06lZW+`L;H#h26v3n*oiSJqF?R3k$=#J2LTVpyXXR*Y5*stf2d7`zUKSq_G2U>ML|CiGVfed8pv&w~a71D +n*!6=O8pR=)gWGw@-=5zNJl7mMHT7vds2-8`vGPk#RSXDNCkK{k(XA?wE~2GxbP6~kMOK4X*ehP9P>L +)yyBv>2I@8Y@$i+sS0b@RDK}rx->n21aO%@#o_5?GN;;EExG$xy}a5OE0}7fk43EsR|B@g>y@Gzb#v` +TgWEGuud@;eO3(EB&*N4YLn&;iILaSV&zrEkfRu0Rt$epIU1W7X9&e6wR6Q7Z+}<5{fB-l|E*iMt`7~ ++H*w;`G7O*gj7sAl=!f?mJ9 +dN*vSi5;6MGTMOqw)Fh7TWJhM_VXmGOjuOB&(l;FZbbk3 +_3MA5vCf|?{f!zmYTmbR-_$;R`h2H$)bPRU^~z(9Jtp0{b(2?Kc|~4(?KPP(V}_xJ{2qG2fG@yLSRCX +qV8EUthxkI)*g82*_Ph!G7iGtS;n!k};lUUKea0ru&Ugg!Z3pJwsPglfa< +X5dy`QX;)B_aC!(dzlcfpe-NJS +|(coH1+GEK>(zZAX_SD=SOleeZ|vBypQ5LoJ9m~*qedA%fC2j3w{I^!dh{ +@_!viqb2?m?@l8X^vBlpnB5g7uTTegU)_`KSZzt*c)ulb4 +V~Qx217zZf^_N9#mLrz1q%%Q>@|DNW9UW?us^&`Y>NC4YoiC~06M{SvB66FRlQDjSXfxB^4+_2>(&xa +u;){&s`Rt2JN~iz$|PTe9_6iQY{6Z{Mjw>lqVi^B03XF3+jDF^5j)DBV*i&fUoM4(g~kWI_10VFJoZ} +msYGqtGwLHpDeYVIwF#bJ-=nJi8xy|~|6u=BA9Hw)zHx*W_>Io0oSIl7B_+k!R@HUm->@~vx0OTm0KJ +4K$O$~aCcEPy9&=rI1V8ZSikDx&!EWAOMcT{gcgw0U>fy{IC0+4F+o$%frEbV}sOpn>+!T!q=8l(>L_P8yiE=*Fo-)CH5R0n +#s-l)!+B)=y%IMHX_u=hGOAJjs5ATpO)8Of8EHpd*AKkbI201&U1VKwA=oO#b@(GU4)%7{s#P+3_G}~1R)?A3wzYZUCY~cRwtt{D^UazyYyKm&m(lO`i|!c49otmK6J~C +1t~noEd>(Aji)>*#!D4CG_;k@t%KIpMZ9n87VI+^k#&`$s~RJeD6jCV| +8hXKM~pcgQ2 +A|8o>Iy+i$4@9~(?tK?e0kRA{HPHNipcc{tJW4qD%Qb<7;62Kf9 +bk!Mc^`=;HF1^d4C{sFf<(jTJF7_G<8u9wL=_!P}w6Ex0^ci)Er|A~R21^=^dR*I>CQ4gjjZ`Wu3`DC +!~Nx#j=aJjRE}V~o=?ZR*HlNT1HEu +X$3!tXZ?--E^=va?X)Kzm1wI{RL{mt6opLVbAd7C6OUYOPk%nUK=_=ztg=wamC1yBU8tW88g7$dxZw- +ChP@+`Z~R)0;k_cpNV=X@<@+~-o|*Rzci|MaK1J!$?8W(#&t=D}T}_{W`t(w#zP`Yv6Z +DxTJAJY-4h;+=kGk&DI=}ewdi}Tg8G1;}@9wj>dw1;9je17KTi!A~7J7BrN<*g8YjllY*gw{vJb7}$8 +*jW3Pj85L96D@XZSNa|4)y|j#Cr_-w}mfU(~0ur(Iso;+J9o~QKLqsPM9zug?*Shb*iy@*j;=d_8(bb +KafS%cK4i4ANy2J9owrq5h9Pt?aF#(m939Yq0T`~mpvxGQe7;orHA&yEN|e&w&`8v?AM>lnXmR;-lkn+cs8H*TEjsalW1=>L={Qxfv>^5SjI4WFT*U%!6Ruwg@a^wCERZMN=b`$K#Vxv}sbGbEP>a?; +OL(1OF{!OMvsH~)9Tf$?R|nbyLK7=s?nMawqaf@>g;Na+OHUm1Zej^jgWup&j{W-6ffwOpJ3*bFew*gV!JzC-)-vB +kv>cjMBW57>1Y%y0Kdfav0*pxBoWST*E!SyBw_PP)8tVWB=e2KFHpKy6&Y1O}s_CN32JzNvuo05tuv4 +T!WmWqtXHYo_gvj)91#9u@6VK=E2lKoS^VC)t>Iqn~@zLc>nv#p#wQf&5<9O^GgX8rS)|HvM;9yx`VPdxF2*;DK^yga +nUE6c|{WbXf*m+`Rdc;`*dUunVK3+vfeD{YJ&AM4v+>TXkg-yi11-a?RxXi8{0(mO-N2pjA$F(q=J*LE#9Q!)uWqSM{9JGGSK=wx{ +2M-wq4tGZ5J2U>CuOJ^l%>h^ZBiN&i@nV%e`y7o4nh-McxwcS#P8-%7<)|z%0&Ple;~4e{M-`Y3?0)V +R;SmqVhWC^~md=mytIyZ)V=&yft~-^Y-VJ}1CO7gw7Io&vzAQDpP8SVzc_zs{+j$v`P=i0^7rQ- +$uG%2n_rsm@!#RE?GN*Z`y2Qp{Zal{e@A~;e-Hn2{{H?ne}+HHKhZzUKhvMVS(^KgFs{;Di9m!80Z@45qK`pKadv42xJ8&2BrmO266+714{#I0-FNc14V)Tfg^#Ez}Y +})z*BHXLG6ODg7AU{1(5|&1+fJk3)U3uFDNYtD~u}4D4bR}voN=CapBU!O@)djwuYyR9@4xS-YoA#?@ +Vv5cd>V=*Y4MT?-AXzQm@B%hp)CT%opx!;EVKi_4V*Q=j-oF^JVz5d=q`sd^3F&MKS*z{~Z5+<9`8AO +9KQH000080Ei{+OgXSVDD6G~0A}a_02=@R0B~t=FJE?LZe(wAFJx(RbZlv2FLiWjY%Xwl&3$`++cvW3 +|Na!Ly*Z>3nRb%Xv*&oLw5jWEe45(6w$t5nWmlyn+Gb6W3Q76V$A0!Z4**od3k-E71#1-S<7$p$I+ym&9hu#P^oWqIk`=nji!3s+ +X&zzAJ_Rt`Y=i7O>jt04yvlG_JUw5m{-a5EZGZ+5;}61R#Xkj2ZP|KELy;e@w_T0X|2$xAJx|;sjf71 +nshcde?K($RWjdj@M>xv@JZ@KsHM^cr0RB@0+Z~!8)K8VN}Iyq-oN~LQ&m +R0B6)Z&eOV2U7+v%puSl&S>6w-JQC%*o2>@ACc{xuD`toy`!Iz +t+nFCh+;9-_m^9g?SL#v@!!>GJFKRe}D4!^k8&+;uij5@a1oB;Qzs|ullcl|84k>&n^d|+V^iyzdJbf*1~G +N-=a78SFib7R{U0!%|-npD+H8d7sIl;81u`wN8dPaVf5weBk1Yb$=m${yHIp-COdZq0`KUrqy2Xuj=p +n>4KHdW#;?Cez2`5s_Wsh}`SP=W{PfkIp8fc5gWtY*b1}TQL^1)Gjg4t~MFW+NW=VAm1Iqu5c-r)MmT +zuu(!VEIFh~L}6L1+4!ByHUssdh3Gm@}L^+@s*n39UfD(S<#0@*{toIs+)*XrD7c`hpkx9MXYY?kxQe +z2L})SJ}OW`*Cb$_ivjvE8KAEGv>6Bzi&c8i3a}5?oiw44Uo-r9`)mgSQfM(NH>t+5xdWzyaw~2IG_^ +6s!mp0BfKKaBvd9lufH77XbQ%Q6j+s4|IV{2;5y#Wyv^CK`JdKHwdw;Y5w$LgU&c8VjQ4K1oMgMD24+ ++TS1yZU#oz`LUxs<+({EbReT0a($1cEmNb(a4X!GeLBo57U;s)k@&>BU;_Iqh%PK{8n5ti9k_9R|+=4-N5CA`%2YuF`p)Ow#CMKM2F#8iaefXQB+#v#FuP@T2+s{s!iI7 +cKFlctmmN7S3t>|zo%sRIG1rBgB(41$ktJNOyHf_>|}p%J$slpP?bpK&suBj1!Cd)`9p +k&N568AE<>GUx)ddpcOOK)#vzVG?dGo**Kgr$*uod5yI1<^TrJ +i=lgGm-^oh~F(E+jI`uowd#g@^;XV64%J=tXp4v-XJ>b=n$k-|Fs#BTBV$=p0 +dlQt6yA|^QG%tH(C5sjLJWq5`utG_SdkShkJk)EFJI!z7k=>ioV0&-~AH^N}Wfkxr#u@EFT31`#$NwhY{W_?m0FH!aWHz?iF50}to^~dNeUU_XA +!|JJ8gB39Q*kSNghFM$JtlpDFz(8ZLe1!$1Z1D{qq7orAP-?tDV?Y`=XsDn)P%dhr;em3C54E;TtH2z +9kFhR>ZN(aOJM{xfVgvV}3`XHrsPUU16FG<^&#W>NT%PePI%w1cQg!cGX{K4-P&uE>U5DG!ho(wu!Cf +?q;rm@$)#TzE1dA$@-YJCvO@T%7lVNkY~+Eaf$?P*fZW{Kito +b`-#N0%5=?`Q}_MRgA$x_H&Ec1oW8%Ie2fkToF+rVpowpQ_N|2YEtyqCRyMSz<~9dMh+gp1$4cSVL2s +os&7N1l5?DaIZ-X9X-s<%<9WILYWLN +jU-tRy>(6&Tk0tPFnbt*UgGuuH2pXIaCgrSIFruW5IxdtMPT(jHKv};LFIT9?6ef5%rH+e{)z?a4jw8sq +~*S+@M*^b9BdD0WBVpF0=LSH{b`&G*1}*mcBHu-HorB$wJST#rkIB8@Awf#?JO8>1~> +ZmLW$wy61QO`4rxssqktjdK6#P*?*c33O`HK;g-5jQj6thD|kx=9LoG82XjQO6SR*kb}IX@Z0F@Yl#_ +3Z#cV8$I}=(GkK+kyh^m9I*szWGSd_)%jF#+w3`D_boKBJjPzu!!4>;61uxX)nCRLvC2CBy=3j^ZJtl +G11;-}@CkN#OZ(AA0u`?r3E_iESAb%jFkZ4*z1LwIw|Y|1k)0>A2i@f;E7G;xD$_x +f?Uh&#+_~u3igEbB=JPN#nDyb@zoU(<>ys^hvOP!Qg#*A3m!E ++(;Jf2k5He9gAW6eu9Do<~#nIwW9x0r~_g}P|l(VK@D1%Y!VLmpT5RM^*~KvKR+^|2ijnOku(6sy{`} +XpsJ-K3`Ibdazsl#nu7gv%mQ3?1h1XC~;!BKYj +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 +9*C%E@oK2m5-C!QrHd +J*<75eY%Df&;K&Lf|%%~2!R?1*yc +-W2je>MUzUPjS>YlIaf&^#R;aDk2p1w|yj^ +k@fJ{rb-jX(zW>Blzm1h?&m?Y`fwty`#}hQs0d5ys(P1;U_Su4vx-G|7UdSWGfEC=*yEYudhM{9}Te5mr);Hv_Am~{=V#e*#Qjj#zimw;o$V^6Z;y-o

    W!tDmdSy*yg0E_j +)V+g>Zf>-)wcJjX>CP(2LBd;`y!MUv?Q%ILV`GFDVpAFg!P6kx2onOh|vxh;fsnDUX1PSHC2Whl{9w4R}EM)x*#MDnR>6xTZV*NVLCxoSNz#V|85!AkQe)=V|;dCDPlc+itJ +$eq%kTx&u`Of5gtyoa}x2F>Dej&9_1qw-YDaQOtrVGI%972D(`(WBFjxNL$S`N^3~3Hb!W}Qv4 +i`f8pIZ^{qKool_%l>Hvftwl+;*F6P5H$1=PXcx({__{OtmuQndsHnqR^EEXl8D57w@N2whAI;nySF4 +E|;;}|qyC@ptdD_u8#e7x5YtE)TXUu%*3!=mP8eSc)GlBmCeJng<}kt`>(!(lbz1x9kh`kN&>MWHh`t +(t3nbstzrg}P%lF0cY}78arLmlp8$elQ;W`s&mH?io+PQqJ*80wuh$o4zN()Wzr;AqeD(7xp^P*uM8v +Y%@CJPY4($ntFd;JQWm$5It&UU{W2x$MlJjmD!KMumVMkR+E`^sP3zh*HfqUQ6)9ju?pmESHszPpMlj +_9zIqp-ssZU4XfjxN(hK*;`fo#!V4KidPbN +yZsg+;*KTt~p1QY-O00;nxCGAW^LLWn7SpWdkX#oHz0001RX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaB +p&SFLYsYW@&6?E^v9>y?uMzHnKSSzdr?6J~@^WS!+2jO?~U$<0MY%r;eS+b~fpzxhf^mGB+}*LsD_v- +Tm%&-T>l_l$^BZ-t*ILV~GR?17I+i84PANx4-?fu^ClyahcAO!Qysf^N)e}JYU=v>FlbCy3c#j?#|9` +bQ~9D^lDjFaWYQk(GPR@{a-WndoWFYgn9?_c|`Tfs7T7B_?%1!8=LUrO;TK^Wtrw#6s2VpT_r^_zKv! +@oK?xRA4Qi%l0;E{8BMO@VwS*@DvzQ#yNwn}QRW%I$j4QjW@$Ey;wYK`hFCnRt^i({UsgA9kzkE!6qj +W_Nn-#UP4mg}I?1ZIN(lyz6ExqguApq^T&i_?(q1%8;yGZLAzUbNuHi;EX?2w^D}Vt#tBQ1j5c^nmGG +9&+D^(<#r`IXBC}3nru!Uur^Z^E<-;b{IX?lr&6YBC}Ii9EGRX>`h*ur>O!NU?CPLd4jVdwsu7g3qa= +L{po&hRK0*!FoCu(<_}dlktbmfXvmtNa>k0F1hWI4hUSA_D|q+^F0X{ws5U1~~j9nN<9gn!3#A^ZW*S +O?YI}6nk6l(Oh3Zfq0yMPNvGdC@&|FrfFj0% +VpmuQx5G~akrn!rs4x{tamly92&JLra^XSdl>EDiC9KMJ;2j>wy==7s^M;AYxzP*T`$l1Zk#V^t6%jn +?bmni!A=;Q^?)8YF!XNTwK(dk)q^!m;5(cz1Jbae9k`0b0MlUGsn4Cyp^PEU?bU +Y@cQ7@A=fz*7kD4Y^|>YxbzetV8zaXblw7l#MO0Ph^Do5gYNFAE^>(dcqnEsJ +C{iqdPOlxR_;Sp`osTDuz?olfU0iKh`2N6Ne@(kekB2aXCPUR=jj6c>}L^m9@Uu=vKtX!IGD5>yAU`% +&jV&XUh5{`?PkCvPJBz`LEn_k*1d)QFeB7Ye9=Pc}Fyt4)D}VI`{eA1~n79KWd-riP{BG~j?%vKYdawfwI_kbG(tZTbUnXNJ){FiFp-euP>6E}Al%wgMv0X$@pFV#2!~*)5f&M+Z +hK_H;pulRHC)eX;F%x)20;|2`?$dtoIgd`#^X>^g_03XYy0~oALbH6#F2`bH +pGH2y&slMj=8#G#}?@3W)x%yG1*GXNdSWa{?WJT(Gk!);K#qHh(j;%bK6$@a%H`9&e%OqJ;g3)17+Ozay|4Qgy^FBH +`>u-GfRvKb7f+D)wsRH&vtbBI*tw4j=Vk9|Dd!PPlDgq0Ag7z(X95=ek=Tq7R7|?n0yhwn?& +Tp^BIqW#cfZCfP{S1^cOR!J;jY|8NKLFHCRQf$NkSFnVVhrN~HfJ0TA9y@v_5n$;^HN| +1TKwVkFv`gzoz9#YRL*8K~u%LWK`IAEO_lht@=oM&o5VuTosVaT&>vas$XVu?p%p8>4) +Y;N++$1Nu#a2K!VJZQ<`N+(89rDzNbl!Wav6xU3Hl7 +`yKL7dr=~wP-&iIv+4?W-bIm564=Q>1RBrt$)|GT?C|;N*$b&&gSro##;aW~1A`eg?`9kbdZFVin(#f{^`lUEl%jZO|;BbLLR9 +j}Ym@t5>^d2JvYlK`0kNvrCx2mO49>bPvo>L6XbJbI4+9zR}L9p`CLB$v>UOJK9p4H)QG7r(qYq@IVS +7lqZ?a*n$h;JtBRmJiT_Q~dbkXI*+2gifrl3rixMCTcbJHqL)}t?TUu>y^S}2*AekpU!mohr#liFr#v +jOi=Wj!oE96fKF=^9|fxtNxIcu9Mvs84py6{K$ult+-|%)dU>h~Kk*BrQgNBPEub`{Yke201&g~%XUl +w9@@V4w5#-+g^g +?&%OK`+!B@Tw$AdC#7c9(eCj3r%$6Uv5%g}e#Db>-C+o8HC9sL&B6P+g3mSGZgv;(7v0#4!om${z_0#otTDbFS?xPam6FmnFO9)2cF?L?g6Ii +_sscC(?Ab4{{4*{=^1E{XbL0y4wC3~K25me{pfQ%UnVqU`J{^HgKuf-e022knD)h;e7K8JVaPA4i8>vJR-YPObac)$zYGZc> +C_`=;BZzV3lNpj8XLP{o!-nv{jT5O#WIXXt6Qsys8m_SqLIBEAr(6O4f+%>^2~xiq?q0Jgh)O>YN&g> +^usO2r>XDX&|z*8%9JGH4xbuu0VwAeB07ZvlMNw>F;7v|9V)Uu;=9fc_ps(ZYQgdc}{?HvL1eT^8A#{ +toy*5s>|)C9YaYsUZU1NODZz$-qiR +PKAN)fqLkiuI-Tcv23sfW6Tq)4h|kwxW)Jx1 +qa^dRbr#<`6scFSH56!(+2$BaBkkBIy_NVg%%UEyxoNG}NK%QTyINk?TofmRmLU-qNz;hx_9se2#x79 +Xvi45mp#e+B=v+kh=@#JmSFc8lBU3Qs5Kg^eT~a-i6NJM>MC)`c=1gA}G(Em7EVp!R{EDr;K`G|&SUeGzW=Z7nJ^(blx8B~{OoJJF=Dp?&9}QWA^gzn8Fmmr8a+7-N}wCGyLH%`X +KCNiu@19G@B*a!^#1)W!`L47dfUT+7VV`{2_glyt1z39^hn}nCO}B?1Z +v9?G}^_*?I1dUg&xxpChx$A49wj$ox~OC6o3`#6X^t{Ac0e_FO=W(d0?dQljTmrbu>N1HA$PD=f6=UMjAO02m^}qmAa~Dh1IDroqtj(n|#-t)iQl% +!6}yMRQuhP$wm<*$JA>MJObK3Pub+on_D#qOU)k2x@bME>Wcc{W-s9o!#~#zqU0NBhZe<*9MX1#2RNro0NH|~IqR< +NxRktiAuo;$>5-a!dh|=8s7Psmkf%!7oLZo&CwULa}Pk^Hr|IwwYmzH$y*=N@qoKB#Dv>>x$1z+u1Np +-#beUpE2|C}NMx-JD22g1}vu}o}k00V}6sF(~;W9kl{+#l}jKC;;X^2{8M?=J1SR3EB+vYujJNv9$v; +G#*tpS^u4M_EH)@)5R3&-t*c4`r`o*e!wH_hE5-zRsszCEH6?hKmefT(dl`Zm>J2b5`AYya-R&6XbPJ +f;*Kh2DV(Z0g`nVV8Y^>c4~M|*VUZV-T8|(a}IjCSQCP}z#oUAIWt%Ttwy6NM!_3)d3xRLipi(X5MWd +42_x%@iATNJw%dn-C^ZY0MW@5iNdU>keEIK`SCD^fDL|#Q5kfr-l58sjAuj<{{?@- +bI7nyfZ%CB3KM+)M(@rLT?w!T<+ylTPYRSO=k1dmrf9`Q8-joyItIT;s0wc`nF_gU-<{j)3Op_Nb9|zD5KxQN6jmku +z_FLq+Ty4Vkjx_eB66!>$TtG2i7Fv{GYV%0xyO?K3~Mf2k~M7tFeo~dR_^ebK1hO3jtS_xtVo3gMZ{{ +*2OX~-jjJ;lB)!>fJ5a(QV;vH7+8dME*a<{Lf;XtefXt9@rofRP&I&8NtP6#aMcbfI93T)5`#bpEV_d +=!928JEi>eTG()6+DKD`A(C7IzDm&=sJVB#M +EeX>X++Ri`w40Ac-7=Y9f+ibZC*=N}81f(SX?2pPKCmP1p_%-2boS!(w5qGfDL^#rM9cM#1q+Wj+VsJ(X*qIgR@^cjwVj%{cE3La*@3?N=LsY +__JbBWq2V*kN%Y;V4XaXwM&jFTEp5#p)I6Q;wx!MHQ)n%Zn6srNS2q_TkHtSbhQSVP9W~m;1J*T&1MW +eH>k_>*JSWn{xn%c%mb(18S;-9AW8e0rjQ6~Az`!9eW&u>-DEJ>zhXS|9(Cq$6YTQc!7{yo_nc!`!mh +ly^Pbd4JjyayzUAXU$PPZtPa41ag6Z3eATazrD+H>r+qBSE8@fT~fmxx?<6fm3BZ>;bR`Ms5Y% +7FaoxywCH`(U(IEv-gxRRe(GvAe=}HxZ5Z?0dl`dRW*HAvXHoFmy1(U`5f3vKU_c>7XD_trn1nD*s$^ +2{idTtK-DBPj{o&DjQ{-Q6yYkrXOO2+gh6j4;Y1c4_Qm^UA5I_4gvvktoOaw72E`nd}mqv5ytHa3z_Z +lDjy%0=9KEd?Wdml;bV;3`6TI$`7gBG&CDZO!K(mVZernWQtz2gh@UM*dl9h`rkr(^GZll!~-VKv?pZ +951QhkS{u3p<)?VYcI|71VL6vmeHXN2Zv_d;I!vw+o}{!&0ga4oDFg4-Jl)1M<+(?Dwt@$k%QH)rs+P +{nn`&|GxVba|5;h@TmcqcbJ*AM{~-CA(PO(GLvgO)&&Fx&;GvqB2i2Ru)6c;TcDnY0P#3^3kEyvGEKi +7bN!1z65zYCR2>$N9~yjfBbp|2*@uk%#gMsphw3oIPLFnQjVeFgYe1lDh&T>WI_<$mb)@_@c)J$SmyP +};3mBZgWryS8*UNUGr*iy{?)QD;#f!t2#|IaOFM^(wji2or!0Uteqj%4aF3#@;!NOql`tbGW`0#Is$9 +Ds=Q_nd%%9T~j-8N6Ve!%lDJc7p(1N^7k>-Fr>8jZwy+4*(n;dj684j=xyGu*-dI?)3I^aJw8-`V~3; +dkG4EQ6}v@CG0Tl{j17&H&iGdrYSH#r^vGhrR8GwVb~hoxOZM{QmK7RK~X@9=%*I%L*l`=;-`(`{~oi +-)|4~Db-8zKsQdry*`IeJc1=HN%U!cJ%c6nr}nt~OhSBVM79!zs7kG^t%5VaU@_X3B{k{g!#O{7v*e{V&Y#%4 +geZdvWf+F=Ar{ge-8Xhh_FFZ$6EiUQ-V*r`D`bU0>K`xxM|a^j%MTdjOtp-z&f2G41D9Qhrj@7nMcl~ +w3yCV_nNNQ0~);e9lMGzbk7ApJQ +{L6t8)(fK`)U&dZ#1z+8de&fC9H<9Sb|H;w77*p%%h9PbnTYD9MN;0Mn#A +)yf{vq=dJ9Qup#q&zp`aNzjqRw}Bd&qlgVZ~X)tXR}%BpuQrco67DuD?kN;GqT#l1~VzudSG;6#gNI= +_GYIk7tp13|eh^do4YGV$&7X{?F)4AVLqS1|o6gFBT +6eI(gFbG{?J<2}ItMM5=`TrS0yMYC+Nwr?SRWhFkR_z%Zhimz0i*H&2A0(5N@WUo`NBN5hZ>pOsljM^ +KXYhP~$8PmJsal$>$X6I75apVOz>EU~>OVOTkJIV2Nj5`o=p4P}G~@hn-*pmf@lLVp_AT+vo<_$@&vR +L^W~Mg52VvD^0u$k?M56DUnLI#&@m&%ugtQl0^xT +*=KV2Z5@MAbdgA;ryB}CqZH`ke;$0iuz|z%Bl;A(y6f +x5!6>vlu#3L4Sgyu?z4EI9m&X2Ht4EYobgprzHhh|Wm*LFHT0xp+dq`5Or`eDv)43vuHB$<>NX?mtk* +gE)w%CbnYCYMdX4OZ598zztvlPw5iV1_Us|3Pv4pju!7U7W3 +{Yx`mT5M5Uk)9~JHc;hlHv8S@#~z?(f4};E*aQL3Y+U?_i?1*`1vOAbW +Cl@bLVNc2-LIlD^u8fZVR)n{EJST00_zle*cY+@b#C}Ol2<7=Zpc-jTH-0Xsvbu-dGRSO@+H*aOAkgo +Ll6b)V+Ni-xugEGjbNN^wA!kdjNwlv8-D*{cGZ4Mv)txCBPym@=((qd&TPTTy54_BjS$ +ZA0LaE9mrQ7;0$y_9SH(Ja;04lF*A>B=(kJw{_&p{Y|H~=&&(IL7XH4=9bA3#W|1ywI6G@u0DU4@Qoq*ee(`?XHnSJXl +*`>aDLDr15+(zZ9St=x7ExQ`g)_nW}b!6Kc+E>PUZwLd8Y +tck)5iLHI7^jq7n@O-RwuI&?0v&nsQ5JNhJiz;bwRv53gcw6Xq$Qmlo9r65C)F|7wmzp*^o-MCXz+3$ +tsQoj!^@>mWGOqCs_0%~U&+?<%gYjd$#4Pmd2hhDf38-)4!dViX!D~l_Dk7td`}-`LL%mD(uT$*tfkk +lL0iX*io}>cnkHS-0qr_ouqBtr5a!|cq{wA6bk1j?>p=V!*a=(i{ln4? +Y-f$EIsb0LHJqiU$Zas+rO3qhA$pZcmoJ;gMofwg1SMH5F|LmGb|)FJ(HV5r_caAwyY9Sf8>&8o-`HJ +t=lWLy7qJ>5l%Eu*{_U_BJT)9@fM1Q1or6>j;~uzfm!lq5T}DaOgj5J$E=Tud%)3JZkgoh-7GWkEWUS +V!+*h)p?ouQ^Ed-jx~`Nd(S06p(-pYO%^KRgT9MYSLZXezWV?5o5Mk)cSdIgRLe##eFm<+I9v*6$}Vt +T=hE5x=dq@Ks*7&l=4{UqG~_7hUPZwB6c4yiNh{{fAWQ1mHT>Se6YFJM-K>&4MM=%{`SQDKrruOiCp1 +aR`X8a2g6`Fz3g +&uUvO*%1V*8~FFo`rbbCMe%EI!2SH`sDc=F7~hQ2C>KTk=t@Pr(EW%;yQ=ewD@*CqG<>x&|#G;Uw(lM +7}zQr(_?AKKDe+f-JGrbu6KPi+=sOyNz%^j6zIBMBNGX+U=P5v|p`)FTSLQw0hr>ImMVO{+2#*3>E>d +N^pf_H%uf&(6};I~iybQ^ym)65OmeVth4@*cHDI?ZxIUY3VF2g$?iSwrzgh&34VLD6XRGysUyp8bmwJ +!Ie3)608MJaybS7TcPK3-r$y5mCo_JN<7T)7WY>;OL-wuj{bUTIBLQFWzNOfpk>1{?0%Q-4fNK%wgzX +^5A#-wP|UZ@jL?GWYW88^W(CvpZDmgydH1SAwqPX@8I(D}b*yo?bi2ucCD9AumPe=WM7>;=6lsWp08E +GaLK9OFJ%h0zyRt?1^E69L+TR`qC?9?KBvu8MZy|f3b8|@8A3NJtu3z;zuJXbp#Z0X(QxB%mp>3QkqU +ilKPFVj%Tf{u67^DBmwPL7tOjSD8T1KwAL$iG{yaKAy!dw2`_JhYKxJfc;Tre`j5UU2i0kJ%{?et+?(_`p+1x{eu%Ev@^P~ +NI0HRI;JFd_X6u^A7H)Q5m@7 +{nJK_E!1wj$y<6_3&?Dg3)%6rQ9aDS#Yu(V+S{DRhHdWgCFMAB`mIBmaX{BA8nso3uf(|0YX +P55DC&6gBbp#j;2Jh+Q_z*)a!feHJ>qr?>7O|8#O{zGZmzZa6iDRiSxApaC2H!Idvx!k!RM0*YGxYGP +nDmSWN30Af_p_v8sNG)QsB6C~yL^Mscp*xtya4E`^0K6Z_h=%a{~B+!k4EJ@my}ywb->&~y_mwzTjB5 +9W91`M4k3qS(DOnCu~$%?Aod{u)8zAY{ExiAQusa1@Oz*j8y2vbVPe3ai}=e(;)W2;WETj6FmgSOxY& +pfMX2J4vQSl+Fj8}ehU@?PosP50jpG%Y1O|MoJY`DD7ea`ZWg?1{_oibR^4WtJIP|6Uh?4s-eKuM7wlK;*TOXw +tVJ)RmR(I7*3A(`3N<(%yFgL))llV;xHs(7m1Rew7iMjTS~yh@XU0=)%R`x>wC3uL{!lXm0PxR$Q(Yr +fhFMX}2S=GvfR`z=MRs)3{7izZQg~9#em9l+oW7$jOg{%T`v7)=kJ=1!da|iPX;ff-!Lyw;HjSFa~+{um#gy5gr)()OPe}n6O7_>TSqX~=Qr5X=IC4)kPk}DKYa(NPZSw!ne=sv@em#xt%g1AM8aIr*;aF=wP%(5q0b$ +dKK>31m^a<9?6;+yM1@c%mQV!RI+FD-as)DSoUmYt4sacQW`0XB=`0sDnu%AoQl%G?+Lw+#tr?yx`*# +(IW&|&2~X+9GKR4r2lYnzyM$uf*GU-mRWb~f>tMfAF5$}z#LA?c#EYcUU}Z7320Ls$C4Hng@UD+ZU}^ +B2sAcF}uj8ocFmz@rw&vRqEDVn*51VWYT?89QIbkcUbwhP{_La@dvgKDcQfGQw*+{*?IgQ*+9ai@t7z +b0_4UHKSPD7`fn51&OMN;4loI#Drqk#_{O0tPdBr+0mT7-b6K`yHq!$*uAVC2zUH3E8zLeV_W>F%~;< +f&WnTEKu7p+(6VH9H^s_99icXeeQyFm}$Vrn8 +&Y4r4n{~yJ+nwjwJZ>5p{l=L!N6!QpNKn@_nqNZ{>!TDxhcoE4pi>*f(VMK1SZW@&4yhO%CPXS_tTdPNpWpT`*-Izs*J5txLU>l1K69})Mj +*%l$F~2E+ttY=vk79gs)zFnIzO#$y2BE@)j~c1~|;UZH!NvMF;24kB;<&)IGyiIKtl*|4|X~Gl^$zer +nr~q#QJexYv)mmLbQ;OlT~>o^NF7);1sY<>4-Yn>n^1d=9ka8Wpcp3NK@feFGy0|1k7Aya+<6($nhJK +OLj&xY;tXTLT~kMX%wIL+a8SIqQ@>$Tq0ptwkasMEawX|HVk3WL1*8i*K_OOCM65hHH$*7<{0CK^m_eQwgwjfes9f^AAbEGia`}{L&G;@h%pp^ +uSTgaaD^y=be*o!42NY^WrQ`8Qu^vj#W3PDzVX&GfUM%sHzX%HkG8o~2r)5eBdnZX3O7(eE1MY<;0Vq +6yj+MHX41gBt&CCT=Gr*&=2c{4pPFH4_H?55E2DZpk_6A|NyvdXC~I!6wj@@seI2okA^ +sQHA=nQkwBvG;Y6W^ShYlFMS!>h9k+yPOuO*&IH=)J#N0#$%_bHR&Q_EKF3AjNc7M|u}5lmQyYYxRBN +i2rR(RBJBKJ6uu+MF#q`rw*)B_!N0$!*V8vJZQ*ZM``=e0lVq62a+`d{db3*KY#4jWgxk1W%3-X^A&8Ck~Yc$({wPH8qIX5e3y +%7SmqF!kc-4heo58;8dF&X>gp7CzhO>+*c{obXM{Pq9B{|e)Pc_Jj|gPxXY#2a{fiBu&Pio +bcgS4GqZJdjALc!LWyn&%(zw4h0JLYrlt +R~@k-7&Y+4oJkzO}Wb+0?_`l`Yw|XLqb^kG63Vy8firN2aZnY&^wCp+@xa<2F;(M^{a^BCg$=mS}9(S +N;3Ahf0DLTx-TP0DVa3X3P7qt*h^Sq=bKVgLH3o`{9#Elux#EZ|6z=>khWcFhY433F^bg-?aqUXye7MWJFxh!+B8`^NU~w^odf5uxq-NL5!@MF(@oGOpwxx%&>FjSV{T)~AQ?!2NWs?*Y;8E=EQG`>U_OSaKvUBJRj)S_ +#OVt|07EO#`(MzaI>@cXxK4)}sNGV9UoLdLca&)i789rScsGG2>Hmdjo5<&zdXXlok~DB5_q&_$Ud5x +kH020y+}zm2|VUmSjYc)(Ggc7c&Vc3aOMVb9`%nqoAE-bTutVeom@=POL(yqCqq-@(B)cx5s&SK)ntd +$i^wjWA0rTtmF)Wtt$`GDgln}=#)XD302p8o3w~Oz+9pc_X4TYTif5cNHFJV>D!$ditD8QX33HG>d{s +H0Q`KM%+f3~lDP4p*aiUACiOAMXZh#yoSH|Y*!{V{nx2dRRPyTtOO;ABU*C0$wzg3^Pux +A-vWP|vVD&mia)Y~oi--BptpZ@(d+p<8=Env_7({|GVYs{r3w8ks~_bVyC^FBbn%N_gwC_do(66VJAjF-$-p`IKtbzSyzm}gvK!XVYJ8pVE8#qP^o8-%^>SEFY#J9BxCk< +f7Px5CnBdt(nRZ4o)@X^z~;o~PCEfk~_`&{;-rN0tb-kHe@B8oe9`1g>vYz3As>TDV?LB<> +-ABKmIGyT(521}mkBx%0fmYCf*L#l}sKnr!ryz9w?K|=|5`&-?L)fAS91P@@TQ-VIwnbA+){)F(46vB +aDftDkxhv}^qMp0`=s@`iqu{NmyUjz(n0RsWvJTF0|AJniBZc_2N>B31WVuLz15%K6+3J?r(#XEYzOa +)-U4D{#E0l|sYzvPROy;@E!o2;l8J%O&Kl0?gO0KEeJf`^7pdKWgniC+iw!nZ?^nt*@C=LAl&B58Z!_ +xTH;KQd+97_~A+(%wqVJABDqrlNrW1cJRt*odGZx&J@o@luH(U+9)g9n$i*;uuxhE%mUhWdy)Qd`>ZB +5X=uMcb?!vq{Sf)uHyZ3~ +pw_B9ORn?Js1Zz;*)+~7UQsG6fLfHPNsB^DX$fy#CC1o7^m;2$A6U?8vs<1R@&$XIpvB2H`rzSWeZr$ +@ShhtprXV4oH)0``AK-Bi{Hxx$0vbjFYZsj45(*1X@}oUwct~VY2|?{>o%m6~JHnPkGN?N7J-leGM)! +GdA1H~BggsTg=F<8}VAIfR(`}V5u=b+uS|kb#=71TI+?7(pC9eA|*?sT$VR*!tFLR9lPEH_2qOxSOs! +_ZC!))RTCUu`@il_-qlp!+($K{<#Hyob?i&6@sLJfAysguB@5z(lAi@j;-lYz)VCyTJH)xCEt91C9l@~UN^aT_z +K{8t57%&(dRK`Ns!e+F~O)6p$>S=C}RtS&fR;kpen{+;}+a){{{D*_+tah$Mlb{NJ%?`27?XB8IX-=9 +IT*uLMu5xwZ6WHWcW$vpoAtvqEmPa8YLP%G5W%jns)YN6?`)4N2gQwj4TJCi{hg;5(HA0HczBG0aU-2-4d8mJTQA +N`gYfK9yLxC%T&(!gh&Ft-&>jj6{Ftv&2U6HnaFl%Fgl +3$~asn(1rWZH`soo~-8Yfms}hywcOs{4<3%--2or#%X~yQtu8xE_cHtM+X3^1oUP>+FLI30bph(Pu4Z +`yfJ1lX6m|W4bh9j;HAz(8Llb)?0m!+i+6;O}piRdGbR?tfg^z1$tt%NsB8jv)AXg7(+|*Oe$LtseaZn~0>83j_I=@aIm`(}Z5C6}v*~bUHU$YJ!^ +jQZ>3_$YI`4J<{djy>tCY^^;)d2;%=ni|7^dfZH4g#g*HKJ3PaYBN`O@axPx9}<%j+4afxyAefFr%c( +lOuVDT`D@J@tZ8~+59%rD*sZBk)a9|F)qTmTy}DXD{r&X3Nb;m(ssPa>Gs9Uf?k6Ugv +y=pdb*)>s&{x^H=NkZ-0jQr2jjwf1%2>><~5z3<6iElbj<#WP@wzqp@-18AVNNsg;ABXB9VcVIO4%wf +7Wjqa8E_ezYQcrTJ*&wap0}8+$=<*z_zux3Fn(;I7#I#$&Bt +o33`di8RhsQ6@{bi!4xB)GCZJtGYI&BcaRY +xd3vm<@s=KG0ML%7|u#`4&2@S41}nqE<`nhhHBcw+#9o +adB-=sxwh#$+N3>rK})2|V>_z}jk|et8SIPrB-U~sOKd(n+r)i4OIQm6i7%c{mb{Uo7|*EMCxHPFR6)Tr2vTM +8rVc>K@}1Xdt1v^51w#|XAc2{l$d*WV}US}UTCp9VLf3~ea3+A5}DX)}z5Ux$wZ(29{Nv>r+{^~!XI7 +f!mrrwcI`mX^J+d3J|Qv-|B6J8U?8R2YB2-hJU~C0`uA@WI_ZKMv@2c(>E<^ggZ{0)FygZ*TWwU)uXH +#9wVgF>E39H4YKh8IxfXv5O&yV^;=7%DvmTuFaj{_UjvwGK%DA-;aiFNm1VThnw$|E)j70oahHt;eNF +11;pUA2g2LJNw_({(Or%XIAX{;U8#r8Tt-~qT|Rd*ZGRKBIa@B1nnh%*t~Ap2r^elhS>&31**|_!B%j +lKXfK8PkwePPOjEM_4!XOs^j@uEj~MTTf9vD*v+AuFOOcHy2DdDn>18bcB1;o%bb?v^E!0UmC +p7R@_mgn90gD~ +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 +SszC^xebB$?wd28i$5d^nN!L)5r +?7ik>(wjAMWf{K%IB!@NLNHf|msQkOZVwx=QU;ju&yA9Iflf{2|9*1OBsRI@h7$sH}{;Y!*#DhMMsNM +e?c6VM2)?=we94y8?`&S-=bkc`z>X`Lg1ul3Z1m5Ct)r^IXtNtGhCPVfL?Ha;94SYFd2m8}F2>F&VU{ +1+>$Zmo>AjOUt)`%up9I96fH9~LE2E;sMk{Zx@m5(Gl~*xG=?Cp0pMN$r^Hp{i!v{Twouoq;bb9*0)pd +ss*~;UpAdgSg0Y`$sPxx@gsv4*n@E|s85U*3pG)azGZhD{@;lIsu<+8e_m~RXU+8tSL^f<8aYH&U}Iz +Kyn)y3j&*ny0XUb+Shc-A*zPLt2U$cUbQIXPa}^)iZtk9HG$;b%sy+gDqbc+p~UwJ83wZ@&6Ke?A5SA +yITdPJT%Z^PM7bt_@TWro>jX|Jy4dhfU^%Tk~Vgh>zbI1jBl(biZWZUv^)rO7R;#gd9HihR19G##qg_67Yopuu_*F1-p+QNe+@*j1uyGO8Y4rk?I^MO%SH5LB&mul(!1lHz +9D>#oKK*IIKVSdS=XZgpH5EqK(1sR76H=$Vx{Qb&M*%`OagxCfnk)Be3_r$O3sKSr0;D(HKp-D^WVEZ +o?bkqZKYRM0=Dyvd5cY$4J^_s!zI83e-utlkFM|FY+Xl4$aM( +oUz>1gwoxEpQktrhQ(wf9&+Vtz}(G!jLlU;6+YezYVTu1SSXGlj*v?~uSX`>Z4BN+*2lCm;foEx`n&(6 +3XAeXTX_j^-po3_oNX$UepPViTxf*ldy$=YX5IKxb|Hq)j~>;FoS^S*pvGI8*hAr&(Eny3-Kd`~{}^o +{*aGj^Xv)1Hc;3rf3QhWPLpA?)K>r8tG_H^?fSNslIsyKkkXAWIIGoJ&xUfs*L83xeI**aU +h7q9LvCKtj5jWUfQZhx`5c0Q!n#wAd9noEXn)voGj%and4nX-EkXVZxbGdH7|(%0iS)~-#V=o}xEKxh +z*n-Vy`SLYT24|Y7q+gcw-+g1uk#tBe_137T!E*nt50}by*QpTQgfVvJg(ZDv$=DKQq{v%ISw=Y5JvK +|Y4)0R!)x4G>`+$A`nn0(tK29sTg8}TMWOH$rA3i) +{w_&Lr6n%x^PP9_nv39tZ@%?yPc43Q3~4s~*&h6vT);-yo2CfQCpE`(6L(ZFao#U9l~n?g9~rm +Cz)qZCHij~w2uz*9ZWW_&mrBWRnP=c4-`Z*`Pdoj$Qz1Y(wR?Hw{FS(xf&7pib2@8cO3SNe8A#4Unm#9*qAfPC_f4l)>n8)m>r>T@ +aC$}t}r2qpbmCpA82r{Gja5<6`2-minlSFO!D&Vn*qeaYS0VT0>!F(%;Fy+p!~0Z$>Y2 +Iqa)OXjCmtWcujGg5E!23Z{l-sVc +)#K6&vrE*w$5(c(kOf7(1b>Z)AUPJxyzR2Uq#w#LOQ5qI7AQ$i=sy#`e +`vgo$mq0rvUNK7N?xL)6@_|Y0CBlY^x-@L0BhuP<}$TKuhHL;5zs|bjWKAQ-$2sC32^a^M+64XP~#7P +Et&6aMD{1MDatPb58Y~R4M=Z{=FlUqP2s7R~YWVtSq83 +k&>YJEE)C_dWes|&23Q%oe5MFWudI3cd9nXqaII>?e~hQ_*}+VP6^U}H#H$D5i4Xq=-xgAAG`YG%0$( +UJXr#M5mKgpO)~3TkhqJGU4$->uoBirrp65{H?@{9fV@icP^M@lG6${{<|2l`YQnCKu&2(Q<=tJ+O>x +YiF_BG;drWRghCe8A+%I6_UCl0}b!}PJNT82Y*-xWJ|J7rvs;$_6*u41&Nsu)Q%3K@|yfVmmmYoFikI +rN^wE=RMZLEBrYYy8y*JG$qx$C0ceIA8b@6~vqw9y<|f;wWj)3 +BtDi$IJQ**4jO$-4( +iPpJs(-Z_V>78M`~dqD)84n8C}tKwHnVt422Yd?)aCm~yRot`C20*+n-X!pf>Pg4EMK^ClH(79D`%Si +nN<3l!Vv*x;8HvVAqd)a4z+n%9j#JN9mEq@hhmqV$@oqDq!gWm3F;1mUD=r4aLa6f;>dEx(HoO$&@;4U!;IfT&*Uk_2q*`e%a{b?oJ{bi?th6T=a86viT^nmv=nGQq&6bh-`&G~K;=+< +=C*$XYZQUFDTm@i7}>8btonoebm$J9W{t=__Gn%xcloT+J~>QxsDLu`DRse~R9U +4Xd`EctY*Z8PRh#tP(`JndY$UWtuZ8Mw@F(|V|zcCf|G)W5ndTs84^~g+%)H+T)KK5=B+B}*d&e7|GlRg)d%lebEX@nACIZW^Lttqjuv`ZLe?j|GGAGgqT`R> +8@;_~S(3|eEAI9VSC5L>w&v;~QQU +G+{Q8At&ej%TvgIBhhUT7z@7j@;Od;-1A4W5xHI5=1knS*wzTf9J45KSGZxK4~P!@K|9B*V{RJ9#UkE +(q=(->vCt@$-Jkafq`9-hvhWQoJcqilMup~bL-4y_jmFLvSFd_!BD+3AZq{jWIE8)0x&G9x)NljAwIg +Lo1AbX?eVT&!Z-&?07?I-6jlspYyh0_oCL0S{ClfuWr1UE6-4@w6UMCxxKpOWvF*uhMP-R+CMM2isyL ++%0QhF!A3Ce@Qd->M92#yxg?&<=%VcrDI3ZOxkkY)qe7|dwi&HFx!ZVTAWcdoBy-=M*W*Bj8%40Paad +Brc{Z6;X1_Z5v>^@zq-{9XV`Rt6B}(`h;8r=ll4b-{T%NB{Pz-={Ob1C0n52A1D2N+d39H1?QA;rY{* +|3iv01%pZpxBRRxUdDw*TaxN_JsJRd^gW%b4@xAHUeFP>w9J@U7;H!jL0h4{MDp}Dmh|4~!J +{5o($A*|ro(2UAnEDbKQZ`KI#0+9#|Z$6@U3N{-Oz(`mq^5yJGVpvycVJCworEi|+pR`2fdWNa#3sPv +K&|u34l5g4Rvq4N@mt;GKZzJ!aF<_ZZ9B^|9zu^RQ#Uj|SAx@SR-s(Z2vaiB4R-AjaAmMqd^sZ~tEtz +tWXHz=y6<|{ED>X7^jDho~a;i^xW$a9WakZ@C`|0G_nL!bxi9ghc^>B_?fJnrpIUzRvqU>h1 +J4iDMb^R@b9ZTtAK +Q?47^vSrSvO_^YryE1tqS|qMDuGJyUHRf(ebKi2@#8F3S1zdO(V5)D}ha3kH%bry6@xb`e%M!WQ2~gJ9tT +f?MmaFReht&aas+EGG{AP;G^fk;byb1!C9MQRKjKVupD`&-A9Ko1l5srwWPsLT_Zq{2xH$|$3-ch0^a ++WI^*_>IA+w)4wvz2GI|23}m?Zf|Vpp +G0*`@iMwVB1dW|Jh#(DJNH5bT6ZuQ*nGKM!T_j{Hae@UEXB;6X0|Rk8@sw|BBmrdUvF8H%4Q*Pp5>eU +nxs`7L30IDIIGw3N`}xt%qSwY!PZ6}XyjUMAl9M>3s|BJS!6=d)WfO+ZUN-}tpy^`O-8Ol;kaq1UuaU +#Uq+k5;m*#Z-S5%M1mhbNlUuVj8}=`DJp$Xtinv2WF)vSI1f@TP27a!y-nX}M+9ZHjzxr25>#g4Q(0QNv0Fs|h-Is& +s^JT2C0m$QkRziarst0}$!%YdU8a{OHXs&}$a$4!&$`1T6)?hmtSifudX~%Z8%3j?!|Z?2kt5oq82f) +HkJWk><_uwdlG_9c2rs^F~h;MX-}2)hpn}c!7?hBT7Gw8@p<)Sd&CoS5-_SGgp?&ijBy08^-hijXRTL +HoUQ+-2|nb4f!sMdO*+qUrc!Jc4cm4Z*nhabZu- +kY-wUIUtei%X>?y-E^v8$R6B3mFc9APD-O((6pGvoS%juQi#E;B0v!x^C<2+1P7)D{6!@_04*l&tQhp +bx7K!x7?{RlD=bXJPe|(2gSSNJ{N>*0b9aO?$14e`I5!S1hPs`OeNJuwgEn8U&FO6m&dhbV9EEZEQ{M +6;fc8lH*>f^f1VM%8rFw<_vD3bq2*)+lABSUW8SbY%G*6m8ITvHp|PALlO2^y~lr`fNoPT_;qngmc%h*q@*2^MW +ZxsRDH>Rg^1+O3Moru}h)kZ_+z{t{JCsWvLZq*#;jhmgS)nqH;zBkLA41pphHtXh +t&#TGrI^Qb~_iD7WW0Pjz59h0EsA-M9qZof>>}DRdo+fp^slulzi&sVA231Dp5PCDw+lMh9cXN$gI>>Gc_(E6N +$|}Ua2%sw&+W~~Tm{*b@VA2|C9P)h>@6aWAK2mpvB?M!tVZUrS2002Qj001EX003}la4%n +WWo~3|axZ9fZEQ7cX<{#5X=q_|Wq56DE^vA6TWxdXwvqm>U%|}ARwBd5|bo{L_d?-`CC5T`U8 +8r=≪Y*eaAGTyke=K(oV)<1at)^<%~fdhRM0c`Vl6Wdp=X{ZhLdIB*_5^ +ugWb&9eiREO(v3kghpv;V(k~9NnlA(DIDyBK14|~E;`yPgD>>g5Rg^3BIkcJ3L6Kr8coNBH)(Hy-ZKh +2?-~;< +y7D>6SRyWY*=c7pQW&wWv(6~n`_}Lq9%hgD{^p(!gMcah|-!tV6w_^Qt~2oQ_DfG)N{3-)PrH^+{8vY +hheF2j8FYJaeT`m&A!S%u{jMHI25ZWmAWY=g>hiI6NYJ$Y2l>M!USf@tX~9XYQani%rvt$XEa1 ++ZO&+jOwVbW6=OlIO6bW5vCOW)j1bE_qd6nQGK*M7h-JP(H6z3_i&*AI#L=T?zIHGRF}Yc2CN~RdP#a +?z;gcn)?`#>%jqupr>@6AXY*}h1B})_H*g;e3m6<&u%VOe~dCv*M92lMu2f +cEOVeY}y++vs$hPg#7rx?qD80m=+;kkt+Cs=a3^m2kFx3J^{OKzhjr)bG-Y~&OhxrvRu(6O4AG-zoy* +n%7^Y>*V>U|}6B$ic!oSdfE-b*CVA3hPcuM?g6*M>9%apBE)XROy@Zq72Zz49r}V33X5Ax_c6srkI)% +(4lY88m`pGpco?8&78V@N?W-DWp=c>`=k49A%L*m3nm>J=Wn)JNOVhN5n*TQ}dFJz${If1 +JSxi09Y(3lYh&=ZDQk3L3asX|la>88lng-{n_T`;Cb1@$V8Uom+a`&v(|yEAQ1n&?8N^`zurS{Xf9@A +4w=%xt3Q^KvsosIV4kL#;=lOO53X<&6U+$ +QLkz=WA4qzoK}|98k9eoX&N`QIpx^$M<-oAJs0>c(>uTKro^fA&hOK@@V&XVC(SWCMJ%@h^?-4*XvO+ +X&+l&+4Lx&6p@62DRp}VnzI@iuqt0oJIivo~`mSE6XBYL*JjHIDuH8lPwnLZIsb70}IVqESggaYt9lzCkIRPw$8F#7fM~wurS(}S +#A;qMh_UwK436|%>rpsQnT`9hDp6* +n>&)Hsqr*bo>KP=7^ddrkVP6Iw@EGemF8xMj3y;BlaiT9$!Jotz-EDDa~9a#k!;R_t>lj~#n2pbSwe| +jV)c-zS#HqCa_W^EG_stsQZoganSz{b&fTqKi_)gR%xNA(#IY$FJ+9{#-aMqVDKslCCsXspgjP(t6KsTJitzDaXSnx-Us;HCf$2i23p)5Kdg84TGdooh5y#|M6+QM>Y}{#ODK<@%B +&81~pIDvW5`jv~vU=hn!+ +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 +vrX1j~EsSr0uAd2=BmL0DXm +;{{P)h>@6aWAK2mpvB?MxOo^WM?JbaQlaW +npbDaCz-LYjfL3a^LkUW~tf|xhA=i{8m{`S+ATcUR!0$xl73k3j~K0Rv>`ILzMP%|2^G356lY`?Oj(= +$+7Od;$Ws{rl;TC1J28Q$tII|Q#U1_Ojxok^0H>pw93<_<`eOK$Y#lHQYCpdWKEXD`HWA}q~>LmR$E( +hgi$2Lcyi0LSzeB-$;f4X~Hv@y(!Z)nQm>#XE=Xcsc$ +9sm!P1m_>^bRJ;@eoq2oBusyfPQJ=N)lvmvXBDCWo4Q5nUsuWHDmDo&Djyf(glE(%`8QN_C;O+NA>Dl +2|^7xSV9bjgnTc~d7EV@a->Kh-5H@a>1Kt-8EF*kbT;dK}%?yn+s#0JFE$dRmrwDZ0z&?9hO<&EDtPN +FEovg>ArsDwfY#yY4xls;M|jGFD%6R+M~18z{FNe9!~{9@h0c&njN`FX8-`W5O=)_Xt0|0RhAZ2+;v? +HP|w7`YjO6@d}(ily3&8Apl5PbM+=$r2GiheZy-68AQf^nKMm$uX{k^y;nT|0)(2~MrkseC}zp>N!7q +{EuxwOyx!%PW_NdYZ$$rjLH{1nzo*o+cZUByKcg=%;mg^{$?gdMbBbTi&Q9syvoD_!3Vm09iMD;+wy) +bB>$bdKRgbZ4mgT=iaAb4Ip5v-1kiDu&nrFN{w@R?uHv0?=15X%;wlZQ>%?o6zB%38Ak +CE$Hl+9RNay;yII9nz4wFJR|JjTGEHE{H}PCL|6DmEAky?I9C?oZ%n)s%2lb5MK{B*nsFtW1c7|PgKiO)j~|a8MtR^%r +gb$xoUZ?T3&3vx)*B9O9kbnYI&nt-fX_QBQ@qoK{-|}$ExLI^VOZGF{cX3scJb>EoYmrPKctR`s)nU2 +5F;7(PVMmL?{M4l9Gz!rBECv`0xHMec30K@%RmWd9sWDK0T&?kErPxH9Z$!o}VHmgN1M$#h~_4BgUZJ +s?Qk+!2V#X{qm77PVZn1fBy$)wKxSy!H$~woR@qCmIjZO{e1c>$gF{2iC(WK9;4VnuoZQxK)^*co8=^ +#uA^Jdrn(!*POv?alI5#xi=bRwtLH2s+bZQtumkxFBo&K5DGRp38DQE_Q7*10*1<9P|D+baRq-#>+L?8OuPe1Js)JDWwW*qba@Muy`CjE-1^P$|6+%bNzc`RCyb? +FcLq1??OyS%a=6nT}LP0~UUBcyoH +SOi@)zyJTuL$VTAxnAIr}2X==ZQUjuia0{!H3AOTf5YX^BajZXgAg?RSv>@C1FmclCa3U>bDb%{loSU +v}#PO?XIqYJ8047UX!Z(7>cLw}%1b#y{>*L5lm_YDMy2*!7Pnfqs$X#NivjYQh;a!w`8Ij0S&J +cBIAK%&{NNnV7Hsg29ftTkc_E5$ +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 +a8lH#-Z$ +;lu?fEa0sU)(_B>IP6m~Z{=3X801U!Dcx1q?PV=(6Ny&X|1sIh&o$!GQ8L_V-%2_0_r1*;c#G7z1pC?eIWp=t8>9YGTs=vp +J^@8i=;YOv+q8I=hCQ{bKc!k_o53x0o?LVM$tn-VS+t;xud%71Y*e!vdQe&4JK<_f!f7N>Z8Kza)8aF +rq(a-N#{tz{hI`WYxIAAiEswi`!qsznd`X5PNg@2m;$C25rb=yTfva0@x}=`fm^I?g>(i1tjYXrws6g +`jIUISf8*MB4EC-tOW|u~1B{Pta}E=&=Ad8#sd6Qf_@R$<9(IV!*6@fZ2N +27(%fY|-gmf}*7n3|T)Vyvkg<=**bXh#n9{n(^oiH9v;`e@RXXo_?&wpjB7FB;lg)-LUm1Wf)0NaJix +gmX^AN%t3<*#C$1P0>>0a(>wr>*7hMaK4p5<4DZYGGACmJ~jnJ@sFnhG@bYbi$o)IR8@#m ++@;2M4_0}MnG}Opa4WY_N!Q23>*YjAnvkcmOryP&Qc?VjE$CHqRMnOlQV**R7cdtU=b%PZ${Yp~Jks? +uMKdDz3EEm`U~Z$-3gr2eK|MUeQ13&))^Pyj7;7WSzG)3OxgU3CFSOZYm~9(H<)X0|z`o4D@ZOR&37| +<%5_qi)v~F3bxU2ong?DAbZ+K)R=`mJ`<)i9FC~kO!?5$6AUc6Nmhqf77uvc!KhI4B_w2#Z;pulAqZz +aO*xGUIZ=lAEccIU5Fp-!)7; +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 +OV=S8RhH_KMR)Yzg4r`cO +6Mj(vPP-!A7rrc_2YbUc7Xdk8EnaqV&Mv4<~RA2&Gc$RMz}p(VOB9J}UZ=xfJP(k=c?u2jj69bV`$c| +pOZ`HTv+6em!A#PVB+7|*Zb)`2KqyG0{UXyvUNf2dxgcE)ib?rF5yA*Is-$W9BJjd*$}q4RAm9pK?lz +@{o9zebq3?JCdNEWasb?|65n>)2^dUYpo#*bl{lwe3gDgZ!E==Mf-vVgCTkwS>Cxogxsp*}2)Qc3Y4_ +v&Ok&$~%CN$6ds*op=R_-wQt?48nSt!SRfDjJbS7IZ{lxKQSkTiKLj5=JTU`qXyqkY2vS(+=3J*g|VL +i$;_c{NZrL~X^G`SmX@(0XXU2_qhr5d_F<44;1SO_9_I9mr?Ytc01S-gHkwX$KOkTJp|ep5 +MI7;%d|az%fj0DX-|Fz-Y9F6_W1G{A4sRzm>q!L|l$yL57` +ZEdg2j9Gy*4@+aMuJt@^u2=Qu{peM_>}jLwbJqkBc7o`A1ie8`&uisIHLFDR6Q!?HIyEJ?8n}K`3$8O +WxQ*tg)N(OQ2R*Dy27XpQRdszvFRIguxy9a^buyr=pBUi&2%e5_pfX}5;3;oEU3|K1R8`H1KNSYqvf6 +X&*7NUOYEP&wNxZLNBhTI1F%y)bIvu^_F&rJt?ky`>bRWZDpb;E1!QpV +EOPjZUIq-h%xp1k+IP_cHj7uh`sb@_}W>X?Zy3d_?G)FaAY02*$qD%&T0#YzPwlJ2KePF>`@lg8$faj +`&v|A10-)+>*PWyYF~4xY>aBU#jaf#BK61Xu(QvWabuSfjKrJMZdWp48O6G!DX*)`RfosXvSUEQ +;QY9+DsVbxx^#6GO*!>Uy|)Q43Y39FWc<6K0rT3|KoKEN3+8Q+|mY}&}1Zh_ND-#!Fx+c=sX<+lA{ak +`0v)s+(eS#@O1?Q&0Sb7SVU$ +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 +VADXo}Pc+EQJeExjW%xv~41W +B9Ob7^gZR~JA2vc>8++x#DI`4QHl`G&`BR}GJVO@zVoAog&lDwUiY5j#+W(!b&NRBuhgO;}Xq8SHmkT +*|_=QH-MKC4Gg^U4gB!kW{9%(KVe&q8$#r-aiVYl1>WeN$VchmSQf5*{DP+X&qN1QoU*euBj{Xf+dAk +4}`-B(jI3)JRnIN5Ud7K6li_jb2D(eQPQ|Ji4LhBWhhi_SP!?t#ILevx(Ppa1cD>Z~l_tR5Rzg6a! +~)YcfRtZ<=3$qvnE^Vz6!c?Gdm4%>1)74NQBlNw*>&U9-HD-j3r0B9*!MIObxk8Rj@hhrFiCo5yXN~Y +NavIt5Z280lHN5>_Bo|O<<%0dME*Fg%_`ZZ;I83sYNT$F&Cv0owp&v7bwU>UC-_F1JDs$LoA_DzUN2~ +HI7#=FHBAClFe6y5xe|#vJdrF>no?0;6A9>sM#+bp_gC;>`Tb(R9LPirlSWo0U3l2Xz40HH!im53u#fmB1PqLoqS17IhR$K+HFl% +4oub$LM#`~Y#!we!~L1kUK!3)VO&wz%iYdFy0bVr{54dvU(P-4WV*(e@oHorb9?t$OC*jd&0#yoP(Fm +kF8u$+Mq{#OXTdO^_SCr2dnIU`nS89%!O>Pj+;TDTo0=JdWMS;%Rud;Rq@>f~c4x^5yHUT6@MZ-&evB +QaBTaZ#`#c_e=iOso*|g?5@kyYTSo;p85-Q97X$7!D4bC%AeZ2^)P~`u-kSEu{Ap+ffi))7?iDHI7IF +Vjg0*}4vU%RL>dD-?d_#%uW37R9P_b +xom|*feYicTAj2SE0r~QccjKck|ceq2=Jve!&qkTYj<``hGc?4_-=yC9H*3T7JfunSH}tN1AkLc+Qpa>6WDN!BiK@+RM`8HJ)_4n627i7Kdr~OJmaEL$Zel`|r=Ro +kj2Dt^0%j08mQ<1QY-O00;nxCGAYs3x@AgNB{snMgagJ0001RX>c!Jc4cm4Z*nhabZu-kY-wUIV{dMA +bYX6Eb1ras&3*ZI8#$8Z@BS+|o}IP5W4U;UlvteZS(PQ*>XwhO<+{3RYm=EtGE2!!Di0l=o&SA-Jn(& +i1WCEN_r2}cuPjCcfIuJ+2m}JiMV796zx}o-i!uv;`>hwPH)&S%ym_9+WfA^X|9;*JqMIm>(&TxsOd> +xG!r$Vk2s1CvA3bWypvg$)c+nQWgH*)D=+hWRq*k*6|};HY!%V&;R=B)vMDNkDu4oM#+sAN5O&SX_H1t!8M=P$euy!%Ij*W0zb{N& +@bZqgSwpq)%PeUbFS%A4eCAp=2?$Q^cv1owS~9r)_LG(2T6DvM@e`PCPh@-OZFPF-ph}@hOAeU*}cAa +h05bNTzc`rZIlG*ZGJEqj)#uQ&nif-%-brOa=oNn&y|>;a(UI-BFw_X51*NKd@oV_r^!v26$h$Nm_@# +$op&{+;aiEijDzG!(VK_8rm$k5NNIo{qwrIV%;$gom#3QMBtK7zXZ_>5XPq7!;)6w+J)9*a$t=v(kG$ +t4MhvF1Z<(PE7lsMh+<_KpS{4U+xK{HaPLmxB1W_fCFlk2O$?S=#HoV&?1yD+7)jwBtFVo^6Ocy(9Zc +D%Dy-w=}(nW6(#i7#3ya>HuUpo(|yQf&`C2BhN7HOHF#>88z>K-HxP5E`gpt`r#Bs;G;G!=P;GDeE;F +h7VARZnoBrl*`8fu6BiMGH^KN|`m&UleZZdy +(Q;KB%+Hd*S2dDUB8C@X#4R{rAIR>mH{LY}U}Vx{X0rieRsSE$quzql$d2eaE_2(P4SNkIkR0Vf6LV +L+>Mc6?$NL%xEH*TrH?mDXVMR)3}D(gKxc;=8-C7eGXt|w~PYhhIyP>uHkSf@6=mivRwY-V}X2Jiv3eN{!>PS+!+Y^spzmio`6ZPHd&?RRPq%Ip~&%GUUw58~M7)Sk&HJ>31!=C`rO +>RjgyK{WplIKr+W50%b)#`b{ +qjBOJyJ4MqO27C8M?4zNrRnh1gkpV?VWyJZ&m?*3&ig!Z?(Rhm4m!AOf-1vN<~2wpQGx2P?IA$`8Cu` +>@K6goW;9vGS4wr9XQ|Ntf31HN1=RLN5v{L{>tl-}dz*v!gPjP6s+vscgjhzUt6dXqOrlPdQs&qGz${ +N!@|B>CK)Nzea)Ede%`DJ#)$6ZH?MBT2|?NNAcWM-YK_Q9rHcIB6?N*c-Kge!h}s#+y(XLyN7V04{)k +2^fvn=7)aHc7bRZYR^7X-i}$>|r@9^9)(F#NppOfDuL(@SQSpbKX;Pb0yE%+>=HT8>u|rsaVg@DxVdJE?bxy#Qn#|El&Z=+gvhPJk~cQ8+b`@geMUB&j6>zzomUh4cw6{(JCmX9M2tvJ^*_6dzX;+yO)xoOvaC>#xI_^d-yP8>~*?M2~n&v^3bzO +!B$j|9;{r&PYit}(z+)Y%p@nmfI +R_RNgI>Pumj`qrEKR?x?Tt`=S7?EvDapj>^;g#LS60+ah)K;Z?M*8(NZOahS11#k~sNFX3y2w;D`PQI +&SDNNs#Y3Vo``i2~8Qbjam~bsAv)~RJZx?%8&b2N}R(elO;Mp1BpvkpI9$zu?Um*>eT6@~xHNA ++3TI;@o1AE#%SS=o){9nO_oPiGUth;>Rb(r_YBHz=;~@5u-~p*I% +yeC{t(XtwZqg_)?u*_S9~7Av#X2en^uOqNah%@j7-eD{nO13B+jV^c*fvPLYI);mlU18& +O(*{J+9SnwtGUBc%tPJM!2=8gd0%y*o-X9}>-7Q0L6SD3Zf8;N<=?8n?nX24g669R-dR5spmk{;(tyL +#J-neGfBf;FOoDI`C3;A*EVT@3gX&eN-qS*d-}2JG(svTnyjbaL6Z%YP5#5D>w$}gk=#ds`#ZiuHH1+ +W6e~Znx-+Xg>d;8*c^dilc-wdYH={I*3zC8l+iq#J4<8R(7g6cnSFWNHs&C*?9*zfnh(b$IYPEC`mU7 +S?-mUtT*Kfb-FSuuU3B1yi3l?wmOV=brLPd94LHrl9#waC&hVWO$4-j1mtB`(xSJ@Q|E?E+oiz2DvzsK?gI_uEjkZ+WMtdpJy%cVlF-5+YqOuixh`dBu +9j}V%-)$KNt+tx9F~#q<%ekct!rb3UP((#N4!=Ho^hk$Ay`uO-I=FkR=6lf5a*z6^!5(c1*SqlxW$1Q +OxRu4AlXRZ#rf};4&}+4%>>(+#=xR?#6-}D#5m&LNtL5Wo)qv+}RfxR!>qk2XvM}G%--nnbFAMi*j&i +3Xf1j!F@@Sua%+*e1KgE76nJ;slQMiXFPW`Jo_j)&-4vOri*rRi5lThq4>kqR1zEXg2Ph)<%M}HN;GE +2+NKC1QF+b6E1EaHhvF<- +Z?#hWG~CB!5;i@4}P=vTn8ME+Ud5D4o8u4wHo!=7@%n`~#jxho43 +i&oZMpL;y6y!5EL;OHeyCG8H-B!cOUNx7+RW$Cho=U+Wn+s9s1nA?%sIS8}ok9YB^Ioi{m^`6zMI$zm +Cl1FMQa<`i(-m{`tp8Xz*D!=a^;1erZm-{G+JxgKY?J-tK`T%p2r1k9GN7ZaH|87rz-{?LAm@O$m4*^TTV*<()2J? +eJ5&!f6qyESsl=Bx6fb>VZRg3GMhzP)@Xo`PX9KKn9}wVD0~)GoH=z?uboQL4(tuY6KvbJ7)zQF~=0o$d4gGnsuQPEpTL1l4 +|J~x^XtPoMER(3HVoVzFK>UZ((0_9;)Zm0!;>Bu5nU>TQydY8?FETI5E64d;051*DqBgCy0MXu+>P{Fd?aZP(O;rDWTmKd`x}G>pmddUgI$hO84KuX&)$ +=cTO?3aE{sC;h(eLrJ=ugcr;EQN&u$R@}4X$pxo-i6;|30aIw=~f@(jJmhfzZ=8jw`|jsFWZ)selc&e +xD=ER-wMUr3vfbZ|dKI#>lY#DI{2fZljZhT|uNs}Dit?+MHO#6lzY;_Oo0RL+FT9&tLh9H1 +=2wH)vkzmWf639=R339;Gt+=w{4^+`at*AbaShzAR@PVPgI83_R{uCDezdXojQz>Reqrp-2CH8q%5Fk +0-mJWeq5+�GmqhMv7`d5wsQfV+A%PD*d?$(XSRFdZs3A)hYGwj|97KU_Sx23BAHk%i2QKKVMcq1w~ +M1z@Mrg23uPkZHf~8cvxPO)zC9QE&7G3rfdvT3wzbV8d}}^GWIeyp)Jg|p)EYT+o*{pY0p}ip;aDTpx +>BDgPKnNep~-;Y4lNbx>!^vtIf~%^-n_)1mR6oIRQ0EaB6-VnyBzsg<7%lnneG+tbVo>Wwy|3vRb_=^ +U(bMRQ+yg?(-sC$I671djI%s3%O_^4PE6DSFZ}D{GOL^{)nh=dYAgr{DO|JA$-Qu)CKv>{APCXzv}g_giScq^S;}ZM|-nj%IhuCjVAl*x954kBM|VV*us^ +5?xcRp#i~^WL?t=$TH$sQ-N4d#X(5BD!lxR7+K|XT{d;|7~gbMWpOn{`6UW{-QXhG{f%R>hUkemi%ID +?k{D(-+$Tu>KSnMxZ2}XR`Fa_k`>y|-m!CQLJX}Ltbz&ck7~o;{#eoLWJS}Am-|t4k=}-xuag3~_WG@ +a7Zt^CaZB>7F7kP^*;k}&Ntz-T)dk&rM;kT4vqwR+j0z`Vjd}KH72ch0B~r+ij+h-*y@bZ3S@6_X%2N +INqUzt%XV0E(*9omoe)DLjqnBEm|J-|{WL&=p*Nm6GY2RG5S1pCgeR#C0X=q5F)`PMdw8OI+n!iTouS +4_K*!(ql{7AK{^NMz9NNqOSyJ~B6H>>BTkk=zQ0P}7Y8CbMD-Z78J*f=vljprBZ2;_vE|KjhQdR$?+8IB2-u$Tc&+V_f^``x^j@h@r +n!qf6)*)E@ZtAI+o~LR(@|`da7MY@T-`^V4g=zv;6$y(n;LHKng+KeVqB+!q!R(?T#pZFkdkNzaJ>QzECY801Q6j(&-GA^P`weU +U;qFh@)5=E=uvP^yVOq9@lScU#o{iov7Q}v>rRc2M823T#RX<(}3fUbb@a;`QyATvjUmSBhv?boMCe2 ++r)z0HRdF`;S}f+}90;eJh<%`x=$BD!~r)Gukw>nZ#&Hcd!KR3(SOQrk8S^+ENEI*pP*CS~zJUeUYy( +9W8Bp|_58;)EvqFKzUzH(;YM|Dk@xxO&7`-(9WE{%?)l|E>wyiS7j +z2@Cw4{g7AO*{A*S2us_tr>T)Apu0NQn@)wHkUGL +M|lZ%Vq#o6WM*~i|i-Vf)OZ+dUuzyE8~-A3GfBtS)lgGnR-;^8I<%W}>NP09n1`jW59>&8C59hB>E%BkgD%|Ndg&Q3YQ1@9~_tEK +={{3wCPqguBTN_L@?e9?iNh_=ApwUA$v|325z?^D0I5NfB8KXq}@%;6h-Q|Wx2d1N@+{>o9M&aDW2Bu +g$TTa{Nc9ui$+S#Jm{qD0;w^l0$sJfXT1I5|dJEi%b-n2AkvQC>BGEi)sy#>wD2r4^m=EkY&S#1R_&o +54E1vx%EMqTwR7-*I*Kc1YPRh;uQ7@^K~8VsEF#W4xSkaRl8v93X+Ub +KuO`xy}q29Zh{N(K8nYN3{Usc=fvu1IzTpa*#u0{b<*Pfq&Z_p<}108x}vm-o7muUiOu## +>Tg3HmdL2Wki{i`ym5+K?t`x7vrx3&$pV*#9Xpt&z(aX9sX%A=*JemDkaMHC0EkVXwwETQ(wUj88 +)+l->JP~9((!9v^bamm)#iAg+~Ow4UJ4kebDo;8?k&BR?jM!`bT46vLr3zILce(VCVx`&?p<#`p#A&) +YcifsX?(y4+Arz-WbuBaoNxKm1h7)tfSG)&bI#(^@wHVq=;Mh6IfYFFuVH +)ki&wNd0ZtJsg8fZF28Ph9;2k()Tjfavz8=h*||XlF(TfZ05MGf>f +q@8+neO1(X8%iPV;^dfV0YZV#I@Ib4$j6+k4VrV**xVKSK=DT4q +hwNDQG2iByr5S$uz5y<+!lpT;ers(9t|-a%# +2gRgM~tYvot7uREjmAI(7`R{bDng>}8hbM)Dr9*D;~stEAa9A}CL@LnH80*Q7dCij;XPW9FtXXs3T6D +}ZjFeqt~x`kBFo{Zntb42^QDJrWQZblxLyz9M66hW6B&;vo=Zj6ohk#{DCLvatoVZER5@Qj4u}S$r=( +Ava=v=pew9RJM2OB+&EWgl*$62poj3jYIIi9oS2(gt`KsNY*KwfT2%JIxVX)45ytXWe!wpt-ND`k@@K +p2WfGpzfXWwy$_V``_{R(kaX@=Ys_tOl4a?w=>{~vrnm?fg+Ggam+UeOUCLPFm9^un&Cf31)Uz5hQh{b281Lhz5<2UE<-#yPW3-Qxz*!ec?yec!GxqMVTR5{9 +3p2IOczb6-XB}{T^n_Ik7_q?{3<2L1_n-9T!cWS`W@ePfi@6|C^U_J?flO=)2WYvo4j9vZw#g%SV`}j +fHgeBM6lZE~&j#Yr +rhrh!+iG-jT?vbDn~>MQ*vzrZ`U8mZMTBkT7&GS +$PY$Y1E`CF^LcA&0mHVXsh3yL&EywuKEU4$a6b+05o&UuIL{&@JYoEX8`Dv!@IWM4rgw8r(S|>vRoOP +kZoLM!_d3M2CpVJV*IXmYy(wER#2fTLGAeKkyl!EJbhO_%~7;ErYzoqJMn9n&V;1kr^q0AYTHP^$i*P +{CLmxrsp4y@p?KN)ohM69JhK@DPcMi}DUwm*lEb;@g?u~_G+^nSwhRtl?U +&M4B9Rf~@W7zwPZGVkU{-x7ZGyH$)*q|{`VaEKMe*H!E%dquV5$81Z{8g-aMkoI2Z8jujqj-Oni_~ZW +1oax^cCXC<|FzR=qZ5Da^xCv?A-FZdy{Ojcf5Xq2{4GPYh#_Bi>v=%koCA@VRq+V9S{GjR-Dh?y;Idw +DkOzUQ3+c1NdAYDeiN;x!fa=}1zIgIo{ed8`cPvQcHniWt(PnCZUA{p(HrzOs(o`?Q>JhFMJL-$(>)m +pP#fhY;wrAG<5Yfw)#@-%|+yr8GIAxkwaff +Vv5eLi%dx#KWPOd(g^xnQD>df0pnB#C2~`jWy97c5+8F+@UN?BaeGDGCcgcv~W08drTx%i9w3(q3aF8 +_T~O1|E|*9MlQp?b1gA%dV;C4H)I}O9LjboKp1Kwxybk8jO6fvlmA|0vgz4E^9BWK*@bH$ +G1~XUQs)eLni=99p;kLJ7tPHl;3L6=`we$&oQ+2K;j?b{geA^MKnOSee-WnxJEV72}cVaO&J%1-xYYf +;sxsoC}@lLL!IPiJL;xZHLUAXl0#XFbSu;Xc|E?1F%^#Gz|AB~Q5?54|$FmP{tX`fk>*#?F*=UsSN+3w?q*&Mb$FmZy1>fN(p)@Dn2IL>i}zl +(xKYqwD~lR#&8oXeujwc1XC+h%LHE$-vQ|OW}%%blBLcBikrtlw{f^a0W`Y)n+YDJnUPd0iBv$VSx^j +(-nd@j@oVP@DH)*rAYB9E-L}-`5%Xzz!T(Ioxvx%MGDxxLp-ms_hV}EvMs=qjN3^9k +cnfEdIboSvKm>#&^v%c_j^v)dn~3T+Yx)Ck}$LlsAau?01|uNMLfli~_$u<0vckRqrXBieu6D98M)L! +l~F?y{B+0L&+60cJ+NQk39s@aAN)5c2~e41yutJI_rQ%{PfTVTsdV%Dv;~@b>wG!@@E$D_Z^?txE=2| +VX{33%O5~KtQ9bdY43Lh<9 +@{^YptlYSR*Kl-Z+08t^OpXQPE5pa}ChfY!o$wDzeM3(6dfmb?#@r0nPyudy+n{Luf93 +4QDfFy3PNBhuGdk7+@K`{EQuO?K`#|)WSAbYrtZvBTC2_xD6=&)hr_3=B3_fD~K{&@Df*(QYqnss1um +x~GiQG}l70CNgqpTR{8HjJizl$&Kl-9F0A@|a4{`2ZS#-olh^^UCHnfh+UDCi=W_kWI0D`p9Q%U}2R) +3(SP8qczSb`Bc)#h|aK!6mjx#7vGH>AqTOd>IBLq2U{ZLM;4JQR6Y(mM0TuvxP?LlQ)RELX!%?qMXY; +hqpV=}#KznFTXlEB-6JPn`t42;)STCYS^RIcVIe5jl63y1%koGQhj>=>XH#=7(Q9H)0pc|tt ++V(PEborh_KHm%Myk_@X79&Y9ek-r$5T>0|7W_|Gx`zlYf8t9U47K;}Hp-H~5#fd4Or4i ++-hX`8Y(hc-oOPi3BCVM!NVB^XW(Zxo6w}@e#--PcYyk*1+BopNw9F47g!w@vTo^q-Z8Kwpa@oF;05| +)PaGWi340z{MW4zG+#W{@Qtio7qsUgUmbp=gE0_ljDj0J%eE&<0Kn}iX{^vf3Fng(#4DZ2nl9LV8p_c +O;pJPDn3!JPK7U~sC|5jYw~c%SDYb0;J?XNFFUR6kRgWiEiTE|he~NdB`7vtaH2Y%7%!_h$~XOeJ*I0 +gEsTj-vFZwTvV4n}o^`z@mc`F@Ui^JA(iLNJO&QNWjI3<}pMs($H|;{<))c7?iDRZi5l`J%$#t>lNT4 +vFkp{l(5e261uVxzWP|eEk~V@mj6ec3A)!MsNBYRhCUGlE(hia6ttfYh79H$eBu?iueGwFi1b +D0ZyRhh-di>o7uqcPx(4Ef)U@(G0Glx>)&&<$@J;_KvXgnaID(MminGX61QW%4>M}DKOl1WW)`>;Wgg +jBb7uU1Y|N)nKVC)~mLo(HS{lo0_X+Ph^fngad)oj(D4nTiX88A=k%nw;q>N2NKM0>5hh;zLm%AZk!} +t$2W2mXam{GwWI*ggI|Ix0`=*o{!e`F2**lEOA$R9h6n6dncA8Ein!=E^p8TUPZ5{rdt`X^rf0tuaUz +*4Lez^Q7})t_u3nECaS-CrC9{M6~M8N8p&RMm|erTm#4In0Bf<+c&$;6Fp+c6>5UK1)=Ko7oFE)ad+Y=eI1U&2Jp!G06GLG(D<_ +;^J%JJPX}Ouo3Y#9&MI9ME|`FxfK|xO$3d= +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 +$?JuQLxIQSaZnm4FTvAU55?({ +3Qoli?P4MuW+C9vJlsmH5F#67VWViC$a2J=V1Tkt;MrFQZpbQQHALm`={{OStnZ3S1bhwBzU$Hn-V*o +7JAN39t=zzhgOE)H(fX*jjv5nNc$Id@H3&naPKo|i;$^3%jdUAyI?aQwk4!C#HLc6W*oTHx+$1b +s~@5KZxSlSrbz)2l80&f&x{BRhu^0b@m48Y4P~6Q00|!-vF}R-c2P%+Q=Ep +65<)_Gn_c)n#7FtNwKWlM2X<}b!4Ni-BPya<-CKtcC#+#B@coS+@V0wyaW$2y9{GsWtUADL5q?oAa*u +{NyPR9v*Ak|HGxHZd8-1>Y^YjvmJt02>ssL<;}NBYJf%ViwK|@*?h63h +6Z@!3}ITIDjwj29A7%}G(-5MBTvZV)_f_fkA&MVw+VrD@BZu2BjwDg{bRTelj5Z^9iFehn%nzR??0qut^K+19sH +HsNLhbjp0iwJ8kGjRQ9Cx_zCu1OE(4VWkWY6o=@BUl3dPOZ6esKmhP2-P5TXOigu@iRtCp_8To;i>8O +Q4_ERH2v^zEO1JBb|ekLNE0#?59S481t!-AGO=cZ%RBH`9Tk+uUgn~t; +0on6(*PWn-Gfo_%!tk1ySnWZ`2>^t$>3D_-Uh*UtoqUrcjRZrKb-TMh)mJ32MM$3(%JyYS6fCC0*;eq +#%<9@*qd?Dt^7?C9}N9^y|FJ>wo$;bmed0;MeCphBs{dTGzkjf1*Ik=C8j#d-UkhCJPtQ +UDa|B`Kr;UH_v-l&w7hA>s>wX-SncQmw4+i*Rsi9L`AsHpFUGX+k$_4yef*#x8HnodwcuhcJw06mfsA +f)8lX6D)*`S&)bW~zpCmV>o2lAR!#b`m*>4xukbF?JpVy$1=T+A>E}Gmn!lfYTMO&)?)-40FDpDXe> +H7ai5_xuWuTzey*wUlHsv%BLH=bj{!%=(_mqhjx)%E#qHi;&DUMQTXOie_s5`|WN3 +Bme>=D9Mg9JE~MHkw61zG#dRvW1464;NoJsESEXExCr9;BFoDlyezV0S+WcM`yhzoo4AOx^dMNK@g$4 +bMG}`R50m1-6hSQF#rWcerBRlTi};g-vx>{Bi#aR9NfH*tL2whZ)iqle4<3jD<$A#ch)I?tY*Ioag{= +NQk66y4@8e1NfEOCeR~K=*Se8YZvv6*{Dzj^r#y_*%tOTXmSS79Db07WqBu$aX0-xdp&fBj>&V)=n6#wKx?yiVAh0gQv-iiJ^}&gut~C +@jPJXRiMyAT-odMB+hEhO^W9C%sO?Iiv1~-&f^4IZjJ9%R@x;hb&IZx`BCEUd@wJ_NjE1At+(=uVqob +$#NFY(idf!$Cp4W1&q`6>TS4CtGJ`m4O{{DmVkSe_9e=a_ +JEX`HZ85?`|*yZjf>Yyc?ApaeGgfIuArSgd{+lvk{V1Em(cg?4}n5M@vtnDPMOEdkoL+lQx;CX`R?&|(dFak59Fltm2?>#X$)dKW92FQe#w6im3O=Y3#fqjBAS8smo8$ +nKIJetZiB^GA>)cFRSJKThcm3livZ^-!#G7c2hKdW1=632_O>Pc3eEjqC6nQFnUd%smIFNuzUKv5G(<5)yuuFxySPZ%>f&OEFb;SH?E680LPQ~+pyZ;|!_O4xC +X}1pJE~Fr1k$bRjX}Vg7ek{ue&Q+2YfQ4ogbl0O2V9yOzY$|O)jO?z>K2azIrJLP{)0xPs#j-P-_N0b +^+2m6CJTEs_D7XE&lUDz_V|1#1jKno&Ae#g@pZyG{{sUO2uUg-N=1&doS>A;7a6f2kR5|;8Vna%QN)+ +Y8YG|u=4Z~LeQIo6ll_Bw-s3bbVKfCxrkwE}y~|P<4f3=}dGrQ^V%E-lBUl_WUQn4Jxw=o-Jor8jOlLbuE9Qz6 +bh%IED^`JdF8P!=yOJd2lG$Im>fcCBVB_I?0y6>vN<64b*O!a|MoO#8#c9;bp@3`(O@=50r@~S3#1^3 +P2D{fC5Tq==kxHiE6sm>WM-cV*9;`2>PeMaM|0`)=4+Sb`QffeGVv +A80iFpzh|!=ETE4+P&kvD8)OE3#f5 ++{y=}TxI#_`ZzAaS@NCH0-y|sn7pa=t-=__tdXK`4b;`vD#_@q*4~ate<)(4IuW&3bTZ)#5>m2}Gm{c +5#lu@5ZD^%Q(L-2En6Xki>H!xhPN`rJ4L?&i{N7mV!pqQtC2p5|jm- +)q5lpjkI7aD`b^f|hDcX^KfYu>tD|Nm?=?gboDn7~Sm*2tN0==`azv{yIm$i~kC#G)pl5Z{$xI1@e_Tryy>?60s756&G`0Dr(YN-Q +HL%eHoDAs$mnSoKJ&DsyO{r9ry1Mse_qHAr&hVH6iAY#hP9$EHBd(dZ`3V|+A10nc-ID4xb4j?Gx*VZ +rwbsDPWK@tR}hu$2$2d%hk+a9=W8CO##vd0*8K&`7^g>9kN)Mp3L-CXV;aVSrDGY!rk3d2 +jfUp%c7K>Vm%f?W%wiTZZxFvXSZXYg)OJWEEWNH#xs91t6jj9dTMbBzj=ditnX_3J49y)~{)0V#Pl8} +Z2WLIP{1Yu?nE*42VA-r(2;2#k?`)%u0j<$iV0}X-LgI2@3I=|fVZ8NbuXSq)|x-Iy1XDZ3VSeUivg5 +)U_fGe-U*`R)_FwYa+<6*036j3V+p~YHDyiC +{NkS*KbuOjB-7d!igg8kY@QjOn^N^1f^l?S>)`7i@1^(t8dY!QmU$0fL0AO+5!O8Pn*Jvp!Bt;SngWzC@&z~9wuNqwxaD`-INj5kyZKsT%gFtV~J2s#@Gvang`c;O? +HRP6RRzJXUIhe{JD@(j)o>Q+&A9nxcv4hrCHzx=wtZ-uH-h!s0_(M=3sn6PwcpT>P0*kg6u?ZA7r$<* ++G1%=C`tlzdk%|rBHMpo}={ +(G@VF%rB8Kd3nQJM_xiC8JZcybMTpL}vB=Hd%%|@Wc#ORtC6$__t!tbS{<^PP(Eo +vc64Zbb5Z!|*DEq|~C|q&*un1nif1_v(0>4sCmoF+)v|7=2yr`S;>CB +J`T7*OJ=t3CXL1sYXUBZt^4T4gkMoBIH0{P^VBNBRh4N)W#Ml3Dk!6m-(_N +$qgvMa~nz;q58~pBO5j+L5zdoc*>*NrZI~Sc)h9t;gBR_&VfNXvoMbmq@8RE>vkQyeE$}Qhn9dGtv*S +}w{_U=my;`uAc@ggi2h{56v>t6v57_LN;pIuL$A_|KdRh;1alhvKai@cS#!!}WX*NA$_>s0#t~Zn0nWIPONciAk6yH4jojL4)IoyBV&g`eR%da|0xGPr5R71P3U;#oY1!nClgR6(37=5I@O~lve3y4B4YAe+6^;re%JorNm&LUK +C0Z0Tokrn)#TVC=pB>93t!ak7Cy!U2b6uY87&}xvoQUR?N`TMhd7e$&nrzHh-VuflybpLyP6+kly!#iD}gpgQtF=Ravg91BJK_1brNcS+wjoc5F0TD +mg~b9+v8Uvai}aF3ko}SBTRkv$Ro$pS1!2BDMYsm%PVBZ2l +19RM+-We=+fPqLYL1_VE#%lw$lW_VNxSwoIT5~4zcJM;F14HI@#(1xx!fv74FO1KxaB4zmR@F +q-91-fQy9_op*G6?7erpFyT2JFmrFRIR#MsqSv+h3D +Zb=COe?PSN+*HvJ$Vyl8#B*bLR1?tcD6qA{P3;#KbT$NLaYJa^0BDese^tb;C4fO_Kh^0ZJ53uqhRuo +E6Obq_mQuYX0PlEP9Tx*3Ts_uaeZ9a|^awqzs5QW>HML2!HLkh~=~uCwPA9YTvT$R2H#?ZY`?{C` +UT3o=r`4O%sF7NYoHVVg}@ex^Bp&l^G=HdIvs#i6AYp&Y35p&t{$jlCIk!i51um1tUh$IwO=Oi1M-YA!PX$9RCYJo`n1!tGcH6Ko!rXk3d610jBW+FHts#vn$acG(fdTq9W(BW#o)r_>Q} +R6)X#Sy-XclKiTiU1%Ipu*^tSRx>CgR4N{<&XjdVsx}pM%_(jV2Y-C@sECt!n8(SZM^PD(w-JduxOtp +Ec@jMN?z=xfe)9OqqepFlN`uj(M`3gm7TL56k}^_2Jsm#|!eYfDkWKywYFWur%oSC504#O_CT8VS0rW +KhO4toc0*^5{>wdjaU2#Nto8~nT+w@|SsvFdK!g^PFxAJ?X&vMGJ=di +}?zk!Am3Zn-eFTohXMO~>B1T6cL+xAS-@n4tK9A)o~aBO#B%@cD7EbMprYtRdBU<<~$YhVVXkoFQp-yIq1`;zK0Ddy6R=w;eofXS8;ERJ4hC-v}to&Da6MB-P52Rl7y?Q!P_k0 +wEza2e(I{NyX-gQAbiSlsj!E>4wJ;jJYr?uuQOY;q;#fb3^rZeb7p>aGuU-A4v%l^R{nw%&`yM1x>ydqQ26&&-G$I~X1nu_GPWMwCysq39l&5tkVm{I2u+A6VUk8Ykkc?1tB +PXEbB?cEq&cNt^!vj~Cao$3uBx(vD4y^#DHH +ZeIVmoev^-&0XFi+ZZtumLX$>&KVfgQYMj*PqC?bLK^AJ_L!_PJnBjVH)A=Kdzd48@bG}hba?S>a7Y=W)Ww8AM&-$-ar*DFx0G>-r^fWsr})rT97FB6X#!`yDA!PT->Cd9<446#@U68?dA!|h_MLcctz@rq;;b+n; +MESa;lST%meSd$%UO{v(}*8~n&Xjb{F=n+^}qr|Zwup$e}s~+ctvY3(K%uE5o4HtGyA&MX#oejY@dN# ++xU_B>svpPCGH6?^V`___b9Y8XJNvxN$4vS^ihcou>RZiMkaxKycb(IcDc$%NH)bN1T6#98BjP%WZva +fn2xfv5rpknak~}+)a`z}(DLfzrz<;`mVMgnIxhPA-e3GE8I#-68p!kxmcv8Mq|#5g&Ry~dk{f1GyaC +>TY@V#71kPSj$}NqjGgf8!Rx>-xHqM*6C3hwa#PLL<7cIFO$pbQCKP}@M|4M3~l=|nIYejTr#KTYRh} +a9{IPn-pSOkANeKYzC4{4`lDp%p;8t;1~zL%^qUxYYL+{jN~!$dwAUIIFSX9a)b*K3OOItSzm!VCv=Q +JH$?Uxy)bKw<&}o(P8Ds}hz60Sp`}W1o3%Lp)@H$pjKgy6)^1qxyBR@8m-7AmSf)JaIh?=qraGPt^8C6eKhb5EDW&|b_m$Wq&g`iGHBV0_Mv| +Q>)@y)+4W)J`UzxVTeKVqRvXbIz}6#3bS#6X)sN|3BYyW0JgJUs5p7l(l1AbvS=2o7?%Q>7{Mgxd-d4 +MTPHn5s-qdY^>*|tPxy5wmw{bLj(5bY_!Ml{#lP=Ws-PY`9QH?$-Z>jz7tv7I}HSFiNl@V{G*voU>Hq +3Y_vm1$ewT#_%`a{WwF0tkzF^Hr8RmKKxDi?bFYhfj(OM!z~RtA442EiX3nK*orNLstiKw>Hcw}{M5E +e}o0Ii@~uH7Cf1y`0&~RNJjB`xYaGT(kcM#)_d!l_&ijvz~M9+rvoVq0846uF76vLQ(N=fVgK`yJ>Ra +uv!f+q`WJIK}YW%;;k9zZHB;XI*L=$EJyVe?N*KN^uo5P*qqOqnXPRa_AY`;P?X*gLRuWK-mZ)um@$E +Fao~8@CJ%oTM4$2c8e2T1QIE|^iP`bou6l_z?TyE&Mvq!c yotE-Mu7P^cO +o<_fRI=3tojuA~O#2{2SD?xFePVM!s_GffeyJM7f$ZYvSAsDH;D8NOCeLK$pqjnYD10h|s7YQxb0E{% +MsN#X7c_VuU;ig}CRe(`)o5&*m-<$z6GX8nwMe$>Go*zu_=*dVTEvpF5Q%fA{Pd&0!T!?yFtDsb_Vqi +uN}FwQqSMrJ}X#k_+tKEY;qpDj}+~Uwq;3NOl`#%W?!7&wM@NT*GGx`fuG$sYktS#f+Niz?p~0tJdEv +IV^reUQok$)hE%-IA`gJ)%hil7Q^8E#1)kU&!5S|fi96~>=tz6Cx8R9lM|d|YC% +rY7o6Z_B|IA!bxsNiS6pbYAk}JesOHA{_Fa~K$k{!xef9`vszh6>5L+p#eZ|=i96{Xn{JBK?Fp6@_3y +YU3=Vd(MBM6H);uuP@$@NdmtfXHPOqEE1ND<%zCdZDFDCTA28~Q_{?i6q2;=P0KGnu)a|61l|wsipsb +HMWkaW@j*s*KyXuK47nOVT?+YA~Y)&HV0iy4XZETr6Rlb7DNpq@AR79|AU+R?wr +87H#>-JT7rI4qSP`78UBXZgG_-SEubRua>65M4)23p_S-Trz9r!6FG!TKUwVt`G8swOS*9?}cMQ60OB +EzWO-nu{lwPSf12(u2IgzB;o5VkFOns1Mjkwz?D>e*%&V3DJ-3+O|#l)UpurfO~XAee7P)3qA7i)(o@ +H>TPza37=Q$SS~40j&$HU-=?g0RmX~`^WvspUG+&rq_~(3K4^`zC9O#AV)&oa(VQUf!E6vO$BPxpLgy +L(qo-tZdD~Cp_we$BZj@q#g^oDm-(IjWfe8RaZ>>$_86@mp%sE~D}6i{N0^cWx7tq6@t|Eqn<<9Rr1V +DK0p+KYoA5V22<3c&s0v3-tUQ3<^3(=9oaPNIwhzwcSoj=A|cZwZk`uD-E&SLa9{|ZfLw1#jLd-JUa@WYNf?(gUymaA5YsNOO*qp$`kST2{7{XQ!jWt`_!$N%0)^66G7c)FRU3xCj7 +JsPbJ{YG9o|C^|Ke8l-VK>mPenkqwn)<@s6#MIBkzFKgs5-jPc^5AQ`IxHpHj`8X)?1p}ZK^#1ApQqW@6lu&X9Wv0aPWqp8U{Czy=DM6TDAR;t; +Xxvnik&;hSas2Z9r{&Rh{F-XeGBUoD8oNzPYxTWkMMaLkHUMgQjk-Ylk$aw#aND3nEMvpufY#&*r?FU +_gm-hke9$71%v-tK8BCQGsUmrtU}!7S)DLhh3kSYpa{}slHggI7&utAYTnMpWef+u?T;5LPP7r37i`c +a@A6vi%P=A?1ri0y)nPhmQmezeVI!Z}q{%#-e`V%l-$ye`H{Bfe1^o6t$+RN9PI?uagIS0h!VV7c(aJiTeBEUAT9yARF4*IxGkRkeh$| +LQ7EA_oS~OtBw7E2zLarH-%MIlA1Pvjpbqg?D^Jt}Eh)JKH=?4pQfY(0!bqOkhylv~&~ZF$kGQ(r)M4 +tc3Nc8I-WFMj?1y)T-|r(t-Cyjm0&oJ^^c+h~kP8;^1+xv-@HYWhD_@wNWZJ2PZ_!rdLX~T}_|K8=3$R|Sx{l=UhB8vf^L&dVwiz5{Bz!}_M-^`OL9v@6m^%6jPk$QdxA(&dSzUl=Cm +v1>;_NPySTjlGP>HffFg!$)x)4b5kGovMCa&Dda4@56Bkt1by(kSwBz?+2^go#MZ$XzODYa!R>HQd4n +fnTqWNcp?*ys7&6apOe6=rvEsIq{>-O7?*!z)~g_t6aAubGmiA$?Y3@7QneKs9;@B$U2PG|` +m}Y3gqx7+ifbKxo6f%`QH3^s +tdH8Ql5P^ltpM)Vu*)ye)rl_Oh_gdmTZF7Gx;CO#Ch8UqRlU1~0cy9@p;oR*Zt%_WChvaHNuRv3?&y( +g>FN8q<%l7Utyx#O47p@QS@7%8%RHXVFzt?d0r*aB?VC{sk44;cSM(H*?rMhXNE~I3#lsC}S&pzHZ?^ +iPE2+?K+$cRPE?xHamUz-TGPirB=Ie56^MHb0HVP{m{yAUVFDY?rO!qO;Y@6JRf`$Dvdnvcdd{tj7bI +Z1qjx~R$Mlm0wDB;v)5!Iun@6&?aQ7+9M=(Qqe#IjbqxM}&(o@z3fg4lFTi?ouNEJkd}z;4 +nTgYmKk(?4!~6BRyRoIQ2Tn1GB)fvjJs@K=@seM%`cQ(de$;(6OeD)^U=cq4}cpnIvAaIV +}Q$J}q{2tO7Bh$SO+fT(B^Q-SCoJ6hNZm;5GTZ`19bJtyftd6+pvIEGf}zjV6EL`?xT>p2ByavAP1R? +0}EtQ1s4NA?`HdAVn|MO}mUr_HA(|5lgh>*;eW{W~dK5>$Io^@Z%5)1F&G$&%$f{eez@ZU>3R#B=9t1?OY7+ICDVNnqdfSQbt*8YjWy%A +BS`>5d`xf$g%<;aT)eZ3_AF(i#R^*O;-C<*@Y~a|XcKfz5~D!GX{SOD*;~r?h=E03M;gP39o_97cG{3 +O4rk#}}1=*TpAzEog|vv$VaM5>i2@C`hcWegUaq0s*@Cya&eAqVJeMKmF@22=2lJM8bO@={fEy(Lzq? +KcLKT{0;=*}vST0`#DST7$n_lE{`IMl2_pk3qlQC6i=rt=ixFqd1xTP1aJQtNX) +N;5bvIvr9eKq$G|sfh>`@%mO#Xo6U98I>y=PMoW!lN$C!BA+`=nH-xj}S7s`F|AKs4Ksr5(N`&-2T{e +0&(?git(ggx@qWfJh597|qEfZHC*=IV+)wzw;n!Xf&g4`oy7XVFje*$5wMN_=0g#t-?_!O(4e^?`38& +W=Nco%HECvE?N-;>TjzuaiD>%o{asHRyMp=KuQ8vg1?(HiFOFvm4aRv%k$yv@{1Fmg9KYUUuR#)QYII7m3<*hX?yQLz%K(RTZN* +D`H*nM^NPkSoI-w@hbw$_Q@RbzmfX8eg4ODu{RbunS+J1HiWt&ZAs)wrU;@AkuMH9qU7N}GYLZ|4HQi +SBp>QaBn&7SwJsZEnEEKJS|3J5D2AARFn*36jC50qp;Krqpcqt7oj#^8~D@Ln{C}iKmybmrGxuawi9H +I8ed5&wXTMfsN0I;>q!H;umeesVZmFuz0vJngOWbJ#hp>2RW+L$|rSAD238S@xU8I|MowFxofK#&NdFYXIdYVc5CgX&vx350DZXbg!~pN^EkI@?mv+0DRXmg*{YdTgOTty8tSB>rwmnSKmrL&{^HCdo2lM=iWrAYgl@+A?q_0opjOv#|FWvwP2RyAKY +cIE2|jyw2*iNk9msEpE9V-@;E*Y`i~v@}1+5;P)go{BUx^+L|WV+0AX+wcLu*I1boqq{OsW^X24fG=< +5)>)j)+Uxa#xpnKzKRBCeniFsjvJqCf#D;R>@Hck +VvOrIsLuhY3M^*st9nx48nZx|)7cxTB4ND)ItrSu4+5bqR>=Wn2@4p~s8?~p4y>W^*jw~B5I9_ksCV) +duSM;k7&q!oO*?MSL&etB*}Y8ksZPyjCpcz# +uQ3~b~w%ZY#soL;uDXNub+5{gqO5k^R&I9m}z2LXoc2$~rHt?>DG01`SLHSxw}Tt+h#ptx3)LDL!(m81Wrw^kn>XpM(SzXs>hOjgj0232^q5m!=C#R#U^ZJJIeTG{7qlV@S4bK7DL;vD`(RJquPWEeJ+W)71g|q1=DPYfcPY +PHoq6FVyfC?+CU((potW>R&viD@N}8LNHHlb0j4;HOr_tR6U{h!DW91fKwWW#bNP6 +hSF`jxW6@0uTe|_67e=T!d10~N(EM>1UTg`Hf%O@`FkxABdn+b;sWw|mO7sbe4wK(XQ!g5^cr +QB3!_SMCH<;RjtiesOM>`zuAGlVFe)+#p6g1^0>1iuytbPIL>iXvtcr?NdbnvgWQ+ +0Z{o+uv}p5j$Mj~Q#4W`eY(h%##0L^w&67St|r0Mnv7TFf-jLN9_CBdK3f{{Ep6h3aobKOvX2{E4p_| +@8_UN{np-sMFCwwc1S6vMKQ~_B{fJrmBAozYvzB~;6|)%y=0y|={J+@L)l;JO>>3qLE{iP|S;6Dk@Qw +}i*2NLD5>MAMat#ld^7tI9e2y!L66&FS;oC7fJSj*E>akRKpn;dKSOrE@BG0OW6VpPvWH8@+FL7$-V{ +~*gv5NV)EFdQ#hJ@X)s-xeHo9M6ba^yn+PJZs1kM9~U&?NAVTUCW|Ra;igb%$wsTkSQxl*c|~ze`wH> +da=I+3w!3c8F{^wvrf+z`bC#frchm3I`fzbu>mK?`omdJbgx$&+Tx9hpwTf^~<+~A0Ky-tL`L&MVBs{ +Je#ABlhF82twT8K#UbqpC$;99i$pY6ldeIuEzNDPya;8%ADu)cy7?FD>q&wRSH8B!^aFeB;Q4#OM@E6 +G9FwFBP@N5Th~{l;{&m&CW3;VLKQwCZOQ7EEiAClvP)$jb+ws>Qxnxt(4@oX~Z3Iu@T}ZoU7vZ%g3df +I8P|FQ2-`Pol=!GXm@+n>o`N?DJdxOh6_XkV$z2FTfP~6y$JhK7?h%kf&hv|zhBn6=oLww*5hOm){8A +jZ&oa4Tnih%YhHD))UVe`_A{mu;3!H@6U_|1zAyguS8y{8&cDDPiYV)yEp>pJ+(WwGU5IuLQ>FZm9ov +a1;@>GadvxJaQFEW+M?$ch+MYzJo%<5Xc*1J#>q)_282W`^LVbwm +@e#!CLJk+}5=rD?}F +FYXSbTpzH>oaQmt90k%vkP?O!{eg_aA76d{;`GHMk@tm8cnpF+h&BBXk?_!Zs^+9C=}zCUSJ828!x`A +l*lvzoZd}hVK!bw_kq?;!RAZIz9a$|UwChOpebQr+X)PNIZlO@Su=xS!cD$B2nP4?znq9}#Oiew +;mHd{qOu2w5G3KBPr0%IXZJQ$Mu&PF)QM|*KPA|?KQGHVORq@#ET1|)c9y%WAZZLXCUX>06N>f`8o9r +4^%$x_}{bm%md>>B_+W~(1u4G!fQ$t!7LF)E{+wm!v{to@aC8?6qJmc6y2Tyr~*Si)v=C-`3MTekLOv +OB$x_|RHhB%Rbsqrk2c)7CrrZnts`ryNiVMkNun=R*+0-gyCe+ePF1T9=L~(yAMg{Uwb(a%i$#aN$DZ +D5P-P0RkllhxYy>r^^l;2I#}tqlAl_ +pX-^SVdde!*wD{~Ud%-_sjD{8`0o&p;9P9HSE+0~WPIV6{g=VQ!DFh5UCTf|^cA?Mn1ia&NPp8P3O>6 +A>oM7_4c(wm!^DRPvws+gkIQNnSjMQc*ja$?Bs%iGj9=JuQW?jc{Z3#m9XcfN+q;%jz(U;tapzx{{qg ++NZTMh=iiJQ_vR0Yn55^ai{Djg~3wkNWA1K{^OZxLsV^KceVzG~Iz-sIVw@YaNw5*_0gyZ+7*u*)H+c^aL==o&#|#0`t8Dgn9ds_t9~ru=-LF{N+fwGtvX$7$DXIUWMjme*(*S7=p2oN|K}e`dW0p+`1aA!jt4SLOxnl}O>r{NIL8MQ>`ss(@o +BAw2I}^X4k4c3bkwt{Z0V!xbJx;=j81m)&?MAIH!$_kl2bXdWt9FJL+@a5dQhKeZ`vB95me7CP#tcAlPm +>hd^La%T#txlC+^@a}t(1R<1dvo_c1dN7|y2c=+*et2a&mcpuwho!Lv!F)9}SvwRF6%PwX~*=n0PX&! +1ZeEOS&(VWi8a?SIDu9!@}ow6GcfpZp4u9~SQJ$l7qi;o&AVDGP#2k#%vaaR8M`z5yoVXND%n_YPNZf +|38+k|f4(?0BQWVU5yw@8{+2c~9(vW8vXGmo$leZWDr#U5 +Rn^q)HOE_Tyu$_P<0EZSgTpD%jM!W&q_N?Z>7K#>Cp`KS8=j9T7q(bX&Qng1KB>1CzYo$rr%nYBH;{$ +qG3`H%heC+97}?*&HI*iTRHu9%dOhrCI;IseXGZuwwh{LV<~j!xVIwHrY65Q<>7J@5f$*$62sn#cpfJ +hb&;v|9+cb%@(!vywAILI>}jppJ_EY((M&fLYq__^8xOSIp83Y>Y>Bm|zq8Ei9<w*TAVl=s +~t)`LUqCMI1&s9oVZ))EM?KCs`6mf(t$z1Kp#5f3bOX3uEgs`Q;m&T0%v3)#2qAxAPUuaB(kc~h(--m +e!gw%)j7+X6aysKiz4?N1&tDwcaZyf~;bDO=jVHXG?yquh}+?GY{1BjUzKRuLNrmhXSpUf0(01+eoXg$X+%A3ho%VKrUu>)TZ?w1TQ!stn_OZm%|;?d(JofKa +Wik^e29UXe}4)@q3pZ%zN=8B*UR%W-GSi__pmy2gC5VG(3$aFwmlT3=j+^4d{~RaQ2a|7))Pq1$gJ`K +ReMvt0nv0!466A1ED=#C~f+a)pfcAoQw^W%IUY<}#jeaMLQJ&Hn6z#;fpQ4B_NI6+CTDa^_w()+_g=k +OS}HEOdE>nNbn`A;i#wKVn^nZjV&NfyVG5pK7t{N?8_7{cBo}@ia-&kB=qw8+7fN-E`Y2Zno9CE+r}1 +_4P-SN2pc=LcxaeZZP7wo-XyA!Q05LO{N3nrmqrg?yFuG3x{G`X&_!Efl3s}^Ha8k{Ie<=02b#7QSS= +lfpvlb=Xod*I!3I3wz_SY_t8iTfg31fUbRn~0o%rk#nj0vutux?=&P2@nsufO>)yZl18mUN2p+dNCx< +jW1dIu}uBa_KE)r4CV2Q5OPb9onRunG%>#-n??mOi&#rq2vCMxwsxWk$I>_0(HRx`)~+ZfZLYc?5{RQ +T_Ce4@KR3oztSRE4;?7ulG;}t*&mns_J=pjSdhKGTo;BXsCf%QA@hL@@?3xqV4RqlB%0rH!`^{otJJi +%kHxED{TEXRIM-JI9I2X-)?2!k#XEMpKcLW673ghmi|0Py?k`q-3wZ6N4GSHo1Wv+fb=`dWqSB~rHPZ +D4etKH_+NWZ@zXaEzJap7H?YW0-8Pf(GC%{ +vR6_W|g)AbtNysVewR39ld~otR+G1T>$*oKmb+m +Wy9f>KgCz}9vj0vbb#c`_zMW99=RD4F5|^;ckj_$6`%8GBG1^+77SUu4AxXeX@BJ!og_c@z5%w;R=_9h6K(3wG)b-esENUGjL{P| +$k2;(fOlXwF7Y*Oph{q<%f%J=V5w4FhV>>n$kNn|iM}(cX>!%51BT2Wz`^&m$%TOSj2-%CXuWNBUI0< +SBsPa_pIjVqd4xF45ayvb~XeTfsoRW~zO*c3^>SEIqdk`c0Ozc$QKOU+S<$lXoXuN_8CbhEMbCX9hcb +IXoL&B7?e&XY?n@Cf7eLvyzyb +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 +7|@_Ju6N}0kBv;X +4EJ}!G3tF(BDbKIdcc8BfW_tkx>me)_tcxJcBNIq6f!u@29EwMUj=6}_2bTLo8`~ktAiRR!UdF{4N!R +%4!}XaIU+@)=X&!F~+T>?v^$n +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 +tKA^5hHEF%Ux)cT0N4Y4MBxV!dUp6`|`YY0 +8|d63xLxf@dIPRbFqq5aAELgY^@>PC2OsOTu>G149~tCpNx8l~C2(`yE^&8k=mqrsDS)LsXlsbMg*BK +N7}3r{X;)3!>ovbX}obFIZg@|Y*DHk-qWA3s2hP+1 +>$B(AOHXWaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{Pc` +k5yy;aL@+b|Hk>nj#MQK%ra*8n=CMSJYYw;&*BX%#O@lLAR4&fj;bhegRw`an^hEY9w5W;ujgXHOty+ +lStvlt8D>x&Z3nt?mQL@w@)N*PI^8n`#e&|i +UP)7Xgg@J(T@>Lc<2T)f-e!a7SPL@x2M0F7oK%O@%0kZNm!;sIO+#YZJ39dZ;*+>C=*l&2I-Jau0;#z +U8`)yXk2Z}vs-t;Qz|44>Xty!1XW{G&PPv)tAu6tjXLm +XhTDF9(zyI~V*5g`-&C=q6^`7I37PiS6C4$_6^Fij~Q0N>t3Ai-~ec6l#xmf6113o3qQ_^VIM}RwaQL +rgC#~5m_i-j-)Xe_5(epgPSC*iDF%;nntYJ@>LDNhYCJzpJnoc!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bUtei%X>?y-E^v7R08mQ<1QY-O00;nxCGAXrum +ljo0RRA(0{{Rv0001RX>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bVQg?{VPa);X=7n*VRUqIX<~JBW +pgfYd3933irX*{z56Q$U*do)#?t7$nWrc9F$`c# +Kk*dF7_h?_A_E>%a1)bR)-`nYVv`NNhRNGDbYz@mis({N^jf1?sYgt7&9%WfYFTJ$-TfXriqw6!Ef+= +6Q4a>0qj{pa(#iHy0TN|d{veU$0cDJ13}dv&1cHM;#GDqmJ&MSjNK)PUQ<3S9>sEp@UI-984wOc03HX +c*t?-WoWcf@H4u@~S)8PPG7?N=Pse#{=YYB8CgfNU4l`Y?M5ORxC%IkR}`Ofye9LzKDJW{Gf4?L65{D +mUtLbom)R6Y$O&(~(q+nBg1*0bk-Tnxyz>^|&esJ_i+Tf>_AxEB*!hbh5V>*PKvb-!8WFIGOf@r*}e` +$r7H7jM)zax{qSw06x`V)Sl}sS>&VT1G?h9G=L7_3)}w^BzIN_6uiMsx#$YxmEd-G4d}wl{J)K)Cryc +!_-i<2_9a*n`(Q9Qek?-HC)h5q%HJ4P*+`BcgR@o8&Nr=YFpnGct7O9J=~t?e+1q{?o_~Dq-F_sxHm! +sl{s%vvnAIpxZ*ERO9KQH000080Ei{+Od^2$#FYR503HDV03-ka0B~t=FJE?LZe(wAFKBdaY&C3YVlQ +TCY;5+cFc7` +-6&gAj!;Ith>?XaWNhg=|(A+W}tiWQ_fJD%e)RW1-S1V);HYQG@lYrf~@9nNuq?IaI6s0xR6+{seMX4 +%e{9dcPMu?i{DNDqY&_c;6tEGrl0#PmyDxPc4O9^APalPjnJkN`Bt~I+7xv>i9-K^P%bB~$j`~J233o +&Z8T%HwxoW&WhG~oH=&BgDZ*Ehd@ESC)ViV2B|Wxx}rQkJN=ESx;hQ5#jqbSgjr&Fd?UBxhEA +Pr9;S1zK9dQkyK(2P57Ui)#*tCe$}Gt9v48L9`6OrvoucC0rc8vD(Y@nA-X*A3h5JE@or5)WHbdOK@D +&s%)2tK8r?fR0X$Mx*iYOH))z-8Md@I!aY76Z1XjhY*_GDA{39f^@O(7F#)~s$5cp+|@HkhZe3&Vr2d +9e0uU1Jp++C8$d|TQf*Np2ZLo6eBti@9lD~aX=L@uLO<_yB1AJr)!mb&D0AZQy-*%Qxepwc-V2{ +)t{GgG=k2jMV#r@RHDR*?#AyBzkQMQnwvhZ)kcnJ3_GCMPaQlX38#g1bGf3zME+hmV5wPR4CDLYdaR8 +3zwjFkLcQ+c8`s9Z;>O%y%FBaIb~lRjXYzs?`MHAAZfS +$iKI@!HJ%*lTTG~&%8P7<3q$srViiY9Xi)SYN#5+=B@&o9`?o>^jHhX6ZX=~zbH`yiCbUW +9yr0(BqXM?mtrO5ruA>6Jw54k*(Jt)d9Abdf_<#vfTkvG&Tdw!GWZq_8d8WO`gM!>*@mF?*`|2TL=NLQeOD5W>yz#8kuh|4>T<1QY-O00;nxCGAX-(PW@(0{{R!4gdfo0001RX>c!Jc4cm4Z +*nhabZu-kY-wUIW@&76WpZ;bY-w(EE^vA6R^4jbFciM`Q=AFP90-1ZKrTj?LSgKt-EK;7Rr|QnYD=CZ +x6MZ1eMhn#|HR1>D7#v2B1@mX^M7&2X3(0iV`J_<^yP ++Yo{(B57=6PM7>j-=A;ZzhEC_-m=f=R5$Y~>VibeH$wg`ZJjIl4m$+8;+tDaDTu^M>+nbLq-D-!6D*B +J;4nUJXgF1O9uoHjq^IcP2n(mveZe=-KOC4a6Q;{HAgT1oyt#f*X?q_A-u8qBjf7***6=b-UtB`8z{x +5-Ax$Jp{mv%J+6Hrh5km!zOYQlqge*c~poer)I#-lTdxuxx~$6uN+y4bpuLx>j6MyHHJ7tc4N7=xBQXKfvt+tZryss=zhCW=%{yFBmNdXL{5OX&%PeDFz{7Lbb+KQ_obC!xI3 +SBWjy;k*#}o^hhQW6Q<+aDZ46Jj}1CO%2iO2?TWnYtJv> +BBU~$83q^dn^_lGFY;}oLy!^Y7P4_|fWka1=u(y8(G+g3E%%H0SZZFX!tqb!rYra^+3NB?A@B}(N?rK +3w43JKYkD&r@TMNs_fqP>6;FRK8@on5QuJtUInIcNGg0nMu%3(^3(sej_<3Zyb)3@+j|RuYAwiX!kf?0lN7%{ +UO$*lS=D`u>gyaZ|*CFGi!A{W5Y$YNdd!eguDeXe%qIeT}we*yP@s!AS+)=JlGbKndN7DnxKCR;XmK{Sc3U$M-16BsrgV>}InW3sQ*M?Gh?WMKH#{m{f*`4< +66!La_a|=6*LR#OeCa<_Vo>&|M6wd0JS4?bAqoL7Qw8h3&xy3vG +2aU2mG$;OsN(v|QT`=es`9;BD0tZZT!34{Y#$@gp}nJRN@r66_?_Ul|5_`b=jyMR|-8Gs%U`8=C&;LL +1!CRw)OnrDD+6qvJ2l}NSdFw+v!UFFopu^|8L?7gF$rGQZ6^uA$aX7j^nhlN^gfJ3s8T=dmu`1$sj!|nu^A^Le#T{3}v~s`)JsbfevvC7W#mscprgrZQaj$C(ntadbq=$ix?V!( +$0n*u~K3maRk1;wj+F=s86m4 +^-1x@1|;L=k2k{02g2QE^~= +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 +}L@rz%}9Fn*jK+i}h)!N=ZIqN +-B(@bv-oDIN-IP{9;GYVK4G=9JkUx5wds|lI8g)b$?;`f)<$o2*rfOW( +(Y_8X*$GE^`}QDIlh8A)MMjZ?M#-KpiStYQVf26|5^>{sOx18o9+T%vikjZTws3x-SC|Enc6N$+Siup +V9RzK83g72`)pSJYpJ0nWPu8|V0}TF=>RWBgJ2>BNgOqRSdhpMC~d&Yt$FGT8nV>LU`YmzxWxNpeVtN +)z+&I}bC-EwsI4xrC8!0~b^LWMYDo3+h96acaZSq5auVPgH=Vajo>|-4WCGE1;?)}?$=kGtfKELRQ*CqI`^WT1b`~Eu=A9|@HcXePs@5+rbgRIM +6UcOnrzF0y4?uZAPO4C|Cd?&yJ=rZ!Ej(DAcgJ>V#zIyxS0vXh-%Kqo&V+8~QtS1{MW-@+OUdenOMA< +TBkh(9GF4pVGGFi>I2c9;deC3uJnkL~F?I}1jyz&t> +_k+I`z5*_omd=5{006A^bYkf?U14e6Cbu{7#8Fahf6A3+S!O`SjywI#hSC#aN+TZI!e2IQuN>mGk9kQlX^4kL(uuS;LT`h1&LNb(35XmQhl +Z{CqxvhE9uPwUTj2PkvK0@bZ-?kX@ESs9I&RYG5CnlxgAokM4+S=};kP*?``EYntyhriX1foB4iel>G +wE=qIKjHvWK-Z}RkIr&;O1=ed$e;9;EzJ-;5x;^Qjeh$j&ImrL4^bJj)Key))(8XfK`5<6<7&DrYEcA +(Fh%u-eHE_#9a9z_zh+(c$=Cuz`V2oqfT*I>($9+ABL4FwxTRBsxVXeD9I#$glT$;N-%tG1lDCJk}E7 +uQa#$J+;mmNYBIX~eR2Eb$!u}^&6CCLf2`pPd$L%lt7C|}_t-qEKQ-&pp)T?7)pR;X+k(Z57*;im>is +*Tr*@*sDQ?AWG2U@m&-04?WVC=~cpc$dGIFKSa_<_h8I{R+>mMGT*Iy=9CoVsJi@(AU{DSUujz2zih& +!$mBpQQ3N1F}}L__3&$q@WIFY_R}r;>EuDN_3jO{P+NT +{_^AW>iETCdVjYMf^qOA)O46|@-Qo*v$fK%4yg?5;3cg_SH^Qt8JtP5HaY&-C}RHTO9pl5Q;zeXKvz_ +9*V@bBwvOtW8&u{UkpqTNakuHOoYFT`YC@CR(`KbD)iyyJt?8W4Njd4X?~5x5OiioefvD~~LXMt2eyE +<0f`$vAkZ&PET_2) +>m5V1lJ;DigDZ3k0V?gCzBj<6oxgs_DLR*4=b^c(O;&9;!-_w(nvNF~>9h(uStpa-v@sP)rZZO+7R74 +W#iSw47IQhQF`XFB1EF?F9RD_Vrb89E=`69~~X_nv_O{qP%JnkPcNRTkpw6o4e&xrKuZV>d5<`@d?a2 +I(uj_g!?)ARkEc(s9!;LY_q( +qQb06yljFB)ru2W))Aku>On_&NScI@UA_C +b`(6vtG1Iue2bk56GKKCVUtk59+_4S>2=mB&I)#XYWDvdY`Lo93R*mwd+cFE3oVq +rhpX_Q$bzBY7np5#1`i)eXpWth*17i~HiBynU0KJh%iCXS4Oo+4on+cXG1=*NToGzBpM#kKpeM^Uq@X +;%*WB&y$mH{&z8dQGJ_)$sLFPZtp~Tmn3(2c$e$D{PynQ-O1eoZ%UxWR?_CaA9L*E^v93lud8jFbsz8`W1wVqBi0g+jT$>L*VUNEI +ka!0z8$CYuDj8X7V8>hKN#yl9Gy|4$9mou(8>qtq|pV8S +~jM|T1k&qD92cgvB+2#aOFZd3WxEiY>akZXzv!IZCc?)rLadjEx-+;!R?)}q9L$jt36x;=jFYTI$K$C +#&$Pfw$-lwUVW>6kfTLP*AG%*#`l-*u;FmI=2H}FlyDBdN<{}*5L?c_^Un-uan83!DKR*7@OVe{P7J` +O1_uvP!(g!hk567$6a@&~f@`cKBgVRjF|nq|8;cI@11?3ARO-$j)DC^N=S1TL@P)?@umL5V&(c=qBt0 +No?C9pgE!1`9P<2suSVPQ289u%ocE*A?zflM2C*_v!QNr@iL!eA?dmeWDkT}RL`p^aKNVvZhzc~C%e3 +lg&l)Y$MAQ(cvACsiT;67&z;hqrOs_*b8RdaXNsTXUjVTev!YI +L~$gx9B_=ojTI!8Nz!rrIXrQ(~k7$rk;dnh?cC=_c46P>kOR&Ngwe4D(9q@6aWAK2mpvB?M$9Iaav~q005@~001oj003} +la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*?y-E^v8mQO#-sF%Z7zDW>Vc6>L29BI= +16hQaX(9TqiJ +ea+fwC00=owoa)!rGLFeXG2w)j*VYIc(exKrGcWelJgIqifzpl!*6-aASG+qgH+M%VW^;sT1Cex32G+ +@K9x-J7@6zzhb{%%4wdYESc}ewdE?*L2*s2bq|C>Q0*$eG**lHyHC8UJ6nTF!Kh(tZ>SQ|K#QB{q3Xg +R+%=t@f=<<62AyV|Ebb|J(g2GmD$~mFTh`V7L=cqXU|fJNV2@D8(F3dlZbQ9`bA2)?((gqylhO>flL= +smU;xOKIovyj-azTUrrjGR;)~5#Y0@AK^+;BQW=x%X7I&RgMTv?{b`ctg#Yw19>615`cVvz4Y~-gJ-G +0md=WVn0z(t9lxKgToJ;qwcyZxF_6tx;0|XQR000O8h$ZbzQj8HPR0041vjzYFD*ylhaA|NaUv_0~WN +&gWXmo9CHEd~OFLZKcWnpAtaCBvIb1!FQZgXg9E^v9xRNrgcFc5zCUvX#zZ1BSR8VI8#9`qsUwglD^j +8Sbl(P~RZlCy=e|9v{yPVG1?eVo8p(tY>qyVK=LmXIWQZED4m1bA6VWq>|uS=5Fl%{hdOAGzjIgis5f +%8VriH%!q&dtQz<_DtvlpQci=&d9elEm;V+#wh(NXtTZjz6~K-FGJWy4|cn_U#+6G-7N1H+sChw=Xn{ ++!N{ah_kYpinWEL{G@3Io2j)c088vF{6!GFL#f!AH%}r}YG0T ++DGxT8dH&TJjJ9okoqrEOJ_c!dffjR7AcgiJtdu9T-=%R4~2R&8HLY;g^@I>OXkmrru>iJ}Gpo*rJe@ +#Lln~J8acNM&t>>`-bs$wGZTiY2ml*GXq#tJlVaYM}$XGPXlg^=k_$%T)oAOwFcg{|$!8~lQizb51B! +EX#zW=r=NdQ?{Cg!_w_QK1P{*dEfDAc=<%Tqv}z$e)S+JJAFt;E&b9zNvoJP3D@tYImSF08#8|i*UW| +?|j$lelHFLU>5k_eTso=+Z+avHRrPt+{Bj3BQ0tcjAH05>>9+kSfp`K$fVmL(I0TzgdKAvY-Gdo3?z>c+ +!0%k9(*2PF0Qsp_YKr+1mXdaLI;xISsyTnK+N?@N9wsx`m|_;UBKie~WRKn;%5Onz>(M)T(Vv*sUAO9 +KQH000080Ei{+On_;rmqY>p0PqF?04M+e0B~t=FJE?LZe(wAFKBdaY&C3YVlQ-ZWo2PxVQ_S1a&s?pV +R$ZZd9_tdi`y^|z3W#DI@#d*2L$%8q`S~VLm@2`mSD8@I8h@@Mv}8xO8ER^(Ug>sD50pr-H+=*jOyG2oTK(#re>4{5R==eM${Q}mT8p(j7L90Iskd+kzyGk>SQzXXC{qfx5)Edc>91 +==i6HeYuKXZWhb~DM3~0%E1On+m8xJd^ad3q-Cx03~HzXobF~%ya!JC45le`GEN1MS;=t`j-NjT?Ap% +kp|e|}POk3fy_sQoDno`u5-j0SHJ2MicC)&ner-HwI@_#IB;yn)VP*n%N?gMnxcNNtyX0yAVQ8sA>#Sh7HJ&4|A~h$ +zKKp6?%=-zP6hPdx74u0Af)av8d05+h%DjjAoIJ}@(lPx)B4x&e>%qybhaF6IKKwTD5?@(@J%+$xw&p +$gmjiaYvY5$Fq+jmIZ?(I5-&__e3QOQ$1LSt8GRGx8mHZly<1#>ok~GneS9HjrKDHp+{@F|rMUkn?4P +3g!?)ZCD@uBUT{wR0z&0_Z*VUFWVt)Q^mA*7hDDABFRya3FaCmm)oeS^EBmFqgv&(Z=1QY-O00;nxCGAXQ+iOfy1pojD4gdfx0001RX>c!Jc4cm4Z*nhabZu-kY +-wUIbaG{7Vs&Y3WMy)5FJE72ZfSI1UoLQYomSg!+eQ$5=T{6A1d$AxKyNPs9Kdyqwm{W1v5w)}6c2K*rF&JRyJZu|nN^SR0>fH`K+6W) +DEd$3zj~wM)4L{z${W&XL(bNazM`he5n$DL ++y=@}0FbL~{fI1c4ur}!YOPQc3g~io`bHiclVx&g8kcPy=r3tn99bPM=XW)1NIw6HFwN=0~sclpk6u^ +UdCaaAKQuj|Wjhx%#EcOkmk;GW`&Dmq@mO-H3At}%XIl?>F_d(8dECO2Lt|c<|Ec+&hpLVjbCmkv#W^Ht2D+?_~p0AszP3RCx+^NRIHKs1dUj8?#AR<@r_di*dQ5et|2iq~{(0ke +C@!DS9kr()&t}EL|H35A%KgbWhH3RO!=g9+FRcw1R6(Y|Bz}33T?(g-;lK{y3X2dfce4WE>95L;1EfT+r +=(T};a7^P&r8R(#Q0oJq#7;1;o(y~ecefvI-$5aMO|Lk#GW=Oa9jI7~(!PqX)S66mo1{AeN +!J<&D0I&i`bQcKTTwUpmrH#x%ZEzi?QR +{P}Su-=Klrav#2MWMNW~SDN1TKJYbo>%H@HTH0T&$HMKcW}hCuC(T}l8E-YbJa;^8M$2$IM4R=a&s +?YVRL0JaCzMu{cjt$^>_Uhtb(A@CST$f`-m`gXw#%KFb6?wYz17;pih*<=5$n!yeMkd|9$U0l6T}CPm +z=TFib!k>yCV1eBXRtRcg!b?pC#_D{*(nFZ5`IA +a-(>-Mts(QdOCjA3Pi*KA1am*ol!{mSwprwc(}Feu>W2PL}Hzh1d#sJY$C67viGSqB56&sC`lLtaD0W0WVt8`_`=Jjf53MJICjq +vc&!1jQEXQUVAZgdsTlhW(LSP{Q0svj~1kn?ajV_4+wqUPR36d(LHlFKCzJuq#ju? +FK?VL>j(JunnG?R|#rZe^u4n$06w0wMD8>7ncu`TT144>XiTG`%=H)dOmZ)XjF>Fu-&8cF;Nz^WKKNT ++|&km@2u9?3nXZ-5f|Mv)Y+;rRv>rNeu3l_F!i0x~j!=^xJ4O$_uVFXvtDct +iny_ma6gijR2k1bTGVRV7XgRP-eh{OeF*?poL4Z0$(6YY3}YOz{<+noCD)PJ+A~e0^ks)QS)lft2Hg3 +lW7`mzcHXm<&u+4O0yxPWwg_y$Iqk0W-j}i{d%M_qooVl(E+prvjsy{E83aY6@5hrY@#Z%D70dFyHt6 +-^{=Nf1_#GkXpG}MFKUrS!FRhtf~?RLfG4DtU*FB+$WdXEzY^K<~AwoZ1Hp- +-_$Xpobo_arU#4<>Y4kSTBBpA3u%9?6I}enLUx|37!p)E7$^ZJYiGk05h~>JpnJ!?3JsS;&}wM5)kD} +HvY?F%^vG-i0;OKX7SDzrU3so2&V&N8Va-mr_-0{Nt?lNAeVTKs^A?F8fD~&Y>HqNiK9QVYMW5lu9Jd +C^F}$)IBnLD_DB_%T7W^Ci|x*;wOGEWDpj@A+U?h1;f~lPH+<$Ee<$Fq#R4rlNk6Vd`pH2!ryLSLV>_ +iK`g?GK_XG^rv?^_QMMgo)gg6;GHbnqIn4wGf(xS^cf4Ok07ODIx`H(BBZ1@OW3qGyS~UZeT)p}X^_qG992|Fw4X}h;&Da~HSF?Yh^%I@Qegi<0* +KBb%us&P0X_>=gSGHtzj*cE#);?M0mDsBH;)PL?M@$`%RYkD3t +afvKI6#OXhNLd4;jZ73$@!W-2f}v|=0~)4hF19UI`6ZM~hAauKifb36NqnKkMZQDfw=v>NlSH@ecI#|%f>d{!d!?}m#WE2tI#QYs- +kYVey-qoX@oZkoD!>DpSBt`~KYi_f^0X9fY-qbIRVXYtRNHm{zurlBpvF{81WMSfO} +m?Xy$Bxu=+!G&*?=j`X`4^j%cF>i9dZZ6SPb7hr43ij-sCWdZ-LDG;9%z%%O?=y&j%wQeiPdu0sNcS< +{d0X~E`yB#ohW=CQD?fUZX%o~r}=L*N8`+RZP(v5}I(JgL`9(kG2|Bu-2P)G<6OR2Hrv4B%L%fUP1my +uiYy|0@Is8ys$QogTcmtQ9-#-;+6w!BRcBMChOM#O$3uZKWsB;puqMHoYQS@Cs;{gr#vUp~-bp#~40c +GJpBv|K7b5wnFJgeA-N*pjMs&E)qr1MbIt7LPoC`e`)vPp +rmFRm^JmYVJ^4U=tRwa15WuJ_;v67$*rs99M$O1L4AN2sKCkIcMx6y)Ru9B1SUMQarmfU``UBAvLq7; +zQ!=#?eEGtM1?(5QFEMgl^;${nRwvoSjh*-L0-LqJgyi{}de@7tOSB^Omb!?)lb(iBbXsvyUSWgXDJs +;NYhkcqQAsG#d_^0G;9|x0*pJfMXGai&_n7^ed_zfWhAP#r(FVKo0R+2}mxn01g5)>q?THU?T2v@4Fp +t6DF!9ulo4_-U+9Ig_&AwRO;H}h>t|fBO0BWu-5`o;V0qn{4tbH3tW8jyH*#sV>HPEE6`;R?@_qcDtI ++p@B?i6m@jnqxNFJlvmVCQ@VO|uLTA@!fo;W%D3nU&x1ZG3g +OcSS-P7>US*wzE6-amz}T}l)l?Bb-fP{-`h^g|+Ati(47-qq5GrUIc(QXgm!R8D=|3*&j#Mnc86R4pJV-Rkuw3+?*~V6p +Q#)}T9D*fK)bZ5V2>SOl^*7(&7SEmhXF!lUjsmEQG8_=;2uIfLvN-HGjiHKiE1v*xlbV^@kv6xP{!Kn +hxvE9nPmnSwuW6Lfe|9lYlp+HxarLw4OBUtVAswvT+N8(QW`tpBlju!rJJIB-ohM1rx;P}CnsgT4<5e +A+jgN46)iN5!}oHnQT8K80^k9``F35YAb@py^jnlAU!cAIIGv=5Q*;F#tI6dPeZ7keHL(b_NwNv4c4E +U^=2hPcu(Z@uv>8RHvmD{`u4B2scqf0yfd+tZh$B5y>T&WpO~6W3=Je0EwCsZB>*c?^(x>iZJ%ujKPs +L`E`tuZain>D>S8Rz8*j1ewKnR>?Zo{ZNfu$QxJ_n(31zj!LD@!q7}|>)1-LLpGHqVc5HY^E_X{pJMY +?6&|NqVJK3JFW)n27zz$B0HYaIfwo|*wv||&;Q{mRR476V!g1Db-9%V0i6}=JpTe|Zq8)=IV;2<#0n?*%Y)MRd!c1Zl*_5}v0baM&x_{RFk*8A`3`$Fay%XWc +(5-idO$a1#fBL8F@#532O2+F#qS>f)bJ?L2j@f5BdpdQ!HZBHfSdgfZ%-Fr^Z4A<+H+72*9YSGM9^bQ +HV;wWC0b#H~Uu(>mF0-_*rI}M1AwIh90L6@cVCD^gIw=Th5WO>+Qnj5xBj-GQFG%#pI2Elw1#JpL$-! +UCh_OLJJj<+1#6wiA^BI?>;6y2y%1%zJ2jfH{Bd^=XrX+i{mbQ+MKmxzwx3ex!8=JBh#%&FAzgLm#2f ++OJs}__wy1VbK)TPikLS*Oq@D)1wdk$`uuOY_@&oaphh>j=?)tVk8`c_e5mCUxRblQVTw!c0O +<`r>jrQD}?SAjKE<}gW|;w*I{Ju8pUe2Rzb_dKk&ww;w38+#5P+iKQLm*QYZ)bjb?x1yv6O9zp`ErXG +1$VB^k^$`DtR?vDjJF(gs2~0@tXt4FSVm(2Srns7PV8SFi60xS;`tvhJkVOgf9ahPR(r4AfX^iE8OnHMB^^OqgvWI)Eu +&y}G#%62WQI?teJ}N2P~P6yR63DpCvs@G0heZ-tBTJ^G(s?wrb*THs*r+Dk}trJPOnpk?c;P9#|^351 +dUFZMri +yK&rMBBdbK%?=7>skIcjjbQS?4L9r1QI^xL(u$eZ;iM2rrq{;4D#SwCRNaw$Gc8qCyhzdhoWK8p8guc +!&P#MU1gKaQjsf%8mKEMJt%YrghfC-H#>+`Hk(CB7&4a;qK&N^i5V&83R|n1}{Ey&l-9zc>mZ2GIHT4 +@oBDlEM%nJpi9I`%f1IOmsiJZHiQ8_XohYnSi5U9H8Zc~m0rrsfrda*%UVi3Zw7fyNW3EI6(Odo^s=@i)W{ExU`W_`1Or* +O=iQP`X^{xgDfvnP)h>@6aWAK2mpvB?Mw*jF8 +JFA004s`001Ze003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b!lv5WpZ;bWN&RQaCyxdYj4{&@VkEnt +00KHDMHte!CW9s(yiE%6sFWw#RC9j*hM61=hBu#F<*;5P&;T_FJwo3v64GSVBcIZMBhCl=4=E>T7}pq0IVL +bD0F$3;sVCUlL!TcjZ}5_fRC1?@O+QXotj0rT@-eI!3?n!2$dNx{e%SI7)Xu+C9GRHQkrvsQk~8iF}F +)@PHl%)N9{c@Ur`KSv+|U0n%+*MKFKT!j^+nlu9Jhiu>|U+A4pQ4-D-GG~YE+EX6$#WWT6*hy|ZPVyg +lhdRfk<+_8ohsa6se>nt*GJOIw&WIqY!4iQvxakfjz=DTQO@ +b0n>)E;26$2eC$s<>6bIfs~mfw+e-H?S8*Or6>!Y*-75EfR91=;z?e+@2U$Fqo=pt0a?%Q&3Qq~Lexp +qd0(uX+^Q!7d40?e)djKw*(h6ZF`AsXbPP+mqKDnk1>zM9-N=ay(qI+4rzT-iX46`-=pX#g1_?n57%RB>c<}Uv6E=S}?K$z^1(^X!ao=fb@z3$etKPP7_eCL`HIu^3^2;B}{6?L6FA)1cmD8Y$?vz-C`|V(#zvXUD| +L~o-^;FVmKewb#frF(4!SkOVJ_P6{AkwfMFX+UCzOObmQNBPE-qHI@8$QrkWbpI_^wUQ-MFP +hTnStpaHoA=+;Nh&HasN36-+!hCA$>)U9x^(pLArgN2e><9Ukij-%eiU?c}w+-z!q17JjEzs +3*E(p97hPenY3LQ6+o?nGnPmEpb%Blbn?fDiW~ +slxtM=fGp{9?3Y#e3$#Ohkiaj`Q-@VqNpFbZnKg_G-h3)4}?$+X1ybQf{_p-N_1_v^m5jFu#!Yp0%Ij +Y5jzM}rlV8`xrCF9L$<>iByJX}e`SBSJo|mQy0|<&ll3eeJRuzku%%w};()n^8JQO%T=<4@)Rl_u6O1 +W&ub^|;?f&1mJk-i$-tn~tRmpc~Dn0jke3OScQBz7FBU?82o@R_`YC5*}-8!vuac5qSGmJTmTFTtJ=n +Q{)dGh7_>|(iE{_*il>Thgc6CaKk?4AvA&Z8H)B%jHO|-v5?-L)O1N5CTLt-h-TgtqoDKbQM1bz!bPKn@Q7iJY=<6$y)e4X$oUEZ)0$Ub#(7$JC3)z{|Cmh7-L~nS8?-)R%trE6Cw}WSB1NsTy7|Io_KnatukQU9 +V!--C#2<>I@ft2hz{>>E5%nV`yD@S8PtjoUTnjo@pwp8>k@T;C$A623I}+SKem}kvk6tZ;m^6M&F}1b +NiLJ)0Zo-1$twx3-P+yISAHI*7_-!@AZIFC`n*lCJju(1=VXqQ>x90zE)BCXHBcPxmUaTEwC`N9LCM| +&=Tr>obeVHs3aI%kk_J*LRkHZ;?=DC$;7$*28Q+hxFWWGRxzLb3s6e~1QY-O00;nxCGAY1eV6bv3IG7 +yF#rH60001RX>c!Jc4cm4Z*nhabZu-kY-wUIbaG{7Vs&Y3WMy)5FJ*LcWo0gKdF>n9ZrjN9U0*TFzzC +J4*=!zzm4S^fg@LYPWE~)d;tFGNB(tSRfirUKZu9Rwb0cSlhZN;a`qCv5TO!Z>HfPSztGe2d#bUJ+yP +7Q)B;RbSS`d22t70eELVr(4mOtb?ugZk%%6wU6Y*FNb)wJM~7i9ZXpF +_?Cif7G$v#dC@%IRN1az7j!AA`pNv7OaxsoYPM#NTQUO~f$V0R7c7o`kLUmRdi!enHBMhmqv>Qa$=Hg +lnK-|x8GEDvi`%Yg@ez1Sh_X|+)w!Js}`YM#Uqo*Rc}Mqw~D0k!d>hsO78n5y?4`>c8#qQ*ueTn;p2!Rgur5d$B2^+r%-1htD7qMoi(iGDxgUypc1j!5j7 +NPhI)Su-eqWs4gq$C@5fU^S--rEBkiR6=NTBOv>NoB=Vx2z$ +)A$jh|@N>+KzMF9Tk(WF|^hX=I*aOQ8I6wBW~-A=nT1 ++6p=F+jvib)z!4Rxe6gHz$Z3uLTj<#zGRr1`>m(P3_(rgKe4b#$Q0jitAJBcy#_2TP%i_6X|NZsDqys +m!9PgTni>qg2e{K(cfd@nXgqP2~-QrcTf3gRSMfl1jD;MJq1b&%M;c-lYj7`T)<@+F}9>Z& +VfUS{kO2z4vTG*!=HgV!UDFTQ3TD@4urnOf9rQ$4UljjXZu8rcCGC7$Zf5F_6}$QbD|Drn-_9_ztnn^ +lPz2{E*e0&KWK14q2{A;An)HQG}L72J!%i6 +rLadbel>#Bb07nM=0LH;>u$SOjpl4Z5jEUZ`m?m|Bz%1wj-sbh~BpGN{A43Z9xsw8fZxxmNd)0%sqkZDH;Th(W2ObT%V8D!P6ck*g +*)S}r33qz4#}5MY1=2-HZ)7O#^-Jof83CUl!&QM%V{?ySj9qRjkec+w;jptJS)$W0a8LBFSoswrQ+lf +yc>m4Swj(4w#{VGjLaRZ5(I(wACxKsCBZ49%Xb4obZL^{C|xn2z3RD$jNr{e}eI;-lWzncR{B5@FMQr +rHwA!1MZ9wcOd!Z^llCS;Jb +l&l(=pZ)^>RcW4dA|DH9hIEg15niOLaVr1Au(0}~({OV@$;r;uY2<3KB)Aje_dhy|xzse7mvm^-ZfcT +BoIW6*kv%1;Ex0LG#q|$MVVdwk?FHzlQDQ2(n-41NaWgF6hM}n>+Y|GP@b|=j03TSl3{ocrO<`oyT8^ +E)8O4_+c5Yj#4DkswhNcOdqZD95=9YC%h>~J88T6M`0Cy|_+$sZ^1gdFvDzxs;ZLW`F3LndyHRIW@XY +LMq~3dpJrX6QvfSGpV>ZZ9&EJQ2D9I;<^o=>F%3e~#pTrNK+`lDs0Z4sh}#c{5Es(ul1*wV;LF&z$Da +KFMYHysoP{j%-=bQ>`T}CH_5q&^u~e-)@rW)*nKOmYEuA`Fnz%_&z|Gc5e~wcP)M-I_P2W#Lqt*AIk_ +oK0a~Wp}jHa2s~h+=F0uMGoE&&OxmMwaPnu=I??&#Rvo3=WA}ut!5l|CA!c^1ws{U!H(uadcOS$zR4n +i12C+HMPSq`s$^`Sd#qFKUCc1_EveM@dID>pA|lmo&rzw +uJI%>;QM$t3OC_2A%yw2x>+sCYE9c+jf*l{KyNN%TzTKg}C={(7oFDeF^b<#AkBle%ZI!xQA4G7rO7e +xLLRvdDEFw>B(*z_E-xabdL(f_KpMn9X5#^snW5p5|DCK>ThRXJB~M-pXhTLrT?t*GOi!oM!M1w)3(r +Zh7r7fwJUd=WycQ`_`&yvG&E~X6Ap`X)BVczIv3_BOD(%xPEaV(yxbEl+ow0K$P0OVJZs;^N-xV*1-q +RK^(3B-Yw5dsD%YP~x$4S0#KzTXdExasAo-0tec +9$8aogk%2NixYcXJO8g@4fDgIzLNFYi=Qt?DcdJ)GquE=XRU6XX{g4|X~LVvt>@zeWz2X?62Uog$W2JwKl#p_9&$z|Vq ++-*q0c0^AU-8Y=oX^?Z{pytF*S56h#Su?710pwmcd@ggnficosnDZb7m%2RI$EI4e&5W6fhAix~v;oY +$H?Rla&i1;WU<|4!r+5cstll#?^~uU(7du8qCbkeI_62h!LY!H(H|!4-;@ +}Ssrj!2yP)h>@6aWAK2mpvB?Mxa^>bGAF001gC001ul003}la4%nWWo~3|axZ9fZEQ7cX<{#Qa%E*=b +!lv5WpZ;bWpr|7WnXM~ZEP-ZdA%EJZ`(%lyMD!%h9RnzSvOw}$W;Ln+qniv(;#uKSGYc6O|C4~6shBq +c67b`_nX-lcb7~0f!qmbBa`#qnc11yRTM=(*LhbmvaTD#yWOsC+M>E9?S_%^^R`S_+c5ZATs5@WC*&N +S7dfM3!y5R;Nn4YSGeSApcG+fDuLWvF+v3)s;oDu!d2v;;CAllwP2IJChK$w?y)J!b-MfRXeNbmI0p)ZOK)`=nc7I?HywkX#j$9#-&tweOGZ1jR+AyvO*!<0YzF>bqff)hH<1x%hE_hP( +%J#!gnky)06NgSK3qnF^i&THd{Afvou|IZP&0g +CB+uklF%z&mtD(J`S+6K#cjchx>}O1DzZ9fX<4+ap(URkklh}nZlC7`r=Z;mlx$hnviyi<8RL95Q&jI +HXRiNlnEuB1T*;DX5w2j7)T1P;E8bExl6vXuqTuvv1Mkt4ZV84KU(&0tD09|uA3ZI=0~q+Rk=$}>jXe +W_yRtmTXDf2vbZpkr>$G9l?DGzuGz`Sv?!Zgq=+F4#pIfAD+neh@?jiNo= +1xWr~!|xq?{92`wrio1AJUx{Q>4(Jf9KxChQuZcaqH$ZceUmE;{2*Y0a +KK#nk@G^M!b|zn>DekMsq9 +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 +JGuA@Io_GA`I;R8bFAxDhgbI*b(z +@_@g1;3*>|1degc;aF}ccOy{g2kZBy5$B`OGLLET6QVamSu`KoghDh+#N1mvu8+f*4!?7 +lY)ZrS4l&N#FI)S{{a&qUg~t1_&*9y@6aWAK2mpvB?M$s^+z6Ql002@J001li003}la +4%nWWo~3|axZ9fZEQ7cX<{#Qa%E+AVQgzbYEXCaCyyG+m72d5PjEIOcX34r?ye_(WnCi +n{CmDCPCw-DK>_|m1vu>M5-jU8#ld(Np(Lm+WGX3AZeXi +42+K9ILhiuswJLUdNW^x_HJ26+LM8?k0;@Tn!j8*YRvoxBAQBW4F-vg)^_Ag}YXpyZ0(VDT;a*bw&2` +|d&Vyj3Al95&4h#qx9$0$d+PT9(@&~ZToRg#8?ok!EijZg|QGv+vlxO5$S6$tG!Vn=scTyBy;np912V +IGkyeD6koS<9GHYf&Ro*AwMOVQ0|kZ}wIZLtFdTAE-6j7src?+R~PCV}R*(9%iCGLIO+AWQQg48tJUY +L&revn^1GZ#IAqD2+gO2wYgc@!zMI{(E82&nXmA#46#N)M2Nl#F)=3T@1=th9OiNo5G6JRND#PvLdw` +P9X%rW`l`A!%MggcicAl38xU|xfarf>%g70U%zHC9^ewbd<}vC!JwlRk>CmsY6^8O86|l6T1i}d{`~N +O=`xc=0QkZj{LJadTIUj{%y<^wGc8nM+`*gbH=MGI%V)ihDkpJ2ZN|^YAEj&(Z?DV45$2diyzqiORwStPuKhmd^3pJQGsjJG^@HYc +C0HJ(qvfeCfF%;x^%(mt9>0{By31Csqvvz`YD<%u;bcHHpO7vY113km^BFfjlUE@QJ(e;*{@c3ngx?6 +OAFIXq=C&Y@pk;j$XgXt;n!4lD5~4PFn-RGkbwL41RVW>4Z4TT1VE6lyc(RLbKspQTzD#eAhTu8=kl0 +K$kjkMc0L<7M31?<#{UbI9-S0)oIjtjTt4=BW9rS)$?}&2Y$q?CUx-}$dR|c9}y&Pb)nge(xY%$*Cza +qnWC^Tu*Y5^6>w~_aYbg|Nz7uTJc6ov{D+F}SeDhtd8!_;94BsHY#R}&EK&q|1-+>KYRfK{CBIut0q| +|5?k6hi?Dl|fE3h>>N7d1UQmgT_Z?xjf8M|KOV$)vyGV7k>XKcH(-H_PD_8XPUd??$)x18wgBSyE90G +UO7w+rJ$yK>9kwa^xQ3LidvSitL>_cy;m?7Bbl7<)N=rn*EU2^w*%s)=ukJ72>cEKg}KGRKSKhH~+%l +Z(18wXTYO!b*@{wh6AjeJ17Igm+<#BZb7j>pjyf#@4uU_iyB{;qo5JxlAyWTE@_QxOQ8v9h0n!&nY$O +v}MuJ@@+`p!gZ&TXdm^Wuz{wF^<9qrxwSOup3uOZIrb}Di%LTYvn*UsTJ$l!Ge+A3kRc0>f~N_5@s2N +`=cKcOtKs~U5;7X#O}-8Q&*ZUd(*;uXrZb-YXAeCO{2&wgp4-eGZ;?v&2yU}|^On8YH`f(A(7oU8!NN +^gvA-$v7Km{bpbDE8mL?7YYF}OLi^LmQj3YMybt_ith7J!r%dI#b-Xke|kyc=ur4}h +`Ju=59_XjI)oU=y3rKd{gr_$6T%fll173?v0dh;O_neny^fG)P}N4z+>cl0g|inzh*O$p)YJh@x)w{a +eYb=kddJOh>J)eQm|`F@eo7`PQZj|Hq=W+!j<#~wMI^meetb9U-gF2P)p?sjs_^;E`8M@~IGwOJ89B5 +$J`H6inoLF+QX`EYR$JmR)Nz?VL7y6Mc;@sv&72yvMi?j9C~=xRJ%+0us@5F{4ajq4mLKu$V|ao=#bGMiz-VKy79p6>NLIc4jWiv +4|drca*lb$M}@iujjgOlrjM(0Tsq&GqWfw>RW|NSvX6FG4!QlSFJ@-AFG`=mzr`jV8FqXqh9noQ$+ud +1@^Z|M5bdj8(>%!oN)H|2M5oXrnne)g4Akpow>+2rlvHn{iDpx%AF>HsaUma%|0%->CkRP4B|O?~nam +bM*58KG*%kFj^e5P7iWm_Nu_Kc+c)R?C^PBi-e|4mZsoLl+P()+mC(*H4|76@2OAUXsvV<{w}NEi)fU +z?ngX-w^;v3<<$JcSNKtuL$^=TB=`qVO9KQH000080Ei{+Od&1WLKg=B05lx{04M+e0B~t=FJE?LZe( +wAFKBdaY&C3YVlQ-ZWo36^Y-?q5b1!0Hb7d}YdDR))Zre8WU0=be4~|#Y*dF#GECGtdZG*K=(YWinAh +2nPw%N#%AyG-QBLBW~c#%lm?4$*T>BYR9`;CY6DoeLyK3^50$k=>N_;#0Og3x82#)V*WH6M|P-}0QN$ +%qsQ57UUvV=h=ma~j7W*D<;B&n`|szMD*E{)pgs_WAt;hqK9Fa%u8*Vs=k2-kBl%oXBXn1Kk`WR`Lm3 +%Pc*(^8Ny7{s!_>8Zw(T9s +&WrgpTJu;u^$Oi!Mj_?}lYEdu!CFDXxsYCA*E^TL?sIjJmglrF!pPz(cUJKy(lIVY3|03r9B#Su@|M5 +H$?0k0v@OpXc77z9rU&KDaBffdJOLvIZ$DZLYemITbFC9!14D9;%< +N}O+ZD$rRp$+9%7P#I3O2HSk?D)5>mkZ4kcL_sQJkUK6mQtCBCYeFEWa=K* +48K*J-hfOLT?KV&-y4wKq#**V#P+? +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 +G4YhQd7v5f6mt~6b@u1rjc8ed$AkMKK~ +jvB1C_HM%R80{0@#Rix@X}xfh((Z#*>(*-v&;eq+ZpS +t?$v-+3D{_#T@eIBqT!#r(Bi{t`|OIe`+`XO{I8sJo?-V)otNgTmd*!3w^;Uc(ZoOFj5g|h((KaMzT$(WvG_B7zL6;-sM}_M9?tyJ +37)MO4SO`sZ(||a5iHo^%H^06f}|{xh8Y>yiK;%63?jgJ(;i0P&85kzr5lCDZOGF$LpfVMk^>TwtTuw +mK2Ej(kd-m=Xor%To&3&&7AwyisyQQ_DZKzC;bxUw+}S?1o@6LZ3OneXGtX_Kd^3Xya?d@XYF-G$`g2 +1-K1R7b;fQ510|lb^!h*r$5+>SCbxs88*~wEMlvpyFUOh^a@SQ*$&^-dyL&y9I>p+R8p*9o?+dPO>w|6=VpXj)7w>5W*~!(T4K?28a9567^F%)9X +X2-FbwWFxC$*Pm}1?;I|Ujs4dJ21lmwDQUs?!sF +W{Wv+3*bwPEt}opXzSW+kL=|MsfKv#~l;>2ONPU@g^!8LGJII3WM}SDb3I;aOZRl1AII$2;ZYof{=m|F46e^eH*VD1>C +Hr(NSC(`qzRxGP5Vlq3Z(AgTm95EH|^xPp3`P{e99_k6okgkb`}D1#OEfr4K&oyzgKxAxYjX(Pvwvv%s|YKLn%2XRl!!KWu20t!eTJqi32IVo +$RvDMgVm2_$TXBL*J9JH}tQOnRJK-|@o9-%v{f1QY-O00;nxCGAWTUu_V`0ssI72><{p0001RX>c!Jc +4cm4Z*nhabZu-kY-wUIbaG{7cVTR6WpZ;bXJu}4XlX8Rd6iYcZrd;nz2_^~?l5N%g6%pWhb+lqz>;>W +fpsVfL$&Etuq*|ZoUR!5?-Ok&mTP-Wb+ILpk9_2llomRNC`wCP78pe!^1UuB@CT!1X)&tj3=(k=Mrg& +LR3g?1Mp9TTxHOYVN*Fs-=26UIUEmSq`;6_kI`|S#F +85WVS)IQ%M6QvkY??C`gsCwB$&GLQmLXSFeuYzoyI%(Ql=>uU>_0iKtaH0ctVJ|f<562Rc)qPO8q3%4 +z$9P|GvP3(4~PnZ2k3A7d0HYQ_PulX|-`_h_rPV29&lHM%U;FW_5j_$0EHSN37cory=8lbc9 +`&oCcEj6F+sbaVDUKwo?WE_Q_{LCGNOz%Nax`c3#qC0P}e +*)^1$OcMQ0-g?OOC5J+dA1nAbC*-Yw~OPco#Dup&yr+LT9$^3wY#UyHD{rTIgTgKo(WowN3C30lkolq +T_7z1Zs9rzI;^n%_6S(_h&tfe%)cL^POC@9TA-(5c1TwdM-cP*-l?dbb=z& +XbQ^Sylz`7ZFt(J$+#$p+bs3=%kL4O~R}-hI4>i#c6$ZskotQXo=_p9Cac%w=NSdUR`UZXCehZgIcLI%WT41*rWS8qGl>l);Y +8?G0jd51@{Omu9Y_ZWN_P1EHOj6LqX_j^Rdc!Jc4cm4Z*nhbWNu+EUtei%X>?y-E^v8EE6UGR&?`tx&Q45EjZa +A|NmR(pEyyn_QHYN(OD!tS%+HID=Sl;sO3p7zg~@7h0RT`-0|XQR000O8Ktu6N^GMX`8Up|T;|u@*82 +|tPaA|NaUv_0~WN&gWX=H9;FJo_HWn(UIdF5A2Z__{!zWY}!?!mTdtP~^;k$fm^4*|h}s^ZX8(bgU(i +#EH~K2!?gzq7BzkGMq~T2bLcoa}rv^UZkY^QIAei;9X1KxEr;p%Ac&*N~$c{2fz#3p7VM+!yDcPcMYv +A_@)`R>|Ej0a3KljM&vx&6Ql4(4|>6NwzJakm}@msb{k{u+(qOZK<1P2KMva$xV_)QAM$o=*&hWgHg`7h9}SA3Mti2^m+8*eDGsEf|X99L+j-SPey4uPjFtnE%>U?H|dDty)i)9jZDk+i!#gs| +0L;DNHY1gT!uEyf=FW1k{I!Y`*W=>eiuF5AK*8HH2ZB&HvrTrLJ*32RDk+jMaG33fWSkLIZbbW!PFK7 +G!*MlJqnCSi`)5kT+ewKDim1CxRwLasa7;_CgHIKtl@G`@`r*=p#UjTCU7vC79BCq?y4IxiJlPLCu09 +6sZj$2H%Yg8PwlUc%=MCYV2)Zsi|GP?!rp)!)o1ZzhIttAWPU}CLg81Z40bUz0{`eGt0(L#6~~l>2e; +I=p>q2wbSIobnK%I~CCN1IA<#9I(p0pbi@`MF270=71VD$a|3QX&bH3bV>9t9gHWk8H@|@07$qM_ +cd+ebQ2)TR^9mXNyJPGl19-CV{bxqS-5C4IE=ED?;LInxe%7T4sOtI`$j_r~e0q(@!pO`dK7y&s;ybk +Od{XR08n!t02l~m^-fK;b2_!O=0?4<1+O80=Ry_)0+mKR{YjrtZTD*#C;l!fnxvAykHGa_cbuQg)$*E +!%5x^wL2M={=l6T;rzchdvV>H!{35#z&e5Uo}xTFk4?gTqyaogdWxtVQh;U6R`yKO;Ecy* +lO9KQH0000806;_WOniZsaE|~00O$Y!02%-Q0B~t=FJE?LZe(wAFKJ|MVJ~BEZE#_9E^v8Wj5`j(Fc1 +a%oMM&AP@sqk(M3SvCJk_a5Wh&4Y_GN1+@C~>#b?Xec{2(}It(lzA2W;6z8W{?FnnO;Fw%qD`^8!l`W +M3PT+wm@oh1>{I@mtNekT7#fBYr>@25T@3$mGt+WQIAvD%meB9g-0L|9C1uU$*Wra6&gOq5t@Rv%WsW +GD+O4;<>H{{~P?0|XQR000O8Ktu6N&s@c-6bk?VQZ4`h7ytkOaA|NaUv_0~WN&gWX=H9;FJo_VWiD`e +)f#JW+c@&Oe+BFPARDy}Cr-TApgy2Y({1;%>7h-F#ifQpOO&lfmUN_)#}@nFcleS>O7f$(d)G4%$D+u +2&v0hQkfs|nLeVBmX^x^G!2!;3M?EhiM*Lhq6-nf$0Wl{~qJObR)(Hi$D9I^KR)m#M^}xbUlN?7$r?a +?=DBfTg*es(YN>&R$#*CpEde&Ls7%xe@$S4V;2N+s<56N)obry<%MUdufK?%H~WCS3xC?>tayZKy<$H +(MzF@b-di!dA${yjaKd;Lx)3OS9VJ3?8MCW|Nu)0^=e&1PtF)GItE(3ml +%}-zQO*|+eF>u5?V^{M5kww*lI4I0g(*cij>WnmNnizV3v|agCjrW6x{S$&@s$EX1~@tD}bS>m56|Z$hF0upDCnwU;&2hkIIQXX&`)NU(5 +s>yW&j2QsC5;-M#K@)VR*ooMJ`8 +3LMz%fAbr$VJ>*8H-U(tuMmCAD@05pN&s`{ +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 +?2jM>m|3UZaPW6#k>|ABF!Y{72zG3ja +~~kHUWv{*&;Zg#RS`C*eN{|4H~y!haI}lklH}|0Mh;;XeugN%&8~e-{3;@SlbMEc|ETKMVg^_|L+B7X +GvFpN0P{{Ab}m3;$X8&%%EZ{)_Nmg#RM^7vaAM|3&yO!hgNk9#AozR7xIvL2bNM<(l$$$Dh69+|91ChL* +OdStR5nXE@9>ygQNWU?NatVbs6k;!^wvL2bNM<(l$$$Dh69+|91ChL*OdStR5nXE@9>ygQNWU?NatVb +s6k;!^wvL2bNM<(l$$$Dh69+|91ChL*OdStR5nXE@9>ygQNWU?NatVbs6k;!^wvL4xUJu3OLKCcIt4K +^s7;FRE%5R?#=K%3eRLe|?B{YBMZH2sAsq3fRvCCtyce-M^l;}*ial;D)$m7wyNDi7YRdJwV_iXi1Zs +|TSe!IaRIFqAMA`qE$ALRhLFOXVRU<|e3)t*C#ZNS7jAQwfT6$;|aCNPBhq3$MQj`irQ9q=c;3C`zbG +XnGCPUvwo5{gbJ`So#ZU`ps +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 +}UP8a|dw$=G{oY4fpk(76&&U;~ng7zmV-H* +~y50cFWiAC(poj(Zde8b#^`-+#5G|<#*V!->nJ#*o`4a<&Rh9q+~sgvoY+3Waqu*PKusPk53FpD*6l^ +bou>pBb)>=k53mIy6E{ld-`s+FJw?E&hu{0Em^jC +E%Bmjg^33YBm-=O(FsL?gPJ6Z7ld>OZ?S^Pm?V1(^dw4Dco2Y_@#1VW#E_6jg^64YByE}ektBqu&Ya| +H&zCIS;rUrz$Nt?s{p?gaI6CSvVN@s{8GZP3h;}aU$FD52>t^6MerBkmvwDneP80oVrONyg1-X46nLx +({8Hh8J(t}I{tEo!SF8&BRq$8fm-uB>;1_>>HQ;Z8zX5*}{0;cUpIPTsz;5Nf4fmA~X<)<0$#+b4ANQ +3?66^#y*$Hyk3Uaa)wEK{o2~LCD#BanV(QXC50e=_#9r(N8@4zp9{_4OlapLO0-vxgM{x0}C@Jq$Y>c +B64;Ge)h1^)zoiKo^C{weqoX +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 +#0DW8(0DW8%0D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 +N8r5<+VH=7EB%{DyD<<7RkuDpL +b#&&naICXQW>LR<1Tb#nbMhb!j#|nZ0Cklf3rV4`fHWUQwZ7K-H+foorx2+)9ZASr`!agNI!jbuQG=k +>iLmiIH*N6HWna>Y~8=3D%!>0m(V~tb-@T`%F0G>5c8Nji|DuV^b`lp0Q^aDkqU;0FBQ0SLFkr)&bqf +ev;h0N#^4TC~z^ogcHA^-D4%b+}N*B+`z+j7S!ebl))}lLc4(9 +Wz2{Q*A~nZRjmBVrfHhk&#Oqnv0EG+yTjP+JS_Z>eU@c_$LNIz)u~F7V)Y<(AU2j1bw|`5cKuBLD1J5igM`dX9huEKQ{> +a`h`Kz*Dno%zJ6s8^!00lLIbl@!Q%Vg)gUx5Pbvrv%u@cUmL1f<9hT5cKi7f}oE#6a;ma=d`kxi|n +*7umTqu|FBKE^PSR?#ih#MKRE6MVJk8YFr +Vff}A>|r~!0V5hjD2I;RLTBTk)H)CRhsr~`CSQ3iBL5yqHLT~>rjbZSBoQW>Wv6_r3&6d{>$>ODaiSi +3j2OcC@owp_xW5bG|udxwD(AU@sMbOvSN=4Au*eXTP*Vt-B(AU@+M +bOvST1C*;*g8ef*VuYNG4-`U5%slE5%u+^BI;|CBI;|iBI;|4BI@fcMby_;Mby_eMby`JMby_0Mby_$ +Mby_WMby`*BI;|mA~%zx>*uv~-O&Saw@Gd8QRH%iU8KjZ9aVxg4rkRZAVYTT5s_f8=K%`!&2GH6+oTQ +;DROO6w@KX{QRG^kZj(AYrpUEEU8KdXX>~_h?3y+-NQ+%l>p@!Vnp%k4ZK^J!J!zxlcAKh;Xe`>|_{P +4A^!-m2gzx>ig7CRl)w?5qe@&e`W_{f|tXZt@$&9a-ft`N^3Eu4^{npD)w+oC-mA#VJEOe! +EAsNrDDQ)cyu35Y`>-M}?~L-+Cc$kTRToj-#}#>bXO#CzMPA-H<*h!~Z5>q?QQqo5-PTcYH>bQcn0H% +8)kT!I2Jvp|sJe*q*5KW39Tj(T%3FhWw{=w9%_(nfm3_yon^WHE#@*IYaTmF^d*kZA-PTcc5#&9t{@Z +OGRTn|tc8FAQE?Z!wR_|0zuneRaTj^Dd*kZA-PTcc5#&9t{@ZOG6?c(OyEm@>Te +psqV5#Tv2ywTdO4P->-KFXxszhD9+g++IqDs`oyWOSgBC14PyxU!>E}}}*#k<|5>LRK{UA)^}sxG2R) +W!R3NVlL$)Wy5qrQ&W$d8>6YjiA-KMGRuoeBIShq61F<>q%i~O_P;iq+xf0mzIUbrJt>mvWG!avI`n2bwz5?fsQ89k*txh^ +h!6jx$R|IA78x~11tiA9I=SKe0SYI=oi;x`wTDT;s&DT;y4DN2CeQxsh6H?l8vjY0?R8`-|LMopkKid +sPLC~5;;QWSd3(}U&>gX^6h+OH@FI;tqR;OXIhMFr4Xib^2!z@YHy5&bS?6Q@VcDhm3VUZJW)HgS5@P +DMdq)2lBk3i_H}vqez@XosRE&;><7U(;)sD{2GnQUraiJ*)`&TBnjnHgS5LR#9XVr`NAg1bwaFs|fnq +xm6MLwM$H{LN;-FuWA|D#OZzd^2jDm?|YObl`yI2AqMr`Q0YF^8xoGw`wl9CO81W|f=Z8XPz05p&`O7 +dHeIOPvOrO7^2r9jJS`q +YhQGFE_GfZDpUxnoi)0fXEg1#=B*MPnzRx5(OWaqz_`_fHMY6ZZ)bknj!Sj>ItrYE&VVR6IsdjpDszG +haabz)z-nH6f&SotusQojpJA7(b6R1^WJ3~_wM%v&Rh5+L;iI7VaUt$m6bK^!9?=xb(|$`Cv0&Fs=v9XsjG95b&G^fhx_tr9!w%^Wx11$~{+3Xn3UQGH<*$jr&jilDEPYOq)V +GGkl{mVeBgG7p5lbbzzM(vR8Y>bbG-V|K+6MJ*t$qFD4XyW+B<4v?BT7JSUE)Ov{J9RNts>Gnn?Dk1T(AN%ai7@ywyF;~%smZfD&0Wyf+p0>8!py#{R*9bC?AvO37>AkNr_BxKC( +j50o%)C7GHE!Mz`kGLEVfn|b?93TgSO7A6WtAf6> +xya_Lr8PWG?K+2(%drbuV5HyZkbj#j3do0(@(}g(%f>bHrPO5u3xPZ14?rv8p&c4fw>WNUl>@L8!@lZ +0Gdz~^fkBQ(I-o|+VfP2n7c8~tItySWp1Tf492A9R%)n)eFx@NYW2a`)ZF&9ilEZ%+7w` +nYHp9lzu0|oZjV+3j8)C;QRQGCg1P-_XBe}ZJD|pdy$I$GYR$sf)!ZR{Lu^Mdr?YXm-{PFk3E^&wb2> +ADdo9k5sd%w1!JH07ai7Jxvl=vEYl6A6>eMl|HFr*{Dz;CYyQKQU7}wloHFu<0=B{Wx#8}td6@3kCn> +cqxJLDMin(tSygDn&1htzN}_BB7ElE-$5^CMcLFa|b1Vty;=YkrGr8DnAdZ)x4YHi`4wv{lEL*!&K4w +AdnXeup}BjE&9j)TSHTBhHVSmoI^KE2@CB^}|@%{HUf3aLn!e+iFA@Gn;?=xFYDwG^ZFln}0`}0vvTa +|E_*A#?a>XYGuPL_W8Z)^e~n-e?Zeon8`kWK!ZVysm&kIh!3;b=Z}~-guaeyfQA|E^GD4aLSM(Uzk*r +q^T)IwhOxH!W9qRnvwi-UHai$|n?J5eD9mo3AJ^Bw*xUR?HCW7WpEtd2jKR%cG7p5lE@@nkvAFrm+Re +pG_xa1(++a*@{<4|_X1mW{R{O%(-27#YRxsmzeqx;>=*x8aG3$MPLc4<)h?}3#PsYsm`AK!K7?7Kv)J +Cdc(psf~fw}oB>WDDCeg2AhLpxlP^x8wN26il~E()*uHwx_dQNq2??n_jc^ttm%lRjoyBnMg}COQWdA +3F4+!ccG#;f3Ki;p|BCzltAx6tjHIvP4deF* +7GH;od;}t_Zt74h|^ +7-j9QWim?CY;E*D0{y2O}5jH*^9#e!3IEPOw!luW=XFmv9%Csi6akps%5WilDEdLyDlUp~H%xuOT&a9swewgb8WrHMm(3?P`l6=xIdFo9CL0 +sCn~TlMyvJo@+9qcExi|Mm8yeo<_DRf}TdUE23TPQUpDXj0)npy(4ccq8~JO(GTucL_heBBKkqK;TH9 +!Hq7&U2i4?S^n+?wJlA(nji*IFsK&$deFxQeTJ(czJUr)jP>rWWKd5HF^L_`{ +}$hdec9L=BZ^ri|zt^2C%Ot%p1>WoVls`a!LtJS$~bg9)CLGOWP_&q*0p)8i>A!`jU7jFe$*W_Uu%us +R2xk20(ko2R1;Yvbhh22K37H+2ywx;)YRaE*Z-!gU5_gzF8=2{#znCERF +WLHMSD*wo_NQ&ub3*5cp#w<(OE&wpFJ&p_z&-$o}4gg*c6;0gnw&wo3$*+A&?5BjAbt~ +!pP%i1yP^)Yl=`&|QL-f8S4hAwO0YhcR98b!y@<@C^T1DpI!;}7B%?>uTCbotH2Q3IjN>9xxZgf3@xn +K~Oom$S?5Z$g(dr%e5c3qID=ycmj{A2C*q0}7s)-u1S^1p1uWy5B(PbLO2R2F83Lqt68ToZWZDKEj0sgg$3?+Q&kl-%OY~gku$ ++m>V|@PC|XIHRh1^Q3%EyQrhQ)sU|7(IX7aIohF3i24b$!f5tRx0Y5V +T_wSGmJ4aA(}>vnF-M}V$4j4rV(RiLNtvSGZUg|#2A^7I;v9?)K$lHf{+QRBRWMvUv)gEDCnz><`e~e +{hLe`tWnTc9my#Q`l{nNML}P66sIWYtB&Cm1%1^KoT8wwI(}0W^i@Z1ih{oC*iBIvuW{kq@pqI4mDO? +GA4bi+L2G~5aY~V0X_UmsgXmh58ey%8_LSo`yWm>mkq0q7Jahv^XwPfT$bp1z-(7( +Pos)$2+%N21VuGT{2L3HYAjW7}Sl-3O7L3CzsjWEhPqBhy?wRRziF-uA39@hvHao;(j2orI4slJd8si +QGPXuLP9RfLIxD=#X-EG1ckUL!Q#`&B8(htx5cBIH93YF$S@WOnm;MVRO=ODAfCQTgSE6(JuoXk>_d$ +Xc~4E(RM{En}9_{5#s%V3txHaVf&WgyHRqFmd|$UPa7btx|-wT$+iBGuoFnQJAGPeg1$V=xe=-7qgV6 +*IZVFA@dVk6+vIe&2MocuKDBwGE`f}ETy?|ZLl#*sg9BbVV2VLzFmrfz7mbsFi9!Vcnx!ulD3kdtVDw +`%uq@-7{dgmRD&_hPf9fy!}O$7gE7obN;Me6dsazM-P5lb6m +<9W&y@t-z4*pcf-sHge*e3QA|Q<{F^%bdzj_Z$W4hn3&Kc8~?)R&=$26w<{o34PpMm@R>PxXx=l%YZi +rPS9im*kip7#ed!ogmi_Xo5OhTS~x4`?3@`+43U(B2d_SGYg +0MG^Ehpb-u>S-3x-;dBXo4eV9~eGO;;Sy5lwuc)Xmjod2gORch^zSJr!>PxM%qQ2BBE9y(bvx@psgRQ +79HQ0*!(q3XkeW@*1)R)?FMSW=~SW#bU<`wmIT9M19Cw<}v?+axbPC(7GFRP0gHUN*4jVa>O7GHSUiPcEW@h_z+ +WU+nk`7Jg2(5V69Xd?11TiG^BWJ~P+LjxW6YTD^ufXKbMYYvqhsZN?X*y-F`A^@92*M)d;LnX?bxbK# +xknz&D{Suj{N1PR}J9<5V9iB;_ULiKU(A!aSRyoh^<6L*1XGG=SCY!R`=Y*R)|P?W@MR#rM;uw`+|kJ +-4aGVy?%OEj=}^^8XY>81 +uC(GvBV~KFT;rkP1bkrQ$2l>=w*8sX#*41inks-q^^Pe2i-3=%+T))+=L1*{=Q9y(R`kXWxdtd +uq6=mQ^R0+vRq7fdWT5c3nPA;)a&&}b@sU`O}+PrGknC0Q&;!LV-MtTA{VJ?dDf6tQC%xpfT5I>&JAs +AECzO~-=DTb5xAx9wO^bjLBAz~%&laoosB1|zwV6Ai|4BPSb-=0;997|)HIbTFbDIq~q=JTD(4=DdKA +nDY_}nvA`Kf+}M#p`gpyODHHab`rt}Z|o$5G2Z81U8*Q(^C?4uDwqCDNzmg@mcFJaXz`VwD+wxm^+_c +`e^0%nqzw`)!huvTC5nRLo;NR!@r;Y(Gb=VI#gO5)cUe8D0dKW0(TBV*HXpFgW9oFb4djML|uL +H1Sgg1vR~NZ^f3^6}AAA#}USM^Q|2fu6xU8O< +LoFPGRuWD7H-um$_eH%21Gz8i8(elMsf0V<#aD0>@557zU1=gfI{sdkGbK_aRHa>unf1A6W$8jMMXpNSI@~OEO<0z?4g9m_!kC3z)kJpq+wIF0*)4JEq8L{XD6$*>)I +}+-9#Uj?nW>AKxOzm9-6p6mYUApaitHvmby0?^S1YpH1Jy-cT)kG2-LlN8K-dVFjd2dwY< +=vpXH!1S+ZcyG^6nS|!DDSO`yu2Hf_jW~I-VMrory?)!2IW1f$jiGydB3g5%ezT=?@{FC-K4ztD)RDf +Qr`O&d3iS}?}LiGyqlEwVMSivP0IVIA}{YI<$YX{mp2kr-|kQk;m+x+iy*-r>LJ`YeRUBexI;aJJEyN +Mf&_P{hj8cg)kTot4)qZ3oW8mU65OF4!kyDs7eRtM)I+#)`syOo*d6L2+&O(&vqO2Shj8cg)kT!IdI) +z;UtL6bKk^U~g7rLJs=nK+q(hac6LClR)kRc^IuWk{wHzT*v^@_Z_8M(XCiq)?(x~svg-#ZY@S`qw0};zx?3Hc4?tUt7k8`c^6_Ge@#1cE +T|QoHF<#uQuFJ=ZEyRo8?pD|3w&tyiQ15oD>vBgwXRVA9RM+K>ey)osL3Lg3=;ykKl}dH#j()C-C~tL +L?&#;bi1Jp~<&J)?i-Nqb9Z(V~=e1o*g4C}W!JvvBQxar!^}2knrvCHw88QuQ$a~Boyg+U{IEG|J!x%$OF0m?YcdRuuIRncNJl +mo^^W_VV9nD`xIf9o^|^bVV9nD2NYqKo^>j4?ti=PkRt5Tv+l4W?9#LDh$8ILvrhHI{cqPDQ-ttz-El +?OPj%f1McDs#orKpp_rG0tN)h!nril7Ft%&*>S44fCQAB;6RYZNAQ$&5K6>$ICbr%#-Ul$coUzZe7Uz +Zh8UlWR`uSrGJ*A+$7m-IAp1jtkCmnnk2)-P8CeXZ|T1bwX^Py~IgA5;W=tshbZeXSo>1bwX^Q3QR-x +xY1nzSgf)1bwYvr3m_3zgiLWwSJ8v=xhC2MbOv!b&8;`^^(lVGwN%DBI;|SBI-*$bw+({Qbc`iRz!Vm +QAB;crHK04s)+j9ril95u88{Dp@{n0sfha8rHJ|(RYZO5Rz!VCk1EfpFKxea>Py?NochxCE2qA+{mQ8 +?ZNGBrOWUuU`qK6*r@plP%Be4HzjEqJ+pnDZ()KH-zO?8_gA?Y5Ot9aS&LR>J3Cbei~HxsRw%+QUOUey!dZiIPF{_0*5J5#Adb_Old +EdPU7=1Z!g1A75o?6AwdC-p8e!|F{pPoDfL7SN~B2wEc?TfN_WI(AJw|oQWm} +tJDZ8JvgQayU|}VFAsgKJ*x=%IyR^X`dVQ=8D~UpJ1z)I+~+UoCu7a}^w|xHuv^}HM-{=&wysr#Gd=h +3Qv`jjUa1JX<&A7pgfl(gd0P>7Uo)Nni_vFxZB>Nb4bQ47u>gH`^@JkqmM06}YlPj`t_&-}Zh6D!6=C +~6SMD>hbjP +fwWN!m-t3`tn%DJ-7UdBKX6V?<#^n+^a@}@#490bzfMeJ-<^cHpY#o_o^*pS@!gpc?~QDJfsyHOR;Cp +?@)wAfD_tqVD0tn8Ld$mPoBM?FOT)s^Dfwa~Je=PPL5 +j=DGFS5@GrD{B~__Fz!5eVws|#ubI^<-UjuhbpzSCxufO{gTB7Ga8VKb;YsyT7>}M=rjp09>DhG}5n) +_bnt=9MP5*iPD)9>eP`a)f262gplO42DwO-&aBo-heYYzY +7OF%D4kiS-V}+_*)8TSsPxhaMF>fTv?3r;Iz6Io3lgO>@2UonD4iWwvp}MBZl!v-7EMqs28q)75w+O6MjHC<^+T+oV>BMCtr8^IbT$daZdwxXcw=H@HFeD)T_->r +L%MB2hX!pzaHa(z(5AUr3Z%FUk$FFRSE{D4l*!Z5fHunYG%)AyGPWLS=|V>Fg=BN+e2WO$;J2dV~MXeDI`*OZq4fMVl?Hafo?fM9j@8 +mLqiV}oEhLBiiJw2vTGgev8Y||b-7Fo}Xs&!(G^~}466d{BhH@}6DWP^Se7Ff@2 +)lduTt7j**MZ)sxxxMG?~V@WLADnce0txXklv4i&S;S~svddiJQfE9h(XnD+TFdvE +r%cAKy+dUmx2)L0cg+pit~Yoh0l8}TA*eAzq@z3w#{CSW!6^a@c*hS9X?6(fq^GA|ua1p8XONfAQ+@w +XJgAD$Re#8H{uir^1-oKZx7cv%tbYtI@*%xbMwgsj$q)rw$Wm(3?5B$1=CYXtk+YLJ~?SY;R@o8GfSk +)2#u7eNWzRWOmAhg=siZ>SRHxYwE^ieM2tS1E!;?3+*oi`Z{|3l_0|zam(~f%S^e;*4sg!noJ$=_`uh +!LCdyvNJ%dEav#+n~J>fG0ru2^nxNUd<szCW5HsuGRfb +`x>Fp{*3`0%tQ6tAN)bzXNE)HuvdU**ud!G7J-wmHLX2gtiY82LD$CWw)$*#lZPFj6&pSnEDUs%DQYSA-Vl +q`3<%j%N5Wj8x5DP(fj&YWAY}E$C}fYcEEs=9Xz?!${TK$Z3`foFQ+;7LYVLs +Q3&T-!$Mm}}95r`LUjxHYbK@GTU^r^-jMgX&N6lS1rwF+p(|%z%YF-YQs}TaNx8GBQcI+LE+%Oz9v;3 +^0pp-xETdfw0@u;~K+Z5T!ZB>Smq;D>0Y>Sbk>0$l-7F#KGpBPE{=8D#6j3iADX)VJ@()6&o3$4^@4a +_l;G`(8Gd5$ERwv8i6Tec`dE2Y`7j9c*4lt55b6kBSMv}}}a)yy4ljzJak~DM +Kyax1jS^JI{NwP5rMv`WiX^@SPBpaS!Bx!cHM$#Ql_EY!8k)&1HdB8}L?E+#XX?EkI`5_Xg_B`IEz8g +`+W{s#Z*fhIY+W-tU&2CdShQX%UZEq_=RAD-+9BkUDdc$DTtWFxvFxWIZY95HFVpKgh2AgL0YU+Wfu^ +t&y1eKbQh=WaIMo>`cS^X{yHrYT5gH5v&8jNDF$%aH2Y?@oE=8nOpx%FDJFxWIVswRlRrn&uUXBcdnJ +D}ADgH1MC!eG&iHcjYv +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 +v$ZdHqdA6>n39)MP7WLygf^GBZw%vy$0wYJ`> +ByQEy0Qz3nbs?P<_RbOa2|4c#f{ohv*0_Q(h5d8mtP!O8V|EM6e0sl!s2x$KKFO&rT|Ad0jfc`*1aQ* +*TL1;k#QbF+gf2APQk-t_DqM5%@5Mr6X6@Xb0eF{RIiWGzZI#v+eY@#3ph?I~xi@-@K_H)Y+DT5M +j0zgqqw@5cKgw1wkKwry%I#zbFVH`i~TZ2Kc`!2>Or^x{5=D^xqT&eJoWF^zjn~K_5>l2>N(RLD0w33 +W7eKQ4sX;tb(AA=M)5eJg*>hIDe`j_?s6LgwE!R3W9ySq#)SG%L;;TeMJCfExf8A=;L1%1bw`wAn4#fpYApcW +AF9S(?8A!T_fk^Pz`%tbb?PWu0FB?jG*-+ZchSFX(l=iZrw3iK~y=*A$WkYE%8%lfGP}<9e8og|&(aV +M!y=U2XieGxrBBD{2CrR)nN({~kq1>h|wdghXfmenm)h_8(M)L}&kDMM!iGn +BPLSX~6szvP}c#w~*)@kgi9CRmk@TCKMsn*Z-~}=&OI9BIv9CfFkIt|Bxc+tN(~1=&S#zBI@h7BI@g; +BI;{Q5%o2$i26FK2>R+juL%0;zo-cM>eniY1j_w>IaR4b{^WlDdy1g10W}9qd$~U_s0jKRP;KdWuL$}YcvBJWYl|Y<*EU78ubql$U$PB;)uDa8t%& +-1M-laF_>4+kzRF6BU +a;j7f775O&!Ig@j(n0m2IaR7&G^f7Qi{{jqdQnW2nHp3tidiyKgX%>wMP_PngCgi_aHAsVYfyb}?sgQ +eFr{T`NM(olEK@`3>@b;SYDj}5qu+7=kcGgi{7F+o| +C~N!c7Sc}Ux`m9Bz0OW!dQfH$W39{5MXqZs@*Ryuu4^xHUFF{|T0}00(i>Hh*2*v8G&?E%Li@;eR(S7rCzT-;pdL=Op&>OJb>i5`6VMVXD +3@^{P!4sVYfpk?R%_Nz(D6OFF)aCf!9oq3cZ}S@7d}U5e$(f84O)kbx25VFP2rBL*gfM-5B~j~Un?JZ +@l<@PvUa!jlHJ2~Qc=AsjO>BRp+jPB?C0m+*{%1>so(OTu#oR)psjMxxIP2LAtjeMxuRNOtw!zrsuPu +@{LU0>I*1AQQkj{s-QcyV`EsU3PU>wcGBMsDYwJilSyw5+zQeN;5^x!^R7*q^;zo$xJ49`4c`+l!Y5N +;`*Gbg>aF{K)m~6xHs~_iRViKop`+ +w%TxKDsrF-O;H!+kB+P8!KI=bf9%x$L^S>|e`CXj%_}3GA*Gm7sB=CKK-A$eZzAv!r%e|Lo?OpRjkq7 +!EH-W!f_`9mS4BXfELz@S7EqUYb`tmP7a^m{}?fbH`bnh!7pUOq#KW~xvQ)m(Bm%=L#(OwH|U5dWXm! +j{-qwtiiy=(k(pQu;%{1hsC{ELdcYraZQ_WZwFMuG2(0^jGo_i*o8;ole7g_nuX`!b+Tl!1OO)4<;iY +$Z$M^S%t^Z|QjCt_GeCr#(|N5DqAN?$FU%@|M*}E3_y8+dq +Uk2_ANXA%h*RCh6oEL^Z5$#Hr@D>91meMRap|% +#Lm)0)HjWdBOP7rk1me>#kp+pllw-dA})fQWi^V0PdCm6mf~6!2Q2fS0ki +i}COCHzMsdZ>2f%zkuzZ+?<`T3Fb{O3p_&(mtJ`Eg5Pzn +_!X@8={5d|%?{dE)O{+G~O5@OOvpHE&lHCEnYd_pW)n;r3eKIZ|(z(O&a;5HQr*Yk}wWckAsnZ&%e`^ +StJEhzRtH^~a6G2I89q+UNeB*jca0SI)GfQh<7?@k5aszw1)tZT#D7{-dV8Z5^e7p&<3n&9v77Lt0w- +?K6SzGktHv*Ix677E}4{3ut1I4N%VpsA2>CXZqx%;0v_T{)$Hl>QkV-<}FR)z!EDq{w_2Lv@c0x@9(C8_N6xULS_S=oh^Ou%$B}aXiMY$T^s +Nk+G}3_wb#6%z?QzsU`u~VY0KJM0@~8wy|vf8)U^Rm!uI_Xw|$>4?KS^7`u1y8-Ler{ol*9*L;uC?w^)+?#lu^&9mAYBJ%+M+NF&*CG-Q|*N-CaI +r@>GZ~ef@&wgO)=6kSvc2XF4ON6o%j?rG{a(T4<@M=Tfg39C8~kp=rRLXf3Eb3#zKQx4k6Cr!#5Z{oWfl3-Z55CxtJo +iWtANB-?aMcGpFi2O%Mx!es_;zncZ78O`a428QvI5cj!EAW($VKPgmfFAZ$%uOHI96H#NLOy4bnf**L +J(3-xAVojsB64ZeR3IgmjytelZnP~IGJb+CzJo)Mc`O6aTLxZ +6G!1dGI116BNIpAC^B&r&LI;=;Se%$6iy%$N1+Z8aTE#>5l5jC5pfhs5fMkB77=k2iV+bJk +%2p)4_R6si&vN1-S&aTMwk5l5jw5pfhM6cIV#yt4!>KT?MfdwiCoo*hdgMVe>%jgdGF16SfJ&PS_g|JE0&Eu@mYM5j&wA5wR1h +5fM9~7|}O&I*Um8)`Gncmx{npt%wK=#fpf)P^*Xt45f;Qz)-1(23aUnL^OsvMMPsLQ$#d|Dn&$NC{jc +;h8jggV<=HXG=>UAL}MsWL^Ou_L_}jKPee3^>O@3iC{9E)hT23#V<=5TG=|DVL}NIxN;HPkszhTrs!B +A5bE-7R!XZ`SD4b9wj>7R&;wYR=C62&!eLb6D4awkj>0ii;wYR!C62-YRN +^R{J|&LA(Np3moI53s!l6^*D4aMYj>2(M;wYRoC62;DQ{pI`G9`|}5mVwQoG&Gg!r@ZlsPA4?DV!E1c +EV9nVy7>mw%20CKHm##uNlQI@WF{)rLUEwU~dz9z}qJFfU!;N0au&YQwDktoNVF^*x1Ay@UV$DU|;a>i*wgof;R=6nBQ%ho`U%#NjpH~tW;kT8>m3zo#Td!jCD5k?>1OVkG>Gk{A +iUp(IAa4=9O|RY2jyrJu%lt)vKA1w_!Vh*UT$sc=?O;jE;>SxJSnk_u-f70ya3oR +w5KE2(hSQsJzn!dXj&vz7{HEfvmMDx9@cIBThJ)>7fDrNUWDg|n6lXDt=ZS}L5iR5)v?a5hrmY^1{3N +QJYJ3TGn~&PFPnjZ`=rsc<$@;cTSB*+_-6kqT!c70yN~oQ+gC8>MiXo>DkXPbr+HrxZ@pQwpc)DTUMY +l)`EJUqQFml(uPlO4~F&rEQv?(l$-cbG6%RO1m^YrCpky(k@M;v`Z5y?b1X_yEKu~E={DgOB4Cpn2D5 +XX(FXsnn6Io{dZme#UTI>bR~qnReoKf_Els +RcOA{;A(!@%&G_g`GO{`Q)6D!ry#7ea^u~IEftW-;rDAm#=O0_hJQY}rQR7;a6)zTyZ)zVoq%C{KoeO +L*bCQ-tsNtCc@l7O)J74dgKCQ*8&Nt9k`5~Wv~MCp~r|4~$BQl(UyR4J7vRZ68vl~QR^rBoXKkXL(6X +_Ur4^4DHdN~1}Y(r8kpG@4W?jV4t}qe+$0XpB-CjsKIL_L|ZdjZqq-F-l`JMrn-3D2>q=r7;?#G)7~T +#%PSv7>!XHqcKWjG)8HR#wd-^7^N{9t29PqmBwhS(in|Z8l$mFV>DK2jK(UB(O9K18mlx$W0l5etkM{ +bRT`tQN@FzOp%6!{QW}j_N}~Y}g*XZx3UM@3N~8e~g*XZx3UM@3N~Ot^Qfa_LA&!EFLLAMMl4&xfWSU +GVnI=<8rU4IyIGQOv(_~7|G`Z3&K~14VP*W%o)D%htHKjV{X-cJVno=p8rc?^2DV4%$N~Lg`QYoCKR0^jlmBMLCrEr>3DV(NM +3a2TR!f8sSaGFvnoTgL?r|Bz&)AW_XY5GdxG<~ITn!ZvvOoQaH^(DV%1Y6izcx3a1$;h0_d_!f6Id;WPuKaGH +TqIL$yQoMxaDPBV}SXC)QRN-CU{R5&ZCa8^>`tfazOsWY6Wk~(K4bbj +nqUNsfjjH6K$j>+DJ{bk(y{DHPJ?DqK(u<8>xvlQWI^YCfZ0%via +WK-KyvZ?KBc-p}Na?FKR{E-q)k#hpE0xv8N@c +aNQdw=RR8|`+mDR>dWwo(VS#7LTRvRmo)y7I?wXsrJZLCyQ8!MI7#!6+iiBef@qEuF!D3#SFN@cZ)Qd +w=HR92fPmDMInWwnV?S#6?JR+}i5)h0@1wTV($ZK70Gn<$mlCQ4Os#I2+DwWlyN@caFQdw=PR +92fRmDQ$7WwohNS#7FRR+}o7)uu{iwW(5BZK_mOn<|ynrb=bCMyagUD3#S3rLtP1R90)0%4&^LS*=kj +t2IhxwMMC|)+m+L8l|#Yqf}OFl*($2QdzB0Dyub0WwlnRtkx=()mo*pS{qPVou#CH`$79*CB#~*gjj2 +p5NoXxVy#s|thGvrwN?qS)~chX)+&|NTBWjDt5jBNmC9-}rLx*gsjN0rDyz+u%4##Evf50ktTt0BtId +?kYBQy>+DxgeHd89A&6LV&Go`ZHOsT9kQ!1;?l*(#zrLx*wsjN0vDyz+v%4&0^vf5m!tTtCFtId_lYI +CKs+FYruHdiXE&6Ub(bEUG{T&b)!S1PN`mC9-hrLx*WsjRk8DyuD&%4!Rxvf4tathP`pt1XnuY73>Z+ +Cr(UwoodoEtJY?3#GE!LaD5_P%5h}l*(#LrLx*msjRkCDyuD(%4)$y`p?G%bpiUX=LGpDNiFz9ANZTP +5PWz-P#1#_8w7Ph`0$jVE(#wu3F^Y|;Tb_)96s;^b%FTs!iB&u`tXvVE)*YL5!A)v!)t=NV0?H(P#29 +4Zwcz6@!=goUA}yHPf(XI9}g1L#p~k~L51#(E?yrG6V%1);}L?oczrxdP#3R{(*$+#`gn|>E?ysJTnP +N5kH-n>;`Ki>^o?L4F@3>9V)}xK#PkIhiRlYA64MuaB&IJINgaKig{FSXMEhwSQ*fJ@;b1p0!@+N2hJ +)e63nBibMF^$1pVj6?J#54wfiD?W56Vn(RCZ;i1OiW|&nEq$x5Mg>`1 +e=K&06r6k8H^@=FmRfonVblutq0Xg9*mpIFR%OAByPO9B93O@FA+yGFqnv=88}Ql31pER_A)S;m;vB2ahSno@*b>|{Tu11L^6xANM=zM$t=nuok +g+EqF859tg|TASrqFmiggynI*VeRMX}DJSZ7hJvnbZ_iggyna#@jq_tYhrvtrfn8EHSQb1>04nCKi#b +Pgsu2NRux3FaVwqm>K?qly_0P8Bm8tSV+WcvZ}BFsqp1;8roi6CG3VtC-*`#&2+%Ptz!CuUB&bTzl +!M#h85En94n?TSXNA5@T{1=U|KPKbE#-#U|TUq!JT4`f<46?1%HY;3I-K(6dWq%C|Fd?QShj|Ng&t59 +@tdO0Pv|e%(+x_GjOWB{?$<_bQTpliwd1Zh0dZPlts>xRlf(O{j^TBLMK|G6RpsRR_H`4bfOhH(F&bt +g-*0WCt9IHTIxhA^~wVbF3!PH=U}OGu+%wN>KrU}4wgCxOUyz3#!@mIT`*!ex?sd`bis(>=z>wcqYFm +#MHh_d+t&d@7mVnOE*Q}lT`;0Ax?n_Kbis(e;DRxI!3AUbf(ypd`h4b&rJfIcs?W0iRW_yop`<=(23_u0 +-boiBG8HFYXY5kz9GUyJmaM +D_PfG^WJt^7uFwXYZy^Jtr66<_tPDMI`)0KM^MMTPY((5ifp&nI>LRPA*iF(d579l1WaDOAHy@p+0M2-GG)U7$W6A_xNYn4oTm`1F +*ZE?%GR5(M%3g&>I61A-u4j|l4G_30TwUA#WMAgGJir&k0)yto-%y#AX%)y3<-ZxPhR>obu(4kTNwGb ++{@6+7=}aMps*R;F2y>RVx3E|&ZR`>QlfJy(Ycg(u +hD3)=_E>Y5+yo`5}iazAVP`G9>2zEdrhZJ;;s1WI@Nql1D%m-cKPp4Z?9=~rGd7mnpSD3?V3-i=2NQq +WCFQvG?9!Zk_q&k(M0m!(AHklG%ix;cMQ>*!D1AT1uU}*z +=Y&D&&UVm84YOBXg{~h7&H9c5bO>V2nZ8fR%2g^(kmYL3iERY46&Vo!YH8P +zHnO*UFG^5 +i;s3Y|QKPM#u^Jh<@7^viYHPwRz!q0_9;X;$boD|DI_dSPGaY%6rO6*}9Bz|>RfL@0G4lsXa0!1lG&8 +BppBD0K#uIs;0b0c9WqN}U0v&VW*9K&dmJ)EUs%8PL}m(AU#PU(>s<>D|}#?rVDYHNE?q-hEB)zNU9y +)7yW~T3t835L7pwq}>Fh^rjbk-`Dh#zv!1i7#noh4~$hE_AiXp9rmw`H68XNVKKz-_l!aO{=gW-?>j7YOeL-Cq;Z&5?f~q?;mt{XIcYAn(rv`D0`RI@EWBh{854A`08INT9Hd +vuM<>*J(d2YTvYosD0BSqV`RTh}t(TB5L2Xh^T$jBBJ(9i-_7cEh1{)w1}vE(;}kwO^b-yH%$aTcKJO +aqV`RTh}t(TB5L2Xh^T$jBBJ(9i-_7cEh1{)w1}vE(;}kwO^bB#`7Jl03(yY?L3I^MBM|6*;vVW^^y8 +2Gja`)fM7iPHW=#Z|%MWxr{HEXsYMb@fPEi*4cG&rSPkb)?rA*|%#JGuS@039kgI~8b^?GaSB*7i&wh +nEy{}CJmyh)fR%QP{VPNU=Wr@(a@-oHdx_jiV~rwHpfzIFH*VI9l2U-9QUo)4F=64o(&ytYJG2A^9eE +Qi0hOjyVF(d9+LI_m5kxkXsVozcZBgms)B9zRW3NBZGAe)f*_!)g9p1Ap(4i-8|KoViX|7r&j&Lxgql ++c|%eur7Y%C)A(dISrS%EfBx6FA3}7H+plPur7Y16Bh{U;x{_YSQo$T7Y7L|0Xt4u7r))96NEwhp05& +C!FS##4B|ISISD@1=oIAxED*+<)Ss|K7#*J{4C1#sMOYWVo%L6QLHy3n5Z1+S^osfuRsy31>Q7h;j28 +GibKn{E3#(ZW4mB*rk4w|BIJ@$ZP8J6@gg??~{D;e)_;q< +F{9p_l$0#%byCdH)XUe8;s*{vDaqj+58@J96i*TnK!JcfziT;pe5pcQhM-6*ioGNSH5K#MYTkoh7V(= +}-GHUkykC>c@W3ANRif@-}o|?N7W&P|7efy%LDfX+7~!T*k1F=oJWECe1o;g1M8vO +xBHsh2JXuP-&X|gD?Nj+DFV+?1fHV^JV)Wb9kVIYzFGI34|5n+eN~<@pAj!1Hvp|uL*+{J?!yV;#Ce7|d9Q*9hwaHcMEy;@ +CQOgD^P6xOkZx14|BP8r;Jgz|OlEEcu5=mkEP`{OEJS;6Uo)`2_-D_B;2IFj#XOrJlhx|1>=Wo;q)cKAcWKWgs^CQeTpy$;q*PiAcWJKguy}7^K<}hJh2)E|xJDpWOaT`|s!{gJ0 +!LH3&aqVFVU=(^-^>3ZOKo~^uRNQ`)+5&Cf} +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 +?w%!jgLgQ&^Nh +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 +Dtk2xE^jDMu0RjAi3y9; +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 +O|WiD`erC953Fqm +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 +^mGq*;QL$AEM%Hc9B&@hyQ5zLy^rt*OdZt_hZX +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 +(Le*X5kwX^+5J6k{AU>>9ig`U +_sWXEs3Ak`)sAI4x8W(E&@fMf-p&K#Vj&K$%C8hot9Bg{{K55Ez3~0VFVnL8J5Hzrt9T3Y +NeWPs5G`;ixB6JXe-{-T|jI1`7cgCebpUI3^jy01z6@cxcHF_rN0$F92jf0jPAN-GBUeueaMPK{W_#a +0IH_9BI0#!IS7}bA{nlgC`C;Cr9a3c{unaMA9A6hJxscX~E4H405CE@&VNZ-$qRz(qc*;b&xxW@l00K +3_&0sobV)RMy*Ynm_)#7ZNnU`fhhu*<1B7A1I8A*^S~Col*x4y-H^wR`(`jH<58fsm$k;w)+^(x=>|g +~li3 +l)RtKM3S&v+ma*$|-Vc75OKifapd%FLu%^s5e_jh~lB68&GMcjmHK(8m2qjWtXie(bEG;Ib=Q|_8{y% +8}}MM~o2?9DU8gFIcnRW-vORwp_g{&4FCvlbrQiRqI(U7Wy?E;-4v4SVT!6+#2ZAEC3SWu>T~ZAC#ssk%nygsjU1 +^{{WXEDix22orqbr=uqQxSZfxp4dBCtT9o(V24-f*e*xwpr>w9u$Y6w}h%Jfek)HkP{du4&N}<2Hy8( +a!~ay^L-|RVz{xLmM8lx62qcWFEx;3VDL2$U&G%$(re7(g`M$O*rrJIvu8P`~y%^74 +CE184dAp#J#7h9oOF;QDye5kbr+KP)b&IYxaT)VMYc{GlrXol`s@vfSphHAbmP*@X(d7(%xJsqTzUke +nOoD6OUKM@3Y)q|zsBxYVTF5k7d5}es +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 +GDV)h8?n0!Qo{8YiBl%EnD~F)b +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 +m&Su*I)R8$OL!yXgmjvsXfC))yd5xH?Fnya +FiG5cr>upKSL2OGD%=NVen3riHTN(Yy|a>PgS5ucV(+c!7X&}Mbt7G)OI^Ff(u-Jr= +L94gWoIn-wQx+fOkais(b3I<@;K7ok>M%D1M7@{1_$I7(2Bb7urI^ycs!(<=HXmpv>LXGfR7tb*03*H +n^H@<~WHvYCHQC0@fXCii`YI!a~FePL +aTC*nSGG2|1M%=G;G6>di(lbO%I+s6+&B2+tnikPtwlLKFm@{CxJkl$9t}H)^?1eH`BEH9(_5l+6lhdS-~Gm*xZ*I?z4-cNV+aDwLJ%W)U=aIRt}iGW4nhQKDuA)H%yFd2Z&Glz{c2i!ZV4x8Rzlwju +9U#nEyusf9tlM#7?q}h=NvzH-IXn-hC4lgao$V2AW>EwHXkmJCf-=P95HwRr>(}-YOMvUmL_^lK3 +JKR&*VUZs)e@2@Mx5{{o{2oDEC^T7Dxo~d+&Ze`-y*j@4BHXAl!me`gLIWf`l1cb@gAk!%voKQ>oZh= +t3Rlb0w-DYa(6iGgwHPo@vX{1kORK+PcH)!7F9_h74fk@a5#~WkUfUW@Ub@)0{{!)K_Dw-9rV_j&eXL +k-A4H-^@&%2-S;qi*TD>=x`aoOE33j0pq^=E#?u+Ni*iAW2ml6q>fnGLa-Q6Aw9nee#xiM(PHU0LF#s +-=9cwYq5*5-fsna=r3d9psjPg{%CyPWU4vpOubLH6-6R2OQP4&%TCL? +ifiRyf(Uq@@!3%`R@;KK$SJD$9s~zJCEwO9KQH000080EZ>*OjgZkoQ@a(0D5fz03!eZ0B~t=FJE?LZ +e(wAFK}UFYhh<;Zf7rZaAjj@W@%+|b1ras?LBLA8#j{Q^()5IR+*IPIoY>g&S%PT67QC(a!x8vC3Ph$ +T5t%Fvl`BD2SZVe<^1;RZak)e!BCXqTz0czl`U}wXfzuALO0MlOuk#>D!I%HnZVE4S`AYn4~!!C~?|Jsu~boKdsS-+gJ@q{%xe>ETzWU%Ywy?u{9+q-S ++iH5xWxP|H=N@}{b{0PnJ@ldM{<3fahHCL56#Dm}QYt7UR=ak*~RwY<1U^5v?kn?y`iRjeC%p}&ulS$ +>@(V&i00=Vb#O%B(>|4_uGT{z~tvs!;Yp4pa6X)bc=&oL(SGqOs$u2B6O`n(a!eak9yq#l;d(%?hEE> +2a+oWP2EbjgznBTx47KbtP&Aqa0Az}1QT+)GfoAFJ&%gK|crZ??>EC76i~t= +1@)^E_WoT-VHPB^I&FJ||Uc!38T8grz3UF?+Sx +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 +R2o*@G06Q4Y?5Np@kwp4mZ0*5)k$63) +&&8JFJM>yynSbV~~^)Ex@K8fszzeSWy3pk=Iyyr>5x=$u9i&IQ1)`< +*xb&Yh$*Q74=%IT=P%k6~aldC$zyt!EEw%91K)fSh;X_9oVX*|40uiPo{pEU{2&4tqIfhP$On-?U{M~9 +GGs%AyC3NynpoA*b?5Twqj99Pxs38VQE2NWFA$e-(IK`pjdg!@+w?h%Z>s^|tef`_1qBo_c#0|U7{BSuL>)eNTK!>h}v@_ReuuCGp6V)A67x&TL3>NKC@29;z{p{k<`@ +5&%4m-t5boG#EO}DSHmwotv`-*md=AtR`#)K2Rdjqm@6<53)ET}#iEZFvxGvGZu(czyIy6X;mR6+LKq +SRx3RaIAb+yHMU+2CLsxz?dwKRU3bV_l>hRqkE$bBPdlqoQpdcAcRWV1(i-(_z|9+=3pnv(N1%Q%;}u +G+vpUVU%%9xsfrYP{x#&8S9kBdAN1QxVzax+7NgS-jD4A!>SI-WI^mlP`(wd&l +K;RwUfh%eF3n%`XkNBp$ZFuzeWts6(FmGmR~W`Xji>tP!iXLVFGl$I_gFTzW*bf)FsP~PRwGFELRo;_ +rm?N__`dvKwHT(MMPJ@|2GvYx}?s~0wrJ2KDyG;pVt{ji>|vTLc(hNE4fEYr{2IBQ2TtD;}qne%{IAuqwjs`L4xG4sGDnkeSE{zAkUy +X%;T$zP=o?1mxN%DYIY0+<#>N&&?(K5cU62KbPUQw>LBf-o{9U|2mAoSv`^-tx()y=MSV&M+L>zB)TT +AH6v5MUoy-7xvQjF^HU&%I;2JnPxVx!G_PNMVlFW)@Gs32FHW*x`5gkW9{2XQpvE}>=~cFpkUrUsx{RftjXE0-M& +!8Iw&&dc_(q@2cQevA9=w}<`aU%sAJ1#m9zepqr$;Dfp70JO*eJ?z3%w&2;dMurS=K0^Lji*99@C5%V +cE>~sJNnmrXX*__D+X`FnVCo6$UlDy~$zo%`i%X7JZtfcPxSEa#>eD;Y~xSxAIC{n^V5-IyGB;=W^ll +>z+t84LnjribiGzSC<{sr^(Q}LKhd-QQz7QN)j+&c$c74X{wWF`rTKY@{|o>^5GdTJ=GSHLY((688tR +1Dio#}XBrF_>2}qqXdx08=|pm7fry4%z{Fqp*9{se<{9APTz*H*jjo*){0p|4=*lW5Xo29vMGoe +j}RheuiDf6xVo6%A_4b*KKzu1;vaOZpN2OSIPF(2ro_jb%}=^(%7{R4XT${*H8F;!gSp}k~T&5XC&M)i0^ODJUzs=&^BZjZk+2KvNd +y;D=X3J=`78YZpp=W6fp7HIG@a1qHz8#7=*q_SlJP<8IEr-pP@RvTAMiq)9$!+TGAT{xSUXjiX?`${j +?{WbE}2Gz7F38eF1x|k9x!plROolFfcFXVMzVzNO4W^pQ`2WV7M>YeyCKo~0S9>!g&-+56xp0~m6fUP +msUs2AbOgntRG?gBC&%%kOnw*YF-c>&CaZQEMGm21iDfcSFJvK$FOiKn1#ljUMa>e-D| +yj>+ymhyB|MoOq)NCRrqke8%3Q?uYV)@BoFaAVeytjTKST}>YO>5J#cL~h`2s)PCPh_U=>|M3(UDmCY +Y)X%ACJd!(`IhE9yKMVOC)tGqYRub2gEAcg&}TzI?hWX=C0}!%!{MurMrobef5o{sT%o0C!Seq?U_CR +@+{f7Z0(fS$VNR-VL@-7fAojy@SjW!3^C1;MYSOo0VFoIz9E3HZKlv>d~$3KorIF(Rg=Wnf2Ydee#!M +8Q00T+-(snQl`id2h3lp5KBdEg+hW00yhEdxS>mx%LfmAg{Hk{z$=5o|2n~lLJt|uSwAjm4v$fX&TNB +VBIn|61#YSwEujpOrDQ5k_JJ09H{#ouH(y+=Ou<`dIzE1VEW^W83W--DT!NV#h{-O6co%h#!%rOj|s^ +HKqRd=yAPgi*iE^!}P;^?yey1WC1LIFR+cA6 +&7149CU^>H5?b`HT)A9yy{^P@MNAk_Ki5M?AUP+k?ox*!&J_z+0Ca86UhuwQo`91hUIWx#X4-AW@M9~Gg%A#6D%cKs@PANC0|XQR0 +00O8hb8Sy(5k;okpch!ECv7o9smFUaA|NaUv_0~WN&gWaA9L>VP|P>XD@YhX>4;YaCwbXQES^U5PtWs +xH*H^)D>Z4FNHp=YaR-rgmvttD@L);i8fm@lAIqCjb|gie;I!EO*N>c)Vo{N{7Z3tAREEQ9Z;jZiY0zy~(VfXmXuuI{b_hQS@8H!g0z%x~}J1EKUbt(5 +I!QwADaWrS6FPw^_Hp-@d*qeUpua#0%=Ra!NW=T&Drjd>2DX_dCXS4P#H#k}8VP>QW^iDl4gAuTz`!n +#DG!9!!z2V>j5gb?aRZh0-rp|C@RQIr>4Dk%y&{*AfDHSXY&0x_2+)s*P?{yb+7XK_mC5-T`zki5af{ +iPQX&@<`VPe03lp#-1Ja=wI5vyaRpG*XokPVh3*t&;dW&cFv`wR%LIoTMGfONMnIkK@>{Aq6_!gAt9W +IjOEf)hy4A)p?%5sLNkg_mkV-ecDdh+sTD%P+J6p@OHAH{^5Dh}jTUBiQyQl +(|p)9c*zV)j!BnNSAFF7?-O=WcDNV^B05z52JYu%*WH0rR|bt@a-rr^+qO( +`)VfPXZL>(8i@Q_EkDMdkdcjl4dU?bM^z(HEyw1ty2qLVJva`CPKoU;v@5cZlUNRkC)=k@J?IUT +XQ%kQcVHZDMCiVEPosZOO9KQH000080EZ>*Ovh5ew3`h80J|>$03ZMW0B~t=FJE?LZe(wAFK}UFYhh< +;Zf7rcWpZRyGL^`@l&M(dsnnvnkfM@$QHo;5KVB{41b^Nbu# +xy6b*YMcup^#Ddm|C&DTDoZ^0R}9#EF#r@XhO=j^3UeS%x`3(?wAk+K@oYWl^fC(6^vBE3`<8#WItX6 +sfFYm6g$8ri+D`OlGTUrR8KI)M8oaO2pH$$X1n{nBOCjsw+i;jl@!`yaGa=R3zxYVkAYDNq$tiM+%x& +MUmAHv>X_Q(WI>ODj}YwWBEFtsa#dJgTY`jiL(sC9E#I{z$aM7x|G341lBzC^^Kgz$!+7o>-;LtRN8p +*;ppAT>tEkaj$gfhfAsEcFgPdT768;6GDms5kZHAod4`7Pq$b3_PXib;xgfGyW->PNr1FaXEH(dvwJZ +9Y6-k^0=c7RgeyN-ZmVbC<2!;oSK@jlYV|vGHH&<6O7ZysuLMorL2WSaP*p(FE{pY?VC&2LG{#F6BrCw%@+3XL!7PTk=BK7S^5~MfxS5rs}j#dc~Pt~viOX4YvEL1tLKQK4}T-pc{loVj-)GB5g3h?#&VK5t{R|iu0 +tV-gM6fd_$0`ff=#Sj}vPkum`}zM4 +w5rSmMFZ!}k^kls0Zc537lUytx@Gcm$&RpC5t6`TG%gs+>T(?WXxpoRwP%K+(^m0G;ne +VBj{9br23Y&<@p|me^xjM)X9vibw~;vvgP7iPL!e@tnS#MR#HxqT&H4YONoCJvri`cp{|s?u78i|8%n}B8*|Z>)NiQh!uKCgnf+}GtO-|GHADQW%3*0$r^=U}P>sAz=cr +s}s;bfG!)S*ctd>I2TvkH@9Wg?<4yHCfGZ`lZvRx1beoRh^yi)l}dYA-#da!>^atC|+&%XKgpa1&zci +*>AcL0~Nj`?aKwMv9Z9je5hZvx&biOPnEMjz2KWW(>)u~ot&4tk)2uL7~lI7YG^fffW+J8H%lT|&0Jh +`*kqm-sqCovP9ptp$>nm`cba1+U(qNsXTbZqfW8?x%$v@tZ`Mq|>BGK{PjUidviTzCa>EAM~nIm_iEF +wAn2XuYhE5EV;Rs5RY20m@8QMC-rA2@%AFqw_U>~Le6H?5nM?SS*|M6XEo#f$dbFhP!I=2W63bkCr&_ +&vTzEi!9mSQS_y2k~#n^k;?3ZC1m<>eeMS{5 +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 +mf7V3j?+T!o7-x!fVbP0H +d`($ojgVyJA8|Jbr`DdI}D*7xFXS1rtE0^=`6iVCL +Pi;H*+`@P@%7+IdiZgf|=ao1Tj +i@DGBObO@3+WG-ChBGByN#-&l>*QZcAoVicF3JBDXu0#KIxzSnP1kh|MA71bzm(&Rrh|2Y^)>-N_RHG +`x{9I3i0YtAwkl&N|d0|IWQdZH4M}+r6r9ibXY-=Jx>nb$MCLb_V>x!2~%L7-&Ju{nO7f{E3_$emsQ7 +$QA+L`{4Rk<{}4bILf!HIW~eP^uU1BNAqg7$&sL5m%A1kjx&Kc8fk|U;4b*Z$xwQruRJR15dL(X@?{J +gbPceOV%S~*lb5YRaga{0&k(}tVA3KdGsqrhH)q33_?e-}vQb+%s@9K+{?*Cv9SgPWj)J;wrE4=@7{S +>P-o>E+g#OXcxN$9ELl#P(xgGqF&zjY4=oXZEqQ2%O14A8-A>o+ +oj`2LG09%azL*ly+Q^U@EHD^V?Q3cNKr7L4u)dW)j@mw#mZ;Dy==6&|>a{V;h#T@S+y)ltj +dI0j_132t(Z?tqT0s}bT&fwwsE*edi{c*b?=`*_pqE*xzCTO#(a)uXE$YCRe1Nhfxkhfo>+c8e=z0kOx_i3`REFu7R80*w= +7f-@KPSd3C}2IBV*8wV@U>c&DWUSk$|$L9*_)IVS0FI;%}fkX#eK20`v6z$CU|)AmZYi8f^pI{`dyvq +qK2V&@6I!a|Y&7=j#*#X@?Hmo@OFO)JFrJ#`5@*=BY%#J1cFxTYm;7v439;3PdGgXYG1a*`d+i}h_)A +9}(PTq|Zc1M2eQ@nL->C+n*nwn-mEY!(eJH|!Ct~ +s7Wm(jh^-Z;IYLpL(1*y~4&4MB8-R{^bgkyMG{My6M>fn%h3l@^blHf$~=MIyrP-r*Gi(asz)6Y(6$~VibOTiTn7LF~F^)6IB=lL +S7I6IuH1ooa*OIeF0>UAlZ&UO8HX*;;# +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 +!Un;VfLBCWg14uhrBm|FfgTfQ(NXt!NU3zTuy +UMWS9MBhWv1#7Kx0;&9IhV~U(0!TNScfLsq8013D^Wj%lA9lgj@7@5N1ORB47cNk; +oIyJFc;2nNdHy$1lmlFz4pt^y2NFHw%*}v(T0oc{(ig0_;(qcPGYvO3hs_dT%x~G4)U?z +6ZK|oCzDvK+zAxb&k^MZAb|=lj!TdM$%Id01mOe*5?Ftll)QY~TJfD-OsxpdjySjwu#Ww+x^2}1Vrb{ +mRgs78I7ty67BH7x!o><4eIw|xoUgOlxAR??&><4I}(DkV}Tm6B2SVIKd1!pkPV`Uq +-M1vodz;wodM|&r%%s#t)#C$+(cCLU3#J)`6NEWRbiTrF?iVZbgHn?tbhi4mL_)H+XsW;71(sz4RqkC +j!7{Fmmd=5ZOb8C*f_FvDx_Jn21Hmj+_4y-+_keCtJCU^2nI|Nu&5BUKBy}qK-2*Xeh|CpUDcjVu(oG;3jXFLBusw&MIzp +b4CwOS!3Es&^Nh%QCxH(W3p#!=}_WatLTW#=yw)TYRF}!2v(^sh|B%~oJIsEJjx+v-=>1F; +V)6S~$Tg(P&ZG30D|0T6SfugBx=lWbnt=bNDhs4L)nFbZq3s +iHP!zBz;*;4&LFfX~ql&a{Ixdh1)}U2&{OM1<-nXbsLPU0$nTNIhPMa}3$SA-OodnauThnf#s +^CRaXI@04k9H&VCH*b&1vkPn;kKYla0)HY$eTRXf_KJTAJj +bH*A1&9tkDV6O<;t|_2vXQ9z1a5vv$HvQ-`4!c1ZHsIU)(NYBQ@$em>@yLvro7=xkd%j$n-3gA*GCCx +F$&C<4S+=3cp5j~{O^bx|b(EV-Y+wr$AHV7dwLtVCP+g+)1oVVgl4a?C?!-ERx>hltqsQEp@t#~;%5( +1+TLjRVP#;CL99xqg;0{k=)1)F@n|E-| +6@NE|hNAqypS#C)KpV5w!;i%=HIeJ2{iZh3lQ2!yqMYnTH8nPyElNq>_JQb5uM1{)c7_ag=5y2RSh@Ov0Zny+l@^o6f&n69Tv(k;&g%8L +4AxR#fmuq5vA?UxX^%Um+rOp@){pB;Y(wJWN&eph1;d+IG96+m{j#mbFD;(ti@JtB%9)_sBs$Sq`*bh +q0xDC!<+5kzQh^Js=3(L>D2m>;Nq{1qKV};L*Ks*iEMyZL~zF}KB0|1jvjT{^~`?yp+~xHk`*|xQM`A +FfubeQoVcvN0?5RG!VJ7V8~0$1^0>w`z$K}Y3+(~ojNcYA)vHCga;fW{zl2u +^RDWQXv8{yv1wWww@6MR`$>Fc+>*UWRo +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 +*H(z`1@}df(@H=ECty +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 +p# +62?0J3NG#j<6#f>=IuKk5qq0^ZABi{f&5+()WX(*`uf-NKty$z~&u)8%bA?KfeWegUmG${xbRXhO>Ry5_IEF8xLX3x*Cd~9mxjky}uY?YPj}K2(GkrI{2nq}apLjT|7}^(6ir${EPE?W2g+pP;MzCalDgUEdeN)uc1ujA=hwI;~6&^ +5ZkezR +W4Js@Az|ciDLe>q^+bP0C&H*IC^-!fLJbGD84_4`FqRm)Z!ZfReXrl3`x{9 +zr4AM_1v{RzcZV3DT%si3O8kY0c=n}v3{4AY2>1M!YemCOx_je;z>SmRa2l6k2ggXcJSZ9>XGp;D(I1 +h|w+>t@ZxU_ja&R7;<2lWG5B1BK`{-tbx5JUPmdx$vubiK-qy;8)2CQN06Ef1?wuIb9YZ>1OG@Llpf+ +tBl9o=8>FhjhT+=2arY@zEW0-vz+*+V(+rhlZXaJnbPV06(&n0n-WG6F%04*3whw50xZLqCr&&Iuh0^ +sKep^MENn(hO;?pl5=*oA5dmfHV&w%;b~_FGMHbF#9Dkx@!o*+< +i_sb2SRatKXxx%pYdk=D{x~g=wj!#Mh; +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 +H^j=Z{i5AhebBCYA1!;Q&Rc7|b^Di~d2hb +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 +v-HhlL2a`)Jb*`P+Iv}R%BuyZ2M&s%d2?5bs +!&__o-!T)zv$@Gy3gQi~89B?WYR7-w@~ppk6FK8ra9ak9(PhU@R3olm{AvldWkBf&Vz!asOl!28HjR;<`(=(>bow5pd$I7r^~-?1Ium?kknCP%~}u_Dz`k8qyut$ ++IP1MdJOWbtWXVdAV*fwER2%rdiC7Nyn23w2;@r^6CsoEK1TU;d)BHW4IP;8S6t6))> +=G;~@W+zcJ$y2-RqG10Qa_DN#r)>I|>g&#vi>fW40xw)Gz#TxQ4GMg)3YxnaMoY#bQCbhi^g8@H(f}f +oA87p$ZgAQ+EG~2ZNu`QDJl$xSJgRD0PMmW>R5ZjEwDNvC#`_1|GC889{0N|(nL&J865cMptkG)s#S@ +N;24a6*LW6cFt;P&)(p>9t;+;C*p%^o{W7O~Aq@On*kGVDKM4Z!oV#XtbU5HlSzkBuJ<>dXhZ{NOoXW +Tx-8T1Xa8iPZa*YX;m9EM)j=nO^lM{Orse8kPnM2fJT#IFe25@g{dTGS;8kkktBSl7s$-`;i6rmiIo* +{|~B=AVD}J6+v4*3T>`J_$;W#4-_}9uV)LygVkhpYF+30o%&d=p{;K)2XzXO2KVn*;lY|W{=3TftzWB +_VDmjemRq5jkqW!gOuJBqy|Mh&@5j8_bDneQ>esUF*i#q;t)&HSP#;PDY +O9yO)i-VG=+mdYBF%JIR1k +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 +ELQ4 +Q93B1yg^5BjiozM;k)IMs!_Gk%+(lCTK`s+!YNt*eaox^!1QZW*W3`9B9%8KjzAe?6$SCfdK6Tw{7eWGilVW?9y2jdSOVaA +|NaUv_0~WN&gWaB^>Fa%FRKFJo_YZggdGE^v9RRLzdtHW0q+DF)et?LccJIR!ydlq=IV0a+axW}Ls6h@-Y-wmp=7VKXwgFu9Xt|ezMmPBJcIMc=djU*s<$tob>;bUzY+vz5b5U5 +sO`?da5I8uPo6%5nbKyfEnG@W#^@VW$O8Fthd& +bXYkeb;Xmj69t)1G)&OoQyoU9&GO(Syys)oF(JW@$J?%EP_3Ot>PE0R%Q9F|#n$tH9Hj|j)_M?jKES4 +37~o@Ov%Jc31t+!y1^7 +1(|spSqD9Q`mW|g@Dx=u?2WHt;d_{7=>p=Ed)u($6eWlt9*pxt!#qSBMSGcdO%iV?5-d%8JqnAAcozw +s#cW2ChZen@FYiYy83IlIC8S)h~71I=&<3)1mUAN~>JASjLA!+Kq|t~G +MK2DNXranRNZPmNqx%1M(~wyzr>)2uF4jj0fpMsJO@$AX=#aKqVS-Ic+jg?g*%AP6>9ZY`d>7B{mQo> +JjG-RMOC`0SA{-%5A|gF&~j!%e^5w8r8Qc?H6>GU(O|Swh;7S< +Qb?OO37`Ak-65#fqtNPq|*K}gq7dqa0Va=e +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 +E&r1EM +GT&yO*~B+b0iDx_Ptz08mQ<1QY-O00;nwCGAYIGG&8#1pol&4gdfg0001RX>c!Jc4cm4Z*nhid30}WY +%h0mX>?_BE^v9BS8Z?OHVppmU!k=KY~LkLn(GQISodv*4cP5~T`^!w0z_3cOS&O&D+lchl$GWu +c^7x%w@4nn(uZ@L#zrT=;>IYq@FPGPm8duA${mkexpUd(ht4@`skXMZF774d~XCH_XCsI0g_5x!A2C> +ty8P~2HDLoq|~0;LQ8r4Fq&A8U&{&~-q{I$UqJ5k +p_Bgl~#Nkdfm2-oRjzD$~oZH7fO$No-=spIY;P8`Rf!2K62arG!A-2tCBQ|PdHaiS^0HukfhW{E& +%q75SQol}ma9IwXq)LM%1Xzow<>LRkC?|{SC!b7eYn>{j;6nBu43M1u@Cf9E{pwC*KS8l>0{E3bFcu1500lcLDiDU;a)#4UbcSZR01 +TU3!!<*kseM=?v#$Z5h-vO5x!4vj&{Y +(9pICLN|EfR(7=iINS5K3$-!xLX#8ah^C|BP#P+QTe%sJLo?+eR>iUWaxj6}zKh-#$ +~XTW-1A2t8Xe%dlBjQE3vCnd!Bidh>*bxC(@slbZ$R*DBR1`dtdL1&)T&W_cY +KFB6{K;RlNimzGcavXMlTWM3muQmt*tVU=ZxioLW2ctR@CW>eAe<7b@AkJ|?~ZqBont|9jAqDQde^rC}2^hgfjqW%dpSz>VF!yPPp)Z8}R{g{N +^jfZOCDQ6qUV-ngy?NPxL8u)8_v29^EYl+nJ9ftpc(*tv8?R8`AyEYXz;W!IH@>v?#wFuXOFtkHiQxt +cm`}0Q`6i8Gx6g +o}qdEVPWr?THP&x4+ZtRc90!%Z7+!eLKl3KmDE`o1FNvZVs{-oxFkEOVUCc36!NPqcG8C-L +ly-SX4TF)_uTBuT?FfMBa3{NQ*m#lIoG;mdVY0%b7{r;)!Fj<#nlfVuCL#s+h`9z{^j!v6j79Uj_B?r +DS@?cztxs)F6;5fX*~isccb>0+dFCx;YqRZ(-I8R_a9FQ-si4 +EIJ^xUAE5fqo@3l;OFNAKfQQ~cP)h>@6aWAK2mnAs@k|}~>ycyz003(c001BW003}la4%nWWo~3|axZ +daadl;LbaO9XUukY>bYEXCaCxm)ZExE)5dO|zadkgf+7u>sinTE609~7|!O}EHyyinusI)}eY$Z`8si +a!b{q`M2N|s*|bij=Ut#Ib!G#&L-2<`3NeF~o=Vf!l`=; +3_zP;IR2S0LzWLaoFhaze7R>g8{kXUn{PShBvd>C7g@7VyY(p?E8^5v(Uf_Cz3gl2=0_Hh8G|TxU9`e +77;9@f>o6x>zrdan!@i)iv<2SosmkjC7%$2uAH2lfXGX!3@C4*B`cVAG`i#_7_N*d_2lsI?(UA3jU6i +0au{|JR2yb09V3L?630hJ?cUHi*0>L)l1s(%936v<70U|!8CvfZO=N+Q7%MhY6(@vJ3K+}fyX)E7<&x +EzWGQ->io^t8cs-g9Z&_CH(J%sh9sAdD&%1s+rPMwkjK@Caq6y~EZlH>k88-D+It`@~g$Wcj{F`Zr-$ +`?x=%QN;5cPa8Y3WF?t{`FHoEb#@jZwET8aVooXhY!-LS`!t(yX|0C!TWzF+~U!2VIr++;|EHpgD(6U +2v=vpD4VpvJ6t0R5{|wjF1Jf;2U`E!*)k_(1~IACzOy$BFkEd<;qMTNJ2cs(Nmb$@Fy<{G!Iu?n7=8R +WFp~(<`Z~PvIN~6)1#BaSFlY+TKPg8D~$TV%To-CBip%f*JZ+Vd-kI%nKWth;%_wFYvrce{ +{uXjupHnAN)<=+xs+8}ky-&V{kUZNgeB=wCGA%vuSf%EinzF-{{EYsaQb9i|t@Tm`-6lX)|;uBvx7+gW(az%ZH4^GCh+>%X!L-bt-xj{jNIC8`*p(;df!^FPNp!T;}IQ2@Vr?b_fMozWdk2=P_0rc +Io?A?EvRDy0iPxR4S}uH>ZQzw$??bk1A^8q4CI&|(J>-`ixEBAi@@=oP&Z+54p>-x3B|sKR9za|(aTj +G^k25h20iL+TJ7|hK54d$s@IvfPX)%E32g%}0}M3U%hba#bRf940Pk&=JylAowH3upr3%tk#9pJ%;RE +K)aRg63t_6MPL63&-va~BPxv2w!??*pEgtvx-RT}$sCht;tSI{A~*90^Bq1ra1sa*vAExNz0g?3JH`R +FNZN*K$0sG`t-`XF=)KliC)rV`C_eMVSXX51#RK2jH+ow?r#)nwer#} +f!##BE-Lo&#J0(BeMfw$e*4Wu9=@J{2J)QMg?3|tky^m#qK!KCACJDj4w +onhZ_vV5?d(8S#n9j6p5svFD1MZCSX +(z1I+=uhu>xMA8{!NOdRsIc55M4m-;#6uILNlAG~3s7i7@jBE^&at0XOwqUJQrYtuK`b@T(+(6=!K=i +_G{d5+4<=(F!-HPP+5+YBblnf1Lh3f@`;E+14L29c%M)@3)ozh3tq6SrzGE-Kg7f+Y2{0hHVc1b8bwZ{z|$|&|2^^7x)G8#_1*Zm2Hw?&GtD1uY~&da9! +SZGswc;(7^uD6^`& +jimXXWPSsr{-A$-hub0|XQR000O8Ktu6NQg?#20s#O3v;hDBBLDyZaA|NaUv_0~WN&gWa%FLKWpi|MF +JE7FWpZr;x<|4RZj6Dz}yn@CmSn8>Q9DA1Kxl^veJcmah20uMoXGxIvXe*< +7r#hX?&DqtRhV^#4fkS6t?b}jY7Flna#MI995A%6HqI8O5ojFGA3yuAYlT56bi1LS5&3+X5H|UPpH7J~5t=SGszPlqzkBY>sz#8EN2}`kvr)&|CG%xkL2|K#o0C;}N- +>`7yj;j7?A|%&;&8vr0#Hi>1QY-O00;nxCGAXzsX4n80ssI=1ONah0001RX>c!Jc4cm4Z*nhkW +pQ<7b98erUukZ1WpZv|Y+rSBX>4;YaCv1?!EW0y487|si0sg0NPOsNFwn!WbwdvWimf}licQzrY{{dj +roQakM@hERW;($9Hgee}LLG#y*u0xIKJ`5v4YpjUxOL(6cWpV;RZnz6xx5ul~L{O5KxtHVt} ++&xR*xgRR*(>w!DXpb4dh^8_QE +@ins=#T)sh>a$RRMp=tw@k8mH?$9E0iE*vd2QL4K4{4Yt6pvYO2^#s^Vhn?HL%n`ODV(!Mt4YF8?dBX +zzC+Jc6R1b6&}HSdA&NmJ9K_uzzg8ZpK=kjS9r-$>}uvW~(CBC#cTW*%eZijccmf|+LN1+<9M;CwlCN +SJ6W)>2l}RKP=Lq@0ghd-(X{)7>2eo0?+Ri?ULJPR3)gOq0H*6`hRrtZj{}1g|8Ur;o=4hMT#+6vW=+ +`8iQV$;jt&n3mYGdQFi!KCE~KbHDwnsvqnon~I!d_ONp&AhAStS6A1&s*5~i +N8cT>MV`p)e#+`$WBk(( +%f6j_oNQC*~|oPQr}@;qJhjNglb={eVM>8-jnVVffV^c3Ut7^d{YDFo~#D}@2_)7{j2Ew1EWO;j@@Fa;v* +4AD0i`5Ls>+yuy^6caY*U<;}OjF29P!fb(z-kkk-^6ug;K0S$Fzq@>MaTZ^n-2F6R;u9E|MHT-nHye? +}Xc)@LfCWDHqKZYP?3~i}6;KXr5?TPUft|+XVkOohmdiL3A`wYHAYNB1YceLd4KQH^zsKtnR*DovDJH +`**4u%-)r+bIBVzRhc6<(m$x2ztNAX53DodmMK{f-;9`)t8%HzLt&87fPMlDgEv@~<#ip<2yKzOtCX( +W2W8U>rM^X!qQGPy;var=`-zq`3GJ4c!r++tv}TqyDZMFs-^Hl>Aog$_MRA?Fd=`9^TBPXFVU7Sd*Xp +yX3ut!nI<B5V{ +QyAh$+nDYlG^PA*rTB(doxF)E`I@-%y0|6zl1sVZmC!p^{wA=*x(5Et1q`7`(*v8s)zcF;ud@W=UHAz>Y

    5C(7k*h^5Yj>GfU^i3neISvE_T +@&w7Z?$?O$5L=MfN}lzcIl*D>q_++W`uSbs6osj<#nQ@ELpNm>%D#&1;!fN5C!|ZEPCpg7Fp#?`uV6l +=OR%iGrs`inXwAvE&Oub8H#{kw-}$6i7x1%tD2ujBAy`AGf$h$>tPWt39AfA&EO?wpl1*lpU!(Ze^Mh +yt=G;3M>MSFF>_`7znp=Y|*VkiT$9zfTk%JAa;UOp8zd#knd9O+QOfobPo?}>C`j-_uIse}(OHZv5r0Hd(|&Ne2M=b)n4*w0hr#LFOmI|53%l`8tGrGV#w!rB4Oo +2;D|9nRXOw)LnrBJ@mRzPl+&7oEU_SGQdIL^hCyWM~i##Tv4q1$uo3Ko1D{B&BG(KQg$;PgDX`!tlq( +lp%l}{O +$VkoCEmE|CJslL089DtBSm;0jl3aAHt@y5q6{7~{0dw`S5oFFPibTod}4mAUy-KD$ZT{WGxLexHBgypOg|2k +enE?u~6He)T&Qx7z5F7hU*>|=C1p@2jMm}5H!l1{N7gosi%Fw!pP8$dKo@eXGE@~eMC)r(9;iSD;TXG +gU9LT3xDBNza&eJM0Uv(AjxKSLvxqRkv8wNN0;oGRI`d*1#LPk_qW?S%FLI<`o4+=M<}qM +yNFt%%$;*mSc5|g8ngC2D|{aCYYJ39UATPP$+#AFd>0o4km|?d}qT7EH?#l;Cp$3bpbZ?m^)N)wYv_u +>;-otzC$e(PLYwSnw+J4Jx?Iit}~+IL|b85;>sJjcz^(E?#9l2($y=L_Ku+yq*pwx$@$WjBZ|aEv4dOWP$yB|-03QqKfDn33slt%PJbl_=ZB>P<5R5_u0c@)0V-MnKn->rr7WXyA=yb@CA +V$(MoRC6JGs|j6FkIEfO~7E_7Ac4-`jGBoq0&>9kRjjOhVNm%LzdgMIx|;xN5B`FUd}=qGuu;3Tk1;x +Q+WqWxGLeaG_28I&yK}FHWRDhb(%&4LYk?nIE_j=g*#jKxR;M0F$Cjxpr^EtsmOyM+E!$Ctslo!ldBxV|HkNy)Hv0|^a#c!d!5|OSad*C(Y6QDG@;&|f;Dmk#a+Kye_nwkc)kTsD}^EQ;Nk8s(Y!(jC&6fF8HqnP +IHMKJGm1z`NsoMfYy+irm#CeL~|CT3`Hf#`p)mdvnEGedhi8=ODfl-f82aN#hjzL{Y`6nCb*vbiidw_ +Y)fATkJp69k5lcs%G>Ii|iCWT9)~LD{@i>IS?qRQw0XgP`&M;FB +|2@^fao2%Tx570Xc1a3OgLWLNFkr_?I5f2e9%dxJpbPf2%)NQYPEvqMw&6$@tAQ0bhrt|KL%` +iv>vujxn01)aw@gd%o5)En4!PwlBOEEAgDo!PUU%d5+?VPIf`8Oif!*7s#zDtkT+5lEI;!sXdQ5 +Ov)Ci(V?>I!l=fz0vo_AHoA6=JdwB_^>xMTT6TveupS>*@lF+BBTi3sAsDK9sBqOl_8+7Qvn~Rad2mL +_q#S`27U3q0Khlek442v4)Gi>iA_UY(>{Rzl^Z{{c#UJRL}MJgJ=|}+y1De~qw&oYR@mIhiF?#Q9hf{ +fM>LU$S9tqPB9c(Y!n3;-Osc2OKr5logEa}dE0h~QU-n%UE#(DZX97X7JFf5WIAKw%waEMJ07q@Wk5_HdHrpc +PoA$xi~!T%*>qdN8c}%dcZ^*;`RD)0!4o#oW^AX|RcH)W&Jtg;Ve?orIN}z&)a*zHLV9tDZ-390zbeq +QqeSREe@>YAhTWq0Zm%Ta*ao$!JJ@#=~71U>JZ)wvz-@S8SPSmm|e>PFt0Pp&2sf^dbd{A7rs23dH&#kz8`49?6dftr@zE+TtKN9R@BJJdTtnsx*8wrG>k3~IvU7|**_x*qBZ +%a4(S@a-?#-ai0m0VN$`nJiu=TRL$zA0jDoF=+jWT3wM0%{Fu}#?s{_QefhwKWqLUG3SJP1Z_D^rPRlJ2>$3onLQciKS@)1hp?a7?gKAn9*jEME#)~-Y|INM0Z_pELz0OI?w< +xnvVv)vtMJk{vqtjDsFw3r|!M^#Bpa)(Y_L_m@pgrNcNce&RpwixX$pqE%?zyQLJOS|HT$)ZCy@k2o*v$EknN+0$;~_KPXi|1 +dwRs;n|GCEe48(S4EB-q#rMSkuyHO_1 +D>#10(-gN9qEM%gGp|a~||BMb>Xl~c*7b@`o8B>FWci^GnUm(skr@sied-iKHBqWb{XkauBJ5K8Qw8G +|}y*X$3eL073@F-BTXwxq64+x`C88o1dP#E8({H$Uz?B=0VXDue9S@V0jKv0l*tFvs5o=-es=SY*j

    P6lUDS$jW0VsJPf2L!dA)foT9zGlOpRPaaW3ca9YmL#jd06WIpO5<8 +KOe=K2U+aH--<(R8ho24r@SrL6XdTsHTEF-C&<5pC#Uu+dplmINyl6DyKq?U=d5lohU&ubW_jHht&o- +GyQyd=3H6t9BgwX5QhyrDWaQr%Cl`;II!iR>sk^bos?Hv$&Vjzsl3|`Fbi_`@e-NFY4UeI0`_3^NbR4FB_U5&eYnpRt@^pSlm6gdQp{yX +H^2wr13gsbe*I>`Wkls52KXV>Wi6%W)RvUygr`*fl-R!$uyW;iCRXe5F+QQ2m$=7oouMz@yUg$F|rATh$$VN7rgkR2@=azDmG$F8x +PLV$oJv5oGSiB-@s3}>j8vg#Y;LRR3=_OfP(ePcE76mXtz +QF(~KT;#-{l;cE`rX2N^Ayh2AqT?g9!LO?QQ8Q&)P^qkY6P^ywAX(5HNmo0u=qp4#J3ijo7^;|HTbCB +M!SGA+RlKP%I>T{UUs0qt4bP6PQcPId>L(!~wca}R_luULssqZEvX9FO0>oPJQp#?4V{*R+Pg%!hv~{ ++12*9WK8K-1g989IM9%Cmcc!vk>NB)^-@Qj)238-6zfp?vKEO>n9N2jJ=Hh?GG5{lm85`R%P!Pbk=t3pq{oP#xA3!Iy70w6L%1jI`2E_-;{duj-1O>R!^#mV)yy4cAHd|z-El+Bi+L +)?cm(kWvS;cv0@6jPT1Sg%zlf2CXXVn{vl1cJu~R;fVaQH!B5EP1P6Cnr`Q%|)*+tgKq9u1l{(`p@_7 +nYiD5GggxHwZ;TsoP<=P%tkmgX*phBoJSH-a{7Nj!s=p#bni>l@+vu_d#!?P?`$AV#*q@@}$&>}kWUT +$Tcz>g?~9a9usw4_&|+zu3)gz8|hz +mJZi<0+UO!46;k>BWnXr*HLLHY;~uKi1=gJhEs+M`9OEc5T>uc~@_zU_;9ClU9eUEy}3owEqE6O9KQH0000806; +_WOde#Ac`60~0CgAu02=@R0B~t=FJE?LZe(wAFLGsZb!BsOb1z|VX)bVi?N{G#+cpq>_g`^nA8ZGT-D +P_igeE|mcuTq<32Fy>Xp4%L&NdrKbV(|nJ8XaZ?np|BoHS{-0^5Qbuq{aBcR#-Gj;E)vy|oRg%49i@p +|Z2>ANfwF^W@2sj>Zoa8fyk(DLa4O_;fmxg)~s8tjZB&vCOf+(i*S}gjZn~?4KVGI-NLG%e9vCg^i(? +_F?DQcRMg$!!KBtXcx3x+K+=yoXZqTgE8zcMY_P92n-^e93PBM$0L|2P3AO0hE~Yj44i|VnN|f1*aM| +4Z7@cv(sVkV3}+DB?-gW5Wf4?5k6>%-awYWK^y3cDhfoe^ht*X|9*Z&~kTRnyh|^pc6DJ`YcpfhH5(< +j9#!I0^0UkXL|ISg)LW!$Qhy>L1J*IYWb2~W|!^NwUFW%^W4dqlVEd?#|J{-!_UFtOu*mP}?7*Q}q4$ +6WoodJTR1r#z--dNqV*fNy~EABCrOG=NLfvrdf29o4;?-JJ$T#3BG{@Wyh-b&^<`$6W4Z7fM|nDry?V +#F9Tnd5dYFEND5elrub(^HkLosEZleQ#9R@^v3xj?YdBOiPi=k77!SJzo=7p>CrP&y1$N_WR<^w%!(5UBN%DJZiDUkcB=dl)KW1D0_Pn#NN8!aJ-$}ZZqQn7wqerPY{hKuEeFftt;$~g&Xc;KA#!sgX2JSz)Sm2E*Ds +TCBWq=tj!bmq!nC8TY7dnbceRgD<%L)-IiHfg7OyZMHS{=&8Yy%QOisp-qP +B7-Q(-Ys?JMgJ69tLV_m8Epi#9Bk037VYv??>N>dN4~`Sr1qEfhs7R>__5Cy^WECcyq`G)o#DuIsu!= +44S2HRO4|hD@zWZhn}x`#XiV2|o@2aulv0Ob%%-8JU;+Cea%#vFH!rcm@-eX9T@2Kc!yPrDM0-r|nV) +TN-Vp={&qX4}!#MzbxCk3qUNJP2U%kwaJQqgHF^)SS#d~{u_2^Y^xbcK;!R|FuJ&kp#9@y7~waa) +oX0bi_{vSryH(PH)WHFotYb1?%Rll!Lqfe3$9-XyTT%!5v#naNRcV}SGX1)vcx*P4B%7a^yFNHvN +Q$AcI;aw&$=>Kjr?XzoocfI%AAh?8ZI(=o9A7AQ2Lc5!nkV!zIWq)^R<_6IOqO0T0|XQR000O8Ktu6Ne(nv-a0 +>tc;3oh88~^|SaA|NaUv_0~WN&gWa%FLKWpi|MFJX0bXfAMh5DfR7omMHthcP`#wG-O19(lhC>f`-jK@T_kNS~9vMCyl8Kn|Vt!02JsUp5H@#lJ +-|tEGwPH%ElvaAt`)By+^)44&k)@bcIRpGcQ(h>d7mOeR=_%|$^Lw3y~hDl!w2TzHCxevdCpAvF= +oKS}1FG+)-w3#t}5AJPH4m@4-4F>#CIr;k|y3Np8vPQ?CEv{MCqTGTpGGtQ@q!*wZlfB-Hcj +uR9=a<>#-`}5Qzr4G6oBew6=Is2%yVJ8%G9nQz%iI}x|7N&at%hLX> +}8c}4qWxV!J1M{qh7B!Wiyh25%?rSKcd8OrBJCQn5d*mt%RH=$2|fc@Zkm1l?2CA@-rfl6F?$X&D6LU +;r2-X6*#E?YeR?#QdSxe#(X{$c?7|;Ttd7Mh!rhLB4&i6kEwRJiry;o9sWSbjoE@;b5ThGU#8V^OvXT +N#Yn-})KHfU1ioet9f*zDgn|;JWTJ#MGY48>d{wR?HI`U +dV)MMmB+)S<@45y0N@Zw{hbA9XZG4w%r2vL&rD@FiGrNm^=isv~92m&p|H7EeIen=1CKZD9=q!19R3X +)6HV!{GvG@7I<%+@7y?!r-)a!b(Eu!@STHKdtb#yeh)u5rpLS`KQjBx9RB1oO +c&55GR5EBmLc*}Qkhh~#27zMJ=Wo_%4Pa6~c`A@HVJalOE$;Cd^5@*+sr(PSr!FOb$~~Tnb5Bjw<=t> +d&Wb5m337|(@U?c^#*6|Ifv*DB`^VH));P*Ru;MUEHqmQBpiM83)jw{bhm{v_u}s^l8j(k9U8ISgy2H +ie=r~Hh2wudSiguEuh+4+hJdT+(72NZL7BI;H!4z^}&SLBArsDr>BFey+qD&z`5g9ufxELzAaT?TSCP +7+)&93eQroChnz{#>$v3xclp@}5rK>S?jSDqG|o=GWW9GS+lfUXNeN2Rc)6C^_+tWva_6Z_@m<$Gf@g +pa)vjr1p4(+N~_0~qwIU|@k5#;~4)@O6T@kWV{`@Pg}Fk*#eKKM0a;h^RKeh7bwav9C2V0V1|6=e(Hb +@uyZobr_GxoPmQNR}6&#iTqkL0K*sEa@i4U9o?^a^cwqf5{h21U7}+lMF3=CK<*bYsU4TpClet;^52X +Xqt9T&?jX~$#h|TQ(v?THV(PsVH@7CHS`oG_unhQyz@qmGtNUncI1K-zI-l}6$at?rvY`LvndAZX$ZN +(*sLs%9u!)sS4(*--+AP=}R)nPU4#muZWEN!9>_SrWCJw^gC<9bIis58*3-s87)}*j!Iysa<<22{LK} +Y_AHBLY~38br0-Pi%!B9n^i;z3>_u_$1-S&tOKK$%Nfv0b1L7dk79OwgF3UEl^1_DNNN3=VdIPZq|iz +yGlduoMd5u-5F9pju{+4-QQ_)i|}2#ud+}u;aqOb$c!seoF>P1??MlQh@<6VEyy4)VC!&#s=S75AuoT +OB_lzEBYxi0MX|f!P|8!f&mB+zQR^%D|iZ3I*tG&YEqo$FjsNCxI-+9Rs#meqNI?$yD%+OfQB1)*bC2 +|wXE+#xDg0qA6MJKnuP*KZ%>~z5yx_M7jXTY!l(>hO@f@u>2f@!uwPZGg7RVA?~XB)+2Pp@Iiw)912g +VPb9T-0Q1+0YlMct@_1D7>XCFR9ZDBF`meVK3F!4<%M;(J;p1kP}lHunD^u4LaNOOJ@*x!F#d3Wb1DK +H1V&`WNt{&5>4^qQA5u>HFFA6}kpP*E-D_frv=AKq6-FX%2EheuDIZq^ePzN@Oh{~MI`((csv$>Gsve +PQ9d>I?k8L0>OzQ+;0J0h%oZL=DLFxIu~g57hAk)h7=~j7v$~!;Q0wRtZm4~94CiZ(2bSh|Hv4+J*1lExOG-NIjZpuvTx +VOJ#f}b!>94<$zc+#9kthv+Fo|ucw@V3#-N?URX75HSq|@LU^@q>2DzAA)7&)U=)u9W8??dQ*v%a4j! +EtYPqrqcLM;sB-5_{&pHA>^yn~ofX(eef70dWp;DU)ChvHT}SFM!)bbR>qa}v7ke(kp#80}Dm)q&M<; +KWF}v7vGJ>gK&FZ3e$SwIqTv;;2E;B}othK+6nqc$5$OCNn^|C&*k_N>!P27^?=|Io=Q)o58*Bg+Ffi +trbuwfD0V2*T8WzlC^M>9lCk`$sGZ0i=MswG3P@=Ug&gpvD~%sF#mRItE+1`uHlsiY@*y`r%au**C8; +;iJzK7Gd#u`HOC(#uw>tr9`|fmxo4=W?kOVw=o&ae6Ny4u;5#asvpZI*fwyZbg6#y|wxp31tLnfl*Ie +w^jWhLD5;a6krG66Hs^goO_A*D@qPhP6>2Ljr9)89h)wA{+B{LNy6@Rwig7cjDl(7O4jta2 +s}+WK%BLMEjGJ0eSckZ)xVLy|24qifPi`E}BxvBwi4CGAa%CfS{yIxvH7$uIHWY=;4~Yu)0gs`uUPxF +%=xI_z)yOifD;fmexr_wDiDKF2*1Y(#Dp48(ZJ=UN|C~H?@1@)vVzILkE_^$2TzHO@(rx%>@6RE?sxjWZ?t5;{1BcBRQ~N*s_~TJ%UPJ!ifIJ_8rSX)cQW<74c}|`j9Q+&h4iTCYuYlv0;|8b +d`nb18F4&3}w(`t4R5}3X=IjgJ;xQQ1bTKo_V=*;XhAX^6>`>u&hi$G#@$S;mbLQ#P%+$X|dZ}XUYEw +H0F@jEOP6NrPIX<-8b-XeTF6;3GIEvcMF0wIXI+7)m=3<3=Y7=KWt^S-G9rwP?QIEQw!pnM)otcY!uy +HJ%R9H)9Ii0H!EWY~d`MZm=7bhRil3o1VQPbL$dkmaXRgL2a2wQCjwhoLA!y&->>;+^29wFdwAMpAb? +ID@Ha5EQelFxYooB*JJ`T#-Ep@8SXIhd2+Wp=?<-s3h7Do01*F(*V`Hx3-%?%Q0zE}?CLQnJ!`--pgb +l(!w2&A)4i5jFKM2Mr1HNLTB8Qv5?D^Ehn^9V42xJI?Qo?>3#&txY(FQoRwtFRhIdellrn(0C)oOf&K +Y#kPZzE;t?r-=?%I5n8SRc%O|7+uo)clgT^Bo9%U~U88o~4M26S&yT|+ZF9UF)c>|9n~$oKcFkWw9jD +jOS|AwlHwtcyQCGY)Aqvv(sG{38O?O`3Y<0h^T`k*w*4-WH*7IX&>!)UU9%##MCal!tL_-4|SDKl-$8 +O1gWv{&_nCMX3+czaJZ{k(CN#CjM#lH57SvUW2T$K!e%u;XQO&_49mkiBMMeKFS02>SLSrDm1rrmd3x +2fqGHT_is*O4MP>uAv-a=un!?sxQ#2{4Bofe6CO*|;8sBe#EVMw{fDk^E?td|Ue5nLqz$cc}jYP)h>@ +6aWAK2mpvB?M#BQqR%b?007Ye0012T003}la4%nWWo~3|axZdaadl;LbaO9bWpZ?LE^v8Okg-n0Fc3t +0f5mVVcc8mmi;%8BR7g~a-txuk%Zg+j);5p^@ezC>UqX@#1zW90n(@57yx5nd`yuheww30naHbA +4}#anDx%dnB~oQ3)UzdN#4$(wG-5hlM~IKj|eP$_6598jW<`waUmX)67^0;tadO6ImKmI_zq7f?$B1QY-O00;m;L-9-%rId={0ssK +c2LJ#b0001RX>c!Jc4cm4Z*nhkWpQ<7b98erV{dJ6VRSBVd8JfKPa821zWY~<;6PFZt4c0aB-8`#fdi +!ytvFQG%GsSH2FEsj0DI|g@7VhcgjTexm3AKA%+BMpkKy#)DU_y?db5NW)~6qmg|VZfBj)fvq7R;zW@ +klUzxE%-zHOz4ovETi*a}@K^dNWExByLvTuCKE4bpqc1S<@Wh#J1uVQVzZfnr#zEO`DWTRXD@D=jY`P +*=wF3Ae&k7#M4HUwg)m;k0>3YV!Dzjl}C(2k`_xZiM5EQaU(Gp`0WyjV`2K8v-u-n)uU4CVgS+IUy%0 +;>Y`+aCQds=@_@@af@fTMZ&=s6L1MPc=CWigDAIHfr(T$m9OyDQwkq#?nLU;FAb*@(IdzJ)*&??QZLO +D?Z%0;qj5aFH&(0Y)Yp0ZzX_w@99A6pQo;IPcxu3#(mI@ +AAM`eH*XX^8GjhQvX6VCYweAkjFhd|swCluA+mYjS9$};R!s}3e*qM8NH*ujbq35>0YH)xU}u2) +=tkAL_Ns2M(QkhOVi3yg=;4^&%2&?sd8+w4Z#*l`oKnvD2=(3NZ=v(JexYerJ-0gc&~#a(p_A2{!Skd +rBMpYKu4)R`sYF^u~Jn3rLdOpB*c&`tOVaA|NaUv_0~WN&gWa%FLKW +pi|MFJo_SYiVV3E^v9>Ty1aT$dUf;U(x4*L26FsCb=((0wcG(Np9zECp(yUZn2mQB${m798;vyO;3s>wdc{hvuefo8f?Tq!@Z}BSm@B($`T-vElJ;b5ndx-~P8$8?kSOd*P-y^RtaZ(`wOdcfA_4xK; +gD+)E{wLKEexRPuIgdA#XW(0b4K7c66Uu-}JfE8X+5m0ew`voj)Eteb9-sw>-dI3=ul-2qRJa;*miax +uLtVpX^~3`P*1L&UUY4iQ+$#pDMW<#4CFKJEeLRb +*#tj_ON!{MX7_aXJ=JgY7Mhi4{uqJd4Ka!R>OjcfPB7Js6{%zN +9&&NS#<-{}T5{I*v>v~6JwZUd6Vc{;fVoh^ZDEgl;X>YW_c@NjJ&=8FxjiKMhs5(neJtpGJq{Z2LIAa +Uj&`jLpj!y8begV>j_2qMS47>XN|*DVOE2EnxbzOb9ltU{YugSt1vdYyw>-YzY}Mm_L@&x^GZSGFx_3 +DysN{_@wjc{uDOJhsM=8)^kSSQNSf-lSg(t{(?buV4uviBWZ)U_9c!2d$nTF+Xi5hqkX`BD~{kVDS_^ +BID*<#3aD`fXh&AI`)P54%EexVErRik(n0n-hL|@)=Kb+O5B%qmkp@H^z55HkoOCtJnjJu?E1m(P+@i +f7no-_G7DCba>2p~XuqOW97NsJG<`FmHh`;>k6^8AEMTRu?m>+eFOO{-w2KYQQA6>-uBR?DPgeS#SNU +NnWXHkgDx+YNEgUJ@zxtR81?zvCtPLd#&Twy62|UcGhjGmL`$$kcsnO3Rv9q)f!Q0;lKUBHZ?kCuXIx +Oc%-Kz3#3!cKYeF(It(d)5$l&ZOHFen^RzH2oGntxwvV|K=JyK*b1gYYT(+C=i;;gY7nj1%)pCn29wj +_q*uhrXMca!wt2++?Pp&Cpx~Vkzr7p8Y`{mg2E&gE_&Mxu}CO0fP{&ylWu9gRdl;R;354MC$4<$*QDh{ +Rm&JL)<6Ngu+`#cDCmuNv<9qD)0c?bN#@iQ$mlIBHy8r);5l5=w;K)5gM~POd&WmFNKhx=^-H+1!91k +8LBzDWkA=3RY>=533bAA2hwbUAL${b26U{{;&wufI9Cly7pzb}X1h_6cB0OD*xlff_bpkU~%jF&^YPN +@iAVk5)_kfw_o4o>XLLx8ygq}9U^qPu-M;G5ZElX_h~fGS5qAu|eRgIN#@8UFCIB5!CZu7JRdywLLiz +-#-ve$YHH5s6rOM%-!%|DP +b6%r<$HM~j8SJ<1jySLfDLOE1WNqXObF9P+=pYnOyfBrrVA;&J0{{pjG{`Mbc?t)Ch7*?BjR;9F0AtG*$ga#Z+D&8p(Fx9rt-j;=K^ +=-j8*w11q1Dz&f)FXHS5Nx;M)mawnHpqOLHZ%0&?gw!ne1L;Dn!iMWD*h(uy@1>R(BNw_!W+eCR3+Gi +>zUwjF)b7*ciDgCdm{7VP0=$MWE!i2S92_-5l0v%{l)hVHh|yUK?D!OFwDbftEJH;JD(=yJ{u)j>QsH^SiuT6p@Ii6$2{j$NLZTj1x^-0VtB=!kYsaoyl$q?)}F +VEi+CF05?OXIm&PlFBuntHjBK|>dj*yW2o|jr|BWv6KeF()54!mQ1UV;&}zFn&!dGbLt4v_bqg#}Vzw +`LvN+h&_KR>5HG4B1=^+H~ +MP0X=(h@?zT7@`3Uuth4Y(-q>&w)N7W(w)g(_Pu%_QW(NarR=8v6w?AU0iocrsYxI8P=b)CuD03unjd +(5S=_NAZ8qP2|0Zan4cKgc-?TD#YGm=QYa2qIO5Tkv>}Q}Cl)|w>!k1lBJ%B}mzBzymcvy87NRffnBw>U$wN^2P6(SF@mr>oEu*Y>DPF#O*rPm;?T-GJ-kmv7zi_T4uyE#JWPD=15O_l +{oaU~>Dh8Ts$x)a@6QKoqf_shasl4Z)Q)C=$4lHMeU;HRr81o35@Ikg%%kOPiX(;{GOsgnR;V40&MV(!^f9O`V+enche_on(mU75C?Au-h(b-}0O1RE4A +(`T)*icAVlHp|=rTn7fE8;gQIo-nkr1(jvk*K$a52a&!sJ=qijgIDPnp2afikH8W_jM9_Whw( +0DZO#j9?Pz2+fwWf!#w~K#?|C;O!(TBjndE1rPFerRVE{gK$oz6ZQ}Hd7~c&H$@%mFIVQOw*97uSZNM +aVD5!7^w%KL;&sPAS`WxJWxDEaol5yu?E}L0LgC|kWbWX%T)s4>=0u4JR0&e_K0wA}O3~x!eWPVqcsE70o4#*nHTkF1qO^#Uw4Ttf@ +Er3W);pF0*LD>FRlJNrVA?O?Bi`n*JA`#X@-B>2pOdm(mk*fIlcNXtHxg=w@5eI%Ivlr-ao2{2;XSzF +H?gM*JSMrSFf2x8pn&^7kBy>3NIkRju1qr7d7lYKmouKd`T1lUbFT=b1dfu`fvYPcpJ@%B#@kw8GMXO +4*x2guvzYN!j<5GYh{H3`D99zs<41+(VOV8E1$1X($wAQ3jCO?Fcp9_#oO@A3gt=5`37E8YreZidQGD +{hUV}zs7&^AzD0YXv7iQZhm7=IXbbYTNOebrl0zl-tux1Fl+J$*65yRCK;#J3*T$Nh-8xgj&MWf{>tN +}EGsf(D{fXQBbuK45X5zi?3tG9umqoBj+#wS#joTD9dt^^nWIUOT +hz9gAz>iPQ6h9Ed71>_mKg$Ud#ias^7;9Ea*}&Bcam%RJsY4+M;i*yfN1k$@nh?tlWGGs(xp0E(9bhu +;_5;*oAT_8YpntA;ebwWIg$)6vH3u|zOa+hNd&PMw$m4eG2tls+1g?`|(SF1$T<9w +H9Kt(yw)bzO)VO`xAINyMw29$uKL()R4w!?wM{?n`B#IwSiprs4cuBismk*vQNyq*H8ytF0vmv&khWy +*wCW_p$8f5Y-%&1RpN0689O0D@ig1w}0bUOU7#n0W2$gYo1=TeEK2s}Y@S`>bQ9gM&dFt*3c1WXvLwH +rp#7bIfLGw(+0k>d-#{5E`Tb+zITmN9TOF{j8Jo2<;={|}`wE>WCEkA9R}bN>KS#6J^}9TC7bIKgHv>?yXOe`4ye_%NPt0<}s>QW5Pq^vH+HD;%8l8Yc +Y6?f;%MkXhtb$|}zCA)xK2|rRqa(o%y|(bPizuWcRp +BTyYBs&vNDO?YyC$?luX9(c)+Z&veaYzBNk5rg`Sxt(grr4wH|`LAD`APTqF3*&N;f%aCT6e!URi%M4 +spEz1@|BVX?C{DNU;Celvlqbp?InC5AM;5u-pRgf6jNzUw6AX8Vu=PDoVU0%~@FA>tSIC@1F18w)G6Q +E#|sjfuX$Yk%vZd~>63hX +FI@K(OUpgPYaEPIeeIURM3x1;FkEC`1W&ZAMkTMPEbgDmPrC-zm=bJsRjT?5>xuqp)o-z^ob)wM@rAa +e1?Ub}f62ZXh8@1xmaWK`{u*?+t$y+IpZ&_L$@saOvZm`YS5$#A8X_*~7fW+t&CzuAx+)dwd=~56Lfq +k9xz4?V_8<@YUe&H(uUFziXGt`^KJ555W{yNJ_;AlmXrnDJ$9lZ*0tmOf&v3KWPJ1&fJLB0)9=2y6;x +W9Nr$(8pGV|l`rH!U+*L6S8$aGLtT`ICt-Qv2#`WM6)an)IR{W;AU?4_U4@=pf{b0d29og%yJ`^V7Y5ZPj@XNwd|q+3A_0~j&PTkgd5-8MefA#p$wxFeBF*07A{_JWB5L~NcD_hPA<-#~TN*N|RL`YxtUEb(~8S=y +1-ET%5e{7pPGk1OyE!`Rtcf@~ru{q@u_+QIm42_92sAC9`o)S*Xm;AfE-IEa{KC$YqaAv@gs2D^vwXk +wGKV%{zY>}!n6d{Alt6@Fj(4yKBN_Z0V-_fZ(}*8bKVe|q%7)n4?>UvM(!58&c=nSvQt;5 +I77#Lg-A$d3fwQB|@)71+|SY{c|LPFMoz_T@8Ii!*LhUcy-I?&PxUxm;sog`=nZ7Pi_49j7eqX9(|jR +aYPerz!aR9y20Gqv#0^w>)z@l65umPD{qX$`~)5A}>dp-q+MYIs-C +;`T4ci#a!6(Ky@qCopdimxmHUkK&fBWb)Xf2@Z-aMB3K`LDKF5$;BAc^6ZCxr2nS|U9cdw6YI;o3QlI!OEUJwyf)8yok%Af5$}EiPP`8yvkcToEC5+9cmBuOqVE)t9 +X*66%T@ioKBE2CZV>-d)>^ISP7jjRhKEbWET4t$Q_(1TgSV+(W%d!#f_tgR`bQdPQmK`o6VEU +T?W3ENyzO1aRopap`Rsck@NS0;_HNqCUBhQ&f@q(c~ +B=+f9kp-2(t)@V(YqiJWsdaV_xhm1r{zOu={o>vMPtg)6K5c +f-t?*gSyUeqjG&EaP6p--;SQ(#(xEtE6H_Klm=9ISDTOG@;!A?whL?OHQK8vBUGy!IJWOEeHNKlII2$Lm&u@s{nA#u_s=* +lIZC>kVly|zh>74W4{+>WW;O@*C2*4HtR(04Ze2hiTCg{-cJq3NiQ_QpBeP%D@t02b+J3}%6?hpB_!5 +vt*wFLYXPmyRi1mI{KFJB|wALw6z5Ik%#>wexh-V}nxYpfDSi!8&9&Fc58Vt +F#oW0zVsh7PhlTt_ryla-~E(FSj}Bp4~RkWG^d14y+&GA7M3pc86C;*M69^|9eWV6s<`Z4XYJrbeFM; +a5}uNl;Q(bF5(^F&)^GIWKn|iI^y~SYd$f!0;WRE{Y?qstLMu$U5&T}yCslF>6a=*(d$ZSVRulV-uQf +6TbxP~$nj|jcWZ*ZvNe^5&U1QY-O00;m;L-9 +;;_(Wc91ONb44gdfg0001RX>c!Jc4cm4Z*nhkWpQ<7b98erXk~10E^v9ZS6gf2MihS6uQ>G*WP_`Rl( +rD?OP6#>=-MXP?Mo>_md5rZ(u_JYN+K5j_nx`QBUv^nZA}tKGv|Ege$iwy`OJ%^B#?8aGRi31!KT@PA +T<{X_N1(dn95l)nM|Us;1#6lwo#2BX$rJ5M75wy;VH`%{Pf})T%SGj%Wh=XXWf@uIn$}7B +LRi6tho%L~&R#a6Ea~Qlv-kNv69rKYJ@LmWk_m~Lq6L{mOaE$!RMMYDkrM4q1o#;OCr)Cboh9g|b3n^ +$!n7geEhn{tJ9B<31Q!;mqksi0IV0w9g-4H%zlBG+XluoHBCGeUKPROm7R8BkeBn{Z7e!G)wvgggNh* +S2)nS>=EC$B$fnfX?WKhst!7EjJPKlx2v6da*K@I;6$=m85qFShIaEZV+Fyk#byscJ_PF<13k%pBS!Siv0t{)NNPFlx=xZWlvnpJFItp&R|jYA7bT#&yF^3&(H +}{l1$>C7gEA^X!Dk`tPH$!*+X&i#3`Hpaia7%%lsW$^q~H{9Lf8CpD6$z;3L;;iohpq%krYcW1;;&Qh +ndO?DnthnekT^+cL7<>DZb2e7*KG4ta3>TgM`3+Mfs`B2&bii^@7d_kt{#*NN`|-3ZekZ@39BYW%Gi) +flrtkqY(c9AriQcIbgvSs2U|+Dd +xxHeH$6fV#`WwKh*rr?ABG7LZYURBup<~CC8i+*mQA3f9`f<5=LcL9-vz1(FM*k_4=`?0H}lCG#jODsgkZzDPJY +s>EL3KlwiDTAb86QHK-Ngy0@E&kwft^v4y*_`>eeM-bpFLjqT{$MQWP2vSi~4O2Pv3?`WNhfm1h% +D-sf_1TgfzKjG_)TOAI4i&zu1=C@TVN~t+=1t6GrJf1lq`()Q`^VL?8xV$as$bEPqN!>*wc`eN0vsdh +Gil}Gi)e5Sr>wxRF0N;|CPtW9X{rYszB=gvoTge2EF!CjRVw-$P)h>@6aWAK2mpvB?M!*vqsn>#0093 +20012T003}la4%nWWo~3|axZdaadl;LbaO9gZ*OaJE^v8mQNe11KoGs}R}9HP4T9==w)tIy$(A77-H*cPESS?nNt3t>sfzFnzCxajn$Juj1^b{UA${-=I4Y_FRjsbT0$Xm8-{p6X_v6uN8Yx71tGzUMvTp2 +n{Lu%@*?_$m29qb!*P%>Ew_2?Cxs`xF8kg3BP+P&OIR#UUtCva@Il@;1C2uC{!8ylD9N=`C$JLa2wH( +T&7?Ub6uYIJKp*RRILWc!Jc4cm4Z*nhkWpQ<7b98erZEs{{Y;!JfdF?&@bKAI;zx%Ji*^?9H%8V25Zc}ZQHqA%Z?QW8Zo +!gnF8HpAln`??xNy?79v-h{(`vM4nq(82mxpw9}vm1#79)O33_x+$fb+CV+mSvh1=To(9RtL}U$&tt<7x0Hq; +zvh}8{8kHuEZnCvD-|L%tXJ=0x^EX}a3{_EHPgGN?y1vkbs+*)plPXntc2?mEV1dvxQGYppKLN<~c6p%^diHvKrqfiX>itb~Q5 +LZ}(OO+J&8D6{etZriZqMRnxqfW0*nY_B8a_Ne`uf+;VzXeg#5&H>BH7tlRpnZ3vQ0d{(nVTU@wUogP +Dk-7(>bg`x(PPl;KSScFlaC7}-sW(kl7Ivo5 +j)K2e8b>CCPhj#%dJ3CfZX0>>zABq?S?2Qf`*N8ekoPzsJsS&VveLl)Sk&7Me$wf?jjpIYw}~%cckTG +8UL~;JIX#pHbyIDZ&9>6E)yt&T$3?A+I%~2k{VH2FGGd%;n+wzIyVKM6e@Nv;;0ChA-_bABQABYfZ7n1|3@pba4qM;7e-0CWTtbF#e9>tv#ii>oBh(vKg$pQx7?+u~BEuZ +5_%1NDCi$5a;$?Sp-TPYXDxFq}L%Y2c`=;c>lP0~|&@&upFngsMpLInsokUQ^DC1aUS8tODeT+7=m+S +ys=JdYNU?-|NMTItLoA=SZbRvet|yL^q=jXlkPH@RSWwUB(NkX@>KZ2x<;nxPi&Sdma?I#Qaj<%mF9! +JgWisOtp-5cvM{03@C%u%xmBmx}L~PeyYm?R=1kKdEa1bT}%|9d3kC26RNZ3W^6Zqy-6B>RWFk~PtJ0 +f%MZzBgD9cLywz|@07F&2Eoff!xdyJ)&?i2i6I|p(o!vCr%(b3xZl2;?fJbR)d$!Hs3>R~52*k_C@1G +Vf3z-)_&Gi@jY7auvZ0k7=>JTt|0VX_Er@+x`-KcU!eN_SjY@2col(2;5-(dGmRR +V5nL_WuZ};wet9}SIel?@tY(5V0ty1>N~aU$|Lv)x!zWIoRkh+r!AHP4H+hu)!{KN4nEbHiS=jFS%r?20h&R>4_@$H}I +C&zzz4bPt(s(tw1)30`pPhWrV-+le$>CVp1GEeH-aCmc+f5^UMMZ|J-Jf-RV9uN$ZYi{Tp@HrrLI6FW +_QLXcpw8B4-xPJhGNm)iiBL&<79dM8ng +>8AvMBt(KY)HBnK^+Qwsl`(z(TA2H8>U#`?eQYTGQ34{?UbEE%d-}#)_{=D121|@+>-+c}WlDeF +zE84?Aw1ivVzwE2pW6-#1crwhq@b%!V%pVL7GrOukci!Usu5fNwb$?fw%oXl8j`_AMbbqTB1?G?pHp9 +Q@GG-c$Mr1mS#=)X5Nra7I3qaYvoZJdbUEKlf$^~{c9`|j$m7NhUW1`Zs)_GRr2r?$g%N69 +Sy&okX;Ev_h#elAFTJQ`}Kj(+Zyx{(c9{=&!U|5MR+m@$stQfGN8BrO7bn6Akpp{+KM#*##4Fq%8Ud#Tqa=!Z;wZLnp|9s+4|*KSKI`LDh`pbG89R+}HQl!STpG8n;Q@gMW|-v +2adnRTK{^kfQ1%+ ++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 +Di~1c*kW3p0r@A)m#6@3VEo^FB5%N~Mj +cY;4W04@uVeyAqv9{za%L=i^)AWg14{rdo*MzjsVbwr=}*nvKvjfpGzwxn?zxai0j<8ElrX|bH!=FC0 +(RQ}LGf!QdwPlvL43J_d0jvm$j`KTtFSkT_W3bUE|@{$akwpUoC;gm*2ZADS^$OQs|C3kB-P=W* +Z_X?3TL0b)EfY=js;&Aki|V}o}cNv*NoQ-K$GTVWCuJWNqq4EsPaH%7*hs9hJSpk5ObwpuIN6NdE)oG +VNn>1KHLmVt@8YTP~bl$cDQZ2YdvavThN>d-HO7=OmRJcQES5At&HW^{aAce(zYy&+!(m85vP15yVUY +$CttmYs-J)L@|?CNSYA#{|Qq3}D$4Rc)!}w%ndyzyr_#b5jcz2kx~dD@M2lpjozn`n<+Lx?Agj72-fq +K~YcC*(u67=#1D?Qmje`C_|Ja%v&4>uoU;Ir=yy{#p!mvsRKBYaUupS?_Pd0pD(T +uV0EJebyJq;k8$*o*IMx7RP*udBHzpDV8&soobor6l`NnM1;aeLo^uf{+q$;g#O +VT>EFq3}Xw>LDA2Hh=-=55lJ_9ffI99dXf{jpc3UwRo5EZ>*r$U#xiF=uRGNi|YDS~D}r9q=d4>EzHQ +hLo9ggqc6qGAd?!v?*&JpT2^ScnD@2~n53n%z5oCwukogiDo&GW}_FX|`HvL{648#+xD`6=S;as^R20 +ZVMk0pdtZWq-w!)Tk!1zT%ZF>Bm>AI&LosQVBPGJi^d)L=t-Z)Kej4>m*V9I8il&lZAT+6=7zb#7@7D +pIBNuT@b$K#z%pVp-`2pUJhMYaWfJdEmtEO4lIrq<@2T|&rIu5n95ImlXgxmIQ_RwUJv%T_e}X((a+Q +0_6}zzZ)DM_vctDAUM7*4BSjYE7Yt+q+9*1gUw;JpoE0nyeeoA!%2Yq#>y`AnTIYR629u<`CU!Sz?Yd +2i6&;!MjYF`enudfd%QPY<0r6ZsEg2*2OV^X5s35a!1y+~6t=m8Cim}%5?LLLlLT|$92DcuT*!J9H3m +uTby9Qk?a9TnJ{dFODTtRVvS6YjlEjsWgzd;tzv_ajX7X?n^(lt#Tp%1BY?GI3vt%iwAeR!|;C6B-mh +J#vwAb=1&Y`czCl*RCWoH) +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 +$@>MTkd2ixZ +C}#DYc}Q#>|mB*ss{tG0r3%8^-_ZtWp% +(0#mAJYVWlePf3VF@MwLs|#bBv^LuWHBF`h{9M+Eb;zr$z3#v`%;=UYnqe9D&H%wkX0t +ytFkysWO>bZ1hYuy*pa1tIIs4*gg4ZAWt^&jVwlu*inS81(lUX0V;-$xqACAn%m<*atMsUM`Uv<06<#mihSY#g6mGt!0V41+}i@Y +%kMi_oDcItZ^}Qra?hbRjs^YXsvPjiH5TV4yI&UsCw%r%)$|XbJ*`v3C6Q#3ODuBUC`-4ai2Pg-^*og +&I@{6wc;l;40DgNW}^$cZgvM9Tn~7sd-h(|Q>@iDk67RvQuCsL58w+v$^MD}jIU>FT-k%=5M_>b% +!k{N)c925XZ%~(@3>kc(0}cGoa1#@K(EkoM(xC_bXSfLkB=CR3uT7A`JK_yLv~xPIN(V0nn}z|6UZY7 +LnR|q@D?O(@`ntk-z$DQyy9g&)g&bg=l3Bpo=}Xgh>GAVb@elJcETk$o?BvKujyMf31(m8F{`q%2+gM +7JHD-K_G)ju_-lAa*TNLfhiiAI&U+B;posOF$5B!)ghCQMJzn2bL6M&2zfudT>>VP<=Smb%O=CEr`=V +2W+QO^MHR$$;`c*-CBmJaVhn5hf}pdGUt3vjNSfQ%c={|eJcJ4*u=dB+hz@zDuP4@AgcwSUwJ!s9^bo +UahO7<_f`jngMHW>X@mpaCaGXw0Ky4?Gn>3NSJlWi?W5-gkEmKSa)&!oZSd$UVMtDE-F4Xc4Zah__Pw +(<}sL-whc1p4I6i)`@C85)oySh;6psG-RIXBnvcBaQA@@#?uBc{S0b5W%@g~?RvdF88xHjDDqFXFOpH +D}Dq>KIwKhL2IGxW!0fw8n&QJlXNb@ruU5EVq@!~B2yTS8WfNSBrdq4kh@%}&l%xq5ly=OL&c#lUCw; +4vUZ~1I|3of2H^=ABHH$EUIfeQ=9fyb}|6CHK~L59MD#;Q0_5!hxPBlio^uDpPhEF{4&m9 +@>j4=!jz{g>JOaz17x-Gk~y15VT?u7#AAh&khAHOHeT?+LDyAIR+514HUdXeniXc-2cCC69TeK7!S#v +W9LL4~I5g@_ODFRxHl@SrIxW(t(YFvq8 +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 +3xlM1z`-PpVq_xr$v`!g@+i+EEe&JRU6R*w)W +nY+ZGG!U#h9K}#xd2r_Fmufk11Bqji{Tfd##DGd{K?xk!skTNz#f+vFl$O@q$(qCAYlVg_HkeTq#&n* +P;{;6D+Vr~4tYEgBl-vXg!fL^f5fBsMc?(>*Rx+QAserA7I)B(@ii>m%9_cXRPw*8iouuOyMp5zzV?1 +s-Gk|*fg?a$Oh1vpshWL3Iiv)zhmk@Jcc_68IAdZy;8pJi3(rht19rE&3qhJm8jkU&7VwRMcm8f|GQP0^dZAT{o&q1h72A_-~BP ++&sgOH&So>HgjxLN6wXCtybv$TBv65J&DJ~&lb6tVHW-a^d^?spx +QOIARwV)GgdF(sCf=rgnMJvGS2@n7JG-Rce`>j +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 +&?$kE_c^0nT@OpxIx_vL&&#T?Cr^Y>}4JT|7U +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 +Z=e@xZ@~QWO`$UEMK03StF|pPDie@ +aVeGyo@3#}8!5Ya8co4eq0{*sg_cE2mUXanM~8A*AzGj<;vP-_V2(6%4g-xlcrktl((xTg&7iui1_;Z +rOux0u>}?;R(0Ppn@0xI}Nvi}~rXU``{5uRk0K#?b(t;AHvo|j!+K0ynoj@aFVNyt#d11BwiZjhhx{zWX74*AGY6ZnCK?jJ**Fc(B +@Qmh!F8xF>+ +NoBP^=g)zW(ehQuU=haZBjkzVI5Y`~Hi1TV+dgVF(-so-k#7^VfK1@1>Y||%GG*X&Xiyj{45Nqv$m5h +22;ygJk!(`ek6n5@ByldH_|~{UhmUq10y*R89vYsa6fIx=?GmbP&t&4$A89RiOp8eTZp^U)HgqhGa^b +nB6zj6^yrZm1AELyu^)qSbk_GA&aA0$a>rq@V$vE2pRvA2SkTB#avg(YJa<(eXr4>FS+&(yX{5ViPDq +9Pd!PsOB=UG}iq&djFVCY%7X)iI<#iu@!k|rSwl+5Vr7AWKkO?Rj;7GHQzL1{(7gKwn8z +Wip0AD_Jk;epwD<%E)^3EHxVE*8-yU`#0i_H_+>GuYcj+5_{SPv3n5Zvd)UjvgG{$c*1iH^9Rous~|| +Q(rogw4Ta+4H>ykE5rC=0Lx>#9%c+-{-?|LhMll2X%^ycUDXK+yc6W^o4o<}(b&FOQXBM~#3R8Mj%pG!h=G)pB!|7g0K>~_$Bq6V +P7)SwacOn@Yl?)LFBzL@a8W>8zt(hFCOT8^@G9CdF(z=G@BFrSAY9>Bn^hd@s72a`c3@1flRbU64LPA +eJQz&and`WULY^jwG!umRj&)vx6HPZw8bS$OJ7ZG-yO@)0%|2r-Ne`WbEO+ZCu+Vn-vu1j#7E;H#iJ^NtX1)coq>y1}3Kz_n}f;ptX*>#cPlrXH%uB#Y7s%B1={*#=Yt;e|rn!ZJ-}y7bM3W%?=!q|Ndi(Ja8(xCR1o56 +)x|d&}5M%eyRx7U%g>=+L0(yyELDl7hnq8D%}-Fi-7w?J4r(b7(ilwqH76oAWPvH*sEC@ +<|w$#gk!Uzeh83Ab_kvN|#{;N*T+*0RqOAOrVXA1)}BTz^HW^paH|ONy43pjwRr@9~dKz#i1>OsKG&? +<`Ej6hz9C$;{xNudXU-!cMt2@v6A0r2lo>0|DqXOA;BB7o(~h~%{DB?-90N%%c{u+byoyN;nh;kG~96 +GLxe9Z69ABbM|H@%J^aIy$HT3&H^+x3hsQr2z6?(ePl5J8?oVJyf}&=Ye*W!?mxr(Z^xe^)|ML3#H*bIV>+ +#9y*^fW{?eG7HrZd?47njM$t8|g&%b$y~T3z4V-hCQ?2pR0{A3S{Y)#Ly7y8RcXNKf(d9F +L8AqFB3oK(~1VEo?2zPJ8^)f-mA>c6$V-{wBXc9VoYUO-`I6z9awMdI@DvF5XQE9Vy2wLZ1Ri;!~0M7 +h1XbQ{9AB41r#P}FRhU4}Qio8c*WE<&?hahep};3BAWVxN&_EjjHK9`LdCJ-l2-b4|x=p{y;si2t$uy +Dxt4`NIcaj&{diPrmu%`TKvhn&YXQ+oQjO!=u|uPEc6gRIbFbRBhAY6vNt9AG3RH(H7_ANpP!rqgz0l +K`1Y`-mTV3Q)hpTq#Dt@CmmWja=O_s_Jn_udK?(O7U=G((`~#Iyo?fQWe##+W$CEIg2acem_9Mp22_l +5F&Q4jY&f9F`lX@}!Yuj@w2K98S>!N@noIZ?1{`Ri0J^B?TfVoPc4F{X +ZN8`;VUl`@ueI0$n*z_jV5+xpKyUp+mvXg|oNEkeoe;saVb?OqNI-ynjMK}adRbc+Vw^_8xlI-2 +iOdA!nflr(|;w7h;4%H|Sp51uvj*vxv4eC{k=1J0 +Io(oFXnrA?6=yZA?qEy>7mmc)etF00%^_(x4Q>*+|AcfQ;gz^-O76U>JWxva-^R3vz9H@I)F&6PVa7} +2YY_X~2}{syN)_7U!h7K~=ko$q%qL#;Em`m6aE4t%QiQCrdHXTUT6R>`V$OWK3@UKjEHmF`__*TTAo8 +UEOm`U~XaBFdr*U2uGioIxss0*=;oXeFjt0Wn>*i?-BEpghyf!yWH&{t%Pt1XClyoxM)-RjDNFgMuQX +`Z$_ysN|Bz>9$q$0!uaU{<$9mlRY^%c$h%XNVF|p%Q5UpEkd~vWa7s5je5hxPQ!-qc^Zc%h@F>#phi( +xgHW@|O@nju(v4L+>_jwTF9(BYsr70-KJvCfYwh*?Sf{-ReTMzNW*+sRChSU~4pS#b%JcB8P$NcKQpm +)w!1|%|ksDnX8sbuU0z@iz-6wmnwpo%FNre?dz_tMc3Bxyi{8MryakX4>Bk2#!e5Li0a)6Dg52ny%gd +AFMehO#0;ALh+j}y4@o<2Xux#l`RDtu%#4yI0zmSwaD9N-0+4 +8QU)t}1nMoueP%>!njshEn+YJR951L2F6EP9IwXeD#uhvTCac66lB$W~B{i_`bd(CbR9}F8ULdhBfi% +?%xx7!}*0xL=Z8386(56CELb{1t@31W?+h(|5p8?eF^+lBEo^lE`e9JF@-N27K=6S9c7WR${)M1vLIHy{9y}ebE>;0K2`r-K~s@E=qttEgG +Em>|CeT!&tOtJ&v8=TxQ~R^X}9-$hGKW;P!4GE!Z6svd=%t+7oU=m*~XpfJJ+)rOmH~P*S*`Z;gP$x+>e3)9Q6J_o>BA!Nw--swHcwlH_Z6KUPnyK@lCRq%1C +FP?o3R7@xI;A={3oD4t*Ug%wXI~YkP>V;?Ab|?J)b*IaQtIhO*W@e=eh}#iT!T_GhsdwH$A~x>LVa~; +J+B>Bo_|{8XOwo8v)+02cQ`)-b^hiB;>bWr{{Oc%i)(@Zf&bKD@ +??|w+NZFr^6XQm`nEsmT?VK9(S}R@Hnf%n%CR6}jEp^Q3@TT@H-wPLsO=ojHZTE@H+24 +lqNJAU#kA{OFv`e|UEK>fu57`f#K=55GO^nu8wxCeFhHPcfd**xbI4-Eq#x59vmm3-w7qz$ZIpa^bZBj@0)junu +>Cw2#?X`Kkbs7!TV69lYvhlA$wGuebGqWBZti;m +jt&;s;~GZNKDtA`gq0Ye>K=M?Sby+L>yv2l9Rg^tL+4s3@d*gn_WnfSg*8x7EvpD?$lx9!OmypgFWvw +AFVgji;TN(5A%0UP?S{uxNdmoTRQ);~mfdRz3v3VWIHS+>fo(GL6uXW=&x>Oq#7rl0{U>9{ljt;(iO +(pu*K0M{<{vmFP(Qj6WYT0_hiBEI84{c9t9(m@tfKU~YD1$?OU(W=5jDj5Vw1Imp72sFMBgK5U|21~{vwkj}^%B0ekwo%28tnj%-FE +Sda;2aNUvs3e{Prm<~Xg#zqz+vG=P6`EhqCt#1P!g@n;tHCbCz_)wk+77w{< +iVKQnJw<2f;w2{)Ah4AoDw+p7S*4eD3fJm!aioyVf|ZLbpTY*7&^!AzFRSJ)MSVbyJLAA#dj73-;t^G +Jr#b*S5=9>#)1{AO-K)EbDbxc6D=3V6kc$@BYSBpeDV75`J3>&!{;v#kHh1`KOO!p{Pypshwe?YsrS! +!?@rF)KgGLu+4~2-`_F&=4lwEKd~$l+xur&33#%jZ1D&c^x9XEPsqQ*g!hX~R{&0tEF6Z`pQd-p-{|`~g8`?(Vb`P4S4BO8u-dyp^6AEi3~k*+<<|Tf*ErBOV-?Q!dGE@a;oy_s*qTr@ +_9?)?12+Y+Amz4@0*slxkRvYA!UU;B9Ec0}2Lzuf +HQuuRZ5hXR1DH{aS~6t=TA~jFUjK{guU2_@ekm28)>sT5{#&X<)ZoPEr9zz3Ka$6NURPH5cU6w(4V%< +n{8hein#XrOP6mw1IFy)FvnVJw`4<|NITfL(Ywu&m7fQ?`rh;5j#lh5;XOibmCA}!-`ZS7i%;E$~8@R +h2kqN27e^actjaz_?%x@yJ%J(+?tt^suIo}RIqCs61zx6YX8&5dQaQDINo^nWq=#lvmwO*0Y`_qa3;C +W^$M$f3Ef6P_nxh+RK`R7|UZ(nyS19*}Q^}@*A)Yi$uCcMu0m)$4;fv;;kdV&8JP)h>@6aWAK2mnAs@ +l4h^p&)ex001Qm0018V003}la4%nWWo~3|axZmqY;0*_GcR9XX>MtBUtcb8d6iaMZ`(E$e%G%!a1hAu +906+|1_TJOtm~ElO<*)G_9)QOkS?075eDeXWV7=4G>MO$ +xF0fO^9t>oqYAjnPEbo}MWutUkGs^~hpJ +>Y@+oDb`K81%UTEa@J@BQJ_`O}zAgwSX@N&u6;ujtDl8%&(#g6zII95ZX#GnPA=4{9?tBj9ARMO*Hun +5o+G7L_}otmE-Gj@5nAfANPb%P!yvE!5aB>I4Y2-FgP>hysEtw+h&c;x)`3)j`-OC+pc^$VHm^;G7Zg +HNXX|db=Z5y)Sy?nOe>VkYYG5qMiS!5Wtq(xk1q^iN%% +D^+fN#j^MJaESaPHG?DoR@>^MJ>|sS+Q7iGNzThsvX)xED5!u$hbc7{ +>LzbAh?Eaj#tm3_b_24!jq+)+1`y8!|o6wasgirHcoiQEV6LpVw5bLX%J3J6I{|QVvY5GBRsdoQ6d+# +qPc+(}#M=0f8`>q3P)JplTyk5MMb~=`bts^x{?L}xM1DJ~bjoX007Ad|0>noA`Vy>?5^(3?6Gv!IjU{U*YgNz7c*%?^XPB_$OK1({`miaV41 +bOK!}gR=)2qjC#C5yGOcj!@F*lU=-{To)J45#ShzaHorF_FOOcf@q699$NL9v{O`HJ@3e8mDc`;Sm(> +aGtB%E0{QBLPSIpv8>HcN{|anz0|XQR000O8Kt +u6N3*T{u3=IGPStV?GE^v9RT5E6IHWvNvU +qRRiq-ke_JQfIGz`jTTG$_ld3#=O+xGHLXv}JQt~!WuX$jO5068@~V=>?VSDCXuisY`};)fQ&DO +5-mLnzuFHCw)?;)+CiGn`c!uxWZ6ALq)BCBz7&~Jha<129y;-PAq;f6ObM{l|Xeh?FT;_C?A)n@4DND +|tN1sfrp(jyjQ7@OV68U=8zobuvO((Ry@6*q-I1m>>u=9S+JMM># +vWh?&mrawaC7asXnguq{5l}R;Z-3Tb3F2Op&q6EiwP7_XR|d*>_N&s80q&mE5=MBs6v}4r*?mjM#Yo@ +Y^ehw_Nf(hu2-OtLURhq22uOixSyoS!gZ`QAcwYefRnE2YU+f6J683pPD?!u5$G|6cEqwl{4BDkvQ}t +r|HwvQ}h3ay4=c4zzLi?EEHc0M(SAP@?JpAjt<-1$@GqG@CSXNSW_`w8X`A08@^ZaPjPd@NLX5$3nEz +V$VK^%AMlr8x!_7KYRBfH0iSlmN*u}}8xl*bN1a!^<{Rd|?mgv4zL%S3!-{6J0)OS2S;|c0VuSw`_`_ +GkZAdATsw$O0+!tw2?%S=X!KT~@#tSmnhDpW57ODW7F6umm%)6a8H$KJKSa}9rV0#J^i!5R65)b6*PK +`SW6W$8#7IZc-51s8Ua|Jv5{&>=dmn^*Sa>}`Q@q8YLckxqM2rs&5b+UA;LEAlr?|lMT1MJAx75E-6J`A?IX>1$DBa%w!c~%`RqF;#L*~(RTjP%M|*+8pMitAj^!s3F9VIH+_~yEsyCBzC?V*NY?t|9nY1R^{ +T5wXNN>OTSf%CBifo1Yz45gqtu&R`Vyi7eq +xnM1ffF~E&UkT&W8wV6e)}k7cBevomf{aviG?)|1_!rq0aMSsUEF2r-uzB182p#+t>$l=|`$J({#1x{ +d<506t#{8wrO%L;b3+#EBHpJUOcjDT5fP05?RWXt$l +@(T5jQEA(pw{@%q;1Cd(vwDbL58kpEQ1V+(pD*plj`sWPs6wDs0~5BxF!fMimo%bM~iDUMmqDYx-mFA +D?fW+?=q6m~=!;)P!4k{78kwl&l~zPn_vU%q;tus-mr7OaxHuOX1O1Uqu%F7OQKk9ZY4wX}w(8f`ePe +^DgP&5c);A-Ot0=)H;bU5#&*RVJOxbt?`Ne>6OwJi*FknhVl&3z|FCMo>{D6ZQ^ldXz0KpE~-6LTTuk +rAR3n(3BNo2RfnWf@RV(N*`V&Jj-rw3@seVSzeZvlNOaX^gSn0cixmF^pe~L_OnRKu?fcNCWVzDC>`5 +6(%jWt)NP43COsmS;X~FNRJjor0Iw{myj0pT_~y-pp$^xutk*-nJ~vSx0`n>(WvG!BMw69sRBom_ +YiDf&un(_SIK50r(KVsnGR>s+*g9IZHZP17sfHc(32^)*Sd;|t(gRz?9=goN+rZB-KMwae^*sfikJ_jJ?V=d%p!XU1$yK}Mx*ogX8WbtgqE-p +sy{}>f>ct|F&d?6mxuVa)HU=3uA;lw%d^z-4jSHYaF*PlaRP)G=^lJ-rov_q>Ci|spm>=KO_cGtlSte +0uBW%!@kf;0AWfkNo;hbeD>LFg%g#t)`s4ndrQziPt069>Tuo^vqpiS}GQ_d<&LDlZM;D~^X(dtwdb0qpBN2RmP=^<+#32$&iZipr=<#jfh)JL*U6F(|qZTu!gLB7_+Anu%Jl8 +2LhW&(Oirp`ei}TF}!9@9r@q2UIMN8o-mn(~#A0SupCO +N(P@Os@&6wu*)PrlbL1V>UkTKht!09N7_@7f8)!3_(_}|a}V{`iKG@-jguH%jwZ(P&@9{L`IYryjbPN +(F<2E(HkE-nv4y@WYQE5)1t6Omt!V%PXjmzjgO`{QSPUG6i74=?J~SF+|i#@88SQKNLaV4 +=+(2S^uZF5_DX>C-WCs25)wZYr|SDeKAi5s{*M*k7U!$UlKptq?`ylF9?%-%jQxYBWJA +$?8H@Yo45}tiSuW?clNvW&es|ChD5g86*P3T|MbaCg3h}-*jb4#;<7-iNGBj;JVv=pbgQGinXR?Mb{5Tw!7`esZKa(#Svx +u9Dp_UTpfGWnY`mnNXz^zpFbMb`i?UR+Nu_TG~(dV9ZSa7_H`JgJs +dJR7q?pVp&3sK-WkvImH}%BA`Xi2njmO9KQH0000806;_WOne_1FH{ +l$0F^iZ03iSX0B~t=FJE?LZe(wAFLiQkY-wUMFJo_RZe?S1X>V>WaCyyJ;d0x!5&o~IK;yX)bw@LfeV +3$aHLYtacbW6qZmcxZ$=%Qt2}!Ief=7^+)y}L47NV?Jw3H&ND;}!vBi)=t6|d4QH{Ua{UZ?rmd==6>$$k4M;s;)hR>(*_8z#IgMad$`?x=Z=Uwwx3 +MP0S+3)Nug?V>UVo>EZ^iYR`F)?6B*GJWd237{$1ibr_bR8AQ+Y6EBJg!oaBiGPv`fO_ +Rr1W!C~(2E+r10_kg!^AUZIvq(yZvxi@r8BM0t4L=3+9J +O=0-B%l!@tNvy1T&=J +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 +?2c|1(FE~)9h2Y#jQ|RX2L*_S8 +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 +L**IwV5m9l)084+#*s2U3KWz@z}F+H!Mk +rJ>xKwc&fG8fzqYpF~RfhG`yuf@keVB`2NnLf?@7+=z4iVSxl8@J{G% +H5CjZd&C0=V|L-3lE}%fbI;#%LjEg`2wBlKtuTBHWf$Zm-F4gC +27W=>RDW+kaw3V0HfBVg_z}xR@cWGZ#_7b4{J;06y`*LB8m&uIF8$7$mswL_;^k{zBD>&FuJcVUh~k> +ZmB$-GH +~UQlKBuu1tc4q@Y=^^w)p4eWyFT%|9t)tMdr^G~1HNIlRkrLn={4>FZCbIA~s{pU00yAU7j~=I}tYRV +~o5t;f6?v{{h%D`Sf83soYwdZ8>$@3{pZC8q_u0k{+-;Mz_GB_hI$2o| +8xX>nP6BDdvaNv*GmSP(qd9x5m}IlW4MANZTVP;V2RZ|XMe$(jbJt3^3;SMgebVEWIxOl(QXolMv4lM +icw87-J3&gB2ovx2&zPQQCVdo<6GY@fljo*MNqV0S(0Ra&9SH$I&*qAV#yk}Q=Kj7;Qaa~vCN(v5X+r +S?+N$@D&6}xV079++hdmeuVeO5(K&eqT0u4zY#<(HHT-}iW#odfhdS_xcAix{CCN0JR)f^;$cgTCenj +ZkkTPhiI2IGTpZR2Qho{=Ii7Q=|{zw$?VvD;LpdB?Ws6Bd3=2bv@h*nUe6I9Tlg$ZW#E<;38Gf*Qji#ZhO!skbGdgF?U;ODg{OiFGlU9FVXBVF2lr>1rWT&B*8}8Ve)Y#(Ln)i%B>z-Bi|aQ9NilkTEh&92_NFP;h +5gs=QHh8j@B(QV88t)!ul@S;8prK_EDOGv(->e!W&Lo-*K{1P3x~oy^w}6&amfvbZDW(b&S9qdg|t7- +mHu_B+qj;3QeX?4~LdaTdPW$sCe}eaYlfTdYj!+}*B(6Z$8BdN6IbU4uITcSBd#AjtSS+y6KKkixfaO +S1oDRnvUJsMb%4?b;v?ZRw7)-g}#C36+Cmn+;!{^7D-OD^6;xgm8X|C@}R?yoTh0FX!TiZ)n2Bfmsam +iW_u%;OPKwaBIgSUzk_(n0GArwXQKM0hq{$;)wq|a&z#!8;>;TZ{&c^{tAC&^xt2P`QPIpV`A9xJfzb +EJlUV@G{M#x2Q?2tNt#xw-gMUKwKcMqKZhyuGXP4wbMc#@=u?d~NTv!;Z +eo%ZdeE3i7qVjAKM6Ao6H=9UZW|E^N*tG{z2-Db9|QG|GD22odrG7?K0xo$wUg03vgvT@JgQ=!XoC-nD!sfb-P~gHAp3wQU4sd%^bXB&doXhu*FPV?l(10r0ejn +K5RM$q=5Kd%&F`OH7q_A6jTg$DjLL)5eSYirg9Y&`P~Py_$2Ytn6~=0F9d#caJRnZo|-qqk6PK#W*cv1CrBpkw$!Lba|}8Mt%RY`?jE$A`2V{o!G;drCAzu%S3< +!!e@;~rFByVm0Czzc9B|M(JWe;2oaEzs*^_6(gRMsoyP#{pqpq65M6G^FylbmCEPBq_1Hygm#gNB|Q8 +0mn*lZ*PJ1_ql6xlGocxf|jjSF9vHk@MR16}$DyJW2$=L?!Ai+ma{I7P6)O$~bPplbsnC7K3 +7{boE^`o4XWuYneuhjhgqHdKVhFVWDb8_+!SJ^V{vd04R*T8#Swf-Rls0cTojQRYn!ue*;;<`l+eSHD +010IJa2OZ-1ZtE+A`n0lf)fT<>gm-Bg>%8J3Jak}Ot?FN5dO41DrZnaHHGlA(@}WlDB~=bxJ@9EP|7kI#W)8GP4%rdr|4eW=zqx81x9snxIA3@M)c3xP9d;OC}C!DC8D*!Xonn&UoRSR_goX~Kc03>G;TkhxaUQ1OIFMsB<~GM9%J&I=Q1B}f!4 +kqnS+uyI)&Nz#CeR68OWpP6HEx(nOOnXe#iDmOLFbAa>>dOtDm)KssS(nW8}Lg|1ZhYkw +35lJ+%=dRi2dp|FF?EI;d-{ZARm*b17>6(;toEkM-@@rXd6@i$e|1j!``97XhNPZ}`4OhNg`Xd5)Hf~ +}Q!5#-jbMjV<7+#>H3(QB^MuY@}kFsvr420PGB3rU%!66&bC|ZV>*~@7!1R{!g4A-2*$Z=+~V>+A&K& +%L4B_z>|;sQGq7lm=UAEgC!HZAKKg}3)x5(s5b^s648;a>%__bB2dAuqeu^9kUGhoV&Tdka-_{{L +c0DxVcNWHq8hC72sxI^cIF?+cminA)Zv1lk>%wSP4*=l?@3K12T$Ma5(IWMB6z$n)O0;~k +9Jo(|E>lbV*}`GVt9eyJpu{q&wQvXUhtOP^U}9WM&T=!qpy5YL>{wE+ku`S~~B%h@O7JFh?GWS$BEJAZCR4L9 +3@r&t&@v|9Mw3tOx~D&Q48jYeDWRO%PDP^|DqICp!qwoBN5YalWj(@Q19oUWe<1#fP&^ig({AxTX1r1DM!C!ztA}$%9}~h^vI +tAzon&i5=GyG`QDCT{2UsJ*cl#iG$ +TQ}mahHoK93oa`jR+<3Z<|*=A@(>;MGr3hn;x$8C#80gGy4kkBH|c1ObiKjr`+|xnnkE%B!0gWwv>QY +uO*WCV@;5-k{wH^URFul4&3v9p}Ejy2aGrO9ghJ{9}g5OwW-3JF3Za-lX-wtjhd9ku0>B%I|A6lcS{Lmqu0M56}tBE@Mm&a%71plw +8w?Vsi`!yCdo>1ien7r(Q-=NYT%M;h4psGMv#bFcbbYIV&zZD=0nEp0bb93;JVFl(}s&`LC7hFgUKc1zvTbKs!jnV15hgW$d +h+e?j(n{Ns>h9vs$h1ZO<7M!ooLP(p8Md`Mn`=q<9T4SJ6LTS&Bh))@vC+!tbTLgASd>xn+c0seEi06 +>P-aLHD5u>QnQC4zBKvOBIm9TYnsC`j)AL@{*sx42CAaH#z&PC1R~lEh?dKd6_?oUy#mP{bhxQh(nX3 +r4LzcV2N2j*OojJ~Ebe{MS*s+%y}9YfV--NjV~3O4DN;2ZdJY2*J*$h0-USk9Mf^j~UU`a37Cea!$WV +YoW4y@OB1l{!8Z*V9BA?2IvCAyF&#w(V}w2BOkCC7~dA-;xs)`M_wW)mr;7C_Cxq#kf%t2*0WfxspMQAP+0=p&+$~}>wy%5yY=44qt3I=66E8?|v{tUna9c +Cv|21&4Dv~{*}ThFSJ=!CLM=j96pRPo|ag$_o7R09twyBt;0aOkw&B{CAP!I*BWH$ExtFaQkBp=?Kf8h{Sw@zsX*p6>Fd6o4gF=Og~iim<)$F{`e8{4a&*) +CU>|_&GA*+V4@>%(b1!JB-L50;nCz=57vR81(^`BBsgs9ieo-l&~WC>*n)U}-$?J6h9P499}k&_7fR; +;;q>LX`Q?6Sha@G8uq!Z{VF4Fw5%_0Jhq!3sP)5UvDMLXK0l)(QB0Hi*%H`7-t{pM}&DlidvW3ny&o> +r&+47V`S_3@39S>%B{NIzS@Ml=I8j_^&$CZlUmH!Zi3jEo#Eb@~@B_CHHzAMoH?Aexu;`L8jdn+f}7r +jmxSrqAymc8d+Jx}K^D%U(4eSiL8baX$eJXmTlGqC!GFFy>PV-P`-j_m4pO4>3N8WXWOPYTWVb`Gx)8Sk4~`WWrsTOUAmJ#=iZ^|dpc5MX1NsfSi?0^?G7~4ZYhQQ?K|_8z$Jg$Y`Me-m|rG=hD}>=G_;w2Tx{)PJqQfC +N`PN2eM^ybMw^7JkzuUBM-3eSo;!IgQ1ee!TWy-Gua^TAd`tYX_ykm +dx#}8799()bqOFn*(g7UwH@L&G%1A{Oo!^>cd|2Lw{q5cMm%ts*{vK;CWp}2HRZ`eH}B9hufGsF*0GP +CUma%K)5s`;3OJve(n53}t`x#z?{BWDnw#lwKQRRvZpv*Bz#G{-X>kmg>)HF$ac{=?$^`M-X=cz^!N( +{70q8#I81=GU-+MGQ1vn%@VS$Y}QWsEL{U+^%D=0UoYvgMWq1JTyb6qx&mt7NHt6jh+lP_i)hl@E#6S ++gv@U1n4_%O%!dpbTkdf>e|)fy^}avSX31dMCGfh)XZwRkTRl(jke&gPx({vG0F3^uxfOG8Ad7umrg; +mEbPnJ(vJX*?!s_KVnW2aw-1q_5Yz7LV<=OAc@OA8lqJT-yZXfxZ3y=s(BG$h2k>#Ax_5LHqT3M*i!N +^Oq19r21U`2N$H?aAbmcAPyxJ;_w!Vru{VfnG +lJwzIpzhH}z=xu~t>^#vC4KDEbHelbKE8i#uPibV6sPa}3d1q0aVC~;IL3nu1)EP9+bxLSOT7iVFTo8 +N3>%DU?WDtSXhAU8p#iC-`-(FD_#unIcJudYyzxXC@ZkQVeX}N}{9$Nh>@xjFs%Wlz;0xmcD+XVo$#B +t4k1KrFv@5GKGGlV7+&$$g7zlCDV0<6%DvB7E&Dzp7(3iw9Y%p6=dAVh9nnU!^8;o9;dT}FiSX8Hnoz +t4U)Z>A2P9JO2Q7*T46ciLs2Qte>X;(}P!dxzAQ%Ot>fM-p;!Q$V=O-Ydgmr9)t0W;YKE^R0;V4I6(r +DtVxs_IirXwuy&Ktk!Wc+%^9qh{CLwi*C;0^-aQv-r^@y&o5~MjNM+pz5EvDSoz^iaXiErP6GsToqmz +Tb0CM-}h7*D7RTL#D8jMEsE@6!B=}Ro5TBfwfjzrz6R>Bk~CVu4+)CpvRfv0HLNgW3fK@diSfaD4|35 +=>4*o-FZ@I(K=HnFDMh!46Cf?2=rzpC$D{=F8B{mD8Grj44O&v6C0m2#hJ{$ylWdOfp+ok=4(W!7XPS9z@xmbFjinI7qPkPr$sme0 +gzUE(H;7zgXMP^3er)q3S{&|Kith6Pc5mNOaqH^yt|i@kT!yO-L%+0jOU_@#ORvlqKL^X*TylvvN|oCi2Uc?8n=ye9zXJpuwy +Hq#+ly1Ut8z$C{CqNt~@*FG5EPwvCi^TII$2sVcas@n#xtwTlv~Tb-r +e2KjL~LLEe^C|k+9W)xvjJ;(@Bwv@dfS7K~O{BAKWOZHiPhgL*U+j_gZncTBqK=%F;9Tt ++inS*DZ@VN#9Elt{7)I2noUyu?A;IC0!H^tVq`*S{<=WSPRGp;rN5AV_alcw5M9AEE%^XU0m7;yR;YV +k`0pXT +9iqBwI?Xln!?%0;^1O%1UvE&ZWykFedmq0Acc_d*CfP~-G*OkULj!o?T2k1%z+aNBNH)n!x!6k**Rw& +%XVqu(I%NU?yYc5mEF!B_|%96!eDG?*ooiT3o)8Q3*+*Z^iF{d%K@vPU_CHk|7bs}CNn-@-J+{qY#h9 +d~#isLFMnrh{Mecs<4a&cZ2+`{SjY_`^wS)BCm7#)vdhK%7`gM3IPO>_dH$bHg*rf(g58I=v#Ii9>JrJrlBP^6)Q&F!29}@$mp +rA3EcBUrf7)x*`jPpf5~N7tqI?57`XD~mG(%$PN)Z0ktQa0u)cxB{R1MZU7D8>^bj#I7B3~YlaLL65s{@C$fS>_@Qtcr769{P}Vq!?=^7V)o^JIs4pIrDs|04#%eYS=GLAW~P9uOem~tDy?^ihTh$Pr|@5z>OB;(4z1G^y0PTdYD>n0rb8H8+ +QHZGiHa$G+`_=K60koe;azHPG-Msv`a4gHz$M2&N9?6$3+@B~dTdtqM&oa!M9wyH2fHvnrOFHUocddC +Y*2q{QI~EY{)p%oGQ!GCrrd<45~3hSX#_)E`MElf28G?+{{@74@+YY!%a?~CSNOJ)*$T=@4sh^l3=`V&&{W9 +sJ60++g4y1VqXdFxo`ElMA*Vl^d6`@eP!Gw%IhC*E^;7rg6D}F=@Ip3vkd4Og#L(Y7ID +oclm!6}Oi8|DnS`%3s+e&%ksDR=0dx8MsHLcIEMP^-1v6vk(P^fis|Al-n$1rAj}YC%QkmFL&ryc=E_ +OeL~SG|9b4-5~F%zI#xF?k^E4elB`LGf~$Iu7vt5psL_4GoDb_RlaeBhaDefWn5{R8+aNhE9jNww0@> +#@!2-l&{G%cQ6z)LxHe)Pj2g}ydj{}(>`x+)(a0$9g+tb%<<9Z;lTHqx{i}asn}%UB6#JFu^l>+PU9sXpfEYf(+AqL) +6m<;aB*TWD2q_WG|{2OoPt4C;Ilx0jVG;;>Y9_h_)&F_`si5zMGu;``nRItu@0UJXuenF=Jd5HJVp)r +Ezev^m`xpYz=kyS8`CNN^kE0}Ta~gtPO<)_vNVJ~RU3x2FreA!E65fdg%{`dEv@0B(oWL&%zgi}CEw8 +TvkzEH=+QHAuO5}&tHDQWv805)w<|sA&^NB2eW>;QSk{p`u)nEFyd}|IF^mo0KYt&%_dmzm;e;)n&dX +TZ=1QY-O00;m; +L-9<5^}-G;2LJ#!7XSbq0001RX>c!Jc4cm4Z*nhna%^mAVlyvhX=Q9=b1rastypbu+cpsX?q5N82qbT +gx+eWlxDc?QO}7ARSM=q>kOVR0bDT+q1#Jtb!GTTvJM2+HwY?pR?$JD-JayH8mE2?OEOSeq6P?F!zX0wdtWZN()lT?(7l`27@Fy +{p;>5eT4Y@kh{;(%6F!BeWZD4&Q_F?B3e&FC&ztY!qB`FyVb{)}iu-7qqLX&{e30_2>CoKS+m(M)e#R +kWr%(yB5j_^p$iNM3HqYA3SQx^sCQxeBZYJ^n>bN-@MrX-PKB=weytH|k&8|1E6mD9f}XMBS>GIdbiiNlY&49aYHtYYFWqDH|$Y{GHUvGGN1AcCA6hZ1xUTTC=l*eZuUS3=n8|9 +J|{MO`?pzSh({BjAXMIpXQ^8WQpa&mI|bV;bx0J7NvOBKt=W^cZpK7UR=Fyqv-=$TKSF?BR;fEq}c&f +q1wu4*I;yRQHY@F75uabv6~i@nDhZM_eymnM*_THNsr0I38mP03S{F{^DvnNnar_8|n1mlhHuY~F+U) +zwvfRknx9P(vaSV-g(6czz`30XZTb54x?Y-uH67Y{W`5DGaDgIS=~%>^^0cBH<@v^SR!3Ue^M=vTLtc +x3=)HD=KA=R7f^dtr=}BaJ`4Z6TSQWRI`!;9i^gW%0lhRQh!zK-qfMRijeQfyS=)B)SvYDCTy|!+j-Z +h{P?-`uHE5OM!PSm^Ari!Dx4I9P=6mE$>~U2&-4nM)U<#=koW8huwA|8tjI#K`3w{roX<0oQAOLsf+r +QyUK=s85!v23Uf<4fI7%%>j=KHQ2MT>bTzO)=M3vs|aWy+DiKy`0(W0-&_5d8#YKn!NhRJxUj&(^eK| +(kyfCrM7Tya{M>Z2p1bT{a9w9&-+m?XG8NkYkrd`WD>0uPs+weed~!lKon-y9mFT$E_9Vl6)S()k>Bf +c_4h(OB#BKeR5z=;a2Ov +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 +}XOw;36euG%omL!hAn)PuTIg8c9j4;+C +F2MNhvoun(0mDnR4$(*hVyUh+1dMmAL0umo_zzq&wAlRgc7~Y5y1 +CRbui5%tLxs0{-|XZ-GBFbcm9km!yvL>(XUe*taI1VoE2YDa99zyw1Cbxc!x%$xHhoWm21*pa1EYbT> +SLz-J6RK4zEy4xvv>PHf?j^W=%M7+I0*AUC6@Tj`K6ltcLRkEjme)n=Lot?i?Ud2;(jm;Ha&?s6~2^c +vjT(9m-N$IssqYQ2VMvax|0THHH0aK3(KCD2547gIMs~@dn8Uazu#2xf&bN#D%M%QBI2tq>Xu6vV*CB +aSkZyg=^07qp)MewV}9xEKwEL?}B<&(!If}7cajablkka*ozqR`Q17%ADWB*t#y^v&DB`94bScM+Pp~ +Dcy;d@=Ke*RuO6J;f`}m=KGhI3y2V$$cA$~wAFuoO_5lqupG4>HZx)JuQ{?)im4_Kg&&T+&73mF8%&ar%U#8ygtNSVPnOwYuMF@gO#vEk_URcEW?l?Tj$b +Kq{ALLtGG#LF`mvMM3D{beQkIvE2ztLX39quCA&1h6}Z?sY!<7>hJ2P(bwhG;wP?~#B}4D`1;6y1#1B +EN4Ml6YwW_F@@ms_F@5^{=`=DhNIt-?4$2l8KTp7mo}}vJ*7!L6&XphR#CYZ)@QJ5p-C-kJH5>GTT5W +OTeve9+D}SLonO)AuYg`LoW9nCyvU>|X@rfTQb375>+Gt6GD3d>@LlA)p5C*aEx$nX?eL1X3iP^hP7q +z8P;c!J +c4cm4Z*nhna%^mAVlyvtWpQ<7b963ndBs>;Z`(K)e)q2+vJbK|s`{{R28>0JW;X#QO)&LfABw`JEh^? +j615Z+$5Ui}`+kR{D9Lg%MIS>TC^}&b4ZiPWVPaX4n`L2WAuyoUn +6RBE6h%%b@U0Zw>htCHheKvo8QFN%;pn@>+I~z-Y-@8BuWWj!3y~-O9tkc-7jjk-zhph7lkMxE}Iv?n +ydc1vDOiQm5R4gjInOxBjiT9g*blUP;5)b=27rG*7@8&d|en4Mt1{_-=MlCD +Y5|G8Sm?E32BUCiEH{d~2&nk8R6eWTLD_Z@#u5a*;9`qk>DsR<}JHv{^9zkfqM{wBDrQ*z*)Sh&CY00 +HiQrGFR8%j;Lz4=j7D^76p&koL?IGilgf<~hridSp#S{5f~5Dy=Flxe=Z9h%;`;@?=G(O3{kMHwZpv_ +A0msERAy=SWjrr>P;z)>w_#Vmpk(T%)_?sxago4fZPqEEAl4~h&~PeRJ +oYFdjti(6I}@1eF?CltL*S~eGfVVLdnONZt2hKFjC2UcT7u4O@oN5tWTAn{Q$T`YBjO?ZY +sWIy5pbyw9=eu01ULRTl69{RS!!%WloD%FL-Pcb3l1)M0Sg<7SyYCG=Up&l2yK(F8^gA|L`|^AQT8gR +8rRY^oN5lj3u!(VtTvQ1sB%zJ_c?+?i +0h+lbUQ+4OMh#~>yI2EWpSt`duer&1aq>a5c7p-G8RVDOv))}Gml8;f#2-c!c*n@jVD6XH9N9gyY^WmpFISCdEvc?dec~gSV9n$RzsE2f6~+uXkO5pgL#{J%HeIytVG4^xFF|$vTUfIp@Ar2chrs +U(IlPbCJFA?o!O#>9TDKsvf4uY_W8|;Q6U;k0cR=!?#F?S=JE`w38nf%M{{fX3{Rz#SzQ +N#m-|NBzL9NZBIJ|x0c|%Q#26oLZ-oFb_^p*rP4I0jbU9j-ObyHLNT>>p;YOo023_f)9 +|RJDX!%Rnzp49p=G58F=aWH5`e_l#ZWO6erW7(?wBb4$$8nS)GKocyOo^196Z33n2=T_ZBfEbU%}!vz +5_!PDIXw)U>^g!O3N}xtvr{M}aN2|U-NI~S8DRWcK>4$Z9La(|h_}C0;^8FUr6R-lBL~uUZ=7n6H1~3 +pJ77n|t(}Rj{bN?y&mr9k!LcbBH$R^C@Nt@8>xMFbNNr+c(WTSCnP9y47!P;u#Lnz?6Z#=!M2q`Q2{Lv=)qfZ=^^Tjb}7yK5yojAIIoQCawbs1N=e$4-+4aw)1mp|<@u +pE&tBFc+hshy7;+D*-5JvS?#43D$6L_R3PY+iF8bvDSjNC)=($R=xdXl(VVN>Zbpw+{53CJec!Jc4cm4Z*nhna%^ +mAVlyvtWpi+EZgXWWaCz-KYjY#Fk>B+za8$WSuBox4^*K4lO0uifW|gd0TatX6l;a|YBuI`moMGl6n) +z_Q{rUl501PlVaD +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 +*TV<6hP>uWwRh%~d4=Ox6#P~U~!5p+QSq_ +q`%R|7&&ArkG-+1DED^&+#4`-DTRIZ?;~-3dUh@bh|Kt_uV(eCj2Kpw7pt$pk*Vd`H|PKH+aU~o0326 +)qvilRX&&Mz#{NJdQj8r{6FaL1!GU5aHrUB94*>%Ns_n)B!t-eaN*g($Mo&t%zO)`VP<&{Nl2)CQaxV +v`>}&-LlZIF=CdyT0FS4@4L^L6~IaL@e4xr2MSaHu~!D2B}Cmzgcf+S6=c5Lbrm;7*Ey7hiE`gJB4QV?8> +~uJVq42`e1kcZ*acLa`K6WUekIK%8vBXm+JyUhHC^D{C@yW!V&7kWD_X!C|q&-guz}f$>S)2f6CjIx& +pHM9n6IxTCeb*L8`AsRJ#;hUh=*ef0m3Z6A^_uMVhD^ku!pQ}pFTJ)xCe`X(C+Bb7fSRt=o)f>usT+P +yl{10iPuY96)CFFrd;drz>`tve&8O|Xk+AlMF~1l6L8eWM5dNN0a|ks8H-%Wa~zyn%Ls+sV3fww!1OUCx>+3RVo>( +q9D#$FLP)O(~U6}zPRqfblN^1Q=rEmVn=gCq`<=ktrrh`_DL1!_wjEp+3sdr^JQzcpE{Qkfo9skg7NA +{P?RmW=g)>4IZ|T|znK2VE`xcNs1QPv07fl`^C>*1544z?gT@QhCtdW}a+sn%-|UaXX+sds3^cPOm<~ +N$6oC^)Ednp}RCKjfhqDS*Skl>6AKxnUF`v%X>V#LJ4*fiV1)cZeKbII%`P!8#Z1nnCC-McX`Qq%FEmLZ-vU($*jrYBd +ic74<0F|-4dz%)^F+3%N5IEdRv*2_L%;i6CAUfFEnBs&x;nYe-+VRiPO&_QhA<8=TG$s*KZzDFZd{96u86S2&Dyw?2YVMV$8OJsaca1%sJ{L+`K ++5JImXY7VLdEkv{;gOpwC^FSQX;;2>zwxV^4X17jYv9wLWs5kul@&x^Miy6NyPn}C`1eB~cJUrCAtjX +^FM9Ej+{j`Gv?GF`ybyNcS?ft3_rtf-5Z#QV9OQ+(=%A`{|uFuZh=q(=l@6aWAK2mnAs@k{^!000620 +0000001Wd003}la4%nWWo~3|axZmqY;0*_GcRLrZgg^KVlQ7`X>MtBUtcb8c>@4YO9KQH0000806;_W +OyCE(ezFVz0KF>!04M+e0B~t=FJE?LZe(wAFLiQkY-wUMFJo_RbaH88FJW+SWo~C_Ze=cTd9_;WbK5o +&|IWVxr%Xq5MyAu|o9EOUH&Ieg^YGb9Iyb!zMUjxinj}~Pl&!nD``d394-z0K)oFX4Ni30z#Xf%f0z8 +>ag5@sfq-0rJP*OK+pJ$Ylgw%``q)e)0OB*6~i6AY97jGHc0^wC%lSQ@7D>~)D>eKDJH&moMaz~qeo> +KDHoe(v@ytqgU)@IRGE{alCULm_o)%Br%VGl +C$hQqV#idIh~QIakk~=DXdxUXhTT?|5im_<{}X}tN0gV+$HlW7`6&K-%R~a^ud- +Nj=71X_m{g}TDc4v8Dv}F;@_|%LfaU>`tw8~j?if;RSVIo1Z3qZZj1Qmgm(rFb +HIo9~OYxuOspg){-=-&<*4=EfUTzS3@tZ$U`o6o!n8cK`yPW-0h>2@Dj(pIFGYgh4iJGjx454J_j8*&;sJM*awK4y2Z)6Ydhu6;4(79}w>Yv}GHC?8#SHL4c#FP +ggx569HwTHX4J&{d>JCPgmR_wu*yxay#cE}8m5j=2AMcYU2UAhrhbR8Ly;{Vd?iTUg$5%frmUr>@%jM +0x>+i@VnTn>R(;#>mk?Rfem-v%tBdZ=<`l$ih1K>+_<_SICQt3wui$}Ja92!0w^LMSVe;%06)VQ?d@nw#XI +;2$*g1RBxg>b= +}Vz2g2fOi$P8t$)oum-dmNw71t&87vhRAsR8IB#o-d{}#IuY{N==J~&5IWC#(CqTQeUyzb+lQl; +D$TA(*{<@dnsCDAttwYsXWxKZ0;?b;=p_B*)xxq-F)yJFV^~Vo)+6&*&1CtFQ0|sdVD4Y#EqPqjr^iX +tymOv(X{E*QN=*ZFShRm(FN`oWmz}stb6iY<5Qt;HOcG2W4u%&>x0LG}y8V<^R$?eJD_ekV9!0yWIlrYR+6Q3DCU +A@f6=l5JfTqTmB-jLcT=LwdDii|KiX$n)VBmCg1H0fqHZ|AXIx=Wr$O;?l&Xl**tK_54oG_A}^hpbFC +Ge&M;4P-*hU{TI4Xmx=ZmWzvqZXg9h?|m_xD|ezSqKS*(V+G7Ims@6{@hCd$$nkMB7C%r@#~!;2hrtA +khK~YwMNeoxL79_XLiBp^=IYbCrJVr)3$)R~Tfm2*wKH1ZDo$@;+K@ +eZL(fg!IFOnN5I{DiU8^^gL9XnD0PPustCm4!${9X|Nq}Vsov)l+=7ocs+Zw8{r}7!m4cJ_FUdCwg^7 +{Sady-xmyh<2|gCL&1`4jz06>D!0zHcfHrfyZSc*{NMla$r5Qb7}P3^t86ZjUNshr3&hbUlk<--FHAu(<&iZX-(HG!D5Fr9L@9nK+sh#x9;^DKO^5mu7tkO!1!-gMO07Xf~m<`b}4<$a)pjm!5l0Jdq6|b +c&}Z1KO?VpG`*Ljez%d~KMcU|c;fHsCi*XCRVUV$$K^zLVLowV)V(IK1az&#VZ?8t7nqZmFJAie_@f8 +OIgu9tfk)$Y8oi?iO=Of;X+v>z2%VnGNHce2n~@lArDW+k^ES|t<5*~14C&w_mLFg7r#Qf}0(PK|YQ7 +PTguI}%jsa;BIfu|$=5J82ZIsbs(ne4S~<_3u+DM};}y7tb}+ +^VFm(Iu3I5nhygcjC;(V&ukMz*)ym?LLydRsQpCObft;p0*?in +q{H~h)p>}PwHPAa~k%@gG|Cq(8&6KTQD$ZlbLeNOnBs-Oy}qJ+z|;9^ibhu#W^Dr?*{ +fUObk|n*G$SzOC6Nt_5f#8vntWg>LxS1ETNm-V$VE7r4f_qVC{kbuJLWFk5%c>t`x!fq*))=6sN-%yf +HgVbJ1Ok`)V>i52SB~X3(QPk*<@6k0XqH%*4)p~u4N0eUk&W=RujRjJpz^;@B-)M1wAiv@CuW+EiTYy +2GUo2p{ugyIT+kazMYSmCWaR-rO9ZchIC0)sTfeIhcT!>nEjos(!KGs*>M|xvDW`LT|8{ey(eFwyiC@ +kr!Xo#o3j|_dZN37<>bgIpjWZcx_F$32z!ku&h{1FRA%U;EkxwzdpzsLKMM)Fa|CM#9ywxZ=pH9+6|wRxk;pKX7U`#bqr_yq89aV6Kj +I3*OYSy|0{wCT5OXrCaN(cNdKXxh`#NgbMjh?v)G0jP(8u{$Gk2nqG3J`vXZ-GUmg&+A2IRo~zXmi7 +mL?409nMLGO#y-@^Z~P(JY!@ +$(zk=&Wx(_`{w*S_asId%5dSp2TikwL+{Skw-zfZE$aIY%Xwl%~#)V+cpq>_g}%K2qbl?Vz29q0bwvQFAbKaMdP9mP9VtA+ +2$gP8c9X%hW+omBPC0++;m8XVScfG9PhsS?(QRXa&j`dUR=FlajCbEYo5fK=NncCk@+kUxt4rYYDn4Y +GXu%*6G%ZSE#rJNx>TwJ_G~itnF5%yt=7f#>?{!}1REhX83c*gofT)L%rd@udB$mhI!i&vJo|~K;bc5 +IK?G|lb}Wk4r7k5z5#zf;NX_Dv5*Y@M?ET2vWn!}-h_%rM^c6k` ++TF7kJnXk${u$$h*56)65G*og$8?Y2@TMb%KV +pRbFLy--JB+MYoU=idM9vWdS +yA~WDEju<^H^>a{yo31=&FX>g-pNNoN9U(2{MiG~JAFZrm5B^KYl2~?4B?K-!&j?X3sF_7aJxd=PUmgBpiEGUBm+fKCFa&p +(VK(<1ptkW7fR1vk6>5Wd^pRso!iEK-*>Cr8gTy5ifur*eY;85H5ZD$5-LA@Z7d(a(kyHaVk0(K9DW} +<+cRa>3`lkhtV2MvP6655cE27TChxr^EeihUol$=(8IG)Q4pZd~U^W7eb~2CkXI?#$#OV5g~7Glgzqeh}1fP;`zq#{z=?8U(xz5FW;q*)AvulyVk%i +ROp4Q30QR@-Ox8o5y-f80kuaf{~h6=|$v6LT2^!J +V@YmAaGh*z48&JNo5`=2pO}7ma*=LUT +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 +;ink<0pk=bt6jB{PIy$N;!Q_sSt%S}-a*GuEc +t~dn=m}Dsv^R^UBh!phrdX>&Qkm-`)s1!F(?S=hqXc_@-Pn-PV|}W|rbzlXP@6ZF^ZKz9(YSo3%{{u0-6;Zj5)KFXJaw<)CK60IO|;+F}>#Lz!Gq9x&x6ZJ(>-y};nn>plHA52A! +BKKAx%uA+2B#fqx~PnDD+A{(oykzGcOR6(QB>FUj^A|)ua09#v2C@mzN_NeHH+J;tehe}taRkPMK_yo +{H=3*ZStK%m;BCSOR(I4GYA1)J0Oomm4#UbdYN?Gmz*oETZP*Gj06(cT5HO9iHp!lQ)trVOJa7pd$O1 +Wy~=Xzfi+#=W7dv?RL@__`9%WvLuW{gO!)p6ZQ_BmvGb)fJOqIbq4bq3(78M~Qi3{;Nh>wJQ99;+0fs|EF9Oi9&46G$I-Of>q +|$DXYawC8nmVN+bNQ{&poT@gJA`UlRSLT7Vt8VcVKTXU*7NVmqlQs?x2-H5u +kROy7vfK8;w=4P;ze!-S_!9RCQBx#Kt>~$YJ9^f8ZW&!6s1AAD@nJwg}A?5CfW-USAA)`W3C;6?lUEx +>>1Kz%;+G&i!1BHg>4#;py*Oid)*{DYh)hQ9H3Ii%9HJaPLX;xZ`$uKArtIee2KPeOSD`{&@9&!PjFv +e1yz*%Y&$O<3SUTQ$Lz^?g9uP7*Zv`x|Yw38V&@^>C;qq*ryVbvVj;Z==MVp;bFB@S3~eygpK!L_#Ey +m7kZiY{D0vsC;ySY@@%gDYdqzENmh=K*W@Wr&`*!&PivKdx2h0mhaw ++3n>g|DN|{EC4rpOjclogLXfo09w>Alu+2BSl;cZH$U#B1OII>5n2Ng@_m%mxFUF{A#FnA{_PD}n2`A +>w2daFKXwR8;)MUwREqYy=q_;kWx7hFnB*2h0GoC&rT;~%|LRV!^1K=@BJma&EKTh?-cQkX@Vv~vAi~Y9p}d+&!OI7z?N$F6w+d3*u%?|1H61JQtYUqN2X +@iOsrv%JM_-4hNEF~>(-;$;VdZ#&A4agttd4sezn57YE)Zh-e(WrHtaz)yT8#p8Xb;#`88IFH=L|Hbk +DlUhg2I}+Jv{z{o$BqoyR}($?@rPB+yc}MMWRdkqRTK7k7xo=iCphuKP{;Zu&Jw9G(SRgXm#M`@%_c9 +%2qCW-QpUpqhlJrDj@D59yanjb*uH3Xi9jLJgZi)Wsl7_-LsN(mXNOo^ircaJdek<<{fa&Y|maS<_kV +K=^1-m?Zd*9_-73-J`|Uq$HD~5TQugYBlfiIH7Z^&3ydaGKH}C(z@GbWZJ+vY%LQyBX!0d^sfZ!S!QG +E@n>}sQtT_vG@8eTAZ9C#LO)Sa$7L^~5u;&S$LedE>yw3sAP}j6autq4gsVGcK03t#;t$?n`&92ogFy +?^P!FH~Y`tuA+TQsPw}u}D-;B`*FUfr(T%VhP*pP_Eif&tdY*yyJzIJcGp?=wPG~1-DcSQ@Uy0ULHtD +l;|InL=HCZr*E_4g6p0`}01Y1-N<{xlGd3e~UbG}u0K?UJjYeLO%i8(G9AB8Utpbi!sCWEf!ln&9med +_YF42dp;fp~;k5f-`um9h&!Ah>1W)NA=?%3xov)a8iB(LMa(_lTe8QyvpXT9w!rKCp=_{gDTS5Np=*#fI5QZZ!y6hA!2`uBHwm_@D1hwt#fL8 +CuGmm$-)3O5yEp`5ffR}Cj;l@jbb$ox<7?nmQL357Ye+TGmB=t7>S?eR7d~LWNdGJa|FMoLeY>S0p%D +HCl3c!lwCs!2*Of381CPw?`;qBAO~PpFB}{wLldiknN(PF7X2opN3&#AYk{=_c)wNtEXP&@@UJAN=?0rxXLQ0XzvlGH!80A+Rn04@Lk0B~t=FJE?LZe(wAFLiQkY-wU +MFJo_RbaH88FLPyMb#i5Na$#kzh<%>7#(Rebho!CChvr~ +Ji6hl#v#h4s53!yTo7hg@pI +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 +GOZ1Lq^9NbMB^5#T!Y +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 +tJJYn+D=XS{qFsP#R6tL#=;-enD5lE +=>4kIFqbPy@OvXo2ABEgbHG8oG~1Xn^%AdC7E3z|uU0aTXuA?3hia*D;TBf5zG`~yEtByUQCrb*Z%p! +amc-;djqdC#(6t&_oA`7ODaa0;m)?c4=vjzOT0k-mvvte2sh~FuEIZMKB_YM>Lz4K?qboo)1R0b7q(j +@f)Bu1#R7_jOrevS!bp)6W~c=l +2pOPjYvc$c_a%J1AF*M)vjP8m)11jqwd6^yt3{N|;7PEgTT2&+Z^`O=V7Z5N$2xKi; +KJywQup7BdIKQ)e)m43*Lb|Q+VvQ);48PwJhnut4;5P*2^guj=Qo^YYU6LU=G)wOX8tXd7-CDEEEpOt +8`kMiAl{0gkR){X0~Ht=5(jM(bsDvg#2e_!|<#`M%W3&4j +Fy){f%*!QIq_VJ0v-S#iK*Dk*$_{2-btV`KPf1HX-Ec;n6M<@I-2H(M5E`Ys6EA@lq +Fexp2OR*VDax&*a%bKTjE7_A<)v3i#*c{TlyrqU}%h`G%%i=Urz_Hn6!Sn}1BiqDIH7YBB~RkEeL(*D +`XN2m%j936dqOo1`Rjt7llX{gxw1TE9nZTY@rxoW%TgMo9{x4DM@R5Taw>tn&)m$Y@C555r56 +5N706wCz7kzHSq5JBa9H#x?i@HExn3nE2wnn&gqa48U_G{bWVx}Nyum*!fuUw$#m6@6fv4;2ul&hTo> +;b3!-UR%j6ylSoYH5#Vx4nFhjXOEiVbA}zKg*8B=`?RokEM@zF->n5;9sJmP3mof&ZGXbW642i?8J>l +V?`z=I_TzS~cpl>o%I{$4T*JzUBx=4nc*K{S;shC49BaG|tO50fGWJ6IfHz(s-bbD8#?tD^#Fze2@7& +JN0bJ{3ZAVu}e6hyAN{?|=`vy|0WnZ%HlT1^v)iA-k*M<{wgpE2xIa$_4Jt~zW?4+Hpc|$q0rxab+ZSgt!HLjKCTG524kNlu%O`IZJ4SDADV5M9V@Th +Rs*&{A$pR&{gfgN#^*P;;m!HKf4sOkf7?Vg+JMm!t-9Fd)#bTv%_8pi)^E4nW6wt7w8fU|ZHYEt#D~7 +2(zJufO?|Le(+cq{VTayN6dz2d9mno`&srvUnTNZ1zSg+`^!j#6fna`%-jp8y5}S;)_KvI{)o5;Ipsx +f))4ZoD=8b8K5?{%snWxx;ZcNHF8nXSv4v`bw;2_)N_?NAkLpk-tHpvj0;B-pgx;%xBZn{u)bDmlcA& +Ffd*#i;tNeJA$$Alzjt#DtTijC-OI~4X}Et6&kYl;Z?wZ1ipay>H2!Jp;SUH!XlHMSJzsXaD0V+p@$C +1Dz4iF!jqH;O~~lC5~CJ}oEOOa|cz#cP|;#igV|-W)I>R^FxYe0 +fzGc1RYr?^fia1oQ;(I*FBQ;i*<>(4LaGU-`i5;cJ34=I@fjzo*|Q>{mWx|foIX9Q)!qQ7R{w5_CC%k +bq^%@7e%@kUg2X0Q*hZFO09d}Lo8@cQhJFQ?~sZeyo@@g_sFaM__DJD<=sWZIu5yQl~>oaPl_=3$La9 +kzX4E70|XQR000O8Ktu6NsRW>~eFp#l_ZR>GBme*aaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~Ob8l +m7b1rastyt@C+%^*buD^nC5bUn8mhX`q4h#50;3jC$UTd74_JSf%xYDebh(xL+<;|k#|9&%k=(%#8Hv +7Sr$eADK%^5vo7v~o&SA~%G8`jv}#lLAKIXgQ`?)Jj4N)=5BNFgm3(y&^q2VsPgykw@SYo#sQDa~$wy +#DT%c0UU+Y^PPl4#Mt*Od4I5V*AgO_3;9$@q91X($tWPoyd7v9+}-k*m%VrxE5U672~o<+~P}wQVb;D +B9K6gT_bbrL=yJ6W`O5{W+<&iG#b7K +xl7smOZHJkIpF-g9Y>LA(oq7q(k4}aZgjjEuXqiG6-cv9Kcqt4xEQf;7cStM{_lfdU35c92Dd#$z71EK@h63uDcnmZ{? +J&O}QP<;b6$O2@3{Mpkdjy^J{^srpIHTo^Qve6_$w&ADY*G8aIoJm61``E=8RkhC+w&;+GcrvE%hV`> +?9et28_6DP@Qkoz!;3|i>W(J@SwYRo5o6F0X_!@YDViYPjsZf_7FHsaQ_L8DZi*35MRr$^!q(R#c!G+pXXEg#eMJy>JOY-t6Dr-Q8Tbdu#W8+btxkDL +}1M`54Fz?oWVdu>+e%N}vp42d#d9LxquSR^3^8=&;c9_vZ3Y%q11Lbbb +&bhuf`0xDFfu6$APHfyyGZ%-M3f8`2o(v6GFBikj#j0a%YS7D(l52;!N?QTOM<<<(5)K(D<%I0X6cwT +0Ys}(pDa;-@keGMCReg@EIwGeJ5wzOwDfZ(Pxs1L@354jxmR}L&sjCI#~Q9qM2Z*OWDlUJJ6e3010 +eI92JrhN$UHa6_82$q&vQ4Sc{q&_cON-Dv>P)Lgxz_5T}X49mv&C^g*xq-!poHE{5;0bU~851;@*|2L +9M6a55w4T*T|{bIt?3NP0p@+l}WMZ#z|Z-K%@@)zk44+8_6Tz``il!kObfe8*VKaprNQPAJPR|Bd +E5u)H=L9L3+VF~_58#rt=MgBsk4V*W-`&FD8f3wa#$uV7p(!gVSPw)Ict@ayig;7mZ8D_7V4VnYh^)7 +va3a7>YGSTP7{xXp#5OW2hms%A6-@p!}5fAtl#}TtvODNO-)2F;WMf!WMEgy +~!p^4IXleV1{O*!lKJB)vwmMYm)8L48f{{FW$<`6H?fPwe?yt9rY!ZxON)43U}K#kjBY}v}O8Z_BaCc +63wdhms4v`CmKrpKPv>9Y#$4ePYQnqlL)o;Y=D%f)6fEb@4G2{^mZ?uuPqv42cUew3~=7B%U_(bpjy7 +TtWsd|Ul;F_Nv{Yq!n*&3}LV-}~(D{mttvd@t+sP>YGAZ+O{jaG-qT(EZmt^-ecWJM_h$I`hR})AR-Z +dZ&&w9pC=`Qv8XR4a{7IXYc%%UAnixg08SagaQ!-a-S>wJ=o^LT<7mcx=2Ow+;Vg@qnZD=0oZ7=+YGH +U%=Z2ew~6L<&EF|9H?6f~^fn@EN3u+xbZy$a8d12>YUA9~ZgivnwD$Zm{>EX0=_1&D0~~vE?oyZtGDDjDA5cpJ1QY-O00;m;L-9-i00002000000000u0001RX>c!Jc4 +cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`mUtei%X>?y-E^v7R08mQ<1QY-O00;m;L +-9c!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#5b7f<7a%FUKVQzD9Z*p`m +VrgzMn8E^v9xTYGQfND}{_PtljvDj+c&gd~$$?VQdrW`dRg!ep|e)e0GCf-lDH^CJoS>94BWkMvjkBazczsIa1P9lOMU-9o?PZ}5UokN9)@;K88f0aF0C!`0bVFXK>w#!A9 +943nEek-8X_H6OvdAs7H|HK<-r7AlV1Q+=T*Ezdh+-3JGk4Ddk8J45N8#)hWPtGLoU|^e*t!Y8DHn +DNe^pNAM)#l>ydchiRj0gAaYS$reYAyF +pZ$S6y@RjH?P +xq&d=u?994#g&dpMmFh0K)sVx&Hdl{uL`%x6G(#EDzQPxx-znoUs^jvM2 +e4$0Scy8FeVdQI+%3r6bUe_Y@Kyta%I#Pa>cBvCtc>p4WT4zDUo_4&1xdnABo#=>NbS;f(pebXJsiOdyq0=~ +nu?L3?vRrNhA5#8uNz6S)2E?GpEa){$@x9Rq%N@(`Av^8`pBSe)fe$$|B-p}$wG8vGOcd2OMUq**Fmt +nXp!+UO+wWiC2h2~R$TR<-OCLY24%l}VuK{}a~?qXne%5m%+TE_0jb*n>kMB$5Gr5C;nsvI@s85 +Zh?18Tg!k~2w|Qr8K)X@5+4`;fdsGk2w`D-&2aZLXd&6l$OSPjh +yW=^Q={L_i=dBh8p5pqMG<)4PxoOF;p#yWsya<2Jr#4JBraJkR^tzoJo(FCEN?kr7@d5|U#BmNy_|fb +9=$(@vNy3jmvRVM&P8alkkBM6i@wX8--De&`%~a#Jap+l6*R|Q_g&WXTBjeMMsi=wayp3CkUTPp$7|H +5zWN+vjFTgN|0v(1i`$@B5@__@#=eSQm-N5h-ULrbGOr0)MT-P|Hi|zy8SXs27W*~-S43|_nZ<}<{0= +iqiWHb;MIsC9}PPb4P_Qj?sYauci4%ddyTtN^^YD{$<27j2leU9=(BQ!TF3d>rt;n`YI+KQZzt>%TTj +6bqOa$PIsp&XXDCf2CJKzwVgpS?0K|3Z(`d^N0q7E)ofsuTwFtqFe2_&K6#A(i&#Q`a^unAz@OUMq!> +R5|kLK5o^ddbGi*zkjF@kDOuNdBeX$%Xsp#Vlp&f`pj^RJq6_{tAG~jU{o;eQkD96<}#nHnU&I_k5$u +wd9WUsKF!uJm=?eJ6;?pE^vdhG1e@|!i2^pUF68wB%P(*tubn!`ns-fNi;hdP9O_VKPOLuGDW47s!E# +-r;kyTsU8987Ni{(SmIPwF{7im}vtZoE+EP*6wUWZfJGsDWRnkQ9B~g{dPNAI22ucf;0w^ykNe3a*?^ +T|{m5OkEl$IJfa;X!3p}xq2DHrE86tX0`qHLPi6?MnDit_Yzw15NaDoBymku907!V24`kFe^)$SaFVd +7xEv(JTapq+m#}x^b-4%Nt6>h$O+fd~o37Q{;zsU%#m(a`P=ne(d(LMV`)q58w4@0SWS7lBwftu1=3REA@sj(Rb_L_%$xN2<1-HBx90c~kfo6H)-O19OCggy +cadXm&c7OsU`g~Bs7;)K8-O;L?k(x&n>s4W*qR;LPM)P*ihsXN~CoP0*9n;B4!fh+1|!UN@~LNzr(9Z +gjw$dZ^VM{-);$+9Sczhh8k($gBWAh(8TrxsFKZC%iD^qv}dskpCzmnb+P)&^`3*=YiE#Q#dnN$To=y +ff^Lw=AL_P(_iKzrCS6&AtPdooJm_mCUoT|mVKhbo8y^bQ7UQdGk3fHyau9sNm +o|Y8qI-p!zO|0JqWqK`Nu&}IQ#=8uFuB_R(<@49TKb}Z3+D{6QV&s2Gbi5DdU+LNtOn9e{=@aw$NvL4 +_9`GyNoYi(R%4lEdYq%@_PPmbnT3E9>Yb8=xd*blPx5?gzGTFT=Lzz}mXQjd^p+hS68m2?i{HQE$6A- +m0iIrOZ97sGrL7-kuq*XJ-qk3vX)m{uMD4%H;0n0aXw9Q(!)=O)ujqOWn7Ob+sE{nzlW)*@WdGdw|Kk +cc7Me#Z9NpUBn*M=9VIAL=PIu+k@2z%yf+jp6L?~*kEwsKjAPU)6lr{-QoBW!Bl{M7YIiur`~Ra$A?H +B362-kT@GjU-eoT=F{JiOwhs(C>)Oc&pW)|8Mt7QyWaux8ik3LYLl)Ne^t&!B&3ZA(KjnW?AQ_B&H70 +(gitZq>l&F1v%pM!Ct`@V=hU>l&OSUKqei%d=%LGKnw3i# +pN-ioy658avT*f&kZpJsl^0;=%L`E +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 +b_VWT}7#=@fzvzy#_ +M12FCy!&DX8mFmVdJ!p5hz*Yw1y+I51M4SzS9XqysP*7#;|(!n9#ZxmigLLAzgORB ++i**xG3^`$e?)^3+&~S^QOx8Zp8OY%$lV-7D3IrG^d(d;)JuPKI2>VyM8mv%Yjv2vQ%T+Zj+Lq^_jh+cez-3a+ea5=4b?D6?7%^&>-g-wJ$UROU+>v{;tnxD +5|+nMWzz@-WK{{vcp%ZjM +!!tzV+d<^NswnKD%S5tT8T4wOCnGf%Ol+id|Uul~f<1qoYVm3)YGU-biXHuw9t3yKwl0OuPkqje+UDM +{Pd!Dqkkcc{UXFL8UVIO0_`S1=KkQfvs%3N4}Rx-P~;ob(5BMuV8M)$x)ETART*PyqSR#5xP)kNjo-M +LYE+~_ev!uAL2m1|#EHt5s=7OhIouBduuD51O1FA{Gq>DDvXs^uKXZ}^ne#!)H?Y@Eugo9Rs8i$KFA4 ++ylRT3ol_c)sWtP}>v@4oC&iNs~mD9=-@LmY%>B*7GG-cPDKqYoziU#=(uQ$_&!8WeAEwC-2pOPst0( +b8y^l8xXvZ2wyFDA}%Dppj6uy6x}3(EzvB(I^Ix+FrZXU0br@&dnF$%E$UGlsAC{<7YGyj#;#$@P>-I +7#*`1pIc$wpaD}fVfyBg`lX&oaXl>z9hBtTwW2mTRU609%wm@@V1l{gX=#bdhI>7J}v1EK8&_xy(~fH$Wq((JRN{kqI-k*u9yyO1GnMb2xmK +HxSub5bD65W}Re78efoS-i_SB!ax^3;(wN8~Pha}*7-EF~xcjfPlSlob%8oP}71&!-oam@hXeah~GZ! +Eo&3*3uZvs1>6bRGfQ#kY9^HAtB}m?1fV{1Y0FISLu?8JCMe8IiEW;hBr5_Z)he5Il9uo>%bPEO$bc? +=A5@d5YgY(nc1z-2Xu;VR>cBJ64feu#fKm9r5qYwpp5hZ#i3uIEK`rW=ROEC#XQ;(7w%fE=V5Wh@9uJ +NcW=FgB7BV<4torNdCURu7coc7!uGY$0FQ$8#9{>3v68u@p%AK53g>a^-@R(>n=L1J|1cyMKkEJ!vPM +7+DnK-41;O};r5=T$ACEupSP*tvp#alIY` +u3-w8tSV2#v`{i?`-)hH)d;2vgo6Y7M2CAu?Ly9)U3&+$LE=W9#JR)b8)m8>PV=8{H(w)5r-ebFLrbT +Rw>fAMzGuaqQ9Baqjgz(8IZ#8-CZV_73*HI!-x`zkdG>x8FbN0XqgI!|TB*qw>9I{$ymG@tr53IVxn_ +*B~lIE#g5K>NM4W&PB~egcd53c1-U&8?gYL+;a(VUWA33?jSM6w>G=4zTzBP7qfx+W`aAapuMJA94y) +0ZK3+0lKv0c+v~(Yb~^blP)h>@6aWAK2mnAs@l20hpnOmO003bYEXCaCv2nK?;B{3^m3{yt1R(gjdU0|XQR000O8Ktu6NM!}|M@CpC`= +OO?AEC2uiaA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FK=>WWpZU?Uu0=xbS`jtwOVa&+c*;bo?k&U +C~PkjC+Xd`*xG>4-kr)F{CP3|YXrZ(#a}P+*DJ>JgcYaaG(S6M?_ixUju< +8VJr`l=)WZh-r}uZb +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 ++GkBd{*JTP@Lb0pA4vxi}bEeiwo#20jm$3M +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 +_(L7JfUXUW&hX2?5-*eG&f4_&;^MHGd(E&kmb +fX)2+ZR#5xpV6*w|FIT7k<0{+U4===fNuMgM3(p+v~-4araz5ws0OhJ=vO|cloj!yzb2wWcKi9MG{Bf +aPw0Wtb4RFcYl`_#Ho+gThvL_(V>rk>xHr4Yw$o0C4lc3zXZ42lP%G^#zKdz_8klo{lL*6k#`J-4hEk +;9<=iH42Y_RYyiyu>atgBN9&E<#nIE&eJ*+u7`y^b*`jvnA(;2{hH +Uq>9dv3?B#C#YaU4MRKaRbbd%eqh@I~~f(D(Y+|4+18=6K}?M32xI{TywoUhM*E2>(VHH<)7xwj^|WA~E +xFyC}_@TC|B?{;HE7Kff3XK0k6lF2fB!ZKM%kmwTSDVOCcQJ_l*d<#St!&9})mpc|hmg`g%<}QqvZm2 ++10wKybm8wk$HuTum0w}`At_GOtwiXnLt|nA6I@(~Samp_A!Sx^T!i0mjt}*xyy=(iF4OI7ELhl*_%G)I~})yogumg_c$*VT260h-pkinB +MLb~bfA2b#`4V{Q&06PQhBtD^T>B}y!+8l|i-UB;Pfo?7+iF09TVHLctO=76PCSE9- +wPBG&pOqaboi{^O4{n96)Vjf83xBQMQEzGqOaGNY2}UmvLPsU?Rei)zok6{><3bQ +pbv6Qju#*nQ<3|)a?#9Glz!&b+Xwyg&Z0BSgf$?L|`KsDUb5_Y31m^KT5M(dt$g@vzu|Ly*<&E5eW-z +Fe}F!UMAC@9Eod%VdJ#GVX-*Z6EZ7&3-AkN +EG%jR88%-A>U7hsjaMK|I+CRwlvLYx(IQSwW7|j50`_!tA6O>_>2CVeQ_rLSRkD8DQ$^DfEv=UMPuTK +Om^H-vLeckc%tc$?ia{9|Pj8J51N=`JIx0w(=AMko7DU-Gh6R){_8`|@(2q6z`NMEzs0ZJnZ`4~VHtR6@GP7+5IHPGKg^rhnybh% +RzHPkPeoE_5YaKWGTX}fAs# +w+$EPVe1RdL9`6HFG214Z*=;OHcs;p4EDX%BkRumatQvgs#V}^yr`eJQ_3nfd>pwpkN#>JU7wX7loF} +hq_u~R@nxnch<6ngE;je|Lf~p(-apfXf5;Am<1hZ`RZ$MJ8I};@p3X=7Q<+`R`K?#jW36f5qo56ZAC# +1-7R%hXI6E&M`dX*z);!eY2#j+SlGJd82waamW5>4LUKTh@|?=?jjT$!+Hk2gLB*W-o15MVIT7NM>Va +A~BnjG(!pN#)SL!mFdvIk2ja{|9te(yq%t?ShanCWr)yX{^{n|4~9|27JpK{u)v9d%>X=9cxTcY>KIC +!m*v2=*MEU`un6j%r0?FNo^0HXlQa5&krZNo?+V6c-C$I6yQ46G7tP%}@|a7*syfXvWa7mf`6A#gKxj0JlvkZ5c6HXe22LClcIV=_N%43acV^yQ7e)@{$gu +>tt}krQ&kKF5E%7AgdTPw)(hdfjID&NeR=LiUiZ*l>=GBJBYBCe#t(q6c3b9Xq#Ly6!M7-g?v1E-%=l +vb8yGhQuOfIk>1*SJ!hABO<9;qR!hsB*b-SXN|J45^ye4xxktt32-t&SV+;)vm_xE&gFz5Oxm_~CE>S +2Ixncb>zhR&%0}f-(NBr@7k!?dRG0NQx^c;%VZ|^Af+p+yaWgxB+U{w;flQ^LOGk5@s(ifQ@=UK%90e +GvbOFLWL*}+dGaLacyx3;x|@esje8E=mv(AWrS-4bFML8MbGNmc+}v6+k&h1_FsCR_)QkB$+t=HHp=!K5K`dCq@G5`QZe-}lMZiIVqf!crih~bBdLc#0G2RV)Ap()^rDX@k%8C?OOWluB(P~+z&&8sm +d$@0{clSqn6lw18LhdyqBsuLOHbd!q=BQYYY`0WN)1#cf3;nyO+)^bj-f;U=@fP1zaK)-d%iR7LwM^5 +)>IaDH>-R71zvq+fRf8dnD{vlG;`LdN)~xH8(DKGke&37e3C}(O<@8|pD_0ksQz1~+` +Ts$?Pd}Tc^E`S;B-Kg@D6|Z=rn<@DN?0u_+Ju)%t{5mM9O#H(towpT( +5tDNk;FxFo(NhLnam6@Q-wyV +c>qravILb3HJ2!cgd{bb+E+bB63jCJTISxN@+8OdbX*QWoHywtP(|w>wL6WkOX0m6l^)Au>L$X%{}YT +;2=4xorP3pIl#0=gwrYnEiT*A9-2SFA?O4kDn)MLHc}sHo2KD47uw{F$#431Zh>-FX&)xtg9 +OVeia=SS_+(Qwy5V8w}&-Csw$QYf0C+iGNhKXv_iwc!E|J1;S+Q>`9tLehT_@|=BvXsa%EgrpccNJ3h +AH9n2|cLe~inzBy=PCHp6>znU;9vo&`R4QGLL=ZrppUg<@bSS_OR?zG&S;{s0Ri{2G-y+Et$?QlELE% +R{v5BrwV`o^=%=H(yb;u7{x~4bG`dQmaa$eqxB{fRB!2d7;qp!!hh9MN@(tf7Irh5>0tGf)#+~76BeK ++M0C1z?dCn95<5i+b5KBG-lRl%>MmbRN5%T4 +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 +3@xvte@aUj^WMvErrGEiB4x +j%0?EJ&Yo8!xq@t{*Na4?OHw`S(J?#tfH)>`o>mzeq2ik@J&a$$bbSy-R2gU7Hl=NT%k2Lq)ShW@6wZY1x}TQlXuye6Fd`Ku5^9{=R#8TaDBB93aGSG>9R@Zc`kPIPTtew9`&wp`^s?ed{rN{|t`WUV=S7= +rjc5mjMnz72Qbx=WMYNS|IykG^U7GH^A?&ndZEE8I5x8E4;UPRS76|YfSxDy^afKj<62U<0S6Roaj$--e<@xb-~vxkpIVz5P9cA10bnFqkc-lo0AV$v-69q)AO_A_benVd^q{ +X$I}ldZ-}V|1+zJaimvMS%WN;g5ak-#-+T-CPxB|A`0KuP-LSdzPh<4t24)z~~G~!~DjP8}>3 +DxzGOTvxZPUx1I!=A#`X%{Yb!=Q?nz^D%Zn>E61t$qqhAMAHR8>>{H>_b +S^**{FTCn8#Zo{nrGbyA-g(@%78zpXuZbq|~F_3VDz8P?-keCkxK2}9U3*FX4-lJ@5%p6cVkyb@)?&+ +J>0|XQR000O8Ktu6NQgz|KqyYc`6a)YOBme*aaA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFJE72ZfSI1 +UoLQYZBoH*+b|5h=PLy4kPZm?2Rjr+h7}mnAWjcE5sFPWLTpPV>16%;NwMhK$$T>3BdJF|*5q3QQ1{X +k0vOi@Ph#wWebWoV5HG%&pPtOYmZyuQicRU;V8tC=pNQCVoZn``LGbe`R%ze? +1jYY+i=orGV|9*X?=}vqq#?KfmqP``y!~*uL)e18$j-1Zvm4BL#9@ZWlHA=8RA#Hjcn^IO#dZ3F5c|k +$?-?0PM>X#wOpha&ayCUgqMu-8i7kmz9cK$JHROM#HFIfA7sxX1ZX +-{(Gboa=bakbgvqZn^j@6aWAK2mnAs@l1@g{2Z +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 +{wTY%gk_;J9J~FaOhss;=M#N99yaRO{5_ +@6+5kEO()@pD|&ylyI_P>Lii!60!~tU222_!ks*o$;z-WRRd({Tl{^Q(EQt_*gy$_~e^(+mtjbI-<98 +zTQdU7_V!wKh*3t%`&zw1+N7No{L*GT~dYD^^P?MP?<;=m<&W7v#KC!pifwa=WHcd#Wy0m2ii>~615r +P91Rb^r`dr$NwyWy{%y|dY-te +3wLKLN$`ag7*keGz=I4x3O2u9z}7hud0KAb*zBJTJe%pI+Z{gY8BIec5PgD6kb3>LtK1GN@6VC^&!72 +(X455J>?p)ca+uRqp`nMt*rPQtKX)oI078R&X-&kleTME`R6l4q4zF8??#h@j$t_I4%V1RUI!{BQsUU +^`6-tkdOxVN+!3>df&yk>^#GtjRM`RYxuacxlBMBRQ$;`G2v4h}O1A6e8q +n;I1?@GHxk{YsS5E69cGg7GXXZX>n;r&=*^Bx{j~d@ab-tbo-^*kw&#SCQ4|wZIiX+dmXJC>uYQVh=N +b+qA-62_A|gA3RUkh9j@w^B6Er6b&IonO)W++%Vgs0Bt6MBgG0AL2~%H*u(Y{d6llR`;%R|-N}6l?+h +)zCTfJnCKq=H*f?Muk!%HNvLa^qO_8F-V4Ff0U_q&J0P(o5_4$_WWaF4=M-JaKLm}$r?m-1~4hFpsbQZvKyAA~1BJZ +Vd&dNJ(wn%0?mivWQJ!e5ELHIWFA6BulVl}b3lM^w9_$&x<5^!#3@5Mvxz(1@lUTV7xUMb*NYwla0h`pR$1u~JgBAt&9^N)b#`7Qbq}}{;A^GgUBtB&PegRSPX=&zF+Kw +n;J!~OlB65Y+bNUM5Rj-1iRIG9-#k$>l^bwDtmi)nT^A38P55WBJhGI|IDEBjvH~Q=45Qd=;tgNJVa3 +&$dc))!GR^^gz)IA&Lgf0GP&v-N5`Z?4r@S|Gf_(w{a3h3(v+fP5Y!4?U)E?5jN6%+w6Wef5WZck6AY +|VIxKySnQ@JV=;((@d6IcBC;4}Y`J!ZjE_AeHEu-P0Xd)lddWGC!Yr_6+CVg{2eX<1)SsN+d=iV6o!O +gBxwo-QL|XX&tJs9|>X^CX&ptC~bl>Gw1E9YxVEMxTlkOzR|xTwo#q>1tNwTPOVkq~`txdwzcLx3@1} +#&6F5K7GxUM&rGUWD1K>~ERw>ckZN^N +M&=Lfg56oZ_Bj&hj&7&0pah|#AnE)^ZvP8J)c7%%k~8Lg~Wf)fhn`VLc_t)Yl!=E;Cx#U3byLD(k*qGriQqJFHn1iu75WV57fqIZCI#(cy@T9uOkOA6Q +I*KrOhHs)iiXQN!O1x}DLEWNiRb%m{lO6O_Se;XarKY*{N-YP6<;sT7e8Ld7jIw8ua{_jNZ|+Kkv!cg +9xHDzIdKofrjz4FaaTD9Ln?iFX*Bv93p9(fJV~(%1i7tR8Z77D +b88Z1R95O{6{A`GfUd_*6V3|Nw3*P-m|Gk*Mo-gM3>FvA4<=Y>w@#Es^{9-=(Mb|3^bnP$n>=g3hXHU +Nwv#%y+daCB}YX0K#YJRbZk%{@$b^QD_ILI!yqw@yBOqu>lg)qaxqbWM6bl>ca*TjrfD#UTMK#sVB0TFk=({McWE6g61E!*)*>^hfjxH3k1Ws^9Y#4-4OaS+h~KC?MMEER)REZfvd%MkAR(L15=C +%T2K7pJ5!lA!LXE}vMuQ_N=dClFWW?hfJ;P%URvjoi(BP49zTA68(N@HOhIwM!PkKY6X{_r)cp;my^f +1_<$Vms9T(&Q%J?D&MLzY8H|j-=Kd0lCdNJzHX}PE#sEr@qI$!k=klH_(r7Pc8$8tquV7g!+ex=Q=G*F`dJV{7a2T{oK|TL +#)I@KFd|Y$7j{-d9jY;I55(+Y%s>PEJ)}$>*Ed69|HhVSU?}J+)l7FPgxe?)t7aP#^b)&V$KFuZ1P +EtGemkTX~z^Q;cbOND@SI!d$P+)fq0@Z=90Uy{btfo(%(2ayB74;@6%I%X~z0aPMoAuXE&nAy5)tott +o<`4nM-fpqHz<$)_0Q_@&y$mHe)$qU{ONdTar{vQ9MBiKId_~r^!8+AI1GJkERWSQc}*e$g#zQG0`kD +U^bEf(BE24tmZN%tci|y8R$qJ0t>6o)WA+6bT->gVSudVh_U~!8w^<4YROJvjkpyUZ=y_E={985|Qu* +YljWzYo_egzUk_X$CYx5m-SQbarU`ZCc%ZA}^-4#?xnK~^RnhC!{w!la-ht8*@)L$DM_Igxgl(dTK0b1y1+E +bGDGBPV^jw?!u_f|}D-?FgG)EO%E*)H9aZeX7TPFuhB4i1h +?uDoeIl5|xQt4t0*3hUB%}w^BZZC~lY6CAZ)aVi=tcll~c&0TOwR#1jUE{~9Hge^Z^E%R!(Vg0T5W-Z%EtKVzhPGB#Vhd1I7a1^{OzY1QGw9qJ^sg3%Euq!-ucC)V#P1Q%ypFj?+(W +37>7E}gLEfaU%~97LXwC>slQRS;iiO#&lT-&pS(eHiYSoC0cJ!3Dj8d>B#3I0y+~Y2H7+H#)V7Mjbzn +dLyjZz$59J8X^|R$A|(q#Hj0CzCJH2*Ihhu`P22Lf_+(+g)P(F@G`|Ia29B=m0h) +3PG0-YT*(@nu8niYNxNty(9NoxDagJm{iK!ku&zh6V}-4)w|ch9{<6BZX|wWF5y0;p>-N +}x0ha|sC4b=%mJlM+3-)b?&PEuV{@p#;J +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 +F?lfZOdu~by=5r9%=E|h1&!gU3G2*3IZT +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 +8}5vBS3!9Sc*LI0vCylI +6}4-K_;*JowKQNy={#_hZ0-+y==JDuUz39}j$N2LAB)v0;G36(`3FBMKP&_RG?{72Y!{BOIeRCCDg&@ +!V!AgPNmEF*KVZ#`r|tKujT>jiM(S{7(s2Qr{?f`~zD3Mk+eOAfXFg3iNc#FtHiM<5 ++54spK-V{Q+o3lOo8gw%9}=R$|}eN+KJmxOHnV{);j|uOD`KUF)q!%)s%wEG13GT&e9Ws3#eMdJzvdH +>CzjStQps899(=x^c4NDhfhZc>8JVHoDIHBBk_%wYzE@vvV3x_N$Wu8bPr?AonQcr- +=0o~q-s;yvXFpBwU<^1W&7J9f;vsAt*x!wKVOGQ6+;@YCr=GE=(@xks8G9W;yF`t%*Kk7{I>lZJ17P7 +U-o=dBBvzBt8nrEjTjkoUPd2VnCuUX9)ydd~%eKeQ^JgJ-JkF4>i`d!;v6I&1-(O`XzRA&_adtiJcgA +z1`*I-wP@-D;92CP*C`L4B3HKa}&QWr!kJ+okh>h6?4)5tzDUc6HC4tcBI6_ia?`gx}yo;@g!F@Fd?f +XwRKXn?3mQowvS5L0lDW<8bY^OZT;0K#^9pt4{eh|CPIvt;MG|Okgp;wFDbibDeiK$5u5c$yyo5k+v8 +_5q()?*rs*3@2tMyh!0Pnbj9AIGzTw2dM*}EU3kKqy>?C{>#_s{{gGuuP<7-LwtH`UW8+%L1g)8(c +Y`oF3d%8LD{zv)lX)?b1aC{IA7);XITDa-u%(6$tpMnOlC4PDv}lQksM06(eP4#t^X2l|hXn>%RgP8v +}Ooj;J@Lp?!60-fP5G$i?WP>;X&Cm#}acBilob5luYiKPF_H9wxMh4b}vWIFqqZpx7YqV#v;hZo?m+B +(6@;UwJ*ZbABtiKaGr>{fKS7iXL%@9s9~+5dmZzX4E70|XQR000O8Ktu6NU7_ls#s>fZTonKSAOHXWa +A|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLz;SbS`jt)mU4P+qe~e_pe|*5AmcPXWC#4=YEl@TVuT-Ya27Etf@uSHH9}uJE7uQE3H>jPtv0 +!O@$wx_HN?s{?$a_7wEmJDU;TwG2S$)n9yTEtrzdY`?uB_dx0d}OE)5&tX5L%)k-YIZ`1eYv)td~kMc +hm`^gkLig44pnD%(Ps*GJ(lI78h-YQSiFO$in(9$_^5oY!_Fse**9T{w~9b{MHAEp;>YdT$uo&+Nc(+ +C$x-H($iY`Nc(1@rjtdn5e5B_~WJ-h6oH#NKqGkd5dZ32+nuRI?djyb^wkHQ5wDMi!G +d`3?#+Y80=n??}?fN6*C*jeiU~NGg&HjJE_I5jd~&bL*Y?M>6wYxrv^Dg}L()RLS1gTiLc`0msZMe+_5reBk1l +6L&u!e9w%I8i@zKpr6N5`c*msIT$Sl5cUR&W +Eu`JJ-)_G=gXbdkBeQZ&N`ZqD*T!!LF4J=nZhCeb5*Yf4j?k-cNJRy&h6X5>%Nbwhg4?6zPsl*1hM_ac59y +pGpOV-CyBupw5-i6Lfo2r_tbXyaYnVKCQPa9ZLU%0{s@fkiJO?Z)N;sdLKOfKcDY9&_C1gYNdSAkGfA +Xv%`RMepVZjxmDT9F5dE*J6{e_)Z;xl(8rQt##Az^c~)>ut-p@Aaja1R%{T~9R%l +2`x8nLp(yX*m9uY&tg}ISXd|5K_9?9XveJq>Sq*5))@_D6tySnuWDePG$qVZWXH=qS!bSfpRdW(Y{)( +PK)gPNE3m#&46y)Wl>2TfLs~Dww*^d%DvY(G?;&~Ife|oB)EM64te0}U8LUwv&F~DsF~q*YX=cOOyI1_#0_ +Hxk;*s~r3NfCL0*{FY@E6{0v{|F-ooFg2oy#uFzY`)Z7-!OQvJ}uT@JbkYmg~qg-b}v=dA{j6n4bmvp +ryxJeG_xCDqeAbQL_p2-DT`^NnxB}zU4osZpP_6<4F=sq_K4p@HtK=$H>4=Q +$H0*b-W{^(p&LP3WiX}=-v>f`Mn8FJE72ZfSI1UoL +QY?OOeA+eQ-qUr(_Yqo9OJjFVh@E)g5B9i=hqI6>sJxJv?RMXoH?)KcIsE$fN~d5r_^UM^2^Gy6d6^$5JyY{s}=6Y9Zx=cP$57l|P7hmw~YxyU$4m +aCL48JAQh@HLwgxnN}a)3f8tpS~w!BaR43c}(+I33NJTM7c3wrlP5zWK=S$7>G)# +O6s;^V&$A^7!+9Z#oP{BtFv}$=cmmq8Fij-OX)1a>vw%+{Vfg%%&R8le)A{kq_~JFAe^mRG&PhL0yaU2Otn&|!zckHagoU6hV6# +tJ$3$3llf>GD*h#v(E{BLv14Tr4I|%Z1L^@tDoPB%RAfrOA)$bF;08qG01FIW?I5N2>10B#*=C*Pu_# +rI*^R$`q?C(buKzF%zuu%NG8H6{2ki}65p^Xja!UL +?^%AAo|uNCMdT$XIv*PK?m=`V0ahL?##@=yE(e?7Ad~O0~b{0tj8PKr4%{qoX5xXux6NozUp*#V|;rpKUk3u!c +3W-rMV`NT+RDht|<}P1itff>kql%6Ni+u$?*7u+)9C!n(vk%$Ld2B*D&9dua)mJbz!EE(8hb4tQ*to< +qWaUH(4Qsy!D)b^o%*PM^5@dSCq|3KsfJGUP*h-Ep#R$Xzd;w!uS)RznQg1maR+yC`rcIW{M4Ki8pJ4 +Q`dL~gsm?t{(N9jvQG(nVtH-o9o;8T*#eg(&%yK}<7{fpQt)e@t+_Qv!<{c64XQm?2Hp@bl8 +F_KAOXJqdVhcayP)<#%QDp@KC48u!m7YH&svamo$Xd!NDO$4ZCJ+Tss36JZBfwn3S?pCrD#NLgdmAE2Xh?`#mcxY4 +vyuf|&gueIs9VhCD#5qpidu`59ZzKZpRqm0m+S&}Zz(JX|0+}{!1%OuoZRlep-UG^tUF|6ftnY%nzI-}5&~;ozM +g)e2NGQ81Raq2bDrRGQ-zRABWL8KP1S$lp@_tI8VMrpH>NH{Q9F_VV0-S76iow1LG%r9-_btXs9F{B; +;25XLtOVbC6Sk-Lb_U|>D8v_DWP*9Y0fmM*XIEHs@@WHTDhNTzM22Bsuyn3-Pc6JF?<0Y4GMBPXZK0i +8oYU)#a<P@W}rjaZwo)29+TTi`vY;P0ucD7F +_NEIj!3eB4-j@NLRqS+Ab7S7)s3O-#d*@Kpg7cuvz4ySFm44GF_o5r-ZaAcdmpH8R^1#gD!Q>a=k+Fl +kH)$KGJJk(R<;Z|%BMzpyRuS+tfBCROi`*+F*~N}VZ*Gia3I=Exvn-QWpMUOe|}*;kz$oVQu2xKZDMm +;7o^pCI;tge$1r3%?Lz~r+-5lj(dov6fXLN(Ht5qu-%lE +_Qx9)2e0ZYx1(jtk$}8(2UWxB_9AYpeYpD5Pt_{KqG+Aah80_{+sHl9Wc3z*DM*snv0b6fU)19mSK|*0yvV*+@qkoWA529;P_wkS-;!mX&@AX!OTGw644b(J$UBvpA9BfIK)V3}8Y0Da7sm~hwl9C?l1^(80~ +H4yz-33tVIeWq|%Ev#&z53LEyD&}CQF@GC27;6Pk&GYI7RQK($He;wWc6Cn3nO;%>8!Fcsk8<5ar@Dp +8+qJQbHN|_yIH)Q!~973HDNU}fGE-=^(l#&R9Y?E3n +~6gQO$|6Hh(>t>z=e4ew8`gbWyd|%K=0?wd&`CS{nWYZSWhy!r<_W!@~X$@>x-#M`s{yY1 +`KYOS<1LRXfwB1|x&kY-Vsrgv=+4F)*gw_pls6I4SX9fNUi-Q8sYb;f*Sgll4#La7EVH>X+>r#q^j(3Av2*LUqcsCKoDYz^ICn|X>Q+If&> +bld)$i6KZCH*DlFd8EdNcnIw$3nhcqm`Yj)cMXSCMAmg~n8Arwbt3F;^+pKp7MFwWEs3SWS6$=4q^d; +L6KV1n%7 +auce-0N!e`4gumjNS(;>ucFI?|{{|it{0|XQR000O8hb8Sy$E^s91qJ{B6C(fsA^-pYaA|NaUv_0~WN +&gWcV%K_Zewp`X>Mn8FKl6AWo&aUaCwcIO>?t05P56$CCXS}KJ1wu`hFZbllGDx-W!9lVk^er0 +o*w4w7vX%dbKeroxkI(FW2fN+Cs+?5^ +sS1|GC;5EiHc5W|EY$u`ZP?fQpUhbbhiyOEt2*TwdyUU3yV0piWLC-z`||qjiIq~am*2jA|Ks&Ld&>* +9lU1zJvR3`r82&T+@#6>kma{CcnB1xAr&{#qL6z)HrIOXZ<4cvF;z}iPntrmq%w!Q)a@Q<}!; +4TWdOFQGDfUl=PtZ)Q$Z2@;t9B0_rfla_e6!0EQ-SL3CM!*qFfJ4AnWWZM_;49jh6%4poPJ>wC2)MEZ +e1+mT!^RGz1Kxw_YCPa8Bj5-oz#-sC{SZj&gTA?G0KFd6E>jvklo^lq+Jl){S;FJN%y^c}K+v0GV>H* +s4x}^FgK-gWVQ_S?Kf~kll=EO2+H5or`$ptTaw`y^ngO=C)~zK#nVjN!$5<=eN4fUtI1(V&ycq}8B-m +7s6HG6SO&kHybD9F9xn6f5{p2DtvoEAPA}|1%u~yFjrg;^uooP^Ca2iBy69H-xGCToFp(Tz1OkrS2Aq +0a-ulvl*u(1Q_6!u_w$s&1)KsX7o->xCOuR~lE2e~ce2i&ebs9&a>2~lQ3+G_%&w`&Mf=+4lHR~`Yag +&U&G%vibu=`*|s|5D{8PG`h%NFjaVhV|KnBT1fT8k*+&=8XufPohI<_@n`Kvjf*R`X3wFq|&o&34_Ec +$4C<-$&`BAqDkoX4BzSQU7%)LSXyI53R_z)@GF6!TUmiRPhn|<5Giausv!EhHN86S*Mv7sVsMNUwvJ8 +U25WNlbUjfagh!U$p*?qxxe5!o)dI +>vibL8c?#gQsFY;5Ijjp@POCARBEoJecvR(dhyM!{T&nYY<2FFMfB*{vZ+;^5U?9@f$b|z=xcu?g)wi +kg?^9B;Va!N0WwxAd@KoAB9+5iCz5OxE4G|oyDUESvu7i+)YJ388rVd64Tcn^|jyF4E4&}b;|nL?xeX +-d|gjy4lJtd>UmswQg{qV3pdIS0i`N70dN;UU~CTRYTfnJF|y1!zZM^zG=SU9{ac~kX +jPT&wuqK1sDffc9$IGG_6+km46c!U8SZGZ<1fFm{vZ9&|qYp72c;L`^9zyLU4aecx0lXAz?sB8xR5m;2ScHHk}w8-9oVeUyenrGS#BI5rGf{56wrXLEr(HNp!~Q=#KF3|{ENUTtKi{G58(hkSuAIUE)RvaBbR2_g^Vmo= +QWuSrNm(A$TlKEYaJIszk=|dE%IFwp@38$qTr1!}osElTa1gO@_k+R}@4Cl`yK+h+=GxRA(MxobkYh1 +Gbsc*CQfMt9g1T>1{s*XUEzBpo2_5r78gHK@R7OeE*u-_C#-OzoYJD3IK@CNi0?<7wC!2qM5dIdN=!4k6P+)K36ksW>ZNRSlQp$qw*Oi ++I@A4CEG02u`U03-ka0B~t=FJE?LZe(wAFLz~PWo~0{WNB_^b1!XcY++($Y;!JfdA(CjkJ>O0z2{d-HSc&#fdO%`PWRd~Ab!^u*0#voXef^OHu~d7kBPEXg=8fk)&tNdfGVtSoYm}9$x!l^K +`6<{Mg^fFZ|20z3cif_6hB*Yc!%L3D0FA2m0*iznS4y7@-|pNP?z<`6e)@b1>l4g*qa@6k<}#rLuTWY +X!`=L01QroykN4AW^C@hUff^m-!g}gKD1tXy83)f+$;_G4I8tnkYG7}K;A?0B{!eL?86GRt4j$v`)EH +&1LJEVw_GsPf&@8KQ1I$`9t`zEkhFWKQ)p?>wJCN33GHGW;g60up(Cv+EcUnd-CI&I7Pt;OrW}JlyED +0e`sn9F8-u5a5d}SKC2xzTwD!9fCNY?xhhu*_tv495!QaQkyyLW!+$BtXraDm{zZ0}UV9Iu!Vr(TXar +0%X{p-)*h`*Js(&AlwYGq1}ko~13yOBH{^pa!*}7d}N)o);nruPND+eAMG1;yam^B7DUB9p{qt4!0F{=vYI5o==*JC#wW(*s&BSy%v5 +({j4qf96gGj2aXh(pD$a1M~AYeeM%BuLpvT?{~kR_0z;rJ3-Qkfpk2a`a88z|9QpOp-%8H34#~+Ma?v +J)6wiuF8bP^l7rueA3^ZjK8jO@>!?-L<(zcE7Do6W%B0J~w_~xb)tgsrZ;;>`xuq~9?-kh5$*cj}20Z +>Z=1QY-O00;nwCGAXSIB=)A1pok}82|tw0001RX>c!Jc4cm4Z*nhpWnyJ+V{c?>ZfA2ZbY*jNb1rasw +O31T+eQ$+>sKri1f&87o52y%s3Y-g|TVOZrPX`y!Vw +>tRQ*OmaEjH;mWu5nw@`~T+Anudr3H^Ap> +e@^eTz(kms#Zo+iZe5WQQ+2}fx}!35%kU{ZoZrUiTEy&J~y*L2-Mv(xcpHtztfknbSrJzNFOGmG*;zm +YatpYte4$Q_9|4$q``(y`ZMD8$;A%jt2u)oLxt3Sq`b!o37jMwm-B0aN?DB_G>qjiFB?(hgjF=WO!lH|g|Msz9-29`;Z#EI*i(Itp- +{q_y(Ip|HU%D5@A!V9qvT3qdb@*Jt?yN=90r`?P29YH52NH5fhe%V9xa=NQ1y!kGYXg5)`NEVThU+^8 +d!3IPbx`-np_U*?9eha5Z2D#T5;m6;KD7bb{=O53{(fzGBvuuq6q7Q31mUAU(n|Dv6Wqi-NgQIsxwN_ +FVcaM+X4ZDNAU?Ju-+7B{2y*$4-K#Q=<<*MAczTbQK6c}DPO0&g +FJL%*FX0PsIJjl&0usCpeB5jaaYku8?LS!rL3CjUe)oJ36wDj*j6pMZpoxVK$Bh`SV?LHrcn@TF^zC| +a+##03{qB?EYXF&!4eJWWjj^bq9(zLAqE8b7>3AnYa|W;LpUMm8xEm7tMo%Wj`IYRhXfLU5$>uS?169 +!J*eHTWTQ?wfys}TxY~(MBdJX#d$Guy_BN9|vT@{X)^`@0$#k(9kKqf~;D^Nq55ZYSGdk^URHjoq|NO +oeuF%=9uJ?u-z57Ay#)N~=*+5~Ttqsu`Tx_>lS}!)oeGx2EX;pps@0UOF5|h1aKgCcHK7=XXbk$rHhu +qF$*WF4WhpWTk4rT$RnE}5(+8p{_6G?p*7YS=j66aUWDd?W^TQvUssnwuhI)N{c_xp>p5#gzbWD{VG8B4t(Giw(%(m;$el+MW0WPFiOjtf}K+-zs8eoac&^Wy;MZAr-;Hm +h_=$~$dh|^K;+9|nr$O{%EL0*Zu^&)Jl!gbCC~Iv)g0`4r-I=$3+KhiDiSX#p806)%Qk@UdQXUNL3E4 +@t=pRLbnL`CYuV$m$9MwMg-atj8LnWk^>OgkGh>G}He}OdHj)&l$VQ6N4^x=5dOyW9GIONuX1#H;6Wd +$tI6HvEPu4C1Ds>;c9tD21iU#&!-7PN%TCLEa$5c5sh?5j+!=lV1%=DD$+U~eLnTg_f +ddzH5GQeNT<{3*`6vKGc3!S{GT1JXS-DLc!Jc4cm4Z*nhpWnyJ+V{c?>Zf +A2ZcwcpMWpZC+WoBt^Wn?aJd8L#?GDJy{lHCz?!}ldi_!-v6r? +ILt*lTVyn&yp&}+&&Aw`a!TTQXSLW4FDCphy?WY6%@;Q|y_}XKapXfW=tl#Q+=z>G<`%k;i!`tA&Qe8 +rK_l__;i#6{j$FL@lcQWg!pi +)T+Jn9Q&PXh5nwRa?YJ+Xt65B#e-MJH~akoAa(O@XZog$Y!5dG`ZgMPo$X>6Vg*Y>*2tykCmerp{@As +mEoH-ryExEI3x5FUhZ=)=+nc^FJWsC;O{H433whf%0B3YA8o(kN6Kg-WAPX%s4rLZ#6#gmDOE2t&1z3 +ZV{Rs5kQU3g!pQCUcAVA#se8B87cbGlqCrsZg-zncF-y`23-yPo?-xuE$-;ojX +Q|2S)nE4s=bLJP!L*`@V5%ZXN!aQYu$^43W#{8Q34f6@}Tjo>dcg%C<_snO^3+8j?56mB#FPJ|ue`fx +|eCZ$cD-K>W-!Lc4Uzz?K`9tJSkUu{D?D&Io$(%A%=5Ng3nHh7&^l#UkxnTam^siUJ^snWT`6u&=dCk +0G{>A*8`4977=G*l8%pWFM0QOoo`mm`F?#OcW*>6T$?2V)Tj8Cq|zbeP +Z;9(I-Zq7=2>&iP0xUpBQ~&^oh|YMxPjcB>G77k?14QN1~5JABjE^eI)uw^pWTz(MO_>L?4Mh5`7Z%N +zf-jp9Fmp^hwYsL7xPD67)&XCqbVCeG>FZ&?iBk1br0xDD+Y2qtHj8k3t`XJ_>yl`Y7~K=%dg_p^riz +g+2;>H2P@t(deVmN28BMAB{d5eKh)L^wH>}(MO|?Mjwqn8hr?T2z>~B2z>~B2z>~B2z>~B2z>~B2z>~ +B2z>~B2z?Ct81ymdW6;N-k3k=UJ_daZ`WW;v=wr~wppQWxgFeRjbn1VvPxu2wRR8xjHoxV<*N6YIN|t +G++qb_>{{v7<0Rj{Q6aWAK2mqQq_DmnV=tvg;000#L000jF0000000000005+c00000aA|NaUtei%X> +?y-E^v8JO928D0~7!N00;m;L-9;z|4-vb0RRAR0ssIH00000000000001_fkXfR0B~t=FJE76VQFq(U +oLQYP)h*<6ay3h000O8iMZuV2Y)sK5Dx$V@+$xU82|tP0000000000q=C2r003}la4%nJZggdGZeeUM +Utei%X>?y-E^v8JO928D0~7!N00;m;L-9=CTw9X<3IG5!CIA2&00000000000001_f&UNy0B~t=FJEb +HbY*gGVQepAVRL0;Z*6U1Ze%WSc~DCM0u%!j000080NGUAOy*s~PMQh;08AkO02=@R00000000000Hl +F88~^}tX>c!JX>N37a&BR4FJfVHWpH6~b7gWaaCuNm0Rj{Q6aWAK2mn|i^i1-FmxNCR0040i000^Q00 +00000000005+c3MT*naA|NaUukZ1WpZv|Y%gMUX>4R)Wo~vZaCuNm0Rj{Q6aWAK2msks+f0W!`C^X<0 +05;L000&M0000000000005+ckt_fJaA|NaUukZ1WpZv|Y%gPBV`ybAaCuNm0Rj{Q6aWAK2msks+e{^D +VrAzN006%~000{R0000000000005+cR5btqaA|NaUukZ1WpZv|Y%gPNWN&bEX>V?GE^v8JO928D0~7! +N00;m;L-9;B{KRcj3jhET9smFr00000000000001_fpka!0B~t=FJEbHbY*gGVQepBZ*6d4bS`jtP)h +*<6ay3h000O8*;Lz1pz_$b7Y_gcwlV+!9smFU0000000000q=EcX003}la4%nJZggdGZeeUMV{dL|X= +inEVRUJ4ZZ2?nP)h*<6ay3h000O8*;Lz1QXCNB?IZvI6oLQ%82|tP0000000000q=8Rk003}la4%nJZ +ggdGZeeUMWN&wFY;R#?E^v8JO928D0~7!N00;o(GRsWQFV3XX3IG5dAOHXx00000000000001_fpdre +0B~t=FJEbHbY*gGVQepDcw=R7bZKvHb1rasP)h*<6ay3h000O8SRwRG(}GqZdMf|`YoGuC761SM0000 +000000q=A2v003}la4%nJZggdGZeeUMX>Md?crI{xP)h*<6ay3h000O8*;Lz1W9mQ}lL-I-ofrTB8UO +$Q0000000000q=7BJ003}la4%nJZggdGZeeUMY;R*>bZKvHb1rasP)h*<6ay3h000O8OEK_FZ@G5(6% +GIZE-C;38vpc!JX>N37a&BR4FLGsbZ)|pDE^v8JO928D +0~7!N00;oaV82Y;tatW(0001-0000T00000000000001_fnVnU0B~t=FJEbHbY*gGVQepRbYXOLb6;a +`WMy+MaCuNm0Rj{Q6aWAK2mnAs@k~P6@1Dyg003ls000&M0000000000005+c7w7;0aA|NaUukZ1WpZ +v|Y%h0cWo2wGaCuNm0Rj{Q6aWAK2msks+e|A02^QJ{0071a001HY0000000000005+c77hUbaA|NaUu +kZ1WpZv|Y%gPPZEaz0WOFZHUukY>bYEXCaCuNm0Rj{Q6aWAK2msks+e|ARM}g4+0040X0018V000000 +0000005+cFcAR&aA|NaUukZ1WpZv|Y%gPPZEaz0WOFZLXk}w-E^v8JO928D0~7!N00;mPRohI-l~;4p +0{{SQ3jhEl00000000000001_fj$!f0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*WV{dJ6Y-Mz5Z*DGdc~DC +M0u%!j000080NGUAOj|$sfG-FD0L&Wz04D$d00000000000HlFZ7XbipX>c!JX>N37a&BR4FJo_QZDD +R?b1!3WZf0p`b#h^JX>V>WaCuNm0Rj{Q6aWAK2mn|i^i0r3vR6q7003em001HY0000000000005+c#v +cIyaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZMZ+C8NZ((FEaCuNm0Rj{Q6aWAK2msks+f0Eq+1e`v005W_0 +01BW0000000000005+cPbmQaaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZOa%E+DWiD`eP)h*<6ay3h000O8 +#$dlpgg@Ij*a83mhz0-v9smFU0000000000q=C3C0RV7ma4%nJZggdGZeeUMV{dJ3VQyq|FKA(NXfAM +hP)h*<6ay3h000O8#$dlpcNf!o$N>NV69fPN9smFU0000000000q=C#Z0RV7ma4%nJZggdGZeeUMV{d +J3VQyq|FKA_Ka4v9pP)h*<6ay3h000O8SRwRGtaRvb`Vs&DMo$0$ApigX0000000000q=C>f0RV7ma4 +%nJZggdGZeeUMV{dJ3VQyq|FKKRbbYX04E^v8JO928D0~7!N00;m;L-9=GHQQIO3IG5KC;$K+000000 +00000001_feA(d0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*WY-w|JE^v8JO928D0~7!N00;otRNGABKqhpV +1^@tQ5&!@o00000000000001_f%H%T0B~t=FJEbHbY*gGVQepBZ*6U1Ze(*Wb7f(2V`wgLc~DCM0u%! +j000080NGUAOdwaFgLwx40Eid>03HAU00000000000HlG-R{;QUX>c!JX>N37a&BR4FJo_QZDDR?b1! +pfZ+9+mc~DCM0u%!j000080Jv-7Ogq1G-0=ed0B8#U03!eZ00000000000HlF{UjYDcX>c!JX>N37a& +BR4FJo_QZDDR?b1!vnX>N0LVQg$JaCuNm0Rj{Q6aWAK2mn|i^h`RCB(P=&003hf0018V00000000000 +05+cvSR@NaA|NaUukZ1WpZv|Y%gPPZEaz0WOFZfXk}$=E^v8JO928D0~7!N00;otRNG8@$teCi0000# +0000W00000000000001_fmLe(0B~t=FJEbHbY*gGVQepLZ)9a`b1z?CX>MtBUtcb8c~DCM0u%!j0000 +80QGR@Ok}_M9?k#&0HOf^0384T00000000000HlG=YXJaoX>c!JX>N37a&BR4FKusRWo&aVX>Md?crI +{xP)h*<6ay3h000O8#$dlp000000ssI200000Bme*a0000000000q=DCL0RV7ma4%nJZggdGZeeUMZ* +XODVRUJ4ZgVeRUukY>bYEXCaCuNm0Rj{Q6aWAK2mnAs@k}C!R^uoJ002o7001EX0000000000005+c8 +*KpqaA|NaUukZ1WpZv|Y%gzcWpZJ3X>V?GFJowBV{0yOc~DCM0u%!j0000809YaPOkqC0JeLXp08%Fa +03rYY00000000000HlF}a{&NwX>c!JX>N37a&BR4FK=*Va$$67Z*FrhW^!d^dSxzfc~DCM0u%!j0000 +809YaPOqK_hYk&{{0RA@s03!eZ00000000000HlFgegOb*X>c!JX>N37a&BR4FK=*Va$$67Z*FrhaB^ +jEVRB_IaCuNm0Rj{Q6aWAK2mnAs@l0OB8ZCnY001or0012T0000000000005+c8jk@0aA|NaUukZ1Wp +Zv|Y%g+UaW7wAX>MtBUtcb8c~DCM0u%!j000080Jv-7O!UVBlF$wS0ER9A0384T00000000000HlG~k +pTd3X>c!JX>N37a&BR4FLGsZFLGsZUuJ1+WiD`eP)h*<6ay3h000O8$|?3tql$h74J-fv->LurAOHXW +0000000000q=Dn00RV7ma4%nJZggdGZeeUMa%FKZa%FK}X>N0LVQg$JaCuNm0Rj{Q6aWAK2mp+d;!LY +y8OkdN003Vb000~S0000000000005+cF3kY|aA|NaUukZ1WpZv|Y%g+UaW8UZabI&~bS`jtP)h*<6ay +3h000O8Yd7^w!O@RxHv<3wLJ0r>AOHXW0000000000q=A#w0RV7ma4%nJZggdGZeeUMa%FKZa%FK}ba +G*1Yh`jSaCuNm0Rj{Q6aWAK2mpz=N0LVQg$JaCuNm0Rj{Q6aWAK2mr=lzf1rC00062000000018V0000000000 +005+cx9b4_aA|NaUukZ1WpZv|Y%g_mX>4;ZUtei%X>?y-E^v8JO928D0~7!N00;oaV82Y(`KPc!JX>N37a&BR4FLiWjY;!MYVRL9@b1rasP)h*<6a +y3h000O8Ktu6N96KCUs|Nr8kr)5~9smFU0000000000q=EVg0swGna4%nJZggdGZeeUMb#!TLb1!UfX +J=_{XD)DgP)h*<6ay3h000O8*;Lz1k!q!$G9v&0yl(&i8vpc!JX>N37a&BR4FLiWjY;!Mfb#!E5bY)~NaCuNm0Rj{Q6aWAK2msks+f1}k*=I8Y0089(001BW000 +0000000005+c$24;ZaA9L>VP|P>XD)DgP)h*<6ay3h000O8#$dlp7N +YV>y8r+H76AYNCjbBd0000000000q=7g<0swGna4%nJZggdGZeeUMb#!TLb1!pcbailaZ*OdKUt)D>Y +-BEQc~DCM0u%!j000080Oc~vOj=~)hrj~>05=K%03QGV00000000000HlF9K>`49X>c!JX>N37a&BR4 +FLiWjY;!MkWo>X@WNC6PaCuNm0Rj{Q6aWAK2msks+e|+SZqRE20046Y0012T0000000000005+cHAMm +daA|NaUukZ1WpZv|Y%g_mX>4;Zba`-TZf7oVc~DCM0u%!j000080NGUAOz0m!(qRw)08=#p02u%P000 +00000000HlH2M*;wFX>c!JX>N37a&BR4FLiWjY;!MlX)bViP)h*<6ay3h000O8SRwRGr+2|Omk|H}Y( +4-09RL6T0000000000q=9o-0swGna4%nJZggdGZeeUMc4KodUtei%X>?y-E^v8JO928D0~7!N00;m;L +-9;jXsB)r1pom44FCWe00000000000001_fkkQp0B~t=FJEbHbY*gGVQepUV{S6b7^mGE^v8JO928D0~7!N00;m;L-9b8{|mc~DCM0u%!j000080E +s2-OnA8VB<|4w07P&D02lxO00000000000HlE;2m=6cX>c!Jc4cm4Z*nhid2nHJb7^j8E^v8JO928D0 +~7!N00;nwCGAWhd%OzI2><}}CIA2z00000000000001_fkxT`0B~t=FJE?LZe(wAFLGsca(QWPXD)Dg +P)h*<6ay3h000O8i6!k!Dka?b&m8~&sCWPX5&!@I0000000000q=8E00|0Poa4%nWWo~3|axZgfcrI{ +xP)h*<6ay3h000O8Ktu6Nhyo-|tN;K2E&%`lBme*a0000000000q=88S1ORYpa4%nWWo~3|axY_HV`y +b#Z*FvQZ)`7LUukY>bYEXCaCuNm0Rj{Q6aWAK2mnAs@k~mad8Yyb000jK001BW0000000000005+cHv +!h03`ze03iSX00000000000HlFH3j_dgX>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV_{= +xWiD`eP)h*<6ay3h000O8h$Zbzg_dL!5&-}Jw*mkFA^-pY0000000000q=B&v1ORYpa4%nWWo~3|axY +_HV`yb#Z*FvQZ)`7PZ*6d4bS`jtP)h*<6ay3h000O8Ktu6N+O~|^h7SM$f;9jDCIA2c0000000000q= +5qt1ORYpa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7PZ*FvQZ)|L3axQRrP)h*<6ay3h000O8Ktu6N^U?kq` +U3y}4V8a$#_AWpXZX +c~DCM0u%!j0000806;_WOq3;UUatiJ0Ok(>044wc00000000000HlEoA_M?%X>c!Jc4cm4Z*nhVVPj} +zV{dMBa&K%eXk~SBX>)XGV{c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eb7gXAVQgu7WiD`eP)h*<6ay3h000O8Ktu6N6t1CN=K +ufzp8@~?BLDyZ0000000000q=6eT1ORYpa4%nWWo~3|axY_HV`yb#Z*FvQZ)`7ja$#_AWpXZXc~DCM0 +u%!j000080Ei{+Oc}qpFgE}I09F7104o3h00000000000HlFKG6Vo{X>c!Jc4cm4Z*nhVVPj}zV{dMB +a&K%eV_{=xWpgiIUukY>bYEXCaCuNm0Rj{Q6aWAK2mnAs@l5i`5y24#002=C001oj0000000000005+ +c!!iT_aA|NaUv_0~WN&gWV_{=xWn*t{baHQOFJob2Xk~LRW@&6?Ut?ioXk{*Nc~DCM0u%!j0000806; +_WOsK~}-)8{;09XS604@Lk00000000000HlE*IRpT3X>c!Jc4cm4Z*nhVVPj}zV{dMBa&K%eV_{=xWp +gibWn^h{Ut?ioXk{*Nc~DCM0u%!j0000806;_WOs&jT9X$X506zc#03QGV00000000000HlG^Is^c4X +>c!Jc4cm4Z*nhVWpZ?BW@#^9UukY>bYEXCaCuNm0Rj{Q6aWAK2mrTv?M#C!+QBCP001cf0018V00000 +00000005+cOgjVsaA|NaUv_0~WN&gWV`Xx5X=Z6JUteuuX>MO%E^v8JO928D0~7!N00;m;L-9baAj>!O928D0~7 +!N00;nyCGAWJ6GBI-0RR9*0{{RU00000000000001_fgf=O0B~t=FJE?LZe(wAFJonLbZKU3FJo_VWi +D`eP)h*<6ay3h000O8hb8Sy@XrrZOV0000000000q=5o+1^{qra4%nWWo~3|axY_OV +RB?;bT40DX>MtBUtcb8c~DCM0u%!j000080EZ>*OgX=V5brqv02X=x03QGV00000000000HlEc!Jc4cm4Z*nhVXkl_>WppoMX=gQNa%FKYaCuNm0Rj{Q6aWAK2mpsA?M%z(XJ$MD007+v001EX0000 +000000005+cPp}36aA|NaUv_0~WN&gWV`yP=WMyAWpXZXc~DCM0u%!j000080EZ>*OyF +54Jv|8k0K+5z04D$d00000000000HlG+vjzZgX>c!Jc4cm4Z*nhVXkl_>WppoNXkl_>X>)XPX<~JBX> +V>WaCuNm0Rj{Q6aWAK2mpsA?M#VTB#3eZ007Gl001cf0000000000005+cOuYsGaA|NaUv_0~WN&gWV +`yP=WMyAWpXZXc~DCM0u%!j000080EZ>*OyHMcTE7PX0QM6A03-ka00000 +000000HlEh!Uh0vX>c!Jc4cm4Z*nhVXkl_>WppoNXkl`5Wpr?IZ(?O~E^v8JO928D0~7!N00;nwCGAX +H`!`6W1pojB4gdft00000000000001_fdMn8bYXO5ZDC +_*X>MgMaCuNm0Rj{Q6aWAK2mpsA?M!@z*Oua&yF=zt-06zx+03rYY00000000000HlF+( +gpxc!Jc4cm4Z*nhVXkl_>WppoNa5*$NaB^>AWpXZXc~DCM0u%!j000080EZ>*Ohg2%$-n{t0DT4k +02}}S00000000000HlE()&>A@X>c!Jc4cm4Z*nhVXkl_>WppoPZgp*QE^v8JO928D0~7!N00;nwCGAW +Ehy^`01pokU4*&ol00000000000001_ffv~Z0B~t=FJE?LZe(wAFJow7a%5$6FJ*IMaB^>AWpXZXc~D +CM0u%!j000080EZ>*Ou-6Zq7()I01hbt02}}S00000000000HlG6-Ua}0X>c!Jc4cm4Z*nhVXkl_>Wp +poPb7OODE^v8JO928D0~7!N00;nwCGAWgH^k5?1pol04gdfm00000000000001_f!O2*0B~t=FJE?LZ +e(wAFJow7a%5$6FJ*OOYH)CJZ(?O~E^v8JO928D0~7!N00;nwCGAY~K?8YV7ytn3Gynh~0000000000 +0001_fkNsA0B~t=FJE?LZe(wAFJow7a%5$6FJ*OOYjS3CWpOTWc~DCM0u%!j000080EZ>*OeO`F_&5U +q0MrHm03rYY00000000000HlH80tWzaX>c!Jc4cm4Z*nhVXkl_>WppoPbz^ICaB^>AWpXZXc~DCM0u% +!j000080EZ>*Ow8L!)iXK(0EK%103ZMW00000000000HlFg1_uCeX>c!Jc4cm4Z*nhVXkl_>WppoPbz +^jQW^!e5E^v8JO928D0~7!N00;nwCGAY0L5&zV0{{Ti1^@se00000000000001_fyzJ!0B~t=FJE?LZ +e(wAFJow7a%5$6FJ*OOba!xaZ(?O~E^v8JO928D0~7!N00;nwCGAWZMbg(}CjbEJPyhfS0000000000 +0001_fkH$F0B~t=FJE?LZe(wAFJow7a%5$6FK1#hGcht|a%FKYaCuNm0Rj{Q6aWAK2mpsA?M!~F{*N{ +T007zs001KZ0000000000005+c(^b0000000000q +=CNO2LNzsa4%nWWo~3|axY_OVRB?;bT4dSZf9q5Wo2t^Z)9a`E^v8JO928D0~7!N00;nwCGAX)W~~^# +2><|5EC2u|00000000000001_fotan0B~t=FJE?LZe(wAFJow7a%5$6FKl6MXJ}<&a%FdIZ)9a`E^v8 +JO928D0~7!N00;nwCGAYZ!Bv3O3IG5wF#rH500000000000001_fo$;y0B~t=FJE?LZe(wAFJow7a%5 +$6FKl6MXJ~b9XJK+_VQy`2WMynFaCuNm0Rj{Q6aWAK2mpsA?MxyM(m(PF000^+001Na000000000000 +5+ci2MftaA|NaUv_0~WN&gWV`yP=WMy*OyunFq?ZN&0QwXF03!eZ00000000000HlG*5(ofrX>c!Jc4cm4Z*nhVXkl_ +>WppoWVRUJ3F>rEkVr6nJaCuNm0Rj{Q6aWAK2mpsA?Myax7){*-0031D001Tc0000000000005+cp&1 +AOaA|NaUv_0~WN&gWV`yP=WMy*OdfUb9-jvQ02vkl044wc00000000000HlGKF9-l|X>c!Jc4cm +4Z*nhVXkl_>WppodVq<7wa&u*LaB^>AWpXZXc~DCM0u%!j000080EZ>*Op5+bpoIhg0NM=z044wc000 +00000000HlF?HwXZ5X>c!Jc4cm4Z*nhVXkl_>WppodVqa&L8TaB^>AWpXZXc~DCM0u%!j000080E +Z>*OxBTSG9U#20KN_Y03iSX00000000000HlFLJO}`AX>c!Jc4cm4Z*nhVXkl_>WppodYH4$Da&KZ~a +xQRrP)h*<6ay3h000O8hb8Syb$~}ba18(e#V`N>C;$Ke0000000000q=BPB2mo+ta4%nWWo~3|axY_O +VRB?;bT4&oX?A6Db75>`Wprg@bZ>GlaCuNm0Rj{Q6aWAK2mpsA?M(H*ygfw(007Pk001EX000000000 +0005+cSx*Q6aA|NaUv_0~WN&gWV`yP=WMyAWpXZXc~DCM0u%!j000080EZ>*Oh?C%*SP +=y0P+9;03HAU00000000000HlH4QwRWXX>c!Jc4cm4Z*nhVXkl_>WppogWpZ*Op^xJG6Mhr0096103!eZ00000000000HlG^R0sfYX>c!Jc4cm4Z*nhVXkl_>WppoNY-ulFU +ukY>bYEXCaCuNm0Rj{Q6aWAK2mpsA?M(M3w4a~^007ns001Qb0000000000005+c7F7rUaA|NaUv_0~ +WN&gWV`yP=WMyc!Jc4cm4Z*nhVZ)|UJVQpbAUtei%X>?y-E^v8JO928D0~7!N00;nxCGAW;6{l +Z|0{{Tr2><{b00000000000001_f$CZa0B~t=FJE?LZe(wAFJo_PZ*pO6VJ~5Bb7?Mcc~DCM0u%!j00 +0080Ei{+Or4;+N^=ST0K_E#03!eZ00000000000HlGhUI+kiX>c!Jc4cm4Z*nhVZ)|UJVQpbAVQzD2b +Z>WQZZk42aCuNm0Rj{Q6aWAK2mpvB?M!{v*e`_w004al001HY0000000000005+cV`&HgaA|NaUv_0~ +WN&gWV{dG4a$#*@FKKRRbZKF1X>(;RaCuNm0Rj{Q6aWAK2mpvB?M!2jIMHJT001%-0012T000000000 +0005+cC~OD-aA|NaUv_0~WN&gWV{dG4a$#*@FL!BfGcqo4c~DCM0u%!j000080Ei{+Om}-{A>su90Fo +F003QGV00000000000HlG&aR>l#X>c!Jc4cm4Z*nhVZ)|UJVQpbAcWG{PWpZsUaCuNm0Rj{Q6aWAK2m +pvB?M$AGkZW84002b-0018V0000000000005+c<#z}GaA|NaUv_0~WN&gWWNCABY-wUIUtei%X>?y-E +^v8JO928D0~7!N00;nxCGAXR+S2JSD*ynzp#T6K00000000000001_fqr=i0B~t=FJE?LZe(wAFJx(R +bZlv2FJo_QaA9;VaCuNm0Rj{Q6aWAK2mpvB?Mz10CphXa006Yc0018V0000000000005+c=%fe$aA|N +aUv_0~WN&gWWNCABY-wUIWMOn+VqtS-E^v8JO928D0~7!N00;nxCGAX~ig-~r6#xKHQUCxP00000000 +000001_fe+OP0B~t=FJE?LZe(wAFJx(RbZlv2FKKRMWq2-dc~DCM0u%!j000080Ei{+On7y4-5@gn0L +jS!03QGV00000000000HlF`>IeXEX>c!Jc4cm4Z*nhWX>)XJX<{#IZ)0I}Z*p@kaCuNm0Rj{Q6aWAK2 +mpvB?M!&4HD_!P007%L0018V0000000000005+c+#Lx3aA|NaUv_0~WN&gWWNCABY-wUIZDDR{W@U49 +E^v8JO928D0~7!N00;nxCGAYMw}@r~1^@sf5dZ)l00000000000001_frTy!0B~t=FJE?LZe(wAFJx( +RbZlv2FKuCRYh`kCE^v8JO928D0~7!N00;nxCGAY6$Y>C)Bme+1oB#kH00000000000001_fy6Wk0B~ +t=FJE?LZe(wAFJx(RbZlv2FKuOXVPs)+VJ>iaP)h*<6ay3h000O8h$Zbzj@^V3s0#o94k`cuAOHXW00 +00000000q=Bwk2>@_ua4%nWWo~3|axY|Qb98KJVlQ%Kb8mHWV`XzLaCuNm0Rj{Q6aWAK2mpvB?Mw}i` +T?&K007BA0015U0000000000005+clw}D3aA|NaUv_0~WN&gWWNCABY-wUIb7OL8aCCDnaCuNm0Rj{Q +6aWAK2mpp9?M!Z^cPFc|0001L0RS5S0000000000005+ce|ZT2aA|NaUv_0~WN&gWWNCABY-wUIbTcw +8Wq4&!O928D0~7!N00;nvCGAYM1*Chk!T2ZVc~DCM0u%!j000080Ei{+O!jCfEKV5!0AE`G03HAU00000000000 +HlF+E(-u~X>c!Jc4cm4Z*nhWX>)XJX<{#SWpZc!Jc4cm4Z*nhWX>)XJX<{#TGcqn^cx6ya0Rj{Q6aWAK2mpp9?M$Y +8P3Yjh0001l0RS5S0000000000005+c4EGBFaA|NaUv_0~WN&gWWNCABY-wUIcQ!OGWq4&!O928D0~7 +!N00;nxCGAXY9z-!yB>(_Yng9SC00000000000001_fhD#K0B~t=FJE?LZe(wAFJx(RbZlv2FL!8VWo +#~Rc~DCM0u%!j000080EZ>*Oe61S{KEhM01^QJ04V?f00000000000HlGk+YA73X>c!Jc4cm4Z*nhWX +>)XJX<{#5Vqs%zaBp&SFJE72ZfSI1UoLQYP)h*<6ay3h000O8hb8SyuZk~a&H(@b%L4!aB>(^b00000 +00000q=CHL3;=Lxa4%nWWo~3|axY|Qb98KJVlQ7}VPk7>Z*p`mZE163E^v8JO928D0~7!N00;nwCGAY +&Vm;7D8~^|>WB>ps00000000000001_fz93w0B~t=FJE?LZe(wAFJx(RbZlv2FJEF|V{344a&#|qXmx +aHY%XwlP)h*<6ay3h000O8h9&JxZx#Tp_5lC@ISK#(D*ylh0000000000q=8xc3;=Lxa4%nWWo~3|ax +Y|Qb98KJVlQ7}VPk7>Z*p`mb9r-PZ*FF3XD(xAXHZK40u%!j000080Ei{+O!BGU5$PTP090uJ04e|g0 +0000000000HlGK{R{wbX>c!Jc4cm4Z*nhWX>)XJX<{#5Vqs%zaBp&SFLQZwV{dL|X=g5Qc~DCM0u%!j +000080Ei{+OhiH-Ltc!Jc4cm4Z*nhWX>)XJX<{#5Vqs% +zaBp&SFLYsYW@&6?E^v8JO928D0~7!N00;nxCGAWytQ_4%0ssJt1ONaa00000000000001_fpK;X0B~ +t=FJE?LZe(wAFKBdaY&C3YVlQ7`X>MtBUtcb8c~DCM0u%!j000080Ei{+Om!M=1tk;!06{?j03iSX00 +000000000HlHRcntt>X>c!Jc4cm4Z*nhabZu-kY-wUIUukGzbY*yLY%XwlP)h*<6ay3h000O8h$Zbz7 +B}M?JbaQlaWnpbD +aCuNm0Rj{Q6aWAK2mpyC?M%c*Y8Jm7001N_0RSQZ0000000000005+c_^b^8aA|NaUv_0~WN&gWXmo9 +CHEd~OFJE+TYh`X}dS!AhaCuNm0Rj{Q6aWAK2mpyC?M&KvjB^qO006HK0015U0000000000005+c_sI +4;YaCuNm0Rj{Q6aWAK2mpvB?M&7ShVN5I002Hl0RSNY00 +00000000005+cMbHfZaA|NaUv_0~WN&gWXmo9CHEd~OFJo_Rb97;DbaO6nc~DCM0u%!j000080Ei{+O +kdV+=nX^w0JG2m03!eZ00000000000HlG}7!Ck%X>c!Jc4cm4Z*nhabZu-kY-wUIXmo9CHE>~ab7gWa +aCuNm0Rj{Q6aWAK2mpvB?M$!(4I;S^0053X001HY0000000000005+cC0z~xaA|NaUv_0~WN&gWXmo9 +CHEd~OFLPybX<=+>dS!AhaCuNm0Rj{Q6aWAK2mpvB?M&~}uMegG001EY001Tc0000000000005+c9&Q +c*aA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{8UukY>bYEXCaCuNm0Rj{Q6aWAK2mpvB?M!Hl-&KJD00 +5!`001KZ0000000000005+c2yYGmaA|NaUv_0~WN&gWXmo9CHEd~OFJE+WX=N{8VqtS-E^v8JO928D0 +~7!N00;nxCGAWkRh_A(0RRA+1ONae00000000000001_fy!_W0B~t=FJE?LZe(wAFKBdaY&C3YVlQ8G +a%p8RWMOo2X=N^Oc~DCM0u%!j000080Ei{+OiNF0&K&{(0Ph9>03ZMW00000000000HlGkat;7+X>c! +Jc4cm4Z*nhabZu-kY-wUIUvzS5WiN1fE^v8JO928D0~7!N00;nxCGAWA00002000000000e00000000 +000001_fem#I0B~t=FJE?LZe(wAFKBdaY&C3YVlQTCY;MtBUtcb8c~DCM0u%!j000080E +i{+On|Ti5W)cf0G9&*05$*s00000000000HlFcbq)Yc!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bV +Qg?{VPa);X=7n*VRUqIX<~JBWpgfYc~DCM0u%!j000080Ei{+Od^2$#FYR503HDV03-ka0000000000 +0HlFycMbq>X>c!Jc4cm4Z*nhabZu-kY-wUIW@&76WpZ;bVqtS-E^v8JO928D0~7!N00;nxCGAY}z&{r +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 +YRh48%z1poko6#xJx00000000000001_fll5J0B~t=FJE?LZe(wAFKlmPYi4O|WiNAaY-x05Y;R+0W@ +&6?E^v8JO928D0~7!N00;nxCGAX+BMI3(0{{Rx3IG5n00000000000001_ft%wG0B~t=FJE?LZe(wAF +KlmPYi4O|WiNAiZER_7Yiw_0Yi4O|WiD`eP)h*<6ay3h000O8hb8Sy=jvCXfdT*kjRpV!9{>OV00000 +00000q=6mh4*+m!a4%nWWo~3|axZOjXK-O-YcF44X>MtBUtcb8c~DCM0u%!j000080EZ>*OdZt_hZX< +;02BZK03QGV00000000000HlH2=??&KX>c!Jc4cm4Z*nhfb7yd2V{0#8c4cyNX>V>WaCuNm0Rj{Q6aW +AK2mpsA?M&jU4@qMI001Ba001EX0000000000005+cF6s{eaA|NaUv_0~WN&gWZF6UEVPk7AWq4y{aC +B*JZgVbhc~DCM0u%!j000080Es2-Ok6B)2R|DC06UHV03QGV00000000000HlG?>kj~MX>c!Jc4cm4Z +*nhfb7yd2V{0#FVQg$-VPk79aCuNm0Rj{Q6aWAK2mpsA?Mz+BBj1Vv007Ve001HY0000000000005+c +Oa~AEaA|NaUv_0~WN&gWaA9L>VP|P>XD?r0VPbD}bYEXCaCuNm0Rj{Q6aWAK2mpsA?M#7omdY3b0003 +3001EX0000000000005+c76}jlaA|NaUv_0~WN&gWaA9L>VP|P>XD?r0X>MtBUtcb8c~DCM0u%!j000 +080EZ>*Oy+4yc!Jc4cm4Z*nhiVPk7yXK8L{FJEJCZE +#_9E^v8JO928D0~7!N00;nwCGAX-xi$%N0RRAs1pojf00000000000001_fp!cK0B~t=FJE?LZe(wAF +K}UFYhh<;Zf7rFb98cbV{~*ObjxUH~c!Jc4cm4Z*nhiVPk7yXK8L{FKuCRYh`kCE^v8JO928D0~7!N00;nwCGAYIi|o*^1^@t +A5dZ)s00000000000001_foT{J0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rYWpQVP|P>XD +@SbWn*b(X=QSAE^v8JO928D0~7!N00;nwCGAYms=rK;0ssIk1^@sa00000000000001_fhsr<0B~t=F +JE?LZe(wAFK}UFYhh<;Zf7rbbZKmJE^v8JO928D0~7!N00;nwCGAYdQo*#F4FCYUF8}}_0000000000 +0001_f%iHP0B~t=FJE?LZe(wAFK}UFYhh<;Zf7rcWpZc!Jc4cm4Z*nhiYiD0_Wpi(Ja${w4FJE72ZfSI1UoLQYP)h +*<6ay3h000O8i6!k!$47lKNC5xc!Jc4cm4Z*nhia&KpHWpi^cUtei%X>?y-E^v8JO928D0~7!N00;m;L-9;k%xV_S1ONbj3jhEc +00000000000001_fk(a&0B~t=FJE?LZe(wAFK}{iXL4n8b1!0HaxQRrP)h*<6ay3h000O8hb8Syn{v- +}Bm)2d_yqs}9{>OV0000000000q=8Pu5CCv#a4%nWWo~3|axZXlZ)b94b8|0aZ*^{TWpXZXc~DCM0u% +!j0000806;_WOcPSBPyYh|0Ei0!03QGV00000000000HlGh#t;B-X>c!Jc4cm4Z*nhia&KpHWpi^cXk +~10WpZ;aaCuNm0Rj{Q6aWAK2mpsA?M$I#`~@Wg005r_0018V0000000000005+c>&g%SaA|NaUv_0~W +N&gWaB^>Fa%FRKFLQ8dZf<3AE^v8JO928D0~7!N00;nwCGAWN?y-E^v8JO928D0~7!N00;nwCGAX1JNbdW0002}0RR9 +R00000000000001_fyvGg0B~t=FJE?LZe(wAFK~HuZ*6QZV{dY0E^v8JO928D0~7!N00;m;L-9-~?L7 +_n3IG7-D*yl-00000000000001_fxpiX0B~t=FJE?LZe(wAFK~HuZ*6QZaA9(DWpXZXc~DCM0u%!j00 +0080EZ>*OtLa%gLwr20Ot+>02}}S00000000000HlHO+7JM6X>c!Jc4cm4Z*nhid30}WY%h0mX>?_BE +^v8JO928D0~7!N00;m;L-9-<`0J5m1^@tS5C8xm00000000000001_fu!IN0B~t=FJE?LZe(wAFLGsZ +b!BsOb1z?CX>MtBUtcb8c~DCM0u%!j0000806;_WOj37(wE_VE0JH%B03!eZ00000000000HlFN=MVs +JX>c!Jc4cm4Z*nhkWpQ<7b98erUte}*a&u{KZeL$6aCuNm0Rj{Q6aWAK2mpvB?M#TNIlB}B002k?001 +Wd0000000000005+ciRcgjaA|NaUv_0~WN&gWa%FLKWpi|MFJEbHbY*gGVQgP@bZKmJE^v8JO928D0~ +7!N00;m;L-9;}(0Xfs6aWCUQvd)U00000000000001_f#T{A0B~t=FJE?LZe(wAFLGsZb!BsOb1z|JV +Q_S1a&sc!Jc4cm4 +Z*nhkWpQ<7b98erVQ^_KaCuNm0Rj{Q6aWAK2mnAs@l1a14a{&0007`8000~S0000000000005+c0tOK +PaA|NaUv_0~WN&gWa%FLKWpi|MFJX0bXfAMhP)h*<6ay3h000O8h$Zbzg0iB|E&%`l(E$Je9RL6T000 +0000000q=Bpv5dd&$a4%nWWo~3|axZdaadl;LbaO9bWpZ?LE^v8JO928D0~7!N00;m;L-9-%rId={0s +sKc2LJ#b00000000000001_ffW-G0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZE#_9E^v8JO928D0~7!N0 +0;m;L-9;ScWdgK6953JM*sjH00000000000001_fie~m0B~t=FJE?LZe(wAFLGsZb!BsOb1!3WZ)<5~ +b1rasP)h*<6ay3h000O8Ktu6Nxwvd`I|Kj#eGC8qA^-pY0000000000q=5=55dd&$a4%nWWo~3|axZd +aadl;LbaO9dcw=R7bZKvHb1rasP)h*<6ay3h000O8Ktu6Nari`DZ3F-SRSp0E8~^|S0000000000q=A +Jl5dd&$a4%nWWo~3|axZdaadl;LbaO9gWo&RRaCuNm0Rj{Q6aWAK2mpvB?M!*vqsn>#009320012T00 +00000000005+cEHe=RaA|NaUv_0~WN&gWa%FLKWpi|MFKBOXYjZAec~DCM0u%!j0000806;_WOeqfk( +k>03HAU00000000000HlH8G!X!BX>c!Jc4cm4Z*nhkWpQ<7b98erZEs{{Y;!Jfc~DCM0u%!j +000080Es2-OcFfafolN(0Jj1F03ZMW00000000000HlFSTM+c!Jc4cm4Z*nhkWpQ<7b98eraA9L +>VP|D?E^v8JO928D0~7!N00;m;L-9-;fEy={9smHfYybct00000000000001_f%IGv0B~t=FJE?LZe( +wAFLGsZb!BsOb1!pcb8~5LZgVbhc~DCM0u%!j0000806;_WOr|z?(|ZO003Z+m03-ka00000000000H +lGydl3L|X>c!Jc4cm4Z*nhkWpQ<7b98erb97;Jb#q^1Z)9b2E^v8JO928D0~7!N00;m;L-9=Mi#d691 +ONb~3jhEj00000000000001_fqjAz0B~t=FJE?LZe(wAFLGsZb!BsOb1!pra&=>Lb#i5ME^v8JO928D +0~7!N00;m;L-9<5rYtOfB>(`-bpQYz00000000000001_fii~?0B~t=FJE?LZe(wAFLGsZb!BsOb1!v +tX>4;YaCuNm0Rj{Q6aWAK2mnAs@l4h^p&)ex001Qm0018V0000000000005+c?5q(0aA|NaUv_0~WN& +gWb#iQMX<{=kUtei%X>?y-E^v8JO928D0~7!N00;m;L-9-t-*JWv4FCXHDgXc@00000000000001_fu +6Au0B~t=FJE?LZe(wAFLiQkY-wUMFJEJCY;0v?bZKvHb1rasP)h*<6ay3h000O8Ktu6Nd>V?DZ*OcaaCuNm0Rj{Q6aWAK2mnAs@l3tcTc>~s007Jx001EX0000000000005+cUic9JaA|NaUv_ +0~WN&gWb#iQMX<{=kWq4y{aCB*JZgVbhc~DCM0u%!j0000806;_WOoR2p4lD-%05=x^0384T0000000 +0000HlE(0TKXkX>c!Jc4cm4Z*nhna%^mAVlyvhX=Q9=b1rasP)h*<6ay3h000O8Ktu6NBv!R4eggmig +b4ru9{>OV0000000000q=AG85&&>%a4%nWWo~3|axZmqY;0*_GcRUoY-Mn7b963nc~DCM0u%!j00008 +06;_WOxk=^onjLJ0JT8?03rYY00000000000HlFG3=#lvX>c!Jc4cm4Z*nhna%^mAVlyvrZ*OdEVQyh +(WpXZXc~DCM0u%!j0000806;_WObg3!W1t5B0Bjck03HAU00000000000HlH89})m?X>c!Jc4cm4Z*n +hna%^mAVlyvtWpQ<7b963nc~DCM0u%!j0000806;_WOcq9497Y-d09#-H03QGV00000000000HlGvCl +UZ~X>c!Jc4cm4Z*nhna%^mAVlyvtWpi+EZgXWWaCuNm0Rj{Q6aWAK2mnAs@k{^!0006200000001Wd0 +000000000005+cKtd7#aA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OUtei%X>?y-E^v8JO928D0~7!N +00;m;L-9=D2f2Q-3;+PVD*yl}00000000000001_frmm80B~t=FJE?LZe(wAFLiQkY-wUMFJo_RbaH8 +8FJW+SWo~C_Ze=cTc~DCM0u%!j0000806;_WOfIEyjidzt0Dchw04D$d00000000000HlF`PZ9udX>c +!Jc4cm4Z*nhna%^mAVlyveZ*FvQX<{#KbZl*KZ*OcaaCuNm0Rj{Q6aWAK2mnAs@l2-sMU^=d004MA00 +1Ze0000000000005+cXjKvbaA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OaCvWVWo~nGY%XwlP)h*<6 +ay3h000O8Ktu6Nr3}>Q{~rJVWp)4nE&u=k0000000000q=DyX5&&>%a4%nWWo~3|axZmqY;0*_GcRLr +Zgg^KVlQ)LV|8+6baG*Cb8v5RbS`jtP)h*<6ay3h000O8Ktu6NsRW>~eFp#l_ZR>GBme*a000000000 +0q=7Pt5&&>%a4%nWWo~3|axZmqY;0*_GcRLrZgg^KVlQ)VV{3CRaCuNm0Rj{Q6aWAK2mnAs@k{^!000 +6200000001}u0000000000005+c@sJV#aA|NaUv_0~WN&gWb#iQMX<{=kV{dMBa%o~OUvp(+b#i5Na$ +#%a4%nWWo~3|axZmqY;0*_GcRLrZgg^KVlQ8FWn*=6Wpr|3ZgX&Na&#|ZX>Md`ZfA2YaCuNm0Rj{Q +6aWAK2mnAs@l1kqOO106004q70021v0000000000005+c_Mj2~aA|NaUv_0~WN&gWb#iQMX<{=kV{dM +Ba%o~OUvp(+b#i5Na$#c!Jc4cm4Z*nhna%^mAVlyvrVPk7yXJvCQUtei%X>?y-E^v8JO928D0~ +7!N00;m;L-9;T!KP>M3IG7-A^-p^00000000000001_fmX2+0B~t=FJE?LZe(wAFLiQkY-wUMFK}UFY +hh<)b1!dlWMy(?WM5=yV{|TXc~DCM0u%!j0000806;_WOqp0sT1XuL0Fre803!eZ00000000000HlGC +yb=I#X>c!Jc4cm4Z*nhna%^mAVlyvrVPk7yXJvCQb7^=kaCuNm0Rj{Q6aWAK2mnAs@k{^!000620000 +0001%o0000000000005+c8QKy6aA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FJfV1YjAIJbaO9XUuk +Y>bYEXCaCuNm0Rj{Q6aWAK2mnAs@k~-z9Jx;d006ZG001%o0000000000005+cYuXY3aA|NaUv_0~WN +&gWb#iQMX<{=kaA9L>VP|D?FJfV1YjAIJbaO9lVQXb(X>4UKaCuNm0Rj{Q6aWAK2mnAs@l5+|%H=-+0 +06K80027x0000000000005+c3f&R_aA|NaUv_0~WN&gWb#iQMX<{=kaA9L>VP|D?FLQHjUu|J@V`yJ! +Z*z2RVQpnEUtei%X>?y-E^v8JO928D0~7!N00;m;L-9=2FDci&2mkY9H0RR9L1ONae00000000000001_fxhPw0B~t=FJE?LZe(wAFL +iQkY-wUMFLiWjY%gD5X>MtBUtcb8c~DCM0u%!j0000806;_WOpLVr9H9mP0JjhT044wc00000000000 +HlGW=@I~NX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlaV{dM5Wn*+{Z*DGdc~DCM0u%!j0000806;_WO!O>! +F#G@j0Pz6;03iSX00000000000HlG5@Dc!UX>c!Jc4cm4Z*nhna%^mAVlyvwbZKlaadl;NWiD`eP)h* +<6ay3h000O8Ktu6NL1B>B0R;d6c@6*oBLDyZ0000000000q=Cfo5&&>%a4%nWWo~3|axZmqY;0*_GcR +>?X>2cYWpQ<7b963nc~DCM0u%!j0000806;_WO!PS%pV$Kc04E6m03-ka00000000000HlEi_YwebX> +c!Jc4cm4Z*nhna%^mAVlyvwbZKlaa%FRHZ*FsCE^v8JO928D0~7!N00;m;L-9-svzSov5dZ)HI{*M70 +0000000000001_fgt-50B~t=FJE?LZe(wAFLiQkY-wUMFLiWjY%g+UbaHtvaCuNm0Rj{Q6aWAK2mnAs +@l4)k!Wh>Q0071|001BW0000000000005+cPz@6RaA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLQHjUoLQ +YP)h*<6ay3h000O8Ktu6NRZ`9%a|-|f9VP$(BLDyZ0000000000q=981698~&a4%nWWo~3|axZmqY;0 +*_GcR>?X>2caX>Db1b#yLpc~DCM0u%!j0000806;_WOv4^+5ex|c09P3R03QGV00000000000HlE#EE +525X>c!Jc4cm4Z*nhna%^mAVlyvwbZKlab#iPjaCuNm0Rj{Q6aWAK2mnAs@l0Kz>Y>I5003MS001BW0 +000000000005+cVl@*0aA|NaUv_0~WN&gWb#iQMX<{=kb#!TLFLz;SbS`jtP)h*<6ay3h000O8hb8Sy +c+eklG7A6zQz-xdBme*a0000000000q=9BV698~&a4%nWWo~3|axZsfVr6b)Z)9n1XLB!KUukY>bYEX +CaCuNm0Rj{Q6aWAK2mpsA?M%n52#W;<000vs001HY0000000000005+c+DH=saA|NaUv_0~WN&gWcV% +K_Zewp`X>Mn8FKl6AWo&aUaCuNm0Rj{Q6aWAK2mpsA?MzUAF&{(%000>U001Na0000000000005+cA5 +RkiaA|NaUv_0~WN&gWcV%K_Zewp`X>Mn8FKugVVPa)$b1rasP)h*<6ay3h000O8hb8SyXE<=Dxdi|Kq +Zt4IApigX0000000000q=BVT698~&a4%nWWo~3|axZsfVr6b)Z)9n1XLB!fWpi|ME^v8JO928D0~7!N +00;nwCGAYx2K?5g1ONcj5C8xw00000000000001_ft^Mg?E^v8JO9ci10000X0U-h9SpWcvToV8Q00 +""" + + +if __name__ == "__main__": + main() From ba702d7e7a72a1085123ba43761199fb4676058b Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 23 Mar 2020 00:25:21 +0800 Subject: [PATCH 031/270] Generate many captchas images --- .DS_Store | Bin 8196 -> 8196 bytes CV/Patch_CAPTCHA.py | 95 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 CV/Patch_CAPTCHA.py diff --git a/.DS_Store b/.DS_Store index 68625c7f7a2c0f400ee47e4702c17c30ba723b5f..3092ff87914a431a7f9d7163f9851e70e6098e54 100644 GIT binary patch delta 197 zcmZp1XmOa}I9U^hRb(qtY11CEs9#0_*CT7@Qfxa?%Zhlk;;67!Uv~ zo}2IDl9ZF51Qh1zeeyl>iSQvuAR8)|f>W*_1H(KnhIEEhh7tx{h6096Al3uoO3xgj j{A8#F0t^g{Aj5+u^9ibL{v{B{wwYbx8_Q-t5q4$(&@V7^ delta 47 zcmV+~0MP%0K!iY$PXQdUP`eKS9Fq(XFq2OZqm#%H8?&hqUIvkXud@dj_5`!66 100 - self.point_chance: + self.draw.point((w, h), fill=(0, 0, 0)) + + def gene_code(self): + # 生成验证码图片 + font_width, font_height = self.font.getsize(self.text) + self.draw.text( + ((self.pic_size[0] - font_width) / self.text_num, (self.pic_size[1] - font_height) / self.text_num), self.text, + font=self.font, + fill=self.text_color) + if self.draw_line: + n = random.randint(self.line_number[0],self.line_number[1]) + print(n) + for i in range(n): + self.gene_line() + if self.draw_points: + self.gene_points() + params = [1 - float(random.randint(1, 2)) / 100, + 0, + 0, + 0, + 1 - float(random.randint(1, 10)) / 100, + float(random.randint(1, 2)) / 500, + 0.001, + float(random.randint(1, 2)) / 500 + ] + self.image = self.image.transform((self.pic_size[0], self.pic_size[1]), Image.PERSPECTIVE, params) # 创建扭曲 + self.image = self.image.filter(ImageFilter.EDGE_ENHANCE_MORE) # 滤镜,边界加强 + return self.image + + +if __name__ == "__main__": + x = create_captcha() + image = x.gene_code() + sum_cap = x.text + save_png = os.getcwd()+'/'+sum_cap+'.png' + image.save(save_png) + text0 = pytesseract.image_to_string(Image.open(save_png)) + print(text0) + image.show() + From 977a2ef0e56e18023a2155c0494de9ed17fd0ecf Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 30 Mar 2020 21:22:54 +0800 Subject: [PATCH 032/270] graph algorithm --- .DS_Store | Bin 8196 -> 8196 bytes BFS.py | 33 +++++++++++++++++++++++++++++ DFS.py | 34 +++++++++++++++++++++++++++++ dijkstra.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 127 insertions(+) create mode 100644 BFS.py create mode 100644 DFS.py create mode 100644 dijkstra.py diff --git a/.DS_Store b/.DS_Store index 3092ff87914a431a7f9d7163f9851e70e6098e54..de8d2ef433cc6380afbedef75fe1141c82168b7d 100644 GIT binary patch delta 146 zcmZp1XmOa}OBU^hRb+GHMqHSBB*P7H1g!IK+BM0glhGB7Y`{0D={n+04%Jah7s zlXCKtfWiVmYz>m0{9K?IsLKVaOH}?dLKBe1z`)Ir!jQ?3#gNTV%uvEmG`U_xoExNO W2E^dSp@M9i*(JWQZ1xsmX9fWJ&o4j# delta 47 zcmV+~0MP%0K!iY$PXQvaP`eKSB9jadtdryrKa)ohW3vnr`vsAJva<&m_5`!96<7k1 FfUlM!5!nC$ diff --git a/BFS.py b/BFS.py new file mode 100644 index 0000000..8d44d17 --- /dev/null +++ b/BFS.py @@ -0,0 +1,33 @@ +# -*- coding:utf-8 -*- +#fuction: using DP +#Author: Toryun + +graph = { + "A": ["B","C"], + "B": ["A","C","D"], + "C": ["A","B","D","E"], + "D": ["B","C","E","F"], + "E": ["C","D"], + "F": ["D"] +} + +def BFS(graph,s): + #s is vertex which is stared + queue = [] + seen = set() + queue.append(s) + seen.add(s) + while (len(queue)>0): + vertex = queue.pop(0) + #print queue + nodes = graph[vertex] + #print nodes + for w in nodes: + if w not in seen: + queue.append(w) + seen.add(w) + #print seen,queue + print vertex + print queue +if __name__ == '__main__': + BFS(graph,"E") diff --git a/DFS.py b/DFS.py new file mode 100644 index 0000000..e002ea7 --- /dev/null +++ b/DFS.py @@ -0,0 +1,34 @@ +# -*- coding:utf-8 -*- +#fuction: using DP +#Author: Toryun + +graph = { + "A": ["B","C"], + "B": ["A","C","D"], + "C": ["A","B","D","E"], + "D": ["B","C","E","F"], + "E": ["C","D"], + "F": ["D"] +} + +def DFS(graph,s): + stack = [] + seen = set() + parent = {s:None} + stack.append(s) + seen.add(s) + while (len(stack)>0): + vertex = stack.pop() + #print stack + nodes = graph[vertex] + #print nodes + for w in nodes: + if w not in seen: + stack.append(w) + seen.add(w) + parent[w] = vertex + #print seen,stack + print vertex + print parent +if __name__ == '__main__': + DFS(graph,"A") diff --git a/dijkstra.py b/dijkstra.py new file mode 100644 index 0000000..db50562 --- /dev/null +++ b/dijkstra.py @@ -0,0 +1,60 @@ +# -*- coding:utf-8 -*- +#fuction: using DP +#Author: Toryun +import heapq +import math +graph = { + "A": {"B":5,"C":1}, + "B": {"A":5,"C":2,"D":1}, + "C": {"A":1,"B":2,"D":4,"E":8}, + "D": {"B":1,"C":4,"E":3,"F":6}, + "E": {"C":8,"D":3}, + "F": {"D":6} +} +def __init__distance(graph,s): + #初始化距离字典 + distance = {s:0} + for vertex in graph: + if vertex != s: + distance[vertex] = float('inf') + return distance + +def get_key (dict, value): + for k, v in dict.items(): + if v == value: + return k + +def dijkstra(graph,distance,s): + pqueue = [] + seen = set() + parent = {s:None} + heapq.heappush(pqueue,(0,s)) + while (len(pqueue)>0): + pair = heapq.heappop(pqueue) + #print pqueue + dist = pair[0] + vertex = pair[1] + seen.add(vertex) + nodes = graph[vertex].keys() + #print nodes + for w in nodes: + if w not in seen: + if dist + graph[vertex][w] < distance[w]: + heapq.heappush(pqueue,(dist + graph[vertex][w],w)) + parent[w] = vertex + distance[w] = dist + graph[vertex][w] + + return parent,distance +if __name__ == '__main__': + print graph.keys() + s = raw_input("Please choose one key to caculate the shortest path:\n") + distance = __init__distance(graph,s) + parent,distance = dijkstra(graph,distance,s) + print parent + print distance + distance = sorted(distance.items(), key=lambda x: x[1]) + d = [] + for i in distance: + d.append(i[0]) + lon = "-->" + print "The shortest path of this graph is \n-----------------------\n"+lon.join(d)+"\n-----------------------" From 1dbb2b370837c1c8fbcf249537d099ae2e61f44a Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 30 Mar 2020 21:34:50 +0800 Subject: [PATCH 033/270] change directory --- .DS_Store | Bin 8196 -> 8196 bytes BFS.py | 3 ++- Grapgh Theory/.DS_Store | Bin 0 -> 6148 bytes Grapgh Theory/BFS.py | 33 +++++++++++++++++++++++++++++++++ DFS.py => Grapgh Theory/DFS.py | 0 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 Grapgh Theory/.DS_Store create mode 100644 Grapgh Theory/BFS.py rename DFS.py => Grapgh Theory/DFS.py (100%) diff --git a/.DS_Store b/.DS_Store index de8d2ef433cc6380afbedef75fe1141c82168b7d..7e00bad23ac46ce2c6d78e153474c4b7e9d16b7d 100644 GIT binary patch delta 54 zcmV-60LlM^K!iY$PXQ#cP`eKSB$Esftdryr#*@|&B?baJ00038vjGwY29bbRvj-UW M1hZBZu>z5RRp53JP5=M^ delta 128 zcmZp1XmOa}OBU^hRb+GHMqHR@~(P7H1g!3=r~1q_v*Ir+&+Ir&Kp3=9H5yb_2t s{)55f%>t)^YF%)tW&Dh!wo*`w4JOV diff --git a/BFS.py b/BFS.py index 8d44d17..e22f192 100644 --- a/BFS.py +++ b/BFS.py @@ -30,4 +30,5 @@ def BFS(graph,s): print vertex print queue if __name__ == '__main__': - BFS(graph,"E") + s = raw_input("Please choose one key to caculate the shortest path:\n") + BFS(graph,s) diff --git a/Grapgh Theory/.DS_Store b/Grapgh Theory/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..634389d22f8de59bec731b97514eab07a266fee4 GIT binary patch literal 6148 zcmeHKyJ`b55ZsN8F{HUNrM|$BKM=>o;MzYB9G3>Cagpx2e0DPXu(3D?Ql)TaVRxj} zj>JuID~X8qr~R`?Cn8I@p?q4Hnys5p>>)FT>U+G)$L4T++Z~R(N%if7aTn6dTDG#1 zmfw9f<{K;4n008d+X%mtk)L!EBtJz^>T#f5`c-d d;-{;+Vq?_R#4*t6$U7a#i-74uqXK`Sz&FaqH6j22 literal 0 HcmV?d00001 diff --git a/Grapgh Theory/BFS.py b/Grapgh Theory/BFS.py new file mode 100644 index 0000000..8d44d17 --- /dev/null +++ b/Grapgh Theory/BFS.py @@ -0,0 +1,33 @@ +# -*- coding:utf-8 -*- +#fuction: using DP +#Author: Toryun + +graph = { + "A": ["B","C"], + "B": ["A","C","D"], + "C": ["A","B","D","E"], + "D": ["B","C","E","F"], + "E": ["C","D"], + "F": ["D"] +} + +def BFS(graph,s): + #s is vertex which is stared + queue = [] + seen = set() + queue.append(s) + seen.add(s) + while (len(queue)>0): + vertex = queue.pop(0) + #print queue + nodes = graph[vertex] + #print nodes + for w in nodes: + if w not in seen: + queue.append(w) + seen.add(w) + #print seen,queue + print vertex + print queue +if __name__ == '__main__': + BFS(graph,"E") diff --git a/DFS.py b/Grapgh Theory/DFS.py similarity index 100% rename from DFS.py rename to Grapgh Theory/DFS.py From 25209e0fb5078ee94ae34b2633807c1d4e505904 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 5 Apr 2020 01:13:31 +0800 Subject: [PATCH 034/270] updated --- .DS_Store | Bin 8196 -> 10244 bytes Apply_for_Job/51job.py | 196 +++++++++++++++++++++++++++++++++ Apply_for_Job/requirements.txt | 5 + BFS.py | 15 +-- DFS.py | 34 ++++++ PDF_to_EPUB/pdf_to_epub.py | 133 ++++++++++++++++++++++ PDF_to_EPUB/requirements.txt | 1 + __init__.py | 0 8 files changed, 377 insertions(+), 7 deletions(-) create mode 100644 Apply_for_Job/51job.py create mode 100644 Apply_for_Job/requirements.txt create mode 100644 DFS.py create mode 100644 PDF_to_EPUB/pdf_to_epub.py create mode 100644 PDF_to_EPUB/requirements.txt create mode 100644 __init__.py diff --git a/.DS_Store b/.DS_Store index 7e00bad23ac46ce2c6d78e153474c4b7e9d16b7d..21055843cbbfa25ea5cdfeaa8a746917e875e475 100644 GIT binary patch delta 1135 zcmZp1XbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~50C~5}eFar4u44Dii4Dmpy$561b za2or>2Hwr=94s95AQjwTnM{T}WK|56o;mr+NjdpRAOnHMv;r~5e=q=wFfi~kI5HFf zVGctjP=6XjK0^_Z_5#vLs5%)!fI4}x>y$y)np9p~0JZewWKW?6O^NDiV`Ebt1!H4_ zS{;RIb8`b71ruYl+FDKyaaBWG&xG8{s_L5Bx|x$d3dy_8!tbz@;^ds9{QMjO?w_nL zELxA#ce(j4E>I_OMBG?aoGX3E5x=#$`6(poD9D(6SXfvUryI(Gi}G^v^U{I#GEU|Z zSfkFy;Kbm@5Dbc6^q6B<2~?#43IEBP1x^Fiy5LgF_!*&gbETj^b0jxI09biEFahNQ zW6KrD4`pydi(+@6wi2W$#-WR{*sTY}E)J7((hY-?^K%P;DqsMIO62HsUjF(dH2QF= zMns(wVdaw#3JWXaFbX-&HXjvnV&2$b$t=hWajpV4kah)S-HnCcnJ4qh1d1?0GPDLr x0WcFAfau8uGJTuPgeEZ+;IM@9cu6YA$t*50Fu2ah#LU9V#?HaP#lgkP1ps9k3rYY0 delta 131 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aKKtOAk;@)`1zlXCKtKvEkEr?F3L z;NQ&7!NS3)GPyx$&EyE-W1GE1yqGulOWHFFG6Pisfdn^@a0QvQvG6 0 else '' + jobs.append(title.strip()) + print(address) + address = address if len(address) > 0 else '' + jobs.append(address.strip()) + name = name[0] if len(name) > 0 else '' + jobs.append(name) + salary = salary[0] if len(salary) > 0 else '' + jobs.append(salary) + detail = detail if len(detail) > 0 else '' + jobs.append(detail.strip()) + info = info[0] if len(info) > 0 else '' + jobs.append(info) + site = site[0] if len(site) > 0 else '' + jobs.append(site) + return jobs + + def __getJobDetail(self,site): + '''工作简介职责''' + try: + site = site[0] if len(site) > 0 else '' + res = requests.get(site,timeout=2) + res.encoding = 'gbk' + selector = etree.HTML(res.text) + #有时候是p标签组成的,有时候没有p标签 + jobDetails = selector.xpath('//div[@class="bmsg job_msg inbox"]') + addresses = selector.xpath('/html/body/div[3]/div[2]/div[3]/div[2]/div') + detail = jobDetails[0].xpath('string(.)').strip() + address = addresses[0].xpath('string(.)').strip() + return detail,address + except Exception as e: + return "暂无数据" + + + def getData(self,work='Python'): + '''获取51job上的数据''' + self.__job=work + #先模拟搜索全国Python招聘 + self.__findWebSite() + t = True + while t: + #下拉滚动条 + for i in range(5): + height = 1000 * i + self.__driver.execute_script('window.scrollBy(0,'+str(height)+')') + selector = etree.HTML(self.__driver.page_source) + divs = selector.xpath('//*[@id="resultList"]/div[@class="el"]') + for div in divs: + title = div.xpath('./p/span/a/text()') + info=div.xpath('./span[2]/text()') + name=div.xpath('./span[1]/a/@title') + salary = div.xpath('./span[3]/text()') + site = div.xpath('./p/span/a/@href') + + detail,address = self.__getJobDetail(site) + + jobs = self.__fitterField(title,info,name,salary,detail,address,site) + #开始存入到excel中 + self.__saveDataToExcel(jobs) + for i in tqdm(range(len(divs))): + time.sleep(0.0001) + try: + self.__driver.find_element_by_xpath('//*[@id="resultList"]/div[55]/div/div/div/ul/li[8]/a').click() + page_id = re.findall(r'

  • (\d+)<\/li>',self.__driver.page_source) + print(page_id[0]) + except Exception as e: + print(e,end="\n") + t = False + self.__driver.close() + def Send_attchment(): + '''Send the data to my emailbox''' + EMAIL_HOST = 'smtp.qq.com' + EMAIL_HOST_USER = '1329776780@qq.com' + password = input("Please input the EMAIL_HOST_PASSWORD to login email:\n") + EMAIL_HOST_PASSWORD = password + EMAIL_PORT = 587 + EMAIL_USE_TLS = True + from_email = "1329776780@qq.com" + from_addr = "Toryun" + to_addr = ["zhongjin95@gmail.com"] + subject = "24h jobs for {}".format(self.__job) + content = "here is the message send from {0}".format(from_addr) + path_file = "51Job_xpath.xls" + message = MIMEMultipart() + message['From'] = Header(from_addr,'utf-8') + message['To'] = Header(to_addr[0],'utf-8') + message['Subject'] = Header(subject, 'utf-8') + message.attach(MIMEText(content,'plain', 'utf-8')) + att1 = MIMEText(open(path_file, 'rb').read(), 'base64', 'utf-8') + att1["Content-Type"] = 'application/octet-stream' + att1["Content-Disposition"] = 'attachment; filename="covid-19.txt"' + message.attach(att1) + try: + smtpObj = smtplib.SMTP_SSL(EMAIL_HOST,465) + smtpObj.login(EMAIL_HOST_USER,EMAIL_HOST_PASSWORD) + smtpObj.sendmail(from_email, to_addr, message.as_string()) + print("邮件发送成功") + except OSError as err: + print("Error: 无法发送邮件\n{0}".format(err)) + #msg.content_subtype = "txt" + #msg.attach_file(path_file) + #msg.send() + +if __name__=='__main__': + job = Job() + #此处可以写Android等其它岗位 + try: + s = input("Please in put the jos which you want to search:\n") + except: + s = "Python" #默认 + t0 = time.time() + job.getData(s) + Send_attchment() + t1 = time.time() + T = t1 - t0 + print("Total time is {}".format(T)) + diff --git a/Apply_for_Job/requirements.txt b/Apply_for_Job/requirements.txt new file mode 100644 index 0000000..833a9f1 --- /dev/null +++ b/Apply_for_Job/requirements.txt @@ -0,0 +1,5 @@ +xlwt==1.3.0 +requests==2.23.0 +selenium==3.141.0 +lxml==4.5.0 +tqdm==4.44.1 diff --git a/BFS.py b/BFS.py index e22f192..478d766 100644 --- a/BFS.py +++ b/BFS.py @@ -4,11 +4,13 @@ graph = { "A": ["B","C"], - "B": ["A","C","D"], - "C": ["A","B","D","E"], - "D": ["B","C","E","F"], - "E": ["C","D"], - "F": ["D"] + "B": ["D","C","F","A","E"], + "C": ["A","B","G","E","H"], + "D": ["B"], + "E": ["B","C","F","G"], + "F": ["B","E"], + "G": ["E","C"], + "H": ["C"] } def BFS(graph,s): @@ -28,7 +30,6 @@ def BFS(graph,s): seen.add(w) #print seen,queue print vertex - print queue if __name__ == '__main__': s = raw_input("Please choose one key to caculate the shortest path:\n") - BFS(graph,s) + BFS(graph,s) \ No newline at end of file diff --git a/DFS.py b/DFS.py new file mode 100644 index 0000000..e002ea7 --- /dev/null +++ b/DFS.py @@ -0,0 +1,34 @@ +# -*- coding:utf-8 -*- +#fuction: using DP +#Author: Toryun + +graph = { + "A": ["B","C"], + "B": ["A","C","D"], + "C": ["A","B","D","E"], + "D": ["B","C","E","F"], + "E": ["C","D"], + "F": ["D"] +} + +def DFS(graph,s): + stack = [] + seen = set() + parent = {s:None} + stack.append(s) + seen.add(s) + while (len(stack)>0): + vertex = stack.pop() + #print stack + nodes = graph[vertex] + #print nodes + for w in nodes: + if w not in seen: + stack.append(w) + seen.add(w) + parent[w] = vertex + #print seen,stack + print vertex + print parent +if __name__ == '__main__': + DFS(graph,"A") diff --git a/PDF_to_EPUB/pdf_to_epub.py b/PDF_to_EPUB/pdf_to_epub.py new file mode 100644 index 0000000..20c8ac8 --- /dev/null +++ b/PDF_to_EPUB/pdf_to_epub.py @@ -0,0 +1,133 @@ +#coding:UTF-8 +from selenium import webdriver +from selenium.webdriver.common.by import By +from selenium.webdriver.support.ui import WebDriverWait +from selenium.webdriver.support import expected_conditions as EC +import platform +import re +import os +import sys +import datetime,time +import random +import tkinter as tk +from tkinter import messagebox +from tkinter.filedialog import (askopenfilename, + askopenfilenames, + askdirectory, + asksaveasfilename) + + +url = "https://www.cleverpdf.com/cn/pdf-to-epub" + +def system_info(): + '''Read system information then download the corresponding chromedriver + 读取系统信息,下载对应的chromedriver''' + sysstr = platform.system() + if sysstr =="Darwin": + url = "https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_mac64.zip" + name = "chromedriver_mac64.zip" + os.system("wget "+url+" && tar -xzvf "+zip_name) + driver_url = os.getcwd()+"/chromedriver" + elif sysstr == "windows": + url = "https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_win32.zip" + name = "chromedriver_win32.zip" + os.system("wget "+url+" && tar -xzvf "+zip_name) + elif sysstr == "Linux": + url = "https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_linux64.zip" + name = "chromedriver_linux64.zip" + os.system("wget "+url+" && unzip "+zip_name+" && mv chromedriver /usr/bin/") + driver_url = "/usr/bin/chromedriver" + else: + print("Sorry, we can't identify the system you use") + + return driver_url +def readfilepath(): + '''Read the folder path of the PDF to be converted, and return the path and filename + 读取需要转换的pdf所在文件夹路径,并返回路径和文件名''' + try: + file_path = raw_input("Please raw_input the path folder which has pdf:\n") + if file_path == '': + #file_path = askdirectory() + file_path = "/Users/jin/Documents/GitHub/Python_Source_Code/Tutorial_pdf" + print file_path + #close_window() + file_names = os.listdir(file_path)#列出下载文件夹中的文件名 + names = [] + for i in range(len(file_names)-1): + file_format = os.path.splitext(file_names[i])[-1] + print i+1,file_names[i] + names.append(file_names[i]) + file_names[i] = file_path + "/"+file_names[i] + if file_format != ".pdf": + file_names.pop(i)#剔除不是pdf格式的文件 + names.pop(i) + names.append(file_names[i]) + file_names[i] = file_path + "/"+file_names[i] + return file_names,names + + except Exception as e: + print(str(e)) + +def close_window(): + root = tk.Tk() + top = tk.Toplevel() + top.destroy() + root.destroy() + root.mainloop() + + +#打开chromedriver,如果没有,则下载 +if __name__ == '__main__': + path_driver = '/Users/jin/Downloads/chromedriver' + #path_driver = askopenfilename(title = "Please choose the chromedriver in the directories",initialdir='/') + #close_window() + if os.path.exists(path_driver): + print "Chromedriver is in {}".format(path_driver) + else: + path_driver = system_info() + options = webdriver.ChromeOptions() + options.add_argument('disable-infobars') + driver = webdriver.Chrome(path_driver,chrome_options = options) + driver.get(url) + s ,names= readfilepath() + failed = [] #如果失败,则存入数组最后再次尝试 + waits = [] #如果等待时间过长,则刷新页面 + t0 = time.time() + for i in range(len(s)): + a = 1 + while a<10: + openPdf = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,"openPdf"))) + driver.find_element_by_id("openPdf").send_keys(s[i]) + r = re.findall(names[i],driver.page_source) + if r: + del waits[:] + driver.find_element_by_xpath('//*[@id="choosefile_title"]').click() + try: + download = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID,"fileDownload"))) + if download: + time.sleep(random.randrange(5)) + driver.find_element_by_id("fileDownload").click() + driver.find_element_by_xpath('//*[@id="convert_file_two"]').click() + a = 10 + print "Success" + except: + driver.get(url) + time.sleep(random.randrange(5)) + failed.append(names[i]) + else: + print "Please wait seconds" + time.sleep(random.randrange(3)) + waits.append(a) + if len(waits)>15: + driver.get(url) + del waits[:] + failed.append(names[i]) + break + t1 = time.time() + T = t1-t0 + print("总用时:{0}\n成功{1}份,失败{2},其中失败的文件有:\n{3}".format(T,len(names)-len(failed),len(failed),failed)) + driver.close() + driver.quit() + + + diff --git a/PDF_to_EPUB/requirements.txt b/PDF_to_EPUB/requirements.txt new file mode 100644 index 0000000..600b6eb --- /dev/null +++ b/PDF_to_EPUB/requirements.txt @@ -0,0 +1 @@ +selenium==3.141.0 diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 From 0e13e93bfa7288c10578634945224f32a94cd41f Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 5 Apr 2020 18:21:56 +0800 Subject: [PATCH 035/270] Calculus update the Taylor formula --- .DS_Store | Bin 10244 -> 10244 bytes Calculus/Taylor.py | 68 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 Calculus/Taylor.py diff --git a/.DS_Store b/.DS_Store index 21055843cbbfa25ea5cdfeaa8a746917e875e475..d3c0e9f7b6e91476d01eda023cd7d70f02afe587 100644 GIT binary patch delta 353 zcmZn(XbG6$&uF(XU^hRb-DVyEA7)1m24{vuh8%`uhEgC|%24c?lb@WFlb^)Ez#ss` z_kp-lWrKCoS$0&)&n6h)a2&7xIk^<`1nFn>Wj=FM{G9a z=BE%)X9jV4K?Y$<%YuvYa`N-iffg}t4i$Fc;N@fp0fs;&(1?77qR9#ZqO9UTxr)tw X(q&AW*%f}Xs6ah|;Q=(W?lA!X8*)@! delta 43 zcmZn(XbG6$&uF$WU^hRb*=8OAALh-PqK+J!=g4L=ZERp>+RU!-n`QH5F(zgJH2@8w diff --git a/Calculus/Taylor.py b/Calculus/Taylor.py new file mode 100644 index 0000000..d5ec04f --- /dev/null +++ b/Calculus/Taylor.py @@ -0,0 +1,68 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-05 +#Function: Taylor + +from sympy import * +import math + + +class Taylor(): + '''泰勒展开公式,可以获取 + @自定义函数, + @N的阶乘, + @函数的N阶导数, + ''' + + def __init__(self): + x = Symbol("x")#自变量x + n = Symbol("n")#阶乘n + self.x = x + self.n = n + + def Factorial_N(self,i): + '''Factorial of N N的阶乘 + 你可以使用sympy自带的阶乘计算函数sympy.factorial(n) + ''' + b = 1 + l = [] + s = 'x' + t = i + while t != 0: + b*=t + l.append(str(t)) + t-=1 + #s = str(b) + " = " + s.join(l) + return b + + def f_Nderivative(self,n,f): + '''N derivative of function函数的N阶导数''' + l = [] + for i in range(n): + f = diff(f) + l.append(f) + return l + + def Taylor(self,x,n,f): + '''x为自变量,f为函数''' + + return taylor_f + def f(self,x): + '''自定义function''' + s = input('Please input the function:\n') + return s + +if __name__ =='__main__': + x = Symbol("x") + Taylor = Taylor() + n = input("Please input the biggest factorial in this function:\n(We don't suggest you input too big, it will handle much time)\n") + f = Taylor.f(x) + Factorial = Taylor.Factorial_N(n) + Nderivative = Taylor.f_Nderivative(n,f) + taylor_f = 0.0 + for i in range(1,n+1): + taylor_f += Taylor.f_Nderivative(i,f)[i-1]*pow(x,i)/Taylor.Factorial_N(i) + print "{0}'s {1} Taylor formula is \n".format(f,n, taylor_f) + + + From 07eb8068edefda7a9f987824d61332812f52f85c Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 5 Apr 2020 22:10:45 +0800 Subject: [PATCH 036/270] update --- .DS_Store | Bin 10244 -> 10244 bytes Calculus/Taylor.py | 17 +++++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/.DS_Store b/.DS_Store index d3c0e9f7b6e91476d01eda023cd7d70f02afe587..7f0bd6a7c470281ca73ab35d8c7dfb0f9720daad 100644 GIT binary patch delta 32 ocmZn(XbG6$&uF_bU^hRb?PeZ Date: Sun, 5 Apr 2020 23:01:17 +0800 Subject: [PATCH 037/270] changed directory --- .DS_Store | Bin 10244 -> 10244 bytes BFS.py | 35 ----------------------------------- DFS.py | 34 ---------------------------------- 3 files changed, 69 deletions(-) delete mode 100644 BFS.py delete mode 100644 DFS.py diff --git a/.DS_Store b/.DS_Store index 7f0bd6a7c470281ca73ab35d8c7dfb0f9720daad..2852754dd525ce570a625e3a733a44a3d79b3e5a 100644 GIT binary patch delta 50 zcmZn(XbG6$&uG0dU^hRb^=2Lc1?I_|qJo<0): - vertex = queue.pop(0) - #print queue - nodes = graph[vertex] - #print nodes - for w in nodes: - if w not in seen: - queue.append(w) - seen.add(w) - #print seen,queue - print vertex -if __name__ == '__main__': - s = raw_input("Please choose one key to caculate the shortest path:\n") - BFS(graph,s) \ No newline at end of file diff --git a/DFS.py b/DFS.py deleted file mode 100644 index e002ea7..0000000 --- a/DFS.py +++ /dev/null @@ -1,34 +0,0 @@ -# -*- coding:utf-8 -*- -#fuction: using DP -#Author: Toryun - -graph = { - "A": ["B","C"], - "B": ["A","C","D"], - "C": ["A","B","D","E"], - "D": ["B","C","E","F"], - "E": ["C","D"], - "F": ["D"] -} - -def DFS(graph,s): - stack = [] - seen = set() - parent = {s:None} - stack.append(s) - seen.add(s) - while (len(stack)>0): - vertex = stack.pop() - #print stack - nodes = graph[vertex] - #print nodes - for w in nodes: - if w not in seen: - stack.append(w) - seen.add(w) - parent[w] = vertex - #print seen,stack - print vertex - print parent -if __name__ == '__main__': - DFS(graph,"A") From 713d4fb12cc1b77227a90e27c97542bd805ab5f1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 6 Apr 2020 22:54:59 +0800 Subject: [PATCH 038/270] Binary_search compare binary search with regular search --- .DS_Store | Bin 10244 -> 10244 bytes Sorting_Algorithms/Binary_search.py | 54 ++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 Sorting_Algorithms/Binary_search.py diff --git a/.DS_Store b/.DS_Store index 2852754dd525ce570a625e3a733a44a3d79b3e5a..bfcae4e0a46456a6c81eabfbc745ca018a6165c6 100644 GIT binary patch delta 413 zcmZn(XbG6$&*-! z$Ym(@%*jtq%E?b+U|0p}TRAp_yxqM=_K+j08^dsWG&etmfM(o!CkM(18xrNjvf!e; Vocz3WptBe!AC-B!nO)&8I{*X-Wa-1: + if listdata[mid] == value: + return mid + elif listdata[mid] < value: + low = mid + 1 + mid = (high - low) / 2 + low + else: + high = mid -1 + mid = (high - low) / 2 + t1 = time.time() + T = t1 - t0 + print "Binary_search Total time is {}".format(T) + return T + + +def regular_search(listdata,value): + t0 = time.time() + for i in range(len(listdata)): + if listdata[i] == value: + print "We find this value in {}th postion".format(i) + t1 = time.time() + T = t1 - t0 + print "Regular_search Total time is {}".format(T) + return T +if __name__ =='__main__': + d = [i for i in xrange(1,1000000000)] + #v = int(raw_input('Please input the value you want to search:\n')) + v = d[-1] + p0 = Binary_search(d,v) + p1 = regular_search(d,v) + if p1>p0: + print "Binary_search is better than regular_search\n faster than {} ".format(p1-p0) + elif p1 Date: Tue, 7 Apr 2020 00:54:20 +0800 Subject: [PATCH 039/270] update --- Sorting_Algorithms/.DS_Store | Bin 0 -> 6148 bytes Sorting_Algorithms/Binary_search.py | 32 +++++++++++++++++----------- 2 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 Sorting_Algorithms/.DS_Store diff --git a/Sorting_Algorithms/.DS_Store b/Sorting_Algorithms/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0-1: if listdata[mid] == value: - return mid + print "{} is in {}th postion".format(value,mid+1) + break elif listdata[mid] < value: low = mid + 1 mid = (high - low) / 2 + low @@ -34,21 +36,27 @@ def regular_search(listdata,value): t0 = time.time() for i in range(len(listdata)): if listdata[i] == value: - print "We find this value in {}th postion".format(i) + print "We find this value in {}th postion".format(i+1) t1 = time.time() T = t1 - t0 print "Regular_search Total time is {}".format(T) return T if __name__ =='__main__': - d = [i for i in xrange(1,1000000000)] + d = [i for i in xrange(1,1000)] #v = int(raw_input('Please input the value you want to search:\n')) - v = d[-1] - p0 = Binary_search(d,v) - p1 = regular_search(d,v) - if p1>p0: - print "Binary_search is better than regular_search\n faster than {} ".format(p1-p0) - elif p1 Date: Tue, 7 Apr 2020 01:20:42 +0800 Subject: [PATCH 040/270] covid-19 in China --- .DS_Store | Bin 10244 -> 10244 bytes covid-19.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 covid-19.py diff --git a/.DS_Store b/.DS_Store index bfcae4e0a46456a6c81eabfbc745ca018a6165c6..732293b673bacbb0a6e49c75b855da15cf393af5 100644 GIT binary patch delta 102 zcmZn(XbG6$&*;1{U^hRb^JX4_k1T@R49N`n3}p Date: Tue, 7 Apr 2020 21:11:21 +0800 Subject: [PATCH 041/270] Merge_sort MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 归并排序 --- .DS_Store | Bin 10244 -> 14340 bytes Sorting_Algorithms/Merge_sort.py | 51 +++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Sorting_Algorithms/Merge_sort.py diff --git a/.DS_Store b/.DS_Store index 732293b673bacbb0a6e49c75b855da15cf393af5..d82fb93c9dbcdc7ea137c7410bb2784f22fdb1b0 100644 GIT binary patch delta 286 zcmZn(Xem%&U|?W$DortDU@!nOIe-{M3-ADmHUv?7 z&XB{9$`H>GJh4!DvVjTH-h%#-<5bU8uJI{?HClWlmU YCnu<|vs!?81u7Fa{}oxwgl@Dk09=YedjJ3c delta 186 zcmZoEXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoZI3MH0woa0X&Vpg03VCPN8B zJP_(J6l@lhSj@heor8sg(RnkE!aVlL7u8)SKT(&RxIq+1Nl(@iDBpZSz?qfV$jE&1 ze`UAHA!4eVSBWiV6l4Y&3bczGNVtOR+j#Li^JIP#T}Fn 0: + res += right + t = 10 + elif len(left) > 0 and len(right) == 0: + res += left + t = 10 + #print res + return res + +def Merge_sort(arr): + if len(arr) <= 1: + return arr + else: + m = len(arr)//2 + left = arr[:m] + right = arr[m:] + #print m,left,right + left = Merge_sort(left) + #print right + right = Merge_sort(right) + return Merge(left, right) + +if __name__ == '__main__': + arr = [i for i in range(0,100)] + shuffle(arr) + print arr + t0 = time.time() + Merge_sort(arr) + t1 = time.time() + T = t1 - t0 + print "Merge Sort total time is {}".format(T) + + From 09890afa035d9a4c1b1cd64afcd3e1acbc627c29 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 7 Apr 2020 22:26:39 +0800 Subject: [PATCH 042/270] Insertion Sort MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 插入排序 --- Sorting_Algorithms/Insertion_sort.py | 28 ++++++++++++++++++++++++++++ Sorting_Algorithms/Merge_sort.py | 3 ++- Sorting_Algorithms/__init__.py | 0 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 Sorting_Algorithms/Insertion_sort.py create mode 100644 Sorting_Algorithms/__init__.py diff --git a/Sorting_Algorithms/Insertion_sort.py b/Sorting_Algorithms/Insertion_sort.py new file mode 100644 index 0000000..7c7b019 --- /dev/null +++ b/Sorting_Algorithms/Insertion_sort.py @@ -0,0 +1,28 @@ +#coding:UTF-8 +#Auther: Toryun +#Date: 2020-04-07 21:42:00 +#Function: Insertion Sort +from random import * +import time + +def Insertion_sort(arr): + for i in range(1,len(arr)): + j = i + while j>0: + + if arr[j-1]>arr[j]: + arr[j-1],arr[j] = arr[j],arr[j-1] + j -= 1 + else: + j = 0 + +if __name__ == '__main__': + arr = [i for i in range(100)] + shuffle(arr) + print arr + t0 = time.time() + Insertion_sort(arr) + t1 = time.time() + T = t0 - t1 + print arr + print "Insertion sort total time is {}".format(T) diff --git a/Sorting_Algorithms/Merge_sort.py b/Sorting_Algorithms/Merge_sort.py index f6550e9..b8db912 100644 --- a/Sorting_Algorithms/Merge_sort.py +++ b/Sorting_Algorithms/Merge_sort.py @@ -34,8 +34,9 @@ def Merge_sort(arr): right = arr[m:] #print m,left,right left = Merge_sort(left) - #print right + print left,right right = Merge_sort(right) + print left,right return Merge(left, right) if __name__ == '__main__': diff --git a/Sorting_Algorithms/__init__.py b/Sorting_Algorithms/__init__.py new file mode 100644 index 0000000..e69de29 From 2a0a59eb38c6e60f400cdb478d9ef5e1e3910ac1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 8 Apr 2020 14:47:58 +0800 Subject: [PATCH 043/270] Add Quick sort MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 快排 --- .DS_Store | Bin 14340 -> 14340 bytes Sorting_Algorithms/Binary_search.py | 3 ++ Sorting_Algorithms/Insertion_sort.py | 2 +- Sorting_Algorithms/Merge_sort.py | 5 +++ Sorting_Algorithms/Quick_sort.py | 59 +++++++++++++++++++++++++++ 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 Sorting_Algorithms/Quick_sort.py diff --git a/.DS_Store b/.DS_Store index d82fb93c9dbcdc7ea137c7410bb2784f22fdb1b0..1f2bb371e7b7d0aa556a7e494301b2796336d5c3 100644 GIT binary patch delta 303 zcmZoEXepTB&*;4|U^hRb+T@4oa+|dT4znAFFcdMQ0%5UdPJVJyPJR*t1A_nq1LHX$ zUGX0bfGh?ERtC7r$rsgyW0Cl|`7SO{og5RG-}qgXJLHI}BR4;VfQo_)!{Frn+yby& d44a>cSF>;CR^Z~`MzV)4_Lj46W;giD4gi>QQZN7j delta 48 zcmZoEXepTB&*-)>U^hRb;^c?wa+|dT4zq8bE>Xfh@xiLi+zMPA8;>{x+3Pp68~kMl E0Lr`*ApigX diff --git a/Sorting_Algorithms/Binary_search.py b/Sorting_Algorithms/Binary_search.py index 964247b..03014e9 100644 --- a/Sorting_Algorithms/Binary_search.py +++ b/Sorting_Algorithms/Binary_search.py @@ -1,4 +1,7 @@ #coding:UTF-8 +#Author: Toryun +#Date: 2020-04-05 21:42:00 +#Function: Binary search import math import time import numpy diff --git a/Sorting_Algorithms/Insertion_sort.py b/Sorting_Algorithms/Insertion_sort.py index 7c7b019..937ca0b 100644 --- a/Sorting_Algorithms/Insertion_sort.py +++ b/Sorting_Algorithms/Insertion_sort.py @@ -1,5 +1,5 @@ #coding:UTF-8 -#Auther: Toryun +#Author: Toryun #Date: 2020-04-07 21:42:00 #Function: Insertion Sort from random import * diff --git a/Sorting_Algorithms/Merge_sort.py b/Sorting_Algorithms/Merge_sort.py index b8db912..482ec58 100644 --- a/Sorting_Algorithms/Merge_sort.py +++ b/Sorting_Algorithms/Merge_sort.py @@ -1,3 +1,8 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-06 23:44:00 +#Function: Merge Sort + import math import time import os diff --git a/Sorting_Algorithms/Quick_sort.py b/Sorting_Algorithms/Quick_sort.py new file mode 100644 index 0000000..044f620 --- /dev/null +++ b/Sorting_Algorithms/Quick_sort.py @@ -0,0 +1,59 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-07 22:44:00 +#Function: Quick Sort + +import time +from random import * + +def Quick_sort(arr): + if len(arr) < 1: + return arr + else: + + left, right = quick(arr) + m = right.pop(0) + return Quick_sort(left)+[m]+Quick_sort(right)#分治法+递归 + + return arr +def quick(arr): + tmp = 0 + i = 1 + j = len(arr)-1 + while i < j+1: + + if arr[i] > arr[tmp] and arr[j]<=arr[tmp]: + #if arr[j]<=arr[tmp]: + arr[j], arr[i] = arr[i], arr[j] + i += 1 + j -= 1 + elif arr[i] > arr[tmp] and arr[j] > arr[tmp]: + j -= 1 + elif arr[i] <= arr[tmp] and arr[j] <= arr[tmp]: + i += 1 + elif arr[i] <= arr[tmp] and arr[j] > arr[tmp]: + i += 1 + j -= 1 + + if i > j: + + arr[tmp], arr[j] = arr[j], arr[tmp] + #print i,j + #print arr + return arr[:j],arr[j:] + +if __name__ == '__main__': + arr = [i for i in range(100)] + shuffle(arr) + print arr + t0 = time.time() + arr = Quick_sort(arr) + #left, right = quick(arr) + print arr + t1 = time.time() + T = t1 - t0 + print "Quick sort total time is {}".format(T) + + + + From e13241663d2b60818bbd2e1afc42906203f205aa Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 9 Apr 2020 09:21:29 +0800 Subject: [PATCH 044/270] Create listsort.txt --- Sorting_Algorithms/listsort.txt | 766 ++++++++++++++++++++++++++++++++ 1 file changed, 766 insertions(+) create mode 100644 Sorting_Algorithms/listsort.txt diff --git a/Sorting_Algorithms/listsort.txt b/Sorting_Algorithms/listsort.txt new file mode 100644 index 0000000..1b12fe0 --- /dev/null +++ b/Sorting_Algorithms/listsort.txt @@ -0,0 +1,766 @@ +This txt is from official python +http://svn.python.org/projects/python/trunk/Objects/listsort.txt + +Intro +----- +This describes an adaptive, stable, natural mergesort, modestly called +timsort (hey, I earned it ). It has supernatural performance on many +kinds of partially ordered arrays (less than lg(N!) comparisons needed, and +as few as N-1), yet as fast as Python's previous highly tuned samplesort +hybrid on random arrays. + +In a nutshell, the main routine marches over the array once, left to right, +alternately identifying the next run, then merging it into the previous +runs "intelligently". Everything else is complication for speed, and some +hard-won measure of memory efficiency. + + +Comparison with Python's Samplesort Hybrid +------------------------------------------ ++ timsort can require a temp array containing as many as N//2 pointers, + which means as many as 2*N extra bytes on 32-bit boxes. It can be + expected to require a temp array this large when sorting random data; on + data with significant structure, it may get away without using any extra + heap memory. This appears to be the strongest argument against it, but + compared to the size of an object, 2 temp bytes worst-case (also expected- + case for random data) doesn't scare me much. + + It turns out that Perl is moving to a stable mergesort, and the code for + that appears always to require a temp array with room for at least N + pointers. (Note that I wouldn't want to do that even if space weren't an + issue; I believe its efforts at memory frugality also save timsort + significant pointer-copying costs, and allow it to have a smaller working + set.) + ++ Across about four hours of generating random arrays, and sorting them + under both methods, samplesort required about 1.5% more comparisons + (the program is at the end of this file). + ++ In real life, this may be faster or slower on random arrays than + samplesort was, depending on platform quirks. Since it does fewer + comparisons on average, it can be expected to do better the more + expensive a comparison function is. OTOH, it does more data movement + (pointer copying) than samplesort, and that may negate its small + comparison advantage (depending on platform quirks) unless comparison + is very expensive. + ++ On arrays with many kinds of pre-existing order, this blows samplesort out + of the water. It's significantly faster than samplesort even on some + cases samplesort was special-casing the snot out of. I believe that lists + very often do have exploitable partial order in real life, and this is the + strongest argument in favor of timsort (indeed, samplesort's special cases + for extreme partial order are appreciated by real users, and timsort goes + much deeper than those, in particular naturally covering every case where + someone has suggested "and it would be cool if list.sort() had a special + case for this too ... and for that ..."). + ++ Here are exact comparison counts across all the tests in sortperf.py, + when run with arguments "15 20 1". + + Column Key: + *sort: random data + \sort: descending data + /sort: ascending data + 3sort: ascending, then 3 random exchanges + +sort: ascending, then 10 random at the end + %sort: ascending, then randomly replace 1% of elements w/ random values + ~sort: many duplicates + =sort: all equal + !sort: worst case scenario + + First the trivial cases, trivial for samplesort because it special-cased + them, and trivial for timsort because it naturally works on runs. Within + an "n" block, the first line gives the # of compares done by samplesort, + the second line by timsort, and the third line is the percentage by + which the samplesort count exceeds the timsort count: + + n \sort /sort =sort +------- ------ ------ ------ + 32768 32768 32767 32767 samplesort + 32767 32767 32767 timsort + 0.00% 0.00% 0.00% (samplesort - timsort) / timsort + + 65536 65536 65535 65535 + 65535 65535 65535 + 0.00% 0.00% 0.00% + + 131072 131072 131071 131071 + 131071 131071 131071 + 0.00% 0.00% 0.00% + + 262144 262144 262143 262143 + 262143 262143 262143 + 0.00% 0.00% 0.00% + + 524288 524288 524287 524287 + 524287 524287 524287 + 0.00% 0.00% 0.00% + +1048576 1048576 1048575 1048575 + 1048575 1048575 1048575 + 0.00% 0.00% 0.00% + + The algorithms are effectively identical in these cases, except that + timsort does one less compare in \sort. + + Now for the more interesting cases. Where lg(x) is the logarithm of x to + the base 2 (e.g., lg(8)=3), lg(n!) is the information-theoretic limit for + the best any comparison-based sorting algorithm can do on average (across + all permutations). When a method gets significantly below that, it's + either astronomically lucky, or is finding exploitable structure in the + data. + + + n lg(n!) *sort 3sort +sort %sort ~sort !sort +------- ------- ------ ------- ------- ------ ------- -------- + 32768 444255 453096 453614 32908 452871 130491 469141 old + 448885 33016 33007 50426 182083 65534 new + 0.94% 1273.92% -0.30% 798.09% -28.33% 615.87% %ch from new + + 65536 954037 972699 981940 65686 973104 260029 1004607 + 962991 65821 65808 101667 364341 131070 + 1.01% 1391.83% -0.19% 857.15% -28.63% 666.47% + + 131072 2039137 2101881 2091491 131232 2092894 554790 2161379 + 2057533 131410 131361 206193 728871 262142 + 2.16% 1491.58% -0.10% 915.02% -23.88% 724.51% + + 262144 4340409 4464460 4403233 262314 4445884 1107842 4584560 + 4377402 262437 262459 416347 1457945 524286 + 1.99% 1577.82% -0.06% 967.83% -24.01% 774.44% + + 524288 9205096 9453356 9408463 524468 9441930 2218577 9692015 + 9278734 524580 524633 837947 2916107 1048574 + 1.88% 1693.52% -0.03% 1026.79% -23.92% 824.30% + +1048576 19458756 19950272 19838588 1048766 19912134 4430649 20434212 + 19606028 1048958 1048941 1694896 5832445 2097150 + 1.76% 1791.27% -0.02% 1074.83% -24.03% 874.38% + + Discussion of cases: + + *sort: There's no structure in random data to exploit, so the theoretical + limit is lg(n!). Both methods get close to that, and timsort is hugging + it (indeed, in a *marginal* sense, it's a spectacular improvement -- + there's only about 1% left before hitting the wall, and timsort knows + darned well it's doing compares that won't pay on random data -- but so + does the samplesort hybrid). For contrast, Hoare's original random-pivot + quicksort does about 39% more compares than the limit, and the median-of-3 + variant about 19% more. + + 3sort, %sort, and !sort: No contest; there's structure in this data, but + not of the specific kinds samplesort special-cases. Note that structure + in !sort wasn't put there on purpose -- it was crafted as a worst case for + a previous quicksort implementation. That timsort nails it came as a + surprise to me (although it's obvious in retrospect). + + +sort: samplesort special-cases this data, and does a few less compares + than timsort. However, timsort runs this case significantly faster on all + boxes we have timings for, because timsort is in the business of merging + runs efficiently, while samplesort does much more data movement in this + (for it) special case. + + ~sort: samplesort's special cases for large masses of equal elements are + extremely effective on ~sort's specific data pattern, and timsort just + isn't going to get close to that, despite that it's clearly getting a + great deal of benefit out of the duplicates (the # of compares is much less + than lg(n!)). ~sort has a perfectly uniform distribution of just 4 + distinct values, and as the distribution gets more skewed, samplesort's + equal-element gimmicks become less effective, while timsort's adaptive + strategies find more to exploit; in a database supplied by Kevin Altis, a + sort on its highly skewed "on which stock exchange does this company's + stock trade?" field ran over twice as fast under timsort. + + However, despite that timsort does many more comparisons on ~sort, and + that on several platforms ~sort runs highly significantly slower under + timsort, on other platforms ~sort runs highly significantly faster under + timsort. No other kind of data has shown this wild x-platform behavior, + and we don't have an explanation for it. The only thing I can think of + that could transform what "should be" highly significant slowdowns into + highly significant speedups on some boxes are catastrophic cache effects + in samplesort. + + But timsort "should be" slower than samplesort on ~sort, so it's hard + to count that it isn't on some boxes as a strike against it . + ++ Here's the highwater mark for the number of heap-based temp slots (4 + bytes each on this box) needed by each test, again with arguments + "15 20 1": + + 2**i *sort \sort /sort 3sort +sort %sort ~sort =sort !sort + 32768 16384 0 0 6256 0 10821 12288 0 16383 + 65536 32766 0 0 21652 0 31276 24576 0 32767 + 131072 65534 0 0 17258 0 58112 49152 0 65535 + 262144 131072 0 0 35660 0 123561 98304 0 131071 + 524288 262142 0 0 31302 0 212057 196608 0 262143 +1048576 524286 0 0 312438 0 484942 393216 0 524287 + + Discussion: The tests that end up doing (close to) perfectly balanced + merges (*sort, !sort) need all N//2 temp slots (or almost all). ~sort + also ends up doing balanced merges, but systematically benefits a lot from + the preliminary pre-merge searches described under "Merge Memory" later. + %sort approaches having a balanced merge at the end because the random + selection of elements to replace is expected to produce an out-of-order + element near the midpoint. \sort, /sort, =sort are the trivial one-run + cases, needing no merging at all. +sort ends up having one very long run + and one very short, and so gets all the temp space it needs from the small + temparray member of the MergeState struct (note that the same would be + true if the new random elements were prefixed to the sorted list instead, + but not if they appeared "in the middle"). 3sort approaches N//3 temp + slots twice, but the run lengths that remain after 3 random exchanges + clearly has very high variance. + + +A detailed description of timsort follows. + +Runs +---- +count_run() returns the # of elements in the next run. A run is either +"ascending", which means non-decreasing: + + a0 <= a1 <= a2 <= ... + +or "descending", which means strictly decreasing: + + a0 > a1 > a2 > ... + +Note that a run is always at least 2 long, unless we start at the array's +last element. + +The definition of descending is strict, because the main routine reverses +a descending run in-place, transforming a descending run into an ascending +run. Reversal is done via the obvious fast "swap elements starting at each +end, and converge at the middle" method, and that can violate stability if +the slice contains any equal elements. Using a strict definition of +descending ensures that a descending run contains distinct elements. + +If an array is random, it's very unlikely we'll see long runs. If a natural +run contains less than minrun elements (see next section), the main loop +artificially boosts it to minrun elements, via a stable binary insertion sort +applied to the right number of array elements following the short natural +run. In a random array, *all* runs are likely to be minrun long as a +result. This has two primary good effects: + +1. Random data strongly tends then toward perfectly balanced (both runs have + the same length) merges, which is the most efficient way to proceed when + data is random. + +2. Because runs are never very short, the rest of the code doesn't make + heroic efforts to shave a few cycles off per-merge overheads. For + example, reasonable use of function calls is made, rather than trying to + inline everything. Since there are no more than N/minrun runs to begin + with, a few "extra" function calls per merge is barely measurable. + + +Computing minrun +---------------- +If N < 64, minrun is N. IOW, binary insertion sort is used for the whole +array then; it's hard to beat that given the overheads of trying something +fancier (see note BINSORT). + +When N is a power of 2, testing on random data showed that minrun values of +16, 32, 64 and 128 worked about equally well. At 256 the data-movement cost +in binary insertion sort clearly hurt, and at 8 the increase in the number +of function calls clearly hurt. Picking *some* power of 2 is important +here, so that the merges end up perfectly balanced (see next section). We +pick 32 as a good value in the sweet range; picking a value at the low end +allows the adaptive gimmicks more opportunity to exploit shorter natural +runs. + +Because sortperf.py only tries powers of 2, it took a long time to notice +that 32 isn't a good choice for the general case! Consider N=2112: + +>>> divmod(2112, 32) +(66, 0) +>>> + +If the data is randomly ordered, we're very likely to end up with 66 runs +each of length 32. The first 64 of these trigger a sequence of perfectly +balanced merges (see next section), leaving runs of lengths 2048 and 64 to +merge at the end. The adaptive gimmicks can do that with fewer than 2048+64 +compares, but it's still more compares than necessary, and-- mergesort's +bugaboo relative to samplesort --a lot more data movement (O(N) copies just +to get 64 elements into place). + +If we take minrun=33 in this case, then we're very likely to end up with 64 +runs each of length 33, and then all merges are perfectly balanced. Better! + +What we want to avoid is picking minrun such that in + + q, r = divmod(N, minrun) + +q is a power of 2 and r>0 (then the last merge only gets r elements into +place, and r < minrun is small compared to N), or q a little larger than a +power of 2 regardless of r (then we've got a case similar to "2112", again +leaving too little work for the last merge to do). + +Instead we pick a minrun in range(32, 65) such that N/minrun is exactly a +power of 2, or if that isn't possible, is close to, but strictly less than, +a power of 2. This is easier to do than it may sound: take the first 6 +bits of N, and add 1 if any of the remaining bits are set. In fact, that +rule covers every case in this section, including small N and exact powers +of 2; merge_compute_minrun() is a deceptively simple function. + + +The Merge Pattern +----------------- +In order to exploit regularities in the data, we're merging on natural +run lengths, and they can become wildly unbalanced. That's a Good Thing +for this sort! It means we have to find a way to manage an assortment of +potentially very different run lengths, though. + +Stability constrains permissible merging patterns. For example, if we have +3 consecutive runs of lengths + + A:10000 B:20000 C:10000 + +we dare not merge A with C first, because if A, B and C happen to contain +a common element, it would get out of order wrt its occurrence(s) in B. The +merging must be done as (A+B)+C or A+(B+C) instead. + +So merging is always done on two consecutive runs at a time, and in-place, +although this may require some temp memory (more on that later). + +When a run is identified, its base address and length are pushed on a stack +in the MergeState struct. merge_collapse() is then called to potentially +merge runs on that stack. We would like to delay merging as long as possible +in order to exploit patterns that may come up later, but we like even more to +do merging as soon as possible to exploit that the run just found is still +high in the memory hierarchy. We also can't delay merging "too long" because +it consumes memory to remember the runs that are still unmerged, and the +stack has a fixed size. + +What turned out to be a good compromise maintains two invariants on the +stack entries, where A, B and C are the lengths of the three rightmost not-yet +merged slices: + +1. A > B+C +2. B > C + +Note that, by induction, #2 implies the lengths of pending runs form a +decreasing sequence. #1 implies that, reading the lengths right to left, +the pending-run lengths grow at least as fast as the Fibonacci numbers. +Therefore the stack can never grow larger than about log_base_phi(N) entries, +where phi = (1+sqrt(5))/2 ~= 1.618. Thus a small # of stack slots suffice +for very large arrays. + +If A <= B+C, the smaller of A and C is merged with B (ties favor C, for the +freshness-in-cache reason), and the new run replaces the A,B or B,C entries; +e.g., if the last 3 entries are + + A:30 B:20 C:10 + +then B is merged with C, leaving + + A:30 BC:30 + +on the stack. Or if they were + + A:500 B:400: C:1000 + +then A is merged with B, leaving + + AB:900 C:1000 + +on the stack. + +In both examples, the stack configuration after the merge still violates +invariant #2, and merge_collapse() goes on to continue merging runs until +both invariants are satisfied. As an extreme case, suppose we didn't do the +minrun gimmick, and natural runs were of lengths 128, 64, 32, 16, 8, 4, 2, +and 2. Nothing would get merged until the final 2 was seen, and that would +trigger 7 perfectly balanced merges. + +The thrust of these rules when they trigger merging is to balance the run +lengths as closely as possible, while keeping a low bound on the number of +runs we have to remember. This is maximally effective for random data, +where all runs are likely to be of (artificially forced) length minrun, and +then we get a sequence of perfectly balanced merges (with, perhaps, some +oddballs at the end). + +OTOH, one reason this sort is so good for partly ordered data has to do +with wildly unbalanced run lengths. + + +Merge Memory +------------ +Merging adjacent runs of lengths A and B in-place, and in linear time, is +difficult. Theoretical constructions are known that can do it, but they're +too difficult and slow for practical use. But if we have temp memory equal +to min(A, B), it's easy. + +If A is smaller (function merge_lo), copy A to a temp array, leave B alone, +and then we can do the obvious merge algorithm left to right, from the temp +area and B, starting the stores into where A used to live. There's always a +free area in the original area comprising a number of elements equal to the +number not yet merged from the temp array (trivially true at the start; +proceed by induction). The only tricky bit is that if a comparison raises an +exception, we have to remember to copy the remaining elements back in from +the temp area, lest the array end up with duplicate entries from B. But +that's exactly the same thing we need to do if we reach the end of B first, +so the exit code is pleasantly common to both the normal and error cases. + +If B is smaller (function merge_hi, which is merge_lo's "mirror image"), +much the same, except that we need to merge right to left, copying B into a +temp array and starting the stores at the right end of where B used to live. + +A refinement: When we're about to merge adjacent runs A and B, we first do +a form of binary search (more on that later) to see where B[0] should end up +in A. Elements in A preceding that point are already in their final +positions, effectively shrinking the size of A. Likewise we also search to +see where A[-1] should end up in B, and elements of B after that point can +also be ignored. This cuts the amount of temp memory needed by the same +amount. + +These preliminary searches may not pay off, and can be expected *not* to +repay their cost if the data is random. But they can win huge in all of +time, copying, and memory savings when they do pay, so this is one of the +"per-merge overheads" mentioned above that we're happy to endure because +there is at most one very short run. It's generally true in this algorithm +that we're willing to gamble a little to win a lot, even though the net +expectation is negative for random data. + + +Merge Algorithms +---------------- +merge_lo() and merge_hi() are where the bulk of the time is spent. merge_lo +deals with runs where A <= B, and merge_hi where A > B. They don't know +whether the data is clustered or uniform, but a lovely thing about merging +is that many kinds of clustering "reveal themselves" by how many times in a +row the winning merge element comes from the same run. We'll only discuss +merge_lo here; merge_hi is exactly analogous. + +Merging begins in the usual, obvious way, comparing the first element of A +to the first of B, and moving B[0] to the merge area if it's less than A[0], +else moving A[0] to the merge area. Call that the "one pair at a time" +mode. The only twist here is keeping track of how many times in a row "the +winner" comes from the same run. + +If that count reaches MIN_GALLOP, we switch to "galloping mode". Here +we *search* B for where A[0] belongs, and move over all the B's before +that point in one chunk to the merge area, then move A[0] to the merge +area. Then we search A for where B[0] belongs, and similarly move a +slice of A in one chunk. Then back to searching B for where A[0] belongs, +etc. We stay in galloping mode until both searches find slices to copy +less than MIN_GALLOP elements long, at which point we go back to one-pair- +at-a-time mode. + +A refinement: The MergeState struct contains the value of min_gallop that +controls when we enter galloping mode, initialized to MIN_GALLOP. +merge_lo() and merge_hi() adjust this higher when galloping isn't paying +off, and lower when it is. + + +Galloping +--------- +Still without loss of generality, assume A is the shorter run. In galloping +mode, we first look for A[0] in B. We do this via "galloping", comparing +A[0] in turn to B[0], B[1], B[3], B[7], ..., B[2**j - 1], ..., until finding +the k such that B[2**(k-1) - 1] < A[0] <= B[2**k - 1]. This takes at most +roughly lg(B) comparisons, and, unlike a straight binary search, favors +finding the right spot early in B (more on that later). + +After finding such a k, the region of uncertainty is reduced to 2**(k-1) - 1 +consecutive elements, and a straight binary search requires exactly k-1 +additional comparisons to nail it (see note REGION OF UNCERTAINTY). Then we +copy all the B's up to that point in one chunk, and then copy A[0]. Note +that no matter where A[0] belongs in B, the combination of galloping + binary +search finds it in no more than about 2*lg(B) comparisons. + +If we did a straight binary search, we could find it in no more than +ceiling(lg(B+1)) comparisons -- but straight binary search takes that many +comparisons no matter where A[0] belongs. Straight binary search thus loses +to galloping unless the run is quite long, and we simply can't guess +whether it is in advance. + +If data is random and runs have the same length, A[0] belongs at B[0] half +the time, at B[1] a quarter of the time, and so on: a consecutive winning +sub-run in B of length k occurs with probability 1/2**(k+1). So long +winning sub-runs are extremely unlikely in random data, and guessing that a +winning sub-run is going to be long is a dangerous game. + +OTOH, if data is lopsided or lumpy or contains many duplicates, long +stretches of winning sub-runs are very likely, and cutting the number of +comparisons needed to find one from O(B) to O(log B) is a huge win. + +Galloping compromises by getting out fast if there isn't a long winning +sub-run, yet finding such very efficiently when they exist. + +I first learned about the galloping strategy in a related context; see: + + "Adaptive Set Intersections, Unions, and Differences" (2000) + Erik D. Demaine, Alejandro López-Ortiz, J. Ian Munro + +and its followup(s). An earlier paper called the same strategy +"exponential search": + + "Optimistic Sorting and Information Theoretic Complexity" + Peter McIlroy + SODA (Fourth Annual ACM-SIAM Symposium on Discrete Algorithms), pp + 467-474, Austin, Texas, 25-27 January 1993. + +and it probably dates back to an earlier paper by Bentley and Yao. The +McIlroy paper in particular has good analysis of a mergesort that's +probably strongly related to this one in its galloping strategy. + + +Galloping with a Broken Leg +--------------------------- +So why don't we always gallop? Because it can lose, on two counts: + +1. While we're willing to endure small per-merge overheads, per-comparison + overheads are a different story. Calling Yet Another Function per + comparison is expensive, and gallop_left() and gallop_right() are + too long-winded for sane inlining. + +2. Galloping can-- alas --require more comparisons than linear one-at-time + search, depending on the data. + +#2 requires details. If A[0] belongs before B[0], galloping requires 1 +compare to determine that, same as linear search, except it costs more +to call the gallop function. If A[0] belongs right before B[1], galloping +requires 2 compares, again same as linear search. On the third compare, +galloping checks A[0] against B[3], and if it's <=, requires one more +compare to determine whether A[0] belongs at B[2] or B[3]. That's a total +of 4 compares, but if A[0] does belong at B[2], linear search would have +discovered that in only 3 compares, and that's a huge loss! Really. It's +an increase of 33% in the number of compares needed, and comparisons are +expensive in Python. + +index in B where # compares linear # gallop # binary gallop +A[0] belongs search needs compares compares total +---------------- ----------------- -------- -------- ------ + 0 1 1 0 1 + + 1 2 2 0 2 + + 2 3 3 1 4 + 3 4 3 1 4 + + 4 5 4 2 6 + 5 6 4 2 6 + 6 7 4 2 6 + 7 8 4 2 6 + + 8 9 5 3 8 + 9 10 5 3 8 + 10 11 5 3 8 + 11 12 5 3 8 + ... + +In general, if A[0] belongs at B[i], linear search requires i+1 comparisons +to determine that, and galloping a total of 2*floor(lg(i))+2 comparisons. +The advantage of galloping is unbounded as i grows, but it doesn't win at +all until i=6. Before then, it loses twice (at i=2 and i=4), and ties +at the other values. At and after i=6, galloping always wins. + +We can't guess in advance when it's going to win, though, so we do one pair +at a time until the evidence seems strong that galloping may pay. MIN_GALLOP +is 7, and that's pretty strong evidence. However, if the data is random, it +simply will trigger galloping mode purely by luck every now and again, and +it's quite likely to hit one of the losing cases next. On the other hand, +in cases like ~sort, galloping always pays, and MIN_GALLOP is larger than it +"should be" then. So the MergeState struct keeps a min_gallop variable +that merge_lo and merge_hi adjust: the longer we stay in galloping mode, +the smaller min_gallop gets, making it easier to transition back to +galloping mode (if we ever leave it in the current merge, and at the +start of the next merge). But whenever the gallop loop doesn't pay, +min_gallop is increased by one, making it harder to transition back +to galloping mode (and again both within a merge and across merges). For +random data, this all but eliminates the gallop penalty: min_gallop grows +large enough that we almost never get into galloping mode. And for cases +like ~sort, min_gallop can fall to as low as 1. This seems to work well, +but in all it's a minor improvement over using a fixed MIN_GALLOP value. + + +Galloping Complication +---------------------- +The description above was for merge_lo. merge_hi has to merge "from the +other end", and really needs to gallop starting at the last element in a run +instead of the first. Galloping from the first still works, but does more +comparisons than it should (this is significant -- I timed it both ways). For +this reason, the gallop_left() and gallop_right() (see note LEFT OR RIGHT) +functions have a "hint" argument, which is the index at which galloping +should begin. So galloping can actually start at any index, and proceed at +offsets of 1, 3, 7, 15, ... or -1, -3, -7, -15, ... from the starting index. + +In the code as I type it's always called with either 0 or n-1 (where n is +the # of elements in a run). It's tempting to try to do something fancier, +melding galloping with some form of interpolation search; for example, if +we're merging a run of length 1 with a run of length 10000, index 5000 is +probably a better guess at the final result than either 0 or 9999. But +it's unclear how to generalize that intuition usefully, and merging of +wildly unbalanced runs already enjoys excellent performance. + +~sort is a good example of when balanced runs could benefit from a better +hint value: to the extent possible, this would like to use a starting +offset equal to the previous value of acount/bcount. Doing so saves about +10% of the compares in ~sort. However, doing so is also a mixed bag, +hurting other cases. + + +Comparing Average # of Compares on Random Arrays +------------------------------------------------ +[NOTE: This was done when the new algorithm used about 0.1% more compares + on random data than does its current incarnation.] + +Here list.sort() is samplesort, and list.msort() this sort: + +""" +import random +from time import clock as now + +def fill(n): + from random import random + return [random() for i in range(n)] + +def mycmp(x, y): + global ncmp + ncmp += 1 + return cmp(x, y) + +def timeit(values, method): + global ncmp + X = values[:] + bound = getattr(X, method) + ncmp = 0 + t1 = now() + bound(mycmp) + t2 = now() + return t2-t1, ncmp + +format = "%5s %9.2f %11d" +f2 = "%5s %9.2f %11.2f" + +def drive(): + count = sst = sscmp = mst = mscmp = nelts = 0 + while True: + n = random.randrange(100000) + nelts += n + x = fill(n) + + t, c = timeit(x, 'sort') + sst += t + sscmp += c + + t, c = timeit(x, 'msort') + mst += t + mscmp += c + + count += 1 + if count % 10: + continue + + print "count", count, "nelts", nelts + print format % ("sort", sst, sscmp) + print format % ("msort", mst, mscmp) + print f2 % ("", (sst-mst)*1e2/mst, (sscmp-mscmp)*1e2/mscmp) + +drive() +""" + +I ran this on Windows and kept using the computer lightly while it was +running. time.clock() is wall-clock time on Windows, with better than +microsecond resolution. samplesort started with a 1.52% #-of-comparisons +disadvantage, fell quickly to 1.48%, and then fluctuated within that small +range. Here's the last chunk of output before I killed the job: + +count 2630 nelts 130906543 + sort 6110.80 1937887573 +msort 6002.78 1909389381 + 1.80 1.49 + +We've done nearly 2 billion comparisons apiece at Python speed there, and +that's enough . + +For random arrays of size 2 (yes, there are only 2 interesting ones), +samplesort has a 50%(!) comparison disadvantage. This is a consequence of +samplesort special-casing at most one ascending run at the start, then +falling back to the general case if it doesn't find an ascending run +immediately. The consequence is that it ends up using two compares to sort +[2, 1]. Gratifyingly, timsort doesn't do any special-casing, so had to be +taught how to deal with mixtures of ascending and descending runs +efficiently in all cases. + + +NOTES +----- + +BINSORT +A "binary insertion sort" is just like a textbook insertion sort, but instead +of locating the correct position of the next item via linear (one at a time) +search, an equivalent to Python's bisect.bisect_right is used to find the +correct position in logarithmic time. Most texts don't mention this +variation, and those that do usually say it's not worth the bother: insertion +sort remains quadratic (expected and worst cases) either way. Speeding the +search doesn't reduce the quadratic data movement costs. + +But in CPython's case, comparisons are extraordinarily expensive compared to +moving data, and the details matter. Moving objects is just copying +pointers. Comparisons can be arbitrarily expensive (can invoke arbitrary +user-supplied Python code), but even in simple cases (like 3 < 4) _all_ +decisions are made at runtime: what's the type of the left comparand? the +type of the right? do they need to be coerced to a common type? where's the +code to compare these types? And so on. Even the simplest Python comparison +triggers a large pile of C-level pointer dereferences, conditionals, and +function calls. + +So cutting the number of compares is almost always measurably helpful in +CPython, and the savings swamp the quadratic-time data movement costs for +reasonable minrun values. + + +LEFT OR RIGHT +gallop_left() and gallop_right() are akin to the Python bisect module's +bisect_left() and bisect_right(): they're the same unless the slice they're +searching contains a (at least one) value equal to the value being searched +for. In that case, gallop_left() returns the position immediately before the +leftmost equal value, and gallop_right() the position immediately after the +rightmost equal value. The distinction is needed to preserve stability. In +general, when merging adjacent runs A and B, gallop_left is used to search +thru B for where an element from A belongs, and gallop_right to search thru A +for where an element from B belongs. + + +REGION OF UNCERTAINTY +Two kinds of confusion seem to be common about the claim that after finding +a k such that + + B[2**(k-1) - 1] < A[0] <= B[2**k - 1] + +then a binary search requires exactly k-1 tries to find A[0]'s proper +location. For concreteness, say k=3, so B[3] < A[0] <= B[7]. + +The first confusion takes the form "OK, then the region of uncertainty is at +indices 3, 4, 5, 6 and 7: that's 5 elements, not the claimed 2**(k-1) - 1 = +3"; or the region is viewed as a Python slice and the objection is "but that's +the slice B[3:7], so has 7-3 = 4 elements". Resolution: we've already +compared A[0] against B[3] and against B[7], so A[0]'s correct location is +already known wrt _both_ endpoints. What remains is to find A[0]'s correct +location wrt B[4], B[5] and B[6], which spans 3 elements. Or in general, the +slice (leaving off both endpoints) (2**(k-1)-1)+1 through (2**k-1)-1 +inclusive = 2**(k-1) through (2**k-1)-1 inclusive, which has + (2**k-1)-1 - 2**(k-1) + 1 = + 2**k-1 - 2**(k-1) = + 2*2**(k-1)-1 - 2**(k-1) = + (2-1)*2**(k-1) - 1 = + 2**(k-1) - 1 +elements. + +The second confusion: "k-1 = 2 binary searches can find the correct location +among 2**(k-1) = 4 elements, but you're only applying it to 3 elements: we +could make this more efficient by arranging for the region of uncertainty to +span 2**(k-1) elements." Resolution: that confuses "elements" with +"locations". In a slice with N elements, there are N+1 _locations_. In the +example, with the region of uncertainty B[4], B[5], B[6], there are 4 +locations: before B[4], between B[4] and B[5], between B[5] and B[6], and +after B[6]. In general, across 2**(k-1)-1 elements, there are 2**(k-1) +locations. That's why k-1 binary searches are necessary and sufficient. + +OPTIMIZATION OF INDIVIDUAL COMPARISONS +As noted above, even the simplest Python comparison triggers a large pile of +C-level pointer dereferences, conditionals, and function calls. This can be +partially mitigated by pre-scanning the data to determine whether the data is +homogenous with respect to type. If so, it is sometimes possible to +substitute faster type-specific comparisons for the slower, generic +PyObject_RichCompareBool. \ No newline at end of file From e37c35b3fd5322ab25800b495a08be6b2cb72c4a Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 10 Apr 2020 11:11:05 +0800 Subject: [PATCH 045/270] Update Binary_search.py --- Sorting_Algorithms/Binary_search.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Sorting_Algorithms/Binary_search.py b/Sorting_Algorithms/Binary_search.py index 03014e9..e281e72 100644 --- a/Sorting_Algorithms/Binary_search.py +++ b/Sorting_Algorithms/Binary_search.py @@ -26,12 +26,14 @@ def Binary_search(listdata,value): elif listdata[mid] < value: low = mid + 1 mid = (high - low) / 2 + low + else: high = mid -1 mid = (high - low) / 2 + print mid t1 = time.time() T = t1 - t0 - print "Binary_search Total time is {}".format(T) + #print "Binary_search Total time is {}".format(T) return T From 06409e774acc312b6521973ea18af331180a3750 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 11 Apr 2020 12:15:57 +0800 Subject: [PATCH 046/270] png to svg --- .DS_Store | Bin 14340 -> 10244 bytes CV/.DS_Store | Bin 0 -> 6148 bytes .../PDF_to_EPUB}/pdf_to_epub.py | 0 .../PDF_to_EPUB}/requirements.txt | 0 CV/png_to_SVG.py | 18 ++++++++++++++++++ Calculus/Taylor.py | 6 ++++-- 6 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 CV/.DS_Store rename {PDF_to_EPUB => CV/PDF_to_EPUB}/pdf_to_epub.py (100%) rename {PDF_to_EPUB => CV/PDF_to_EPUB}/requirements.txt (100%) create mode 100644 CV/png_to_SVG.py diff --git a/.DS_Store b/.DS_Store index 1f2bb371e7b7d0aa556a7e494301b2796336d5c3..d5b927971c6501f4671d1d9a428baee95ace4575 100644 GIT binary patch delta 283 zcmZoEXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoZI3MH0woa06mSpg03VCPN8B zJP_(J6l^{y;l)1jLF8t34i*kZx6M2XADB5z42*OX42?}E8!9?(c2x;voSduNk0LsG zqH2a96N58DSXppUUQT{qI>_+N-&Ez9CO=k}o47%A@)LFG%~}F_jGKdncQUafn;0V2 z!X(HHauU#`+(5z=Hem~6tMJUPLHol^s(0_bFe$vGwyCo`%}CEgvf Fi~#*jK~n$# delta 534 zcmZn(Xem%&U|?W$DortDU@!nOIe-{M3-ADmHUv?7 z&XB{9$`H>GJh4!DvVjTM{CqGXyZW zFt`CVl>iNhXK)4bLm8YrbMljua`Kaa`hg}hxC3#?e=q>D7#MKqnw%@#KUq`IvmS?h zPP$=ma(-?B*bE4PLuGEhiwo3#4(H{sPv%M=a>Q+KZhi`iYB~JMCvTJ&R>om*S#VKa zPJUiG&@#r&^-_D7*bNPI6pRckCL0PmPTnG`x_O0cJk!PoV|GTB%{&4hm_h#C>?#t- zIJsCXdGjkV8K%iD@`pDz=(9_*LcD0e4WwO><8Nc(d*;dfD!QDY_&ESlHQ9zodUApa UJF5klSD-R+@?VjeP$RjS08}Y)vj6}9 diff --git a/CV/.DS_Store b/CV/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..67c2736abec99db5bfc7e2c6e6e49349aad9a484 GIT binary patch literal 6148 zcmeHK&2G~`5T0!VY*JPDfYeI8_=3bCLJ2MOP$9XF3-ngWr5pgIb{r*^9Iur)L~WYN zuK_QBcnxlS0v@6dQD%3iRiiYhTxf-Mq}gwFcV^f7Wq&dNz}#U}2e1Huqe?7Qu(&~F zztkC7pq4TsQ)6_Y2@TkWJ=mY|HVuXW!@zxGK%QL-&uaiVwBY*rZNNJ`$Pr90Zm-Sbq=hbQD{;T~s(4WHi@Vm?iNbuho9Bg~if? zhmSa~@XB)Kv)>gXKM(TZzzzBzWo<9WyCK>8LL^sq5FW(sQPXsQR>$Lw+KZ}PUw=8N+T+d5TGifIe>Itu`O4G!>)pfN z(ee0Xa{5)#01PidC65U&;TsxrNJ=_&za@IvrR#jpp71;(hBv;SpY_&$ZvV+U`U~%@ zd)u%0;`h@;q#c}Du67x>M+%**pWcT9czfff`GMZoHw{*e+${sNUHQ`8eukOdFkl$C zhYZO3!A6zn5EdHM)q#ad0T4^rtORYDOUM|T&><`|Vh;+_p@=$^QHsHIIJVp5=MWYe zbvQ6eJ{Zl+C_`atb{yYU?!X+4rZfx~2BsNU)KyEq|2y;Z|LGu8GYl98{woGp$@4uI zmqc&t%;Mx*Yoi{bN|AnrMiqhuJ;%zBPw^_M66~|3f#?tx8nFe%{1H$zn8GmdPZ{_P DtKy*o literal 0 HcmV?d00001 diff --git a/PDF_to_EPUB/pdf_to_epub.py b/CV/PDF_to_EPUB/pdf_to_epub.py similarity index 100% rename from PDF_to_EPUB/pdf_to_epub.py rename to CV/PDF_to_EPUB/pdf_to_epub.py diff --git a/PDF_to_EPUB/requirements.txt b/CV/PDF_to_EPUB/requirements.txt similarity index 100% rename from PDF_to_EPUB/requirements.txt rename to CV/PDF_to_EPUB/requirements.txt diff --git a/CV/png_to_SVG.py b/CV/png_to_SVG.py new file mode 100644 index 0000000..a213244 --- /dev/null +++ b/CV/png_to_SVG.py @@ -0,0 +1,18 @@ +#coding:UTF-8 +import sys +infile = sys.argv[1] +outfile = sys.argv[2] +from PIL import Image +image = Image.open(infile).convert('RGBA') +data = image.load() +out = open(outfile, "w") +out.write('\n') +out.write('\n' % {'x':image.size[0], 'y':image.size[1]}) +for y in range(image.size[1]): + for x in range(image.size[0]): + rgba = data[x, y] + rgb = '#%02x%02x%02x' % rgba[:3] + if rgba[3] > 0: + out.write('\n' % (x, y, rgb, rgba[3]/255.0)) +out.write('\n') +out.close() diff --git a/Calculus/Taylor.py b/Calculus/Taylor.py index f32c170..38949eb 100644 --- a/Calculus/Taylor.py +++ b/Calculus/Taylor.py @@ -1,7 +1,9 @@ #coding:UTF-8 #Author: Toryun #Date: 2020-04-05 -#Function: Taylor +#Function: Taylor 可以转换成c/c++ +#sympy have a function could achieve this method:series(method,n) +#你也可以使用sympy库里的series函数得到Taylor展开式 from sympy import * import math @@ -59,7 +61,7 @@ def f(self,x): taylor_f = 0.0 for i in range(0,n+1): taylor_f += Taylor.f_Nderivative(i,f)[i]*pow(x,i)/Taylor.Factorial_N(i) - print "{0}'s {1} Factorial Taylor formula is \n{2}".format(f,n, taylor_f) + pprint("{0}'s {1} Factorial Taylor formula is \n{2}".format(f,n, taylor_f)) From 620d0948e2b28405bd92803206636b18e016927f Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 13 Apr 2020 02:40:58 +0800 Subject: [PATCH 047/270] hashsort and upload d-path to svg --- .DS_Store | Bin 10244 -> 10244 bytes CV/.DS_Store | Bin 6148 -> 6148 bytes CV/png_to_SVG.py | 31 +++++++++++++++++++++++++++++-- Sorting_Algorithms/hashsort.py | 29 +++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 Sorting_Algorithms/hashsort.py diff --git a/.DS_Store b/.DS_Store index d5b927971c6501f4671d1d9a428baee95ace4575..a48e1b3f10caf731e131cc1fa34120f744715451 100644 GIT binary patch delta 43 kcmZn(XbIS$D#l@9W~ifJXl^;#P|$I6p4fJNbdhO{00u-0vj6}9 delta 25 bcmZn(XbIS$DmM9#u;=DHvF-d&#xzC%iGK<; diff --git a/CV/.DS_Store b/CV/.DS_Store index 67c2736abec99db5bfc7e2c6e6e49349aad9a484..d1c405391d0182ef366464c09425a530ec5fa7a9 100644 GIT binary patch delta 21 ccmZoMXffEJ&B|e9VydHHXl}9DnDwF%06%aArT_o{ delta 21 ccmZoMXffEJ&B|e7V5Fm9Xl%OKnDwF%06z-_ng9R* diff --git a/CV/png_to_SVG.py b/CV/png_to_SVG.py index a213244..0f4418e 100644 --- a/CV/png_to_SVG.py +++ b/CV/png_to_SVG.py @@ -1,9 +1,21 @@ #coding:UTF-8 +#Author: Toryun +#Date: 2020-04-11 15:10:00 +#Function: png,jpeg to svg import sys +import time +from PIL import Image +import matplotlib.pyplot as plt +X = [] +Y = [] +plt.figure() +fig, ax = plt.subplots() infile = sys.argv[1] outfile = sys.argv[2] -from PIL import Image image = Image.open(infile).convert('RGBA') +image.show() +print image.size[0] +print image.size[1] data = image.load() out = open(outfile, "w") out.write('\n') @@ -11,8 +23,23 @@ for y in range(image.size[1]): for x in range(image.size[0]): rgba = data[x, y] + + if rgba[2] < 200 and rgba[0] <210 and rgba[1]<200: + print '更改前:{}'.format(rgba) + rgba = (0,0,0,255) + print '更改后:{}'.format(rgba) + if rgba[0] < 200 and rgba[1]<200 and rgba[2]<200: + X.append(x) + Y.append(y) rgb = '#%02x%02x%02x' % rgba[:3] if rgba[3] > 0: - out.write('\n' % (x, y, rgb, rgba[3]/255.0)) + out.write('\n'.format(x, y, x+1, y, rgb, rgba[3]//255.0)) +line, = plt.plot(X, Y, 'k.') out.write('\n') out.close() +image.close() +plt.show() +plt.close(fig) + + + diff --git a/Sorting_Algorithms/hashsort.py b/Sorting_Algorithms/hashsort.py new file mode 100644 index 0000000..7205210 --- /dev/null +++ b/Sorting_Algorithms/hashsort.py @@ -0,0 +1,29 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-13 02:33:00 +#Function: Use hashmap to sort list + +def hashsort(arr1): + """ + :type arr1: List[int] + :rtype: List[int] + 通过hashmap进行排序O(n+m) + """ + tmp = -2**31 + for i in range(len(arr1)): + if arr1[i]>tmp: + tmp = arr1[i] + #print tmp + r = [] + b = [0]*(tmp+1) + for i in arr1: + #把所有的存在arr1数组的元素放入hashmap里 + b[i] += 1 + for i in range(len(b)): + r += [i]*b[i] + return r + +if __name__ == '__main__': + arr1 = [2, 2, 1, 4, 3, 9, 6, 7, 13, 0, 25] + s = hashsort(arr1) + print s From 52cd5432699c6a7c34f6f3c2c2dbb32fdadb70b7 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 14 Apr 2020 07:42:19 +0800 Subject: [PATCH 048/270] Create KMP.py --- Sorting_Algorithms/KMP.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 Sorting_Algorithms/KMP.py diff --git a/Sorting_Algorithms/KMP.py b/Sorting_Algorithms/KMP.py new file mode 100644 index 0000000..85b9693 --- /dev/null +++ b/Sorting_Algorithms/KMP.py @@ -0,0 +1,24 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-14 07:24:00 +#Function: finding next[i] of KMP Algorithm 最长公共前后缀长度 + +def Next(a): + assert len(a)>0 and len(a)<65 + assert isinstance(a,str) + next = [0]*len(a) + for i in range(1,len(a)): + for j in range(i): + if a[:j+1] == a[i-j:i+1]: + next[i] = j + #print j,i,a[:j+1],a[i-j:i+1],next[i] + else: + continue + + next[0] = -1 + return next + +if __name__ == '__main__': + arr = 'AABAAC' + next = Next(arr) + print(next) From 0695cdaff633ca11b1ba3c9b8afae541dcc48ace Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 14 Apr 2020 08:49:58 +0800 Subject: [PATCH 049/270] Update KMP.py --- Sorting_Algorithms/KMP.py | 69 ++++++++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/Sorting_Algorithms/KMP.py b/Sorting_Algorithms/KMP.py index 85b9693..248bfe0 100644 --- a/Sorting_Algorithms/KMP.py +++ b/Sorting_Algorithms/KMP.py @@ -3,22 +3,59 @@ #Date: 2020-04-14 07:24:00 #Function: finding next[i] of KMP Algorithm 最长公共前后缀长度 -def Next(a): - assert len(a)>0 and len(a)<65 - assert isinstance(a,str) - next = [0]*len(a) - for i in range(1,len(a)): - for j in range(i): - if a[:j+1] == a[i-j:i+1]: - next[i] = j - #print j,i,a[:j+1],a[i-j:i+1],next[i] - else: - continue +import time - next[0] = -1 - return next +class KMP(): + def Next(self,a): + assert len(a)>0 and len(a)<65 + assert isinstance(a,str) + next = [0]*len(a) + for i in range(1,len(a)): + for j in range(i): + if a[:j+1] == a[i-j:i+1]: + next[i] = j + #print j,i,a[:j+1],a[i-j:i+1],next[i] + else: + continue + next[0] = -1 + return next + def KMP(self,S,a): + ''' + a:匹配的关键字符串 + S:待匹配的长字符串 + ''' + assert len(a)<=len(S) and len(a)>0 and len(a)<65 + assert isinstance(a,str) and isinstance(S,str) + next = self.Next(a) + j = 0 + p = [] + i = 0 + while j < len(S): + if S[j] != a[i]: + i = next[i] + if i == -1: + j += 1 + i = 0 + else: + j += 1 + i += 1 + if i == len(a)-1 and S[j] == a[i]: + p.append(j-i) + i = next[i] + + #print S + #print a + #print j,i + return p if __name__ == '__main__': - arr = 'AABAAC' - next = Next(arr) - print(next) + arr = 'AABA' + S = 'AABAACAADAABAABA' + print(S) + print(arr) + t0 = time.time() + kmp = KMP() + p = kmp.KMP(S,arr) + t1 = time.time() + T = round(t1 - t0,2) + print("The \'{0}\' is in {1}th position, the total finding time is {2} seconds".format(arr,p,T)) From 470acf1602806e6004c9f63d840b888a55106a52 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 14 Apr 2020 13:34:30 +0800 Subject: [PATCH 050/270] Update KMP.py --- Sorting_Algorithms/KMP.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sorting_Algorithms/KMP.py b/Sorting_Algorithms/KMP.py index 248bfe0..df3c8e2 100644 --- a/Sorting_Algorithms/KMP.py +++ b/Sorting_Algorithms/KMP.py @@ -50,12 +50,12 @@ def KMP(self,S,a): return p if __name__ == '__main__': arr = 'AABA' - S = 'AABAACAADAABAABA' + S = 'AABAACAADAABAABAAABAACAADAABAABAAABAACAADAABAABAAABAACAADAABAABA' print(S) print(arr) t0 = time.time() kmp = KMP() p = kmp.KMP(S,arr) t1 = time.time() - T = round(t1 - t0,2) + T = t1 - t0 print("The \'{0}\' is in {1}th position, the total finding time is {2} seconds".format(arr,p,T)) From da5cd5b19fac9b93811e454737637935ad152f85 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 14 Apr 2020 15:23:47 +0800 Subject: [PATCH 051/270] change directory --- {Sorting_Algorithms => Grapgh Theory}/KMP.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {Sorting_Algorithms => Grapgh Theory}/KMP.py (100%) diff --git a/Sorting_Algorithms/KMP.py b/Grapgh Theory/KMP.py similarity index 100% rename from Sorting_Algorithms/KMP.py rename to Grapgh Theory/KMP.py From c0f0030015ce48bb1964ebd3f17957a33aa47c49 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 14 Apr 2020 20:10:09 +0800 Subject: [PATCH 052/270] Bubble sort --- Sorting_Algorithms/.DS_Store | Bin 6148 -> 6148 bytes Sorting_Algorithms/Bubble_sort.py | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 Sorting_Algorithms/Bubble_sort.py diff --git a/Sorting_Algorithms/.DS_Store b/Sorting_Algorithms/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..2bca928b67de26b71ce42e8419c64e3e2554fc50 100644 GIT binary patch literal 6148 zcmeHKyH3ME5S$GW3JOS}g3=`w5;ct#g(3w7;sbyr2rR4^URSSKBSvY8f$ioQKWfY? z%sJ-}Pn(&h*4v6&Eac`2xB{-g)+oR|Tdma&=&dW@3b+DG1@!%p&=u2&Wk7p%u(2Zm zvB|I*`}(n{oFrlzu?)y7GznBhvDsNav2;ip z&|6o)6|OV|yrsCe)^1Ms+Jt^fSJS*Q;F7|Q hZN<#ht@xO3#(1I~Vj8gw$Oz3p1WX2RT!BAT;0uSFX(s>x delta 70 zcmZoMXfc=|#>AjHu~2NHo+1YW5HK<@2y8B7p2o7dfmw=qGdl-A2T%b} arr[i+1]: + arr[i], arr[i+1] = arr[i+1], arr[i] + + else: + i += 1 + tmp += 1 + #print(tmp,arr) + #time.sleep(3) + +if __name__ == '__main__': + arr = [i for i in range(100)]#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] + random.shuffle(arr) + #arr.reverse() + Bubble(arr) + print(arr) From 1e64a2b1f2562a71dec9143c8db6a9c6caf4b887 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 15 Apr 2020 01:52:25 +0800 Subject: [PATCH 053/270] Create Shell_sort.py --- Sorting_Algorithms/Shell_sort.py | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Sorting_Algorithms/Shell_sort.py diff --git a/Sorting_Algorithms/Shell_sort.py b/Sorting_Algorithms/Shell_sort.py new file mode 100644 index 0000000..3da3810 --- /dev/null +++ b/Sorting_Algorithms/Shell_sort.py @@ -0,0 +1,33 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-14 23:29:00 +#Function: Shell sort + +import random + +def Shellsort(arr): + '''Insertion sort 2.0v 插入排序的优化版,原理:把插入排序中只能移动一个位置的步长变成移动较长的step_size,当step_size == 1的时候表示已经成为正常的线性排序了''' + assert len(arr)>0 and isinstance(arr,list) + l = len(arr) + step_size = l/2 + while step_size > 0: + for i in range(step_size): + for j in range(i+step_size,l,step_size): + k = j + #print k + while k > 0: + if arr[k-step_size] > arr[k]: + arr[k-step_size], arr[k] = arr[k],arr[k-step_size] + k -= step_size + else: + k = 0 + step_size /= 2 + return arr + +if __name__ == '__main__': + arr = [i for i in range(100)] + random.shuffle(arr) + n = Shellsort(arr) + print(n) + + From 095c7e936a54f251c564124afc134542084df47b Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 15 Apr 2020 15:02:37 +0800 Subject: [PATCH 054/270] Create Select_sort.py --- Sorting_Algorithms/Select_sort.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Sorting_Algorithms/Select_sort.py diff --git a/Sorting_Algorithms/Select_sort.py b/Sorting_Algorithms/Select_sort.py new file mode 100644 index 0000000..ba99287 --- /dev/null +++ b/Sorting_Algorithms/Select_sort.py @@ -0,0 +1,25 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-15 14:55:00 +#Function: Select Sort + +from random import * +import time + +def Select_sort(arr): + assert len(arr)>0 and isinstance(arr,list) + tmp = 0 + l = len(arr) + while tmp < l: + for i in range(tmp,l): + if arr[tmp] > arr[i]: + arr[tmp], arr[i] = arr[i], arr[tmp] + + tmp += 1 + return arr + +if __name__ == '__main__': + arr = [i for i in range(100)] + shuffle(arr) + a = Select_sort(arr) + print(a) From 3900b22b55c43c9b1f548b4774680afe24c9cdfb Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 16 Apr 2020 00:32:39 +0800 Subject: [PATCH 055/270] Create counting_sort.py --- Sorting_Algorithms/counting_sort.py | 45 +++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 Sorting_Algorithms/counting_sort.py diff --git a/Sorting_Algorithms/counting_sort.py b/Sorting_Algorithms/counting_sort.py new file mode 100644 index 0000000..553d86b --- /dev/null +++ b/Sorting_Algorithms/counting_sort.py @@ -0,0 +1,45 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-07 21:42:00 +#Function: Counting Sort +from random import * +import time + +def Counting_sort(arr): + '''增加两个数组[arr_tmp]和[arr_new],把数组arr中的元素存放在相应下标处,相应arr_tmp[i] += 1,存储完成后再把数组元素值两两相加得到顺序大小,最后根据元素值arr_tmp[i]作为arr_new的下标进行存储''' + assert len(arr) > 0 and isinstance(arr,list) + l = len(arr) + tmp_a = 0 #最大值 + tmp_b = 0 #最小值 + for i in range(l): + if arr[tmp_a] < arr[i]: + tmp_a = i + if arr[tmp_b] > arr[i]: + tmp_b = i + #print(arr[tmp]) + arr_tmp = [0]*(arr[tmp_a]+1) + for i in arr: + # print i + arr_tmp[i] += 1 + print(arr_tmp) + for i in range(l-1): + arr_tmp[i+1] += arr_tmp[i] + print(arr_tmp) + arr_new = [0]*l + for i in range(l): + #print(i,arr[i],arr_tmp[arr[i]]) + arr_tmp[arr[i]] -= 1 + arr_new[arr_tmp[arr[i]]] = arr[i] + + + return arr_new +if __name__ == '__main__': + arr = [i for i in range(100)] + shuffle(arr) + #print arr + t0 = time.time() + a = Counting_sort(arr) + t1 = time.time() + T = t0 - t1 + print(a) + print "Insertion sort total time is {}".format(T) From a4c39c0c7aa71ff8b16831748c32f93f8799d2f1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 16 Apr 2020 01:12:04 +0800 Subject: [PATCH 056/270] Update counting_sort.py --- Sorting_Algorithms/counting_sort.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sorting_Algorithms/counting_sort.py b/Sorting_Algorithms/counting_sort.py index 553d86b..27b27a4 100644 --- a/Sorting_Algorithms/counting_sort.py +++ b/Sorting_Algorithms/counting_sort.py @@ -26,7 +26,8 @@ def Counting_sort(arr): arr_tmp[i+1] += arr_tmp[i] print(arr_tmp) arr_new = [0]*l - for i in range(l): + for i in range(l-1,-1,-1): + #倒序保持算法稳定性 #print(i,arr[i],arr_tmp[arr[i]]) arr_tmp[arr[i]] -= 1 arr_new[arr_tmp[arr[i]]] = arr[i] From 34bc9f68c338be5e1b707689f89ba40fca9e62c8 Mon Sep 17 00:00:00 2001 From: Toryun Date: Thu, 16 Apr 2020 01:13:45 +0800 Subject: [PATCH 057/270] Update counting_sort.py --- Sorting_Algorithms/counting_sort.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sorting_Algorithms/counting_sort.py b/Sorting_Algorithms/counting_sort.py index 27b27a4..505e8a3 100644 --- a/Sorting_Algorithms/counting_sort.py +++ b/Sorting_Algorithms/counting_sort.py @@ -1,6 +1,6 @@ #coding:UTF-8 #Author: Toryun -#Date: 2020-04-07 21:42:00 +#Date: 2020-04-16 17:42:00 #Function: Counting Sort from random import * import time From 705593e8d75a668ef0579b67d172f601975cc11d Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 16 Apr 2020 16:35:20 +0800 Subject: [PATCH 058/270] Create Bucket_sort.py --- Sorting_Algorithms/Bucket_sort.py | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Sorting_Algorithms/Bucket_sort.py diff --git a/Sorting_Algorithms/Bucket_sort.py b/Sorting_Algorithms/Bucket_sort.py new file mode 100644 index 0000000..bef5927 --- /dev/null +++ b/Sorting_Algorithms/Bucket_sort.py @@ -0,0 +1,56 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-15 14:55:00 +#Function: Bucket Sort + +from random import * +import numpy as np +import time + +def Bucket_sort(arr): + '''把数组中的元素按照arr[i]*len(arr)/max(arr[i])放入另外一个数组中【桶】,最后依次把非空桶中元素按大小重新存入数组''' + assert len(arr) > 0 and isinstance(arr,list) + l = len(arr) + max_i = 0 + for i in range(l): + if arr[i]>arr[max_i]: + max_i = i + arr_bucket = [[] for i in range(l)] + i = 0 + while i < l: + #print(arr[i],arr[i]*l/arr[max_i]) + arr_bucket[arr[i]*l/(arr[max_i]+1)].append(arr[i]) + i += 1 + #print l,arr[max_i] + #print arr_bucket + for i in range(l): + #对每个桶内进行排序,可以简化成一个函数min(arr_tmp[i]) + if len(arr_bucket[i]) == 0: + i += 1 + else: + tmp = 0 + while tmp < len(arr_bucket[i]): + #print tmp + for j in range(len(arr_bucket[i])): + #print j + if arr_bucket[i][j] < arr_bucket[i][tmp]: + #print(arr_bucket[i][j], arr_bucket[i][tmp]) + arr_bucket[i][j], arr_bucket[i][tmp] = arr_bucket[i][tmp], arr_bucket[i][j] + tmp += 1 + #print tmp + #print arr_bucket + i = 0 + while i < l: + n = arr_bucket.pop(0) + #print i + if len(n) > 0: + for j in range(len(n)): + arr[i] = n[j] + i += 1 + return arr +if __name__ == '__main__': + arr = [i for i in range(100)] + shuffle(arr) + print(arr) + a = Bucket_sort(arr) + print(a) From c3ad396c7ff62a55abe69a7c4a307e12e07150ad Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 16 Apr 2020 19:44:16 +0800 Subject: [PATCH 059/270] Update Bucket_sort.py --- Sorting_Algorithms/Bucket_sort.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/Sorting_Algorithms/Bucket_sort.py b/Sorting_Algorithms/Bucket_sort.py index bef5927..37beb35 100644 --- a/Sorting_Algorithms/Bucket_sort.py +++ b/Sorting_Algorithms/Bucket_sort.py @@ -12,9 +12,13 @@ def Bucket_sort(arr): assert len(arr) > 0 and isinstance(arr,list) l = len(arr) max_i = 0 + min_i = 0 for i in range(l): if arr[i]>arr[max_i]: max_i = i + if arr[i] Date: Thu, 16 Apr 2020 20:43:53 +0800 Subject: [PATCH 060/270] Update Bucket_sort.py --- Sorting_Algorithms/Bucket_sort.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sorting_Algorithms/Bucket_sort.py b/Sorting_Algorithms/Bucket_sort.py index 37beb35..c830874 100644 --- a/Sorting_Algorithms/Bucket_sort.py +++ b/Sorting_Algorithms/Bucket_sort.py @@ -63,5 +63,5 @@ def Bucket_sort(arr): t1 = time.time() #print(a) T = t1 - t0 - print "Merge Sort total time is {}".format(T) + print "Bucket Sort total time is {}".format(T) From 6b9a9f34b8ead8f28d820251cf924a64764088c3 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 19 Apr 2020 17:44:41 +0800 Subject: [PATCH 061/270] update leetcode-69 Newton,log,recursive,binary find x's sqrt --- .DS_Store | Bin 10244 -> 12292 bytes CV/__init__.py | 0 CV/png_to_SVG.py | 86 +++++++++++++++++----------- Leetcode/leetcode-69-sqrtx.py | 105 ++++++++++++++++++++++++++++++++++ 4 files changed, 158 insertions(+), 33 deletions(-) create mode 100644 CV/__init__.py create mode 100644 Leetcode/leetcode-69-sqrtx.py diff --git a/.DS_Store b/.DS_Store index a48e1b3f10caf731e131cc1fa34120f744715451..e086dd9b1dce5e0bfa6cf5f0fa264fc0493f6bd7 100644 GIT binary patch delta 334 zcmZn(Xh~3DU|?W$DortDV9)?EIe-{M3-ADifgA;=R?wg3Y|K0`V~ z4nrzKJVWrr!o`yfR9IL+3Rorwipx!2DSm}1HEClZGuvi%4i*kZb&%-h*%H$k`8gPT zfVxr{N*I!XW~59`lom}y6Jtot&3AE0%E?ax8pt81w0D+*+95{}8&xkzT?$d^CU2A% z-fSdwm33o7JNv|jFh-@#JOcIXlT+j?Wq{_g0x=M1a03ZfWUp^5e9t_YU&T@aBn|W) W6O?9w(j1dBRAz4eDKd!(WE23BKR|5& delta 161 zcmZokXbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~3gIoUvmMH0woa06mSpg03VCPN8B zJP_(J6l@lhSj@heor8sg(QPx2LOuKB&jNCj^%$>AP85*atR*m=adV{5RaQY}kO@G8 pxq*Z$$nedAOy8L&^Xphnw&#)HV1n4IF*!kJ=4M9KE+(ik(Ete%AAA4+ diff --git a/CV/__init__.py b/CV/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CV/png_to_SVG.py b/CV/png_to_SVG.py index 0f4418e..2cb0a74 100644 --- a/CV/png_to_SVG.py +++ b/CV/png_to_SVG.py @@ -6,40 +6,60 @@ import time from PIL import Image import matplotlib.pyplot as plt -X = [] -Y = [] -plt.figure() -fig, ax = plt.subplots() -infile = sys.argv[1] -outfile = sys.argv[2] -image = Image.open(infile).convert('RGBA') -image.show() -print image.size[0] -print image.size[1] -data = image.load() -out = open(outfile, "w") -out.write('\n') -out.write('\n' % {'x':image.size[0], 'y':image.size[1]}) -for y in range(image.size[1]): - for x in range(image.size[0]): - rgba = data[x, y] +import tkinter as tk +from tkinter import messagebox +from tkinter.filedialog import (askopenfilename, + askopenfilenames, + askdirectory, + asksaveasfilename) + +class svgpath(): + def __init__(self,infile,outfile): + self.X = [] + self.Y = [] + self.infile = infile + self.outfile = outfile - if rgba[2] < 200 and rgba[0] <210 and rgba[1]<200: - print '更改前:{}'.format(rgba) - rgba = (0,0,0,255) - print '更改后:{}'.format(rgba) - if rgba[0] < 200 and rgba[1]<200 and rgba[2]<200: - X.append(x) - Y.append(y) - rgb = '#%02x%02x%02x' % rgba[:3] - if rgba[3] > 0: - out.write('\n'.format(x, y, x+1, y, rgb, rgba[3]//255.0)) -line, = plt.plot(X, Y, 'k.') -out.write('\n') -out.close() -image.close() -plt.show() -plt.close(fig) + def svg_path(self): + X = [] + Y = [] + plt.figure() + fig, ax = plt.subplots() + #infile = askopenfilename(title = "Please choose the filepath in the directory",initialdir='/') + infile = '/Users/jin/Desktop/naruto.jpeg' + image = Image.open(infile).convert('RGBA') + #image.show() + print image.size[0] + print image.size[1] + data = image.load() + outfile = '/Users/jin/Desktop/n1.svg' + out = open(outfile, "w") + out.write('\n') + out.write('\n' % {'x':image.size[0], 'y':image.size[1]}) + for y in range(image.size[1]): + for x in range(image.size[0]): + rgba = data[x, y] + + if rgba[2] < 200 and rgba[0] <210 and rgba[1]<200: + #print '更改前:{}'.format(rgba) + rgba = (0,0,0,255) + #print '更改后:{}'.format(rgba) + if rgba[0] < 200 and rgba[1]<200 and rgba[2]<200: + X.append(x) + Y.append(y) + rgb = '#%02x%02x%02x' % rgba[:3] + if rgba[3] > 0: + out.write('\n'.format(x, y, x+1, y, rgb, rgba[3]//255.0)) + line, = plt.plot(X, Y, 'k.') + out.write('\n') + out.close() + #plt.show() + return X,Y + +if __name__ == '__main__': + svgpath = svgpath('/Users/jin/Desktop/naruto.jpeg','/Users/jin/Desktop/n1.svg') + X,Y = svgpath.svg_path() + diff --git a/Leetcode/leetcode-69-sqrtx.py b/Leetcode/leetcode-69-sqrtx.py new file mode 100644 index 0000000..93cb76d --- /dev/null +++ b/Leetcode/leetcode-69-sqrtx.py @@ -0,0 +1,105 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-17 16:41:00 +#https://leetcode-cn.com/problems/sqrtx/ + +from __future__ import division +import random +#由于2.7中整型间的运算得出的结果只能是整型,所以引入division +import matplotlib.pyplot as plt +import time +import numpy as np + +class Solution: + '''使用牛顿法进行极值运算''' + def NewtonSqrt(self, x): + if x < 2: + return x + + x0 = x + x1 = (x0 + x / x0) / 2 + while abs(x0 - x1) >= 10**-6: + x0 = x1 + x1 = (x0 + x / x0) / 2 + #print(x1) + return int(x1) + def BinarySqrt(self, x): + if x < 2: + return x + + left, right = 2, x // 2 + + while left <= right: + m = left + (right - left) // 2 + num = m * m + #print(left, right) + if num > x: + right = m -1 + elif num < x: + left = m + 1 + else: + return m + + return right + + def RecursiveSqrt(self, x): + if x < 2: + return x + + left = self.RecursiveSqrt(x >> 2) << 1 + right = left + 1 + return left if right * right > x else right + + def LogSqrt(self, x): + if x < 2: + return x + + left = int(np.e**(0.5 * np.log(x))) + right = left + 1 + return left if right * right > x else right + + def Compare_time(self,t = 100): + T = [] + for x in range(t): + t0 = time.time() + sq_x = self.NewtonSqrt(x) + t1 = time.time() + sq_x_1 = self.BinarySqrt(x) + t2 = time.time() + sq_x_2 = self.RecursiveSqrt(x) + t3 = time.time() + sq_x_3 = self.LogSqrt(x) + t4 = time.time() + T.append([t1-t0,t2-t1,t3-t2,t4-t3]) + return T + def implot(self,T,t = 100): + fig, ax = plt.subplots() + ax.autoscale() + plt.title('Compare time') + plt.xlabel('x') + plt.ylabel('y') + line1 = ax.plot(range(t),T[:,0],'r-',label='Newton') + line2 = ax.plot(range(t),T[:,1],'b-',label='Binary') + line3 = ax.plot(range(t),T[:,2],'y-',label='Recursive') + line4 = ax.plot(range(t),T[:,3],'k-',label='Recursive') + ax.legend() + plt.show() +if __name__ == '__main__': + x = random.randrange(10000) + print('x的值是:{}'.format(x)) + mysq = Solution() + sq_x = mysq.NewtonSqrt(x) + print('牛顿法求的x 的平方根整数位是:{}'.format(sq_x)) + sq_x_1 = mysq.BinarySqrt(x) + print('二分法求的x 的平方根整数位是:{}'.format(sq_x_1)) + sq_x_2 = mysq.RecursiveSqrt(x) + print('递归求的x 的平方根整数位是:{}'.format(sq_x_2)) + sq_x_3 = mysq.LogSqrt(x) + print('对数表求的x 的平方根整数位是:{}'.format(sq_x_3)) + try: + n = int(raw_input('Please input the number of compare:\n')) + except Exception as e: + print(str(e)+'\nPlese input int type,default number of compare is 100') + n = 100 + T = np.array(mysq.Compare_time(n)) + mysq.implot(T,n) From 3f8d9ca4ab881ef79bf709a170f6776fe49a9356 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 20 Apr 2020 20:30:28 +0800 Subject: [PATCH 062/270] bilibili_ranking_video get the 100 rank data of bilibili --- .DS_Store | Bin 12292 -> 14340 bytes Leetcode/leetcode-69-sqrtx.py | 2 +- bilibili/README.md | 17 +++++ bilibili/bilibili_rank.sh | 10 +++ bilibili/bilibili_ranking_data_everyday.py | 77 +++++++++++++++++++++ bilibili/log | 2 + bilibili/log.err | 5 ++ bilibili/requirements.txt | 3 + bilibili_ranking_data_everyday.py | 33 +++++++++ 9 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 bilibili/README.md create mode 100755 bilibili/bilibili_rank.sh create mode 100644 bilibili/bilibili_ranking_data_everyday.py create mode 100644 bilibili/log create mode 100644 bilibili/log.err create mode 100644 bilibili/requirements.txt create mode 100644 bilibili_ranking_data_everyday.py diff --git a/.DS_Store b/.DS_Store index e086dd9b1dce5e0bfa6cf5f0fa264fc0493f6bd7..8828b1eb05a19c0adf6d7dfc1e71f71e0e7fcda0 100644 GIT binary patch delta 1658 zcmeHHO-vI(6n?M#bipcH{z1W(Mxs)&pe7JC{D=`^Oo0+;MJ?@iDI2ys>+Ti=5A}dv zmCQjsc-QmBlZi22^k9fFUj2&+@dk+}Pdd}3ion5xi5DlCdEb8X=Dm4uzul#&CEW)A z*q=>x0E8G6*yL99u;mtj&$H}1S~JcbiWmu?f&^K%X2D#(8la(IaS5``VtOcW%&x5; zaNBO7SiqBZEHLPz-MHjF9t!$8J3DBHzlnZAzdhUPL;6*0rtSEaCd6j@u=o%ghg2dZ zRg&bX**pp0ihj=z`q5i!zwxdL*hoFT`}l&suf8GFUccTI^c@S)kiQx4(y)I&-m{6n z4_Vkdr99<{?n263{`P$^0g;p`sYyaq#;}6&lp@XPPG)?X)K$f_LZJ_$h_0gIl2W%& zR=&%#dryVvt*r7^duwWH>*{M78XNb;#j0dNnoS!dtEJ8ml^FeMR-Q~7N-Cl!Bt=U{ zE%}-iQ5NM~T&&#UJ1VEH{G!GdbU7|o|0447&Ka_-!(?FFp=c~&7zr&c_b*&l6G>SOYyHHs zNQQgza1zmm4Vj0EDh%^#0zK=zdjNsn^969w0U`t(z&E*O*bqd_jcG)a%gO@1!w$z( z*2bED0mfk#7GW74z$179FX0`m!8dec1GZor9>>$zgM&DNqd0~!yoi&|c^8))A5D%a zte9eG~HGGt(2L-xYw1CMXcwm$FM>2!vq{>V?C`B^o;E+3n6jykn&>4Cpc z`%fDO0}`OIm!q&X4RJ`ZXN%1^$S}vI0SkFx;@wjuyGXl$x~hAT!%$b`BN}M)l45qQ@9FtBOD4*mxnB zl~HLjkHXB!+5#;c#>S>P3dY6;lRt{cPQEFnvbjLfj*&B^I5{UNKR<_Ia;9qW> /Users/jin/Documents/GitHub/Python_repository/bilibili/log && +# 进入helloworld.py程序所在目录 +cd /Users/jin/Documents/GitHub/Python_repository/bilibili && +# 执行python脚本(注意前面要指定python运行环境/usr/bin/python,根据自己的情况改变) +/usr/bin/python bilibili_ranking_data_everyday.py +#运行完成 +echo 'finish' >> /Users/jin/Documents/GitHub/Python_repository/bilibili/log diff --git a/bilibili/bilibili_ranking_data_everyday.py b/bilibili/bilibili_ranking_data_everyday.py new file mode 100644 index 0000000..e7066ce --- /dev/null +++ b/bilibili/bilibili_ranking_data_everyday.py @@ -0,0 +1,77 @@ +import requests +import datetime +import re +import pandas as pd +import random +import time +import progressbar + +def json_bvid(bvid, like, coin, favorite, share, reply, danmaku, his_rank): + '''获取单个视频的数据''' + url1 = 'https://api.bilibili.com/x/web-interface/view?bvid={}'.format(bvid) + json_bvid = requests.get(url1) + like.append(json_bvid.json()[ u'data'][u'stat'][u'like']) + coin.append(json_bvid.json()[ u'data'][u'stat'][u'coin']) + favorite.append(json_bvid.json()[ u'data'][u'stat'][u'favorite']) + share.append(json_bvid.json()[ u'data'][u'stat'][u'share'] ) + reply.append(json_bvid.json()[ u'data'][u'stat'][u'reply']) + danmaku.append(json_bvid.json()[ u'data'][u'stat'][u'danmaku'] ) + his_rank.append(json_bvid.json()[ u'data'][u'stat'][ u'his_rank']) + + +url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3' +headers={"Host": +"api.bilibili.com", +"User-Agent": +"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0", +"Referer": +"https://space.bilibili.com/96654548/video", +"Accept": +"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", +"Accept-Language": +"zh-CN,zh;q=0.9,en;q=0.8", +"Accept-Encoding": +"gzip, deflate, br", +"Connection": +"keep-alive", +"Cache-Control":"max-age=0", +"Upgrade-Insecure-Requests":"1", +"Cookie": +"_uuid=500B1F19-1AD8-2AF1-FA34-A76D73F5C98913672infoc; buvid3=2EF6859F-2258-4D84-81BF-165ACE9CD69F53934infoc" +} +proxies={'HTTP': 'HTTP://122.242.96.30:808', 'HTTPS': 'HTTPS://122.242.96.30:808'}#免费IP地址*http://www.xicidaili.com* +r = requests.get(url) +s = re.findall(r'
  • (\d+)<\/div>
    \"(.*?)\"<\/i>(.*?)<\/span><\/i>(.*?)<\/span><\/i>(.*?)<\/span><\/a>',r.content) +head = ['ranking','url_videos_bilibili','title','played','views','up_space','author'] +like, favorite, share, reply, danmaku, his_rank = [],[],[],[],[],[] +for i in range(len(s)): + bvid = s[i][1][-12:] + url1 = 'https://api.bilibili.com/x/web-interface/view?bvid={}'.format(bvid) + json_bvid = requests.get(url1) + like.append( json_bvid.json()[ u'data'][u'stat'][u'like']) + favorite.append( json_bvid.json()[ u'data'][u'stat'][u'favorite']) + share.append( json_bvid.json()[ u'data'][u'stat'][u'share']) + reply.append( json_bvid.json()[ u'data'][u'stat'][u'reply']) + danmaku.append( json_bvid.json()[ u'data'][u'stat'][u'danmaku']) + his_rank.append( json_bvid.json()[ u'data'][u'stat'][u'his_rank']) + +df = pd.DataFrame(s, columns = head) +df['点赞'] = like + '收藏', + '转发', + '评论', + '弹幕', + '单日全站排名'] = , favorite, share, reply, danmaku, his_rank +d = datetime.datetime.today() +df.to_csv('/Users/jin/Documents/bilibili/data_rank_bilibili_{}.csv'.format(d), encoding='utf-8') From 3fc3e96fd811ddd4d8d2f8c0d831d33eadd2d15c Mon Sep 17 00:00:00 2001 From: Toryun Date: Mon, 20 Apr 2020 20:39:11 +0800 Subject: [PATCH 063/270] Delete bilibili_ranking_data_everyday.py --- bilibili_ranking_data_everyday.py | 33 ------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 bilibili_ranking_data_everyday.py diff --git a/bilibili_ranking_data_everyday.py b/bilibili_ranking_data_everyday.py deleted file mode 100644 index 1305093..0000000 --- a/bilibili_ranking_data_everyday.py +++ /dev/null @@ -1,33 +0,0 @@ -import requests -import datetime -import re -import pandas as pd -import random -import time -import json - -url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3' -r = requests.get(url) -s = re.findall(r'
  • (\d+)<\/div>
    \"(.*?)\"<\/i>(.*?)<\/span><\/i>(.*?)<\/span><\/i>(.*?)<\/span><\/a>',r.content) -head = ['ranking','url_videos_bilibili','title','played','views','up_space','author'] -like, favorite, share, reply, danmaku, his_rank = [],[],[],[],[],[] -for i in range(len(s)): - bvid = s[i][1][-12:] - url1 = 'https://api.bilibili.com/x/web-interface/view?bvid={}'.format(bvid) - json_bvid = requests.get(url1) - like.append( json_bvid.json()[ u'data'][u'stat'][u'like']) - favorite.append( json_bvid.json()[ u'data'][u'stat'][u'favorite']) - share.append( json_bvid.json()[ u'data'][u'stat'][u'share']) - reply.append( json_bvid.json()[ u'data'][u'stat'][u'reply']) - danmaku.append( json_bvid.json()[ u'data'][u'stat'][u'danmaku']) - his_rank.append( json_bvid.json()[ u'data'][u'stat'][u'his_rank']) - -df = pd.DataFrame(s, columns = head) -df['点赞'] = like - '收藏', - '转发', - '评论', - '弹幕', - '单日全站排名'] = , favorite, share, reply, danmaku, his_rank -d = datetime.datetime.today() -df.to_csv('/Users/jin/Documents/bilibili/data_rank_bilibili_{}.csv'.format(d), encoding='utf-8') From 1483aecac6c232c3defb032e253b8dd70b824c44 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Apr 2020 03:24:47 +0800 Subject: [PATCH 064/270] leetcode recursive and add __init__ --- .DS_Store | Bin 14340 -> 14340 bytes AWS/__init__.py | 0 CV/.DS_Store | Bin 6148 -> 6148 bytes CV/curve_fit_func.py | 54 +++++++++++++++ Google_Sample/__init__.py | 0 Grapgh Theory/__init__.py | 0 .../leetcode-1137-n-th-tribonacci-number.py | 35 ++++++++++ Leetcode/leetcode-938-range-sum-of-bst.py | 65 ++++++++++++++++++ bilibili/__init__.py | 0 9 files changed, 154 insertions(+) create mode 100644 AWS/__init__.py create mode 100644 CV/curve_fit_func.py create mode 100644 Google_Sample/__init__.py create mode 100644 Grapgh Theory/__init__.py create mode 100644 Leetcode/leetcode-1137-n-th-tribonacci-number.py create mode 100644 Leetcode/leetcode-938-range-sum-of-bst.py create mode 100644 bilibili/__init__.py diff --git a/.DS_Store b/.DS_Store index 8828b1eb05a19c0adf6d7dfc1e71f71e0e7fcda0..457309d63bc193937bb4caba46c0f9878e3f9870 100644 GIT binary patch delta 570 zcmZoEXepQ=?WxMZpuocb0Zc%O5r|oUn2EueA*?L8C@&{JFC8k*45g!iG>|R8fGof9 zpd0(d3$dHoIaoLtjW*8|4q}{ar|iDjNHmRc@;asKlbyw+C(jV$0nt3j8YeFlYXK_| z5uY*HLR=6&a6rWDb2_)_XKhSic-rmQ_ClxRnf4?1o|2XI0P6&^78XiIh7p(AR?R$91PkF zjtssGVGP*}RSXju<}$2j*v)W);V#2_hM$b=i~^GlRmB;TH+!m9GETNt_L$72zGJeB zpy0$M@*rxng1`_F#np*$> delta 665 zcmZoEXepQ=Ez!onpuod`0yuy?j){dLvdlmRBM^rHF_105z>vd`%uos>OBsqM7AkWx zK^3q}F3=R2d|6$7^Dh}e=8X-;ERzjPSQc}0a4=efq&72a>|kOyG0;&kGBTXJP}p%Y zvv&GKBhk(L0{)C_=0ITsW1z6>=9Pj;jFbNg^Gr4tX`DPqw0*O)SPRo+K8>@Jk4UO+ z-XXc1ak8UK`Q}S9rgFlaM4GWY_+Bb%X$VIsp^hLsGv8BQ?VWq8lhDFAT- c5QAd$01z`wb~M>xLS=6{QRGbqJ%$1X0K>VZ4FCWD diff --git a/AWS/__init__.py b/AWS/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/CV/.DS_Store b/CV/.DS_Store index d1c405391d0182ef366464c09425a530ec5fa7a9..8b5e4505f3cde9be991996749164f671769f14df 100644 GIT binary patch delta 311 zcmZoMXfc@JFUrfnz`)4BAi%(o$xy-&4}^LQ1)BvqmNVCbq`1LCnGAWz(hQZJIr+&+ zIr&LI6+oSgtw37iKNtX63=Dz{$qc0oMGR#OsX+Z{P`znDu{@v*&;kq-KBJky$&jZ5 z)RqA>z!0nzR;SSyf$ATQ_5JAges%%*}=0 and n <= 37 + if n == 0: + return 0 + if n == 1: + return 1 + if n == 2: + return 1 + else: + t0, t1, t2 = 0, 1, 1 + for i in range(n-2): + t0, t1, t2 = t1, t2, t0 + t1 + t2 + assert t2 <= (1<<31) - 1 + return t2 + def Recursivetribonacci(self,n): + if n == 0: + return 0 + elif n == 1 or n == 2: + return 1 + else: + return self.Recursivetribonacci(n-1)+self.Recursivetribonacci(n-2)+self.Recursivetribonacci(n-3) +if __name__ == '__main__': + n = random.randrange(37) + print('n = {}'.format(n)) + s = Solution() + tribo1 = s.tribonacci(n) + tribo2 = s.Recursivetribonacci(n) + print(tribo1,tribo2) diff --git a/Leetcode/leetcode-938-range-sum-of-bst.py b/Leetcode/leetcode-938-range-sum-of-bst.py new file mode 100644 index 0000000..65ffec3 --- /dev/null +++ b/Leetcode/leetcode-938-range-sum-of-bst.py @@ -0,0 +1,65 @@ +class TreeNode(object): + def __init__(self,x): + self.value = x + self.left = None + self.right = None + def insertleft(self,x): + if self.left == None: + self.left = TreeNode(x) + else: + t = TreeNode(x) + self.left, t.left = t, self.left + def insertright(self,x): + if self.right == None: + self.right = TreeNode(x) + else: + t = TreeNode(x) + t.right = self.right + self.right = t + +class solution(): + def rangeSumbst(self,root,L,R): + self.ans = 0 + stack = [root] + def dfs(node,stack): + while stack: + node = stack.pop() + if node: + #print(node.value) + if L <= node.value <= R: + self.ans += node.value + if node.value < R: + stack.append(node.right) + if node.value > L: + stack.append(node.left) + dfs(root,stack) + return self.ans + +def postorder(tree): + if tree: + for key in postorder(tree.left): + yield key + for key in postorder(tree.right): + yield key + yield tree.key + +if __name__ == '__main__': + root = [10,5,15,3,7,None,18] + L = 7 + R = 15 + tree = TreeNode('') + for i in range(((len(root)-2)/2)): + #print(i,root[i*2+1],root[i*2+2]) + tree.insertleft(root[i*2+1]) + + tree.insertright(root[i*2+2]) + + if tree: + for key in postorder(tree.left): + yield key + for key in postorder(tree.right): + yield key + yield tree.key + s = solution() + ans = s.rangeSumbst(tree,L,R) + print(ans) diff --git a/bilibili/__init__.py b/bilibili/__init__.py new file mode 100644 index 0000000..e69de29 From 9b5ca4bf1a27942432e93954edc40e69ddd46b92 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Apr 2020 16:59:04 +0800 Subject: [PATCH 065/270] Update bilibili_rank.sh --- bilibili/bilibili_rank.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bilibili/bilibili_rank.sh b/bilibili/bilibili_rank.sh index 0609ab0..c2f6b67 100755 --- a/bilibili/bilibili_rank.sh +++ b/bilibili/bilibili_rank.sh @@ -5,6 +5,6 @@ echo `date` >> /Users/jin/Documents/GitHub/Python_repository/bilibili/log && # 进入helloworld.py程序所在目录 cd /Users/jin/Documents/GitHub/Python_repository/bilibili && # 执行python脚本(注意前面要指定python运行环境/usr/bin/python,根据自己的情况改变) -/usr/bin/python bilibili_ranking_data_everyday.py +python bilibili_ranking_data_everyday.py #运行完成 echo 'finish' >> /Users/jin/Documents/GitHub/Python_repository/bilibili/log From 530de4d06c7b4fdfbedb07cbde40d554dc12fe2f Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 21 Apr 2020 23:34:57 +0800 Subject: [PATCH 066/270] Radix sort --- .DS_Store | Bin 14340 -> 14340 bytes Sorting_Algorithms/Radix_sort.py | 58 +++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 Sorting_Algorithms/Radix_sort.py diff --git a/.DS_Store b/.DS_Store index 457309d63bc193937bb4caba46c0f9878e3f9870..0ceee88f3f56131183e14f3e7d4eba86f2aa5119 100644 GIT binary patch delta 52 zcmV-40L%Y`aD;HM#~70iD1-CxEWFgvkM?!3$tk} KodmN7F#QMOaS`1B delta 31 ncmZoEXeromTw-#z^qI|5B+J=0b15WnZ_d`9!?Kyp;2%2x*Fp?g diff --git a/Sorting_Algorithms/Radix_sort.py b/Sorting_Algorithms/Radix_sort.py new file mode 100644 index 0000000..2ffc275 --- /dev/null +++ b/Sorting_Algorithms/Radix_sort.py @@ -0,0 +1,58 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-21 20:05:00 +#Function: Radix Sort + +import time +import math +import random +import matplotlib.pyplot as plt +import matplotlib.animation as animation +import gc +import numpy as np + +def Radix_sort(arr,count): + '''根据数组元素的个位来进行桶排序''' + k = [10**c for c in range(count)] + print k + while len(k)>0: + b = 10 + c = k.pop(0) + l = len(arr) + buckets = [0]*b + arr_new = [0]*l + for i in range(l): + n = arr[i]/c%b + buckets[n] += 1 + for i in range(9): + buckets[i+1] += buckets[i] + #print(buckets) + for i in range(l-1,-1,-1): + n = arr[i]/c%b + buckets[n] -= 1 + arr_new[buckets[n]] = arr[i] + arr = arr_new + + return arr +def digital(num): + '''获取数位''' + x = num + count = 1 + while x >= 10: + #print x,count + x /= 10 + count += 1 + return count +if __name__ == '__main__': + num_bins = 100 + count = digital(num_bins-1) + print("数组最大位为{}".format(count)) + arr = np.arange(num_bins) + random.shuffle(arr) + print("原数组array:\n{}".format(arr)) + t0 = time.time() + arr1 = Radix_sort(arr,count) + print("排序后:\n{}".format(arr1)) + t1 = time.time() + T = t1 - t0 + print "Heap Sort total time is {}".format(T) From aac43bd1db7d28f59e3acd029291753ae8cc523a Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 22 Apr 2020 00:11:42 +0800 Subject: [PATCH 067/270] Update Radix_sort.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 定制桶的个数 --- Sorting_Algorithms/Radix_sort.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Sorting_Algorithms/Radix_sort.py b/Sorting_Algorithms/Radix_sort.py index 2ffc275..61e4173 100644 --- a/Sorting_Algorithms/Radix_sort.py +++ b/Sorting_Algorithms/Radix_sort.py @@ -8,27 +8,26 @@ import random import matplotlib.pyplot as plt import matplotlib.animation as animation -import gc import numpy as np -def Radix_sort(arr,count): +def Radix_sort(arr,count,bucket_size): '''根据数组元素的个位来进行桶排序''' k = [10**c for c in range(count)] - print k + #print k while len(k)>0: b = 10 c = k.pop(0) l = len(arr) - buckets = [0]*b + buckets = [0]*bucket_size arr_new = [0]*l for i in range(l): n = arr[i]/c%b buckets[n] += 1 - for i in range(9): + for i in range(bucket_size-1): buckets[i+1] += buckets[i] #print(buckets) for i in range(l-1,-1,-1): - n = arr[i]/c%b + n = arr[i]/c%b%bucket_size buckets[n] -= 1 arr_new[buckets[n]] = arr[i] arr = arr_new @@ -50,8 +49,13 @@ def digital(num): arr = np.arange(num_bins) random.shuffle(arr) print("原数组array:\n{}".format(arr)) + try: + bucket_size = int(raw_input('please input the number of buckets (default is 10):\n')) + except Exception as e: + print(str(e)) + bucket_size = 10 t0 = time.time() - arr1 = Radix_sort(arr,count) + arr1 = Radix_sort(arr,count,bucket_size) print("排序后:\n{}".format(arr1)) t1 = time.time() T = t1 - t0 From fcd760ba88770f8202c66d45e4713c4573651feb Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 22 Apr 2020 00:47:26 +0800 Subject: [PATCH 068/270] links --- README.md | 2 + pytree.html | 145 ++++++++++++++++++++++++++++++++++++++++++++++++++++ pytree.txt | 100 ++++++++++++++++++++++++++++++++++++ 3 files changed, 247 insertions(+) create mode 100644 pytree.html create mode 100644 pytree.txt diff --git a/README.md b/README.md index 53380ed..ec7f31e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ # Python_repository My python code_repository in the learning ,which have Amazon'get_image,price,feedback,and so on. You can learn a third lib of python which are `requests`,`xlrd`,`xlwt`,`xlxswriter`,`xlutils`,and python module like re,os,datetime.Regular Expression is also good in many program + + \ No newline at end of file diff --git a/pytree.html b/pytree.html new file mode 100644 index 0000000..2527c14 --- /dev/null +++ b/pytree.html @@ -0,0 +1,145 @@ + + + + + + + Directory Tree + + + +

    Directory Tree

    +

    + +12 directories, 86 files +

    +

    +
    +

    + tree v1.8.0 © 1996 - 2018 by Steve Baker and Thomas Moore
    + HTML output hacked and copyleft © 1998 by Francesc Rocher
    + JSON output hacked and copyleft © 2014 by Florian Sesser
    + Charsets / OS/2 support © 2001 by Kyosuke Tokoro +

    + + diff --git a/pytree.txt b/pytree.txt new file mode 100644 index 0000000..280f958 --- /dev/null +++ b/pytree.txt @@ -0,0 +1,100 @@ +. +├── AWS +│   ├── AWSRegister.py +│   ├── AWS_captchaImage.py +│   ├── AWSsellerxt.py +│   ├── AddtoCart.py +│   ├── Amazozn_email.py +│   ├── Get_AmazonProducts_num.py +│   ├── Get_Amazon_products_num.py +│   ├── Get_Amazon_tag.py +│   ├── Get_description.py +│   ├── Get_questions.py +│   ├── PyAWS_Store_Reviews.py +│   ├── __init__.py +│   ├── amazon.py +│   ├── amazon_cn.py +│   ├── amazon_us.py +│   ├── captchaImg_sso.py +│   ├── get_dimensions.py +│   ├── get_feedbacknum.py +│   ├── get_img.py +│   ├── get_ppc.py +│   └── get_ranks.py +├── Apply_for_Job +│   ├── 51job.py +│   └── requirements.txt +├── CV +│   ├── PDF_to_EPUB +│   │   ├── pdf_to_epub.py +│   │   └── requirements.txt +│   ├── Patch_CAPTCHA.py +│   ├── __init__.py +│   ├── curve_fit_func.py +│   ├── nihe1.png +│   ├── png_to_SVG.py +│   └── png_to_SVG.pyc +├── Calculus +│   └── Taylor.py +├── Google_Sample +│   ├── CUS_Yuntuexpress.py +│   ├── Google_tranJS.py +│   ├── Google_translate_js_API.py +│   └── __init__.py +├── Grapgh\ Theory +│   ├── BFS.py +│   ├── DFS.py +│   ├── Dijkstra.py +│   ├── KMP.py +│   └── __init__.py +├── Leetcode +│   ├── leetcode-1137-n-th-tribonacci-number.py +│   ├── leetcode-69-sqrtx.py +│   └── leetcode-938-range-sum-of-bst.py +├── Logistics_get_17track.py +├── Pygame +│   ├── 1.py +│   ├── 2.py +│   ├── 3.py +│   ├── 4.py +│   └── 5.py +├── README.md +├── Rename.py +├── Sorting_Algorithms +│   ├── Binary_search.py +│   ├── Bubble_sort.py +│   ├── Bucket_sort.py +│   ├── Heap_sort.py +│   ├── Insertion_sort.py +│   ├── Merge_sort.py +│   ├── Quick_sort.py +│   ├── Radix_sort.py +│   ├── Select_sort.py +│   ├── Shell_sort.py +│   ├── __init__.py +│   ├── counting_sort.py +│   ├── hashsort.py +│   └── listsort.txt +├── Trees +├── __init__.py +├── bilibili +│   ├── README.md +│   ├── __init__.py +│   ├── bilibili_rank.sh +│   ├── bilibili_ranking_data_everyday.py +│   ├── log +│   ├── log.err +│   └── requirements.txt +├── covid-19.py +├── csv_to_xls.py +├── dijkstra.py +├── get-pip.py +├── keywords_find.py +├── pneumonia.py +├── postTocart.py +├── price正\210\231.txt +├── pytree.txt +├── taobaoSEO_keyword.pyc +└── xt.py + +12 directories, 85 files From 4295ab912e2db5e2775f74df18a0f4e8f0ce25eb Mon Sep 17 00:00:00 2001 From: Toryun Date: Wed, 22 Apr 2020 00:50:33 +0800 Subject: [PATCH 069/270] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ec7f31e..241651d 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,4 @@ My python code_repository in the learning ,which have Amazon'get_image,price,feedback,and so on. You can learn a third lib of python which are `requests`,`xlrd`,`xlwt`,`xlxswriter`,`xlutils`,and python module like re,os,datetime.Regular Expression is also good in many program - \ No newline at end of file + From b2ea6684708da5a19dbf460ea0ebe67ed67490f1 Mon Sep 17 00:00:00 2001 From: Toryun Date: Wed, 22 Apr 2020 00:52:26 +0800 Subject: [PATCH 070/270] Update README.md --- README.md | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 144 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 241651d..2527c14 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,145 @@ -# Python_repository -My python code_repository in the learning ,which have Amazon'get_image,price,feedback,and so on. -You can learn a third lib of python which are `requests`,`xlrd`,`xlwt`,`xlxswriter`,`xlutils`,and python module like re,os,datetime.Regular Expression is also good in many program + + + + + + + Directory Tree + + + +

    Directory Tree

    + https://github.com/YoTro/Python_repository
    + ├── AWS
    + │   ├── AWSRegister.py
    + │   ├── AWS_captchaImage.py
    + │   ├── AWSsellerxt.py
    + │   ├── AddtoCart.py
    + │   ├── Amazozn_email.py
    + │   ├── Get_AmazonProducts_num.py
    + │   ├── Get_Amazon_products_num.py
    + │   ├── Get_Amazon_tag.py
    + │   ├── Get_description.py
    + │   ├── Get_questions.py
    + │   ├── PyAWS_Store_Reviews.py
    + │   ├── __init__.py
    + │   ├── amazon.py
    + │   ├── amazon_cn.py
    + │   ├── amazon_us.py
    + │   ├── captchaImg_sso.py
    + │   ├── get_dimensions.py
    + │   ├── get_feedbacknum.py
    + │   ├── get_img.py
    + │   ├── get_ppc.py
    + │   └── get_ranks.py
    + ├── Apply_for_Job
    + │   ├── 51job.py
    + │   └── requirements.txt
    + ├── CV
    + │   ├── PDF_to_EPUB
    + │   │   ├── pdf_to_epub.py
    + │   │   └── requirements.txt
    + │   ├── Patch_CAPTCHA.py
    + │   ├── __init__.py
    + │   ├── curve_fit_func.py
    + │   ├── nihe1.png
    + │   ├── png_to_SVG.py
    + │   └── png_to_SVG.pyc
    + ├── Calculus
    + │   └── Taylor.py
    + ├── Google_Sample
    + │   ├── CUS_Yuntuexpress.py
    + │   ├── Google_tranJS.py
    + │   ├── Google_translate_js_API.py
    + │   └── __init__.py
    + ├── Grapgh Theory
    + │   ├── BFS.py
    + │   ├── DFS.py
    + │   ├── Dijkstra.py
    + │   ├── KMP.py
    + │   └── __init__.py
    + ├── Leetcode
    + │   ├── leetcode-1137-n-th-tribonacci-number.py
    + │   ├── leetcode-69-sqrtx.py
    + │   └── leetcode-938-range-sum-of-bst.py
    + ├── Logistics_get_17track.py
    + ├── Pygame
    + │   ├── 1.py
    + │   ├── 2.py
    + │   ├── 3.py
    + │   ├── 4.py
    + │   └── 5.py
    + ├── README.md
    + ├── Rename.py
    + ├── Sorting_Algorithms
    + │   ├── Binary_search.py
    + │   ├── Bubble_sort.py
    + │   ├── Bucket_sort.py
    + │   ├── Heap_sort.py
    + │   ├── Insertion_sort.py
    + │   ├── Merge_sort.py
    + │   ├── Quick_sort.py
    + │   ├── Radix_sort.py
    + │   ├── Select_sort.py
    + │   ├── Shell_sort.py
    + │   ├── __init__.py
    + │   ├── counting_sort.py
    + │   ├── hashsort.py
    + │   └── listsort.txt
    + ├── Trees
    + ├── __init__.py
    + ├── bilibili
    + │   ├── README.md
    + │   ├── __init__.py
    + │   ├── bilibili_rank.sh
    + │   ├── bilibili_ranking_data_everyday.py
    + │   ├── log
    + │   ├── log.err
    + │   └── requirements.txt
    + ├── covid-19.py
    + ├── csv_to_xls.py
    + ├── dijkstra.py
    + ├── get-pip.py
    + ├── keywords_find.py
    + ├── pneumonia.py
    + ├── postTocart.py
    + ├── price正则.txt
    + ├── pytree.html
    + ├── pytree.txt
    + ├── taobaoSEO_keyword.pyc
    + └── xt.py
    +

    +

    +

    - +12 directories, 86 files +

    +

    +
    +

    + tree v1.8.0 © 1996 - 2018 by Steve Baker and Thomas Moore
    + HTML output hacked and copyleft © 1998 by Francesc Rocher
    + JSON output hacked and copyleft © 2014 by Florian Sesser
    + Charsets / OS/2 support © 2001 by Kyosuke Tokoro +

    + + From 4eb4d8ab23e02ebcdb094e269b665a1ed78d32f9 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 22 Apr 2020 15:28:12 +0800 Subject: [PATCH 071/270] update radix --- .DS_Store | Bin 14340 -> 14340 bytes Sorting_Algorithms/Radix_sort.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.DS_Store b/.DS_Store index 0ceee88f3f56131183e14f3e7d4eba86f2aa5119..e0a64bab0355d8ac4ce3d75223e13e945fcbddca 100644 GIT binary patch delta 29 jcmZoEXeroWr#AVx#M#YU>Ip2Hv$ZdCfq0X-)PDj1y>bku delta 37 ncmZoEXeroWr#3lT`po3T>VlhP)csjDXK7#If{9F)QGW>l9 Date: Wed, 22 Apr 2020 19:09:15 +0800 Subject: [PATCH 072/270] binary search tree --- .DS_Store | Bin 14340 -> 14340 bytes Trees/BST.py | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100644 Trees/BST.py diff --git a/.DS_Store b/.DS_Store index e0a64bab0355d8ac4ce3d75223e13e945fcbddca..4bec8d93dbbd439e994bb14ee2615d9d389a6491 100644 GIT binary patch delta 62 zcmV-E0Kxx+aD;HM783!=lfV>!3>kZSF*PzQAT2a8G?Sqd9RZq?aTy;0o3q~&Dh#s= UAYKcTyA;r~Hyq9bvj;H!2a{|SDF6Tf delta 35 rcmZoEXernrCOrA3z=h2(gq3+Vb1EcoPu?$bZnLG#1?J7{27lQB3MmdR diff --git a/Trees/BST.py b/Trees/BST.py new file mode 100644 index 0000000..c25c351 --- /dev/null +++ b/Trees/BST.py @@ -0,0 +1,103 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-22 17:57:00 +#Function: Create Binary tree and search tree +import random + +class treenode(): + '''定义结构体:子树''' + def __init__(self,x): + self.value = x + self.left = None + self.right = None + +class BinaryTree(): + def __init__(self,root): + '''初始化一个根节点''' + self.root = None + def add(self,x): + '''添加左(右)节点''' + + if self.root is None: + self.root = treenode(x) + else: + '''广度优先遍历添加节点''' + queue = [] + queue.append(self.root) + while len(queue) > 0: + node = queue.pop(0) + if not node.left: + node.left = treenode(x) + return + else: + queue.append(node.left) + if not node.right: + node.right = treenode(x) + return + else: + queue.append(node.right) + def DFS(self): + '''deep fisrt search''' + if self.root: + stack = [] + stack.append(self.root) + while len(stack)>0: + node = stack.pop() + print node.value, + if node.left: + stack.append(node.left) + if node.right: + stack.append(node.right) + else: + return + def BFS(self): + '''Breadth-first-search''' + if self.root is None: + return + queue = [] + queue.append(self.root) + while len(queue) > 0: + node = queue.pop(0) + print node.value, + if node.left: + queue.append(node.left) + print "left{}".format(node.left.value) + if node.right: + queue.append(node.right) + + def NLR(self,root): + '''Pre-order''' + if root: + print root.value, + self.NLR(root.left) + self.NLR(root.right) + def LNR(self,root): + '''In-order''' + if root: + self.LNR(root.left) + print root.value, + self.LNR(root.right) + def LRN(self,root): + '''Post-order''' + if root: + self.LRN(root.left) + self.LRN(root.right) + print root.value, + +if __name__ =='__main__': + btree = BinaryTree(None) + l = [x for x in range(random.randrange(1,50))] + for i in range(len(l)): + btree.add(l[i]) + print("深度优先遍历:\n") + btree.DFS() + print("\n广度优先遍历:\n") + btree.BFS() + print("\n前序遍历:\n") + btree.NLR(btree.root) + print("\n中序遍历:\n") + btree.LNR(btree.root) + print("\n后序遍历:\n") + btree.LRN(btree.root) + + From 0c93e019e9984b460e3884f9649aff2f4b6f2071 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 23 Apr 2020 02:17:34 +0800 Subject: [PATCH 073/270] Create Zeller.py --- Calculus/Zeller.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Calculus/Zeller.py diff --git a/Calculus/Zeller.py b/Calculus/Zeller.py new file mode 100644 index 0000000..04635a0 --- /dev/null +++ b/Calculus/Zeller.py @@ -0,0 +1,33 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-23 01:31:00 +#Function: Zeller's congruence +#latex:\begin{align} D &= \left[ \frac{c}{4} \right] - 2c + y + \left[ \frac{y}{4} \right] + \left[ \frac{13(m+1)}{5} \right] + d - 1 \\[2ex] W &= D \bmod 7 \end{align} \\ + +import math +import datetime + +def Zeller(y, m, d): + ''' + c:centry + y:year + m:month + d:day + w:week + ''' + c = y/100%100 + y = y/10%10*10+y%10 + M = [0, 13, 14, 3, 4, 5, 6, 7, 8, 9, 10,11,12] + m = M[m] + w = ((c/4) - 2*c + y + (y/4) + (13*(m+1)/5) + d - 1)%7 + print "((c/4) - 2*c + y + (y/4) + (13*(m+1)/5) + d - 1)%7\n=({}-{}+{}+{}+{}-{})%7\n={}".format(c/4 ,2*c, y ,(y/4) ,(13*(m+1)/5) ,d,w) + return w + +if __name__ == '__main__': + day0 = datetime.datetime.now() + year0 = day0.year + month0 = day0.month + day0 = day0.day + print year0, month0, day0 + w = Zeller(year0, month0, day0) + print("今日是星期{}".format(w)) From 59ce87dfd4b19caec9fa421cae9d3fa4001b14a9 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 23 Apr 2020 13:32:38 +0800 Subject: [PATCH 074/270] Update BST.py --- Trees/BST.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Trees/BST.py b/Trees/BST.py index c25c351..4541e7a 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -26,16 +26,18 @@ def add(self,x): queue.append(self.root) while len(queue) > 0: node = queue.pop(0) - if not node.left: + if not node.left:#表示左节点为空节点 node.left = treenode(x) return else: queue.append(node.left) + #print " left {}".format(str(node.left.value)) if not node.right: node.right = treenode(x) return else: queue.append(node.right) + #print " right {}".format(str(node.right.value)) def DFS(self): '''deep fisrt search''' if self.root: @@ -44,10 +46,11 @@ def DFS(self): while len(stack)>0: node = stack.pop() print node.value, + if node.right: + stack.append(node.right) if node.left: stack.append(node.left) - if node.right: - stack.append(node.right) + else: return def BFS(self): @@ -61,9 +64,10 @@ def BFS(self): print node.value, if node.left: queue.append(node.left) - print "left{}".format(node.left.value) + #print "left{}".format(node.left.value), if node.right: queue.append(node.right) + #print "right{}".format(node.right.value), def NLR(self,root): '''Pre-order''' @@ -86,7 +90,8 @@ def LRN(self,root): if __name__ =='__main__': btree = BinaryTree(None) - l = [x for x in range(random.randrange(1,50))] + l = [x for x in range(random.randrange(1,10))] + l = [0 ,2 ,6 ,5 ,1 ,None,4 ,3 ,7 ] for i in range(len(l)): btree.add(l[i]) print("深度优先遍历:\n") From 8be1d61d795b1ca1003b35aa05ce93819062c3b0 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 23 Apr 2020 17:08:26 +0800 Subject: [PATCH 075/270] Update BST.py --- Trees/BST.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Trees/BST.py b/Trees/BST.py index 4541e7a..d09e41b 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -43,14 +43,16 @@ def DFS(self): if self.root: stack = [] stack.append(self.root) + #p = [] while len(stack)>0: node = stack.pop() + #p.append(node.value) print node.value, if node.right: stack.append(node.right) if node.left: stack.append(node.left) - + #print p else: return def BFS(self): @@ -58,9 +60,12 @@ def BFS(self): if self.root is None: return queue = [] + queue.append(self.root) while len(queue) > 0: + p = [] node = queue.pop(0) + print node.value, if node.left: queue.append(node.left) @@ -68,9 +73,16 @@ def BFS(self): if node.right: queue.append(node.right) #print "right{}".format(node.right.value), - + for i in queue: + p.append(i.value) + print p def NLR(self,root): - '''Pre-order''' + '''Pre-order + (L) Recursively traverse N's left subtree. + (R) Recursively traverse N's right subtree. + (N) Process the current node N itself. + + ''' if root: print root.value, self.NLR(root.left) @@ -91,7 +103,7 @@ def LRN(self,root): if __name__ =='__main__': btree = BinaryTree(None) l = [x for x in range(random.randrange(1,10))] - l = [0 ,2 ,6 ,5 ,1 ,None,4 ,3 ,7 ] + l = [7 ,9 ,10,1 ,4 ,5 ,13 ] for i in range(len(l)): btree.add(l[i]) print("深度优先遍历:\n") From 84d2a35be13303aa599fcde326a3f866b30460fd Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 24 Apr 2020 16:32:17 +0800 Subject: [PATCH 076/270] Update BST.py add height of tree and insert node function of BST --- Trees/BST.py | 65 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 11 deletions(-) diff --git a/Trees/BST.py b/Trees/BST.py index d09e41b..479befa 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -1,7 +1,7 @@ #coding:UTF-8 #Author: Toryun #Date: 2020-04-22 17:57:00 -#Function: Create Binary tree and search tree +#Function: Create/delect Binary tree and search tree import random class treenode(): @@ -10,6 +10,8 @@ def __init__(self,x): self.value = x self.left = None self.right = None + self.parent = None + self.height = 0 class BinaryTree(): def __init__(self,root): @@ -28,25 +30,69 @@ def add(self,x): node = queue.pop(0) if not node.left:#表示左节点为空节点 node.left = treenode(x) + node.left.parent = node + node.left.height = 1 + node.height return else: queue.append(node.left) #print " left {}".format(str(node.left.value)) if not node.right: node.right = treenode(x) + node.right.parent = node + node.right.height = 1 + node.height return else: queue.append(node.right) #print " right {}".format(str(node.right.value)) + + + def delect(self,x): + if self.root is None: + return 0 + else: + queue = [] + queue.append(self.root) + while len(queue)>0: + node = queue.pop(0) + if node.value == x: + if node.right: + node = node.right + else: + if node.left.right: + node = node.left.right + if node.left.right.left: + node.left.right = node.left.right.left + if node.left: + node = node.left + def insert(self,x): + '''以左节点小于右节点方式做插入操作(BST)''' + if self.root is None: + self.root = treenode(x) + return + else: + stack = [] + stack.append(self.root) + while len(stack) > 0: + node = stack.pop() + if node.right and node.value <= x: + stack.append(node.right) + elif node.left and node.value > x: + stack.append(node.left) + elif not node.right and node.value <= x: + node.right = treenode(x) + node.right.height = 1 + node.height + elif not node.left and node.value > x: + node.left = treenode(x) + node.left.height = 1 + node.height def DFS(self): '''deep fisrt search''' if self.root: stack = [] stack.append(self.root) - #p = [] + p = [] while len(stack)>0: node = stack.pop() - #p.append(node.value) + p.append(node.value) print node.value, if node.right: stack.append(node.right) @@ -56,16 +102,16 @@ def DFS(self): else: return def BFS(self): - '''Breadth-first-search''' + '''Breadth-first-search/''' if self.root is None: return queue = [] - + p = [] queue.append(self.root) while len(queue) > 0: - p = [] - node = queue.pop(0) + node = queue.pop(0) + p.append(node.value) print node.value, if node.left: queue.append(node.left) @@ -73,9 +119,6 @@ def BFS(self): if node.right: queue.append(node.right) #print "right{}".format(node.right.value), - for i in queue: - p.append(i.value) - print p def NLR(self,root): '''Pre-order (L) Recursively traverse N's left subtree. @@ -105,7 +148,7 @@ def LRN(self,root): l = [x for x in range(random.randrange(1,10))] l = [7 ,9 ,10,1 ,4 ,5 ,13 ] for i in range(len(l)): - btree.add(l[i]) + btree.insert(l[i]) print("深度优先遍历:\n") btree.DFS() print("\n广度优先遍历:\n") From 966b4a31fc4d34ece79f8d24fa3e35dd1c07c7e1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 25 Apr 2020 00:24:11 +0800 Subject: [PATCH 077/270] Update BST.py --- Trees/BST.py | 58 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/Trees/BST.py b/Trees/BST.py index 479befa..fd9cdaf 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -3,6 +3,8 @@ #Date: 2020-04-22 17:57:00 #Function: Create/delect Binary tree and search tree import random +import gc#手动回收内存 +#from memory_profiler import profile#内存检测 class treenode(): '''定义结构体:子树''' @@ -45,25 +47,55 @@ def add(self,x): queue.append(node.right) #print " right {}".format(str(node.right.value)) - + def delect(self,x): if self.root is None: return 0 else: queue = [] + q = [] + tag = 0 queue.append(self.root) while len(queue)>0: node = queue.pop(0) + if node.left: + queue.append(node.left) + if node.right: + queue.append(node.right) + q.append(node) + while len(q)>0: + node = q.pop(0) if node.value == x: - if node.right: - node = node.right + tag = 1 + if (node.left==node.right==None): + print ("删除的节点值为{}".format(node.value)) + node.value = None + return + elif not node.left or not node.right: + if not node.left: + print ("删除的节点值为{},补缺的节点为{}".format(node.value,node.right.value)) + node.value = node.right.value + node.right = None + return + if not node.right: + print ("删除的节点值为{},补缺的节点为{}".format(node.value,node.left.value)) + node.value = node.left.value + node.left = None + return else: - if node.left.right: - node = node.left.right - if node.left.right.left: - node.left.right = node.left.right.left - if node.left: - node = node.left + tmp = q.pop() + while not tmp.value: + tmp = q.pop() + print ("删除的节点值为{},补缺的节点为{}".format(node.value,tmp.value)) + node.value = tmp.value + tmp.value = None + break + + if tag != 1 and len(q)==0: + #print tag + print("\nWe can't find {} in this tree".format(x)) + + def insert(self,x): '''以左节点小于右节点方式做插入操作(BST)''' if self.root is None: @@ -145,14 +177,16 @@ def LRN(self,root): if __name__ =='__main__': btree = BinaryTree(None) - l = [x for x in range(random.randrange(1,10))] - l = [7 ,9 ,10,1 ,4 ,5 ,13 ] + l = [x for x in range(random.randrange(1,20))] + #l = [0,1,2,3] for i in range(len(l)): - btree.insert(l[i]) + btree.add(l[i]) print("深度优先遍历:\n") btree.DFS() print("\n广度优先遍历:\n") btree.BFS() + btree.delect(random.choice(l)) + #btree.delect() print("\n前序遍历:\n") btree.NLR(btree.root) print("\n中序遍历:\n") From aed233b4de0dbbad21dcdb6bf623d6227a2d8b65 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 25 Apr 2020 00:42:52 +0800 Subject: [PATCH 078/270] Update BST.py add getMaxdepth() --- Trees/BST.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Trees/BST.py b/Trees/BST.py index fd9cdaf..3de12e8 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -116,6 +116,21 @@ def insert(self,x): elif not node.left and node.value > x: node.left = treenode(x) node.left.height = 1 + node.height + def getMaxdepth(self): + if self.root is None: + return 0 + else: + Max_d = [] + stack = [] + stack.append(self.root) + while len(stack) > 0: + node = stack.pop() + if node.left: + stack.append(node.left) + if node.right: + stack.append(node.right) + Max_d.append(node.height) + return max(Max_d) def DFS(self): '''deep fisrt search''' if self.root: @@ -186,6 +201,8 @@ def LRN(self,root): print("\n广度优先遍历:\n") btree.BFS() btree.delect(random.choice(l)) + Maxdepth = btree.getMaxdepth() + print("\n树的高度为{}".format( Maxdepth)) #btree.delect() print("\n前序遍历:\n") btree.NLR(btree.root) From 579f41fb455182d5cd1740a6176b7d4189e9580d Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 25 Apr 2020 16:36:07 +0800 Subject: [PATCH 079/270] Create Bezier.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 贝塞尔曲线:一阶二阶三阶 --- CV/Bezier.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 CV/Bezier.py diff --git a/CV/Bezier.py b/CV/Bezier.py new file mode 100644 index 0000000..f965c90 --- /dev/null +++ b/CV/Bezier.py @@ -0,0 +1,100 @@ +#coding:UTF-8 + +import numpy as np +import random +import matplotlib.pyplot as plt +import matplotlib.animation as animation + + + +class Bezier(): + '''贝塞尔曲线''' + def Bezier_1(self, p0, p1): + ''' + 一阶贝塞尔曲线 + p0:起始点 + p1:终点 + ''' + b1 = [] + for t in np.arange(0,1,0.001): + x = p0[0]*(1-t) + t*p1[0] + y = p0[1]*(1-t) + t*p1[1] + b1.append([x,y]) + return np.array(b1) + def Bezier_2(self, p0, p1, p2): + ''' + 二阶贝塞尔曲线 + p0:起始点 + p1:中间点 + p2:终点 + ''' + b2 = [] + for t in np.arange(0,1,0.001): + x = (1-t)*(1-t)*p0[0] + 2*t*(1-t)*p1[0] + p2[0]*t*t + y = (1-t)*(1-t)*p0[1] + 2*t*(1-t)*p1[1] + p2[1]*t*t + b2.append([x,y]) + return np.array(b2) + def Bezier_3(self,p0, p1, p2, p3): + ''' + 二阶贝塞尔曲线 + p0:起始点 + p1:中间点 + p2:中间点 + p3:终点 + ''' + b3 = [] + for t in np.arange(0,1,0.001): + x = (1-t)*(1-t)*(1-t)*p0[0] + 3*t*(1-t)*(1-t)*p1[0] + 3*t*t*(1-t)*p2[0] + p3[0]*t**3 + y = (1-t)*(1-t)*(1-t)*p0[1] + 3*t*(1-t)*(1-t)*p1[1] + 3*t*t*(1-t)*p2[1] + p3[1]*t**3 + b3.append([x,y]) + return np.array(b3) + + +def init(): + ax.set_xlim(p0[0],2) + ax.set_ylim(-2,2) + #x_ticks = np.arange(-4, 4, 0.1) + #y_ticks = np.arange(-4, 4, 0.1) + #plt.xticks(x_ticks) + #plt.xticks(y_ticks) + line1.set_data([],[]) + return line1, + +def animate(frame): + xdata.append(b1[frame][0]) + ydata.append(b1[frame][1]) + x2data.append(b2[frame][0]) + y2data.append(b2[frame][1]) + x3data.append(b3[frame][0]) + y3data.append(b3[frame][1]) + line1.set_data(xdata,ydata) + line2.set_data(x2data,y2data) + line3.set_data(x3data,y3data) + return line1, + +if __name__ == '__main__': + curve = Bezier() + '''p0 = np.random.normal(0,1,2)*2 + p1 = np.random.normal(0,1,2)*2 + p2 = np.random.normal(0,1,2)*2 + p3 = np.random.normal(0,1,2)*2''' + p0 = [-2,0] + p1 = [1,1] + p2 = [0,2] + p3 = [1,0] + print("贝塞尔曲线的四个点坐标是\n{}\n{}\n{}\n{}\n".format(p0,p1, p2, p3)) + b1 = curve.Bezier_1(p0,p1) + b2 = curve.Bezier_2(p0,p1, p2) + b3 = curve.Bezier_3(p0,p1, p2, p3) + fig, ax = plt.subplots() + xdata, ydata = [], [] + x2data,y2data = [], [] + x3data,y3data = [], [] + line1, = ax.plot([],[],'ro') + ani = animation.FuncAnimation(fig, animate,frames=np.arange(len(b1)),init_func = init,blit = True,interval = 2) + line2, = ax.plot([],[],'b-') + ani = animation.FuncAnimation(fig, animate,frames=np.arange(len(b1)),init_func = init,blit = True,interval = 2) + line3, = ax.plot([],[],'y-') + ani = animation.FuncAnimation(fig, animate,frames=np.arange(len(b1)),init_func = init,blit = True,interval = 2) + ax.legend() + plt.show() From f4c6bf76bb73f157b6681116948636b64cb6cd7b Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 25 Apr 2020 16:36:51 +0800 Subject: [PATCH 080/270] Update BST.py add mindepth of bst --- Trees/BST.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/Trees/BST.py b/Trees/BST.py index 3de12e8..cf6a24c 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -131,6 +131,24 @@ def getMaxdepth(self): stack.append(node.right) Max_d.append(node.height) return max(Max_d) + def minDepth(self, root): + """ + :type root: TreeNode + :rtype: int + """ + if not root: + return 0 + + children = [root.left, root.right] + # if we're at leaf node + if not any(children): + return 1 + + min_depth = float('inf') + for c in children: + if c: + min_depth = min(self.minDepth(c), min_depth) + return min_depth + 1 def DFS(self): '''deep fisrt search''' if self.root: @@ -202,7 +220,9 @@ def LRN(self,root): btree.BFS() btree.delect(random.choice(l)) Maxdepth = btree.getMaxdepth() - print("\n树的高度为{}".format( Maxdepth)) + print("\n树的最大深度为{}\n".format( Maxdepth)) + mindepth = btree.minDepth(btree.root) + print("\n树的最小深度为{}\n".format( mindepth)) #btree.delect() print("\n前序遍历:\n") btree.NLR(btree.root) From 783727bb9e0f35b2df937901ac11fd23283fc770 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 25 Apr 2020 16:37:13 +0800 Subject: [PATCH 081/270] Update .DS_Store --- .DS_Store | Bin 14340 -> 14340 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index 4bec8d93dbbd439e994bb14ee2615d9d389a6491..b72c4f5abde698570fdde15259f3d375895fb0d0 100644 GIT binary patch delta 126 zcmZoEXerq6QJUStKu5vI*nG0SqU_`cS}L0@Wmvf;-xO#;mzca*U2wCE`T}M&iO$J; SL^{#LfTrl+Hf6Gm`bz+-RVLs7 delta 50 zcmZoEXerq6QF?N$pvPuQ8CI^zCne5q=2G9t3=)~lterY}ugHbXmO2ob$z19`0r}Mv ArT_o{ From edd1b58abc60b3b4d6c3ebb6202bb49e4ef1f88f Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 02:41:05 +0800 Subject: [PATCH 082/270] update leetcode 6 questions --- ...ode-121-best-time-to-buy-and-sell-stock.py | 21 ++++++ Leetcode/leetcode-15-3sum.py | 42 +++++++++++ Leetcode/leetcode-231-power-of-two.py | 6 ++ ...-substring-without-repeating-characters.py | 22 ++++++ .../leetcode-633-sum-of-square-numbers.py | 21 ++++++ Leetcode/leetcode-65-valid-number.py | 69 +++++++++++++++++++ 6 files changed, 181 insertions(+) create mode 100644 Leetcode/leetcode-121-best-time-to-buy-and-sell-stock.py create mode 100644 Leetcode/leetcode-15-3sum.py create mode 100644 Leetcode/leetcode-231-power-of-two.py create mode 100644 Leetcode/leetcode-3-longest-substring-without-repeating-characters.py create mode 100644 Leetcode/leetcode-633-sum-of-square-numbers.py create mode 100644 Leetcode/leetcode-65-valid-number.py diff --git a/Leetcode/leetcode-121-best-time-to-buy-and-sell-stock.py b/Leetcode/leetcode-121-best-time-to-buy-and-sell-stock.py new file mode 100644 index 0000000..4c0d750 --- /dev/null +++ b/Leetcode/leetcode-121-best-time-to-buy-and-sell-stock.py @@ -0,0 +1,21 @@ +import math +def maxProfit( prices): + """ + :type prices: List[int] + :rtype: int + """ + if len(prices) == 0 or len(prices) == 1: + return 0 + minprice = int(1e9) + maxprice = 0 + for i in prices: + + maxprice = max(i - minprice,maxprice) + minprice = min(minprice,i) + print i,maxprice,minprice + return maxprice + +if __name__ =='__main__': + nums = [2,4,1,4,6,8,4] + w = maxProfit(nums) + print w diff --git a/Leetcode/leetcode-15-3sum.py b/Leetcode/leetcode-15-3sum.py new file mode 100644 index 0000000..388faa5 --- /dev/null +++ b/Leetcode/leetcode-15-3sum.py @@ -0,0 +1,42 @@ +class Solution(object): + def threeSum(self, nums): + """ + :type nums: List[int] + :rtype: List[List[int]] + """ + nums.sort() + print nums + a = nums[0] + c = nums[-1] + if a>0 or c<0: + return [] + p = [] + i = 0 + for i in range(len(nums)): + if nums[i]>0: + return p + if (i > 0 and nums[i] == nums[i-1]): + continue + L = i+1 + R = len(nums)-1 + while L0: + R -= 1 + else: + L += 1 + + return p +if __name__ =='__main__': + asd = Solution() + nums = [-1,0,1,2,-1,-4] + w = asd.threeSum(nums) + print w diff --git a/Leetcode/leetcode-231-power-of-two.py b/Leetcode/leetcode-231-power-of-two.py new file mode 100644 index 0000000..de46e48 --- /dev/null +++ b/Leetcode/leetcode-231-power-of-two.py @@ -0,0 +1,6 @@ +class Solution(object): + '''位运算,2的幂的规律是所有数在二进制中都只还有一个1其余都是0''' + def isPowerOfTwo(self, n): + if n == 0: + return False + return n & (-n) == n diff --git a/Leetcode/leetcode-3-longest-substring-without-repeating-characters.py b/Leetcode/leetcode-3-longest-substring-without-repeating-characters.py new file mode 100644 index 0000000..2195250 --- /dev/null +++ b/Leetcode/leetcode-3-longest-substring-without-repeating-characters.py @@ -0,0 +1,22 @@ +def lengthOfLongestSubstring( s): + if not s:return 0 + left = 0 + lookup = set() + n = len(s) + max_len = 0 + cur_len = 0 + for i in range(n): + cur_len += 1 + print lookup + while s[i] in lookup: + lookup.remove(s[left]) + left += 1 + cur_len -= 1 + if cur_len > max_len:max_len = cur_len + lookup.add(s[i]) + return max_len + +if __name__ == '__main__': + s = "bcbababc" + l = lengthOfLongestSubstring( s) + print l diff --git a/Leetcode/leetcode-633-sum-of-square-numbers.py b/Leetcode/leetcode-633-sum-of-square-numbers.py new file mode 100644 index 0000000..c06ac58 --- /dev/null +++ b/Leetcode/leetcode-633-sum-of-square-numbers.py @@ -0,0 +1,21 @@ + +import math +c = int(raw_input("please input a interger :\n")) +def judgeSquareSum( c): + """ + :type c: int + :rtype: bool + """ + x = [i for i in range(int(math.sqrt(c)+1))] + for i in x: + if c < pow(i,2): + break + y = math.sqrt(c - pow(i,2)) + #print y + b = True + if math.modf(y)[0] == 0: + return b + else: + if i > c: + return False + diff --git a/Leetcode/leetcode-65-valid-number.py b/Leetcode/leetcode-65-valid-number.py new file mode 100644 index 0000000..8dd607e --- /dev/null +++ b/Leetcode/leetcode-65-valid-number.py @@ -0,0 +1,69 @@ +class machine(): + '''有限状态机DFS''' + def __init__(self): + self.state = [x for x in range(9)] + def state(self): + return self.state + + def isNumber(self, s): + """ + :type s: str + :rtype: bool + 一. 为什么会有9种状态 + -1 其它 + 0 空格 + 1 +/- + 2 小数点 + 3 小数位 + 4 E + 5 E后位的数 + 6 数字 + 7 科学计数法E后的+/- + 8 代表末位的空格 + 二. 特别的数字 + '1.' 等于 1.0 + '+.9e8'或者'-.9e8'也是数字 + """ + b = ' '# 32 + positive_symbol = '+'#43 + nagtive_symbol = '-'#45 + number = '9' + is_numbers = [chr(i) for i in range(48,58)] + dot = '.'#46 + E = 'e'#101 + other = '-1' + others = [32,43,45,46,101] + dfa = { b: [0,-1,-1,8,-1,8,8,-1,8], + positive_symbol:[1,-1,-1,-1,7,-1,-1,-1,-1], + nagtive_symbol: [1,-1,-1,-1,7,-1,-1,-1,-1], + number: [6,6,3,3,5,5,6,5,-1], + dot: [2,2,-1,-1,-1,-1,3,-1,-1], + E: [-1,-1,-1,4,-1,-1,4,-1,-1], + other: [-1,-1,-1,-1,-1,-1,-1,-1,-1] + } + start = self.state[0] + #print dfa + for i in s: + if i in is_numbers: + i = number + if ord(i) not in range(48,58): + if ord(i) not in others: + i = other + start = dfa[i][start] + print i,start + if start == -1: + + return False + if start == 3 or start == 6 or start == 8 or start == 5: + return True + else: + return False + + + + +if __name__ == '__main__': + machine = machine() + s = "0" + t = machine.isNumber(s) + print t From e7197ccf910b8c53709e5b2fb4f7e2962d851c97 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 02:41:27 +0800 Subject: [PATCH 083/270] Update Taylor.py math.factorial() --- Calculus/Taylor.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Calculus/Taylor.py b/Calculus/Taylor.py index 38949eb..cf386b4 100644 --- a/Calculus/Taylor.py +++ b/Calculus/Taylor.py @@ -25,6 +25,7 @@ def __init__(self): def Factorial_N(self,i): '''Factorial of N N的阶乘 你可以使用sympy自带的阶乘计算函数sympy.factorial(n) + 或者math.factorial(n) ''' b = 1 l = [] From 83142c20a7700445df030b86b15f113de3c2cb41 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 02:41:39 +0800 Subject: [PATCH 084/270] Create .DS_Store --- Leetcode/.DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Leetcode/.DS_Store diff --git a/Leetcode/.DS_Store b/Leetcode/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..38023adcc5c4b29f4a243700e6a07a1533f6b378 GIT binary patch literal 6148 zcmeHKNlHUO5Phvdf^Gr|y8Ii_O@t5}f-XKGE?j#7lb;xcn8XaIyT9=cUcvKu0DV>6 zN``hTL8_qo^;FXf{W}f7)u-(WPy$e-3KllmL`2p_mt-x>Y!IFL$S^<~9h5=eCdPm< zu;L8J**!pyXSRb0X3uX0Rh;r9_o)-yX*$oLXN zzL&Es#v{EhMB0f)ss+y@X8jz?SecytJ(7r@8uLA)C#hdJlMLsx_ngLlsrQ9EIW$>G z26$(S6t_HDYYZ3z#=s8)@_k6Cf@#3qqkcNr=o5fg;Is<+@|F;rBw!ja_sA8B^QJ^^ z>cSJld2`MuVP6_B_vp>x!sEk*$S%B4oJObrM7P7G9<4P7jDdLu*8Q*~_y6VZ@Beut z8yN$}z`tU^6&lx#I!g+7>r!!Y*Cx~(s)+2%J*o+ta2;z$uHrqa3fB_p5YvFUN6t{} OkATu(jWO`241595vy{I8 literal 0 HcmV?d00001 From f7db6136b5540472eff54fc12242ccdf0ec2613e Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 02:42:04 +0800 Subject: [PATCH 085/270] Create .DS_Store --- bilibili/.DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 bilibili/.DS_Store diff --git a/bilibili/.DS_Store b/bilibili/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..dd09fa436228cec4da8acda141b5d26d8f14775e GIT binary patch literal 6148 zcmeHKJx>Bb5Pb_INN6Z6&(4ZyZF3SRENt`#pa?-C9}0(&?i&Atf5G49570NWD>?SG zGsc)1GW+)C<}Gt?FSok@TxUHz23i32=z^67n=ef6idno3D;MxXPkR%B;*LKg8wry`%1W~P8CU<&-O z0$j7j_L?58H3duoQ(&urd><0JU>Y#@sGkltdITWW7*=Cnwqe3a0;U0TkGw;3o=Wso z7mgUt(-}`fUK%j>=;?6b@ZrKgyKq9$O&~K}!iMHj1#3(JQy@~H>aSa}{`bB=|3@sl zGzCn7|D=GcbuYUeK2ca(OV1{2Z9>1Ii%DMYaZ6!GmtyA1QoK)BV?2=#F%6h|WQ1lL N0hPfTQ{Yz>_yGTlck%!L literal 0 HcmV?d00001 From 2350c33631f71ff57b0d888bf5cc3284c8a03a0b Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 02:42:14 +0800 Subject: [PATCH 086/270] Update .DS_Store --- .DS_Store | Bin 14340 -> 14340 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index b72c4f5abde698570fdde15259f3d375895fb0d0..37d4c56aff7096bd22c75e5a5cfc091479d14887 100644 GIT binary patch delta 787 zcmZoEXepTB<ZkU^hRb$z~pbDi#so9Byj?>r-iIL-2um1}8S)uY7*aEn%L<|EBXh0YO49XA&0|SQuV@O_NZYn3IvV%8N zkb^;$!J5H^!IvS4p^%}&g<%TA0*18=hZxQ<++ujc@Pm<&k&987QIt`RQJzteQH@cZ z5o$0KBh&~fnE4Qz(QtE@s6F%KTY_g%M uIAio=PgUj3T0@bD2@wF~kkh#U delta 173 zcmZoEXepTB<TiU^hRb(PkcjDwfIXM64&<=(J4UC+ji!v$){q9C2;t$uC7(*^MoA z6pSp5Cx29vojgfYW%3kh)y*B!W=xY0=y+^qlVfGt*l?DSQDZZY!gtom+G_hj;*(7@ y1t%+Neg+!Q!eL@yq@!SHYzj3&Z8DoS|K^WcHB6He)jE+(Imx)0-QW+p87~2oc0BO_ From 355af8c91bdee914278cd43cb059c7f0637a69e1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 04:01:30 +0800 Subject: [PATCH 087/270] Create leetcode-441-arranging-coins.py --- Leetcode/leetcode-441-arranging-coins.py | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Leetcode/leetcode-441-arranging-coins.py diff --git a/Leetcode/leetcode-441-arranging-coins.py b/Leetcode/leetcode-441-arranging-coins.py new file mode 100644 index 0000000..16c5b33 --- /dev/null +++ b/Leetcode/leetcode-441-arranging-coins.py @@ -0,0 +1,35 @@ +import random +class Solution(object): + def arrangeCoins(self, n): + """ + :type n: int + :rtype: int + """ + c = 0 + k = 0 + while c n: + k -= 1 + + return k + def Arithmetic(self, n): + '''等差数列公式 + i 为层数 + n 为硬币总数 + n = i(2-1+i)/2 + 配合一元二次方程组求根公式 + x = -b+-(sqrt(b^2-4ac))/2a + + ''' + s1 = (((1+8*n)**0.5)-1)/2 + print int(s1) + +if __name__ =='__main__': + Coin = Solution() + n = random.randrange(10000) + w = Coin.arrangeCoins(n) + Coin.Arithmetic( n) + print w From ce9cb21de5b4bf6f927a4f12238a5dbd8a126e1f Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 28 Apr 2020 16:28:45 +0800 Subject: [PATCH 088/270] Create leetcode-202-happy-number.py --- Leetcode/leetcode-202-happy-number.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Leetcode/leetcode-202-happy-number.py diff --git a/Leetcode/leetcode-202-happy-number.py b/Leetcode/leetcode-202-happy-number.py new file mode 100644 index 0000000..91b1520 --- /dev/null +++ b/Leetcode/leetcode-202-happy-number.py @@ -0,0 +1,27 @@ +class Solution(object): + def isHappy(self, n): + """ + :type n: int + :rtype: bool + """ + tmp = 4 + while n>3: + l = len(str(n)) + c = 0 + for i in range(l): + c += (n/10**i%10)**2 + n = c + if tmp == n: + return False + print(n) + if n == 1: + return n + else: + return False + +if __name__ == '__main__': + happy = Solution() + n = random.randrange(100) + #n = 6 + t = happy.isHappy(n) + print(t) From c22cf8e632f0ea79a4b70523795c598827f8b290 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 29 Apr 2020 03:18:48 +0800 Subject: [PATCH 089/270] interpolate func --- CV/.DS_Store | Bin 6148 -> 6148 bytes CV/curve_fit_func.py | 6 ++++-- CV/nihe1.png | Bin 0 -> 52081 bytes Calculus/interplotate_all.py | 21 +++++++++++++++++++++ 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 CV/nihe1.png create mode 100644 Calculus/interplotate_all.py diff --git a/CV/.DS_Store b/CV/.DS_Store index 8b5e4505f3cde9be991996749164f671769f14df..37d24268b18d568781a8520354b781e6b67267bf 100644 GIT binary patch delta 90 zcmZoMXfc@J&&aniU^g=(-((&ZOI}U}Cx%ppDuzrTSu|OJMU+*Xfq`MhW-AtPM#htq ugIF85B&w^;EKPJ2j4UVLW|d={Ir$f>Jmaj%3)rMKo3Jfl+|17LmmdJ=-xtjQ delta 68 zcmV-K0K5N$FoZCWPXP_FP`d*G4U-H6IkR^J3;_YilY|9;2^V{NG%ze6GBT461|9*J alPv}x0hyCt1sbzw2A~0vfHSiP2>lP0@e_#v diff --git a/CV/curve_fit_func.py b/CV/curve_fit_func.py index cb12aad..b1dd25b 100644 --- a/CV/curve_fit_func.py +++ b/CV/curve_fit_func.py @@ -1,6 +1,8 @@ import numpy as np import matplotlib.pyplot as plt import png_to_SVG +#from scipy.interpolate import lagrange #拉格朗日插值法 + class curve_fit_func(): def curvefunc(self): @@ -13,9 +15,9 @@ def curvefunc(self): #y1 = np.array(num1) #y2 = np.array(num2) y = np.array(Y) - + #np.fft.fft(lagrange(x,y)(10)) #用3次多项式拟合 - f1 = np.polyfit(x, y, 53) + f1 = np.polyfit(x, y, 50) p1 = np.poly1d(f1) #print(p1)#打印出拟合函数 yvals1 = p1(x) #拟合y值 diff --git a/CV/nihe1.png b/CV/nihe1.png new file mode 100644 index 0000000000000000000000000000000000000000..14849343a58a70087cc0891a206437f6e01bd23b GIT binary patch literal 52081 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 Vqkiql{z1amNhJ+(wt|t@{{nRN_R;_V literal 0 HcmV?d00001 diff --git a/Calculus/interplotate_all.py b/Calculus/interplotate_all.py new file mode 100644 index 0000000..38748e9 --- /dev/null +++ b/Calculus/interplotate_all.py @@ -0,0 +1,21 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-04-29 1:54:00 +#Function: all interpolate func + +from scipy.interpolate import interp1d +import numpy as np +import pylab as plt + +n = 100 +x = np.arange(n) +y = np.sin(x) +kinds = ['linear', 'nearest', 'zero', 'slinear', 'quadratic', 'previous', 'next', 'zero', 'slinear', 'quadratic' ] +x0 = np.linspace(0,10,1010) +for kind in kinds: + f = interp1d(x,y,kind,fill_value="extrapolate") + y0 = f(x0) + plt.plot(x0,y0,label=str(kind)) +plt.legend(loc="lower right") +plt.show() + From bce5aad68f97980e70255f4bfd49770583c75eaf Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 29 Apr 2020 03:24:28 +0800 Subject: [PATCH 090/270] change Rename to InsertimgExcel --- Rename.py => InsertimgExcel.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Rename.py => InsertimgExcel.py (100%) diff --git a/Rename.py b/InsertimgExcel.py similarity index 100% rename from Rename.py rename to InsertimgExcel.py From 364005cfa6f9541478ffb6716a5644a3ddf9600b Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 1 May 2020 06:23:36 +0800 Subject: [PATCH 091/270] add levelordersearch and hashpathsum --- Trees/.DS_Store | Bin 0 -> 6148 bytes Trees/BST.py | 60 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 Trees/.DS_Store diff --git a/Trees/.DS_Store b/Trees/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bfd67a3e4e2996db2c4f1fa2274a9cd8bb6250ac GIT binary patch literal 6148 zcmeHKyG{c!5FA5K%xtxMgh7=L6IovuH#$yN|=3saye)z&}_6j z_Il@>o8s06P`a1Lb6^f&N;kxtg|XSX`N$43V_5tdTRic1hG)Evs((%xcZN&c;Rd(Z z;a{&e53BWN#dZ60@AT6TH;#ZKbXbz%d+pU;?A1C!K?+C#DIf);fD~{A*t5;1$AOAc zKnh5KZw2i8Q0ay(u@Cf52ZJ5oZGB>B#5_INk*0sbw zFz6`0GoOCEqW^OLACfea0#e{#DNrVh<)Y&& yWp5q5ob}pDzo&m0YrULda0uYUTJgzFU9~amT4EpQbmpB-)Iq>>kx7BSP~a04nkG^J literal 0 HcmV?d00001 diff --git a/Trees/BST.py b/Trees/BST.py index cf6a24c..cd93003 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -48,7 +48,7 @@ def add(self,x): #print " right {}".format(str(node.right.value)) - def delect(self,x): + def delete(self,x): if self.root is None: return 0 else: @@ -116,6 +116,22 @@ def insert(self,x): elif not node.left and node.value > x: node.left = treenode(x) node.left.height = 1 + node.height + def hasPathSum(self, root, sum): + """ + :type root: TreeNode + :type sum: int + :rtype: bool + 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 + 说明: 叶子节点是指没有子节点的节点。 + """ + if root is not None: + sum -= root.value + #print("\n{} {}").format(sum,root.value) + if not root.left and not root.right: + return sum == 0 + return self.hasPathSum(root.left,sum) or self.hasPathSum(root.right,sum) + else: + return False def getMaxdepth(self): if self.root is None: return 0 @@ -151,6 +167,7 @@ def minDepth(self, root): return min_depth + 1 def DFS(self): '''deep fisrt search''' + print("深度优先遍历:\n") if self.root: stack = [] stack.append(self.root) @@ -168,6 +185,7 @@ def DFS(self): return def BFS(self): '''Breadth-first-search/''' + print("\n广度优先遍历:\n") if self.root is None: return queue = [] @@ -184,6 +202,38 @@ def BFS(self): if node.right: queue.append(node.right) #print "right{}".format(node.right.value), + + def levelOrder(self, root): + """ + :type root: TreeNode + :rtype: List[List[int]] + """ + if not root: + return [] + else: + q = [] + q.append(root) + j = [] + while len(q)>0: + p = [] + d = [] + for c in q: + if c: + p.append(c.value) + #print c.value + if c.left: + d.append(c.left) + if c.right: + d.append(c.right) + #print len(d) + q = d + #print len(q) + if p: + j.append(p) + print("\n层次遍历(按层输出):\n") + print j + return j + def NLR(self,root): '''Pre-order (L) Recursively traverse N's left subtree. @@ -211,19 +261,17 @@ def LRN(self,root): if __name__ =='__main__': btree = BinaryTree(None) l = [x for x in range(random.randrange(1,20))] - #l = [0,1,2,3] for i in range(len(l)): btree.add(l[i]) - print("深度优先遍历:\n") btree.DFS() - print("\n广度优先遍历:\n") btree.BFS() - btree.delect(random.choice(l)) + btree.levelOrder(btree.root) + #btree.hasPathSum(btree.root,3) + btree.delete(random.choice(l)) Maxdepth = btree.getMaxdepth() print("\n树的最大深度为{}\n".format( Maxdepth)) mindepth = btree.minDepth(btree.root) print("\n树的最小深度为{}\n".format( mindepth)) - #btree.delect() print("\n前序遍历:\n") btree.NLR(btree.root) print("\n中序遍历:\n") From 77bb6bd21b4aa001b954722d77b4b4b06b7581ab Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 1 May 2020 06:27:28 +0800 Subject: [PATCH 092/270] Create AVLTree.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 递归方式创建平衡二叉树,增改删查功能,深度、广度优先遍历,前中后序遍历,获得最大最小子节点,平衡判断等 --- Trees/AVLTree.py | 418 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 418 insertions(+) create mode 100644 Trees/AVLTree.py diff --git a/Trees/AVLTree.py b/Trees/AVLTree.py new file mode 100644 index 0000000..fd30b28 --- /dev/null +++ b/Trees/AVLTree.py @@ -0,0 +1,418 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-04-23 22:34:00 +#Function: AVL Tree + +import random + +off = 0 #控制开关:控制平衡二叉树插入节点时动态显示步骤 +class AvlTreeNode(): + def __init__(self,x,h): + '''定义节点''' + self.value = x + self.left = None + self.right = None + self.height = h#默认为1 +class AVLTree(): + def __init__(self): + self.root = None + def add(self,x): + '''添加子节点并安装左小右大的方式不带平衡调整''' + if self.root is None: + self.root = AvlTreeNode(x,1) + else: + node = self.root + while node: + node.height = max(self.get_height(node.left), self.get_height(node.right)) + 1 + if x < node.value: + if not node.left: + node.left = AvlTreeNode(x,1) + return node + else: + node = node.left + if x >= node.value: + if not node.right: + node.right = AvlTreeNode(x,1) + return node + else: + node = node.right + + + def __insert(self, root, x): + '''带平衡调整插入root 永远是根节点''' + global off + if not root: + root = AvlTreeNode(x,1) + if root.value == x: + return root + elif x < root.value: + #print root.value + root.left = self.__insert(root.left, x) + + else: + #print root.value + root.right = self.__insert(root.right, x) + root.height = max(self.get_height(root.left), self.get_height(root.right)) + 1 + balance = abs(self.get_balance(root)) + if balance < 2: + if off > 0: + print("root.value:{}\n".format(root.value)) + self.levelorder(root) + else: + if off > 0: + print("不平衡时的root.value:{}\n".format(root.value)) + self.levelorder(root) + root = self.balance_Tree(root,x) + return root + def insert(self,x): + '''插入节点保持平衡''' + self.root = self.__insert(self.root,x) + return self.root + def update(self,x0,x): + '''修改节点值 + x0:要查找的值 + x: 新增值 + ''' + if self.root == None: + return 0 + else: + node = self.search(x0) + if node: + node.value = x + return node + else: + print("未查找到指定值") + return False + def search(self,x): + '''查找子节点''' + if not self.root: + return None + else: + stack = [] + stack.append(self.root) + while len(stack) > 0: + node = stack.pop() + if node == None: + print("No this node") + return None + if node.valuex: + stack.append(node.left) + else: + print("node.value:{}\nnode.height:{}\n".format(node.value, node.height)) + return node + def __delete(self,root,x): + '''删除节点并保持树的平衡''' + if root == None: + print("We have not searched this node, so we can't delete it") + return root + else: + if x < root.value: + root.left = self.__delete(root.left, x) + elif x > root.value: + root.right = self.__delete(root.right, x) + else: + print("The deleted node's value is {},the height is {}\n".format(x,root.height)) + if not root.left or not root.right: + #单子节点或者没有子节点 + if not root.left: + #print("Replace node's value is {}\n".format(root.right.value)) + root = root.right + elif not root.right: + #print("Replace node's value is {}\n".format(root.left.value)) + root = root.left + else: + root = None + if not root: + print None + else: + print("The replaced node's value is {}\n".format(root.value)) + else: + #双子节点 + min_node = self._minNode(root.right)#寻找大于x的最小值 + print("Replace node's value is {}\n".format(min_node.value)) + root.value = min_node.value + root.right = self.__delete(root.right, root.value)#删除去替换x的节点 + print("Delete success!\n") + #保持二叉树的平衡性 + balance_x = self.get_balance(self.root) + if abs(balance_x) < 2: + return root + else: + return self.balance_Tree(self.root, x) + return root + def delete(self,x): + '''删除节点并保持树的平衡''' + return self.__delete(self.root,x) + + def get_height(self, root): + '''获取节点高度''' + if not root: + return 0 + return root.height + #print root.value,max(self.get_height(root.left), self.get_height(root.right)) + 1 + + def get_balance(self,root): + '''获取平衡因子''' + if not root: + return 0 + return self.get_height(root.left) - self.get_height(root.right) + def is_balance(self,root): + '''判断是否平衡''' + if not root: + print True + return True + if abs(self.get_balance(root)) < 2: + self.is_balance(root.left) and self.is_balance(root.right) + else: + print False + return False + + def balance_Tree(self,node,x): + ''' + 调整二叉树 + a) Left Left Case + + z y + / \ / \ + y T4 right_rotate (z) x z + / \ - - - - - - - - -> / \ / \ + x T3 T1 T2 T3 T4 + / \ + T1 T2 + ============================================================================ + b) Left Right Case + + z z x + / \ / \ / \ + y T4 Left Rotate (y) x T4 Right Rotate(z) y z + / \ - - - - - - - - -> / \ - - - - - - - -> / \ / \ + T1 x y T3 T1 T2 T3 T4 + / \ / \ + T2 T3 T1 T2 + ============================================================================ + + c) Right Right Case + + z y + / \ / \ + T1 y left_rotate(z) z x + / \ - - - - - - - -> / \ / \ + T2 x T1 T2 T3 T4 + / \ + T3 T4 + ============================================================================ + + d) Right Left Case + + z z x + / \ / \ / \ + T1 y Right Rotate (y) T1 x Left Rotate(z) z y + / \ - - - - - - - - -> / \ - - - - - - - -> / \ / \ + x T4 T2 y T1 T2 T3 T4 + / \ / \ + T2 T3 T3 T4 + + ''' + balance = self.get_balance(node) + if balance > 1: + if x node.right.value: + #(c) Right Right Case + print("RR") + return self.left_rotate(node) + else: + #(d) Right Left Case + print("RL") + return self.RL(node) + def get_minNode(self): + '''最小左节点''' + if not self.root: + return None + else: + Min_node = self._minNode(self.root) + print("最小左节点为{}\n".format(Min_node.value)) + return Min_node + def _minNode(self,root): + if root.left: + node = root.left + return self._minNode(node) + else: + return root + def get_maxNode(self): + '''最大右节点''' + if not self.root: + return None + else: + Max_node = self._maxNode(self.root) + print("最大右节点为{}\n".format(Max_node.value)) + return Max_node + def _maxNode(self, root): + if root.right: + node = root.right + return self._maxNode(node) + else: + return root + def right_rotate(self, z): + '''LL''' + y = z.left + T3 = y.right + #开始向右旋转 + y.right = z + z.left = T3 + + z.height = max(self.get_height(z.left), self.get_height(z.right)) + 1 + y.height = max(self.get_height(y.left), self.get_height(y.right)) + 1 + return y + def left_rotate(self, z): + '''RR''' + y = z.right + T2 = y.left + + y.left = z + z.right = T2 + #开始向左旋转 + z.height = max(self.get_height(z.left), self.get_height(z.right)) + 1 + y.height = max(self.get_height(y.left), self.get_height(y.right)) + 1 + return y + def LR(self, z): + z.left = self.left_rotate(z.left) + return self.right_rotate(z) + def RL(self, z): + z.right = self.right_rotate(z.right) + return self.left_rotate(z) + def BFS(self): + print("\n广度优先遍历:\n") + if self.root is None: + return + queue = [] + h_bfs = [] + queue.append(self.root) + while len(queue)>0: + node = queue.pop(0) + print node.value, + h_bfs.append(node.height) + if node.left: + queue.append(node.left) + if node.right: + queue.append(node.right) + print("\n{}".format(h_bfs)) + def DFS(self): + print("深度优先遍历:\n") + if self.root is None: + return + stack = [] + stack.append(self.root) + h_dfs = [] + while len(stack)>0: + node = stack.pop() + print node.value, + h_dfs.append(node.height) + if node.right: + stack.append(node.right) + if node.left: + stack.append(node.left) + print("\n{}".format(h_dfs)) + def levelorder(self,root): + print("\n层次遍历(按层输出):\n") + if not root: + return None + else: + q = [] + q.append(root) + v = [] + h = max(self.get_height(root.left), self.get_height(root.right)) + 1 + while len(q)>0: + p = [] + s = [] + f = 2*h+1 + print "*"*(2*h-3+f), + t = 0 + for c in q: + k = 7 + if c: + s.append(c.value) + print"{}".format(c.value)+" "*(k), + if c.left: + p.append(c.left) + else: + p.append(None) + if c.right: + p.append(c.right) + else: + p.append(None) + else: + print " "*(k), + q = p + print("\n") + if s: + v.append(s) + h -= 1 + return v + def preorder_tree(self,root): + '''先序遍历''' + if not root: + return 0 + else: + print root.value, + self.preorder_tree(root.left) + self.preorder_tree(root.right) + def Inorder_tree(self,root): + '''中序遍历''' + if not root: + return 0 + else: + self.Inorder_tree(root.left) + print root.value, + self.Inorder_tree(root.right) + def postorder_tree(self,root): + '''后序遍历''' + if not root: + return 0 + else: + self.postorder_tree(root.left) + self.postorder_tree(root.right) + print(root.value), + +if __name__ == '__main__': + l = [x for x in range(random.randrange(10,20))] + random.shuffle(l) + print l + #l = [1, 4, 2, 0, 6, 3, 5] + Avltree = AVLTree() + for i in range(len(l)): + Avltree.add(l[i]) + Avltree.DFS() + Avltree.BFS() + Avltree.levelorder(Avltree.root) + print("\n前序遍历:\n") + Avltree.preorder_tree(Avltree.root) + print("\n中序遍历:\n") + Avltree.Inorder_tree(Avltree.root) + print("\n后序遍历:\n") + Avltree.postorder_tree(Avltree.root) + print("\n判断该树是否平衡:\n") + Avltree.is_balance(Avltree.root) + Avltree.get_minNode() + Avltree.get_maxNode() + Avltree1 = AVLTree() + for i in range(len(l)): + Avltree1.insert(l[i]) + Avltree1.levelorder(Avltree1.root) + print("\n判断该树是否平衡:\n") + print Avltree1.is_balance(Avltree1.root) + Avltree1.DFS() + Avltree1.BFS() + seeks = random.choice(l) + Avltree1.search(seeks) + Avltree1.delete(seeks) + Avltree1.update(seeks,seeks+1) From fb7fdc2e8499b0821e9069b3716550420f77752e Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 3 May 2020 08:36:10 +0800 Subject: [PATCH 093/270] Create dingTalkfile.py --- dingTalkfile.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 dingTalkfile.py diff --git a/dingTalkfile.py b/dingTalkfile.py new file mode 100644 index 0000000..4be7d61 --- /dev/null +++ b/dingTalkfile.py @@ -0,0 +1,39 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-05-03 12:00:00 +#Function: Download files on Mac from DingTalk automaticly + +import random +import pyautogui as pt +def __pinyin(): + pt.moveTo(1183, 2, 2) + pt.click() + pt.moveTo(1190, 56,3) + pt.click() + +t = random.randrange(2,3) +pt.FAILSAFE = True +pt.click(1343, 9) +pt.write('dingding', interval = 0.25) +pt.press(['enter']) +pt.moveTo(158, 61, 10) +pt.click() +pt.write('wuliu') +pt.press(['enter']) +pt.moveTo(150, 200, 5) +pt.click() +pt.moveTo(1417, 179, random.randrange(5,10)) +pt.click() +pt.moveTo(1280, 159, t) +pt.click() +pt.moveTo(1092, 121, t) +pt.click() +s = '-2.1' +pt.write(s, interval = 0.25) +for i in range(205,693,61): + + pt.moveTo(1321, i, 2) + pt.click() + +print("Download Success!") + From 7f8fd382de4e3eb4eafa145deed5b7ca3db08b37 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 3 May 2020 23:22:24 +0800 Subject: [PATCH 094/270] Update BST.py --- Trees/BST.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Trees/BST.py b/Trees/BST.py index cd93003..f33697e 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -251,6 +251,18 @@ def LNR(self,root): self.LNR(root.left) print root.value, self.LNR(root.right) + def LNR2(self, root): + '''利用栈中序遍历''' + stack,rst = [root],[] + while stack: + i = stack.pop() + if isinstance(i,treenode): + stack.extend([i.right,i.val,i.left]) + print stack + elif isinstance(i,int): + rst.append(i) + return rst + def LRN(self,root): '''Post-order''' if root: From cee9c1cd748db3ea8032f763c9c66f7a90b23d8d Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 3 May 2020 23:38:50 +0800 Subject: [PATCH 095/270] Update AVLTree.py --- Trees/AVLTree.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/Trees/AVLTree.py b/Trees/AVLTree.py index fd30b28..fce9373 100644 --- a/Trees/AVLTree.py +++ b/Trees/AVLTree.py @@ -168,7 +168,16 @@ def is_balance(self,root): else: print False return False - + def isValidBST(self, root): + '''使用中序遍历,验证是否符合左节点小于右节点''' + res = self.Inorder_tree2(self.root) + for i in range(len(res)-1): + if res[i] > res[i+1]: + print("\n{} big then {}, it is not valid BST\n".format(res[i], res[i+1])) + return False + print("\nIt is a valid BST\n") + return True + def balance_Tree(self,node,x): ''' 调整二叉树 @@ -374,6 +383,18 @@ def Inorder_tree(self,root): self.Inorder_tree(root.left) print root.value, self.Inorder_tree(root.right) + def Inorder_tree2(self, root): + '''利用栈中序遍历返回list,中序遍历返回的列表一定是从小到大按顺序排列的''' + if not root: + return [] + stack, res = [root],[] + while stack: + node = stack.pop() + if isinstance(node, AvlTreeNode): + stack.extend([node.right, node.value, node.left]) + elif isinstance(node, int): + res.append(node) + return res def postorder_tree(self,root): '''后序遍历''' if not root: @@ -387,7 +408,7 @@ def postorder_tree(self,root): l = [x for x in range(random.randrange(10,20))] random.shuffle(l) print l - #l = [1, 4, 2, 0, 6, 3, 5] + l = [1, 4, 2, 0, 6, 3, 5] Avltree = AVLTree() for i in range(len(l)): Avltree.add(l[i]) @@ -412,7 +433,8 @@ def postorder_tree(self,root): print Avltree1.is_balance(Avltree1.root) Avltree1.DFS() Avltree1.BFS() - seeks = random.choice(l) + Avltree1.isValidBST(Avltree1.root) + seeks = 2#random.choice(l) Avltree1.search(seeks) Avltree1.delete(seeks) Avltree1.update(seeks,seeks+1) From 9badf0f93d434cf5bb9ebd1bf8e5a72cca237a6a Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 01:40:40 +0800 Subject: [PATCH 096/270] Create Linkedlist.py --- Linkedlist/Linkedlist.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Linkedlist/Linkedlist.py diff --git a/Linkedlist/Linkedlist.py b/Linkedlist/Linkedlist.py new file mode 100644 index 0000000..b40586e --- /dev/null +++ b/Linkedlist/Linkedlist.py @@ -0,0 +1,37 @@ +class ListNode(object): + def __init__(self, x): + self.val = x + self.next = None +res = [] +class Solution: + + def __init__(self): + self.head = None + + def add(self, head, x): + if not head: + head = ListNode(x) + else: + head.next = self.add(head.next, x) + return head + def add2(self, l): + if len(l) == 0: + return None + for i in range(len(l)): + self.head = self.add(self.head, l[i]) + return self.head + def dfs(self, head): + if head: + res.append(head.val) + self.dfs(head.next) + + return res + + +if __name__ == '__main__': + lt = Solution() + l = [x*2 for x in range(7)] + lt.add2(l) + r = lt.dfs(lt.head) + print r + From 5c626e22223fdd8a57e16868aba9ea8351037535 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 01:41:37 +0800 Subject: [PATCH 097/270] mt19937 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 梅森旋转算法伪随机数生成器 --- Calculus/MT19937.py | 47 ++++++++++++++++++++++++++++++ Calculus/Marsaglia_polar_method.py | 29 ++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 Calculus/MT19937.py create mode 100644 Calculus/Marsaglia_polar_method.py diff --git a/Calculus/MT19937.py b/Calculus/MT19937.py new file mode 100644 index 0000000..5ef2400 --- /dev/null +++ b/Calculus/MT19937.py @@ -0,0 +1,47 @@ +#coding:UTF-8 +#Function: generate a random number伪随机发生器产生均匀分布序列 +#梅森旋转算法:http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/mt.pdf +import math +import matplotlib.pyplot as plt +import numpy as np +def _int32(x): + return int(0xFFFFFFFF & x) + +class MT19937: + def __init__(self, seed): + self.mt = [0] * 624 + self.mt[0] = seed + self.mti = 0 + for i in range(1, 624): + self.mt[i] = _int32(1812433253 * (self.mt[i - 1] ^ self.mt[i - 1] >> 30) + i) + + + def extract_number(self): + if self.mti == 0: + self.twist() + y = self.mt[self.mti] + y = y ^ y >> 11 + y = y ^ y << 7 & 2636928640 + y = y ^ y << 15 & 4022730752 + y = y ^ y >> 18 + self.mti = (self.mti + 1) % 624 + return _int32(y) + + + def twist(self): + for i in range(0, 624): + y = _int32((self.mt[i] & 0x80000000) + (self.mt[(i + 1) % 624] & 0x7fffffff)) + self.mt[i] = (y >> 1) ^ self.mt[(i + 397) % 624] + + if y % 2 != 0: + self.mt[i] = self.mt[i] ^ 0x9908b0df + +if __name__ == '__main__': + res = [] + n = 1000 + for i in range(0,n): + #生成624位0到1的均匀分布数字 + res.append([math.sin(MT19937(i).extract_number()), math.cos(MT19937(i).extract_number())]) + a = np.array(res).reshape(2,n) + plt.plot(a[0], a[1], 'r.') + plt.show() diff --git a/Calculus/Marsaglia_polar_method.py b/Calculus/Marsaglia_polar_method.py new file mode 100644 index 0000000..9287555 --- /dev/null +++ b/Calculus/Marsaglia_polar_method.py @@ -0,0 +1,29 @@ +import MT19937 +import math +import numpy as np +import matplotlib.pyplot as plt + +def mt(): + res = [] + n = 10000 + for i in xrange(n): + #生成624位0到1的均匀分布数字 + res.append([math.sin(MT19937.MT19937(i).extract_number()), math.cos(MT19937.MT19937(i).extract_number())]) + return res +def Marsaglia_polar(): + Gauss = [] + res = mt() + for i in xrange(len(res)): + u = res[i][0] + v = res[i][1] + s = u**2 + v**2 + if s < 1: + x = u*math.sqrt(-2*math.log(s)/s) + y = v*math.sqrt(-2*math.log(s)/s) + Gauss.append([x,y]) + return Gauss +if __name__ == '__main__': + r = Marsaglia_polar() + s = np.array(r).reshape(2,len(r)) + plt.plot(s[0], s[1], 'r.') + plt.show() From a223925da988c38212b7201a60b1a2ed51a9e24b Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 01:41:52 +0800 Subject: [PATCH 098/270] Create Pascal_triangle.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 递归生成杨辉三角 --- Calculus/Pascal_triangle.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Calculus/Pascal_triangle.py diff --git a/Calculus/Pascal_triangle.py b/Calculus/Pascal_triangle.py new file mode 100644 index 0000000..91e1349 --- /dev/null +++ b/Calculus/Pascal_triangle.py @@ -0,0 +1,31 @@ +#coding:utf-8 +#Date: 2020-05-07 00:34:00 +#杨辉三角递归 +def pascalTri(numRows): + """ + :type numRows: int + :rtype: List[List[int]] + 递归三步: + 1. 整个递归的终止条件 + 2. 返回值p + 3. 在一次递归中需要做的操作 + """ + + if numRows == 0: + return [] + + #终止条件 + if numRows == 1: + p = [[1]] + return p + #进入递归 + p = generate(numRows - 1) + #递归中一次运算中需要做的事情 + n = 1 + j = []#第numRows行的list + j.append(n) + for i in range(1,numRows-1): + j.append(p[numRows-2][i-1]+p[numRows-2][i]) + j.append(1) + p.append(j) + return p From d70b213cbbcf16133720e3d647344de66a46e04a Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 02:45:10 +0800 Subject: [PATCH 099/270] =?UTF-8?q?=E5=88=A4=E5=AE=9A=E4=B8=A4=E6=A3=B5?= =?UTF-8?q?=E5=AD=90=E6=A0=91=E6=98=AF=E5=90=A6=E7=9B=B8=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trees/AVLTree.py | 20 ++++++++++++++++++++ Trees/BST.py | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/Trees/AVLTree.py b/Trees/AVLTree.py index fce9373..61f57b4 100644 --- a/Trees/AVLTree.py +++ b/Trees/AVLTree.py @@ -403,7 +403,27 @@ def postorder_tree(self,root): self.postorder_tree(root.left) self.postorder_tree(root.right) print(root.value), + def identical(self, a, b): + '''判定两棵子树是否相同''' + if not a and not b: # 两个 node 都为空为 True + return True + if a is None or b is None: # 一方空,一方不空,为False + return False + # 3. 返回值 + #否则说明两个 node 都非空,那么如果两个树相等必须满足3个条件,即当前 node 的值相等,且各自左右子树也对应相等 + return a.val == b.val and \ + self.identical(a.left, b.left) and \ + self.identical(a.right, b.right) + def isSubtree(self, s, t): + '''判定两棵树是否相同''' + if not s: + return False # 边界,如果s为空直接返回False + + if self.identical(s, t): #1. 终止条件 若 s 和 t 对应的两棵树相同则返回True + return True + #2. 循环操作 不然的话就继续探索 s 的左右子树是否和 t 相等 + return self.isSubtree(s.left, t) or self.isSubtree(s.right, t) if __name__ == '__main__': l = [x for x in range(random.randrange(10,20))] random.shuffle(l) diff --git a/Trees/BST.py b/Trees/BST.py index f33697e..374551b 100644 --- a/Trees/BST.py +++ b/Trees/BST.py @@ -269,7 +269,27 @@ def LRN(self,root): self.LRN(root.left) self.LRN(root.right) print root.value, + def identical(self, a, b): + '''判定两棵子树是否相同''' + if not a and not b: # 两个 node 都为空为 True + return True + if a is None or b is None: # 一方空,一方不空,为False + return False + # 3. 返回值 + #否则说明两个 node 都非空,那么如果两个树相等必须满足3个条件,即当前 node 的值相等,且各自左右子树也对应相等 + return a.val == b.val and \ + self.identical(a.left, b.left) and \ + self.identical(a.right, b.right) + + def isSubtree(self, s, t): + '''判定两棵树是否相同''' + if not s: + return False # 边界,如果s为空直接返回False + if self.identical(s, t): #1. 终止条件 若 s 和 t 对应的两棵树相同则返回True + return True + #2. 循环操作 不然的话就继续探索 s 的左右子树是否和 t 相等 + return self.isSubtree(s.left, t) or self.isSubtree(s.right, t) if __name__ =='__main__': btree = BinaryTree(None) l = [x for x in range(random.randrange(1,20))] From e4ef174c76ebf45e15d0dd37725ac3163dc9c575 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 03:43:59 +0800 Subject: [PATCH 100/270] =?UTF-8?q?=E6=9D=A8=E8=BE=89=E4=B8=89=E8=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Calculus/Pascal_triangle.py | 19 +++++++++++++++++-- Calculus/Pascal_triangle.sh | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100755 Calculus/Pascal_triangle.sh diff --git a/Calculus/Pascal_triangle.py b/Calculus/Pascal_triangle.py index 91e1349..7ed2ed1 100644 --- a/Calculus/Pascal_triangle.py +++ b/Calculus/Pascal_triangle.py @@ -1,7 +1,7 @@ #coding:utf-8 #Date: 2020-05-07 00:34:00 -#杨辉三角递归 -def pascalTri(numRows): +#杨辉三角递归和zip生成 +def pascalTri_recursive(numRows): """ :type numRows: int :rtype: List[List[int]] @@ -29,3 +29,18 @@ def pascalTri(numRows): j.append(1) p.append(j) return p +def pascalTri_zip(rowIndex): + """ + :type rowIndex: int + :rtype: List[int] + https://leetcode-cn.com/problems/pascals-triangle-ii/solution/gen-ju-yang-hui-san-jiao-gui-lu-shu-chu-by-yotro/ + """ + res = [[1]] + L = [1] + tmp = 1 + while rowIndex != tmp: + L = [sum(i) for i in zip([0]+L, L+[0])] + tmp += 1 + res.append(L) + return res + diff --git a/Calculus/Pascal_triangle.sh b/Calculus/Pascal_triangle.sh new file mode 100755 index 0000000..6b876e1 --- /dev/null +++ b/Calculus/Pascal_triangle.sh @@ -0,0 +1,23 @@ +#! /bin/bash +# 用法:./pasTrig [个数],若不指明个数为 5。 +# 填充指定个数的空格 +pad(){ for ((k=0;k<$1;k++)); do echo -n ' '; done; } +# 层数和新旧层 +lyrs=${1-10} +prev[0]=1 +curr[0]=1 # 接下来每行第一个始终为一,无需重复赋值 +# 执行 +pad $(((lyrs-1)*2)) +echo 1 +for ((i=2; i<=lyrs; i++)); do # 略过 1,已处理 + pad $(((lyrs-i)*2)) # 填充空格,注意这里不会怎么顾及三位以上的数,即第 14 层开始会混乱 + curr[i]=1 + printf '%-4d' ${curr[0]} + for ((j=1; j Date: Thu, 7 May 2020 03:44:17 +0800 Subject: [PATCH 101/270] Create __init__.py --- Calculus/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Calculus/__init__.py diff --git a/Calculus/__init__.py b/Calculus/__init__.py new file mode 100644 index 0000000..e69de29 From 2c2f22444d865fb190df441111d3778311dee73a Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 03:44:34 +0800 Subject: [PATCH 102/270] Create .DS_Store --- Linkedlist/.DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Linkedlist/.DS_Store diff --git a/Linkedlist/.DS_Store b/Linkedlist/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..291eaef4bb1ff9b6e68343f328c26157e8f68983 GIT binary patch literal 6148 zcmeHKJxjz;5S-O34n(-p@|9MCwM{tALa_4>$axlG@D9|%E}cJHXFn7}w6L*|S=gQT zHamIA6xl2QTRv}2fdzm$-4U-Irsmh(C$?7^Bhq<~TWrwd4v%=6RDYjv?jbJ8dBFXM ze}WxeF8b}wy5Fu@<&StqKYk12N+t!QfE17dQa}p)UIFjDwE01zq7;wSU`4 z#o~14Ta?4PL`5ke1;z^O=XT-!|D68A{68jXCk3Ryzf!{v literal 0 HcmV?d00001 From aff11b332abd1e73bcfaf12a09662fc0f6c10aa9 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 03:44:46 +0800 Subject: [PATCH 103/270] Create .DS_Store --- Calculus/.DS_Store | Bin 0 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Calculus/.DS_Store diff --git a/Calculus/.DS_Store b/Calculus/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cb3bb8a769745047d7f4ec2a566cdaa619737d4a GIT binary patch literal 6148 zcmeHKJx{|h5PdEkTDnv)09!^Tq>2F{mZ&NN0}>KUETLb5N+CgQ7`kQQKkyg$ef$7; zXIoX0niU~*7unCb+&kOPQ5*v>!`ImW=mY4m2)4Sc0w&L;Y+1{DF0U zv^xHx0pG@md+UXKr!_b+Q~0sD;3xZZOtx!Ngmw#W89A*Q_K zEofvh2V@>svK-->(MzmYKa#T`CgkO8i$B3LdnoWk&n%envypL^8SgN_Ij>Wk1vzgG zPA|m4w4uNSSycu0aKkaKFlC)`qy@(-5rEjH z+Zx;QvnZU%W9+eX$R{-8s6FYhH96U9BbEmiF^MZ3ZYXTn ht(dX06(6!#qd$@cG4@zGq=%+I0#*jCRDoYr;2VPXhR6T_ literal 0 HcmV?d00001 From 68d5522d8f3476bdbd3af6b0239dc1812312d115 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 7 May 2020 22:13:30 +0800 Subject: [PATCH 104/270] Update Linkedlist.py --- Linkedlist/Linkedlist.py | 52 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/Linkedlist/Linkedlist.py b/Linkedlist/Linkedlist.py index b40586e..d7e534d 100644 --- a/Linkedlist/Linkedlist.py +++ b/Linkedlist/Linkedlist.py @@ -1,4 +1,4 @@ -class ListNode(object): +class ListNode(object): def __init__(self, x): self.val = x self.next = None @@ -20,6 +20,56 @@ def add2(self, l): for i in range(len(l)): self.head = self.add(self.head, l[i]) return self.head + def delete(self, head, x): + if not head or not head.next: + return None + a = head + b = head.next + if x != head.val: + head.next = self.delete( head.next, x) + if b.val == x: + a.next = b.next + return head + def insert(self, index, x): + ''' + index->int: 索引要插入的地方 + x->int: 要插入的值 + ''' + if not self.head: + return None + node = self.search(index) + if node: + tmp = ListNode(x) + node.next = tmp + tmp.next = node.next.next + print("Insert success!") + return self.head + def search(self, x): + node = self.head + found = False + while not found and node: + if node.val == x: + print("We found this node in the linked list") + found = True + return node + else: + node = node.next + print("We can't found this node") + def update(self, index, x): + ''' + index->int: original node + x->int: new node + ''' + if not self.head: + return None + node = self.search(index) + if node: + node.val = x + print("Update success!") + else: + return None + return node + def dfs(self, head): if head: res.append(head.val) From 7798da29942d96503c0feaa0deaefbebbead59bf Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 8 May 2020 16:33:00 +0800 Subject: [PATCH 105/270] update recursive --- Leetcode/__init__.py | 0 .../leetcode-779-k-th-symbol-in-grammar.py | 14 ++++++++++ ...etcode-95-unique-binary-search-trees-ii.py | 27 +++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 Leetcode/__init__.py create mode 100644 Leetcode/leetcode-779-k-th-symbol-in-grammar.py create mode 100644 Leetcode/leetcode-95-unique-binary-search-trees-ii.py diff --git a/Leetcode/__init__.py b/Leetcode/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Leetcode/leetcode-779-k-th-symbol-in-grammar.py b/Leetcode/leetcode-779-k-th-symbol-in-grammar.py new file mode 100644 index 0000000..ab1ae57 --- /dev/null +++ b/Leetcode/leetcode-779-k-th-symbol-in-grammar.py @@ -0,0 +1,14 @@ +def kthGrammar( N, K): + '''https://leetcode-cn.com/problems/k-th-symbol-in-grammar/solution/di-kge-yu-fa-fu-hao-by-leetcode/''' + if N == 1: return 0 + return (1 - K%2) ^ kthGrammar(N-1, (K+1)/2) + + +def kthGrammar_recursive(self, N, K): + if N == 1: return 0 + if K <= (2**(N-2)): + return kthGrammar_recursive(N-1, K) + return kthGrammar_recursive(N-1, K - 2**(N-2)) ^ 1 + +def kthGrammar_bin(self, N, K): + return bin(K - 1).count('1') % 2 diff --git a/Leetcode/leetcode-95-unique-binary-search-trees-ii.py b/Leetcode/leetcode-95-unique-binary-search-trees-ii.py new file mode 100644 index 0000000..8991960 --- /dev/null +++ b/Leetcode/leetcode-95-unique-binary-search-trees-ii.py @@ -0,0 +1,27 @@ +class TreeNode(): + def __init__(self, x): + self.val = x + self.left = None + self.right = None +def generateTrees(n): + def generate_trees(start, end): + if start > end: + return [None] + all_trees = [] + for i in range(start, end+1): + ltree = generate_trees(start, i-1) + rtree = generate_trees(i+1, end) + for l in ltree: + for r in rtree: + c = TreeNode(i) + c.left = l + c.right = r + all_trees.append(c) + return all_trees + return generate_trees(1, n) if n else [] +def preorder(head): + if head: + print head.val + preorder(head.left) + preorder(head.right) + return head From b170ef208f9f0977e9aa4333e41df3d1264fb67a Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 8 May 2020 16:33:40 +0800 Subject: [PATCH 106/270] Update Linkedlist.py reverse linkedlist and merge 2 linkedlists --- Linkedlist/Linkedlist.py | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/Linkedlist/Linkedlist.py b/Linkedlist/Linkedlist.py index d7e534d..913fa57 100644 --- a/Linkedlist/Linkedlist.py +++ b/Linkedlist/Linkedlist.py @@ -73,10 +73,32 @@ def update(self, index, x): def dfs(self, head): if head: res.append(head.val) - self.dfs(head.next) - + self.dfs(head.next) return res - + def reverse(self, head): + #1. 终止条件 + if not head or not head.next: + return head + #2. 返回值 + cur = self.reverse(head.next) + #3. 一次递归操作 + head.next.next = head + head.next = None + return cur + def mergeTwoLists(self, l1, l2): + '''合并两个升序链表''' + #1. 终止条件 + if l1 is None: + return l2 + elif l2 is None: + return l1 + #2. 返回值和一次递归中的操作内容 + elif l1.val < l2.val: + l1.next = self.mergeTwoLists(l1.next, l2) + return l1 + else: + l2.next = self.mergeTwoLists(l1, l2.next) + return l2 if __name__ == '__main__': lt = Solution() From dc7141cfb2027e96ba433b9bddaa2677f3a0924e Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 9 May 2020 01:03:56 +0800 Subject: [PATCH 107/270] Create Catalan.py --- Calculus/Catalan.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Calculus/Catalan.py diff --git a/Calculus/Catalan.py b/Calculus/Catalan.py new file mode 100644 index 0000000..6582a0b --- /dev/null +++ b/Calculus/Catalan.py @@ -0,0 +1,13 @@ +#coding:UTF-8 +#Author: Toryun +#Date: 2020-05-08 16:42:00 + +def Catalan(n): + '''求卡特兰数''' + if n <= 0: + return None + if n == 1: + return 1 + else: + return Catalan(n-1)*2*(2*n-1)/(n+1) + From 39d0a26b310919635cd227b3e924b985ed57c0c8 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 12 May 2020 22:32:31 +0800 Subject: [PATCH 108/270] update --- Leetcode/.DS_Store | Bin 6148 -> 10244 bytes .../{ => Bit}/leetcode-231-power-of-two.py | 0 Leetcode/DP/.DS_Store | Bin 0 -> 6148 bytes Leetcode/DP/198_House_robber.py | 20 ++++ Leetcode/DP/README.md | 4 + ...code-08-best-time-to-buy-and-sell-stock.py | 21 ++++ ...ode-121-best-time-to-buy-and-sell-stock.py | 0 ...eetcode-5-longest-palindromic-substring.py | 35 +++++++ Leetcode/DP/leetcode-53-maximum-subarray.py | 18 ++++ Leetcode/Graph/.DS_Store | Bin 0 -> 8196 bytes Leetcode/Graph/Tree/.DS_Store | Bin 0 -> 6148 bytes ...lowest-common-ancestor-of-a-binary-tree.py | 95 ++++++++++++++++++ .../Tree}/leetcode-938-range-sum-of-bst.py | 0 .../leetcode-202-happy-number.py | 0 .../leetcode-326-power-of-three.py | 15 +++ .../leetcode-1137-n-th-tribonacci-number.py | 0 .../leetcode-779-k-th-symbol-in-grammar.py | 0 17 files changed, 208 insertions(+) rename Leetcode/{ => Bit}/leetcode-231-power-of-two.py (100%) create mode 100644 Leetcode/DP/.DS_Store create mode 100644 Leetcode/DP/198_House_robber.py create mode 100644 Leetcode/DP/README.md create mode 100644 Leetcode/DP/leetcode-08-best-time-to-buy-and-sell-stock.py rename Leetcode/{ => DP}/leetcode-121-best-time-to-buy-and-sell-stock.py (100%) create mode 100644 Leetcode/DP/leetcode-5-longest-palindromic-substring.py create mode 100644 Leetcode/DP/leetcode-53-maximum-subarray.py create mode 100644 Leetcode/Graph/.DS_Store create mode 100644 Leetcode/Graph/Tree/.DS_Store create mode 100644 Leetcode/Graph/Tree/leetcode-236-lowest-common-ancestor-of-a-binary-tree.py rename Leetcode/{ => Graph/Tree}/leetcode-938-range-sum-of-bst.py (100%) rename Leetcode/{ => Mathematics}/leetcode-202-happy-number.py (100%) create mode 100644 Leetcode/Mathematics/leetcode-326-power-of-three.py rename Leetcode/{ => Recursive}/leetcode-1137-n-th-tribonacci-number.py (100%) rename Leetcode/{ => Recursive}/leetcode-779-k-th-symbol-in-grammar.py (100%) diff --git a/Leetcode/.DS_Store b/Leetcode/.DS_Store index 38023adcc5c4b29f4a243700e6a07a1533f6b378..4262b2725b65f6f110b1783edbc705ed724fd593 100644 GIT binary patch literal 10244 zcmeHMYit}v60Wixn3*Ja5+^tlSiHnI1h9#dO=3aUT zGrNunK?W4WOCTOncZLPWODj zf@@qtTAW;9wGMh=FgxWJLz^FEi?-zlot=Ney84DCS6nGcili)8jtx(`Q^SECl>ChD z9bv6OJ($df^%2*#=jwX)pk+>ttE+lkC(td&^mu2>FiGX;AN>76M6< zC3#$3bNX~DwY5E&N_C!TPoD1T>TFMLNo_lGMwXh}Hr>&GqA-2m>HE(-@S?~chIO}rxB=b#}$WS()##-58Nh}Y0j_o>m^2^4w1p2@O9f~m7H#FE; z@&k{!4X~G{*8$^Vjmvccs*+&k$|1(^Yz1SVRWK$iOP4Lbs!?6hxU#XSY1Qhho7Xgt zt4&!wcW>TfNa=BH*UQ)?^GM#ajNzi5vz+{BV4ezwt^3Szb!Cm}kZByBXN^o3NoUnO zgPZH~Ow-}^1|}waGZ?L^j~(?1;r)SG=yxVuvR@`d4-^B-b^L>-=Mx>%Jx_P?W@h@B zt!GVpz{$8l;1))$oa=~DHF6`=9P~_Ppmo<5H1G7ZruSAV8$?BgR#Bm4t>TEI7fiV| zJt%lG{UEo&4nou*m=M4da1LIBH{d<^9efJ^gl`d1!6sad*I^4@kL&S9>=a$=D(hoy z#k`&sRr)~&y#bL;K9 zdS^L?Rw~M2+ESdrny^goz?5YKlViG{GaZ9KbEs_jR@OFoidWRXEX%Wmw&mJd?b?c{ zwu_{;N~5K$b+Tjy)3fSTjmwo5?Rr^#Q#xwUaQ3?f^JH*|)}pmZ(h5z?@+2RPK~kV7oj@ zUw8`?r!UyuT92fDC>>|M_vwBxP&6HK&!cP6`Xp(LNxBWgG^Eyah`S2XLbwpnG`JPg za5o$!s1@O1coLq1r{QJz8C-xj;cfT;enYVP1bz>Hg}=k+@Fjc&U&A->9ZD$UQe1`_ zuESQm0XuO!-i|x*4$RJdP(&$2=DCB>EWO{dg81!N>4%d=6j1SMewK zQ@nt`!e8TC_%6POzr{b`Yz>_E*TDJH8aVrv-KOq%6krp(?^5pm-vIV6Vy9b4+uU`n z8#*?3?d+bL$eOvUh7m`OfCh(51rmG$FUBFwxVH8hC2@d|WuB@xe!+zXD2pqwKIErI<7;|V6{wC2vkMLKbH zWj_izaOqfKLI-SutyHGKhY}QMH5XyJ-*$812~VXF@1XaE@A$*x*%@IaMK)}*=|G;W z`sAU5Tg>vh$B!|2;!UyhDom1QiR*ZzU8Gm17CY)NogB$^ejLgX*QA;sH7@*$Mzf)6 zTx}8K+D4JFv5Dw9$nOMioh1Lv2g`uNBhOyK)7ctNt0FyZ4=sB%>Qhl8=9#P>@lx2& zBcCMSg)j#>@GsW`-Xh^foF*30tX?pm3{7ti7tEsC^XKv(){a<6i`cDMR5A?F^yLUd z45${A!HkF~LaREO(TzWs!e}Bj=OekaW<(Tx&Bn#$l!1B?Op<;7-@W+%|Cdw9aV&8L z;tbSe02_LTdo#qW+}ms9{8N3Bm?uI3)0?4}DDOf=9TO4dpW~^)KF9Ox9`P#oJSI$Vz)mO%3@fclGoX5}%YgWXWf05VG#XhRy1 zOkyZzC;^%&%Doa{H!lDH diff --git a/Leetcode/leetcode-231-power-of-two.py b/Leetcode/Bit/leetcode-231-power-of-two.py similarity index 100% rename from Leetcode/leetcode-231-power-of-two.py rename to Leetcode/Bit/leetcode-231-power-of-two.py diff --git a/Leetcode/DP/.DS_Store b/Leetcode/DP/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..aefee115bd0cf4b87e553536f36d2481a666ac1d GIT binary patch literal 6148 zcmeHKJxc>Y5PcgX7;FL-+IgkTMWYCc%^4EV!bX39=Bp4dMv@$u?izoLzt10_Z)TTZ zE~lL$G81Os-t2rZZ;#t70N2U}O`r~7gDP05aVQa47hRD`u&fiE=D5HZ8KxNGcE#Ha ze~|&%yDc-FMIqAF+l@Qm|v#jelH#O7$L9A8FlYng)`76rSA|k^cgwe zEXDz|#+qYFdrZB@NLOa`k(CT{Vi%8$i1p1$nMY>g(Z@qsZTD8FyfL{TN5AJz{6i+H=Oabd|B^E*YJ0oR{|YQpjGzH99y)8&|{z^9+`E!fh8K_-JAb z7z4(@w+!&i7TMVJXrnP;3>X6o2ITt?Q3aELxkvqUaL_9Nu}ZTF=kn)JVxoXaz}zEO zD9(oxeW(jp4CljXkAhzkF!$)g;lky^g~~46P@Gn0{z%>75|1_-1IEBI18e@VF6V#e z>-+z5kUbd##=yT~z*XBf?G{@KXX{FHa@I!FJF1BI end: + begin = j + end = c + print dp + #3. 有时候输出不是dp最后一项 + return s[begin: end+begin] diff --git a/Leetcode/DP/leetcode-53-maximum-subarray.py b/Leetcode/DP/leetcode-53-maximum-subarray.py new file mode 100644 index 0000000..4957988 --- /dev/null +++ b/Leetcode/DP/leetcode-53-maximum-subarray.py @@ -0,0 +1,18 @@ +class Solution(object): + def maxSubArray(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + if len(nums) == 1: + return nums[0] + + dp = [0]*len(nums) + dp[0] = nums[0] + for i in range(1, len(nums)): + if dp[i-1] >= 0: + dp[i] = dp[i-1]+nums[i] + else: + dp[i] = nums[i] + print dp + return max(dp) diff --git a/Leetcode/Graph/.DS_Store b/Leetcode/Graph/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..0287654c0e6efbaffb49587ae06e7e40d82b731a GIT binary patch literal 8196 zcmeHM%}*0S6n_I%w?%B_LmEwR4M90@D5=W97;C{0f(Z>J2myrM?oc*tcbeTT2#D#$ zlkx1wRWIKB8%#WSFdjYW(X&S{M&HbAOMy1wL`CHSd}PTF{V5{kkFNc zM+_p}QLl4z#7u})iP9a2bO#cyOu`ci5v!x0F3f>sB&ty{pcpvH06)9O;69$&UD#+m zzfa8MQWZb&P#=LQp|@JuPCBe$I?O~p|N6bdKJ-U4lv>2M3!7!>L!O#t$M%C%>N{y` zkDNMvMvKNe&UT)QC(g&a;@#any%+kDeJhD>(s07s(X*|5*(lg< zaXz4rg1o&$R}x)^OlPR|aDQrcyNotH`x7GEgh#0>;!Uru`81eskQbKxb+$Db(9)#4 z#xVY-O}D1Yfz4chj(R@gg5i0FTcp|TWydh7Gwo(s5U|p`U0|;KRB;gmFLNH{0S4~; z6a>LQW~wF(Ng)9PQo#4K1etY>5{(XIa&j(;56eNg1rw0Nlm+k%Ucei84RvH7g(v>VBfT0N^E>QECTJ4 z`L^d}`orB;F-y!kwrzR+cjM5H>~fDj;4n7>*1~ttV+ZgZ0bco(4Ypzz=<;O7q|8$W&i*H literal 0 HcmV?d00001 diff --git a/Leetcode/Graph/Tree/.DS_Store b/Leetcode/Graph/Tree/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c6155d918324d8474c0460019f84fd51d46f32b6 GIT binary patch literal 6148 zcmeHKO-lnY5Pi`e3SN5jn4^~!wBQF`mQoL%{R4Ju6=Ca2ZIRyg@AxbAy-6xo_bj3_ zki29j^N|OeWC4WH>h=g20O+#`g9aTUb*E`3FBS%iF-3!0%uwLCBhYVDsrFOUta*kd zKG#3Q3HMQRM=!KJ(^{B)jyZLYoK4tIv#r5`ng(~KFHqru)(N$1YL-N0IK&gyS9LS3 z>ZW35(SE^p@Mgjh5Id?l#}H?Xv#^}^j8w3q6)V}~tgOPW_^)5$TN3Y_0cXG&a0dP{ z1H7{({k??VI|I&uGw{KH&WFe*EHkzV?dV{q=dSJD4W^5BCcLdAKI63p?=OtKn>Z2`3C=+_`3^)VZ4D6=qK==P8Kbg*-{B0MX zIRnnXA7dc&#@FK!H~@p3: + print n + n /= 3.0 + if n<3 and n != 0: + return False + else: + print n + return True diff --git a/Leetcode/leetcode-1137-n-th-tribonacci-number.py b/Leetcode/Recursive/leetcode-1137-n-th-tribonacci-number.py similarity index 100% rename from Leetcode/leetcode-1137-n-th-tribonacci-number.py rename to Leetcode/Recursive/leetcode-1137-n-th-tribonacci-number.py diff --git a/Leetcode/leetcode-779-k-th-symbol-in-grammar.py b/Leetcode/Recursive/leetcode-779-k-th-symbol-in-grammar.py similarity index 100% rename from Leetcode/leetcode-779-k-th-symbol-in-grammar.py rename to Leetcode/Recursive/leetcode-779-k-th-symbol-in-grammar.py From 2279e168acbbc643c8334e2466a6248979c18207 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 13 May 2020 02:38:09 +0800 Subject: [PATCH 109/270] Create Hanoi_Tower.py --- Calculus/Hanoi_Tower.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Calculus/Hanoi_Tower.py diff --git a/Calculus/Hanoi_Tower.py b/Calculus/Hanoi_Tower.py new file mode 100644 index 0000000..82762aa --- /dev/null +++ b/Calculus/Hanoi_Tower.py @@ -0,0 +1,6 @@ +def Hanoi_Tower(n): + assert n > 0 and isinstance(n, int) + dp = [1]*(n+1) + for i in range(2,n+1): + dp[i] = 2*dp[i-1] + 1 + return dp[-1] From 184d18b8a9adf3befbe04874400a564517a2fe96 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 13 May 2020 02:38:21 +0800 Subject: [PATCH 110/270] Update leetcode-5-longest-palindromic-substring.py --- ...eetcode-5-longest-palindromic-substring.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Leetcode/DP/leetcode-5-longest-palindromic-substring.py b/Leetcode/DP/leetcode-5-longest-palindromic-substring.py index 2e081db..998de57 100644 --- a/Leetcode/DP/leetcode-5-longest-palindromic-substring.py +++ b/Leetcode/DP/leetcode-5-longest-palindromic-substring.py @@ -2,6 +2,7 @@ class Solution(object): '''最长回文子串''' def longestPalindrome(self, s): """ + 动态规划 :type s: str :rtype: str 时间复杂度:O(N^2) @@ -33,3 +34,27 @@ def longestPalindrome(self, s): print dp #3. 有时候输出不是dp最后一项 return s[begin: end+begin] + def longestPalindrome_Center(self, s): + """ + 中心扩散算法 + :type s: str + :rtype: str + """ + r = len(s) + if r < 2: + return s + res = s[0] + for i in range(r): + palindromic_odd, odd_len = self.helper(s, r, i, i) + palindromic_even, even_len = self.helper(s, r, i, i+1) + maxpalindromic = palindromic_odd if odd_len > even_len else palindromic_even + if len(maxpalindromic) > len(res): + res = maxpalindromic + return res + def helper(self, s, r, left, right): + i = left + j = right + while i >= 0 and j < r and s[i] == s[j]: + j += 1 + i -= 1 + return s[i+1:j], j-i-1 \ No newline at end of file From 8c3255aca40fddb7401e645bf2e991f8033eee01 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 14 May 2020 15:49:42 +0800 Subject: [PATCH 111/270] update directorytree and loginleetcode --- Calculus/Hanoi_Tower.py | 5 + Calculus/__init__.py | 8 + ...718-maximum-length-of-repeated-subarray.py | 41 +++ Leetcode/login_leetcode.py | 28 ++ README.md | 62 +++- pytree.txt | 289 ++++++++++++------ 6 files changed, 326 insertions(+), 107 deletions(-) create mode 100644 Leetcode/DP/leetcode-718-maximum-length-of-repeated-subarray.py create mode 100644 Leetcode/login_leetcode.py diff --git a/Calculus/Hanoi_Tower.py b/Calculus/Hanoi_Tower.py index 82762aa..4d6381d 100644 --- a/Calculus/Hanoi_Tower.py +++ b/Calculus/Hanoi_Tower.py @@ -1,6 +1,11 @@ +import random def Hanoi_Tower(n): assert n > 0 and isinstance(n, int) dp = [1]*(n+1) for i in range(2,n+1): dp[i] = 2*dp[i-1] + 1 return dp[-1] + +if __name__ == '__main__': + t = random.randrange(50) + print Hanoi_Tower(t) \ No newline at end of file diff --git a/Calculus/__init__.py b/Calculus/__init__.py index e69de29..d3ada5f 100644 --- a/Calculus/__init__.py +++ b/Calculus/__init__.py @@ -0,0 +1,8 @@ +import Catalan +import Hanoi_Tower +import Taylor +import MT19937 +import Zeller +import Marsaglia_polar_method +import interplotate_all +import Pascal_triangle \ No newline at end of file diff --git a/Leetcode/DP/leetcode-718-maximum-length-of-repeated-subarray.py b/Leetcode/DP/leetcode-718-maximum-length-of-repeated-subarray.py new file mode 100644 index 0000000..839b6ef --- /dev/null +++ b/Leetcode/DP/leetcode-718-maximum-length-of-repeated-subarray.py @@ -0,0 +1,41 @@ +#coding: UTF-8 +class Solution(object): + ''' + 方法一:动态规划 + 方法二:滑动其中一个字符串匹配重合的部分 + ''' + def findLength(self, A, B): + """ + 寻找最长重复子串 + :type A: List[int] + :type B: List[int] + :rtype: int + """ + la = len(A) + lb = len(B) + dp = [[0]*(lb+1) for _ in range(la+1)] + res = 0 + begin = 0 + end = 1 + for i in range(1, la+1): + for j in range(1, lb+1): + if A[i-1] == B[j-1]: + #状态转移方程 + dp[i][j] = dp[i-1][j-1]+1 + if dp[i][j] > res: + #print i, j + end = i + begin = i - res -1 + res = max(dp[i][j], res) + + + print("The maximum repeated substring is\n{}").format( A[begin: end]) + return res + +if __name__ =='__main__': + longsubarray = Solution() + a = 'faassvc' + b = 'saassvdsfccasvc' + print("Text1 is {}\nText2 is {}\n").format(a, b) + res = longsubarray.findLength(a, b) + print("The length of repeated substring is \n{}").format(res) diff --git a/Leetcode/login_leetcode.py b/Leetcode/login_leetcode.py new file mode 100644 index 0000000..adb2035 --- /dev/null +++ b/Leetcode/login_leetcode.py @@ -0,0 +1,28 @@ +import requests,json +from requests_toolbelt import MultipartEncoder + +session = requests.Session() +user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36' + +def login(username, password): + url = 'https://leetcode.com' + cookies = session.get(url).cookies + for cookie in cookies: + if cookie.name == 'csrftoken': + csrftoken = cookie.value + + url = "https://leetcode.com/accounts/login" + + params_data = { + 'csrfmiddlewaretoken': csrftoken, + 'login': username, + 'password':password, + 'next': 'problems' + } + headers = {'User-Agent': user_agent, 'Connection': 'keep-alive', 'Referer': 'https://leetcode.com/accounts/login/', "origin": "https://leetcode.com"} + m = MultipartEncoder(params_data) + + headers['Content-Type'] = m.content_type + session.post(url, headers = headers, data = m, timeout = 10, allow_redirects = False) + is_login = session.cookies.get('LEETCODE_SESSION') != None + return is_login \ No newline at end of file diff --git a/README.md b/README.md index 2527c14..0a0e428 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ -

    Directory Tree

    +

    Python Repository

    https://github.com/YoTro/Python_repository
    ├── AWS
    │   ├── AWSRegister.py
    @@ -51,10 +51,11 @@ │   ├── get_img.py
    │   ├── get_ppc.py
    │   └── get_ranks.py
    - ├── Apply_for_Job
    + ├── Apply_for_Job
    │   ├── 51job.py
    │   └── requirements.txt
    ├── CV
    + │   ├── Bezier.py
    │   ├── PDF_to_EPUB
    │   │   ├── pdf_to_epub.py
    │   │   └── requirements.txt
    @@ -65,7 +66,17 @@ │   ├── png_to_SVG.py
    │   └── png_to_SVG.pyc
    ├── Calculus
    - │   └── Taylor.py
    + │   ├── Catalan.py
    + │   ├── Hanoi_Tower.py
    + │   ├── MT19937.py
    + │   ├── MT19937.pyc
    + │   ├── Marsaglia_polar_method.py
    + │   ├── Pascal_triangle.py
    + │   ├── Pascal_triangle.sh
    + │   ├── Taylor.py
    + │   ├── Zeller.py
    + │   ├── __init__.py
    + │   └── interplotate_all.py
    ├── Google_Sample
    │   ├── CUS_Yuntuexpress.py
    │   ├── Google_tranJS.py
    @@ -77,10 +88,43 @@ │   ├── Dijkstra.py
    │   ├── KMP.py
    │   └── __init__.py
    + ├── InsertimgExcel.py
    + ├── LPL
    + │   └── Player_data_LOL.py
    ├── Leetcode
    - │   ├── leetcode-1137-n-th-tribonacci-number.py
    + │   ├── Bit
    + │   │   └── leetcode-231-power-of-two.py
    + │   ├── DP
    + │   │   ├── 198_House_robber.py
    + │   │   ├── README.md
    + │   │   ├── leetcode-08-best-time-to-buy-and-sell-stock.py
    + │   │   ├── leetcode-121-best-time-to-buy-and-sell-stock.py
    + │   │   ├── leetcode-5-longest-palindromic-substring.py
    + │   │   ├── leetcode-53-maximum-subarray.py
    + │   │   └── leetcode-718-maximum-length-of-repeated-subarray.py
    + │   ├── Graph
    + │   │   ├── Linkedlist
    + │   │   └── Tree
    + │   │       ├── leetcode-236-lowest-common-ancestor-of-a-binary-tree.py
    + │   │       └── leetcode-938-range-sum-of-bst.py
    + │   ├── Mathematics
    + │   │   ├── leetcode-202-happy-number.py
    + │   │   └── leetcode-326-power-of-three.py
    + │   ├── Recursive
    + │   │   ├── leetcode-1137-n-th-tribonacci-number.py
    + │   │   └── leetcode-779-k-th-symbol-in-grammar.py
    + │   ├── __init__.py
    + │   ├── __init__.pyc
    + │   ├── leetcode-15-3sum.py
    + │   ├── leetcode-3-longest-substring-without-repeating-characters.py
    + │   ├── leetcode-441-arranging-coins.py
    + │   ├── leetcode-633-sum-of-square-numbers.py
    + │   ├── leetcode-65-valid-number.py
    │   ├── leetcode-69-sqrtx.py
    - │   └── leetcode-938-range-sum-of-bst.py
    + │   ├── leetcode-95-unique-binary-search-trees-ii.py
    + │   └── login_leetcode.py
    + ├── Linkedlist
    + │   └── Linkedlist.py
    ├── Logistics_get_17track.py
    ├── Pygame
    │   ├── 1.py
    @@ -89,7 +133,6 @@ │   ├── 4.py
    │   └── 5.py
    ├── README.md
    - ├── Rename.py
    ├── Sorting_Algorithms
    │   ├── Binary_search.py
    │   ├── Bubble_sort.py
    @@ -106,8 +149,10 @@ │   ├── hashsort.py
    │   └── listsort.txt
    ├── Trees
    + │   ├── AVLTree.py
    + │   └── BST.py
    ├── __init__.py
    - ├── bilibili
    + ├── bilibili
    │   ├── README.md
    │   ├── __init__.py
    │   ├── bilibili_rank.sh
    @@ -118,6 +163,7 @@ ├── covid-19.py
    ├── csv_to_xls.py
    ├── dijkstra.py
    + ├── dingTalkfile.py
    ├── get-pip.py
    ├── keywords_find.py
    ├── pneumonia.py
    @@ -131,7 +177,7 @@

    -12 directories, 86 files +21 directories, 123 files


    diff --git a/pytree.txt b/pytree.txt index 280f958..0a0e428 100644 --- a/pytree.txt +++ b/pytree.txt @@ -1,100 +1,191 @@ -. -├── AWS -│   ├── AWSRegister.py -│   ├── AWS_captchaImage.py -│   ├── AWSsellerxt.py -│   ├── AddtoCart.py -│   ├── Amazozn_email.py -│   ├── Get_AmazonProducts_num.py -│   ├── Get_Amazon_products_num.py -│   ├── Get_Amazon_tag.py -│   ├── Get_description.py -│   ├── Get_questions.py -│   ├── PyAWS_Store_Reviews.py -│   ├── __init__.py -│   ├── amazon.py -│   ├── amazon_cn.py -│   ├── amazon_us.py -│   ├── captchaImg_sso.py -│   ├── get_dimensions.py -│   ├── get_feedbacknum.py -│   ├── get_img.py -│   ├── get_ppc.py -│   └── get_ranks.py -├── Apply_for_Job -│   ├── 51job.py -│   └── requirements.txt -├── CV -│   ├── PDF_to_EPUB -│   │   ├── pdf_to_epub.py -│   │   └── requirements.txt -│   ├── Patch_CAPTCHA.py -│   ├── __init__.py -│   ├── curve_fit_func.py -│   ├── nihe1.png -│   ├── png_to_SVG.py -│   └── png_to_SVG.pyc -├── Calculus -│   └── Taylor.py -├── Google_Sample -│   ├── CUS_Yuntuexpress.py -│   ├── Google_tranJS.py -│   ├── Google_translate_js_API.py -│   └── __init__.py -├── Grapgh\ Theory -│   ├── BFS.py -│   ├── DFS.py -│   ├── Dijkstra.py -│   ├── KMP.py -│   └── __init__.py -├── Leetcode -│   ├── leetcode-1137-n-th-tribonacci-number.py -│   ├── leetcode-69-sqrtx.py -│   └── leetcode-938-range-sum-of-bst.py -├── Logistics_get_17track.py -├── Pygame -│   ├── 1.py -│   ├── 2.py -│   ├── 3.py -│   ├── 4.py -│   └── 5.py -├── README.md -├── Rename.py -├── Sorting_Algorithms -│   ├── Binary_search.py -│   ├── Bubble_sort.py -│   ├── Bucket_sort.py -│   ├── Heap_sort.py -│   ├── Insertion_sort.py -│   ├── Merge_sort.py -│   ├── Quick_sort.py -│   ├── Radix_sort.py -│   ├── Select_sort.py -│   ├── Shell_sort.py -│   ├── __init__.py -│   ├── counting_sort.py -│   ├── hashsort.py -│   └── listsort.txt -├── Trees -├── __init__.py -├── bilibili -│   ├── README.md -│   ├── __init__.py -│   ├── bilibili_rank.sh -│   ├── bilibili_ranking_data_everyday.py -│   ├── log -│   ├── log.err -│   └── requirements.txt -├── covid-19.py -├── csv_to_xls.py -├── dijkstra.py -├── get-pip.py -├── keywords_find.py -├── pneumonia.py -├── postTocart.py -├── price正\210\231.txt -├── pytree.txt -├── taobaoSEO_keyword.pyc -└── xt.py + + + + + + + Directory Tree + + + +

    Python Repository

    + https://github.com/YoTro/Python_repository
    + ├── AWS
    + │   ├── AWSRegister.py
    + │   ├── AWS_captchaImage.py
    + │   ├── AWSsellerxt.py
    + │   ├── AddtoCart.py
    + │   ├── Amazozn_email.py
    + │   ├── Get_AmazonProducts_num.py
    + │   ├── Get_Amazon_products_num.py
    + │   ├── Get_Amazon_tag.py
    + │   ├── Get_description.py
    + │   ├── Get_questions.py
    + │   ├── PyAWS_Store_Reviews.py
    + │   ├── __init__.py
    + │   ├── amazon.py
    + │   ├── amazon_cn.py
    + │   ├── amazon_us.py
    + │   ├── captchaImg_sso.py
    + │   ├── get_dimensions.py
    + │   ├── get_feedbacknum.py
    + │   ├── get_img.py
    + │   ├── get_ppc.py
    + │   └── get_ranks.py
    + ├── Apply_for_Job
    + │   ├── 51job.py
    + │   └── requirements.txt
    + ├── CV
    + │   ├── Bezier.py
    + │   ├── PDF_to_EPUB
    + │   │   ├── pdf_to_epub.py
    + │   │   └── requirements.txt
    + │   ├── Patch_CAPTCHA.py
    + │   ├── __init__.py
    + │   ├── curve_fit_func.py
    + │   ├── nihe1.png
    + │   ├── png_to_SVG.py
    + │   └── png_to_SVG.pyc
    + ├── Calculus
    + │   ├── Catalan.py
    + │   ├── Hanoi_Tower.py
    + │   ├── MT19937.py
    + │   ├── MT19937.pyc
    + │   ├── Marsaglia_polar_method.py
    + │   ├── Pascal_triangle.py
    + │   ├── Pascal_triangle.sh
    + │   ├── Taylor.py
    + │   ├── Zeller.py
    + │   ├── __init__.py
    + │   └── interplotate_all.py
    + ├── Google_Sample
    + │   ├── CUS_Yuntuexpress.py
    + │   ├── Google_tranJS.py
    + │   ├── Google_translate_js_API.py
    + │   └── __init__.py
    + ├── Grapgh Theory
    + │   ├── BFS.py
    + │   ├── DFS.py
    + │   ├── Dijkstra.py
    + │   ├── KMP.py
    + │   └── __init__.py
    + ├── InsertimgExcel.py
    + ├── LPL
    + │   └── Player_data_LOL.py
    + ├── Leetcode
    + │   ├── Bit
    + │   │   └── leetcode-231-power-of-two.py
    + │   ├── DP
    + │   │   ├── 198_House_robber.py
    + │   │   ├── README.md
    + │   │   ├── leetcode-08-best-time-to-buy-and-sell-stock.py
    + │   │   ├── leetcode-121-best-time-to-buy-and-sell-stock.py
    + │   │   ├── leetcode-5-longest-palindromic-substring.py
    + │   │   ├── leetcode-53-maximum-subarray.py
    + │   │   └── leetcode-718-maximum-length-of-repeated-subarray.py
    + │   ├── Graph
    + │   │   ├── Linkedlist
    + │   │   └── Tree
    + │   │       ├── leetcode-236-lowest-common-ancestor-of-a-binary-tree.py
    + │   │       └── leetcode-938-range-sum-of-bst.py
    + │   ├── Mathematics
    + │   │   ├── leetcode-202-happy-number.py
    + │   │   └── leetcode-326-power-of-three.py
    + │   ├── Recursive
    + │   │   ├── leetcode-1137-n-th-tribonacci-number.py
    + │   │   └── leetcode-779-k-th-symbol-in-grammar.py
    + │   ├── __init__.py
    + │   ├── __init__.pyc
    + │   ├── leetcode-15-3sum.py
    + │   ├── leetcode-3-longest-substring-without-repeating-characters.py
    + │   ├── leetcode-441-arranging-coins.py
    + │   ├── leetcode-633-sum-of-square-numbers.py
    + │   ├── leetcode-65-valid-number.py
    + │   ├── leetcode-69-sqrtx.py
    + │   ├── leetcode-95-unique-binary-search-trees-ii.py
    + │   └── login_leetcode.py
    + ├── Linkedlist
    + │   └── Linkedlist.py
    + ├── Logistics_get_17track.py
    + ├── Pygame
    + │   ├── 1.py
    + │   ├── 2.py
    + │   ├── 3.py
    + │   ├── 4.py
    + │   └── 5.py
    + ├── README.md
    + ├── Sorting_Algorithms
    + │   ├── Binary_search.py
    + │   ├── Bubble_sort.py
    + │   ├── Bucket_sort.py
    + │   ├── Heap_sort.py
    + │   ├── Insertion_sort.py
    + │   ├── Merge_sort.py
    + │   ├── Quick_sort.py
    + │   ├── Radix_sort.py
    + │   ├── Select_sort.py
    + │   ├── Shell_sort.py
    + │   ├── __init__.py
    + │   ├── counting_sort.py
    + │   ├── hashsort.py
    + │   └── listsort.txt
    + ├── Trees
    + │   ├── AVLTree.py
    + │   └── BST.py
    + ├── __init__.py
    + ├── bilibili
    + │   ├── README.md
    + │   ├── __init__.py
    + │   ├── bilibili_rank.sh
    + │   ├── bilibili_ranking_data_everyday.py
    + │   ├── log
    + │   ├── log.err
    + │   └── requirements.txt
    + ├── covid-19.py
    + ├── csv_to_xls.py
    + ├── dijkstra.py
    + ├── dingTalkfile.py
    + ├── get-pip.py
    + ├── keywords_find.py
    + ├── pneumonia.py
    + ├── postTocart.py
    + ├── price正则.txt
    + ├── pytree.html
    + ├── pytree.txt
    + ├── taobaoSEO_keyword.pyc
    + └── xt.py
    +

    +

    +

    -12 directories, 85 files +21 directories, 123 files +

    +

    +
    +

    + tree v1.8.0 © 1996 - 2018 by Steve Baker and Thomas Moore
    + HTML output hacked and copyleft © 1998 by Francesc Rocher
    + JSON output hacked and copyleft © 2014 by Florian Sesser
    + Charsets / OS/2 support © 2001 by Kyosuke Tokoro +

    + + From e3ae64b3f0ba515309d3b5397ceb7f07916351c4 Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 15 May 2020 21:39:17 +0800 Subject: [PATCH 112/270] Create leetcode-464-can-i-win.py --- Leetcode/DP/leetcode-464-can-i-win.py | 152 ++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 Leetcode/DP/leetcode-464-can-i-win.py diff --git a/Leetcode/DP/leetcode-464-can-i-win.py b/Leetcode/DP/leetcode-464-can-i-win.py new file mode 100644 index 0000000..0eb1b2c --- /dev/null +++ b/Leetcode/DP/leetcode-464-can-i-win.py @@ -0,0 +1,152 @@ +#coding: UTF-8 +#Author: Toryun +#Date: 2020-05-14 21:18:00 +#Function: DP to find how can I win in '100game' + +import random +import time +from functools import wraps +import functools #应用于高阶函数,即参数或(和)返回值为其他函数的函数。 通常来说,此模块的功能适用于所有可调用对象。 + +def use_time(func): + #装饰器 + @wraps(func) + def decoreted(*args, **kwargs): + t0 = time.time() + res = func(*args, **kwargs) + t1 = time.time() + print("{}已被调用,用时:{}\n结果是:{}".format(func.__name__, t1-t0, res)) + return t1-t0 + return decoreted +class Solution(): + @use_time + def canIWin(self, maxChoosableInteger, desiredTotal): + maxSum = maxChoosableInteger*(maxChoosableInteger+1)/2 + #1. 如果目标值大于所有数累计合,则返回false + if maxSum < desiredTotal: + return False + #2. 如果相等,如果回合数为奇数则返回True + elif maxSum == desiredTotal: + return maxChoosableInteger % 2 == 1 + #3. 如果最大值直接大于目标值则直接返回True + elif maxChoosableInteger > desiredTotal: + return True + #记录已经计算过的数组 + seen = {} + + def helper(choices, remainder): + ''' + choices ->list[int]:含有未选择过的数 + remainder ->int :减去选择过的数之后的余数desiredTotal + ''' + #如果数组中最大的数大于余数,则直接返回True + if choices[-1] >= remainder: + return True + #字典的键类型不能是list + seen_key = tuple(choices) + #如果是已经计算过的直接返回,减少计算时间 + if seen_key in seen: + return seen[seen_key] + #深度遍历数组中剩余的数 + #选择能让我方稳赢的数 + for i in range(len(choices)): + #如果对方不能赢,则我方取胜 + if not helper(choices[:i]+choices[i+1:], remainder - choices[i]): + seen[seen_key] = True + return True + #否则返回False + seen[seen_key] = False + return False + return helper(list(range(1, maxChoosableInteger+1)), desiredTotal) + @use_time + def canIWin_bit_LRU(self, maxChoosableInteger, desiredTotal): + ''' + DFS+按位操作+LRU缓存备忘 + ''' + + if desiredTotal <= maxChoosableInteger: + return True + if sum(range(maxChoosableInteger + 1)) < desiredTotal: + return False + #如果maxsize不为None,则缓存一定长度的数据提高输入输出执行时间,None表示LRU特性将被禁用且缓存可无限增长,用此功能实现备忘功能此功能只有在3.2才有 + @functools.lru_cache(None) + def dfs(used, desiredTotal): + #深度遍历选择哪个数能稳赢 + for i in range(maxChoosableInteger): + #查看数字数否被选取 + cur = 1 << i + #如果被选取,则让对手操作 + if cur & used == 0: + #如果对手不能选择稳赢的数,则我方获胜 + if desiredTotal <= i + 1 or not dfs(cur | used, desiredTotal - i - 1): + return True + #print(dfs.cache_info()) + #如果没有稳赢的数返回False + return False + + return dfs(0, desiredTotal) + + @use_time + def canIWin_bit_dic(self, maxChoosableInteger, desiredTotal): + ''' + DFS+按位操作+字典备忘 + ''' + if desiredTotal <= maxChoosableInteger: + return True + if sum(range(maxChoosableInteger + 1)) < desiredTotal: + return False + #记录是否被计算过 + record = {} + def dfs(used, desiredTotal): + if record.get(used): + return record.get(used) + #深度遍历选择哪个数能稳赢 + for i in range(maxChoosableInteger): + #查看数字数否被选取 + cur = 1 << i + #如果被选取,则让对手操作 + if cur & used == 0: + #如果对手不能选择稳赢的数,则我方获胜 + if desiredTotal <= i + 1 or not dfs(cur | used, desiredTotal - i - 1): + record[used] = True + return True + #print(dfs.cache_info()) + #如果没有稳赢的数返回False + record[used] = False + return False + + return dfs(0, desiredTotal) + @use_time + def canIWin_Law(self, maxChoosableInteger, desiredTotal): + ''' + 数学规律 + ''' + + sn = maxChoosableInteger + maxChoosableInteger * (maxChoosableInteger - 1) / 2 + + if(desiredTotal > sn): + return False + #特例 + if(maxChoosableInteger == 10 and (desiredTotal == 40 or desiredTotal == 54)): + return False + if(maxChoosableInteger == 20 and (desiredTotal == 210 or desiredTotal == 209)): + return False + if(maxChoosableInteger == 18 and (desiredTotal == 171 or desiredTotal == 172)): + return False + if(maxChoosableInteger == 12 and desiredTotal == 49): + return True + + #规律如下:desiredTotal == 1必胜,如果累计值模上最大值余1那必输,否则必胜。(但不一定成立,反例如上数据) + return desiredTotal == 1 or desiredTotal % maxChoosableInteger != 1 + +if __name__ == '__main__': + #maxChoosableInteger 不大于20 + maxChoosableInteger = 10#random.randrange(21) + desiredTotal = 15#random.randrange(301) + print("最大的数是:{}, 累加目标值是:{}\n".format(maxChoosableInteger,desiredTotal)) + solution = Solution() + t0 = solution.canIWin(maxChoosableInteger, desiredTotal) + t1 = solution.canIWin_bit_LRU(maxChoosableInteger, desiredTotal) + t2 = solution.canIWin_Law(maxChoosableInteger, desiredTotal) + t3 = solution.canIWin_bit_dic(maxChoosableInteger, desiredTotal) + print("字典操作的时间比LRU+bit的快{}倍\n数学规律比字典快{}倍\n数学规律比LRU+bit快{}倍\n字典+bit比LRU+bit快{}倍\n".format(t0/t1, t2/t0, t2/t1, t3/t1)) From 007f46a934c5634724921660f142d32cb162c979 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 16 May 2020 01:56:52 +0800 Subject: [PATCH 113/270] Update leetcode-464-can-i-win.py --- Leetcode/DP/leetcode-464-can-i-win.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Leetcode/DP/leetcode-464-can-i-win.py b/Leetcode/DP/leetcode-464-can-i-win.py index 0eb1b2c..e0058bb 100644 --- a/Leetcode/DP/leetcode-464-can-i-win.py +++ b/Leetcode/DP/leetcode-464-can-i-win.py @@ -141,8 +141,8 @@ def canIWin_Law(self, maxChoosableInteger, desiredTotal): if __name__ == '__main__': #maxChoosableInteger 不大于20 - maxChoosableInteger = 10#random.randrange(21) - desiredTotal = 15#random.randrange(301) + maxChoosableInteger = random.randrange(21) + desiredTotal = random.randrange(301) print("最大的数是:{}, 累加目标值是:{}\n".format(maxChoosableInteger,desiredTotal)) solution = Solution() t0 = solution.canIWin(maxChoosableInteger, desiredTotal) From 34e5604696f6c51e9fd10b6b54a0b04300569fe6 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 16 May 2020 02:01:05 +0800 Subject: [PATCH 114/270] update --- keywords_find.py => AWS/keywords_find.py | 0 postTocart.py => AWS/postTocart.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename keywords_find.py => AWS/keywords_find.py (100%) rename postTocart.py => AWS/postTocart.py (100%) diff --git a/keywords_find.py b/AWS/keywords_find.py similarity index 100% rename from keywords_find.py rename to AWS/keywords_find.py diff --git a/postTocart.py b/AWS/postTocart.py similarity index 100% rename from postTocart.py rename to AWS/postTocart.py From 3267b26ad19f29c1ef04907830a8909cf7894dfc Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 16 May 2020 04:47:36 +0800 Subject: [PATCH 115/270] Update README.md --- Leetcode/DP/README.md | 60 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/Leetcode/DP/README.md b/Leetcode/DP/README.md index f4f47ab..6684589 100644 --- a/Leetcode/DP/README.md +++ b/Leetcode/DP/README.md @@ -1,4 +1,60 @@ -# DP的理解与步骤 -[什么是动态规划(Dynamic Programming)?](https://www.zhihu.com/question/23995189) + + + + + + + DP + + + + +

    DP

    +[什么是动态规划(Dynamic Programming)?](https://www.zhihu.com/question/23995189) +

    + https://github.com/YoTro/Python_repository/tree/master/Leetcode/DP
    + ├── 198_House_robber.py
    + ├── DPtree.html
    + ├── README.md
    + ├── leetcode-08-best-time-to-buy-and-sell-stock.py
    + ├── leetcode-121-best-time-to-buy-and-sell-stock.py
    + ├── leetcode-464-can-i-win.py
    + ├── leetcode-5-longest-palindromic-substring.py
    + ├── leetcode-53-maximum-subarray.py
    + └── leetcode-718-maximum-length-of-repeated-subarray.py
    +

    +

    +

    +0 directories, 9 files +

    +

    +
    +

    + tree v1.8.0 © 1996 - 2018 by Steve Baker and Thomas Moore
    + HTML output hacked and copyleft © 1998 by Francesc Rocher
    + JSON output hacked and copyleft © 2014 by Florian Sesser
    + Charsets / OS/2 support © 2001 by Kyosuke Tokoro +

    + + From baa98f4411b94d14c105803953919465c9eb9b71 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 18 May 2020 00:12:53 +0800 Subject: [PATCH 116/270] Update leetcode-464-can-i-win.py --- Leetcode/DP/leetcode-464-can-i-win.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Leetcode/DP/leetcode-464-can-i-win.py b/Leetcode/DP/leetcode-464-can-i-win.py index e0058bb..18c758e 100644 --- a/Leetcode/DP/leetcode-464-can-i-win.py +++ b/Leetcode/DP/leetcode-464-can-i-win.py @@ -75,7 +75,7 @@ def dfs(used, desiredTotal): for i in range(maxChoosableInteger): #查看数字数否被选取 cur = 1 << i - #如果被选取,则让对手操作 + #如果该数未被选取,则让对手操作 if cur & used == 0: #如果对手不能选择稳赢的数,则我方获胜 if desiredTotal <= i + 1 or not dfs(cur | used, desiredTotal - i - 1): @@ -104,7 +104,7 @@ def dfs(used, desiredTotal): for i in range(maxChoosableInteger): #查看数字数否被选取 cur = 1 << i - #如果被选取,则让对手操作 + #如果该数未被选取,则让对手操作 if cur & used == 0: #如果对手不能选择稳赢的数,则我方获胜 if desiredTotal <= i + 1 or not dfs(cur | used, desiredTotal - i - 1): From 1e4c1ad8cc6f732edf41300c1d3126d78b505144 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 18 May 2020 00:13:51 +0800 Subject: [PATCH 117/270] Create Primenumber.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit n内的素数和个数 --- Calculus/Primenumber.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Calculus/Primenumber.py diff --git a/Calculus/Primenumber.py b/Calculus/Primenumber.py new file mode 100644 index 0000000..b8a3d93 --- /dev/null +++ b/Calculus/Primenumber.py @@ -0,0 +1,18 @@ +#coding:utf-8 + +import math +import random +def primeNumber(n): + ''' + 获取1,n(包括n)之间的质数 + ''' + isPrime = [1]*(n+1) + for i in range(2, int(math.sqrt(n))+1): + if isPrime[i]: + for j in range(i**2, n+1, i): + isPrime[j] = 0 + return [isPrime[i]*i for i in range(n+1) if isPrime[i]*i != 0] + +if __name__ == '__main__': + n = random.randrange(100) + print("1~{}的素数是:\n{}\n总共个数是:{}\n".format(n, primeNumber(n), len(primeNumber(n)))) \ No newline at end of file From 439986378d44cbe063ed944cccf3a832788e7f70 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 05:53:35 +0800 Subject: [PATCH 118/270] Create leetcode-152-maximum-product-subarray.py --- .../leetcode-152-maximum-product-subarray.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Leetcode/DP/leetcode-152-maximum-product-subarray.py diff --git a/Leetcode/DP/leetcode-152-maximum-product-subarray.py b/Leetcode/DP/leetcode-152-maximum-product-subarray.py new file mode 100644 index 0000000..5968489 --- /dev/null +++ b/Leetcode/DP/leetcode-152-maximum-product-subarray.py @@ -0,0 +1,29 @@ +class Solution(object): + def maxProduct(self, nums): + """ + 动态规划解决乘积最大子数组 + :type nums: List[int] + :rtype: int + """ + l = len(nums) + #如果数组为空 + if l == 0: + return 0 + #如果数组只有一个元素 + if l == 1: + return nums[0] + #如果数组中无0,而且无负数或者负数个数为偶数个,直接返回乘积 + sn = 1 + for i in range(l): + sn *= nums[i] + if sn > 0: + return sn + #第i个数的0位保存最大值, 1位保存最小值 + dp = [[0]*2 for _ in range(l)] + dp[0] = [nums[0],nums[0]] + for i in range(1, l): + #状态转移方程 + dp[i] = [max(dp[i-1][0]*nums[i], max(dp[i-1][1]*nums[i], nums[i])), min(dp[i-1][1]*nums[i], min(dp[i-1][0]*nums[i], nums[i]))] + #print dp[i] + #print dp + return max(max(dp)) From efaf78556808d8a15b0de17300122ee2b009ebe7 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 05:54:01 +0800 Subject: [PATCH 119/270] Create leetcode-486-maximum-length-of-repeated-subarray.py --- ...486-maximum-length-of-repeated-subarray.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Leetcode/DP/leetcode-486-maximum-length-of-repeated-subarray.py diff --git a/Leetcode/DP/leetcode-486-maximum-length-of-repeated-subarray.py b/Leetcode/DP/leetcode-486-maximum-length-of-repeated-subarray.py new file mode 100644 index 0000000..ed8c2a9 --- /dev/null +++ b/Leetcode/DP/leetcode-486-maximum-length-of-repeated-subarray.py @@ -0,0 +1,34 @@ +class Solution(object): + def PredictTheWinner(self, nums): + """ + 1. 状态转移方程:dp(x,y) = dp(x+2,y) && dp(x+1,y-1) || dp(x,y-2) && dp(x+1,y-1) + 2. dp(x,y)解释:玩家1第一个从第x到第y个元素中取是否能获胜。 + 3. 玩家取x后,下一次再取的时候会有两种情况dp(x+2,y) && dp(x+1,y-1)这两种情况是根据玩家2的两种拿法来的。 + 4. 同理,玩家取y后,也有两种情况dp(x,y-2) && dp(x+1,y-1) + 5. 所以,如果取x的两种情况都能赢或者取y的两种情况都能赢玩家1就能赢。 + :type nums: List[int] + :rtype: bool + """ + l = len(nums) + if l == 0: + return False + if l == 1: + return True + #如果是偶数个的数组,稳赢 + if l % 2 == 0: + return True + dp = [[0]*(l) for i in range(l)] + #从下往上,从左往右填写二维数组 + for i in range(l-2, -1, -1): + for j in range(i+1, l, 1): + a = nums[i] - dp[i+1][j] + b = nums[j] - dp[i][j-1] + dp[i][j] = max(a, b) + print dp + return dp[0][l-1] >= 0 + +if __name__ == '__main__': + solution = Solution() + nums = [3,5,6,2,7,2,8] + dp = solution.PredictTheWinner(nums) + print dp \ No newline at end of file From be57024b0f57cad9c49f56088916c6f1b6f3d6f0 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 06:14:30 +0800 Subject: [PATCH 120/270] Create leetcode-279-perfect-squares.py --- Leetcode/DP/leetcode-279-perfect-squares.py | 74 +++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Leetcode/DP/leetcode-279-perfect-squares.py diff --git a/Leetcode/DP/leetcode-279-perfect-squares.py b/Leetcode/DP/leetcode-279-perfect-squares.py new file mode 100644 index 0000000..d3be779 --- /dev/null +++ b/Leetcode/DP/leetcode-279-perfect-squares.py @@ -0,0 +1,74 @@ +#coding:UTF-8 +class Solution(): + ''' + def numSquares(self, n): + + 暴力解法 + :type n: int + :rtype: int + + if n == 0: + return 0 + res = [i**2 for i in range(n+1)] + #print res + if n in res: + return 1 + an = [1]*(n+1) + for i in range(1, n+1): + if i in res: + continue + s = [] + for j in range(1,i): + if j in res: + s.append(an[j]+an[i-j]) + #print s + an[i] = min(s) + print(an) + return an[-1] + ''' + def numSquares_dp(self, n): + """ + :type n: int + :rtype: int + """ + res = [i**2 for i in range(0, int(math.sqrt(n))+1)] + + dp = [float('inf')] * (n+1) + dp[0] = 0 + + for i in range(1, n+1): + for j in res: + if i < j: + break + dp[i] = min(dp[i], dp[i-j] + 1) + + return dp[-1] + def isSquare(self, n: int) -> bool: + sq = int(math.sqrt(n)) + return sq*sq == n + + def numSquares(self, n): + ''' + if n=4^k(8m+7): return 4 + ''' + # four-square and three-square theorems + while (n & 3) == 0: + n >>= 2 # reducing the 4^k factor from number + if (n & 7) == 7: # mod 8 + return 4 + + if self.isSquare(n): + return 1 + # check if the number can be decomposed into sum of two squares + for i in range(1, int(n**(0.5)) + 1): + if self.isSquare(n - i*i): + return 2 + # bottom case from the three-square theorem + return 3 + + + + +if __name__ == '__main__': + solution = Solution() + an = solution.numSquares_dp(23) From f5a098fe88f0648cd5a4e06b79625dd0abf87013 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 06:14:44 +0800 Subject: [PATCH 121/270] Create leetcode-1371-find-the-longest-substring-containing-vowels-in-even-counts.py --- ...string-containing-vowels-in-even-counts.py | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Leetcode/Bit/leetcode-1371-find-the-longest-substring-containing-vowels-in-even-counts.py diff --git a/Leetcode/Bit/leetcode-1371-find-the-longest-substring-containing-vowels-in-even-counts.py b/Leetcode/Bit/leetcode-1371-find-the-longest-substring-containing-vowels-in-even-counts.py new file mode 100644 index 0000000..68dffcc --- /dev/null +++ b/Leetcode/Bit/leetcode-1371-find-the-longest-substring-containing-vowels-in-even-counts.py @@ -0,0 +1,89 @@ +#coding:utf-8 +class Solution: + '''每个元音包含偶数次的最长子字符串''' + def findTheLongestSubstring(self, s): + ''' + 用到了状态压缩+动态规划/hashmap + 用'00000'-'11111'表示元音'aeiou'出现的次数为奇数或偶数 + + 解题思路 + 对于代码中一些变量的解释 + + 这里由于只考虑每个元音奇偶次数,因此考虑用二进制来记录; + + 定义特征,aeiou分别对应二进制00001,00010,00100,01000,10000 + 其中0表示对应元音出现了偶数次数,1表示奇数 + 从左往右遍历字符串,不断更新dp; + + dp[pattern]的作用是用来记录当前索引值下对应的元音奇偶次数组合特征; + 例如:如果pattern为10,也就是对应二进制 01010,dp[pattern] = 8的意思为,当索引值为8的时候,e和o都出现了奇数次,其它元音为偶数次。 + + 如何找到符合条件最大长度? + + 根据异或运算规律,异或本身为0,所以当重复出现偶数次,对应位变为0,否则为1 + 由这个规律可以断定,当再次出现这个pattern的时候,一定出现了偶数次 + 为了方便解释,pattern如下用二进制表示: + 例如,pattern的值变化为 31-->30-->28-->29-->31 + 对应的二进制位[11111]-->[11110]-->[11100]-->[11101]-->[11111] + 一个合理的字符串变化: ‘aeiou’ --> 'aeioua'-->'aeiouae'-->'aeiouaea'-->'aeiouaeae' + 由此可见,从'aeiou'到'aeiouaeae'这个过程中,多余出来的‘aeae’为符合条件的字符串 + 所以,在这个过程中,不管中间发生了什么样的变化,这两个状态之间对应的元音为偶数,也就是一定符合题意的字符串 + 因此,不断更新res,来获得最大字符串长度 + 代码步骤解释 + + 首先初始化dp长度为32,对应了5个元音每个次数或奇或偶一共32种状态 + 异或运算部分: + 遍历字符串,从起始pattern,也就是0开始,不断根据对应情况做异或运算 + 如果出现的是辅音,不进行异或运算 + 如果出现的是元音,根据元音种类分别对应做异或运算 + 答案更新: + 如果当前的pattern没有出现过,那么以这个pattern为键,记录下当前位置,也就是索引的位置 + 如果出现过,那么更新目标长度: + 这里有两种情况: + 当前如果不是元音,相当于i变化了1,而dp[pattern]不变,相当于辅音的时候直接增加1的长度 + 如果是元音,说明出现了偶数次的元音,那么i-dp[pattern]相当于在原来基础上增加了一部分长度,这一部分长度满足偶数次的元音 + + 举个例子,s='leetcodeo' + + dp[0]=-1,为了计算长度方便定义,或者理解为,开始计算前,参照点在第一个字符之前,也就是-1的位置 + i=0,l不是元音,pattern不变, + i=1,e是元音,pattern变化,由0变为2,二进制下为 [00010] dp对应当前pattern对应索引更新为1 + i=2,e是元音,pattern变化,由2变为0,二进制下为 [00000] 即初始状态,更新res为 2-(-1) = 3 + i=3,t不是元音,pattern不变,res更新为 3-(-1) = 4 + i=4,c不是元音,pattern不变,res更新为 4-(-1) = 5 + i=5,o是元音,pattern变化,由0变为8,二进制下为[01000],dp对应当前pattern对应索引更新为5 + i=6,d不是元音,pattern不变,对应cur_len为 6-5=1,没有5大,所以当前res还是5 + i=7,e是元音,pattern变化,由8变为10,二进制下为[01010],dp对应当前pattern对应索引更新为7 + i=8,o是元音,pattern变化,由10变为2,二进制下为[00010],由于这个pattern在i=1出现过,所以用这个对应的i来更新cur_len = i-dp[pattern] = 8-1 = 7, 同时res更新到7 + 遍历结束,结果为7 + + ''' + dp = [-float('inf')]*32 + dp[0] = -1 + pattern = 0 + res = 0 + print ("i p cn rs") + for i in range(len(s)): + if s[i] == 'a': + pattern^= (1<<0) + elif s[i] == 'e': + pattern^= (1<<1) + elif s[i] == 'i': + pattern^= (1<<2) + elif s[i] == 'o': + pattern^= (1<<3) + elif s[i] == 'u': + pattern^= (1<<4) + if dp[pattern] != -float('inf'): + cur_len = i-dp[pattern] + res = max(res,cur_len) + #print (i, pattern, cur_len, res) + #print dp + else: + dp[pattern] = i + #print dp[pattern] + #print (i, pattern, res) + #print dp + return res + + From 679be255cbaa365d4fbcb65cfa245cc4bec45a40 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 06:14:53 +0800 Subject: [PATCH 122/270] Update leetcode-231-power-of-two.py --- Leetcode/Bit/leetcode-231-power-of-two.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Leetcode/Bit/leetcode-231-power-of-two.py b/Leetcode/Bit/leetcode-231-power-of-two.py index de46e48..da3cd51 100644 --- a/Leetcode/Bit/leetcode-231-power-of-two.py +++ b/Leetcode/Bit/leetcode-231-power-of-two.py @@ -1,4 +1,5 @@ -class Solution(object): +#coding:utf-8 +class Solution(object): '''位运算,2的幂的规律是所有数在二进制中都只还有一个1其余都是0''' def isPowerOfTwo(self, n): if n == 0: From b2ea063c853ab7ca366085f02930dd97f0edc0e1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 06:15:12 +0800 Subject: [PATCH 123/270] Create leetcode-95-unique-binary-search-trees-ii.py --- ...etcode-95-unique-binary-search-trees-ii.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Leetcode/Graph/Tree/leetcode-95-unique-binary-search-trees-ii.py diff --git a/Leetcode/Graph/Tree/leetcode-95-unique-binary-search-trees-ii.py b/Leetcode/Graph/Tree/leetcode-95-unique-binary-search-trees-ii.py new file mode 100644 index 0000000..35ba97e --- /dev/null +++ b/Leetcode/Graph/Tree/leetcode-95-unique-binary-search-trees-ii.py @@ -0,0 +1,32 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-05-18 16:56:00 + +class TreeNode(): + def __init__(self, x): + self.val = x + self.left = None + self.right = None +def generateTrees(n): + '''生成1~n为节点的所有二叉搜索树, 有卡特兰数种的二叉搜索树''' + def generate_trees(start, end): + if start > end: + return [None] + all_trees = [] + for i in range(start, end+1): + ltree = generate_trees(start, i-1) + rtree = generate_trees(i+1, end) + for l in ltree: + for r in rtree: + c = TreeNode(i) + c.left = l + c.right = r + all_trees.append(c) + return all_trees + return generate_trees(1, n) if n else [] +def preorder(head): + if head: + print head.val + preorder(head.left) + preorder(head.right) + return head From 69c552be8faca949b9f73a0068f3a1cce7e6fe6d Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 06:15:20 +0800 Subject: [PATCH 124/270] Delete leetcode-95-unique-binary-search-trees-ii.py --- ...etcode-95-unique-binary-search-trees-ii.py | 27 ------------------- 1 file changed, 27 deletions(-) delete mode 100644 Leetcode/leetcode-95-unique-binary-search-trees-ii.py diff --git a/Leetcode/leetcode-95-unique-binary-search-trees-ii.py b/Leetcode/leetcode-95-unique-binary-search-trees-ii.py deleted file mode 100644 index 8991960..0000000 --- a/Leetcode/leetcode-95-unique-binary-search-trees-ii.py +++ /dev/null @@ -1,27 +0,0 @@ -class TreeNode(): - def __init__(self, x): - self.val = x - self.left = None - self.right = None -def generateTrees(n): - def generate_trees(start, end): - if start > end: - return [None] - all_trees = [] - for i in range(start, end+1): - ltree = generate_trees(start, i-1) - rtree = generate_trees(i+1, end) - for l in ltree: - for r in rtree: - c = TreeNode(i) - c.left = l - c.right = r - all_trees.append(c) - return all_trees - return generate_trees(1, n) if n else [] -def preorder(head): - if head: - print head.val - preorder(head.left) - preorder(head.right) - return head From dfa8b9c29f7890a92f1bbbfea43b09740fd9abdf Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 21 May 2020 06:15:39 +0800 Subject: [PATCH 125/270] update --- Leetcode/.DS_Store | Bin 10244 -> 10244 bytes Leetcode/Bit/.DS_Store | Bin 0 -> 6148 bytes Leetcode/DP/.DS_Store | Bin 6148 -> 6148 bytes Leetcode/Graph/.DS_Store | Bin 8196 -> 8196 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Leetcode/Bit/.DS_Store diff --git a/Leetcode/.DS_Store b/Leetcode/.DS_Store index 4262b2725b65f6f110b1783edbc705ed724fd593..8f9331cfa72269c51d2c87211eae898f875bd400 100644 GIT binary patch delta 1744 zcmeH{Piz!b9LIm(?Vo)w6#DvS+u3Qc)opEo70W`GEeLjt77$3Q^dE@m?9KoawzKQb zbX$zL(ex+^jvh48sCZC%B5M!Ci!nyUi-|T74;=h^@SsLjCr5 zcOp6Dp6yJ#jiS&JNTtI?E0?!UdjE2t6ffU$ta7X=1(rx9rDI~ybF5r%{sQVkrjRpj zXJFtOLN&E@^O8fA3vzWwg)krwxS`$&1l%;v4b<`c%FqPb)m^J4|a%v<)9QMBdE z`BFnf?TYo^mDqkydS&gpM!}nT>vYMq%}maioHupn)Dg|j8kTNaCy$!CVL9dr(6{TU#;VqiPNmF`>6&94%Ilt&E|wXuO5L4`^024u zDH`&t2Od4W3ZJlLwn7UIZrI5A#A(ygh0T4}&3AKUGN)yXoY1)+XzMnvOqcvCi35Q# zHN=&fayCCZD|5D+5D)CTb}PzpFZ4mpcE$>ZCDZyOh(99JI^t<*UH6h=vEhDM4>_uL zjSUa@I{{)8r8w=TQ94RlvS^;3rE~Ngy+Rjhi7wN7^bvhb<*W25eMZ;lYxk+c=$9mx3orXi}lC1BzF$a+X!GaeO%Hd;H$mrCdNd_*EXvITmmI(d~GWqWD*@w=c_4R-oYhZ zqSlvp@q3wsNYt-H+m*KT28?juXhEfFf+n;VG2yw4`AX=kUB_ z;)N;|ui{Pj^=KECD(^>^LoAW>y2iG_%Gu84P$k^`YpvVR`quxg<3Haz?0=zk{0ZkO BvJ(IR delta 1722 zcmeH{U2GIp6vxkh`>}T}Exlzaox66rwM(_o7FL!@ixpcC`6?E|*0x9+x1A9tw%cuI zThN#+DiSqDT?g<14Fq@sl7?)WC@;P!m}ms!YScs@^u@#%qtQfTqIY&00*S`(&V87h zb57=*d(ZEG?vY(bcD>P8)ks7j5_I35vB`<_rKuCa+~H6@$VwR+-JgWxW~xt=x3@OL z<1sfE>dEh3(g7Ba`<{F*v@{TYYcxG>JDFJQD+EeP%gTdHu&Dp9?J^S!odr84%Dwl&><&^9v%hLX;h zl``$r{()KBu}8+{DC3Y{V3zCNpU^eBPM^^?^gaDZztFGr8~sjygF(Y0R6wE;Q7lIcomh`9Jcy0h zfnGd{J|r-V5j=q;_9KlcILP2xyojTC8Lz;_+js}3a2j)X7w_RRK4`{=_!OU`;GZy{ z6jfY17xsk>-@5g>43GSqUX0C;@U1uNrTu2Td|ly-B($`qKHA*2W?fg$jn3ZEO!qIn zC3`D#)m$0AiyQrlqIKxMlqG^5F6N<-kp{yM9w*;i-lWWc(vokkSZQ!kqLfn9pj@?@ z8=_2!!jHz+@+=pnN;ZDDqf>>;l|EQO*6Pdn2HvfC0v1#(r8OCxX}81LM}3Aa&}F(p zA1lOP(s%R&{Y-x-yk)4uaIK3M)(N5qo3}Og- zF$PPqJ^&ljiuEiG;t-z0^F`(_A%`~=^<#?q8Ju-z!Vz4|9}mw5ZoC8D%ix}?tIeM` hh6B07U*v-gf0nvO^@clxe`oO3@ZZ+pNB(E<{{a_{qZ9xD diff --git a/Leetcode/Bit/.DS_Store b/Leetcode/Bit/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..257e866da13a7a8b93e446a1ad9f2a0c4a1e15ae GIT binary patch literal 6148 zcmeHKu};H441HHR6tQ$APk$yCC~@ZqY8G8Y4(VWi|$CrB7#9{j8S8PDI!?g|vs$g!|Ce&94jeI`Jcvnz_ zzI>_)W`?<8n~)=vkWz^$HP|mkNa>7cHZM196Q*(0%|S({NGsUkA3O}I&+qen64 e%29kuRbf06hnO3-2^pdIhk(-H#u@li2EG7e7e?X$ literal 0 HcmV?d00001 diff --git a/Leetcode/DP/.DS_Store b/Leetcode/DP/.DS_Store index aefee115bd0cf4b87e553536f36d2481a666ac1d..70c66cdd98b7a949c2ae10beedd19aa2f5a10e59 100644 GIT binary patch delta 458 zcmZuuze~eF6#gzJ8iG)eSm`7#Do7;OYAu2wx^%LmYfNJev`yNk>K{;d%PpOC5?mys ze~tfv;NYm=-57Gm-Fx@m`@Z+%X8z27u3AgZd{mw9Zwcq4^C@1xr6rtv)w&R^UGx!g zX9$s?OU=Upj!>r@AiyJH$|;YB6k`)JWo)MI{)j;pdOm4rnoUNW8>|Swk8(pQpQ(@CFL|ZtrOykv(i)5`7+$mo3L-sbehs0 o&>Er332rarO&6?QWIJE6D>i>B|B}B_Roru102aN-uiba~54=ogUjP6A delta 75 zcmZoMXfc=|#>B)qu~2NHo+2ab#(>?7jI5h^SezLrKV^%Xe3IR6vjPV@%ftrJ&Fmcf d96+U;1v$PmPv#eK From f69e1c888817a48e2d454f444d9c449fca4ada21 Mon Sep 17 00:00:00 2001 From: YoTro Date: Fri, 22 May 2020 22:27:28 +0800 Subject: [PATCH 126/270] Create leetcode-322-coin-change.py --- Leetcode/DP/leetcode-322-coin-change.py | 69 +++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Leetcode/DP/leetcode-322-coin-change.py diff --git a/Leetcode/DP/leetcode-322-coin-change.py b/Leetcode/DP/leetcode-322-coin-change.py new file mode 100644 index 0000000..4e119f7 --- /dev/null +++ b/Leetcode/DP/leetcode-322-coin-change.py @@ -0,0 +1,69 @@ +#coding:utf-8 +#Author:Toryun +#Date: 2020-05-22 04:02:00 +#Function: coin-change + +import random + +class Solution(): + def coinChange(self, coins, amount): + ''' + 兑换零钱,使用动态规划记录所有面值的纸币到达amount目标值的结果 + coins: list[int] + amount: int + + 1.找子问题/最优子结构: 每次获取一枚某面值(coin)的硬币(+1)之前的状态dp(S-coin), dp(S-coin)也是 + + 1. 明确状态:这里的状态是指原问题和子问题中变化的变量,从问题出发,我们发现要凑成刚好的硬币数, 只有amount是可变的, 它可以当作状态, 因为硬币的个数是无限的,所以唯一的状态就是目标的金额amount。 + + 2. 定义dp数据/函数的含义:这里和定义递归函数是一样的,递归的一个非常重要的点就是:不去管函数的内部细节是如何处理的,我们只看其函数作用以及输入与输出。这里的含义就是指函数作用:我们定义一个dp数组,dp[n]表示当前目标金额是n,至少需要dp[n]个硬币凑出该金额。 + + 3. 明确选择:通过我们当前的选择来改变我们的状态,可参考下面的伪代码: + + ''' + print("硬币面值有{}\n,总金额为{}".format(coins, amount)) + dp = [float("inf")]*(amount+1) + #总金额为0时,币数为0 + dp[0] = 0 + for coin in coins: + #匹配所有的金额在选取所有面额时的最小个数 + for i in range(coin, amount+1): + #当总金额为i时,dp[i-coin]表示为上一个金额(i-coin)选取面值coin前的最小币数 + dp[i] = min(dp[i-coin]+1, dp[i]) + return dp[amount] if dp[amount] != float("inf") else -1 + def coinChange_dfs(self, coins, amount): + """ + dfs+剪枝 + 动态显示:http://pythontutor.com/live.html#code=class%20Solution%28object%29%3A%0A%20%20%20%20def%20coinChange%28self,%20coins,%20amount%29%3A%0A%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20dfs%2B%E5%89%AA%E6%9E%9D%0A%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20if%20amount%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%200%0A%20%20%20%20%20%20%20%20coins.sort%28reverse%3DTrue%29%0A%20%20%20%20%20%20%20%20self.res%20%3D%20amount%20%2B%201%0A%20%20%20%20%20%20%20%20def%20helper%28remiander,%20index,%20c%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20'''dfs%E9%81%8D%E5%8E%86%E6%89%80%E6%9C%89%E5%AD%90%E6%95%B0%E7%BB%84'''%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20remiander%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20self.res%20%3D%20min%28self.res,%20c%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20index%20%3D%3D%20len%28coins%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20x%20in%20range%28remiander/coins%5Bindex%5D,%20-1,%20-1%29%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20x%20%2B%20c%20%3C%20self.res%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20helper%28remiander%20-%20x*coins%5Bindex%5D,%20index%2B1,%20x%2Bc%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break%0A%20%20%20%20%20%20%20%20helper%28amount,%200,%200%29%0A%20%20%20%20%20%20%20%20return%20-1%20if%20self.res%20%3D%3D%20amount%20%2B%201%20else%20self.res%0A%0Aif%20__name__%20%3D%3D%20'__main__'%3A%0A%20%20%20%20amount%20%3D%208%0A%20%20%20%20coins%20%3D%20%5B1,2,5%5D%0A%20%20%20%20solution%20%3D%20Solution%28%29%0A%20%20%20%20res%20%3D%20solution.coinChange%28coins,%20amount%29%0A%20%20%20%20print%20res&cumulative=true&curInstr=72&heapPrimitives=true&mode=display&origin=opt-live.js&py=2&rawInputLstJSON=%5B%5D&textReferences=false + """ + if amount == 0: + return 0 + coins.sort(reverse=True) + self.res = amount + 1 + def helper(remiander, index, c): + '''dfs遍历所有子数组''' + #如果余数刚好为0, 表示凑到了可以合成amount的币数 + if remiander == 0: + self.res = min(self.res, c) + return + #如果coins的指针index越界,则返回上一层递归 + if index == len(coins): + return + #从大到小地遍历能够得到amount的面值和数量 + for ci in range(remiander/coins[index], -1, -1): + #如果该面值的数量加上已有的硬币数量小于已知的res,则继续往下递归,直到凑够或着超过amount + if ci + c < self.res: + helper(remiander - ci*coins[index], index+1, ci+c) + #否则返回 + else: + break + #从最大的面值开始递归深度遍历 + helper(amount, 0, 0) + return -1 if self.res == amount + 1 else self.res + +if __name__ == '__main__': + coins = [1,5,10,20,50,100] + amount = random.randrange(1000) + solution = Solution() + print solution.coinChange(coins, amount) + print solution.coinChange_dfs(coins, amount) From 47fa0799be10b25991ff9bdda01d670589f85080 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 23 May 2020 04:40:29 +0800 Subject: [PATCH 127/270] Update leetcode-231-power-of-two.py --- Leetcode/Bit/leetcode-231-power-of-two.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Leetcode/Bit/leetcode-231-power-of-two.py b/Leetcode/Bit/leetcode-231-power-of-two.py index da3cd51..313de91 100644 --- a/Leetcode/Bit/leetcode-231-power-of-two.py +++ b/Leetcode/Bit/leetcode-231-power-of-two.py @@ -5,3 +5,6 @@ def isPowerOfTwo(self, n): if n == 0: return False return n & (-n) == n +if __name__ == '__main__': + solution = Solution() + print solution.isPowerOfTwo(90) From 03c31ce907e30994d19bc5048054a7535585feba Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 23 May 2020 04:40:49 +0800 Subject: [PATCH 128/270] Create OnlineC.py --- OnlineCompile/OnlineC.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 OnlineCompile/OnlineC.py diff --git a/OnlineCompile/OnlineC.py b/OnlineCompile/OnlineC.py new file mode 100644 index 0000000..634cb30 --- /dev/null +++ b/OnlineCompile/OnlineC.py @@ -0,0 +1,37 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-05-22 01:33:00 +#Func: 在线编译C99 +#API: https://tpcg.tutorialspoint.com/tpcg.php + +import requests + +filename = raw_input("please input the path of file which need to complie:(like this /your/file/path/xxx.c\n") +url = "https://tpcg.tutorialspoint.com/tpcg.php" +header = { + +"Accept": "*/*", +"Accept-Encoding": "gzip, deflate, br", +"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", +"Connection": "keep-alive", +"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", +"Host": "tpcg.tutorialspoint.com", +"Origin": "https://www.tutorialspoint.com", +"Referer": "https://www.tutorialspoint.com/compile_c99_online.php", +"Sec-Fetch-Dest": "empty", +"Sec-Fetch-Mode": "cors", +"Sec-Fetch-Site": "same-site", +"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + } +lang = "c99" +ext = "c" +compile = "gcc -std=c99 -o main *.c" +execute = "main" +mainfile = "main.c" +uid = 9486984 +#codefile = open("/Users/jin/Desktop/coinChange.c", 'r').read() +#code = urllib.quote(codefile, safe = "/") +code = open(filename, "r").read() +data = {"lang":lang, "device": "", "code": code, "stdinput": "", "ext": ext, "compile" : compile, "execute": execute, "mainfile": mainfile, "uid": 9486984} +r = requests.post(url,data, headers = header) +print r.content From 295eeb83e8d266396216d8729eb22aab2c10fd50 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 23 May 2020 04:40:55 +0800 Subject: [PATCH 129/270] Create OnlineCompileMultilangs.py --- OnlineCompile/OnlineCompileMultilangs.py | 47 ++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 OnlineCompile/OnlineCompileMultilangs.py diff --git a/OnlineCompile/OnlineCompileMultilangs.py b/OnlineCompile/OnlineCompileMultilangs.py new file mode 100644 index 0000000..c1699be --- /dev/null +++ b/OnlineCompile/OnlineCompileMultilangs.py @@ -0,0 +1,47 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-05-22 01:33:00 +#Func: 在线编译包含大部分语言 +#API: https://tool.runoob.com/compile2.php + +import requests + +compilelang = "0: Python\n1: Ruby\n2: C++\n3: PHP\n4: Node.js\n5: Scala\n6: Go\n7: C\n8: Java \n9: RUST\n10: C# \n11: Bash\n12: Erlang\n14: Perl\n15: Python3\n16: Swift\n17: Lua\n18: Pascal\n19: Kotlin\n80: R \n84: VB.NET \n1001: TypeScript\n" +try: + filename = raw_input("please input the path of file which need to compile:(like this /your/file/path/xxx.c\n") + print(compilelang) + lang = int(raw_input("Please input the number of language which you need to compile:\n")) +except Exception as e: + print("The error:{}, the default language is C".format(e)) + lang = 7 + filename = "/Users/jin/Desktop/coinChange.c" +url = "https://tool.runoob.com/compile2.php" +header = { + +"Accept": "*/*", +"Accept-Encoding": "gzip, deflate, br", +"Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", +"Connection": "keep-alive", +"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", +"Host": "tool.runoob.com", +"Origin": "https://c.runoob.com", +"Referer": "https://c.runoob.com/compile/11", +"Sec-Fetch-Dest": "empty", +"Sec-Fetch-Mode": "cors", +"Sec-Fetch-Site": "same-site", +"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" + } + +code = open(filename, 'r').read() +#code = urllib.quote(codefile, safe = "/") +token= "4381fe197827ec87cbac9552f14ec62a" +stdin="" +language = lang +fileext = {0: "py", 1: "rb", 2: "cpp", 3: "php", 4: "node.js", 5: "scala", 6: "Go", 7: "c", 8: "java", 9: "rs", 10: "cs",11: "sh", 12: "erl",14: "pl", 15: "py3", 16: "swift", 17: "lua", 18: "pas", 19: "kt", 80: "R", 84: "vb", 1001: "ts"} +#c++ (即cpp)的数字是7 +if lang == 2: + language = 7 +data = { "code": code, "token": token, "stdin": "", "language": language, "fileext": fileext[lang]} +r = requests.post(url, data, headers = header) +#如果有汉字可以转换解码 +print r.content.decode('unicode_escape') From e85ac5d7d33c8eb353378ae9e0e4ca93a8887e82 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 23 May 2020 14:33:52 +0800 Subject: [PATCH 130/270] Create LICENSE --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..61d1860 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file From 4f1cb988e42905191b4b7be39a9f80180e0a72b0 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 25 May 2020 03:08:20 +0800 Subject: [PATCH 131/270] Update leetcode-322-coin-change.py --- Leetcode/DP/leetcode-322-coin-change.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Leetcode/DP/leetcode-322-coin-change.py b/Leetcode/DP/leetcode-322-coin-change.py index 4e119f7..cfd17e8 100644 --- a/Leetcode/DP/leetcode-322-coin-change.py +++ b/Leetcode/DP/leetcode-322-coin-change.py @@ -11,14 +11,12 @@ def coinChange(self, coins, amount): 兑换零钱,使用动态规划记录所有面值的纸币到达amount目标值的结果 coins: list[int] amount: int - - 1.找子问题/最优子结构: 每次获取一枚某面值(coin)的硬币(+1)之前的状态dp(S-coin), dp(S-coin)也是 1. 明确状态:这里的状态是指原问题和子问题中变化的变量,从问题出发,我们发现要凑成刚好的硬币数, 只有amount是可变的, 它可以当作状态, 因为硬币的个数是无限的,所以唯一的状态就是目标的金额amount。 2. 定义dp数据/函数的含义:这里和定义递归函数是一样的,递归的一个非常重要的点就是:不去管函数的内部细节是如何处理的,我们只看其函数作用以及输入与输出。这里的含义就是指函数作用:我们定义一个dp数组,dp[n]表示当前目标金额是n,至少需要dp[n]个硬币凑出该金额。 - 3. 明确选择:通过我们当前的选择来改变我们的状态,可参考下面的伪代码: + 3. 明确选择:通过我们当前的选择来改变我们的状态 ''' print("硬币面值有{}\n,总金额为{}".format(coins, amount)) From 477c7cadbdfa682f9cbe9f513d7b493ce71d3b45 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 27 May 2020 01:50:41 +0800 Subject: [PATCH 132/270] Create DFS_Maze.py --- Grapgh Theory/DFS_Maze.py | 88 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Grapgh Theory/DFS_Maze.py diff --git a/Grapgh Theory/DFS_Maze.py b/Grapgh Theory/DFS_Maze.py new file mode 100644 index 0000000..de5e4f2 --- /dev/null +++ b/Grapgh Theory/DFS_Maze.py @@ -0,0 +1,88 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-05-26 02:36:00 +#Function: Generate random maze by DFS +import random +import numpy as np +import time + +L = random.randint(7,21) #迷宫大小 + +#墙和路定义 +Wall = 0 +Path = 1 +wall = "#" +path = "." +#迷宫复杂度, 数值越大,迷宫越简单 +Rank = 0 +RandMAX = 32767 +#初始化迷宫 +maze = np.zeros((L,L)) + +def CreateMaze(x, y): + ''' + (x, y) + 1. 随机四个方向开始挖、 + 2. 控制挖的范围不能回头 + 3. 检测挖的位置周围是否挖穿 + 重复这一过程 + ''' + maze[x][y] = Path + #选择方向开挖 + #所以需要生成一个随机方向数组 + direction = [[-1,0], [0,1], [0,-1], [1,0]] + random.shuffle(direction) + for i in range(4): + #设置迷宫复杂度 + if Rank == 0: + rank = 1 + else: + rank = 1 + random.randint(0, RandMAX) % Rank + while rank > 0: + dx = x + direction[i][0] + dy = y + direction[i][1] + #如果回头则break + if maze[dx][dy] == Path: + break + + #判断是否挖空 + count = 0 + for j in range(dx - 1, dx + 2, 1): + for k in range(dy - 1, dy + 2, 1): + #判断(dx,dy)新位置的上下左右位置是否只有一个坐标为通路 + if abs(j-dx) + abs(k-dy) == 1 and maze[j][k] == Path: + count += 1 + #挖穿退出 + if count > 1: + break + rank -= 1 + maze[dx][dy] = Path + if rank <= 0: + CreateMaze(dx, dy) + +def showMaze(maze): + ''' + 打印迷宫 + ''' + for i in range(len(maze)): + for j in range(len(maze[0])): + if maze[i][j]: + print(path), + else: + print(wall), + print("\n") + +if __name__ == '__main__': + for i in range(len(maze)): + for j in range(len(maze[0])): + maze[i][0] = Path + maze[i][L-1] = Path + maze[L-1][j] = Path + maze[0][j] = Path + CreateMaze(2, 2) + showMaze(maze) + #行列各复制一次扩展 + maze1 = np.repeat(maze, 2, axis=1) + maze1 = np.repeat(maze1, 2, axis=0) + print("New maze") + showMaze(maze1) From be70209c788c83b44ecdbd36465821b5fa2cede8 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 27 May 2020 01:51:21 +0800 Subject: [PATCH 133/270] Create leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py --- ...-to-move-a-box-to-their-target-location.py | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py diff --git a/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py b/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py new file mode 100644 index 0000000..e96891b --- /dev/null +++ b/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py @@ -0,0 +1,128 @@ +#coding:utf-8 +import time +class Solution(object): + + def minPushBox(self, grid): + """ + :type grid: List[List[str]] + :rtype: int + 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。 + + 游戏地图用大小为 n * m 的网格 grid 表示,其中每个元素可以是墙、地板或者是箱子。 + + 现在你将作为玩家参与游戏,按规则将箱子 'B' 移动到目标位置 'T' : + + 玩家用字符 'S' 表示,只要他在地板上,就可以在网格中向上、下、左、右四个方向移动。 + 地板用字符 '.' 表示,意味着可以自由行走。 + 墙用字符 '#' 表示,意味着障碍物,不能通行。 + 箱子仅有一个,用字符 'B' 表示。相应地,网格上有一个目标位置 'T'。 + 玩家需要站在箱子旁边,然后沿着箱子的方向进行移动,此时箱子会被移动到相邻的地板单元格。记作一次「推动」。 + 玩家无法越过箱子。 + 返回将箱子推到目标位置的最小 推动 次数,如果无法做到,请返回 -1。 + + 提示: + + 1 <= grid.length <= 20 + 1 <= grid[i].length <= 20 + grid 仅包含字符 '.', '#', 'S' , 'T', 以及 'B'。 + grid 中 'S', 'B' 和 'T' 各只能出现一个。 + """ + def get_pos(c): + '''获取目标坐标''' + for i in range(len(grid)): + for j in range(len(grid[i])): + if grid[i][j] == c: + return i,j + n = len(grid) + m = len(grid[0]) + rs = get_pos('S')#玩家 + xs = get_pos('B')#箱子 + ts = get_pos('T')#目标位置 + s = (rs, xs, 0)#定义节点:玩家位置,箱子位置,步长 + mx = [-1,0,0,1]#(mx[i],my[i])表示向西(左), 南(下), 北(上), 东(右)运动一步 + my = [0,-1,1,0] + q = [s]#利用队列来进行广度优先遍历 + def judeg(x,y): + '''判断位置是否越界或者碰墙''' + if x < 0 or x >= n or y < 0 or y >= m: + return False + if grid[x][y] == '#':#墙 + return False + return True + #记忆存储走过了的点 + vis = [ [-1]*2500 for _ in range(2500)] + def j_vis(rs, bs, step): + '''存储玩家和箱子的位置、步长''' + #有时候(4,4) 和(5,3)的和都等于8,会有冲突, 所以从x100可以抵消冲突 + s1 = 100*rs[0] + rs[1] + s2 = 100*bs[0] + bs[1] + #如果这条路径没有遍历过,则更新步长 + if vis[s1][s2] == -1: + vis[s1][s2] = step + return True + #判断走过路径的步长如果大于已知最小步长,则返回false不添加进队列 + if step >= vis[s1][s2]: + return False + #如果此路径走过且步长小于已知最小步长,则更新数组中的步长 + vis[s1][s2] = step + return True + #初始化 + ret = -1 + new_grid = grid[:] + while len(q)>0: + #广度优先遍历 + rs, xs, step = q.pop(0) + #如果箱子到达目标位置, 返回最小值,否则-1 + if xs[0] == ts[0] and xs[1] == ts[1]: + if ret == -1: + ret = step + ret = min(ret,step) + new_grid[xs[0]][xs[1]] = ret + #玩家上下左右广度优先遍历 + for i in range(4): + tx = rs[0] + mx[i] + ty = rs[1] + my[i] + #如果下一个玩家新位置越界或碰墙就跳过 + if not judeg(tx,ty): + continue + #如果玩家到达箱子位置,且加(mx[i], my[i])可以保证沿着箱子的方向进行push + if tx == xs[0] and ty == xs[1]: + xtx = xs[0] + mx[i] + xty = xs[1] + my[i] + #如果越界或碰墙就跳过 + if not judeg(xtx,xty): + continue + #下一个箱子位置为新的箱子位置 + new_xs = (xtx,xty) + #计入一次 + f = 1 + else: + #如果玩家未到达箱子,则玩家继续寻找下一个位置,而箱子原位置不动 + new_xs = (xs[0], xs[1]) + #不计数 + f = 0 + #玩家新位置 + new_rs = (tx,ty) + #查看新点是否遍历过,更新步长 + if j_vis(new_rs, new_xs, step+f): + #添加新节点 + q.append((new_rs,new_xs,step+f)) + new_grid[new_rs[0]][new_rs[1]], new_grid[rs[0]][rs[1]] = "S", "." + print q + time.sleep(1) + print("此时") + for i in range(n): + print("{}\n".format(new_grid[i])) + return ret + +if __name__ == '__main__': + solution = Solution() + grid = [["#","#","#","#","#","#"], + ["#","T","#","#","#","#"], + ["#","B",".",".","#","#"], + ["#",".","#",".","#","#"], + ["#",".","#",".","S","#"], + ["#",".",".",".","#","#"], + ["#","#","#","#","#","#"]] + ret = solution.minPushBox(grid) + print(ret) From 11d218a387905993bbc5a0f138dbad17a2b480f0 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 27 May 2020 01:51:35 +0800 Subject: [PATCH 134/270] Create Recursive_division_Maze.py --- Grapgh Theory/Recursive_division_Maze.py | 88 ++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Grapgh Theory/Recursive_division_Maze.py diff --git a/Grapgh Theory/Recursive_division_Maze.py b/Grapgh Theory/Recursive_division_Maze.py new file mode 100644 index 0000000..c56e272 --- /dev/null +++ b/Grapgh Theory/Recursive_division_Maze.py @@ -0,0 +1,88 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-05-26 20:57:00 +#Function: Recursive segmentation to build random maze 递归分割法构建随机迷宫 +import numpy as np +import random + +L = random.randint(6, 21)#定义迷宫初始长度 +PATH = 0 #路 +WALL = 1 #墙 +RAND_MAX = 32767 #随机范围 + +class Maze(): + def __init__(self): + self.maze = np.zeros((L,L))#初始化迷宫 + #外围都是墙 + for i in range(L): + self.maze[i][L-1] = WALL + self.maze[L-1][i] = WALL + self.maze[0][i] = WALL + self.maze[i][0] = WALL + + def showMaze(self, maze): + '''打印迷宫''' + for i in range(len(maze)): + for j in range(len(maze[0])): + if maze[i][j] == WALL: + print("#"), + else: + print(" "), + print("\n") + + def CreateMaze(self, x1, y1, x2, y2): + ''' + 随机选择矩形内的一个点进行分割,然后打通三面墙, 然后继续分割最后停止‘’‘ + x2->int: 对角线上的两点 + y2->int: + x1->int: + y1->int: + + ''' + #停止条件 + if x2 - x1 < 2 or y2- y1 <= 2: + return + #随机取点 + x = x1 + 1 + random.randint(0,RAND_MAX)%(x2 - x1 - 1) + y = y1 + 1 + random.randint(0,RAND_MAX)%(y2 - y1 - 1) + + #开始分割 + for i in range(x1, x2+1): + self.maze[i][y] = WALL + for i in range(y1, y2+1): + self.maze[x][i] = WALL + + #递归分割 + self.CreateMaze(x1, y1, x-1, y-1) + self.CreateMaze(x1, y+1, x-1, y2) + self.CreateMaze(x+1, y+1, x2, y2) + self.CreateMaze(x+1, y1, x2, y-1) + + #开始通路 + #随机取三面墙 + r = [0,0,0,1] + random.shuffle(r) + + for i in range(4): + if r[i] == 0: + rx = x + ry = y + #判断该位置是否能确保打通相邻两块区域,判断依据,上下左右位置最多只有两面墙,下面一样 + if i == 0: + while (self.maze[rx-1][ry]+self.maze[rx+1][ry]+self.maze[rx][ry-1]+self.maze[rx][ry+1])>2*WALL: + rx = x1 + random.randint(0, RAND_MAX)%(x - x1) + elif i == 1: + while (self.maze[rx-1][ry]+self.maze[rx+1][ry]+self.maze[rx][ry-1]+self.maze[rx][ry+1])>2*WALL: + ry = y + 1 + random.randint(0, RAND_MAX)%(y2 - y) + elif i == 2: + while (self.maze[rx-1][ry]+self.maze[rx+1][ry]+self.maze[rx][ry-1]+self.maze[rx][ry+1])>2*WALL: + rx = x + 1 + random.randint(0, RAND_MAX)%(x2 - x) + elif i == 3: + while (self.maze[rx-1][ry]+self.maze[rx+1][ry]+self.maze[rx][ry-1]+self.maze[rx][ry+1])>2*WALL: + ry = y1 + random.randint(0, RAND_MAX)%(y - y1) + self.maze[rx][ry] = PATH + +if __name__ == '__main__': + Maze0 = Maze() + maze0 = Maze0.CreateMaze(1,1, L-2, L-2) + Maze0.showMaze(Maze0.maze) From 32ed4ea09c985da919dc7305b9dd6e4fd27804e7 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 27 May 2020 01:52:29 +0800 Subject: [PATCH 135/270] =?UTF-8?q?Delete=20price=E6=AD=A3=E5=88=99.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "price\346\255\243\345\210\231.txt" | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 "price\346\255\243\345\210\231.txt" diff --git "a/price\346\255\243\345\210\231.txt" "b/price\346\255\243\345\210\231.txt" deleted file mode 100644 index 891216a..0000000 --- "a/price\346\255\243\345\210\231.txt" +++ /dev/null @@ -1,10 +0,0 @@ -prices=re.findall(r'class="a-size-medium a-color-price">\$(.*?)<\/span>',r) -weights=re.findall(r'\s{24}(.*?) \(',r) -reviews=re.findall(r'(.*?) customer stars=re.findall(r'(.*?) out of 5 stars<\/span><\/i>',r) -rank=re.findall(r'#(.*?)<\/span>',r) - - - table1.write(i+1,3,prices[0])#۸д븴Ʊ - table1.write(i+1,5,weights[0])# Shippingд븴Ʊ - table1.write(i+1,7,reviews[0])# - table1.write(i+1,8,stars[0])# \ No newline at end of file From 7c0cd13df1c6fa72f9e03fba6f1317daf458d806 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 27 May 2020 01:52:34 +0800 Subject: [PATCH 136/270] =?UTF-8?q?Create=20price=E6=AD=A3=E5=88=99.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "AWS/price\346\255\243\345\210\231.txt" | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 "AWS/price\346\255\243\345\210\231.txt" diff --git "a/AWS/price\346\255\243\345\210\231.txt" "b/AWS/price\346\255\243\345\210\231.txt" new file mode 100644 index 0000000..891216a --- /dev/null +++ "b/AWS/price\346\255\243\345\210\231.txt" @@ -0,0 +1,10 @@ +prices=re.findall(r'class="a-size-medium a-color-price">\$(.*?)<\/span>',r) +weights=re.findall(r'\s{24}(.*?) \(',r) +reviews=re.findall(r'(.*?) customer stars=re.findall(r'(.*?) out of 5 stars<\/span><\/i>',r) +rank=re.findall(r'#(.*?)<\/span>',r) + + + table1.write(i+1,3,prices[0])#۸д븴Ʊ + table1.write(i+1,5,weights[0])# Shippingд븴Ʊ + table1.write(i+1,7,reviews[0])# + table1.write(i+1,8,stars[0])# \ No newline at end of file From 7ca547c3513b1b42324e2a4a03c2cef3b4214291 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 27 May 2020 20:24:50 +0800 Subject: [PATCH 137/270] Create Prim_Maze.py --- Grapgh Theory/Prim_Maze.py | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 Grapgh Theory/Prim_Maze.py diff --git a/Grapgh Theory/Prim_Maze.py b/Grapgh Theory/Prim_Maze.py new file mode 100644 index 0000000..c8837f9 --- /dev/null +++ b/Grapgh Theory/Prim_Maze.py @@ -0,0 +1,73 @@ +#coding: utf-8 +#Author: Toryun +#Date: 2020-05-27 20:23:00 +#Function: Generate random maze by Prim +import numpy as np +import random + +L = random.randint(7, 21)#定义迷宫初始长度 +PATH = 1 #路 +WALL = 0 #墙 +RAND_MAX = 32767 #随机范围 + +class Maze(): + def __init__(self): + self.maze = np.zeros((L,L))#初始化迷宫 + #外围都是路 + for i in range(L): + self.maze[i][L-1] = PATH + self.maze[L-1][i] = PATH + self.maze[0][i] = PATH + self.maze[i][0] = PATH + + def showMaze(self, maze): + '''打印迷宫''' + for i in range(len(maze)): + for j in range(len(maze[0])): + if maze[i][j] == WALL: + print("#"), + else: + print(" "), + print("\n") + + def CreateMaze(self): + #随机添加(2,2)进入队列X,Y + X = [2] + Y = [2] + #当队列为空时,结束循环 + while len(X) > 0: + #随机在墙队列中取一个节点 + r = random.randint(0, RAND_MAX)%len(X) + x = X[r] + y = Y[r] + #判断上下左右四个方向是否为路 + count = 0 + for i in range(x-1, x+2): + for j in range(y-1, y+2): + #abs(x-i) + abs(y-j) == 1表示上下左右, 大于零表示如果是路,就进1 + if abs(x-i) + abs(y-j) == 1 and self.maze[i][j] > 0: + count += 1 + #如果上下左右位置只有一个位置是路,则开挖(x,y) + if count <= 1: + self.maze[x][y] = 1 + #把剩余的墙坐标加入队列 + for i in range(x-1, x+2): + for j in range(y-1, y+2): + if abs(x-i) + abs(y-j) == 1 and self.maze[i][j] == 0: + X.append(i) + Y.append(j) + + #删除当前队列中已经是路的节点坐标 + X.pop(r) + Y.pop(r) + #设置入口和出口 + self.maze[2][1] = 1 + for i in range(L-3, -1, -1): + if self.maze[i][L-3] == 1: + self.maze[i][L-2] = 1 + break + +if __name__ == '__main__': + Maze0 = Maze() + maze0 = Maze0.CreateMaze() + Maze0.showMaze(Maze0.maze) From 5102f1a422359a9ac36555ecdb66ce3d418e8254 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 31 May 2020 20:00:05 +0800 Subject: [PATCH 138/270] Create Tarjan.py --- Grapgh Theory/Tarjan.py | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Grapgh Theory/Tarjan.py diff --git a/Grapgh Theory/Tarjan.py b/Grapgh Theory/Tarjan.py new file mode 100644 index 0000000..e91f1c2 --- /dev/null +++ b/Grapgh Theory/Tarjan.py @@ -0,0 +1,75 @@ +#coding:utf-8 +#Date: 2020-05-31 17:30 +#Author: Toryun +#Function: finding the strongly connected components of a graph +def strongly_connected_components(graph): + """ + Tarjan's Algorithm (named for its discoverer, Robert Tarjan) is a graph theory algorithm + for finding the strongly connected components of a graph. + + Based on: http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm + """ + + count = [0] #编号器(ps: 为什么不用int?因为数组的作用域大于int,可以作用于整个递归函数.当然我们也可以在函数参数上传入一个int类型的初始值) + stack = [] #用来存储被访问过的强连通节点 + low = {} #记录节点访问时的编号并在每次遍历子节点时更新它来找到它的父节点,以此来找到整个搜索子树的根节点 + dfn = {} #depth-first-number:为节点添加首次访问的时间戳,节点一旦被访问打上时间戳,就不在被修改 + result = [] #最终需要返回的结果(所有强连通分量,和单个节点) + + def strongconnect(node): + # 给每个节点node一个深度优先搜索标号index + + dfn[node] = count[0] + low[node] = count[0] + count[0] += 1 + stack.append(node) + + # 如果该节点为单节点, 没有其它节点相连,则为空 + try: + E = graph[node] + except: + E = [] + #深度遍历node节点(可以称其为强连通分量的根,因为它是第一个被访问的节点)的子节点 + for v in E: + if v not in low: + # 后继节点v未访问,递归调用strongconnect函数把v加入low并编号入栈 + strongconnect(v) + low[node] = min(low[node],low[v]) + + #如果节点是访问过的 + elif v in stack: + # 返回编号是最小的节点 + low[node] = min(low[node],dfn[v]) + + # 若node是根则出栈,并得到一个强连通分量,此时的node在栈底 + if low[node] == dfn[node]: + connected_component = [] + #把栈内的子节点全部加入result + while True: + v = stack.pop() + connected_component.append(v) + if v == node: + break + component = tuple(connected_component) + result.append(component) + #依次push入栈,遍历图所有节点,防止存在因一次tarjan而没有遍历到的节点 + for node in graph: + if node not in low: + strongconnect(node) + return result +if __name__ == '__main__': + + grid = { + "A": {"B":5,"C":1}, + "B": {"A":5,"C":2,"D":1}, + "C": {"A":1,"B":2,"D":4,"E":8}, + "D": {"B":1,"C":4,"E":3,"F":6}, + "E": {"C":8,"D":3}, + "F": {"D":6}, + "G": {"F":3, "H":5,"S":19}, + "H": {"G":5,"I":8,"J":4}, + "I": {"H":8,"K":3} + } + ret = strongly_connected_components(grid) + print("The strongly connected componets is \n{}\n".format(ret)) + From 5df5e60d9bfe41866f5610457b371d52b1ad6351 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 31 May 2020 20:00:11 +0800 Subject: [PATCH 139/270] Create Astar.py --- Grapgh Theory/Astar.py | 192 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 Grapgh Theory/Astar.py diff --git a/Grapgh Theory/Astar.py b/Grapgh Theory/Astar.py new file mode 100644 index 0000000..d4fc1df --- /dev/null +++ b/Grapgh Theory/Astar.py @@ -0,0 +1,192 @@ +#coding:utf-8 +import Prim_Maze +import random +import time +import heapq +import copy +import collections +def add_target(maze): + n = len(maze) + m = len(maze[0]) + sp = 2 #玩家 + tp = 3 #目标 + spp = (2,2) + tpp = (random.randint(3, n-3), random.randint(3, n-3)) + maze[spp[0]][spp[1]] = sp + maze[tpp[0]][tpp[1]] = tp + return maze + +def showAMaze(maze): + '''打印迷宫''' + sp = 2 #玩家 + tp = 3. #目标 + PATH = 1 #路 + WALL = 0 #墙 + for i in range(len(maze)): + for j in range(len(maze[0])): + if maze[i][j] == WALL: + print("#"), + elif maze[i][j] == PATH: + print(" "), + elif maze[i][j] == sp: + print("S"), + else: + print("T"), + print("\n") + +def Astar(maze): + ''' + 1. 把open list堆化, 起点加入 open list 。 + + 2. 重复如下过程: + + a. 遍历 open list ,查找 F 值最小的节点,把它作为当前要处理的节点。 + + b. 把这个节点移到 close list 。 + + c. 对当前方格的 8 个相邻方格的每一个方格 + + ◆ 如果它是不可抵达的或者它在 close list 中,忽略它。否则,做如下操作。 + + ◆ 如果它不在 open list 中,把它加入 open list ,并且把当前方格设置为它的父亲,计算该方格的 F , G 和 H 值。 + + ◆ 如果它已经在 open list 中,检查这条路径 ( 即经由当前方格到达它那里 ) 是否更好,用 G 值作参考。更小的 G 值表示这是更好的路径。如果是这样,把它的父亲设置为当前方格,并重新计算它的 G 和 F 值, 然后入堆。如果你的 open list 是按 F 值排序的话,入堆后会重新排序。 + + d. 停止条件, + + ◆ 把终点加入到了 open list 中,此时路径已经找到 + + ◆ 或者查找终点失败,并且 open list 是空的,此时没有路径。 + + 3. 保存路径。从终点开始,每个方格沿着父节点移动直至起点,这就是你的路径。 + + ''' + n = len(maze) + m = len(maze[0]) + sp = 2 #玩家 + tp = 3. #目标 + PATH = 1 #路 + WALL = 0 #墙 + cost = {} #起点到现在位置的总花费集合 + ret = [] #返回路径 + + #1. 获取目标点的坐标和玩家起始点的坐标 + #a. 先对图进行分类加入字典 + classfiy = collections.defaultdict(list) + for i in range(n): + for j in range(m): + classfiy[maze[i][j]].append((i,j)) + player_position, tp_position, PATH_set = classfiy[sp][0], classfiy[tp][0], classfiy[PATH] + #2. 计算F = G + H + #a. H = 曼哈顿距离 Manhattan_distance + #b. G = 移动一步的距离(10或者14) 10:上下左右移动, 14:斜方向移动 + #c. F 估值函数 + + def H(player_position): + return abs(player_position[0] - tp_position[0]) + abs(player_position[1] - tp_position[1]) + + def G(player_position, neighbor_p): + px, py = player_position + nx, ny = neighbor_p + #只要有一个差值为0, 0跟任何值进行与操作都等于0即表示假,返回10 + return 14 if ny - py and nx - px else 10 + + def F(player_position): + '''估值函数''' + dx, dy = player_position #玩家位置 + tx, ty = tp_position #目标位置 + h = abs(dx - tx) + abs(dy - ty) + sq = min(abs(ty - dy), abs(tx - dx)) #斜方向移动sq个单位 + mv = abs(abs(ty - dy) - abs(tx - dx)) #平移mv个单位 + return sq * 14 + mv * 10 + + def judge(x, y): + '''判断是否越界或者撞墙''' + if x < 0 or x >= n or y < 0 or y >= m: + return False + if maze[x][y] == WALL: + return False + return True + + def neighbors(player_position): + '''获取邻居''' + x, y = player_position + n = [] + for j in range(x - 1, x + 2): + for k in range(y -1, y + 2): + if j == x and k == y: + continue + n.append((j,k)) + return n + + def index_node(p, openlist): + '''从集合中移除节点''' + for i in range(len(openlist)): + if p in openlist[i]: + return i + return -1 + + f = F(player_position) + h = H(player_position) + cost[player_position] = 0 + parent_position = None + node = (f, 0, h, player_position, parent_position) + open_list = [node] + closed_list = [] + PARENT = {} + new_maze = copy.deepcopy(maze) + while len(open_list)>0: + #永远把最小值推出堆 + f, g, h, player_position, parent_position = heapq.heappop(open_list) + #把访问过的节点放入closedlist + heapq.heappush(closed_list, player_position) + if player_position == tp_position: + ret.append(player_position) + break + for neighbor in neighbors(player_position): + #如果越界或者撞墙, 跳过 + if not judge(neighbor[0], neighbor[1]) or neighbor in closed_list: + continue + neighbor_g = g + G(player_position, neighbor) + #如果不在openlist中 + if index_node(neighbor, open_list) == -1: + #如果也不在closedlist中 + if neighbor not in closed_list: + + cost[neighbor] = neighbor_g + neighbor_h = H(neighbor) + neighbor_f = F(neighbor) + neighbor_node = (neighbor_f, neighbor_g, neighbor_h, neighbor, player_position) + heapq.heappush(open_list, neighbor_node) + PARENT[player_position] = PATH + else: + #如果在openlist中,新的G值比原来的小,更新这个节点的父节点和f,g值 + if neighbor_g < cost[neighbor]: + neighbornode = open_list.pop(index_node(neighbor, open_list)) + newneighbornode = (neighbor_g + H(neighbor, tp_position), neighbor_g, neighbor, player_position) + PARENT[player_position] = PATH + cost[neighbor] = neighbor_g + heapq.heappush(open_list, newneighbornode) + if player_position in PARENT: + new_maze[player_position[0]][player_position[1]] = 2 + heapq.heappush(closed_list, player_position) + time.sleep(1) + showAMaze(new_maze) + ret = PARENT.keys() + ret.sort() + return ret if len(ret) >1 else -1 + +if __name__ == '__main__': + maze0 = Prim_Maze.Maze() + maze0.CreateMaze() + maze0.showMaze(maze0.maze) + maze1 = add_target(maze0.maze) + showAMaze(maze1) + ret = Astar(maze1) + print(ret) + + + + + + From f21c5368170b6c595b3e5993e91e8fc8cf19a4b3 Mon Sep 17 00:00:00 2001 From: YoTro Date: Sun, 31 May 2020 20:00:55 +0800 Subject: [PATCH 140/270] Update Prim_Maze.py --- Grapgh Theory/Prim_Maze.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Grapgh Theory/Prim_Maze.py b/Grapgh Theory/Prim_Maze.py index c8837f9..4e8cb90 100644 --- a/Grapgh Theory/Prim_Maze.py +++ b/Grapgh Theory/Prim_Maze.py @@ -5,7 +5,7 @@ import numpy as np import random -L = random.randint(7, 21)#定义迷宫初始长度 +L = random.randint(8, 21)#定义迷宫初始长度 PATH = 1 #路 WALL = 0 #墙 RAND_MAX = 32767 #随机范围 @@ -61,11 +61,11 @@ def CreateMaze(self): X.pop(r) Y.pop(r) #设置入口和出口 - self.maze[2][1] = 1 - for i in range(L-3, -1, -1): - if self.maze[i][L-3] == 1: - self.maze[i][L-2] = 1 - break + #self.maze[2][1] = 1 + #for i in range(L-3, -1, -1): + #if self.maze[i][L-3] == 1: + #self.maze[i][L-2] = 1 + #break if __name__ == '__main__': Maze0 = Maze() From 6e32cbd9bfca28a51cb611ff70fab4cb67374024 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 2 Jun 2020 02:23:06 +0800 Subject: [PATCH 141/270] Update leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py --- ...-to-move-a-box-to-their-target-location.py | 188 +++++++++++++++++- 1 file changed, 179 insertions(+), 9 deletions(-) diff --git a/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py b/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py index e96891b..d087e35 100644 --- a/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py +++ b/Leetcode/Graph/leetcode-1263-minimum-moves-to-move-a-box-to-their-target-location.py @@ -1,5 +1,9 @@ #coding:utf-8 import time +import heapq +import copy +import collections + class Solution(object): def minPushBox(self, grid): @@ -114,15 +118,181 @@ def j_vis(rs, bs, step): for i in range(n): print("{}\n".format(new_grid[i])) return ret + def minPushBox_Astar(self, grid): + n, m = len(grid), len(grid[0]) #迷宫长,宽 + g = collections.defaultdict(list) #存储每个重要物品的坐标 + for i in range(n): + for j in range(m): + g[grid[i][j]] += [complex(i,j)] + sp = g["S"][0] #玩家位置 + tp = g["T"][0] #目标位置 + bp = g["B"][0] #箱子位置 + path = g["."] #路位置list + directions = (1, -1, 1j, -1j)#上下左右 + visited = set() #存储已访问过的节点 + step = 1 #箱子的移动步数 + Path_set = path + [sp] + [tp] + [bp] #所有路坐标的list + #A*估值函数 + def F(a, s): + ''' + a: (箱子)当前位置坐标 + s: (箱子)已走步数 + 返回一个元组,其中一个是曼哈顿距离, 一个是欧式距离 + ''' + euclidean_dist = abs(a - tp) + manhattan_dist = abs((a - tp).real) + abs((a - tp).imag) + s + return (manhattan_dist, euclidean_dist) + #对人的移动使用 + def bestfirst(from_position, to_position, path_set): + ''' + 最好优先算法也叫做A算法,和A*相似 + from_position: 当前位置 + to_position: 最后位置 + path_set: 判断所在位置是否在路位置集合上 + 返回值rtype: bool + ''' + p = 0 #防止重复计算小根堆里的节点,类似于唯一键值prime_key + f = abs(from_position - to_position) #估价函数为当前点和目标点的距离 + heapplayer = [(f, p, from_position)] + #遍历人的优先队列 + while heapplayer: + #取出堆中估值函数最小, 即路径绝对值最短节点, 其中, f和p参数没有用处 + f, _, curr_position = heapq.heappop(heapplayer) + #如果到达最后位置,返回True + if curr_position == to_position: + return True + #遍历现在位置的上下左右四个方位 + for direction in directions: + next_position = curr_position + direction + #如果新的位置没有越界和碰墙,则添加进入人的优先队列(小根堆) + if next_position in path_set: + #print(abs(next_position - to_position), p, next_position) + heapq.heappush(heapplayer, (abs(next_position - to_position), p, next_position)) + p += 1 + path_set.remove(next_position) #把进入堆的坐标都去点 + return False #如果不能到达指定位置,则返回false + time = 1 #作用于防止节点进堆后存在节点前几个参数相同,发生比较复数情况的发生 + node = (F(bp, step), step, time, sp, bp) + heapbox = [node] #箱子移动小根堆 + #遍历箱子移动堆 + while heapbox: + #取出节点, 其中, 估值函数, step在程序中没有使用到 + f, step, _, sp, bp = heapq.heappop(heapbox) + #向四个方向开始遍历 + for direction in directions: + #玩家下一个位置需要处于箱子旁边 + next_position = bp - direction + #箱子下一个位置是沿着箱子方向移动一步之后的位置 + nextbox_position = bp + direction + #箱子必须在路上 + if nextbox_position in Path_set: + #人和箱子的位置没有重复访问 + if (next_position, bp) not in visited: + #必须去除箱子的位置,因为人不能触碰或跨过箱子 + if bp in Path_set: + copypathset = copy.deepcopy(Path_set) + copypathset.remove(bp) + #人去找箱子,并到达箱子旁 + if bestfirst(sp, next_position, copypathset): + #箱子到达终点,返回步数 + if nextbox_position == tp: + return step + heapq.heappush(heapbox, (F(nextbox_position, step + 1), step + 1, time, bp, nextbox_position)) + time += 1 + #添加遍历过的节点 + visited.add((next_position, bp)) + return -1 + + def minPushBox_tarjan(self, graph): + n, m = len(graph), len(graph[0]) #图的尺寸 + p = collections.defaultdict(list) #默认字典 + sp = "S" #玩家 + bp = "B" #箱子 + tp = "T" #目标位置 + path = "." #路 + uid = [0] #防止重复节点冲突,增加uid + step = 1 #箱子移动步数 + directions = (1, -1, 1j, -1j) #方向 + visited = set() #是否被访问过节点集合 + for i in range(n): #遍历查找相关节点位置 + for j in range(m): + p[graph[i][j]] += [complex(i,j)] + Sp, Bp, Tp, Path = p[sp][0], p[bp][0], p[tp][0], p[path] + Path_set = [Sp] + [Bp] + [Tp] + Path + def F(bp, step): + '''估值函数曼哈顿距离和欧式距离''' + #作用于嵌套函数的局部变量.作用域为使用本函数F(bp, step)之后的整个minPushBox_tarjan函数 + uid[0] += 1 + manhattan_dist = abs(Bp - Tp).real + abs(Bp - Tp).imag + step + euclidean_dist = abs(Bp - Tp) + return (manhattan_dist, euclidean_dist, uid[0]) + node = (F(Bp, 1), step, Sp, Bp) + heapbox = [node] #箱子路径堆 + count = [0] #tarjan算法中的时间戳 + low = dict.fromkeys(Path_set, 0) #帮助算法深度遍历时回溯找到根节点的参数,默认为0 + dfn = low.copy() #首次添加的时间戳, 一经添加无法修改 + index = {} #建立坐标与时间戳的映射,方便计算各个坐标所归属的强连通分量 + def tarjan(curr_node, parent_node): + '''标准无向图基于深度优先搜索的tarjan算法,参数curr_node为当前拓展点,记录拓展的父节点parent_node防止重复拓展''' + dfn[curr_node] = count[0] + low[curr_node] = count[0] + index[count[0]] = curr_node + count[0] += 1 + #遍历四个方向 + for direction in directions: + neighbor_node = curr_node + direction + #如果邻居节点在路径集合上并且不是父节点 + if neighbor_node in Path_set: + #如果没有被访问过 + if not low[neighbor_node]: + tarjan(neighbor_node, curr_node) + #如果访问过的节点时间戳比当前节点的时间戳要小,则表示属于同一个强连通分量,取较小那个 + low[curr_node] = min(low[neighbor_node], low[curr_node]) + #从现在箱子位置出发遍历,父节点为-1 + tarjan(Bp, -1) + #遍历所有路径点,查找所有强连通分量 + for curr_node in Path_set: + connect_node = [curr_node] + #查找所有属于同一个强连通分量的点 + while (low[connect_node[-1]] != dfn[connect_node[-1]]): + connect_node.append(index[low[connect_node[-1]]]) + #时所有归属于一个强连通分量的时间戳相等于根 + for v in connect_node[:-2]: + low[v] = low[connect_node[-1]] + #遍历整个堆 + while heapbox: + f, step, Sp, Bp = heapq.heappop(heapbox) + for direction in directions: + #箱子沿着某个方向移动一步 + nextbox_position = Bp + direction + #表示玩家到达现在箱子位置坐标的旁边一个坐标 + next_sp = Bp - direction + #如果箱子下个位置在路径上,表示玩家能够推动它 + if nextbox_position in Path_set: + #如果玩家能够到达箱子推动方向的反方向一步距离 + if next_sp in Path_set: + #如果箱子和人的位置都没有访问过(防止循环遍历) + if (next_sp, Bp) not in visited: + #如果时间戳相等,表示它们是相互连通的 + if low[next_sp] == low[Sp]: + #如果到达目的地 + if nextbox_position == Tp: + return step + #玩家位置为下一个位置为Bp表示玩家始终处于箱子的旁边一个位置并沿箱子方向推动箱子移动了一个步数 + heapq.heappush(heapbox, (F(nextbox_position, step+1), step+1, Bp, nextbox_position)) + #记录访问过的节点 + visited.add((next_sp, Bp)) + return -1 + + + + + + if __name__ == '__main__': solution = Solution() - grid = [["#","#","#","#","#","#"], - ["#","T","#","#","#","#"], - ["#","B",".",".","#","#"], - ["#",".","#",".","#","#"], - ["#",".","#",".","S","#"], - ["#",".",".",".","#","#"], - ["#","#","#","#","#","#"]] - ret = solution.minPushBox(grid) - print(ret) + grid = [["#","#",".","#",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".","T",".","#"],[".",".",".",".",".","#",".","."],[".",".",".",".",".","#",".","."],[".",".",".",".",".",".","S","."],[".",".",".","B",".",".",".","."],[".",".",".",".",".",".",".","."]] + #ret = solution.minPushBox(grid) + ret1 = solution.minPushBox_tarjan(grid) + print(ret1) From 71c21a1d54d666b83bdb122d5f4396a1f1631b60 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 3 Jun 2020 10:34:14 +0800 Subject: [PATCH 142/270] Create leetcode-837-new-21-game.py --- Leetcode/DP/leetcode-837-new-21-game.py | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Leetcode/DP/leetcode-837-new-21-game.py diff --git a/Leetcode/DP/leetcode-837-new-21-game.py b/Leetcode/DP/leetcode-837-new-21-game.py new file mode 100644 index 0000000..73c0578 --- /dev/null +++ b/Leetcode/DP/leetcode-837-new-21-game.py @@ -0,0 +1,31 @@ +#coding:utf-8 + +import random + +class Solution(): + '''新21点''' + def new21game(self, N, K, W): + ''' + N: int + K: int + W: int + rtype: float + ''' + print("N = {}\nK = {}\nW = {}".format(N, K, W)) + if K > N: + return 0.0 + if K == 0: + return 0 + dp = [0.0]*(N+W+1) + for i in range(K, N+1): + dp[i] = 1.0 + dp[K-1] = float(min(N - K, W))/W + for j in range(K-1, -1, -1): + dp[j-1] = dp[j] - (dp[j+W] - dp[j])/W + return dp[0] +if __name__ == '__main__': + N = random.randrange(100) + K = random.randrange(21) + W = random.randrange(1, 100) + solution = Solution() + print("从[1,{}]等概率抽取数字,得分超过{}就停止抽取, 得分不超过{}的概率为{}".format(W, K, N, solution.new21game(N,K,W))) From cbed3782c518082cd411e9bdedab44c7441e20f2 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 9 Jun 2020 21:29:34 +0800 Subject: [PATCH 143/270] Create Binaryheap.py --- Grapgh Theory/Binaryheap.py | 118 ++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Grapgh Theory/Binaryheap.py diff --git a/Grapgh Theory/Binaryheap.py b/Grapgh Theory/Binaryheap.py new file mode 100644 index 0000000..e768384 --- /dev/null +++ b/Grapgh Theory/Binaryheap.py @@ -0,0 +1,118 @@ + +""" +Binary Heap. A min heap is a complete binary tree where each node is smaller +its childen. The root, therefore, is the minimum element in the tree. The min +heap use array to represent the data and operation. For example a min heap: + 4 + / \ + 50 7 + / \ / +55 90 87 +Heap [0, 4, 50, 7, 55, 90, 87] +Method in class: insert, remove_min +For example insert(2) in a min heap: + 4 4 2 + / \ / \ / \ + 50 7 --> 50 2 --> 50 4 + / \ / \ / \ / \ / \ / \ +55 90 87 2 55 90 87 7 55 90 87 7 +For example remove_min() in a min heap: + 4 87 7 + / \ / \ / \ + 50 7 --> 50 7 --> 50 87 + / \ / / \ / \ +55 90 87 55 90 55 90 +""" +from abc import ABCMeta, abstractmethod + +class AbstractHeap(): + """Abstract Class for Binary Heap.""" + __metaclass__ = ABCMeta + def __init__(self): + pass + @abstractmethod + def perc_up(self, i): + pass + @abstractmethod + def insert(self, val): + pass + @abstractmethod + def perc_down(self,i): + pass + @abstractmethod + def min_child(self,i): + pass + @abstractmethod + def remove_min(self,i): + pass +class BinaryHeap(AbstractHeap): + def __init__(self): + self.currentSize = 0 + self.heap = [(0)] + + def perc_up(self, i): + while i // 2 > 0: + if self.heap[i] < self.heap[i // 2]: + # Swap value of child with value of its parent + tmp = self.heap[i] + self.heap[i] = self.heap[i // 2] + self.heap[i // 2] = tmp + i = i // 2 + + def swap(self, a, b): + b, a = a, b + def insert(self, val): + """ + Method insert always start by inserting the element at the bottom. + it inserts rightmost spot so as to maintain the complete tree property + Then, it fix the tree by swapping the new element with its parent, + until it finds an appropriate spot for the element. It essentially + perc_up the minimum element + Complexity: O(logN) + """ + self.heap.append(val) + self.currentSize = self.currentSize + 1 + self.perc_up(self.currentSize) + + """ + Method min_child returns index of smaller 2 childs of its parent + """ + def min_child(self, i): + if 2 * i + 1 > self.currentSize: # No right child + return 2 * i + else: + # left child > right child + if self.heap[2 * i] > self.heap[2 * i +1]: + return 2 * i + 1 + else: + return 2 * i + + def perc_down(self, i): + while 2 * i < self.currentSize: + min_child = self.min_child(i) + if self.heap[min_child] < self.heap[i]: + # Swap min child with parent + self.swap(self.heap[min_child], self.heap[i]) + i = min_child + + def remove_min(self): + """ + Remove Min method removes the minimum element and swap it with the last + element in the heap( the bottommost, rightmost element). Then, it + perc_down this element, swapping it with one of its children until the + min heap property is restored + Complexity: O(logN) + """ + ret = self.heap[1] # the smallest value at beginning + self.heap[1] = self.heap[self.currentSize] # Repalce it by the last value + self.currentSize = self.currentSize - 1 + self.heap.pop() + self.perc_down(1) + return ret + def printheap(self): + print(self.heap) +if __name__ == '__main__': + bheap = BinaryHeap() + for i in range(10): + bheap.insert(i) + bheap.printheap() From 25c133d7efde4e617b207d8dee934ee1e4c36c85 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 10 Jun 2020 03:20:28 +0800 Subject: [PATCH 144/270] Create Heap_sort.py --- Sorting_Algorithms/Heap_sort.py | 68 +++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Sorting_Algorithms/Heap_sort.py diff --git a/Sorting_Algorithms/Heap_sort.py b/Sorting_Algorithms/Heap_sort.py new file mode 100644 index 0000000..5aabef8 --- /dev/null +++ b/Sorting_Algorithms/Heap_sort.py @@ -0,0 +1,68 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-06-10 2:00:00 +#Function: 堆排序 + +import time +import numpy as np + +class heap(): + '''堆类似于一个完全二叉树''' + def __init__(self, arr): + self.arr = arr + self.size = len(arr) + def swap(self,arr, i, j): + '''交换函数''' + arr[i], arr[j] = arr[j], arr[i] + def heapfiy(self, arr, i): + '''从堆顶开始进行比较,把最大值(或者最小值)放在父节点''' + lchild = 2*i + 1 #初始化左节点(下标为1) + rchild = 2*i + 2 #初始化右节点(下标为2) + largestnode = i #初始化父节点(下标为0) + #如果左节点存在(在堆大小范围内),且左节点大于父节点,则临时最大根是左节点 + if lchild < self.size and arr[lchild] > arr[largestnode]: + largestnode = lchild + if rchild < self.size and arr[rchild] > arr[largestnode]: + largestnode = rchild + #如果进行了最大根下标改变了,则交换它们位置, 并递归地进行下一轮的heapfiy + if largestnode != i: + self.swap(arr, i, largestnode) + self.heapfiy(arr, largestnode) + def buildMaxHeap(self, arr): + '''构建大根堆''' + #从数组中间为根出发(向下取整) + for i in range(int(self.size/2), -1, -1): + self.heapfiy(arr, i) + def MaxHeap(self): + if self.size == 0: + return [] + self.buildMaxHeap(self.arr) + return self.arr + + def heapsort(self): + ''' + 堆排序 + :把最大值放在堆顶,然后和堆尾交换,self.size--来控制循环范围 + + ''' + #构建大根堆 + self.arr = self.MaxHeap() + print("构建大根堆:{}\n".format(self.arr)) + #进行深度遍历 + for i in range(self.size - 1, 0, -1): + self.swap(self.arr, 0, i) + self.size -= 1 + self.heapfiy(self.arr, 0) + return self.arr + +if __name__ == '__main__': + arr = np.arange(0) + np.random.shuffle(arr) + print("初始化:{}\n".format(arr)) + t0 = time.time() + Heap = heap(arr) + arr = Heap.heapsort() + t1 = time.time() + print("排序后:{}\n".format(arr)) + T = t1 - t0 + print("Heapsort totoal time is {}s\n".format(T)) From b78d2d11991368121fafc4b26b028b4b6f301377 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 10 Jun 2020 03:20:44 +0800 Subject: [PATCH 145/270] update name --- Sorting_Algorithms/{hashsort.py => Hash_sort.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Sorting_Algorithms/{hashsort.py => Hash_sort.py} (100%) diff --git a/Sorting_Algorithms/hashsort.py b/Sorting_Algorithms/Hash_sort.py similarity index 100% rename from Sorting_Algorithms/hashsort.py rename to Sorting_Algorithms/Hash_sort.py From 4e803fc297e47e88cc939d3ff26e3c5c006a4c2d Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 10 Jun 2020 04:00:33 +0800 Subject: [PATCH 146/270] Update Heap_sort.py --- Sorting_Algorithms/Heap_sort.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sorting_Algorithms/Heap_sort.py b/Sorting_Algorithms/Heap_sort.py index 5aabef8..21dca46 100644 --- a/Sorting_Algorithms/Heap_sort.py +++ b/Sorting_Algorithms/Heap_sort.py @@ -14,7 +14,7 @@ def __init__(self, arr): def swap(self,arr, i, j): '''交换函数''' arr[i], arr[j] = arr[j], arr[i] - def heapfiy(self, arr, i): + def heapify(self, arr, i): '''从堆顶开始进行比较,把最大值(或者最小值)放在父节点''' lchild = 2*i + 1 #初始化左节点(下标为1) rchild = 2*i + 2 #初始化右节点(下标为2) @@ -24,15 +24,15 @@ def heapfiy(self, arr, i): largestnode = lchild if rchild < self.size and arr[rchild] > arr[largestnode]: largestnode = rchild - #如果进行了最大根下标改变了,则交换它们位置, 并递归地进行下一轮的heapfiy + #如果进行了最大根下标改变了,则交换它们位置, 并递归地进行下一轮的heapify if largestnode != i: self.swap(arr, i, largestnode) - self.heapfiy(arr, largestnode) + self.heapify(arr, largestnode) def buildMaxHeap(self, arr): '''构建大根堆''' #从数组中间为根出发(向下取整) for i in range(int(self.size/2), -1, -1): - self.heapfiy(arr, i) + self.heapify(arr, i) def MaxHeap(self): if self.size == 0: return [] @@ -52,11 +52,11 @@ def heapsort(self): for i in range(self.size - 1, 0, -1): self.swap(self.arr, 0, i) self.size -= 1 - self.heapfiy(self.arr, 0) + self.heapify(self.arr, 0) return self.arr if __name__ == '__main__': - arr = np.arange(0) + arr = np.arange(10) np.random.shuffle(arr) print("初始化:{}\n".format(arr)) t0 = time.time() From 0e2f325442bc095d7bc9b628e6c5d2bd80fe6264 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 15 Jun 2020 00:29:49 +0800 Subject: [PATCH 147/270] Create PageRank.py --- Grapgh Theory/PageRank.py | 59 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Grapgh Theory/PageRank.py diff --git a/Grapgh Theory/PageRank.py b/Grapgh Theory/PageRank.py new file mode 100644 index 0000000..8b0ce8d --- /dev/null +++ b/Grapgh Theory/PageRank.py @@ -0,0 +1,59 @@ +import numpy as np +import heapq +from scipy.sparse import csc_matrix + + +def pageRank(G, s=.85, maxerr=.0001): + """ + Computes the pagerank for each of the n states + Parameters + $$R = ( d M + \frac { 1 - d } { n } E ) R = A R$$ + ---------- + G: matrix representing state transitions + Gij is a binary value representing a transition from state i to j. + s: probability of following a transition. 1-s probability of teleporting + to another state. + maxerr: if the sum of pageranks between iterations is bellow this we will + have converged. + """ + n = G.shape[0] + + # compressed sparse G-matrix according to column + A = csc_matrix(G, dtype=np.float) + #Retrun one dimensional array that the count of every rows' nonzero numbers + rsums = np.array(A.sum(1))[:, 0] + #return the indexs of nonzero which include (row,col) + ri, ci = A.nonzero() + #probability l(pij) + A.data /= rsums[ri] + # bool array of sink states + sink = rsums == 0 + #initialize r + ro, r = np.zeros(n), np.ones(n) + # Compute pagerank r with Power iteration until converge + while np.sum(np.abs(r - ro)) > maxerr: + #initialize ro + ro = r.copy() + # calculate each pagerank at a time + for i in range(n): + # inlinks of state i + Ai = np.array(A[:, i].todense())[:, 0] + # account for sink states + Di = sink / float(n) + # account for teleportation to state i + Ei = np.ones(n) / float(n) + + r[i] = ro.dot(Ai * s + Di * s + Ei * (1 - s)) + # return normalized pagerank + return r / float(sum(r)) + +if __name__ == '__main__': + #adjacency matrix + G = np.array([[1,0,1,0,0,0,0], + [0,1,0,0,0,0,0], + [0,0,1,1,0,0,0], + [0,0,0,0,1,0,0], + [1,0,0,0,0,0,1], + [0,0,0,0,0,1,0], + [0,0,0,1,0,0,1]]) + print(pageRank(G,s=.85)) From 060c223dd55fd205378b9d8e629a105f8d668fe8 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 15 Jun 2020 23:00:42 +0800 Subject: [PATCH 148/270] Create Pygraph.py create graph, merge, delete node, generate subgraph and so on --- Grapgh Theory/Pygraph.py | 581 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 581 insertions(+) create mode 100644 Grapgh Theory/Pygraph.py diff --git a/Grapgh Theory/Pygraph.py b/Grapgh Theory/Pygraph.py new file mode 100644 index 0000000..9781aa3 --- /dev/null +++ b/Grapgh Theory/Pygraph.py @@ -0,0 +1,581 @@ +#coding:utf-8 +#Data:2020-06-15 22:50:00 +#Python: 2.7 + +import copy + +#--------------------Exceptions--------------------------------------------------------------- +"""Exceptions used by the library.""" + +class PygraphError(Exception): + """Root exception class for all library exceptions. Only used for subclassing.""" + pass + + +class NonexistentNodeError(PygraphError): + """Thrown when a node does not exist within a graph.""" + def __init__(self, node_id): + self.node_id = node_id + + def __str__(self): + return 'Node "{}" does not exist.'.format(self.node_id) + + +class NonexistentEdgeError(PygraphError): + """Thrown when an edge does not exist within a graph.""" + def __init__(self, edge_id): + self.edge_id = edge_id + + def __str__(self): + return 'Edge "{}" does not exist.'.format(self.edge_id) + + +class DisconnectedGraphError(PygraphError): + """Thrown when a graph is disconnected (and such is unexpected by an algorithm).""" + pass + +#------------------Implements the functionality of a directed graph.---------------------------------- + +class DirectedGraph(object): + nodes = None + edges = None + next_node_id = 1 + next_edge_id = 1 + + def __init__(self): + self.nodes = {} + self.edges = {} + self._num_nodes = 0#图中节点总个数 + self._num_edges = 0#图中边的总个数 + + def __deepcopy__(self, memo=None): + graph = DirectedGraph() + graph.nodes = copy.deepcopy(self.nodes) + graph.edges = copy.deepcopy(self.edges) + graph.next_node_id = self.next_node_id + graph.next_edge_id = self.next_edge_id + graph._num_nodes = self._num_nodes + graph._num_edges = self._num_edges + return graph + + def num_nodes(self): + """Returns the current number of nodes in the graph.""" + return self._num_nodes + + def num_edges(self): + """Returns the current number of edges in the graph.""" + return self._num_edges + + def generate_node_id(self): + node_id = self.next_node_id + self.next_node_id += 1 + return node_id + + def generate_edge_id(self): + edge_id = self.next_edge_id + self.next_edge_id += 1 + return edge_id + + def new_node(self): + """Adds a new, blank node to the graph. + Returns the node id of the new node.""" + node_id = self.generate_node_id() + + node = {'id': node_id, + 'edges': [], + 'data': {} + } + + self.nodes[node_id] = node + + self._num_nodes += 1 + + return node_id + + def new_edge(self, node_a, node_b, cost=1): + """Adds a new edge from node_a to node_b that has a cost. + Returns the edge id of the new edge.""" + + # Verify that both nodes exist in the graph + try: + self.nodes[node_a] + except KeyError: + raise NonexistentNodeError(node_a) + try: + self.nodes[node_b] + except KeyError: + raise NonexistentNodeError(node_b) + + # Create the new edge + edge_id = self.generate_edge_id() + + edge = {'id': edge_id, + 'vertices': (node_a, node_b), + 'cost': cost, + 'data': {} + } + + self.edges[edge_id] = edge + self.nodes[node_a]['edges'].append(edge_id) + + self._num_edges += 1 + + return edge_id + + def neighbors(self, node_id): + """Find all the nodes where there is an edge from the specified node to that node. + Returns a list of node ids.""" + node = self.get_node(node_id) + return [self.get_edge(edge_id)['vertices'][1] for edge_id in node['edges']] + + def adjacent(self, node_a, node_b): + """Determines whether there is an edge from node_a to node_b. + Returns True if such an edge exists, otherwise returns False.""" + neighbors = self.neighbors(node_a) + return node_b in neighbors + + def edge_cost(self, node_a, node_b): + """Returns the cost of moving between the edge that connects node_a to node_b. + Returns +inf if no such edge exists.""" + cost = float('inf') + node_object_a = self.get_node(node_a) + for edge_id in node_object_a['edges']: + edge = self.get_edge(edge_id) + tpl = (node_a, node_b) + if edge['vertices'] == tpl: + cost = edge['cost'] + break + return cost + + def get_node(self, node_id): + """Returns the node object identified by "node_id".""" + try: + node_object = self.nodes[node_id] + except KeyError: + raise NonexistentNodeError(node_id) + return node_object + + def get_all_node_ids(self): + """Returns a list of all the node ids in the graph.""" + return self.nodes.keys() + + def get_all_node_objects(self): + """Returns a list of all the node objects in the graph.""" + return self.nodes.values() + + def get_edge(self, edge_id): + """Returns the edge object identified by "edge_id".""" + try: + edge_object = self.edges[edge_id] + except KeyError: + raise NonexistentEdgeError(edge_id) + return edge_object + + def get_all_edge_ids(self): + """Returns a list of all the edge ids in the graph""" + return self.edges.keys() + + def get_all_edge_objects(self): + """Returns a list of all the edge objects in the graph.""" + return self.edges.values() + + def delete_edge_by_id(self, edge_id): + """Removes the edge identified by "edge_id" from the graph.""" + edge = self.get_edge(edge_id) + + # Remove the edge from the "from node" + # --Determine the from node + from_node_id = edge['vertices'][0] + from_node = self.get_node(from_node_id) + + # --Remove the edge from it + from_node['edges'].remove(edge_id) + + # Remove the edge from the edge list + del self.edges[edge_id] + + self._num_edges -= 1 + + def delete_edge_by_nodes(self, node_a, node_b): + """Removes all the edges from node_a to node_b from the graph.""" + node = self.get_node(node_a) + + # Determine the edge ids + edge_ids = [] + for e_id in node['edges']: + edge = self.get_edge(e_id) + if edge['vertices'][1] == node_b: + edge_ids.append(e_id) + + # Delete the edges + for e in edge_ids: + self.delete_edge_by_id(e) + + def delete_node(self, node_id): + """Removes the node identified by node_id from the graph.""" + node = self.get_node(node_id) + + # Remove all edges from the node + for e in node['edges']: + self.delete_edge_by_id(e) + + # Remove all edges to the node + edges = [edge_id for edge_id, edge in self.edges.items() if edge['vertices'][1] == node_id] + for e in edges: + self.delete_edge_by_id(e) + + # Remove the node from the node list + del self.nodes[node_id] + + self._num_nodes -= 1 + + def move_edge_source(self, edge_id, node_a, node_b): + """Moves an edge originating from node_a so that it originates from node_b.""" + # Grab the edge + edge = self.get_edge(edge_id) + + # Alter the vertices + edge['vertices'] = (node_b, edge['vertices'][1]) + + # Remove the edge from node_a + node = self.get_node(node_a) + node['edges'].remove(edge_id) + + # Add the edge to node_b + node = self.get_node(node_b) + node['edges'].append(edge_id) + + def move_edge_target(self, edge_id, node_a): + """Moves an edge so that it targets node_a.""" + # Grab the edge + edge = self.get_edge(edge_id) + + # Alter the vertices + edge['vertices'] = (edge['vertices'][0], node_a) + + def get_edge_ids_by_node_ids(self, node_a, node_b): + """Returns a list of edge ids connecting node_a to node_b.""" + # Check if the nodes are adjacent + if not self.adjacent(node_a, node_b): + return [] + + # They're adjacent, so pull the list of edges from node_a and determine which ones point to node_b + node = self.get_node(node_a) + return [edge_id for edge_id in node['edges'] if self.get_edge(edge_id)['vertices'][1] == node_b] + + def get_first_edge_id_by_node_ids(self, node_a, node_b): + """Returns the first (and possibly only) edge connecting node_a and node_b.""" + ret = self.get_edge_ids_by_node_ids(node_a, node_b) + if not ret: + return None + else: + return ret[0] +#------------------Implements the functionality of an undirected graph---------------------------------- + +class UndirectedGraph(DirectedGraph): + def __deepcopy__(self, memo=None): + graph = UndirectedGraph() + graph.nodes = copy.deepcopy(self.nodes) + graph.edges = copy.deepcopy(self.edges) + graph.next_node_id = self.next_node_id + graph.next_edge_id = self.next_edge_id + graph._num_nodes = self._num_nodes + graph._num_edges = self._num_edges + return graph + + def new_edge(self, node_a, node_b, cost=1): + """Adds a new, undirected edge between node_a and node_b with a cost. + Returns the edge id of the new edge.""" + edge_id = super(UndirectedGraph, self).new_edge(node_a, node_b, cost) + self.nodes[node_b]['edges'].append(edge_id) + return edge_id + + def neighbors(self, node_id): + """Find all the nodes where there is an edge from the specified node to that node. + Returns a list of node ids.""" + node = self.get_node(node_id) + flattened_nodes_list = [] + for a, b in [self.get_edge(edge_id)['vertices'] for edge_id in node['edges']]: + flattened_nodes_list.append(a) + flattened_nodes_list.append(b) + node_set = set(flattened_nodes_list) + if node_id in node_set: + node_set.remove(node_id) + return [nid for nid in node_set] + + def delete_edge_by_id(self, edge_id): + """Removes the edge identified by "edge_id" from the graph.""" + edge = self.get_edge(edge_id) + + # Remove the edge from the "from node" + # --Determine the from node + from_node_id = edge['vertices'][0] + from_node = self.get_node(from_node_id) + + # --Remove the edge from it + from_node['edges'].remove(edge_id) + + # Remove the edge from the "to node" + to_node_id = edge['vertices'][1] + to_node = self.get_node(to_node_id) + + # --Remove the edge from it + to_node['edges'].remove(edge_id) + + # Remove the edge from the edge list + del self.edges[edge_id] + + self._num_edges -= 1 + + def move_edge_target(self, edge_id, node_a): + """Moves an edge so that it targets node_a.""" + # Grab the edge + edge = self.get_edge(edge_id) + + # Remove the edge from the original "target node" + original_target_node_id = edge['vertices'][1] + original_target_node = self.get_node(original_target_node_id) + original_target_node['edges'].remove(edge_id) + + # Add the edge to the new target node + new_target_node_id = node_a + new_target_node = self.get_node(new_target_node_id) + new_target_node['edges'].append(edge_id) + + # Alter the vertices on the edge + edge['vertices'] = (edge['vertices'][0], node_a) + + def get_edge_ids_by_node_ids(self, node_a, node_b): + """Returns a list of edge ids connecting node_a to node_b.""" + # Check if the nodes are adjacent + if not self.adjacent(node_a, node_b): + return [] + + # They're adjacent, so pull the list of edges from node_a and determine which ones point to node_b + node = self.get_node(node_a) + return [edge_id for edge_id in node['edges'] \ + if (self.get_edge(edge_id)['vertices'][1] == node_b or self.get_edge(edge_id)['vertices'][0] == node_b)] + +#------------------Helper Function for graph------------------------------------------------------------------------------------------------ + +# Graph Conversions + +def make_subgraph(graph, vertices, edges): + """Converts a subgraph given by a list of vertices and edges into a graph object.""" + # Copy the entire graph + local_graph = copy.deepcopy(graph) + + # Remove all the edges that aren't in the list + edges_to_delete = filter(lambda x: x not in edges, local_graph.get_all_edge_ids()) + for e in edges_to_delete: + local_graph.delete_edge_by_id(e) + + # Remove all the vertices that aren't in the list + nodes_to_delete = filter(lambda x: x not in vertices, local_graph.get_all_node_ids()) + for n in nodes_to_delete: + local_graph.delete_node(n) + + return local_graph + + +def convert_graph_directed_to_undirected(dg): + """Converts a directed graph into an undirected graph. Directed edges are made undirected.""" + + udg = UndirectedGraph() + + # Copy the graph + # --Copy nodes + # --Copy edges + udg.nodes = copy.deepcopy(dg.nodes) + udg.edges = copy.deepcopy(dg.edges) + udg.next_node_id = dg.next_node_id + udg.next_edge_id = dg.next_edge_id + + # Convert the directed edges into undirected edges + for edge_id in udg.get_all_edge_ids(): + edge = udg.get_edge(edge_id) + target_node_id = edge['vertices'][1] + target_node = udg.get_node(target_node_id) + target_node['edges'].append(edge_id) + + return udg + + +def remove_duplicate_edges_directed(dg): + """Removes duplicate edges from a directed graph.""" + # With directed edges, we can just hash the to and from node id tuples and if + # a node happens to conflict with one that already exists, we delete it + + # --For aesthetic, we sort the edge ids so that lower edge ids are kept + lookup = {} + edges = sorted(dg.get_all_edge_ids()) + for edge_id in edges: + e = dg.get_edge(edge_id) + tpl = e['vertices'] + if tpl in lookup: + dg.delete_edge_by_id(edge_id) + else: + lookup[tpl] = edge_id + + +def remove_duplicate_edges_undirected(udg): + """Removes duplicate edges from an undirected graph.""" + # With undirected edges, we need to hash both combinations of the to-from node ids, since a-b and b-a are equivalent + # --For aesthetic, we sort the edge ids so that lower edges ids are kept + lookup = {} + edges = sorted(udg.get_all_edge_ids()) + for edge_id in edges: + e = udg.get_edge(edge_id) + tpl_a = e['vertices'] + tpl_b = (tpl_a[1], tpl_a[0]) + if tpl_a in lookup or tpl_b in lookup: + udg.delete_edge_by_id(edge_id) + else: + lookup[tpl_a] = edge_id + lookup[tpl_b] = edge_id + + +def get_vertices_from_edge_list(graph, edge_list): + """Transforms a list of edges into a list of the nodes those edges connect. + Returns a list of nodes, or an empty list if given an empty list. + """ + node_set = set() + for edge_id in edge_list: + edge = graph.get_edge(edge_id) + a, b = edge['vertices'] + node_set.add(a) + node_set.add(b) + + return list(node_set) + + +def get_subgraph_from_edge_list(graph, edge_list): + """Transforms a list of edges into a subgraph.""" + node_list = get_vertices_from_edge_list(graph, edge_list) + subgraph = make_subgraph(graph, node_list, edge_list) + + return subgraph + + +def merge_graphs(main_graph, addition_graph): + """Merges an ''addition_graph'' into the ''main_graph''. + Returns a tuple of dictionaries, mapping old node ids and edge ids to new ids. + """ + + node_mapping = {} + edge_mapping = {} + + for node in addition_graph.get_all_node_objects(): + node_id = node['id'] + new_id = main_graph.new_node() + node_mapping[node_id] = new_id + + for edge in addition_graph.get_all_edge_objects(): + edge_id = edge['id'] + old_vertex_a_id, old_vertex_b_id = edge['vertices'] + new_vertex_a_id = node_mapping[old_vertex_a_id] + new_vertex_b_id = node_mapping[old_vertex_b_id] + new_edge_id = main_graph.new_edge(new_vertex_a_id, new_vertex_b_id) + edge_mapping[edge_id] = new_edge_id + + return node_mapping, edge_mapping + + +def create_graph_from_adjacency_matrix(adjacency_matrix): + """Generates a graph from an adjacency matrix specification. + Returns a tuple containing the graph and a list-mapping of node ids to matrix column indices. + + The graph will be an UndirectedGraph if the provided adjacency matrix is symmetric. + The graph will be a DirectedGraph if the provided adjacency matrix is not symmetric. + Ref: http://mathworld.wolfram.com/AdjacencyMatrix.html""" + if is_adjacency_matrix_symmetric(adjacency_matrix): + graph = UndirectedGraph() + else: + graph = DirectedGraph() + + node_column_mapping = [] + + num_columns = len(adjacency_matrix) + for _ in xrange(num_columns): + node_id = graph.new_node() + node_column_mapping.append(node_id) + + for j in xrange(num_columns): + for i in xrange(num_columns): + if adjacency_matrix[j][i]: + jnode_id = node_column_mapping[j] + inode_id = node_column_mapping[i] + # Because of our adjacency matrix encoding, [j][i] in our code corresponds to [i][j] in a traditional matrix interpretation + # Thus, we need to put an edge from node i to node j if [j][i] in our code is non-zero + graph.new_edge(inode_id, jnode_id) + + return (graph, node_column_mapping) + + +def is_adjacency_matrix_symmetric(adjacency_matrix): + """Determines if an adjacency matrix is symmetric. + Ref: http://mathworld.wolfram.com/SymmetricMatrix.html""" + # Verify that the matrix is square + num_columns = len(adjacency_matrix) + for column in adjacency_matrix: + # In a square matrix, every row should be the same length as the number of columns + if len(column) != num_columns: + return False + + # Loop through the bottom half of the matrix and compare it to the top half + # --We do the bottom half because of how we construct adjacency matrices + max_i = 0 + for j in xrange(num_columns): + for i in xrange(max_i): + # If i == j, we can skip ahead so we don't compare with ourself + if i == j: + continue + # Compare the value in the bottom half with the mirrored value in the top half + # If they aren't the same, the matrix isn't symmetric + if adjacency_matrix[j][i] != adjacency_matrix[i][j]: + return False + max_i += 1 + + # If we reach this far without returning false, then we know that everything matched, + # which makes this a symmetric matrix + return True + +def graph_to_dot(graph, node_renderer=None, edge_renderer=None): + """Produces a DOT specification string from the provided graph.""" + node_pairs = graph.nodes.items() + edge_pairs = graph.edges.items() + + if node_renderer is None: + node_renderer_wrapper = lambda nid: '' + else: + node_renderer_wrapper = lambda nid: ' [%s]' % ','.join( + map(lambda tpl: '%s=%s' % tpl, node_renderer(graph, nid).items())) + + # Start the graph + graph_string = 'digraph G {\n' + graph_string += 'overlap=scale;\n' + + # Print the nodes (placeholder) + for node_id, node in node_pairs: + graph_string += '%i%s;\n' % (node_id, node_renderer_wrapper(node_id)) + + # Print the edges + for edge_id, edge in edge_pairs: + node_a = edge['vertices'][0] + node_b = edge['vertices'][1] + graph_string += '%i -> %i;\n' % (node_a, node_b) + + # Finish the graph + graph_string += '}' + + return graph_string +if __name__ == '__main__': + adjacency_matrix = [[1,0,1,0,0,0,0], + [0,1,0,0,0,0,0], + [0,0,1,1,0,0,0], + [0,0,0,0,1,0,0], + [1,0,0,0,0,0,1], + [0,0,0,0,0,1,0], + [0,0,0,1,0,0,1]] + graph, c = create_graph_from_adjacency_matrix(adjacency_matrix) + print(graph_to_dot(graph)) From 945e2574922036e853292e5284036aa0a079faea Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 15 Jun 2020 23:04:25 +0800 Subject: [PATCH 149/270] Update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 7bbc71c..75542c8 100644 --- a/.gitignore +++ b/.gitignore @@ -99,3 +99,6 @@ ENV/ # mypy .mypy_cache/ +bilibili/log +.DS_Store +bilibili/log.err From 02f60702e1b7010366d43143932c841f12a95051 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 00:29:50 +0800 Subject: [PATCH 150/270] Create 6.py --- Pygame/6.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Pygame/6.py diff --git a/Pygame/6.py b/Pygame/6.py new file mode 100644 index 0000000..577ec0a --- /dev/null +++ b/Pygame/6.py @@ -0,0 +1,10 @@ +import re +c = 0 +n = ['67824'] +while n[0].isdigit(): + c += 1 + with open("/Users/jin/Downloads/channel/{}.txt".format(n[0]),"r+") as f: + r = f.readlines() + n = re.findall(r'(\d+)',r[0]) + print(c, n[0]) + From fe03316d7c71b5780780ae351a0ffeab2cccd579 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 01:04:37 +0800 Subject: [PATCH 151/270] Update 6.py --- Pygame/6.py | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/Pygame/6.py b/Pygame/6.py index 577ec0a..d7fede6 100644 --- a/Pygame/6.py +++ b/Pygame/6.py @@ -1,4 +1,6 @@ import re +import zipfile +''' c = 0 n = ['67824'] while n[0].isdigit(): @@ -7,4 +9,41 @@ r = f.readlines() n = re.findall(r'(\d+)',r[0]) print(c, n[0]) - + + ************************************************************** +**************************************************************** +**************************************************************** +** ** +** OO OO XX YYYY GG GG EEEEEE NN NN ** +** OO OO XXXXXX YYYYYY GG GG EEEEEE NN NN ** +** OO OO XXX XXX YYY YY GG GG EE NN NN ** +** OOOOOOOO XX XX YY GGG EEEEE NNNN ** +** OOOOOOOO XX XX YY GGG EEEEE NN ** +** OO OO XXX XXX YYY YY GG GG EE NN ** +** OO OO XXXXXX YYYYYY GG GG EEEEEE NN ** +** OO OO XX YYYY GG GG EEEEEE NN ** +** ** +**************************************************************** + ************************************************************** +''' +s = '/Users/jin/Downloads/channel.zip' +z = zipfile.ZipFile(s,"r") +n = '90052.txt' +convert = '90052' +comments = [] +while convert.isdigit(): + #read the information in the archive + info = z.read(n) + #get comment from the txt + comment0 = z.getinfo(n).comment + #push to comments + comments.append(comment0) + #It need to translate byte to str to match numbers + info=str(info).encode("utf-8") + res = re.findall('\d', info) + convert = ''.join(res) + n = convert + '.txt' + end = '' + for c in comments: + end += str(c).encode("utf-8") + print(end) From e727486192a38df413da010d4a4316cc6bc21efd Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 11:12:13 +0800 Subject: [PATCH 152/270] Create 7.py --- Pygame/7.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 Pygame/7.py diff --git a/Pygame/7.py b/Pygame/7.py new file mode 100644 index 0000000..a6da521 --- /dev/null +++ b/Pygame/7.py @@ -0,0 +1,15 @@ +import requests +from PIL import Image +url = 'http://www.pythonchallenge.com/pc/def/oxygen.png' +r = requests.get(url) +f1 = '/Users/jin/Desktop/oxygen.png' +with open(f1,'wb') as f: + f.write(r.content) + f.close() + +im = Image.open(f1) +s = '' +for i in range(0, im.size[0], 7): + if im.getpixel((i,47))[0] == im.getpixel((i,47))[1] and im.getpixel((i,47))[0] == im.getpixel((i,47))[2]: + s += ''.join(chr(im.getpixel((i,47))[0])) +print s From f58aa7b9431f938c66ee4f10e5038302b4b5694b Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 12:36:30 +0800 Subject: [PATCH 153/270] Create 8.py --- Pygame/8.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Pygame/8.py diff --git a/Pygame/8.py b/Pygame/8.py new file mode 100644 index 0000000..f4e20a3 --- /dev/null +++ b/Pygame/8.py @@ -0,0 +1,9 @@ +#coding: utf-8 +#Author: Toryun +#Date: 2020-06-16 12:27:00 +import bz2 + +un = 'BZh91AY&SYA\xaf\x82\r\x00\x00\x01\x01\x80\x02\xc0\x02\x00 \x00!\x9ah3M\x07<]\xc9\x14\xe1BA\x06\xbe\x084' +pw = 'BZh91AY&SY\x94$|\x0e\x00\x00\x00\x81\x00\x03$ \x00!\x9ah3M\x13<]\xc9\x14\xe1BBP\x91\xf08' + +print("Username: {}\nPassword: {}\n".format(bz2.decompress(un), bz2.decompress(pw))) From 48f2591f5969d8236663add523f712f7dd287d73 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 13:28:10 +0800 Subject: [PATCH 154/270] Create 9.py --- Pygame/9.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Pygame/9.py diff --git a/Pygame/9.py b/Pygame/9.py new file mode 100644 index 0000000..d8e93f5 --- /dev/null +++ b/Pygame/9.py @@ -0,0 +1,36 @@ +#coding: utf-8 +#Author: Toryun +#Date: 2020-06-16 13:13:00 + +from PIL import Image +a = [146,399,163,403,170,393,169,391,166,386,170,381,170,371,170,355,169,346,167,335,170,329,170,320,170, +310,171,301,173,290,178,289,182,287,188,286,190,286,192,291,194,296,195,305,194,307,191,312,190,316, +190,321,192,331,193,338,196,341,197,346,199,352,198,360,197,366,197,373,196,380,197,383,196,387,192, +389,191,392,190,396,189,400,194,401,201,402,208,403,213,402,216,401,219,397,219,393,216,390,215,385, +215,379,213,373,213,365,212,360,210,353,210,347,212,338,213,329,214,319,215,311,215,306,216,296,218, +290,221,283,225,282,233,284,238,287,243,290,250,291,255,294,261,293,265,291,271,291,273,289,278,287, +279,285,281,280,284,278,284,276,287,277,289,283,291,286,294,291,296,295,299,300,301,304,304,320,305, +327,306,332,307,341,306,349,303,354,301,364,301,371,297,375,292,384,291,386,302,393,324,391,333,387, +328,375,329,367,329,353,330,341,331,328,336,319,338,310,341,304,341,285,341,278,343,269,344,262,346, +259,346,251,349,259,349,264,349,273,349,280,349,288,349,295,349,298,354,293,356,286,354,279,352,268, +352,257,351,249,350,234,351,211,352,197,354,185,353,171,351,154,348,147,342,137,339,132,330,122,327, +120,314,116,304,117,293,118,284,118,281,122,275,128,265,129,257,131,244,133,239,134,228,136,221,137, +214,138,209,135,201,132,192,130,184,131,175,129,170,131,159,134,157,134,160,130,170,125,176,114,176, +102,173,103,172,108,171,111,163,115,156,116,149,117,142,116,136,115,129,115,124,115,120,115,115,117, +113,120,109,122,102,122,100,121,95,121,89,115,87,110,82,109,84,118,89,123,93,129,100,130,108,132,110, +133,110,136,107,138,105,140,95,138,86,141,79,149,77,155,81,162,90,165,97,167,99,171,109,171,107,161, +111,156,113,170,115,185,118,208,117,223,121,239,128,251,133,259,136,266,139,276,143,290,148,310,151, +332,155,348,156,353,153,366,149,379,147,394,146,399] +b = [156,141,165,135,169,131,176,130,187,134,191,140,191,146,186,150,179,155,175,157,168,157,163,157,159, +157,158,164,159,175,159,181,157,191,154,197,153,205,153,210,152,212,147,215,146,218,143,220,132,220, +125,217,119,209,116,196,115,185,114,172,114,167,112,161,109,165,107,170,99,171,97,167,89,164,81,162, +77,155,81,148,87,140,96,138,105,141,110,136,111,126,113,129,118,117,128,114,137,115,146,114,155,115, +158,121,157,128,156,134,157,136,156,136] +first = a+b +first = zip(first[::2], first[1::2]) + +yellow = (255, 238, 25) +im = Image.new("RGB", (640,480)) +for i in range(len(first)): + im.putpixel(first[i], yellow) +im.save("/Users/jin/Desktop/first.png") From aa14082a7c71159c2aaca699377fa8b9e9e355f5 Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 21:45:26 +0800 Subject: [PATCH 155/270] Create 10.py --- Pygame/10.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Pygame/10.py diff --git a/Pygame/10.py b/Pygame/10.py new file mode 100644 index 0000000..4c7f7a0 --- /dev/null +++ b/Pygame/10.py @@ -0,0 +1,19 @@ +#coding:utf-8 +#Author: Toryun +#Date: 2020-06-16 21:35:00 +#Function: descript previous number +a = '111221' +k = 4 +while k < 30: + j = 0 + s = '' + while j < len(a): + c = 1 + while j < len(a)-1 and a[j] == a[j+1]: + c += 1 + j += 1 + s = "{}{}{}".format(s, c, a[j]) + j += 1 + k += 1 + a = s +print len(a) From eb5376bf330d6bd40ee21b5c0e5128953840337e Mon Sep 17 00:00:00 2001 From: YoTro Date: Tue, 16 Jun 2020 22:17:11 +0800 Subject: [PATCH 156/270] Create 11.py --- Pygame/11.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Pygame/11.py diff --git a/Pygame/11.py b/Pygame/11.py new file mode 100644 index 0000000..b66d751 --- /dev/null +++ b/Pygame/11.py @@ -0,0 +1,22 @@ +from PIL import Image +import requests +f1 = "/Users/jin/Desktop/cave.jpg" +''' +r = requests.get('http://www.pythonchallenge.com/pc/return/cave.jpg') +with open(f1,'wb') as f: + f.write(r.content) +''' +im = Image.open(f1) +odd = Image.new(im.mode, (im.size[0]/2, im.size[1]/2)) +even = Image.new(im.mode, (im.size[0]/2, im.size[1]/2)) + +for x in range(1,im.size[0],2): + for y in range(1,im.size[1],2): + odd.putpixel(((x-1)/2,(y-1)/2),im.getpixel((x,y))) + +for x in range(1,im.size[0],2): + for y in range(1,im.size[1],2): + even.putpixel((x/2,y/2),im.getpixel((x,y))) + +odd.save('/Users/jin/Desktop/odd.jpg') +even.save('/Users/jin/Desktop/even.jpg') From 8e3771d864d6724b11fc30cefa2fe719bf6adf3c Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 17 Jun 2020 01:04:34 +0800 Subject: [PATCH 157/270] Create 12.py --- Pygame/12.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Pygame/12.py diff --git a/Pygame/12.py b/Pygame/12.py new file mode 100644 index 0000000..0eb16b0 --- /dev/null +++ b/Pygame/12.py @@ -0,0 +1,11 @@ +#coding: utf-8 + +from PIL import Image +p = '/Users/jin/Desktop/' +f = open('/Users/jin/Downloads/evil2.gfx', 'rb') +f_info = f.read() +f.close() +for i in range(5): + with open(p+str(i)+'.jpg', 'wb') as fp: + fp.write(f_info[i::5]) + From 6387c5f62215da314fc3ad40bba5f67a365a5cb5 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 17 Jun 2020 12:52:34 +0800 Subject: [PATCH 158/270] Create 13.py --- Pygame/13.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 Pygame/13.py diff --git a/Pygame/13.py b/Pygame/13.py new file mode 100644 index 0000000..04e27c4 --- /dev/null +++ b/Pygame/13.py @@ -0,0 +1,34 @@ +#coding: utf-8 +#Author: Toryun +#Date: 2020-06-17 01:13:00 + +import urllib2 +import xmlrpclib +from contextlib import closing + +url0 = 'http://www.pythonchallenge.com' +url1 = 'http://www.pythonchallenge.com/pc/return/evil4.jpg' +url2 = 'http://www.pythonchallenge.com/pc/phonebook.php' +#创建默认密码管理对象实例 +PasswordMgr1 = urllib2.HTTPPasswordMgrWithDefaultRealm() +#向实例添加密码和用户名,uri,realm(“领域”,其实就是指当前认证的保护范围。) +#例如 /protected_docs就是受限访问对象 +#GET /protected_docs HTTP/1.1 +#Host: 127.0.0.1:3000 +PasswordMgr1.add_password(None, url0, 'huge', 'file') +#实例一个含有密码的基础验证处理对象 +auth_handler = urllib2.HTTPBasicAuthHandler(PasswordMgr1) +#Create an opener object from a list of handlers. +#The opener will use several default handlers, including support +#for HTTP, FTP and when applicable, HTTPS. +#If any of the handlers passed as arguments are subclasses of the +#default handlers, the default handlers will not be used. +#构建一个含有处理器的打开对象 +op = urllib2.build_opener(auth_handler) +#安装这个打开对象 +urllib2.install_opener(op) +#打开这个网页并获取内容(自动关闭with..as) +with closing(urllib2.urlopen(url1)) as f: + print(f.read().decode('utf-8')) +xmlrpc = xmlrpclib.ServerProxy(url2) +print(xmlrpc.phone('Bert')) From f8911de1fd29d816913f0e14c9961bc364adb680 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 17 Jun 2020 17:30:56 +0800 Subject: [PATCH 159/270] Create 14.py --- Pygame/14.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Pygame/14.py diff --git a/Pygame/14.py b/Pygame/14.py new file mode 100644 index 0000000..d43969b --- /dev/null +++ b/Pygame/14.py @@ -0,0 +1,56 @@ +#coding: utf-8 +#Author: Toryun +#Date: 2020-06-17 15:13:00 + +import urllib2 +from contextlib import closing +from PIL import Image,ImageFile +ImageFile.LOAD_TRUNCATED_IMAGES = True +''' + +url0 = 'http://www.pythonchallenge.com' +url1 = 'http://www.pythonchallenge.com/pc/return/wire.png' + +PasswordMgr1 = urllib2.HTTPPasswordMgrWithDefaultRealm() +PasswordMgr1.add_password(None, url0, 'huge', 'file') +auth_handler = urllib2.HTTPBasicAuthHandler(PasswordMgr1) +op = urllib2.build_opener(auth_handler) +urllib2.install_opener(op) + +with closing(urllib2.urlopen(url1)) as f: + b = open('/Users/jin/Desktop/wire.png','wb') + b.write(f.read()) +''' + +t = '/Users/jin/Desktop/wire.png' +t0 = '/Users/jin/Desktop/14.png' +im = Image.open(t) + +data = list(im.getdata()) + +#create new image object +im0 = Image.new(im.mode, (100,100)) +#Allocates storage for the image and loads the pixel data. In normal cases, you don’t need to call this method, since the Image class automatically loads an opened image when it is accessed for the first time. This method will close the file associated with the image. +data0 = im0.load() + +allsteps = [[i, i-1, i-1, i-2] for i in range(100, 0, -2)] +#把二维数组变成一维数组 +nsteps = reduce(lambda x, y: x+y, allsteps) +#右,上,左,下 +directions = [(1,0), (0,1), (-1,0), (0,-1)] +direction = 0 +pos = 0 +#使起始点为(0,0) +pos0 = (-1, 0) + +for i in nsteps: + #前进i步 + for j in range(i): + #控制方向 + pos0 = tuple(map(lambda x,y: x+y, pos0, directions[direction])) + #将wire的像素值填入新的图片中 + data0[pos0] = data[pos] + pos += 1 + #换方向 + direction = (direction + 1) % 4 +im0.save(t0) From 332ed06498dc51d14078e9069c36fb2c491758e1 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 17 Jun 2020 17:31:01 +0800 Subject: [PATCH 160/270] Create 15.py --- Pygame/15.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Pygame/15.py diff --git a/Pygame/15.py b/Pygame/15.py new file mode 100644 index 0000000..6710ad9 --- /dev/null +++ b/Pygame/15.py @@ -0,0 +1,12 @@ + +from datetime import date + +year = [i for i in xrange(1006, 1997) if ((i%4 == 0 or i%400 == 0) and i%100 != 0) and str(i)[-1] == '6'] + +birthday = [] + +for i in year: + if date(i, 1, 27).weekday() == 1: + birthday.append(i) + +print(birthday) From 5ef7fd051e387506ad48040fd7164a084ccac82e Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 17 Jun 2020 22:48:16 +0800 Subject: [PATCH 161/270] Update 13.py --- Pygame/13.py | 51 ++++++++++++++++++++++++++++----------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/Pygame/13.py b/Pygame/13.py index 04e27c4..7b651bd 100644 --- a/Pygame/13.py +++ b/Pygame/13.py @@ -5,30 +5,35 @@ import urllib2 import xmlrpclib from contextlib import closing - +username = 'huge' +password = 'file' url0 = 'http://www.pythonchallenge.com' url1 = 'http://www.pythonchallenge.com/pc/return/evil4.jpg' url2 = 'http://www.pythonchallenge.com/pc/phonebook.php' -#创建默认密码管理对象实例 -PasswordMgr1 = urllib2.HTTPPasswordMgrWithDefaultRealm() -#向实例添加密码和用户名,uri,realm(“领域”,其实就是指当前认证的保护范围。) -#例如 /protected_docs就是受限访问对象 -#GET /protected_docs HTTP/1.1 -#Host: 127.0.0.1:3000 -PasswordMgr1.add_password(None, url0, 'huge', 'file') -#实例一个含有密码的基础验证处理对象 -auth_handler = urllib2.HTTPBasicAuthHandler(PasswordMgr1) -#Create an opener object from a list of handlers. -#The opener will use several default handlers, including support -#for HTTP, FTP and when applicable, HTTPS. -#If any of the handlers passed as arguments are subclasses of the -#default handlers, the default handlers will not be used. -#构建一个含有处理器的打开对象 -op = urllib2.build_opener(auth_handler) -#安装这个打开对象 -urllib2.install_opener(op) -#打开这个网页并获取内容(自动关闭with..as) -with closing(urllib2.urlopen(url1)) as f: - print(f.read().decode('utf-8')) +def login_handler(url0, url1, username, password): + + #创建默认密码管理对象实例 + PasswordMgr1 = urllib2.HTTPPasswordMgrWithDefaultRealm() + #向实例添加密码和用户名,uri,realm(“领域”,其实就是指当前认证的保护范围。) + #例如 /protected_docs就是受限访问对象 + #GET /protected_docs HTTP/1.1 + #Host: 127.0.0.1:3000 + PasswordMgr1.add_password(None, url0, username, password) + #实例一个含有密码的基础验证处理对象 + auth_handler = urllib2.HTTPBasicAuthHandler(PasswordMgr1) + #Create an opener object from a list of handlers. + #The opener will use several default handlers, including support + #for HTTP, FTP and when applicable, HTTPS. + #If any of the handlers passed as arguments are subclasses of the + #default handlers, the default handlers will not be used. + #构建一个含有处理器的打开对象 + op = urllib2.build_opener(auth_handler) + #安装这个打开对象 + urllib2.install_opener(op) + #打开这个网页并获取内容(自动关闭with..as) + with closing(urllib2.urlopen(url1)) as f: + print(f.read().decode('utf-8')) +login_handler(url0, url1, username, password) xmlrpc = xmlrpclib.ServerProxy(url2) -print(xmlrpc.phone('Bert')) +b = raw_input('please input the name we need to call:') +print(xmlrpc.phone(b)) From 89b87955361e8f345ce347fe46606bc549c6fd90 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 29 Jun 2020 15:15:54 +0800 Subject: [PATCH 162/270] Create Trie_Tree.py --- Trees/Trie_Tree.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 Trees/Trie_Tree.py diff --git a/Trees/Trie_Tree.py b/Trees/Trie_Tree.py new file mode 100644 index 0000000..5680d9c --- /dev/null +++ b/Trees/Trie_Tree.py @@ -0,0 +1,61 @@ +class Trie(object): + + def __init__(self): + """ + Initialize your data structure here. + """ + self.dict_trie = {} + + def insert(self, word): + """ + Inserts a word into the trie. + :type word: str + :rtype: None + """ + node = self.dict_trie + for i in word: + if i in node: + node = node[i] + else: + node[i] = {"val":0} + node = node[i] + node["val"] = 1 + + def search(self, word): + """ + Returns if the word is in the trie. + :type word: str + :rtype: bool + """ + node = self.dict_trie + for i in word: + if i in node: + node = node[i] + else: + return False + return True if node["val"] == 1 else False + + + def startsWith(self, prefix): + """ + Returns if there is any word in the trie that starts with the given prefix. + :type prefix: str + :rtype: bool + """ + node = self.dict_trie + for i in prefix: + if i not in node: + return False + else: + node = node[i] + return True + +if __name__ == '__main__': + pre_tree = Trie() + words = ["Trie","insert","search","search","startsWith","insert","search"] + for i in words: + pre_tree.insert(i) + print(pre_tree.search("Trie")) + print(pre_tree.search("search")) + print(pre_tree.search("inser")) + From 62eaa2369b0c090b3b69b8dcdd70b9c306ce2ae2 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 1 Jul 2020 04:42:38 +0800 Subject: [PATCH 163/270] Create 16.py --- Pygame/16.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Pygame/16.py diff --git a/Pygame/16.py b/Pygame/16.py new file mode 100644 index 0000000..daa8205 --- /dev/null +++ b/Pygame/16.py @@ -0,0 +1,17 @@ +from PIL import Image +im = Image.open('/Users/jin/Desktop/mozart.gif') +im_new = Image.new('RGB',(640, 480))#make a new image +w, h = im.size + +im_rgb = im.convert("RGB") +p = [] +purple = (255, 0, 255) + +for i in range(h): + p.append([im_rgb.getpixel((c, i)) for c in range(w)]) +for i in range(h): + pos = p[i].index(purple) + p[i] = p[i][pos:] + p[i][:pos] + for j in range(w): + im_new.putpixel((j,i), p[i][j]) +im_new.show() From 4de91e24203e12cab67f389fb5f5822b485cf366 Mon Sep 17 00:00:00 2001 From: YoTro Date: Mon, 13 Jul 2020 00:18:36 +0800 Subject: [PATCH 164/270] add machinelearning add svm and mnist2jpg --- MachineLearning/SVM.py | 496 +++++++++++++++++++++++++++++++++++ MachineLearning/__init__.py | 0 MachineLearning/mnist2jpg.py | 44 ++++ 3 files changed, 540 insertions(+) create mode 100644 MachineLearning/SVM.py create mode 100644 MachineLearning/__init__.py create mode 100644 MachineLearning/mnist2jpg.py diff --git a/MachineLearning/SVM.py b/MachineLearning/SVM.py new file mode 100644 index 0000000..bf9b83d --- /dev/null +++ b/MachineLearning/SVM.py @@ -0,0 +1,496 @@ +#coding:utf-8 +import matplotlib.pyplot as plt +import numpy as np +from mpl_toolkits.mplot3d import Axes3D +from sklearn import svm #对比 +from sklearn.datasets import load_digits +from sklearn.model_selection import train_test_split +from sklearn.metrics import classification_report +import pickle +import os + +''' +http://jmlr.csail.mit.edu/papers/volume11/cawley10a/cawley10a.pdf +http://jmlr.csail.mit.edu/papers/volume8/cawley07a/cawley07a.pdf + +libsvm源码论文http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf + +核函数选取的方法https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf + 1. 如果特征的数量大到和样本数量差不多,则选用线性核 + + 2. 如果特征的数量小,样本的数量正常,则选用高斯核函数 + + 3. 如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况 + +svm原论文中文翻译https://zhuanlan.zhihu.com/p/23068673 +sklearn数据集文件地址: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sklearn/datasets/data + +''' + +__all__ = [ +"loadData", +"Kernel", +"heurstic_selectJ", +"calEi", +"Normal_vector", +"SMOv1", +"SMOv2", +"innerLoop", +"show3DClassifer", +"predict", +"show2DData", +"cmp_sklearn_svm" +] +def loadData(filepath): + ''' + 加载数据并分类 + return: 数据集和标签集 + ''' + datas = [] + labels = [] + f = open(filepath) + for i in f.readlines(): + l = i.strip().split('\t') + datas.append((float(l[0]), float(l[1]))) + labels.append(float(l[2])) + return datas, labels + +def show2DData(datas, labels): + ''' + function: 可视化样本数据 + datas: list + labels: list + rtype: none + ''' + data_positive = [] + data_negetive = [] + for i in range(len(datas)): + #分类 + if labels[i] > 0: + data_positive.append(datas[i]) + else: + data_negetive.append(datas[i]) + x_p, y_p = np.transpose(np.array(data_positive))[0], np.transpose(np.array(data_positive))[1] + x_n, y_n = np.transpose(np.array(data_negetive))[0], np.transpose(np.array(data_negetive))[1] + plt.scatter(x_p, y_p) + plt.scatter(x_n, y_n) + plt.show() + +class SVM(object): + ''' + 求最小间隔margin + 1/2||w||^2 + s.t. y_i(w^Tx_i + b)>= 1, i = 1,2,..,n + 核心步骤 + 1. 计算误差Ei,Ej + 2. 计算alpha上下界L,H + 3. 计算学习速率theta = 2*K(xi, xj) - K(xi, xi) - K(xj, xj) + 4. 更新alpha_i, 和alpha_j + 5. 计算b1,b2, 并更新b + ''' + def __init__(self, datas, labels, C, tol, maxIter, kwg): + self.X = np.mat(datas) #自变量X向量shape(m,n) + self.y = np.mat(labels).transpose() #(+1,-1)数据集shape(m, 1) + self.w = np.zeros((len(datas[0]), 1)) #超平面的法向量w + self.C = C #惩罚系数一般为1 + self.tol = tol #误差上限一般为1e4 (Tolerance for stopping criteria) float, optional. + self.m = len(datas) #矩阵长度 + self.K = np.mat(np.zeros((self.m, self.m))) + self.b = 0 #阈值 + self.maxIter = maxIter #最大迭代次数 + self.alphas = np.mat(np.zeros((self.m, 1))) #超参数由拉格朗日函数引入 + self.eCache = np.mat(np.zeros((self.m, 2))) #存储误差Ei = Ui-yi + self.kwargs = kwg #核函数的选择linear, rbf, poly等 + self.nonzeralphas_train = None #用于保存训练模型中的非0alpha下标 + self.support_vector_X = None #训练过的支持向量 + self.support_vector_alphas = None #支持向量参数alphas + self.support_vector_labels = None #支持向量标签 + + def Kernel(self, x1, x2): + ''' + 核函数: + 线性核函数linear: x1*x2 + 多项式核函数poly: (x1*x2 + C)^d 可以使原来线性不可分的样本数据变为线性可分 + 高斯核函数rbf(Radial Basis Function Kernel) 正态分布E^{(||x1-x2||^2)/-2*theta^2} + 拉普拉斯核函数Laplace + Sigmoid + 具体参考sklearn svm源代码 + + ''' + #初始化一个矩阵保存计算结果 + KT = np.mat(np.zeros((self.m,1))) + if self.kwargs['kernel'] == 'linear': + return x1 * x2.T + + elif self.kwargs['kernel'] == 'rbf': + #theta默认1.3 + theta = self.kwargs['theta'] + for j in range(self.m): + delta = x1[j,:] - x2 + KT[j] = delta * delta.T + return np.exp(KT / (-2.0 * theta**2)) + + elif self.kwargs['kernel'] == 'poly': + KT = x1 * x2.T + degree = self.kwargs['degree'] #int, default=3 + for j in range(self.m): + KT[j] = (KT[j] + self.C)**degree + return KT + + elif self.kwargs['kernel'] == 'Laplace': + theta = self.kwargs['theta'] + for j in range(self.m): + deltaX = x1[j,:] - x2 + KT[j] = np.sqrt(deltaX * deltaX.T) + return np.exp( - KT / theta) + + elif self.kwargs['kernel'] == 'sigmoid': + KT = x1 * x2.T + a = self.kwargs['a'] + for j in range(self.m): + KT[j] = np.tanh(a * KT[j] + self.m) + else: + raise NameError("can't recognise the kernel mathod") + + def calEi(self, i): + ''' + 计算误差Ei + Ei = ui - yi + + ''' + + ui = float(np.multiply(self.alphas, self.y).T * self.K[:,i]) + self.b + Ei = ui - float(self.y[i]) + + return Ei + + + def heurstic_selectJ(self, i, Ei): + ''' + 启发式选择j,使得|Ej - Ei|最大 + + ''' + maxK = -1 + maxDeltaE = 0 + Ej = 0 + self.eCache[i] = [1, Ei] #更新,存入Ei + #查找误差Ei集合中的非0元素并返回所有下标 + oneEcachelist = np.nonzero(self.eCache[:,0].A)[0] + if len(oneEcachelist) > 1: + for k in oneEcachelist: + if k == i: + continue + Ek = self.calEi(k) + deltaEk = abs(Ek - Ei) + if (deltaEk > maxDeltaE): + maxK = k + maxDeltaE = deltaEk + Ej = Ek + else: + maxK = i + while maxK == i: + maxK = np.random.choice(self.m) + Ej = self.calEi(maxK) + return maxK, Ej + + def Normal_vector(self): + ''' + 计算w向量 + datas: 数据矩阵 + labels: (-1, +1)集合 + alphas: + ''' + #转换成array + for i in range(self.m): + self.w += np.multiply(self.alphas[i] * self.y[i], self.X[i, :].T) + + def SMOv1(self): + ''' + 简化版smo算法,不包含启发式选择j参数 + datas: 数据矩阵 + labels: 标签(1, -1) + C: 松弛变量 + tol: 容错率 + maxIter: 最大迭代次数 + b: 截距 + alpha: 拉格朗日乘子 + yi: +1, -1 + xi: 数据集(向量) + w: 法向量 sum{alpha_i*yi*dataMats[i:]*dataMats^T} + fxi: sum{alpha_i*yi*xi^TxI} + b + Ei: 误差项Ei = fxi - yi + eta: 学习速率xi^Txi + xj^Txj - 2xi^Txj + 数学公式: + min 1/2||w||^2 + s.t. y_i(w^Tx_i + b)>= 1, i = 1,2,..,n + + ''' + for i in range(self.m): + self.K[:,i] = self.Kernel(self.X, self.X[i,:]) + #初始化迭代次数 + iternum = 0 + #更新核矩阵 + while (iternum < self.maxIter): + #统计alpha优化次数 + alphachangenum = 0 + for i in range(self.m): + #1. 计算误差Ei + yi = self.y[i] + Ei = self.calEi(i) + #优化alpha, 容错率 + if((yi*Ei < -self.tol) and (self.alphas[i] < self.C)) or ((yi*Ei > self.tol) and (self.alphas[i] > 0)): + #随机选择alphaj并且不等于alphai + j = i + while j == i: + j = np.random.choice(self.m) + #计算误差Ej + yj = self.y[j] + Ej = self.calEi(j) + #保存更新前的alpha + alpha_i_old = self.alphas[i].copy() + alpha_j_old = self.alphas[j].copy() + #2. 计算alpha上下界 + if yi != yj:#异侧 + L = max(0, self.alphas[j] - self.alphas[i]) + H = min(self.C, self.C + self.alphas[j] - self.alphas[i]) + else: #同侧 + L = max(0, self.alphas[j] + self.alphas[i] - self.C) + H = min(self.C, self.alphas[j] + self.alphas[i]) + if L == H: + print("L == H") + continue + #3. 计算eta + eta = 2.0 * self.K[i,j] - self.K[i,i] - self.K[j,j] + if eta >= 0:#半正定 + print("eta >= 0") + continue + #4. 更新alphaj + self.alphas[j] -= yj * (Ei - Ej)/eta + #5. 修剪alphaj + if self.alphas[j] > H: + self.alphas[j] = H + if self.alphas[j] < L: + self.alphas[j] = L + if abs(self.alphas[j] - alpha_j_old) < 0.00001: + print("alphas_{} = {} is updated".format(j, self.alphas[j])) + continue + #6. 更新alphai + s = yi*yj + self.alphas[i] += s*(alpha_j_old - self.alphas[j]) + #7. 更新b1, b2 + b1 = self.b - Ei - yi * (self.alphas[i] - alpha_i_old) * self.K[i,i] - yj * (self.alphas[j] - alpha_j_old) * self.K[i,j] + b2 = self.b - Ej - yi * (self.alphas[i] - alpha_i_old) * self.K[i,j] - yj * (self.alphas[j] - alpha_j_old) * self.K[j,j] + #8. 更新b + if 0 < self.alphas[i] and self.C > self.alphas[i]: + self.b = b1 + elif 0 < self.alphas[j] and self.C > self.alphas[j]: + self.b = b2 + else: + self.b = (b1 + b2) / 2.0 + #更新优化统计 + alphachangenum += 1 + print("Iter:{} Smaples: No.{}, alphas update times:{}".format(iternum, i, alphachangenum)) + if alphachangenum == 0: + iternum += 1 + else: + iternum = 0 + print("-----------------No.{}th iteration-----------------".format(iternum)) + + + def SMOv2(self): + ''' + 完整版包含启发式选择j + datas: 数据矩阵 + labels: 标签(1, -1) + C: 松弛变量 + tol: 容错率 + maxIter: 最大迭代次数 + b: 截距 + alpha: 拉格朗日乘子 + yi: +1, -1 + xi: 数据集(向量) + w: 法向量 + fxi: sum{alpha_i*yi*xi^TxI} + b + Ei: 误差项Ei = fxi - yi + eta: 学习速率xi^Txi + xj^Txj - 2xi^Txj + 数学公式: + min 1/2||w||^2 + s.t. y_i(w^Tx_i + b)>= 1, i = 1,2,..,n + ''' + #更新核矩阵 + + #迭代次数 + iternum = 0 + #遍历所有训练数据标识符 + AllX = True + for i in range(self.m): + self.K[:,i] = self.Kernel(self.X, self.X[i,:]) + #alpha更新次数 + alphachangenum = 0 + while (iternum < self.maxIter) and ((alphachangenum > 0) or (AllX)): + alphachangenum = 0 + if AllX: + #遍历整个训练集 + for i in range(self.m): + alphachangenum += self.innerLoop(i) + iternum += 1 + + else: + #遍历非边界子集(0 0) * (self.alphas.A < self.C))[0] + for i in nonBound: + alphachangenum += self.innerLoop(i) + iternum += 1 + #交替 + if AllX: + AllX = False + elif alphachangenum == 0: + #如果非边界的点没有更新alpha, 切换为遍历整个训练集 + AllX = True + self.nonzeralphas_train = np.nonzero(self.alphas.A)[0] + self.support_vector_X = self.X[self.nonzeralphas_train] + self.support_vector_alphas = self.alphas[self.nonzeralphas_train] + self.support_vector_labels = self.y[self.nonzeralphas_train] + self.Normal_vector() + + def innerLoop(self, i): + ''' + 找出不满足KKT条件的alpha,并优化 + 核心步骤: + 1. 计算误差Ei,Ej + 2. 计算alpha上下界L,H + 3. 计算学习速率theta = 2*K(xi, xj) - K(xi, xi) - K(xj, xj) + 4. 更新alpha_i, 和alpha_j + 5. 计算b1,b2, 并更新b + 退出循环条件: L == H, eta >= 0, alpha_j变化值很小等 + ''' + #1. 计算误差Ej + Ei = self.calEi(i) + yi = self.y[i] + if (yi*Ei < - self.tol and self.alphas[i] < self.C) or (yi * Ei > self.tol and self.alphas[i] > 0): + #1. 计算误差Ej + j, Ej = self.heurstic_selectJ(i, Ei) + yj = self.y[j] + #保存旧的alpha + alpha_i_old = self.alphas[i].copy() + alpha_j_old = self.alphas[j].copy() + #2. 计算alpha上下界 + if yi != yj: + L = max(0, self.alphas[j] - self.alphas[i]) + H = min(self.C, self.C + self.alphas[j] - self.alphas[i]) + else: + L = max(0, self.alphas[j] + self.alphas[i] - self.C) + H = min(self.C, self.alphas[i] + self.alphas[j]) + if L == H: + return 0 + #3. 计算theta + eta = 2.0 * self.K[i,j] - self.K[i,i] - self.K[j,j] + if eta >= 0: + return 0 + #4. 更新alpha_j + self.alphas[j] -= yj * (Ei - Ej) / eta + #修正alpha_j + if self.alphas[j] > H: + self.alphas[j] = H + if self.alphas[j] < L: + self.alphas[j] = L + #更新误差缓存Ej,1表示Ej被计算过 + self.eCache[j] = [1, self.calEi(j)] + #如果alpha收敛到一定值,则退出(ε一般默认0.00001 + if abs(alpha_j_old - self.alphas[j]) < 0.00001: + return 0 + #4. 否则更新alpha_i + s = yj * yi + self.alphas[i] += s * (alpha_j_old - self.alphas[j]) + #更新Ei + self.eCache[i] = [1, self.calEi(i)] + #5. 计算b1, b2 + b1 = self.b - Ei - yi * (self.alphas[i] - alpha_i_old) * self.K[i,i] - yj * (self.alphas[j] - alpha_j_old) * self.K[i,j] + b2 = self.b - Ej - yi * (self.alphas[i] - alpha_i_old) * self.K[i,j] - yj * (self.alphas[j] - alpha_j_old) * self.K[j,j] + #5. 更新b + if 0 < self.alphas[i] and self.alphas[i] < self.C: + self.b = b1 + elif 0 < self.alphas[j] and self.alphas[j] < self.C: + self.b = b2 + else: + self.b = (b1 + b2) / 2.0 + return 1 + else: + return 0 + def show3DClassifer(self): + ''' + 分类结果可视化 + datas: 数据矩阵type:list + w: 超平面法向量 + b: 超平面截距 + ''' + data_positive = [] + data_negetive = [] + for i in range(len(self.X)): + #样本分类 + if self.y[i] > 0: + data_positive.append(self.X[i]) + else: + data_negetive.append(self.X[i]) + x_p, y_p = np.transpose(np.array(data_positive))[0], np.transpose(np.array(data_positive))[1] + x_n, y_n = np.transpose(np.array(data_negetive))[0], np.transpose(np.array(data_negetive))[1] + ax = plt.subplot(111, projection='3d') + ax.scatter(x_p, y_p, zs = 1.0, c = 'red') + ax.scatter(x_n, y_n, zs = -1.0, c = 'blue') + #绘制直线 + x1 = max(self.X.tolist())[0] + x2 = min(self.X.tolist())[0] + x = np.mat([x1, x2])#数据集x的范围 + #y = wx + b + print self.w + y = ((-self.b-self.w[0, 0]*x)/self.w[1, 0]).tolist() + plt.plot(x.tolist()[0], y[0], 'k--') + #找出支持向量的点 + for i, alpha in enumerate(self.alphas): + if alpha > 0.0: + x, y = self.X[i, 0], self.X[i, 1] + plt.scatter([x], [y], s = 150, c = 'none', alpha = 0.7, linewidth = 1.5, edgecolor = 'red') + plt.show() + def predict(self, testDatas, testLables): + ''' + 输入测试数据,根据训练模型得出预测结果 + ''' + testDataMat = np.mat(testDatas) + testLableMat = np.mat(testLables) + preresult = [] + c = 0.0 + for i in range(testDataMat.shape[0]): + pre_y = float(np.multiply(self.support_vector_alphas, self.support_vector_labels).T * self.Kernel(self.support_vector_X, testDataMat[i,:])) + self.b + preresult.append(pre_y) + if np.sign(pre_y) == np.sign(testLables[i]): + c += 1.0 + print("The correct rate and number is {}, {}".format(c/len(testDataMat), c)) + return np.array(preresult) + + def cmp_sklearn_svm(self): + mnist = load_digits() + x_train,x_test,y_train,y_test = train_test_split(self.X,self.y,test_size=0.25,random_state=40) + model = svm.SVC(kernel = self.kwargs['kernel']) + model.fit(x_train, y_train) + z = model.predict(x_test) + print('The total number of predicts: {} \nThe correct rate and number: {}, {}'.format(z.size, float(np.sum(z==y_test))/z.size, np.sum(z==y_test))) + print("The score of model: {}".format(model.score(x_test, y_test))) + print(classification_report(y_test, z))#, target_names = "mnist.target_names".astype(str))) + if not os.path.exists('modelpkl'): + os.mkdir('modelpkl') + with open('modelpkl/digits.pkl','wb') as file: + pickle.dump(model,file) + +if __name__ == '__main__': + print __all__ + filepath = '/Users/jin/Desktop/testSet.txt' + #datas, labels = loadData(filepath) + mnist = load_digits() + datas, labels = mnist.images.reshape((len(mnist.images), -1)), mnist.target + #kwg = {'kernel': 'linear'} + kwg = {'kernel': 'rbf', 'theta': 1.3} + svm0 = SVM(datas, labels, 0.6, 0.001, 100, kwg) + svm0.SMOv2() + svm0.show3DClassifer() + svm0.predict(datas, labels) + svm0.cmp_sklearn_svm() diff --git a/MachineLearning/__init__.py b/MachineLearning/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/MachineLearning/mnist2jpg.py b/MachineLearning/mnist2jpg.py new file mode 100644 index 0000000..399c053 --- /dev/null +++ b/MachineLearning/mnist2jpg.py @@ -0,0 +1,44 @@ +# coding=utf-8 +'''将二进制格式的MNIST数据集转成.jpg图片格式并保存,图片标签包含在图片名中''' +import numpy as np +import cv2 +import os + +def save_mnist_to_jpg(mnist_image_file, mnist_label_file, save_dir): + if 'train' in os.path.basename(mnist_image_file): + num_file = 20 + prefix = 'train' + else: + num_file = 10 + prefix = 'test' + with open(mnist_image_file, 'rb') as f1: + image_file = f1.read() + with open(mnist_label_file, 'rb') as f2: + label_file = f2.read() + image_file = image_file[16:] + label_file = label_file[8:] + print np.array([int(item.encode('hex'), 16) for item in image_file[0:784]]).reshape(28,28,1) + '''for i in range(11, num_file): + label = int(label_file[i].encode('hex'), 16) + image_list = [int(item.encode('hex'), 16) for item in image_file[i*784:i*784+784]] + image_np = np.array(image_list, dtype=np.uint8).reshape(28,28,1) + save_name = os.path.join(save_dir, '{}_{}_{}.jpg'.format(prefix, i, label)) + cv2.imwrite(save_name, image_np) + print '{} ==> {}_{}_{}.jpg'.format(i, prefix, i, label)''' + +if __name__ == '__main__': + train_image_file = './train-images-idx3-ubyte' + train_label_file = './train-labels-idx1-ubyte' + test_image_file = 't10k-images-idx3-ubyte' + test_label_file = './t10k-labels-idx1-ubyte' + + save_train_dir = './train_images/' + save_test_dir ='./test_images/' + + if not os.path.exists(save_train_dir): + os.makedirs(save_train_dir) + if not os.path.exists(save_test_dir): + os.makedirs(save_test_dir) + + save_mnist_to_jpg(train_image_file, train_label_file, save_train_dir) + #save_mnist_to_jpg(test_image_file, test_label_file, save_test_dir) From 03ce4b25acf5040acc9ee270bc6848993e0b0ea3 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 15 Jul 2020 11:14:59 +0800 Subject: [PATCH 165/270] Create leetcode-jianzhioffer-51-shu-zu-zhong-de-ni-xu-dui-lcof.py --- ...offer-51-shu-zu-zhong-de-ni-xu-dui-lcof.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 Leetcode/Bit/leetcode-jianzhioffer-51-shu-zu-zhong-de-ni-xu-dui-lcof.py diff --git a/Leetcode/Bit/leetcode-jianzhioffer-51-shu-zu-zhong-de-ni-xu-dui-lcof.py b/Leetcode/Bit/leetcode-jianzhioffer-51-shu-zu-zhong-de-ni-xu-dui-lcof.py new file mode 100644 index 0000000..78adf28 --- /dev/null +++ b/Leetcode/Bit/leetcode-jianzhioffer-51-shu-zu-zhong-de-ni-xu-dui-lcof.py @@ -0,0 +1,65 @@ +#coding:utf-8 +#视频讲解:BV1pE41197Qj +import bisect +class BIT: + ''' + 树状数组维护区间和 + ''' + def __init__(self, n): + self.n = n + self.tree = [0] * (n + 1) + + @staticmethod + def lowbit(x): + '''非负整数x在二进制表示下最低位1及其后面0所构成的数值 + x & ~x+1 + 其中, ~x+1 = -x + 例如: + lowbit(4)=lowbit(('0b100'))=('0b100')=4 + ''' + return x & (-x) + + def query(self, x): + ''' + 查询区间x内的前缀和、 + 时间最坏复杂:O(logn) + ''' + ret = 0 + while x > 0: + ret += self.tree[x] + x -= BIT.lowbit(x) + return ret + + def update(self, x): + ''' + 更新叶子节点及其父节点的值 + tree[x]的父节点就等于tree[x+lowbit(x)] + 时间最坏复杂度: O(logn) + ''' + while x <= self.n: + self.tree[x] += 1 + x += BIT.lowbit(x) + +class Solution: + def reversePairs(self, nums): + '''时间复杂度:O(nlogn)''' + n = len(nums) + # 离散化 + tmp = sorted(nums) + for i in range(n): + nums[i] = bisect.bisect_left(tmp, nums[i]) + 1 + # 树状数组统计逆序对 + print nums + bit = BIT(n) + ans = 0 + for i in range(n - 1, -1, -1): + ans += bit.query(nums[i] - 1) + bit.update(nums[i]) + print ans, bit.tree + return ans + +if __name__ == '__main__': + nums = [-3,4,2,-1,0,0,2,7,1000] + solution = Solution() + ans = solution.reversePairs(nums) + print ans From 118ed3aebfde420beda5c400ec5fe4737bf3f5ff Mon Sep 17 00:00:00 2001 From: YoTro Date: Sat, 18 Jul 2020 11:02:57 +0800 Subject: [PATCH 166/270] Update Tarjan.py --- Grapgh Theory/Tarjan.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Grapgh Theory/Tarjan.py b/Grapgh Theory/Tarjan.py index e91f1c2..769f090 100644 --- a/Grapgh Theory/Tarjan.py +++ b/Grapgh Theory/Tarjan.py @@ -31,7 +31,7 @@ def strongconnect(node): E = [] #深度遍历node节点(可以称其为强连通分量的根,因为它是第一个被访问的节点)的子节点 for v in E: - if v not in low: + if v not in dfn: # 后继节点v未访问,递归调用strongconnect函数把v加入low并编号入栈 strongconnect(v) low[node] = min(low[node],low[v]) @@ -40,7 +40,7 @@ def strongconnect(node): elif v in stack: # 返回编号是最小的节点 low[node] = min(low[node],dfn[v]) - + # 若node是根则出栈,并得到一个强连通分量,此时的node在栈底 if low[node] == dfn[node]: connected_component = [] @@ -54,12 +54,12 @@ def strongconnect(node): result.append(component) #依次push入栈,遍历图所有节点,防止存在因一次tarjan而没有遍历到的节点 for node in graph: - if node not in low: + if node not in dfn: strongconnect(node) return result if __name__ == '__main__': - grid = { + '''grid = { "A": {"B":5,"C":1}, "B": {"A":5,"C":2,"D":1}, "C": {"A":1,"B":2,"D":4,"E":8}, @@ -69,7 +69,14 @@ def strongconnect(node): "G": {"F":3, "H":5,"S":19}, "H": {"G":5,"I":8,"J":4}, "I": {"H":8,"K":3} - } + }''' + grid = { + "A": {"B":5}, + "B": {"C":2}, + "C": {"A":1}, + "D": {"B":1,"C":4,"E":3}, + "E": {"F":8,"D":3}, + "F": {"C":6}} ret = strongly_connected_components(grid) print("The strongly connected componets is \n{}\n".format(ret)) From de8483c4415032962f6a30760e578b794cb58969 Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 22 Jul 2020 11:15:17 +0800 Subject: [PATCH 167/270] Create leetcode-866-prime-palindrome.py --- .../leetcode-866-prime-palindrome.py | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Leetcode/Mathematics/leetcode-866-prime-palindrome.py diff --git a/Leetcode/Mathematics/leetcode-866-prime-palindrome.py b/Leetcode/Mathematics/leetcode-866-prime-palindrome.py new file mode 100644 index 0000000..9966b54 --- /dev/null +++ b/Leetcode/Mathematics/leetcode-866-prime-palindrome.py @@ -0,0 +1,57 @@ +class Solution(object): + #注意到除了11以外,没有其它的两位或四位回文素数。如果我们考虑被11整除的判别法,就可以推出任何偶数位的回文数都能被11整除。所以,除了11以外,所有的回文素数都有奇数个数字 + def isPrime(self, number): + ''' + :type number: int + :rtype: bool + ''' + import math + if (number < 2): + return False + for i in xrange(2, int(math.sqrt(number))+1): + if number % i == 0: + return False + return True + def isPalindromic(self, number): + a = str(number) + if a[::-1] != a: + return False + return True + def primePalindrome(self, N): + """ + :type N: int + :rtype: int + """ + partprimepalindromic = [2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929, 10301, 10501, 10601, 11311, 11411, 12421, 12721, 12821, 13331, 13831, 13931, 14341, 14741, 15451, 15551, 16061, 16361, 16561, 16661, 17471, 17971, 18181] + if(N <= 18181): + for j in xrange(42): + if (N <= partprimepalindromic[j]): + return partprimepalindromic[j] + else: + for i in xrange(N, 10**8): + if self.isPrime(i): + if self.isPalindromic(i): + return i + if 10**7 < N and N < 10**8: + return 100030001 + + +class Solution(object): + def primePalindrome(self, N): + def is_prime(n): + return n > 1 and all(n % d for d in xrange(2, int(n**.5) + 1)) + + def reverse(x): + ans = 0 + while x: + ans = 10 * ans + x % 10 + x /= 10 + return ans + + while True: + if N == reverse(N) and is_prime(N): + return N + N += 1 + if 10**7 < N < 10**8: + N = 10**8 + From 3687cab31a9a9fd9afac11de15c42ca6f05f197e Mon Sep 17 00:00:00 2001 From: YoTro Date: Wed, 22 Jul 2020 11:15:41 +0800 Subject: [PATCH 168/270] Update Primenumber.py --- Calculus/Primenumber.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Calculus/Primenumber.py b/Calculus/Primenumber.py index b8a3d93..e3e3ab4 100644 --- a/Calculus/Primenumber.py +++ b/Calculus/Primenumber.py @@ -5,14 +5,16 @@ def primeNumber(n): ''' 获取1,n(包括n)之间的质数 + Sieve of Eratosthenes ''' isPrime = [1]*(n+1) for i in range(2, int(math.sqrt(n))+1): if isPrime[i]: for j in range(i**2, n+1, i): isPrime[j] = 0 + print j return [isPrime[i]*i for i in range(n+1) if isPrime[i]*i != 0] if __name__ == '__main__': n = random.randrange(100) - print("1~{}的素数是:\n{}\n总共个数是:{}\n".format(n, primeNumber(n), len(primeNumber(n)))) \ No newline at end of file + print("1~{}的素数是:\n{}\n总共个数是:{}\n".format(n, primeNumber(n), len(primeNumber(n)))) From 17e84916952d2ed68ff3339561fca4131e5df69c Mon Sep 17 00:00:00 2001 From: YoTro Date: Thu, 27 Aug 2020 00:30:59 +0800 Subject: [PATCH 169/270] Create amazon_comments.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 爬取亚马逊商品评论 --- AWS/amazon_comments.py | 409 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100755 AWS/amazon_comments.py diff --git a/AWS/amazon_comments.py b/AWS/amazon_comments.py new file mode 100755 index 0000000..5e72fa9 --- /dev/null +++ b/AWS/amazon_comments.py @@ -0,0 +1,409 @@ +import random +import csv +import requests +import time +import xlrd +import re +import os +import math + +user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/44.0.2403.155 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.1 Safari/537.36", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2226.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2225.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36", +"Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 4.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36", +"Mozilla/5.0 (X11; OpenBSD i386) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1944.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.3319.102 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2309.372 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.2117.157 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1866.237 Safari/537.36", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/4E423F", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36 Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.517 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36", +"Mozilla/5.0 (X11; CrOS i686 4319.74.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1467.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1500.55 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Safari/537.36", +"Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", +"Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1309.0 Safari/537.17", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.15 (KHTML, like Gecko) Chrome/24.0.1295.0 Safari/537.15", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.14 (KHTML, like Gecko) Chrome/24.0.1292.0 Safari/537.14", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.6 Safari/537.11", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.26 Safari/537.11", +"Mozilla/5.0 (Windows NT 6.0) yi; AppleWebKit/345667.12221 (KHTML, like Gecko) Chrome/23.0.1271.26 Safari/453667.1221", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.17 Safari/537.11", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_0) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1", +"Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5", +"Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/536.5 (KHTML like Gecko) Chrome/19.0.1084.56 Safari/1EA69", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/19.0.1047.0 Safari/535.22", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1041.0 Safari/535.21", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/18.6.872.0 Safari/535.2 UNTRUSTED/1.0 3gpp-gba UNTRUSTED/1.0", +"Mozilla/5.0 (Macintosh; AMD Mac OS X 10_8_2) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/18.6.872", +"Mozilla/5.0 (X11; CrOS i686 1660.57.0) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.46 Safari/535.19", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Ubuntu/11.10 Chromium/18.0.1025.142 Chrome/18.0.1025.142 Safari/535.19", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.11 Safari/535.19", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.66 Safari/535.11", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.04 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/10.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.10 Chromium/17.0.963.65 Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (X11; FreeBSD amd64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.65 Safari/535.11", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Ubuntu/11.04 Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.11", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.12 Safari/535.11", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/17.0.940.0 Safari/535.8", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7ad-imcjapan-syosyaman-xkgi3lqg03!wgz", +"Mozilla/5.0 (X11; CrOS i686 1193.158.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7xs5D9rRDFpg2g", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.8 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.8", +"Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.36 Safari/535.7", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.6 (KHTML, like Gecko) Chrome/16.0.897.0 Safari/535.6", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.54 Safari/535.2", +"Mozilla/5.0 (X11; FreeBSD i386) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.120 Chrome/15.0.874.120 Safari/535.2", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.872.0 Safari/535.2", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.04 Chromium/15.0.871.0 Chrome/15.0.871.0 Safari/535.2", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.864.0 Safari/535.2", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.861.0 Safari/535.2", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.860.0 Safari/535.2", +"Chrome/15.0.860.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/15.0.860.0", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.834.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.825.0 Chrome/14.0.825.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.824.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.815.10913 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.815.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.814.0 Chrome/14.0.814.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.814.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.04 Chromium/14.0.813.0 Chrome/14.0.813.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.813.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.812.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.811.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.810.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.810.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.809.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.10 Chromium/14.0.808.0 Chrome/14.0.808.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.04 Chromium/14.0.808.0 Chrome/14.0.808.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/10.04 Chromium/14.0.804.0 Chrome/14.0.804.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/14.0.803.0 Chrome/14.0.803.0 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.803.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.801.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.801.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.792.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.792.0 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.792.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.790.0 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.790.0 Safari/535.1", +"Mozilla/5.0 (Windows; U; Windows NT 6.1) AppleWebKit/526.3 (KHTML, like Gecko) Chrome/14.0.564.21 Safari/526.3", +"Mozilla/5.0 (X11; CrOS i686 13.587.48) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.43 Safari/535.1", +"Mozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41", +"Mozilla/5.0 ArchLinux (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Ubuntu/11.04 Chromium/13.0.782.41 Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.2; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_3) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_3) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.32 Safari/535.1", +"Mozilla/5.0 (X11; Linux amd64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.24 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1", +"Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.20 Safari/535.1", +"Mozilla/5.0 (X11; CrOS i686 0.13.587) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.14 Safari/535.1", +"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_2) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.107 Safari/535.1", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.1 Safari/535.1", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36", +"Mozilla/5.0 (X11; Linux amd64) AppleWebKit/534.36 (KHTML, like Gecko) Chrome/13.0.766.0 Safari/534.36", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.35 (KHTML, like Gecko) Ubuntu/10.10 Chromium/13.0.764.0 Chrome/13.0.764.0 Safari/534.35", +"Mozilla/5.0 (X11; CrOS i686 0.13.507) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/13.0.763.0 Safari/534.35", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.33 (KHTML, like Gecko) Ubuntu/9.10 Chromium/13.0.752.0 Chrome/13.0.752.0 Safari/534.33", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.31 (KHTML, like Gecko) Chrome/13.0.748.0 Safari/534.31", +"Mozilla/5.0 (Windows NT 6.1; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.750.0 Safari/534.30", +"Mozilla/5.0 (X11; CrOS i686 12.433.109) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.93 Safari/534.30", +"Mozilla/5.0 (X11; CrOS i686 12.0.742.91) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.93 Safari/534.30", +"Mozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/12.0.742.91", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.91 Chromium/12.0.742.91 Safari/534.30", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30", +"Mozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.60 Safari/534.30", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.53 Safari/534.30", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.113 Safari/534.30", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/10.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (Windows NT 7.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (Windows 8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30", +"Mozilla/5.0 (X11; CrOS i686 12.433.216) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.105 Safari/534.30", +"Mozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30", +"Mozilla/5.0 ArchLinux (X11; U; Linux x86_64; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Slackware/Chrome/12.0.742.100 Safari/534.30", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_4) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30", +"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.724.100 Safari/534.30", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.25 (KHTML, like Gecko) Chrome/12.0.706.0 Safari/534.25", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.25 (KHTML, like Gecko) Chrome/12.0.704.0 Safari/534.25", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.703.0 Chrome/12.0.703.0 Safari/534.24", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.702.0 Chrome/12.0.702.0 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/12.0.702.0 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/12.0.702.0 Safari/534.24", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.700.3 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.699.0 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.699.0 Safari/534.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.698.0 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.697.0 Safari/534.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24", +"Mozilla/5.0 Slackware/13.37 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/11.0.696.50", +"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.43 Safari/534.24", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.14 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.12 Safari/534.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_6) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.12 Safari/534.24", +"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.04 Chromium/11.0.696.0 Chrome/11.0.696.0 Safari/534.24", +"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.0 Safari/534.24", +"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.694.0 Safari/534.24", +"Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23", +"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.682.0 Safari/534.21", +"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21", +"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_7_0; en-US) AppleWebKit/534.21 (KHTML, like Gecko) Chrome/11.0.678.0 Safari/534.21", +"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20", +"Mozilla/5.0 (Windows NT) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20", +"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20", +"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.669.0 Safari/534.20", +"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.19 (KHTML, like Gecko) Chrome/11.0.661.0 Safari/534.19", +"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.661.0 Safari/534.18", +"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.18 (KHTML, like Gecko) Chrome/11.0.660.0 Safari/534.18", +"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.655.0 Safari/534.17", +"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.655.0 Safari/534.17", +"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.654.0 Safari/534.17", +"Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/11.0.652.0 Safari/534.17", +"Mozilla/4.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11.0.1245.0 Safari/537.36", +"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17", +"Mozilla/5.0 (Windows; U; Windows NT 6.1; de-DE) AppleWebKit/534.17 (KHTML, like Gecko) Chrome/10.0.649.0 Safari/534.17", +"Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.82 Safari/534.16", +"Mozilla/5.0 (X11; U; Linux armv7l; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16", +"Mozilla/5.0 (X11; U; FreeBSD x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16", +"Mozilla/5.0 (X11; U; FreeBSD i386; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16"] + + + +def read_excel(path): + '''Read asin from workbook读取工作簿中的asin''' + if not os.path.exists(path): + print("Not exists {}".format(path)) + return [] + workbook=xlrd.open_workbook(path) + table=workbook.sheet_by_index(0) + header = table.row_values(0)#读取第一行 + asin_index = header.index('asin')#读取URL所在位置 + asins = table.col_values(asin_index) + return asins + +def Amazon_comments(Asins, user_agent_list): + ''' + 获取评论 + k 是页面数 + ''' + + base_url = "https://www.amazon.com/hz/reviews-render/ajax/reviews/get/ref=cm_cr_arp_d_viewopt_sr" + if type(Asins) != list: + print("Asins is not list") + break + if len(Asin) == 0: + print("Asins is none") + break + for Asin in Asins: + max_k = 2 + k = 1 + with open('./Amazoncomments.csv','a+',encoding = 'utf-8',newline='') as f: + f_csv = csv.writer(f) + f_csv.writerow([Asin]) + while k != max_k: + filterByStar = "all_stars" + pagenumber = "{}".format(k) + usersagent = random.choice(user_agent_list) + headers = {"authority": "www.amazon.com", + "method": "POST", + "path": "/hz/reviews-render/ajax/reviews/get/ref=cm_cr_arp_d_viewopt_sr", + "scheme": "https", + "accept": "text/html,*/*", + "accept-encoding": "gzip, deflate, br", + "accept-language": "zh-CN,zh;q=0.9", + "content-length": "272", + "content-type": "application/x-www-form-urlencoded;charset=UTF-8", + "cookie": "session-id=143-4438163-4876421; ubid-main=134-1563764-9160204; lc-main=en_US; i18n-prefs=USD; aws_lang=cn; aws-target-data=%7B%22support%22%3A%221%22%7D; s_fid=163AE8802CD54AB6-3EF14BD87C6B321B; s_vn=1628815857048%26vn%3D1; regStatus=pre-register; s_cc=true; aws-target-visitor-id=1597279856745-452791.38_0; aws-ubid-main=945-4122367-6470350; s_dslv=1597279872775; s_nr=1597279872791-New; skin=noskin; UM_distinctid=173e5a09903177-043c2e52daf5e2-3e3e5f0e-100200-173e5a09904623; session-id-time=2082787201l; session-token=ufX/64LHPAew+TaDsA4SVue5UZQv1HVhHTthYYArFOU7k0/ajO9Jvaocjm6sL3aDwypcAHjd2/LpRvnmUOHmeQpHc4VTMCsDOrd2M512kNSMhkKPiFyWGFtKMGt5yjo4DIZN6JhTYSUskCzSqds/ID/ro4DJow4tGvlTsQ7xS2rCMoU46HHQCGM7qAsWvxsg; CNZZDATA1278807219=218040419-1598230055-https%253A%252F%252Fwww.amazon.com%252F%7C1598437146; csm-hit=tb:D59GPPZ80DMPS80MXXTY+s-JTTJP5NCPRAJD3YRV0BA|1598442524371&t:1598442524371&adb:adblk_no", + "downlink": "1.3", + "ect": "4g", + "origin": "https://www.amazon.com", + "referer": "https://www.amazon.com/product-reviews/{}/ref=acr_dp_hist_1?ie=UTF8&filterByStar=one_star&reviewerType=all_reviews".format(Asin), + "rtt": "50", + "sec-fetch-dest": "empty", + "sec-fetch-mode": "cors", + "sec-fetch-site": "same-origin", + "user-agent": usersagent, + "x-requested-with": "XMLHttpRequest"} + + payload = {"sortBy": "", + "reviewerType": "all_reviews", + "formatType": "", + "mediaType": "", + "filterByStar": "{}".format(filterByStar), + "pageNumber": "{}".format(pagenumber), + "filterByLanguage": "", + "filterByKeyword": "", + "shouldAppend": "undefined", + "deviceType": "desktop", + "canShowIntHeader": "undefined", + "reftag": "cm_cr_arp_d_viewopt_sr", + "pageSize": "10", + "asin": "{}".format(Asin), + "scope": "reviewsAjax0" + } + session = requests.Session() + r = session.post(base_url, headers = headers, data = payload) + info = re.findall(r"(\\n){10}\s+\\n\s+\\n\s+\\n(.*?)\\n<\/span>\\n \\n<\/span><\/div>
    Date: Thu, 27 Aug 2020 12:00:07 +0800 Subject: [PATCH 170/270] Add files via upload --- AWS/amazon_comments.py | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/AWS/amazon_comments.py b/AWS/amazon_comments.py index 5e72fa9..db0e798 100755 --- a/AWS/amazon_comments.py +++ b/AWS/amazon_comments.py @@ -4,9 +4,8 @@ import time import xlrd import re -import os import math - +import os user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36", "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/44.0.2403.155 Safari/537.36", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36", @@ -318,8 +317,8 @@ def read_excel(path): '''Read asin from workbook读取工作簿中的asin''' if not os.path.exists(path): - print("Not exists {}".format(path)) - return [] + print("Not exists this file in {}".format(path)) + return [] workbook=xlrd.open_workbook(path) table=workbook.sheet_by_index(0) header = table.row_values(0)#读取第一行 @@ -332,14 +331,14 @@ def Amazon_comments(Asins, user_agent_list): 获取评论 k 是页面数 ''' - - base_url = "https://www.amazon.com/hz/reviews-render/ajax/reviews/get/ref=cm_cr_arp_d_viewopt_sr" if type(Asins) != list: - print("Asins is not list") - break - if len(Asin) == 0: - print("Asins is none") - break + print("Its type is not list, please change") + return + if len(Asins) == 0: + print("The Asins is none") + return + base_url = "https://www.amazon.com/hz/reviews-render/ajax/reviews/get/ref=cm_cr_arp_d_viewopt_sr" + for Asin in Asins: max_k = 2 k = 1 @@ -386,18 +385,18 @@ def Amazon_comments(Asins, user_agent_list): "pageSize": "10", "asin": "{}".format(Asin), "scope": "reviewsAjax0" - } + } session = requests.Session() r = session.post(base_url, headers = headers, data = payload) info = re.findall(r"(\\n){10}\s+\\n\s+\\n\s+\\n(.*?)\\n<\/span>\\n \\n<\/span><\/div>
    Date: Wed, 27 Oct 2021 16:11:41 +0800 Subject: [PATCH 171/270] =?UTF-8?q?=E6=A4=AD=E5=9C=86=E5=91=A8=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Calculus/Ellipsecircumference.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Calculus/Ellipsecircumference.py diff --git a/Calculus/Ellipsecircumference.py b/Calculus/Ellipsecircumference.py new file mode 100644 index 0000000..f1d28a8 --- /dev/null +++ b/Calculus/Ellipsecircumference.py @@ -0,0 +1,22 @@ +''' +椭圆周长公式: +1. p ≈ 2π√[(a^2 + b^2)/2] (a<=3b, error: 5%) +2. p ≈ π{3(a+b) - √[(3a+b)(a+3b)]} (拉马努金, error:1/10^5) +3. p = 2aπ(1 - ∑(∞,i=1){{[(2i)!^2]/[(2^i)(i!)]^4}[(e^2i)/(2i - 1)]} (e: 偏心率) +4. p = π(a+b)∑(∞, n=0)[(0.5, n)^2](h^n) ((0.5, n)^2半整数阶乘的二项式系数) + + +''' +import math +def p(a,b): + p1 = 2*math.pi*math.sqrt((a**2+b**2)/2.0) + p2 = math.pi*(3*(a+b) - math.sqrt((3*a+b)*(a+3*b))) + e = math.sqrt(a**2 - b**2)/a + p3 = 2*a*math.pi*(1 - (1/4.0)*(e**2) - ((3/8.0)**2)*(e**4)/3.0 - ((15/48.0)**2)*(e**6)/5.0) + h = (a-b)**2/(a+b)**2 + p4 = math.pi*(a+b)*(1+(h/4.0)+((h**2)/64.0)+((h**3)/256.0)+(25*(h**4)/16384.0)) + return p1, p2, p3, p4 + +if __name__ == '__main__': + t1, t2, t3, t4 = p(10,10) + print t1, t2, t3, t4 From 25aca4899d1c24c6a935e5d52b19eb93409d5836 Mon Sep 17 00:00:00 2001 From: Toryun Date: Fri, 13 May 2022 20:47:00 +0800 Subject: [PATCH 172/270] Update amazon.py --- AWS/amazon.py | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/AWS/amazon.py b/AWS/amazon.py index 439104a..3013ab7 100644 --- a/AWS/amazon.py +++ b/AWS/amazon.py @@ -1,28 +1,31 @@ -import re,urllib2 +import re,requests header = { -'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 4_3_4 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8K2 Safari/6533.18.5', -'Referer': 'https://www.amazon.cn/', -'Host': 'www.amazon.cn', -'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', -'Accept-Encoding': 'gzip, deflate, br', -'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', -'Connection': 'keep-alive' -} -r=re.compile(r'.*?

    + https://github.com/YoTro/Python_repository
    + ├── AWS
    + │   ├── AWSRegister.py
    + │   ├── AWS_captchaImage.py
    + │   ├── AWSsellerxt.py
    + │   ├── AddtoCart.py
    + │   ├── Amazozn_email.py
    + │   ├── Get_AmazonProducts_num.py
    + │   ├── Get_Amazon_products_num.py
    + │   ├── Get_Amazon_tag.py
    + │   ├── Get_description.py
    + │   ├── Get_questions.py
    + │   ├── PyAWS_Store_Reviews.py
    + │   ├── __init__.py
    + │   ├── amazon.py
    + │   ├── amazon_cn.py
    + │   ├── amazon_us.py
    + │   ├── captchaImg_sso.py
    + │   ├── get_dimensions.py
    + │   ├── get_feedbacknum.py
    + │   ├── get_img.py
    + │   ├── get_ppc.py
    + │   └── get_ranks.py
    + ├── Apply_for_Job
    + │   ├── 51job.py
    + │   └── requirements.txt
    + ├── CV
    + │   ├── PDF_to_EPUB
    + │   │   ├── pdf_to_epub.py
    + │   │   └── requirements.txt
    + │   ├── Patch_CAPTCHA.py
    + │   ├── __init__.py
    + │   ├── curve_fit_func.py
    + │   ├── nihe1.png
    + │   ├── png_to_SVG.py
    + │   └── png_to_SVG.pyc
    + ├── Calculus
    + │   └── Taylor.py
    + ├── Google_Sample
    + │   ├── CUS_Yuntuexpress.py
    + │   ├── Google_tranJS.py
    + │   ├── Google_translate_js_API.py
    + │   └── __init__.py
    + ├── Grapgh Theory
    + │   ├── BFS.py
    + │   ├── DFS.py
    + │   ├── Dijkstra.py
    + │   ├── KMP.py
    + │   └── __init__.py
    + ├── Leetcode
    + │   ├── leetcode-1137-n-th-tribonacci-number.py
    + │   ├── leetcode-69-sqrtx.py
    + │   └── leetcode-938-range-sum-of-bst.py
    + ├── Logistics_get_17track.py
    + ├── Pygame
    + │   ├── 1.py
    + │   ├── 2.py
    + │   ├── 3.py
    + │   ├── 4.py
    + │   └── 5.py
    + ├── README.md
    + ├── Rename.py
    + ├── Sorting_Algorithms
    + │   ├── Binary_search.py
    + │   ├── Bubble_sort.py
    + │   ├── Bucket_sort.py
    + │   ├── Heap_sort.py
    + │   ├── Insertion_sort.py
    + │   ├── Merge_sort.py
    + │   ├── Quick_sort.py
    + │   ├── Radix_sort.py
    + │   ├── Select_sort.py
    + │   ├── Shell_sort.py
    + │   ├── __init__.py
    + │   ├── counting_sort.py
    + │   ├── hashsort.py
    + │   └── listsort.txt
    + ├── Trees
    + ├── __init__.py
    + ├── bilibili
    + │   ├── README.md
    + │   ├── __init__.py
    + │   ├── bilibili_rank.sh
    + │   ├── bilibili_ranking_data_everyday.py
    + │   ├── log
    + │   ├── log.err
    + │   └── requirements.txt
    + ├── covid-19.py
    + ├── csv_to_xls.py
    + ├── dijkstra.py
    + ├── get-pip.py
    + ├── keywords_find.py
    + ├── pneumonia.py
    + ├── postTocart.py
    + ├── price正则.txt
    + ├── pytree.html
    + ├── pytree.txt
    + ├── taobaoSEO_keyword.pyc
    + └── xt.py
    +

    +

  • (\d+)<\/div>
    \"(.*?)\"<\/i>(.*?)<\/span><\/i>(.*?)<\/span><\/i>(.*?)<\/span><\/a>',r.content) +head = ['ranking','url_videos_bilibili','title','played','views','up_space','author'] +df = pd.DataFrame(s, columns = head) +like, coin, favorite, share, reply, danmaku, his_rank = [],[],[],[],[],[],[] +T_likes, T_views, followers, following = [],[],[],[] +widgets = ['Progress: ',progressbar.Percentage(), ' ', progressbar.Bar('#'),' ', progressbar.Timer(), + ' ', progressbar.ETA(), ' ', progressbar.FileTransferSpeed()] +pbar = progressbar.ProgressBar(widgets=widgets, maxval=len(s)).start() +for i in range(len(s)): + bvid = s[i][1][-12:] + json_bvid(bvid, like, coin, favorite, share, reply, danmaku, his_rank) + uuid = re.findall(r'(\d+)',s[i][5]) + upstat = requests.get('https://api.bilibili.com/x/space/upstat?mid={}'.format(uuid[0]),headers = headers,proxies = proxies) + stat = requests.get('https://api.bilibili.com/x/relation/stat?vmid={}'.format(uuid[0])) + T_likes.append(upstat.json()[u'data'][u'likes']) + T_views.append(upstat.json()[u'data'][u'archive'][u'view']) + followers.append(stat.json()[u'data'][u'follower']) + following.append(stat.json()[u'data'][u'following']) + + pbar.update( i + 1) +df['点赞'] = like +df['投币'] = coin +df['收藏'] = favorite +df['转发'] = share +df['评论'] = reply +df['弹幕'] = danmaku +df['单日全站排名'] = his_rank +df['总获赞数'] = T_likes +df['粉丝数'] = followers +df['关注数'] = following +df['总播放数'] = T_views + +d = datetime.datetime.today() +df.to_csv('/Users/jin/Documents/bilibili/data_rank_bilibili_{}.csv'.format(d), encoding='utf-8') diff --git a/bilibili/log b/bilibili/log new file mode 100644 index 0000000..682a8ab --- /dev/null +++ b/bilibili/log @@ -0,0 +1,2 @@ +2020年 4月20日 星期一 06时48分50秒 CST +Mon Apr 20 13:59:24 CST 2020 diff --git a/bilibili/log.err b/bilibili/log.err new file mode 100644 index 0000000..43aa13f --- /dev/null +++ b/bilibili/log.err @@ -0,0 +1,5 @@ +Traceback (most recent call last): + File "bilibili_ranking_data_everyday.py", line 1, in + import requests +ImportError: No module named requests +/Users/jin/Documents/GitHub/Python_repository/bilibili/bilibili_rank.sh: line 10: /Users/demo/log: No such file or directory diff --git a/bilibili/requirements.txt b/bilibili/requirements.txt new file mode 100644 index 0000000..ec5c819 --- /dev/null +++ b/bilibili/requirements.txt @@ -0,0 +1,3 @@ +requests==2.21.0 +pandas==0.24.2 +progressbar==2.5 \ No newline at end of file diff --git a/bilibili_ranking_data_everyday.py b/bilibili_ranking_data_everyday.py new file mode 100644 index 0000000..1305093 --- /dev/null +++ b/bilibili_ranking_data_everyday.py @@ -0,0 +1,33 @@ +import requests +import datetime +import re +import pandas as pd +import random +import time +import json + +url = 'https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3' +r = requests.get(url) +s = re.findall(r'