From 9a9c7744354f35da3c2818b4db48aad9aedf8074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E6=99=9A=E6=9E=AB?= <1529577833@qq.com> Date: Mon, 13 Jun 2022 19:13:18 +0800 Subject: [PATCH 01/25] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=F0=9F=92=BBDNS?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=87=BAIP=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- office/tools.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/office/tools.py b/office/tools.py index 475c3ef..eea17bd 100644 --- a/office/tools.py +++ b/office/tools.py @@ -54,3 +54,13 @@ def weather(): weather_spider(url, headers) except: print('未查到%s城市,请重新输入:' % cityName) + + +import socket + + +# 通过url,获取ip地址 +def url2ip(url): + socket_list = socket.getaddrinfo(url, None, 0, socket.SOCK_STREAM) + ip_info = socket_list[0][4][0] + print('【{}】 这个网址对应的IP地址是:{}'.format(url, ip_info)) -- Gitee From 53b916a9e67deb1c9ecb3c98ee637802c6cb5311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E6=99=9A=E6=9E=AB?= <1529577833@qq.com> Date: Thu, 16 Jun 2022 10:48:29 +0800 Subject: [PATCH 02/25] =?UTF-8?q?=E5=BF=BD=E7=95=A5=F0=9F=91=89npm?= =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index fb91e44..7054323 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ MANIFEST .gitee/ test/ test/allpackages.txt +node_modules/ # PyInstaller # Usually these files are written by a python script from a template -- Gitee From 48aaa363a4e8368f8a24709f550f22ac9f0e8ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E6=99=9A=E6=9E=AB?= <1529577833@qq.com> Date: Thu, 16 Jun 2022 13:56:55 +0800 Subject: [PATCH 03/25] =?UTF-8?q?=E5=8F=91=E5=B8=83=F0=9F=90=B10.1.0?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 - lib/__init__.py | 5 + lib/image/__init__.py | 1 + lib/image/add_watermark_service.py | 92 ++++ lib/image/eliminate_background.py | 70 +++ lib/pdf/__init__.py | 1 + lib/pdf/add_watermark_service.py | 53 ++ lib/ppt/__init__.py | 1 + lib/ppt/ppt2pdf_service.py | 33 ++ lib/tools/__init__.py | 2 + lib/tools/weather_city_code.py | 858 +++++++++++++++++++++++++++++ lib/tools/weather_service.py | 24 + lib/utils/__init__.py | 0 lib/utils/pandas_mem.py | 36 ++ 14 files changed, 1176 insertions(+), 2 deletions(-) create mode 100644 lib/__init__.py create mode 100644 lib/image/__init__.py create mode 100644 lib/image/add_watermark_service.py create mode 100644 lib/image/eliminate_background.py create mode 100644 lib/pdf/__init__.py create mode 100644 lib/pdf/add_watermark_service.py create mode 100644 lib/ppt/__init__.py create mode 100644 lib/ppt/ppt2pdf_service.py create mode 100644 lib/tools/__init__.py create mode 100644 lib/tools/weather_city_code.py create mode 100644 lib/tools/weather_service.py create mode 100644 lib/utils/__init__.py create mode 100644 lib/utils/pandas_mem.py diff --git a/.gitignore b/.gitignore index 1fef04a..d6526e1 100644 --- a/.gitignore +++ b/.gitignore @@ -23,8 +23,6 @@ dist/ downloads/ eggs/ .eggs/ -lib/ -lib64/ parts/ sdist/ var/ diff --git a/lib/__init__.py b/lib/__init__.py new file mode 100644 index 0000000..0b7fc94 --- /dev/null +++ b/lib/__init__.py @@ -0,0 +1,5 @@ +from . import image +from . import pdf +from . import ppt +from . import tools +from . import utils \ No newline at end of file diff --git a/lib/image/__init__.py b/lib/image/__init__.py new file mode 100644 index 0000000..11d9602 --- /dev/null +++ b/lib/image/__init__.py @@ -0,0 +1 @@ +from . import add_watermark_service \ No newline at end of file diff --git a/lib/image/add_watermark_service.py b/lib/image/add_watermark_service.py new file mode 100644 index 0000000..9ac7307 --- /dev/null +++ b/lib/image/add_watermark_service.py @@ -0,0 +1,92 @@ + +""" +图片添加水印,参考: +""" + +import math +import os + +from PIL import Image, ImageFont, ImageDraw, ImageEnhance, ImageChops + +TTF_FONT = os.path.dirname(__file__) + "/font/msyh.ttc" + + +def crop_image(im): + '''裁剪图片边缘空白''' + bg = Image.new(mode='RGBA', size=im.size) + bbox = ImageChops.difference(im, bg).getbbox() + if bbox: + return im.crop(bbox) + return im + + +def set_opacity(im, opacity): + '''设置水印透明度''' + assert 0 <= opacity <= 1 + alpha = im.split()[3] + alpha = ImageEnhance.Brightness(alpha).enhance(opacity) + im.putalpha(alpha) + return im + + +def get_mark_img(text, color="#8B8B1B", size=30, opacity=0.15): + """生成水印图片""" + width = len(text) * size + mark = Image.new(mode='RGBA', size=(width, size + 20)) + draw_table = ImageDraw.Draw(im=mark) + draw_table.text(xy=(0, 0), + text=text, + fill=color, + font=ImageFont.truetype(TTF_FONT, size=size)) + del draw_table + # 裁剪空白 + mark = crop_image(mark) + # 透明度 + set_opacity(mark, opacity) + return mark + + +def im_add_mark(im, text, color="#8B8B1B", size=30, opacity=0.15, space=75, angle=30): + """给图片对象添加水印""" + # 获取水印图片对象 + mark = get_mark_img(text, color, size, opacity) + # 将水印图片扩展并旋转生成水印大图 + w, h = im.size + c = int(math.sqrt(w ** 2 + h ** 2)) + mark2 = Image.new(mode='RGBA', size=(c, c)) + y, idx = 0, 0 + mark_w, mark_h = mark.size + while y < c: + x = -int((mark_w + space) * 0.5 * idx) + idx = (idx + 1) % 2 + while x < c: + mark2.paste(mark, (x, y)) + x = x + mark_w + space + y = y + mark_h + space + # 将水印大图旋转一定角度 + mark2 = mark2.rotate(angle) + # 在原图上添加水印大图 + if im.mode != 'RGBA': + im = im.convert('RGBA') + im.paste(mark2, (int((w - c) / 2), int((h - c) / 2)), # 坐标 + mask=mark2.split()[3]) + return im + + +def add_mark2file(imageFile, text, out="output", color="#8B8B1B", size=30, opacity=0.15, space=75, angle=30): + ''' + 添加水印,然后保存图片 + ''' + name = os.path.basename(imageFile) + new_name = os.path.join(out, name) + try: + im = Image.open(imageFile) + image = im_add_mark(im, text, color, size, opacity, space, angle) + if not os.path.exists(out): + os.mkdir(out) + if os.path.splitext(new_name)[1] != '.png': + image = image.convert('RGB') + image.save(new_name) + print(new_name, "保存成功。") + except Exception as e: + print(new_name, "保存失败。错误信息:", e) diff --git a/lib/image/eliminate_background.py b/lib/image/eliminate_background.py new file mode 100644 index 0000000..311a5f6 --- /dev/null +++ b/lib/image/eliminate_background.py @@ -0,0 +1,70 @@ +""" +功能:消除图片背景 +""" + +from PIL import Image + +def _hex_to_rgb(hex): + """ + 十六进制转RGB + """ + if hex[0] != '#' or len(hex) != 7: + print('注意:十六进制格式颜色错误,请输入7位以\'#\'开头的字符串\n') + return None + else: + r = int('0x' + hex[1:3], 16) + g = int('0x' + hex[3:5], 16) + b = int('0x' + hex[5:7], 16) + return (r, g, b) + +def eliminate_bc(src_img_path, save_img_path, margin=30, bc_color=None): + """ + 将图片的背景变成透明色 + 参数: + src_img_path: string, 原始图片存储路径 + margin: int, 和背景颜色的差异值 + bc_color, string or tuple 背景颜色值(十六进制或RGB值) + """ + img = Image.open(src_img_path) + width, height = img.size + + # 获取背景颜色的RGB值 + if bc_color: + # 给定背景色 + if isinstance(bc_color, str): + r, g, b = _hex_to_rgb(bc_color) + else: + r, g, b = bc_color + else: + # 未给定背景色,拾取图片左上角颜色作为背景色 + pix = img.load() + if src_img_path.endswith('.jpg'): + r, g, b = pix[int(width / 20), int(height / 20)] + elif src_img_path.endswith('.png'): + r, g, b, _ = pix[int(width / 20), int(height / 20)] + + img = img.convert("RGBA") + datas = img.getdata() + newData = list() + + # 背景填充零透明度 + for item in datas: + if (item[0] >= max(r - margin, 0) and item[0] <= min(r + margin, 255)) \ + and (item[1] >= max(g - margin, 0) and item[1] <= min(g + margin, 255)) \ + and (item[2] >= max(b - margin, 0) and item[2] <= min(b + margin, 255)): + newData.append((255, 255, 255, 0)) + else: + newData.append(item) + img.putdata(newData) + + # 保存新图片 + img.save(save_img_path, "PNG") + +if __name__ == '__main__': + + # 未设定背景颜色 + eliminate_bc('test.jpg', 'a.png') + + # 设定背景颜色 + # eliminate_bc('test.jpg', 'a.png', bc_color=(255, 255, 255)) + # eliminate_bc('test.jpg', 'a.png', bc_color='#FFFFFF') diff --git a/lib/pdf/__init__.py b/lib/pdf/__init__.py new file mode 100644 index 0000000..11d9602 --- /dev/null +++ b/lib/pdf/__init__.py @@ -0,0 +1 @@ +from . import add_watermark_service \ No newline at end of file diff --git a/lib/pdf/add_watermark_service.py b/lib/pdf/add_watermark_service.py new file mode 100644 index 0000000..199dc77 --- /dev/null +++ b/lib/pdf/add_watermark_service.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +import reportlab +from PyPDF2 import PdfFileWriter, PdfFileReader +from reportlab.pdfgen import canvas +from reportlab.pdfbase.ttfonts import TTFont +from reportlab.pdfbase.pdfmetrics import registerFont + +def create_watermark(content): + """创建PDF水印模板 + """ + # 创建一个PDF文件来作为一个水印文件 + c = canvas.Canvas('watermark.pdf') + reportlab.pdfbase.pdfmetrics.registerFont( + reportlab.pdfbase.ttfonts.TTFont('simfang', 'C:/Windows/Fonts/simfang.ttf')) + c.setFont('simfang', 20) + c.saveState() + c.translate(305, 505) + c.rotate(45) + c.drawCentredString(0, 0, content) + c.restoreState() + c.save() + pdf_watermark = PdfFileReader('watermark.pdf') + return pdf_watermark + + +def pdf_add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out): + # print(pdf_file_out) + pdf_output = PdfFileWriter() + input_stream = open(pdf_file_in, 'rb') + pdf_input = PdfFileReader(input_stream, strict=False) + # 获取PDF文件的页数 + if pdf_input.getIsEncrypted(): + print("文件已被加密") + PDF_Passwd = input("请输入PDF密码:") + # 尝试用空密码解密 + try: + pdf_input.decrypt(PDF_Passwd) + except Exception: + print(f"尝试用密码{PDF_Passwd}解密失败.") + return False + pageNum = pdf_input.getNumPages() + # 读入水印pdf文件 + # print(pdf_file_mark) + mark_stream = open(pdf_file_mark, mode='rb') + pdf_watermark = PdfFileReader(mark_stream, strict=False) + # 给每一页打水印 + for i in range(pageNum): + page = pdf_input.getPage(i) + page.mergePage(pdf_watermark.getPage(0)) + page.compressContentStreams() # 压缩内容 + pdf_output.addPage(page) + pdf_output.write(open(pdf_file_out, 'wb')) + diff --git a/lib/ppt/__init__.py b/lib/ppt/__init__.py new file mode 100644 index 0000000..8cdc191 --- /dev/null +++ b/lib/ppt/__init__.py @@ -0,0 +1 @@ +from . import ppt2pdf_service \ No newline at end of file diff --git a/lib/ppt/ppt2pdf_service.py b/lib/ppt/ppt2pdf_service.py new file mode 100644 index 0000000..9ee1b47 --- /dev/null +++ b/lib/ppt/ppt2pdf_service.py @@ -0,0 +1,33 @@ +""" +1. 如何设置编辑器字体的大小? +File(文件)-> Settings(设置) -> Editor(编辑器) -> Font(字体), 修改字体的大小 +2. 注释: 代码的解释说明 +""" + +# 1). 导入需要的模块(打开应用程序的模块) +import win32com.client +import os + + +def ppt2pdf_single(filename, output_filename): + """ + PPT文件导出为pdf格式 + :param filename: PPT文件的名称 + :param output_filename: 导出的pdf文件的名称 + :return: + """ + # 2). 打开PPT程序 + ppt_app = win32com.client.Dispatch('PowerPoint.Application') + # ppt_app.Visible = True # 程序操作应用程序的过程是否可视化 + + # 3). 通过PPT的应用程序打开指定的PPT文件 + # filename = "C:/Users/Administrator/Desktop/PPT办公自动化/ppt/PPT素材1.pptx" + # output_filename = "C:/Users/Administrator/Desktop/PPT办公自动化/ppt/PPT素材1.pdf" + ppt = ppt_app.Presentations.Open(filename) + + # 4). 打开的PPT另存为pdf文件。17数字是ppt转图片,32数字是ppt转pdf。 + ppt.SaveAs(output_filename, 32) + # 退出PPT程序 + ppt_app.Quit() + + diff --git a/lib/tools/__init__.py b/lib/tools/__init__.py new file mode 100644 index 0000000..39a65c1 --- /dev/null +++ b/lib/tools/__init__.py @@ -0,0 +1,2 @@ +from . import weather_service +from . import weather_city_code \ No newline at end of file diff --git a/lib/tools/weather_city_code.py b/lib/tools/weather_city_code.py new file mode 100644 index 0000000..aa154ba --- /dev/null +++ b/lib/tools/weather_city_code.py @@ -0,0 +1,858 @@ +WEATHER_CITY_CODE_DIC = {'北京': 101010100, '海淀': 101010200, '朝阳': 101071201, '顺义': 101010400, '怀柔': 101010500, + '通州': 101190509, + '昌平': 101010700, '延庆': 101010800, '丰台': 101010900, '石景山': 101011000, '大兴': 101011100, + '房山': 101011200, + '密云': 101011300, '门头沟': 101011400, '平谷': 101011500, '八达岭': 101011600, '佛爷顶': 101011700, + '汤河口': 101011800, + '密云上甸子': 101011900, '斋堂': 101012000, '霞云岭': 101012100, '上海': 101020100, '闵行': 101020200, + '宝山': 101020300, + '川沙': 101020400, '嘉定': 101020500, '南汇': 101020600, '金山': 101230508, '青浦': 101020800, + '松江': 101060310, + '奉贤': 101021000, '崇明': 101021100, '陈家镇': 101021101, '引水船': 101021102, '徐家汇': 101021200, + '浦东': 101021300, + '天津': 101030100, '武清': 101030200, '宝坻': 101030300, '东丽': 101030400, '西青': 101030500, + '北辰': 101030600, + '宁河': 101030700, '汉沽': 101030800, '静海': 101030900, '津南': 101031000, '塘沽': 101031100, + '大港': 101031200, + '平台': 101031300, '蓟县': 101031400, '重庆': 101040100, '永川': 101040200, '合川': 101040300, + '南川': 101040400, + '江津': 101040500, '万盛': 101040600, '渝北': 101040700, '北碚': 101040800, '巴南': 101040900, + '长寿': 101041000, + '黔江': 101041100, '万州天城': 101041200, '万州龙宝': 101041300, '涪陵': 101041400, '开县': 101041500, + '城口': 101041600, + '云阳': 101041700, '巫溪': 101041800, '奉节': 101041900, '巫山': 101042000, '潼南': 101042100, + '垫江': 101042200, + '梁平': 101042300, '忠县': 101042400, '石柱': 101042500, '大足': 101042600, '荣昌': 101042700, + '铜梁': 101042800, + '璧山': 101042900, '丰都': 101043000, '武隆': 101043100, '彭水': 101043200, '綦江': 101043300, + '酉阳': 101043400, + '金佛山': 101043500, '秀山': 101043600, '沙坪坝': 101043700, '哈尔滨': 101050101, '双城': 101050102, + '呼兰': 101050103, + '阿城': 101050104, '宾县': 101050105, '依兰': 101050106, '巴彦': 101050107, '通河': 101050108, + '方正': 101050109, + '延寿': 101050110, '尚志': 101050111, '五常': 101050112, '木兰': 101050113, '齐齐哈尔': 101050201, + '讷河': 101050202, + '龙江': 101050203, '甘南': 101050204, '富裕': 101050205, '依安': 101050206, '拜泉': 101050207, + '克山': 101050208, + '克东': 101050209, '泰来': 101050210, '牡丹江': 101050301, '海林': 101050302, '穆棱': 101050303, + '林口': 101050304, + '绥芬河': 101050305, '宁安': 101050306, '东宁': 101050307, '佳木斯': 101050401, '汤原': 101050402, + '抚远': 101050403, + '桦川': 101050404, '桦南': 101050405, '同江': 101050406, '富锦': 101050407, '绥化': 101050501, + '肇东': 101050502, + '安达': 101050503, '海伦': 101050504, '明水': 101050505, '望奎': 101050506, '兰西': 101050507, + '青冈': 101050508, + '庆安': 101050509, '绥棱': 101050510, '黑河': 101050601, '嫩江': 101050602, '孙吴': 101050603, + '逊克': 101050604, + '五大连池': 101050605, '北安': 101050606, '大兴安岭': 101050701, '塔河': 101050702, '漠河': 101050703, + '呼玛': 101050704, + '呼中': 101050705, '新林': 101050706, '阿木尔': 101050707, '加格达奇': 101050708, '伊春': 101050801, + '乌伊岭': 101050802, + '五营': 101050803, '铁力': 101050804, '嘉荫': 101050805, '大庆': 101050901, '林甸': 101050902, + '肇州': 101050903, + '肇源': 101050904, '杜蒙': 101050905, '七台河': 101051002, '勃利': 101051003, '鸡西': 101051101, + '虎林': 101051102, + '密山': 101051103, '鸡东': 101051104, '鹤岗': 101051201, '绥滨': 101051202, '萝北': 101051203, + '双鸭山': 101051301, + '集贤': 101051302, '宝清': 101051303, '饶河': 101051304, '长春': 101060101, '农安': 101060102, + '德惠': 101060103, + '九台': 101060104, '榆树': 101060105, '双阳': 101060106, '吉林': 101060201, '舒兰': 101060202, + '永吉': 101060203, + '蛟河': 101060204, '磐石': 101060205, '桦甸': 101060206, '烟筒山': 101060207, '延吉': 101060301, + '敦化': 101060302, + '安图': 101060303, '汪清': 101060304, '和龙': 101060305, '天池': 101130109, '龙井': 101060307, + '珲春': 101060308, + '图们': 101060309, '罗子沟': 101060311, '延边': 101060312, '四平': 101060401, '双辽': 101060402, + '梨树': 101060403, + '公主岭': 101060404, '伊通': 101060405, '孤家子': 101060406, '通化': 101060501, '梅河口': 101060502, + '柳河': 101060503, + '辉南': 101060504, '集安': 101060505, '通化县': 101060506, '白城': 101060601, '洮南': 101060602, + '大安': 101060603, + '镇赉': 101060604, '通榆': 101060605, '辽源': 101060701, '东丰': 101060702, '松原': 101060801, + '乾安': 101060802, + '前郭': 101060803, '长岭': 101060804, '扶余': 101060805, '白山': 101060901, '靖宇': 101060902, + '临江': 101060903, + '东岗': 101060904, '长白': 101060905, '沈阳': 101070101, '苏家屯': 101070102, '辽中': 101070103, + '康平': 101070104, + '法库': 101070105, '新民': 101070106, '于洪': 101070107, '新城子': 101070108, '大连': 101070201, + '瓦房店': 101070202, + '金州': 101070203, '普兰店': 101070204, '旅顺': 101070205, '长海': 101070206, '庄河': 101070207, + '皮口': 101070208, + '海洋岛': 101070209, '鞍山': 101070301, '台安': 101070302, '岫岩': 101070303, '海城': 101070304, + '抚顺': 101070401, + '清原': 101070403, '章党': 101070404, '本溪': 101070501, '本溪县': 101070502, '草河口': 101070503, + '桓仁': 101070504, + '丹东': 101070601, '凤城': 101070602, '宽甸': 101070603, '东港': 101340202, '东沟': 101070605, + '锦州': 101070701, + '凌海': 101070702, '北宁': 101070703, '义县': 101070704, '黑山': 101070705, '北镇': 101070706, + '营口': 101070801, + '大石桥': 101070802, '盖州': 101070803, '阜新': 101070901, '彰武': 101070902, '辽阳': 101071001, + '辽阳县': 101071002, + '灯塔': 101071003, '铁岭': 101071101, '开原': 101071102, '昌图': 101071103, '西丰': 101071104, + '建平': 101071202, + '凌源': 101071203, '喀左': 101071204, '北票': 101071205, '羊山': 101071206, '建平县': 101071207, + '盘锦': 101071301, + '大洼': 101071302, '盘山': 101071303, '葫芦岛': 101071401, '建昌': 101071402, '绥中': 101071403, + '兴城': 101071404, + '呼和浩特': 101080101, '土默特左旗': 101080102, '托克托': 101080103, '和林格尔': 101080104, '清水河': 101150507, + '呼和浩特市郊区': 101080106, '武川': 101080107, '包头': 101080201, '白云鄂博': 101080202, '满都拉': 101080203, + '土默特右旗': 101080204, + '固阳': 101080205, '达尔罕茂明安联合旗': 101080206, '石拐': 101080207, '乌海': 101080301, '集宁': 101080401, + '卓资': 101080402, + '化德': 101080403, '商都': 101080404, '希拉穆仁': 101080405, '兴和': 101080406, '凉城': 101080407, + '察哈尔右翼前旗': 101080408, + '察哈尔右翼中旗': 101080409, '察哈尔右翼后旗': 101080410, '四子王旗': 101080411, '丰镇': 101080412, + '通辽': 101080501, + '舍伯吐': 101080502, '科尔沁左翼中旗': 101080503, '科尔沁左翼后旗': 101080504, '青龙山': 101080505, + '开鲁': 101080506, + '库伦旗': 101080507, '奈曼旗': 101080508, '扎鲁特旗': 101080509, '高力板': 101080510, '巴雅尔吐胡硕': 101080511, + '通辽钱家店': 101080512, + '赤峰': 101080601, '赤峰郊区站': 101080602, '阿鲁科尔沁旗': 101080603, '浩尔吐': 101080604, '巴林左旗': 101080605, + '巴林右旗': 101080606, + '林西': 101080607, '克什克腾旗': 101080608, '翁牛特旗': 101080609, '岗子': 101080610, '喀喇沁旗': 101080611, + '八里罕': 101080612, + '宁城': 101080613, '敖汉旗': 101080614, '宝过图': 101080615, '鄂尔多斯': 101080701, '达拉特旗': 101080703, + '准格尔旗': 101080704, + '鄂托克前旗': 101080705, '河南': 101150304, '伊克乌素': 101080707, '鄂托克旗': 101080708, '杭锦旗': 101080709, + '乌审旗': 101080710, + '伊金霍洛旗': 101080711, '乌审召': 101080712, '东胜': 101080713, '临河': 101080801, '五原': 101080802, + '磴口': 101080803, + '乌拉特前旗': 101080804, '大佘太': 101080805, '乌拉特中旗': 101080806, '乌拉特后旗': 101080807, '海力素': 101080808, + '那仁宝力格': 101080809, '杭锦后旗': 101080810, '巴盟农试站': 101080811, '锡林浩特': 101080901, + '朝克乌拉': 101080902, + '二连浩特': 101080903, '阿巴嘎旗': 101080904, '伊和郭勒': 101080905, '苏尼特左旗': 101080906, + '苏尼特右旗': 101080907, + '朱日和': 101080908, '东乌珠穆沁旗': 101080909, '西乌珠穆沁旗': 101080910, '太仆寺旗': 101080911, + '镶黄旗': 101080912, + '正镶白旗': 101080913, '正兰旗': 101080914, '多伦': 101080915, '博克图': 101080916, '乌拉盖': 101080917, + '白日乌拉': 101080918, + '那日图': 101080919, '呼伦贝尔': 101081000, '海拉尔': 101081001, '小二沟': 101081002, '阿荣旗': 101081003, + '莫力达瓦旗': 101081004, + '鄂伦春旗': 101081005, '鄂温克旗': 101081006, '陈巴尔虎旗': 101081007, '新巴尔虎左旗': 101081008, + '新巴尔虎右旗': 101081009, + '满洲里': 101081010, '牙克石': 101081011, '扎兰屯': 101081012, '额尔古纳': 101081014, '根河': 101081015, + '图里河': 101081016, + '乌兰浩特': 101081101, '阿尔山': 101081102, '科尔沁右翼中旗': 101081103, '胡尔勒': 101081104, '扎赉特旗': 101081105, + '索伦': 101081106, + '突泉': 101081107, '霍林郭勒': 101081108, '阿拉善左旗': 101081201, '阿拉善右旗': 101081202, '额济纳旗': 101081203, + '拐子湖': 101081204, + '吉兰太': 101081205, '锡林高勒': 101081206, '头道湖': 101081207, '中泉子': 101081208, '巴彦诺尔贡': 101081209, + '雅布赖': 101081210, + '乌斯太': 101081211, '孪井滩': 101081212, '石家庄': 101090101, '井陉': 101090102, '正定': 101090103, + '栾城': 101090104, + '行唐': 101090105, '灵寿': 101090106, '高邑': 101090107, '深泽': 101090108, '赞皇': 101090109, + '无极': 101090110, + '平山': 101090111, '元氏': 101090112, '赵县': 101090113, '辛集': 101090114, '藁城': 101090115, + '晋洲': 101090116, + '新乐': 101090117, '保定': 101090201, '满城': 101090202, '阜平': 101090203, '徐水': 101090204, + '唐县': 101090205, + '高阳': 101090206, '容城': 101090207, '紫荆关': 101090208, '涞源': 101090209, '望都': 101090210, + '安新': 101090211, + '易县': 101090212, '涞水': 101090213, '曲阳': 101090214, '蠡县': 101090215, '顺平': 101090216, + '雄县': 101090217, + '涿州': 101090218, '定州': 101090219, '安国': 101090220, '高碑店': 101090221, '张家口': 101090301, + '宣化': 101090302, + '张北': 101090303, '康保': 101090304, '沽源': 101090305, '尚义': 101090306, '蔚县': 101090307, + '阳原': 101090308, + '怀安': 101090309, '万全': 101090310, '怀来': 101090311, '涿鹿': 101090312, '赤城': 101090313, + '崇礼': 101090314, + '承德': 101090402, '承德县': 101090403, '兴隆': 101090404, '平泉': 101090405, '滦平': 101090406, + '隆化': 101090407, + '丰宁': 101090408, '宽城': 101090409, '围场': 101090410, '塞罕坎': 101090411, '唐山': 101090501, + '丰南': 101090502, + '丰润': 101090503, '滦县': 101090504, '滦南': 101090505, '乐亭': 101090506, '迁西': 101090507, + '玉田': 101090508, + '唐海': 101090509, '遵化': 101090510, '迁安': 101090511, '廊坊': 101090601, '固安': 101090602, + '永清': 101090603, + '香河': 101090604, '大城': 101090605, '文安': 101090606, '大厂': 101090607, '霸州': 101090608, + '三河': 101090609, + '沧州': 101090701, '青县': 101090702, '东光': 101090703, '海兴': 101090704, '盐山': 101090705, + '肃宁': 101090706, + '南皮': 101090707, '吴桥': 101090708, '献县': 101090709, '孟村': 101090710, '泊头': 101090711, + '任丘': 101090712, + '黄骅': 101090713, '河间': 101090714, '曹妃甸': 101090715, '衡水': 101090801, '枣强': 101090802, + '武邑': 101090803, + '武强': 101090804, '饶阳': 101090805, '安平': 101090806, '故城': 101090807, '景县': 101090808, + '阜城': 101090809, + '冀州': 101090810, '深州': 101090811, '邢台': 101090901, '临城': 101090902, '邢台县浆水': 101090903, + '内邱': 101090904, + '柏乡': 101090905, '隆尧': 101090906, '南和': 101090907, '宁晋': 101090908, '巨鹿': 101090909, + '新河': 101090910, + '广宗': 101090911, '平乡': 101090912, '威县': 101090913, '清河': 101090914, '临西': 101090915, + '南宫': 101090916, + '沙河': 101090917, '任县': 101090918, '邯郸': 101091001, '峰峰': 101091002, '临漳': 101091003, + '成安': 101091004, + '大名': 101091005, '涉县': 101091006, '磁县': 101091007, '肥乡': 101091008, '永年': 101091009, + '邱县': 101091010, + '鸡泽': 101091011, '广平': 101091012, '馆陶': 101091013, '魏县': 101091014, '曲周': 101091015, + '武安': 101091016, + '秦皇岛': 101091101, '青龙': 101091102, '昌黎': 101091103, '抚宁': 101091104, '卢龙': 101091105, + '北戴河': 101091106, + '太原': 101100101, '清徐': 101100102, '阳曲': 101100103, '娄烦': 101100104, '太原古交区': 101100105, + '太原北郊': 101100106, + '太原南郊': 101100107, '大同': 101100201, '阳高': 101100202, '大同县': 101100203, '天镇': 101100204, + '广灵': 101100205, + '灵邱': 101100206, '浑源': 101100207, '左云': 101100208, '阳泉': 101100301, '盂县': 101100302, + '平定': 101100303, + '晋中': 101100401, '榆次': 101100402, '榆社': 101100403, '左权': 101100404, '和顺': 101100405, + '昔阳': 101100406, + '寿阳': 101100407, '太谷': 101100408, '祁县': 101100409, '平遥': 101100410, '灵石': 101100411, + '介休': 101100412, + '长治': 101100501, '黎城': 101100502, '屯留': 101100503, '潞城': 101100504, '襄垣': 101100505, + '平顺': 101100506, + '武乡': 101100507, '沁县': 101100508, '长子': 101100509, '沁源': 101100510, '壶关': 101100511, + '晋城': 101100601, + '沁水': 101100602, '阳城': 101100603, '陵川': 101100604, '高平': 101100605, '临汾': 101100701, + '曲沃': 101100702, + '永和': 101100703, '隰县': 101100704, '大宁': 101100705, '吉县': 101100706, '襄汾': 101100707, + '蒲县': 101100708, + '汾西': 101100709, '洪洞': 101100710, '霍州': 101100711, '乡宁': 101100712, '翼城': 101100713, + '侯马': 101100714, + '浮山': 101100715, '安泽': 101100716, '古县': 101100717, '运城': 101100801, '临猗': 101100802, + '稷山': 101100803, + '万荣': 101100804, '河津': 101100805, '新绛': 101100806, '绛县': 101100807, '闻喜': 101100808, + '垣曲': 101100809, + '永济': 101100810, '芮城': 101100811, '夏县': 101100812, '平陆': 101100813, '朔州': 101100901, + '平鲁': 101100902, + '山阴': 101100903, '右玉': 101100904, '应县': 101100905, '怀仁': 101100906, '忻州': 101101001, + '定襄': 101101002, + '五台县豆村': 101101003, '河曲': 101101004, '偏关': 101101005, '神池': 101101006, '宁武': 101101007, + '代县': 101101008, + '繁峙': 101101009, '五台山': 101101010, '保德': 101101011, '静乐': 101101012, '岢岚': 101101013, + '五寨': 101101014, + '原平': 101101015, '吕梁': 101101100, '离石': 101101101, '临县': 101101102, '兴县': 101101103, + '岚县': 101101104, + '柳林': 101101105, '石楼': 101101106, '方山': 101101107, '交口': 101101108, '中阳': 101101109, + '孝义': 101101110, + '汾阳': 101101111, '文水': 101101112, '交城': 101101113, '西安': 101110101, '长安': 101110102, + '临潼': 101110103, + '蓝田': 101110104, '周至': 101110105, '户县': 101110106, '高陵': 101110107, '杨凌': 101110108, + '咸阳': 101110200, + '三原': 101110201, '礼泉': 101110202, '永寿': 101110203, '淳化': 101110204, '泾阳': 101110205, + '武功': 101110206, + '乾县': 101110207, '彬县': 101110208, '长武': 101110209, '旬邑': 101110210, '兴平': 101110211, + '延安': 101110300, + '延长': 101110301, '延川': 101110302, '子长': 101110303, '宜川': 101110304, '富县': 101110305, + '志丹': 101110306, + '安塞': 101110307, '甘泉': 101110308, '洛川': 101110309, '黄陵': 101110310, '黄龙': 101110311, + '吴起': 101110312, + '榆林': 101110401, '府谷': 101110402, '神木': 101110403, '佳县': 101110404, '定边': 101110405, + '靖边': 101110406, + '横山': 101110407, '米脂': 101110408, '子洲': 101110409, '绥德': 101110410, '吴堡': 101110411, + '清涧': 101110412, + '渭南': 101110501, '华县': 101110502, '潼关': 101110503, '大荔': 101110504, '白水': 101110505, + '富平': 101110506, + '蒲城': 101110507, '澄城': 101110508, '合阳': 101110509, '韩城': 101110510, '华阴': 101110511, + '华山': 101110512, + '商洛': 101110601, '洛南': 101110602, '柞水': 101110603, '镇安': 101110605, '丹凤': 101110606, + '商南': 101110607, + '山阳': 101110608, '安康': 101110701, '紫阳': 101110702, '石泉': 101110703, '汉阴': 101110704, + '旬阳': 101110705, + '岚皋': 101110706, '平利': 101110707, '白河': 101110708, '镇坪': 101110709, '宁陕': 101110710, + '汉中': 101110801, + '略阳': 101110802, '勉县': 101110803, '留坝': 101110804, '洋县': 101110805, '城固': 101110806, + '西乡': 101110807, + '佛坪': 101110808, '宁强': 101110809, '南郑': 101110810, '镇巴': 101110811, '宝鸡': 101110901, + '宝鸡县': 101110902, + '千阳': 101110903, '麟游': 101110904, '岐山': 101110905, '凤翔': 101110906, '扶风': 101110907, + '眉县': 101110908, + '太白': 101110909, '凤县': 101110910, '陇县': 101110911, '铜川': 101111001, '耀县': 101111002, + '宜君': 101111003, + '济南': 101120101, '长清': 101120102, '商河': 101120103, '章丘': 101120104, '平阴': 101120105, + '济阳': 101120106, + '青岛': 101120201, '崂山': 101120202, '潮连岛': 101120203, '即墨': 101120204, '胶州': 101120205, + '胶南': 101120206, + '莱西': 101120207, '平度': 101120208, '淄博': 101120301, '淄川': 101120302, '博山': 101120303, + '高青': 101120304, + '周村': 101120305, '沂源': 101120306, '桓台': 101120307, '临淄': 101120308, '德州': 101120401, + '武城': 101120402, + '临邑': 101120403, '陵县': 101120404, '齐河': 101120405, '乐陵': 101120406, '庆云': 101120407, + '平原': 101120408, + '宁津': 101120409, '夏津': 101120410, '禹城': 101120411, '烟台': 101120501, '莱州': 101120502, + '长岛': 101120503, + '蓬莱': 101120504, '龙口': 101120505, '招远': 101120506, '栖霞': 101120507, '福山': 101120508, + '牟平': 101120509, + '莱阳': 101120510, '海阳': 101120511, '千里岩': 101120512, '潍坊': 101120601, '青州': 101120602, + '寿光': 101120603, + '临朐': 101120604, '昌乐': 101120605, '昌邑': 101120606, '安丘': 101120607, '高密': 101120608, + '诸城': 101120609, + '济宁': 101120701, '嘉祥': 101120702, '微山': 101120703, '鱼台': 101120704, '兖州': 101120705, + '金乡': 101120706, + '汶上': 101120707, '泗水': 101120708, '梁山': 101120709, '曲阜': 101120710, '邹城': 101120711, + '泰安': 101120801, + '新泰': 101120802, '泰山': 101120803, '肥城': 101120804, '东平': 101120805, '宁阳': 101120806, + '临沂': 101120901, + '莒南': 101120902, '沂南': 101120903, '苍山': 101120904, '临沭': 101120905, '郯城': 101120906, + '蒙阴': 101120907, + '平邑': 101120908, '费县': 101120909, '沂水': 101120910, '马站': 101120911, '菏泽': 101121001, + '鄄城': 101121002, + '郓城': 101121003, '东明': 101121004, '定陶': 101121005, '巨野': 101121006, '曹县': 101121007, + '成武': 101121008, + '单县': 101121009, '滨州': 101121101, '博兴': 101121102, '无棣': 101121103, '阳信': 101121104, + '惠民': 101121105, + '沾化': 101121106, '邹平': 101121107, '东营': 101121201, '河口': 101290114, '垦利': 101121203, + '利津': 101121204, + '广饶': 101121205, '威海': 101121301, '文登': 101121302, '荣成': 101121303, '乳山': 101121304, + '成山头': 101121305, + '石岛': 101121306, '枣庄': 101121401, '薛城': 101121402, '峄城': 101121403, '台儿庄': 101121404, + '滕州': 101121405, + '日照': 101121501, '五莲': 101121502, '莒县': 101121503, '莱芜': 101121601, '聊城': 101121701, + '冠县': 101121702, + '阳谷': 101121703, '高唐': 101121704, '茌平': 101121705, '东阿': 101121706, '临清': 101121707, + '朝城': 101121708, + '莘县': 101121709, '乌鲁木齐': 101130101, '蔡家湖': 101130102, '小渠子': 101130103, '巴仑台': 101130104, + '达坂城': 101130105, + '十三间房气象站': 101130106, '天山大西沟': 101130107, '乌鲁木齐牧试站': 101130108, '白杨沟': 101130110, + '克拉玛依': 101130201, + '石河子': 101130301, '炮台': 101130302, '莫索湾': 101130303, '乌兰乌苏': 101130304, '昌吉': 101130401, + '呼图壁': 101130402, + '米泉': 101130403, '阜康': 101130404, '吉木萨尔': 101130405, '奇台': 101130406, '玛纳斯': 101130407, + '木垒': 101130408, + '北塔山': 101130409, '吐鲁番': 101130501, '托克逊': 101130502, '吐鲁番东坎': 101130503, '鄯善': 101130504, + '红柳河': 101130505, + '库尔勒': 101130601, '轮台': 101130602, '尉犁': 101130603, '若羌': 101130604, '且末': 101130605, + '和静': 101130606, + '焉耆': 101130607, '和硕': 101130608, '库米什': 101130609, '巴音布鲁克': 101130610, '铁干里克': 101130611, + '博湖': 101130612, + '塔中': 101130613, '阿拉尔': 101130701, '阿克苏': 101130801, '乌什': 101130802, '温宿': 101130803, + '拜城': 101130804, + '新和': 101130805, '沙雅': 101130806, '库车': 101130807, '柯坪': 101130808, '阿瓦提': 101130809, + '喀什': 101130901, + '英吉沙': 101130902, '塔什库尔干': 101130903, '麦盖提': 101130904, '莎车': 101130905, '叶城': 101130906, + '泽普': 101130907, + '巴楚': 101130908, '岳普湖': 101130909, '伽师': 101130910, '伊宁': 101131001, '察布查尔': 101131002, + '尼勒克': 101131003, + '伊宁县': 101131004, '巩留': 101131005, '新源': 101131006, '昭苏': 101131007, '特克斯': 101131008, + '霍城': 101131009, + '霍尔果斯': 101131010, '塔城': 101131101, '裕民': 101131102, '额敏': 101131103, '和布克赛尔': 101131104, + '托里': 101131105, + '乌苏': 101131106, '沙湾': 101131107, '和丰': 101131108, '哈密': 101131201, '沁城': 101131202, + '巴里坤': 101131203, + '伊吾': 101131204, '淖毛湖': 101131205, '和田': 101131301, '皮山': 101131302, '策勒': 101131303, + '墨玉': 101131304, + '洛浦': 101131305, '民丰': 101131306, '于田': 101131307, '阿勒泰': 101131401, '哈巴河': 101131402, + '一八五团': 101131403, + '黑山头': 101131404, '吉木乃': 101131405, '布尔津': 101131406, '福海': 101131407, '富蕴': 101131408, + '青河': 101131409, + '安德河': 101131410, '阿图什': 101131501, '乌恰': 101131502, '阿克陶': 101131503, '阿合奇': 101131504, + '吐尔尕特': 101131505, + '博乐': 101131601, '温泉': 101131602, '精河': 101131603, '阿拉山口': 101131606, '拉萨': 101140101, + '当雄': 101140102, + '尼木': 101140103, '墨竹贡卡': 101140104, '日喀则': 101140201, '拉孜': 101140202, '南木林': 101140203, + '聂拉木': 101140204, + '定日': 101140205, '江孜': 101140206, '帕里': 101140207, '山南': 101140301, '贡嘎': 101140302, + '琼结': 101140303, + '加查': 101140304, '浪卡子': 101140305, '错那': 101140306, '隆子': 101140307, '泽当': 101140308, + '林芝': 101140401, + '波密': 101140402, '米林': 101140403, '察隅': 101140404, '昌都': 101140501, '丁青': 101140502, + '类乌齐': 101140503, + '洛隆': 101140504, '左贡': 101140505, '芒康': 101140506, '八宿': 101140507, '那曲': 101140601, + '嘉黎': 101140603, + '班戈': 101140604, '安多': 101140605, '索县': 101140606, '比如': 101140607, '阿里': 101140701, + '改则': 101140702, + '申扎': 101140703, '狮泉河': 101140704, '普兰': 101140705, '西宁': 101150101, '大通': 101150102, + '湟源': 101150103, + '湟中': 101150104, '铁卜加': 101150105, '铁卜加寺': 101150106, '中心站': 101150107, '海东': 101150201, + '乐都': 101150202, + '民和': 101150203, '互助': 101150204, '化隆': 101150205, '循化': 101150206, '冷湖': 101150207, + '平安': 101150208, + '黄南': 101150301, '尖扎': 101150302, '泽库': 101150303, '海南': 101150401, '江西沟': 101150402, + '贵德': 101150404, + '河卡': 101150405, '兴海': 101150406, '贵南': 101150407, '同德': 101150408, '共和': 101150409, + '果洛': 101150501, + '班玛': 101150502, '甘德': 101150503, '达日': 101150504, '久治': 101150505, '玛多': 101150506, + '玛沁': 101150508, + '玉树': 101150601, '托托河': 101150602, '治多': 101150603, '杂多': 101150604, '囊谦': 101150605, + '曲麻莱': 101150606, + '海西': 101150701, '格尔木': 101150702, '察尔汉': 101150703, '野牛沟': 101150704, '五道梁': 101150705, + '小灶火': 101150706, + '天峻': 101150708, '乌兰': 101150709, '都兰': 101150710, '诺木洪': 101150711, '茫崖': 101150712, + '大柴旦': 101150713, + '茶卡': 101150714, '香日德': 101150715, '德令哈': 101150716, '海北': 101150801, '门源': 101150802, + '祁连': 101150803, + '海晏': 101150804, '托勒': 101150805, '刚察': 101150806, '兰州': 101160101, '皋兰': 101160102, + '永登': 101160103, + '榆中': 101160104, '定西': 101160201, '通渭': 101160202, '陇西': 101160203, '渭源': 101160204, + '临洮': 101160205, + '漳县': 101160206, '岷县': 101160207, '安定': 101160208, '平凉': 101160301, '泾川': 101160302, + '灵台': 101160303, + '崇信': 101160304, '华亭': 101160305, '庄浪': 101160306, '静宁': 101160307, '崆峒': 101160308, + '庆阳': 101160401, + '西峰': 101160402, '环县': 101160403, '华池': 101160404, '合水': 101160405, '正宁': 101160406, + '宁县': 101160407, + '镇原': 101160408, '庆城': 101160409, '武威': 101160501, '民勤': 101160502, '古浪': 101160503, + '乌鞘岭': 101160504, + '天祝': 101160505, '金昌': 101160601, '永昌': 101160602, '张掖': 101160701, '肃南': 101160702, + '民乐': 101160703, + '临泽': 101160704, '高台': 101160705, '山丹': 101160706, '酒泉': 101160801, '鼎新': 101160802, + '金塔': 101160803, + '马鬃山': 101160804, '瓜州': 101160805, '肃北': 101160806, '玉门镇': 101160807, '敦煌': 101160808, + '天水': 101160901, + '北道区': 101160902, '清水': 101160903, '秦安': 101160904, '甘谷': 101160905, '武山': 101160906, + '张家川': 101160907, + '麦积': 101160908, '武都': 101161001, '成县': 101161002, '文县': 101161003, '宕昌': 101161004, + '康县': 101161005, + '西和': 101161006, '礼县': 101161007, '徽县': 101161008, '两当': 101161009, '临夏': 101161101, + '康乐': 101161102, + '永靖': 101161103, '广河': 101161104, '和政': 101161105, '东乡': 101240411, '合作': 101161201, + '临潭': 101161202, + '卓尼': 101161203, '舟曲': 101161204, '迭部': 101161205, '玛曲': 101161206, '碌曲': 101161207, + '夏河': 101161208, + '白银': 101161301, '靖远': 101161302, '会宁': 101161303, '华家岭': 101161304, '景泰': 101161305, + '银川': 101170101, + '永宁': 101170102, '灵武': 101170103, '贺兰': 101170104, '石嘴山': 101170201, '惠农': 101170202, + '平罗': 101170203, + '陶乐': 101170204, '石炭井': 101170205, '大武口': 101170206, '吴忠': 101170301, '同心': 101170302, + '盐池': 101170303, + '韦州': 101170304, '麻黄山': 101170305, '青铜峡': 101170306, '固原': 101170401, '西吉': 101170402, + '隆德': 101170403, + '泾源': 101170404, '六盘山': 101170405, '彭阳': 101170406, '中卫': 101170501, '中宁': 101170502, + '兴仁堡': 101170503, + '海原': 101170504, '郑州': 101180101, '巩义': 101180102, '荥阳': 101180103, '登封': 101180104, + '新密': 101180105, + '新郑': 101180106, '中牟': 101180107, '郑州农试站': 101180108, '安阳': 101180201, '汤阴': 101180202, + '滑县': 101180203, + '内黄': 101180204, '林州': 101180205, '新乡': 101180301, '获嘉': 101180302, '原阳': 101180303, + '辉县': 101180304, + '卫辉': 101180305, '延津': 101180306, '封丘': 101180307, '长垣': 101180308, '许昌': 101180401, + '鄢陵': 101180402, + '襄城': 101180403, '长葛': 101180404, '禹州': 101180405, '平顶山': 101180501, '郏县': 101180502, + '宝丰': 101180503, + '汝州': 101180504, '叶县': 101180505, '舞钢': 101180506, '鲁山': 101180507, '信阳': 101180601, + '息县': 101180602, + '罗山': 101180603, '光山': 101180604, '新县': 101180605, '淮滨': 101180606, '潢川': 101180607, + '固始': 101180608, + '商城': 101180609, '鸡公山': 101180610, '信阳地区农试站': 101180611, '南阳': 101180701, '南召': 101180702, + '方城': 101180703, + '社旗': 101180704, '西峡': 101180705, '内乡': 101180706, '镇平': 101180707, '淅川': 101180708, + '新野': 101180709, + '唐河': 101180710, '邓州': 101180711, '桐柏': 101180712, '开封': 101180801, '杞县': 101180802, + '尉氏': 101180803, + '通许': 101180804, '兰考': 101180805, '洛阳': 101180901, '新安': 101180902, '孟津': 101180903, + '宜阳': 101180904, + '洛宁': 101180905, '伊川': 101180906, '嵩县': 101180907, '偃师': 101180908, '栾川': 101180909, + '汝阳': 101180910, + '商丘': 101181001, '睢阳区': 101181002, '睢县': 101181003, '民权': 101181004, '虞城': 101181005, + '柘城': 101181006, + '宁陵': 101181007, '夏邑': 101181008, '永城': 101181009, '焦作': 101181101, '修武': 101181102, + '武陟': 101181103, + '沁阳': 101181104, '博爱': 101181106, '温县': 101181107, '孟州': 101181108, '鹤壁': 101181201, + '浚县': 101181202, + '淇县': 101181203, '濮阳': 101181301, '台前': 101181302, '南乐': 101181303, '清丰': 101181304, + '范县': 101181305, + '周口': 101181401, '扶沟': 101181402, '太康': 101181403, '淮阳': 101181404, '西华': 101181405, + '商水': 101181406, + '项城': 101181407, '郸城': 101181408, '鹿邑': 101181409, '沈丘': 101181410, '黄泛区': 101181411, + '漯河': 101181501, + '临颍': 101181502, '舞阳': 101181503, '驻马店': 101181601, '西平': 101181602, '遂平': 101181603, + '上蔡': 101181604, + '汝南': 101181605, '泌阳': 101181606, '平舆': 101181607, '新蔡': 101181608, '确山': 101181609, + '正阳': 101181610, + '三门峡': 101181701, '灵宝': 101181702, '渑池': 101181703, '卢氏': 101181704, '济源': 101181801, + '南京': 101190101, + '溧水': 101190102, '高淳': 101190103, '江宁': 101190104, '六合': 101190105, '江浦': 101190106, + '浦口': 101190107, + '无锡': 101190201, '江阴': 101190202, '宜兴': 101190203, '镇江': 101190301, '丹阳': 101190302, + '扬中': 101190303, + '句容': 101190304, '丹徒': 101190305, '苏州': 101190401, '常熟': 101190402, '张家港': 101190403, + '昆山': 101190404, + '吴县东山': 101190405, '吴县': 101190406, '吴江': 101190407, '太仓': 101190408, '南通': 101190501, + '海安': 101190502, + '如皋': 101190503, '如东': 101190504, '吕泗': 101190505, '吕泗渔场': 101190506, '启东': 101190507, + '海门': 101190508, + '扬州': 101190601, '宝应': 101190602, '仪征': 101190603, '高邮': 101190604, '江都': 101190605, + '邗江': 101190606, + '盐城': 101190701, '响水': 101190702, '滨海': 101190703, '阜宁': 101190704, '射阳': 101190705, + '建湖': 101190706, + '东台': 101190707, '大丰': 101190708, '盐都': 101190709, '徐州': 101190801, '徐州农试站': 101190802, + '丰县': 101190803, + '沛县': 101190804, '邳州': 101190805, '睢宁': 101190806, '新沂': 101190807, '淮安': 101190901, + '金湖': 101190902, + '盱眙': 101190903, '洪泽': 101190904, '涟水': 101190905, '淮阴县': 101190906, '淮阴': 101190907, + '楚州': 101190908, + '连云港': 101191001, '东海': 101191002, '赣榆': 101191003, '灌云': 101191004, '灌南': 101191005, + '西连岛': 101191006, + '燕尾港': 101191007, '常州': 101191101, '溧阳': 101191102, '金坛': 101191103, '泰州': 101191201, + '兴化': 101191202, + '泰兴': 101191203, '姜堰': 101191204, '靖江': 101191205, '宿迁': 101191301, '沭阳': 101191302, + '泗阳': 101191303, + '泗洪': 101191304, '武汉': 101200101, '蔡甸': 101200102, '黄陂': 101200103, '新洲': 101200104, + '江夏': 101200105, + '襄樊': 101200201, '襄阳': 101200202, '保康': 101200203, '南漳': 101200204, '宜城': 101200205, + '老河口': 101200206, + '谷城': 101200207, '枣阳': 101200208, '鄂州': 101200301, '孝感': 101200401, '安陆': 101200402, + '云梦': 101200403, + '大悟': 101200404, '应城': 101200405, '汉川': 101200406, '黄冈': 101200501, '红安': 101200502, + '麻城': 101200503, + '罗田': 101200504, '英山': 101200505, '浠水': 101200506, '蕲春': 101200507, '黄梅': 101200508, + '武穴': 101200509, + '黄石': 101200601, '大冶': 101200602, '阳新': 101200603, '咸宁': 101200701, '赤壁': 101200702, + '嘉鱼': 101200703, + '崇阳': 101200704, '通城': 101200705, '通山': 101200706, '荆州': 101200801, '江陵': 101200802, + '公安': 101200803, + '石首': 101200804, '监利': 101200805, '洪湖': 101200806, '松滋': 101200807, '宜昌': 101200901, + '远安': 101200902, + '秭归': 101200903, '兴山': 101200904, '宜昌县': 101200905, '五峰': 101200906, '当阳': 101200907, + '长阳': 101200908, + '宜都': 101200909, '枝江': 101200910, '三峡': 101200911, '夷陵': 101200912, '恩施': 101201001, + '利川': 101201002, + '建始': 101201003, '咸丰': 101201004, '宣恩': 101201005, '鹤峰': 101201006, '来凤': 101201007, + '巴东': 101201008, + '绿葱坡': 101201009, '十堰': 101201101, '竹溪': 101201102, '郧西': 101201103, '郧县': 101201104, + '竹山': 101201105, + '房县': 101201106, '丹江口': 101201107, '神农架': 101201201, '随州': 101201301, '广水': 101201302, + '荆门': 101201401, + '钟祥': 101201402, '京山': 101201403, '天门': 101201501, '仙桃': 101201601, '潜江': 101201701, + '杭州': 101210101, + '萧山': 101210102, '桐庐': 101210103, '淳安': 101210104, '建德': 101210105, '余杭': 101210106, + '临安': 101210107, + '富阳': 101210108, '湖州': 101210201, '长兴': 101210202, '安吉': 101210203, '德清': 101210204, + '嘉兴': 101210301, + '嘉善': 101210302, '海宁': 101210303, '桐乡': 101210304, '平湖': 101210305, '海盐': 101210306, + '宁波': 101210401, + '慈溪': 101210403, '余姚': 101210404, '奉化': 101210405, '象山': 101210406, '石浦': 101210407, + '宁海': 101210408, + '鄞县': 101210409, '北仑': 101210410, '鄞州': 101210411, '镇海': 101210412, '绍兴': 101210501, + '诸暨': 101210502, + '上虞': 101210503, '新昌': 101210504, '嵊州': 101210505, '台州': 101210601, '括苍山': 101210602, + '玉环': 101210603, + '三门': 101210604, '天台': 101210605, '仙居': 101210606, '温岭': 101210607, '大陈': 101210608, + '洪家': 101210609, + '温州': 101210701, '泰顺': 101210702, '文成': 101210703, '平阳': 101210704, '瑞安': 101210705, + '洞头': 101210706, + '乐清': 101210707, '永嘉': 101210708, '苍南': 101210709, '丽水': 101210801, '遂昌': 101210802, + '龙泉': 101210803, + '缙云': 101210804, '青田': 101210805, '云和': 101210806, '庆元': 101210807, '金华': 101210901, + '浦江': 101210902, + '兰溪': 101210903, '义乌': 101210904, '东阳': 101210905, '武义': 101210906, '永康': 101210907, + '磐安': 101210908, + '衢州': 101211001, '常山': 101211002, '开化': 101211003, '龙游': 101211004, '江山': 101211005, + '舟山': 101211101, + '嵊泗': 101211102, '嵊山': 101211103, '岱山': 101211104, '普陀': 101211105, '定海': 101211106, + '合肥': 101220101, + '长丰': 101220102, '肥东': 101220103, '肥西': 101220104, '蚌埠': 101220201, '怀远': 101220202, + '固镇': 101220203, + '五河': 101220204, '芜湖': 101220301, '繁昌': 101220302, '芜湖县': 101220303, '南陵': 101220304, + '淮南': 101220401, + '凤台': 101220402, '马鞍山': 101220501, '当涂': 101220502, '安庆': 101220601, '枞阳': 101220602, + '太湖': 101220603, + '潜山': 101220604, '怀宁': 101220605, '宿松': 101220606, '望江': 101220607, '岳西': 101220608, + '桐城': 101220609, + '宿州': 101220701, '砀山': 101220702, '灵璧': 101220703, '泗县': 101220704, '萧县': 101220705, + '阜阳': 101220801, + '阜南': 101220802, '颍上': 101220803, '临泉': 101220804, '界首': 101220805, '太和': 101220806, + '亳州': 101220901, + '涡阳': 101220902, '利辛': 101220903, '蒙城': 101220904, '黄山站': 101221001, '黄山区': 101221002, + '屯溪': 101221003, + '祁门': 101221004, '黟县': 101221005, '歙县': 101221006, '休宁': 101221007, '黄山市': 101221008, + '滁州': 101221101, + '凤阳': 101221102, '明光': 101221103, '定远': 101221104, '全椒': 101221105, '来安': 101221106, + '天长': 101221107, + '淮北': 101221201, '濉溪': 101221202, '铜陵': 101221301, '宣城': 101221401, '泾县': 101221402, + '旌德': 101221403, + '宁国': 101221404, '绩溪': 101221405, '广德': 101221406, '郎溪': 101221407, '六安': 101221501, + '霍邱': 101221502, + '寿县': 101221503, '南溪': 101271104, '金寨': 101221505, '霍山': 101221506, '舒城': 101221507, + '巢湖': 101221601, + '庐江': 101221602, '无为': 101221603, '含山': 101221604, '和县': 101221605, '池州': 101221701, + '东至': 101221702, + '青阳': 101221703, '九华山': 101221704, '石台': 101221705, '福州': 101230101, '闽清': 101230102, + '闽侯': 101230103, + '罗源': 101230104, '连江': 101230105, '马祖': 101230106, '永泰': 101230107, '平潭': 101230108, + '福州郊区': 101230109, + '长乐': 101230110, '福清': 101230111, '平潭海峡大桥': 101230112, '厦门': 101230201, '同安': 101230202, + '宁德': 101230301, + '古田': 101230302, '霞浦': 101230303, '寿宁': 101230304, '周宁': 101230305, '福安': 101230306, + '柘荣': 101230307, + '福鼎': 101230308, '屏南': 101230309, '莆田': 101230401, '仙游': 101230402, '秀屿港': 101230403, + '泉州': 101230501, + '安溪': 101230502, '九仙山': 101230503, '永春': 101230504, '德化': 101230505, '南安': 101230506, + '崇武': 101230507, + '晋江': 101230509, '漳州': 101230601, '长泰': 101230602, '南靖': 101230603, '平和': 101230604, + '龙海': 101230605, + '漳浦': 101230606, '诏安': 101230607, '东山': 101230608, '云霄': 101230609, '华安': 101230610, + '龙岩': 101230701, + '长汀': 101230702, '连城': 101230703, '武平': 101230704, '上杭': 101230705, '永定': 101230706, + '漳平': 101230707, + '三明': 101230801, '宁化': 101230802, '清流': 101230803, '泰宁': 101230804, '将乐': 101230805, + '建宁': 101230806, + '明溪': 101230807, '沙县': 101230808, '尤溪': 101230809, '永安': 101230810, '大田': 101230811, + '南平': 101230901, + '顺昌': 101230902, '光泽': 101230903, '邵武': 101230904, '武夷山': 101230905, '浦城': 101230906, + '建阳': 101230907, + '松溪': 101230908, '政和': 101230909, '建瓯': 101230910, '南昌': 101240101, '新建': 101240102, + '南昌县': 101240103, + '安义': 101240104, '进贤': 101240105, '莲塘': 101240106, '九江': 101240201, '瑞昌': 101240202, + '庐山': 101240203, + '武宁': 101240204, '德安': 101240205, '永修': 101240206, '湖口': 101240207, '彭泽': 101240208, + '星子': 101240209, + '都昌': 101240210, '棠荫': 101240211, '修水': 101240212, '上饶': 101240301, '鄱阳': 101240302, + '婺源': 101240303, + '康山': 101240304, '余干': 101240305, '万年': 101240306, '德兴': 101240307, '上饶县': 101240308, + '弋阳': 101240309, + '横峰': 101240310, '铅山': 101240311, '玉山': 101340903, '广丰': 101240313, '波阳': 101240314, + '抚州': 101240401, + '广昌': 101240402, '乐安': 101240403, '崇仁': 101240404, '金溪': 101240405, '资溪': 101240406, + '宜黄': 101240407, + '南城': 101240408, '南丰': 101240409, '黎川': 101240410, '宜春': 101240501, '铜鼓': 101240502, + '宜丰': 101240503, + '万载': 101240504, '上高': 101240505, '靖安': 101240506, '奉新': 101240507, '高安': 101240508, + '樟树': 101240509, + '丰城': 101240510, '吉安': 101240601, '吉安县': 101240602, '吉水': 101240603, '新干': 101240604, + '峡江': 101240605, + '永丰': 101240606, '永新': 101240607, '井冈山': 101240608, '万安': 101240609, '遂川': 101240610, + '泰和': 101240611, + '安福': 101240612, '宁冈': 101240613, '赣州': 101240701, '崇义': 101240702, '上犹': 101240703, + '南康': 101240704, + '大余': 101240705, '信丰': 101240706, '宁都': 101240707, '石城': 101240708, '瑞金': 101240709, + '于都': 101240710, + '会昌': 101240711, '安远': 101240712, '全南': 101240713, '龙南': 101240714, '定南': 101240715, + '寻乌': 101240716, + '兴国': 101240717, '景德镇': 101240801, '乐平': 101240802, '萍乡': 101240901, '莲花': 101240902, + '新余': 101241001, + '分宜': 101241002, '鹰潭': 101241101, '余江': 101241102, '贵溪': 101241103, '长沙': 101250101, + '宁乡': 101250102, + '浏阳': 101250103, '马坡岭': 101250104, '湘潭': 101250201, '韶山': 101250202, '湘乡': 101250203, + '株洲': 101250301, + '攸县': 101250302, '醴陵': 101250303, '株洲县': 101250304, '茶陵': 101250305, '炎陵': 101250306, + '衡阳': 101250401, + '衡山': 101250402, '衡东': 101250403, '祁东': 101250404, '衡阳县': 101250405, '常宁': 101250406, + '衡南': 101250407, + '耒阳': 101250408, '南岳': 101250409, '郴州': 101250501, '桂阳': 101250502, '嘉禾': 101250503, + '宜章': 101250504, + '临武': 101250505, '桥口': 101250506, '资兴': 101250507, '汝城': 101250508, '安仁': 101250509, + '永兴': 101250510, + '桂东': 101250511, '常德': 101250601, '安乡': 101250602, '桃源': 101250603, '汉寿': 101250604, + '澧县': 101250605, + '临澧': 101250606, '石门': 101250607, '益阳': 101250700, '赫山区': 101250701, '南县': 101250702, + '桃江': 101250703, + '安化': 101250704, '沅江': 101250705, '娄底': 101250801, '双峰': 101250802, '冷水江': 101250803, + '冷水滩': 101250804, + '新化': 101250805, '涟源': 101250806, '邵阳': 101250901, '隆回': 101250902, '洞口': 101250903, + '新邵': 101250904, + '邵东': 101250905, '绥宁': 101250906, '新宁': 101250907, '武冈': 101250908, '城步': 101250909, + '邵阳县': 101250910, + '岳阳': 101251001, '华容': 101251002, '湘阴': 101251003, '汨罗': 101251004, '平江': 101251005, + '临湘': 101251006, + '张家界': 101251101, '桑植': 101251102, '慈利': 101251103, '怀化': 101251201, '鹤城区': 101251202, + '沅陵': 101251203, + '辰溪': 101251204, '靖州': 101251205, '会同': 101251206, '通道': 101251207, '麻阳': 101251208, + '新晃': 101251209, + '芷江': 101251210, '溆浦': 101251211, '黔阳': 101251301, '洪江': 101251302, '永州': 101251401, + '祁阳': 101251402, + '东安': 101251403, '双牌': 101251404, '道县': 101251405, '宁远': 101251406, '江永': 101251407, + '蓝山': 101251408, + '新田': 101251409, '江华': 101251410, '吉首': 101251501, '保靖': 101251502, '永顺': 101251503, + '古丈': 101251504, + '凤凰': 101251505, '泸溪': 101251506, '龙山': 101251507, '花垣': 101251508, '贵阳': 101260101, + '白云': 101260102, + '花溪': 101260103, '乌当': 101260104, '息烽': 101260105, '开阳': 101260106, '修文': 101260107, + '清镇': 101260108, + '遵义': 101260201, '遵义县': 101260202, '仁怀': 101260203, '绥阳': 101260204, '湄潭': 101260205, + '凤冈': 101260206, + '桐梓': 101260207, '赤水': 101260208, '习水': 101260209, '道真': 101260210, '正安': 101260211, + '务川': 101260212, + '余庆': 101260213, '汇川': 101260214, '安顺': 101260301, '普定': 101260302, '镇宁': 101260303, + '平坝': 101260304, + '紫云': 101260305, '关岭': 101260306, '都匀': 101260401, '贵定': 101260402, '瓮安': 101260403, + '长顺': 101260404, + '福泉': 101260405, '惠水': 101260406, '龙里': 101260407, '罗甸': 101260408, '平塘': 101260409, + '独山': 101260410, + '三都': 101260411, '荔波': 101260412, '凯里': 101260501, '岑巩': 101260502, '施秉': 101260503, + '镇远': 101260504, + '黄平': 101260505, '黄平旧洲': 101260506, '麻江': 101260507, '丹寨': 101260508, '三穗': 101260509, + '台江': 101260510, + '剑河': 101260511, '雷山': 101260512, '黎平': 101260513, '天柱': 101260514, '锦屏': 101260515, + '榕江': 101260516, + '从江': 101260517, '炉山': 101260518, '铜仁': 101260601, '江口': 101260602, '玉屏': 101260603, + '万山': 101260604, + '思南': 101260605, '塘头': 101260606, '印江': 101260607, '石阡': 101260608, '沿河': 101260609, + '德江': 101260610, + '松桃': 101260611, '毕节': 101260701, '赫章': 101260702, '金沙': 101260703, '威宁': 101260704, + '大方': 101260705, + '纳雍': 101260706, '织金': 101260707, '六盘水': 101260801, '六枝': 101260802, '水城': 101260803, + '盘县': 101260804, + '黔西': 101260901, '晴隆': 101260902, '兴仁': 101260903, '贞丰': 101260904, '望谟': 101260905, + '兴义': 101260906, + '安龙': 101260907, '册亨': 101260908, '普安': 101260909, '成都': 101270101, '龙泉驿': 101270102, + '新都': 101270103, + '温江': 101270104, '金堂': 101270105, '双流': 101270106, '郫县': 101270107, '大邑': 101270108, + '蒲江': 101270109, + '新津': 101270110, '都江堰': 101270111, '彭州': 101270112, '邛崃': 101270113, '崇州': 101270114, + '崇庆': 101270115, + '彭县': 101270116, '攀枝花': 101270201, '仁和': 101270202, '米易': 101270203, '盐边': 101270204, + '自贡': 101270301, + '富顺': 101270302, '荣县': 101270303, '绵阳': 101270401, '三台': 101270402, '盐亭': 101270403, + '安县': 101270404, + '梓潼': 101270405, '北川': 101270406, '平武': 101270407, '江油': 101270408, '南充': 101270501, + '南部': 101270502, + '营山': 101270503, '蓬安': 101270504, '仪陇': 101270505, '西充': 101270506, '阆中': 101270507, + '达州': 101270601, + '宣汉': 101270602, '开江': 101270603, '大竹': 101270604, '渠县': 101270605, '万源': 101270606, + '达川': 101270607, + '遂宁': 101270701, '蓬溪': 101270702, '射洪': 101270703, '广安': 101270801, '岳池': 101270802, + '武胜': 101270803, + '邻水': 101270804, '华蓥山': 101270805, '巴中': 101270901, '通江': 101270902, '南江': 101270903, + '平昌': 101270904, + '泸州': 101271001, '泸县': 101271003, '合江': 101271004, '叙永': 101271005, '古蔺': 101271006, + '纳溪': 101271007, + '宜宾': 101271101, '宜宾农试站': 101271102, '宜宾县': 101271103, '江安': 101271105, '长宁': 101271106, + '高县': 101271107, + '珙县': 101271108, '筠连': 101271109, '兴文': 101271110, '屏山': 101271111, '内江': 101271201, + '东兴': 101301403, + '威远': 101271203, '资中': 101271204, '隆昌': 101271205, '资阳': 101271301, '安岳': 101271302, + '乐至': 101271303, + '简阳': 101271304, '乐山': 101271401, '犍为': 101271402, '井研': 101271403, '夹江': 101271404, + '沐川': 101271405, + '峨边': 101271406, '马边': 101271407, '峨眉': 101271408, '峨眉山': 101271409, '眉山': 101271501, + '仁寿': 101271502, + '彭山': 101271503, '洪雅': 101271504, '丹棱': 101271505, '青神': 101271506, '凉山': 101271601, + '木里': 101271603, + '盐源': 101271604, '德昌': 101271605, '会理': 101271606, '会东': 101271607, '宁南': 101271608, + '普格': 101271609, + '西昌': 101271610, '金阳': 101271611, '昭觉': 101271612, '喜德': 101271613, '冕宁': 101271614, + '越西': 101271615, + '甘洛': 101271616, '雷波': 101271617, '美姑': 101271618, '布拖': 101271619, '雅安': 101271701, + '名山': 101271702, + '荣经': 101271703, '汉源': 101271704, '石棉': 101271705, '天全': 101271706, '芦山': 101271707, + '宝兴': 101271708, + '甘孜': 101271801, '康定': 101271802, '泸定': 101271803, '丹巴': 101271804, '九龙': 101320102, + '雅江': 101271806, + '道孚': 101271807, '炉霍': 101271808, '新龙': 101271809, '德格': 101271810, '白玉': 101271811, + '石渠': 101271812, + '色达': 101271813, '理塘': 101271814, '巴塘': 101271815, '乡城': 101271816, '稻城': 101271817, + '得荣': 101271818, + '阿坝': 101271901, '汶川': 101271902, '理县': 101271903, '茂县': 101271904, '松潘': 101271905, + '九寨沟': 101271906, + '金川': 101271907, '小金': 101271908, '黑水': 101271909, '马尔康': 101271910, '壤塘': 101271911, + '若尔盖': 101271912, + '红原': 101271913, '南坪': 101271914, '德阳': 101272001, '中江': 101272002, '广汉': 101272003, + '什邡': 101272004, + '绵竹': 101272005, '罗江': 101272006, '广元': 101272101, '旺苍': 101272102, '青川': 101272103, + '剑阁': 101272104, + '苍溪': 101272105, '广州': 101280101, '番禺': 101280102, '从化': 101280103, '增城': 101280104, + '花都': 101280105, + '天河': 101280106, '韶关': 101280201, '乳源': 101280202, '始兴': 101280203, '翁源': 101280204, + '乐昌': 101280205, + '仁化': 101280206, '南雄': 101280207, '新丰': 101280208, '曲江': 101280209, '惠州': 101280301, + '博罗': 101280302, + '惠阳': 101280303, '惠东': 101280304, '龙门': 101280305, '梅州': 101280401, '兴宁': 101280402, + '蕉岭': 101280403, + '大埔': 101280404, '丰顺': 101280406, '平远': 101280407, '五华': 101280408, '梅县': 101280409, + '汕头': 101280501, + '潮阳': 101280502, '澄海': 101280503, '南澳': 101280504, '云澳': 101280505, '南澎岛': 101280506, + '深圳': 101280601, + '珠海': 101280701, '斗门': 101280702, '黄茅洲': 101280703, '佛山': 101280800, '顺德': 101280801, + '三水': 101280802, + '南海': 101280803, '肇庆': 101280901, '广宁': 101280902, '四会': 101280903, '德庆': 101280905, + '怀集': 101280906, + '封开': 101280907, '高要': 101280908, '湛江': 101281001, '吴川': 101281002, '雷州': 101281003, + '徐闻': 101281004, + '廉江': 101281005, '硇洲': 101281006, '遂溪': 101281007, '江门': 101281101, '开平': 101281103, + '新会': 101281104, + '恩平': 101281105, '台山': 101281106, '上川岛': 101281107, '鹤山': 101281108, '河源': 101281201, + '紫金': 101281202, + '连平': 101281203, '和平': 101281204, '龙川': 101281205, '清远': 101281301, '连南': 101281302, + '连州': 101281303, + '连山': 101281304, '阳山': 101281305, '佛冈': 101281306, '英德': 101281307, '云浮': 101281401, + '罗定': 101281402, + '新兴': 101281403, '郁南': 101281404, '潮州': 101281501, '饶平': 101281502, '东莞': 101281601, + '中山': 101281701, + '阳江': 101281801, '阳春': 101281802, '揭阳': 101281901, '揭西': 101281902, '普宁': 101281903, + '惠来': 101281904, + '茂名': 101282001, '高州': 101282002, '化州': 101282003, '电白': 101282004, '信宜': 101282005, + '汕尾': 101282101, + '海丰': 101282102, '陆丰': 101282103, '遮浪': 101282104, '东沙岛': 101282105, '昆明': 101290101, + '昆明农试站': 101290102, + '东川': 101290103, '寻甸': 101290104, '晋宁': 101290105, '宜良': 101290106, '石林': 101290107, + '呈贡': 101290108, + '富民': 101290109, '嵩明': 101290110, '禄劝': 101290111, '安宁': 101290112, '太华山': 101290113, + '大理': 101290201, + '云龙': 101290202, '漾鼻': 101290203, '永平': 101290204, '宾川': 101290205, '弥渡': 101290206, + '祥云': 101290207, + '魏山': 101290208, '剑川': 101290209, '洱源': 101290210, '鹤庆': 101290211, '南涧': 101290212, + '红河': 101290301, + '石屏': 101290302, '建水': 101290303, '弥勒': 101290304, '元阳': 101290305, '绿春': 101290306, + '开远': 101290307, + '个旧': 101290308, '蒙自': 101290309, '屏边': 101290310, '泸西': 101290311, '金平': 101290312, + '曲靖': 101290401, + '沾益': 101290402, '陆良': 101290403, '富源': 101290404, '马龙': 101290405, '师宗': 101290406, + '罗平': 101290407, + '会泽': 101290408, '宣威': 101290409, '保山': 101290501, '富宁': 101290502, '龙陵': 101290503, + '施甸': 101290504, + '昌宁': 101290505, '腾冲': 101290506, '文山': 101290601, '西畴': 101290602, '马关': 101290603, + '麻栗坡': 101290604, + '砚山': 101290605, '邱北': 101290606, '广南': 101290607, '玉溪': 101290701, '澄江': 101290702, + '江川': 101290703, + '通海': 101290704, '华宁': 101290705, '新平': 101290706, '易门': 101290707, '峨山': 101290708, + '元江': 101290709, + '楚雄': 101290801, '大姚': 101290802, '元谋': 101290803, '姚安': 101290804, '牟定': 101290805, + '南华': 101290806, + '武定': 101290807, '禄丰': 101290808, '双柏': 101290809, '永仁': 101290810, '普洱': 101290905, + '景谷': 101290902, + '景东': 101290903, '澜沧': 101290904, '墨江': 101290906, '江城': 101290907, '孟连': 101290908, + '西盟': 101290909, + '镇源': 101290910, '镇沅': 101290911, '宁洱': 101290912, '昭通': 101291001, '鲁甸': 101291002, + '彝良': 101291003, + '镇雄': 101291004, '威信': 101291005, '巧家': 101291006, '绥江': 101291007, '永善': 101291008, + '盐津': 101291009, + '大关': 101291010, '临沧': 101291101, '沧源': 101291102, '耿马': 101291103, '双江': 101291104, + '凤庆': 101291105, + '永德': 101291106, '云县': 101291107, '镇康': 101291108, '怒江': 101291201, '福贡': 101291203, + '兰坪': 101291204, + '泸水': 101291205, '六库': 101291206, '贡山': 101291207, '香格里拉': 101291301, '德钦': 101291302, + '维西': 101291303, + '中甸': 101291304, '丽江': 101291401, '永胜': 101291402, '华坪': 101291403, '宁蒗': 101291404, + '德宏': 101291501, + '潞江坝': 101291502, '陇川': 101291503, '盈江': 101291504, '畹町镇': 101291505, '瑞丽': 101291506, + '梁河': 101291507, + '潞西': 101291508, '景洪': 101291601, '大勐龙': 101291602, '勐海': 101291603, '景洪电站': 101291604, + '勐腊': 101291605, + '南宁': 101300101, '南宁城区': 101300102, '邕宁': 101300103, '横县': 101300104, '隆安': 101300105, + '马山': 101300106, + '上林': 101300107, '武鸣': 101300108, '宾阳': 101300109, '硕龙': 101300110, '崇左': 101300201, + '天等': 101300202, + '龙州': 101300203, '凭祥': 101300204, '大新': 101300205, '扶绥': 101300206, '宁明': 101300207, + '海渊': 101300208, + '柳州': 101300301, '柳城': 101300302, '沙塘': 101300303, '鹿寨': 101300304, '柳江': 101300305, + '融安': 101300306, + '融水': 101300307, '三江': 101300308, '来宾': 101300401, '忻城': 101300402, '金秀': 101300403, + '象州': 101300404, + '武宣': 101300405, '桂林': 101300501, '桂林农试站': 101300502, '龙胜': 101300503, '永福': 101300504, + '临桂': 101300505, + '兴安': 101300506, '灵川': 101300507, '全州': 101300508, '灌阳': 101300509, '阳朔': 101300510, + '恭城': 101300511, + '平乐': 101300512, '荔浦': 101300513, '资源': 101300514, '梧州': 101300601, '藤县': 101300602, + '太平': 101300603, + '苍梧': 101300604, '蒙山': 101300605, '岑溪': 101300606, '贺州': 101300701, '昭平': 101300702, + '富川': 101300703, + '钟山': 101300704, '信都': 101300705, '贵港': 101300801, '桂平': 101300802, '平南': 101300803, + '玉林': 101300901, + '博白': 101300902, '北流': 101300903, '容县': 101300904, '陆川': 101300905, '百色': 101301001, + '那坡': 101301002, + '田阳': 101301003, '德保': 101301004, '靖西': 101301005, '田东': 101301006, '平果': 101301007, + '隆林': 101301008, + '西林': 101301009, '乐业': 101301010, '凌云': 101301011, '田林': 101301012, '钦州': 101301101, + '浦北': 101301102, + '灵山': 101301103, '河池': 101301201, '天峨': 101301202, '东兰': 101301203, '巴马': 101301204, + '环江': 101301205, + '罗城': 101301206, '宜州': 101301207, '凤山': 101301208, '南丹': 101301209, '都安': 101301210, + '北海': 101301301, + '合浦': 101301302, '涠洲岛': 101301303, '防城港': 101301401, '上思': 101301402, '板栏': 101301404, + '防城': 101301405, + '海口': 101310101, '琼山': 101310102, '三亚': 101310201, '东方': 101310202, '临高': 101310203, + '澄迈': 101310204, + '儋州': 101310205, '昌江': 101310206, '白沙': 101310207, '琼中': 101310208, '定安': 101310209, + '屯昌': 101310210, + '琼海': 101310211, '文昌': 101310212, '清兰': 101310213, '保亭': 101310214, '万宁': 101310215, + '陵水': 101310216, + '西沙': 101310217, '珊瑚岛': 101310218, '永署礁': 101310219, '南沙岛': 101310220, '乐东': 101310221, + '五指山': 101310222, + '通什': 101310223, '香港': 101320101, '新界': 101320103, '中环': 101320104, '铜锣湾': 101320105, + '澳门': 101330101, + '台北县': 101340101, '台北市': 101340102, '高雄': 101340201, '大武': 101340203, '恒春': 101340204, + '兰屿': 101340205, + '台南': 101340301, '台中': 101340401, '桃园': 101340501, '新竹县': 101340601, '新竹市': 101340602, + '公馆': 101340603, + '宜兰': 101340701, '马公': 101340801, '东吉屿': 101340802, '嘉义': 101340901, '阿里山': 101340902, + '新港': 101340904} diff --git a/lib/tools/weather_service.py b/lib/tools/weather_service.py new file mode 100644 index 0000000..ba4e804 --- /dev/null +++ b/lib/tools/weather_service.py @@ -0,0 +1,24 @@ +import requests +import re + +#天气爬虫 +def weather_spider(url,headers): + response = requests.get(url,headers) + content = response.content.decode('utf-8') + pat_weather = re.compile('') + pat_up_time = re.compile('') + weather = pat_weather.findall(content) + up_time = pat_up_time.findall(content) + print(weather[0]) + print('更新时间:',up_time[0]) + ask_ok = input('是否深入查看(Y/N):') + if ask_ok == 'Y' or ask_ok == 'y': + pat_more_weather = re.compile('
(.*?)
.*?\n- 🍬python for office + 👉 项目官网:https://www.python-office.com/ 👈
👉 本开源项目的交流群 👈 @@ -80,10 +80,10 @@ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-office -U ## 📝文档 -[📘中文文档](http://www.python4office.cn/python-office/profile/) +[📘中文文档](https://www.python-office.com/) -[🎬视频介绍](https://space.bilibili.com/259649365/channel/collectiondetail?sid=378950) +[🎬视频介绍](https://www.bilibili.com/video/BV1pT4y1k7FH) ------------------------------------------------------------------------------- -- Gitee From 0661dbfb1ece0c5432902f43bcdde75c0ca0db6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E6=99=9A=E6=9E=AB?= <1529577833@qq.com> Date: Wed, 22 Jun 2022 01:55:22 +0000 Subject: [PATCH 05/25] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=AE=98=E7=BD=91?= =?UTF-8?q?=F0=9F=91=89https://www.python-office.com/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1229d25..76799aa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
-- Gitee From dd2cb5ff9bff6fc3f7c46b343a42dbf1dffc9d99 Mon Sep 17 00:00:00 2001 From: archer0258 <627776371@qq.com> Date: Mon, 27 Jun 2022 01:05:52 +0000 Subject: [PATCH 06/25] add contributors/archer/fake2excel. --- contributors/archer/fake2excel | 92 ++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 contributors/archer/fake2excel diff --git a/contributors/archer/fake2excel b/contributors/archer/fake2excel new file mode 100644 index 0000000..7c4bd33 --- /dev/null +++ b/contributors/archer/fake2excel @@ -0,0 +1,92 @@ +#!/usr/bin/env python +# -*- coding:utf-8 -*- + +############################################# +# File Name: excel.py +# Mail: 1957875073@qq.com +# Created Time: 2022-4-25 10:17:34 +# Description: 有关 excel 的自动化操作 +############################################# + +from faker import Faker +import pandas as pd +from alive_progress import alive_bar + +import numpy as np + + +def reduce_pandas_mem_usage(df): + # start_mem = df.memory_usage().sum() / 1024 ** 2 + # print('Memory usage of dataframe is {:.2f} MB'.format(start_mem)) + + for col in df.columns: # Iterate all the columns + col_type = df[col].dtype # Get the dtype of the column + + if col_type != object: # If the column is not object + c_min = df[col].min() # Get the minimum value + c_max = df[col].max() # Get the maximum value + if str(col_type)[:3] == 'int': # If the column is integer + if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max: + # If the column is within 8-bit integer range + df[col] = df[col].astype(np.int8) # Convert to int8 + elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max: + df[col] = df[col].astype(np.int16) + elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max: + df[col] = df[col].astype(np.int32) + elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max: + df[col] = df[col].astype(np.int64) + else: + if 'date' in col: + pass + else: + df[col] = df[col].astype('category') + + # end_mem = df.memory_usage().sum() / 1024 ** 2 + # print('Memory usage after optimization is: {:.2f} MB'.format(end_mem)) + # print('Decreased by {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem)) + + return df + + +def fake2excel(columns=None, rows=1, language='zh_CN', path='./fake2excel.xlsx'): + """ + @Author & Date : CoderWanFeng 2022/5/13 0:12 + @Desc : columns:list,每列的数据名称,默认是名称 + rows:多少行,默认是1 + language:什么语言,可以填english,默认是中文 + path:输出excel的位置,有默认值 + """ + # 可以选择英语 + if columns is None: + columns = ['name'] + if language.lower() == 'english': + language = 'en_US' + # 开始造数 + fake = Faker(language) + excel_dict = {} + with alive_bar(len(columns) * rows) as bar: + for column in columns: # 循环每一列 + excel_dict[column] = [] # 初始化每一列 + while len(excel_dict[column]) < rows: # 循环每一列的每一行 + excel_dict[column].append(eval(f'fake.{column}()')) # 往每一列的每一行里面添加数据 + bar() # 动态显示进度 + # 用pandas,将模拟数据,写进excel里面 + writer = pd.ExcelWriter(path) # 创建一个ExcelWriter对象 + data = pd.DataFrame(excel_dict) # 将字典转换成DataFrame + data = reduce_pandas_mem_usage(data) # 压缩数据 + data.to_excel(writer, index=False) # 将数据写入Excel + writer.save() + + +def fake2excel_dateframe(columns, names, rows=1, language='zh_CN'): + # language = 'en_US' # 可以选择英语 + fake = Faker(language) + excel_dict = {} + # 改动部分 + for column, name in zip(columns, names): + excel_dict[name] = [] + while len(excel_dict[name]) < rows: # 循环每一列的每一行 + excel_dict[name].append(eval(f'fake.{column}')) # 往每一列的每一行里面添加数据 + data = pd.DataFrame(excel_dict) # 将字典转换成DataFrame + return data + -- Gitee From 30861f47adaeec1e92f4a64f3a3e9677c3972e02 Mon Sep 17 00:00:00 2001 From: CoderWanFeng <875143930@qq.com> Date: Thu, 14 Jul 2022 23:00:05 +0800 Subject: [PATCH 07/25] =?UTF-8?q?update=20func=20from=20github=F0=9F=91=89?= =?UTF-8?q?https://mp.weixin.qq.com/s/QhaUoB7Q4CJHR29uD6JSHQ?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 137 +--------- README-EN.md | 2 +- README.md | 8 +- __init__.py | 1 - core/ExcelType.py | 35 --- core/__init__.py | 1 - docs/allpackages.txt | 61 +++++ docs/html/404.html | 252 ++++++++++++++++++ ...345\214\226\345\212\236\345\205\254.xmind" | Bin 0 -> 79531 bytes docs/tree.txt | 22 ++ lib/__init__.py | 5 - lib/image/__init__.py | 1 - lib/pdf/__init__.py | 1 - lib/ppt/__init__.py | 1 - lib/tools/__init__.py | 2 - office/__init__.py | 20 +- {cli => office/api}/__init__.py | 0 office/{ => api}/email.py | 0 office/{ => api}/excel.py | 26 +- office/{ => api}/file.py | 12 +- office/{ => api}/image.py | 17 +- office/{ => api}/ocr.py | 0 office/{ => api}/pdf.py | 19 +- office/{ => api}/ppt.py | 8 +- office/{ => api}/tools.py | 15 +- office/{ => api}/video.py | 2 +- office/{ => api}/web.py | 0 office/{ => api}/word.py | 5 +- {lib/utils => office/cli}/__init__.py | 0 {cli => office/cli}/main.py | 0 office/core/ExcelType.py | 110 ++++++++ {core => office/core}/FileType.py | 58 ++-- {core => office/core}/ImageType.py | 202 +++++++++----- {core => office/core}/PDFType.py | 182 +++++++------ {core => office/core}/PPTType.py | 60 ++--- {core => office/core}/SearchByContentType.py | 44 +-- {core => office/core}/ToolsType.py | 150 ++++++----- {core => office/core}/VideoType.py | 40 +-- {core => office/core}/WordType.py | 80 +++--- office/core/__init__.py | 0 office/lib/__init__.py | 0 office/lib/image/__init__.py | 0 .../lib}/image/add_watermark_service.py | 0 .../lib}/image/eliminate_background.py | 0 office/lib/pdf/__init__.py | 0 .../lib}/pdf/add_watermark_service.py | 0 office/lib/ppt/__init__.py | 0 {lib => office/lib}/ppt/ppt2pdf_service.py | 0 office/lib/tools/__init__.py | 0 office/lib/tools/lottery8ticket.py | 71 +++++ .../lib}/tools/weather_city_code.py | 0 {lib => office/lib}/tools/weather_service.py | 0 office/lib/utils/__init__.py | 0 office/lib/utils/except_utils.py | 31 +++ {lib => office/lib}/utils/pandas_mem.py | 0 office/lib/utils/time_utils.py | 12 + pyproject.toml | 14 +- setup.cfg | 54 ++-- tests/__init__.py | 0 "tests/excel/1\346\234\210.xls" | Bin 0 -> 1305088 bytes "tests/excel/2\346\234\210.xls" | Bin 0 -> 822784 bytes "tests/excel/3\346\234\210.xls" | Bin 0 -> 1858048 bytes "tests/excel/4\346\234\210.xls" | Bin 0 -> 2127360 bytes tests/excel/output_file1.xlsx | Bin 0 -> 1239961 bytes tests/fake2excel.xlsx | Bin 0 -> 5415 bytes tests/test_dev.py | 28 ++ tests/test_excel.py | 26 +- tests/test_pdf.py | 9 + tests/test_tools.py | 16 +- 69 files changed, 1245 insertions(+), 595 deletions(-) delete mode 100644 __init__.py delete mode 100644 core/ExcelType.py delete mode 100644 core/__init__.py create mode 100644 docs/allpackages.txt create mode 100644 docs/html/404.html create mode 100644 "docs/python-office \350\207\252\345\212\250\345\214\226\345\212\236\345\205\254.xmind" create mode 100644 docs/tree.txt delete mode 100644 lib/__init__.py delete mode 100644 lib/image/__init__.py delete mode 100644 lib/pdf/__init__.py delete mode 100644 lib/ppt/__init__.py delete mode 100644 lib/tools/__init__.py rename {cli => office/api}/__init__.py (100%) rename office/{ => api}/email.py (100%) rename office/{ => api}/excel.py (30%) rename office/{ => api}/file.py (73%) rename office/{ => api}/image.py (52%) rename office/{ => api}/ocr.py (100%) rename office/{ => api}/pdf.py (58%) rename office/{ => api}/ppt.py (66%) rename office/{ => api}/tools.py (55%) rename office/{ => api}/video.py (74%) rename office/{ => api}/web.py (100%) rename office/{ => api}/word.py (82%) rename {lib/utils => office/cli}/__init__.py (100%) rename {cli => office/cli}/main.py (100%) create mode 100644 office/core/ExcelType.py rename {core => office/core}/FileType.py (97%) rename {core => office/core}/ImageType.py (41%) rename {core => office/core}/PDFType.py (69%) rename {core => office/core}/PPTType.py (94%) rename {core => office/core}/SearchByContentType.py (98%) rename {core => office/core}/ToolsType.py (70%) rename {core => office/core}/VideoType.py (97%) rename {core => office/core}/WordType.py (93%) create mode 100644 office/core/__init__.py create mode 100644 office/lib/__init__.py create mode 100644 office/lib/image/__init__.py rename {lib => office/lib}/image/add_watermark_service.py (100%) rename {lib => office/lib}/image/eliminate_background.py (100%) create mode 100644 office/lib/pdf/__init__.py rename {lib => office/lib}/pdf/add_watermark_service.py (100%) create mode 100644 office/lib/ppt/__init__.py rename {lib => office/lib}/ppt/ppt2pdf_service.py (100%) create mode 100644 office/lib/tools/__init__.py create mode 100644 office/lib/tools/lottery8ticket.py rename {lib => office/lib}/tools/weather_city_code.py (100%) rename {lib => office/lib}/tools/weather_service.py (100%) create mode 100644 office/lib/utils/__init__.py create mode 100644 office/lib/utils/except_utils.py rename {lib => office/lib}/utils/pandas_mem.py (100%) create mode 100644 office/lib/utils/time_utils.py create mode 100644 tests/__init__.py create mode 100644 "tests/excel/1\346\234\210.xls" create mode 100644 "tests/excel/2\346\234\210.xls" create mode 100644 "tests/excel/3\346\234\210.xls" create mode 100644 "tests/excel/4\346\234\210.xls" create mode 100644 tests/excel/output_file1.xlsx create mode 100644 tests/fake2excel.xlsx create mode 100644 tests/test_dev.py create mode 100644 tests/test_pdf.py diff --git a/.gitignore b/.gitignore index d6526e1..5870c89 100644 --- a/.gitignore +++ b/.gitignore @@ -6,141 +6,8 @@ node_modules .cache .temp venv/ - -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python build/ -develop-eggs/ dist/ -downloads/ -eggs/ -.eggs/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx docs -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs docs -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ +*.egg-info -# Cython debug symbols -cython_debug/ +__pycache__ diff --git a/README-EN.md b/README-EN.md index 749cf0a..b3993d2 100644 --- a/README-EN.md +++ b/README-EN.md @@ -187,5 +187,5 @@ Buy us a cup of coffee if you appreciate python-office. Thank you sincerely.
- 👉 本开源项目的交流群 👈 + 👉 本开源项目的交流群 👈
@@ -165,7 +165,7 @@ python-office的源码分为两个分支,功能如下: ### 💳捐赠 -如果你觉得python-office错,可以捐赠请维护者喝杯咖啡~,在此表示感谢^_^。 +如果你觉得python-office不错,可以捐赠请维护者喝杯咖啡~,在此表示感谢^_^。 [捐赠给项目](https://gitee.com/CoderWanFeng/python-office) 👈该项捐赠仅用于支持本项目发展使用 @@ -182,5 +182,5 @@ python-office的源码分为两个分支,功能如下:ZiUf(Tb@ob=iQ9-q dGIT6}t#bq@q(Wig-yR$t4
zUGYg=b~}HF&wBA>C-)nZCbGN$@ pHY5IMxRxE+~bKbV4U(&7$^
z<0cs4=N;UcoDUnaF2v?|0(F%qo8zJ0T9RZr1E>m)7z9bfo(c!mSVzQB2I1g^FJ-1Z
zpJskh|4O=*sz6CGAwjh7!KpWYyGZ9ZyAXGuc50(-B_hOKdRk}i>nL~HSD&kOlpYC!
zvR^@BQ $+-0r
zuIlN__oK)8w0ly6o47$G<(MkG!(hUKhWE!+vuMKu!dI~ #cyTmIPDd-m#`uJKX|DujEyko#hI7{cQ4RchZ}%5+I*#j
z2ZUL@eu+#>=CDkZQ?FVDhi4X=Lvvnr9W)*zW9%dmo$qMmmcQe0!+DAOL?aWQZyl*M
zi;GrP%R*mmVFJX+wGfijr8q%vY#f!!)!472Ma<=jRE`*S6TFY3DFJ@Ks$^;Bykh-U
zy+DS0%d7Sst`g;MRWjEdt7cZLQNHkt$ow~WKGCP}+dTQ7_%GY_R0KIY=ksVjKDMCa
zG7Sp>sZ`h7-IUgb#S;gn_vUsitfqWHOH6|Gkr@A!>eH@$v4>W9{2WV(>46(@yRT~R
zBJMf~LbfXKIAS>6^5n+%$5?rni?PC_?YoS*>P+FqOoDBXcV%KO@19AXIwfTFzD}Sa
zp@p~IW=VEL4(4&mdMW)=*m`lv3FQ6MZPg5jpIlT|%|$H@ekG0pd6-6GWaTCg<;|t5
zq$*jmDtzH5jF 9}yH4WWe
z>gW_3`2x|~OW&cgQ(N7^3nw|*n4*CXex`we^UljiS^h5tT6Uqy-%MN7puYIzeO|xEvC>X
z0ReKG3(4W(nts@dgr%DyMSgHd2`AVhVYeYvT^BCnX0)f0y4_I-AB~cj2#|B2FWxy|
z)V~^n;STz>OZeuQO{TuapAcpV90IpEFBr-o+7;D>GeJm?>}g$a9pF~(x1p}?=1$o&
zjlZ%+*(Qn|Br?mRo_e{n!W|_L{+vH*Hbd;RP_j(%N_DhG(W8RQ245JYf{7S`dK^(2
ziq?|b{b{qA@=v$2&qM=Tz;c~`9l-TV)r-NNgrbRp3Ix6evVS5}GVv+jq`{Deu9ddT6mkY!e2u6+jciW%T{AzWN7I4ce-t05I0EdIl
zG_(1rYIadqg>Oi$){}Kg3a9W`{?G~jF*UC8$`Qw?tQ|4{9ItKLr{`pvq(*;c>Kx$s
zbW#$->kw_tr{<>+(xV{1m@vLJ()&rdYD;6XFszxFeMQ)iScu|~#JB(O0h
zaKed&x-^fWPD`Memn+6c5c1=J%%ob^h=G#@vn-WzOI-_VohIiKo9oOgir&{;OP}^-
zAR@WEpFH?ZJD}^Bn9`5LHj^LTpG`;*0mx;2mDV{3s}sk{Z$id|W6w4B)kn(^qu$&>
z6}9jBk8WFD=WjQT8-_lf;`GEd`zbKVk}cM%t)~SnmXctLqvTR>VQZAPhaRG=*2_e8
zS^j~HXx