diff --git a/.gitignore b/.gitignore index b39f873..3057bed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ dist/ build/ +*/dist/ +*/build/ memorytools.egg-info/ *.egg-info/ *.pyc @@ -7,4 +9,7 @@ memorytools.egg-info/ test/ src/ memorytools/__pycache__/ -upx-3.95-win64/ \ No newline at end of file +memorytools/log/ +*/__pycache__/ +upx-3.95-win64/ +.idea/ diff --git a/BUG.md b/BUG.md new file mode 100644 index 0000000..c718344 --- /dev/null +++ b/BUG.md @@ -0,0 +1,47 @@ +#### 开发日志 + +- 2020/3/26 + + - [ ] 发现bug1: + + ``` + Traceback (most recent call last): + File "memorytools.py", line 75, in + MemoryTool().run() + File "memorytools.py", line 69, in run + self.ct.start() + File "C:\Users\memory\OneDrive\code\MemoryTools\memorytools\copytrans.py", line 123, in start + self.trans(self.translator, source) + File "C:\Users\memory\OneDrive\code\MemoryTools\memorytools\copytrans.py", line 86, in trans + la, pro = judgeLanguage(source) + File "C:\Users\memory\OneDrive\code\MemoryTools\memorytools\utils.py", line 151, in judgeLanguage + return ('zh-cn', zh_num / total) + ZeroDivisionError: division by zero + ``` + + 原因分析:传入的字符串只有空格或换行,或者过滤掉特殊符号后只有空格或换行。 + + 解决:加入检测。 + + --- + + - [ ] 发现bug2: + + ``` + Traceback (most recent call last): + File "memorytools.py", line 75, in + MemoryTool().run() + File "memorytools.py", line 69, in run + self.ct.start() + File "C:\Users\memory\OneDrive\code\MemoryTools\memorytools\copytrans.py", line 122, in start + source = p.paste() # 获得剪切板内容 + File "C:\Users\memory\AppData\Local\Programs\Python\Python36\lib\site-packages\pyperclip\__init__.py", line 455, in paste_windows + with clipboard(None): + File "C:\Users\memory\AppData\Local\Programs\Python\Python36\lib\contextlib.py", line 81, in __enter__ + return next(self.gen) + File "C:\Users\memory\AppData\Local\Programs\Python\Python36\lib\site-packages\pyperclip\__init__.py", line 417, in clipboard + raise PyperclipWindowsException("Error calling OpenClipboard") + pyperclip.PyperclipWindowsException: Error calling OpenClipboard ([WinError 5] 拒绝访问。) + ``` + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6973e4d --- /dev/null +++ b/LICENSE @@ -0,0 +1,7 @@ +Copyright <2020> + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index 7807fe2..19b8f03 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,77 @@ -# MemoryTools - python写的小工具合集 +## Memory Tools V2.1.0 -常见错误: +> 2020/12/24 更新 -``` -requests.exceptions.ConnectionError: ('Connection aborted.', TimeoutError(10060, '由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。', None, 10060, None)) -``` +--- -$$ -\frac{du_{i}}{dt})= \sum _{j}T_{ij}v_{i}- \frac{u_{i}}{R_{i}}+I_{i} -$$ +### 1. 运行 -$$ -=- \left[ \frac{1}{3} \frac{0}{1} \frac{1}{1} \right] ,B=- \left[ \frac{1}{1}^{1} \frac{0}{1}, \frac{1}{1} \right] A -$$ +该软件仅支持在windows下面运行。 -$$ - \frac{dE}{dt}= \sum _{i} \frac{ \partial E}{ \partial v_{i}} \frac{dv_{i}}{dt}= \sum _{i}( \sum _{i}T_{ij} \nu _{j}- \frac{u_{i}}{R_{i}}+I_{i}) -$$ +- **使用exe** -$$ - \frac{dE}{dt}=- \sum _{i} \frac{dv_{i}}{dt}( \sum _{j}T_{ij} \nu _{j}- \frac{u_{i}}{R_{i}}+I_{i} -$$ + 为了方便给别人使用,我使用pyinstaller进行了打包,可以在 [MemortTools Release](https://github.com/MemoryD/MemoryTools/releases) 页面进行下载。解压后运行其中的 `memorytools.exe` 即可。 -$$ -C_i( \frac{du_{t}}{dt})= \sum _{J}T_{j}v_{j}- \frac{u_{1}}{R_{1}}+ -$$ +- **使用源码** -$$ - \frac{dE}{dt}=- \sum C_{i}( \frac{dv_{i}}{dt})( \frac{du_{i}}{dt}) -$$ + ```sh + git clone https://github.com/MemoryD/MemoryTools + cd MemoryTools + pip install -r requirements.txt + cd memorytools + python memorytools.py + ``` -$$ - A=- \left[ \frac{1}{3} \frac{0}{1}- \frac{1}{1} \right] ,B=- \left[ \frac{1}{1} \right] ^{ \frac{1}{2}}- \frac{1}{1} -$$ +### 2. 软件功能 -$$ - \frac{du}{dt}=Au-b -$$ +- **复制翻译**:翻译剪切板的文本,并弹框显示结果。现在支持修改源文本并重新翻译。 + - **中文-->英文**:中文翻译成英文,如果复制的文本英文的比例过高,则不会翻译。 + - **英文-->中文**:英文翻译成中文,如果复制的文本中文的比例过高,则不会翻译。 + - **英文 <-> 中文**:中英互译,检测复制的文本是哪种语言,然后翻译成另一种语言。 + - **去除换行**:如果是从pdf上复制,则每一行末尾都会加入换行,结果就不准确,开启去除换行可以避免。 + - **严格模式**:默认使用语言自动检测,如果开启严格模式,则将设置源语言。(可以在谷歌翻译上试一下,在中英文混排时可能有一点差异) +- **OCR识别**:对剪切板中的图片进行OCR识别,并弹框显示。 + - **识别:文本**:识别普通的文本。 + - **识别:公式**:可以识别公式,并转换成 Latex 代码。 + - **去除换行**:是否去除识别后文本中的换行。识别公式时,此项不起作用。 +- **工作提醒** + - **休息提醒:** 在你工作一段时间以后,提醒你该休息了。 + - **摸鱼提醒**: 在你摸鱼一段时间以后,提醒你该工作了。 -$$ - C_{1}( \frac{du_{i}}{dt})= \sum _{j}T_{i}v_{j}- \frac{u_{1}}{R_{1}}+I_{1} -$$ +--- -$$ - ( \frac{du_{i}}{dt})= \sum _{J}T_{ij}v_{j}- \frac{u_{i}}{R_{j}} -$$ +### 3. 软件说明 -$$ --ΣI,(t) í=1 j≠i í=1 - E \left[ \nu (t) \right] =- \frac{1}{2} \sum _{i=1}^{n} \sum _{j \neq i}w_{ij}v_{i}(t) \nu _{j}(t) n -$$ +1. 每次修改菜单项会保存程序的配置,下次启动时自动载入。 +2. 复制翻译使用谷歌翻译的接口。 +3. 如果翻译后的结果与未翻译时一样,则不会显示。 +4. OCR使用百度AI开放平台的接口,用的是我自己申请的key,每天有一定的次数限制。 +5. 当OCR设置为识别公式时,仍然可以识别文本,但是可能会发生意料之外的错误。 +6. 请按时休息 :smile:。 -$$ -i=1 E \left[ \nu (t) \right] =- \frac{1}{2} \sum _{i=1}^{n} \sum _{j \neq i}w_{ij}v_{i}(t)v_{j}(t)- ΣI,,(1) n -$$ +--- -$$ -E[v(t)]=-\frac{1}{2} \sum_{i=1}^{n} \sum_{j \neq i} w_{i j} v_{i}(t) v_{j}(t)-\sum_{i=1}^{n} I_{i} v_{i}(t) -$$ +### 4. 更新日志 +- v2.2.0 [2020/12/24] + - 修复了翻译接口出错的问题。 +- v2.1.0 [2020/10/14] + - 收到某吕姓男子的反馈,一直弹出休息提醒让摸鱼的他很难受,因此要求加入摸鱼提醒。所以我加入了简单的摸鱼检测,即隔一分钟对屏幕进行检测,和上一分钟的屏幕进行对比,如果相似度过高则标记为正在摸鱼,摸鱼时间达到预设时间则弹窗提醒。摸鱼提醒以后,休息提醒的时间将被重置。 -$$ -E(v)=-\frac{1}{2} \sum_{i} \sum_{j} T_{i j} v_{i} v_{j}+\sum_{i} \frac{1}{R_{i}} \int_{0}^{v_{i}} \Psi^{-1}(v) d v-\sum_{i} I_{i} v_{i} -$$ +- v2.0.0 [2020/10/11] -$$ - E(v)=- \frac{1}{2} \sum _{i} \sum _{j}T_{ij} \nu _{i} \nu _{j}+ \sum _{i} \frac{1}{R_{i}} \int _{0}^{v_{i}} \varphi ^{-1}(v)dv- \sum _{i}I_{i}v_{i} -$$ + - 重构了代码,将每个菜单项封装成一个包,搞了一套基础的运行逻辑,以后往里面加东西比较方便。 -$$ - E( \nu )=- \frac{1}{2} \sum _{i} \sum _{j}T_{ij}v_{i} \nu _{j}+ \sum _{i} \frac{1}{R_{i}} \int _{i}^{v_{i}} \Phi ^{-1}( \nu )dv- \sum _{i}I_{i}v_{i} -$$ + - 修复了关闭休息提醒软件会闪退的Bug。 + - 给复制翻译加入了重新翻译的选项,可以编辑复制的源文本并重新翻译,也可以当成一个谷歌翻译的简单GUI界面使用。 -$$ - \sum _{i=1}^{n} \sum _{i=1}^{n}(t) =- \frac{1}{2} \sum _{i=1}^{n} \sum _{j \neq i}w_{ij}v_{i}(t) \nu _{j}(t)- \sum _{i=1}^{n} -$$ +### 关于软件 -$$ - E \left[ \nu (t) \right] =- \frac{1}{2} \sum _{i=1}^{n} \sum _{j=t}w_{ij} \nu _{i}(t) \nu _{j}(t)- \sum _{i=1}^{n}I_{i}v_{i}(t) -$$ +这软件到现在已经快两年了,最初只是想做一个软件帮我去除复制的PDF文本中的换行符,后面又想着直接翻译更省事。之后又觉得加个托盘图标比较酷炫,就想方设法加了一个托盘图标,但是这也使得软件只能在win下运行了。到今年疫情在家无事,又重写了整个软件,优化了外观,并且加入了OCR的接口。 -$$ - \left[ \nu (t+1) \right] -E \left[ \nu (t) \right] =- \left[ v_{k}(t+1)-v_{k}(t) \right] \left[ \sum _{i=1}u_{ik} \nu _{i}(t)+I_{k} \right] -$$ +这学期给实验室一些人用发现了挺多bug,刚好这两天因为运动损伤待在宿舍里,就重构了代码,将各个功能都封装成包,以后往里面加东西就会变得非常方便了。 -$$ - u_{i}(t+1)= \sum _{i} \nu _{ij} t)+I_, -$$ -$$ -\frac{dE}{dt}= \frac{1}{2} \sum _{i=1}^{n} \sum _{j=1}^{n} \frac{d}{dt}(w_{ij}v_{i} \nu _{j})= \frac{1}{2} \sum _{i=1}^{n} \sum _{j=1}^{n} \left[ (v_{i} \nu _{j}) \frac{d}{dt}w_{ij}+w_{ij} \frac{d}{dt}(v_{i} \nu _{j}) \right] -$$ - -$$ -c, - \frac{du_{i}}{dt}=- \frac{u_{i}}{R_{i}}+ \sum _{j=1}^{n} \frac{W(u_{j})}{R_{ij}}+I -$$ - -$$ -i - \frac{du_{i}}{dt}=- \frac{u_{i}}{R_{i}}+ \sum _{j=1}^{n} \frac{ \varphi (u_{j})}{R_{ij}}+I_{i} -$$ - -$$ - ( \frac{du_{i}}{dt})= \sum _{j}T_{ij}v_{i}- \frac{u_{i}}{R_{i}}+I_{i} -$$ - -$$ -c_{i}( \frac{du_{t}}{dt})= \sum _{j}T_{v} \nu _{t}- \frac{u_{1}}{R_{t}}+I_{1} -$$ +### 关于作者 +1. 作者:Memory +2. 邮箱:memory_d@foxmail.com \ No newline at end of file diff --git a/icon.ico b/icon.ico deleted file mode 100644 index 22d6083..0000000 Binary files a/icon.ico and /dev/null differ diff --git a/memorytools/README.md b/memorytools/README.md deleted file mode 100644 index a3abca5..0000000 --- a/memorytools/README.md +++ /dev/null @@ -1,39 +0,0 @@ -## Memory Tools V1.5.5 - -> 2020/3/25 更新 - ---- - -#### 软件功能 - -- **复制翻译**:翻译剪切板的文本,并弹框显示结果。 - - **中文-->英文**:中文翻译成英文,如果复制的文本英文的比例过高,则不会翻译。 - - **英文-->中文**:英文翻译成中文,如果复制的文本中文的比例过高,则不会翻译。 - - **英文 <-> 中文**:中英互译,检测复制的文本是哪种语言,然后翻译成另一种语言。 - - **去除换行**:如果是从pdf上复制,则每一行末尾都会加入换行,结果就不准确,开启去除换行可以避免。 - - **严格模式**:默认使用语言自动检测,如果开启严格模式,则将设置源语言。(可以在谷歌翻译上试一下,在中英文混排时可能有一点差异) - -- **OCR识别**:对剪切板中的图片进行OCR识别,并弹框显示。 - - **识别:文本**:识别普通的文本。 - - **识别:公式**:可以识别公式,并转换成 Latex 代码。(准确率emmm...) - - **去除换行**:是否去除识别后文本中的换行。识别公式时,此项不起作用。 - -- **休息提醒**:在你工作一段时间以后,提醒你该休息了。 - - **更改时间**:提醒时间默认90分钟,可以自己更改。 - ---- - -#### 软件说明 - -1. 复制翻译使用谷歌翻译的接口。 -2. 如果翻译后的结果与未翻译时一样,则不会显示。 -3. OCR使用百度AI开放平台的接口,每天有一定的次数限制。 -4. 当OCR设置为识别公式时,仍然可以识别文本,但是可能会发生意料之外的错误。 -5. 请按时休息 :smile:。 - ---- - -#### 关于作者 - -1. 作者:Memory -2. 邮箱:memory_d@foxmail.com \ No newline at end of file diff --git a/memorytools/__init__.py b/memorytools/__init__.py index 591a76b..c34d732 100644 --- a/memorytools/__init__.py +++ b/memorytools/__init__.py @@ -1,11 +1,11 @@ -''' +""" @name: __init__ -@author: Memory&Xinxin -@date: 2020/03/20 -''' +@author: Memory +@date: 2020/12/24 +""" __title__ = 'memorytools' -__version__ = '1.0.1' -__author__ = 'Memory&Xinxin' -__copyright__ = 'Copyright 2020 Memory&Xinxin' +__version__ = '2.2.0' +__author__ = 'Memory' +__copyright__ = 'Copyright 2020 Memory' diff --git a/memorytools/alert.py b/memorytools/alert.py deleted file mode 100644 index 7e19e6b..0000000 --- a/memorytools/alert.py +++ /dev/null @@ -1,74 +0,0 @@ -from time import time -from boxes import LabelBox -from setting import * -from utils import * - -class Alert(object): - def __init__(self, root, wt=90): - self.root = root - self.alert_time = wt - self.is_alert = True - self.start_time = time() - - def setConfig(self, config): - if 'is_alert' in config: - self.is_alert = config['is_alert'] - if 'alert_time' in config: - self.alert_time = config['alert_time'] - - def getConfig(self): - config = { - 'is_alert': self.is_alert, - 'alert_time': self.alert_time - } - return config - - def createMenu(self): - menu_options = ( - ("开启提醒", isCheckIcon(self.is_alert), self.pauseAlert), - ('30分钟', isPickIcon(self.alert_time == 30), self.changeTime30), - ('60分钟', isPickIcon(self.alert_time == 60), self.changeTime60), - ('90分钟', isPickIcon(self.alert_time == 90), self.changeTime90), - ('120分钟', isPickIcon(self.alert_time == 120), self.changeTime120), - ) - - return menu_options - - def alert(self): - minute = (time() - self.start_time) / 60 # 分钟数 - if minute >= self.alert_time: - return True - return False - - def alertText(self): - return "关闭提醒" if self.is_alert else "开启提醒" - - def pauseAlert(self, sysTrayIcon): - self.is_alert = not self.is_alert - if self.is_alert: - self.start_time = time() - else: - LabelBox().show("虽然你关掉了休息提醒,但还是要注意身体!", '确认') - self.root.refreshMenu() - - def changeTime30(self, sysTrayIcon): - self.alert_time = 30 - self.root.refreshMenu() - - def changeTime60(self, sysTrayIcon): - self.alert_time = 60 - self.root.refreshMenu() - - def changeTime90(self, sysTrayIcon): - self.alert_time = 90 - self.root.refreshMenu() - - def changeTime120(self, sysTrayIcon): - self.alert_time = 120 - self.root.refreshMenu() - - def start(self): - if self.is_alert and self.alert(): # 是否到达预设的提醒时间 - alert_message = "你已经连续工作 %d 分钟了!是时候休息一下了!\n%s" % (self.alert_time, ALERT_MSG) - LabelBox('危险警报').show(alert_message, '等你想要继续工作了再点我') - self.start_time = time() diff --git a/memorytools/boxes.py b/memorytools/boxes.py deleted file mode 100644 index 99a61ed..0000000 --- a/memorytools/boxes.py +++ /dev/null @@ -1,186 +0,0 @@ -''' -@file: boxes.py -@author: Memory -@date: 2020/3/23 -@description: -''' -import os -import pyperclip as p -from setting import * -from PIL import Image, ImageTk -from tkinter import Tk, END -from tkinter.ttk import Label, Button, Frame, LabelFrame -from tkinter.scrolledtext import ScrolledText, Text -from utils import getTextLine - -class BaseBox(Tk): - """docstring for BaseBox""" - def __init__(self, buttons=[], title='Memory Tools'): - super(BaseBox, self).__init__() - self.setWindow(title) - self.setButton(buttons) - - def setWindow(self, title): - self.screen_w = self.winfo_screenwidth() - self.screen_h = self.winfo_screenheight() - self.title(title) - self.resizable(False, False) - if os.path.exists("icon.ico"): - self.iconbitmap('icon.ico') - - min_w = self.screen_w // 3 - min_h = self.screen_h // 3 - self.minsize(min_w, min_h) - - def setButton(self, buttons): - ''' - 定义底部按钮 - ''' - self.btn_frame = Frame(self) - for text, command in buttons: - btn = Button(self.btn_frame, text=text, cursor='hand2', command=command) - btn.pack(side='left', padx=20, pady=10) - - self.cancel_bth = Button(self.btn_frame, text="取消", cursor='hand2', command=self.destroy) - self.cancel_bth.pack(side='left', padx=20, pady=10) - self.btn_frame.pack(side='bottom') - - def start(self, show=True): - ''' - 设置窗口位置,并运行显示消息框 - ''' - self.update() - width = self.winfo_width() - height = self.winfo_height() - pos_x = (self.screen_w - width)//2 - pos_y = max(0, (self.screen_h - height)//2-50) - size = '+%d+%d' % (pos_x, pos_y) - self.geometry(size) - self.mainloop() - - def copy(self): - txt = self.textbox.get("1.0", END) - p.copy(txt) - self.destroy() - - def resizeImg(self, img, max_w, max_h): - ''' - 对img进行缩放,使其长宽不超过给定的 max_w 和 max_h - ''' - img_w, img_h = img.size - if img_w < max_w and img_h < max_h: - return img - - if img_w * max_h > img_h * max_w: - new_w = max_w - new_h = img_h * (new_w / img_w) - img = img.resize((int(new_w), int(new_h))) - else: - new_h = max_h - new_w = img_w * (new_h / img_h) - img = img.resize((int(new_w), int(new_h))) - - return img - - -class TextTextBox(BaseBox): - def __init__(self, title='MemoryBox'): - buttons = [('复制', self.copy), ] - super(TextTextBox, self).__init__(buttons, title) - - def show(self, src, dest): - h1 = min(10, max(5, getTextLine(src)+1)) - h2 = min(10, max(5, getTextLine(dest)+1)) - - self.src_text = ScrolledText(self, height=h1, background='#ffffff', font=("微软雅黑", 11)) - self.textbox = ScrolledText(self, height=h2, background='#ffffff', font=("微软雅黑", 11)) - - self.src_text.insert(END, str(src)) - self.src_text.config(state='disabled') - self.textbox.insert(END, str(dest)) - - self.src_text.pack(side='top', padx=10, pady=10) - self.textbox.pack(side='top', padx=10, pady=10) - - self.start() - -class ImageBox(BaseBox): - def __init__(self, title='MemoryBox'): - super(ImageBox, self).__init__([], title) - - def show(self, img): - img = self.resizeImg(img, self.screen_w//3, 100000) - w, h = img.size - self.geometry('%dx%d' % (w+20, self.screen_h*2//3)) - image = ImageTk.PhotoImage(image=img) - text = Text(self, height=100) - text.image_create(END, image=image) - text.pack(side='top', padx=10, fill='y') - self.cancel_bth.config(text='确定') - self.start() - -class LabelBox(BaseBox): - """docstring for LabelBox""" - def __init__(self, title='MemoryBox'): - super(LabelBox, self).__init__([], title) - - def show(self, text, button=None): - self.minsize(self.screen_w//3, self.screen_h//5) - label = Label(self, text=text, font=("微软雅黑", 12)) - label.pack(padx=10, pady=50) - if button: - self.cancel_bth.config(text=button) - self.start() - -class ImageTextBox(BaseBox): - '''用来显示一张图片和一个文本框,会根据图片的大小和比例调整排列的方式''' - def __init__(self, title='MemoryBox'): - buttons = [('复制', self.copy), ] - super(ImageTextBox, self).__init__(buttons, title) - - def setSize(self, img): - ''' - 对图片进行处理,并限制窗口大小 - ''' - img_w, img_h = img.size - aspect_ratio = self.screen_w / self.screen_h - - if img_w > img_h * aspect_ratio: - w, h = self.screen_w * 0.9, self.screen_h * 0.35 - img = self.resizeImg(img, w, h) - img_w, img_h = img.size - width = max(self.screen_w // 3, img_w+20) - self.maxsize(width, int(self.screen_h*0.9)) - else: - w, h = self.screen_w * 0.45, self.screen_h * 0.7 - img = self.resizeImg(img, w, h) - img_w, img_h = img.size - width = max(self.screen_w // 3, 2 * img_w + 70) - self.maxsize(width, int(self.screen_h*0.9)) - - return img - - def show(self, img, txt): - ''' - 显示 - ''' - img = self.setSize(img) - w, h = img.size - - self.tkImage = ImageTk.PhotoImage(image=img) - self.label = Label(self, image=self.tkImage) - self.textbox = ScrolledText(self, height=10, background='#ffffff', font=("微软雅黑", 11)) - self.textbox.insert(END, txt) - - aspect_ratio = self.screen_w / self.screen_h - if w >= h * aspect_ratio: - self.label.pack(side='top', padx=10, pady=10) - self.textbox.pack(side='top', padx=10, pady=10, fill='both') - else: - self.label.pack(side='left', padx=10, pady=10) - self.textbox.pack(side='right', padx=10, pady=10, fill='both') - - self.start() - -if __name__ == '__main__': - LabelBox().show("虽然你关掉了休息提醒,但还是要注意身体!", '确认') \ No newline at end of file diff --git a/memorytools/config.json b/memorytools/config.json deleted file mode 100644 index 5d0dac6..0000000 --- a/memorytools/config.json +++ /dev/null @@ -1 +0,0 @@ -{"alert": {"is_alert": true, "alert_time": 60}, "copytrans": {"is_trans": true, "newline": true, "strict": false, "mode": "both", "src": "en", "dest": "zh-cn"}, "ocr": {"is_ocr": true, "newline": true, "mode": "formula"}} \ No newline at end of file diff --git a/memorytools/copytrans.py b/memorytools/copytrans.py deleted file mode 100644 index cc01564..0000000 --- a/memorytools/copytrans.py +++ /dev/null @@ -1,123 +0,0 @@ -import pyperclip as p -from boxes import TextTextBox -from googletransx import Translator -from utils import * - - -class CopyTrans(object): - def __init__(self, root): - self.root = root - self.is_trans = True - self.mode = 'both' - self.src = 'en' - self.dest = 'zh-cn' - self.strict = False - self.newline = False - self.last = '' # 记录上次的剪切板内容 - self.translator = Translator(service_urls=['translate.google.cn']) # 获得翻译接口 - - def setConfig(self, config): - if 'is_trans' in config: - self.is_trans = config['is_trans'] - if 'newline' in config: - self.newline = config['newline'] - if 'strict' in config: - self.strict = config['strict'] - if 'mode' in config: - self.mode = config['mode'] - if 'src' in config: - self.src = config['src'] - if 'dest' in config: - self.dest = config['dest'] - - def getConfig(self): - config = { - 'is_trans': self.is_trans, - 'newline': self.newline, - 'strict': self.strict, - 'mode': self.mode, - 'src': self.src, - 'dest': self.dest - } - return config - - def createMenu(self): - menu_options = ( - ("开启翻译", isCheckIcon(self.is_trans), self.pauseTrans), - ('去除换行', isCheckIcon(not self.newline), self.turnNewline), - ('严格模式', isCheckIcon(self.strict), self.turnStrict), - ('英文 <-> 中文', isPickIcon(self.mode=='both'), self.bothMode), - ('英文 --> 中文', isPickIcon(self.mode=='en2zh'), self.en2zhMode), - ('中文 --> 英文', isPickIcon(self.mode=='zh2en'), self.zh2enMode), - ) - - return menu_options - - def pauseTrans(self, sysTrayIcon): - self.is_trans = not self.is_trans - self.root.refreshMenu() - - def en2zhMode(self, sysTrayIcon): - self.mode = 'en2zh' - self.src, self.dest = 'en', 'zh-cn' - self.root.refreshMenu() - - def zh2enMode(self, sysTrayIcon): - self.mode = 'zh2en' - self.src, self.dest = 'zh-cn', 'en' - self.root.refreshMenu() - - def bothMode(self, sysTrayIcon): - self.mode = 'both' - self.root.refreshMenu() - - def turnStrict(self, sysTrayIcon): - self.strict = not self.strict - self.root.refreshMenu() - - def turnNewline(self, sysTrayIcon): - self.newline = not self.newline - self.root.refreshMenu() - - def trans(self, translator, source): - if source == "" or source == self.last: # 是否为空或者跟上次一样 - return None - - la, pro = judgeLanguage(source) - print('检测为:%s, %s. 目标语言为:%s'%(la, pro, self.dest)) - if self.mode != 'both' and la == self.dest and pro > 0.8: # 是否为纯目标语言 - self.last = source - return None - - if not self.newline: - sentence = source.replace("\r", '').replace("\n", " ") # 去除换行符 - else: - sentence = source - - sentence = sentence.strip() - - if self.mode == 'both': - self.src = la - self.dest = 'en' if la == 'zh-cn' else 'zh-cn' - - try: - if self.strict: - text = translator.translate(sentence, src=self.src, dest=self.dest).text # 翻译 - else: - text = translator.translate(sentence, dest=self.dest).text - except Exception as e: - text = str(e) - # 如果与原文本一样,则不显示 - if text == sentence: - self.last = source - print('译文与原文一致,因此不显示。') - return None - # print("%s\n%s\n" % (sentence, text)) # 打印到命令行 - TextTextBox('翻译结果').show(sentence, text) - self.last = p.paste() - - def start(self): - if not self.is_trans: # 是否暂停 - return - source = p.paste() # 获得剪切板内容 - self.trans(self.translator, source) diff --git a/memorytools/count_code.py b/memorytools/count_code.py new file mode 100644 index 0000000..4c13d4d --- /dev/null +++ b/memorytools/count_code.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +""" +@name: count_code +@author: Memory +@date: 2020/10/11 +@description: 统计项目中的py代码行数 +""" + +from pathlib import Path + + +def count_code(cwd: Path, count: dict): + for py in cwd.glob("*.py"): + count[str(py)] = len(py.read_text(encoding="utf-8").split('\n')) + + for p in cwd.iterdir(): + if p.is_dir(): + count_code(p, count) + + return count + + +count = count_code(Path(), {}) +total = 0 +for py, line in count.items(): + total += line + print(py, line) + +print(total) + + diff --git a/memorytools/globals.py b/memorytools/globals.py new file mode 100644 index 0000000..fff162b --- /dev/null +++ b/memorytools/globals.py @@ -0,0 +1,244 @@ +# -*- coding: utf-8 -*- +""" +@name: globals +@author: Memory +@date: 2020/10/11 +@description: 一些全局变量的定义 +""" +from string import punctuation +from easydict import EasyDict +from pathlib import Path +from base64 import b64decode +from tools.logger import logger + +icon_bs64 = { + "icon.ico": "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8f9dr/X/Zrr8/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2m9/f9Wp/D/RpTl/5CNmP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/YpDH/0WT5f9Fk+X/RZPl4ESS5BoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5ZFFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1+y9/9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9ysuf/xYlj/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7aKcv9FkuT/RZPl/0WT5f9Fk+X/RZLkzESS5AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEk+RbRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/Xa71/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///6ecmP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/do+y/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLklwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJLlGUWT5e9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9YqfL/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///98tOH/yIlh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7KKdv9GkuP/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X+RJLkRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkuWgRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f5Ek+TaRJPlrUST5ZVFk+WSRJLkpUST5MxFk+T6RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1Oj7/9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///66YjP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/bY+8/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+XbRJLkBgAAAAAAAAAAAAAAAAAAAAAAAAAARJLlJUWT5fxFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WS5epEk+V8RJPlHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST4xBEk+RlRZPl2EWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/TZzq/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+Dsdb/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/6qLfv9Fk+T/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+VuAAAAAAAAAAAAAAAAAAAAAAAAAABEkuWQRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+SfRJLlDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEkuQERJPkeUWT5ftFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9GlOX/ar7+/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a77+/7SUgv/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiWD/ZJDF/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5eNEk+UFAAAAAAAAAAAAAAAARJPkA0SS5elFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLkfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJLlS0WT5fhFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9itfn/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+Jrcr/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/6CMiP9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5VgAAAAAAAAAAAAAAABDk+U5RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0SS5KUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPlYkWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1ip8v9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///bL78/7qReP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/HiWH/W5HO/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLkugAAAAAAAAAAAAAAAEST5XdFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+TzQ5HjFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJLluEWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/TJvq/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+Qqb//yYlg/8mJYP/JiWD/yIlg/7mKcP+si3z/q4t9/7SKdP/EiWX/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/5eMkv9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X7RZPkEwAAAAAAAAAARJLkpUWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5ZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEkuQ4RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/Zbj7/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///brz4/7+OcP/JiWD/wYln/3+Oqf9Qktn/RZPl/0WT5f9Fk+X/RZPl/0WS5P9ZkdD/eo6v/6OLhv/GiWL/yYlg/8mJYP/FiWT/VJHV/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+VaAAAAAAAAAABEkuTGRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJPkVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESS5SZFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Wp/H/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+XpbT/yYlg/8eJYf9gkcn/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1OR1v+NjZv/xIlk/42Nm/9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5ZoAAAAAAAAAAEWS5dtFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9EkuQrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPkWEWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0iW5/9pvf7/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///cbvz/8OM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+v9Wpvr/Vqb6/1am+v9Wpvr/os78//3+/v/////////////////////////////////////////////////////////////////RnHn/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiF8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJiGCPyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/ny7n/////////////////////////////////////////////////9ff6/9vk7f/v8/f//////+Tx/v9jrPr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9LluX/MW+w/yJZk/8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8jW5X/OnzC/1Sj9/9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/6XQ/P////////////z9/v/f5+//5Ovy//7+/v///////////////////////////////////////////9Off//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iJXzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmJYJPJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/+jMu///////////////////////////////////////9/n7/36dv/8oXJT/IliS/yNZkv9ojbT/6/D1/9Dm/f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/ydhnf8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8iWZL/L22t/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v+Gv/v//v7///////+uwtf/OGmd/yJYkv8iWJL/RXKj/8fV4///////////////////////////////////////1KGB/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIlfNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyYhgjcmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/58q4//////////////////////////////////7+/v9mjLT/IliS/yJYkv8iWJL/IliS/yJYkv9IdKT/9/n7/5TG+/9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/KmWj/yJZkv8iWZP/L22t/z6Dy/9JlOH/UJ7v/1Sj9v9SofP/TZjo/0GH0P8taaj/IlmS/yJZkv8iWpP/VaT4/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/XKn6/+v0/v//////r8LX/yJYkv8iWJL/IliS/yJYkv8iWJL/J1yU/8/b5//////////////////////////////////Tn33/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiV8yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJiV+HyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/kxbH/////////////////////////////////y9jl/yJYkv8iWJL/IliS/yJYkv8iWJL/IliS/yJYkv+lu9L/6PP+/1em+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Qnu//QojS/0+b7P9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1Wl+f9Ahs//LGin/0CFzv9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v+ezPz///////39/v84aZ3/IliS/yJYkv8iWJL/IliS/yJYkv8iWJL/XYSv/////////////////////////////////9CZdv/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iIXykAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmIX3fJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/+C8pf////////////////////////////////+Yscz/IliS/yJYkv8iWJL/IliS/yJYkv8iWJL/IliS/3KUuf//////g737/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/+Dv/v//////4Ojw/yJYkv8iWJL/IliS/yJYkv8iWJL/IliS/yJYkv8pXZX/////////////////////////////////zJBp/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIhfGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfY8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/2q+T/////////////////////////////////521z/8iWJL/IliS/yJYkv8iWJL/IliS/yJYkv8iWJL/d5i8//////+z1/z/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9or/r//v7////////m7PL/IliS/yJYkv8iWJL/IliS/yJYkv8iWJL/IliS/y9imP////////////////////////////z59//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP7IiV8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHh2BLyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/Tn37/////////////////////////////////2+Tt/yNZkv8iWJL/IliS/yJYkv8iWJL/IliS/yJYkv+2yNv//////9To/f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/4nA+/////////////7+/v9HdKT/IliS/yJYkv8iWJL/IliS/yJYkv8iWJL/bpG3////////////////////////////9enh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIhf6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiIXy3JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8qMZf/+/fz/////////////////////////////////iKXE/yJYkv8iWJL/IliS/yJYkv8iWJL/Y4my//3+/v//////5PH+/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/mcn8/////////////////8nW5P8oXJX/IliS/yJYkv8iWJL/IliS/zVmm//j6vH////////////////////////////s1cf/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiF/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4dgCcmJX/3JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg//Xq4v/////////////////////////////////+/v7/qL3U/0h1pf8nXJT/Pm2g/5Ksyf/5+/z////////////m8v7/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v+ayvz//////////////////////9Lc6P9fhrD/LF+W/zBjmf9vkrj/4+rx/////////////////////////////////+G+p//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iIX6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyYlf3MmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/6c++/////////////////////////////////////////////////////////////////////////////////9rr/f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/47D+///////////////////////////////////////////////////////////////////////////////////////1KKD/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIlfegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiF+ryYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/ar5T/////////////////////////////////////////////////////////////////////////////////vdz9/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/cbT6//////////////////////////////////////////////////////////////////////////////////v39P/JimL/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiV9LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiIX3LJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8yQaf/9/Pv///////////////////////////////////////////////////////////////////////////+Rxfv/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/7fX+////////////////////////////////////////////////////////////////////////////7NbI/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/siIXxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfNsmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/+7bz///////////////////////////////////////////////////////////////////////9fn+/12q+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v+x1vz////////////////////////////////////////////////////////////////////////////ar5P/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiGDWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiV4DyYhg7smJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/27CV//////////////////////////////////////////////////////////////////////+s0/z/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2ev+v/4+/7/////////////////////////////////////////////////////////////////+/bz/8qMZP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iIX5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiV+pyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/Ki2P/+vTw////////////////////////////////////////////////////////////5/L+/12p+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/6PO/P/////////////////////////////////////////////////////////////////nyrn/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/x4hgSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiJX1nJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/jwq3///////////////////////////////////////////////////////b6/v92t/v/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5VdFk+XvRZPl/0WT5f9Fk+X/R5XmagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5ANEkuSsRZPl70SS5JdDk+UWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESS5RlFkuWaRZPk8ESS5KVEkuQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////gAAAAD//////////////4AAAAAAAeAf//////////AAAAAAAAAAD/////////8AAAAAAAAAAAf///+AH//8AAAAAAAAAAAD///8AAP/4AAAAAAAAAAAA///8AAAf4AAAAAAAAAAAAH//8AAAD8AAAAAAAAAAAAB//+AAAAMAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAAPgAB+AAAAAAAAAAAAAAAAD4AB/4AAAAAAAAAAAAAAAAcAB//gAAAAAAAAAAAAAAAHAA//8AAAAAAAAAAAAAAABwAP//gAAAAAAAAAAAAAAAMAH//4AAAAAAAAAAAAAAADAB//+AAAAAAAAAAAAAAAAwAf//gAAAAAAAAAAAAAAAMAH//4AAAAAAAAAAAAAAABAB//+AAAAAAAAAAAAAAAAQAf//gAAAAAAAAAAAAAAAEAH//4AAAAAAAAAAAAAAABAB//+AAAAAAAAAAAAAAAAQAf//gAAAAAAAAAAAAAAAEAD//4AAAAAAAAAAAAAAABAA//+AAAAAAAAAAAAAAAAYAf//gAAAAAAAAAAAAAAAGAH//4AAAAAAAAAAAAAAABwD//+AAAAAAAAAAAAAAAAeB///gAAAAAAAAAAAAAAAH////4AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP////+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf/////AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////gAAAAAAAAAAAAAAP/////4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////wAAAAAAAAAAAAAAf/////8AAAAAAAAAAAAAAP//////gAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAP//////gAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAH//////gAAAAAAAAAAAAAB//////4AAAAAAAAAAAAAAP/////+AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAA//////wAAAAAAAAAAAAAAP/////8AAAAAAAAAAAAAAB//////AAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAH/////4AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAH/////4AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAB//////AAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAP/////+AAAAAAAAAAAAAAD//////gAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA///////gAAAAAAAAAAAAAf//////8AAAAAAAAAAAAAH///////AAAAAAAAAAAAAD///////4AAAAAAAAAAAAA////////AAAAAAAAAAAAAf///////wAAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////wAAAAAAAAAAAB////////8AAAAAAAAAAAA/////////gAAAAAAAAAAAP////////8AAAAAAAAAAAH/////////gAAAAAAAAAAD/////////8AAAAAAAAAAB//////////gAAAAAAAAAA//////////8AAAAAAAAAAf//////////gAAAAAAAAAP//////////4AAAAAAAAAH//////////+AAAAAAAAAD///////////gAAAAAAAAA///////////4AAAAAAAAAP//////////+AAAAAAAAAD///////////gAAAAAAAAA///////////4AAAAAAAAAP///////////AAAAAAAAAH///////////wAAAAAAAAB///////////8AAcAAAMAAf///////////AAP/AD/gAH///////////wAH////8AB///////////+AD/////gA////////////gB/////8AP///////////4A//////gD////////////A//////+B////////////wf//////wf///8=", + "trans.ico": "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWAAAA8gAAAP4AAAD/AAAA8gAAAPIAAAD8AAAA/wAAAPIAAAC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAjgAAAOwAAAD/AAAAYQAAACoAAAD/AAAA/wAAAEsAAAA2AAAA/wAAAPYAAAAAAAAAAAAAAAcAAACyAAAA/wAAAP8AAAD/AAAA/wAAAL4AAAAAAAAATAAAAE8AAAAAAAAAjAAAAP8AAADyAAAAAAAAAAAAAAB7AAAA/wAAAHsAAABFAAAA3gAAAP8AAAD/AAAACgAAAEQAAABvAAAAAAAAAP8AAAD/AAAA8gAAAAAAAAAAAAAAlwAAAP8AAAAjAAAAAAAAAMcAAAD/AAAA/wAAAHEAAAA9AAAAUwAAAEMAAAD/AAAA/wAAAPIAAACVAAAA6QAAAP8AAAD/AAAA/wAAAPQAAAD9AAAA/wAAAP8AAADyAAAAAAAAAAAAAADPAAAA/wAAAP8AAADyAAAA/wAAAL0AAACMAAAAZQAAAGIAAABqAAAA4AAAAP8AAAD/AAAA/wAAAFwAAAA7AAAA/wAAAP8AAAD/AAAA8wAAAPoAAABAAAAAsQAAAK8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAASQAAADQAAAC8AAAA/wAAAP4AAACwAAAAyQAAAOoAAAD+AAAA1QAAANYAAADQAAAA0QAAANIAAACWAAAA/wAAAFIAAAAAAAAAbwAAAP8AAAD/AAAANAAAAAAAAACDAAAA9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAArAAAAAAAAAP8AAAAdAAAAYwAAAP0AAAAAAAAAZgAAAPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtAAAAcAAAANYAAAD/AAAAmwAAALMAAAD/AAAAuQAAAIAAAADmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wAAAF8AAABzAAAAaAAAAP0AAADgAAAAYQAAAF0AAACBAAAA7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAACLAAAAJwAAACYAAAB1AAAAZwAAACYAAAAtAAAAtwAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3AAAA/wAAAP8AAAD/AAAA7gAAAPMAAAD/AAAA/wAAAP8AAACTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ABBTfwAbWXwAHJ54EhTRcBIUk/EAExFADA6XAgAZXIMAG1lIAByeWE/Qk9hv01TAD9JTgA/QUwzP1BBAD89Qw==", + "about.ico": "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAJEAAADOAAAA7QAAAO0AAADNAAAAkAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAP8AAAD/AAAA+wAAANoAAADZAAAA3AAAANcAAADjAAAA/wAAAP8AAAC5AAAAAAAAAAAAAAAAAAAAlwAAAP8AAAD/AAAA/wAAAMYAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAP8AAAD/AAAA/wAAAJIAAAAAAAAAKwAAAP8AAAD/AAAA/wAAAP8AAADqAAAAkwAAAB4AAAAAAAAARwAAAKMAAAD/AAAA/wAAAP8AAAD/AAAAJwAAAJsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAABVAAAAAAAAAKQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJcAAADaAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAATgAAAAAAAACMAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD1AAAA4gAAAEMAAAAAAAAAjAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPUAAAD/AAAA/wAAAP8AAAD/AAAA4gAAABAAAAAAAAAAAAAAAIYAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADbAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADCAAAARgAAAAQAAACQAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAmwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAAC8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlwAAACwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAM0AAAAeAAAAMQAAANQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAACgAAAAAAAAAmAAAAP8AAAD/AAAA/wAAAP8AAACAAAAAAAAAAAAAAAB3AAAA/wAAAP8AAAD/AAAA/wAAAJQAAAAAAAAAAAAAAAAAAAC9AAAA/wAAAP8AAAD/AAAA5gAAAEEAAAA+AAAA4gAAAP8AAAD/AAAA/wAAALoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAJMAAADPAAAA9gAAAPYAAADPAAAAkgAAADIAAAAAAAAAAAAAAAAAAAAA8A9BTeAHbWXAA3J5g+FTRQGAUk8AgExFAYA6XACAZXIBgG1lAYByeQAAQk8BgE1TgYFJTsADQUzgB1BB8A89Qw==", + "check.ico": "AAABAAEAEBIAAAEAIADwBAAAFgAAACgAAAAQAAAAJAAAAAEAIAAAAAAAAAAAAGEPAABhDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAA9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwAAAH4AAACDAAAAlQAAABsAAABrAAAA7AAAAAwAAABcAAAAkQAAAH8AAACAAAAAggAAAH0AAAB5AAAAIwAAAPIAAAD/AAAA/wAAAOIAAABFAAAA0AAAAP8AAABrAAAAdgAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAFcAAAD/AAAA0gAAADAAAAAAAAAAeQAAAP8AAAD/AAAA8QAAACAAAAAcAAAARAAAAD4AAAAiAAAAjwAAAP8AAABRAAAA/wAAALoAAAAAAAAAHQAAAPkAAAD/AAAA/wAAAP8AAACaAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAD/AAAAUgAAAP8AAACxAAAAAAAAAJ8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAEoAAAAAAAAAAAAAAAAAAABnAAAA/wAAAFIAAADkAAAAGQAAAC8AAAD/AAAA/wAAAP8AAAD9AAAA/wAAAP8AAADNAAAAAQAAAAAAAAAAAAAAZwAAAP8AAABSAAAALQAAAAEAAADfAAAA/wAAAP8AAACyAAAAUwAAAP4AAAD/AAAA/wAAAHMAAAAAAAAAAAAAAGcAAAD/AAAAUgAAAF4AAAAcAAAAywAAAP8AAAD/AAAASAAAAAAAAACnAAAA/wAAAP8AAADwAAAAHAAAAAAAAABnAAAA/wAAAFIAAAD/AAAAiwAAAAAAAAB/AAAAmAAAAAAAAAAAAAAAJQAAAPcAAAD/AAAA/wAAAJ4AAAAAAAAAYQAAAP8AAABRAAAA/wAAAMcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAA/wAAAP8AAAD/AAAAGAAAAFEAAAD/AAAAUAAAAP8AAAC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAANgAAAD/AAAA/wAAAKwAAAAXAAAA6AAAAGwAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA/wAAAP8AAAD/AAAAUAAAAAsAAAA2AAAA/wAAALUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAD/AAAA/wAAAOIAAAARAAAAAAAAAPoAAAD/AAAAvwAAAMEAAADEAAAAxAAAAMQAAADGAAAA3AAAAFkAAAAbAAAA9wAAAP8AAAD/AAAAjgAAAAAAAADSAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADgAAAAAAAAAHUAAAD/AAAA/wAAAP8AAABhAAAADQAAABAAAAAQAAAADwAAAA8AAAAPAAAADwAAAA8AAAANAAAAGwAAAAAAAAAGAAAA3gAAAP8AAADzAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAACuAAAAEAAAAAD//yAo//82Kd+HaWP//3Nv//8gVv//dWH//1N0//9pb///MS7//0Nv//9vbv//VG///3Nc//9TMf//Q0///1RP//9TPf//XFA=", + "alert.ico": "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAJAQAQCQEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICEdDg4P/w4OD/8gICEdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgLxQUFc0UFBXNICAgLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHiUaGhtZGBgZehgYGYMYGBl9GBgZfRgYGYMYGBl6GhobWR4eHiUAAAAAAAAAAAAAAAAAAAAAHBwcTBISE98PDxD/DQ0O/w0NDv8MDA3/DQ0O/w0NDv8MDA3/DQ0O/w0NDv8PDxD/EhIT3xwcHEwAAAAAAAAAABQUFa8ICAn/Dg4P/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dg4P/wgICf8UFBWvAAAAAAAAAAAhISETERES4gwMDf8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/wwMDf8RERLiISEhEwAAAAAAAAAAAAAAACAgIBkQEBHmDQ0O/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8QEBHmICAgGQAAAAAAAAAAAAAAAAAAAAAAAAAAISEhIRAQEfUNDQ7/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8QEBH1ISEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRa1DAwN/w8PEP8PDxD/Dw8Q/w8PEP8MDA3/FRUWtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMUtQ0NDv8PDxD/Dw8Q/w8PEP8PDxD/DQ0O/xMTFLUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTFLkNDQ7/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8TExS5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBWsDAwN/w8PEP8PDxD/Dw8Q/w8PEP8MDA3/FBQVrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhobbAsLDP8PDxD/Dw8Q/w8PEP8PDxD/CwsM/xoaG2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRbACgoM/w4OD/8ODg//CgoM/xUVFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGXAPDxD/Dw8Q/xgYGXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhYXsBYWF7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n9BTf5/bWXwD3J5gAFTRYABUk/AA0xF4Ac6XPAPZXLwD21l8A9yefAPQk/wD01T8A9JTvgfQUz8P1BB/n89Qw==", + "ocr.ico": "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVAAAA6QAAAOgAAABNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAAA/wAAAP8AAAD/AAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAABaAAAA/wAAAP8AAABTAAAAqgAAAP8AAAAAAAAAAAAAAAAAAABIAAAAwwAAAP8AAAD/AAAA/wAAALIAAAB4AAAA/wAAAP8AAABCAAAAAQAAAPoAAABrAAAAAAAAAAAAAACbAAAA/wAAAP8AAAC1AAAAkwAAALUAAAD/AAAA/wAAAP8AAAD+AAAAaQAAAP8AAAB6AAAAAAAAAAAAAACeAAAA/wAAAI4AAAAFAAAAAAAAAAAAAAAAAAAABQAAAIcAAAD/AAAA/wAAAP8AAABsAAAAAAAAAAAAAAA7AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiwAAAP8AAABzAAAAAAAAAAAAAAAAAAAA0wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AAAAsQAAAAAAAAAAAAAAAAAAAP8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswAAAP8AAAAEAAAAAAAAAAAAAAD/AAAAhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUAAAD/AAAADgAAAAAAAAAAAAAA/wAAALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyAAAA/wAAAAQAAAAAAAAAAAAAANMAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAANMAAAAAAAAAAAAAAAAAAAA7AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwAAAP8AAAA7AAAAAAAAAAAAAAAAAAAAAAAAAJ4AAAD/AAAAjgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAjgAAAP8AAACeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwAAAP8AAAD/AAAAtQAAAJMAAAC1AAAA/wAAAP8AAACbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAwwAAAP8AAAD/AAAA/wAAAMMAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//lBTf/wbWX/5HJ58A1TRcABUk+Pg0xFn8c6XD/nZXI/521lP+dyeT/nQk8/501Tn89JTo+PQUzAH1BB8H89Qw==", + "pick.ico": "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUVFQAJCQkLPT09OF1dXVdvb29vgYGBiJCQkJaRkZGVhYWFhXJycm5hYWFXRkZGOQ4ODgwdHR0AAAAAAFJSUgAvLy8kkZGRq83NzfHg4OD96urq/9zc3P/Nzc3/zs7O/9vb2//r6+v/4uLi/dHR0fKVlZWuNTU1JmBgYAAAAAASlpaWsfDw8P///////v7+//7+/v/p6en/wMDA/8DAwP/o6Oj//v7+//7+/v//////8vLy/5qamrcFBQUWWlpaZNvb2/j//////Pz8//v7+//+/v7//v7+/8PDw//BwcH//v7+//7+/v/7+/v//Pz8///////e3t76YWFha4aGhqb19fX/6Ojo/3R0dP9XV1f/q6ur//n5+f+enp7/mpqa//r6+v+urq7/WFhY/3Fxcf/m5ub/9/f3/4yMjK6MjIyw+fn5/5SUlP8MDAz/MjIy/ykpKf+lpaX///////////+qqqr/KSkp/zMzM/8MDAz/jo6O//r6+v+SkpK4e3t7k/Hx8f90dHT/TU1N/2RkZP9wcHD/VVVV//b29v/4+Pj/WVlZ/25ubv9lZWX/UFBQ/25ubv/z8/P/gYGBmmNjY27n5+f9l5eX/05OTv99fX3/fHx8/2NjY//4+Pj/+vr6/2dnZ/96enr/fn5+/1BQUP+RkZH/6urq/mpqanY5OTk+zc3N7d7e3v8zMzP/KSkp/zIyMv/AwMD////////////ExMT/NDQ0/yoqKv8wMDD/2tra/9LS0vBBQUFFAAAADJmZmbL5+fn/wsLC/3t7e//AwMD//Pz8//z8/P/8/Pz//f39/8PDw/97e3v/v7+///r6+v+fn5+6AAAAEF5eXgAyMjJgtra2/P///////////v7+//z8/P/8/Pz//Pz8//z8/P/+/v7///////////+9vb39OTk5Z3l5eQAAAAAcAAAAvCUlJf+2trb//Pz8///////9/f3//f39//39/f/9/f3///////z8/P+7u7v/Kioq/wAAAMEAAAAgAAAAVwAAAPgAAAD/FhYW/3p6evTS0tLy6Ojo/+3t7f/s7Oz/5+fn/8/Pz/N6enrzFxcX/wAAAP8AAAD6AAAAXwAAADQAAADdAAAA/wAAAOgBAQFhSEhIO3BwcGh3d3d5c3NzeWlpaWlCQkI8AQEBXQAAAOYAAAD/AAAA4AAAADkAAAACAAAARgAAAIsAAABLAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABIAAAAiwAAAEkAAAAC//8AAMADAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAB+AAAA==", + "exit.ico": "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC6AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAC7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAP8AAAD/AAAAHQAAAAwAAAAOAAAADgAAAAwAAAAbAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADXAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAMAAAA1wAAAOcAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAD/AAAA/wAAAAAAAAAMAAAA1wAAAP8AAADVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA/wAAAP8AAAAPAAAA1wAAAP8AAADXAAAAGQAAAAwAAAAOAAAADgAAAA4AAAAPAAAAEQAAAAAAAAAAAAAAEAAAAP8AAAD/AAAA5AAAAP8AAAD/AAAA8AAAAPEAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAAAAAAAMAAAD/AAAA/wAAAOQAAAD/AAAA/wAAAPAAAADxAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA1wAAAAAAAAADAAAA/wAAAP8AAAAPAAAA1wAAAP8AAADXAAAAGQAAAAwAAAAOAAAADgAAAA4AAAAPAAAAEQAAAAAAAAAAAAAAEAAAAP8AAAD/AAAAAAAAAAwAAADXAAAA/wAAANUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAD/AAAA/wAAAAAAAAAAAAAADAAAANcAAADmAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADXAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/wAAAP8AAAAdAAAADAAAAA4AAAAOAAAADAAAABsAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC6AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAC7/ABBTfwAbWX8/HJ5/PxTRef8Uk/H/ExFh/w6XAAMZXIADG1lh/xyecf8Qk/n/E1T/PxJTvz8QUz8AFBB/AA9Qw==", +} + + +class PATH: + cwd = Path() + plugins = cwd / 'plugins' + config = cwd / 'config' + icon = cwd / 'src' / 'icon' + log = cwd / 'log' + config.mkdir(parents=True, exist_ok=True) + + +class TEXT: + hover = "Memory Tools" + rest_alert = '你已经连续工作 %d 分钟了!是时候休息一下了!\ntip: 连续在电脑前工作太久容易脱发,得颈椎病,猝死。' + slack_alert = '你已经连续摸鱼 %d 分钟了!是时候工作一下了!\ntip: 连续摸鱼太久容易延毕,失业,流落街头。' + + +class URL: + github = "https://github.com/MemoryD/MemoryTools" + release = "https://github.com/MemoryD/MemoryTools/releases" + + +def get_icon(): + if not PATH.icon.exists(): + PATH.icon.mkdir(parents=True, exist_ok=True) + + for name, ico in icon_bs64.items(): + name = PATH.icon / name + if not name.exists(): + logger.info("[globals] 创建图标: %s" % name) + name.write_bytes(b64decode(ico)) + + icons = EasyDict() + for ico in PATH.icon.glob("*.ico"): + icons[ico.stem] = str(ico) + + return icons + + +ICON = get_icon() + +ALPHADIG = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' +COLOR = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 0, 255), (0, 255, 255)] +PUNCTUATION_MAP = dict((ord(char), None) for char in punctuation) +NOTAS = u'[’·°–!"#$%&\'()*+,-./:;<=>?@,。?★、…【】()《》?“”‘’![\\]^_`{|}~]+' + +DEFAULT_CONFIG = { + '复制翻译': + { + 'is_trans': True, + 'newline': False, + 'strict': False, + 'mode': 'en2zh', + 'src': 'en', + 'dest': 'zh-cn' + }, + 'OCR识别': + { + 'is_ocr': True, + 'newline': True, + 'mode': 'text' + }, + '休息提醒': + { + 'is_alert': True, + 'alert_time': 90 + } +} + +DEFAULT_CONFIG = EasyDict(DEFAULT_CONFIG) + +# 学而思AI开方平台的账号 +XUEERSI_ACCOUNTS = [ + { + 'app_key': '2a449a7feb2a73b99e6d2b2f3642aa9e73e40e64', + 'app_secret': 'dd8f56acf88895367c738cd9c1255507d081746210c5dbee3022795ba9cc9b83' + }, + { + 'app_key': '5aa0ae48e4b03fe034cb547f9ebfa47190d88739', + 'app_secret': '96bc4d214831921740fcc383681460f4a60558992ac1c20cba85da49f2fb408f' + }, + { + 'app_key': 'cde7ff598c932b589b80d8b8c84aee88f563ff93', + 'app_secret': '3aeb7acbe8b5f3118da2bf59db42d0cbbf4237453fd3f03bee721c52a02eafcc' + }, + { + 'app_key': 'b8818b44c59c420848ed01eff8e965b315510cf0', + 'app_secret': 'e3d70584da64bea52af859866b7d5bd1b6eaeed6f0dde333bbf17f6b4af72dea' + } +] + +# 百度AI开方平台的账号 +BAIDU_ACCOUNTS = [ + { + 'APP_ID': '18054283', + 'APP_KEY': 'UnwUzcDzzMcR6smt5xm9vIwi', + 'SECRET_KEY': '755vO7iZGV0DDIlzH7DHpkWjGDOBZzav', + }, + { + 'APP_ID': '19027780', + 'APP_KEY': 'c86EqlNtYwlIeMNvl6Pb1F1d', + 'SECRET_KEY': 'lDSIICh8MDAaa7fi6xYTpXQD5kUdQ5Ap', + } +] + +# 学而思平台的所有错误码,来源:https://docai.xueersi.com/books/ai%E6%95%99%E8%82%B2%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0/page/%E8%BF%94%E5%9B%9E%E7%A0%81%E5%88%97%E8%A1%A8 +XUEERSI_ERROR_CODES = { + -15000: {'reason': 'json字符串化发生错误', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + -15001: {'reason': 'json对象化发生错误', 'solution': '检查发送给API接口的请求Body中,字符串是否符合Json结构'}, + -15002: {'reason': '内部请求错误', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + -15101: {'reason': 'OCR服务内部异常', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + 14000: {'reason': '参数非法', 'solution': '检查请求参数是否缺失,或参数类型有误'}, + 14001: {'reason': '缺少app_key参数', 'solution': '检查是否缺失"app_key"参数'}, + 14002: {'reason': '缺少time_stamp参数', 'solution': '检查是否缺失"time_stamp"参数'}, + 14003: {'reason': '缺少nonce_str参数', 'solution': '检查是否缺失"nonce_str"参数或长度是否满足要求(1-32个字符长度)'}, + 14004: {'reason': '缺少sign参数', 'solution': '检查是否缺失"sign"参数'}, + 14005: {'reason': '图像不存在', 'solution': '检查传入图像URL是否有效,或者图像Base64是否完整且规范'}, + 14011: {'reason': '应用不存在', 'solution': '检查当前请求API的URL拼写是否正确'}, + 14012: {'reason': '请求签名无效', 'solution': '检查签名是否正确,或尝试重新获取签名'}, + 14013: {'reason': 'time_stamp参数无效', 'solution': '检查"time_stamp"参数是否有误'}, + 15001: {'reason': 'qps超过限制', 'solution': '您的每秒并发量超过了最大限制,请降低并发量重试;或者联系客服申请提高每秒并发量限制'}, + 15002: {'reason': 'qpd超过限制', 'solution': '您的每日调用量超过了最大限制,请隔日再试;或者联系客服申请提高每日调用量限制'}, + 15003: {'reason': 'qpm超过限制', 'solution': '您的每分钟并发量超过了最大限制,请降低并发量重试;或者联系客服申请提高每秒并发量限制'}, + 15004: {'reason': 'interval超过限制', 'solution': '接口调用频率超过访问允许间隔。如果是试用账号,请登录后使用自己的账号。如果希望扩容,请联系商务为您免费提高调用频率。'}, + 15010: {'reason': '图片解析失败,请重试', 'solution': '检查图片URL是否有效,或者图像Base64是否完整 且规范'}, + 15011: {'reason': '图片有些问题,请重新拍照', 'solution': '检查图片成像是否正常,图片内部是否有有效图案'}, + 15012: {'reason': '图片太暗啦,请开启照明', 'solution': '检查图片成像是否过暗,尝试开启闪光灯拍照重试'}, + 15013: {'reason': '图片太模糊啦,请保证拍照清晰', 'solution': '检查图片成像是否模糊,请保证拍照清晰之后重试'}, + 15020: {'reason': '客户端发包异常', 'solution': '检查网络是否有波动'}, + 15021: {'reason': 'Sid获取异常', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + 15022: {'reason': 'Idx获取异常', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + 15023: {'reason': '图像获取异常', 'solution': '检查图片URL是否有效,或者图像Base64是否完整且规范'}, + 15024: {'reason': '图像损坏', 'solution': '检查图片成像是否正常,图片内部是否有有效图案'}, + 15025: {'reason': '图像模糊', 'solution': '检查图片成像是否模糊,请保证传入清晰图片重试'}, + 15026: {'reason': '其他图像异常', 'solution': '检查图片问题,或联系客服linqi@100tal.com,反映此问题'}, + 15100: {'reason': '传入图像尺寸过大或过小', 'solution': '不能大于4MB,长边不能超过4096,短边不能小于15'}, + 16010: {'reason': 'base64音频编码为[]byte失败', 'solution': '检查base64音频内容是否无效'}, + 16011: {'reason': '构造请求消息结构失败', 'solution': '检查发送参数是否不符合规范'}, + 16012: {'reason': '解码服务器返回的响应body中,未获取到响应数据', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + 16013: {'reason': '对解码服务器发送的http请求,请求失败或未响应', 'solution': '联系客服linqi@100tal.com,反映此问题'}, + 16014: {'reason': 'socket接收失败', 'solution': 'socket接收失败'}, + 16015: {'reason': '拉学生名单错误', 'solution': '输入学生名单有误,请检查。'}, + 16016: {'reason': '解码器返回超时,比如端长时间占用连接', 'solution': '解码服务器连接超时,请稍后再试。'}, + 16017: {'reason': 'Sid提前结束', 'solution': '您的这段语音已完成识别或者测评。'}, + 16018: {'reason': '解码器目前繁忙', 'solution': '服务器繁忙,请稍后重试。'}, + 16107: {'reason': '音频格式错误', 'solution': '请检查您的传入音频格式是否是允许的格式'}, + 16108: {'reason': '评测文本格式错误,如出现了违规字符', 'solution': '请检查您的传入评测文本是否包含违规字符'}, + 16019: {'reason': '解码器返回数据无有效声音', 'solution': '请检查您的传入音频是否有有效信息。'}, + 16020: {'reason': 'pcm错误', 'solution': '请检查您的传入音频是否完整且有效'}, + 16100: {'reason': 'WebSocket建立连接时,请求协议不是WebSocket握手', 'solution': '请检查您的WebSocket连接'}, + 16101: {'reason': 'WebSocket建立连接时,无法设置WebSocket连接', 'solution': '请检查您的WebSocket连 接'}, + 16102: {'reason': '可能是您的WebSocket长链接异常中断了,在WebSocket长连接中,服务端无法正常读取消息', 'solution': '请检查您的WebSocket连接'}, + 16103: {'reason': '您传入的请求json中:common参数部分的idx属性不是字符型数字', 'solution': '请检查 您的请求数据common中idx的数据类型'}, + 16104: {'reason': '您传入的请求json中:spec参数部分的assessRef评测文本为空', 'solution': '请检查您 的请求数据spec中是否包含assessRef'}, + 16105: {'reason': '没有sid或者idx,或者在需要assess_ref的业务中没有传', 'solution': '请检查传入参数中是否缺失sid或idx或assess_ref。'}, + 16106: {'reason': '音频数据为空', 'solution': '请检查您的传入音频是否有有效信息。'}, + 16109: {'reason': '此sid已经结束', 'solution': '当前sid服务端已经处理结束'}, + 16110: {'reason': '此sid已经完全结束', 'solution': '当前sid服务端已经处理结束且触发超时,处于待清理状态'}, + 16111: {'reason': '您传入的请求json中:common参数部分的sid属性长度不符合长度要求(16-64个字符)', 'solution': '请检查您的传入的sid是否符合要求的长度'} +} + +# 百度平台的错误码 +BAIDU_ERROR_CODES = { + 4: '集群超限额', + 14: 'IAM鉴权失败,建议用户参照文档自查生成sign的方式是否正确,或换用控制台中ak sk的方式调用', + 17: '每天流量超限额', + 18: 'QPS超限额,请稍后再试', + 19: '请求总量超限额', + 100: '无效参数', + 110: 'Access Token失效', + 111: 'Access token过期', + 282000: '服务器内部错误,如果您使用的是高精度接口,报这个错误码的原因可能是您上传的图片中文字过多,识别超时导致的,建议您对图片进行切割后再识别,其他情况请再次请求, 如果持续出现此类错误,请通过QQ群 ' + '(631977213)或工单联系技术支持团队。', + 216100: '请求中包含非法参数,请检查后重新尝试', + 216101: '缺少必须的参数,请检查参数是否有遗漏', + 216102: '请求了不支持的服务,请检查调用的url', + 216103: '请求中某些参数过长,请检查后重新尝试', + 216110: 'appid不存在,请重新核对信息是否为后台应用列表中的appid', + 216200: '图片为空,请检查后重新尝试', + 216201: '上传的图片格式错误,现阶段我们支持的图片格式为:PNG、JPG、JPEG、BMP,请进行转码或更换图片', + 216202: '上传的图片大小错误,现阶段我们支持的图片大小为:base64编码后小于4M,分辨率不高于4096*4096 ,请重新上传图片', + 216630: '识别错误,请再次请求,如果持续出现此类错误,请通过QQ群(631977213)或工单联系技术支持团队 。', + 216631: '识别银行卡错误,出现此问题的原因一般为:您上传的图片非银行卡正面,上传了异形卡的图片或上传的银行卡正品图片不完整', + 216633: '识别身份证错误,出现此问题的原因一般为:您上传了非身份证图片或您上传的身份证图片不完整', + 216634: '检测错误,请再次请求,如果持续出现此类错误,请通过QQ群(631977213)或工单联系技术支持团队 。', + 282003: '请求参数缺失', + 282005: '处理批量任务时发生部分或全部错误,请根据具体错误码排查', + 282006: '批量任务处理数量超出限制,请将任务数量减少到10或10以下', + 282110: 'URL参数不存在,请核对URL后再次提交', + 282111: 'URL格式非法,请检查url格式是否符合相应接口的入参要求', + 282112: 'url下载超时,请检查url对应的图床/图片无法下载或链路状况不好,您可以重新尝试一下,如果多次尝试后仍不行,建议更换图片地址', + 282113: 'URL返回无效参数', + 282114: 'URL长度超过1024字节或为0', + 282808: 'request id xxxxx 不存在', + 282809: '返回结果请求错误(不属于excel或json)', + 282810: '图像识别错误' +} + +LANGUAGE = {'自动检测': '', '中文': 'zh-cn', '中文繁体': 'zh-tw', '英语': 'en', '德语': 'de', '俄语': 'ru', '法语': 'fr', + '阿尔巴尼亚语': 'sq', '阿拉伯语': 'ar', '阿姆哈拉语': 'am', '阿塞拜疆语': 'az', '爱尔兰语': 'ga', + '爱沙尼亚语': 'et', '巴斯克语': 'eu', '白俄罗斯语': 'be', + '保加利亚语': 'bg', '冰岛语': 'is', '波兰语': 'pl', '波斯尼亚语': 'bs', + '波斯语': 'fa', '布尔语': 'af', '丹麦语': 'da', + '菲律宾语': 'tl', '芬兰语': 'fi', '弗里西语': 'fy', '高棉语': 'km', '格鲁吉亚语': 'ka', + '古吉拉特语': 'gu', '哈萨克语': 'kk', '海地克里奥尔语': 'ht', + '豪萨语': 'ha', '荷兰语': 'nl', '吉尔吉斯语': 'ky', '加利西亚语': 'gl', '加泰罗尼亚语': 'ca', + '捷克语': 'cs', '卡纳达语': 'kn', '科西嘉语': 'co', '克罗地亚语': 'hr', + '库尔德语': 'ku', '拉丁语': 'la', '拉脱维亚语': 'lv', '老挝语': 'lo', '立陶宛语': 'lt', + '卢森堡语': 'lb', '罗马尼亚语': 'ro', '马尔加什语': 'mg', '马耳他语': 'mt', + '马拉地语': 'mr', '马拉雅拉姆语': 'mf', '马来语': 'ms', '马其顿语': 'mk', + '毛利语': 'mi', '蒙古语': 'mn', '孟加拉语': 'bn', '缅甸语': 'my', '苗语': 'hmn', '南非克萨语': 'xh', '南非祖鲁语': 'zu', + '尼泊尔语': 'ne', '挪威语': 'no', '旁遮普语': 'pa', '葡萄牙语': 'pt', '普什图语': 'ps', + '齐切瓦语': 'ny', '日语': 'ja', '瑞典语': 'sv', '萨摩亚语': 'sm', '塞尔维亚语': 'sr', + '赛所托语': 'st', '僧伽罗语': 'si', '世界语': 'eo', '斯洛伐克语': 'sk', '斯洛文尼亚语': 'sl', + '斯瓦希里语': 'sw', '苏格兰盖尔语': 'gd', '宿务语': 'ceb', '索马里语': 'so', '塔吉克语': 'tg', '泰卢固语': 'te', + '泰米尔语': 'ta', '泰语': 'th', '土耳其语': 'tr', '威尔士语': 'cy', '乌尔都语': 'ur', + '乌克兰语': 'uk', '乌兹别克语': 'uz', '西班牙语': 'es', '希伯来语': 'rw', '希腊语': 'el', + '夏威夷语': 'haw', '信德语': 'sd', '匈牙利语': 'hu', '修纳语': 'sn', + '亚美尼亚语': 'hy', '伊博语': 'ig', '意大利语': 'it', '意第绪语': 'yi', '印地语': 'hi', + '印尼巽他': 'su', '印尼语': 'id', '印尼爪哇语': 'jw', '约鲁巴语': 'yo', '越南语': 'vi' + } diff --git a/memorytools/memorytools.py b/memorytools/memorytools.py index 72fc2ff..3e15480 100644 --- a/memorytools/memorytools.py +++ b/memorytools/memorytools.py @@ -1,74 +1,79 @@ -import os -from PIL import Image +# -*- coding: utf-8 -*- +""" +@name: memorytools +@author: Memory +@date: 2020/12/24 +@description: 项目的入口文件 +""" from time import sleep -from ocr import OCR -from alert import Alert -from copytrans import CopyTrans -from threading import Thread -from systray import SysTrayIcon -from boxes import ImageBox -from utils import * -from setting import * +from tools.logger import logger + +logger.info("[MemoryTools] 启动程序") + +from tools.systray import SysTrayIcon +from globals import TEXT, ICON +from plugins import plugin_list class MemoryTool(object): - '''程序的入口类''' + """ + 程序的入口类 + """ + + version = "v2.2.0" + def __init__(self): - self.icon = getSrc('icon.ico') - config = readConfig() - self.alert = Alert(self) - self.ct = CopyTrans(self) - self.ocr = OCR(self) - self.alert.setConfig(config['alert']) - self.ct.setConfig(config['copytrans']) - self.ocr.setConfig(config['ocr']) + self.plugins = [plugin(self) for plugin in plugin_list] - self.systray = SysTrayIcon(self.icon, HOVER_TEXT, self.createMenu(), \ - on_quit=self.bye, default_menu_index=1, exit_ico=getSrc('exit.ico')) + hover_text = "MemoryTools " + self.version + self.systray = SysTrayIcon(ICON.icon, hover_text, self.create_menu(), + on_quit=self.bye, default_menu_index=1, + exit_ico=ICON.exit + ) - self.is_about = False self.end = False - def about(self, sysTrayIcon): - '''菜单中的 关于 选项,如果在线程中调用会出错,因此用一个变量控制,在主线程中显示信息''' - self.is_about = True - - def createMenu(self): - '''创建托盘程序的菜单''' - self.menu_options = ( - ('复制翻译', getSrc('trans.ico'), self.ct.createMenu()), - ('OCR识别', getSrc('ocr.ico'), self.ocr.createMenu()), - ('休息提醒', getSrc('alert.ico'), self.alert.createMenu()), - ('关于', getSrc('about.ico'), self.about), - ) - return self.menu_options + def create_menu(self): + """创建托盘程序的菜单 + 菜单中的每一项为元组,每个元组含义如下: + 第 1 项:菜单项名称 + 第 2 项:图标路径 + 第 3 项:可以递归嵌套子菜单,如果没有子菜单则为回调函数 + 第 4 项:表示该项菜单后面是否有一条分割线 + """ + menu_options = [] + for plugin in self.plugins: + menu_options.append(plugin.init_menu()) + # menu_options.append(('关于', ICON.about, self.about, True)) + + return tuple(menu_options) - def refreshMenu(self): - '''创新菜单''' - self.systray.refreshMenu(self.createMenu()) + def refresh_menu(self): + """ + 每次用户点击托盘菜单以后,都要重新刷新菜单。 + """ + self.systray.refreshMenu(self.create_menu()) - def bye(self, sysTrayIcon): - '''退出程序时将配置写到文件中''' + def bye(self, s: SysTrayIcon): + """ + 退出程序 + """ self.end = True - config = {} - config['alert'] = self.alert.getConfig() - config['copytrans'] = self.ct.getConfig() - config['ocr'] = self.ocr.getConfig() - writeConfig(config) - print('bye') def run(self): - '''启动''' + """ + 启动主程序,由于tkinter组件不能在线程中结束,因此在主线程中调用 + """ self.systray.start() + logger.info("[MemoryTools] 插件开始运行...") while not self.end: sleep(0.1) - if self.is_about: - self.is_about = False - img = Image.open(getSrc(ABOUT_IMG)) - ImageBox('Memory Tools').show(img) - self.ct.start() - self.alert.start() - self.ocr.start() + for plugin in self.plugins: + try: + plugin.start() + except Exception as e: + logger.error("[MemoryTools] %s" % e) + logger.info("[MemoryTools] 退出程序\n") if __name__ == '__main__': diff --git a/memorytools/memorytools.spec b/memorytools/memorytools.spec new file mode 100644 index 0000000..6c3743f --- /dev/null +++ b/memorytools/memorytools.spec @@ -0,0 +1,40 @@ +# -*- mode: python ; coding: utf-8 -*- + +block_cipher = None + +# py_files = ['memorytools.py', 'globals.py', '__init__.py', 'plugins\\base.py', 'plugins\\__init__.py', 'plugins\\alert\\alert.py', 'plugins\\alert\\alertbox.py', 'plugins\\alert\\__init__.py', 'plugins\\copytrans\\copytrans.py', 'plugins\\copytrans\\transbox.py', 'plugins\\copytrans\\__init__.py', 'plugins\\help\\help.py', 'plugins\\help\\__init__.py', 'plugins\\ocr\\baiduOCR.py', 'plugins\\ocr\\ocr.py', 'plugins\\ocr\\ocrbox.py', 'plugins\\ocr\\xueersiOCR.py', 'plugins\\ocr\\__init__.py', 'tools\\basebox.py', 'tools\\logger.py', 'tools\\utils.py', 'tools\\__init__.py', 'tools\\systray\\traybar.py', 'tools\\systray\\win32_adapter.py', 'tools\\systray\\__init__.py', 'tools\\systray\\__version__.py'] + +py_files = ['memorytools.py', ] + +a = Analysis(py_files, + pathex=['C:\\Users\\Memory\\OneDrive\\code\\MemoryTools\\memorytools'], + binaries=[], + datas=[], + hiddenimports=[], + hookspath=[], + runtime_hooks=[], + excludes=[], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=block_cipher, + noarchive=False) +pyz = PYZ(a.pure, a.zipped_data, + cipher=block_cipher) +exe = EXE(pyz, + a.scripts, + [], + exclude_binaries=True, + name='memorytools', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=False , icon='..\\src\\icon.ico') +coll = COLLECT(exe, + a.binaries, + a.zipfiles, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='memorytools') diff --git a/memorytools/ocr.py b/memorytools/ocr.py deleted file mode 100644 index 7aaf662..0000000 --- a/memorytools/ocr.py +++ /dev/null @@ -1,113 +0,0 @@ -import pyperclip as p -from PIL import Image, ImageGrab, ImageDraw -from baiduOCR import BaiduOCR -from xueersiOCR import LatexOCR -from boxes import ImageTextBox -from setting import * -from utils import * - - -class OCR(object): - def __init__(self, root): - self.root = root - self.is_ocr = True - self.newline = True - self.mode = 'text' - self.textocr = BaiduOCR(BAIDU_ACCOUNTS) - self.formulaocr = LatexOCR(XUEERSI_ACCOUNTS) - - def setConfig(self, config): - if 'is_ocr' in config: - self.is_ocr = config['is_ocr'] - if 'newline' in config: - self.newline = config['newline'] - if 'mode' in config: - self.mode = config['mode'] - - def getConfig(self): - config = { - 'is_ocr': self.is_ocr, - 'newline': self.newline, - 'mode': self.mode - } - return config - - def createMenu(self): - menu_options = ( - ("开启OCR", isCheckIcon(self.is_ocr), self.pauseOcr), - ('去除换行', isCheckIcon(not self.newline), self.turnNewline), - ('识别文本', isPickIcon(self.mode=='text'), self.textMode), - ('识别公式', isPickIcon(self.mode=='formula'), self.formulaMode), - ) - - return menu_options - - def pauseOcr(self, sysTrayIcon): - self.is_ocr = not self.is_ocr - self.root.refreshMenu() - - def textMode(self, sysTrayIcon): - self.mode = 'text' - self.root.refreshMenu() - - def formulaMode(self, sysTrayIcon): - self.mode = 'formula' - self.root.refreshMenu() - - def turnNewline(self, sysTrayIcon): - self.newline = not self.newline - self.root.refreshMenu() - - def start(self): - if not self.is_ocr: - return - im = ImageGrab.grabclipboard() # 获取剪切板 - - if isinstance(im, Image.Image): # 判断是否是图片 - try: - if self.mode == 'text': - text = self.textocr.ocr(im, self.newline) - elif self.mode == 'formula': - pos, text = self.formulaocr.latex(im) - print("位置:", pos) - draw = ImageDraw.Draw(im) - color = Color() - for rect in pos: - draw.polygon(getRect(*rect), outline=color.next()) - except Exception as e: - text = str(e) - - p.copy('') - ImageTextBox('OCR识别结果').show(im, text) - - # def setting(self, sysTrayIcon): - # msg = "需要设置百度AI平台(https://ai.baidu.com/)的API才能进行OCR识别" - # title = "设置百度API" - # fieldNames = ["*APP_ID","*API_KEY","*SECRET_KEY"] - # fieldValues = [] - # fieldValues = g.multenterbox(msg, title, fieldNames) - # while True: - # if fieldValues == None: - # break - # errmsg = "" - # for i in range(len(fieldNames)): - # option = fieldNames[i].strip() - # if fieldValues[i].strip() == "" and option[0] == "*": - # errmsg += ("【%s】为必填项 " %fieldNames[i]) - # if errmsg == "": - # break - # fieldValues = g.multenterbox(errmsg, title, fieldNames, fieldValues) - - # if fieldValues: - # config = read_config() - # ocr = config['ocr'] - # ocr['APP_ID'] = fieldValues[0] - # ocr['APP_KEY'] = fieldValues[1] - # ocr['SECRET_KEY'] = fieldValues[2] - # config['ocr'] = ocr - # write_config(config) - # self.textocr = BaiduOCR([ocr, ]) - - -if __name__ == '__main__': - OCR().start() diff --git a/memorytools/pic.py b/memorytools/pic.py deleted file mode 100644 index 7bf5e7a..0000000 --- a/memorytools/pic.py +++ /dev/null @@ -1,8 +0,0 @@ -ICON_ICO = "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8f9dr/X/Zrr8/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2m9/f9Wp/D/RpTl/5CNmP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/YpDH/0WT5f9Fk+X/RZPl4ESS5BoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5ZFFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1+y9/9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9ysuf/xYlj/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7aKcv9FkuT/RZPl/0WT5f9Fk+X/RZLkzESS5AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEk+RbRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/Xa71/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///6ecmP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/do+y/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLklwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJLlGUWT5e9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9YqfL/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///98tOH/yIlh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7KKdv9GkuP/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X+RJLkRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkuWgRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f5Ek+TaRJPlrUST5ZVFk+WSRJLkpUST5MxFk+T6RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1Oj7/9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///66YjP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/bY+8/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+XbRJLkBgAAAAAAAAAAAAAAAAAAAAAAAAAARJLlJUWT5fxFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WS5epEk+V8RJPlHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST4xBEk+RlRZPl2EWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/TZzq/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+Dsdb/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/6qLfv9Fk+T/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+VuAAAAAAAAAAAAAAAAAAAAAAAAAABEkuWQRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+SfRJLlDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEkuQERJPkeUWT5ftFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9GlOX/ar7+/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a77+/7SUgv/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiWD/ZJDF/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5eNEk+UFAAAAAAAAAAAAAAAARJPkA0SS5elFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLkfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJLlS0WT5fhFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9itfn/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+Jrcr/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/6CMiP9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5VgAAAAAAAAAAAAAAABDk+U5RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0SS5KUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPlYkWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1ip8v9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///bL78/7qReP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/HiWH/W5HO/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLkugAAAAAAAAAAAAAAAEST5XdFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+TzQ5HjFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJLluEWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/TJvq/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+Qqb//yYlg/8mJYP/JiWD/yIlg/7mKcP+si3z/q4t9/7SKdP/EiWX/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/5eMkv9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X7RZPkEwAAAAAAAAAARJLkpUWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5ZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEkuQ4RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/Zbj7/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///brz4/7+OcP/JiWD/wYln/3+Oqf9Qktn/RZPl/0WT5f9Fk+X/RZPl/0WS5P9ZkdD/eo6v/6OLhv/GiWL/yYlg/8mJYP/FiWT/VJHV/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+VaAAAAAAAAAABEkuTGRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJPkVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESS5SZFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Wp/H/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+XpbT/yYlg/8eJYf9gkcn/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1OR1v+NjZv/xIlk/42Nm/9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5ZoAAAAAAAAAAEWS5dtFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9EkuQrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPkWEWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0iW5/9pvf7/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///cbvz/8OMaf/JiWD/qot+/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9XkdL/TpLb/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPk0AAAAAAAAAAARZPl5EWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5RgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEk+SARZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1us9P9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+eoaj/yYlg/8mJYP+qi37/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X6RJLkBAAAAABFk+XgRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZLlIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESS5J9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/SJfn/2m9/v9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///dbjs/8WKZf/JiWD/yYlg/8WJY/9Sktf/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9EkuUjAAAAAEWT5dBFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9FkuU6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPktUWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/WKny/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+lnZz/yYlg/8mJYP/JiWD/yYlg/6yLfP9Rktj/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0OS5T8AAAAARZLkuEWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0SS5WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABElOTDRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9GlOX/Zbj7/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///erbk/8eJYf/JiWD/yYlg/8mJYP/JiWD/yYlg/7+Jaf+Ajqn/SZLg/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJPlVAAAAABEkuSURZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLknwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWS5cpFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9NnOr/ar7+/2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///+smZD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+7im3/dY+z/0WT5P9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+VjAAAAAESS5GZFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+TiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZLlykWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Wp/H/a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///a7///2u///9rv///gLLa/8iJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/m4yN/0aS4/9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5GsAAAAARJLkLUWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+UGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEk+XDRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9dr/b/a7///2u///9rv///a7///2u///9rv///a7///2u///9vvPj/e7Xi/4av0P+OqsP/laa3/5mkr/+coqv/naGp/5ujrf+YpLH/kqi7/4usx/+Csdb/d7jq/2y+/f9rv///a7///2u///9rv///a7///2u+/v+ylYX/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/hY6j/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLlaQAAAABFkuUBRZPl6UWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl80ST5QEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5bdFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0aU5f9gs/j/a7///2u///9uvfn/grHX/5iksv+rmZH/vJB0/8iJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/xopk/7eTff+lnZz/kKnA/3q25P9rvv7/h67P/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/DiWX/UJLZ/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9EkuVmAAAAAAAAAABFkuWZRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9FkuWuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPlo0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1OT2f+PpLn/rpiM/8WKZf/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7+OcP+/jnD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+PjZn/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0SS5VgAAAAAAAAAAEST5SBFk+XwRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPk90WR5C4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEkuWJRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/SJLh/3OPtv+mi4L/x4lh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8WJY/9Tkdb/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLlSAAAAAAAAAAAAAAAAEST5TxEkuToRZPl/0WT5f9Fk+X/RZPl/0WT5e5FkuRKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5GpFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/UJLZ/4iNof++iWr/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/xoli/1aR0/9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9FkuUxAAAAAAAAAAAAAAAAAAAAAESS5A9Ek+RsRJLko0ST5KVFk+VzRZLkFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPkRUWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/1SR1f/CiWb/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+RjZj/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WS5RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEkuQbRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/4WOpP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/wolm/1CS2f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9FkuXxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEk+XsRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/R5Lj/7CKeP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+HjaH/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5csAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5bdFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/aZDA/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/v4lp/0uS3v9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZLkngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPlfkWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+T/sop3/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiWD/loyT/0qS3/9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Ek+RwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFk+RBRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f+EjqX/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/sIp4/1aR0/9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5DoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESS5QdFk+X3RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZLk/4eNof98jq3/RpLj/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/2SQxf/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/volq/2OQxv9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9EkuX4RJLlCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWS5bhFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0eS4v+ajI//yYlg/8mJYP+ui3v/YJDI/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/VZHU/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/w4pn/7KOfv+jkpL/mJWg/5CXq/+MmLD/i5iz/42Yr/+Tlqj/nJSc/6iRi/+4jXb/x4lh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/xIlk/2+Puv9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0SS5cIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARJPlbkWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9IkuH/n4yJ/8mJYP/JiWD/yYlg/8mJYP/IiWD/lYyT/1CS2f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9ckc3/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/72Lb/+dlJr/gJvB/2ah4/9Wpfj/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9apPT/cJ/X/4qYs/+pkIr/xYlk/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/x4lh/3SPtf9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZLkgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEk+UgRZPl/kWT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/R5Li/6CMif/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/wYln/4KOpv9JkuD/RZPl/0WT5f9Fk+X/RZPl/4OOpf/JiWD/yYlg/8mJYP/JiWD/wYpq/5iVoP9wn9b/VqX5/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9bpPL/fpvD/6mRiv/IiWH/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/x4lh/3KPtv9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9EkuM6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkuXMRZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WS5P+ajI7/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7mKb/95j7D/R5Li/0WT5f9tj7z/w4ll/8mJYP/JiWD/t413/4SavP9apPT/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2Wi5f+XlaL/xIpm/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/xoli/2yQvf9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZLl7EWS5AMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWS5XZFk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/io2e/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+8iWz/tIp0/8mJYP/JiWD/u4xx/4CbwP9Xpfj/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9go+v/l5Wh/8aJYv/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/w4ll/1+Ryv9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+WhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZLkHUWT5f1Fk+X/RZPl/0WT5f9Fk+X/RZPl/3WPs//IiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/xolj/5GWqv9apPP/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/aKHh/6yQhf/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/u4pt/1GS2P9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WS5VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARZPlvUWT5f9Fk+X/RZPl/0WT5f9ekcv/xIlk/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7WOev9roN3/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/VqX5/4aZuf/EimX/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/qYt//0eS4v9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9FkuXwRJLlCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFk+VcRZPl/0WT5f9Fk+X/SpLf/7WKc//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+clJv/WaX1/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2mh3/+3jXb/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/iY2f/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WS5KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWT5QlFk+XtRZPl/0WT5f+UjZT/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/HiWH/hpm5/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1yk8f+pkIr/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/HiWH/ZJDF/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLkQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEaS441Fk+X/Z5DB/8iJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/xYlk/3mdyv9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1il9/+fk5f/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+1inP/SZLg/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RZPl/0ST5N9EkuQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXJDMI0mS4Py3inL/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8WJZP91ns//Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1al+P+clJv/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+JjZ//RZPl/0WT5f9Fk+X/RZPl/0WT5f9Fk+X/RJLkfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAko2XvsmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/HiWL/eZ3L/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1el+P+hkpT/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8WJY/9WkdP/RZPl/0WT5f9Fk+X/RZPl/0WT5fpEk+UaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALSIdBjJiWDzyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/4WZuv9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1ml9f+tkIT/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/52Mi/9Fk+X/RZPl/0WT5f9Fk+X/RZLlqQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4lhkMmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+blJ3/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2Cj7P+8jHD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIlg/16Ry/9Fk+X/RZPl/0WT5f9Ek+Q7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeHYBnJiWD3yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/tI58/1ml9f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/3Gf1f/HiWH/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/oYuI/0WT5f9Fk+X/RZPlxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfh8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8eKY/+RyeP/bL38/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Wqr6/6Knq//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiWD/WpHP/0WT5f9GkuNSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiIXwrIiWDtyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/nqWt/4bX//+H2P//esv9/1ur+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2S0+/+C0/7/idX6/7+Ud//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+UjJX/SJLh1VyQzAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfX8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7qMcv9ZpPT/Y7T7/4LT/v+H2P//g9T+/2a2+/9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1en+v9ywvz/htf//4fY//96yv3/e6PO/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8KJZv92jrJeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiGDDyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/fpvC/1am+v9Wpvr/Wqr6/3jI/f+H2P//h9j//3TE/f9YqPr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9er/r/fs/+/4fY//+F1v7/bLz8/1am+v9Wpvr/qZCJ/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/76IamQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhgHsmJYP3JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/7WNeP9Wpfj/Vqb6/1am+v9Wpvr/Vqb6/2q6/P+F1v7/h9j//4DQ/v9gsPv/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/a7v8/4XW/v+H2P//f9D+/1+v+/9Wpvr/Vqb6/1am+v9un9j/yIlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIhgvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiGByyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/nrjC/3HC/P9aqvr/Vqb6/1am+v9Wpvr/Vqb6/16u+v99zv7/h9j//4bX/v9tvfz/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1Sj9/9Vpfn/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1Sj9v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Wqr6/3nK/f+H2P//htf//3PD/f9Xp/r/Vqb6/1am+v9Wpvr/Vqb6/1io+v+ylob/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD8yIhgFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiIX77JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8GNbP+I1fr/h9j//4TV/v9vv/z/Wan6/1am+v9Wpvr/Vqb6/1en+v9wwfz/htf//4fY//9drfr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9FjNj/I1uU/yRdl/8wba7/P4TN/1Gf8f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Tprq/zt+xP8qZaP/IlmS/zZ3uv9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2S0+/+D0/7/h9j//4PT/v9ltfv/Vqb6/1am+v9Wpvr/Vqb6/1en+v9ru/z/gtP+/5y+y//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiWBfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiGANyYlg+cmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/lJSj/16u+v94yP3/htf//4fY//+D1P7/bL38/1eo+v9Wpvr/Vqb6/1am+v9isvv/a7v8/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/zNytP8iWZL/IlmS/yJZkv8iWZL/I1uU/zZ3u/9Qne//Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/SpTi/zBur/8iWZL/IlmS/yJZkv8iWZL/I1uU/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/g9T+/4fY//95yv3/Wqr6/1am+v9Wpvr/Vqb6/1am+v9ouPv/gdH+/4fY//+H2P//fcv7/76Lbf/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYKcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMeHYEfJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP9rntn/Vqb6/1am+v9gsfv/esv9/4fY//+H2P//gtP+/2q6/P9Xp/r/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/SZPg/yhhnv8iWZL/IlmS/yJZkv8iWZL/IlmS/yRcl/9Ahs7/VaX5/1am+v9Wpvr/T5zt/zJxs/8iWZL/IlmS/yJZkv8iWZL/IlmS/yNblf88gMf/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9mtvv/aLn7/1am+v9Wpvr/Vqb6/1am+v9mtvv/f9D+/4fY//+H2P//fs/+/2S1+/9Wpvr/mJWh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg5wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfg8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/uYtx/1al+f9Wpvr/Vqb6/1am+v9Wpvr/Y7P7/3zN/f+H2P//h9j//4DR/v9js/v/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1Cd7v9Bh9D/LWqo/yJZkv8iWZL/IlmS/yJZkv8ycbP/U6L1/0GH0f8kXJf/IlmS/yJZkv8iWZL/IlmT/zJwsv9Fjdn/VKP2/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9jtPv/fc7+/4fY//+H2P//gNH+/2e3+/9Wpvr/Vqb6/1am+v9yntP/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlgIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiV+4yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+ck5rtVqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2W1+/9+z/7/h9j//3nJ/f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/SJHe/yplo/8iWZL/IlmS/yJZkv8mX5r/IlmS/yJZkv8iWZL/IlmS/zR0t/9Om+v/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9crfr/e8v9/4fY//+H2P//gdL+/2m6/P9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1il9//Cimj/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiGBZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmIX+bJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/4OaveVWpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9ktPv/W6v6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/VKT3/zh6v/8iWZL/IlmS/yJZkv8iWZL/IlmS/yplov9KlOL/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/26+/P+H2P//g9T+/2y8/P9Xp/r/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/6eRjP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mIYIYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiV4SyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/aqDe41am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/0CGz/8iWZL/IlmS/yJZkv82d7v/VKP2/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/WKj6/2a3+/9YqPr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/jZev/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYhfsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiHXzfJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8eJYe5Wpfn1Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/UqHz/yJZkv8iWZL/JF2Y/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v94ncz/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiGDSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfU8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/so5+4Fam+v9Wpvr/Vqb6/2Wt+v97ufv/gbz7/3m4+/9jrfr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9SofP/IlmS/yJZkv8lXpj/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9aqPr/crT6/4C8+/9+u/v/cbT6/1mn+v9Wpvr/Vqb6/2ai5P/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iJX/MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiF9qyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP+qkIjga7H6/7HV/P/n8v7///////////////////////7+///l8f7/rtT8/2mw+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1Kh8/8iWZL/IlmS/yVemP9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1in+v+PxPv/zuX9//j7/v//////////////////////9/v+/8vk/f+Lwvv/Wab2/8eJYf/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iJYAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiJYHzJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/9K0pPH7/f7/////////////////////////////////////////////////+vz+/6/V/P9aqPr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/UqHz/yJZkv8iWZL/JV6Y/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9/u/v/5PH+///////////////////////////////////////////////////////f7v7/x49s/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIlfHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyYlgiMmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/5cez/////////////////////////////////////////////////////////////////9zs/f9lrvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Qnu//QYjR/zV1uf8sZ6X/IlmS/yJZkv8iWZL/KWSg/zJwsv8/hc3/UZ/x/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/os78//3+/v/////////////////////////////////////////////////////////////////RnHn/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiF8sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJiGCPyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/ny7n/////////////////////////////////////////////////9ff6/9vk7f/v8/f//////+Tx/v9jrPr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9LluX/MW+w/yJZk/8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8iWZL/IlmS/yJZkv8jW5X/OnzC/1Sj9/9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/6XQ/P////////////z9/v/f5+//5Ovy//7+/v///////////////////////////////////////////9Off//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iJXzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMmJYJPJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/+jMu///////////////////////////////////////9/n7/36dv/8oXJT/IliS/yNZkv9ojbT/6/D1/9Dm/f9Wpvr/Vqb6/1am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/v9HdKT/IliS/yJYkv8iWJL/IliS/yJYkv8iWJL/bpG3////////////////////////////9enh/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIhf6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiIXy3JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8qMZf/+/fz/////////////////////////////////iKXE/yJYkv8iWJL/IliS/yJYkv8iWJL/Y4my//3+/v//////5PH+/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/mcn8/////////////////8nW5P8oXJX/IliS/yJYkv8iWJL/IliS/zVmm//j6vH////////////////////////////s1cf/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiF/JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx4dgCcmJX/3JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg//Xq4v/////////////////////////////////+/v7/qL3U/0h1pf8nXJT/Pm2g/5Ksyf/5+/z////////////m8v7/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v+ayvz//////////////////////9Lc6P9fhrD/LF+W/zBjmf9vkrj/4+rx/////////////////////////////////+G+p//JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iIX6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyYlf3MmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/6c++/////////////////////////////////////////////////////////////////////////////////9rr/f9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/47D+///////////////////////////////////////////////////////////////////////////////////////1KKD/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yIlfegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiF+ryYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/ar5T/////////////////////////////////////////////////////////////////////////////////vdz9/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/cbT6//////////////////////////////////////////////////////////////////////////////////v39P/JimL/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiV9LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiIX3LJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8yQaf/9/Pv///////////////////////////////////////////////////////////////////////////+Rxfv/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/7fX+////////////////////////////////////////////////////////////////////////////7NbI/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/siIXxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyIhfNsmJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/+7bz///////////////////////////////////////////////////////////////////////9fn+/12q+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v+x1vz////////////////////////////////////////////////////////////////////////////ar5P/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/IiGDWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiV4DyYhg7smJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/27CV//////////////////////////////////////////////////////////////////////+s0/z/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/2ev+v/4+/7/////////////////////////////////////////////////////////////////+/bz/8qMZP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8iIX5IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIiV+pyYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/Ki2P/+vTw////////////////////////////////////////////////////////////5/L+/12p+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/6PO/P/////////////////////////////////////////////////////////////////nyrn/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/x4hgSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMiJX1nJiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/JiWD/yYlg/8mJYP/jwq3///////////////////////////////////////////////////////b6/v92t/v/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am+v9Wpvr/Vqb6/1am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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5VdFk+XvRZPl/0WT5f9Fk+X/R5XmagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEST5ANEkuSsRZPl70SS5JdDk+UWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESS5RlFkuWaRZPk8ESS5KVEkuQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////gAAAAD//////////////4AAAAAAAeAf//////////AAAAAAAAAAD/////////8AAAAAAAAAAAf///+AH//8AAAAAAAAAAAD///8AAP/4AAAAAAAAAAAA///8AAAf4AAAAAAAAAAAAH//8AAAD8AAAAAAAAAAAAB//+AAAAMAAAAAAAAAAAAAH/+AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAA/4AAAAAAAAAAAAAAAAAAAP8AAAAAAAAAAAAAAAAAAAB/AAAAAAAAAAAAAAAAAAAAPgAB+AAAAAAAAAAAAAAAAD4AB/4AAAAAAAAAAAAAAAAcAB//gAAAAAAAAAAAAAAAHAA//8AAAAAAAAAAAAAAABwAP//gAAAAAAAAAAAAAAAMAH//4AAAAAAAAAAAAAAADAB//+AAAAAAAAAAAAAAAAwAf//gAAAAAAAAAAAAAAAMAH//4AAAAAAAAAAAAAAABAB//+AAAAAAAAAAAAAAAAQAf//gAAAAAAAAAAAAAAAEAH//4AAAAAAAAAAAAAAABAB//+AAAAAAAAAAAAAAAAQAf//gAAAAAAAAAAAAAAAEAD//4AAAAAAAAAAAAAAABAA//+AAAAAAAAAAAAAAAAYAf//gAAAAAAAAAAAAAAAGAH//4AAAAAAAAAAAAAAABwD//+AAAAAAAAAAAAAAAAeB///gAAAAAAAAAAAAAAAH////4AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP////+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAB/////4AAAAAAAAAAAAAAAf/////AAAAAAAAAAAAAAAH/////wAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////gAAAAAAAAAAAAAAP/////4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAB//////wAAAAAAAAAAAAAAf/////8AAAAAAAAAAAAAAP//////gAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf/////+AAAAAAAAAAAAAAP//////gAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAA//////8AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAH//////gAAAAAAAAAAAAAB//////4AAAAAAAAAAAAAAP/////+AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAA//////wAAAAAAAAAAAAAAP/////8AAAAAAAAAAAAAAB//////AAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAH/////4AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAH/////4AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAP/////gAAAAAAAAAAAAAAD/////4AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAf/////gAAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAB//////AAAAAAAAAAAAAAAf/////wAAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAD//////AAAAAAAAAAAAAAA//////4AAAAAAAAAAAAAAP/////+AAAAAAAAAAAAAAD//////gAAAAAAAAAAAAAB//////8AAAAAAAAAAAAAAf//////AAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAD//////+AAAAAAAAAAAAAA///////gAAAAAAAAAAAAAf//////8AAAAAAAAAAAAAH///////AAAAAAAAAAAAAD///////4AAAAAAAAAAAAA////////AAAAAAAAAAAAAf///////wAAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////wAAAAAAAAAAAB////////8AAAAAAAAAAAA/////////gAAAAAAAAAAAP////////8AAAAAAAAAAAH/////////gAAAAAAAAAAD/////////8AAAAAAAAAAB//////////gAAAAAAAAAA//////////8AAAAAAAAAAf//////////gAAAAAAAAAP//////////4AAAAAAAAAH//////////+AAAAAAAAAD///////////gAAAAAAAAA///////////4AAAAAAAAAP//////////+AAAAAAAAAD///////////gAAAAAAAAA///////////4AAAAAAAAAP///////////AAAAAAAAAH///////////wAAAAAAAAB///////////8AAcAAAMAAf///////////AAP/AD/gAH///////////wAH////8AB///////////+AD/////gA////////////gB/////8AP///////////4A//////gD////////////A//////+B////////////wf//////wf///8=" -TRANS_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWAAAA8gAAAP4AAAD/AAAA8gAAAPIAAAD8AAAA/wAAAPIAAAC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAjgAAAOwAAAD/AAAAYQAAACoAAAD/AAAA/wAAAEsAAAA2AAAA/wAAAPYAAAAAAAAAAAAAAAcAAACyAAAA/wAAAP8AAAD/AAAA/wAAAL4AAAAAAAAATAAAAE8AAAAAAAAAjAAAAP8AAADyAAAAAAAAAAAAAAB7AAAA/wAAAHsAAABFAAAA3gAAAP8AAAD/AAAACgAAAEQAAABvAAAAAAAAAP8AAAD/AAAA8gAAAAAAAAAAAAAAlwAAAP8AAAAjAAAAAAAAAMcAAAD/AAAA/wAAAHEAAAA9AAAAUwAAAEMAAAD/AAAA/wAAAPIAAACVAAAA6QAAAP8AAAD/AAAA/wAAAPQAAAD9AAAA/wAAAP8AAADyAAAAAAAAAAAAAADPAAAA/wAAAP8AAADyAAAA/wAAAL0AAACMAAAAZQAAAGIAAABqAAAA4AAAAP8AAAD/AAAA/wAAAFwAAAA7AAAA/wAAAP8AAAD/AAAA8wAAAPoAAABAAAAAsQAAAK8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAASQAAADQAAAC8AAAA/wAAAP4AAACwAAAAyQAAAOoAAAD+AAAA1QAAANYAAADQAAAA0QAAANIAAACWAAAA/wAAAFIAAAAAAAAAbwAAAP8AAAD/AAAANAAAAAAAAACDAAAA9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAArAAAAAAAAAP8AAAAdAAAAYwAAAP0AAAAAAAAAZgAAAPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtAAAAcAAAANYAAAD/AAAAmwAAALMAAAD/AAAAuQAAAIAAAADmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wAAAF8AAABzAAAAaAAAAP0AAADgAAAAYQAAAF0AAACBAAAA7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAACLAAAAJwAAACYAAAB1AAAAZwAAACYAAAAtAAAAtwAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3AAAA/wAAAP8AAAD/AAAA7gAAAPMAAAD/AAAA/wAAAP8AAACTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ABBTfwAbWXwAHJ54EhTRcBIUk/EAExFADA6XAgAZXIMAG1lIAByeWE/Qk9hv01TAD9JTgA/QUwzP1BBAD89Qw==" -ABOUT_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAJEAAADOAAAA7QAAAO0AAADNAAAAkAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAP8AAAD/AAAA+wAAANoAAADZAAAA3AAAANcAAADjAAAA/wAAAP8AAAC5AAAAAAAAAAAAAAAAAAAAlwAAAP8AAAD/AAAA/wAAAMYAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAP8AAAD/AAAA/wAAAJIAAAAAAAAAKwAAAP8AAAD/AAAA/wAAAP8AAADqAAAAkwAAAB4AAAAAAAAARwAAAKMAAAD/AAAA/wAAAP8AAAD/AAAAJwAAAJsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAABVAAAAAAAAAKQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJcAAADaAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAATgAAAAAAAACMAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD1AAAA4gAAAEMAAAAAAAAAjAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPUAAAD/AAAA/wAAAP8AAAD/AAAA4gAAABAAAAAAAAAAAAAAAIYAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADbAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADCAAAARgAAAAQAAACQAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAmwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAAC8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlwAAACwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAM0AAAAeAAAAMQAAANQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAACgAAAAAAAAAmAAAAP8AAAD/AAAA/wAAAP8AAACAAAAAAAAAAAAAAAB3AAAA/wAAAP8AAAD/AAAA/wAAAJQAAAAAAAAAAAAAAAAAAAC9AAAA/wAAAP8AAAD/AAAA5gAAAEEAAAA+AAAA4gAAAP8AAAD/AAAA/wAAALoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAJMAAADPAAAA9gAAAPYAAADPAAAAkgAAADIAAAAAAAAAAAAAAAAAAAAA8A9BTeAHbWXAA3J5g+FTRQGAUk8AgExFAYA6XACAZXIBgG1lAYByeQAAQk8BgE1TgYFJTsADQUzgB1BB8A89Qw==" -CHECK_ICO = "AAABAAEAEBIAAAEAIADwBAAAFgAAACgAAAAQAAAAJAAAAAEAIAAAAAAAAAAAAGEPAABhDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAA9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwAAAH4AAACDAAAAlQAAABsAAABrAAAA7AAAAAwAAABcAAAAkQAAAH8AAACAAAAAggAAAH0AAAB5AAAAIwAAAPIAAAD/AAAA/wAAAOIAAABFAAAA0AAAAP8AAABrAAAAdgAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAFcAAAD/AAAA0gAAADAAAAAAAAAAeQAAAP8AAAD/AAAA8QAAACAAAAAcAAAARAAAAD4AAAAiAAAAjwAAAP8AAABRAAAA/wAAALoAAAAAAAAAHQAAAPkAAAD/AAAA/wAAAP8AAACaAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAD/AAAAUgAAAP8AAACxAAAAAAAAAJ8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAEoAAAAAAAAAAAAAAAAAAABnAAAA/wAAAFIAAADkAAAAGQAAAC8AAAD/AAAA/wAAAP8AAAD9AAAA/wAAAP8AAADNAAAAAQAAAAAAAAAAAAAAZwAAAP8AAABSAAAALQAAAAEAAADfAAAA/wAAAP8AAACyAAAAUwAAAP4AAAD/AAAA/wAAAHMAAAAAAAAAAAAAAGcAAAD/AAAAUgAAAF4AAAAcAAAAywAAAP8AAAD/AAAASAAAAAAAAACnAAAA/wAAAP8AAADwAAAAHAAAAAAAAABnAAAA/wAAAFIAAAD/AAAAiwAAAAAAAAB/AAAAmAAAAAAAAAAAAAAAJQAAAPcAAAD/AAAA/wAAAJ4AAAAAAAAAYQAAAP8AAABRAAAA/wAAAMcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAA/wAAAP8AAAD/AAAAGAAAAFEAAAD/AAAAUAAAAP8AAAC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAANgAAAD/AAAA/wAAAKwAAAAXAAAA6AAAAGwAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA/wAAAP8AAAD/AAAAUAAAAAsAAAA2AAAA/wAAALUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAD/AAAA/wAAAOIAAAARAAAAAAAAAPoAAAD/AAAAvwAAAMEAAADEAAAAxAAAAMQAAADGAAAA3AAAAFkAAAAbAAAA9wAAAP8AAAD/AAAAjgAAAAAAAADSAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADgAAAAAAAAAHUAAAD/AAAA/wAAAP8AAABhAAAADQAAABAAAAAQAAAADwAAAA8AAAAPAAAADwAAAA8AAAANAAAAGwAAAAAAAAAGAAAA3gAAAP8AAADzAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAACuAAAAEAAAAAD//yAo//82Kd+HaWP//3Nv//8gVv//dWH//1N0//9pb///MS7//0Nv//9vbv//VG///3Nc//9TMf//Q0///1RP//9TPf//XFA=" -ALERT_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAJAQAQCQEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICEdDg4P/w4OD/8gICEdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgLxQUFc0UFBXNICAgLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHiUaGhtZGBgZehgYGYMYGBl9GBgZfRgYGYMYGBl6GhobWR4eHiUAAAAAAAAAAAAAAAAAAAAAHBwcTBISE98PDxD/DQ0O/w0NDv8MDA3/DQ0O/w0NDv8MDA3/DQ0O/w0NDv8PDxD/EhIT3xwcHEwAAAAAAAAAABQUFa8ICAn/Dg4P/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dg4P/wgICf8UFBWvAAAAAAAAAAAhISETERES4gwMDf8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/wwMDf8RERLiISEhEwAAAAAAAAAAAAAAACAgIBkQEBHmDQ0O/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8QEBHmICAgGQAAAAAAAAAAAAAAAAAAAAAAAAAAISEhIRAQEfUNDQ7/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8QEBH1ISEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRa1DAwN/w8PEP8PDxD/Dw8Q/w8PEP8MDA3/FRUWtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMUtQ0NDv8PDxD/Dw8Q/w8PEP8PDxD/DQ0O/xMTFLUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTFLkNDQ7/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8TExS5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBWsDAwN/w8PEP8PDxD/Dw8Q/w8PEP8MDA3/FBQVrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhobbAsLDP8PDxD/Dw8Q/w8PEP8PDxD/CwsM/xoaG2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRbACgoM/w4OD/8ODg//CgoM/xUVFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGXAPDxD/Dw8Q/xgYGXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhYXsBYWF7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n9BTf5/bWXwD3J5gAFTRYABUk/AA0xF4Ac6XPAPZXLwD21l8A9yefAPQk/wD01T8A9JTvgfQUz8P1BB/n89Qw==" -OCR_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVAAAA6QAAAOgAAABNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAAA/wAAAP8AAAD/AAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAABaAAAA/wAAAP8AAABTAAAAqgAAAP8AAAAAAAAAAAAAAAAAAABIAAAAwwAAAP8AAAD/AAAA/wAAALIAAAB4AAAA/wAAAP8AAABCAAAAAQAAAPoAAABrAAAAAAAAAAAAAACbAAAA/wAAAP8AAAC1AAAAkwAAALUAAAD/AAAA/wAAAP8AAAD+AAAAaQAAAP8AAAB6AAAAAAAAAAAAAACeAAAA/wAAAI4AAAAFAAAAAAAAAAAAAAAAAAAABQAAAIcAAAD/AAAA/wAAAP8AAABsAAAAAAAAAAAAAAA7AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiwAAAP8AAABzAAAAAAAAAAAAAAAAAAAA0wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AAAAsQAAAAAAAAAAAAAAAAAAAP8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswAAAP8AAAAEAAAAAAAAAAAAAAD/AAAAhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUAAAD/AAAADgAAAAAAAAAAAAAA/wAAALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyAAAA/wAAAAQAAAAAAAAAAAAAANMAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAANMAAAAAAAAAAAAAAAAAAAA7AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwAAAP8AAAA7AAAAAAAAAAAAAAAAAAAAAAAAAJ4AAAD/AAAAjgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAjgAAAP8AAACeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwAAAP8AAAD/AAAAtQAAAJMAAAC1AAAA/wAAAP8AAACbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAwwAAAP8AAAD/AAAA/wAAAMMAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//lBTf/wbWX/5HJ58A1TRcABUk+Pg0xFn8c6XD/nZXI/521lP+dyeT/nQk8/501Tn89JTo+PQUzAH1BB8H89Qw==" -PICK_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUVFQAJCQkLPT09OF1dXVdvb29vgYGBiJCQkJaRkZGVhYWFhXJycm5hYWFXRkZGOQ4ODgwdHR0AAAAAAFJSUgAvLy8kkZGRq83NzfHg4OD96urq/9zc3P/Nzc3/zs7O/9vb2//r6+v/4uLi/dHR0fKVlZWuNTU1JmBgYAAAAAASlpaWsfDw8P///////v7+//7+/v/p6en/wMDA/8DAwP/o6Oj//v7+//7+/v//////8vLy/5qamrcFBQUWWlpaZNvb2/j//////Pz8//v7+//+/v7//v7+/8PDw//BwcH//v7+//7+/v/7+/v//Pz8///////e3t76YWFha4aGhqb19fX/6Ojo/3R0dP9XV1f/q6ur//n5+f+enp7/mpqa//r6+v+urq7/WFhY/3Fxcf/m5ub/9/f3/4yMjK6MjIyw+fn5/5SUlP8MDAz/MjIy/ykpKf+lpaX///////////+qqqr/KSkp/zMzM/8MDAz/jo6O//r6+v+SkpK4e3t7k/Hx8f90dHT/TU1N/2RkZP9wcHD/VVVV//b29v/4+Pj/WVlZ/25ubv9lZWX/UFBQ/25ubv/z8/P/gYGBmmNjY27n5+f9l5eX/05OTv99fX3/fHx8/2NjY//4+Pj/+vr6/2dnZ/96enr/fn5+/1BQUP+RkZH/6urq/mpqanY5OTk+zc3N7d7e3v8zMzP/KSkp/zIyMv/AwMD////////////ExMT/NDQ0/yoqKv8wMDD/2tra/9LS0vBBQUFFAAAADJmZmbL5+fn/wsLC/3t7e//AwMD//Pz8//z8/P/8/Pz//f39/8PDw/97e3v/v7+///r6+v+fn5+6AAAAEF5eXgAyMjJgtra2/P///////////v7+//z8/P/8/Pz//Pz8//z8/P/+/v7///////////+9vb39OTk5Z3l5eQAAAAAcAAAAvCUlJf+2trb//Pz8///////9/f3//f39//39/f/9/f3///////z8/P+7u7v/Kioq/wAAAMEAAAAgAAAAVwAAAPgAAAD/FhYW/3p6evTS0tLy6Ojo/+3t7f/s7Oz/5+fn/8/Pz/N6enrzFxcX/wAAAP8AAAD6AAAAXwAAADQAAADdAAAA/wAAAOgBAQFhSEhIO3BwcGh3d3d5c3NzeWlpaWlCQkI8AQEBXQAAAOYAAAD/AAAA4AAAADkAAAACAAAARgAAAIsAAABLAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABIAAAAiwAAAEkAAAAC//8AAMADAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAB+AAAA==" -EXIT_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC6AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAC7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAP8AAAD/AAAAHQAAAAwAAAAOAAAADgAAAAwAAAAbAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADXAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAMAAAA1wAAAOcAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAD/AAAA/wAAAAAAAAAMAAAA1wAAAP8AAADVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA/wAAAP8AAAAPAAAA1wAAAP8AAADXAAAAGQAAAAwAAAAOAAAADgAAAA4AAAAPAAAAEQAAAAAAAAAAAAAAEAAAAP8AAAD/AAAA5AAAAP8AAAD/AAAA8AAAAPEAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAAAAAAAMAAAD/AAAA/wAAAOQAAAD/AAAA/wAAAPAAAADxAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA1wAAAAAAAAADAAAA/wAAAP8AAAAPAAAA1wAAAP8AAADXAAAAGQAAAAwAAAAOAAAADgAAAA4AAAAPAAAAEQAAAAAAAAAAAAAAEAAAAP8AAAD/AAAAAAAAAAwAAADXAAAA/wAAANUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAD/AAAA/wAAAAAAAAAAAAAADAAAANcAAADmAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADXAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/wAAAP8AAAAdAAAADAAAAA4AAAAOAAAADAAAABsAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC6AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAC7/ABBTfwAbWX8/HJ5/PxTRef8Uk/H/ExFh/w6XAAMZXIADG1lh/xyecf8Qk/n/E1T/PxJTvz8QUz8AFBB/AA9Qw==" diff --git a/memorytools/plugins/__init__.py b/memorytools/plugins/__init__.py new file mode 100644 index 0000000..60648cd --- /dev/null +++ b/memorytools/plugins/__init__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" +@file: __init__ +@author: Memory +@date: 2020/10/11 +@description: plugin的初始化文件,用于创建一个plugin_list +""" +from .base import BasePlugin, change_config +from .alert import Alert +from .copytrans import CopyTrans +from .ocr import OCR +from .help import Help + + +plugin_list = [CopyTrans, OCR, Alert, Help] + + +# 以下代码是用于自动寻找插件包的,但是如果使用pyinstaller打包的话, +# 需要将plugins文件夹拷进去才能正常工作,因此暂不使用 +# from importlib import import_module +# from tools.logger import logger +# from setuptools import find_packages +# packages = find_packages() +# plugin_list = [] +# for package in packages: +# if package.startswith("plugins."): +# module = import_module(package) +# plugin_list.append(module.plugin) +# logger.info("[plugin init] 发现插件包: "+module.__name__) diff --git a/memorytools/plugins/alert/__init__.py b/memorytools/plugins/alert/__init__.py new file mode 100644 index 0000000..bd488d3 --- /dev/null +++ b/memorytools/plugins/alert/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +""" +@file: __init__ +@author: Memory +@date: 2020/10/11 +""" +from .alert import Alert + +plugin = Alert diff --git a/memorytools/plugins/alert/alert.py b/memorytools/plugins/alert/alert.py new file mode 100644 index 0000000..6571816 --- /dev/null +++ b/memorytools/plugins/alert/alert.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +""" +@file: alert +@author: Memory +@date: 2020/10/11 +@description: 用于工作提醒 +""" +from time import time +from .alertbox import AlertBox +from globals import TEXT, ICON, PATH +from tools.utils import is_check, is_pick +from tools.logger import logger +from plugins import BasePlugin, change_config +from PIL import ImageGrab + + +class Alert(BasePlugin): + def __init__(self, root) -> None: + config_path = PATH.config / ("%s.json" % self.__class__.__name__) + super(Alert, self).__init__("工作提醒", root, ICON.alert, config_path) + self.config = self.init_config() + self.rest_start_time = time() + + self.slack_start_time = time() + self.last_screen = ImageGrab.grab().getdata() + self.check_interval = 60 + self.last_check_time = time() + self.similarity_thresold = 0.96 + + def create_menu(self): + menu_options = ( + ("休息提醒", is_check(self.is_rest_alert), self.pause_rest_alert, True), + ('30分钟', is_pick(self.rest_time == 30), self.set_rest_time, False), + ('60分钟', is_pick(self.rest_time == 60), self.set_rest_time, False), + ('90分钟', is_pick(self.rest_time == 90), self.set_rest_time, True), + ("摸鱼提醒", is_check(self.is_slack_alert), self.pause_slack_alert, True), + ('10分钟', is_pick(self.slack_time == 10), self.set_slack_time, False), + ('15分钟', is_pick(self.slack_time == 15), self.set_slack_time, False), + ('20分钟', is_pick(self.slack_time == 20), self.set_slack_time, False), + ) + + return menu_options + + def create_default_config(self) -> dict: + config = { + "is_rest_alert": True, + "rest_time": 60, + "is_slack_alert": True, + "slack_time": 15 + } + return config + + @change_config + def pause_rest_alert(self, option_text): + self.is_rest_alert = not self.is_rest_alert + if self.is_rest_alert: + self.rest_start_time = time() + logger.info("[休息提醒] 开启休息提醒") + else: + logger.info("[休息提醒] 关闭休息提醒") + + @change_config + def pause_slack_alert(self, option_text): + self.is_slack_alert = not self.is_slack_alert + if self.is_slack_alert: + self.slack_start_time = time() + logger.info("[休息提醒] 开启摸鱼提醒") + else: + logger.info("[休息提醒] 关闭摸鱼提醒") + + @change_config + def set_rest_time(self, option_text): + self.rest_time = int(option_text[:2]) + logger.info("[休息提醒] 将休息提醒时间设置为 %d 分钟." % self.rest_time) + + @change_config + def set_slack_time(self, option_text): + self.slack_time = int(option_text[:2]) + logger.info("[休息提醒] 将摸鱼提醒时间设置为 %d 分钟." % self.slack_time) + + def alert(self): + minute = (time() - self.rest_start_time) / 60 # 分钟数 + if minute >= self.rest_time: + return True + return False + + def slack(self): + """ + 判断是否在摸鱼 + 首先,程序每隔 self.check_interval 秒钟检查一次屏幕,将其与上一次的屏幕进行对比, + 如果相似度超过 self.similarity_thresold, 则判断为摸鱼。 + 如果摸鱼时间超过了 self.slack_time,那么将会弹窗提醒。 + """ + check = (time() - self.last_check_time) > self.check_interval + if check: + self.last_check_time = time() + current_screen = ImageGrab.grab().getdata() + similarity = 0 + for i, j in zip(current_screen, self.last_screen): + if i == j: + similarity += 1 + similarity = similarity / len(current_screen) + # print(similarity) + self.last_screen = current_screen + + if similarity >= self.similarity_thresold: + minute = (time() - self.slack_start_time) / 60 + # print(minute, self.slack_time) + if minute >= self.slack_time: + return True + else: + self.slack_start_time = time() + + return False + + def start(self): + if self.is_rest_alert and self.alert(): + alert_message = TEXT.rest_alert % self.rest_time + AlertBox('危险警报').show(alert_message, '想要继续工作了再点我') + self.rest_start_time = time() + self.slack_start_time = time() + + if self.is_slack_alert and self.slack(): + alert_message = TEXT.slack_alert % self.slack_time + AlertBox('摸鱼警报').show(alert_message, '点我开始工作') + self.rest_start_time = time() + self.slack_start_time = time() diff --git a/memorytools/plugins/alert/alertbox.py b/memorytools/plugins/alert/alertbox.py new file mode 100644 index 0000000..8e70059 --- /dev/null +++ b/memorytools/plugins/alert/alertbox.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +""" +@file: alertbox +@author: Memory +@date: 2020/10/11 +@description: 休息提醒的弹出框定义 +""" +from tkinter.ttk import Label +from tools.basebox import BaseBox + + +class AlertBox(BaseBox): + """ + 用于显示警告信息 + """ + def __init__(self, title='AlertBox'): + super(AlertBox, self).__init__([], title) + + def show(self, text: str, button=None): + self.minsize(self.screen_w//3, self.screen_h//5) + label = Label(self, text=text, font=("微软雅黑", 12)) + label.pack(padx=10, pady=50) + if button: + self.cancel_bth.config(text=button) + self.start() diff --git a/memorytools/plugins/alert/config.json b/memorytools/plugins/alert/config.json new file mode 100644 index 0000000..664824e --- /dev/null +++ b/memorytools/plugins/alert/config.json @@ -0,0 +1,4 @@ +{ + "is_alert": true, + "alert_time": 90 +} \ No newline at end of file diff --git a/memorytools/plugins/base.py b/memorytools/plugins/base.py new file mode 100644 index 0000000..e2df9e7 --- /dev/null +++ b/memorytools/plugins/base.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +""" +@file: base +@author: Memory +@date: 2020/10/11 +@description: 所有插件的基类,提供插件的统一运行框架。 +""" +import json +from pathlib import Path +from tools.logger import logger + + +def change_config(set_attr): + """ + 因为每次更改属性都要刷新托盘菜单,并且写到配置文件中, + 所以定义一个装饰器,以简化代码 + :param set_attr: 更改属性的函数 + :return: 装饰过的函数 + """ + def wrapper(plugin, option_text): + f = set_attr(plugin, option_text) + plugin.save_config() + plugin.root.refresh_menu() + return f + + return wrapper + + +class BasePlugin(object): + """ + 所有插件的基类,提供插件的统一运行框架。 + 每个插件都以一个模块的形式存在,假设在一个插件名为 test,则可以: + 1. 创建一个包为 plugins/test (文件夹名字随意) + 2. 包内至少 2 个文件: + 2.1 __init__.py: 必须包含一个变量 plugin, 指向一个 BasePlugin 的子类 + 2.2 test.py(文件名随意):插件的主要运行代码,其中有一个类必须继承 BasePlugin,并写到 __init__.py 中 + 具体可以参阅plugins文件夹下面的几个插件。 + """ + def __init__(self, name: str, root, icon: str, config_path: Path): + """ + :param name: 该插件的名字,会显示在托盘菜单中 + :param root: MemoryTools类,会由主程序自动传入 + :param icon: 图标的路径 + :param config_path: 配置文件的路径 + """ + self.name = name + self.root = root + self.icon = icon + self.config_path = config_path + logger.info("[plugin base] 初始化插件: " + self.name) + + def init_config(self): + """ + 读取目录下的配置文件,并将属性绑定到类中, + 如果没有配置文件,则使用默认的配置 + """ + if not self.config_path.exists(): + config = self.create_default_config() + else: + config = self.config_path.read_text(encoding="utf-8") + config = json.loads(config) + + for attr, value in config.items(): + self.__setattr__(attr, value) + + return config + + def save_config(self): + """ + 从类中获取配置的属性,并保存到文件中 + :return: + """ + for attr in self.config: + self.config[attr] = self.__getattribute__(attr) + + data = json.dumps(self.config, indent=4, ensure_ascii=False) + self.config_path.write_text(data, encoding="utf-8") + + def create_default_config(self) -> dict: + """ + 返回默认的配置 + """ + return {} + + def init_menu(self) -> tuple: + """ + 入口菜单项 + """ + return self.name, self.icon, self.create_menu(), True + + def create_menu(self) -> tuple: + """ + 子菜单,格式可以参考 MemoryTools 类中的 create_menu 方法 + """ + raise NotImplementedError + + def start(self) -> None: + """ + 主要运行的函数,会被主程序重复调用 + """ + raise NotImplementedError diff --git a/memorytools/plugins/copytrans/__init__.py b/memorytools/plugins/copytrans/__init__.py new file mode 100644 index 0000000..08554c5 --- /dev/null +++ b/memorytools/plugins/copytrans/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +""" +@file: __init__ +@author: Memory +@date: 2020/10/11 +""" +from .copytrans import CopyTrans +from .transbox import TransBox + +plugin = CopyTrans diff --git a/memorytools/plugins/copytrans/config.json b/memorytools/plugins/copytrans/config.json new file mode 100644 index 0000000..d1fda99 --- /dev/null +++ b/memorytools/plugins/copytrans/config.json @@ -0,0 +1,8 @@ +{ + "is_trans": true, + "newline": false, + "strict": false, + "mode": "both", + "src": "en", + "dest": "zh-cn" +} \ No newline at end of file diff --git a/memorytools/plugins/copytrans/copytrans.py b/memorytools/plugins/copytrans/copytrans.py new file mode 100644 index 0000000..5205e6a --- /dev/null +++ b/memorytools/plugins/copytrans/copytrans.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +""" +@file: copytrans +@author: Memory +@date: 2020/12/24 +@description: 复制翻译插件的定义 +""" +from pathlib import Path +from .transbox import TransBox +from google_trans_new import google_translator +from tools.utils import is_check, is_pick, judge_language, paste_clip, copy_clip +from tools.logger import logger +from requests.exceptions import ConnectionError +from plugins import BasePlugin, change_config +from globals import ICON, PATH + + +class CopyTrans(BasePlugin): + """ + 一个复制翻译的插件,调用谷歌翻译的接口翻译剪切板中的文本 + """ + def __init__(self, root) -> None: + config_path = PATH.config / ("%s.json" % self.__class__.__name__) + super(CopyTrans, self).__init__("复制翻译", root, ICON.trans, config_path) + self.config = self.init_config() + self.last = '' # 记录上次的剪切板内容 + self.translator = self.get_translator() # 获得翻译接口 + + def create_menu(self) -> tuple: + menu_options = ( + ("开启翻译", is_check(self.is_trans), self.pause_trans, True), + ('去除换行', is_check(not self.newline), self.turn_newline, True), + ('严格模式', is_check(self.strict), self.turn_strict, True), + ('英文 <-> 中文', is_pick(self.mode == 'both'), self.both_mode, False), + ('英文 --> 中文', is_pick(self.mode == 'en2zh'), self.en2zh_mode, False), + ('中文 --> 英文', is_pick(self.mode == 'zh2en'), self.zh2en_mode, False), + ) + + return menu_options + + def create_default_config(self) -> dict: + config = { + "is_trans": True, + "newline": False, + "strict": False, + "mode": "both", + "src": "en", + "dest": "zh-cn" + } + return config + + @classmethod + def get_translator(cls): + return google_translator() + + @change_config + def pause_trans(self, option_text): + self.is_trans = not self.is_trans + if self.is_trans: + logger.info("[复制翻译] 开启复制翻译") + else: + logger.info("[复制翻译] 关闭复制翻译") + + @change_config + def en2zh_mode(self, option_text): + self.mode = 'en2zh' + self.src, self.dest = 'en', 'zh-cn' + logger.info("[复制翻译] 切换翻译模式为: 英译中") + + @change_config + def zh2en_mode(self, option_text): + self.mode = 'zh2en' + self.src, self.dest = 'zh-cn', 'en' + logger.info("[复制翻译] 切换翻译模式为: 中译英") + + @change_config + def both_mode(self, option_text): + self.mode = 'both' + logger.info("[复制翻译] 切换翻译模式为: 中英互译") + + @change_config + def turn_strict(self, option_text): + self.strict = not self.strict + if self.strict: + logger.info("[复制翻译] 开启严格模式") + else: + logger.info("[复制翻译] 关闭严格模式") + + @change_config + def turn_newline(self, option_text): + self.newline = not self.newline + if not self.newline: + logger.info("[复制翻译] 开启去除换行") + else: + logger.info("[复制翻译] 关闭去除换行") + + def remove_newline(self, source): + if not self.newline: + sentence = source.replace("\r", '').replace("\n", " ") + else: + sentence = source + + return sentence + + def pre_process(self, source): + ''' + 对剪切板的文本进行预处理。 + 首先判断是否为空或者与上次复制的一致,如果是则不翻译。 + 然后检测语言,是否不包含中英文,如果是则不翻译。 + 再判断是否其中的目标语言占比过大,如果是则不翻译。 + 如果是互译模式,根据检测结果设置源语言和目标语言。 + 再判断是否要去除其中的换行。 + ''' + # 判断是否为空或与之前的内容一致 + if source == "" or source == self.last: + return None + # 去除文本两端的空格 + text = source.strip() + logger.info("[复制翻译] 剪切板文本为: %s" % text) + # 检测文本的语言 + src_language, score = judge_language(text) + msg = "[复制翻译] 文本的主要语言为: %s, 占比: %s" % (src_language, score) + logger.info(msg) + # 文本中不含中英文则不翻译 + if not src_language: + self.last = source + logger.info("[复制翻译] 文本中不含中英文,因此不翻译.") + return None + # 文本中目标语言的占比过大则不翻译 + if self.mode != 'both' and src_language == self.dest and score > 0.8: + logger.info("[复制翻译] 文本中目标语言的占比过大,因此不翻译.") + self.last = source + return None + # 如果是中英互译,则根据检测的语言设置源语言和目标语言 + if self.mode == 'both': + self.src = src_language + self.dest = 'en' if src_language == 'zh-cn' else 'zh-cn' + # 去除换行符 + sentence = self.remove_newline(text) + + return sentence + + def trans_text(self, sentence: str): + """ + 使用接口翻译文本,由于可能会失败,因此这里会重连三次 + :param sentence: 待翻译的文本 + :return: 翻译后的文本 + """ + text = sentence + for i in range(3): + try: + if self.strict: + text = self.translator.translate(sentence, lang_src=self.src, lang_tgt=self.dest) + else: + text = self.translator.translate(sentence, lang_tgt=self.dest) + return text + except ConnectionError as ce: + logger.error("[复制翻译] 连接失败: %s" % ce) + self.translator = self.get_translator() + text = str(ce) + except Exception as e: + logger.error("[复制翻译] 翻译出错: %s" % e) + text = str(e) + return text + + def trans(self, source: str): + """ + 对文本进行处理,看是否需要翻译,若否则不处理,若是则调用接口进行翻译并进行显示 + :param source: 待处理的文本 + :return: + """ + sentence = self.pre_process(source) + if not sentence: + return None + + text = self.trans_text(sentence) + + if text == sentence: + self.last = source + logger.info('[复制翻译] 译文与原文一致,因此不显示。') + return None + logger.info('[复制翻译] 翻译结果为: %s' % text) + TransBox(copy_trans=self).show(sentence, text) + paste = paste_clip() + if paste == source: + copy_clip(sentence) + self.last = paste_clip() + + def start(self): + if not self.is_trans: # 是否暂停 + return + source = paste_clip() # 获得剪切板内容 + self.trans(source) diff --git a/memorytools/plugins/copytrans/transbox.py b/memorytools/plugins/copytrans/transbox.py new file mode 100644 index 0000000..68bc55b --- /dev/null +++ b/memorytools/plugins/copytrans/transbox.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +""" +@file: basebox +@author: Memory +@date: 2020/10/11 +@description: 复制翻译的弹出框 +""" +from tkinter.scrolledtext import ScrolledText +from tools.basebox import BaseBox, END +from tools.utils import get_text_line + + +class TransBox(BaseBox): + def __init__(self, title="翻译结果", copy_trans=None): + buttons = [('重新翻译', self.retrans), ('复制', self.copy)] + super(TransBox, self).__init__(buttons, title) + self.copy_trans = copy_trans + + def set_text(self, textbox, text): + textbox.delete("1.0", END) + textbox.insert(END, text) + + def retrans(self): + """ + 根据用户的更改重新进行翻译 + """ + sentence = self.src_text.get("1.0", END) + sentence = self.copy_trans.remove_newline(sentence) + + self.set_text(self.src_text, sentence) + self.set_text(self.textbox, "翻译中,请稍候...") + + text = self.copy_trans.trans_text(sentence) + self.set_text(self.textbox, text) + + def show(self, src: str, dest: str): + h1 = min(10, max(5, get_text_line(src) + 1)) + h2 = min(10, max(5, get_text_line(dest) + 1)) + + self.src_text = ScrolledText(self, height=h1, background='#ffffff', font=("微软雅黑", 11)) + self.textbox = ScrolledText(self, height=h2, background='#ffffff', font=("微软雅黑", 11)) + + self.src_text.insert(END, str(src)) + self.src_text.config() + self.textbox.insert(END, str(dest)) + + self.src_text.pack(side='top', padx=10, pady=10) + self.textbox.pack(side='top', padx=10, pady=10) + + self.start() diff --git a/memorytools/plugins/help/__init__.py b/memorytools/plugins/help/__init__.py new file mode 100644 index 0000000..462f6da --- /dev/null +++ b/memorytools/plugins/help/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +""" +@file: __init__ +@author: Memory +@date: 2020/10/11 +""" + +from .help import Help + +plugin = Help diff --git a/memorytools/plugins/help/config.json b/memorytools/plugins/help/config.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/memorytools/plugins/help/config.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/memorytools/plugins/help/help.py b/memorytools/plugins/help/help.py new file mode 100644 index 0000000..c2d3d87 --- /dev/null +++ b/memorytools/plugins/help/help.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +""" +@file: help +@author: Memory +@date: 2020/10/11 +@description: 帮助插件的定义 +""" +from os import startfile +from pathlib import Path +from webbrowser import open as open_web +from globals import ICON, PATH, URL +from plugins import BasePlugin + +# + + +class Help(BasePlugin): + def __init__(self, root) -> None: + config_path = PATH.config / ("%s.json" % self.__class__.__name__) + super(Help, self).__init__("帮助", root, ICON.about, config_path) + self.config = self.init_config() + + def about(self, s): + """ + 菜单中的 关于 选项 + """ + open_web(URL.github) + + def check_update(self, s): + open_web(URL.release) + + def open_log(self, s): + startfile(PATH.log.absolute()) + + def create_menu(self) -> tuple: + menu_options = ( + ("关于", None, self.about, True), + ("日志", None, self.open_log, True), + ("更新", None, self.check_update, True), + ) + + return menu_options + + def start(self) -> None: + pass diff --git a/memorytools/plugins/ocr/__init__.py b/memorytools/plugins/ocr/__init__.py new file mode 100644 index 0000000..952a80a --- /dev/null +++ b/memorytools/plugins/ocr/__init__.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +""" +@file: __init__ +@author: Memory +@date: 2020/10/11 +""" +from .baiduOCR import BaiduOCR +from .xueersiOCR import LatexOCR +from .ocr import OCR + +plugin = OCR diff --git a/memorytools/baiduOCR.py b/memorytools/plugins/ocr/baiduOCR.py similarity index 66% rename from memorytools/baiduOCR.py rename to memorytools/plugins/ocr/baiduOCR.py index 58f67c8..1f82242 100644 --- a/memorytools/baiduOCR.py +++ b/memorytools/plugins/ocr/baiduOCR.py @@ -1,18 +1,34 @@ +# -*- coding: utf-8 -*- +""" +@file: baiduOCR +@author: Memory +@date: 2020/10/11 +@description: 百度OCR的接口 +""" from aip import AipOcr from PIL import Image -from utils import pil2bytes -from setting import * +from tools.utils import pil2bytes +from globals import BAIDU_ERROR_CODES + class BaiduOCR(object): - """docstring for BaiduOCR""" - def __init__(self, accounts: dict): + """ + 因为免费调用API的次数以及频率有限,因此利用百度官方提供的API构建 + 一个多账号的OCR识别的类,可以提升程序处理的能力。 + 传入一个账号的列表,可以根据额度自动切换识别的模式。 + + accounts: 百度AI平台的账号列表 + accounts = [{'APP_ID': '...', 'APP_KEY': '...', 'SECRET_KEY': '...'}, {...}, ...] + """ + def __init__(self, accounts: list): self.index = 0 self.ocrs = [] self.mode = 'basicAccurate' for acco in accounts: self.ocrs.append(AipOcr(acco['APP_ID'], acco['APP_KEY'], acco['SECRET_KEY'])) - def ocr(self, image, newline=True): + def ocr(self, image: Image, newline=True) -> str: + '''OCR识别的主函数,传入一个PIL.Image对象,返回识别的文本。''' if self.mode == 'None': return '当天配额已用完,请更换API或明天再试!' @@ -53,6 +69,3 @@ def ocr(self, image, newline=True): res = ''.join(res) return res - - - \ No newline at end of file diff --git a/memorytools/plugins/ocr/config.json b/memorytools/plugins/ocr/config.json new file mode 100644 index 0000000..66e1472 --- /dev/null +++ b/memorytools/plugins/ocr/config.json @@ -0,0 +1,5 @@ +{ + "is_ocr": true, + "newline": false, + "mode": "text" +} \ No newline at end of file diff --git a/memorytools/plugins/ocr/ocr.py b/memorytools/plugins/ocr/ocr.py new file mode 100644 index 0000000..36d1582 --- /dev/null +++ b/memorytools/plugins/ocr/ocr.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +""" +@file: ocr +@author: Memory +@date: 2020/10/11 +@description: ocr插件的定义 +""" +from pathlib import Path +from . import BaiduOCR +from . import LatexOCR +from PIL import Image, ImageGrab, ImageDraw +from .ocrbox import OcrBox +from tools.logger import logger +from globals import BAIDU_ACCOUNTS, XUEERSI_ACCOUNTS, ICON, PATH +from tools.utils import is_check, is_pick, get_rect, Color, copy_clip +from plugins import BasePlugin, change_config + + +class OCR(BasePlugin): + def __init__(self, root): + config_path = PATH.config / ("%s.json" % self.__class__.__name__) + super(OCR, self).__init__("OCR识别", root, ICON.ocr, config_path) + self.config = self.init_config() + self.text_ocr = BaiduOCR(BAIDU_ACCOUNTS) + self.math_ocr = LatexOCR(XUEERSI_ACCOUNTS) + + def create_menu(self) -> tuple: + menu_options = ( + ("开启OCR", is_check(self.is_ocr), self.pause_ocr, True), + ('去除换行', is_check(not self.newline), self.turn_newline, True), + ('识别文本', is_pick(self.mode == 'text'), self.text_mode, False), + ('识别公式', is_pick(self.mode == 'math'), self.math_mode, False), + ) + + return menu_options + + def create_default_config(self) -> dict: + config = { + "is_ocr": True, + "newline": False, + "mode": "text" + } + return config + + @change_config + def pause_ocr(self, option_text): + self.is_ocr = not self.is_ocr + if self.is_ocr: + logger.info("[OCR识别] 开启OCR识别") + else: + logger.info("[OCR识别] 关闭OCR识别") + + @change_config + def text_mode(self, option_text): + self.mode = 'text' + logger.info("[OCR识别] 切换OCR识别模式为: 文本") + + @change_config + def math_mode(self, option_text): + self.mode = 'math' + logger.info("[OCR识别] 切换OCR识别模式为: 公式") + + @change_config + def turn_newline(self, option_text): + self.newline = not self.newline + if not self.newline: + logger.info("[OCR识别] 开启去除换行") + else: + logger.info("[OCR识别] 关闭去除换行") + + def start(self): + if not self.is_ocr: + return + im = ImageGrab.grabclipboard() # 获取剪切板 + + if isinstance(im, Image.Image): # 判断是否是图片 + try: + if self.mode == 'text': + text = self.text_ocr.ocr(im, self.newline) + elif self.mode == 'math': + pos, text = self.math_ocr.latex(im) + print("位置:", pos) + draw = ImageDraw.Draw(im) + color = Color() + for rect in pos: + draw.polygon(get_rect(*rect), outline=color.next()) + except Exception as e: + text = str(e) + + copy_clip('') + OcrBox('OCR识别结果').show(im, text) + + +if __name__ == '__main__': + OCR().start() diff --git a/memorytools/plugins/ocr/ocrbox.py b/memorytools/plugins/ocr/ocrbox.py new file mode 100644 index 0000000..893ee8a --- /dev/null +++ b/memorytools/plugins/ocr/ocrbox.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +""" +@file: ocrbox +@author: Memory +@date: 2020/10/11 +@description: ocr弹出框的定义 +""" +from tkinter import Label, END +from tkinter.scrolledtext import ScrolledText +from PIL import ImageTk +from tools.basebox import BaseBox + + +class OcrBox(BaseBox): + """ + 用来显示一张图片和一个文本框,会根据图片的大小和比例调整排列的方式 + """ + def __init__(self, title='OcrBox'): + buttons = [('复制', self.copy), ] + super(OcrBox, self).__init__(buttons, title) + + def resize_img(self, img, max_w: int, max_h: int): + """ + 对img进行缩放,使其长宽不超过给定的 max_w 和 max_h + """ + img_w, img_h = img.size + if img_w < max_w and img_h < max_h: + return img + + if img_w * max_h > img_h * max_w: + new_w = max_w + new_h = img_h * (new_w / img_w) + img = img.resize((int(new_w), int(new_h))) + else: + new_h = max_h + new_w = img_w * (new_h / img_h) + img = img.resize((int(new_w), int(new_h))) + + return img + + def set_size(self, img): + """ + 对图片进行处理,并限制窗口大小 + """ + img_w, img_h = img.size + aspect_ratio = self.screen_w / self.screen_h + + if img_w > img_h * aspect_ratio: + w, h = self.screen_w * 0.9, self.screen_h * 0.35 + img = self.resize_img(img, w, h) + img_w, img_h = img.size + width = max(self.screen_w // 3, img_w+20) + self.maxsize(width, int(self.screen_h*0.9)) + else: + w, h = self.screen_w * 0.45, self.screen_h * 0.7 + img = self.resize_img(img, w, h) + img_w, img_h = img.size + width = max(self.screen_w // 3, 2 * img_w + 70) + self.maxsize(width, int(self.screen_h*0.9)) + + return img + + def show(self, img, txt: str): + """ + 显示 + """ + img = self.set_size(img) + w, h = img.size + + self.tkImage = ImageTk.PhotoImage(image=img) + self.label = Label(self, image=self.tkImage) + self.textbox = ScrolledText(self, height=10, background='#ffffff', font=("微软雅黑", 11)) + self.textbox.insert(END, txt) + + aspect_ratio = self.screen_w / self.screen_h + if w >= h * aspect_ratio: + self.label.pack(side='top', padx=10, pady=10) + self.textbox.pack(side='top', padx=10, pady=10, fill='both') + else: + self.label.pack(side='left', padx=10, pady=10) + self.textbox.pack(side='right', padx=10, pady=10, fill='both') + + self.start() diff --git a/memorytools/xueersiOCR.py b/memorytools/plugins/ocr/xueersiOCR.py similarity index 64% rename from memorytools/xueersiOCR.py rename to memorytools/plugins/ocr/xueersiOCR.py index fd1cb0a..d323073 100644 --- a/memorytools/xueersiOCR.py +++ b/memorytools/plugins/ocr/xueersiOCR.py @@ -1,3 +1,10 @@ +# -*- coding: utf-8 -*- +""" +@file: xueersiOCR +@author: Memory +@date: 2020/10/11 +@description: 学而思OCR的接口 +""" from time import sleep, time from random import randint, choice from PIL import Image @@ -5,13 +12,14 @@ from base64 import b64encode from urllib.parse import quote from requests import post -from requests.exceptions import ConnectionError -from utils import * -from setting import * +from tools.utils import pil2bytes +from globals import ALPHADIG, XUEERSI_ERROR_CODES + class XueersiOCR(object): ''' - 调用学而思AI平台的API进行OCR文字识别 + 调用学而思AI平台的API进行OCR识别。 + app_key, app_secret 需要到学而思开放平台的官网上登录获取。 ''' def __init__(self, app_key: str, app_secret: str): self.app_key = app_key @@ -19,21 +27,23 @@ def __init__(self, app_key: str, app_secret: str): self.start_time = 0 self.url = 'http://openapiai.xueersi.com/v1/api/img/ocr/general' - def ocr(self, image: str, img_type='base64')->dict: + def ocr(self, image: str, img_type='base64') -> dict: ''' - image 是base64字符串或者url + image: base64字符串或者url + img_type: 如果是 base64 字符串,则为 base64, 如果是 url,则为 url + 返回值: API返回的json ''' params = { - 'app_key' : self.app_key, - 'time_stamp' : str(int(time())), - 'nonce_str' : self.getNonceStr(), + 'app_key' : self.app_key, + 'time_stamp': str(int(time())), + 'nonce_str' : self.getNonceStr(), } params['sign'] = self.getReqSign(params, self.app_secret) params['img'] = image params['img_type'] = img_type params['recog_formula'] = 0 - payload = self.join_params(params) + payload = self.joinParams(params) headers = { 'Content-Type': "application/x-www-form-urlencoded", 'cache-control': "no-cache", @@ -48,18 +58,18 @@ def ocr(self, image: str, img_type='base64')->dict: return res @classmethod - def join_params(self, params: dict)->str: + def joinParams(self, params: dict) -> str: ''' 用于拼接参数。因为直接传递字典会返回图片模糊的结果,待解决。 ''' palist = [] for k, v in params.items(): - palist.append('%s=%s'%(k,v)) + palist.append('%s=%s' % (k, v)) payload = '&'.join(palist) return payload @classmethod - def getReqSign(self, params:dict, app_secret: str)->str: + def getReqSign(self, params: dict, app_secret: str) -> str: ''' 计算接口请求签名。 返回40位的16进制字符串。 @@ -72,7 +82,7 @@ def getReqSign(self, params:dict, app_secret: str)->str: return sign.hexdigest() @classmethod - def getNonceStr(self)->str: + def getNonceStr(self) -> str: ''' 返回一个长度为1~32的随机字符串。 ''' @@ -83,7 +93,12 @@ def getNonceStr(self)->str: class LatexOCR(object): - """docstring for LatexOCR""" + """ + 因为免费调用API的频率有限,因此构建一个多账号的OCR识别的类, + 可以提升程序处理的能力。 + accounts: 学而思AI平台的账号列表 + accounts = [{'app_key': '...', 'app_secret': '...'}, {...}, ...] + """ def __init__(self, accounts: list): # self.accounts = accounts self.interval = 10 @@ -93,8 +108,9 @@ def __init__(self, accounts: list): self.ocrs.append(XueersiOCR(acco['app_key'], acco['app_secret'])) def get_api(self): + '''返回一个接口用来进行OCR识别。''' xueersi = self.ocrs[self.index] - + time_pass = time() - xueersi.start_time if time_pass < self.interval: sleep(self.interval - time_pass + 0.1) @@ -102,15 +118,16 @@ def get_api(self): self.index = (self.index + 1) % len(self.ocrs) return xueersi - def ocr(self, image, img_type='base64'): + def ocr(self, image: str, img_type='base64'): + '''OCR识别的主函数,传入一个PIL.Image对象,返回识别的文本和位置。''' xueersi = self.get_api() res = xueersi.ocr(image, img_type) pos = [] code = res['code'] if code != 0: - if code in ERROR_CODES: - return (pos, ERROR_CODES[code]['reason']) + if code in XUEERSI_ERROR_CODES: + return (pos, XUEERSI_ERROR_CODES[code]['reason']) else: return (pos, "由于未知错误,识别失败!") @@ -123,7 +140,8 @@ def ocr(self, image, img_type='base64'): return (pos, content) - def latex(self, pilimg, img_type='base64'): + def latex(self, pilimg: Image, img_type='base64'): + '''OCR识别的主函数,传入一个PIL.Image对象,返回识别的文本和位置。''' if isinstance(pilimg, Image.Image): image = quote(b64encode(pil2bytes(pilimg))) diff --git a/memorytools/setting.py b/memorytools/setting.py deleted file mode 100644 index e2995e2..0000000 --- a/memorytools/setting.py +++ /dev/null @@ -1,283 +0,0 @@ -import string -from pic import * - -ABOUT_MSG = 'memory tools version 1.5.0' - -ABOUT_IMG = 'README.png' - -ICONS = { - 'icon.ico': ICON_ICO, 'trans.ico': TRANS_ICO, 'ocr.ico': OCR_ICO, - 'alert.ico': ALERT_ICO, 'exit.ico': EXIT_ICO, 'about.ico': ABOUT_ICO, - 'check.ico': CHECK_ICO, 'pick.ico': PICK_ICO - } - -HOVER_TEXT = "Memory Tools" - -ALERT_MSG = 'tip: 连续在电脑前工作太久容易脱发,得颈椎病,猝死。' - -CONFIG = 'config.json' - -SRC_PATH = 'src' - -DEFAULT_CONFIG = { - 'copytrans': - { - 'is_trans': True, - 'newline': False, - 'strict': False, - 'mode': 'en2zh', - 'src': 'en', - 'dest': 'zh-cn' - }, - 'ocr' : - { - 'is_ocr': True, - 'newline': True, - 'mode': 'text' - }, - 'alert': - { - 'is_alert': True, - 'alert_time': 90 - } -} - -ALPHADIG = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' -COLOR = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 0, 255), (0, 255, 255)] -REMOVE_PUNCTUATION_MAP = dict((ord(char), None) for char in string.punctuation) -NOTAS = u'[’·°–!"#$%&\'()*+,-./:;<=>?@,。?★、…【】()《》?“”‘’![\\]^_`{|}~]+' - -# 学而思AI开方平台的账号 -XUEERSI_ACCOUNTS = [ - { - 'app_key': '2a449a7feb2a73b99e6d2b2f3642aa9e73e40e64', - 'app_secret': 'dd8f56acf88895367c738cd9c1255507d081746210c5dbee3022795ba9cc9b83' - }, - { - 'app_key': '5aa0ae48e4b03fe034cb547f9ebfa47190d88739', - 'app_secret': '96bc4d214831921740fcc383681460f4a60558992ac1c20cba85da49f2fb408f' - }, - { - 'app_key': 'cde7ff598c932b589b80d8b8c84aee88f563ff93', - 'app_secret': '3aeb7acbe8b5f3118da2bf59db42d0cbbf4237453fd3f03bee721c52a02eafcc' - }, - { - 'app_key': 'b8818b44c59c420848ed01eff8e965b315510cf0', - 'app_secret': 'e3d70584da64bea52af859866b7d5bd1b6eaeed6f0dde333bbf17f6b4af72dea' - } -] - -BAIDU_ACCOUNTS = [ - { - 'APP_ID': '18054283', - 'APP_KEY': 'UnwUzcDzzMcR6smt5xm9vIwi', - 'SECRET_KEY': '755vO7iZGV0DDIlzH7DHpkWjGDOBZzav', - }, - { - 'APP_ID': '19027780', - 'APP_KEY': 'c86EqlNtYwlIeMNvl6Pb1F1d', - 'SECRET_KEY': 'lDSIICh8MDAaa7fi6xYTpXQD5kUdQ5Ap', - } -] - -# 学而思平台的所有错误码,来源:https://docai.xueersi.com/books/ai%E6%95%99%E8%82%B2%E5%BC%80%E6%94%BE%E5%B9%B3%E5%8F%B0/page/%E8%BF%94%E5%9B%9E%E7%A0%81%E5%88%97%E8%A1%A8 -ERROR_CODES = { - -15000 : {'reason': 'json字符串化发生错误', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - -15001 : {'reason': 'json对象化发生错误', 'solution': '检查发送给API接口的请求Body中,字符串是否符合Json结构'}, - -15002 : {'reason': '内部请求错误', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - -15101 : {'reason': 'OCR服务内部异常', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - 14000 : {'reason': '参数非法', 'solution': '检查请求参数是否缺失,或参数类型有误'}, - 14001 : {'reason': '缺少app_key参数', 'solution': '检查是否缺失"app_key"参数'}, - 14002 : {'reason': '缺少time_stamp参数', 'solution': '检查是否缺失"time_stamp"参数'}, - 14003 : {'reason': '缺少nonce_str参数', 'solution': '检查是否缺失"nonce_str"参数或长度是否满足要求(1-32个字符长度)'}, - 14004 : {'reason': '缺少sign参数', 'solution': '检查是否缺失"sign"参数'}, - 14005 : {'reason': '图像不存在', 'solution': '检查传入图像URL是否有效,或者图像Base64是否完整且规范'}, - 14011 : {'reason': '应用不存在', 'solution': '检查当前请求API的URL拼写是否正确'}, - 14012 : {'reason': '请求签名无效', 'solution': '检查签名是否正确,或尝试重新获取签名'}, - 14013 : {'reason': 'time_stamp参数无效', 'solution': '检查"time_stamp"参数是否有误'}, - 15001 : {'reason': 'qps超过限制', 'solution': '您的每秒并发量超过了最大限制,请降低并发量重试;或者联系客服申请提高每秒并发量限制'}, - 15002 : {'reason': 'qpd超过限制', 'solution': '您的每日调用量超过了最大限制,请隔日再试;或者联系客服申请提高每日调用量限制'}, - 15003 : {'reason': 'qpm超过限制', 'solution': '您的每分钟并发量超过了最大限制,请降低并发量重试;或者联系客服申请提高每秒并发量限制'}, - 15004 : {'reason': 'interval超过限制', 'solution': '接口调用频率超过访问允许间隔。如果是试用账号,请登录后使用自己的账号。如果希望扩容,请联系商务为您免费提高调用频率。'}, - 15010 : {'reason': '图片解析失败,请重试', 'solution': '检查图片URL是否有效,或者图像Base64是否完整 且规范'}, - 15011 : {'reason': '图片有些问题,请重新拍照', 'solution': '检查图片成像是否正常,图片内部是否有有效图案'}, - 15012 : {'reason': '图片太暗啦,请开启照明', 'solution': '检查图片成像是否过暗,尝试开启闪光灯拍照重试'}, - 15013 : {'reason': '图片太模糊啦,请保证拍照清晰', 'solution': '检查图片成像是否模糊,请保证拍照清晰之后重试'}, - 15020 : {'reason': '客户端发包异常', 'solution': '检查网络是否有波动'}, - 15021 : {'reason': 'Sid获取异常', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - 15022 : {'reason': 'Idx获取异常', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - 15023 : {'reason': '图像获取异常', 'solution': '检查图片URL是否有效,或者图像Base64是否完整且规范'}, - 15024 : {'reason': '图像损坏', 'solution': '检查图片成像是否正常,图片内部是否有有效图案'}, - 15025 : {'reason': '图像模糊', 'solution': '检查图片成像是否模糊,请保证传入清晰图片重试'}, - 15026 : {'reason': '其他图像异常', 'solution': '检查图片问题,或联系客服linqi@100tal.com,反映此问题'}, - 15100 : {'reason': '传入图像尺寸过大或过小', 'solution': '不能大于4MB,长边不能超过4096,短边不能小于15'}, - 16010 : {'reason': 'base64音频编码为[]byte失败', 'solution': '检查base64音频内容是否无效'}, - 16011 : {'reason': '构造请求消息结构失败', 'solution': '检查发送参数是否不符合规范'}, - 16012 : {'reason': '解码服务器返回的响应body中,未获取到响应数据', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - 16013 : {'reason': '对解码服务器发送的http请求,请求失败或未响应', 'solution': '联系客服linqi@100tal.com,反映此问题'}, - 16014 : {'reason': 'socket接收失败', 'solution': 'socket接收失败'}, - 16015 : {'reason': '拉学生名单错误', 'solution': '输入学生名单有误,请检查。'}, - 16016 : {'reason': '解码器返回超时,比如端长时间占用连接', 'solution': '解码服务器连接超时,请稍后再试。'}, - 16017 : {'reason': 'Sid提前结束', 'solution': '您的这段语音已完成识别或者测评。'}, - 16018 : {'reason': '解码器目前繁忙', 'solution': '服务器繁忙,请稍后重试。'}, - 16107 : {'reason': '音频格式错误', 'solution': '请检查您的传入音频格式是否是允许的格式'}, - 16108 : {'reason': '评测文本格式错误,如出现了违规字符', 'solution': '请检查您的传入评测文本是否包含违规字符'}, - 16019 : {'reason': '解码器返回数据无有效声音', 'solution': '请检查您的传入音频是否有有效信息。'}, - 16020 : {'reason': 'pcm错误', 'solution': '请检查您的传入音频是否完整且有效'}, - 16100 : {'reason': 'WebSocket建立连接时,请求协议不是WebSocket握手', 'solution': '请检查您的WebSocket连接'}, - 16101 : {'reason': 'WebSocket建立连接时,无法设置WebSocket连接', 'solution': '请检查您的WebSocket连 接'}, - 16102 : {'reason': '可能是您的WebSocket长链接异常中断了,在WebSocket长连接中,服务端无法正常读取消息', 'solution': '请检查您的WebSocket连接'}, - 16103 : {'reason': '您传入的请求json中:common参数部分的idx属性不是字符型数字', 'solution': '请检查 您的请求数据common中idx的数据类型'}, - 16104 : {'reason': '您传入的请求json中:spec参数部分的assessRef评测文本为空', 'solution': '请检查您 的请求数据spec中是否包含assessRef'}, - 16105 : {'reason': '没有sid或者idx,或者在需要assess_ref的业务中没有传', 'solution': '请检查传入参数中是否缺失sid或idx或assess_ref。'}, - 16106 : {'reason': '音频数据为空', 'solution': '请检查您的传入音频是否有有效信息。'}, - 16109 : {'reason': '此sid已经结束', 'solution': '当前sid服务端已经处理结束'}, - 16110 : {'reason': '此sid已经完全结束', 'solution': '当前sid服务端已经处理结束且触发超时,处于待清理状态'}, - 16111 : {'reason': '您传入的请求json中:common参数部分的sid属性长度不符合长度要求(16-64个字符)', 'solution': '请检查您的传入的sid是否符合要求的长度'} - } - - - -BAIDU_ERROR_CODES = { - 4 : '集群超限额', - 14 : 'IAM鉴权失败,建议用户参照文档自查生成sign的方式是否正确,或换用控制台中ak sk的方式调用', - 17 : '每天流量超限额', - 18 : 'QPS超限额,请稍后再试', - 19 : '请求总量超限额', - 100 : '无效参数', - 110 : 'Access Token失效', - 111 : 'Access token过期', - 282000 : '服务器内部错误,如果您使用的是高精度接口,报这个错误码的原因可能是您上传的图片中文字过多,识别超时导致的,建议您对图片进行切割后再识别,其他情况请再次请求, 如果持续出现此类错误,请通过QQ群 (631977213)或工单联系技术支持团队。', - 216100 : '请求中包含非法参数,请检查后重新尝试', - 216101 : '缺少必须的参数,请检查参数是否有遗漏', - 216102 : '请求了不支持的服务,请检查调用的url', - 216103 : '请求中某些参数过长,请检查后重新尝试', - 216110 : 'appid不存在,请重新核对信息是否为后台应用列表中的appid', - 216200 : '图片为空,请检查后重新尝试', - 216201 : '上传的图片格式错误,现阶段我们支持的图片格式为:PNG、JPG、JPEG、BMP,请进行转码或更换图片', - 216202 : '上传的图片大小错误,现阶段我们支持的图片大小为:base64编码后小于4M,分辨率不高于4096*4096 ,请重新上传图片', - 216630 : '识别错误,请再次请求,如果持续出现此类错误,请通过QQ群(631977213)或工单联系技术支持团队 。', - 216631 : '识别银行卡错误,出现此问题的原因一般为:您上传的图片非银行卡正面,上传了异形卡的图片或上传的银行卡正品图片不完整', - 216633 : '识别身份证错误,出现此问题的原因一般为:您上传了非身份证图片或您上传的身份证图片不完整', - 216634 : '检测错误,请再次请求,如果持续出现此类错误,请通过QQ群(631977213)或工单联系技术支持团队 。', - 282003 : '请求参数缺失', - 282005 : '处理批量任务时发生部分或全部错误,请根据具体错误码排查', - 282006 : '批量任务处理数量超出限制,请将任务数量减少到10或10以下', - 282110 : 'URL参数不存在,请核对URL后再次提交', - 282111 : 'URL格式非法,请检查url格式是否符合相应接口的入参要求', - 282112 : 'url下载超时,请检查url对应的图床/图片无法下载或链路状况不好,您可以重新尝试一下,如果多次尝试后仍不行,建议更换图片地址', - 282113 : 'URL返回无效参数', - 282114 : 'URL长度超过1024字节或为0', - 282808 : 'request id xxxxx 不存在', - 282809 : '返回结果请求错误(不属于excel或json)', - 282810 : '图像识别错误' -} - - -LANGUAGE = { '自动检测':'', '中文':'zh-cn','中文繁体':'zh-tw', '英语':'en', '德语':'de', '俄语':'ru' ,'法语':'fr', - '阿尔巴尼亚语':'sq','阿拉伯语':'ar', '阿姆哈拉语':'am', '阿塞拜疆语':'az', '爱尔兰语':'ga', - '爱沙尼亚语':'et' ,'巴斯克语':'eu' ,'白俄罗斯语':'be', - '保加利亚语':'bg', '冰岛语':'is', '波兰语':'pl', '波斯尼亚语':'bs', - '波斯语':'fa', '布尔语':'af', '丹麦语':'da', - '菲律宾语':'tl', '芬兰语':'fi', '弗里西语':'fy' ,'高棉语':'km', '格鲁吉亚语':'ka', - '古吉拉特语':'gu', '哈萨克语':'kk', '海地克里奥尔语':'ht', - '豪萨语':'ha', '荷兰语':'nl' ,'吉尔吉斯语':'ky', '加利西亚语':'gl', '加泰罗尼亚语':'ca', - '捷克语':'cs', '卡纳达语':'kn', '科西嘉语':'co', '克罗地亚语':'hr', - '库尔德语':'ku', '拉丁语':'la', '拉脱维亚语':'lv', '老挝语':'lo', '立陶宛语':'lt', - '卢森堡语':'lb', '罗马尼亚语':'ro', '马尔加什语':'mg', '马耳他语':'mt', - '马拉地语':'mr', '马拉雅拉姆语':'mf', '马来语':'ms', '马其顿语':'mk', - '毛利语':'mi', '蒙古语':'mn','孟加拉语':'bn', '缅甸语':'my', '苗语':'hmn', '南非克萨语':'xh', '南非祖鲁语':'zu', - '尼泊尔语':'ne', '挪威语':'no', '旁遮普语' :'pa','葡萄牙语':'pt' ,'普什图语':'ps', - '齐切瓦语':'ny', '日语':'ja', '瑞典语':'sv', '萨摩亚语' :'sm','塞尔维亚语':'sr', - '赛所托语':'st','僧伽罗语':'si', '世界语':'eo', '斯洛伐克语':'sk', '斯洛文尼亚语':'sl', - '斯瓦希里语':'sw', '苏格兰盖尔语':'gd', '宿务语':'ceb', '索马里语':'so', '塔吉克语':'tg', '泰卢固语':'te', - '泰米尔语':'ta', '泰语':'th', '土耳其语':'tr', '威尔士语':'cy', '乌尔都语':'ur', - '乌克兰语':'uk', '乌兹别克语':'uz', '西班牙语':'es', '希伯来语':'rw', '希腊语':'el', - '夏威夷语':'haw', '信德语':'sd', '匈牙利语':'hu', '修纳语':'sn', - '亚美尼亚语':'hy', '伊博语':'ig', '意大利语':'it', '意第绪语':'yi', '印地语':'hi', - '印尼巽他':'su', '印尼语':'id', '印尼爪哇语':'jw', '约鲁巴语':'yo', '越南语':'vi' - } - -a = { - 'code': 0, - 'msg': '请求成功', - 'data': - {'recognition': - { - 'ocrId': None, - 'ocrLinesList': - [ - { - 'data': - [ - { - 'alp': None, 'height': 15, 'type': 'word', 'value': 'n', 'width': 6, 'x': 463, 'y': 5 - }, - { - 'alp': None, 'height': 15, 'type': 'word', 'value': ' ', 'width': 6, 'x': 469, 'y': 5 - } - ], - 'type': 'p' - }, - { - 'data': - [ - { - 'alp': None, 'height': 59, 'type': 'word', 'value': ' E \\left[ \\nu (t) \\right] =- \\frac{1}{2} \\sum _{i=1}^{n} \\sum _{j \\neq i}w_{ij}v_{i}(t)v_{j}(t)- ', 'width': 432, 'x': 6, 'y': 5 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': 'Σ', 'width': 68, 'x': 438, 'y': 16 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': 'I', 'width': 68, 'x': 506, 'y': 16 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': ',', 'width': 68, 'x': 575, 'y': 16 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': ',', 'width': 68, 'x': 643, 'y': 16 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': '(', 'width': 68, 'x': 712, 'y': 16 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': '1', 'width': 68, 'x': 781, 'y': 16 - }, - { - 'alp': None, 'height': 35, 'type': 'word', 'value': ') ', 'width': 68, 'x': 849, 'y': 16 - } - ], - 'type': 'p' - }, - { - 'data': - [ - { - 'alp': None, 'height': 18, 'type': 'word', 'value': 'i', 'width': 6, 'x': 452, 'y': 49 - }, - { - 'alp': None, 'height': 18, 'type': 'word', 'value': '=', 'width': 6, 'x': 458, 'y': 49 - }, - { - 'alp': None, 'height': 18, 'type': 'word', 'value': '1 ', 'width': 6, 'x': 464, 'y': 49 - } - ], - 'type': 'p' - } - ], - 'textLinePosition': - [ - [446, 5, 479, 21], - [6, 5, 555, 64], - [452, 49, 470, 67] - ] - }, - 'content': - [ - 'n ', - ' E \\left[ \\nu (t) \\right] =- \\frac{1}{2} \\sum _{i=1}^{n} \\sum _{j \\neq i}w_{ij}v_{i}(t)v_{j}(t)- ΣI,,(1) ', - 'i=1 ' - ], - 'loc': None - } - } \ No newline at end of file diff --git a/memorytools/systrayicon.py b/memorytools/systrayicon.py deleted file mode 100644 index 85eb7a3..0000000 --- a/memorytools/systrayicon.py +++ /dev/null @@ -1,205 +0,0 @@ -#!python3 -# -*- coding:utf-8 -*- - -import os -import win32gui -import win32api -import win32con -import win32gui_struct -from utils import * - -class SysTrayIcon(object): - '''TODO''' - QUIT = 'QUIT' - SPECIAL_ACTIONS = [QUIT] - - FIRST_ID = 1023 - - def __init__(self, - icon, - hover_text, - menu_options, - on_quit=None, - default_menu_index=None, - window_class_name=None,): - - self.icon = icon - self.hover_text = hover_text - self.on_quit = on_quit - self.refreshMenu(menu_options) - - self.default_menu_index = (default_menu_index or 0) - self.window_class_name = window_class_name or "SysTrayIconPy" - - message_map = {win32gui.RegisterWindowMessage("TaskbarCreated"): self.restart, - win32con.WM_DESTROY: self.destroy, - win32con.WM_COMMAND: self.command, - win32con.WM_USER+20: self.notify,} - # Register the Window class. - window_class = win32gui.WNDCLASS() - hinst = window_class.hInstance = win32gui.GetModuleHandle(None) - window_class.lpszClassName = self.window_class_name - window_class.style = win32con.CS_VREDRAW | win32con.CS_HREDRAW; - window_class.hCursor = win32gui.LoadCursor(0, win32con.IDC_ARROW) - window_class.hbrBackground = win32con.COLOR_WINDOW - window_class.lpfnWndProc = message_map # could also specify a wndproc. - classAtom = win32gui.RegisterClass(window_class) - # Create the Window. - style = win32con.WS_OVERLAPPED | win32con.WS_SYSMENU - self.hwnd = win32gui.CreateWindow(classAtom, - self.window_class_name, - style, - 0, - 0, - win32con.CW_USEDEFAULT, - win32con.CW_USEDEFAULT, - 0, - 0, - hinst, - None) - win32gui.UpdateWindow(self.hwnd) - self.notify_id = None - self.refreshIcon() - - win32gui.PumpMessages() - - def _addIdsToMenuOptions(self, menu_options): - result = [] - for menu_option in menu_options: - option_text, option_icon, option_action = menu_option - if callable(option_action) or option_action in self.SPECIAL_ACTIONS: - self.menu_actions_by_id.add((self._next_action_id, option_action)) - result.append(menu_option + (self._next_action_id,)) - elif nonStringIterable(option_action): - result.append((option_text, - option_icon, - self._addIdsToMenuOptions(option_action), - self._next_action_id)) - else: - print('Unknown item', option_text, option_icon, option_action) - self._next_action_id += 1 - return result - - def refreshMenu(self, menu_options): - menu_options = menu_options + (('退出', None, self.QUIT),) - self._next_action_id = self.FIRST_ID - self.menu_actions_by_id = set() - self.menu_options = self._addIdsToMenuOptions(list(menu_options)) - self.menu_actions_by_id = dict(self.menu_actions_by_id) - del self._next_action_id - - def refreshIcon(self): - # Try and find a custom icon - hinst = win32gui.GetModuleHandle(None) - if os.path.isfile(self.icon): - icon_flags = win32con.LR_LOADFROMFILE | win32con.LR_DEFAULTSIZE - hicon = win32gui.LoadImage(hinst, - self.icon, - win32con.IMAGE_ICON, - 0, - 0, - icon_flags) - else: - print("Can't find icon file - using default.") - hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) - - if self.notify_id: message = win32gui.NIM_MODIFY - else: message = win32gui.NIM_ADD - self.notify_id = (self.hwnd, - 0, - win32gui.NIF_ICON | win32gui.NIF_MESSAGE | win32gui.NIF_TIP, - win32con.WM_USER+20, - hicon, - self.hover_text) - win32gui.Shell_NotifyIcon(message, self.notify_id) - - def restart(self, hwnd, msg, wparam, lparam): - self.refreshIcon() - - def destroy(self, hwnd, msg, wparam, lparam): - if self.on_quit: self.on_quit(self) - nid = (self.hwnd, 0) - win32gui.Shell_NotifyIcon(win32gui.NIM_DELETE, nid) - win32gui.PostQuitMessage(0) # Terminate the app. - - def notify(self, hwnd, msg, wparam, lparam): - if lparam==win32con.WM_LBUTTONDBLCLK: - # self.executeMenuOption(self.default_menu_index + self.FIRST_ID) - pass - elif lparam==win32con.WM_RBUTTONUP: - self.showMenu() - elif lparam==win32con.WM_LBUTTONUP: - self.showMenu() - return True - - def showMenu(self): - menu = win32gui.CreatePopupMenu() - self.createMenu(menu, self.menu_options) - #win32gui.SetMenuDefaultItem(menu, 1000, 0) - - pos = win32gui.GetCursorPos() - # See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/menus_0hdi.asp - win32gui.SetForegroundWindow(self.hwnd) - win32gui.TrackPopupMenu(menu, - win32con.TPM_LEFTALIGN, - pos[0], - pos[1], - 0, - self.hwnd, - None) - win32gui.PostMessage(self.hwnd, win32con.WM_NULL, 0, 0) - - def createMenu(self, menu, menu_options): - for option_text, option_icon, option_action, option_id in menu_options[::-1]: - if option_icon: - option_icon = self.prepMenuIcon(option_icon) - print(option_icon) - - if option_id in self.menu_actions_by_id: - item, extras = win32gui_struct.PackMENUITEMINFO(text=option_text, - hbmpItem=option_icon, - wID=option_id) - win32gui.InsertMenuItem(menu, 0, 1, item) - else: - submenu = win32gui.CreatePopupMenu() - self.createMenu(submenu, option_action) - item, extras = win32gui_struct.PackMENUITEMINFO(text=option_text, - hbmpItem=option_icon, - hSubMenu=submenu) - win32gui.InsertMenuItem(menu, 0, 1, item) - - def prepMenuIcon(self, icon): - # First load the icon. - ico_x = win32api.GetSystemMetrics(win32con.SM_CXSMICON) - ico_y = win32api.GetSystemMetrics(win32con.SM_CYSMICON) - # hicon = win32gui.LoadImage(0, icon, win32con.IMAGE_ICON, ico_x, ico_y, win32con.LR_LOADFROMFILE) - hicon = win32gui.LoadIcon(0, win32con.IDI_APPLICATION) - print(hicon) - - hdcBitmap = win32gui.CreateCompatibleDC(0) - hdcScreen = win32gui.GetDC(0) - hbm = win32gui.CreateCompatibleBitmap(hdcScreen, ico_x, ico_y) - hbmOld = win32gui.SelectObject(hdcBitmap, hbm) - # Fill the background. - brush = win32gui.GetSysColorBrush(win32con.COLOR_MENU) - win32gui.FillRect(hdcBitmap, (0, 0, 16, 16), brush) - # unclear if brush needs to be feed. Best clue I can find is: - # "GetSysColorBrush returns a cached brush instead of allocating a new - # one." - implies no DeleteObject - # draw the icon - win32gui.DrawIconEx(hdcBitmap, 0, 0, hicon, ico_x, ico_y, 0, 0, win32con.DI_NORMAL) - win32gui.SelectObject(hdcBitmap, hbmOld) - win32gui.DeleteDC(hdcBitmap) - - return hbm - - def command(self, hwnd, msg, wparam, lparam): - id = win32gui.LOWORD(wparam) - self.executeMenuOption(id) - - def executeMenuOption(self, id): - menu_action = self.menu_actions_by_id[id] - if menu_action == self.QUIT: - win32gui.DestroyWindow(self.hwnd) - else: - menu_action(self) diff --git a/memorytools/tools/__init__.py b/memorytools/tools/__init__.py new file mode 100644 index 0000000..6cf1059 --- /dev/null +++ b/memorytools/tools/__init__.py @@ -0,0 +1,5 @@ +""" +@name: __init__ +@author: Memory +@date: 2020/10/11 +""" \ No newline at end of file diff --git a/memorytools/tools/basebox.py b/memorytools/tools/basebox.py new file mode 100644 index 0000000..ef72b54 --- /dev/null +++ b/memorytools/tools/basebox.py @@ -0,0 +1,65 @@ +# -*- coding: utf-8 -*- +""" +@file: basebox +@author: Memory +@date: 2020/10/11 +@description: 自定义弹出框的基类,可以在插件中调用 +""" + +from tkinter import Tk, END +from tkinter.ttk import Button, Frame +from tools.utils import copy_clip +from globals import ICON + + +class BaseBox(Tk): + """ + 弹出框的基类,默认居中显示,只有一个取消按钮, + 子类可以添加其他的组件 + """ + def __init__(self, buttons=[], title='Memory Tools'): + super(BaseBox, self).__init__() + self.set_window(title) + self.set_button(buttons) + + def set_window(self, title: str): + self.screen_w = self.winfo_screenwidth() + self.screen_h = self.winfo_screenheight() + self.title(title) + self.resizable(False, False) + self.iconbitmap(ICON.icon) + + min_w = self.screen_w // 3 + min_h = self.screen_h // 3 + self.minsize(min_w, min_h) + + def set_button(self, buttons: list): + ''' + 定义底部按钮 + ''' + self.btn_frame = Frame(self) + for text, command in buttons: + btn = Button(self.btn_frame, text=text, cursor='hand2', command=command) + btn.pack(side='left', padx=20, pady=10) + + self.cancel_bth = Button(self.btn_frame, text="取消", cursor='hand2', command=self.destroy) + self.cancel_bth.pack(side='left', padx=20, pady=10) + self.btn_frame.pack(side='bottom') + + def start(self, show=True): + ''' + 设置窗口位置,并运行显示消息框 + ''' + self.update() + width = self.winfo_width() + height = self.winfo_height() + pos_x = (self.screen_w - width)//2 + pos_y = max(0, (self.screen_h - height)//2-50) + size = '+%d+%d' % (pos_x, pos_y) + self.geometry(size) + self.mainloop() + + def copy(self): + txt = self.textbox.get("1.0", END) + copy_clip(txt) + self.destroy() diff --git a/memorytools/tools/logger.py b/memorytools/tools/logger.py new file mode 100644 index 0000000..cac6ff3 --- /dev/null +++ b/memorytools/tools/logger.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +""" +@file: logger +@author: Memory +@date: 2020/10/11 +@description: 自定义一个日志生成器 +""" +import logging +import logging.handlers +from sys import stdout +from pathlib import Path + + +class Logger(object): + def __init__(self, log_level=logging.INFO, log_file=None): + """ + 指定日志级别,以及是否将日志存入到指定的文件中 + """ + formatter = logging.Formatter("[%(asctime)s %(levelname)s] - %(message)s") + self.logger = logging.getLogger() + self.logger.setLevel(log_level) + + ch = logging.StreamHandler(stdout) + ch.setLevel(log_level) + ch.setFormatter(formatter) + self.logger.addHandler(ch) + + if log_file: + log_file.parent.mkdir(parents=True, exist_ok=True) + fh = logging.handlers.TimedRotatingFileHandler(log_file, when='D', interval=1, backupCount=30) + fh.setLevel(log_level) + fh.setFormatter(formatter) + self.logger.addHandler(fh) + + def get_logger(self): + return self.logger + + +logger = Logger(log_file=Path("log/memorytools.log")).get_logger() + +if __name__ == '__main__': + # logger = Logger().get_logger() + logger.debug("debug msg") + logger.info('info msg') + logger.warning('warn msg') + logger.error('error msg') + logger.critical('critical msg') diff --git a/memorytools/systray/__init__.py b/memorytools/tools/systray/__init__.py similarity index 100% rename from memorytools/systray/__init__.py rename to memorytools/tools/systray/__init__.py diff --git a/memorytools/systray/__version__.py b/memorytools/tools/systray/__version__.py similarity index 100% rename from memorytools/systray/__version__.py rename to memorytools/tools/systray/__version__.py diff --git a/memorytools/systray/traybar.py b/memorytools/tools/systray/traybar.py similarity index 85% rename from memorytools/systray/traybar.py rename to memorytools/tools/systray/traybar.py index da1219d..25f3db4 100644 --- a/memorytools/systray/traybar.py +++ b/memorytools/tools/systray/traybar.py @@ -2,15 +2,24 @@ from .win32_adapter import * import threading import uuid +# from win32con import MIIM_TYPE +# print(MIIM_TYPE) + class SysTrayIcon(object): """ - menu_options: tuple of tuples (menu text, menu icon path or None, function name) - - menu text and tray hover text should be Unicode - hover_text length is limited to 128; longer text will be truncated - - Can be used as context manager to enable automatic termination of tray - if parent thread is closed: + icon: 托盘图标的路径,unicode编码,最长128 + hover_text: 鼠标悬浮在托盘图标上时的显示的文本 + menu_options: (text, icon, function, separator) + text: 菜单项的文本,unicode编码,最长128 + icon: 菜单项的图标 + fuction: 按下该项调用的函数,或者此项可以换成同样的元组以创造二级菜单 + separator: 菜单项下面是否加一条分隔线 + on_quit: 按下"退出"菜单项时调用的函数 + default_menu_index: + window_class_name: + exit_ico: "退出"菜单项的图标 + + 可以用作上下文管理器,以在关闭父线程时启用托盘的自动终止: with SysTrayIcon(icon, hover_text) as systray: for item in ['item1', 'item2', 'item3']: @@ -30,7 +39,8 @@ def __init__(self, on_quit=None, default_menu_index=None, window_class_name=None, - exit_ico=None): + exit_ico=None + ): self._icon = icon self._icon_shared = False @@ -66,11 +76,14 @@ def __init__(self, self._register_class() def refreshMenu(self, menu_options): - menu_options = menu_options + (('退出', self.exit_ico, self.QUIT),) + """留了一个外部刷新菜单的函数,可以动态改变菜单""" + menu_options = menu_options + (('退出', self.exit_ico, self.QUIT, False),) self._next_action_id = self.FIRST_ID self._menu_actions_by_id = set() + self._menu_actions_by_name = set() self._menu_options = self._add_ids_to_menu_options(list(menu_options)) self._menu_actions_by_id = dict(self._menu_actions_by_id) + self._menu_actions_by_name = dict(self._menu_actions_by_name) def __enter__(self): """Context manager so SysTray can automatically close""" @@ -144,14 +157,16 @@ def update(self, icon=None, hover_text=None): def _add_ids_to_menu_options(self, menu_options): result = [] for menu_option in menu_options: - option_text, option_icon, option_action = menu_option + option_text, option_icon, option_action, option_separator = menu_option if callable(option_action) or option_action in SysTrayIcon.SPECIAL_ACTIONS: self._menu_actions_by_id.add((self._next_action_id, option_action)) + self._menu_actions_by_name.add((self._next_action_id, option_text)) result.append(menu_option + (self._next_action_id,)) elif non_string_iterable(option_action): result.append((option_text, option_icon, self._add_ids_to_menu_options(option_action), + option_separator, self._next_action_id)) else: raise Exception('Unknown item', option_text, option_icon, option_action) @@ -215,6 +230,7 @@ def _destroy(self, hwnd, msg, wparam, lparam): def _notify(self, hwnd, msg, wparam, lparam): if lparam == WM_LBUTTONDBLCLK: + print(self._default_menu_index) self._execute_menu_option(self._default_menu_index + SysTrayIcon.FIRST_ID) elif lparam == WM_RBUTTONUP: self._show_menu() @@ -242,15 +258,17 @@ def _show_menu(self): PostMessage(self._hwnd, WM_NULL, 0, 0) def _create_menu(self, menu, menu_options): - for option_text, option_icon, option_action, option_id in menu_options[::-1]: + for option_text, option_icon, option_action, option_separator, option_id in menu_options[::-1]: + if option_separator: + self._insert_separator(menu) if option_icon: option_icon = self._prep_menu_icon(option_icon) - if option_id in self._menu_actions_by_id: item = PackMENUITEMINFO(text=option_text, hbmpItem=option_icon, wID=option_id) InsertMenuItem(menu, 0, 1, ctypes.byref(item)) + # self._insert_separator(menu) else: submenu = CreatePopupMenu() self._create_menu(submenu, option_action) @@ -259,6 +277,11 @@ def _create_menu(self, menu, menu_options): hSubMenu=submenu) InsertMenuItem(menu, 0, 1, ctypes.byref(item)) + def _insert_separator(sekf, menu): + '''插入一条分隔线''' + item = PackMENUITEMINFO(fType=MF_SEPARATOR) + InsertMenuItem(menu, 0, 1, ctypes.byref(item)) + def _prep_menu_icon(self, icon): icon = encode_for_locale(icon) # First load the icon. @@ -289,11 +312,12 @@ def _command(self, hwnd, msg, wparam, lparam): self._execute_menu_option(id) def _execute_menu_option(self, id): + option_text = self._menu_actions_by_name[id] menu_action = self._menu_actions_by_id[id] if menu_action == SysTrayIcon.QUIT: DestroyWindow(self._hwnd) else: - menu_action(self) + menu_action(option_text) def non_string_iterable(obj): try: diff --git a/memorytools/systray/win32_adapter.py b/memorytools/tools/systray/win32_adapter.py similarity index 97% rename from memorytools/systray/win32_adapter.py rename to memorytools/tools/systray/win32_adapter.py index 758dbce..d4cb048 100644 --- a/memorytools/systray/win32_adapter.py +++ b/memorytools/tools/systray/win32_adapter.py @@ -22,7 +22,6 @@ CreatePopupMenu = ctypes.windll.user32.CreatePopupMenu CreateCompatibleDC = ctypes.windll.gdi32.CreateCompatibleDC GetDC = ctypes.windll.user32.GetDC -SetBkMode = ctypes.windll.gdi32.SetBkMode CreateCompatibleBitmap = ctypes.windll.gdi32.CreateCompatibleBitmap GetSysColorBrush = ctypes.windll.user32.GetSysColorBrush FillRect = ctypes.windll.user32.FillRect @@ -47,6 +46,7 @@ MIIM_SUBMENU = 4 MIIM_STRING = 64 MIIM_BITMAP = 128 +MIIM_TYPE = 16 WM_DESTROY = 2 WM_CLOSE = 16 WM_COMMAND = 273 @@ -71,6 +71,7 @@ SM_CYSMICON = 50 COLOR_MENU = 4 DI_NORMAL = 3 +MF_SEPARATOR = 2048 WPARAM = ctypes.wintypes.WPARAM LPARAM = ctypes.wintypes.LPARAM @@ -146,7 +147,7 @@ class NOTIFYICONDATA(ctypes.Structure): _fields_.append(("hBalloonIcon", HANDLE)) -def PackMENUITEMINFO(text=None, hbmpItem=None, wID=None, hSubMenu=None): +def PackMENUITEMINFO(text=None, hbmpItem=None, wID=None, hSubMenu=None, fType=None): res = MENUITEMINFO() res.cbSize = ctypes.sizeof(res) res.fMask = 0 @@ -163,6 +164,10 @@ def PackMENUITEMINFO(text=None, hbmpItem=None, wID=None, hSubMenu=None): if hSubMenu is not None: res.fMask |= MIIM_SUBMENU res.hSubMenu = hSubMenu + if fType is not None: + res.fMask |= MIIM_TYPE + res.fType = fType + return res def LOWORD(w): diff --git a/memorytools/tools/utils.py b/memorytools/tools/utils.py new file mode 100644 index 0000000..f1afdbe --- /dev/null +++ b/memorytools/tools/utils.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +""" +@file: utils +@author: Memory +@date: 2020/10/11 +@description: 在项目中用到的一些方法定义 +""" +import os +import re +import pyperclip +from time import sleep +from base64 import b64encode +from urllib.parse import quote +from io import BytesIO +from globals import * + + +class Color(object): + """ + 一个简单的获取颜色的类 + """ + def __init__(self): + self.colors = COLOR + self.index = 0 + + def next(self): + color = self.colors[self.index] + self.index = (self.index + 1) % (len(self.colors)) + return color + + +def paste_clip(): + """ + 获取剪切板内容,为了防止获取失败,因此会重试3次 + :return: + """ + for i in range(3): + try: + text = pyperclip.paste() + return text + except Exception as e: + if i == 2: + return str(e) + sleep(0.1) + + +def copy_clip(text): + try: + pyperclip.copy(text) + except Exception as e: + print(e) + + +def get_text_line(text: str): + """返回所给的文本有几行""" + return len(text.split('\n')) + + +def get_rect(x1: int, y1: int, x2: int, y2: int): + """给定矩形框的左上角和右下角坐标,返回四个角的坐标""" + return [(x1, y1), (x2, y1), (x2, y2), (x1, y2)] + + +def pil2bytes(im, img_type='png', b64=False): + """将PIL.Image格式的图像转化为二进制数据""" + bf = BytesIO() + im.save(bf, img_type) + img = bf.getvalue() + + return img + + +def bs64_to_img(pic_code, pic_name): + """将bs64编码的数据写到文件中""" + with open(pic_name, 'wb') as image: + image.write(b64decode(pic_code)) + + +def img_to_base64(image: str): + """将图像从文件中读取出来并转化为base64编码""" + with open(image, 'rb') as bin_data: + image_data = bin_data.read() + image_data_base64 = b64encode(image_data) + image_data_base64 = quote(image_data_base64) + return image_data_base64 + + +def is_check(check: bool): + """是否选中(两种状态)""" + return ICON.check if check else None + + +def is_pick(pick: bool): + """是否被选中(多项中的一个)""" + return ICON.pick if pick else None + + +def filter_str(sentence: str): + """ + 过滤掉字符串中的标点符号 + """ + sentence = re.sub(NOTAS, '', sentence) + sentence = sentence.translate(PUNCTUATION_MAP) + sentence = re.sub('[0-9]', '', sentence).strip() + sentence = re.sub(' ', '', sentence).strip() + return sentence + + +def judge_language(sentence: str): + """ + 判断一句话里面英文和中文的占比 + """ + sentence = filter_str(sentence) + + if sentence == '': + return None, 0 + + en_pattern = re.compile(u"[a-zA-Z]") + zh_pattern = re.compile(u"[\u4e00-\u9fa5]") + + en = re.findall(en_pattern, sentence) + zh = re.findall(zh_pattern, sentence) + en_num = len(en) // 3 + zh_num = len(zh) + + total = en_num + zh_num + if total == 0: + return None, 0 + + if en_num > zh_num: + return 'en', en_num / total + else: + return 'zh-cn', zh_num / total + + +def count_code(): + """计算当前文件夹里面python代码的行数""" + files = os.listdir('..\\') + total = 0 + for file in files: + if not os.path.isfile(file): + continue + name, ext = os.path.splitext(file) + if ext != '.py': + continue + with open(file, 'r', encoding='utf-8') as f: + line = len(f.readlines()) + total += line + print("%s : %d" % (file, line)) + print("total :", total) + + +if __name__ == '__main__': + count_code() diff --git a/memorytools/utils.py b/memorytools/utils.py deleted file mode 100644 index ea48499..0000000 --- a/memorytools/utils.py +++ /dev/null @@ -1,147 +0,0 @@ -import os -import re -import json -from base64 import b64decode -from io import BytesIO -from setting import * - -class Color(object): - def __init__(self): - self.colors = COLOR - self.index = 0 - - def next(self): - color = self.colors[self.index] - self.index = (self.index + 1) % (len(self.colors)) - return color - -def nonStringIterable(obj): - try: - iter(obj) - except TypeError: - return False - else: - return not isinstance(obj, str) - -def getTextLine(text): - '''返回所给的文本有几行''' - return len(text.split('\n')) - -def getRect(x1, y1, x2, y2): - '''给定矩形框的左上角和右下角坐标,返回四个角的坐标''' - return [(x1, y1), (x2, y1), (x2, y2), (x1, y2)] - -def bs64toImg(pic_code, pic_name): - '''将bs64编码的数据写到文件中''' - with open(pic_name, 'wb') as image: - image.write(b64decode(pic_code)) - -def getSrc(pic): - '''返回对应资源的完整路径''' - path = os.path.join(SRC_PATH, pic) - file = os.path.abspath(path) - - if not os.path.exists(SRC_PATH): - os.makedirs(SRC_PATH) - if not os.path.exists(file): - if pic in ICONS: - bs64toImg(ICONS[pic], file) - - return file - -def isCheckIcon(check): - '''是否选中(两种状态)''' - return getSrc('check.ico') if check else None - -def isPickIcon(pick): - '''是否被选中(多项中的一个)''' - return getSrc('pick.ico') if pick else None - -def img2base64(image): - '''将图像从文件中读取出来并转化为base64编码''' - with open(image, 'rb') as bin_data: - image_data = bin_data.read() - image_data_base64 = base64.b64encode(image_data) - image_data_base64 = quote(image_data_base64) - return image_data_base64 - -def readConfig(name=CONFIG): - '''读配置文件''' - if name == CONFIG and not os.path.exists(name): - resetConfig() - try: - with open(name, "r") as f: - data = f.read() - return json.loads(data) - except Exception as e: - print(e) - return DEFAULT_CONFIG - -def writeConfig(data, name=CONFIG): - '''写配置文件''' - try: - data = json.dumps(data) - with open(name, "w") as f: - f.write(data) - except Exception as e: - print(e) - -def resetConfig(name=CONFIG): - '''重置配置文件''' - writeConfig(DEFAULT_CONFIG, name) - -def filterStr(sentence): - '''过滤掉字符串中的标点符号''' - sentence = re.sub(NOTAS, '', sentence) - sentence = sentence.translate(REMOVE_PUNCTUATION_MAP) - sentence = re.sub('[0-9]', '', sentence).strip() - sentence = re.sub(' ', '', sentence).strip() - return sentence - -def judgeLanguage(s): - '''判断一句话里面英文和中文的占比''' - s = filterStr(s) - - en_pattern = re.compile(u"[a-zA-Z]") - zh_pattern = re.compile(u"[\u4e00-\u9fa5]") - - en = re.findall(en_pattern, s) - zh = re.findall(zh_pattern, s) - en_num = len(en) // 3 - zh_num = len(zh) - total = en_num + zh_num - if en_num > zh_num: - return ('en', en_num / total) - else: - return ('zh-cn', zh_num / total) - # return (en_num / total, zh_num / total) - - # print(len(s)) - # re_words = re.compile(u"[a-zA-Z]") - # res = re.findall(re_words, s) # 查询出所有的匹配字符串 - # print(res) - # res2 = re.sub('[a-zA-Z]', '', s).strip() - # if len(res2) <= 0: # 表示s是纯英文 - # return 'en' - - # re_words = re.compile(u"[\u4e00-\u9fa5]") - # res = re.findall(re_words, s) # 查询出所有的匹配字符串 - # print(res) - # res2 = re.sub(u"[\u4e00-\u9fa5]", '', s).strip() - # if len(res2) <= 0: # 表示s是纯中文 - # return 'zh-cn' - - # return 'both' - -def pil2bytes(im, img_type='png', b64=False): - '''将PIL.Image格式的图像转化为二进制数据''' - bf = BytesIO() - im.save(bf, img_type) - img = bf.getvalue() - - return img - -if __name__ == '__main__': - while True: - s = input("输入:") - print(judgeLanguage(s)) diff --git a/pic.py b/pic.py deleted file mode 100644 index 6708279..0000000 --- a/pic.py +++ /dev/null @@ -1,7 +0,0 @@ -TRANS_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWAAAA8gAAAP4AAAD/AAAA8gAAAPIAAAD8AAAA/wAAAPIAAAC3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAjgAAAOwAAAD/AAAAYQAAACoAAAD/AAAA/wAAAEsAAAA2AAAA/wAAAPYAAAAAAAAAAAAAAAcAAACyAAAA/wAAAP8AAAD/AAAA/wAAAL4AAAAAAAAATAAAAE8AAAAAAAAAjAAAAP8AAADyAAAAAAAAAAAAAAB7AAAA/wAAAHsAAABFAAAA3gAAAP8AAAD/AAAACgAAAEQAAABvAAAAAAAAAP8AAAD/AAAA8gAAAAAAAAAAAAAAlwAAAP8AAAAjAAAAAAAAAMcAAAD/AAAA/wAAAHEAAAA9AAAAUwAAAEMAAAD/AAAA/wAAAPIAAACVAAAA6QAAAP8AAAD/AAAA/wAAAPQAAAD9AAAA/wAAAP8AAADyAAAAAAAAAAAAAADPAAAA/wAAAP8AAADyAAAA/wAAAL0AAACMAAAAZQAAAGIAAABqAAAA4AAAAP8AAAD/AAAA/wAAAFwAAAA7AAAA/wAAAP8AAAD/AAAA8wAAAPoAAABAAAAAsQAAAK8AAAAAAAAAAAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD+AAAASQAAADQAAAC8AAAA/wAAAP4AAACwAAAAyQAAAOoAAAD+AAAA1QAAANYAAADQAAAA0QAAANIAAACWAAAA/wAAAFIAAAAAAAAAbwAAAP8AAAD/AAAANAAAAAAAAACDAAAA9wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAArAAAAAAAAAP8AAAAdAAAAYwAAAP0AAAAAAAAAZgAAAPkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtAAAAcAAAANYAAAD/AAAAmwAAALMAAAD/AAAAuQAAAIAAAADmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8wAAAF8AAABzAAAAaAAAAP0AAADgAAAAYQAAAF0AAACBAAAA7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAACLAAAAJwAAACYAAAB1AAAAZwAAACYAAAAtAAAAtwAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3AAAA/wAAAP8AAAD/AAAA7gAAAPMAAAD/AAAA/wAAAP8AAACTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/ABBTfwAbWXwAHJ54EhTRcBIUk/EAExFADA6XAgAZXIMAG1lIAByeWE/Qk9hv01TAD9JTgA/QUwzP1BBAD89Qw==" -ABOUT_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAJEAAADOAAAA7QAAAO0AAADNAAAAkAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAP8AAAD/AAAA+wAAANoAAADZAAAA3AAAANcAAADjAAAA/wAAAP8AAAC5AAAAAAAAAAAAAAAAAAAAlwAAAP8AAAD/AAAA/wAAAMYAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAP8AAAD/AAAA/wAAAJIAAAAAAAAAKwAAAP8AAAD/AAAA/wAAAP8AAADqAAAAkwAAAB4AAAAAAAAARwAAAKMAAAD/AAAA/wAAAP8AAAD/AAAAJwAAAJsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAABVAAAAAAAAAKQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJcAAADaAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAATgAAAAAAAACMAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD1AAAA4gAAAEMAAAAAAAAAjAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAAAPUAAAD/AAAA/wAAAP8AAAD/AAAA4gAAABAAAAAAAAAAAAAAAIYAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAADbAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADCAAAARgAAAAQAAACQAAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAmwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAAC8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAlwAAACwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAM0AAAAeAAAAMQAAANQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAACgAAAAAAAAAmAAAAP8AAAD/AAAA/wAAAP8AAACAAAAAAAAAAAAAAAB3AAAA/wAAAP8AAAD/AAAA/wAAAJQAAAAAAAAAAAAAAAAAAAC9AAAA/wAAAP8AAAD/AAAA5gAAAEEAAAA+AAAA4gAAAP8AAAD/AAAA/wAAALoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAJMAAADPAAAA9gAAAPYAAADPAAAAkgAAADIAAAAAAAAAAAAAAAAAAAAA8A9BTeAHbWXAA3J5g+FTRQGAUk8AgExFAYA6XACAZXIBgG1lAYByeQAAQk8BgE1TgYFJTsADQUzgB1BB8A89Qw==" -CHECK_ICO = "AAABAAEAEBIAAAEAIADwBAAAFgAAACgAAAAQAAAAJAAAAAEAIAAAAAAAAAAAAGEPAABhDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAA9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwAAAH4AAACDAAAAlQAAABsAAABrAAAA7AAAAAwAAABcAAAAkQAAAH8AAACAAAAAggAAAH0AAAB5AAAAIwAAAPIAAAD/AAAA/wAAAOIAAABFAAAA0AAAAP8AAABrAAAAdgAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAFcAAAD/AAAA0gAAADAAAAAAAAAAeQAAAP8AAAD/AAAA8QAAACAAAAAcAAAARAAAAD4AAAAiAAAAjwAAAP8AAABRAAAA/wAAALoAAAAAAAAAHQAAAPkAAAD/AAAA/wAAAP8AAACaAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAD/AAAAUgAAAP8AAACxAAAAAAAAAJ8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAEoAAAAAAAAAAAAAAAAAAABnAAAA/wAAAFIAAADkAAAAGQAAAC8AAAD/AAAA/wAAAP8AAAD9AAAA/wAAAP8AAADNAAAAAQAAAAAAAAAAAAAAZwAAAP8AAABSAAAALQAAAAEAAADfAAAA/wAAAP8AAACyAAAAUwAAAP4AAAD/AAAA/wAAAHMAAAAAAAAAAAAAAGcAAAD/AAAAUgAAAF4AAAAcAAAAywAAAP8AAAD/AAAASAAAAAAAAACnAAAA/wAAAP8AAADwAAAAHAAAAAAAAABnAAAA/wAAAFIAAAD/AAAAiwAAAAAAAAB/AAAAmAAAAAAAAAAAAAAAJQAAAPcAAAD/AAAA/wAAAJ4AAAAAAAAAYQAAAP8AAABRAAAA/wAAAMcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAA/wAAAP8AAAD/AAAAGAAAAFEAAAD/AAAAUAAAAP8AAAC/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAANgAAAD/AAAA/wAAAKwAAAAXAAAA6AAAAGwAAAD/AAAAvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAA/wAAAP8AAAD/AAAAUAAAAAsAAAA2AAAA/wAAALUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAD/AAAA/wAAAOIAAAARAAAAAAAAAPoAAAD/AAAAvwAAAMEAAADEAAAAxAAAAMQAAADGAAAA3AAAAFkAAAAbAAAA9wAAAP8AAAD/AAAAjgAAAAAAAADSAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADgAAAAAAAAAHUAAAD/AAAA/wAAAP8AAABhAAAADQAAABAAAAAQAAAADwAAAA8AAAAPAAAADwAAAA8AAAANAAAAGwAAAAAAAAAGAAAA3gAAAP8AAADzAAAAXwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAACuAAAAEAAAAAD//yAo//82Kd+HaWP//3Nv//8gVv//dWH//1N0//9pb///MS7//0Nv//9vbv//VG///3Nc//9TMf//Q0///1RP//9TPf//XFA=" -CLOCK_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAJAQAQCQEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICEdDg4P/w4OD/8gICEdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAgLxQUFc0UFBXNICAgLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4eHiUaGhtZGBgZehgYGYMYGBl9GBgZfRgYGYMYGBl6GhobWR4eHiUAAAAAAAAAAAAAAAAAAAAAHBwcTBISE98PDxD/DQ0O/w0NDv8MDA3/DQ0O/w0NDv8MDA3/DQ0O/w0NDv8PDxD/EhIT3xwcHEwAAAAAAAAAABQUFa8ICAn/Dg4P/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dg4P/wgICf8UFBWvAAAAAAAAAAAhISETERES4gwMDf8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/wwMDf8RERLiISEhEwAAAAAAAAAAAAAAACAgIBkQEBHmDQ0O/w8PEP8PDxD/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8QEBHmICAgGQAAAAAAAAAAAAAAAAAAAAAAAAAAISEhIRAQEfUNDQ7/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8QEBH1ISEhIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRa1DAwN/w8PEP8PDxD/Dw8Q/w8PEP8MDA3/FRUWtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExMUtQ0NDv8PDxD/Dw8Q/w8PEP8PDxD/DQ0O/xMTFLUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMTFLkNDQ7/Dw8Q/w8PEP8PDxD/Dw8Q/w0NDv8TExS5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBWsDAwN/w8PEP8PDxD/Dw8Q/w8PEP8MDA3/FBQVrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhobbAsLDP8PDxD/Dw8Q/w8PEP8PDxD/CwsM/xoaG2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRbACgoM/w4OD/8ODg//CgoM/xUVFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGXAPDxD/Dw8Q/xgYGXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhYXsBYWF7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/n9BTf5/bWXwD3J5gAFTRYABUk/AA0xF4Ac6XPAPZXLwD21l8A9yefAPQk/wD01T8A9JTvgfQUz8P1BB/n89Qw==" -OCR_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVAAAA6QAAAOgAAABNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAAA/wAAAP8AAAD/AAAA/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAABaAAAA/wAAAP8AAABTAAAAqgAAAP8AAAAAAAAAAAAAAAAAAABIAAAAwwAAAP8AAAD/AAAA/wAAALIAAAB4AAAA/wAAAP8AAABCAAAAAQAAAPoAAABrAAAAAAAAAAAAAACbAAAA/wAAAP8AAAC1AAAAkwAAALUAAAD/AAAA/wAAAP8AAAD+AAAAaQAAAP8AAAB6AAAAAAAAAAAAAACeAAAA/wAAAI4AAAAFAAAAAAAAAAAAAAAAAAAABQAAAIcAAAD/AAAA/wAAAP8AAABsAAAAAAAAAAAAAAA7AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiwAAAP8AAABzAAAAAAAAAAAAAAAAAAAA0wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+AAAAsQAAAAAAAAAAAAAAAAAAAP8AAACzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAswAAAP8AAAAEAAAAAAAAAAAAAAD/AAAAhQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUAAAD/AAAADgAAAAAAAAAAAAAA/wAAALMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyAAAA/wAAAAQAAAAAAAAAAAAAANMAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAANMAAAAAAAAAAAAAAAAAAAA7AAAA/wAAAJMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkwAAAP8AAAA7AAAAAAAAAAAAAAAAAAAAAAAAAJ4AAAD/AAAAjgAAAAUAAAAAAAAAAAAAAAAAAAAFAAAAjgAAAP8AAACeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmwAAAP8AAAD/AAAAtQAAAJMAAAC1AAAA/wAAAP8AAACbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAwwAAAP8AAAD/AAAA/wAAAMMAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//lBTf/wbWX/5HJ58A1TRcABUk+Pg0xFn8c6XD/nZXI/521lP+dyeT/nQk8/501Tn89JTo+PQUzAH1BB8H89Qw==" -PICK_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABILAAASCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUVFQAJCQkLPT09OF1dXVdvb29vgYGBiJCQkJaRkZGVhYWFhXJycm5hYWFXRkZGOQ4ODgwdHR0AAAAAAFJSUgAvLy8kkZGRq83NzfHg4OD96urq/9zc3P/Nzc3/zs7O/9vb2//r6+v/4uLi/dHR0fKVlZWuNTU1JmBgYAAAAAASlpaWsfDw8P///////v7+//7+/v/p6en/wMDA/8DAwP/o6Oj//v7+//7+/v//////8vLy/5qamrcFBQUWWlpaZNvb2/j//////Pz8//v7+//+/v7//v7+/8PDw//BwcH//v7+//7+/v/7+/v//Pz8///////e3t76YWFha4aGhqb19fX/6Ojo/3R0dP9XV1f/q6ur//n5+f+enp7/mpqa//r6+v+urq7/WFhY/3Fxcf/m5ub/9/f3/4yMjK6MjIyw+fn5/5SUlP8MDAz/MjIy/ykpKf+lpaX///////////+qqqr/KSkp/zMzM/8MDAz/jo6O//r6+v+SkpK4e3t7k/Hx8f90dHT/TU1N/2RkZP9wcHD/VVVV//b29v/4+Pj/WVlZ/25ubv9lZWX/UFBQ/25ubv/z8/P/gYGBmmNjY27n5+f9l5eX/05OTv99fX3/fHx8/2NjY//4+Pj/+vr6/2dnZ/96enr/fn5+/1BQUP+RkZH/6urq/mpqanY5OTk+zc3N7d7e3v8zMzP/KSkp/zIyMv/AwMD////////////ExMT/NDQ0/yoqKv8wMDD/2tra/9LS0vBBQUFFAAAADJmZmbL5+fn/wsLC/3t7e//AwMD//Pz8//z8/P/8/Pz//f39/8PDw/97e3v/v7+///r6+v+fn5+6AAAAEF5eXgAyMjJgtra2/P///////////v7+//z8/P/8/Pz//Pz8//z8/P/+/v7///////////+9vb39OTk5Z3l5eQAAAAAcAAAAvCUlJf+2trb//Pz8///////9/f3//f39//39/f/9/f3///////z8/P+7u7v/Kioq/wAAAMEAAAAgAAAAVwAAAPgAAAD/FhYW/3p6evTS0tLy6Ojo/+3t7f/s7Oz/5+fn/8/Pz/N6enrzFxcX/wAAAP8AAAD6AAAAXwAAADQAAADdAAAA/wAAAOgBAQFhSEhIO3BwcGh3d3d5c3NzeWlpaWlCQkI8AQEBXQAAAOYAAAD/AAAA4AAAADkAAAACAAAARgAAAIsAAABLAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAABIAAAAiwAAAEkAAAAC//8AAMADAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAAAAAAAAAAAAAAAAAAB+AAAA==" -EXIT_ICO = "AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC6AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAC7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAP8AAAD/AAAAHQAAAAwAAAAOAAAADgAAAAwAAAAbAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADXAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAMAAAA1wAAAOcAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAD/AAAA/wAAAAAAAAAMAAAA1wAAAP8AAADVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA/wAAAP8AAAAPAAAA1wAAAP8AAADXAAAAGQAAAAwAAAAOAAAADgAAAA4AAAAPAAAAEQAAAAAAAAAAAAAAEAAAAP8AAAD/AAAA5AAAAP8AAAD/AAAA8AAAAPEAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAAAAAAAMAAAD/AAAA/wAAAOQAAAD/AAAA/wAAAPAAAADxAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA1wAAAAAAAAADAAAA/wAAAP8AAAAPAAAA1wAAAP8AAADXAAAAGQAAAAwAAAAOAAAADgAAAA4AAAAPAAAAEQAAAAAAAAAAAAAAEAAAAP8AAAD/AAAAAAAAAAwAAADXAAAA/wAAANUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAD/AAAA/wAAAAAAAAAAAAAADAAAANcAAADmAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAADXAAAA1QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA/wAAAP8AAAAdAAAADAAAAA4AAAAOAAAADAAAABsAAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAC6AAAA8gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPIAAAC7/ABBTfwAbWX8/HJ5/PxTRef8Uk/H/ExFh/w6XAAMZXIADG1lh/xyecf8Qk/n/E1T/PxJTvz8QUz8AFBB/AA9Qw==" diff --git a/pic2py.py b/pic2py.py deleted file mode 100644 index b1703f2..0000000 --- a/pic2py.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -# @Time : 2018/6/6 18:29 -# @Author : Octan3 -# @Email : Octan3@stu.ouc.edu.cn -# @File : Pic2py.py -# @Software: PyCharm - -import base64 - - -def pic2py(picture_names, py_name): - """ - 将图像文件转换为py文件 - :param picture_name: - :return: - """ - write_data = [] - for picture_name in picture_names: - print(picture_name) - filename = picture_name.replace('.', '_') - open_pic = open("%s" % picture_name, 'rb') - b64str = base64.b64encode(open_pic.read()) - open_pic.close() - # 注意这边b64str一定要加上.decode() - write_data.append('%s = "%s"\n' % (filename, b64str.decode())) - - with open('%s.py' % py_name, 'w+') as f: - for data in write_data: - f.write(data) - - -if __name__ == '__main__': - pics = ["trans.ico", 'about.ico', 'check.ico', 'clock.ico', 'ocr.ico', 'pick.ico', 'exit.ico'] - pic2py(pics, 'pic') - print("ok") diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..bd0370f --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +pillow +baidu-aip +pyperclip +googletransx +easydict diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..35a163a --- /dev/null +++ b/setup.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +from __future__ import print_function +from setuptools import setup, find_packages +import memorytools + +with open("README.md", "r", encoding='utf-8') as fh: + long_description = fh.read() + +setup( + name="memorytools", + version=memorytools.__version__, + author="Memory", + author_email="memory_d@foxmail.com", + description="some useful tools", + long_description=long_description, + long_description_content_type="text/markdown", + license="MIT", + url="https://github.com/MemoryD/MemoryTools", + packages=find_packages(), + install_requires=[ + "pillow", + "baidu-aip", + "pyperclip", + "googletransx", + "easydict", + ], + classifiers=[ + "Topic :: Software Development :: Libraries :: Python Modules", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.5", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + 'Programming Language :: Python :: Implementation :: CPython', + ], +)