%global _empty_manifest_terminate_build 0 Name: python-SomeTools Version: 0.1.39 Release: 1 Summary: Some python tools License: MIT License URL: https://pypi.org/project/SomeTools/ Source0: https://mirrors.aliyun.com/pypi/web/packages/13/6a/df248d0dfa5c6f3ef80f59543b2cc49dcf7401ee9aa01cad5c1a39bf2ec9/SomeTools-0.1.39.tar.gz BuildArch: noarch Requires: python3-DateTime Requires: python3-loguru Requires: python3-opencc-python-reimplemented Requires: python3-redis Requires: python3-aioredis Requires: python3-pillow Requires: python3-chardet Requires: python3-psutil Requires: python3-aiomysql Requires: python3-pymysql %description 一些方便日常使用的工具(Some handy tools for everyday use) * 将输入的任何类型的日期字符串类型转化为datetime.datetime类型的日期对象 (* Convert any type of input date string type to a date object of type datetime.datetime) * 移除一个字符串中的回车换行空格制表符等内容 (* Remove carriage returns, newlines, spaces, tabs, etc. from a string) * 将中文字符转为其拼音的首字母 (* Convert Chinese characters to the first letter of their Pinyin) * 更加方便的日志记录工具 (* More convenient logging tools) * 繁体简体中文汉字转换工具 (* Traditional and Simplified Chinese character conversion tool) * redis创建连接同步、异步工具 (* redis creates connection synchronous and asynchronous tools) * 异步布隆过滤工具 (* Asynchronous Bloom Filter Tool) * 正则表达式提取字符串中的中文内容工具 (* Regular expression extraction tool for Chinese content in strings) * 异步 mysql orm (* async mysql orm) * 检测 bytes 编码 (* Detect bytes encoding) * 图片处理 (* Image processing) * 查看操作系统信息 (* View operating system information) * 获取本机ip地址 (* Get the local ip address) ## Installation (安装) ``` bash $ pip install SomeTools -i https://pypi.python.org/simple ``` ## Getting Started (开始使用) ### 1.同步工具使用 (Sync tool usage) ``` pycon from sometools import Common_tools class Demo(Common_tools): def __init__(self, *args, **kwargs): # kwargs['log_file_rec'] = True # kwargs['log_file_name'] = 'ConsumptionService' super(Demo, self).__init__(*args, **kwargs) if __name__ == '__main__': demo_ins = Demo() # 获取本机ip地址(get the local ip address) local_ip_str = Demo.get_host_ip() demo_ins.logger().info(f"local ip address: {local_ip_str}") # 将输入的任何类型的日期字符串类型转化为datetime.datetime类型的日期对象(北京时间UTC+8)(Converts any type of date string type entered to a date object of type datetime.datetime)(beijing time UTC+8) demo_ins.logger(uuid1='uuid1', uuid2='uuid2').info( f"{demo_ins.str_to_obj('2012-12-12 12:12:12')}{type(demo_ins.str_to_obj('2012-12-12 12:12:12'))}") demo_ins.logger().info( f"{demo_ins.str_to_obj('11-May-2021 07:03 EDT')}{type(demo_ins.str_to_obj('11-May-2021 07:03 EDT'))}") # 移除一个字符串中的回车换行空格制表符等内容(Remove carriage return, newline space tabs, etc., from a string) temp_str = 'abc abc \n abc \r' demo_ins.logger().info(f"before clean string{temp_str}") temp_str = Demo.clean_string('abc abc \n abc \r') demo_ins.logger().info(f"after clean string{temp_str}") # 将中文字符转为其拼音的首字母(Convert Chinese characters to the first letter of their pinyin) demo_ins.logger().info(f"{Demo.get_pinyin('中国外汇交易中心')}") # 更加方便的日志记录工具(More convenient logging tool) demo_ins.logger().info(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().debug(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().warning(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().error(f"{Demo.get_pinyin('中国外汇交易中心')}") # 中文繁体简体互转(Convert between Traditional Chinese and Simplified Chinese) demo_ins.logger().info(f"繁体转简体 眾議長與李克強會談->{Demo.traditional_chinese_to_simplified('眾議長與李克強會談')}") demo_ins.logger().info(f"简体转繁体 众议长与李克强会谈->{Demo.simplified_chinese_to_traditional_chinese('众议长与李克强会谈')}") # url编码解码(url encoding and decoding) demo_ins.logger().info(f"url编码->{Demo.url_encode('https://www.baidu.com/s?wd=中国')}") demo_ins.logger().info(f"url解码->{Demo.url_decode('https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD')}") # 正则提取中文(Regularly extract Chinese) temp_str = demo_ins.extract_one_chinese("""downloadPdf1('http://www.sse.com.cn/disclosure/bond/announcement/company/c/2021-03-22/4135530025747110334559080.pdf','厦门建发股份有限公司2021年面向专业投资者公开发行可续期公司债券(第一期)发行公告','2021-03-22','1015','pdf');""") demo_ins.logger().info(f"正则提取单个中文 {temp_str}") temp_str = demo_ins.extract_multi_chinese("""downloadPdf1('http://www.sse.com.cn/disclosure/bond/announcement/company/c/2021-03-22/4135530025747110334559080.pdf','厦门建发股份有限公司2021年面向专业投资者公开发行可续期公司债券(第一期)发行公告','2021-03-22','1015','pdf');""") demo_ins.logger().info(f"正则提取多个中文 {temp_str}") # 检测和转换编码方式(Detect and convert encoding methods) _temp_content = b'\n\n\n\n \n \n \n \n \n \n \n \n \n \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x90\x86\xe5\xbf\xb5 \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1-\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\n \n \n \n \n \n \n \n\t\n\t\n\n\n
\n\t
\n \t\n\t
\n
\n \n
\n\t
\n\t\t
\n\t\t
\n\t
\n
\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91 > > \xe6\xad\xa3\xe6\x96\x87
2021 09/08 17:35:14
\xe6\x9d\xa5\xe6\xba\x90\xef\xbc\x9a\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\n \t

\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x90\x86\xe5\xbf\xb5 \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1

\xe5\xad\x97\xe4\xbd\x93\xef\xbc\x9a\n \xe5\xb0\x8f \xe4\xb8\xad \xe5\xa4\xa7
\n
\n \n
\n
\n \n
\n
\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xe5\x8c\x97\xe4\xba\xac9\xe6\x9c\x888\xe6\x97\xa5\xe7\x94\xb5\xef\xbc\x88\xe7\x8e\x8b\xe9\x9b\xa8\xe9\xa6\xa8\xef\xbc\x89\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xe6\x97\xa5\xe5\x89\x8d\xe6\x8e\xa5\xe5\x8f\x97\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xe8\xae\xb0\xe8\x80\x85\xe4\xb8\x93\xe8\xae\xbf\xe6\x97\xb6\xe8\xa1\xa8\xe7\xa4\xba\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xe9\x87\x8d\xe8\xa7\x86\xe6\x95\xb0\xe5\xad\x97\xe5\x8c\x96\xe5\x92\x8c\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8c\x96\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe6\x9c\xaa\xe6\x9d\xa5\xe5\xb0\x86\xe5\x85\x85\xe5\x88\x86\xe5\x8f\x91\xe6\x8c\xa5\xe6\x94\xaf\xe4\xbb\x98\xe4\xba\xa7\xe5\x93\x81\xe5\xb9\xb3\xe5\x8f\xb0\xe5\x92\x8c\xe6\x9e\xa2\xe7\xba\xbd\xe4\xbd\x9c\xe7\x94\xa8\xef\xbc\x8c\xe6\x8c\x81\xe7\xbb\xad\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe7\xad\x89\xe4\xba\xa7\xe4\xb8\x9a\xe5\x90\x84\xe6\x96\xb9\xe9\x99\x86\xe7\xbb\xad\xe6\x8e\xa8\xe5\x87\xba\xe5\x90\x84\xe9\x93\xb6\xe8\xa1\x8c\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe7\xa0\x94\xe5\x8f\x91\xe6\x9b\xb4\xe5\xa4\x9a\xe6\x99\xae\xe6\x83\xa0\xe4\xbe\xbf\xe6\xb0\x91\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x96\xb0\xe4\xba\xa7\xe5\x93\x81\xe3\x80\x81\xe6\x96\xb0\xe4\xb8\x9a\xe6\x80\x81\xe3\x80\x81\xe6\x96\xb0\xe6\xa8\xa1\xe5\xbc\x8f\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c3060\xe2\x80\x9d\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9b\xae\xe6\xa0\x87\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x8d\xae\xe6\x82\x89\xef\xbc\x8c\xe8\xbf\x91\xe6\x97\xa5\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe8\x81\x94\xe5\x90\x88\xe4\xb8\x8a\xe6\xb5\xb7\xe7\x8e\xaf\xe5\xa2\x83\xe8\x83\xbd\xe6\xba\x90\xe4\xba\xa4\xe6\x98\x93\xe6\x89\x80\xe3\x80\x81\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe5\x85\xb1\xe5\x90\x8c\xe5\x8f\x91\xe5\xb8\x83\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xe3\x80\x82\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe5\x8c\x85\xe5\x90\xab\xe4\xbc\x81\xe4\xb8\x9a\xe7\x89\x88\xe5\x8f\x8a\xe4\xb8\xaa\xe4\xba\xba\xe7\x89\x88\xe4\xb8\xa4\xe5\xa5\x97\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe4\xbb\xa5\xe9\x93\xb6\xe8\x81\x94\xe4\xba\xa4\xe6\x98\x93\xe7\xb3\xbb\xe7\xbb\x9f\xe4\xb8\xad\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa4\xe6\x98\x93\xe8\xa1\x8c\xe4\xb8\xba\xe6\x95\xb0\xe6\x8d\xae\xe4\xb8\xba\xe8\xae\xa1\xe7\xae\x97\xe5\x9f\xba\xe7\xa1\x80\xef\xbc\x8c\xe6\x9e\x84\xe5\xbb\xba\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xe5\x8a\xa9\xe5\x8a\x9b\xe4\xbc\x81\xe4\xb8\x9a\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe8\xbd\xac\xe5\x9e\x8b\xef\xbc\x9b\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xe6\xa0\xb9\xe6\x8d\xae\xe7\x94\xa8\xe6\x88\xb7\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe8\xb4\xa1\xe7\x8c\xae\xe6\x9e\x84\xe5\xbb\xba\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8d\xa1\xe5\x8a\xa8\xe6\x80\x81\xe6\x9d\x83\xe7\x9b\x8a\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe5\x90\x91\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe7\xa4\xbe\xe4\xbc\x9a\xe5\xa4\xa7\xe4\xbc\x97\xe4\xbc\xa0\xe6\x92\xad\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe6\xa6\x82\xe5\xbf\xb5\xe3\x80\x82

\n

\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d \xe6\x8e\xa8\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xba\x8e\xe8\xbf\x91\xe6\x97\xa5\xe5\x8f\x91\xe5\xb8\x83\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe7\x9a\x84\xe5\x88\x9d\xe5\xbf\x83\xe6\x98\xaf\xe4\xbb\x80\xe4\xb9\x88\xef\xbc\x9f\xe6\x83\xb3\xe5\x80\x9f\xe6\xad\xa4\xe4\xbc\xa0\xe6\x92\xad\xe4\xbb\x80\xe4\xb9\x88\xe6\xa0\xb7\xe7\x9a\x84\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xe9\x87\x8d\xe8\xa7\x86\xe6\x95\xb0\xe5\xad\x97\xe5\x8c\x96\xe5\x92\x8c\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8c\x96\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe8\x87\xaa\xe5\xae\x9e\xe7\x8e\xb0\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe6\x8f\x90\xe5\x87\xba\xe4\xbb\xa5\xe6\x9d\xa5\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe5\x9c\xa8\xe6\x80\x9d\xe8\x80\x83\xe5\xa6\x82\xe4\xbd\x95\xe7\xbb\x93\xe5\x90\x88\xe8\x87\xaa\xe8\xba\xab\xe4\xb8\x9a\xe5\x8a\xa1\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe7\xa7\xaf\xe6\x9e\x81\xe5\x93\x8d\xe5\xba\x94\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe4\xbb\xa5\xe5\x8f\x8a\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe5\x8f\x91\xe5\xb1\x95\xe8\xa6\x81\xe6\xb1\x82\xe3\x80\x82\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xbd\x9c\xe4\xb8\xba\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe8\xbd\xac\xe6\x8e\xa5\xe6\xb8\x85\xe7\xae\x97\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe4\xb8\x8e\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe3\x80\x81\xe5\x95\x86\xe6\x88\xb7\xe3\x80\x81\xe7\x94\xa8\xe6\x88\xb7\xe6\x9c\x89\xe7\x9d\x80\xe5\xa4\xa9\xe7\x84\xb6\xe7\x9a\x84\xe7\xb4\xa7\xe5\xaf\x86\xe8\x81\x94\xe7\xb3\xbb\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xe5\x9c\xa8\xe5\xae\x9e\xe7\x8e\xb0\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe4\xbd\x9c\xe4\xb8\xba\xe9\x87\x8d\xe8\xa6\x81\xe6\x88\x98\xe7\x95\xa5\xe5\x86\xb3\xe7\xad\x96\xe8\xa2\xab\xe6\x8f\x90\xe5\x87\xba\xe6\x97\xb6\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\xb1\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x9a\x84\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x8e\xa8\xe5\x87\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x9b\xb8\xe5\x85\xb3\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe4\xbb\xa5\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe4\xb8\xba\xe7\xba\xbd\xe5\xb8\xa6\xef\xbc\x8c\xe5\x90\x91\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe6\x8e\xa8\xe5\xb9\xbf\xe6\x99\xae\xe5\x8f\x8a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\xbc\x95\xe5\xaf\xbc\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe8\x8a\x82\xe8\x83\xbd\xe5\x87\x8f\xe6\x8e\x92\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe9\x93\xb6\xe8\x81\x94\xe6\xad\xa4\xe6\xac\xa1\xe5\x8f\x91\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe7\x9a\x84\xe5\x8f\x97\xe4\xbc\x97\xe6\x9c\x89\xe5\x93\xaa\xe4\xba\x9b\xef\xbc\x9f\xe6\x94\xaf\xe6\x8c\x81\xe5\x93\xaa\xe4\xba\x9b\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xae\x9e\xe7\x8e\xb0\xef\xbc\x8c\xe9\x9c\x80\xe8\xa6\x81\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe7\x9a\x84\xe5\x85\xb1\xe5\x90\x8c\xe5\x8a\xaa\xe5\x8a\x9b\xe3\x80\x82\xe5\x9c\xa8\xe5\x89\x8d\xe6\x9c\x9f\xe7\x9a\x84\xe5\xb8\x82\xe5\x9c\xba\xe8\xb0\x83\xe7\xa0\x94\xe8\xbf\x87\xe7\xa8\x8b\xe4\xb8\xad\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe4\xba\x86\xe8\xa7\xa3\xe5\x88\xb0\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe9\x83\xbd\xe5\xad\x98\xe5\x9c\xa8\xe7\x9b\xb8\xe5\xba\x94\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe4\xba\xa7\xe5\x92\x8c\xe7\x94\x9f\xe6\xb4\xbb\xe9\x9c\x80\xe6\xb1\x82\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe5\x9c\xa8\xe4\xba\xa7\xe5\x93\x81\xe7\xa0\x94\xe5\x8f\x91\xe9\x98\xb6\xe6\xae\xb5\xe5\xb0\xb1\xe8\xae\xbe\xe8\xae\xa1\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\xaf\xb9\xe5\x85\xac\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x8e\xa8\xe5\x8a\xa8\xe6\x9b\xb4\xe5\xa4\x9a\xe7\x9a\x84\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe8\x83\xbd\xe5\xa4\x9f\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xa1\x8c\xe5\x8a\xa8\xe4\xb8\xad\xe3\x80\x82\xe5\x85\xb6\xe4\xb8\xad\xe5\xaf\xb9\xe5\x85\xac\xe4\xba\xa7\xe5\x93\x81\xe9\x9d\xa2\xe5\x90\x91\xe5\xa4\xa7\xe4\xb8\xad\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe3\x80\x81\xe5\xb0\x8f\xe5\xbe\xae\xe4\xbc\x81\xe4\xb8\x9a\xe3\x80\x81\xe4\xb9\xa1\xe9\x95\x87\xe4\xbc\x81\xe4\xb8\x9a\xe7\xad\x89\xe5\x90\x84\xe7\xb1\xbb\xe5\x9e\x8b\xe5\x85\xb7\xe6\x9c\x89\xe7\xbb\xbf\xe8\x89\xb2\xe5\x8f\x91\xe5\xb1\x95\xe9\x9c\x80\xe6\xb1\x82\xe7\x9a\x84\xe4\xbc\x81\xe4\xb8\x9a\xef\xbc\x8c\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa7\xe5\x93\x81\xe9\x9d\xa2\xe5\x90\x91\xe4\xbb\xa5\xe5\xb9\xb4\xe8\xbd\xbb\xe5\xae\xa2\xe7\xbe\xa4\xe3\x80\x81\xe6\x96\xb0\xe8\x83\xbd\xe6\xba\x90\xe6\xb1\xbd\xe8\xbd\xa6\xe8\xbd\xa6\xe4\xb8\xbb\xe7\xad\x89\xe4\xb8\xba\xe4\xbb\xa3\xe8\xa1\xa8\xe7\x9a\x84\xe5\xaf\xb9\xe7\x8e\xaf\xe4\xbf\x9d\xe7\x90\x86\xe5\xbf\xb5\xe8\xae\xa4\xe7\x9f\xa5\xe5\xba\xa6\xe8\xbe\x83\xe9\xab\x98\xe7\x9a\x84\xe5\xa4\xa7\xe4\xbc\x97\xe5\xae\xa2\xe7\xbe\xa4\xe3\x80\x82

\n

\xe7\x8e\xb0\xe9\x98\xb6\xe6\xae\xb5\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe9\x80\x9a\xe8\xbf\x87\xe5\x8f\x91\xe8\xa1\x8c\xe8\x99\x9a\xe6\x8b\x9f\xe5\x8d\xa1\xe6\x88\x96\xe7\x8e\xaf\xe4\xbf\x9d\xe6\x9d\x90\xe8\xb4\xa8\xe7\x9a\x84\xe5\x8d\xa1\xe7\x89\x87\xe3\x80\x81\xe5\x90\x91\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\x94\xb5\xe5\xad\x90\xe8\xb4\xa6\xe5\x8d\x95\xe7\xad\x89\xe6\x96\xb9\xe5\xbc\x8f\xef\xbc\x8c\xe4\xbb\x8e\xe4\xba\xa7\xe5\x93\x81\xe6\x9c\xac\xe8\xba\xab\xe5\xb0\xbd\xe5\x8f\xaf\xe8\x83\xbd\xe5\x87\x8f\xe5\xb0\x91\xe7\xa2\xb3\xe6\x8e\x92\xe6\x94\xbe\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe4\xbe\x9d\xe6\x89\x98\xe9\x93\xb6\xe8\x81\x94\xe4\xba\xa4\xe6\x98\x93\xe7\xb3\xbb\xe7\xbb\x9f\xe6\x95\xb0\xe6\x8d\xae\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe6\x9e\x84\xe5\xbb\xba\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xaa\xe4\xba\xba\xe5\x9c\xa8\xe5\x85\xac\xe4\xba\xa4\xe5\x87\xba\xe8\xa1\x8c\xe3\x80\x81\xe5\x9c\xb0\xe9\x93\x81\xe5\x87\xba\xe8\xa1\x8c\xe3\x80\x81\xe5\x85\xb1\xe4\xba\xab\xe5\x8d\x95\xe8\xbd\xa6\xe9\xaa\x91\xe8\xa1\x8c\xe3\x80\x81\xe4\xba\x91\xe9\x97\xaa\xe4\xbb\x98\xe5\x85\xac\xe7\xbc\xb4\xe3\x80\x81\xe6\x96\xb0\xe8\x83\xbd\xe6\xba\x90\xe8\xbd\xa6\xe5\x85\x85\xe7\x94\xb5\xe3\x80\x81\xe9\xab\x98\xe9\x93\x81\xe5\x8a\xa8\xe8\xbd\xa6\xe5\x87\xba\xe8\xa1\x8c\xe7\xad\x89\xe5\x85\xad\xe5\xa4\xa7\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x9c\xba\xe6\x99\xaf\xe9\x80\x9a\xe8\xbf\x87\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe6\xb6\x88\xe8\xb4\xb9\xe7\xb4\xaf\xe8\xae\xa1\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe3\x80\x82\xe5\x90\x8e\xe7\xbb\xad\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe7\xba\xb3\xe5\x85\xa5\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe5\x9c\xba\xe6\x99\xaf\xef\xbc\x8c\xe4\xbb\x8e\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe7\x9a\x84\xe8\xa1\xa3\xe9\xa3\x9f\xe4\xbd\x8f\xe8\xa1\x8c\xe7\x94\xa8\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe5\x80\xa1\xe5\xaf\xbc\xe5\x92\x8c\xe9\xbc\x93\xe5\x8a\xb1\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe3\x80\x82

\n

\xe2\x80\x9c\xe8\x87\xaa\xe8\xba\xab+\xe7\x94\x9f\xe6\x80\x81\xe5\x9c\x88\xe2\x80\x9d\xe5\x8f\x8c\xe5\x8a\xa0\xe7\xa0\x81\xef\xbc\x8c\xe5\x85\xb1\xe4\xbf\x83\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92 \xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe5\xae\x9e\xe7\x8e\xb0

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe5\x9c\xa8\xe5\xbd\x93\xe5\x89\x8d\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe5\x8f\x91\xe5\xb1\x95\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xbc\x95\xe9\xa2\x86\xe4\xb8\x8b\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe5\xa6\x82\xe4\xbd\x95\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c3060\xe2\x80\x9d\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xae\x9e\xe7\x8e\xb0\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xbd\x9c\xe4\xb8\xba\xe4\xb8\x80\xe5\xae\xb6\xe8\xb4\x9f\xe8\xb4\xa3\xe4\xbb\xbb\xe7\x9a\x84\xe5\x9b\xbd\xe6\x9c\x89\xe4\xbc\x81\xe4\xb8\x9a\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe4\xbb\x8e\xe6\x8e\xa8\xe8\xbf\x9b\xe8\x87\xaa\xe8\xba\xab\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92\xe5\x92\x8c\xe5\xb8\xa6\xe5\x8a\xa8\xe9\x93\xb6\xe8\x81\x94\xe7\x94\x9f\xe6\x80\x81\xe5\x9c\x88\xe5\x85\xb1\xe5\x90\x8c\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe4\xbb\x8e\xe8\x87\xaa\xe8\xba\xab\xe7\x9a\x84\xe7\xbb\x8f\xe8\x90\xa5\xe6\xb4\xbb\xe5\x8a\xa8\xe3\x80\x81\xe5\x9b\xad\xe5\x8c\xba\xe5\xbb\xba\xe8\xae\xbe\xe3\x80\x81\xe5\x91\x98\xe5\xb7\xa5\xe8\xa1\x8c\xe4\xb8\xba\xe5\xbc\x95\xe5\xaf\xbc\xe7\xad\x89\xe6\x96\xb9\xe9\x9d\xa2\xe5\x85\xa8\xe9\x9d\xa2\xe5\x87\x8f\xe5\xb0\x91\xe7\xa2\xb3\xe6\x8e\x92\xe6\x94\xbe\xef\xbc\x8c\xe5\x8a\x9b\xe4\xba\x89\xe6\x97\xa9\xe6\x97\xa5\xe5\xae\x9e\xe7\x8e\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe5\xb8\xa6\xe5\x8a\xa8\xe5\x90\x84\xe6\x88\x90\xe5\x91\x98\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe7\xa7\xaf\xe6\x9e\x81\xe8\xb7\xb5\xe8\xa1\x8c\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe8\xa6\x81\xe6\xb1\x82\xef\xbc\x8c\xe6\x8e\xa8\xe5\x87\xba\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1\xef\xbc\x8c\xe6\x94\xaf\xe6\x8c\x81\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xe8\xaf\x89\xe6\xb1\x82\xef\xbc\x8c\xe5\xb9\xb6\xe8\x81\x94\xe5\x90\x88\xe5\x90\x84\xe6\x88\x90\xe5\x91\x98\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe5\x80\x9f\xe5\x8a\xa9\xe9\x93\xb6\xe8\x81\x94\xe5\x8d\xa1\xe7\x9a\x84\xe5\x8f\x91\xe8\xa1\x8c\xef\xbc\x8c\xe4\xbc\xa0\xe6\x92\xad\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe4\xbc\x81\xe4\xb8\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe5\x80\xa1\xe5\xaf\xbc\xe4\xb8\xaa\xe4\xba\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe6\xb4\xbb\xe3\x80\x82

\n

\xe6\x9c\xaa\xe6\x9d\xa5\xe5\xb0\x86\xe6\x95\xb4\xe5\x90\x88\xe4\xbc\x98\xe5\x8a\xbf\xe8\xb5\x84\xe6\xba\x90 \xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe6\x82\xa8\xe8\xae\xa4\xe4\xb8\xba\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x9c\xa8\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9a\x84\xe8\x83\x8c\xe6\x99\xaf\xe4\xb8\x8b\xe9\x9d\xa2\xe4\xb8\xb4\xe7\x9d\x80\xe5\x93\xaa\xe4\xba\x9b\xe5\x8f\x91\xe5\xb1\x95\xe6\x9c\xba\xe9\x81\x87\xe4\xbb\xa5\xe5\x8f\x8a\xe6\x8c\x91\xe6\x88\x98\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe6\x8f\x90\xe5\x87\xba\xe5\xb0\x86\xe6\x98\xaf\xe7\xa4\xbe\xe4\xbc\x9a\xe7\x94\x9f\xe4\xba\xa7\xe8\xa6\x81\xe7\xb4\xa0\xe8\xb5\x84\xe6\xba\x90\xe9\x85\x8d\xe7\xbd\xae\xe5\x92\x8c\xe7\x94\x9f\xe6\xb4\xbb\xe6\x96\xb9\xe5\xbc\x8f\xe8\xb0\x83\xe6\x95\xb4\xe7\x9a\x84\xe4\xb8\x80\xe6\xac\xa1\xe5\xb7\xa8\xe5\xa4\xa7\xe5\x8f\x98\xe9\x9d\xa9\xef\xbc\x8c\xe5\x90\x84\xe7\xb1\xbb\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe9\x83\xbd\xe9\x9d\xa2\xe4\xb8\xb4\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xe7\x9a\x84\xe8\xa6\x81\xe6\xb1\x82\xe3\x80\x82\xe4\xbc\x81\xe4\xb8\x9a\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xbd\xac\xe5\x9e\x8b\xe6\xb6\x89\xe5\x8f\x8a\xe8\x9e\x8d\xe8\xb5\x84\xe8\xb4\xb7\xe6\xac\xbe\xe3\x80\x81\xe6\x94\xaf\xe4\xbb\x98\xe7\xbb\x93\xe7\xae\x97\xe3\x80\x81\xe4\xbf\x9d\xe9\x99\xa9\xe7\xad\x89\xe5\x90\x84\xe7\xb1\xbb\xe9\x87\x91\xe8\x9e\x8d\xe9\x9c\x80\xe6\xb1\x82\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\xb0\x86\xe5\x9c\xa8\xe5\x85\xb6\xe4\xb8\xad\xe5\x8f\x91\xe6\x8c\xa5\xe4\xb8\xbe\xe8\xb6\xb3\xe8\xbd\xbb\xe9\x87\x8d\xe7\x9a\x84\xe4\xbd\x9c\xe7\x94\xa8\xef\xbc\x8c\xe6\x8b\xa5\xe6\x9c\x89\xe5\xb9\xbf\xe9\x98\x94\xe7\x9a\x84\xe5\x8f\x91\xe5\xb1\x95\xe7\xa9\xba\xe9\x97\xb4\xe5\x92\x8c\xe6\x9c\xba\xe4\xbc\x9a\xe3\x80\x82

\n

\xe6\x88\x91\xe4\xbb\xac\xe7\x9b\xb8\xe4\xbf\xa1\xef\xbc\x8c\xe6\x9c\x89\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe7\x9a\x84\xe7\xa7\xaf\xe6\x9e\x81\xe5\x8f\x82\xe4\xb8\x8e\xef\xbc\x8c\xe7\xa2\xb3\xe9\x87\x91\xe8\x9e\x8d\xe4\xba\xa7\xe5\x93\x81\xe5\xb8\x82\xe5\x9c\xba\xe5\xb0\x86\xe5\xbf\xab\xe9\x80\x9f\xe5\x8f\x91\xe5\xb1\x95\xe6\x88\x90\xe7\x86\x9f\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\xb0\x86\xe5\x8b\x87\xe7\xab\x8b\xe6\xbd\xae\xe5\xa4\xb4\xef\xbc\x8c\xe5\x88\x87\xe5\xae\x9e\xe6\x8e\xa8\xe8\xbf\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe6\x82\xa8\xe8\xae\xa4\xe4\xb8\xba\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe5\x9c\xa8\xe6\x9e\x84\xe5\xbb\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe4\xb8\xad\xe6\x89\xae\xe6\xbc\x94\xe4\xbb\x80\xe4\xb9\x88\xe6\xa0\xb7\xe7\x9a\x84\xe8\xa7\x92\xe8\x89\xb2\xef\xbc\x9f\xe6\x9c\xaa\xe6\x9d\xa5\xe5\x9c\xa8\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x96\xb9\xe9\x9d\xa2\xe8\xbf\x98\xe4\xbc\x9a\xe4\xbd\x9c\xe5\x93\xaa\xe4\xba\x9b\xe5\xb0\x9d\xe8\xaf\x95\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\x9c\xa8\xe6\x9e\x84\xe5\xbb\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe4\xb8\xad\xe5\x90\x8c\xe6\x97\xb6\xe6\x89\xae\xe6\xbc\x94\xe7\x9d\x80\xe8\xa7\x84\xe5\x88\x99\xe5\x88\xb6\xe5\xae\x9a\xe8\x80\x85\xe5\x92\x8c\xe6\xb4\xbb\xe5\x8a\xa8\xe5\x8f\x91\xe8\xb5\xb7\xe8\x80\x85\xe7\x9a\x84\xe8\xa7\x92\xe8\x89\xb2\xe3\x80\x82\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe6\x9e\x84\xe5\xbb\xba\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe5\x8f\x8a\xe7\x9b\xb8\xe5\xba\x94\xe7\x9a\x84\xe6\xb4\xbb\xe5\x8a\xa8\xe7\x8e\xa9\xe6\xb3\x95\xef\xbc\x8c\xe9\x92\x88\xe5\xaf\xb9\xe6\x80\xa7\xe5\x9c\xb0\xe5\xaf\xb9\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe8\xbf\x9b\xe8\xa1\x8c\xe5\xa5\x96\xe5\x8a\xb1\xef\xbc\x8c\xe7\x94\xa8\xe6\xb4\xbb\xe5\x8a\xa8\xe8\xa7\x84\xe5\x88\x99\xe5\x8e\xbb\xe5\xbc\x95\xe5\xaf\xbc\xe5\x92\x8c\xe9\xbc\x93\xe5\x8a\xb1\xe5\xa4\xa7\xe4\xbc\x97\xe8\xb7\xb5\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe6\xb4\xbb\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\x9f\xba\xe4\xba\x8e\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe8\x81\x94\xe5\x90\x88\xe5\x90\x84\xe5\xae\xb6\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8f\x91\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xef\xbc\x8c\xe5\xb8\xa6\xe9\xa2\x86\xe5\x92\x8c\xe5\x8f\xb7\xe5\x8f\xac\xe9\x93\xb6\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x85\xb1\xe5\x90\x8c\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x9c\x8d\xe5\x8a\xa1\xe4\xb8\xad\xef\xbc\x8c\xe4\xb9\x9f\xe8\xae\xa9\xe6\x9b\xb4\xe5\xa4\x9a\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xa1\x8c\xe5\x8a\xa8\xe4\xb8\xad\xe3\x80\x82

\n

\xe6\x9c\xaa\xe6\x9d\xa5\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe3\x80\x81\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x90\x88\xe4\xbd\x9c\xe4\xbc\x99\xe4\xbc\xb4\xef\xbc\x8c\xe6\x95\xb4\xe5\x90\x88\xe4\xbc\x98\xe5\x8a\xbf\xe8\xb5\x84\xe6\xba\x90\xef\xbc\x8c\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1\xe3\x80\x82

\xe3\x80\x90\xe7\xba\xa0\xe9\x94\x99\xe3\x80\x91 \xe3\x80\x90\xe8\xb4\xa3\xe4\xbb\xbb\xe7\xbc\x96\xe8\xbe\x91:\xe4\xb8\x87\xe5\x98\x89\xe3\x80\x91
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t \n \n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\n
\n
    \n
\n
\t\t\n\t\t\t
\n\n
\n
\n\t\t\t
\n \n\t\t\t
\n
\n
    \n
\n
\n\t\t\t
\n\t\t\t
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n\t
\n
\n\t\n \t\n \n \n \n \n \n \n \n \n\n' print(f'检测bytes内容编码结果:{demo_ins.char_detect(_temp_content)}') # print(f'解码bytes内容转为str结果:{demo_ins.char_to_str(_temp_content)}') # 图片模糊(blurry picture) # temp_aa = demo_ins.img_blurred(r'E:\Users\Administrator\Documents\SomeTools\win11_sunrise.jpg') # print(f"图片模糊后路径{temp_aa}") # 生成验证码(Generate verification code) # temp_aa, img_path = demo_ins.img_generate_verification_code(r'E:\Users\Administrator\Documents\SomeTools\Arial.ttf', r'E:\Users\Administrator\Documents\SomeTools\\') # print(f"根据字符串{temp_aa}生成验证码{img_path}") # 查看硬件信息(View hardware information) print(f'内存信息:{demo_ins.os_memory_info()} 可用内存剩余:{demo_ins.os_memory_info().free}') print(f'CPU信息:{demo_ins.os_cpu_info()}') print(f'硬盘信息:{demo_ins.os_disk_info()}') print(f'网络信息:{demo_ins.os_net_info()}') # 获取本月的中国法定节假日和工作日(Get this month's Chinese statutory holidays and working days) calendar_hashmap = Demo.get_calendar_hashmap() demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(92)}") demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(94)}") demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(91)}") demo_ins.logger().info(f"this month's weekend: {calendar_hashmap.get(6)}") demo_ins.logger().info(f"this month's weekend: {calendar_hashmap.get(7)}") demo_ins.logger().info(f"this month's working day: {calendar_hashmap.get(0)}") demo_ins.logger().info(f"this month's extra working day: {calendar_hashmap.get(90)}") # redis使用(use redis) # redis_conn = demo_ins.get_sync_redis_conn(redis_host='10.1.xx.xx', # redis_port='6379', # redis_db=1, # redis_pwd='xx' # ) # msg = redis_conn.set('temp_key1', 'test string1') # demo_ins.logger().info(f"redis set {msg}") # msg = redis_conn.get('temp_key1') # demo_ins.logger().info(f"redis get {msg}") ``` ### 2.异步工具使用 (Asynchronous tool usage) ``` pycon import asyncio import datetime import platform if not (platform.system() == 'Windows'): import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) # 使用 uvloop 来替换 asyncio 内部的事件循环。 from sometools.async_tools import CommonAsyncTools class Demo(CommonAsyncTools): def __init__(self, *args, **kwargs): super(Demo, self).__init__(*args, **kwargs) # 事件循环 task_number = kwargs.get('TASK_NUMBER') loop = asyncio.get_event_loop() tasks = [asyncio.ensure_future(self.ready(**kwargs)) for _ in range(task_number)] if platform.system() == 'Windows': loop.set_debug(True) loop.run_until_complete(asyncio.wait(tasks)) async def ready(self, **kwargs): # 1. redis示例 self.aio_redis_conn = await self.get_async_redis_conn(redis_host='xx.xx.xx.xx', redis_port='6379', redis_db=1, redis_pwd='xxx') msg = await self.aio_redis_conn.set('temp_key', 'test string') print(f'redis set {msg}') msg = await self.aio_redis_conn.get('temp_key') print(f'redis get {msg}') # await asyncio.sleep(5) # 2. 布隆过滤示例 to_filter_url = 'https://zhuanlan.zhihu.com/p/376305519' _is_filted = await self.aio_is_bloom_filter_contains(to_filter_url) print(f'布隆过滤 是否存在:{_is_filted}') res = await self.aio_bloom_filter_insert(to_filter_url) print(f'布隆过滤 插入:{res}') _is_filted = await self.aio_is_bloom_filter_contains(to_filter_url) print(f'布隆过滤 是否存在:{_is_filted}') # 3. mysql orm 示例 from sometools.async_tools.database_tools.mysql_tools.async_mysql_orm import Model, StringField, TextField, \ IntegerField, DateTimeField # 创建连接池 db_conn_pool = await self.create_db_conn_pool( DATABASE_HOST='localhost', DATABASE_PORT=3306, DATABASE_USER='root', DATABASE_PWD='root', DATABASE_DB='db_name_xxxx', DATABASE_CHARSET='utf8mb4', DATABASE_AUTOCOMMIT=True, DATABASE_MAX=10, DATABASE_MIN=1, ) # 创建模型 class BondPrices(Model): __db_conn_pool__ = db_conn_pool __table__ = "bond_prices" id = IntegerField(primary_key=True) trade_time = DateTimeField() trade_data = TextField() page_name = StringField(ddl='varchar(45)') is_valid = IntegerField() data_source = StringField(ddl='varchar(100)') verify_md5 = StringField(ddl='varchar(40)') clean_status = IntegerField() create_at = DateTimeField() update_at = DateTimeField() print('检查表是否存在') data_array = await BondPrices.table_exists('erqqwrwfdsa') if data_array == 1: print('表存在') else: print('表不存在') print('直接执行sql语句') data_array = await BondPrices.execute_sql('select * from bond_prices') if data_array: for data_hashmap in data_array: print(data_hashmap) print('增加') bond_price_data = BondPrices(trade_time=datetime.datetime.now(), trade_data='dadad', page_name='保存pagename', data_source='单顺荣', is_valid=1, verify_md5='123456789', clean_status=2, create_at=datetime.datetime.now(), update_at=datetime.datetime.now(), ) insert_res = await bond_price_data.save_db_date() if insert_res: print(f'插入数据成功,主键是{insert_res}') print('修改') bond_price_data = BondPrices(id=4, trade_time=datetime.datetime.now(), trade_data='dadad', page_name='愤忿忿忿忿忿忿忿忿忿忿', data_source='单顺荣', is_valid=1, verify_md5='123456789', clean_status=2, create_at=datetime.datetime.now(), update_at=datetime.datetime.now(), ) insert_res = await bond_price_data.update_db_date() if insert_res: print(f'修改数据成功,影响行数是{insert_res}') print('删除') data_array = await BondPrices.select_by_where(id=3) if data_array: remove_res = await data_array[0].remove_db_date() print(f'删除数据成功,影响行数是{remove_res}') print('查询') data_array = await BondPrices.select_by_where(id=3, page_name='报价行情', limit=1) if data_array: data_hashmap = dict(data_array[0]) print(data_hashmap.get('verify_md5')) if __name__ == '__main__': # 异步工具使用方法示例 demo_ins = Demo(TASK_NUMBER=1) print('end') ``` %package -n python3-SomeTools Summary: Some python tools Provides: python-SomeTools BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-SomeTools 一些方便日常使用的工具(Some handy tools for everyday use) * 将输入的任何类型的日期字符串类型转化为datetime.datetime类型的日期对象 (* Convert any type of input date string type to a date object of type datetime.datetime) * 移除一个字符串中的回车换行空格制表符等内容 (* Remove carriage returns, newlines, spaces, tabs, etc. from a string) * 将中文字符转为其拼音的首字母 (* Convert Chinese characters to the first letter of their Pinyin) * 更加方便的日志记录工具 (* More convenient logging tools) * 繁体简体中文汉字转换工具 (* Traditional and Simplified Chinese character conversion tool) * redis创建连接同步、异步工具 (* redis creates connection synchronous and asynchronous tools) * 异步布隆过滤工具 (* Asynchronous Bloom Filter Tool) * 正则表达式提取字符串中的中文内容工具 (* Regular expression extraction tool for Chinese content in strings) * 异步 mysql orm (* async mysql orm) * 检测 bytes 编码 (* Detect bytes encoding) * 图片处理 (* Image processing) * 查看操作系统信息 (* View operating system information) * 获取本机ip地址 (* Get the local ip address) ## Installation (安装) ``` bash $ pip install SomeTools -i https://pypi.python.org/simple ``` ## Getting Started (开始使用) ### 1.同步工具使用 (Sync tool usage) ``` pycon from sometools import Common_tools class Demo(Common_tools): def __init__(self, *args, **kwargs): # kwargs['log_file_rec'] = True # kwargs['log_file_name'] = 'ConsumptionService' super(Demo, self).__init__(*args, **kwargs) if __name__ == '__main__': demo_ins = Demo() # 获取本机ip地址(get the local ip address) local_ip_str = Demo.get_host_ip() demo_ins.logger().info(f"local ip address: {local_ip_str}") # 将输入的任何类型的日期字符串类型转化为datetime.datetime类型的日期对象(北京时间UTC+8)(Converts any type of date string type entered to a date object of type datetime.datetime)(beijing time UTC+8) demo_ins.logger(uuid1='uuid1', uuid2='uuid2').info( f"{demo_ins.str_to_obj('2012-12-12 12:12:12')}{type(demo_ins.str_to_obj('2012-12-12 12:12:12'))}") demo_ins.logger().info( f"{demo_ins.str_to_obj('11-May-2021 07:03 EDT')}{type(demo_ins.str_to_obj('11-May-2021 07:03 EDT'))}") # 移除一个字符串中的回车换行空格制表符等内容(Remove carriage return, newline space tabs, etc., from a string) temp_str = 'abc abc \n abc \r' demo_ins.logger().info(f"before clean string{temp_str}") temp_str = Demo.clean_string('abc abc \n abc \r') demo_ins.logger().info(f"after clean string{temp_str}") # 将中文字符转为其拼音的首字母(Convert Chinese characters to the first letter of their pinyin) demo_ins.logger().info(f"{Demo.get_pinyin('中国外汇交易中心')}") # 更加方便的日志记录工具(More convenient logging tool) demo_ins.logger().info(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().debug(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().warning(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().error(f"{Demo.get_pinyin('中国外汇交易中心')}") # 中文繁体简体互转(Convert between Traditional Chinese and Simplified Chinese) demo_ins.logger().info(f"繁体转简体 眾議長與李克強會談->{Demo.traditional_chinese_to_simplified('眾議長與李克強會談')}") demo_ins.logger().info(f"简体转繁体 众议长与李克强会谈->{Demo.simplified_chinese_to_traditional_chinese('众议长与李克强会谈')}") # url编码解码(url encoding and decoding) demo_ins.logger().info(f"url编码->{Demo.url_encode('https://www.baidu.com/s?wd=中国')}") demo_ins.logger().info(f"url解码->{Demo.url_decode('https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD')}") # 正则提取中文(Regularly extract Chinese) temp_str = demo_ins.extract_one_chinese("""downloadPdf1('http://www.sse.com.cn/disclosure/bond/announcement/company/c/2021-03-22/4135530025747110334559080.pdf','厦门建发股份有限公司2021年面向专业投资者公开发行可续期公司债券(第一期)发行公告','2021-03-22','1015','pdf');""") demo_ins.logger().info(f"正则提取单个中文 {temp_str}") temp_str = demo_ins.extract_multi_chinese("""downloadPdf1('http://www.sse.com.cn/disclosure/bond/announcement/company/c/2021-03-22/4135530025747110334559080.pdf','厦门建发股份有限公司2021年面向专业投资者公开发行可续期公司债券(第一期)发行公告','2021-03-22','1015','pdf');""") demo_ins.logger().info(f"正则提取多个中文 {temp_str}") # 检测和转换编码方式(Detect and convert encoding methods) _temp_content = b'\n\n\n\n \n \n \n \n \n \n \n \n \n \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x90\x86\xe5\xbf\xb5 \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1-\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\n \n \n \n \n \n \n \n\t\n\t\n\n\n
\n\t
\n \t\n\t
\n
\n \n
\n\t
\n\t\t
\n\t\t
\n\t
\n
\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91 > > \xe6\xad\xa3\xe6\x96\x87
2021 09/08 17:35:14
\xe6\x9d\xa5\xe6\xba\x90\xef\xbc\x9a\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\n \t

\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x90\x86\xe5\xbf\xb5 \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1

\xe5\xad\x97\xe4\xbd\x93\xef\xbc\x9a\n \xe5\xb0\x8f \xe4\xb8\xad \xe5\xa4\xa7
\n
\n \n
\n
\n \n
\n
\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xe5\x8c\x97\xe4\xba\xac9\xe6\x9c\x888\xe6\x97\xa5\xe7\x94\xb5\xef\xbc\x88\xe7\x8e\x8b\xe9\x9b\xa8\xe9\xa6\xa8\xef\xbc\x89\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xe6\x97\xa5\xe5\x89\x8d\xe6\x8e\xa5\xe5\x8f\x97\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xe8\xae\xb0\xe8\x80\x85\xe4\xb8\x93\xe8\xae\xbf\xe6\x97\xb6\xe8\xa1\xa8\xe7\xa4\xba\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xe9\x87\x8d\xe8\xa7\x86\xe6\x95\xb0\xe5\xad\x97\xe5\x8c\x96\xe5\x92\x8c\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8c\x96\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe6\x9c\xaa\xe6\x9d\xa5\xe5\xb0\x86\xe5\x85\x85\xe5\x88\x86\xe5\x8f\x91\xe6\x8c\xa5\xe6\x94\xaf\xe4\xbb\x98\xe4\xba\xa7\xe5\x93\x81\xe5\xb9\xb3\xe5\x8f\xb0\xe5\x92\x8c\xe6\x9e\xa2\xe7\xba\xbd\xe4\xbd\x9c\xe7\x94\xa8\xef\xbc\x8c\xe6\x8c\x81\xe7\xbb\xad\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe7\xad\x89\xe4\xba\xa7\xe4\xb8\x9a\xe5\x90\x84\xe6\x96\xb9\xe9\x99\x86\xe7\xbb\xad\xe6\x8e\xa8\xe5\x87\xba\xe5\x90\x84\xe9\x93\xb6\xe8\xa1\x8c\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe7\xa0\x94\xe5\x8f\x91\xe6\x9b\xb4\xe5\xa4\x9a\xe6\x99\xae\xe6\x83\xa0\xe4\xbe\xbf\xe6\xb0\x91\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x96\xb0\xe4\xba\xa7\xe5\x93\x81\xe3\x80\x81\xe6\x96\xb0\xe4\xb8\x9a\xe6\x80\x81\xe3\x80\x81\xe6\x96\xb0\xe6\xa8\xa1\xe5\xbc\x8f\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c3060\xe2\x80\x9d\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9b\xae\xe6\xa0\x87\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x8d\xae\xe6\x82\x89\xef\xbc\x8c\xe8\xbf\x91\xe6\x97\xa5\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe8\x81\x94\xe5\x90\x88\xe4\xb8\x8a\xe6\xb5\xb7\xe7\x8e\xaf\xe5\xa2\x83\xe8\x83\xbd\xe6\xba\x90\xe4\xba\xa4\xe6\x98\x93\xe6\x89\x80\xe3\x80\x81\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe5\x85\xb1\xe5\x90\x8c\xe5\x8f\x91\xe5\xb8\x83\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xe3\x80\x82\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe5\x8c\x85\xe5\x90\xab\xe4\xbc\x81\xe4\xb8\x9a\xe7\x89\x88\xe5\x8f\x8a\xe4\xb8\xaa\xe4\xba\xba\xe7\x89\x88\xe4\xb8\xa4\xe5\xa5\x97\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe4\xbb\xa5\xe9\x93\xb6\xe8\x81\x94\xe4\xba\xa4\xe6\x98\x93\xe7\xb3\xbb\xe7\xbb\x9f\xe4\xb8\xad\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa4\xe6\x98\x93\xe8\xa1\x8c\xe4\xb8\xba\xe6\x95\xb0\xe6\x8d\xae\xe4\xb8\xba\xe8\xae\xa1\xe7\xae\x97\xe5\x9f\xba\xe7\xa1\x80\xef\xbc\x8c\xe6\x9e\x84\xe5\xbb\xba\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xe5\x8a\xa9\xe5\x8a\x9b\xe4\xbc\x81\xe4\xb8\x9a\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe8\xbd\xac\xe5\x9e\x8b\xef\xbc\x9b\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xe6\xa0\xb9\xe6\x8d\xae\xe7\x94\xa8\xe6\x88\xb7\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe8\xb4\xa1\xe7\x8c\xae\xe6\x9e\x84\xe5\xbb\xba\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8d\xa1\xe5\x8a\xa8\xe6\x80\x81\xe6\x9d\x83\xe7\x9b\x8a\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe5\x90\x91\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe7\xa4\xbe\xe4\xbc\x9a\xe5\xa4\xa7\xe4\xbc\x97\xe4\xbc\xa0\xe6\x92\xad\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe6\xa6\x82\xe5\xbf\xb5\xe3\x80\x82

\n

\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d \xe6\x8e\xa8\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xba\x8e\xe8\xbf\x91\xe6\x97\xa5\xe5\x8f\x91\xe5\xb8\x83\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe7\x9a\x84\xe5\x88\x9d\xe5\xbf\x83\xe6\x98\xaf\xe4\xbb\x80\xe4\xb9\x88\xef\xbc\x9f\xe6\x83\xb3\xe5\x80\x9f\xe6\xad\xa4\xe4\xbc\xa0\xe6\x92\xad\xe4\xbb\x80\xe4\xb9\x88\xe6\xa0\xb7\xe7\x9a\x84\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xe9\x87\x8d\xe8\xa7\x86\xe6\x95\xb0\xe5\xad\x97\xe5\x8c\x96\xe5\x92\x8c\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8c\x96\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe8\x87\xaa\xe5\xae\x9e\xe7\x8e\xb0\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe6\x8f\x90\xe5\x87\xba\xe4\xbb\xa5\xe6\x9d\xa5\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe5\x9c\xa8\xe6\x80\x9d\xe8\x80\x83\xe5\xa6\x82\xe4\xbd\x95\xe7\xbb\x93\xe5\x90\x88\xe8\x87\xaa\xe8\xba\xab\xe4\xb8\x9a\xe5\x8a\xa1\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe7\xa7\xaf\xe6\x9e\x81\xe5\x93\x8d\xe5\xba\x94\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe4\xbb\xa5\xe5\x8f\x8a\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe5\x8f\x91\xe5\xb1\x95\xe8\xa6\x81\xe6\xb1\x82\xe3\x80\x82\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xbd\x9c\xe4\xb8\xba\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe8\xbd\xac\xe6\x8e\xa5\xe6\xb8\x85\xe7\xae\x97\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe4\xb8\x8e\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe3\x80\x81\xe5\x95\x86\xe6\x88\xb7\xe3\x80\x81\xe7\x94\xa8\xe6\x88\xb7\xe6\x9c\x89\xe7\x9d\x80\xe5\xa4\xa9\xe7\x84\xb6\xe7\x9a\x84\xe7\xb4\xa7\xe5\xaf\x86\xe8\x81\x94\xe7\xb3\xbb\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xe5\x9c\xa8\xe5\xae\x9e\xe7\x8e\xb0\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe4\xbd\x9c\xe4\xb8\xba\xe9\x87\x8d\xe8\xa6\x81\xe6\x88\x98\xe7\x95\xa5\xe5\x86\xb3\xe7\xad\x96\xe8\xa2\xab\xe6\x8f\x90\xe5\x87\xba\xe6\x97\xb6\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\xb1\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x9a\x84\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x8e\xa8\xe5\x87\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x9b\xb8\xe5\x85\xb3\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe4\xbb\xa5\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe4\xb8\xba\xe7\xba\xbd\xe5\xb8\xa6\xef\xbc\x8c\xe5\x90\x91\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe6\x8e\xa8\xe5\xb9\xbf\xe6\x99\xae\xe5\x8f\x8a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\xbc\x95\xe5\xaf\xbc\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe8\x8a\x82\xe8\x83\xbd\xe5\x87\x8f\xe6\x8e\x92\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe9\x93\xb6\xe8\x81\x94\xe6\xad\xa4\xe6\xac\xa1\xe5\x8f\x91\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe7\x9a\x84\xe5\x8f\x97\xe4\xbc\x97\xe6\x9c\x89\xe5\x93\xaa\xe4\xba\x9b\xef\xbc\x9f\xe6\x94\xaf\xe6\x8c\x81\xe5\x93\xaa\xe4\xba\x9b\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xae\x9e\xe7\x8e\xb0\xef\xbc\x8c\xe9\x9c\x80\xe8\xa6\x81\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe7\x9a\x84\xe5\x85\xb1\xe5\x90\x8c\xe5\x8a\xaa\xe5\x8a\x9b\xe3\x80\x82\xe5\x9c\xa8\xe5\x89\x8d\xe6\x9c\x9f\xe7\x9a\x84\xe5\xb8\x82\xe5\x9c\xba\xe8\xb0\x83\xe7\xa0\x94\xe8\xbf\x87\xe7\xa8\x8b\xe4\xb8\xad\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe4\xba\x86\xe8\xa7\xa3\xe5\x88\xb0\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe9\x83\xbd\xe5\xad\x98\xe5\x9c\xa8\xe7\x9b\xb8\xe5\xba\x94\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe4\xba\xa7\xe5\x92\x8c\xe7\x94\x9f\xe6\xb4\xbb\xe9\x9c\x80\xe6\xb1\x82\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe5\x9c\xa8\xe4\xba\xa7\xe5\x93\x81\xe7\xa0\x94\xe5\x8f\x91\xe9\x98\xb6\xe6\xae\xb5\xe5\xb0\xb1\xe8\xae\xbe\xe8\xae\xa1\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\xaf\xb9\xe5\x85\xac\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x8e\xa8\xe5\x8a\xa8\xe6\x9b\xb4\xe5\xa4\x9a\xe7\x9a\x84\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe8\x83\xbd\xe5\xa4\x9f\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xa1\x8c\xe5\x8a\xa8\xe4\xb8\xad\xe3\x80\x82\xe5\x85\xb6\xe4\xb8\xad\xe5\xaf\xb9\xe5\x85\xac\xe4\xba\xa7\xe5\x93\x81\xe9\x9d\xa2\xe5\x90\x91\xe5\xa4\xa7\xe4\xb8\xad\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe3\x80\x81\xe5\xb0\x8f\xe5\xbe\xae\xe4\xbc\x81\xe4\xb8\x9a\xe3\x80\x81\xe4\xb9\xa1\xe9\x95\x87\xe4\xbc\x81\xe4\xb8\x9a\xe7\xad\x89\xe5\x90\x84\xe7\xb1\xbb\xe5\x9e\x8b\xe5\x85\xb7\xe6\x9c\x89\xe7\xbb\xbf\xe8\x89\xb2\xe5\x8f\x91\xe5\xb1\x95\xe9\x9c\x80\xe6\xb1\x82\xe7\x9a\x84\xe4\xbc\x81\xe4\xb8\x9a\xef\xbc\x8c\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa7\xe5\x93\x81\xe9\x9d\xa2\xe5\x90\x91\xe4\xbb\xa5\xe5\xb9\xb4\xe8\xbd\xbb\xe5\xae\xa2\xe7\xbe\xa4\xe3\x80\x81\xe6\x96\xb0\xe8\x83\xbd\xe6\xba\x90\xe6\xb1\xbd\xe8\xbd\xa6\xe8\xbd\xa6\xe4\xb8\xbb\xe7\xad\x89\xe4\xb8\xba\xe4\xbb\xa3\xe8\xa1\xa8\xe7\x9a\x84\xe5\xaf\xb9\xe7\x8e\xaf\xe4\xbf\x9d\xe7\x90\x86\xe5\xbf\xb5\xe8\xae\xa4\xe7\x9f\xa5\xe5\xba\xa6\xe8\xbe\x83\xe9\xab\x98\xe7\x9a\x84\xe5\xa4\xa7\xe4\xbc\x97\xe5\xae\xa2\xe7\xbe\xa4\xe3\x80\x82

\n

\xe7\x8e\xb0\xe9\x98\xb6\xe6\xae\xb5\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe9\x80\x9a\xe8\xbf\x87\xe5\x8f\x91\xe8\xa1\x8c\xe8\x99\x9a\xe6\x8b\x9f\xe5\x8d\xa1\xe6\x88\x96\xe7\x8e\xaf\xe4\xbf\x9d\xe6\x9d\x90\xe8\xb4\xa8\xe7\x9a\x84\xe5\x8d\xa1\xe7\x89\x87\xe3\x80\x81\xe5\x90\x91\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\x94\xb5\xe5\xad\x90\xe8\xb4\xa6\xe5\x8d\x95\xe7\xad\x89\xe6\x96\xb9\xe5\xbc\x8f\xef\xbc\x8c\xe4\xbb\x8e\xe4\xba\xa7\xe5\x93\x81\xe6\x9c\xac\xe8\xba\xab\xe5\xb0\xbd\xe5\x8f\xaf\xe8\x83\xbd\xe5\x87\x8f\xe5\xb0\x91\xe7\xa2\xb3\xe6\x8e\x92\xe6\x94\xbe\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe4\xbe\x9d\xe6\x89\x98\xe9\x93\xb6\xe8\x81\x94\xe4\xba\xa4\xe6\x98\x93\xe7\xb3\xbb\xe7\xbb\x9f\xe6\x95\xb0\xe6\x8d\xae\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe6\x9e\x84\xe5\xbb\xba\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xaa\xe4\xba\xba\xe5\x9c\xa8\xe5\x85\xac\xe4\xba\xa4\xe5\x87\xba\xe8\xa1\x8c\xe3\x80\x81\xe5\x9c\xb0\xe9\x93\x81\xe5\x87\xba\xe8\xa1\x8c\xe3\x80\x81\xe5\x85\xb1\xe4\xba\xab\xe5\x8d\x95\xe8\xbd\xa6\xe9\xaa\x91\xe8\xa1\x8c\xe3\x80\x81\xe4\xba\x91\xe9\x97\xaa\xe4\xbb\x98\xe5\x85\xac\xe7\xbc\xb4\xe3\x80\x81\xe6\x96\xb0\xe8\x83\xbd\xe6\xba\x90\xe8\xbd\xa6\xe5\x85\x85\xe7\x94\xb5\xe3\x80\x81\xe9\xab\x98\xe9\x93\x81\xe5\x8a\xa8\xe8\xbd\xa6\xe5\x87\xba\xe8\xa1\x8c\xe7\xad\x89\xe5\x85\xad\xe5\xa4\xa7\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x9c\xba\xe6\x99\xaf\xe9\x80\x9a\xe8\xbf\x87\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe6\xb6\x88\xe8\xb4\xb9\xe7\xb4\xaf\xe8\xae\xa1\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe3\x80\x82\xe5\x90\x8e\xe7\xbb\xad\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe7\xba\xb3\xe5\x85\xa5\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe5\x9c\xba\xe6\x99\xaf\xef\xbc\x8c\xe4\xbb\x8e\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe7\x9a\x84\xe8\xa1\xa3\xe9\xa3\x9f\xe4\xbd\x8f\xe8\xa1\x8c\xe7\x94\xa8\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe5\x80\xa1\xe5\xaf\xbc\xe5\x92\x8c\xe9\xbc\x93\xe5\x8a\xb1\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe3\x80\x82

\n

\xe2\x80\x9c\xe8\x87\xaa\xe8\xba\xab+\xe7\x94\x9f\xe6\x80\x81\xe5\x9c\x88\xe2\x80\x9d\xe5\x8f\x8c\xe5\x8a\xa0\xe7\xa0\x81\xef\xbc\x8c\xe5\x85\xb1\xe4\xbf\x83\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92 \xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe5\xae\x9e\xe7\x8e\xb0

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe5\x9c\xa8\xe5\xbd\x93\xe5\x89\x8d\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe5\x8f\x91\xe5\xb1\x95\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xbc\x95\xe9\xa2\x86\xe4\xb8\x8b\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe5\xa6\x82\xe4\xbd\x95\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c3060\xe2\x80\x9d\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xae\x9e\xe7\x8e\xb0\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xbd\x9c\xe4\xb8\xba\xe4\xb8\x80\xe5\xae\xb6\xe8\xb4\x9f\xe8\xb4\xa3\xe4\xbb\xbb\xe7\x9a\x84\xe5\x9b\xbd\xe6\x9c\x89\xe4\xbc\x81\xe4\xb8\x9a\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe4\xbb\x8e\xe6\x8e\xa8\xe8\xbf\x9b\xe8\x87\xaa\xe8\xba\xab\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92\xe5\x92\x8c\xe5\xb8\xa6\xe5\x8a\xa8\xe9\x93\xb6\xe8\x81\x94\xe7\x94\x9f\xe6\x80\x81\xe5\x9c\x88\xe5\x85\xb1\xe5\x90\x8c\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe4\xbb\x8e\xe8\x87\xaa\xe8\xba\xab\xe7\x9a\x84\xe7\xbb\x8f\xe8\x90\xa5\xe6\xb4\xbb\xe5\x8a\xa8\xe3\x80\x81\xe5\x9b\xad\xe5\x8c\xba\xe5\xbb\xba\xe8\xae\xbe\xe3\x80\x81\xe5\x91\x98\xe5\xb7\xa5\xe8\xa1\x8c\xe4\xb8\xba\xe5\xbc\x95\xe5\xaf\xbc\xe7\xad\x89\xe6\x96\xb9\xe9\x9d\xa2\xe5\x85\xa8\xe9\x9d\xa2\xe5\x87\x8f\xe5\xb0\x91\xe7\xa2\xb3\xe6\x8e\x92\xe6\x94\xbe\xef\xbc\x8c\xe5\x8a\x9b\xe4\xba\x89\xe6\x97\xa9\xe6\x97\xa5\xe5\xae\x9e\xe7\x8e\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe5\xb8\xa6\xe5\x8a\xa8\xe5\x90\x84\xe6\x88\x90\xe5\x91\x98\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe7\xa7\xaf\xe6\x9e\x81\xe8\xb7\xb5\xe8\xa1\x8c\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe8\xa6\x81\xe6\xb1\x82\xef\xbc\x8c\xe6\x8e\xa8\xe5\x87\xba\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1\xef\xbc\x8c\xe6\x94\xaf\xe6\x8c\x81\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xe8\xaf\x89\xe6\xb1\x82\xef\xbc\x8c\xe5\xb9\xb6\xe8\x81\x94\xe5\x90\x88\xe5\x90\x84\xe6\x88\x90\xe5\x91\x98\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe5\x80\x9f\xe5\x8a\xa9\xe9\x93\xb6\xe8\x81\x94\xe5\x8d\xa1\xe7\x9a\x84\xe5\x8f\x91\xe8\xa1\x8c\xef\xbc\x8c\xe4\xbc\xa0\xe6\x92\xad\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe4\xbc\x81\xe4\xb8\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe5\x80\xa1\xe5\xaf\xbc\xe4\xb8\xaa\xe4\xba\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe6\xb4\xbb\xe3\x80\x82

\n

\xe6\x9c\xaa\xe6\x9d\xa5\xe5\xb0\x86\xe6\x95\xb4\xe5\x90\x88\xe4\xbc\x98\xe5\x8a\xbf\xe8\xb5\x84\xe6\xba\x90 \xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe6\x82\xa8\xe8\xae\xa4\xe4\xb8\xba\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x9c\xa8\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9a\x84\xe8\x83\x8c\xe6\x99\xaf\xe4\xb8\x8b\xe9\x9d\xa2\xe4\xb8\xb4\xe7\x9d\x80\xe5\x93\xaa\xe4\xba\x9b\xe5\x8f\x91\xe5\xb1\x95\xe6\x9c\xba\xe9\x81\x87\xe4\xbb\xa5\xe5\x8f\x8a\xe6\x8c\x91\xe6\x88\x98\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe6\x8f\x90\xe5\x87\xba\xe5\xb0\x86\xe6\x98\xaf\xe7\xa4\xbe\xe4\xbc\x9a\xe7\x94\x9f\xe4\xba\xa7\xe8\xa6\x81\xe7\xb4\xa0\xe8\xb5\x84\xe6\xba\x90\xe9\x85\x8d\xe7\xbd\xae\xe5\x92\x8c\xe7\x94\x9f\xe6\xb4\xbb\xe6\x96\xb9\xe5\xbc\x8f\xe8\xb0\x83\xe6\x95\xb4\xe7\x9a\x84\xe4\xb8\x80\xe6\xac\xa1\xe5\xb7\xa8\xe5\xa4\xa7\xe5\x8f\x98\xe9\x9d\xa9\xef\xbc\x8c\xe5\x90\x84\xe7\xb1\xbb\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe9\x83\xbd\xe9\x9d\xa2\xe4\xb8\xb4\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xe7\x9a\x84\xe8\xa6\x81\xe6\xb1\x82\xe3\x80\x82\xe4\xbc\x81\xe4\xb8\x9a\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xbd\xac\xe5\x9e\x8b\xe6\xb6\x89\xe5\x8f\x8a\xe8\x9e\x8d\xe8\xb5\x84\xe8\xb4\xb7\xe6\xac\xbe\xe3\x80\x81\xe6\x94\xaf\xe4\xbb\x98\xe7\xbb\x93\xe7\xae\x97\xe3\x80\x81\xe4\xbf\x9d\xe9\x99\xa9\xe7\xad\x89\xe5\x90\x84\xe7\xb1\xbb\xe9\x87\x91\xe8\x9e\x8d\xe9\x9c\x80\xe6\xb1\x82\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\xb0\x86\xe5\x9c\xa8\xe5\x85\xb6\xe4\xb8\xad\xe5\x8f\x91\xe6\x8c\xa5\xe4\xb8\xbe\xe8\xb6\xb3\xe8\xbd\xbb\xe9\x87\x8d\xe7\x9a\x84\xe4\xbd\x9c\xe7\x94\xa8\xef\xbc\x8c\xe6\x8b\xa5\xe6\x9c\x89\xe5\xb9\xbf\xe9\x98\x94\xe7\x9a\x84\xe5\x8f\x91\xe5\xb1\x95\xe7\xa9\xba\xe9\x97\xb4\xe5\x92\x8c\xe6\x9c\xba\xe4\xbc\x9a\xe3\x80\x82

\n

\xe6\x88\x91\xe4\xbb\xac\xe7\x9b\xb8\xe4\xbf\xa1\xef\xbc\x8c\xe6\x9c\x89\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe7\x9a\x84\xe7\xa7\xaf\xe6\x9e\x81\xe5\x8f\x82\xe4\xb8\x8e\xef\xbc\x8c\xe7\xa2\xb3\xe9\x87\x91\xe8\x9e\x8d\xe4\xba\xa7\xe5\x93\x81\xe5\xb8\x82\xe5\x9c\xba\xe5\xb0\x86\xe5\xbf\xab\xe9\x80\x9f\xe5\x8f\x91\xe5\xb1\x95\xe6\x88\x90\xe7\x86\x9f\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\xb0\x86\xe5\x8b\x87\xe7\xab\x8b\xe6\xbd\xae\xe5\xa4\xb4\xef\xbc\x8c\xe5\x88\x87\xe5\xae\x9e\xe6\x8e\xa8\xe8\xbf\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe6\x82\xa8\xe8\xae\xa4\xe4\xb8\xba\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe5\x9c\xa8\xe6\x9e\x84\xe5\xbb\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe4\xb8\xad\xe6\x89\xae\xe6\xbc\x94\xe4\xbb\x80\xe4\xb9\x88\xe6\xa0\xb7\xe7\x9a\x84\xe8\xa7\x92\xe8\x89\xb2\xef\xbc\x9f\xe6\x9c\xaa\xe6\x9d\xa5\xe5\x9c\xa8\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x96\xb9\xe9\x9d\xa2\xe8\xbf\x98\xe4\xbc\x9a\xe4\xbd\x9c\xe5\x93\xaa\xe4\xba\x9b\xe5\xb0\x9d\xe8\xaf\x95\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\x9c\xa8\xe6\x9e\x84\xe5\xbb\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe4\xb8\xad\xe5\x90\x8c\xe6\x97\xb6\xe6\x89\xae\xe6\xbc\x94\xe7\x9d\x80\xe8\xa7\x84\xe5\x88\x99\xe5\x88\xb6\xe5\xae\x9a\xe8\x80\x85\xe5\x92\x8c\xe6\xb4\xbb\xe5\x8a\xa8\xe5\x8f\x91\xe8\xb5\xb7\xe8\x80\x85\xe7\x9a\x84\xe8\xa7\x92\xe8\x89\xb2\xe3\x80\x82\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe6\x9e\x84\xe5\xbb\xba\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe5\x8f\x8a\xe7\x9b\xb8\xe5\xba\x94\xe7\x9a\x84\xe6\xb4\xbb\xe5\x8a\xa8\xe7\x8e\xa9\xe6\xb3\x95\xef\xbc\x8c\xe9\x92\x88\xe5\xaf\xb9\xe6\x80\xa7\xe5\x9c\xb0\xe5\xaf\xb9\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe8\xbf\x9b\xe8\xa1\x8c\xe5\xa5\x96\xe5\x8a\xb1\xef\xbc\x8c\xe7\x94\xa8\xe6\xb4\xbb\xe5\x8a\xa8\xe8\xa7\x84\xe5\x88\x99\xe5\x8e\xbb\xe5\xbc\x95\xe5\xaf\xbc\xe5\x92\x8c\xe9\xbc\x93\xe5\x8a\xb1\xe5\xa4\xa7\xe4\xbc\x97\xe8\xb7\xb5\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe6\xb4\xbb\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\x9f\xba\xe4\xba\x8e\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe8\x81\x94\xe5\x90\x88\xe5\x90\x84\xe5\xae\xb6\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8f\x91\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xef\xbc\x8c\xe5\xb8\xa6\xe9\xa2\x86\xe5\x92\x8c\xe5\x8f\xb7\xe5\x8f\xac\xe9\x93\xb6\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x85\xb1\xe5\x90\x8c\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x9c\x8d\xe5\x8a\xa1\xe4\xb8\xad\xef\xbc\x8c\xe4\xb9\x9f\xe8\xae\xa9\xe6\x9b\xb4\xe5\xa4\x9a\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xa1\x8c\xe5\x8a\xa8\xe4\xb8\xad\xe3\x80\x82

\n

\xe6\x9c\xaa\xe6\x9d\xa5\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe3\x80\x81\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x90\x88\xe4\xbd\x9c\xe4\xbc\x99\xe4\xbc\xb4\xef\xbc\x8c\xe6\x95\xb4\xe5\x90\x88\xe4\xbc\x98\xe5\x8a\xbf\xe8\xb5\x84\xe6\xba\x90\xef\xbc\x8c\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1\xe3\x80\x82

\xe3\x80\x90\xe7\xba\xa0\xe9\x94\x99\xe3\x80\x91 \xe3\x80\x90\xe8\xb4\xa3\xe4\xbb\xbb\xe7\xbc\x96\xe8\xbe\x91:\xe4\xb8\x87\xe5\x98\x89\xe3\x80\x91
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t \n \n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\n
\n
    \n
\n
\t\t\n\t\t\t
\n\n
\n
\n\t\t\t
\n \n\t\t\t
\n
\n
    \n
\n
\n\t\t\t
\n\t\t\t
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n\t
\n
\n\t\n \t\n \n \n \n \n \n \n \n \n\n' print(f'检测bytes内容编码结果:{demo_ins.char_detect(_temp_content)}') # print(f'解码bytes内容转为str结果:{demo_ins.char_to_str(_temp_content)}') # 图片模糊(blurry picture) # temp_aa = demo_ins.img_blurred(r'E:\Users\Administrator\Documents\SomeTools\win11_sunrise.jpg') # print(f"图片模糊后路径{temp_aa}") # 生成验证码(Generate verification code) # temp_aa, img_path = demo_ins.img_generate_verification_code(r'E:\Users\Administrator\Documents\SomeTools\Arial.ttf', r'E:\Users\Administrator\Documents\SomeTools\\') # print(f"根据字符串{temp_aa}生成验证码{img_path}") # 查看硬件信息(View hardware information) print(f'内存信息:{demo_ins.os_memory_info()} 可用内存剩余:{demo_ins.os_memory_info().free}') print(f'CPU信息:{demo_ins.os_cpu_info()}') print(f'硬盘信息:{demo_ins.os_disk_info()}') print(f'网络信息:{demo_ins.os_net_info()}') # 获取本月的中国法定节假日和工作日(Get this month's Chinese statutory holidays and working days) calendar_hashmap = Demo.get_calendar_hashmap() demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(92)}") demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(94)}") demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(91)}") demo_ins.logger().info(f"this month's weekend: {calendar_hashmap.get(6)}") demo_ins.logger().info(f"this month's weekend: {calendar_hashmap.get(7)}") demo_ins.logger().info(f"this month's working day: {calendar_hashmap.get(0)}") demo_ins.logger().info(f"this month's extra working day: {calendar_hashmap.get(90)}") # redis使用(use redis) # redis_conn = demo_ins.get_sync_redis_conn(redis_host='10.1.xx.xx', # redis_port='6379', # redis_db=1, # redis_pwd='xx' # ) # msg = redis_conn.set('temp_key1', 'test string1') # demo_ins.logger().info(f"redis set {msg}") # msg = redis_conn.get('temp_key1') # demo_ins.logger().info(f"redis get {msg}") ``` ### 2.异步工具使用 (Asynchronous tool usage) ``` pycon import asyncio import datetime import platform if not (platform.system() == 'Windows'): import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) # 使用 uvloop 来替换 asyncio 内部的事件循环。 from sometools.async_tools import CommonAsyncTools class Demo(CommonAsyncTools): def __init__(self, *args, **kwargs): super(Demo, self).__init__(*args, **kwargs) # 事件循环 task_number = kwargs.get('TASK_NUMBER') loop = asyncio.get_event_loop() tasks = [asyncio.ensure_future(self.ready(**kwargs)) for _ in range(task_number)] if platform.system() == 'Windows': loop.set_debug(True) loop.run_until_complete(asyncio.wait(tasks)) async def ready(self, **kwargs): # 1. redis示例 self.aio_redis_conn = await self.get_async_redis_conn(redis_host='xx.xx.xx.xx', redis_port='6379', redis_db=1, redis_pwd='xxx') msg = await self.aio_redis_conn.set('temp_key', 'test string') print(f'redis set {msg}') msg = await self.aio_redis_conn.get('temp_key') print(f'redis get {msg}') # await asyncio.sleep(5) # 2. 布隆过滤示例 to_filter_url = 'https://zhuanlan.zhihu.com/p/376305519' _is_filted = await self.aio_is_bloom_filter_contains(to_filter_url) print(f'布隆过滤 是否存在:{_is_filted}') res = await self.aio_bloom_filter_insert(to_filter_url) print(f'布隆过滤 插入:{res}') _is_filted = await self.aio_is_bloom_filter_contains(to_filter_url) print(f'布隆过滤 是否存在:{_is_filted}') # 3. mysql orm 示例 from sometools.async_tools.database_tools.mysql_tools.async_mysql_orm import Model, StringField, TextField, \ IntegerField, DateTimeField # 创建连接池 db_conn_pool = await self.create_db_conn_pool( DATABASE_HOST='localhost', DATABASE_PORT=3306, DATABASE_USER='root', DATABASE_PWD='root', DATABASE_DB='db_name_xxxx', DATABASE_CHARSET='utf8mb4', DATABASE_AUTOCOMMIT=True, DATABASE_MAX=10, DATABASE_MIN=1, ) # 创建模型 class BondPrices(Model): __db_conn_pool__ = db_conn_pool __table__ = "bond_prices" id = IntegerField(primary_key=True) trade_time = DateTimeField() trade_data = TextField() page_name = StringField(ddl='varchar(45)') is_valid = IntegerField() data_source = StringField(ddl='varchar(100)') verify_md5 = StringField(ddl='varchar(40)') clean_status = IntegerField() create_at = DateTimeField() update_at = DateTimeField() print('检查表是否存在') data_array = await BondPrices.table_exists('erqqwrwfdsa') if data_array == 1: print('表存在') else: print('表不存在') print('直接执行sql语句') data_array = await BondPrices.execute_sql('select * from bond_prices') if data_array: for data_hashmap in data_array: print(data_hashmap) print('增加') bond_price_data = BondPrices(trade_time=datetime.datetime.now(), trade_data='dadad', page_name='保存pagename', data_source='单顺荣', is_valid=1, verify_md5='123456789', clean_status=2, create_at=datetime.datetime.now(), update_at=datetime.datetime.now(), ) insert_res = await bond_price_data.save_db_date() if insert_res: print(f'插入数据成功,主键是{insert_res}') print('修改') bond_price_data = BondPrices(id=4, trade_time=datetime.datetime.now(), trade_data='dadad', page_name='愤忿忿忿忿忿忿忿忿忿忿', data_source='单顺荣', is_valid=1, verify_md5='123456789', clean_status=2, create_at=datetime.datetime.now(), update_at=datetime.datetime.now(), ) insert_res = await bond_price_data.update_db_date() if insert_res: print(f'修改数据成功,影响行数是{insert_res}') print('删除') data_array = await BondPrices.select_by_where(id=3) if data_array: remove_res = await data_array[0].remove_db_date() print(f'删除数据成功,影响行数是{remove_res}') print('查询') data_array = await BondPrices.select_by_where(id=3, page_name='报价行情', limit=1) if data_array: data_hashmap = dict(data_array[0]) print(data_hashmap.get('verify_md5')) if __name__ == '__main__': # 异步工具使用方法示例 demo_ins = Demo(TASK_NUMBER=1) print('end') ``` %package help Summary: Development documents and examples for SomeTools Provides: python3-SomeTools-doc %description help 一些方便日常使用的工具(Some handy tools for everyday use) * 将输入的任何类型的日期字符串类型转化为datetime.datetime类型的日期对象 (* Convert any type of input date string type to a date object of type datetime.datetime) * 移除一个字符串中的回车换行空格制表符等内容 (* Remove carriage returns, newlines, spaces, tabs, etc. from a string) * 将中文字符转为其拼音的首字母 (* Convert Chinese characters to the first letter of their Pinyin) * 更加方便的日志记录工具 (* More convenient logging tools) * 繁体简体中文汉字转换工具 (* Traditional and Simplified Chinese character conversion tool) * redis创建连接同步、异步工具 (* redis creates connection synchronous and asynchronous tools) * 异步布隆过滤工具 (* Asynchronous Bloom Filter Tool) * 正则表达式提取字符串中的中文内容工具 (* Regular expression extraction tool for Chinese content in strings) * 异步 mysql orm (* async mysql orm) * 检测 bytes 编码 (* Detect bytes encoding) * 图片处理 (* Image processing) * 查看操作系统信息 (* View operating system information) * 获取本机ip地址 (* Get the local ip address) ## Installation (安装) ``` bash $ pip install SomeTools -i https://pypi.python.org/simple ``` ## Getting Started (开始使用) ### 1.同步工具使用 (Sync tool usage) ``` pycon from sometools import Common_tools class Demo(Common_tools): def __init__(self, *args, **kwargs): # kwargs['log_file_rec'] = True # kwargs['log_file_name'] = 'ConsumptionService' super(Demo, self).__init__(*args, **kwargs) if __name__ == '__main__': demo_ins = Demo() # 获取本机ip地址(get the local ip address) local_ip_str = Demo.get_host_ip() demo_ins.logger().info(f"local ip address: {local_ip_str}") # 将输入的任何类型的日期字符串类型转化为datetime.datetime类型的日期对象(北京时间UTC+8)(Converts any type of date string type entered to a date object of type datetime.datetime)(beijing time UTC+8) demo_ins.logger(uuid1='uuid1', uuid2='uuid2').info( f"{demo_ins.str_to_obj('2012-12-12 12:12:12')}{type(demo_ins.str_to_obj('2012-12-12 12:12:12'))}") demo_ins.logger().info( f"{demo_ins.str_to_obj('11-May-2021 07:03 EDT')}{type(demo_ins.str_to_obj('11-May-2021 07:03 EDT'))}") # 移除一个字符串中的回车换行空格制表符等内容(Remove carriage return, newline space tabs, etc., from a string) temp_str = 'abc abc \n abc \r' demo_ins.logger().info(f"before clean string{temp_str}") temp_str = Demo.clean_string('abc abc \n abc \r') demo_ins.logger().info(f"after clean string{temp_str}") # 将中文字符转为其拼音的首字母(Convert Chinese characters to the first letter of their pinyin) demo_ins.logger().info(f"{Demo.get_pinyin('中国外汇交易中心')}") # 更加方便的日志记录工具(More convenient logging tool) demo_ins.logger().info(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().debug(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().warning(f"{Demo.get_pinyin('中国外汇交易中心')}") demo_ins.logger().error(f"{Demo.get_pinyin('中国外汇交易中心')}") # 中文繁体简体互转(Convert between Traditional Chinese and Simplified Chinese) demo_ins.logger().info(f"繁体转简体 眾議長與李克強會談->{Demo.traditional_chinese_to_simplified('眾議長與李克強會談')}") demo_ins.logger().info(f"简体转繁体 众议长与李克强会谈->{Demo.simplified_chinese_to_traditional_chinese('众议长与李克强会谈')}") # url编码解码(url encoding and decoding) demo_ins.logger().info(f"url编码->{Demo.url_encode('https://www.baidu.com/s?wd=中国')}") demo_ins.logger().info(f"url解码->{Demo.url_decode('https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD')}") # 正则提取中文(Regularly extract Chinese) temp_str = demo_ins.extract_one_chinese("""downloadPdf1('http://www.sse.com.cn/disclosure/bond/announcement/company/c/2021-03-22/4135530025747110334559080.pdf','厦门建发股份有限公司2021年面向专业投资者公开发行可续期公司债券(第一期)发行公告','2021-03-22','1015','pdf');""") demo_ins.logger().info(f"正则提取单个中文 {temp_str}") temp_str = demo_ins.extract_multi_chinese("""downloadPdf1('http://www.sse.com.cn/disclosure/bond/announcement/company/c/2021-03-22/4135530025747110334559080.pdf','厦门建发股份有限公司2021年面向专业投资者公开发行可续期公司债券(第一期)发行公告','2021-03-22','1015','pdf');""") demo_ins.logger().info(f"正则提取多个中文 {temp_str}") # 检测和转换编码方式(Detect and convert encoding methods) _temp_content = b'\n\n\n\n \n \n \n \n \n \n \n \n \n \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x90\x86\xe5\xbf\xb5 \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1-\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\n \n \n \n \n \n \n \n\t\n\t\n\n\n
\n\t
\n \t\n\t
\n
\n \n
\n\t
\n\t\t
\n\t\t
\n\t
\n
\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91 > > \xe6\xad\xa3\xe6\x96\x87
2021 09/08 17:35:14
\xe6\x9d\xa5\xe6\xba\x90\xef\xbc\x9a\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\n \t

\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x90\x86\xe5\xbf\xb5 \xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1

\xe5\xad\x97\xe4\xbd\x93\xef\xbc\x9a\n \xe5\xb0\x8f \xe4\xb8\xad \xe5\xa4\xa7
\n
\n \n
\n
\n \n
\n
\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xe5\x8c\x97\xe4\xba\xac9\xe6\x9c\x888\xe6\x97\xa5\xe7\x94\xb5\xef\xbc\x88\xe7\x8e\x8b\xe9\x9b\xa8\xe9\xa6\xa8\xef\xbc\x89\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe9\x93\xb6\xe8\xa1\x8c\xe5\x90\x88\xe4\xbd\x9c\xe9\x83\xa8\xe6\x80\xbb\xe7\xbb\x8f\xe7\x90\x86\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xe6\x97\xa5\xe5\x89\x8d\xe6\x8e\xa5\xe5\x8f\x97\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xe8\xae\xb0\xe8\x80\x85\xe4\xb8\x93\xe8\xae\xbf\xe6\x97\xb6\xe8\xa1\xa8\xe7\xa4\xba\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xe9\x87\x8d\xe8\xa7\x86\xe6\x95\xb0\xe5\xad\x97\xe5\x8c\x96\xe5\x92\x8c\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8c\x96\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe6\x9c\xaa\xe6\x9d\xa5\xe5\xb0\x86\xe5\x85\x85\xe5\x88\x86\xe5\x8f\x91\xe6\x8c\xa5\xe6\x94\xaf\xe4\xbb\x98\xe4\xba\xa7\xe5\x93\x81\xe5\xb9\xb3\xe5\x8f\xb0\xe5\x92\x8c\xe6\x9e\xa2\xe7\xba\xbd\xe4\xbd\x9c\xe7\x94\xa8\xef\xbc\x8c\xe6\x8c\x81\xe7\xbb\xad\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe7\xad\x89\xe4\xba\xa7\xe4\xb8\x9a\xe5\x90\x84\xe6\x96\xb9\xe9\x99\x86\xe7\xbb\xad\xe6\x8e\xa8\xe5\x87\xba\xe5\x90\x84\xe9\x93\xb6\xe8\xa1\x8c\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe7\xa0\x94\xe5\x8f\x91\xe6\x9b\xb4\xe5\xa4\x9a\xe6\x99\xae\xe6\x83\xa0\xe4\xbe\xbf\xe6\xb0\x91\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x96\xb0\xe4\xba\xa7\xe5\x93\x81\xe3\x80\x81\xe6\x96\xb0\xe4\xb8\x9a\xe6\x80\x81\xe3\x80\x81\xe6\x96\xb0\xe6\xa8\xa1\xe5\xbc\x8f\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c3060\xe2\x80\x9d\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9b\xae\xe6\xa0\x87\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x8d\xae\xe6\x82\x89\xef\xbc\x8c\xe8\xbf\x91\xe6\x97\xa5\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe8\x81\x94\xe5\x90\x88\xe4\xb8\x8a\xe6\xb5\xb7\xe7\x8e\xaf\xe5\xa2\x83\xe8\x83\xbd\xe6\xba\x90\xe4\xba\xa4\xe6\x98\x93\xe6\x89\x80\xe3\x80\x81\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe5\x85\xb1\xe5\x90\x8c\xe5\x8f\x91\xe5\xb8\x83\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xe3\x80\x82\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe5\x8c\x85\xe5\x90\xab\xe4\xbc\x81\xe4\xb8\x9a\xe7\x89\x88\xe5\x8f\x8a\xe4\xb8\xaa\xe4\xba\xba\xe7\x89\x88\xe4\xb8\xa4\xe5\xa5\x97\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe4\xbb\xa5\xe9\x93\xb6\xe8\x81\x94\xe4\xba\xa4\xe6\x98\x93\xe7\xb3\xbb\xe7\xbb\x9f\xe4\xb8\xad\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa4\xe6\x98\x93\xe8\xa1\x8c\xe4\xb8\xba\xe6\x95\xb0\xe6\x8d\xae\xe4\xb8\xba\xe8\xae\xa1\xe7\xae\x97\xe5\x9f\xba\xe7\xa1\x80\xef\xbc\x8c\xe6\x9e\x84\xe5\xbb\xba\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xe5\x8a\xa9\xe5\x8a\x9b\xe4\xbc\x81\xe4\xb8\x9a\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe8\xbd\xac\xe5\x9e\x8b\xef\xbc\x9b\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xe6\xa0\xb9\xe6\x8d\xae\xe7\x94\xa8\xe6\x88\xb7\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe8\xb4\xa1\xe7\x8c\xae\xe6\x9e\x84\xe5\xbb\xba\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8d\xa1\xe5\x8a\xa8\xe6\x80\x81\xe6\x9d\x83\xe7\x9b\x8a\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe5\x90\x91\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe7\xa4\xbe\xe4\xbc\x9a\xe5\xa4\xa7\xe4\xbc\x97\xe4\xbc\xa0\xe6\x92\xad\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe6\xa6\x82\xe5\xbf\xb5\xe3\x80\x82

\n

\xe8\xb7\xb5\xe8\xa1\x8c\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d \xe6\x8e\xa8\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xba\x8e\xe8\xbf\x91\xe6\x97\xa5\xe5\x8f\x91\xe5\xb8\x83\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe7\x9a\x84\xe5\x88\x9d\xe5\xbf\x83\xe6\x98\xaf\xe4\xbb\x80\xe4\xb9\x88\xef\xbc\x9f\xe6\x83\xb3\xe5\x80\x9f\xe6\xad\xa4\xe4\xbc\xa0\xe6\x92\xad\xe4\xbb\x80\xe4\xb9\x88\xe6\xa0\xb7\xe7\x9a\x84\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe4\xbb\xa5\xe6\x9d\xa5\xe9\x87\x8d\xe8\xa7\x86\xe6\x95\xb0\xe5\xad\x97\xe5\x8c\x96\xe5\x92\x8c\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8c\x96\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe8\x87\xaa\xe5\xae\x9e\xe7\x8e\xb0\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe6\x8f\x90\xe5\x87\xba\xe4\xbb\xa5\xe6\x9d\xa5\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe4\xb8\x80\xe7\x9b\xb4\xe5\x9c\xa8\xe6\x80\x9d\xe8\x80\x83\xe5\xa6\x82\xe4\xbd\x95\xe7\xbb\x93\xe5\x90\x88\xe8\x87\xaa\xe8\xba\xab\xe4\xb8\x9a\xe5\x8a\xa1\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe7\xa7\xaf\xe6\x9e\x81\xe5\x93\x8d\xe5\xba\x94\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe4\xbb\xa5\xe5\x8f\x8a\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe5\x8f\x91\xe5\xb1\x95\xe8\xa6\x81\xe6\xb1\x82\xe3\x80\x82\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe4\xbd\x9c\xe4\xb8\xba\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe8\xbd\xac\xe6\x8e\xa5\xe6\xb8\x85\xe7\xae\x97\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe4\xb8\x8e\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe3\x80\x81\xe5\x95\x86\xe6\x88\xb7\xe3\x80\x81\xe7\x94\xa8\xe6\x88\xb7\xe6\x9c\x89\xe7\x9d\x80\xe5\xa4\xa9\xe7\x84\xb6\xe7\x9a\x84\xe7\xb4\xa7\xe5\xaf\x86\xe8\x81\x94\xe7\xb3\xbb\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xe5\x9c\xa8\xe5\xae\x9e\xe7\x8e\xb0\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe4\xbd\x9c\xe4\xb8\xba\xe9\x87\x8d\xe8\xa6\x81\xe6\x88\x98\xe7\x95\xa5\xe5\x86\xb3\xe7\xad\x96\xe8\xa2\xab\xe6\x8f\x90\xe5\x87\xba\xe6\x97\xb6\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\xb1\xe2\x80\x9c\xe6\x94\xaf\xe4\xbb\x98\xe4\xb8\xba\xe6\xb0\x91\xe2\x80\x9d\xe7\x9a\x84\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x8e\xa8\xe5\x87\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x9b\xb8\xe5\x85\xb3\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe4\xbb\xa5\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe4\xb8\xba\xe7\xba\xbd\xe5\xb8\xa6\xef\xbc\x8c\xe5\x90\x91\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe6\x8e\xa8\xe5\xb9\xbf\xe6\x99\xae\xe5\x8f\x8a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\xbc\x95\xe5\xaf\xbc\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe8\x8a\x82\xe8\x83\xbd\xe5\x87\x8f\xe6\x8e\x92\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x9b\xae\xe6\xa0\x87\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe9\x93\xb6\xe8\x81\x94\xe6\xad\xa4\xe6\xac\xa1\xe5\x8f\x91\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8d\xa1\xe7\x9a\x84\xe5\x8f\x97\xe4\xbc\x97\xe6\x9c\x89\xe5\x93\xaa\xe4\xba\x9b\xef\xbc\x9f\xe6\x94\xaf\xe6\x8c\x81\xe5\x93\xaa\xe4\xba\x9b\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xae\x9e\xe7\x8e\xb0\xef\xbc\x8c\xe9\x9c\x80\xe8\xa6\x81\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe7\x9a\x84\xe5\x85\xb1\xe5\x90\x8c\xe5\x8a\xaa\xe5\x8a\x9b\xe3\x80\x82\xe5\x9c\xa8\xe5\x89\x8d\xe6\x9c\x9f\xe7\x9a\x84\xe5\xb8\x82\xe5\x9c\xba\xe8\xb0\x83\xe7\xa0\x94\xe8\xbf\x87\xe7\xa8\x8b\xe4\xb8\xad\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe4\xba\x86\xe8\xa7\xa3\xe5\x88\xb0\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe9\x83\xbd\xe5\xad\x98\xe5\x9c\xa8\xe7\x9b\xb8\xe5\xba\x94\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe4\xba\xa7\xe5\x92\x8c\xe7\x94\x9f\xe6\xb4\xbb\xe9\x9c\x80\xe6\xb1\x82\xef\xbc\x8c\xe6\x89\x80\xe4\xbb\xa5\xe9\x93\xb6\xe8\x81\x94\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe5\x9c\xa8\xe4\xba\xa7\xe5\x93\x81\xe7\xa0\x94\xe5\x8f\x91\xe9\x98\xb6\xe6\xae\xb5\xe5\xb0\xb1\xe8\xae\xbe\xe8\xae\xa1\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\xaf\xb9\xe5\x85\xac\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa7\xe5\x93\x81\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x8e\xa8\xe5\x8a\xa8\xe6\x9b\xb4\xe5\xa4\x9a\xe7\x9a\x84\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe8\x83\xbd\xe5\xa4\x9f\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xa1\x8c\xe5\x8a\xa8\xe4\xb8\xad\xe3\x80\x82\xe5\x85\xb6\xe4\xb8\xad\xe5\xaf\xb9\xe5\x85\xac\xe4\xba\xa7\xe5\x93\x81\xe9\x9d\xa2\xe5\x90\x91\xe5\xa4\xa7\xe4\xb8\xad\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe3\x80\x81\xe5\xb0\x8f\xe5\xbe\xae\xe4\xbc\x81\xe4\xb8\x9a\xe3\x80\x81\xe4\xb9\xa1\xe9\x95\x87\xe4\xbc\x81\xe4\xb8\x9a\xe7\xad\x89\xe5\x90\x84\xe7\xb1\xbb\xe5\x9e\x8b\xe5\x85\xb7\xe6\x9c\x89\xe7\xbb\xbf\xe8\x89\xb2\xe5\x8f\x91\xe5\xb1\x95\xe9\x9c\x80\xe6\xb1\x82\xe7\x9a\x84\xe4\xbc\x81\xe4\xb8\x9a\xef\xbc\x8c\xe4\xb8\xaa\xe4\xba\xba\xe4\xba\xa7\xe5\x93\x81\xe9\x9d\xa2\xe5\x90\x91\xe4\xbb\xa5\xe5\xb9\xb4\xe8\xbd\xbb\xe5\xae\xa2\xe7\xbe\xa4\xe3\x80\x81\xe6\x96\xb0\xe8\x83\xbd\xe6\xba\x90\xe6\xb1\xbd\xe8\xbd\xa6\xe8\xbd\xa6\xe4\xb8\xbb\xe7\xad\x89\xe4\xb8\xba\xe4\xbb\xa3\xe8\xa1\xa8\xe7\x9a\x84\xe5\xaf\xb9\xe7\x8e\xaf\xe4\xbf\x9d\xe7\x90\x86\xe5\xbf\xb5\xe8\xae\xa4\xe7\x9f\xa5\xe5\xba\xa6\xe8\xbe\x83\xe9\xab\x98\xe7\x9a\x84\xe5\xa4\xa7\xe4\xbc\x97\xe5\xae\xa2\xe7\xbe\xa4\xe3\x80\x82

\n

\xe7\x8e\xb0\xe9\x98\xb6\xe6\xae\xb5\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe9\x80\x9a\xe8\xbf\x87\xe5\x8f\x91\xe8\xa1\x8c\xe8\x99\x9a\xe6\x8b\x9f\xe5\x8d\xa1\xe6\x88\x96\xe7\x8e\xaf\xe4\xbf\x9d\xe6\x9d\x90\xe8\xb4\xa8\xe7\x9a\x84\xe5\x8d\xa1\xe7\x89\x87\xe3\x80\x81\xe5\x90\x91\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\x94\xb5\xe5\xad\x90\xe8\xb4\xa6\xe5\x8d\x95\xe7\xad\x89\xe6\x96\xb9\xe5\xbc\x8f\xef\xbc\x8c\xe4\xbb\x8e\xe4\xba\xa7\xe5\x93\x81\xe6\x9c\xac\xe8\xba\xab\xe5\xb0\xbd\xe5\x8f\xaf\xe8\x83\xbd\xe5\x87\x8f\xe5\xb0\x91\xe7\xa2\xb3\xe6\x8e\x92\xe6\x94\xbe\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe4\xbe\x9d\xe6\x89\x98\xe9\x93\xb6\xe8\x81\x94\xe4\xba\xa4\xe6\x98\x93\xe7\xb3\xbb\xe7\xbb\x9f\xe6\x95\xb0\xe6\x8d\xae\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe6\x9e\x84\xe5\xbb\xba\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe6\x94\xaf\xe6\x8c\x81\xe4\xb8\xaa\xe4\xba\xba\xe5\x9c\xa8\xe5\x85\xac\xe4\xba\xa4\xe5\x87\xba\xe8\xa1\x8c\xe3\x80\x81\xe5\x9c\xb0\xe9\x93\x81\xe5\x87\xba\xe8\xa1\x8c\xe3\x80\x81\xe5\x85\xb1\xe4\xba\xab\xe5\x8d\x95\xe8\xbd\xa6\xe9\xaa\x91\xe8\xa1\x8c\xe3\x80\x81\xe4\xba\x91\xe9\x97\xaa\xe4\xbb\x98\xe5\x85\xac\xe7\xbc\xb4\xe3\x80\x81\xe6\x96\xb0\xe8\x83\xbd\xe6\xba\x90\xe8\xbd\xa6\xe5\x85\x85\xe7\x94\xb5\xe3\x80\x81\xe9\xab\x98\xe9\x93\x81\xe5\x8a\xa8\xe8\xbd\xa6\xe5\x87\xba\xe8\xa1\x8c\xe7\xad\x89\xe5\x85\xad\xe5\xa4\xa7\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x9c\xba\xe6\x99\xaf\xe9\x80\x9a\xe8\xbf\x87\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xe6\xb6\x88\xe8\xb4\xb9\xe7\xb4\xaf\xe8\xae\xa1\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe3\x80\x82\xe5\x90\x8e\xe7\xbb\xad\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xef\xbc\x8c\xe7\xba\xb3\xe5\x85\xa5\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe5\x9c\xba\xe6\x99\xaf\xef\xbc\x8c\xe4\xbb\x8e\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe7\x9a\x84\xe8\xa1\xa3\xe9\xa3\x9f\xe4\xbd\x8f\xe8\xa1\x8c\xe7\x94\xa8\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe5\x80\xa1\xe5\xaf\xbc\xe5\x92\x8c\xe9\xbc\x93\xe5\x8a\xb1\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe3\x80\x82

\n

\xe2\x80\x9c\xe8\x87\xaa\xe8\xba\xab+\xe7\x94\x9f\xe6\x80\x81\xe5\x9c\x88\xe2\x80\x9d\xe5\x8f\x8c\xe5\x8a\xa0\xe7\xa0\x81\xef\xbc\x8c\xe5\x85\xb1\xe4\xbf\x83\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92 \xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe5\xae\x9e\xe7\x8e\xb0

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe5\x9c\xa8\xe5\xbd\x93\xe5\x89\x8d\xe7\xa2\xb3\xe8\xbe\xbe\xe5\xb3\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe5\x8f\x91\xe5\xb1\x95\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xbc\x95\xe9\xa2\x86\xe4\xb8\x8b\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe5\xa6\x82\xe4\xbd\x95\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c3060\xe2\x80\x9d\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xae\x9e\xe7\x8e\xb0\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xbd\x9c\xe4\xb8\xba\xe4\xb8\x80\xe5\xae\xb6\xe8\xb4\x9f\xe8\xb4\xa3\xe4\xbb\xbb\xe7\x9a\x84\xe5\x9b\xbd\xe6\x9c\x89\xe4\xbc\x81\xe4\xb8\x9a\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe4\xbb\x8e\xe6\x8e\xa8\xe8\xbf\x9b\xe8\x87\xaa\xe8\xba\xab\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92\xe5\x92\x8c\xe5\xb8\xa6\xe5\x8a\xa8\xe9\x93\xb6\xe8\x81\x94\xe7\x94\x9f\xe6\x80\x81\xe5\x9c\x88\xe5\x85\xb1\xe5\x90\x8c\xe7\xa2\xb3\xe5\x87\x8f\xe6\x8e\x92\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe4\xbb\x8e\xe8\x87\xaa\xe8\xba\xab\xe7\x9a\x84\xe7\xbb\x8f\xe8\x90\xa5\xe6\xb4\xbb\xe5\x8a\xa8\xe3\x80\x81\xe5\x9b\xad\xe5\x8c\xba\xe5\xbb\xba\xe8\xae\xbe\xe3\x80\x81\xe5\x91\x98\xe5\xb7\xa5\xe8\xa1\x8c\xe4\xb8\xba\xe5\xbc\x95\xe5\xaf\xbc\xe7\xad\x89\xe6\x96\xb9\xe9\x9d\xa2\xe5\x85\xa8\xe9\x9d\xa2\xe5\x87\x8f\xe5\xb0\x91\xe7\xa2\xb3\xe6\x8e\x92\xe6\x94\xbe\xef\xbc\x8c\xe5\x8a\x9b\xe4\xba\x89\xe6\x97\xa9\xe6\x97\xa5\xe5\xae\x9e\xe7\x8e\xb0\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe6\x88\x91\xe4\xbb\xac\xe5\xb0\x86\xe5\xb8\xa6\xe5\x8a\xa8\xe5\x90\x84\xe6\x88\x90\xe5\x91\x98\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe7\xa7\xaf\xe6\x9e\x81\xe8\xb7\xb5\xe8\xa1\x8c\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe8\xa6\x81\xe6\xb1\x82\xef\xbc\x8c\xe6\x8e\xa8\xe5\x87\xba\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1\xef\xbc\x8c\xe6\x94\xaf\xe6\x8c\x81\xe4\xbc\x81\xe4\xb8\x9a\xe5\x92\x8c\xe4\xb8\xaa\xe4\xba\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xe8\xaf\x89\xe6\xb1\x82\xef\xbc\x8c\xe5\xb9\xb6\xe8\x81\x94\xe5\x90\x88\xe5\x90\x84\xe6\x88\x90\xe5\x91\x98\xe6\x9c\xba\xe6\x9e\x84\xef\xbc\x8c\xe5\x80\x9f\xe5\x8a\xa9\xe9\x93\xb6\xe8\x81\x94\xe5\x8d\xa1\xe7\x9a\x84\xe5\x8f\x91\xe8\xa1\x8c\xef\xbc\x8c\xe4\xbc\xa0\xe6\x92\xad\xe7\xa2\xb3\xe4\xb8\xad\xe5\x92\x8c\xe7\x90\x86\xe5\xbf\xb5\xef\xbc\x8c\xe5\x8a\xa9\xe5\x8a\x9b\xe4\xbc\x81\xe4\xb8\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xef\xbc\x8c\xe5\x80\xa1\xe5\xaf\xbc\xe4\xb8\xaa\xe4\xba\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe6\xb4\xbb\xe3\x80\x82

\n

\xe6\x9c\xaa\xe6\x9d\xa5\xe5\xb0\x86\xe6\x95\xb4\xe5\x90\x88\xe4\xbc\x98\xe5\x8a\xbf\xe8\xb5\x84\xe6\xba\x90 \xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe6\x82\xa8\xe8\xae\xa4\xe4\xb8\xba\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x9c\xa8\xe5\x8f\x8c\xe7\xa2\xb3\xe7\x9a\x84\xe8\x83\x8c\xe6\x99\xaf\xe4\xb8\x8b\xe9\x9d\xa2\xe4\xb8\xb4\xe7\x9d\x80\xe5\x93\xaa\xe4\xba\x9b\xe5\x8f\x91\xe5\xb1\x95\xe6\x9c\xba\xe9\x81\x87\xe4\xbb\xa5\xe5\x8f\x8a\xe6\x8c\x91\xe6\x88\x98\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe6\x8f\x90\xe5\x87\xba\xe5\xb0\x86\xe6\x98\xaf\xe7\xa4\xbe\xe4\xbc\x9a\xe7\x94\x9f\xe4\xba\xa7\xe8\xa6\x81\xe7\xb4\xa0\xe8\xb5\x84\xe6\xba\x90\xe9\x85\x8d\xe7\xbd\xae\xe5\x92\x8c\xe7\x94\x9f\xe6\xb4\xbb\xe6\x96\xb9\xe5\xbc\x8f\xe8\xb0\x83\xe6\x95\xb4\xe7\x9a\x84\xe4\xb8\x80\xe6\xac\xa1\xe5\xb7\xa8\xe5\xa4\xa7\xe5\x8f\x98\xe9\x9d\xa9\xef\xbc\x8c\xe5\x90\x84\xe7\xb1\xbb\xe5\x9e\x8b\xe4\xbc\x81\xe4\xb8\x9a\xe9\x83\xbd\xe9\x9d\xa2\xe4\xb8\xb4\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe5\x8f\x91\xe5\xb1\x95\xe7\x9a\x84\xe8\xa6\x81\xe6\xb1\x82\xe3\x80\x82\xe4\xbc\x81\xe4\xb8\x9a\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xbd\xac\xe5\x9e\x8b\xe6\xb6\x89\xe5\x8f\x8a\xe8\x9e\x8d\xe8\xb5\x84\xe8\xb4\xb7\xe6\xac\xbe\xe3\x80\x81\xe6\x94\xaf\xe4\xbb\x98\xe7\xbb\x93\xe7\xae\x97\xe3\x80\x81\xe4\xbf\x9d\xe9\x99\xa9\xe7\xad\x89\xe5\x90\x84\xe7\xb1\xbb\xe9\x87\x91\xe8\x9e\x8d\xe9\x9c\x80\xe6\xb1\x82\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\xb0\x86\xe5\x9c\xa8\xe5\x85\xb6\xe4\xb8\xad\xe5\x8f\x91\xe6\x8c\xa5\xe4\xb8\xbe\xe8\xb6\xb3\xe8\xbd\xbb\xe9\x87\x8d\xe7\x9a\x84\xe4\xbd\x9c\xe7\x94\xa8\xef\xbc\x8c\xe6\x8b\xa5\xe6\x9c\x89\xe5\xb9\xbf\xe9\x98\x94\xe7\x9a\x84\xe5\x8f\x91\xe5\xb1\x95\xe7\xa9\xba\xe9\x97\xb4\xe5\x92\x8c\xe6\x9c\xba\xe4\xbc\x9a\xe3\x80\x82

\n

\xe6\x88\x91\xe4\xbb\xac\xe7\x9b\xb8\xe4\xbf\xa1\xef\xbc\x8c\xe6\x9c\x89\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe7\x9a\x84\xe7\xa7\xaf\xe6\x9e\x81\xe5\x8f\x82\xe4\xb8\x8e\xef\xbc\x8c\xe7\xa2\xb3\xe9\x87\x91\xe8\x9e\x8d\xe4\xba\xa7\xe5\x93\x81\xe5\xb8\x82\xe5\x9c\xba\xe5\xb0\x86\xe5\xbf\xab\xe9\x80\x9f\xe5\x8f\x91\xe5\xb1\x95\xe6\x88\x90\xe7\x86\x9f\xef\xbc\x8c\xe9\x87\x91\xe8\x9e\x8d\xe8\xa1\x8c\xe4\xb8\x9a\xe5\xb0\x86\xe5\x8b\x87\xe7\xab\x8b\xe6\xbd\xae\xe5\xa4\xb4\xef\xbc\x8c\xe5\x88\x87\xe5\xae\x9e\xe6\x8e\xa8\xe8\xbf\x9b\xe2\x80\x9c\xe5\x8f\x8c\xe7\xa2\xb3\xe2\x80\x9d\xe7\x9b\xae\xe6\xa0\x87\xe7\x9a\x84\xe5\xa6\x82\xe6\x9c\x9f\xe5\xae\x9e\xe7\x8e\xb0\xe3\x80\x82

\n

\xe6\x96\xb0\xe5\x8d\x8e\xe7\xbd\x91\xef\xbc\x9a\xe6\x82\xa8\xe8\xae\xa4\xe4\xb8\xba\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe5\x9c\xa8\xe6\x9e\x84\xe5\xbb\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe4\xb8\xad\xe6\x89\xae\xe6\xbc\x94\xe4\xbb\x80\xe4\xb9\x88\xe6\xa0\xb7\xe7\x9a\x84\xe8\xa7\x92\xe8\x89\xb2\xef\xbc\x9f\xe6\x9c\xaa\xe6\x9d\xa5\xe5\x9c\xa8\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x96\xb9\xe9\x9d\xa2\xe8\xbf\x98\xe4\xbc\x9a\xe4\xbd\x9c\xe5\x93\xaa\xe4\xba\x9b\xe5\xb0\x9d\xe8\xaf\x95\xef\xbc\x9f

\n

\xe5\x8d\x95\xe9\x95\xbf\xe8\x83\x9c\xef\xbc\x9a\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\x9c\xa8\xe6\x9e\x84\xe5\xbb\xba\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe4\xb8\xad\xe5\x90\x8c\xe6\x97\xb6\xe6\x89\xae\xe6\xbc\x94\xe7\x9d\x80\xe8\xa7\x84\xe5\x88\x99\xe5\x88\xb6\xe5\xae\x9a\xe8\x80\x85\xe5\x92\x8c\xe6\xb4\xbb\xe5\x8a\xa8\xe5\x8f\x91\xe8\xb5\xb7\xe8\x80\x85\xe7\x9a\x84\xe8\xa7\x92\xe8\x89\xb2\xe3\x80\x82\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe9\x93\xb6\xe8\x81\x94\xe6\x9e\x84\xe5\xbb\xba\xe4\xba\x86\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xe5\x8f\x8a\xe7\x9b\xb8\xe5\xba\x94\xe7\x9a\x84\xe6\xb4\xbb\xe5\x8a\xa8\xe7\x8e\xa9\xe6\xb3\x95\xef\xbc\x8c\xe9\x92\x88\xe5\xaf\xb9\xe6\x80\xa7\xe5\x9c\xb0\xe5\xaf\xb9\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe7\x9a\x84\xe7\xbb\xbf\xe8\x89\xb2\xe6\xb6\x88\xe8\xb4\xb9\xe8\xa1\x8c\xe4\xb8\xba\xe8\xbf\x9b\xe8\xa1\x8c\xe5\xa5\x96\xe5\x8a\xb1\xef\xbc\x8c\xe7\x94\xa8\xe6\xb4\xbb\xe5\x8a\xa8\xe8\xa7\x84\xe5\x88\x99\xe5\x8e\xbb\xe5\xbc\x95\xe5\xaf\xbc\xe5\x92\x8c\xe9\xbc\x93\xe5\x8a\xb1\xe5\xa4\xa7\xe4\xbc\x97\xe8\xb7\xb5\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\x94\x9f\xe6\xb4\xbb\xe3\x80\x82\xe5\x8f\xa6\xe4\xb8\x80\xe6\x96\xb9\xe9\x9d\xa2\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\x9f\xba\xe4\xba\x8e\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe7\xa7\xaf\xe5\x88\x86\xe4\xbd\x93\xe7\xb3\xbb\xef\xbc\x8c\xe8\x81\x94\xe5\x90\x88\xe5\x90\x84\xe5\xae\xb6\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe5\x8f\x91\xe8\xa1\x8c\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xb8\xbb\xe9\xa2\x98\xe5\x8d\xa1\xef\xbc\x8c\xe5\xb8\xa6\xe9\xa2\x86\xe5\x92\x8c\xe5\x8f\xb7\xe5\x8f\xac\xe9\x93\xb6\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x85\xb1\xe5\x90\x8c\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe7\xbb\xbf\xe8\x89\xb2\xe9\x87\x91\xe8\x9e\x8d\xe6\x9c\x8d\xe5\x8a\xa1\xe4\xb8\xad\xef\xbc\x8c\xe4\xb9\x9f\xe8\xae\xa9\xe6\x9b\xb4\xe5\xa4\x9a\xe6\x8c\x81\xe5\x8d\xa1\xe4\xba\xba\xe5\x8f\x82\xe4\xb8\x8e\xe5\x88\xb0\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe8\xa1\x8c\xe5\x8a\xa8\xe4\xb8\xad\xe3\x80\x82

\n

\xe6\x9c\xaa\xe6\x9d\xa5\xef\xbc\x8c\xe4\xb8\xad\xe5\x9b\xbd\xe9\x93\xb6\xe8\x81\x94\xe5\xb0\x86\xe8\x81\x94\xe5\x90\x88\xe5\x95\x86\xe4\xb8\x9a\xe9\x93\xb6\xe8\xa1\x8c\xe3\x80\x81\xe8\xa1\x8c\xe4\xb8\x9a\xe5\x90\x88\xe4\xbd\x9c\xe4\xbc\x99\xe4\xbc\xb4\xef\xbc\x8c\xe6\x95\xb4\xe5\x90\x88\xe4\xbc\x98\xe5\x8a\xbf\xe8\xb5\x84\xe6\xba\x90\xef\xbc\x8c\xe6\x8e\xa2\xe7\xb4\xa2\xe6\x9b\xb4\xe5\xa4\x9a\xe7\xbb\xbf\xe8\x89\xb2\xe4\xbd\x8e\xe7\xa2\xb3\xe4\xba\xa7\xe5\x93\x81\xe5\x92\x8c\xe6\x9c\x8d\xe5\x8a\xa1\xe3\x80\x82

\xe3\x80\x90\xe7\xba\xa0\xe9\x94\x99\xe3\x80\x91 \xe3\x80\x90\xe8\xb4\xa3\xe4\xbb\xbb\xe7\xbc\x96\xe8\xbe\x91:\xe4\xb8\x87\xe5\x98\x89\xe3\x80\x91
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t \n \n\t\t\t\n\t\t\t
\n\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\n
\n
    \n
\n
\t\t\n\t\t\t
\n\n
\n
\n\t\t\t
\n \n\t\t\t
\n
\n
    \n
\n
\n\t\t\t
\n\t\t\t
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n\t
\n
\n\t\n \t\n \n \n \n \n \n \n \n \n\n' print(f'检测bytes内容编码结果:{demo_ins.char_detect(_temp_content)}') # print(f'解码bytes内容转为str结果:{demo_ins.char_to_str(_temp_content)}') # 图片模糊(blurry picture) # temp_aa = demo_ins.img_blurred(r'E:\Users\Administrator\Documents\SomeTools\win11_sunrise.jpg') # print(f"图片模糊后路径{temp_aa}") # 生成验证码(Generate verification code) # temp_aa, img_path = demo_ins.img_generate_verification_code(r'E:\Users\Administrator\Documents\SomeTools\Arial.ttf', r'E:\Users\Administrator\Documents\SomeTools\\') # print(f"根据字符串{temp_aa}生成验证码{img_path}") # 查看硬件信息(View hardware information) print(f'内存信息:{demo_ins.os_memory_info()} 可用内存剩余:{demo_ins.os_memory_info().free}') print(f'CPU信息:{demo_ins.os_cpu_info()}') print(f'硬盘信息:{demo_ins.os_disk_info()}') print(f'网络信息:{demo_ins.os_net_info()}') # 获取本月的中国法定节假日和工作日(Get this month's Chinese statutory holidays and working days) calendar_hashmap = Demo.get_calendar_hashmap() demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(92)}") demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(94)}") demo_ins.logger().info(f"this month's holiday: {calendar_hashmap.get(91)}") demo_ins.logger().info(f"this month's weekend: {calendar_hashmap.get(6)}") demo_ins.logger().info(f"this month's weekend: {calendar_hashmap.get(7)}") demo_ins.logger().info(f"this month's working day: {calendar_hashmap.get(0)}") demo_ins.logger().info(f"this month's extra working day: {calendar_hashmap.get(90)}") # redis使用(use redis) # redis_conn = demo_ins.get_sync_redis_conn(redis_host='10.1.xx.xx', # redis_port='6379', # redis_db=1, # redis_pwd='xx' # ) # msg = redis_conn.set('temp_key1', 'test string1') # demo_ins.logger().info(f"redis set {msg}") # msg = redis_conn.get('temp_key1') # demo_ins.logger().info(f"redis get {msg}") ``` ### 2.异步工具使用 (Asynchronous tool usage) ``` pycon import asyncio import datetime import platform if not (platform.system() == 'Windows'): import uvloop asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) # 使用 uvloop 来替换 asyncio 内部的事件循环。 from sometools.async_tools import CommonAsyncTools class Demo(CommonAsyncTools): def __init__(self, *args, **kwargs): super(Demo, self).__init__(*args, **kwargs) # 事件循环 task_number = kwargs.get('TASK_NUMBER') loop = asyncio.get_event_loop() tasks = [asyncio.ensure_future(self.ready(**kwargs)) for _ in range(task_number)] if platform.system() == 'Windows': loop.set_debug(True) loop.run_until_complete(asyncio.wait(tasks)) async def ready(self, **kwargs): # 1. redis示例 self.aio_redis_conn = await self.get_async_redis_conn(redis_host='xx.xx.xx.xx', redis_port='6379', redis_db=1, redis_pwd='xxx') msg = await self.aio_redis_conn.set('temp_key', 'test string') print(f'redis set {msg}') msg = await self.aio_redis_conn.get('temp_key') print(f'redis get {msg}') # await asyncio.sleep(5) # 2. 布隆过滤示例 to_filter_url = 'https://zhuanlan.zhihu.com/p/376305519' _is_filted = await self.aio_is_bloom_filter_contains(to_filter_url) print(f'布隆过滤 是否存在:{_is_filted}') res = await self.aio_bloom_filter_insert(to_filter_url) print(f'布隆过滤 插入:{res}') _is_filted = await self.aio_is_bloom_filter_contains(to_filter_url) print(f'布隆过滤 是否存在:{_is_filted}') # 3. mysql orm 示例 from sometools.async_tools.database_tools.mysql_tools.async_mysql_orm import Model, StringField, TextField, \ IntegerField, DateTimeField # 创建连接池 db_conn_pool = await self.create_db_conn_pool( DATABASE_HOST='localhost', DATABASE_PORT=3306, DATABASE_USER='root', DATABASE_PWD='root', DATABASE_DB='db_name_xxxx', DATABASE_CHARSET='utf8mb4', DATABASE_AUTOCOMMIT=True, DATABASE_MAX=10, DATABASE_MIN=1, ) # 创建模型 class BondPrices(Model): __db_conn_pool__ = db_conn_pool __table__ = "bond_prices" id = IntegerField(primary_key=True) trade_time = DateTimeField() trade_data = TextField() page_name = StringField(ddl='varchar(45)') is_valid = IntegerField() data_source = StringField(ddl='varchar(100)') verify_md5 = StringField(ddl='varchar(40)') clean_status = IntegerField() create_at = DateTimeField() update_at = DateTimeField() print('检查表是否存在') data_array = await BondPrices.table_exists('erqqwrwfdsa') if data_array == 1: print('表存在') else: print('表不存在') print('直接执行sql语句') data_array = await BondPrices.execute_sql('select * from bond_prices') if data_array: for data_hashmap in data_array: print(data_hashmap) print('增加') bond_price_data = BondPrices(trade_time=datetime.datetime.now(), trade_data='dadad', page_name='保存pagename', data_source='单顺荣', is_valid=1, verify_md5='123456789', clean_status=2, create_at=datetime.datetime.now(), update_at=datetime.datetime.now(), ) insert_res = await bond_price_data.save_db_date() if insert_res: print(f'插入数据成功,主键是{insert_res}') print('修改') bond_price_data = BondPrices(id=4, trade_time=datetime.datetime.now(), trade_data='dadad', page_name='愤忿忿忿忿忿忿忿忿忿忿', data_source='单顺荣', is_valid=1, verify_md5='123456789', clean_status=2, create_at=datetime.datetime.now(), update_at=datetime.datetime.now(), ) insert_res = await bond_price_data.update_db_date() if insert_res: print(f'修改数据成功,影响行数是{insert_res}') print('删除') data_array = await BondPrices.select_by_where(id=3) if data_array: remove_res = await data_array[0].remove_db_date() print(f'删除数据成功,影响行数是{remove_res}') print('查询') data_array = await BondPrices.select_by_where(id=3, page_name='报价行情', limit=1) if data_array: data_hashmap = dict(data_array[0]) print(data_hashmap.get('verify_md5')) if __name__ == '__main__': # 异步工具使用方法示例 demo_ins = Demo(TASK_NUMBER=1) print('end') ``` %prep %autosetup -n SomeTools-0.1.39 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-SomeTools -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri Jun 09 2023 Python_Bot - 0.1.39-1 - Package Spec generated