diff --git a/.gitignore b/.gitignore index 89e60ecf960c832956e70f2a7755e9a335ab4d13..023ce5f6925dfcf212d9a809474fc50ea45c57ef 100644 --- a/.gitignore +++ b/.gitignore @@ -146,3 +146,6 @@ debug* private* crazy_functions/test_project/pdf_and_word crazy_functions/test_samples +request_llm/jittorllms +multi-language +request_llm/moss diff --git a/check_proxy.py b/check_proxy.py index 28711a8c140bfcdb0683efd924032e6ccc0f0df8..977802db49babe079a191dbda6815c216e156548 100644 --- a/check_proxy.py +++ b/check_proxy.py @@ -56,22 +56,24 @@ def patch_and_restart(path): """ 一键更新协议:覆盖和重启 """ - import distutils + from distutils import dir_util import shutil import os import sys import time + import glob from colorful import print亮黄, print亮绿, print亮红 # if not using config_private, move origin config.py as config_private.py if not os.path.exists('config_private.py'): print亮黄('由于您没有设置config_private.py私密配置,现将您的现有配置移动至config_private.py以防止配置丢失,', '另外您可以随时在history子文件夹下找回旧版的程序。') shutil.copyfile('config.py', 'config_private.py') - distutils.dir_util.copy_tree(path+'/chatgpt_academic-master', './') - import subprocess + path_new_version = glob.glob(path + '/*-master')[0] + dir_util.copy_tree(path_new_version, './') print亮绿('代码已经更新,即将更新pip包依赖……') for i in reversed(range(5)): time.sleep(1); print(i) try: + import subprocess subprocess.check_call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt']) except: print亮红('pip包依赖安装出现问题,需要手动安装新增的依赖库 `python -m pip install -r requirements.txt`,然后在用常规的`python main.py`的方式启动。') @@ -92,7 +94,7 @@ def get_current_version(): return current_version -def auto_update(): +def auto_update(raise_error=False): """ 一键更新协议:查询版本和用户意见 """ @@ -124,14 +126,22 @@ def auto_update(): try: patch_and_restart(path) except: - print('更新失败。') + msg = '更新失败。' + if raise_error: + from toolbox import trimmed_format_exc + msg += trimmed_format_exc() + print(msg) else: print('自动更新程序:已禁用') return else: return except: - print('自动更新程序:已禁用') + msg = '自动更新程序:已禁用' + if raise_error: + from toolbox import trimmed_format_exc + msg += trimmed_format_exc() + print(msg) def warm_up_modules(): print('正在执行一些模块的预热...') diff --git a/config.py b/config.py index 8623511785687f5493cb2807e959e780c71663ac..f6d26a834728d5b8aa4f2c0ba4a2ebc512717cea 100644 --- a/config.py +++ b/config.py @@ -1,7 +1,7 @@ import os # [step 1]>> 例如: API_KEY = "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" (此key无效) -API_KEY = os.environ.get("GPT_KEY") # 可同时填写多个API-KEY,用英文逗号分割,例如API_KEY = "sk-openaikey1,sk-openaikey2,fkxxxx-api2dkey1,fkxxxx-api2dkey2" +API_KEY = "" # 可同时填写多个API-KEY,用英文逗号分割,例如API_KEY = "sk-openaikey1,sk-openaikey2,fkxxxx-api2dkey1,fkxxxx-api2dkey2" # [step 2]>> 改为True应用代理,如果直接在海外服务器部署,此处不修改 USE_PROXY = False @@ -12,11 +12,11 @@ if USE_PROXY: # [地址] 懂的都懂,不懂就填localhost或者127.0.0.1肯定错不了(localhost意思是代理软件安装在本机上) # [端口] 在代理软件的设置里找。虽然不同的代理软件界面不一样,但端口号都应该在最显眼的位置上 - # 代理网络的地址,打开你的科学上网软件查看代理的协议(socks5/http)、地址(localhost)和端口(11284) + # 代理网络的地址,打开你的*学*网软件查看代理的协议(socks5/http)、地址(localhost)和端口(11284) proxies = { # [协议]:// [地址] :[端口] - "http": "socks5h://localhost:11284", - "https": "socks5h://localhost:11284", + "http": "socks5h://localhost:11284", # 再例如 "http": "http://127.0.0.1:7890", + "https": "socks5h://localhost:11284", # 再例如 "https": "http://127.0.0.1:7890", } else: proxies = None @@ -28,13 +28,14 @@ DEFAULT_WORKER_NUM = 3 # [step 4]>> 以下配置可以优化体验,但大部分场合下并不需要修改 # 对话窗的高度 -CHATBOT_HEIGHT = 440 +CHATBOT_HEIGHT = 600 # 代码高亮 CODE_HIGHLIGHT = True # 窗口布局 LAYOUT = "LEFT-RIGHT" # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布局) +DARK_MODE = True # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布局) # 发送请求到OpenAI后,等待多久判定为超时 TIMEOUT_SECONDS = 30 @@ -45,9 +46,10 @@ WEB_PORT = -1 # 如果OpenAI不响应(网络卡顿、代理失败、KEY失效),重试的次数限制 MAX_RETRY = 2 -# OpenAI模型选择是(gpt4现在只对申请成功的人开放,体验gpt-4可以试试api2d) -LLM_MODEL = "gpt-3.5-turbo" # 可选 ↓↓↓ -AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "api2d-gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "chatglm"] +# 模型选择是 +LLM_MODEL = "newbing" # 可选 ↓↓↓ +AVAIL_LLM_MODELS = ["gpt-3.5-turbo", "api2d-gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "chatglm", "moss", "newbing", "stack-claude"] +# P.S. 其他可用的模型还包括 ["jittorllms_rwkv", "jittorllms_pangualpha", "jittorllms_llama"] # 本地LLM模型如ChatGLM的执行方式 CPU/GPU LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda" @@ -55,13 +57,26 @@ LOCAL_MODEL_DEVICE = "cpu" # 可选 "cuda" # 设置gradio的并行线程数(不需要修改) CONCURRENT_COUNT = 100 +# 加一个live2d装饰 +ADD_WAIFU = False + # 设置用户名和密码(不需要修改)(相关功能不稳定,与gradio版本和网络都相关,如果本地使用不建议加这个) # [("username", "password"), ("username2", "password2"), ...] AUTHENTICATION = [] # 重新URL重新定向,实现更换API_URL的作用(常规情况下,不要修改!!) -# 格式 {"https://api.openai.com/v1/chat/completions": "重定向的URL"} +# (高危设置!通过修改此设置,您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!) +# 格式 {"https://api.openai.com/v1/chat/completions": "在这里填写重定向的api.openai.com的URL"} +# 例如 API_URL_REDIRECT = {"https://api.openai.com/v1/chat/completions": "https://ai.open.com/api/conversation"} API_URL_REDIRECT = {} # 如果需要在二级路径下运行(常规情况下,不要修改!!)(需要配合修改main.py才能生效!) CUSTOM_PATH = "/" + +# 如果需要使用newbing,把newbing的长长的cookie放到这里 +NEWBING_STYLE = "creative" # ["creative", "balanced", "precise"] +NEWBING_COOKIES = os.environ.get("NEWBING_COOKIES") + +# 如果需要使用Slack Claude,使用教程详情见 request_llm/README.md +SLACK_CLAUDE_BOT_ID = '' +SLACK_CLAUDE_USER_TOKEN = '' diff --git a/core_functional.py b/core_functional.py index 536ccb609c38cbbebfda4ba17bd51a78857d711e..e126b5733a26b2c06668755fc44763efe3d30bac 100644 --- a/core_functional.py +++ b/core_functional.py @@ -68,4 +68,11 @@ def get_core_functions(): "Prefix": r"请解释以下代码:" + "\n```\n", "Suffix": "\n```\n", }, + "参考文献转Bib": { + "Prefix": r"Here are some bibliography items, please transform them into bibtex style." + + r"Note that, reference styles maybe more than one kind, you should transform each item correctly." + + r"Items need to be transformed:", + "Suffix": r"", + "Visible": False, + } } diff --git a/crazy_functional.py b/crazy_functional.py index df695e24b20a00547d75be09b92fb7212ef91d7e..f1bf6759c94a9ec82309b6a59c7cda0e3d5cf522 100644 --- a/crazy_functional.py +++ b/crazy_functional.py @@ -10,8 +10,9 @@ def get_crazy_functions(): from crazy_functions.解析项目源代码 import 解析一个C项目的头文件 from crazy_functions.解析项目源代码 import 解析一个C项目 from crazy_functions.解析项目源代码 import 解析一个Golang项目 + from crazy_functions.解析项目源代码 import 解析一个Rust项目 from crazy_functions.解析项目源代码 import 解析一个Java项目 - from crazy_functions.解析项目源代码 import 解析一个Rect项目 + from crazy_functions.解析项目源代码 import 解析一个前端项目 from crazy_functions.高级功能函数模板 import 高阶功能模板函数 from crazy_functions.代码重写为全英文_多线程 import 全项目切换英文 from crazy_functions.Latex全文润色 import Latex英文润色 @@ -21,20 +22,30 @@ def get_crazy_functions(): from crazy_functions.总结word文档 import 总结word文档 from crazy_functions.解析JupyterNotebook import 解析ipynb文件 from crazy_functions.对话历史存档 import 对话历史存档 + from crazy_functions.对话历史存档 import 载入对话历史存档 + from crazy_functions.对话历史存档 import 删除所有本地对话历史记录 + + from crazy_functions.批量Markdown翻译 import Markdown英译中 function_plugins = { - "解析整个Python项目": { "Color": "stop", # 按钮颜色 "Function": HotReload(解析一个Python项目) }, - "保存当前的对话": { + "载入对话历史存档(先上传存档或输入路径)": { + "Color": "stop", "AsButton":False, - "Function": HotReload(对话历史存档) + "Function": HotReload(载入对话历史存档) + }, + "删除所有本地对话历史记录(请谨慎操作)": { + "AsButton":False, + "Function": HotReload(删除所有本地对话历史记录) }, "[测试功能] 解析Jupyter Notebook文件": { "Color": "stop", "AsButton":False, "Function": HotReload(解析ipynb文件), + "AdvancedArgs": True, # 调用时,唤起高级参数输入区(默认False) + "ArgsReminder": "若输入0,则不解析notebook中的Markdown块", # 高级参数输入区的显示提示 }, "批量总结Word文档": { "Color": "stop", @@ -55,15 +66,20 @@ def get_crazy_functions(): "AsButton": False, # 加入下拉菜单中 "Function": HotReload(解析一个Golang项目) }, + "解析整个Rust项目": { + "Color": "stop", # 按钮颜色 + "AsButton": False, # 加入下拉菜单中 + "Function": HotReload(解析一个Rust项目) + }, "解析整个Java项目": { "Color": "stop", # 按钮颜色 "AsButton": False, # 加入下拉菜单中 "Function": HotReload(解析一个Java项目) }, - "解析整个React项目": { + "解析整个前端项目(js,ts,css等)": { "Color": "stop", # 按钮颜色 "AsButton": False, # 加入下拉菜单中 - "Function": HotReload(解析一个Rect项目) + "Function": HotReload(解析一个前端项目) }, "解析整个Lua项目": { "Color": "stop", # 按钮颜色 @@ -79,19 +95,29 @@ def get_crazy_functions(): "Color": "stop", # 按钮颜色 "Function": HotReload(读文章写摘要) }, + "Markdown/Readme英译中": { + # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 + "Color": "stop", + "Function": HotReload(Markdown英译中) + }, "批量生成函数注释": { "Color": "stop", # 按钮颜色 + "AsButton": False, # 加入下拉菜单中 "Function": HotReload(批量生成函数注释) }, + "保存当前的对话": { + "Function": HotReload(对话历史存档) + }, "[多线程Demo] 解析此项目本身(源码自译解)": { + "AsButton": False, # 加入下拉菜单中 "Function": HotReload(解析项目本身) }, - "[多线程demo] 把本项目源代码切换成全英文": { + "[老旧的Demo] 把本项目源代码切换成全英文": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "AsButton": False, # 加入下拉菜单中 "Function": HotReload(全项目切换英文) }, - "[函数插件模板Demo] 历史上的今天": { + "[插件demo] 历史上的今天": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Function": HotReload(高阶功能模板函数) }, @@ -108,7 +134,6 @@ def get_crazy_functions(): from crazy_functions.Latex全文翻译 import Latex中译英 from crazy_functions.Latex全文翻译 import Latex英译中 from crazy_functions.批量Markdown翻译 import Markdown中译英 - from crazy_functions.批量Markdown翻译 import Markdown英译中 function_plugins.update({ "批量翻译PDF文档(多线程)": { @@ -155,30 +180,25 @@ def get_crazy_functions(): "AsButton": False, # 加入下拉菜单中 "Function": HotReload(Latex中文润色) }, - "[测试功能] Latex项目全文中译英(输入路径或上传压缩包)": { + "Latex项目全文中译英(输入路径或上传压缩包)": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Color": "stop", "AsButton": False, # 加入下拉菜单中 "Function": HotReload(Latex中译英) }, - "[测试功能] Latex项目全文英译中(输入路径或上传压缩包)": { + "Latex项目全文英译中(输入路径或上传压缩包)": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Color": "stop", "AsButton": False, # 加入下拉菜单中 "Function": HotReload(Latex英译中) }, - "[测试功能] 批量Markdown中译英(输入路径或上传压缩包)": { + "批量Markdown中译英(输入路径或上传压缩包)": { # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 "Color": "stop", "AsButton": False, # 加入下拉菜单中 "Function": HotReload(Markdown中译英) }, - "[测试功能] 批量Markdown英译中(输入路径或上传压缩包)": { - # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效 - "Color": "stop", - "AsButton": False, # 加入下拉菜单中 - "Function": HotReload(Markdown英译中) - }, + }) @@ -222,5 +242,25 @@ def get_crazy_functions(): "Function": HotReload(同时问询_指定模型) }, }) + from crazy_functions.图片生成 import 图片生成 + function_plugins.update({ + "图片生成(先切换模型到openai或api2d)": { + "Color": "stop", + "AsButton": False, + "AdvancedArgs": True, # 调用时,唤起高级参数输入区(默认False) + "ArgsReminder": "在这里输入分辨率, 如256x256(默认)", # 高级参数输入区的显示提示 + "Function": HotReload(图片生成) + }, + }) + from crazy_functions.总结音视频 import 总结音视频 + function_plugins.update({ + "批量总结音视频(输入路径或上传压缩包)": { + "Color": "stop", + "AsButton": False, + "AdvancedArgs": True, + "ArgsReminder": "调用openai api 使用whisper-1模型, 目前支持的格式:mp4, m4a, wav, mpga, mpeg, mp3。此处可以输入解析提示,例如:解析为简体中文(默认)。", + "Function": HotReload(总结音视频) + } + }) ###################### 第n组插件 ########################### return function_plugins diff --git a/crazy_functions/crazy_functions_test.py b/crazy_functions/crazy_functions_test.py index 6020fa2ffc3cdcb288f03e55ff37313b0be78222..991b48608eb74013702e5f3a0e7d8a94deb47f72 100644 --- a/crazy_functions/crazy_functions_test.py +++ b/crazy_functions/crazy_functions_test.py @@ -81,29 +81,13 @@ def test_下载arxiv论文并翻译摘要(): def test_联网回答问题(): from crazy_functions.联网的ChatGPT import 连接网络回答问题 - # txt = "“我们称之为高效”是什么梗?" - # >> 从第0份、第1份、第2份搜索结果可以看出,“我们称之为高效”是指在游戏社区中,用户们用来形容一些游戏策略或行为非常高效且能够带来好的效果的用语。这个用语最初可能是在群星(Stellaris)这个游戏里面流行起来的,后来也传播到了其他游戏中,比如巨像(Titan)等游戏。其中第1份搜索结果中的一篇文章也指出,“我们称之为高效”这 一用语来源于群星(Stellaris)游戏中的一个情节。 - # txt = "为什么说枪毙P社玩家没有一个冤枉的?" - # >> 它们都是关于一个知乎用户所发的帖子,引用了一群游戏玩家对于需要对P社玩家进行枪毙的讨论,这个话题的本质是玩家们对于P 社游戏中的政治与历史元素的不同看法,以及其中不少玩家以极端立场宣扬的想法和言论,因此有人就以枪毙这些玩家来回应此类言论。但是这个话题本身并没有实质内容,只是一个玩笑或者恶搞,并不应该被当做真实的态度或者观点,因此这种说法没有实际意义。 # txt = "谁是应急食品?" # >> '根据以上搜索结果可以得知,应急食品是“原神”游戏中的角色派蒙的外号。' # txt = "道路千万条,安全第一条。后面两句是?" # >> '行车不规范,亲人两行泪。' - # txt = "What is in the canister?" - # >> Rainbow Six Siege 游戏中 Smoke 的 Canister 中装有何种物质相关的官方信息。 - # txt = "失败的man是什么?" - # >> 根据第1份搜索结果,可以得知失败的man是指一位在B站购买了蜘蛛侠COS服后穿上后被网友嘲笑的UP主,而“失败的man”是蜘蛛侠英文名“spiderman”的谐音梗,并且网友们还 给这位UP主起了“苍蝇侠”的外号。因此,失败的man是指这位UP主在穿上蜘蛛侠COS服后被网友嘲笑的情况。 - # txt = "老六是什么,起源于哪里?" - # >> 老六是网络流行语,最初起源于游戏《CSGO》,指游戏中玩家中独来独往、游离于队伍之外的“自由人”或玩得比较菜或者玩得比较阴险的人 ,后来逐渐演变成指玩得比较阴险的玩家。 - # txt = "罗小黑战记因为什么经常被吐槽?" - # >> 3. 更新速度。罗小黑战记的更新时间不定,时而快时而慢,给观众留下了等待的时间过长的印象。 - # txt = "沙特、伊朗最近的关系如何?" - # >> 最近在中国的斡旋下,沙特和伊朗于3月10日达成了恢复两国外交关系的协议,这表明两国关系已经重新回到正常化状态。 # txt = "You should have gone for the head. What does that mean?" # >> The phrase "You should have gone for the head" is a quote from the Marvel movies, Avengers: Infinity War and Avengers: Endgame. It was spoken by the character Thanos in Infinity War and by Thor in Endgame. txt = "AutoGPT是什么?" - # >> AutoGPT是一个基于GPT-4语言模型的开源应用程序。它可以根据用户需求自主执行任务,包括事件分析、营销方案撰写、代码编程、数学运算等等,并完全不需要用户插手。它可以自己思考,给出实现的步骤和实现细节,甚至可以自问自答执 行任务。最近它在GitHub上爆火,成为了业内最热门的项目之一。 - # txt = "钟离带什么圣遗物?" for cookies, cb, hist, msg in 连接网络回答问题(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): print("当前问答:", cb[-1][-1].replace("\n"," ")) for i, it in enumerate(cb): print亮蓝(it[0]); print亮黄(it[1]) diff --git a/crazy_functions/crazy_utils.py b/crazy_functions/crazy_utils.py index 4e0eba499e6f2fa94b1a962421b3c4bfef7a2f26..e54136c441e7d713b0e8f5a66de9fb8bae1b1f4c 100644 --- a/crazy_functions/crazy_utils.py +++ b/crazy_functions/crazy_utils.py @@ -1,5 +1,4 @@ -import traceback -from toolbox import update_ui, get_conf +from toolbox import update_ui, get_conf, trimmed_format_exc def input_clipping(inputs, history, max_token_limit): import numpy as np @@ -94,12 +93,12 @@ def request_gpt_model_in_new_thread_with_ui_alive( continue # 返回重试 else: # 【选择放弃】 - tb_str = '```\n' + traceback.format_exc() + '```' + tb_str = '```\n' + trimmed_format_exc() + '```' mutable[0] += f"[Local Message] 警告,在执行过程中遭遇问题, Traceback:\n\n{tb_str}\n\n" return mutable[0] # 放弃 except: # 【第三种情况】:其他错误:重试几次 - tb_str = '```\n' + traceback.format_exc() + '```' + tb_str = '```\n' + trimmed_format_exc() + '```' print(tb_str) mutable[0] += f"[Local Message] 警告,在执行过程中遭遇问题, Traceback:\n\n{tb_str}\n\n" if retry_op > 0: @@ -173,7 +172,7 @@ def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( if max_workers == -1: # 读取配置文件 try: max_workers, = get_conf('DEFAULT_WORKER_NUM') except: max_workers = 8 - if max_workers <= 0 or max_workers >= 20: max_workers = 8 + if max_workers <= 0: max_workers = 3 # 屏蔽掉 chatglm的多线程,可能会导致严重卡顿 if not (llm_kwargs['llm_model'].startswith('gpt-') or llm_kwargs['llm_model'].startswith('api2d-')): max_workers = 1 @@ -220,14 +219,14 @@ def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( continue # 返回重试 else: # 【选择放弃】 - tb_str = '```\n' + traceback.format_exc() + '```' + tb_str = '```\n' + trimmed_format_exc() + '```' gpt_say += f"[Local Message] 警告,线程{index}在执行过程中遭遇问题, Traceback:\n\n{tb_str}\n\n" if len(mutable[index][0]) > 0: gpt_say += "此线程失败前收到的回答:\n\n" + mutable[index][0] mutable[index][2] = "输入过长已放弃" return gpt_say # 放弃 except: # 【第三种情况】:其他错误 - tb_str = '```\n' + traceback.format_exc() + '```' + tb_str = '```\n' + trimmed_format_exc() + '```' print(tb_str) gpt_say += f"[Local Message] 警告,线程{index}在执行过程中遭遇问题, Traceback:\n\n{tb_str}\n\n" if len(mutable[index][0]) > 0: gpt_say += "此线程失败前收到的回答:\n\n" + mutable[index][0] @@ -564,3 +563,46 @@ def read_and_clean_pdf_text(fp): # print亮绿('***************************') return meta_txt, page_one_meta + + +def get_files_from_everything(txt, type): # type='.md' + """ + 这个函数是用来获取指定目录下所有指定类型(如.md)的文件,并且对于网络上的文件,也可以获取它。 + 下面是对每个参数和返回值的说明: + 参数 + - txt: 路径或网址,表示要搜索的文件或者文件夹路径或网络上的文件。 + - type: 字符串,表示要搜索的文件类型。默认是.md。 + 返回值 + - success: 布尔值,表示函数是否成功执行。 + - file_manifest: 文件路径列表,里面包含以指定类型为后缀名的所有文件的绝对路径。 + - project_folder: 字符串,表示文件所在的文件夹路径。如果是网络上的文件,就是临时文件夹的路径。 + 该函数详细注释已添加,请确认是否满足您的需要。 + """ + import glob, os + + success = True + if txt.startswith('http'): + # 网络的远程文件 + import requests + from toolbox import get_conf + proxies, = get_conf('proxies') + r = requests.get(txt, proxies=proxies) + with open('./gpt_log/temp'+type, 'wb+') as f: f.write(r.content) + project_folder = './gpt_log/' + file_manifest = ['./gpt_log/temp'+type] + elif txt.endswith(type): + # 直接给定文件 + file_manifest = [txt] + project_folder = os.path.dirname(txt) + elif os.path.exists(txt): + # 本地路径,递归搜索 + project_folder = txt + file_manifest = [f for f in glob.glob(f'{project_folder}/**/*'+type, recursive=True)] + if len(file_manifest) == 0: + success = False + else: + project_folder = None + file_manifest = [] + success = False + + return success, file_manifest, project_folder diff --git "a/crazy_functions/\345\233\276\347\211\207\347\224\237\346\210\220.py" "b/crazy_functions/\345\233\276\347\211\207\347\224\237\346\210\220.py" new file mode 100644 index 0000000000000000000000000000000000000000..5bf8bc4ba95864dc53f98b7335e654f58c4fed54 --- /dev/null +++ "b/crazy_functions/\345\233\276\347\211\207\347\224\237\346\210\220.py" @@ -0,0 +1,67 @@ +from toolbox import CatchException, update_ui, get_conf, select_api_key +from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive +import datetime + + +def gen_image(llm_kwargs, prompt, resolution="256x256"): + import requests, json, time, os + from request_llm.bridge_all import model_info + + proxies, = get_conf('proxies') + # Set up OpenAI API key and model + api_key = select_api_key(llm_kwargs['api_key'], llm_kwargs['llm_model']) + chat_endpoint = model_info[llm_kwargs['llm_model']]['endpoint'] + # 'https://api.openai.com/v1/chat/completions' + img_endpoint = chat_endpoint.replace('chat/completions','images/generations') + # # Generate the image + url = img_endpoint + headers = { + 'Authorization': f"Bearer {api_key}", + 'Content-Type': 'application/json' + } + data = { + 'prompt': prompt, + 'n': 1, + 'size': resolution, + 'response_format': 'url' + } + response = requests.post(url, headers=headers, json=data, proxies=proxies) + print(response.content) + image_url = json.loads(response.content.decode('utf8'))['data'][0]['url'] + + # 文件保存到本地 + r = requests.get(image_url, proxies=proxies) + file_path = 'gpt_log/image_gen/' + os.makedirs(file_path, exist_ok=True) + file_name = 'Image' + time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + '.png' + with open(file_path+file_name, 'wb+') as f: f.write(r.content) + + + return image_url, file_path+file_name + + + +@CatchException +def 图片生成(prompt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): + """ + txt 输入栏用户输入的文本,例如需要翻译的一段话,再例如一个包含了待处理文件的路径 + llm_kwargs gpt模型参数,如温度和top_p等,一般原样传递下去就行 + plugin_kwargs 插件模型的参数,暂时没有用武之地 + chatbot 聊天显示框的句柄,用于显示给用户 + history 聊天历史,前情提要 + system_prompt 给gpt的静默提醒 + web_port 当前软件运行的端口号 + """ + history = [] # 清空历史,以免输入溢出 + chatbot.append(("这是什么功能?", "[Local Message] 生成图像, 请先把模型切换至gpt-xxxx或者api2d-xxxx。如果中文效果不理想, 尝试Prompt。正在处理中 .....")) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新 + if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg") + resolution = plugin_kwargs.get("advanced_arg", '256x256') + image_url, image_path = gen_image(llm_kwargs, prompt, resolution) + chatbot.append([prompt, + f'图像中转网址:
`{image_url}`
'+ + f'中转网址预览:
' + f'本地文件地址:
`{image_path}`
'+ + f'本地文件预览:
' + ]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 界面更新 diff --git "a/crazy_functions/\345\257\271\350\257\235\345\216\206\345\217\262\345\255\230\346\241\243.py" "b/crazy_functions/\345\257\271\350\257\235\345\216\206\345\217\262\345\255\230\346\241\243.py" index 1b232de4324c2ddaa44ac4d4f6f5bfc1da369913..c638d1bd087c878e9722bec02361111613ac2b7c 100644 --- "a/crazy_functions/\345\257\271\350\257\235\345\216\206\345\217\262\345\255\230\346\241\243.py" +++ "b/crazy_functions/\345\257\271\350\257\235\345\216\206\345\217\262\345\255\230\346\241\243.py" @@ -1,7 +1,8 @@ from toolbox import CatchException, update_ui from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive +import re -def write_chat_to_file(chatbot, file_name=None): +def write_chat_to_file(chatbot, history=None, file_name=None): """ 将对话记录history以Markdown格式写入文件中。如果没有指定文件名,则使用当前时间生成文件名。 """ @@ -11,20 +12,62 @@ def write_chat_to_file(chatbot, file_name=None): file_name = 'chatGPT对话历史' + time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) + '.html' os.makedirs('./gpt_log/', exist_ok=True) with open(f'./gpt_log/{file_name}', 'w', encoding='utf8') as f: + from theme import advanced_css + f.write(f'对话历史') for i, contents in enumerate(chatbot): - for content in contents: + for j, content in enumerate(contents): try: # 这个bug没找到触发条件,暂时先这样顶一下 if type(content) != str: content = str(content) except: continue f.write(content) - f.write('\n\n') + if j == 0: + f.write('
') f.write('
\n\n') - + f.write('
\n\n raw chat context:\n') + f.write('') + for h in history: + f.write("\n>>>" + h) + f.write('') res = '对话历史写入:' + os.path.abspath(f'./gpt_log/{file_name}') print(res) return res +def gen_file_preview(file_name): + try: + with open(file_name, 'r', encoding='utf8') as f: + file_content = f.read() + # pattern to match the text between and + pattern = re.compile(r'.*?', flags=re.DOTALL) + file_content = re.sub(pattern, '', file_content) + html, history = file_content.split('
\n\n raw chat context:\n') + history = history.strip('') + history = history.strip('') + history = history.split("\n>>>") + return list(filter(lambda x:x!="", history))[0][:100] + except: + return "" + +def read_file_to_chat(chatbot, history, file_name): + with open(file_name, 'r', encoding='utf8') as f: + file_content = f.read() + # pattern to match the text between and + pattern = re.compile(r'.*?', flags=re.DOTALL) + file_content = re.sub(pattern, '', file_content) + html, history = file_content.split('
\n\n raw chat context:\n') + history = history.strip('') + history = history.strip('') + history = history.split("\n>>>") + history = list(filter(lambda x:x!="", history)) + html = html.split('
\n\n') + html = list(filter(lambda x:x!="", html)) + chatbot.clear() + for i, h in enumerate(html): + i_say, gpt_say = h.split('
') + chatbot.append([i_say, gpt_say]) + chatbot.append([f"存档文件详情?", f"[Local Message] 载入对话{len(html)}条,上下文{len(history)}条。"]) + return chatbot, history + @CatchException def 对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): """ @@ -37,6 +80,64 @@ def 对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_ web_port 当前软件运行的端口号 """ - chatbot.append(("保存当前对话", f"[Local Message] {write_chat_to_file(chatbot)}")) + chatbot.append(("保存当前对话", + f"[Local Message] {write_chat_to_file(chatbot, history)},您可以调用“载入对话历史存档”还原当下的对话。\n警告!被保存的对话历史可以被使用该系统的任何人查阅。")) yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新 +def hide_cwd(str): + import os + current_path = os.getcwd() + replace_path = "." + return str.replace(current_path, replace_path) + +@CatchException +def 载入对话历史存档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): + """ + txt 输入栏用户输入的文本,例如需要翻译的一段话,再例如一个包含了待处理文件的路径 + llm_kwargs gpt模型参数,如温度和top_p等,一般原样传递下去就行 + plugin_kwargs 插件模型的参数,暂时没有用武之地 + chatbot 聊天显示框的句柄,用于显示给用户 + history 聊天历史,前情提要 + system_prompt 给gpt的静默提醒 + web_port 当前软件运行的端口号 + """ + from .crazy_utils import get_files_from_everything + success, file_manifest, _ = get_files_from_everything(txt, type='.html') + + if not success: + if txt == "": txt = '空空如也的输入栏' + import glob + local_history = "
".join(["`"+hide_cwd(f)+f" ({gen_file_preview(f)})"+"`" for f in glob.glob(f'gpt_log/**/chatGPT对话历史*.html', recursive=True)]) + chatbot.append([f"正在查找对话历史文件(html格式): {txt}", f"找不到任何html文件: {txt}。但本地存储了以下历史文件,您可以将任意一个文件路径粘贴到输入区,然后重试:
{local_history}"]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + + try: + chatbot, history = read_file_to_chat(chatbot, history, file_manifest[0]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + except: + chatbot.append([f"载入对话历史文件", f"对话历史文件损坏!"]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + +@CatchException +def 删除所有本地对话历史记录(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): + """ + txt 输入栏用户输入的文本,例如需要翻译的一段话,再例如一个包含了待处理文件的路径 + llm_kwargs gpt模型参数,如温度和top_p等,一般原样传递下去就行 + plugin_kwargs 插件模型的参数,暂时没有用武之地 + chatbot 聊天显示框的句柄,用于显示给用户 + history 聊天历史,前情提要 + system_prompt 给gpt的静默提醒 + web_port 当前软件运行的端口号 + """ + + import glob, os + local_history = "
".join(["`"+hide_cwd(f)+"`" for f in glob.glob(f'gpt_log/**/chatGPT对话历史*.html', recursive=True)]) + for f in glob.glob(f'gpt_log/**/chatGPT对话历史*.html', recursive=True): + os.remove(f) + chatbot.append([f"删除所有历史对话文件", f"已删除
{local_history}"]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + + diff --git "a/crazy_functions/\346\200\273\347\273\223word\346\226\207\346\241\243.py" "b/crazy_functions/\346\200\273\347\273\223word\346\226\207\346\241\243.py" index f1fe20171cc54aec0c79f4961e71b57845f252d5..eada69dc65587782125c0809381260a6bbdce225 100644 --- "a/crazy_functions/\346\200\273\347\273\223word\346\226\207\346\241\243.py" +++ "b/crazy_functions/\346\200\273\347\273\223word\346\226\207\346\241\243.py" @@ -85,7 +85,7 @@ def 总结word文档(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_pr # 基本信息:功能、贡献者 chatbot.append([ "函数插件功能?", - "批量总结Word文档。函数插件贡献者: JasonGuo1"]) + "批量总结Word文档。函数插件贡献者: JasonGuo1。注意, 如果是.doc文件, 请先转化为.docx格式。"]) yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 尝试导入依赖,如果缺少依赖,则给出安装建议 diff --git "a/crazy_functions/\346\200\273\347\273\223\351\237\263\350\247\206\351\242\221.py" "b/crazy_functions/\346\200\273\347\273\223\351\237\263\350\247\206\351\242\221.py" new file mode 100644 index 0000000000000000000000000000000000000000..62f05d395bafab8638ed6963e2d24334d95ecf37 --- /dev/null +++ "b/crazy_functions/\346\200\273\347\273\223\351\237\263\350\247\206\351\242\221.py" @@ -0,0 +1,184 @@ +from toolbox import CatchException, report_execption, select_api_key, update_ui, write_results_to_file, get_conf +from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive + +def split_audio_file(filename, split_duration=1000): + """ + 根据给定的切割时长将音频文件切割成多个片段。 + + Args: + filename (str): 需要被切割的音频文件名。 + split_duration (int, optional): 每个切割音频片段的时长(以秒为单位)。默认值为1000。 + + Returns: + filelist (list): 一个包含所有切割音频片段文件路径的列表。 + + """ + from moviepy.editor import AudioFileClip + import os + os.makedirs('gpt_log/mp3/cut/', exist_ok=True) # 创建存储切割音频的文件夹 + + # 读取音频文件 + audio = AudioFileClip(filename) + + # 计算文件总时长和切割点 + total_duration = audio.duration + split_points = list(range(0, int(total_duration), split_duration)) + split_points.append(int(total_duration)) + filelist = [] + + # 切割音频文件 + for i in range(len(split_points) - 1): + start_time = split_points[i] + end_time = split_points[i + 1] + split_audio = audio.subclip(start_time, end_time) + split_audio.write_audiofile(f"gpt_log/mp3/cut/{filename[0]}_{i}.mp3") + filelist.append(f"gpt_log/mp3/cut/{filename[0]}_{i}.mp3") + + audio.close() + return filelist + +def AnalyAudio(parse_prompt, file_manifest, llm_kwargs, chatbot, history): + import os, requests + from moviepy.editor import AudioFileClip + from request_llm.bridge_all import model_info + + # 设置OpenAI密钥和模型 + api_key = select_api_key(llm_kwargs['api_key'], llm_kwargs['llm_model']) + chat_endpoint = model_info[llm_kwargs['llm_model']]['endpoint'] + + whisper_endpoint = chat_endpoint.replace('chat/completions', 'audio/transcriptions') + url = whisper_endpoint + headers = { + 'Authorization': f"Bearer {api_key}" + } + + os.makedirs('gpt_log/mp3/', exist_ok=True) + for index, fp in enumerate(file_manifest): + audio_history = [] + # 提取文件扩展名 + ext = os.path.splitext(fp)[1] + # 提取视频中的音频 + if ext not in [".mp3", ".wav", ".m4a", ".mpga"]: + audio_clip = AudioFileClip(fp) + audio_clip.write_audiofile(f'gpt_log/mp3/output{index}.mp3') + fp = f'gpt_log/mp3/output{index}.mp3' + # 调用whisper模型音频转文字 + voice = split_audio_file(fp) + for j, i in enumerate(voice): + with open(i, 'rb') as f: + file_content = f.read() # 读取文件内容到内存 + files = { + 'file': (os.path.basename(i), file_content), + } + data = { + "model": "whisper-1", + "prompt": parse_prompt, + 'response_format': "text" + } + + chatbot.append([f"将 {i} 发送到openai音频解析终端 (whisper),当前参数:{parse_prompt}", "正在处理 ..."]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + proxies, = get_conf('proxies') + response = requests.post(url, headers=headers, files=files, data=data, proxies=proxies).text + + chatbot.append(["音频解析结果", response]) + history.extend(["音频解析结果", response]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + + i_say = f'请对下面的音频片段做概述,音频内容是 ```{response}```' + i_say_show_user = f'第{index + 1}段音频的第{j + 1} / {len(voice)}片段。' + gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive( + inputs=i_say, + inputs_show_user=i_say_show_user, + llm_kwargs=llm_kwargs, + chatbot=chatbot, + history=[], + sys_prompt=f"总结音频。音频文件名{fp}" + ) + + chatbot[-1] = (i_say_show_user, gpt_say) + history.extend([i_say_show_user, gpt_say]) + audio_history.extend([i_say_show_user, gpt_say]) + + # 已经对该文章的所有片段总结完毕,如果文章被切分了 + result = "".join(audio_history) + if len(audio_history) > 1: + i_say = f"根据以上的对话,使用中文总结音频“{result}”的主要内容。" + i_say_show_user = f'第{index + 1}段音频的主要内容:' + gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive( + inputs=i_say, + inputs_show_user=i_say_show_user, + llm_kwargs=llm_kwargs, + chatbot=chatbot, + history=audio_history, + sys_prompt="总结文章。" + ) + + history.extend([i_say, gpt_say]) + audio_history.extend([i_say, gpt_say]) + + res = write_results_to_file(history) + chatbot.append((f"第{index + 1}段音频完成了吗?", res)) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + + # 删除中间文件夹 + import shutil + shutil.rmtree('gpt_log/mp3') + res = write_results_to_file(history) + chatbot.append(("所有音频都总结完成了吗?", res)) + yield from update_ui(chatbot=chatbot, history=history) + + +@CatchException +def 总结音视频(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, WEB_PORT): + import glob, os + + # 基本信息:功能、贡献者 + chatbot.append([ + "函数插件功能?", + "总结音视频内容,函数插件贡献者: dalvqw & BinaryHusky"]) + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + + try: + from moviepy.editor import AudioFileClip + except: + report_execption(chatbot, history, + a=f"解析项目: {txt}", + b=f"导入软件依赖失败。使用该模块需要额外依赖,安装方法```pip install --upgrade moviepy```。") + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + + # 清空历史,以免输入溢出 + history = [] + + # 检测输入参数,如没有给定输入参数,直接退出 + if os.path.exists(txt): + project_folder = txt + else: + if txt == "": txt = '空空如也的输入栏' + report_execption(chatbot, history, a=f"解析项目: {txt}", b=f"找不到本地项目或无权访问: {txt}") + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + + # 搜索需要处理的文件清单 + extensions = ['.mp4', '.m4a', '.wav', '.mpga', '.mpeg', '.mp3', '.avi', '.mkv', '.flac', '.aac'] + + if txt.endswith(tuple(extensions)): + file_manifest = [txt] + else: + file_manifest = [] + for extension in extensions: + file_manifest.extend(glob.glob(f'{project_folder}/**/*{extension}', recursive=True)) + + # 如果没找到任何文件 + if len(file_manifest) == 0: + report_execption(chatbot, history, a=f"解析项目: {txt}", b=f"找不到任何音频或视频文件: {txt}") + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + + # 开始正式执行任务 + if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg") + parse_prompt = plugin_kwargs.get("advanced_arg", '将音频解析为简体中文') + yield from AnalyAudio(parse_prompt, file_manifest, llm_kwargs, chatbot, history) + + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 diff --git "a/crazy_functions/\346\211\271\351\207\217Markdown\347\277\273\350\257\221.py" "b/crazy_functions/\346\211\271\351\207\217Markdown\347\277\273\350\257\221.py" index ee6a1a44340ac2cf8fc3a4323c23218c69e0946f..26f42cad0c13bf601fc997c4d7cc5b237d2f97df 100644 --- "a/crazy_functions/\346\211\271\351\207\217Markdown\347\277\273\350\257\221.py" +++ "b/crazy_functions/\346\211\271\351\207\217Markdown\347\277\273\350\257\221.py" @@ -84,7 +84,33 @@ def 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, ch yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 +def get_files_from_everything(txt): + import glob, os + + success = True + if txt.startswith('http'): + # 网络的远程文件 + txt = txt.replace("https://github.com/", "https://raw.githubusercontent.com/") + txt = txt.replace("/blob/", "/") + import requests + from toolbox import get_conf + proxies, = get_conf('proxies') + r = requests.get(txt, proxies=proxies) + with open('./gpt_log/temp.md', 'wb+') as f: f.write(r.content) + project_folder = './gpt_log/' + file_manifest = ['./gpt_log/temp.md'] + elif txt.endswith('.md'): + # 直接给定文件 + file_manifest = [txt] + project_folder = os.path.dirname(txt) + elif os.path.exists(txt): + # 本地路径,递归搜索 + project_folder = txt + file_manifest = [f for f in glob.glob(f'{project_folder}/**/*.md', recursive=True)] + else: + success = False + return success, file_manifest, project_folder @CatchException @@ -98,6 +124,7 @@ def Markdown英译中(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p # 尝试导入依赖,如果缺少依赖,则给出安装建议 try: import tiktoken + import glob, os except: report_execption(chatbot, history, a=f"解析项目: {txt}", @@ -105,19 +132,21 @@ def Markdown英译中(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 return history = [] # 清空历史,以免输入溢出 - import glob, os - if os.path.exists(txt): - project_folder = txt - else: + + success, file_manifest, project_folder = get_files_from_everything(txt) + + if not success: + # 什么都没有 if txt == "": txt = '空空如也的输入栏' report_execption(chatbot, history, a = f"解析项目: {txt}", b = f"找不到本地项目或无权访问: {txt}") yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 return - file_manifest = [f for f in glob.glob(f'{project_folder}/**/*.md', recursive=True)] + if len(file_manifest) == 0: report_execption(chatbot, history, a = f"解析项目: {txt}", b = f"找不到任何.md文件: {txt}") yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 return + yield from 多文件翻译(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, language='en->zh') @@ -135,6 +164,7 @@ def Markdown中译英(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p # 尝试导入依赖,如果缺少依赖,则给出安装建议 try: import tiktoken + import glob, os except: report_execption(chatbot, history, a=f"解析项目: {txt}", @@ -142,18 +172,13 @@ def Markdown中译英(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_p yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 return history = [] # 清空历史,以免输入溢出 - import glob, os - if os.path.exists(txt): - project_folder = txt - else: + success, file_manifest, project_folder = get_files_from_everything(txt) + if not success: + # 什么都没有 if txt == "": txt = '空空如也的输入栏' report_execption(chatbot, history, a = f"解析项目: {txt}", b = f"找不到本地项目或无权访问: {txt}") yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 return - if txt.endswith('.md'): - file_manifest = [txt] - else: - file_manifest = [f for f in glob.glob(f'{project_folder}/**/*.md', recursive=True)] if len(file_manifest) == 0: report_execption(chatbot, history, a = f"解析项目: {txt}", b = f"找不到任何.md文件: {txt}") yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 diff --git "a/crazy_functions/\346\211\271\351\207\217\346\200\273\347\273\223PDF\346\226\207\346\241\243.py" "b/crazy_functions/\346\211\271\351\207\217\346\200\273\347\273\223PDF\346\226\207\346\241\243.py" index 2f4201438c4d8597c251726fe99c02d40f0cadf0..cbda23b83d759e6a3a4da5847c37ddff662daab2 100644 --- "a/crazy_functions/\346\211\271\351\207\217\346\200\273\347\273\223PDF\346\226\207\346\241\243.py" +++ "b/crazy_functions/\346\211\271\351\207\217\346\200\273\347\273\223PDF\346\226\207\346\241\243.py" @@ -41,8 +41,8 @@ def clean_text(raw_text): """ 对从 PDF 提取出的原始文本进行清洗和格式化处理。 1. 对原始文本进行归一化处理。 - 2. 替换跨行的连词,例如 “Espe-\ncially” 转换为 “Especially”。 - 3. 根据 heuristic 规则判断换行符是否是段落分隔,并相应地进行替换。 + 2. 替换跨行的连词 + 3. 根据 heuristic 规则判断换行符是否是段落分隔,并相应地进行替换 """ # 对文本进行归一化处理 normalized_text = normalize_text(raw_text) diff --git "a/crazy_functions/\346\211\271\351\207\217\347\277\273\350\257\221PDF\346\226\207\346\241\243_\345\244\232\347\272\277\347\250\213.py" "b/crazy_functions/\346\211\271\351\207\217\347\277\273\350\257\221PDF\346\226\207\346\241\243_\345\244\232\347\272\277\347\250\213.py" index 4adb9a464bc71ec4a177b76536d5e5fab619ef2d..06d8a5a7f4459d9620f33fa2b96e28e8c27abbc7 100644 --- "a/crazy_functions/\346\211\271\351\207\217\347\277\273\350\257\221PDF\346\226\207\346\241\243_\345\244\232\347\272\277\347\250\213.py" +++ "b/crazy_functions/\346\211\271\351\207\217\347\277\273\350\257\221PDF\346\226\207\346\241\243_\345\244\232\347\272\277\347\250\213.py" @@ -58,14 +58,17 @@ def 批量翻译PDF文档(txt, llm_kwargs, plugin_kwargs, chatbot, history, sys_ def 解析PDF(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, sys_prompt): import os + import copy import tiktoken TOKEN_LIMIT_PER_FRAGMENT = 1280 generated_conclusion_files = [] + generated_html_files = [] for index, fp in enumerate(file_manifest): # 读取PDF文件 file_content, page_one = read_and_clean_pdf_text(fp) - + file_content = file_content.encode('utf-8', 'ignore').decode() # avoid reading non-utf8 chars + page_one = str(page_one).encode('utf-8', 'ignore').decode() # avoid reading non-utf8 chars # 递归地切割PDF文件 from .crazy_utils import breakdown_txt_to_satisfy_token_limit_for_pdf from request_llm.bridge_all import model_info @@ -74,7 +77,7 @@ def 解析PDF(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, paper_fragments = breakdown_txt_to_satisfy_token_limit_for_pdf( txt=file_content, get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT) page_one_fragments = breakdown_txt_to_satisfy_token_limit_for_pdf( - txt=str(page_one), get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT//4) + txt=page_one, get_token_fn=get_token_num, limit=TOKEN_LIMIT_PER_FRAGMENT//4) # 为了更好的效果,我们剥离Introduction之后的部分(如果有) paper_meta = page_one_fragments[0].split('introduction')[0].split('Introduction')[0].split('INTRODUCTION')[0] @@ -100,15 +103,15 @@ def 解析PDF(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, "请你作为一个学术翻译,负责把学术论文准确翻译成中文。注意文章中的每一句话都要翻译。" for _ in paper_fragments], # max_workers=5 # OpenAI所允许的最大并行过载 ) - + gpt_response_collection_md = copy.deepcopy(gpt_response_collection) # 整理报告的格式 - for i,k in enumerate(gpt_response_collection): + for i,k in enumerate(gpt_response_collection_md): if i%2==0: - gpt_response_collection[i] = f"\n\n---\n\n ## 原文[{i//2}/{len(gpt_response_collection)//2}]: \n\n {paper_fragments[i//2].replace('#', '')} \n\n---\n\n ## 翻译[{i//2}/{len(gpt_response_collection)//2}]:\n " + gpt_response_collection_md[i] = f"\n\n---\n\n ## 原文[{i//2}/{len(gpt_response_collection_md)//2}]: \n\n {paper_fragments[i//2].replace('#', '')} \n\n---\n\n ## 翻译[{i//2}/{len(gpt_response_collection_md)//2}]:\n " else: - gpt_response_collection[i] = gpt_response_collection[i] + gpt_response_collection_md[i] = gpt_response_collection_md[i] final = ["一、论文概况\n\n---\n\n", paper_meta_info.replace('# ', '### ') + '\n\n---\n\n', "二、论文翻译", ""] - final.extend(gpt_response_collection) + final.extend(gpt_response_collection_md) create_report_file_name = f"{os.path.basename(fp)}.trans.md" res = write_results_to_file(final, file_name=create_report_file_name) @@ -117,15 +120,97 @@ def 解析PDF(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, chatbot.append((f"{fp}完成了吗?", res)) yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + # write html + try: + ch = construct_html() + orig = "" + trans = "" + gpt_response_collection_html = copy.deepcopy(gpt_response_collection) + for i,k in enumerate(gpt_response_collection_html): + if i%2==0: + gpt_response_collection_html[i] = paper_fragments[i//2].replace('#', '') + else: + gpt_response_collection_html[i] = gpt_response_collection_html[i] + final = ["论文概况", paper_meta_info.replace('# ', '### '), "二、论文翻译", ""] + final.extend(gpt_response_collection_html) + for i, k in enumerate(final): + if i%2==0: + orig = k + if i%2==1: + trans = k + ch.add_row(a=orig, b=trans) + create_report_file_name = f"{os.path.basename(fp)}.trans.html" + ch.save_file(create_report_file_name) + generated_html_files.append(f'./gpt_log/{create_report_file_name}') + except: + from toolbox import trimmed_format_exc + print('writing html result failed:', trimmed_format_exc()) + # 准备文件的下载 import shutil for pdf_path in generated_conclusion_files: # 重命名文件 - rename_file = f'./gpt_log/总结论文-{os.path.basename(pdf_path)}' + rename_file = f'./gpt_log/翻译-{os.path.basename(pdf_path)}' if os.path.exists(rename_file): os.remove(rename_file) shutil.copyfile(pdf_path, rename_file) if os.path.exists(pdf_path): os.remove(pdf_path) - chatbot.append(("给出输出文件清单", str(generated_conclusion_files))) + for html_path in generated_html_files: + # 重命名文件 + rename_file = f'./gpt_log/翻译-{os.path.basename(html_path)}' + if os.path.exists(rename_file): + os.remove(rename_file) + shutil.copyfile(html_path, rename_file) + if os.path.exists(html_path): + os.remove(html_path) + chatbot.append(("给出输出文件清单", str(generated_conclusion_files + generated_html_files))) yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + + +class construct_html(): + def __init__(self) -> None: + self.css = """ +.row { + display: flex; + flex-wrap: wrap; +} + +.column { + flex: 1; + padding: 10px; +} + +.table-header { + font-weight: bold; + border-bottom: 1px solid black; +} + +.table-row { + border-bottom: 1px solid lightgray; +} + +.table-cell { + padding: 5px; +} + """ + self.html_string = f'翻译结果' + + + def add_row(self, a, b): + tmp = """ +
+
REPLACE_A
+
REPLACE_B
+
+ """ + from toolbox import markdown_convertion + tmp = tmp.replace('REPLACE_A', markdown_convertion(a)) + tmp = tmp.replace('REPLACE_B', markdown_convertion(b)) + self.html_string += tmp + + + def save_file(self, file_name): + with open(f'./gpt_log/{file_name}', 'w', encoding='utf8') as f: + f.write(self.html_string.encode('utf-8', 'ignore').decode()) + diff --git "a/crazy_functions/\350\247\243\346\236\220JupyterNotebook.py" "b/crazy_functions/\350\247\243\346\236\220JupyterNotebook.py" index 3c9948b8b616af0bbc621bbdcebe63a67452ad5c..b4bcd56109b42d3023f24eade7c0cd5671d3c5a4 100644 --- "a/crazy_functions/\350\247\243\346\236\220JupyterNotebook.py" +++ "b/crazy_functions/\350\247\243\346\236\220JupyterNotebook.py" @@ -67,11 +67,17 @@ def parseNotebook(filename, enable_markdown=1): def ipynb解释(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt): from .crazy_utils import request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency + if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg") + enable_markdown = plugin_kwargs.get("advanced_arg", "1") + try: + enable_markdown = int(enable_markdown) + except ValueError: + enable_markdown = 1 + pfg = PaperFileGroup() - print(file_manifest) for fp in file_manifest: - file_content = parseNotebook(fp, enable_markdown=1) + file_content = parseNotebook(fp, enable_markdown=enable_markdown) pfg.file_paths.append(fp) pfg.file_contents.append(file_content) diff --git "a/crazy_functions/\350\247\243\346\236\220\351\241\271\347\233\256\346\272\220\344\273\243\347\240\201.py" "b/crazy_functions/\350\247\243\346\236\220\351\241\271\347\233\256\346\272\220\344\273\243\347\240\201.py" index bfa473aed03da5f84867900f564f10a4a645d6aa..5fa0cb792131da430f1986eb77a1576423b1fe8d 100644 --- "a/crazy_functions/\350\247\243\346\236\220\351\241\271\347\233\256\346\272\220\344\273\243\347\240\201.py" +++ "b/crazy_functions/\350\247\243\346\236\220\351\241\271\347\233\256\346\272\220\344\273\243\347\240\201.py" @@ -1,5 +1,6 @@ from toolbox import update_ui from toolbox import CatchException, report_execption, write_results_to_file +from .crazy_utils import input_clipping def 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt): import os, copy @@ -61,13 +62,15 @@ def 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, previous_iteration_files.extend([os.path.relpath(fp, project_folder) for index, fp in enumerate(this_iteration_file_manifest)]) previous_iteration_files_string = ', '.join(previous_iteration_files) current_iteration_focus = ', '.join([os.path.relpath(fp, project_folder) for index, fp in enumerate(this_iteration_file_manifest)]) - i_say = f'根据以上分析,对程序的整体功能和构架重新做出概括。然后用一张markdown表格整理每个文件的功能(包括{previous_iteration_files_string})。' + i_say = f'用一张Markdown表格简要描述以下文件的功能:{previous_iteration_files_string}。根据以上分析,用一句话概括程序的整体功能。' inputs_show_user = f'根据以上分析,对程序的整体功能和构架重新做出概括,由于输入长度限制,可能需要分组处理,本组文件为 {current_iteration_focus} + 已经汇总的文件组。' this_iteration_history = copy.deepcopy(this_iteration_gpt_response_collection) this_iteration_history.append(last_iteration_result) + # 裁剪input + inputs, this_iteration_history_feed = input_clipping(inputs=i_say, history=this_iteration_history, max_token_limit=2560) result = yield from request_gpt_model_in_new_thread_with_ui_alive( - inputs=i_say, inputs_show_user=inputs_show_user, llm_kwargs=llm_kwargs, chatbot=chatbot, - history=this_iteration_history, # 迭代之前的分析 + inputs=inputs, inputs_show_user=inputs_show_user, llm_kwargs=llm_kwargs, chatbot=chatbot, + history=this_iteration_history_feed, # 迭代之前的分析 sys_prompt="你是一个程序架构分析师,正在分析一个项目的源代码。") report_part_2.extend([i_say, result]) last_iteration_result = result @@ -180,7 +183,7 @@ def 解析一个Java项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, sys @CatchException -def 解析一个Rect项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): +def 解析一个前端项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): history = [] # 清空历史,以免输入溢出 import glob, os if os.path.exists(txt): @@ -194,9 +197,15 @@ def 解析一个Rect项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, sys [f for f in glob.glob(f'{project_folder}/**/*.tsx', recursive=True)] + \ [f for f in glob.glob(f'{project_folder}/**/*.json', recursive=True)] + \ [f for f in glob.glob(f'{project_folder}/**/*.js', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.vue', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.less', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.sass', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.wxml', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.wxss', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.css', recursive=True)] + \ [f for f in glob.glob(f'{project_folder}/**/*.jsx', recursive=True)] if len(file_manifest) == 0: - report_execption(chatbot, history, a=f"解析项目: {txt}", b=f"找不到任何Rect文件: {txt}") + report_execption(chatbot, history, a=f"解析项目: {txt}", b=f"找不到任何前端相关文件: {txt}") yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 return yield from 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt) @@ -223,6 +232,25 @@ def 解析一个Golang项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, s return yield from 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt) +@CatchException +def 解析一个Rust项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): + history = [] # 清空历史,以免输入溢出 + import glob, os + if os.path.exists(txt): + project_folder = txt + else: + if txt == "": txt = '空空如也的输入栏' + report_execption(chatbot, history, a=f"解析项目: {txt}", b=f"找不到本地项目或无权访问: {txt}") + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + file_manifest = [f for f in glob.glob(f'{project_folder}/**/*.rs', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.toml', recursive=True)] + \ + [f for f in glob.glob(f'{project_folder}/**/*.lock', recursive=True)] + if len(file_manifest) == 0: + report_execption(chatbot, history, a=f"解析项目: {txt}", b=f"找不到任何golang文件: {txt}") + yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 + return + yield from 解析源代码新(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt) @CatchException def 解析一个Lua项目(txt, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, web_port): diff --git "a/crazy_functions/\350\257\242\351\227\256\345\244\232\344\270\252\345\244\247\350\257\255\350\250\200\346\250\241\345\236\213.py" "b/crazy_functions/\350\257\242\351\227\256\345\244\232\344\270\252\345\244\247\350\257\255\350\250\200\346\250\241\345\236\213.py" index 2939d0455850275653ab39988a3276357390bd33..ec9fd4a2c802ec13fe52b993201794851ba1515b 100644 --- "a/crazy_functions/\350\257\242\351\227\256\345\244\232\344\270\252\345\244\247\350\257\255\350\250\200\346\250\241\345\236\213.py" +++ "b/crazy_functions/\350\257\242\351\227\256\345\244\232\344\270\252\345\244\247\350\257\255\350\250\200\346\250\241\345\236\213.py" @@ -45,6 +45,7 @@ def 同时问询_指定模型(txt, llm_kwargs, plugin_kwargs, chatbot, history, chatbot.append((txt, "正在同时咨询ChatGPT和ChatGLM……")) yield from update_ui(chatbot=chatbot, history=history) # 刷新界面 # 由于请求gpt需要一段时间,我们先及时地做一次界面更新 + if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg") # llm_kwargs['llm_model'] = 'chatglm&gpt-3.5-turbo&api2d-gpt-3.5-turbo' # 支持任意数量的llm接口,用&符号分隔 llm_kwargs['llm_model'] = plugin_kwargs.get("advanced_arg", 'chatglm&gpt-3.5-turbo') # 'chatglm&gpt-3.5-turbo' # 支持任意数量的llm接口,用&符号分隔 gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive( diff --git "a/crazy_functions/\350\260\267\346\255\214\346\243\200\347\264\242\345\260\217\345\212\251\346\211\213.py" "b/crazy_functions/\350\260\267\346\255\214\346\243\200\347\264\242\345\260\217\345\212\251\346\211\213.py" index 94ef256327f6740cdaddc6f5ecea5852a9210163..46c10de4f7148e2fa5de13b93183ab119f1af165 100644 --- "a/crazy_functions/\350\260\267\346\255\214\346\243\200\347\264\242\345\260\217\345\212\251\346\211\213.py" +++ "b/crazy_functions/\350\260\267\346\255\214\346\243\200\347\264\242\345\260\217\345\212\251\346\211\213.py" @@ -36,14 +36,18 @@ def get_meta_information(url, chatbot, history): max_results = 1, sort_by = arxiv.SortCriterion.Relevance, ) - paper = next(search.results()) - if string_similar(title, paper.title) > 0.90: # same paper - abstract = paper.summary.replace('\n', ' ') - is_paper_in_arxiv = True - else: # different paper + try: + paper = next(search.results()) + if string_similar(title, paper.title) > 0.90: # same paper + abstract = paper.summary.replace('\n', ' ') + is_paper_in_arxiv = True + else: # different paper + abstract = abstract + is_paper_in_arxiv = False + paper = next(search.results()) + except: abstract = abstract is_paper_in_arxiv = False - paper = next(search.results()) print(title) print(author) print(citation) @@ -70,6 +74,7 @@ def 谷歌检索小助手(txt, llm_kwargs, plugin_kwargs, chatbot, history, syst # 尝试导入依赖,如果缺少依赖,则给出安装建议 try: import arxiv + import math from bs4 import BeautifulSoup except: report_execption(chatbot, history, @@ -80,25 +85,26 @@ def 谷歌检索小助手(txt, llm_kwargs, plugin_kwargs, chatbot, history, syst # 清空历史,以免输入溢出 history = [] - meta_paper_info_list = yield from get_meta_information(txt, chatbot, history) + batchsize = 5 + for batch in range(math.ceil(len(meta_paper_info_list)/batchsize)): + if len(meta_paper_info_list[:batchsize]) > 0: + i_say = "下面是一些学术文献的数据,提取出以下内容:" + \ + "1、英文题目;2、中文题目翻译;3、作者;4、arxiv公开(is_paper_in_arxiv);4、引用数量(cite);5、中文摘要翻译。" + \ + f"以下是信息源:{str(meta_paper_info_list[:batchsize])}" - if len(meta_paper_info_list[:10]) > 0: - i_say = "下面是一些学术文献的数据,请从中提取出以下内容。" + \ - "1、英文题目;2、中文题目翻译;3、作者;4、arxiv公开(is_paper_in_arxiv);4、引用数量(cite);5、中文摘要翻译。" + \ - f"以下是信息源:{str(meta_paper_info_list[:10])}" - - inputs_show_user = f"请分析此页面中出现的所有文章:{txt}" - gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive( - inputs=i_say, inputs_show_user=inputs_show_user, - llm_kwargs=llm_kwargs, chatbot=chatbot, history=[], - sys_prompt="你是一个学术翻译,请从数据中提取信息。你必须使用Markdown格式。你必须逐个文献进行处理。" - ) + inputs_show_user = f"请分析此页面中出现的所有文章:{txt},这是第{batch+1}批" + gpt_say = yield from request_gpt_model_in_new_thread_with_ui_alive( + inputs=i_say, inputs_show_user=inputs_show_user, + llm_kwargs=llm_kwargs, chatbot=chatbot, history=[], + sys_prompt="你是一个学术翻译,请从数据中提取信息。你必须使用Markdown表格。你必须逐个文献进行处理。" + ) - history.extend([ "第一批", gpt_say ]) - meta_paper_info_list = meta_paper_info_list[10:] + history.extend([ f"第{batch+1}批", gpt_say ]) + meta_paper_info_list = meta_paper_info_list[batchsize:] - chatbot.append(["状态?", "已经全部完成"]) + chatbot.append(["状态?", + "已经全部完成,您可以试试让AI写一个Related Works,例如您可以继续输入Write a \"Related Works\" section about \"你搜索的研究领域\" for me."]) msg = '正常' yield from update_ui(chatbot=chatbot, history=history, msg=msg) # 刷新界面 res = write_results_to_file(history) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..9465a62d307e52420bc0506a4dec59f455182c4a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,104 @@ +#【请修改完参数后,删除此行】请在以下方案中选择一种,然后删除其他的方案,最后docker-compose up运行 | Please choose from one of these options below, delete other options as well as This Line + +## =================================================== +## 【方案一】 如果不需要运行本地模型(仅chatgpt,newbing类远程服务) +## =================================================== +version: '3' +services: + gpt_academic_nolocalllms: + image: ghcr.io/binary-husky/gpt_academic_nolocal:master + environment: + # 请查阅 `config.py` 以查看所有的配置信息 + API_KEY: ' sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' + USE_PROXY: ' True ' + proxies: ' { "http": "socks5h://localhost:10880", "https": "socks5h://localhost:10880", } ' + LLM_MODEL: ' gpt-3.5-turbo ' + AVAIL_LLM_MODELS: ' ["gpt-3.5-turbo", "api2d-gpt-3.5-turbo", "gpt-4", "api2d-gpt-4", "newbing"] ' + WEB_PORT: ' 22303 ' + ADD_WAIFU: ' True ' + # DEFAULT_WORKER_NUM: ' 10 ' + # AUTHENTICATION: ' [("username", "passwd"), ("username2", "passwd2")] ' + + # 与宿主的网络融合 + network_mode: "host" + + # 不使用代理网络拉取最新代码 + command: > + bash -c "python3 -u main.py" + + +### =================================================== +### 【方案二】 如果需要运行ChatGLM本地模型 +### =================================================== +version: '3' +services: + gpt_academic_with_chatglm: + image: ghcr.io/binary-husky/gpt_academic_chatglm_moss:master + environment: + # 请查阅 `config.py` 以查看所有的配置信息 + API_KEY: ' sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,fkxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' + USE_PROXY: ' True ' + proxies: ' { "http": "socks5h://localhost:10880", "https": "socks5h://localhost:10880", } ' + LLM_MODEL: ' gpt-3.5-turbo ' + AVAIL_LLM_MODELS: ' ["chatglm", "moss", "gpt-3.5-turbo", "gpt-4", "newbing"] ' + LOCAL_MODEL_DEVICE: ' cuda ' + DEFAULT_WORKER_NUM: ' 10 ' + WEB_PORT: ' 12303 ' + ADD_WAIFU: ' True ' + # AUTHENTICATION: ' [("username", "passwd"), ("username2", "passwd2")] ' + + # 显卡的使用,nvidia0指第0个GPU + runtime: nvidia + devices: + - /dev/nvidia0:/dev/nvidia0 + + # 与宿主的网络融合 + network_mode: "host" + command: > + bash -c "python3 -u main.py" + +### =================================================== +### 【方案三】 如果需要运行ChatGPT + LLAMA + 盘古 + RWKV本地模型 +### =================================================== +version: '3' +services: + gpt_academic_with_rwkv: + image: fuqingxu/gpt_academic:jittorllms # [option 2] 如果需要运行ChatGLM本地模型 + environment: + # 请查阅 `config.py` 以查看所有的配置信息 + API_KEY: ' sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,fkxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' + USE_PROXY: ' True ' + proxies: ' { "http": "socks5h://localhost:10880", "https": "socks5h://localhost:10880", } ' + LLM_MODEL: ' gpt-3.5-turbo ' + AVAIL_LLM_MODELS: ' ["gpt-3.5-turbo", "newbing", "jittorllms_rwkv", "jittorllms_pangualpha", "jittorllms_llama"] ' + LOCAL_MODEL_DEVICE: ' cuda ' + DEFAULT_WORKER_NUM: ' 10 ' + WEB_PORT: ' 12305 ' + ADD_WAIFU: ' True ' + # AUTHENTICATION: ' [("username", "passwd"), ("username2", "passwd2")] ' + + # 显卡的使用,nvidia0指第0个GPU + runtime: nvidia + devices: + - /dev/nvidia0:/dev/nvidia0 + + # 与宿主的网络融合 + network_mode: "host" + + # 使用代理网络拉取最新代码 + # command: > + # bash -c " truncate -s -1 /etc/proxychains.conf && + # echo \"socks5 127.0.0.1 10880\" >> /etc/proxychains.conf && + # echo '[gpt-academic] 正在从github拉取最新代码...' && + # proxychains git pull && + # echo '[jittorllms] 正在从github拉取最新代码...' && + # proxychains git --git-dir=request_llm/jittorllms/.git --work-tree=request_llm/jittorllms pull --force && + # python3 -u main.py" + + # 不使用代理网络拉取最新代码 + command: > + bash -c " echo '[gpt-academic] 正在从github拉取最新代码...' && + git pull && + echo '[jittorllms] 正在从github拉取最新代码...' && + git --git-dir=request_llm/jittorllms/.git --work-tree=request_llm/jittorllms pull --force && + python3 -u main.py" diff --git a/docs/Dockerfile+ChatGLM b/docs/Dockerfile+ChatGLM index dafcee741df02d9b66ea8f9d330acce0d43fb1e6..9e6db27b721a9265be8afd1a79dc74d2bb523959 100644 --- a/docs/Dockerfile+ChatGLM +++ b/docs/Dockerfile+ChatGLM @@ -1,6 +1,6 @@ # How to build | 如何构建: docker build -t gpt-academic --network=host -f Dockerfile+ChatGLM . -# How to run | 如何运行 (1) 直接运行(选择0号GPU): docker run --rm -it --net=host --gpus="0" gpt-academic -# How to run | 如何运行 (2) 我想运行之前进容器做一些调整: docker run --rm -it --net=host --gpus="0" gpt-academic bash +# How to run | (1) 我想直接一键运行(选择0号GPU): docker run --rm -it --net=host --gpus \"device=0\" gpt-academic +# How to run | (2) 我想运行之前进容器做一些调整(选择1号GPU): docker run --rm -it --net=host --gpus \"device=1\" gpt-academic bash # 从NVIDIA源,从而支持显卡运损(检查宿主的nvidia-smi中的cuda版本必须>=11.3) FROM nvidia/cuda:11.3.1-runtime-ubuntu20.04 @@ -14,6 +14,7 @@ RUN apt-get install -y git python python3 python-dev python3-dev --fix-missing RUN $useProxyNetwork curl cip.cc RUN sed -i '$ d' /etc/proxychains.conf RUN sed -i '$ d' /etc/proxychains.conf +# 在这里填写主机的代理协议(用于从github拉取代码) RUN echo "socks5 127.0.0.1 10880" >> /etc/proxychains.conf ARG useProxyNetwork=proxychains # # comment out above if you do not need proxy network | 如果不需要翻墙 - 从此行向上删除 @@ -21,14 +22,15 @@ ARG useProxyNetwork=proxychains # use python3 as the system default python RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.8 - +# 下载pytorch +RUN $useProxyNetwork python3 -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu113 # 下载分支 WORKDIR /gpt RUN $useProxyNetwork git clone https://github.com/binary-husky/chatgpt_academic.git WORKDIR /gpt/chatgpt_academic RUN $useProxyNetwork python3 -m pip install -r requirements.txt RUN $useProxyNetwork python3 -m pip install -r request_llm/requirements_chatglm.txt -RUN $useProxyNetwork python3 -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu113 +RUN $useProxyNetwork python3 -m pip install -r request_llm/requirements_newbing.txt # 预热CHATGLM参数(非必要 可选步骤) RUN echo ' \n\ @@ -48,6 +50,7 @@ RUN python3 -c 'from check_proxy import warm_up_modules; warm_up_modules()' # 可同时填写多个API-KEY,支持openai的key和api2d的key共存,用英文逗号分割,例如API_KEY = "sk-openaikey1,fkxxxx-api2dkey2,........" # LLM_MODEL 是选择初始的模型 # LOCAL_MODEL_DEVICE 是选择chatglm等本地模型运行的设备,可选 cpu 和 cuda +# [说明: 以下内容与`config.py`一一对应,请查阅config.py来完成一下配置的填写] RUN echo ' \n\ API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,fkxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \n\ USE_PROXY = True \n\ diff --git a/docs/Dockerfile+JittorLLM b/docs/Dockerfile+JittorLLM new file mode 100644 index 0000000000000000000000000000000000000000..62dae31ccf9b38256a8bf6d1b9ce3fba64c015c1 --- /dev/null +++ b/docs/Dockerfile+JittorLLM @@ -0,0 +1,59 @@ +# How to build | 如何构建: docker build -t gpt-academic-jittor --network=host -f Dockerfile+ChatGLM . +# How to run | (1) 我想直接一键运行(选择0号GPU): docker run --rm -it --net=host --gpus \"device=0\" gpt-academic-jittor bash +# How to run | (2) 我想运行之前进容器做一些调整(选择1号GPU): docker run --rm -it --net=host --gpus \"device=1\" gpt-academic-jittor bash + +# 从NVIDIA源,从而支持显卡运损(检查宿主的nvidia-smi中的cuda版本必须>=11.3) +FROM nvidia/cuda:11.3.1-runtime-ubuntu20.04 +ARG useProxyNetwork='' +RUN apt-get update +RUN apt-get install -y curl proxychains curl g++ +RUN apt-get install -y git python python3 python-dev python3-dev --fix-missing + +# 配置代理网络(构建Docker镜像时使用) +# # comment out below if you do not need proxy network | 如果不需要翻墙 - 从此行向下删除 +RUN $useProxyNetwork curl cip.cc +RUN sed -i '$ d' /etc/proxychains.conf +RUN sed -i '$ d' /etc/proxychains.conf +# 在这里填写主机的代理协议(用于从github拉取代码) +RUN echo "socks5 127.0.0.1 10880" >> /etc/proxychains.conf +ARG useProxyNetwork=proxychains +# # comment out above if you do not need proxy network | 如果不需要翻墙 - 从此行向上删除 + + +# use python3 as the system default python +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.8 +# 下载pytorch +RUN $useProxyNetwork python3 -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu113 +# 下载分支 +WORKDIR /gpt +RUN $useProxyNetwork git clone https://github.com/binary-husky/chatgpt_academic.git -b jittor +WORKDIR /gpt/chatgpt_academic +RUN $useProxyNetwork python3 -m pip install -r requirements.txt +RUN $useProxyNetwork python3 -m pip install -r request_llm/requirements_chatglm.txt +RUN $useProxyNetwork python3 -m pip install -r request_llm/requirements_newbing.txt +RUN $useProxyNetwork python3 -m pip install -r request_llm/requirements_jittorllms.txt -i https://pypi.jittor.org/simple -I + +# 下载JittorLLMs +RUN $useProxyNetwork git clone https://github.com/binary-husky/JittorLLMs.git --depth 1 request_llm/jittorllms + +# 禁用缓存,确保更新代码 +ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache +RUN $useProxyNetwork git pull + +# 预热Tiktoken模块 +RUN python3 -c 'from check_proxy import warm_up_modules; warm_up_modules()' + +# 为chatgpt-academic配置代理和API-KEY (非必要 可选步骤) +# 可同时填写多个API-KEY,支持openai的key和api2d的key共存,用英文逗号分割,例如API_KEY = "sk-openaikey1,fkxxxx-api2dkey2,........" +# LLM_MODEL 是选择初始的模型 +# LOCAL_MODEL_DEVICE 是选择chatglm等本地模型运行的设备,可选 cpu 和 cuda +# [说明: 以下内容与`config.py`一一对应,请查阅config.py来完成一下配置的填写] +RUN echo ' \n\ +API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,fkxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \n\ +USE_PROXY = True \n\ +LLM_MODEL = "chatglm" \n\ +LOCAL_MODEL_DEVICE = "cuda" \n\ +proxies = { "http": "socks5h://localhost:10880", "https": "socks5h://localhost:10880", } ' >> config_private.py + +# 启动 +CMD ["python3", "-u", "main.py"] diff --git a/docs/GithubAction+ChatGLM+Moss b/docs/GithubAction+ChatGLM+Moss new file mode 100644 index 0000000000000000000000000000000000000000..ece19d64b055c90f0ea2b3275f99b8331cd364e9 --- /dev/null +++ b/docs/GithubAction+ChatGLM+Moss @@ -0,0 +1,30 @@ + +# 从NVIDIA源,从而支持显卡运损(检查宿主的nvidia-smi中的cuda版本必须>=11.3) +FROM nvidia/cuda:11.3.1-runtime-ubuntu20.04 +ARG useProxyNetwork='' +RUN apt-get update +RUN apt-get install -y curl proxychains curl gcc +RUN apt-get install -y git python python3 python-dev python3-dev --fix-missing + + +# use python3 as the system default python +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.8 +# 下载pytorch +RUN python3 -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu113 +# 下载分支 +WORKDIR /gpt +RUN git clone https://github.com/binary-husky/chatgpt_academic.git +WORKDIR /gpt/chatgpt_academic +RUN git clone https://github.com/OpenLMLab/MOSS.git request_llm/moss +RUN python3 -m pip install -r requirements.txt +RUN python3 -m pip install -r request_llm/requirements_moss.txt +RUN python3 -m pip install -r request_llm/requirements_chatglm.txt +RUN python3 -m pip install -r request_llm/requirements_newbing.txt + + + +# 预热Tiktoken模块 +RUN python3 -c 'from check_proxy import warm_up_modules; warm_up_modules()' + +# 启动 +CMD ["python3", "-u", "main.py"] diff --git a/docs/GithubAction+JittorLLMs b/docs/GithubAction+JittorLLMs new file mode 100644 index 0000000000000000000000000000000000000000..4f0e66ba86521f92caaaab34655a26bf75382fee --- /dev/null +++ b/docs/GithubAction+JittorLLMs @@ -0,0 +1,34 @@ +# 从NVIDIA源,从而支持显卡运损(检查宿主的nvidia-smi中的cuda版本必须>=11.3) +FROM nvidia/cuda:11.3.1-runtime-ubuntu20.04 +ARG useProxyNetwork='' +RUN apt-get update +RUN apt-get install -y curl proxychains curl g++ +RUN apt-get install -y git python python3 python-dev python3-dev --fix-missing + +# use python3 as the system default python +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.8 + +# 下载pytorch +RUN python3 -m pip install torch --extra-index-url https://download.pytorch.org/whl/cu113 + +# 下载分支 +WORKDIR /gpt +RUN git clone https://github.com/binary-husky/chatgpt_academic.git -b jittor +WORKDIR /gpt/chatgpt_academic +RUN python3 -m pip install -r requirements.txt +RUN python3 -m pip install -r request_llm/requirements_chatglm.txt +RUN python3 -m pip install -r request_llm/requirements_newbing.txt +RUN python3 -m pip install -r request_llm/requirements_jittorllms.txt -i https://pypi.jittor.org/simple -I + +# 下载JittorLLMs +RUN git clone https://github.com/binary-husky/JittorLLMs.git --depth 1 request_llm/jittorllms + +# 禁用缓存,确保更新代码 +ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache +RUN git pull + +# 预热Tiktoken模块 +RUN python3 -c 'from check_proxy import warm_up_modules; warm_up_modules()' + +# 启动 +CMD ["python3", "-u", "main.py"] diff --git a/docs/GithubAction+NoLocal b/docs/GithubAction+NoLocal new file mode 100644 index 0000000000000000000000000000000000000000..5c49b948121a0f5c1f1f9abd264d2673d375ad30 --- /dev/null +++ b/docs/GithubAction+NoLocal @@ -0,0 +1,20 @@ +# 此Dockerfile适用于“无本地模型”的环境构建,如果需要使用chatglm等本地模型,请参考 docs/Dockerfile+ChatGLM +# 如何构建: 先修改 `config.py`, 然后 docker build -t gpt-academic-nolocal -f docs/Dockerfile+NoLocal . +# 如何运行: docker run --rm -it --net=host gpt-academic-nolocal +FROM python:3.11 + +# 指定路径 +WORKDIR /gpt + +# 装载项目文件 +COPY . . + +# 安装依赖 +RUN pip3 install -r requirements.txt + + +# 可选步骤,用于预热模块 +RUN python3 -c 'from check_proxy import warm_up_modules; warm_up_modules()' + +# 启动 +CMD ["python3", "-u", "main.py"] diff --git a/docs/self_analysis.md b/docs/self_analysis.md index 28f6682c3bc70c884b31322350099b156e770bf0..c88e1e41217eb13a30269f933586f6c241fab38d 100644 --- a/docs/self_analysis.md +++ b/docs/self_analysis.md @@ -157,7 +157,7 @@ ## [22/31] 请对下面的程序文件做一个概述: H:\chatgpt_academic_resolve\crazy_functions\解析项目源代码.py -这个程序文件实现了对一个源代码项目进行分析的功能。其中,函数`解析项目本身`、`解析一个Python项目`、`解析一个C项目的头文件`、`解析一个C项目`、`解析一个Java项目`和`解析一个Rect项目`分别用于解析不同类型的项目。函数`解析源代码新`实现了对每一个源代码文件的分析,并将分析结果汇总,同时还实现了分组和迭代处理,提高了效率。最后,函数`write_results_to_file`将所有分析结果写入文件。中间,还用到了`request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency`和`request_gpt_model_in_new_thread_with_ui_alive`来完成请求和响应,并用`update_ui`实时更新界面。 +这个程序文件实现了对一个源代码项目进行分析的功能。其中,函数`解析项目本身`、`解析一个Python项目`、`解析一个C项目的头文件`、`解析一个C项目`、`解析一个Java项目`和`解析前端项目`分别用于解析不同类型的项目。函数`解析源代码新`实现了对每一个源代码文件的分析,并将分析结果汇总,同时还实现了分组和迭代处理,提高了效率。最后,函数`write_results_to_file`将所有分析结果写入文件。中间,还用到了`request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency`和`request_gpt_model_in_new_thread_with_ui_alive`来完成请求和响应,并用`update_ui`实时更新界面。 ## [23/31] 请对下面的程序文件做一个概述: H:\chatgpt_academic_resolve\crazy_functions\询问多个大语言模型.py diff --git a/docs/test_markdown_format.py b/docs/test_markdown_format.py new file mode 100644 index 0000000000000000000000000000000000000000..896f6f130c69f8a94d6f49feadf7091f0f23c2c9 --- /dev/null +++ b/docs/test_markdown_format.py @@ -0,0 +1,130 @@ +sample = """ +[1]: https://baike.baidu.com/item/%E8%B4%A8%E8%83%BD%E6%96%B9%E7%A8%8B/1884527 "质能方程(质能方程式)_百度百科" +[2]: https://www.zhihu.com/question/348249281 "如何理解质能方程 E=mc²? - 知乎" +[3]: https://zhuanlan.zhihu.com/p/32597385 "质能方程的推导与理解 - 知乎 - 知乎专栏" + +你好,这是必应。质能方程是描述质量与能量之间的当量关系的方程[^1^][1]。用tex格式,质能方程可以写成$$E=mc^2$$,其中$E$是能量,$m$是质量,$c$是光速[^2^][2] [^3^][3]。 +""" +import re + +def preprocess_newbing_out(s): + pattern = r'\^(\d+)\^' # 匹配^数字^ + pattern2 = r'\[(\d+)\]' # 匹配^数字^ + sub = lambda m: '\['+m.group(1)+'\]' # 将匹配到的数字作为替换值 + result = re.sub(pattern, sub, s) # 替换操作 + if '[1]' in result: + result += '


' + "
".join([re.sub(pattern2, sub, r) for r in result.split('\n') if r.startswith('[')]) + '
' + return result + + +def close_up_code_segment_during_stream(gpt_reply): + """ + 在gpt输出代码的中途(输出了前面的```,但还没输出完后面的```),补上后面的``` + + Args: + gpt_reply (str): GPT模型返回的回复字符串。 + + Returns: + str: 返回一个新的字符串,将输出代码片段的“后面的```”补上。 + + """ + if '```' not in gpt_reply: + return gpt_reply + if gpt_reply.endswith('```'): + return gpt_reply + + # 排除了以上两个情况,我们 + segments = gpt_reply.split('```') + n_mark = len(segments) - 1 + if n_mark % 2 == 1: + # print('输出代码片段中!') + return gpt_reply+'\n```' + else: + return gpt_reply + +import markdown +from latex2mathml.converter import convert as tex2mathml +from functools import wraps, lru_cache +def markdown_convertion(txt): + """ + 将Markdown格式的文本转换为HTML格式。如果包含数学公式,则先将公式转换为HTML格式。 + """ + pre = '
' + suf = '
' + if txt.startswith(pre) and txt.endswith(suf): + # print('警告,输入了已经经过转化的字符串,二次转化可能出问题') + return txt # 已经被转化过,不需要再次转化 + + markdown_extension_configs = { + 'mdx_math': { + 'enable_dollar_delimiter': True, + 'use_gitlab_delimiters': False, + }, + } + find_equation_pattern = r'\n', '') + return content + + + if ('$' in txt) and ('```' not in txt): # 有$标识的公式符号,且没有代码段```的标识 + # convert everything to html format + split = markdown.markdown(text='---') + convert_stage_1 = markdown.markdown(text=txt, extensions=['mdx_math', 'fenced_code', 'tables', 'sane_lists'], extension_configs=markdown_extension_configs) + convert_stage_1 = markdown_bug_hunt(convert_stage_1) + # re.DOTALL: Make the '.' special character match any character at all, including a newline; without this flag, '.' will match anything except a newline. Corresponds to the inline flag (?s). + # 1. convert to easy-to-copy tex (do not render math) + convert_stage_2_1, n = re.subn(find_equation_pattern, replace_math_no_render, convert_stage_1, flags=re.DOTALL) + # 2. convert to rendered equation + convert_stage_2_2, n = re.subn(find_equation_pattern, replace_math_render, convert_stage_1, flags=re.DOTALL) + # cat them together + return pre + convert_stage_2_1 + f'{split}' + convert_stage_2_2 + suf + else: + return pre + markdown.markdown(txt, extensions=['fenced_code', 'codehilite', 'tables', 'sane_lists']) + suf + + +sample = preprocess_newbing_out(sample) +sample = close_up_code_segment_during_stream(sample) +sample = markdown_convertion(sample) +with open('tmp.html', 'w', encoding='utf8') as f: + f.write(""" + + + My Website + + + + """) + f.write(sample) diff --git a/docs/translate_english.json b/docs/translate_english.json new file mode 100644 index 0000000000000000000000000000000000000000..181f53e31641a4a6ce22d582a8dea026727d9ecb --- /dev/null +++ b/docs/translate_english.json @@ -0,0 +1,1516 @@ +{ + "print亮黄": "PrintBrightYellow", + "print亮绿": "PrintBrightGreen", + "print亮红": "PrintBrightRed", + "print红": "PrintRed", + "print绿": "PrintGreen", + "print黄": "PrintYellow", + "print蓝": "PrintBlue", + "print紫": "PrintPurple", + "print靛": "PrintIndigo", + "print亮蓝": "PrintBrightBlue", + "print亮紫": "PrintBrightPurple", + "print亮靛": "PrintBrightIndigo", + "读文章写摘要": "ReadArticleWriteSummary", + "批量生成函数注释": "BatchGenerateFunctionComments", + "生成函数注释": "GenerateFunctionComments", + "解析项目本身": "ParseProjectItself", + "解析项目源代码": "ParseProjectSourceCode", + "解析一个Python项目": "ParsePythonProject", + "解析一个C项目的头文件": "ParseCProjectHeaderFiles", + "解析一个C项目": "ParseCProject", + "解析一个Golang项目": "ParseGolangProject", + "解析一个Rust项目": "ParseRustProject", + "解析一个Java项目": "ParseJavaProject", + "解析一个前端项目": "ParseFrontendProject", + "高阶功能模板函数": "HighOrderFunctionTemplateFunctions", + "高级功能函数模板": "AdvancedFunctionTemplate", + "全项目切换英文": "SwitchToEnglishForTheWholeProject", + "代码重写为全英文_多线程": "RewriteCodeToEnglish_MultiThreaded", + "Latex英文润色": "EnglishProofreadingForLatex", + "Latex全文润色": "FullTextProofreadingForLatex", + "同时问询": "SimultaneousInquiry", + "询问多个大语言模型": "InquiryMultipleLargeLanguageModels", + "解析一个Lua项目": "ParsingLuaProject", + "解析一个CSharp项目": "ParsingCSharpProject", + "总结word文档": "SummarizingWordDocuments", + "解析ipynb文件": "ParsingIpynbFiles", + "解析JupyterNotebook": "ParsingJupyterNotebook", + "对话历史存档": "ConversationHistoryArchive", + "载入对话历史存档": "LoadConversationHistoryArchive", + "删除所有本地对话历史记录": "DeleteAllLocalConversationHistoryRecords", + "Markdown英译中": "TranslateMarkdownFromEnglishToChinese", + "批量Markdown翻译": "BatchTranslateMarkdown", + "批量总结PDF文档": "BatchSummarizePDFDocuments", + "批量总结PDF文档pdfminer": "BatchSummarizePDFDocumentsUsingPdfminer", + "批量翻译PDF文档": "BatchTranslatePDFDocuments", + "批量翻译PDF文档_多线程": "BatchTranslatePDFDocuments_MultiThreaded", + "谷歌检索小助手": "GoogleSearchAssistant", + "理解PDF文档内容标准文件输入": "UnderstandPdfDocumentContentStandardFileInput", + "理解PDF文档内容": "UnderstandPdfDocumentContent", + "Latex中文润色": "LatexChineseProofreading", + "Latex中译英": "LatexChineseToEnglish", + "Latex全文翻译": "LatexFullTextTranslation", + "Latex英译中": "LatexEnglishToChinese", + "Markdown中译英": "MarkdownChineseToEnglish", + "下载arxiv论文并翻译摘要": "DownloadArxivPaperAndTranslateAbstract", + "下载arxiv论文翻译摘要": "DownloadArxivPaperTranslateAbstract", + "连接网络回答问题": "ConnectToNetworkToAnswerQuestions", + "联网的ChatGPT": "ChatGPTConnectedToNetwork", + "解析任意code项目": "ParseAnyCodeProject", + "同时问询_指定模型": "InquireSimultaneously_SpecifiedModel", + "图片生成": "ImageGeneration", + "test_解析ipynb文件": "Test_ParseIpynbFile", + "把字符太少的块清除为回车": "ClearBlocksWithTooFewCharactersToNewline", + "清理多余的空行": "CleanUpExcessBlankLines", + "合并小写开头的段落块": "MergeLowercaseStartingParagraphBlocks", + "多文件润色": "ProofreadMultipleFiles", + "多文件翻译": "TranslateMultipleFiles", + "解析docx": "ParseDocx", + "解析PDF": "ParsePDF", + "解析Paper": "ParsePaper", + "ipynb解释": "IpynbExplanation", + "解析源代码新": "ParsingSourceCodeNew", + "避免代理网络产生意外污染": "Avoid unexpected pollution caused by proxy networks", + "无": "None", + "查询代理的地理位置": "Query the geographic location of the proxy", + "返回的结果是": "The returned result is", + "代理配置": "Proxy configuration", + "代理所在地": "Location of the proxy", + "未知": "Unknown", + "IP查询频率受限": "IP query frequency is limited", + "代理所在地查询超时": "Timeout when querying the location of the proxy", + "代理可能无效": "Proxy may be invalid", + "一键更新协议": "One-click protocol update", + "备份和下载": "Backup and download", + "覆盖和重启": "Overwrite and restart", + "由于您没有设置config_private.py私密配置": "Since you have not set the config_private.py private configuration", + "现将您的现有配置移动至config_private.py以防止配置丢失": "Now move your existing configuration to config_private.py to prevent configuration loss", + "另外您可以随时在history子文件夹下找回旧版的程序": "In addition, you can always retrieve the old version of the program in the history subfolder", + "代码已经更新": "Code has been updated", + "即将更新pip包依赖……": "Will update pip package dependencies soon...", + "pip包依赖安装出现问题": "Problem occurred during installation of pip package dependencies", + "需要手动安装新增的依赖库": "Need to manually install the newly added dependency library", + "然后在用常规的": "Then use the regular", + "的方式启动": "way to start", + "更新完成": "Update completed", + "您可以随时在history子文件夹下找回旧版的程序": "You can always retrieve the old version of the program in the history subfolder", + "5s之后重启": "Restart after 5 seconds", + "假如重启失败": "If restart fails", + "您可能需要手动安装新增的依赖库": "You may need to manually install new dependencies", + "查询版本和用户意见": "Check version and user feedback", + "新功能": "New features", + "新版本可用": "New version available", + "新版本": "New version", + "当前版本": "Current version", + "Github更新地址": "Github update address", + "是否一键更新代码": "Update code with one click?", + "Y+回车=确认": "Y+Enter=Confirm", + "输入其他/无输入+回车=不更新": "Enter other/No input+Enter=No update", + "更新失败": "Update failed", + "自动更新程序": "Automatic update program", + "已禁用": "Disabled", + "正在执行一些模块的预热": "Some modules are being preheated", + "模块预热": "Module preheating", + "例如": "For example", + "此key无效": "This key is invalid", + "可同时填写多个API-KEY": "Multiple API-KEYs can be filled in at the same time", + "用英文逗号分割": "Separated by commas", + "改为True应用代理": "Change to True to apply proxy", + "如果直接在海外服务器部署": "If deployed directly on overseas servers", + "此处不修改": "Do not modify here", + "填写格式是": "Format for filling in is", + "协议": "Protocol", + "地址": "Address", + "端口": "Port", + "填写之前不要忘记把USE_PROXY改成True": "Don't forget to change USE_PROXY to True before filling in", + "常见协议无非socks5h/http": "Common protocols are nothing but socks5h/http", + "例如 v2**y 和 ss* 的默认本地协议是socks5h": "For example, the default local protocol for v2**y and ss* is socks5h", + "而cl**h 的默认本地协议是http": "While the default local protocol for cl**h is http", + "懂的都懂": "Those who understand, understand", + "不懂就填localhost或者127.0.0.1肯定错不了": "If you don't understand, just fill in localhost or 127.0.0.1 and you won't go wrong", + "localhost意思是代理软件安装在本机上": "localhost means that the proxy software is installed on the local machine", + "在代理软件的设置里找": "Look for it in the settings of the proxy software", + "虽然不同的代理软件界面不一样": "Although the interface of different proxy software is different", + "但端口号都应该在最显眼的位置上": "But the port number should be in the most prominent position", + "代理网络的地址": "Address of the proxy network", + "打开你的*学*网软件查看代理的协议": "Open your *learning* software to view the proxy protocol", + "、地址": "and address", + "和端口": "and port", + "多线程函数插件中": "In the multi-threaded function plugin", + "默认允许多少路线程同时访问OpenAI": "How many threads are allowed to access OpenAI at the same time by default", + "Free trial users的限制是每分钟3次": "The limit for free trial users is 3 times per minute", + "Pay-as-you-go users的限制是每分钟3500次": "The limit for Pay-as-you-go users is 3500 times per minute", + "一言以蔽之": "In short", + "免费用户填3": "Free users should fill in 3", + "设置用户名和密码": "Set username and password", + "相关功能不稳定": "Related functions are unstable", + "与gradio版本和网络都相关": "Related to gradio version and network", + "如果本地使用不建议加这个": "Not recommended to add this for local use", + "重新URL重新定向": "Redirect URL", + "实现更换API_URL的作用": "Realize the function of changing API_URL", + "常规情况下": "Under normal circumstances", + "不要修改!!": "Do not modify!!", + "高危设置!通过修改此设置": "High-risk setting! By modifying this setting", + "您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!": "You will completely expose your API-KEY and conversation privacy to the middleman you set!", + "如果需要在二级路径下运行": "If you need to run under the second-level path", + "需要配合修改main.py才能生效!": "Need to be modified in conjunction with main.py to take effect!", + "如果需要使用newbing": "If you need to use newbing", + "把newbing的长长的cookie放到这里": "Put the long cookie of newbing here", + "sk-此处填API密钥": "sk-Fill in API key here", + "默认按钮颜色是 secondary": "The default button color is secondary", + "前言": "Preface", + "后语": "Postscript", + "按钮颜色": "Button color", + "预处理": "Preprocessing", + "清除换行符": "Remove line breaks", + "英语学术润色": "English academic polishing", + "中文学术润色": "Chinese academic polishing", + "查找语法错误": "Find syntax errors", + "中译英": "Chinese to English translation", + "学术中英互译": "Academic Chinese-English Translation", + "英译中": "English to Chinese translation", + "找图片": "Find image", + "解释代码": "Explain code", + "作为一名中文学术论文写作改进助理": "As a Chinese academic paper writing improvement assistant", + "你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性": "Your task is to improve the spelling, grammar, clarity, conciseness and overall readability of the provided text", + "同时分解长句": "Also, break down long sentences", + "减少重复": "Reduce repetition", + "并提供改进建议": "And provide improvement suggestions", + "请只提供文本的更正版本": "Please only provide corrected versions of the text", + "避免包括解释": "Avoid including explanations", + "请编辑以下文本": "Please edit the following text", + "翻译成地道的中文": "Translate into authentic Chinese", + "我需要你找一张网络图片": "I need you to find a web image", + "使用Unsplash API": "Use Unsplash API", + "英语关键词": "English keywords", + "获取图片URL": "Get image URL", + "然后请使用Markdown格式封装": "Then please wrap it in Markdown format", + "并且不要有反斜线": "And do not use backslashes", + "不要用代码块": "Do not use code blocks", + "现在": "Now", + "请按以下描述给我发送图片": "Please send me the image following the description below", + "请解释以下代码": "Please explain the following code", + "HotReload 的意思是热更新": "HotReload means hot update", + "修改函数插件后": "After modifying the function plugin", + "不需要重启程序": "No need to restart the program", + "代码直接生效": "The code takes effect directly", + "第一组插件": "First group of plugins", + "调用时": "When calling", + "唤起高级参数输入区": "Invoke the advanced parameter input area", + "默认False": "Default is False", + "高级参数输入区的显示提示": "Display prompt in the advanced parameter input area", + "加入下拉菜单中": "Add to the drop-down menu", + "修改函数插件代码后": "After modifying the function plugin code", + "第二组插件": "Second group of plugins", + "经过充分测试": "Fully tested", + "第三组插件": "Third group of plugins", + "尚未充分测试的函数插件": "Function plugins that have not been fully tested yet", + "放在这里": "Put it here", + "第n组插件": "Nth group of plugins", + "解析整个Python项目": "Parse the entire Python project", + "先上传存档或输入路径": "Upload archive or enter path first", + "请谨慎操作": "Please operate with caution", + "测试功能": "Test function", + "解析Jupyter Notebook文件": "Parse Jupyter Notebook files", + "批量总结Word文档": "Batch summarize Word documents", + "解析整个C++项目头文件": "Parse the entire C++ project header file", + "解析整个C++项目": "Parse the entire C++ project", + "解析整个Go项目": "Parse the entire Go project", + "解析整个Rust项目": "Parse the entire Go project", + "解析整个Java项目": "Parse the entire Java project", + "解析整个前端项目": "Parse the entire front-end project", + "css等": "CSS, etc.", + "解析整个Lua项目": "Parse the entire Lua project", + "解析整个CSharp项目": "Parse the entire C# project", + "读Tex论文写摘要": "Read Tex paper and write abstract", + "Markdown/Readme英译中": "Translate Markdown/Readme from English to Chinese", + "保存当前的对话": "Save the current conversation", + "多线程Demo": "Multithreading demo", + "解析此项目本身": "Parse this project itself", + "源码自译解": "Translate the source code", + "老旧的Demo": "Old demo", + "把本项目源代码切换成全英文": "Switch the source code of this project to English", + "插件demo": "Plugin demo", + "历史上的今天": "Today in history", + "若输入0": "If 0 is entered", + "则不解析notebook中的Markdown块": "Do not parse Markdown blocks in the notebook", + "多线程": "Multithreading", + "询问多个GPT模型": "Inquire multiple GPT models", + "谷歌学术检索助手": "Google Scholar search assistant", + "输入谷歌学术搜索页url": "Enter the URL of Google Scholar search page", + "模仿ChatPDF": "Imitate ChatPDF", + "英文Latex项目全文润色": "English Latex project full text proofreading", + "输入路径或上传压缩包": "Input path or upload compressed package", + "中文Latex项目全文润色": "Chinese Latex project full text proofreading", + "Latex项目全文中译英": "Latex project full text translation from Chinese to English", + "Latex项目全文英译中": "Latex project full text translation from English to Chinese", + "批量MarkdownChineseToEnglish": "Batch Markdown Chinese to English", + "一键DownloadArxivPaperAndTranslateAbstract": "One-click Download Arxiv Paper and Translate Abstract", + "先在input输入编号": "Enter the number in input first", + "如1812.10695": "e.g. 1812.10695", + "先输入问题": "Enter the question first", + "再点击按钮": "Then click the button", + "需要访问谷歌": "Access to Google is required", + "手动指定和筛选源代码文件类型": "Manually specify and filter the source code file type", + "输入时用逗号隔开": "Separate with commas when entering", + "*代表通配符": "* stands for wildcard", + "加了^代表不匹配": "Adding ^ means not matching", + "不输入代表全部匹配": "Not entering means matching all", + "手动指定询问哪些模型": "Manually specify which models to ask", + "支持任意数量的llm接口": "Support any number of llm interfaces", + "用&符号分隔": "Separate with & symbol", + "例如chatglm&gpt-3.5-turbo&api2d-gpt-4": "e.g. chatglm&gpt-3.5-turbo&api2d-gpt-4", + "先切换模型到openai或api2d": "Switch the model to openai or api2d first", + "在这里输入分辨率": "Enter the resolution here", + "如256x256": "e.g. 256x256", + "默认": "Default", + "建议您复制一个config_private.py放自己的秘密": "We suggest you to copy a config_private.py file to keep your secrets, such as API and proxy URLs, from being accidentally uploaded to Github and seen by others.", + "如API和代理网址": "Such as API and proxy URLs", + "避免不小心传github被别人看到": "Avoid being accidentally uploaded to Github and seen by others", + "如果WEB_PORT是-1": "If WEB_PORT is -1", + "则随机选取WEB端口": "then a random port will be selected for WEB", + "问询记录": "Inquiry record", + "python 版本建议3.9+": "Python version recommended 3.9+", + "越新越好": "The newer the better", + "一些普通功能模块": "Some common functional modules", + "高级函数插件": "Advanced function plugins", + "处理markdown文本格式的转变": "Transformation of markdown text format", + "做一些外观色彩上的调整": "Make some adjustments in appearance and color", + "代理与自动更新": "Proxy and automatic update", + "功能区显示开关与功能区的互动": "Interaction between display switch and function area", + "整理反复出现的控件句柄组合": "Organize repeated control handle combinations", + "提交按钮、重置按钮": "Submit button, reset button", + "基础功能区的回调函数注册": "Registration of callback functions in basic function area", + "文件上传区": "File upload area", + "接收文件后与chatbot的互动": "Interaction with chatbot after receiving files", + "函数插件-固定按钮区": "Function plugin - fixed button area", + "函数插件-下拉菜单与随变按钮的互动": "Interaction between dropdown menu and dynamic button in function plugin", + "是否唤起高级插件参数区": "Whether to call the advanced plugin parameter area", + "随变按钮的回调函数注册": "Registration of callback functions for dynamic buttons", + "终止按钮的回调函数注册": "Callback function registration for the stop button", + "gradio的inbrowser触发不太稳定": "In-browser triggering of gradio is not very stable", + "回滚代码到原始的浏览器打开函数": "Roll back code to the original browser open function", + "打开浏览器": "Open browser", + "ChatGPT 学术优化": "ChatGPT academic optimization", + "代码开源和更新": "Code open source and updates", + "地址🚀": "Address 🚀", + "感谢热情的": "Thanks to the enthusiastic", + "开发者们❤️": "Developers ❤️", + "所有问询记录将自动保存在本地目录./gpt_log/chat_secrets.log": "All inquiry records will be automatically saved in the local directory ./gpt_log/chat_secrets.log", + "请注意自我隐私保护哦!": "Please pay attention to self-privacy protection!", + "当前模型": "Current model", + "输入区": "Input area", + "提交": "Submit", + "重置": "Reset", + "停止": "Stop", + "清除": "Clear", + "按Enter提交": "Submit by pressing Enter", + "按Shift+Enter换行": "Press Shift+Enter to line break", + "基础功能区": "Basic function area", + "函数插件区": "Function plugin area", + "注意": "Attention", + "以下“红颜色”标识的函数插件需从输入区读取路径作为参数": "The function plugins marked in 'red' below need to read the path from the input area as a parameter", + "更多函数插件": "More function plugins", + "打开插件列表": "Open plugin list", + "高级参数输入区": "Advanced parameter input area", + "这里是特殊函数插件的高级参数输入区": "Here is the advanced parameter input area for special function plugins", + "请先从插件列表中选择": "Please select from the plugin list first", + "点击展开“文件上传区”": "Click to expand the 'file upload area'", + "上传本地文件可供红色函数插件调用": "Upload local files for red function plugins to use", + "任何文件": "Any file", + "但推荐上传压缩文件": "But it is recommended to upload compressed files", + "更换模型 & SysPrompt & 交互界面布局": "Change model & SysPrompt & interactive interface layout", + "底部输入区": "Bottom input area", + "输入清除键": "Input clear key", + "插件参数区": "Plugin parameter area", + "显示/隐藏功能区": "Show/hide function area", + "更换LLM模型/请求源": "Change LLM model/request source", + "备选输入区": "Alternative input area", + "输入区2": "Input area 2", + "已重置": "Reset", + "插件": "Plugin", + "的高级参数说明": "Advanced parameter description for plugin", + "没有提供高级参数功能说明": "No advanced parameter function description provided", + "不需要高级参数": "No advanced parameters needed", + "如果浏览器没有自动打开": "If the browser does not open automatically", + "请复制并转到以下URL": "Please copy and go to the following URL", + "亮色主题": "Light theme", + "暗色主题": "Dark theme", + "一-鿿": "One-click", + "GPT输出格式错误": "GPT output format error", + "稍后可能需要再试一次": "May need to try again later", + "gradio可用颜色列表": "Gradio available color list", + "石板色": "Slate color", + "灰色": "Gray", + "锌色": "Zinc color", + "中性色": "Neutral color", + "石头色": "Stone color", + "红色": "Red", + "橙色": "Orange", + "琥珀色": "Amber", + "黄色": "Yellow", + "酸橙色": "Lime color", + "绿色": "Green", + "祖母绿": "Turquoise", + "青蓝色": "Cyan blue", + "青色": "Cyan", + "天蓝色": "Sky blue", + "蓝色": "Blue", + "靛蓝色": "Indigo", + "紫罗兰色": "Violet", + "紫色": "Purple", + "洋红色": "Magenta", + "粉红色": "Pink", + "玫瑰色": "Rose", + "添加一个萌萌的看板娘": "Add a cute mascot", + "gradio版本较旧": "Gradio version is outdated", + "不能自定义字体和颜色": "Cannot customize font and color", + "引入一个有cookie的chatbot": "Introduce a chatbot with cookies", + "刷新界面": "Refresh the page", + "稍微留一点余地": "Leave a little room", + "否则在回复时会因余量太少出问题": "Otherwise, there will be problems with insufficient space when replying", + "这个bug没找到触发条件": "The trigger condition for this bug has not been found", + "暂时先这样顶一下": "Temporarily handle it this way", + "使用 lru缓存 加快转换速度": "Use LRU cache to speed up conversion", + "输入了已经经过转化的字符串": "Input a string that has already been converted", + "已经被转化过": "Has already been converted", + "不需要再次转化": "No need to convert again", + "有$标识的公式符号": "Formula symbol with $ sign", + "且没有代码段": "And there is no code section", + "的标识": "Identifier of", + "排除了以上两个情况": "Exclude the above two cases", + "我们": "We", + "输入部分太自由": "The input part is too free", + "预处理一波": "Preprocess it", + "当代码输出半截的时候": "When the code output is halfway", + "试着补上后个": "Try to fill in the latter", + "第三方库": "Third-party library", + "需要预先pip install rarfile": "Need to pip install rarfile in advance", + "此外": "In addition", + "Windows上还需要安装winrar软件": "WinRAR software needs to be installed on Windows", + "配置其Path环境变量": "Configure its Path environment variable", + "需要预先pip install py7zr": "Need to pip install py7zr in advance", + "随机负载均衡": "Random load balancing", + "优先级1. 获取环境变量作为配置": "Priority 1. Get environment variables as configuration", + "读取默认值作为数据类型转换的参考": "Read the default value as a reference for data type conversion", + "优先级2. 获取config_private中的配置": "Priority 2. Get the configuration in config_private", + "优先级3. 获取config中的配置": "Priority 3. Get the configuration in config", + "在读取API_KEY时": "When reading API_KEY", + "检查一下是不是忘了改config": "Check if you forgot to change the config", + "当输入部分的token占比小于限制的3/4时": "When the token proportion of the input part is less than 3/4 of the limit", + "裁剪时": "When trimming", + "1. 把input的余量留出来": "1. Leave the surplus of input", + "2. 把输出用的余量留出来": "2. Leave the surplus used for output", + "3. 如果余量太小了": "3. If the surplus is too small", + "直接清除历史": "Clear the history directly", + "当输入部分的token占比": "When the token proportion of the input part", + "限制的3/4时": "is 3/4 of the limit", + "截断时的颗粒度": "Granularity when truncating", + "第一部分": "First part", + "函数插件输入输出接驳区": "Function plugin input and output docking area", + "带Cookies的Chatbot类": "Chatbot class with cookies", + "为实现更多强大的功能做基础": "Laying the foundation for implementing more powerful functions", + "装饰器函数": "Decorator function", + "用于重组输入参数": "Used to restructure input parameters", + "改变输入参数的顺序与结构": "Change the order and structure of input parameters", + "刷新界面用 yield from update_ui": "Refresh the interface using yield from update_ui", + "将插件中出的所有问题显示在界面上": "Display all questions from the plugin on the interface", + "实现插件的热更新": "Implement hot update of the plugin", + "打印traceback": "Print traceback", + "为了安全而隐藏绝对地址": "Hide absolute address for security reasons", + "正常": "Normal", + "刷新用户界面": "Refresh the user interface", + "在传递chatbot的过程中不要将其丢弃": "Do not discard it when passing the chatbot", + "必要时": "If necessary", + "可用clear将其清空": "It can be cleared with clear if necessary", + "然后用for+append循环重新赋值": "Then reassign with for+append loop", + "捕捉函数f中的异常并封装到一个生成器中返回": "Capture exceptions in function f and encapsulate them into a generator to return", + "并显示到聊天当中": "And display it in the chat", + "插件调度异常": "Plugin scheduling exception", + "异常原因": "Exception reason", + "实验性函数调用出错": "Experimental function call error", + "当前代理可用性": "Current proxy availability", + "异常": "Exception", + "将文本按照段落分隔符分割开": "Split the text into paragraphs according to the paragraph separator", + "生成带有段落标签的HTML代码": "Generate HTML code with paragraph tags", + "用多种方式组合": "Combine in various ways", + "将markdown转化为好看的html": "Convert markdown to nice-looking HTML", + "接管gradio默认的markdown处理方式": "Take over the default markdown handling of gradio", + "处理文件的上传": "Handle file uploads", + "自动解压": "Automatically decompress", + "将生成的报告自动投射到文件上传区": "Automatically project the generated report to the file upload area", + "当历史上下文过长时": "Automatically truncate when the historical context is too long", + "自动截断": "Automatic truncation", + "获取设置": "Get settings", + "根据当前的模型类别": "According to the current model category", + "抽取可用的api-key": "Extract available API keys", + "* 此函数未来将被弃用": "* This function will be deprecated in the future", + "不详": "Unknown", + "将对话记录history以Markdown格式写入文件中": "Write the conversation record history to a file in Markdown format", + "如果没有指定文件名": "If no file name is specified", + "则使用当前时间生成文件名": "Generate a file name using the current time", + "chatGPT分析报告": "chatGPT analysis report", + "chatGPT 分析报告": "chatGPT analysis report", + "以上材料已经被写入": "The above materials have been written", + "向chatbot中添加错误信息": "Add error information to the chatbot", + "将Markdown格式的文本转换为HTML格式": "Convert Markdown format text to HTML format", + "如果包含数学公式": "If it contains mathematical formulas", + "则先将公式转换为HTML格式": "Convert the formula to HTML format first", + "解决一个mdx_math的bug": "Fix a bug in mdx_math", + "单$包裹begin命令时多余": "Redundant when wrapping begin command with single $", + "在gpt输出代码的中途": "In the middle of outputting code with GPT", + "输出了前面的": "Output the front part", + "但还没输出完后面的": "But haven't output the back part yet", + "补上后面的": "Complete the back part", + "GPT模型返回的回复字符串": "Reply string returned by GPT model", + "返回一个新的字符串": "Return a new string", + "将输出代码片段的“后面的": "Append the back part of output code snippet", + "”补上": "to it", + "将输入和输出解析为HTML格式": "Parse input and output as HTML format", + "将y中最后一项的输入部分段落化": "Paragraphize the input part of the last item in y", + "并将输出部分的Markdown和数学公式转换为HTML格式": "And convert the output part of Markdown and math formulas to HTML format", + "返回当前系统中可用的未使用端口": "Return an available unused port in the current system", + "需要安装pip install rarfile来解压rar文件": "Need to install pip install rarfile to extract rar files", + "需要安装pip install py7zr来解压7z文件": "Need to install pip install py7zr to extract 7z files", + "当文件被上传时的回调函数": "Callback function when a file is uploaded", + "我上传了文件": "I uploaded a file", + "请查收": "Please check", + "收到以下文件": "Received the following files", + "调用路径参数已自动修正到": "The call path parameter has been automatically corrected to", + "现在您点击任意“红颜色”标识的函数插件时": "Now when you click any function plugin with a 'red' label", + "以上文件将被作为输入参数": "The above files will be used as input parameters", + "汇总报告如何远程获取": "How to remotely access the summary report", + "汇总报告已经添加到右侧“文件上传区”": "The summary report has been added to the 'file upload area' on the right", + "可能处于折叠状态": "It may be in a collapsed state", + "检测到": "Detected", + "个": "items", + "您提供的api-key不满足要求": "The api-key you provided does not meet the requirements", + "不包含任何可用于": "Does not contain any that can be used for", + "的api-key": "api-key", + "您可能选择了错误的模型或请求源": "You may have selected the wrong model or request source", + "环境变量可以是": "Environment variables can be", + "优先": "preferred", + "也可以直接是": "or can be directly", + "例如在windows cmd中": "For example, in windows cmd", + "既可以写": "it can be written as", + "也可以写": "or as", + "尝试加载": "Attempting to load", + "默认值": "Default value", + "修正值": "Corrected value", + "环境变量": "Environment variable", + "不支持通过环境变量设置!": "Setting through environment variables is not supported!", + "加载失败!": "Loading failed!", + "成功读取环境变量": "Successfully read environment variables", + "本项目现已支持OpenAI和API2D的api-key": "This project now supports api-keys for OpenAI and API2D", + "也支持同时填写多个api-key": "It also supports filling in multiple api-keys at the same time", + "您既可以在config.py中修改api-key": "You can modify the api-key in config.py", + "也可以在问题输入区输入临时的api-key": "You can also enter a temporary api-key in the question input area", + "然后回车键提交后即可生效": "After submitting with the enter key, it will take effect", + "您的 API_KEY 是": "Your API_KEY is", + "*** API_KEY 导入成功": "*** API_KEY imported successfully", + "请在config文件中修改API密钥之后再运行": "Please modify the API key in the config file before running", + "网络代理状态": "Network proxy status", + "未配置": "Not configured", + "无代理状态下很可能无法访问OpenAI家族的模型": "It is very likely that you cannot access OpenAI's models without a proxy", + "建议": "Suggestion", + "检查USE_PROXY选项是否修改": "Check if the USE_PROXY option has been modified", + "已配置": "Configured", + "配置信息如下": "Configuration information is as follows", + "proxies格式错误": "Proxies format error", + "请注意proxies选项的格式": "Please note the format of the proxies option", + "不要遗漏括号": "Do not miss the parentheses", + "这段代码定义了一个名为DummyWith的空上下文管理器": "This code defines an empty context manager named DummyWith", + "它的作用是……额……就是不起作用": "Its purpose is...um...to not do anything", + "即在代码结构不变得情况下取代其他的上下文管理器": "That is, to replace other context managers without changing the code structure", + "上下文管理器是一种Python对象": "Context managers are a type of Python object", + "用于与with语句一起使用": "Used in conjunction with the with statement", + "以确保一些资源在代码块执行期间得到正确的初始化和清理": "To ensure that some resources are properly initialized and cleaned up during code block execution", + "上下文管理器必须实现两个方法": "Context managers must implement two methods", + "分别为 __enter__": "They are __enter__", + "和 __exit__": "and __exit__", + "在上下文执行开始的情况下": "At the beginning of the context execution", + "方法会在代码块被执行前被调用": "The method is called before the code block is executed", + "而在上下文执行结束时": "While at the end of the context execution", + "方法则会被调用": "The method is called", + "把gradio的运行地址更改到指定的二次路径上": "Change the running address of Gradio to the specified secondary path", + "通过裁剪来缩短历史记录的长度": "Shorten the length of the history by trimming", + "此函数逐渐地搜索最长的条目进行剪辑": "This function gradually searches for the longest entry to clip", + "直到历史记录的标记数量降低到阈值以下": "Until the number of history markers is reduced to below the threshold", + "应急食品是“原神”游戏中的角色派蒙的外号": "Emergency Food is the nickname of the character Paimon in the game Genshin Impact", + "安全第一条": "Safety first", + "后面两句是": "The next two sentences are", + "亲人两行泪": "Two lines of tears for loved ones", + "test_解析一个Cpp项目": "test_Parse a Cpp project", + "test_联网回答问题": "test_Answer questions online", + "这是什么": "What is this?", + "这个文件用于函数插件的单元测试": "This file is used for unit testing of function plugins", + "运行方法 python crazy_functions/crazy_functions_test.py": "Run the command 'python crazy_functions/crazy_functions_test.py'", + "AutoGPT是什么": "What is AutoGPT?", + "当前问答": "Current Q&A", + "程序完成": "Program completed", + "回车退出": "Press Enter to exit", + "退出": "Exit", + "当 输入部分的token占比 小于 全文的一半时": "When the proportion of tokens in the input part is less than half of the entire text", + "只裁剪历史": "Trim only history", + "用户反馈": "User feedback", + "第一种情况": "First scenario", + "顺利完成": "Completed smoothly", + "第二种情况": "Second scenario", + "Token溢出": "Token overflow", + "选择处理": "Choose processing", + "尝试计算比例": "Attempt to calculate ratio", + "尽可能多地保留文本": "Retain text as much as possible", + "返回重试": "Return and retry", + "选择放弃": "Choose to give up", + "放弃": "Give up", + "第三种情况": "Third scenario", + "其他错误": "Other errors", + "重试几次": "Retry several times", + "提交任务": "Submit task", + "yield一次以刷新前端页面": "Yield once to refresh the front-end page", + "“喂狗”": "Feed the dog", + "看门狗": "Watchdog", + "如果最后成功了": "If successful in the end", + "则删除报错信息": "Delete error message", + "读取配置文件": "Read configuration file", + "屏蔽掉 chatglm的多线程": "Disable chatglm's multi-threading", + "可能会导致严重卡顿": "May cause serious lag", + "跨线程传递": "Cross-thread communication", + "子线程任务": "Sub-thread task", + "也许等待十几秒后": "Perhaps after waiting for more than ten seconds", + "情况会好转": "The situation will improve", + "开始重试": "Start retrying", + "异步任务开始": "Asynchronous task starts", + "更好的UI视觉效果": "Better UI visual effects", + "每个线程都要“喂狗”": "Each thread needs to \"feed the dog\"", + "在前端打印些好玩的东西": "Print some fun things in the front end", + "异步任务结束": "Asynchronous task ends", + "是否在结束时": "Whether to display the result on the interface when ending", + "在界面上显示结果": "Display the result on the interface", + "递归": "Recursion", + "列表递归接龙": "List recursion chaining", + "第1次尝试": "1st attempt", + "将双空行": "Use double blank lines as splitting points", + "作为切分点": "As a splitting point", + "第2次尝试": "2nd attempt", + "将单空行": "Use single blank lines", + "第3次尝试": "3rd attempt", + "将英文句号": "Use English periods", + "这个中文的句号是故意的": "This Chinese period is intentional", + "作为一个标识而存在": "Exists as an identifier", + "第4次尝试": "4th attempt", + "将中文句号": "Chinese period", + "第5次尝试": "5th attempt", + "没办法了": "No other way", + "随便切一下敷衍吧": "Cut it randomly and perfunctorily", + "Index 0 文本": "Index 0 Text", + "Index 1 字体": "Index 1 Font", + "Index 2 框框": "Index 2 Box", + "是否丢弃掉 不是正文的内容": "Whether to discard non-main text content", + "比正文字体小": "Smaller than main text font", + "如参考文献、脚注、图注等": "Such as references, footnotes, captions, etc.", + "小于正文的": "Less than main text", + "时": "When", + "判定为不是正文": "Determined as non-main text", + "有些文章的正文部分字体大小不是100%统一的": "In some articles, the font size of the main text is not 100% consistent", + "有肉眼不可见的小变化": "Small changes invisible to the naked eye", + "第 1 步": "Step 1", + "搜集初始信息": "Collect initial information", + "获取页面上的文本信息": "Get text information on the page", + "块元提取": "Block element extraction", + "第 2 步": "Step 2", + "获取正文主字体": "Get main text font", + "第 3 步": "Step 3", + "切分和重新整合": "Split and reassemble", + "尝试识别段落": "Attempt to identify paragraphs", + "单行 + 字体大": "Single line + Large font", + "尝试识别section": "Attempt to recognize section", + "第 4 步": "Step 4", + "乱七八糟的后处理": "Messy post-processing", + "清除重复的换行": "Remove duplicate line breaks", + "换行 -": "Line break -", + "双换行": "Double line break", + "第 5 步": "Step 5", + "展示分割效果": "Display segmentation effect", + "网络的远程文件": "Remote file on the network", + "直接给定文件": "Directly given file", + "本地路径": "Local path", + "递归搜索": "Recursive search", + "请求GPT模型同时维持用户界面活跃": "Request GPT model while keeping the user interface active", + "输入参数 Args": "Input parameter Args", + "以_array结尾的输入变量都是列表": "Input variables ending in _array are all lists", + "列表长度为子任务的数量": "The length of the list is the number of sub-tasks", + "执行时": "When executing", + "会把列表拆解": "The list will be broken down", + "放到每个子线程中分别执行": "And executed separately in each sub-thread", + "输入": "Input", + "展现在报告中的输入": "Input displayed in the report", + "借助此参数": "With the help of this parameter", + "在汇总报告中隐藏啰嗦的真实输入": "Hide verbose real input in the summary report", + "增强报告的可读性": "Enhance the readability of the report", + "GPT参数": "GPT parameters", + "浮点数": "Floating point number", + "用户界面对话窗口句柄": "Handle of the user interface dialog window", + "用于数据流可视化": "Used for data flow visualization", + "历史": "History", + "对话历史列表": "List of conversation history", + "系统输入": "System input", + "列表": "List", + "用于输入给GPT的前提提示": "Prompt for input to GPT", + "比如你是翻译官怎样怎样": "For example, if you are a translator, how to...", + "刷新时间间隔频率": "Refresh time interval frequency", + "建议低于1": "Suggested to be less than 1", + "不可高于3": "Cannot be higher than 3", + "仅仅服务于视觉效果": "Only serves for visual effects", + "是否自动处理token溢出的情况": "Whether to automatically handle token overflow", + "如果选择自动处理": "If selected to handle automatically", + "则会在溢出时暴力截断": "It will be forcefully truncated when overflow occurs", + "默认开启": "Default enabled", + "失败时的重试次数": "Number of retries when failed", + "输出 Returns": "Output Returns", + "输出": "Output", + "GPT返回的结果": "Result returned by GPT", + "检测到程序终止": "Program termination detected", + "警告": "Warning", + "文本过长将进行截断": "Text will be truncated if too long", + "Token溢出数": "Token overflow count", + "在执行过程中遭遇问题": "Encountered a problem during execution", + "重试中": "Retrying", + "请稍等": "Please wait", + "请求GPT模型的": "Requesting GPT model", + "版": "version", + "具备以下功能": "Features include", + "实时在UI上反馈远程数据流": "Real-time feedback of remote data streams on UI", + "使用线程池": "Using thread pool", + "可调节线程池的大小避免openai的流量限制错误": "The size of the thread pool can be adjusted to avoid openai traffic limit errors", + "处理中途中止的情况": "Handling mid-process interruptions", + "网络等出问题时": "When there are network issues", + "会把traceback和已经接收的数据转入输出": "Traceback and received data will be outputted", + "每个子任务的输入": "Input for each subtask", + "每个子任务展现在报告中的输入": "Input displayed in the report for each subtask", + "llm_kwargs参数": "llm_kwargs parameter", + "历史对话输入": "Historical conversation input", + "双层列表": "Double-layer list", + "第一层列表是子任务分解": "The first layer of the list is the decomposition of subtasks", + "第二层列表是对话历史": "The second layer of the list is the conversation history", + "最大线程数": "Maximum number of threads", + "如果子任务非常多": "If there are many subtasks", + "需要用此选项防止高频地请求openai导致错误": "Use this option to prevent frequent requests to OpenAI that may cause errors", + "数据流的显示最后收到的多少个字符": "Display the last few characters received in the data stream", + "是否在输入过长时": "Automatically truncate text when input is too long", + "自动缩减文本": "Automatically shorten the text", + "在结束时": "At the end", + "把完整输入-输出结果显示在聊天框": "Display the complete input-output results in the chat box", + "子任务失败时的重试次数": "Number of retries when a subtask fails", + "每个子任务的输出汇总": "Summary of output for each subtask", + "如果某个子任务出错": "If a subtask encounters an error", + "response中会携带traceback报错信息": "Traceback error information will be included in the response", + "方便调试和定位问题": "Facilitate debugging and problem locating", + "请开始多线程操作": "Please start multi-threaded operation", + "等待中": "Waiting", + "执行中": "Executing", + "已成功": "Successful", + "截断重试": "Truncated retry", + "线程": "Thread", + "此线程失败前收到的回答": "Answer received by this thread before failure", + "输入过长已放弃": "Input is too long and has been abandoned", + "OpenAI绑定信用卡可解除频率限制": "Binding a credit card to OpenAI can remove frequency restrictions", + "等待重试": "Waiting for retry", + "已失败": "Failed", + "多线程操作已经开始": "Multi-threaded operation has started", + "完成情况": "Completion status", + "存在一行极长的文本!": "There is an extremely long line of text!", + "当无法用标点、空行分割时": "When punctuation and blank lines cannot be used for separation", + "我们用最暴力的方法切割": "We use the most brutal method to cut", + "Tiktoken未知错误": "Tiktok unknown error", + "这个函数用于分割pdf": "This function is used to split PDF", + "用了很多trick": "Used a lot of tricks", + "逻辑较乱": "The logic is messy", + "效果奇好": "The effect is very good", + "**输入参数说明**": "**Input Parameter Description**", + "需要读取和清理文本的pdf文件路径": "The path of the PDF file that needs to be read and cleaned", + "**输出参数说明**": "**Output Parameter Description**", + "清理后的文本内容字符串": "Cleaned text content string", + "第一页清理后的文本内容列表": "List of cleaned text content on the first page", + "**函数功能**": "**Functionality**", + "读取pdf文件并清理其中的文本内容": "Read the PDF file and clean its text content", + "清理规则包括": "Cleaning rules include", + "提取所有块元的文本信息": "Extract text information from all block elements", + "并合并为一个字符串": "And merge into one string", + "去除短块": "Remove short blocks", + "字符数小于100": "Character count is less than 100", + "并替换为回车符": "And replace with a carriage return", + "合并小写字母开头的段落块并替换为空格": "Merge paragraph blocks that start with lowercase letters and replace with spaces", + "将每个换行符替换为两个换行符": "Replace each line break with two line breaks", + "使每个段落之间有两个换行符分隔": "Separate each paragraph with two line breaks", + "提取文本块主字体": "Main font of extracted text block", + "提取字体大小是否近似相等": "Whether the font sizes of extracted text are approximately equal", + "这个函数是用来获取指定目录下所有指定类型": "This function is used to get all files of a specified type in a specified directory", + "如.md": "such as .md", + "的文件": "files", + "并且对于网络上的文件": "and for files on the internet", + "也可以获取它": "it can also be obtained", + "下面是对每个参数和返回值的说明": "Below are explanations for each parameter and return value", + "参数": "Parameters", + "路径或网址": "Path or URL", + "表示要搜索的文件或者文件夹路径或网络上的文件": "Indicates the file or folder path to be searched or the file on the internet", + "字符串": "String", + "表示要搜索的文件类型": "Indicates the file type to be searched", + "默认是.md": "default is .md", + "返回值": "Return value", + "布尔值": "Boolean value", + "表示函数是否成功执行": "Indicates whether the function is executed successfully", + "文件路径列表": "List of file paths", + "里面包含以指定类型为后缀名的所有文件的绝对路径": "Contains the absolute paths of all files with the specified type as the suffix", + "表示文件所在的文件夹路径": "Indicates the folder path where the file is located", + "如果是网络上的文件": "If it is a file on the internet", + "就是临时文件夹的路径": "it is the path of the temporary folder", + "该函数详细注释已添加": "Detailed comments for this function have been added", + "请确认是否满足您的需要": "Please confirm if it meets your needs", + "读取Latex文件": "Read Latex file", + "删除其中的所有注释": "Remove all comments from it", + "定义注释的正则表达式": "Define the regular expression of comments", + "使用正则表达式查找注释": "Use regular expressions to find comments", + "并替换为空字符串": "And replace them with an empty string", + "记录删除注释后的文本": "Record the text after removing comments", + "拆分过长的latex文件": "Split long latex files", + "抽取摘要": "Extract abstract", + "单线": "Single line", + "获取文章meta信息": "Get article meta information", + "多线程润色开始": "Multithreading polishing begins", + "并行任务数量限制": "Parallel task number limit", + "最多同时执行5个": "Up to 5 can be executed at the same time", + "其他的排队等待": "Others are queued and waiting", + "整理结果": "Organize the results", + "基本信息": "Basic information", + "功能、贡献者": "Function, contributor", + "尝试导入依赖": "Attempt to import dependencies", + "如果缺少依赖": "If dependencies are missing", + "则给出安装建议": "Give installation suggestions", + "清空历史": "Clear history", + "以免输入溢出": "To avoid input overflow", + "将长文本分离开来": "Separate long text", + "以下是一篇学术论文中的一段内容": "The following is a paragraph from an academic paper", + "请将此部分润色以满足学术标准": "Please polish this section to meet academic standards", + "提高语法、清晰度和整体可读性": "Improve grammar, clarity, and overall readability", + "不要修改任何LaTeX命令": "Do not modify any LaTeX commands", + "例如\\section": "such as \\section", + "\\cite和方程式": "\\cite and equations", + "润色": "Polishing", + "你是一位专业的中文学术论文作家": "You are a professional Chinese academic paper writer", + "完成了吗": "Are you done?", + "函数插件功能": "Function plugin feature", + "对整个Latex项目进行润色": "Polish the entire Latex project", + "函数插件贡献者": "Function plugin contributor", + "解析项目": "Parsing project", + "导入软件依赖失败": "Failed to import software dependencies", + "使用该模块需要额外依赖": "Using this module requires additional dependencies", + "安装方法": "Installation method", + "空空如也的输入栏": "Empty input field", + "找不到本地项目或无权访问": "Cannot find local project or do not have access", + "找不到任何.tex文件": "Cannot find any .tex files", + "OpenAI所允许的最大并行过载": "Maximum parallel overload allowed by OpenAI", + "翻译": "Translation", + "对整个Latex项目进行翻译": "Translate the entire Latex project", + "提取摘要": "Extract abstract", + "下载PDF文档": "Download PDF document", + "翻译摘要等": "Translate abstract, etc.", + "写入文件": "Writing to file", + "重置文件的创建时间": "Resetting file creation time", + "下载编号": "Download number", + "自动定位": "Auto-locating", + "不能识别的URL!": "Unrecognized URL!", + "下载中": "Downloading", + "下载完成": "Download complete", + "正在获取文献名!": "Getting article name!", + "年份获取失败": "Failed to get year", + "authors获取失败": "Failed to get authors", + "获取成功": "Successfully retrieved", + "函数插件作者": "Function plugin author", + "正在提取摘要并下载PDF文档……": "Extracting abstract and downloading PDF document...", + "下载pdf文件未成功": "PDF file download unsuccessful", + "请你阅读以下学术论文相关的材料": "Please read the following academic paper related materials", + "翻译为中文": "Translate to Chinese", + "材料如下": "Materials are as follows", + "论文": "Paper", + "PDF文件也已经下载": "PDF file has also been downloaded", + "剩下的情况都开头除去": "Remove the beginning of the remaining situation", + "结尾除去一次": "Remove the end once", + "第1步": "Step 1", + "第2步": "Step 2", + "第3步": "Step 3", + "集合文件": "Collection file", + "第4步": "Step 4", + "随便显示点什么防止卡顿的感觉": "Display something randomly to prevent lagging", + "第5步": "Step 5", + "Token限制下的截断与处理": "Truncation and processing under Token restriction", + "第6步": "Step 6", + "任务函数": "Task function", + "分解代码文件": "Decompose code files", + "第7步": "Step 7", + "所有线程同时开始执行任务函数": "All threads start executing task functions simultaneously", + "第8步": "Step 8", + "循环轮询各个线程是否执行完毕": "Loop and poll whether each thread has finished executing", + "第9步": "Step 9", + "把结果写入文件": "Write the results to a file", + "这里其实不需要join了": "Join is not needed here", + "肯定已经都结束了": "They must have all finished", + "失败": "Failure", + "第10步": "Step 10", + "备份一个文件": "Backup a file", + "接下来请将以下代码中包含的所有中文转化为英文": "Please translate all Chinese in the following code into English", + "只输出转化后的英文代码": "Output only the translated English code", + "请用代码块输出代码": "Please output the code using code blocks", + "等待多线程操作": "Waiting for multi-threaded operations", + "中间过程不予显示": "Intermediate processes will not be displayed", + "聊天显示框的句柄": "Chat display box handle", + "用于显示给用户": "Displayed to the user", + "聊天历史": "Chat history", + "前情提要": "Context summary", + "给gpt的静默提醒": "Silent reminder to GPT", + "当前软件运行的端口号": "Current software running port number", + "这是什么功能": "What is this function", + "生成图像": "Generate image", + "请先把模型切换至gpt-xxxx或者api2d-xxxx": "Please switch the model to gpt-xxxx or api2d-xxxx first", + "如果中文效果不理想": "If the Chinese effect is not ideal", + "尝试Prompt": "Try Prompt", + "正在处理中": "Processing", + "图像中转网址": "Image transfer URL", + "中转网址预览": "Transfer URL preview", + "本地文件地址": "Local file address", + "本地文件预览": "Local file preview", + "chatGPT对话历史": "ChatGPT conversation history", + "对话历史": "Conversation history", + "对话历史写入": "Conversation history written", + "存档文件详情": "Archive file details", + "载入对话": "Load conversation", + "条": "条", + "上下文": "Context", + "保存当前对话": "Save current conversation", + "您可以调用“LoadConversationHistoryArchive”还原当下的对话": "You can call 'LoadConversationHistoryArchive' to restore the current conversation", + "警告!被保存的对话历史可以被使用该系统的任何人查阅": "Warning! The saved conversation history can be viewed by anyone using this system", + "gpt_log/**/chatGPT对话历史*.html": "gpt_log/**/chatGPT conversation history *.html", + "正在查找对话历史文件": "Looking for conversation history file", + "html格式": "HTML format", + "找不到任何html文件": "No HTML files found", + "但本地存储了以下历史文件": "But the following history files are stored locally", + "您可以将任意一个文件路径粘贴到输入区": "You can paste any file path into the input area", + "然后重试": "and try again", + "载入对话历史文件": "Load conversation history file", + "对话历史文件损坏!": "Conversation history file is corrupted!", + "删除所有历史对话文件": "Delete all history conversation files", + "已删除": "Deleted", + "pip install python-docx 用于docx格式": "pip install python-docx for docx format", + "跨平台": "Cross-platform", + "pip install pywin32 用于doc格式": "pip install pywin32 for doc format", + "仅支持Win平台": "Only supports Win platform", + "打开文件": "Open file", + "private_upload里面的文件名在解压zip后容易出现乱码": "The file name in private_upload is prone to garbled characters after unzipping", + "rar和7z格式正常": "RAR and 7z formats are normal", + "故可以只分析文章内容": "So you can only analyze the content of the article", + "不输入文件名": "Do not enter the file name", + "已经对该文章的所有片段总结完毕": "All segments of the article have been summarized", + "如果文章被切分了": "If the article is cut into pieces", + "检测输入参数": "Checking input parameters", + "如没有给定输入参数": "If no input parameters are given", + "直接退出": "Exit directly", + "搜索需要处理的文件清单": "Search for the list of files to be processed", + "如果没找到任何文件": "If no files are found", + "开始正式执行任务": "Start executing the task formally", + "请对下面的文章片段用中文做概述": "Please summarize the following article fragment in Chinese", + "文章内容是": "The content of the article is", + "请对下面的文章片段做概述": "Please summarize the following article fragment", + "的第": "The", + "个片段": "fragment", + "总结文章": "Summarize the article", + "根据以上的对话": "According to the above dialogue", + "的主要内容": "The main content of", + "所有文件都总结完成了吗": "Are all files summarized?", + "如果是.doc文件": "If it is a .doc file", + "请先转化为.docx格式": "Please convert it to .docx format first", + "找不到任何.docx或doc文件": "Cannot find any .docx or .doc files", + "读取Markdown文件": "Read Markdown file", + "拆分过长的Markdown文件": "Split overlong Markdown file", + "什么都没有": "Nothing at all", + "对整个Markdown项目进行翻译": "Translate the entire Markdown project", + "找不到任何.md文件": "Cannot find any .md files", + "句子结束标志": "End of sentence marker", + "尽量是完整的一个section": "Try to use a complete section", + "比如introduction": "such as introduction", + "experiment等": "experiment, etc.", + "必要时再进行切割": "cut if necessary", + "的长度必须小于 2500 个 Token": "its length must be less than 2500 tokens", + "尝试": "try", + "按照章节切割PDF": "cut PDF by sections", + "从摘要中提取高价值信息": "extract high-value information from the abstract", + "放到history中": "put it in history", + "迭代地历遍整个文章": "iterate through the entire article", + "提取精炼信息": "extract concise information", + "用户提示": "user prompt", + "初始值是摘要": "initial value is the abstract", + "i_say=真正给chatgpt的提问": "i_say=questions actually asked to chatgpt", + "i_say_show_user=给用户看的提问": "i_say_show_user=questions shown to the user", + "迭代上一次的结果": "iterate over the previous result", + "提示": "prompt", + "整理history": "organize history", + "接下来两句话只显示在界面上": "the next two sentences are only displayed on the interface", + "不起实际作用": "do not have an actual effect", + "设置一个token上限": "set a token limit", + "防止回答时Token溢出": "prevent token overflow when answering", + "注意这里的历史记录被替代了": "note that the history record here has been replaced", + "首先你在英文语境下通读整篇论文": "First, read the entire paper in an English context", + "收到": "Received", + "文章极长": "Article is too long", + "不能达到预期效果": "Cannot achieve expected results", + "接下来": "Next", + "你是一名专业的学术教授": "You are a professional academic professor", + "利用以上信息": "Utilize the above information", + "使用中文回答我的问题": "Answer my questions in Chinese", + "理解PDF论文内容": "Understand the content of a PDF paper", + "并且将结合上下文内容": "And will combine with the context", + "进行学术解答": "Provide academic answers", + "请对下面的程序文件做一个概述": "Please provide an overview of the program file below", + "并对文件中的所有函数生成注释": "And generate comments for all functions in the file", + "使用markdown表格输出结果": "Output the results using markdown tables", + "文件内容是": "The file content is", + "在此处替换您要搜索的关键词": "Replace the keywords you want to search here", + "爬取搜索引擎的结果": "Crawl the results of search engines", + "依次访问网页": "Visit web pages in order", + "最多收纳多少个网页的结果": "Include results from how many web pages at most", + "ChatGPT综合": "ChatGPT synthesis", + "裁剪输入": "Trim the input", + "从最长的条目开始裁剪": "Start trimming from the longest entry", + "防止爆token": "Prevent token explosion", + "无法连接到该网页": "Cannot connect to the webpage", + "请结合互联网信息回答以下问题": "Please answer the following questions based on internet information", + "请注意": "Please note", + "您正在调用一个": "You are calling a", + "函数插件": "function plugin", + "的模板": "template", + "该模板可以实现ChatGPT联网信息综合": "This template can achieve ChatGPT network information integration", + "该函数面向希望实现更多有趣功能的开发者": "This function is aimed at developers who want to implement more interesting features", + "它可以作为创建新功能函数的模板": "It can be used as a template for creating new feature functions", + "您若希望分享新的功能模组": "If you want to share new feature modules", + "请不吝PR!": "Please don't hesitate to PR!", + "第": "The", + "份搜索结果": "search results", + "从以上搜索结果中抽取信息": "Extract information from the above search results", + "然后回答问题": "Then answer the question", + "请从给定的若干条搜索结果中抽取信息": "Please extract information from the given search results", + "对最相关的两个搜索结果进行总结": "Summarize the two most relevant search results", + "拆分过长的IPynb文件": "Splitting overly long IPynb files", + "的分析如下": "analysis is as follows", + "解析的结果如下": "The parsing result is as follows", + "对IPynb文件进行解析": "Parse the IPynb file", + "找不到任何.ipynb文件": "Cannot find any .ipynb files", + "第一步": "Step one", + "逐个文件分析": "Analyze each file", + "读取文件": "Read the file", + "装载请求内容": "Load the request content", + "文件读取完成": "File reading completed", + "对每一个源代码文件": "For each source code file", + "生成一个请求线程": "Generate a request thread", + "发送到chatgpt进行分析": "Send to chatgpt for analysis", + "全部文件解析完成": "All files parsed", + "结果写入文件": "Write results to file", + "准备对工程源代码进行汇总分析": "Prepare to summarize and analyze project source code", + "第二步": "Step two", + "综合": "Synthesis", + "单线程": "Single thread", + "分组+迭代处理": "Grouping + iterative processing", + "10个文件为一组": "10 files per group", + "只保留文件名节省token": "Keep only file names to save tokens", + "裁剪input": "Trim input", + "迭代之前的分析": "Analysis before iteration", + "将要匹配的模式": "Pattern to match", + "不输入即全部匹配": "Match all if not input", + "将要忽略匹配的文件后缀": "File suffixes to ignore in matching", + "避免解析压缩文件": "Avoid parsing compressed files", + "将要忽略匹配的文件名": "File names to ignore in matching", + "生成正则表达式": "Generate regular expression", + "若上传压缩文件": "If uploading compressed files", + "先寻找到解压的文件夹路径": "First find the path of the decompressed folder", + "从而避免解析压缩文件": "Thus avoid parsing compressed files", + "按输入的匹配模式寻找上传的非压缩文件和已解压的文件": "Find uncompressed and decompressed files uploaded according to the input matching pattern", + "源文件太多": "Too many source files", + "超过512个": "Exceeds 512", + "请缩减输入文件的数量": "Please reduce the number of input files", + "或者": "Or", + "您也可以选择删除此行警告": "You can also choose to delete this line of warning", + "并修改代码拆分file_manifest列表": "And modify the code to split the file_manifest list", + "从而实现分批次处理": "To achieve batch processing", + "接下来请你逐文件分析下面的工程": "Next, please analyze the following project file by file", + "请对下面的程序文件做一个概述文件名是": "Please give an overview of the following program files, the file name is", + "你是一个程序架构分析师": "You are a program architecture analyst", + "正在分析一个源代码项目": "Analyzing a source code project", + "你的回答必须简单明了": "Your answer must be concise and clear", + "完成": "Completed", + "逐个文件分析已完成": "Analysis of each file has been completed", + "正在开始汇总": "Starting to summarize", + "用一张Markdown表格简要描述以下文件的功能": "Briefly describe the functions of the following files in a Markdown table", + "根据以上分析": "Based on the above analysis", + "用一句话概括程序的整体功能": "Summarize the overall function of the program in one sentence", + "对程序的整体功能和构架重新做出概括": "Redescribe the overall function and architecture of the program", + "由于输入长度限制": "Due to input length limitations", + "可能需要分组处理": "Group processing may be required", + "本组文件为": "This group of files is", + "+ 已经汇总的文件组": "+ Files group already summarized", + "正在分析一个项目的源代码": "Analyzing source code of a project", + "找不到任何python文件": "No Python files found", + "找不到任何.h头文件": "No .h header files found", + "找不到任何java文件": "No Java files found", + "找不到任何前端相关文件": "No front-end related files found", + "找不到任何golang文件": "No Golang files found", + "找不到任何rust文件": "No Rust files found", + "找不到任何lua文件": "No Lua files found", + "找不到任何CSharp文件": "No CSharp files found", + "找不到任何文件": "No files found", + "正在同时咨询ChatGPT和ChatGLM……": "Consulting ChatGPT and ChatGLM simultaneously...", + "发送 GET 请求": "Sending GET request", + "解析网页内容": "Parsing webpage content", + "获取所有文章的标题和作者": "Getting titles and authors of all articles", + "引用次数是链接中的文本": "The number of citations is in the link text", + "直接取出来": "Take it out directly", + "摘要在 .gs_rs 中的文本": "The summary is in the .gs_rs text", + "需要清除首尾空格": "Need to remove leading and trailing spaces", + "是否在arxiv中": "Is it in arxiv?", + "不在arxiv中无法获取完整摘要": "Cannot get complete summary if it is not in arxiv", + "分析用户提供的谷歌学术": "Analyzing Google Scholar provided by the user", + "搜索页面中": "In the search page", + "出现的所有文章": "All articles that appear", + "插件初始化中": "Plugin initializing", + "下面是一些学术文献的数据": "Below are some academic literature data", + "当你想发送一张照片时": "When you want to send a photo", + "使用 Unsplash API": "Use Unsplash API", + "匹配^数字^": "Match ^number^", + "将匹配到的数字作为替换值": "Replace the matched number as the replacement value", + "替换操作": "Replacement operation", + "质能方程式": "Mass-energy equivalence equation", + "知乎": "Zhihu", + "你好": "Hello", + "这是必应": "This is Bing", + "质能方程是描述质量与能量之间的当量关系的方程": "The mass-energy equivalence equation describes the equivalent relationship between mass and energy", + "用tex格式": "In tex format", + "质能方程可以写成$$E=mc^2$$": "The mass-energy equivalence equation can be written as $$E=mc^2$$", + "其中$E$是能量": "Where $E$ is energy", + "$m$是质量": "$m$ is mass", + "$c$是光速": "$c$ is the speed of light", + "Endpoint 重定向": "Endpoint redirection", + "兼容旧版的配置": "Compatible with old version configuration", + "新版配置": "New version configuration", + "获取tokenizer": "Get tokenizer", + "如果只询问1个大语言模型": "If only one large language model is queried", + "如果同时InquiryMultipleLargeLanguageModels": "If InquiryMultipleLargeLanguageModels is queried at the same time", + "观察窗": "Observation window", + "该文件中主要包含2个函数": "There are mainly 2 functions in this file", + "是所有LLM的通用接口": "It is a common interface for all LLMs", + "它们会继续向下调用更底层的LLM模型": "They will continue to call lower-level LLM models", + "处理多模型并行等细节": "Handling details such as multi-model parallelism", + "不具备多线程能力的函数": "Functions without multi-threading capability", + "正常对话时使用": "Used in normal conversation", + "具备完备的交互功能": "Fully interactive", + "不可多线程": "Not multi-threaded", + "具备多线程调用能力的函数": "Functions with multi-threading capability", + "在函数插件中被调用": "Called in function plugins", + "灵活而简洁": "Flexible and concise", + "正在加载tokenizer": "Loading tokenizer", + "如果是第一次运行": "If it is the first time running", + "可能需要一点时间下载参数": "It may take some time to download parameters", + "加载tokenizer完毕": "Loading tokenizer completed", + "警告!API_URL配置选项将被弃用": "Warning! The API_URL configuration option will be deprecated", + "请更换为API_URL_REDIRECT配置": "Please replace it with the API_URL_REDIRECT configuration", + "将错误显示出来": "Display errors", + "发送至LLM": "Send to LLM", + "等待回复": "Waiting for reply", + "一次性完成": "Completed in one go", + "不显示中间过程": "Do not display intermediate processes", + "但内部用stream的方法避免中途网线被掐": "But internally use the stream method to avoid the network being cut off midway", + "是本次问询的输入": "This is the input of this inquiry", + "系统静默prompt": "System silent prompt", + "LLM的内部调优参数": "LLM's internal tuning parameters", + "是之前的对话列表": "history is the list of previous conversations", + "用于负责跨越线程传递已经输出的部分": "Used to transfer the already output part across threads", + "大部分时候仅仅为了fancy的视觉效果": "Most of the time it's just for fancy visual effects", + "留空即可": "Leave it blank", + "观测窗": "Observation window", + "TGUI不支持函数插件的实现": "TGUI does not support the implementation of function plugins", + "说": "Say", + "流式获取输出": "Get output in a streaming way", + "用于基础的对话功能": "Used for basic conversation functions", + "inputs 是本次问询的输入": "inputs are the inputs for this inquiry", + "temperature是LLM的内部调优参数": "Temperature is an internal tuning parameter of LLM", + "history 是之前的对话列表": "history is the list of previous conversations", + "注意无论是inputs还是history": "Note that both inputs and history", + "内容太长了都会触发token数量溢出的错误": "An error of token overflow will be triggered if the content is too long", + "chatbot 为WebUI中显示的对话列表": "chatbot is the conversation list displayed in WebUI", + "修改它": "Modify it", + "然后yeild出去": "Then yield it out", + "可以直接修改对话界面内容": "You can directly modify the conversation interface content", + "additional_fn代表点击的哪个按钮": "additional_fn represents which button is clicked", + "按钮见functional.py": "See functional.py for buttons", + "子进程执行": "Subprocess execution", + "第一次运行": "First run", + "加载参数": "Load parameters", + "进入任务等待状态": "Enter task waiting state", + "收到消息": "Received message", + "开始请求": "Start requesting", + "中途接收可能的终止指令": "Receive possible termination command in the middle", + "如果有的话": "If any", + "请求处理结束": "Request processing ends", + "开始下一个循环": "Start the next loop", + "主进程执行": "Main process execution", + "chatglm 没有 sys_prompt 接口": "ChatGLM has no sys_prompt interface", + "因此把prompt加入 history": "Therefore, add prompt to history", + "的耐心": "Patience", + "设置5秒即可": "Set 5 seconds", + "热更新prompt": "Hot update prompt", + "获取预处理函数": "Get preprocessing function", + "处理历史信息": "Process historical information", + "开始接收chatglm的回复": "Start receiving replies from ChatGLM", + "总结输出": "Summary output", + "ChatGLM尚未加载": "ChatGLM has not been loaded", + "加载需要一段时间": "Loading takes some time", + "取决于": "Depending on", + "的配置": "Configuration", + "ChatGLM消耗大量的内存": "ChatGLM consumes a lot of memory", + "或显存": "Or video memory", + "也许会导致低配计算机卡死 ……": "May cause low-end computers to freeze...", + "依赖检测通过": "Dependency check passed", + "缺少ChatGLM的依赖": "Missing dependency for ChatGLM", + "如果要使用ChatGLM": "If you want to use ChatGLM", + "除了基础的pip依赖以外": "In addition to the basic pip dependencies", + "您还需要运行": "You also need to run", + "安装ChatGLM的依赖": "Install dependencies for ChatGLM", + "Call ChatGLM fail 不能正常加载ChatGLM的参数": "Call ChatGLM fail, unable to load parameters for ChatGLM", + "不能正常加载ChatGLM的参数!": "Unable to load parameters for ChatGLM!", + "多线程方法": "Multithreading method", + "函数的说明请见 request_llm/bridge_all.py": "For function details, please see request_llm/bridge_all.py", + "程序终止": "Program terminated", + "单线程方法": "Single-threaded method", + "等待ChatGLM响应中": "Waiting for response from ChatGLM", + "ChatGLM响应异常": "ChatGLM response exception", + "借鉴了 https": "Referenced from https", + "config_private.py放自己的秘密如API和代理网址": "Put your own secrets such as API and proxy address in config_private.py", + "读取时首先看是否存在私密的config_private配置文件": "When reading, first check if there is a private config_private configuration file", + "不受git管控": "Not controlled by git", + "则覆盖原config文件": "Then overwrite the original config file", + "看门狗的耐心": "The patience of the watchdog", + "失败了": "Failed", + "重试一次": "Retry once", + "再失败就没办法了": "If it fails again, there is no way", + "api2d 正常完成": "api2d completed normally", + "把已经获取的数据显示出去": "Display the data already obtained", + "如果超过期限没有喂狗": "If the dog is not fed beyond the deadline", + "则终止": "then terminate", + "非OpenAI官方接口的出现这样的报错": "such errors occur in non-OpenAI official interfaces", + "OpenAI和API2D不会走这里": "OpenAI and API2D will not go here", + "数据流的第一帧不携带content": "The first frame of the data stream does not carry content", + "前者API2D的": "The former is API2D", + "判定为数据流的结束": "Judged as the end of the data stream", + "gpt_replying_buffer也写完了": "gpt_replying_buffer is also written", + "处理数据流的主体": "Processing the body of the data stream", + "如果这里抛出异常": "If an exception is thrown here", + "一般是文本过长": "It is usually because the text is too long", + "详情见get_full_error的输出": "See the output of get_full_error for details", + "清除当前溢出的输入": "Clear the current overflow input", + "是本次输入": "It is the input of this time", + "是本次输出": "It is the output of this time", + "history至少释放二分之一": "Release at least half of the history", + "清除历史": "Clear the history", + "该文件中主要包含三个函数": "This file mainly contains three functions", + "高级实验性功能模块调用": "Calling advanced experimental function modules", + "不会实时显示在界面上": "Will not be displayed on the interface in real time", + "参数简单": "The parameters are simple", + "可以多线程并行": "Can be multi-threaded and parallel", + "方便实现复杂的功能逻辑": "Convenient for implementing complex functional logic", + "在实验过程中发现调用predict_no_ui处理长文档时": "It was found during the experiment that when calling predict_no_ui to process long documents,", + "和openai的连接容易断掉": "Connection to OpenAI is prone to disconnection", + "这个函数用stream的方式解决这个问题": "This function solves the problem using stream", + "同样支持多线程": "Also supports multi-threading", + "网络错误": "Network error", + "检查代理服务器是否可用": "Check if the proxy server is available", + "以及代理设置的格式是否正确": "And if the format of the proxy settings is correct", + "格式须是": "The format must be", + "缺一不可": "All parts are necessary", + "获取完整的从Openai返回的报错": "Get the complete error message returned from OpenAI", + "发送至chatGPT": "Send to chatGPT", + "chatGPT的内部调优参数": "Internal tuning parameters of chatGPT", + "请求超时": "Request timed out", + "正在重试": "Retrying", + "OpenAI拒绝了请求": "OpenAI rejected the request", + "用户取消了程序": "User canceled the program", + "意外Json结构": "Unexpected JSON structure", + "正常结束": "Normal termination", + "但显示Token不足": "But shows insufficient token", + "导致输出不完整": "Resulting in incomplete output", + "请削减单次输入的文本量": "Please reduce the amount of text input per request", + "temperature是chatGPT的内部调优参数": "Temperature is an internal tuning parameter of chatGPT", + "输入已识别为openai的api_key": "The input has been recognized as OpenAI's api_key", + "api_key已导入": "api_key has been imported", + "缺少api_key": "Missing api_key", + "MOSS尚未加载": "MOSS has not been loaded yet", + "MOSS消耗大量的内存": "MOSS consumes a lot of memory", + "缺少MOSS的依赖": "Lack of dependencies for MOSS", + "如果要使用MOSS": "If you want to use MOSS", + "安装MOSS的依赖": "Install dependencies for MOSS", + "Call MOSS fail 不能正常加载MOSS的参数": "Call MOSS fail, unable to load MOSS parameters normally", + "不能正常加载MOSS的参数!": "Unable to load MOSS parameters normally!", + "等待MOSS响应中": "Waiting for MOSS response", + "MOSS响应异常": "MOSS response exception", + "读取配置": "Read configuration", + "等待": "Waiting", + "开始问问题": "Start asking questions", + "追加历史": "Append history", + "问题": "Question", + "代理设置": "Proxy settings", + "发送请求到子进程": "Send request to child process", + "等待newbing回复的片段": "Waiting for the fragment of newbing reply", + "结束": "End", + "newbing回复的片段": "Fragment of newbing reply", + "没有 sys_prompt 接口": "No sys_prompt interface", + "来自EdgeGPT.py": "From EdgeGPT.py", + "等待NewBing响应": "Waiting for NewBing response", + "子进程Worker": "Child process Worker", + "调用主体": "Call subject", + "注意目前不能多人同时调用NewBing接口": "Note that currently multiple people cannot call the NewBing interface at the same time", + "有线程锁": "There is a thread lock", + "否则将导致每个人的NewBing问询历史互相渗透": "Otherwise, each person's NewBing inquiry history will penetrate each other", + "调用NewBing时": "When calling NewBing", + "会自动使用已配置的代理": "the configured proxy will be automatically used", + "缺少的依赖": "Missing dependencies", + "如果要使用Newbing": "If you want to use Newbing", + "安装Newbing的依赖": "Install the dependencies for Newbing", + "这个函数运行在子进程": "This function runs in a child process", + "不能加载Newbing组件": "Cannot load Newbing components", + "NEWBING_COOKIES未填写或有格式错误": "NEWBING_COOKIES is not filled in or has a format error", + "Newbing失败": "Newbing failed", + "这个函数运行在主进程": "This function runs in the main process", + "第三部分": "Part III", + "主进程统一调用函数接口": "The main process calls the function interface uniformly", + "等待NewBing响应中": "Waiting for NewBing response", + "NewBing响应缓慢": "NewBing response is slow", + "尚未完成全部响应": "Not all responses have been completed yet", + "请耐心完成后再提交新问题": "Please be patient and submit a new question after completing all responses", + "NewBing响应异常": "NewBing response is abnormal", + "请刷新界面重试": "Please refresh the page and try again", + "完成全部响应": "All responses have been completed", + "请提交新问题": "Please submit a new question", + "LLM_MODEL 格式不正确!": "LLM_MODEL format is incorrect!", + "对各个llm模型进行单元测试": "Unit testing for each LLM model", + "如何理解传奇?": "How to understand legends?", + "设定一个最小段落长度阈值": "Set a minimum paragraph length threshold", + "对文本进行归一化处理": "Normalize the text", + "分解连字": "Break ligatures", + "替换其他特殊字符": "Replace other special characters", + "替换跨行的连词": "Replace hyphens across lines", + "根据前后相邻字符的特点": "Based on the characteristics of adjacent characters", + "找到原文本中的换行符": "Find line breaks in the original text", + "根据 heuristic 规则": "Based on heuristic rules", + "用空格或段落分隔符替换原换行符": "Replace line breaks with spaces or paragraph separators", + "带超时倒计时": "With timeout countdown", + "根据给定的匹配结果来判断换行符是否表示段落分隔": "Determine whether line breaks indicate paragraph breaks based on given matching results", + "如果换行符前为句子结束标志": "If the line break is preceded by a sentence-ending punctuation mark", + "句号": "period", + "感叹号": "exclamation mark", + "问号": "question mark", + "且下一个字符为大写字母": "and the next character is a capital letter", + "则换行符更有可能表示段落分隔": "the line break is more likely to indicate a paragraph break", + "也可以根据之前的内容长度来判断段落是否已经足够长": "Paragraph length can also be judged based on previous content length", + "通过把连字": "By converting ligatures and other text special characters to their basic forms", + "等文本特殊符号转换为其基本形式来对文本进行归一化处理": "normalize the text by converting special characters to their basic forms", + "对从 PDF 提取出的原始文本进行清洗和格式化处理": "Clean and format the raw text extracted from PDF", + "1. 对原始文本进行归一化处理": "1. Normalize the original text", + "2. 替换跨行的连词": "2. Replace hyphens across lines", + "3. 根据 heuristic 规则判断换行符是否是段落分隔": "3. Determine whether line breaks indicate paragraph breaks based on heuristic rules", + "并相应地进行替换": "And replace accordingly", + "接下来请你逐文件分析下面的论文文件": "Next, please analyze the following paper files one by one", + "概括其内容": "Summarize its content", + "请对下面的文章片段用中文做一个概述": "Please summarize the following article in Chinese", + "请对下面的文章片段做一个概述": "Please summarize the following article", + "根据以上你自己的分析": "According to your own analysis above", + "对全文进行概括": "Summarize the entire text", + "用学术性语言写一段中文摘要": "Write a Chinese abstract in academic language", + "然后再写一段英文摘要": "Then write an English abstract", + "包括": "Including", + "找不到任何.tex或.pdf文件": "Cannot find any .tex or .pdf files", + "读取pdf文件": "Read the pdf file", + "返回文本内容": "Return the text content", + "此版本使用pdfminer插件": "This version uses the pdfminer plugin", + "带token约简功能": "With token reduction function", + "递归地切割PDF文件": "Recursively split the PDF file", + "为了更好的效果": "For better results", + "我们剥离Introduction之后的部分": "We strip the part after Introduction", + "如果有": "If there is", + "多线": "Multi-threaded", + "\\n 翻译": "\\n Translation", + "整理报告的格式": "Organize the format of the report", + "原文": "Original text", + "更新UI": "Update UI", + "准备文件的下载": "Prepare for file download", + "重命名文件": "Rename file", + "以下是一篇学术论文的基础信息": "The following is the basic information of an academic paper", + "请从中提取出“标题”、“收录会议或期刊”、“作者”、“摘要”、“编号”、“作者邮箱”这六个部分": "Please extract the following six parts: \"Title\", \"Conference or Journal\", \"Author\", \"Abstract\", \"Number\", \"Author's Email\"", + "请用markdown格式输出": "Please output in markdown format", + "最后用中文翻译摘要部分": "Finally, translate the abstract into Chinese", + "请提取": "Please extract", + "请从": "Please extract from", + "中提取出“标题”、“收录会议或期刊”等基本信息": "Please extract basic information such as \"Title\" and \"Conference or Journal\" from", + "你需要翻译以下内容": "You need to translate the following content", + "请你作为一个学术翻译": "As an academic translator, please", + "负责把学术论文准确翻译成中文": "be responsible for accurately translating academic papers into Chinese", + "注意文章中的每一句话都要翻译": "Please translate every sentence in the article", + "一、论文概况": "I. Overview of the paper", + "二、论文翻译": "II. Translation of the paper", + "/gpt_log/总结论文-": "/gpt_log/Summary of the paper-", + "给出输出文件清单": "Provide a list of output files", + "第 0 步": "Step 0", + "切割PDF": "Split PDF", + "每一块": "Each block", + "提取出以下内容": "Extract the following content", + "1、英文题目;2、中文题目翻译;3、作者;4、arxiv公开": "1. English title; 2. Translation of Chinese title; 3. Author; 4. arxiv open access", + ";4、引用数量": "Number of Citations", + ";5、中文摘要翻译": "Translation of Chinese Abstract", + "以下是信息源": "Here are the Information Sources", + "请分析此页面中出现的所有文章": "Please Analyze all the Articles Appearing on this Page", + "这是第": "This is Batch Number", + "批": "", + "你是一个学术翻译": "You are an Academic Translator", + "请从数据中提取信息": "Please Extract Information from the Data", + "你必须使用Markdown表格": "You Must Use Markdown Tables", + "你必须逐个文献进行处理": "You Must Process Each Document One by One", + "状态": "Status", + "已经全部完成": "All Completed", + "您可以试试让AI写一个Related Works": "You Can Try to Let AI Write a Related Works", + "该函数只有20多行代码": "This Function Has Only 20+ Lines of Code", + "此外我们也提供可同步处理大量文件的多线程Demo供您参考": "In addition, we also provide a multi-threaded demo that can process a large number of files synchronously for your reference", + "历史中哪些事件发生在": "Which Events Happened in History on", + "月": "Month", + "日": "Day", + "列举两条并发送相关图片": "List Two and Send Relevant Pictures", + "发送图片时": "When Sending Pictures", + "请使用Markdown": "Please Use Markdown", + "将Unsplash API中的PUT_YOUR_QUERY_HERE替换成描述该事件的一个最重要的单词": "Replace PUT_YOUR_QUERY_HERE in the Unsplash API with the Most Important Word Describing the Event", + "1. 临时解决方案": "1. Temporary Solution", + "直接在输入区键入api_key": "Enter the api_key Directly in the Input Area", + "然后回车提交": "Submit after pressing Enter", + "2. 长效解决方案": "Long-term solution", + "在config.py中配置": "Configure in config.py", + "等待响应": "Waiting for response", + "api-key不满足要求": "API key does not meet requirements", + "远程返回错误": "Remote returns error", + "Json解析不合常规": "Json parsing is not normal", + "Reduce the length. 本次输入过长": "Reduce the length. The input is too long this time", + "或历史数据过长. 历史缓存数据已部分释放": "Or the historical data is too long. Historical cached data has been partially released", + "您可以请再次尝试.": "You can try again.", + "若再次失败则更可能是因为输入过长.": "If it fails again, it is more likely due to input being too long.", + "does not exist. 模型不存在": "Model does not exist", + "或者您没有获得体验资格": "Or you do not have the qualification for experience", + "Incorrect API key. OpenAI以提供了不正确的API_KEY为由": "Incorrect API key. OpenAI claims that an incorrect API_KEY was provided", + "拒绝服务": "Service refused", + "You exceeded your current quota. OpenAI以账户额度不足为由": "You exceeded your current quota. OpenAI claims that the account balance is insufficient", + "Bad forward key. API2D账户额度不足": "Bad forward key. API2D account balance is insufficient", + "Not enough point. API2D账户点数不足": "Not enough point. API2D account points are insufficient", + "Json异常": "Json exception", + "整合所有信息": "Integrate all information", + "选择LLM模型": "Select LLM model", + "生成http请求": "Generate http request", + "为发送请求做准备": "Prepare to send request", + "你提供了错误的API_KEY": "You provided an incorrect API_KEY", + "来保留函数的元信息": "Preserve the metadata of the function", + "并定义了一个名为decorated的内部函数": "and define an inner function named decorated", + "内部函数通过使用importlib模块的reload函数和inspect模块的getmodule函数来重新加载并获取函数模块": "The inner function reloads and retrieves the function module by using the reload function of the importlib module and the getmodule function of the inspect module", + "然后通过getattr函数获取函数名": "Then it retrieves the function name using the getattr function", + "并在新模块中重新加载函数": "and reloads the function in the new module", + "最后": "Finally", + "使用yield from语句返回重新加载过的函数": "it returns the reloaded function using the yield from statement", + "并在被装饰的函数上执行": "and executes it on the decorated function", + "最终": "Ultimately", + "装饰器函数返回内部函数": "the decorator function returns the inner function", + "这个内部函数可以将函数的原始定义更新为最新版本": "which can update the original definition of the function to the latest version", + "并执行函数的新版本": "and execute the new version of the function", + "第二部分": "Second part", + "其他小工具": "Other utilities", + "将结果写入markdown文件中": "Write the results to a markdown file", + "将普通文本转换为Markdown格式的文本": "Convert plain text to Markdown formatted text", + "向chatbot中添加简单的意外错误信息": "Add simple unexpected error messages to the chatbot", + "Openai 限制免费用户每分钟20次请求": "Openai limits free users to 20 requests per minute", + "降低请求频率中": "Reduce the request frequency", + "只输出代码": "Output only the code", + "文件名是": "The file name is", + "文件代码是": "The file code is", + "至少一个线程任务Token溢出而失败": "At least one thread task fails due to token overflow", + "至少一个线程任务意外失败": "At least one thread task fails unexpectedly", + "开始了吗": "Has it started?", + "已完成": "Completed", + "的转化": "conversion", + "存入": "saved to", + "生成一份任务执行报告": "Generate a task execution report", + "文件保存到本地": "Save the file locally", + "由于请求gpt需要一段时间": "As requesting GPT takes some time", + "我们先及时地做一次界面更新": "Let's do a UI update in time", + "界面更新": "UI update", + "输入栏用户输入的文本": "Text entered by the user in the input field", + "例如需要翻译的一段话": "For example, a paragraph that needs to be translated", + "再例如一个包含了待处理文件的路径": "For example, a file path that contains files to be processed", + "gpt模型参数": "GPT model parameters", + "如温度和top_p等": "Such as temperature and top_p", + "一般原样传递下去就行": "Generally pass it on as is", + "插件模型的参数": "Plugin model parameters", + "暂时没有用武之地": "No use for the time being", + "找不到任何.tex或pdf文件": "Cannot find any .tex or .pdf files", + "读取PDF文件": "Read PDF file", + "输入中可能存在乱码": "There may be garbled characters in the input", + "是否重置": "Whether to reset", + "jittorllms 没有 sys_prompt 接口": "jittorllms does not have a sys_prompt interface", + "开始接收jittorllms的回复": "Start receiving jittorllms responses", + "jittorllms尚未加载": "jittorllms has not been loaded yet", + "请避免混用多种jittor模型": "Please avoid mixing multiple jittor models", + "否则可能导致显存溢出而造成卡顿": "Otherwise, it may cause a graphics memory overflow and cause stuttering", + "jittorllms消耗大量的内存": "jittorllms consumes a lot of memory", + "缺少jittorllms的依赖": "Missing dependencies for jittorllms", + "如果要使用jittorllms": "If you want to use jittorllms", + "和": "and", + "两个指令来安装jittorllms的依赖": "Two commands to install jittorllms dependencies", + "在项目根目录运行这两个指令": "Run these two commands in the project root directory", + "安装jittorllms依赖后将完全破坏现有的pytorch环境": "Installing jittorllms dependencies will completely destroy the existing pytorch environment", + "建议使用docker环境!": "It is recommended to use a docker environment!", + "Call jittorllms fail 不能正常加载jittorllms的参数": "Call jittorllms fail, cannot load jittorllms parameters normally", + "不能正常加载jittorllms的参数!": "Cannot load jittorllms parameters normally!", + "触发重置": "Trigger reset", + "等待jittorllms响应中": "Waiting for jittorllms response", + "jittorllms响应异常": "Jittor LMS Response Exception", + "这段代码来源 https": "This code is from https", + "等待输入": "Waiting for input", + "体验gpt-4可以试试api2d": "You can try API2d to experience GPT-4", + "可选 ↓↓↓": "Optional ↓↓↓", + "本地LLM模型如ChatGLM的执行方式 CPU/GPU": "Execution mode of local LLM models such as ChatGLM CPU/GPU", + "设置gradio的并行线程数": "Set the number of parallel threads for Gradio", + "不需要修改": "No modification is needed", + "加一个live2d装饰": "Add a Live2D decoration", + "HotReload的装饰器函数": "Decorator function of HotReload", + "用于实现Python函数插件的热更新": "Used to implement hot updates of Python function plugins", + "函数热更新是指在不停止程序运行的情况下": "Function hot update refers to updating function code in real-time without stopping program execution", + "更新函数代码": "Update function code", + "从而达到实时更新功能": "To achieve real-time update function", + "在装饰器内部": "Inside the decorator", + "使用wraps": "Use wraps", + "代码高亮": "Code Highlighting", + "网页的端口": "Web Port", + "等待多久判定为超时": "Timeout Threshold", + "-1代表随机端口": "-1 represents random port", + "但大部分场合下并不需要修改": "However, it does not need to be modified in most cases", + "发送请求到OpenAI后": "After sending the request to OpenAI", + "上下布局": "Vertical Layout", + "左右布局": "Horizontal Layout", + "对话窗的高度": "Height of the Dialogue Window", + "重试的次数限制": "Retry Limit", + "gpt4现在只对申请成功的人开放": "GPT-4 is now only open to those who have successfully applied", + "提高限制请查询": "Please check for higher limits", + "OpenAI模型选择是": "OpenAI Model Selection is", + "网络卡顿、代理失败、KEY失效": "Network Lag, Proxy Failure, KEY Invalid", + "窗口布局": "Window Layout", + "以下配置可以优化体验": "The following configurations can optimize the experience", + "OpenAI绑了信用卡的用户可以填 16 或者更高": "Users who have bound their credit card to OpenAI can fill in 16 or higher", + "如果OpenAI不响应": "If OpenAI does not respond" +} \ No newline at end of file diff --git a/docs/translate_japanese.json b/docs/translate_japanese.json new file mode 100644 index 0000000000000000000000000000000000000000..9ea37c8eef6e6bee28b0da802eb693509e2f488e --- /dev/null +++ b/docs/translate_japanese.json @@ -0,0 +1,1488 @@ +{ + "print亮黄": "PrintBrightYellow", + "print亮绿": "PrintBrightGreen", + "print亮红": "PrintBrightRed", + "print红": "PrintRed", + "print绿": "PrintGreen", + "print黄": "PrintYellow", + "print蓝": "PrintBlue", + "print紫": "PrintPurple", + "print靛": "PrintIndigo", + "print亮蓝": "PrintBrightBlue", + "print亮紫": "PrintBrightPurple", + "print亮靛": "PrintBrightIndigo", + "读文章写摘要": "ReadArticleWriteSummary", + "批量生成函数注释": "BatchGenerateFunctionComments", + "生成函数注释": "GenerateFunctionComments", + "解析项目本身": "ParseProjectItself", + "解析项目源代码": "ParseProjectSourceCode", + "解析一个Python项目": "ParsePythonProject", + "解析一个C项目的头文件": "ParseCProjectHeaderFile", + "解析一个C项目": "ParseACProject", + "解析一个Golang项目": "ParseAGolangProject", + "解析一个Rust项目": "ParseARustProject", + "解析一个Java项目": "ParseAJavaProject", + "解析一个前端项目": "ParseAFrontendProject", + "高阶功能模板函数": "AdvancedFeatureTemplateFunction", + "高级功能函数模板": "AdvancedFunctionTemplate", + "全项目切换英文": "SwitchProjectToEnglish", + "代码重写为全英文_多线程": "RewriteCodeToEnglish_Multithreading", + "Latex英文润色": "LatexEnglishProofreading", + "Latex全文润色": "LatexFullTextProofreading", + "同时问询": "SimultaneousInquiry", + "询问多个大语言模型": "InquireMultipleLargeLanguageModels", + "解析一个Lua项目": "ParseALuaProject", + "解析一个CSharp项目": "ParseACSharpProject", + "总结word文档": "SummarizeWordDocument", + "解析ipynb文件": "ParseIpynbFile", + "解析JupyterNotebook": "ParseJupyterNotebook", + "对话历史存档": "ConversationHistoryArchive", + "载入对话历史存档": "LoadConversationHistoryArchive", + "删除所有本地对话历史记录": "DeleteAllLocalChatHistory", + "Markdown英译中": "MarkdownTranslateFromEngToChi", + "批量Markdown翻译": "BatchTranslateMarkdown", + "批量总结PDF文档": "BatchSummarizePDFDocuments", + "批量总结PDF文档pdfminer": "BatchSummarizePDFDocumentsUsingPDFMiner", + "批量翻译PDF文档": "BatchTranslatePDFDocuments", + "批量翻译PDF文档_多线程": "BatchTranslatePDFDocumentsUsingMultiThreading", + "谷歌检索小助手": "GoogleSearchAssistant", + "理解PDF文档内容标准文件输入": "StandardFileInputForUnderstandingPDFDocumentContent", + "理解PDF文档内容": "UnderstandingPDFDocumentContent", + "Latex中文润色": "ChineseProofreadingInLatex", + "Latex中译英": "ChineseToEnglishTranslationInLatex", + "Latex全文翻译": "FullTextTranslationInLatex", + "Latex英译中": "EnglishToChineseTranslationInLatex", + "Markdown中译英": "TranslateFromChiToEngInMarkdown", + "下载arxiv论文并翻译摘要": "DownloadArxivPapersAndTranslateAbstract", + "下载arxiv论文翻译摘要": "DownloadArxivPapersAndTranslateAbstract", + "连接网络回答问题": "ConnectToInternetAndAnswerQuestions", + "联网的ChatGPT": "ChatGPTConnectedToInternet", + "解析任意code项目": "ParseAnyCodeProject", + "同时问询_指定模型": "InquireSpecifiedModelAtTheSameTime", + "图片生成": "GenerateImage", + "test_解析ipynb文件": "test_ParseIpynbFile", + "把字符太少的块清除为回车": "RemoveBlocksWithTooFewCharactersToNewline", + "清理多余的空行": "CleanUpExtraBlankLines", + "合并小写开头的段落块": "MergeParagraphBlocksStartingWithLowerCase", + "多文件润色": "PolishMultipleFiles", + "多文件翻译": "TranslateMultipleFiles", + "解析docx": "ParseDocx", + "解析PDF": "ParsePDF", + "解析Paper": "ParsePaper", + "ipynb解释": "InterpretIpynb", + "解析源代码新": "ParseSourceCodeNew", + "填写格式是": "入力フォーマットは", + "并在新模块中重新加载函数": "新しいモジュールで関数を再読み込みする", + "如果要使用MOSS": "MOSSを使用する場合", + "翻译成地道的中文": "自然な中国語に翻訳する", + "请对下面的程序文件做一个概述": "以下のプログラムファイルについて概要を説明してください", + "用tex格式": "TeX形式で", + "浮点数": "浮動小数点数", + "第三部分": "第3部分", + "这个函数运行在子进程": "この関数はサブプロセスで実行されます", + "自动解压": "自動解凍", + "按Enter提交": "Enterを押して提出する", + "如果超过期限没有喂狗": "期限を過ぎてもフィードしない場合", + "正在开始汇总": "集計を開始しています", + "安装jittorllms依赖后将完全破坏现有的pytorch环境": "jittorllmsの依存関係をインストールすると、既存のpytorch環境が完全に破壊されます", + "尝试加载": "読み込みを試みる", + "* 此函数未来将被弃用": "* この関数は将来的に廃止されます", + "newbing回复的片段": "newbingの返信フラグメント", + "新版本可用": "新しいバージョンが利用可能です", + "函数插件区": "関数プラグインエリア", + "jittorllms消耗大量的内存": "jittorllmsは大量のメモリを消費します", + "替换跨行的连词": "複数行の接続詞を置換する", + "Markdown/Readme英译中": "Markdown/Readmeの英訳中", + "如果需要使用newbing": "newbingを使用する必要がある場合", + "对整个Markdown项目进行翻译": "Markdownプロジェクト全体を翻訳する", + "比正文字体小": "本文より小さいフォントサイズ", + "请对下面的文章片段做概述": "以下の記事の断片について概要を説明してください", + "正在获取文献名!": "文献名を取得しています!", + "展现在报告中的输入": "レポートに表示される入力", + "则删除报错信息": "エラーメッセージを削除する", + "第3步": "ステップ3", + "尚未充分测试的函数插件": "十分にテストされていない関数プラグイン", + "You exceeded your current quota. OpenAI以账户额度不足为由": "現在のクォータを超過しました。OpenAIはアカウントのクォータ不足を理由にしています", + "下载完成": "ダウンロードが完了しました", + "正常结束": "正常に終了しました", + "第1步": "ステップ1", + "必要时": "必要に応じて", + "留空即可": "空白のままにしておくことができます", + "文件名是": "ファイル名は", + "双层列表": "二重リスト", + "上下文管理器是一种Python对象": "コンテキストマネージャはPythonオブジェクトの一種です", + "**输出参数说明**": "**出力パラメータの説明**", + "history至少释放二分之一": "historyは少なくとも半分解放する必要があります", + "拒绝服务": "サービスを拒否する", + "默认按钮颜色是 secondary": "デフォルトのボタンの色はsecondaryです", + "加了^代表不匹配": "^を追加すると、一致しないことを意味します", + "读取时首先看是否存在私密的config_private配置文件": "読み取り時に、まずconfig_private構成ファイルが存在するかどうかを確認します", + "如果这里抛出异常": "ここで例外が発生した場合", + "缺少api_key": "api_keyが不足しています", + "而cl**h 的默认本地协议是http": "cl ** hのデフォルトのローカルプロトコルはhttpです", + "尝试计算比例": "比率を計算しようとする", + "你是一个程序架构分析师": "あなたはプログラムアーキテクチャアナリストです", + "jittorllms响应异常": "jittorllms応答異常", + "开始问问题": "質問を始める", + "的模板": "のテンプレート", + "加一个live2d装饰": "live2dの装飾を追加する", + "经过充分测试": "十分にテストされた後", + "gradio版本较旧": "Gradioのバージョンが古いです", + "配置信息如下": "以下は構成情報です", + "刷新用户界面": "ユーザーインターフェースを更新する", + "翻译": "翻訳", + "读取配置": "構成を読み込む", + "第二种情况": "2番目の場合", + "接下来": "次に", + "合并小写字母开头的段落块并替换为空格": "小文字で始まる段落ブロックを結合して空白に置き換える", + "质能方程是描述质量与能量之间的当量关系的方程": "質量とエネルギーの間の等価関係を記述する質量エネルギー方程式", + "匹配^数字^": "^数字^に一致する", + "提高语法、清晰度和整体可读性": "文法、明確さ、全体的な読みやすさを向上させる", + "对最相关的两个搜索结果进行总结": "最も関連性の高い2つの検索結果をまとめる", + "另外您可以随时在history子文件夹下找回旧版的程序": "また、いつでもhistoryサブフォルダーで古いバージョンのプログラムを取得できます", + "将每个换行符替换为两个换行符": "各改行文字を2つの改行文字に置き換える", + "调用NewBing时": "NewBingを呼び出すとき", + "接下来请你逐文件分析下面的工程": "次に、以下のプロジェクトをファイルごとに分析してください", + "不可高于3": "3を超えることはできません", + "本项目现已支持OpenAI和API2D的api-key": "このプロジェクトは現在、OpenAIおよびAPI2DのAPIキーをサポートしています", + "llm_kwargs参数": "llm_kwargsパラメータ", + "切割PDF": "PDFを切り分ける", + "随便切一下敷衍吧": "適当に切ってください", + "按照章节切割PDF": "章ごとにPDFを切り分ける", + "聊天显示框的句柄": "チャット表示ボックスのハンドル", + "已删除": "削除されました", + "如果没有指定文件名": "ファイル名が指定されていない場合", + "Tiktoken未知错误": "Tiktokenの未知のエラー", + "你的回答必须简单明了": "回答は簡潔で明確でなければなりません", + "\\n 翻译": "\\n翻訳", + "2. 长效解决方案": "長期的な解決策", + "上下文": "文脈", + "图像中转网址": "画像の中継ウェブサイト", + "感叹号": "感嘆符", + "第 4 步": "4番目のステップ", + "为了安全而隐藏绝对地址": "安全のために絶対アドレスを隠す", + "获取成功": "取得成功", + "综合": "総合", + "在执行过程中遭遇问题": "実行中に問題が発生しました", + "输入参数 Args": "入力パラメータArgs", + "在项目根目录运行这两个指令": "プロジェクトのルートディレクトリでこれら2つのコマンドを実行する", + "文件内容是": "ファイルの内容は", + "css等": "CSSなど", + "发送请求到OpenAI后": "OpenAIにリクエストを送信した後", + "来保留函数的元信息": "関数のメタ情報を保持するために", + "第3次尝试": "3回目の試み", + "我们": "私たちは", + "注意无论是inputs还是history": "inputsまたはhistoryである場合でも注意してください", + "本地路径": "ローカルパス", + "1. 对原始文本进行归一化处理": "1.元のテキストを正規化する", + "这个文件用于函数插件的单元测试": "このファイルは関数プラグインのユニットテストに使用されます", + "用于基础的对话功能": "基本的な対話機能に使用されます", + "代理设置": "プロキシ設定", + "在此处替换您要搜索的关键词": "ここで検索するキーワードを置き換えてください", + "请求GPT模型同时维持用户界面活跃": "GPTモデルにリクエストを送信しながら、ユーザーインターフェイスを活性化します", + "3. 根据 heuristic 规则判断换行符是否是段落分隔": "3.ヒューリスティックルールに従って、改行が段落の区切りかどうかを判断する", + "temperature是LLM的内部调优参数": "temperatureはLLMの内部調整パラメータです", + "发送到chatgpt进行分析": "chatgptに送信して分析する", + "在config.py中配置": "config.pyに設定する", + "第 1 步": "ステップ1", + "定义注释的正则表达式": "コメントの正規表現を定義する", + "OpenAI绑了信用卡的用户可以填 16 或者更高": "OpenAIにクレジットカードをバインドしているユーザーは、16以上を入力できます", + "模仿ChatPDF": "ChatPDFを模倣する", + "以_array结尾的输入变量都是列表": "_arrayで終わる入力変数はすべてリストです", + "终止按钮的回调函数注册": "停止ボタンのコールバック関数の登録", + "意外Json结构": "予期しないJson構造", + "需要安装pip install py7zr来解压7z文件": "7zファイルを解凍するには、pip install py7zrをインストールする必要があります", + "将Unsplash API中的PUT_YOUR_QUERY_HERE替换成描述该事件的一个最重要的单词": "Unsplash APIのPUT_YOUR_QUERY_HEREを、そのイベントを最もよく表す単語に置き換えます", + "预处理": "前処理", + "状态": "ステータス", + "知乎": "知乎", + "聊天历史": "チャット履歴", + "请从给定的若干条搜索结果中抽取信息": "指定された複数の検索結果から情報を抽出してください", + "通过裁剪来缩短历史记录的长度": "履歴の長さを短くするためにトリミングを使用する", + "函数插件作者": "関数プラグインの作者", + "这个中文的句号是故意的": "この中国語の句点は意図的です", + "双换行": "二重改行", + "用了很多trick": "多くのトリックを使用しました", + "如.md": ".mdのように", + "屏蔽掉 chatglm的多线程": "chatglmのマルチスレッドをブロックする", + "但显示Token不足": "ただし、トークンが不足していると表示されます", + "对文本进行归一化处理": "テキストを正規化する", + "把结果写入文件": "結果をファイルに書き込む", + "如果没找到任何文件": "ファイルが見つからなかった場合", + "请确认是否满足您的需要": "必要条件を満たしているかどうかを確認してください", + "您提供的api-key不满足要求": "提供されたAPIキーが要件を満たしていません", + "MOSS消耗大量的内存": "MOSSは大量のメモリを消費します", + "文本过长将进行截断": "テキストが長すぎる場合は切り捨てられます", + "橙色": "オレンジ色", + "失败时的重试次数": "失敗時の再試行回数", + "+ 已经汇总的文件组": "すでにまとめられたファイルグループ", + "相关功能不稳定": "関連機能は不安定です", + "将要匹配的模式": "マッチングするパターン", + "第4步": "ステップ4", + "调用时": "呼び出し時", + "问询记录": "問い合わせ記録", + "不能正常加载MOSS的参数!": "MOSSのパラメータを正常にロードできません!", + "接管gradio默认的markdown处理方式": "gradioのデフォルトのmarkdown処理方法を接管する", + "加载tokenizer完毕": "tokenizerの読み込みが完了しました", + "请用markdown格式输出": "markdown形式で出力してください", + "PDF文件也已经下载": "PDFファイルもダウンロードされました", + "读取Latex文件": "Latexファイルを読み込む", + "找不到任何.tex或.pdf文件": ".texまたは.pdfファイルが見つかりません", + "端口": "ポート", + "此外": "さらに", + "使用yield from语句返回重新加载过的函数": "yield fromステートメントを使用して再読み込みされた関数を返す", + "函数插件贡献者": "関数プラグインの貢献者", + "绿色": "緑色", + "酸橙色": "ライムグリーン", + "找不到本地项目或无权访问": "ローカルプロジェクトが見つからないか、アクセス権がありません", + "此函数逐渐地搜索最长的条目进行剪辑": "この関数は徐々に最長のエントリを検索して編集します", + "注意这里的历史记录被替代了": "ここでの履歴は置き換えられました", + "但大部分场合下并不需要修改": "ただし、ほとんどの場合、変更は必要ありません", + "这个内部函数可以将函数的原始定义更新为最新版本": "この内部関数は、関数の元の定義を最新バージョンに更新できます", + "输出了前面的": "前のものを出力し、1つの文字列に結合します", + "并合并为一个字符串": "前のものを出力し、1つの文字列に結合します", + "出现的所有文章": "表示されるすべての記事", + "pip包依赖安装出现问题": "pipパッケージの依存関係のインストールに問題が発生しました", + "用于重组输入参数": "入力パラメーターを再構成するために使用されます", + "格式须是": "フォーマットは次のようにする必要があります", + "请注意proxies选项的格式": "proxiesオプションの形式に注意してください", + "api_key已导入": "api_keyがインポートされました", + "新版配置": "新しいバージョンの設定", + "暂时没有用武之地": "現時点では使用されていません", + "返回文本内容": "テキストコンテンツを返します", + "从而避免解析压缩文件": "圧縮ファイルの解析を回避するため", + "环境变量可以是": "環境変数は次のようにすることができます", + "接下来两句话只显示在界面上": "次の2つの文は、画面にのみ表示されます", + "解析的结果如下": "解析結果は以下のとおりです", + "若上传压缩文件": "圧縮ファイルをアップロードする場合", + "找不到任何html文件": "htmlファイルが見つかりません", + "环境变量": "環境変数", + "备选输入区": "代替入力エリア", + "如果文章被切分了": "記事が分割された場合", + "异常原因": "異常の原因", + "生成带有段落标签的HTML代码": "段落タグを持つHTMLコードを生成する", + "按钮颜色": "ボタンの色", + "请只提供文本的更正版本": "テキストの修正バージョンのみを提供してください", + "输入": "入力", + "插件参数区": "プラグインパラメータエリア", + "玫瑰色": "ローズ色", + "根据以上分析": "上記の分析に基づいて", + "解析整个Go项目": "Goプロジェクト全体を解析する", + "解析整个Rust项目": "Rustプロジェクト全体を解析する", + "新功能": "新機能", + "避免代理网络产生意外污染": "プロキシネットワークによる予期しない汚染を回避する", + "检测到": "検出された", + "借助此参数": "このパラメータを利用する", + "重置": "リセット", + "优先级2. 获取config_private中的配置": "優先度2. config_privateから設定を取得する", + "具备以下功能": "以下の機能を備えています", + "的耐心": "の忍耐力", + "将输出代码片段的“后面的": "コードスニペットの後ろに出力する", + "等待重试": "再試行を待つ", + "覆盖和重启": "上書きして再起動する", + "ChatGPT 学术优化": "ChatGPT学術最適化", + "后面两句是": "後の2文は", + "检查代理服务器是否可用": "プロキシサーバーが利用可能かどうかを確認する", + "存在一行极长的文本!": "1行の非常に長いテキストが存在します!", + "减少重复": "重複を減らす", + "暗色主题": "ダークテーマ", + "提取出以下内容": "以下の内容を抽出する", + "先在input输入编号": "まずinputに番号を入力してください", + "当输入部分的token占比小于限制的3/4时": "入力部分のトークンの割合が制限の3/4未満の場合", + "检测输入参数": "入力パラメータを検出する", + "api-key不满足要求": "api-keyが要件を満たしていない", + "刷新界面": "画面を更新する", + "重试的次数限制": "再試行回数の制限", + "输入路径或上传压缩包": "パスを入力するか、圧縮ファイルをアップロードする", + "如果某个子任务出错": "サブタスクのいずれかがエラーになった場合", + "已经全部完成": "すべて完了しました", + "并对文件中的所有函数生成注释": "すべての関数にコメントを生成する", + "如果选择自动处理": "自動処理を選択した場合", + "缺少的依赖": "不足している依存関係", + "紫色": "紫色", + "唤起高级参数输入区": "高度なパラメータ入力エリアを呼び出す", + "所有问询记录将自动保存在本地目录./gpt_log/chat_secrets.log": "すべての問い合わせ記録は自動的にローカルディレクトリ./gpt_log/chat_secrets.logに保存されます", + "则换行符更有可能表示段落分隔": "したがって、改行記号は段落の区切りを表す可能性がより高いです", + ";4、引用数量": ";4、引用数量", + "中转网址预览": "中継ウェブサイトのプレビュー", + "批量总结Word文档": "Word文書を一括で要約する", + "建议低于1": "1未満をお勧めします", + "并且将结合上下文内容": "そして文脈内容を結合します", + "整合所有信息": "すべての情報を統合する", + "解析整个Lua项目": "Luaプロジェクト全体を解析する", + "它的作用是……额……就是不起作用": "その役割は……ああ……機能しないことです", + "列表长度为子任务的数量": "リストの長さはサブタスクの数です", + "为实现更多强大的功能做基础": "より強力な機能を実現するための基盤となる", + "请从数据中提取信息": "データから情報を抽出してください", + "至少一个线程任务Token溢出而失败": "少なくとも1つのスレッドタスクトークンがオーバーフローして失敗します", + "是否自动处理token溢出的情况": "トークンのオーバーフローを自動的に処理するかどうか", + "本地LLM模型如ChatGLM的执行方式 CPU/GPU": "ローカルLLMモデルの実行方法、例えばChatGLM CPU/GPU", + "等待中": "待機中", + "任务函数": "タスク関数", + "等文本特殊符号转换为其基本形式来对文本进行归一化处理": "テキストの特殊記号を基本形式に変換してテキストを正規化する", + "集合文件": "集合ファイル", + "替换其他特殊字符": "他の特殊文字を置換する", + "选择LLM模型": "LLMモデルを選択する", + "超过512个": "512を超える", + "装载请求内容": "リクエストコンテンツをロードする", + "根据前后相邻字符的特点": "前後の文字の特徴に基づく", + "GPT模型返回的回复字符串": "GPTモデルからの返信文字列", + "将对话记录history以Markdown格式写入文件中": "対話履歴をMarkdown形式でファイルに書き込む", + "无法连接到该网页": "このウェブページに接続できません", + "**输入参数说明**": "**入力パラメータの説明**", + "设置用户名和密码": "ユーザー名とパスワードを設定する", + "GPT参数": "GPTパラメータ", + "请用代码块输出代码": "コードブロックでコードを出力してください", + "保存当前的对话": "現在の対話を保存する", + "在这里输入分辨率": "解像度をここに入力してください", + "不能正常加载jittorllms的参数!": "jittorllmsのパラメータを正常にロードできません!", + "如果包含数学公式": "数式が含まれている場合", + "子线程任务": "サブスレッドタスク", + ";5、中文摘要翻译": ";5、中国語要約翻訳", + "截断时的颗粒度": "切り捨て時の粒度", + "作为一名中文学术论文写作改进助理": "中国語学術論文の執筆改善アシスタントとして", + "解析网页内容": "ウェブページの内容を解析する", + "作为切分点": "分割点として", + "将长文本分离开来": "長いテキストを分離する", + "总结文章": "記事をまとめる", + "左右布局": "左右レイアウト", + "用户取消了程序": "ユーザーがプログラムをキャンセルしました", + "多线程函数插件中": "マルチスレッド関数プラグインで", + "不能识别的URL!": "認識できないURL!", + "逐个文件分析已完成": "1つずつファイルを分析しました", + "感谢热情的": "熱心な感謝", + "是本次输出": "今回の出力です", + "协议": "プロトコル", + "实验性函数调用出错": "実験的な関数呼び出しエラー", + "例如需要翻译的一段话": "翻訳が必要な例文", + "本地文件地址": "ローカルファイルアドレス", + "更好的UI视觉效果": "より良いUI視覚効果", + "窗口布局": "ウィンドウレイアウト", + "测试功能": "テスト機能", + "前者API2D的": "前者API2Dの", + "请缩减输入文件的数量": "入力ファイルの数を減らしてください", + "随便显示点什么防止卡顿的感觉": "何か表示してカクつきを防止する", + "删除所有历史对话文件": "すべての履歴対話ファイルを削除する", + "是否在输入过长时": "入力が長すぎる場合は", + "只保留文件名节省token": "ファイル名のみを保持してトークンを節約する", + "插件模型的参数": "プラグインモデルのパラメータ", + "若再次失败则更可能是因为输入过长.": "再度失敗した場合、入力が長すぎる可能性が高いです。", + "或历史数据过长. 历史缓存数据已部分释放": "または履歴データが長すぎます。履歴キャッシュデータは一部解放されました", + "虽然不同的代理软件界面不一样": "異なるプロキシソフトウェアのインターフェースは異なりますが", + "英译中": "英語から中国語への翻訳", + "第4次尝试": "4回目の試み", + "批": "バッチ", + "方便调试和定位问题": "デバッグと問題の特定を容易にする", + "IP查询频率受限": "IPクエリ頻度が制限されています", + "则不解析notebook中的Markdown块": "したがって、ノートブックのMarkdownブロックを解析しない", + "英语关键词": "英語のキーワード", + "热更新prompt": "プロンプトのホット更新", + "保存当前对话": "現在の対話を保存する", + "我们用最暴力的方法切割": "最も暴力的な方法で切り分けます", + "Index 0 文本": "インデックス0テキスト", + "最大线程数": "最大スレッド数", + "然后用for+append循环重新赋值": "for+appendループを使用して値を再割り当てする", + "获取文章meta信息": "記事のメタ情報を取得する", + "Pay-as-you-go users的限制是每分钟3500次": "Pay-as-you-goユーザーの制限は1分間に3500回です", + "请注意": "注意してください", + "的转化": "の変換", + "解析Jupyter Notebook文件": "Jupyter Notebookファイルの解析", + "等待多久判定为超时": "タイムアウトとして判定するまでの待機時間", + "自动缩减文本": "テキストを自動的に縮小する", + "返回当前系统中可用的未使用端口": "現在のシステムで使用可能な未使用のポートを返す", + "历史对话输入": "過去の対話入力", + "其他错误": "その他のエラー", + "将错误显示出来": "エラーを表示する", + "请分析此页面中出现的所有文章": "このページに表示されるすべての記事を分析してください", + "将Markdown格式的文本转换为HTML格式": "Markdown形式のテキストをHTML形式に変換する", + "没有 sys_prompt 接口": "sys_promptインターフェースがありません", + "您可以将任意一个文件路径粘贴到输入区": "任意のファイルパスを入力エリアに貼り付けることができます", + "全部文件解析完成": "すべてのファイルの解析が完了しました", + "将匹配到的数字作为替换值": "一致した数字を置換値として使用する", + "单行 + 字体大": "1行+フォント大", + "备份和下载": "バックアップとダウンロード", + "用一张Markdown表格简要描述以下文件的功能": "以下のファイルの機能を簡単にMarkdownテーブルで説明してください", + "问题": "問題", + "请将此部分润色以满足学术标准": "この部分を学術基準に合わせて磨き上げてください", + "你是一位专业的中文学术论文作家": "あなたは専門の中国語学術論文作家です", + "对话历史文件损坏!": "対話履歴ファイルが破損しています!", + "重新URL重新定向": "URLを再度リダイレクトする", + "输入清除键": "入力クリアキー", + "因此把prompt加入 history": "したがって、履歴にpromptを追加します", + "以上文件将被作为输入参数": "上記のファイルは入力パラメータとして使用されます", + "的长度必须小于 2500 个 Token": "長さは2500トークン以下でなければなりません", + "现在": "今", + "不需要再次转化": "再変換する必要はありません", + "注意文章中的每一句话都要翻译": "記事の各文は翻訳する必要があります", + "整理报告的格式": "レポートのフォーマットを整理する", + "请先从插件列表中选择": "まず、プラグインリストから選択してください", + "带token约简功能": "トークン約束機能を備えた", + "请在config文件中修改API密钥之后再运行": "APIキーを変更した後にconfigファイルで実行してください", + "下载编号": "ダウンロード番号", + "是否丢弃掉 不是正文的内容": "本文でない内容を破棄するかどうか", + "以确保一些资源在代码块执行期间得到正确的初始化和清理": "いくつかのリソースがコードブロックの実行中に正しく初期化およびクリーンアップされるようにするため", + "第一步": "ステップ1", + "并将输出部分的Markdown和数学公式转换为HTML格式": "出力部分のMarkdownと数式をHTML形式に変換する", + "当代码输出半截的时候": "コードが半分出力されたとき", + "该文件中主要包含2个函数": "このファイルには主に2つの関数が含まれています", + "提取所有块元的文本信息": "すべてのブロック要素のテキスト情報を抽出する", + "成功读取环境变量": "環境変数の読み取りに成功しました", + "更新完成": "更新が完了しました", + "第 2 步": "ステップ2", + "是否重置": "リセットしますか", + "判定为数据流的结束": "データフローの終了と判断されます", + "和 __exit__": "と __exit__", + "将英文句号": "英文句点を", + "开始接收jittorllms的回复": "jittorllmsの返信を受け取り始める", + "放到每个子线程中分别执行": "それぞれのサブスレッドに配置して実行する", + "作为一个标识而存在": "識別子として存在する", + "你提供了错误的API_KEY": "APIキーが間違っています", + "选择放弃": "キャンセルする", + "请稍等": "お待ちください", + "实时在UI上反馈远程数据流": "リアルタイムでUIにリモートデータストリームをフィードバックする", + "用于负责跨越线程传递已经输出的部分": "スレッドを越えて出力された部分を転送する責任がある", + "例如\\section": "\\セクションのように", + "打印traceback": "トレースバックを印刷する", + "可能需要分组处理": "グループ化処理が必要な場合があります", + "应急食品是“原神”游戏中的角色派蒙的外号": "緊急食品は、「原神」ゲームのキャラクターパイモンのニックネームです", + "表示函数是否成功执行": "関数が正常に実行されたかどうかを示す", + "一般原样传递下去就行": "通常はそのまま渡すだけでよい", + "琥珀色": "琥珀色", + "gpt_log/**/chatGPT对话历史*.html": "gpt_log/**/chatGPT対話履歴*.html", + "jittorllms 没有 sys_prompt 接口": "jittorllmsにはsys_promptインターフェースがありません", + "清除": "クリア", + "小于正文的": "本文より小さい", + "不懂就填localhost或者127.0.0.1肯定错不了": "わからない場合は、localhostまたは127.0.0.1を入力してください。間違いなく失敗します", + "用于与with语句一起使用": "with文と一緒に使用する", + "方便实现复杂的功能逻辑": "複雑な機能ロジックを実現するのに便利", + "必要时再进行切割": "必要に応じて再分割する", + "已失败": "失敗しました", + "不具备多线程能力的函数": "マルチスレッド機能を持たない関数", + "找不到任何java文件": "Javaファイルが見つかりません", + "在代理软件的设置里找": "プロキシソフトウェアの設定で検索する", + "装饰器函数": "デコレータ関数", + "不要用代码块": "コードブロックを使用しないでください", + "输入时用逗号隔开": "入力時にカンマで区切ってください", + "时": "時", + "找图片": "画像を検索する", + "把本项目源代码切换成全英文": "このプロジェクトのソースコードをすべて英語に切り替える", + "Github更新地址": "Githubの更新アドレス", + "警告!API_URL配置选项将被弃用": "警告!API_URL構成オプションは廃止されます", + "一、论文概况": "1.論文概要", + "使用线程池": "スレッドプールを使用する", + "然后请使用Markdown格式封装": "次に、Markdown形式でパッケージ化してください", + "当 输入部分的token占比 小于 全文的一半时": "入力部分のトークンの割合が全体の半分以下の場合", + "更新函数代码": "関数コードを更新する", + "也许会导致低配计算机卡死 ……": "低スペックのコンピューターがクラッシュする可能性があります......", + "sk-此处填API密钥": "sk-ここにAPIキーを入力してください", + "用于实现Python函数插件的热更新": "Python関数プラグインのホット更新を実現するために使用されます", + "缺一不可": "欠かせない", + "回滚代码到原始的浏览器打开函数": "コードを元のブラウザ開く関数にロールバックする", + "先切换模型到openai或api2d": "まず、モデルをopenaiまたはapi2dに切り替えます", + "翻译为中文": "日本語に翻訳する", + "收到": "受信", + "需要配合修改main.py才能生效!": "有効にするには、main.pyを変更する必要があります!", + "但本地存储了以下历史文件": "ただし、次の履歴ファイルがローカルに保存されています", + "一些普通功能模块": "いくつかの一般的な機能モジュール", + "把gradio的运行地址更改到指定的二次路径上": "Gradioの実行アドレスを指定された2次パスに変更する", + "第三组插件": "第3グループのプラグイン", + "避免不小心传github被别人看到": "誤ってGithubにアップロードして他の人に見られるのを避ける", + "这里其实不需要join了": "ここではjoinする必要はありません", + "改为True应用代理": "Trueに変更してプロキシを適用する", + "粉红色": "ピンク色", + "进行学术解答": "学術的な回答を行う", + "用英文逗号分割": "英語のコンマで区切る", + "文件保存到本地": "ローカルにファイルを保存する", + "将markdown转化为好看的html": "Markdownを美しいHTMLに変換する", + "灵活而简洁": "柔軟で簡潔", + "当前软件运行的端口号": "現在のソフトウェアの実行ポート番号", + "其他的排队等待": "その他の待ち行列", + "更新失败": "更新に失敗しました", + "优先级1. 获取环境变量作为配置": "優先度1. 環境変数を設定として取得する", + "Y+回车=确认": "Y+Enter=確認", + "石板色": "スレート色", + "文件读取完成": "ファイルの読み込みが完了しました", + "加载失败!": "読み込みに失敗しました!", + "已经被转化过": "すでに変換されています", + "提取文本块主字体": "テキストブロックの主フォントを抽出する", + "多线程": "マルチスレッド", + "读取pdf文件并清理其中的文本内容": "PDFファイルを読み取り、テキスト内容をクリーンアップする", + "修正值": "修正値", + "抽取可用的api-key": "利用可能なAPIキーを抽出する", + "替换操作": "置換操作", + "尚未完成全部响应": "すべての応答が完了していません", + "不受git管控": "Gitの管理外", + "10个文件为一组": "10ファイルを1グループとする", + "生成图像": "画像を生成する", + "html格式": "HTML形式", + "该文件中主要包含三个函数": "このファイルには主に3つの関数が含まれています", + "质能方程式": "質量エネルギー方程式", + "高级函数插件": "高度な関数プラグイン", + "随变按钮的回调函数注册": "可変ボタンのコールバック関数の登録", + "份搜索结果": "検索結果", + "如果浏览器没有自动打开": "ブラウザが自動的に開かない場合", + "仅支持Win平台": "Winプラットフォームのみサポート", + "模块预热": "モジュールのプレヒート", + "请解释以下代码": "以下のコードを説明してください", + "具备完备的交互功能": "完全なインタラクティブ機能を備えています", + "则给出安装建议": "インストールの提案を行います", + "既可以写": "書くことができます", + "已成功": "成功しました", + "需要用此选项防止高频地请求openai导致错误": "このオプションを使用して、openaiへの高頻度のリクエストを防止し、エラーを引き起こす必要があります", + "则终止": "停止する", + "Call MOSS fail 不能正常加载MOSS的参数": "MOSSのパラメータを正常にロードできないため、Call MOSS fail", + "依次访问网页": "ウェブページに順次アクセスする", + "暂时先这样顶一下": "一時的にこれで対処する", + "将文本按照段落分隔符分割开": "テキストを段落区切り文字で分割する", + "输入中可能存在乱码": "入力には文字化けが含まれる可能性があります", + "重置文件的创建时间": "ファイルの作成時間をリセットする", + "使每个段落之间有两个换行符分隔": "各段落の間に2つの改行を挿入する", + "读取PDF文件": "PDFファイルを読み込む", + "紫罗兰色": "バイオレット", + "如果有": "ある場合", + "使用markdown表格输出结果": "markdownテーブルを使用して結果を出力する", + "不要修改!!": "修正しないでください!!", + "的方式启动": "の方法で起動する", + "循环轮询各个线程是否执行完毕": "各スレッドが完了したかどうかを繰り返しポーリングする", + "大部分时候仅仅为了fancy的视觉效果": "ほとんどの場合、見栄えの良い視覚効果のためだけです", + "结尾除去一次": "最後に1回除去する", + "天蓝色": "スカイブルー", + "原文": "原文", + "远程返回错误": "リモートエラーが返されました", + "功能区显示开关与功能区的互动": "機能エリアの表示スイッチと機能エリアの相互作用", + "生成一个请求线程": "リクエストスレッドを生成する", + "放弃": "放棄する", + "config_private.py放自己的秘密如API和代理网址": "config_private.pyに自分のAPIやプロキシアドレスなどの秘密を入力する", + "完成全部响应": "すべての応答を完了する", + "将双空行": "2つの空行を挿入する", + "第二层列表是对话历史": "2番目のリストは会話履歴です", + "例如 v2**y 和 ss* 的默认本地协议是socks5h": "たとえば、v2 ** yとss *のデフォルトのローカルプロトコルはsocks5hです", + "此版本使用pdfminer插件": "このバージョンではpdfminerプラグインが使用されています", + "下载中": "ダウンロード中", + "多线程润色开始": "マルチスレッドの改善が開始されました", + "这个函数是用来获取指定目录下所有指定类型": "この関数は、指定されたディレクトリ内のすべての指定されたタイプを取得するために使用されます", + "如果要使用jittorllms": "jittorllmsを使用する場合", + "可以多线程并行": "マルチスレッド並列処理が可能です", + "HotReload 的意思是热更新": "HotReloadの意味はホット更新です", + "失败": "失敗しました", + "proxies格式错误": "プロキシの形式が正しくありません", + "您可能选择了错误的模型或请求源": "間違ったモデルまたはリクエストソースを選択した可能性があります", + "内容太长了都会触发token数量溢出的错误": "コンテンツが長すぎると、トークン数がオーバーフローするエラーが発生する可能性があります", + "建议": "提案する", + "可能需要一点时间下载参数": "パラメータのダウンロードに少し時間がかかる場合があります", + "这里是特殊函数插件的高级参数输入区": "ここは特殊関数プラグインの高度なパラメータ入力エリアです", + "ChatGPT综合": "ChatGPT総合", + "等待多线程操作": "マルチスレッド操作を待機しています", + "按Shift+Enter换行": "Shift + Enterで改行", + "inputs 是本次问询的输入": "inputsは今回の問い合わせの入力です", + "单$包裹begin命令时多余": "beginコマンドを単一の$で囲むと余分になります", + "NEWBING_COOKIES未填写或有格式错误": "NEWBING_COOKIESが入力されていないか、形式が正しくありません", + "直接取出来": "直接取り出す", + "懂的都懂": "理解できる人は理解する", + "常规情况下": "通常の場合", + "给出输出文件清单": "出力ファイルリストを提供する", + "如果OpenAI不响应": "OpenAIが応答しない場合", + "尽可能多地保留文本": "テキストをできるだけ多く保持する", + "对话历史列表": "会話履歴リスト", + "不可多线程": "マルチスレッドはできません", + "解析整个CSharp项目": "CSharpプロジェクト全体を解析する", + "此线程失败前收到的回答": "このスレッドが失敗する前に受け取った回答", + "等待MOSS响应中": "MOSSの応答を待っています", + "对每一个源代码文件": "各ソースコードファイルに対して", + "爬取搜索引擎的结果": "検索エンジンの結果をクロールする", + "找不到任何.tex或pdf文件": ".texまたはpdfファイルが見つかりません", + "AutoGPT是什么": "AutoGPTとは何ですか", + "空空如也的输入栏": "空の入力欄", + "除了基础的pip依赖以外": "基本的なpip依存関係以外", + "你必须使用Markdown表格": "Markdownテーブルを使用する必要があります", + "该函数面向希望实现更多有趣功能的开发者": "この関数は、より多くの面白い機能を実装したい開発者を対象としています", + "需要访问谷歌": "Googleにアクセスする必要があります", + "5s之后重启": "5秒後に再起動します", + "删除其中的所有注释": "すべてのコメントを削除する", + "、地址": "、アドレス", + "请使用Markdown": "Markdownを使用してください", + "文件代码是": "ファイルのコードは", + "洋红色": "マゼンタ", + "已配置": "設定済み", + "分析用户提供的谷歌学术": "ユーザーが提供したGoogle Scholarの分析", + "句子结束标志": "文の終わりのマーク", + "尝试导入依赖": "依存関係のインポートを試みる", + "authors获取失败": "著者の取得に失敗しました", + "发送至chatGPT": "chatGPTに送信", + "添加一个萌萌的看板娘": "かわいい看板娘を追加する", + "记录删除注释后的文本": "コメントを削除したテキストを記録する", + "在读取API_KEY时": "API_KEYの読み取り時", + "每一块": "各ブロック", + "避免解析压缩文件": "圧縮ファイルの解析を避ける", + "接下来请你逐文件分析下面的论文文件": "次に、論文ファイルを1つずつ分析してください", + "Endpoint 重定向": "エンドポイントのリダイレクト", + "截断重试": "切り捨て再試行", + "限制的3/4时": "制限の3/4時", + "Windows上还需要安装winrar软件": "Windowsにはwinrarソフトウェアのインストールが必要です", + "插件": "プラグイン", + "输入过长已放弃": "入力が長すぎるため、放棄しました", + "界面更新": "インターフェースの更新", + "每个子任务的输出汇总": "各サブタスクの出力の集計", + "翻译摘要等": "要約などを翻訳する", + "网络卡顿、代理失败、KEY失效": "ネットワークの遅延、プロキシの失敗、KEYの無効化", + "前情提要": "前提の要約", + "additional_fn代表点击的哪个按钮": "additional_fnは、クリックされたボタンを表します", + "再点击按钮": "ボタンを再度クリック", + "等待回复": "返信を待つ", + "$c$是光速": "$c$は光速です", + "触发重置": "リセットをトリガーする", + "借鉴了 https": "httpsを参考にしました", + "追加历史": "履歴を追加する", + "就是临时文件夹的路径": "一時フォルダのパスです", + "开始正式执行任务": "タスクを正式に実行する", + "第一种情况": "1つ目の場合", + "对从 PDF 提取出的原始文本进行清洗和格式化处理": "PDFから抽出された元のテキストをクリーニングおよびフォーマット処理する", + "请结合互联网信息回答以下问题": "以下の問題にインターネット情報を組み合わせて回答してください", + "请你阅读以下学术论文相关的材料": "以下の学術論文に関連する資料を読んでください", + "注意": "注意", + "由于请求gpt需要一段时间": "GPTのリクエストには時間がかかるため", + "可以直接修改对话界面内容": "対話インターフェースの内容を直接変更できます", + "系统输入": "システム入力", + "包括": "含む", + "效果奇好": "効果が非常に良い", + "配置其Path环境变量": "そのPath環境変数を設定する", + "如温度和top_p等": "温度やtop_pなど", + "可选 ↓↓↓": "選択可能 ↓↓↓", + "代理可能无效": "プロキシは無効かもしれません", + "例如": "例えば", + "青色": "青色", + "一言以蔽之": "一言で言えば", + "直接给定文件": "ファイルを直接指定する", + "分组+迭代处理": "グループ化+反復処理", + "文件上传区": "ファイルアップロードエリア", + "3. 如果余量太小了": "3. もし余剰が少なすぎる場合", + "执行时": "実行時", + "localhost意思是代理软件安装在本机上": "localhostは、プロキシソフトウェアがローカルマシンにインストールされていることを意味します", + "下面是对每个参数和返回值的说明": "以下は各パラメーターおよび戻り値の説明です", + "存档文件详情": "アーカイブファイルの詳細", + "找不到任何.ipynb文件": "IPython Notebookファイルが見つかりません", + "里面包含以指定类型为后缀名的所有文件的绝对路径": "指定されたタイプの拡張子を持つすべてのファイルの絶対パスを含む", + "个片段": "フラグメント", + "Index 2 框框": "インデックス2フレーム", + "更换LLM模型/请求源": "LLMモデル/リクエストソースの変更", + "安装Newbing的依赖": "Newbingの依存関係のインストール", + "不会实时显示在界面上": "リアルタイムで画面に表示されない", + "第2步": "ステップ2", + "有$标识的公式符号": "$記号を持つ数式記号", + "读Tex论文写摘要": "Tex論文を読んで要約を書く", + "不详": "詳細不明", + "也可以直接是": "直接であることもできます", + "找不到任何CSharp文件": "CSharpファイルが見つかりません", + "输入其他/无输入+回车=不更新": "他の入力/入力なし+ Enter = 更新しない", + "然后再写一段英文摘要": "そして、もう一つの英文要約を書く", + "捕捉函数f中的异常并封装到一个生成器中返回": "関数fで例外をキャッチして、ジェネレータにエンコードして返す", + "重试几次": "数回リトライする", + "线程": "スレッド", + "程序终止": "プログラムの終了", + "用户提示": "ユーザーヒント", + "条": "条項", + "刷新界面用 yield from update_ui": "UIを更新するには、yield from update_uiを使用します", + "如何理解传奇?": "伝説を理解するには?", + "请避免混用多种jittor模型": "複数のjittorモデルを混在させないでください", + "说": "言う", + "您可以请再次尝试.": "もう一度お試しください。", + "尝试识别section": "セクションを識別しようとしています", + "警告!被保存的对话历史可以被使用该系统的任何人查阅": "警告!保存された対話履歴は、このシステムを使用する誰でも閲覧できます", + "Index 1 字体": "フォント1のインデックス", + "分解代码文件": "コードファイルの分解", + "越新越好": "新しいほど良い", + "当历史上下文过长时": "履歴のコンテキストが長すぎる場合", + "这是第": "これは第", + "网络代理状态": "ネットワークプロキシの状態", + "用于数据流可视化": "データフローの可視化に使用される", + "整理history": "履歴の整理", + "一-鿿": "一-鿿", + "所有文件都总结完成了吗": "すべてのファイルが要約されていますか?", + "默认False": "デフォルトはFalse", + "这是必应": "これはBingです", + "子进程Worker": "サブプロセスWorker", + "重试中": "再試行中", + "正常对话时使用": "通常の会話時に使用する", + "直接清除历史": "履歴を直接クリアする", + "处理数据流的主体": "データフローの本体を処理する", + "试着补上后个": "後のものを試してみてください", + "功能、贡献者": "機能、貢献者", + "请先转化为.docx格式": "まず.docx形式に変換してください", + "可用clear将其清空": "clearを使用してクリアできます", + "需要预先pip install rarfile": "rarfileを事前にpip installする必要があります", + "输入已识别为openai的api_key": "openaiのapi_keyとして認識された入力", + "先上传存档或输入路径": "アーカイブをアップロードするか、パスを入力してください", + "则先将公式转换为HTML格式": "公式をHTML形式に変換してください", + "需要读取和清理文本的pdf文件路径": "テキストを読み取り、クリーンアップする必要があるpdfファイルのパス", + "自动定位": "自動位置決め", + "api2d 正常完成": "api2dが正常に完了しました", + "获取页面上的文本信息": "ページからテキスト情報を取得する", + "日": "日", + "已经对该文章的所有片段总结完毕": "記事のすべてのセグメントを要約しました", + "搜集初始信息": "初期情報を収集する", + "本组文件为": "このグループのファイルは", + "正常": "正常", + "比如introduction": "例えば、導入", + "并在被装饰的函数上执行": "デコレートされた関数で実行する", + "文件路径列表": "ファイルパスリスト", + "由于输入长度限制": "入力長の制限のため", + "祖母绿": "エメラルドグリーン", + "并替换为空字符串": "空の文字列に置き換える", + "存入": "保存する", + "OpenAI绑定信用卡可解除频率限制": "OpenAIはクレジットカードをバインドして頻度制限を解除できます", + "获取预处理函数": "前処理関数を取得する", + "Bad forward key. API2D账户额度不足": "不正なフォワードキー。API2Dアカウントの残高が不足しています", + "源文件太多": "ソースファイルが多すぎます", + "谷歌学术检索助手": "Google学術検索アシスタント", + "方法则会被调用": "メソッドが呼び出されます", + "默认是.md": "デフォルトは.mdです", + "请开始多线程操作": "マルチスレッド操作を開始してください", + "蓝色": "青色", + "如果是网络上的文件": "ネットワーク上のファイルの場合", + "开始下一个循环": "次のループを開始する", + "更换模型 & SysPrompt & 交互界面布局": "モデルの変更&SysPrompt&インタラクティブインターフェイスレイアウト", + "二、论文翻译": "2.論文翻訳", + "再失败就没办法了": "もう失敗したらどうしようもない", + "解析整个Java项目": "Javaプロジェクト全体を解析する", + "只裁剪历史": "履歴のトリミングのみ", + "基础功能区": "基本機能エリア", + "gradio可用颜色列表": "利用可能なGradioの色のリスト", + "的高级参数说明": "高度なパラメータの説明", + "是否在arxiv中": "arxivにあるかどうか", + "提交": "提出", + "回车退出": "Enterで終了", + "详情见get_full_error的输出": "get_full_errorの出力を参照してください", + "您可以随时在history子文件夹下找回旧版的程序": "いつでもhistoryサブフォルダーで以前のバージョンのプログラムを取得できます", + "手动指定和筛选源代码文件类型": "ソースコードファイルタイプを手動で指定およびフィルタリングする", + "更多函数插件": "その他の関数プラグイン", + "看门狗的耐心": "監視犬の忍耐力", + "然后yeild出去": "そして出力する", + "拆分过长的IPynb文件": "長すぎるIPynbファイルを分割する", + "1. 把input的余量留出来": "1. 入力の余裕を残す", + "请求超时": "リクエストがタイムアウトしました", + "是之前的对话列表": "以前の会話リストです", + "有些文章的正文部分字体大小不是100%统一的": "一部の記事の本文のフォントサイズが100%統一されていない場合があります", + "加载参数": "パラメータをロードする", + "在汇总报告中隐藏啰嗦的真实输入": "冗長な実際の入力をサマリーレポートで非表示にする", + "获取完整的从Openai返回的报错": "Openaiから返された完全なエラーを取得する", + "灰色": "グレー", + "表示要搜索的文件类型": "検索するファイルタイプを示します", + "亲人两行泪": "家族の2行の涙", + "等待NewBing响应中": "NewBingの応答を待っています", + "请复制并转到以下URL": "以下のURLをコピーして移動してください", + "开始接收chatglm的回复": "chatglmの返信を受け取り始めます", + "第6步": "ステップ6", + "可调节线程池的大小避免openai的流量限制错误": "OpenAIのトラフィック制限エラーを回避するためにスレッドプールのサイズを調整できます", + "等待响应": "レスポンスを待っています", + "月": "月", + "裁剪时": "トリミング中", + "异步任务结束": "非同期タスクが終了しました", + "正在处理中": "処理中", + "润色": "校正中", + "提取精炼信息": "情報の抽出と精製", + "您可以试试让AI写一个Related Works": "AIにRelated Worksを書かせてみることができます", + "主进程统一调用函数接口": "メインプロセスが関数インターフェースを統一的に呼び出します", + "再例如一个包含了待处理文件的路径": "処理待ちのファイルを含むパスの例", + "负责把学术论文准确翻译成中文": "学術論文を正確に中国語に翻訳する責任があります", + "函数的说明请见 request_llm/bridge_all.py": "関数の説明については、request_llm/bridge_all.pyを参照してください", + "然后回车提交": "そしてEnterを押して提出してください", + "防止爆token": "トークンの爆発を防止する", + "Latex项目全文中译英": "LaTeXプロジェクト全文の中国語から英語への翻訳", + "递归地切割PDF文件": "PDFファイルを再帰的に分割する", + "使用该模块需要额外依赖": "このモジュールを使用するには、追加の依存関係が必要です", + "放到history中": "履歴に保存する", + "汇总报告如何远程获取": "サマリーレポートをリモートで取得する方法", + "清空历史": "履歴をクリアする", + "代理所在地查询超时": "プロキシの場所のクエリがタイムアウトしました", + "列表": "リスト", + "检测到程序终止": "プログラムの終了が検出されました", + "重命名文件": "ファイル名を変更する", + "用&符号分隔": "&記号で分割する", + "LLM的内部调优参数": "LLMの内部チューニングパラメータ", + "建议您复制一个config_private.py放自己的秘密": "config_private.pyをコピーして、自分の秘密を入れてください", + "$m$是质量": "質量を表します", + "具备多线程调用能力的函数": "マルチスレッド呼び出し機能を備えた関数", + "将普通文本转换为Markdown格式的文本": "通常のテキストをMarkdown形式のテキストに変換する", + "rar和7z格式正常": "rarおよび7z形式が正常である", + "使用wraps": "wrapsを使用する", + "带超时倒计时": "タイムアウトカウントダウン付き", + "准备对工程源代码进行汇总分析": "プロジェクトソースコードの集計分析を準備する", + "未知": "不明", + "第n组插件": "n番目のプラグイン", + "ChatGLM响应异常": "ChatGLMの応答が異常です", + "使用Unsplash API": "Unsplash APIを使用する", + "读取默认值作为数据类型转换的参考": "デフォルト値を読み取り、データ型変換の参考にする", + "请更换为API_URL_REDIRECT配置": "API_URL_REDIRECT構成に変更してください", + "青蓝色": "青色と青緑色", + "如果中文效果不理想": "中国語の効果が理想的でない場合", + "Json异常": "Json例外", + "chatglm 没有 sys_prompt 接口": "chatglmにはsys_promptインターフェースがありません", + "停止": "停止", + "的文件": "のファイル", + "可能处于折叠状态": "折りたたみ状態になっている可能性があります", + "但还没输出完后面的": "しかし、まだ後ろの出力が完了していません", + "单线程方法": "シングルスレッドメソッド", + "不支持通过环境变量设置!": "環境変数を介して設定することはできません!", + "“喂狗”": "「犬に餌をやる」", + "获取设置": "設定を取得する", + "Json解析不合常规": "Json解析が通常と異なる", + "请对下面的程序文件做一个概述文件名是": "以下のプログラムファイルについて概要を説明してください。ファイル名は", + "输出": "出力", + "这个函数用stream的方式解决这个问题": "この関数はストリームを使用してこの問題を解決します", + "根据 heuristic 规则": "ヒューリスティックルールに従って", + "假如重启失败": "再起動に失敗した場合", + "然后在用常规的": "その後、通常の方法を使用する", + "加入下拉菜单中": "ドロップダウンメニューに追加する", + "正在分析一个项目的源代码": "プロジェクトのソースコードを分析しています", + "从以上搜索结果中抽取信息": "上記の検索結果から情報を抽出する", + "安全第一条": "安全が最優先です", + "并相应地进行替换": "適切に置換する", + "第5次尝试": "5回目の試み", + "例如在windows cmd中": "例えば、Windowsのcmdで", + "打开你的*学*网软件查看代理的协议": "あなたの*学*ウェブソフトウェアを開いて、プロキシプロトコルを確認する", + "用多种方式组合": "複数の方法を組み合わせる", + "找不到任何.h头文件": ".hヘッダーファイルが見つかりません", + "是本次问询的输入": "この問い合わせの入力です", + "并替换为回车符": "改行文字に置換する", + "不能自定义字体和颜色": "フォントと色をカスタマイズできません", + "点击展开“文件上传区”": "「ファイルアップロードエリア」をクリックして展開する", + "高危设置!通过修改此设置": "高危険設定!この設定を変更することで", + "开始重试": "再試行を開始する", + "你是一个学术翻译": "あなたは学術翻訳者です", + "表示要搜索的文件或者文件夹路径或网络上的文件": "検索するファイルまたはフォルダのパスまたはネットワーク上のファイルを示す", + "没办法了": "どうしようもない", + "优先级3. 获取config中的配置": "優先度3. configから設定を取得する", + "读取配置文件": "設定ファイルを読み込む", + "查询版本和用户意见": "バージョンとユーザーの意見を検索する", + "提取摘要": "要約を抽出する", + "在gpt输出代码的中途": "GPTがコードを出力する途中で", + "如256x256": "256x256のように", + "概括其内容": "内容を要約する", + "剩下的情况都开头除去": "残りの場合はすべて先頭を除去する", + "至少一个线程任务意外失败": "少なくとも1つのスレッドタスクが予期しない失敗をした", + "完成情况": "完了状況", + "输入栏用户输入的文本": "入力欄にユーザーが入力したテキスト", + "插件调度异常": "プラグインスケジューリングの例外", + "插件demo": "プラグインデモ", + "chatGPT分析报告": "chatGPT分析レポート", + "以下配置可以优化体验": "以下の設定で体験を最適化できます", + "是否一键更新代码": "コードをワンクリックで更新するかどうか", + "pip install pywin32 用于doc格式": "doc形式に使用するためのpip install pywin32", + "如果同时InquireMultipleLargeLanguageModels": "同時にInquireMultipleLargeLanguageModelsを使用する場合", + "整理反复出现的控件句柄组合": "繰り返し出現するコントロールハンドルの組み合わせを整理する", + "可能会导致严重卡顿": "重度のカクつきを引き起こす可能性がある", + "程序完成": "プログラム完了", + "在装饰器内部": "デコレーターの内部で", + "函数插件功能": "関数プラグイン機能", + "把完整输入-输出结果显示在聊天框": "完全な入力-出力結果をチャットボックスに表示する", + "对全文进行概括": "全文を要約する", + "HotReload的装饰器函数": "HotReloadのデコレーター関数", + "获取tokenizer": "tokenizerを取得する", + "则随机选取WEB端口": "WEBポートをランダムに選択する", + "解析项目": "プロジェクトを解析する", + "并且不要有反斜线": "そしてバックスラッシュを含めないでください", + "汇总报告已经添加到右侧“文件上传区”": "サマリーレポートはすでに右側の「ファイルアップロードエリア」に追加されています", + "装饰器函数返回内部函数": "デコレーター関数は内部関数を返します", + "根据以上你自己的分析": "上記の分析に基づいて自分自身を分析する", + "只输出代码": "コードのみを出力する", + "并执行函数的新版本": "関数の新バージョンを実行する", + "请不吝PR!": "PRを遠慮なく提出してください!", + "你好": "こんにちは", + "或者您没有获得体验资格": "またはあなたは体験資格を持っていない", + "temperature是chatGPT的内部调优参数": "temperatureはchatGPTの内部調整パラメータです", + "结果写入文件": "結果をファイルに書き込む", + "输入区": "入力エリア", + "这段代码定义了一个名为DummyWith的空上下文管理器": "このコードは、DummyWithという名前の空のコンテキストマネージャを定義しています", + "加载需要一段时间": "読み込みには時間がかかります", + "和端口": "およびポート", + "当你想发送一张照片时": "写真を送信したい場合", + "为了更好的效果": "より良い効果を得るために", + "逻辑较乱": "ロジックがやや乱雑です", + "调用路径参数已自动修正到": "呼び出しパスのパラメータが自動的に修正されました", + "地址🚀": "アドレス🚀", + "也可以获取它": "それを取得することもできます", + "pip install python-docx 用于docx格式": "pip install python-docxはdocx形式に使用されます", + "该模板可以实现ChatGPT联网信息综合": "このテンプレートは、ChatGPTネットワーク情報の総合を実現できます", + "的标识": "のマーク", + "取决于": "に依存する", + "ChatGLM尚未加载": "ChatGLMはまだロードされていません", + "处理多模型并行等细节": "複数のモデルの並列処理などの詳細を処理する", + "代理与自动更新": "プロキシと自動更新", + "摘要在 .gs_rs 中的文本": ".gs_rs中の要約テキスト", + "补上后面的": "後ろに補完する", + "输入了已经经过转化的字符串": "変換済みの文字列が入力されました", + "对整个Latex项目进行润色": "全体のLatexプロジェクトを磨き上げる", + "即将更新pip包依赖……": "pipパッケージ依存関係を更新する予定...", + "ダウンロードしたpdfファイルが失敗しました": "PDFファイルのダウンロードに失敗しました", + "何もありません": "何もありません", + "次の文字が大文字である場合": "次の文字が大文字である場合", + "yield一次以刷新前端页面": "フロントエンドページを更新するためにyieldを1回実行します", + "入力部分が自由すぎる": "入力部分が自由すぎる", + "中文Latex项目全文润色": "中国語のLatexプロジェクトの全文を校正する", + "ファイルを読み込む": "ファイルを読み込む", + "プライバシー保護に注意してください!": "プライバシー保護に注意してください!", + "ただし、途中でネットワークケーブルが切断されることを避けるために内部でストリームを使用する": "ただし、途中でネットワークケーブルが切断されることを避けるために内部でストリームを使用する", + "上下レイアウト": "上下レイアウト", + "historyは以前の会話リストです": "historyは以前の会話リストです", + "pdfファイルを読み込む": "pdfファイルを読み込む", + "同時に長い文を分解する": "同時に長い文を分解する", + "Unsplash APIを使用する": "Unsplash APIを使用する", + "各llmモデルに単体テストを実行する": "各llmモデルに単体テストを実行する", + "ローカルで使用する場合はお勧めしません": "ローカルで使用する場合はお勧めしません", + "亜鉛色": "亜鉛色", + "論文": "論文", + "1つの大規模言語モデルのみに問い合わせる場合": "1つの大規模言語モデルのみに問い合わせる場合", + "会話履歴": "会話履歴", + "入力をトリミングする": "入力をトリミングする", + "第2部分": "第2部分", + "gpt4は現在、申請が承認された人のみに公開されています": "gpt4は現在、申請が承認された人のみに公開されています", + "以下は学術論文の基本情報です": "以下は学術論文の基本情報です", + "出力が不完全になる原因となる": "出力が不完全になる原因となる", + "ハイフンを使って": "ハイフンを使って", + "シングルスレッド": "シングルスレッド", + "请先把模型切换至gpt-xxxx或者api2d-xxxx": "Please switch the model to gpt-xxxx or api2d-xxxx first.", + "路径或网址": "Path or URL", + "*代表通配符": "* represents a wildcard", + "块元提取": "Block element extraction", + "使用正则表达式查找注释": "Use regular expressions to find comments", + "但推荐上传压缩文件": "But it is recommended to upload compressed files", + "实现更换API_URL的作用": "Implement the function of changing API_URL", + "从摘要中提取高价值信息": "Extract high-value information from the summary", + "警告": "Warning", + "ChatGLM消耗大量的内存": "ChatGLM consumes a lot of memory", + "历史中哪些事件发生在": "Which events happened in history", + "多线": "Multi-threaded", + "石头色": "Stone color", + "NewBing响应缓慢": "NewBing responds slowly", + "生成一份任务执行报告": "Generate a task execution report", + "用空格或段落分隔符替换原换行符": "Replace the original line break with a space or paragraph separator", + "其他小工具": "Other small tools", + "当前问答": "Current Q&A", + "支持任意数量的llm接口": "Support any number of llm interfaces", + "在传递chatbot的过程中不要将其丢弃": "Do not discard it in the process of passing chatbot", + "2. 把输出用的余量留出来": "2. Leave room for the output", + "稍后可能需要再试一次": "May need to try again later", + "显示/隐藏功能区": "Show/hide the function area", + "拆分过长的latex文件": "Split overly long latex files", + "子进程执行": "Subprocess execution", + "排除了以上两个情况": "Excludes the above two cases", + "您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!": "You will completely expose your API-KEY and conversation privacy to the intermediary you set!", + "表示文件所在的文件夹路径": "Indicates the folder path where the file is located", + "获取正文主字体": "本文フォントを取得する", + "中文学术润色": "中国語の学術的な磨きをかける", + "i_say_show_user=给用户看的提问": "ユーザーに表示される質問", + "需要清除首尾空格": "先頭と末尾の空白を削除する必要があります", + "请你作为一个学术翻译": "学術翻訳者としてお願いします", + "中译英": "中国語から英語への翻訳", + "chatGPT的内部调优参数": "chatGPTの内部調整パラメータ", + "test_解析一个Cpp项目": "Cppプロジェクトの解析をテストする", + "默认开启": "デフォルトで有効になっています", + "第三方库": "サードパーティのライブラリ", + "如果需要在二级路径下运行": "2次パスで実行する必要がある場合", + "chatGPT 分析报告": "chatGPT分析レポート", + "不能正常加载ChatGLM的参数!": "ChatGLMのパラメータを正常にロードできません!", + "并定义了一个名为decorated的内部函数": "内部関数decoratedを定義しました", + "所有线程同时开始执行任务函数": "すべてのスレッドが同時にタスク関数を開始します", + "Call jittorllms fail 不能正常加载jittorllms的参数": "jittorllmsのパラメータを正常にロードできません", + "任何文件": "任意のファイル", + "分解连字": "リガチャの分解", + "如果子任务非常多": "サブタスクが非常に多い場合", + "如果要使用ChatGLM": "ChatGLMを使用する場合", + "**函数功能**": "**関数の機能**", + "等待jittorllms响应中": "jittorllmsの応答を待っています", + "查找语法错误": "構文エラーを検索する", + "尝试识别段落": "段落を認識しようとする", + "下载PDF文档": "PDF文書をダウンロードする", + "搜索页面中": "ページ内を検索する", + "然后回车键提交后即可生效": "Enterキーを押して送信すると有効になります", + "请求处理结束": "リクエスト処理が終了しました", + "按钮见functional.py": "functional.pyにあるボタン", + "提交按钮、重置按钮": "送信ボタン、リセットボタン", + "网络错误": "ネットワークエラー", + "第10步": "10番目のステップ", + "问号": "質問符", + "两个指令来安装jittorllms的依赖": "jittorllmsの依存関係をインストールするための2つの命令", + "询问多个GPT模型": "複数のGPTモデルについて問い合わせる", + "增强报告的可读性": "レポートの可読性を向上させる", + "如果缺少依赖": "依存関係が不足している場合", + "比如你是翻译官怎样怎样": "例えば、あなたが翻訳者である場合の方法", + "MOSS尚未加载": "MOSSがまだロードされていません", + "第一部分": "第1部分", + "的分析如下": "の分析は以下の通りです", + "解决一个mdx_math的bug": "mdx_mathのバグを解決する", + "底部输入区": "下部の入力エリア", + "函数插件输入输出接驳区": "関数プラグインの入出力接続エリア", + "打开浏览器": "ブラウザを開く", + "免费用户填3": "無料ユーザーは3を入力してください", + "版": "版", + "不需要重启程序": "プログラムを再起動する必要はありません", + "正在查找对话历史文件": "会話履歴ファイルを検索しています", + "内部函数通过使用importlib模块的reload函数和inspect模块的getmodule函数来重新加载并获取函数模块": "内部関数は、importlibモジュールのreload関数とinspectモジュールのgetmodule関数を使用して、関数モジュールを再ロードおよび取得します", + "解析整个C++项目": "C++プロジェクト全体を解析する", + "函数热更新是指在不停止程序运行的情况下": "関数のホットアップデートとは、プログラムの実行を停止せずに行うことを指します", + "代码高亮": "コードのハイライト", + "否则在回复时会因余量太少出问题": "そうしないと、返信時に余裕が少なすぎて問題が発生する可能性があります", + "该函数详细注释已添加": "この関数には詳細な注釈が追加されました", + "默认允许多少路线程同时访问OpenAI": "デフォルトでOpenAIに同時にアクセスできるスレッド数はいくつですか", + "网络的远程文件": "リモートファイルのネットワーク", + "搜索需要处理的文件清单": "処理する必要のあるファイルリストを検索する", + "提交任务": "タスクを提出する", + "根据以上的对话": "上記の対話に基づいて", + "提示": "ヒント", + "然后重试": "その後、再試行してください", + "只输出转化后的英文代码": "変換後の英語コードのみを出力する", + "GPT返回的结果": "GPTが返す結果", + "您的 API_KEY 是": "あなたのAPI_KEYは", + "给gpt的静默提醒": "GPTに対するサイレントリマインダー", + "先寻找到解压的文件夹路径": "解凍されたフォルダのパスを最初に検索する", + "”补上": "補う", + "清除重复的换行": "重複する改行をクリアする", + "递归": "再帰", + "把已经获取的数据显示出去": "取得したデータを表示する", + "参数": "パラメータ", + "已完成": "完了しました", + "方法会在代码块被执行前被调用": "メソッドはコードブロックが実行される前に呼び出されます", + "第一次运行": "最初の実行", + "does not exist. 模型不存在": "存在しません。モデルが存在しません", + "每个子任务展现在报告中的输入": "レポートに表示される各サブタスクの入力", + "response中会携帯traceback报错信息": "responseにはtracebackエラー情報が含まれます", + "在实验过程中发现调用predict_no_ui处理长文档时": "実験中に、predict_no_uiを呼び出して長いドキュメントを処理することがわかりました", + "发送图片时": "画像を送信するとき", + "如果换行符前为句子结束标志": "改行記号の前に文の終わりの記号がある場合", + "获取图片URL": "画像のURLを取得する", + "提取字体大小是否近似相等": "フォントサイズを抽出して近似しているかどうかを確認する", + "填写之前不要忘记把USE_PROXY改成True": "記入する前に、USE_PROXYをTrueに変更することを忘れないでください", + "列举两条并发送相关图片": "List two and send related pictures", + "第一层列表是子任务分解": "The first level list is subtask decomposition", + "把newbing的长长的cookie放到这里": "Put Newbing's long cookie here", + "不输入即全部匹配": "No input means all matches", + "不输入代表全部匹配": "No input means all matches", + "请对下面的文章片段用中文做一个概述": "Please summarize the following article fragment in Chinese", + "迭代之前的分析": "Analysis before iteration", + "返回一个新的字符串": "Return a new string", + "可同时填写多个API-KEY": "Multiple API-KEYs can be filled in at the same time", + "乱七八糟的后处理": "Messy post-processing", + "然后回答问题": "Then answer the question", + "是否唤起高级插件参数区": "Whether to call the advanced plugin parameter area", + "判定为不是正文": "Determined as not the main text", + "输入区2": "Input area 2", + "来自EdgeGPT.py": "From EdgeGPT.py", + "解释代码": "Explain the code", + "直接在输入区键入api_key": "Enter the api_key directly in the input area", + "文章内容是": "The content of the article is", + "也可以在问题输入区输入临时的api-key": "You can also enter a temporary api-key in the question input area", + "不需要高级参数": "No advanced parameters required", + "下面是一些学术文献的数据": "Below are some data on academic literature", + "整理结果": "Organized results", + "不能加载Newbing组件": "Cannot load Newbing component", + "仅仅服务于视觉效果": "Only serves visual effects", + "主进程执行": "Main process execution", + "请耐心完成后再提交新问题": "Please submit a new question after completing it patiently", + "找不到任何.docx或doc文件": "Cannot find any .docx or .doc files", + "修改函数插件代码后": "After modifying the function plugin code", + "TGUI不支持函数插件的实现": "TGUIは関数プラグインの実装をサポートしていません", + "不要修改任何LaTeX命令": "LaTeXコマンドを変更しないでください", + "安装方法": "インストール方法", + "退出": "終了", + "由于您没有设置config_private.py私密配置": "config_private.pyのプライベート設定が設定されていないため", + "查询代理的地理位置": "プロキシの地理的位置を検索する", + "Token限制下的截断与处理": "トークン制限下の切り捨てと処理", + "python 版本建议3.9+": "Pythonバージョン3.9+を推奨します", + "如果是.doc文件": ".docファイルの場合", + "跨平台": "クロスプラットフォーム", + "输入谷歌学术搜索页url": "Google Scholar検索ページのURLを入力してください", + "高级参数输入区的显示提示": "高度なパラメータ入力エリアの表示ヒント", + "找不到任何.md文件": ".mdファイルが見つかりません", + "请对下面的文章片段用中文做概述": "以下の記事の断片について、中国語で概要を説明してください", + "用户界面对话窗口句柄": "ユーザーインターフェースの対話ウィンドウハンドル", + "chatGPT对话历史": "chatGPTの対話履歴", + "基础功能区的回调函数注册": "基本機能エリアのコールバック関数の登録", + "根据给定的匹配结果来判断换行符是否表示段落分隔": "与えられた一致結果に基づいて、改行記号が段落の区切りを表すかどうかを判断する", + "第2次尝试": "2回目の試み", + "布尔值": "ブール値", + "您既可以在config.py中修改api-key": "config.pyでapi-keyを変更することができます", + "清理后的文本内容字符串": "クリーンアップされたテキストコンテンツ文字列", + "去除短块": "短いブロックを削除する", + "利用以上信息": "上記情報を利用する", + "从而达到实时更新功能": "これにより、リアルタイム更新機能が実現されます", + "第5步": "5番目のステップ", + "载入对话历史文件": "対話履歴ファイルを読み込む", + "修改它": "それを変更する", + "正在执行一些模块的预热": "モジュールのプレウォームを実行しています", + "避免包括解释": "解釈を含めないようにする", + "使用 lru缓存 加快转换速度": "変換速度を高速化するためにlruキャッシュを使用する", + "与gradio版本和网络都相关": "gradioバージョンとネットワークに関連しています", + "以及代理设置的格式是否正确": "およびプロキシ設定の形式が正しいかどうか", + "OpenAI所允许的最大并行过载": "OpenAIが許可する最大並列過負荷", + "代码开源和更新": "コードのオープンソース化と更新", + "网络等出问题时": "ネットワークなどに問題が発生した場合", + "1、英文题目;2、中文题目翻译;3、作者;4、arxiv公开": "1.英語のタイトル;2.中国語のタイトルの翻訳;3.著者;4.arxiv公開", + "发送 GET 请求": "GETリクエストを送信する", + "向chatbot中添加简单的意外错误信息": "チャットボットに簡単な予期しないエラーメッセージを追加する", + "代理配置": "プロキシの設定", + "这个函数运行在主进程": "この関数はメインプロセスで実行されます", + "找不到任何lua文件": "luaファイルが見つかりません", + "降低请求频率中": "リクエスト頻度を低下させる", + "迭代地历遍整个文章": "記事全体を反復処理する", + "否则将导致每个人的NewBing问询历史互相渗透": "さもないと、各人のNewBingクエリ履歴が相互に浸透する可能性があります", + "并修改代码拆分file_manifest列表": "コードを変更して、file_manifestリストを分割する", + "第 0 步": "ステップ0", + "提高限制请查询": "制限を引き上げるには、クエリを確認してください", + "放在这里": "ここに置いてください", + "红色": "赤色", + "上传本地文件可供红色函数插件调用": "ローカルファイルをアップロードして、赤い関数プラグインを呼び出すことができます", + "正在加载tokenizer": "トークナイザーをロードしています", + "非OpenAI官方接口的出现这样的报错": "OpenAI公式インターフェース以外でこのようなエラーが発生する", + "跨线程传递": "スレッド間での伝達", + "代码直接生效": "コードが直接有効になる", + "基本信息": "基本情報", + "默认": "#", + "首先你在英文语境下通读整篇论文": "最初に、論文全体を英語で読みます", + "的第": "の", + "第9步": "9番目のステップ", + "gpt模型参数": "GPTモデルのパラメータ", + "等待": "待つ", + "一次性完成": "一度に完了する", + "收到以下文件": "以下のファイルを受け取りました", + "生成正则表达式": "正規表現を生成する", + "参数简单": "パラメータは簡単です", + "设置一个token上限": "トークンの上限を設定する", + "i_say=真正给chatgpt的提问": "i_say=ChatGPTに本当の質問をする", + "请刷新界面重试": "ページを更新して再試行してください", + "对程序的整体功能和构架重新做出概括": "プログラムの全体的な機能と構造を再概要化する", + "以下是一篇学术论文中的一段内容": "以下は学術論文の一部です", + "您可以调用“LoadConversationHistoryArchive”还原当下的对话": "「LoadConversationHistoryArchive」を呼び出して、現在の会話を復元できます", + "读取Markdown文件": "Markdownファイルを読み込む", + "最终": "最終的に", + "或显存": "またはグラフィックスメモリ", + "如果最后成功了": "最後に成功した場合", + "例如chatglm&gpt-3.5-turbo&api2d-gpt-4": "例えば、chatglm&gpt-3.5-turbo&api2d-gpt-4", + "使用中文回答我的问题": "中国語で私の質問に答えてください", + "我需要你找一张网络图片": "インターネット上の画像を探してください", + "我上传了文件": "ファイルをアップロードしました", + "从而实现分批次处理": "バッチ処理を実現するため", + "我们先及时地做一次界面更新": "まず、タイムリーに画面を更新します", + "您还需要运行": "実行する必要があります", + "该函数只有20多行代码": "その関数には20行以上のコードしかありません", + "但端口号都应该在最显眼的位置上": "しかし、ポート番号は常に目立つ場所にある必要があります", + "Token溢出数": "Tokenオーバーフロー数", + "private_upload里面的文件名在解压zip后容易出现乱码": "private_upload内のファイル名は、zipを解凍すると文字化けしやすいです", + "以下“红颜色”标识的函数插件需从输入区读取路径作为参数": "以下の「赤色」で表示された関数プラグインは、パスを入力エリアから引数として読み取る必要があります", + "如果WEB_PORT是-1": "WEB_PORTが-1の場合", + "防止回答时Token溢出": "回答時のTokenオーバーフローを防止する", + "第三种情况": "第3の場合", + "前言": "序文", + "打开文件": "ファイルを開く", + "用于输入给GPT的前提提示": "GPTに入力するための前提条件のヒント", + "返回值": "戻り値", + "请查收": "受信箱を確認してください", + "看门狗": "ウォッチドッグ", + "返回重试": "戻って再試行する", + "裁剪input": "inputをトリミングする", + "字符串": "文字列", + "以下是信息源": "以下は情報源です", + "你是一名专业的学术教授": "あなたは専門の学術教授です", + "处理中途中止的情况": "途中で処理を中止する場合", + "清除历史": "履歴をクリアする", + "完成了吗": "完了しましたか", + "接收文件后与chatbot的互动": "ファイルを受信した後、chatbotとのインタラクション", + "插件初始化中": "プラグインの初期化中", + "系统静默prompt": "システム静黙プロンプト", + "上下文管理器必须实现两个方法": "コンテキストマネージャは2つのメソッドを実装する必要があります", + "你需要翻译以下内容": "以下の内容を翻訳する必要があります", + "的api-key": "のAPIキー", + "收到消息": "メッセージを受信しました", + "将插件中出的所有问题显示在界面上": "すべての問題をインターフェースに表示する", + "正在提取摘要并下载PDF文档……": "要約を抽出し、PDFドキュメントをダウンロードしています...", + "不能达到预期效果": "期待される効果が得られない", + "清除当前溢出的输入": "現在のオーバーフロー入力をクリアする", + "当文件被上传时的回调函数": "ファイルがアップロードされたときのコールバック関数", + "已重置": "リセットされました", + "无": "なし", + "总结输出": "出力をまとめる", + "第 3 步": "ステップ3", + "否则可能导致显存溢出而造成卡顿": "それ以外の場合、グラフィックスメモリのオーバーフローが発生し、フリーズが発生する可能性があります", + "gradio的inbrowser触发不太稳定": "Gradioのinbrowserトリガーはあまり安定していません", + "发送至LLM": "LLMに送信", + "异步任务开始": "非同期タスクが開始されました", + "和openai的连接容易断掉": "OpenAIとの接続が簡単に切断される", + "用一句话概括程序的整体功能": "プログラムの全体的な機能を一言で表す", + "等待NewBing响应": "NewBingの応答を待っています", + "会自动使用已配置的代理": "事前に設定されたプロキシを自動的に使用します", + "带Cookies的Chatbot类": "Cookieを持つChatbotクラス", + "安装MOSS的依赖": "MOSSの依存関係をインストールする", + "或者": "または", + "函数插件-下拉菜单与随变按钮的互动": "関数プラグイン-ドロップダウンメニューと可変ボタンの相互作用", + "完成": "完了", + "这段代码来源 https": "このコードの出典:https", + "年份获取失败": "年を取得できませんでした", + "你必须逐个文献进行处理": "文献を1つずつ処理する必要があります", + "文章极长": "記事が非常に長い", + "选择处理": "処理を選択する", + "进入任务等待状态": "タスク待機状態に入る", + "它可以作为创建新功能函数的模板": "It can serve as a template for creating new feature functions", + "当前模型": "Current model", + "中间过程不予显示": "Intermediate process is not displayed", + "OpenAI模型选择是": "OpenAI model selection is", + "故可以只分析文章内容": "So only the content of the article can be analyzed", + "英语学术润色": "English academic polishing", + "此key无效": "This key is invalid", + "您可能需要手动安装新增的依赖库": "You may need to manually install the new dependency library", + "会把traceback和已经接收的数据转入输出": "Will transfer traceback and received data to output", + "后语": "Postscript", + "最后用中文翻译摘要部分": "Finally, translate the abstract section into Chinese", + "如果直接在海外服务器部署": "If deployed directly on overseas servers", + "找不到任何前端相关文件": "No frontend-related files can be found", + "Not enough point. API2D账户点数不足": "Not enough points. API2D account points are insufficient", + "当前版本": "Current version", + "/gpt_log/总结论文-": "/gpt_log/Summary paper-", + "1. 临时解决方案": "1. Temporary solution", + "第8步": "Step 8", + "历史": "History", + "是否在结束时": "Whether to write conversation history at the end", + "对话历史写入": "Write conversation history", + "观测窗": "Observation window", + "刷新时间间隔频率": "Refresh time interval frequency", + "当输入部分的token占比": "When the token proportion of the input part is", + "这是什么": "What is this", + "现将您的现有配置移动至config_private.py以防止配置丢失": "Now move your existing configuration to config_private.py to prevent configuration loss", + "尝试": "Try", + "您也可以选择删除此行警告": "You can also choose to delete this warning line", + "调用主体": "Call subject", + "当前代理可用性": "Current proxy availability", + "将单空行": "Single blank line", + "将结果写入markdown文件中": "Write the result to a markdown file", + "按输入的匹配模式寻找上传的非压缩文件和已解压的文件": "Find uploaded uncompressed files and decompressed files according to the input matching mode", + "设置5秒即可": "Set for 5 seconds", + "需要安装pip install rarfile来解压rar文件": "Need to install pip install rarfile to decompress rar files", + "如API和代理网址": "Such as API and proxy URLs", + "每个子任务的输入": "Input for each subtask", + "而在上下文执行结束时": "While at the end of the context execution", + "Incorrect API key. OpenAI以提供了不正确的API_KEY为由": "Incorrect API key. OpenAI cites incorrect API_KEY as the reason", + "即在代码结构不变得情况下取代其他的上下文管理器": "That is, replace other context managers without changing the code structure", + "递归搜索": "Recursive search", + "找到原文本中的换行符": "Find line breaks in the original text", + "开始了吗": "Has it started?", + "地址": "Address", + "将生成的报告自动投射到文件上传区": "Automatically project the generated report to the file upload area", + "数据流的显示最后收到的多少个字符": "Display how many characters the data stream received last", + "缺少ChatGLM的依赖": "Missing dependency for ChatGLM", + "不需要修改": "No modification needed", + "正在分析一个源代码项目": "Analyzing a source code project", + "第7步": "Step 7", + "这是什么功能": "What is this function?", + "你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性": "Your task is to improve the spelling, grammar, clarity, conciseness, and overall readability of the provided text", + "不起实际作用": "Does not have any actual effect", + "不显示中间过程": "Do not display intermediate processes", + "对整个Latex项目进行翻译": "Translate the entire Latex project", + "在上下文执行开始的情况下": "When the context execution starts", + "等待ChatGLM响应中": "ChatGLMの応答を待っています", + "GPT输出格式错误": "GPTの出力形式が間違っています", + "最多同时执行5个": "同時に最大5つ実行できます", + "解析此项目本身": "このプロジェクト自体を解析する", + "肯定已经都结束了": "もう終わったに違いない", + "英文Latex项目全文润色": "英語のLatexプロジェクト全体を校正する", + "修改函数插件后": "関数プラグインを変更した後", + "请谨慎操作": "注意して操作してください", + "等待newbing回复的片段": "newbingの返信を待っているフラグメント", + "第 5 步": "5番目のステップ", + "迭代上一次的结果": "前回の結果を反復処理する", + "载入对话": "対話をロードする", + "最后": "最後に", + "在前端打印些好玩的东西": "フロントエンドで面白いものを印刷する", + "用于显示给用户": "ユーザーに表示するために使用されます", + "在界面上显示结果": "結果をインターフェースに表示する", + "检查一下是不是忘了改config": "configを変更するのを忘れていないか確認してください", + "亮色主题": "明るいテーマ", + "开始请求": "リクエストを開始する", + "若输入0": "0を入力する場合", + "清除换行符": "改行をクリアする", + "Token溢出": "トークンオーバーフロー", + "靛蓝色": "藍紫色", + "的主要内容": "の主な内容", + "执行中": "実行中", + "生成http请求": "httpリクエストを生成する", + "第一页清理后的文本内容列表": "最初のページのクリーンアップされたテキストコンテンツリスト", + "初始值是摘要": "初期値は要約です", + "Free trial users的限制是每分钟3次": "無料トライアルユーザーの制限は、1分あたり3回です", + "处理markdown文本格式的转变": "Markdownテキストのフォーマット変換", + "如没有给定输入参数": "入力パラメータが指定されていない場合", + "缺少MOSS的依赖": "MOSSの依存関係が不足しています", + "打开插件列表": "プラグインリストを開く", + "失败了": "失敗しました", + "OpenAI和API2D不会走这里": "OpenAIとAPI2Dはここを通過しません", + "解析整个前端项目": "フロントエンドプロジェクト全体を解析する", + "将要忽略匹配的文件名": "一致するファイル名を無視する予定です", + "网页的端口": "Webページのポート", + "切分和重新整合": "分割と再結合", + "有肉眼不可见的小变化": "肉眼では見えない微小な変化があります", + "实现插件的热更新": "プラグインのホット更新を実現する", + "默认值": "デフォルト値", + "字符数小于100": "文字数が100未満です", + "更新UI": "UIを更新する", + "我们剥离Introduction之后的部分": "Introductionを削除した後の部分", + "注意目前不能多人同时调用NewBing接口": "現時点では、複数のユーザーが同時にNewBing APIを呼び出すことはできません", + "黄色": "黄色", + "中提取出“标题”、“收录会议或期刊”等基本信息": "タイトル、収録会議またはジャーナルなどの基本情報を抽出する", + "NewBing响应异常": "NewBingの応答が異常です", + "\\cite和方程式": "\\citeと方程式", + "则覆盖原config文件": "元のconfigファイルを上書きする", + "Newbing失败": "Newbingが失敗しました", + "需要预先pip install py7zr": "事前にpip install py7zrが必要です", + "换行 -": "改行 -", + "然后通过getattr函数获取函数名": "その後、getattr関数を使用して関数名を取得します", + "中性色": "中性色", + "直到历史记录的标记数量降低到阈值以下": "直到履歴のマーク数が閾値以下になるまで", + "请按以下描述给我发送图片": "以下の説明に従って画像を送信してください", + "用学术性语言写一段中文摘要": "学術的な言葉で中国語の要約を書く", + "开发者们❤️": "開発者たち❤️", + "解析整个C++项目头文件": "C++プロジェクトのヘッダーファイル全体を解析する", + "将输入和输出解析为HTML格式": "入力と出力をHTML形式で解析する", + "重试一次": "もう一度やり直す", + "如1812.10695": "例えば1812.10695のように", + "当无法用标点、空行分割时": "句読点や空行で区切ることができない場合", + "第二步": "2番目のステップ", + "如果是第一次运行": "初めて実行する場合", + "第一组插件": "最初のプラグイングループ", + "其中$E$是能量": "ここで$E$はエネルギーです", + "在结束时": "終了時に", + "OpenAI拒绝了请求": "OpenAIはリクエストを拒否しました", + "则会在溢出时暴力截断": "オーバーフロー時に強制的に切り捨てられます", + "中途接收可能的终止指令": "途中で可能な終了命令を受信する", + "experiment等": "実験など", + "结束": "終了する", + "发送请求到子进程": "子プロセスにリクエストを送信する", + "代码已经更新": "コードはすでに更新されています", + "情况会好转": "状況は改善されます", + "请削减单次输入的文本量": "一度に入力するテキスト量を減らしてください", + "每个线程都要“喂狗”": "各スレッドは「犬に餌を与える」必要があります", + "也可以写": "書くこともできます", + "导入软件依赖失败": "ソフトウェアの依存関係のインポートに失敗しました", + "代理网络的地址": "プロキシネットワークのアドレス", + "gpt_replying_buffer也写完了": "gpt_replying_bufferも書き終わりました", + "依赖检测通过": "Dependency check passed", + "并提供改进建议": "And provide improvement suggestions", + "Call ChatGLM fail 不能正常加载ChatGLM的参数": "Call ChatGLM fail, unable to load ChatGLM parameters", + "请对下面的文章片段做一个概述": "Please summarize the following article fragment", + "建议使用docker环境!": "It is recommended to use a docker environment!", + "单线": "Single line", + "将中文句号": "Replace Chinese period", + "高级实验性功能模块调用": "Advanced experimental function module call", + "个": "pieces", + "MOSS响应异常": "MOSS response exception", + "一键更新协议": "One-click update agreement", + "最多收纳多少个网页的结果": "Maximum number of web page results to be included", + "历史上的今天": "Today in history", + "jittorllms尚未加载": "jittorllms has not been loaded", + "不输入文件名": "Do not enter file name", + "准备文件的下载": "Preparing for file download", + "找不到任何golang文件": "Cannot find any golang files", + "找不到任何rust文件": "Cannot find any rust files", + "写入文件": "Write to file", + "LLM_MODEL 格式不正确!": "LLM_MODEL format is incorrect!", + "引用次数是链接中的文本": "The reference count is the text in the link", + "则使用当前时间生成文件名": "Then use the current time to generate the file name", + "第二组插件": "Second set of plugins", + "-1代表随机端口": "-1 represents a random port", + "无代理状态下很可能无法访问OpenAI家族的模型": "It is very likely that you cannot access the OpenAI family of models without a proxy", + "分别为 __enter__": "They are __enter__ respectively", + "设定一个最小段落长度阈值": "Set a minimum paragraph length threshold", + "批量TranslateFromChiToEngInMarkdown": "Batch TranslateFromChiToEngInMarkdown", + "您若希望分享新的功能模组": "If you want to share new functional modules", + "先输入问题": "Enter the question first", + "理解PDF论文内容": "Understand the content of the PDF paper", + "质能方程可以写成$$E=mc^2$$": "The mass-energy equation can be written as $$E=mc^2$$", + "安装ChatGLM的依赖": "Install dependencies for ChatGLM", + "自动更新程序": "Automatic update program", + "备份一个文件": "Backup a file", + "并行任务数量限制": "Parallel task quantity limit", + "将y中最后一项的输入部分段落化": "Paragraphize the input part of the last item in y", + "和": "and", + "尝试Prompt": "Try Prompt", + "且没有代码段": "And there is no code segment", + "设置gradio的并行线程数": "Set the parallel thread number of gradio", + "请提取": "Please extract", + "向chatbot中添加错误信息": "Add error message to chatbot", + "处理文件的上传": "Handle file upload", + "异常": "Exception", + "此处不修改": "Do not modify here", + "*** API_KEY 导入成功": "*** API_KEY imported successfully", + "多线程方法": "Multi-threaded method", + "也可以根据之前的内容长度来判断段落是否已经足够长": "You can also judge whether the paragraph is long enough based on the length of the previous content", + "同样支持多线程": "Also supports multi-threading", + "代理所在地": "Location of the proxy", + "chatbot 为WebUI中显示的对话列表": "Chatbot is the list of conversations displayed in WebUI", + "对话窗的高度": "Height of the conversation window", + "体验gpt-4可以试试api2d": "You can try api2d to experience gpt-4", + "观察窗": "Observation window", + "Latex项目全文英译中": "Full translation of Latex project from English to Chinese", + "接下来请将以下代码中包含的所有中文转化为英文": "Next, please translate all the Chinese in the following code into English", + "以上材料已经被写入": "以上の材料が書き込まれました", + "清理规则包括": "クリーニングルールには以下が含まれます", + "展示分割效果": "分割効果を表示する", + "运行方法 python crazy_functions/crazy_functions_test.py": "python crazy_functions/crazy_functions_test.pyを実行する方法", + "不要遗漏括号": "括弧を省略しないでください", + "对IPynb文件进行解析": "IPynbファイルを解析する", + "它们会继续向下调用更底层的LLM模型": "それらはより低レベルのLLMモデルを呼び出し続けます", + "这个函数用于分割pdf": "この関数はPDFを分割するために使用されます", + "等待输入": "入力を待っています", + "句号": "句点", + "引入一个有cookie的chatbot": "cookieを持つchatbotを導入する", + "优先": "優先", + "没有提供高级参数功能说明": "高度なパラメータ機能の説明が提供されていません", + "找不到任何文件": "ファイルが見つかりません", + "将要忽略匹配的文件后缀": "一致するファイルの拡張子を無視する予定です", + "函数插件-固定按钮区": "関数プラグイン-固定ボタンエリア", + "如果要使用Newbing": "Newbingを使用する場合", + "缺少jittorllms的依赖": "jittorllmsの依存関係が不足しています", + "尽量是完整的一个section": "可能な限り完全なセクションであること", + "请从中提取出“标题”、“收录会议或期刊”、“作者”、“摘要”、“编号”、“作者邮箱”这六个部分": "「タイトル」、「収録会議またはジャーナル」、「著者」、「要約」、「番号」、「著者の電子メール」の6つの部分を抽出してください", + "检查USE_PROXY选项是否修改": "USE_PROXYオプションが変更されているかどうかを確認してください", + "自动截断": "自動切断", + "多线程操作已经开始": "マルチスレッド操作が開始されました", + "根据当前的模型类别": "現在のモデルタイプに基づいて", + "兼容旧版的配置": "古いバージョンの構成と互換性があります", + "找不到任何python文件": "Pythonファイルが見つかりません", + "这个bug没找到触发条件": "このバグのトリガー条件が見つかりませんでした", + "学术中英互译": "学術的な英中翻訳", + "列表递归接龙": "リストの再帰的な接続", + "新版本": "新しいバージョン", + "返回的结果是": "返された結果は", + "以免输入溢出": "オーバーフローを防ぐために", + "流式获取输出": "ストリームで出力を取得する", + "逐个文件分析": "ファイルを1つずつ分析する", + "随机负载均衡": "ランダムな負荷分散", + "高级参数输入区": "高度なパラメータ入力エリア", + "稍微留一点余地": "少し余裕を持たせる", + "并显示到聊天当中": "チャットに表示される", + "不在arxiv中无法获取完整摘要": "arxivにないと完全な要約を取得できません", + "用户反馈": "ユーザーフィードバック", + "有线程锁": "スレッドロックあり", + "一键DownloadArxivPapersAndTranslateAbstract": "一括でArxiv論文をダウンロードして要約を翻訳する", + "现在您点击任意“红颜色”标识的函数插件时": "今、あなたが任意の「赤い」関数プラグインをクリックすると", + "请从": "からお願いします", + "也支持同时填写多个api-key": "複数のAPIキーを同時に入力することもできます", + "也许等待十几秒后": "おそらく10秒以上待つ必要があります", + "第": "第", + "在函数插件中被调用": "関数プラグインで呼び出されます", + "此外我们也提供可同步处理大量文件的多线程Demo供您参考": "また、大量のファイルを同期的に処理するためのマルチスレッドデモも提供しています", + "的配置": "の設定", + "数据流的第一帧不携带content": "データストリームの最初のフレームにはcontentが含まれていません", + "老旧的Demo": "古いデモ", + "预处理一波": "事前処理を行う", + "获取所有文章的标题和作者": "すべての記事のタイトルと著者を取得する", + "输出 Returns": "Returnsを出力する", + "Reduce the length. 本次输入过长": "長さを短くしてください。入力が長すぎます", + "抽取摘要": "要約を抽出する", + "从最长的条目开始裁剪": "最長のエントリからトリミングを開始する", + "2. 替换跨行的连词": "2. 行をまたいだ接続詞を置換する", + "并且对于网络上的文件": "そして、ネットワーク上のファイルに対して", + "本地文件预览": "ローカルファイルのプレビュー", + "手动指定询问哪些模型": "手動でどのモデルを問い合わせるか指定する", + "如果有的话": "ある場合は", + "直接退出": "直接退出する", + "请提交新问题": "新しい問題を提出してください", + "您正在调用一个": "あなたは呼び出しています", + "请编辑以下文本": "以下のテキストを編集してください", + "常见协议无非socks5h/http": "一般的なプロトコルはsocks5h/http以外ありません" +} \ No newline at end of file diff --git a/docs/translate_traditionalchinese.json b/docs/translate_traditionalchinese.json new file mode 100644 index 0000000000000000000000000000000000000000..0cc65d799fe9fcea3ae0861feaf64e86c879a187 --- /dev/null +++ b/docs/translate_traditionalchinese.json @@ -0,0 +1,1515 @@ +{ + "print亮黄": "PrintBrightYellow", + "print亮绿": "PrintBrightGreen", + "print亮红": "PrintBrightRed", + "print红": "PrintRed", + "print绿": "PrintGreen", + "print黄": "PrintYellow", + "print蓝": "PrintBlue", + "print紫": "PrintPurple", + "print靛": "PrintIndigo", + "print亮蓝": "PrintBrightBlue", + "print亮紫": "PrintBrightPurple", + "print亮靛": "PrintBrightIndigo", + "读文章写摘要": "ReadArticleWriteSummary", + "批量生成函数注释": "BatchGenerateFunctionComments", + "生成函数注释": "GenerateFunctionComments", + "解析项目本身": "ParseProjectItself", + "解析项目源代码": "ParseProjectSourceCode", + "解析一个Python项目": "ParsePythonProject", + "解析一个C项目的头文件": "ParseCProjectHeaderFile", + "解析一个C项目": "ParseCProject", + "解析一个Rust项目": "ParseRustProject", + "解析一个Java项目": "ParseJavaProject", + "解析一个前端项目": "ParseAFrontEndProject", + "高阶功能模板函数": "HigherOrderFeatureTemplateFunction", + "高级功能函数模板": "AdvancedFeatureFunctionTemplate", + "全项目切换英文": "SwitchEntireProjectToEnglish", + "代码重写为全英文_多线程": "RewriteCodeToEnglishMultithreading", + "Latex英文润色": "LatexEnglishPolishing", + "Latex全文润色": "LatexWholeDocumentPolishing", + "同时问询": "InquireSimultaneously", + "询问多个大语言模型": "InquireMultipleLargeLanguageModels", + "解析一个Lua项目": "ParseALuaProject", + "解析一个CSharp项目": "ParseACSharpProject", + "总结word文档": "SummarizeWordDocument", + "解析ipynb文件": "ParseIpynbFile", + "解析JupyterNotebook": "ParseJupyterNotebook", + "对话历史存档": "ConversationHistoryArchive", + "载入对话历史存档": "LoadConversationHistoryArchive", + "删除所有本地对话历史记录": "DeleteAllLocalConversationHistoryRecords", + "Markdown英译中": "MarkdownEnglishToChinese", + "批量Markdown翻译": "BatchMarkdownTranslation", + "批量总结PDF文档": "BatchSummarizePDFDocuments", + "批量总结PDF文档pdfminer": "BatchSummarizePDFDocumentsPdfminer", + "批量翻译PDF文档": "BatchTranslatePDFDocuments", + "批量翻译PDF文档_多线程": "BatchTranslatePdfDocumentsMultithreaded", + "谷歌检索小助手": "GoogleSearchAssistant", + "理解PDF文档内容标准文件输入": "StandardFileInputForUnderstandingPdfDocumentContent", + "理解PDF文档内容": "UnderstandingPdfDocumentContent", + "Latex中文润色": "ChineseProofreadingInLatex", + "Latex中译英": "ChineseToEnglishTranslationInLatex", + "Latex全文翻译": "FullTextTranslationInLatex", + "Latex英译中": "EnglishToChineseTranslationInLatex", + "Markdown中译英": "ChineseToEnglishTranslationInMarkdown", + "下载arxiv论文并翻译摘要": "DownloadArxivPapersAndTranslateAbstract", + "下载arxiv论文翻译摘要": "DownloadArxivPapersTranslateAbstract", + "连接网络回答问题": "ConnectToInternetToAnswerQuestions", + "联网的ChatGPT": "ChatGPTConnectedToInternet", + "解析任意code项目": "ParsingAnyCodeProject", + "同时问询_指定模型": "InquiryWithSpecifiedModelSimultaneously", + "图片生成": "ImageGeneration", + "test_解析ipynb文件": "TestParsingIpynbFile", + "把字符太少的块清除为回车": "RemoveBlocksWithTooFewCharactersToNewline", + "清理多余的空行": "CleaningUpExtraBlankLines", + "合并小写开头的段落块": "MergeParagraphBlocksStartingWithLowerCase", + "多文件润色": "ProofreadingMultipleFiles", + "多文件翻译": "TranslationOfMultipleFiles", + "解析docx": "ParseDocx", + "解析PDF": "ParsePDF", + "解析Paper": "ParsePaper", + "ipynb解释": "IpynbInterpret", + "解析源代码新": "ParseSourceCodeNew", + "输入区": "輸入區", + "获取文章meta信息": "獲取文章meta信息", + "等待": "等待", + "不能正常加载MOSS的参数!": "無法正常加載MOSS的參數!", + "橙色": "橙色", + "窗口布局": "窗口佈局", + "需要安装pip install py7zr来解压7z文件": "需要安裝pip install py7zr來解壓7z文件", + "上下布局": "上下佈局", + "打开文件": "打開文件", + "可能需要分组处理": "可能需要分組處理", + "用tex格式": "用tex格式", + "按Shift+Enter换行": "按Shift+Enter換行", + "输入路径或上传压缩包": "輸入路徑或上傳壓縮包", + "翻译成地道的中文": "翻譯成地道的中文", + "上下文": "上下文", + "请耐心完成后再提交新问题": "請耐心完成後再提交新問題", + "可以直接修改对话界面内容": "可以直接修改對話界面內容", + "检测输入参数": "檢測輸入參數", + "也许会导致低配计算机卡死 ……": "也許會導致低配計算機卡死……", + "html格式": "html格式", + "不能识别的URL!": "無法識別的URL!", + "第2步": "第2步", + "若上传压缩文件": "若上傳壓縮文件", + "多线程润色开始": "多線程潤色開始", + "警告!API_URL配置选项将被弃用": "警告!API_URL配置選項將被棄用", + "非OpenAI官方接口的出现这样的报错": "非OpenAI官方接口出現這樣的錯誤", + "如果没找到任何文件": "如果沒找到任何文件", + "生成一份任务执行报告": "生成一份任務執行報告", + "而cl**h 的默认本地协议是http": "而cl**h的默認本地協議是http", + "gpt_replying_buffer也写完了": "gpt_replying_buffer也寫完了", + "是本次输出": "是本次輸出", + "展现在报告中的输入": "展現在報告中的輸入", + "和端口": "和端口", + "Pay-as-you-go users的限制是每分钟3500次": "Pay-as-you-go用戶的限制是每分鐘3500次", + "既可以写": "既可以寫", + "输入清除键": "輸入清除鍵", + "gpt模型参数": "gpt模型參數", + "直接清除历史": "直接清除歷史", + "当前模型": "當前模型", + ";5、中文摘要翻译": ";5、中文摘要翻譯", + "将markdown转化为好看的html": "將markdown轉換為好看的html", + "谷歌学术检索助手": "谷歌學術檢索助手", + "后语": "後語", + "请确认是否满足您的需要": "請確認是否滿足您的需要", + "本地路径": "本地路徑", + "sk-此处填API密钥": "sk-此處填API密鑰", + "正常结束": "正常結束", + "排除了以上两个情况": "排除了以上兩個情況", + "把gradio的运行地址更改到指定的二次路径上": "將gradio的運行地址更改到指定的二次路徑上", + "配置其Path环境变量": "配置其Path環境變量", + "的第": "的第", + "减少重复": "減少重複", + "如果超过期限没有喂狗": "如果超過期限沒有餵狗", + "函数的说明请见 request_llm/bridge_all.py": "函數的說明請見 request_llm/bridge_all.py", + "第7步": "第7步", + "说": "說", + "中途接收可能的终止指令": "中途接收可能的終止指令", + "第5次尝试": "第5次嘗試", + "gradio可用颜色列表": "gradio可用顏色列表", + "返回的结果是": "返回的結果是", + "出现的所有文章": "所有出現的文章", + "更换LLM模型/请求源": "更換LLM模型/請求源", + "调用NewBing时": "調用NewBing時", + "AutoGPT是什么": "AutoGPT是什麼", + "则换行符更有可能表示段落分隔": "則換行符更有可能表示段落分隔", + "接收文件后与chatbot的互动": "接收文件後與chatbot的互動", + "每个子任务展现在报告中的输入": "每個子任務展現在報告中的輸入", + "按钮见functional.py": "按鈕見functional.py", + "地址🚀": "地址🚀", + "将长文本分离开来": "將長文本分離開來", + "ChatGLM消耗大量的内存": "ChatGLM消耗大量的內存", + "使用 lru缓存 加快转换速度": "使用lru緩存加快轉換速度", + "屏蔽掉 chatglm的多线程": "屏蔽掉chatglm的多線程", + "不起实际作用": "不起實際作用", + "先寻找到解压的文件夹路径": "先尋找到解壓的文件夾路徑", + "观察窗": "觀察窗", + "请解释以下代码": "請解釋以下代碼", + "使用中文回答我的问题": "使用中文回答我的問題", + "备份一个文件": "備份一個文件", + "未知": "未知", + "如.md": "#", + "**输入参数说明**": "#", + "如果这裡拋出異常": "#", + "多線程操作已經開始": "#", + "備份和下載": "#", + "新版本可用": "#", + "將要忽略匹配的文件後綴": "#", + "可調節線程池的大小避免openai的流量限制錯誤": "#", + "使用Unsplash API": "#", + "ChatGPT綜合": "#", + "從摘要中提取高價值信息": "#", + "借助此參數": "#", + "知乎": "#", + "其他錯誤": "#", + "退出": "#", + "對話歷史寫入": "#", + "問詢記錄": "#", + "依次訪問網頁": "#", + "NewBing響應異常": "#", + "jittorllms尚未加載": "#", + "等待NewBing响应": "等待NewBing回應", + "找不到任何CSharp文件": "找不到任何CSharp檔案", + "插件demo": "插件範例", + "1. 把input的余量留出来": "1. 留出input的餘量", + "如果文章被切分了": "如果文章被切分了", + "或者您没有获得体验资格": "或者您沒有獲得體驗資格", + "修正值": "修正值", + "正在重试": "正在重試", + "展示分割效果": "展示分割效果", + "已禁用": "已禁用", + "抽取摘要": "抽取摘要", + "下载完成": "下載完成", + "无法连接到该网页": "無法連接到該網頁", + "根据以上的对话": "根據以上的對話", + "第1次尝试": "第1次嘗試", + "我们用最暴力的方法切割": "我們用最暴力的方法切割", + "回滚代码到原始的浏览器打开函数": "回滾程式碼到原始的瀏覽器開啟函數", + "先上传存档或输入路径": "先上傳存檔或輸入路徑", + "避免代理网络产生意外污染": "避免代理網路產生意外污染", + "发送图片时": "傳送圖片時", + "第二步": "第二步", + "完成": "完成", + "搜索页面中": "搜索頁面中", + "下载中": "下載中", + "重试一次": "重試一次", + "历史上的今天": "歷史上的今天", + "2. 替换跨行的连词": "2. 替換跨行的連詞", + "协议": "協議", + "批量ChineseToEnglishTranslationInMarkdown": "批量Markdown中文轉英文翻譯", + "也可以直接是": "也可以直接是", + "插件模型的参数": "插件模型的參數", + "也可以根据之前的内容长度来判断段落是否已经足够长": "也可以根據之前的內容長度來判斷段落是否已經足夠長", + "引入一个有cookie的chatbot": "引入一個有cookie的聊天機器人", + "任何文件": "任何文件", + "代码直接生效": "代碼直接生效", + "高级实验性功能模块调用": "高級實驗性功能模塊調用", + "修改函数插件代码后": "修改函數插件代碼後", + "按Enter提交": "按Enter提交", + "天蓝色": "天藍色", + "子任务失败时的重试次数": "子任務失敗時的重試次數", + "格式须是": "請輸入正確的格式", + "调用主体": "調用主體", + "有些文章的正文部分字体大小不是100%统一的": "有些文章正文中字體大小不統一", + "线程": "執行緒", + "是否一键更新代码": "是否一鍵更新程式碼", + "除了基础的pip依赖以外": "除了基礎的pip依賴外", + "紫色": "紫色", + "同样支持多线程": "同樣支援多執行緒", + "这个中文的句号是故意的": "這個中文句號是故意的", + "获取所有文章的标题和作者": "取得所有文章的標題和作者", + "Incorrect API key. OpenAI以提供了不正确的API_KEY为由": "API金鑰錯誤。OpenAI提供了錯誤的API_KEY", + "绿色": "綠色", + "异常": "異常", + "pip install pywin32 用于doc格式": "pip install pywin32 用於doc格式", + "也可以写": "也可以寫", + "请对下面的文章片段用中文做一个概述": "請用中文對下面的文章片段做一個概述", + "上下文管理器是一种Python对象": "上下文管理器是一種Python物件", + "处理文件的上传": "處理檔案的上傳", + "尝试Prompt": "嘗試Prompt", + "检查USE_PROXY选项是否修改": "檢查USE_PROXY選項是否修改", + "改为True应用代理": "將True更改為應用代理", + "3. 如果余量太小了": "如果餘量太小", + "老旧的Demo": "舊版Demo", + "第一部分": "第一部分", + "插件参数区": "插件參數區", + "历史中哪些事件发生在": "歷史中哪些事件發生在", + "现将您的现有配置移动至config_private.py以防止配置丢失": "現在將您現有的配置移動到config_private.py以防止配置丟失", + "当你想发送一张照片时": "當你想發送一張照片時", + "接下来请将以下代码中包含的所有中文转化为英文": "接下來請將以下代碼中包含的所有中文轉化為英文", + "i_say=真正给chatgpt的提问": "i_say=真正給chatgpt的提問", + "解析整个C++项目头文件": "解析整個C++項目頭文件", + "需要安装pip install rarfile来解压rar文件": "需要安裝pip install rarfile來解壓rar文件", + "把已经获取的数据显示出去": "顯示已經獲取的數據", + "红色": "紅色", + "异步任务结束": "異步任務結束", + "进行学术解答": "進行學術解答", + "config_private.py放自己的秘密如API和代理网址": "config_private.py放自己的秘密如API和代理網址", + "学术中英互译": "學術中英互譯", + "选择处理": "選擇處理", + "利用以上信息": "利用以上信息", + "暂时先这样顶一下": "暫時先這樣頂一下", + "如果中文效果不理想": "如果中文效果不理想", + "常见协议无非socks5h/http": "常見協議無非socks5h/http", + "返回文本内容": "返回文本內容", + "用于重组输入参数": "用於重組輸入參數", + "第8步": "第8步", + "可能处于折叠状态": "可能處於折疊狀態", + "重置": "重置", + "清除": "清除", + "放到每个子线程中分别执行": "放到每個子線程中分別執行", + "载入对话历史文件": "載入對話歷史文件", + "列举两条并发送相关图片": "列舉兩條並發送相關圖片", + "然后重试": "然後重試", + "重新URL重新定向": "重新URL重新定向", + "内部函数通过使用importlib模块的reload函数和inspect模块的getmodule函数来重新加载并获取函数模块": "內部函數通過使用importlib模塊的reload函數和inspect模塊的getmodule函數來重新加載並獲取函數模塊", + "第一层列表是子任务分解": "第一層列表是子任務分解", + "为发送请求做准备": "為發送請求做準備", + "暂时没有用武之地": "暫時沒有用武之地", + "并对文件中的所有函数生成注释": "並對文件中的所有函數生成註釋", + "分解连字": "分解連字", + "不输入文件名": "不輸入檔案名稱", + "并相应地进行替换": "並相應地進行替換", + "在实验过程中发现调用predict_no_ui处理长文档时": "在實驗過程中發現調用predict_no_ui處理長文檔時", + "提取文本块主字体": "提取文本塊主字體", + "temperature是chatGPT的内部调优参数": "temperature是chatGPT的內部調優參數", + "没办法了": "沒辦法了", + "获取正文主字体": "獲取正文主字體", + "看门狗": "看門狗", + "当前版本": "當前版本", + "这个函数是用来获取指定目录下所有指定类型": "這個函數是用來獲取指定目錄下所有指定類型", + "api_key已导入": "api_key已導入", + "找不到任何.tex或.pdf文件": "找不到任何.tex或.pdf檔案", + "You exceeded your current quota. OpenAI以账户额度不足为由": "您超出了當前配額。OpenAI以帳戶額度不足為由", + "自动更新程序": "自動更新程式", + "并且不要有反斜线": "並且不要有反斜線", + "你必须逐个文献进行处理": "您必須逐個文獻進行處理", + "本地文件地址": "本地檔案地址", + "提取精炼信息": "提取精煉資訊", + "设置用户名和密码": "設置使用者名稱和密碼", + "请不吝PR!": "請不吝PR!", + "通过把連字": "通過將連字", + "文件路徑列表": "檔案路徑清單", + "判定為數據流的結束": "判定為資料流的結束", + "參數": "參數", + "避免不小心傳github被別人看到": "避免不小心傳到github被別人看到", + "記錄刪除註釋後的文本": "記錄刪除註釋後的文字", + "比正文字體小": "比正文字體小", + "上傳本地文件可供紅色函數插件調用": "上傳本地文件供紅色函數插件調用", + "生成圖像": "生成圖像", + "追加歷史": "追加歷史", + "網絡代理狀態": "網路代理狀態", + "不需要再次轉化": "不需要再次轉換", + "帶超時倒計時": "帶有超時倒數計時", + "保存當前對話": "儲存目前對話", + "等待響應": "等待回應", + "依賴檢測通過": "依賴檢查通過", + "如果要使用ChatGLM": "如果要使用ChatGLM", + "對IPynb文件進行解析": "對IPynb檔案進行解析", + "先切換模型到openai或api2d": "先切換模型到openai或api2d", + "塊元提取": "區塊元素提取", + "调用路径参数已自动修正到": "調用路徑參數已自動修正到", + "且下一个字符为大写字母": "且下一個字符為大寫字母", + "无": "無", + "$c$是光速": "$c$是光速", + "发送请求到OpenAI后": "發送請求到OpenAI後", + "您也可以选择删除此行警告": "您也可以選擇刪除此行警告", + "i_say_show_user=给用户看的提问": "i_say_show_user=給用戶看的提問", + "Endpoint 重定向": "Endpoint 重定向", + "基础功能区": "基礎功能區", + "根据以上你自己的分析": "根據以上你自己的分析", + "以上文件将被作为输入参数": "以上文件將被作為輸入參數", + "已完成": "已完成", + "第2次尝试": "第2次嘗試", + "若输入0": "若輸入0", + "自动缩减文本": "自動縮減文本", + "顺利完成": "順利完成", + "收到": "收到", + "打开浏览器": "打開瀏覽器", + "第5步": "第5步", + "Free trial users的限制是每分钟3次": "Free trial users的限制是每分鐘3次", + "请用markdown格式输出": "請用 Markdown 格式輸出", + "模仿ChatPDF": "模仿 ChatPDF", + "等待多久判定为超时": "等待多久判定為超時", + "/gpt_log/总结论文-": "/gpt_log/總結論文-", + "请结合互联网信息回答以下问题": "請結合互聯網信息回答以下問題", + "IP查询频率受限": "IP查詢頻率受限", + "高级参数输入区的显示提示": "高級參數輸入區的顯示提示", + "的高级参数说明": "的高級參數說明", + "默认开启": "默認開啟", + "为实现更多强大的功能做基础": "為實現更多強大的功能做基礎", + "中文学术润色": "中文學術潤色", + "注意这里的历史记录被替代了": "注意這裡的歷史記錄被替代了", + "子线程任务": "子線程任務", + "个": "個", + "正在加载tokenizer": "正在加載 tokenizer", + "生成http请求": "生成 HTTP 請求", + "从而避免解析压缩文件": "從而避免解析壓縮文件", + "加载参数": "加載參數", + "由于输入长度限制": "由於輸入長度限制", + "如果直接在海外服务器部署": "如果直接在海外伺服器部署", + "你提供了错误的API_KEY": "你提供了錯誤的API_KEY", + "history 是之前的对话列表": "history 是之前的對話列表", + "实现更换API_URL的作用": "實現更換API_URL的作用", + "Json解析不合常规": "Json解析不合常規", + "函数插件-下拉菜单与随变按钮的互动": "函數插件-下拉菜單與隨變按鈕的互動", + "则先将公式转换为HTML格式": "則先將公式轉換為HTML格式", + "1. 临时解决方案": "1. 臨時解決方案", + "如1812.10695": "如1812.10695", + "最后用中文翻译摘要部分": "最後用中文翻譯摘要部分", + "MOSS响应异常": "MOSS響應異常", + "读取pdf文件": "讀取pdf文件", + "重试的次数限制": "重試的次數限制", + "手动指定询问哪些模型": "手動指定詢問哪些模型", + "情况会好转": "情況會好轉", + "超过512个": "超過512個", + "多线": "多線", + "底部输入区": "底部輸入區", + "合并小写字母开头的段落块并替换为空格": "合併小寫字母開頭的段落塊並替換為空格", + "暗色主题": "暗色主題", + "提高限制请查询": "提高限制請查詢", + "您还需要运行": "您還需要執行", + "将双空行": "將雙空行", + "请削减单次输入的文本量": "請減少單次輸入的文本量", + "提高语法、清晰度和整体可读性": "提高語法、清晰度和整體可讀性", + "删除其中的所有注释": "刪除其中的所有註釋", + "列表长度为子任务的数量": "列表長度為子任務的數量", + "直接在输入区键入api_key": "直接在輸入區鍵入api_key", + "方法会在代码块被执行前被调用": "方法會在代碼塊被執行前被調用", + "懂的都懂": "懂的都懂", + "加一个live2d装饰": "加一個live2d裝飾", + "请从中提取出“标题”、“收录会议或期刊”、“作者”、“摘要”、“编号”、“作者邮箱”这六个部分": "請從中提取出“標題”、“收錄會議或期刊”、“作者”、“摘要”、“編號”、“作者郵箱”這六個部分", + "聊天历史": "聊天歷史", + "将插件中出的所有问题显示在界面上": "將插件中出的所有問題顯示在界面上", + "每个子任务的输入": "每個子任務的輸入", + "yield一次以刷新前端页面": "yield一次以刷新前端頁面", + "不能自定义字体和颜色": "不能自定義字體和顏色", + "如果本地使用不建议加这个": "如果本地使用不建議加這個", + "例如chatglm&gpt-3.5-turbo&api2d-gpt-4": "例如chatglm&gpt-3.5-turbo&api2d-gpt-4", + "尝试": "嘗試", + "什么都没有": "什麼都沒有", + "代理设置": "代理設置", + "请求处理结束": "請求處理結束", + "将结果写入markdown文件中": "將結果寫入markdown文件中", + "experiment等": "實驗等", + "添加一个萌萌的看板娘": "添加一個萌萌的看板娘", + "现在": "現在", + "当前软件运行的端口号": "當前軟件運行的端口號", + "第n组插件": "第n組插件", + "不受git管控": "不受git管控", + "基础功能区的回调函数注册": "基礎功能區的回調函數註冊", + "句子结束标志": "句子結束標誌", + "GPT参数": "GPT參數", + "按输入的匹配模式寻找上传的非压缩文件和已解压的文件": "按輸入的匹配模式尋找上傳的非壓縮文件和已解壓的文件", + "函数插件贡献者": "函數插件貢獻者", + "用户提示": "用戶提示", + "此版本使用pdfminer插件": "此版本使用pdfminer插件", + "如果换行符前为句子结束标志": "如果換行符前為句子結束標誌", + "在gpt输出代码的中途": "在gpt輸出代碼的中途", + "中转网址预览": "中轉網址預覽", + "自动截断": "自動截斷", + "当無法用標點、空行分割時": "當無法用標點、空行分割時", + "意外Json結構": "意外的Json結構", + "需要讀取和清理文本的pdf文件路徑": "需要讀取和清理文本的pdf文件路徑", + "HotReload的裝飾器函數": "HotReload的裝飾器函數", + "chatGPT 分析報告": "chatGPT 分析報告", + "如參考文獻、腳註、圖註等": "如參考文獻、腳註、圖註等", + "的api-key": "的api-key", + "第二組插件": "第二組插件", + "當前代理可用性": "當前代理可用性", + "列表遞歸接龍": "列表遞歸接龍", + "這個bug沒找到觸發條件": "這個bug沒找到觸發條件", + "喚起高級參數輸入區": "喚起高級參數輸入區", + "但大部分場合下並不需要修改": "但大部分場合下並不需要修改", + "盡量是完整的一個section": "盡量是完整的一個section", + "如果OpenAI不響應": "如果OpenAI不響應", + "等文本特殊符號轉換為其基本形式來對文本進行歸一化處理": "等文本特殊符號轉換為其基本形式來對文本進行歸一化處理", + "你的回答必須簡單明了": "你的回答必須簡單明了", + "對話歷史文件損壞!": "對話歷史文件損壞!", + "每一塊": "每一塊", + "如果某個子任務出錯": "如果某個子任務出錯", + "切分和重新整合": "切分和重新整合", + "Token限制下的截断与处理": "Token限制下的截斷與處理", + "仅支持Win平台": "僅支持Win平臺", + "并行任务数量限制": "並行任務數量限制", + "已重置": "已重置", + "如果要使用Newbing": "如果要使用Newbing", + "前言": "前言", + "理解PDF论文内容": "理解PDF論文內容", + "如果有的话": "如果有的話", + "功能区显示开关与功能区的互动": "功能區顯示開關與功能區的互動", + "前者API2D的": "前者API2D的", + "如果要使用MOSS": "如果要使用MOSS", + "源文件太多": "源文件太多", + "ChatGLM尚未加载": "ChatGLM尚未加載", + "不可高于3": "不可高於3", + "运行方法 python crazy_functions/crazy_functions_test.py": "運行方法 python crazy_functions/crazy_functions_test.py", + "清除历史": "清除歷史", + "如果要使用jittorllms": "如果要使用jittorllms", + "更换模型 & SysPrompt & 交互界面布局": "更換模型 & SysPrompt & 交互界面布局", + "是之前的对话列表": "是之前的對話列表", + "开始了吗": "開始了嗎", + "输入": "輸入", + "打开你的*学*网软件查看代理的协议": "打開你的*學*網軟件查看代理的協議", + "默认False": "默認False", + "获取页面上的文本信息": "獲取頁面上的文本信息", + "第一页清理后的文本内容列表": "第一頁清理後的文本內容列表", + "并定义了一个名为decorated的内部函数": "並定義了一個名為decorated的內部函數", + "你是一个学术翻译": "你是一個學術翻譯", + "OpenAI拒绝了请求": "OpenAI拒絕了請求", + "提示": "提示", + "返回重试": "返回重試", + "以下“红颜色”标识的函数插件需从输入区读取路径作为参数": "以下“紅顏色”標識的函數插件需從輸入區讀取路徑作為參數", + "这个函数用stream的方式解决这个问题": "這個函數用stream的方式解決這個問題", + "ChatGPT 学术优化": "ChatGPT 學術優化", + "去除短块": "去除短塊", + "第一组插件": "第一組插件", + "这是什么": "這是什麼", + "在传递chatbot的过程中不要将其丢弃": "在傳遞chatbot的過程中不要將其丟棄", + "下载PDF文档": "下載PDF文檔", + "以下是信息源": "以下是信息源", + "本组文件为": "本組檔案為", + "更新函数代码": "更新函數代碼", + "解析的结果如下": "解析的結果如下", + "逻辑较乱": "邏輯較亂", + "存入": "存入", + "具备完备的交互功能": "具備完備的交互功能", + "安装jittorllms依赖后将完全破坏现有的pytorch环境": "安裝jittorllms依賴後將完全破壞現有的pytorch環境", + "看门狗的耐心": "看門狗的耐心", + "点击展开“文件上传区”": "點擊展開“文件上傳區”", + "翻译摘要等": "翻譯摘要等", + "返回值": "返回值", + "默认允许多少路线程同时访问OpenAI": "默認允許多少路線程同時訪問OpenAI", + "这是第": "這是第", + "把本项目源代码切换成全英文": "把本項目源代碼切換成全英文", + "找不到任何html文件": "找不到任何html文件", + "假如重启失败": "假如重啟失敗", + "感谢热情的": "感謝熱情的", + "您若希望分享新的功能模组": "您若希望分享新的功能模組", + "并在新模块中重新加载函数": "並在新模塊中重新加載函數", + "则会在溢出时暴力截断": "則會在溢出時暴力截斷", + "源码自译解": "原始碼自譯解", + "开始正式执行任务": "開始正式執行任務", + "ChatGLM响应异常": "ChatGLM響應異常", + "用户界面对话窗口句柄": "用戶界面對話窗口句柄", + "左右布局": "左右佈局", + "后面两句是": "後面兩句是", + "可同时填写多个API-KEY": "可同時填寫多個API-KEY", + "对各个llm模型进行单元测试": "對各個llm模型進行單元測試", + "为了更好的效果": "為了更好的效果", + "jittorllms 没有 sys_prompt 接口": "jittorllms沒有sys_prompt接口", + "直接取出来": "直接取出來", + "不具备多线程能力的函数": "不具備多線程能力的函數", + "单行 + 字体大": "單行+字體大", + "正在分析一个源代码项目": "正在分析一個源代碼項目", + "直接退出": "直接退出", + "稍后可能需要再试一次": "稍後可能需要再試一次", + "开始重试": "開始重試", + "没有 sys_prompt 接口": "沒有sys_prompt接口", + "只保留文件名节省token": "只保留文件名節省token", + "肯定已经都结束了": "肯定已經都結束了", + "用&符號分隔": "&", + "但本地存儲了以下歷史文件": "以下是本地儲存的歷史文件清單", + "對全文進行概括": "全文概述", + "以下是一篇學術論文的基礎信息": "以下是學術論文的基本信息", + "正在提取摘要並下載PDF文檔……": "正在提取摘要並下載PDF文件……", + "1. 對原始文本進行歸一化處理": "1. 正規化原始文本", + "問題": "問題", + "用於基礎的對話功能": "基本對話功能", + "獲取設置": "獲取設置", + "如果缺少依賴": "如果缺少依賴項", + "第6步": "第6步", + "處理markdown文本格式的轉變": "處理Markdown文本格式轉換", + "功能、貢獻者": "功能、貢獻者", + "中文Latex項目全文潤色": "中文LaTeX項目全文潤色", + "等待newbing回復的片段": "等待newbing回復的片段", + "寫入文件": "寫入文件", + "下載pdf文件未成功": "下載PDF文件失敗", + "將生成的報告自動投射到文件上傳區": "將生成的報告自動上傳到文件區", + "函數插件作者": "函數插件作者", + "將要匹配的模式": "將要匹配的模式", + "所有问询记录将自动保存在本地目录./gpt_log/chat_secrets.log": "所有詢問記錄將自動保存在本地目錄./gpt_log/chat_secrets.log", + "正在分析一个项目的源代码": "正在分析一個專案的源代碼", + "使每个段落之间有两个换行符分隔": "使每個段落之間有兩個換行符分隔", + "并在被装饰的函数上执行": "並在被裝飾的函數上執行", + "更新完成": "更新完成", + "请先把模型切换至gpt-xxxx或者api2d-xxxx": "請先把模型切換至gpt-xxxx或者api2d-xxxx", + "结果写入文件": "結果寫入文件", + "在执行过程中遭遇问题": "在執行過程中遭遇問題", + "找不到任何文件": "找不到任何文件", + "给gpt的静默提醒": "給gpt的靜默提醒", + "远程返回错误": "遠程返回錯誤", + "例如\\section": "例如\\section", + "该函数详细注释已添加": "該函數詳細注釋已添加", + "对文本进行归一化处理": "對文本進行歸一化處理", + "注意目前不能多人同时调用NewBing接口": "注意目前不能多人同時調用NewBing接口", + "来保留函数的元信息": "來保留函數的元信息", + "一般是文本过长": "一般是文本過長", + "切割PDF": "切割PDF", + "开始下一个循环": "開始下一個循環", + "正在开始汇总": "正在開始匯總", + "建议使用docker环境!": "建議使用docker環境!", + "质能方程是描述质量与能量之间的当量关系的方程": "質能方程是描述質量與能量之間的當量關係的方程", + "子进程执行": "子進程執行", + "清理后的文本内容字符串": "清理後的文本內容字串", + "石板色": "石板色", + "Bad forward key. API2D账户额度不足": "Bad forward key. API2D帳戶額度不足", + "摘要在 .gs_rs 中的文本": "摘要在 .gs_rs 中的文本", + "请复制并转到以下URL": "請複製並轉到以下URL", + "然后用for+append循环重新赋值": "然後用for+append循環重新賦值", + "文章极长": "文章極長", + "请从数据中提取信息": "請從數據中提取信息", + "为了安全而隐藏绝对地址": "為了安全而隱藏絕對地址", + "OpenAI绑了信用卡的用户可以填 16 或者更高": "OpenAI綁了信用卡的用戶可以填 16 或者更高", + "gpt4现在只对申请成功的人开放": "gpt4現在只對申請成功的人開放", + "问号": "問號", + "并合并为一个字符串": "並合併為一個字串", + "文件上传区": "文件上傳區", + "这个函数运行在主进程": "這個函數運行在主進程", + "执行中": "執行中", + "修改函数插件后": "修改函數插件後", + "请你阅读以下学术论文相关的材料": "請你閱讀以下學術論文相關的材料", + "加载需要一段时间": "加載需要一段時間", + "单线程": "單線程", + "5s之后重启": "5秒後重啟", + "文件名是": "文件名是", + "主进程执行": "主進程執行", + "如何理解传奇?": "如何理解傳奇?", + "解析整个Java项目": "解析整個Java項目", + "已成功": "已成功", + "该函数面向希望实现更多有趣功能的开发者": "該函數面向希望實現更多有趣功能的開發者", + "代理所在地": "代理所在地", + "解析Jupyter Notebook文件": "解析Jupyter Notebook文件", + "观测窗": "觀測窗", + "更好的UI视觉效果": "更好的UI視覺效果", + "在此处替换您要搜索的关键词": "在此處替換您要搜索的關鍵詞", + "Token溢出": "Token溢出", + "这段代码来源 https": "這段代碼來源 https", + "请求超时": "請求超時", + "已经被转化过": "已經被轉化過", + "LLM_MODEL 格式不正确!": "LLM_MODEL 格式不正確!", + "先输入问题": "請輸入問題", + "灰色": "灰色", + "锌色": "鋅色", + "里面包含以指定类型为后缀名的所有文件的绝对路径": "包含指定類型後綴名的所有文件的絕對路徑", + "实现插件的热更新": "實現插件的熱更新", + "请对下面的文章片段用中文做概述": "請用中文概述下面的文章片段", + "如果需要在二级路径下运行": "如果需要在二級路徑下運行", + "的分析如下": "的分析如下", + "但端口号都应该在最显眼的位置上": "但端口號都應該在最顯眼的位置上", + "当输入部分的token占比小于限制的3/4时": "當輸入部分的token占比小於限制的3/4時", + "第一次运行": "第一次運行", + "失败了": "失敗了", + "如果包含数学公式": "如果包含數學公式", + "需要配合修改main.py才能生效!": "需要配合修改main.py才能生效!", + "它的作用是……额……就是不起作用": "它的作用是......额......就是不起作用", + "通过裁剪来缩短历史记录的长度": "通過裁剪來縮短歷史記錄的長度", + "chatGPT对话历史": "chatGPT對話歷史", + "它可以作为创建新功能函数的模板": "它可以作為創建新功能函數的模板", + "生成一个请求线程": "生成一個請求線程", + "$m$是质量": "$m$是質量", + ";4、引用数量": ";4、引用數量", + "NewBing响应缓慢": "NewBing響應緩慢", + "提交": "提交", + "test_联网回答问题": "test_聯網回答問題", + "加载tokenizer完毕": "加載tokenizer完畢", + "HotReload 的意思是热更新": "HotReload 的意思是熱更新", + "随便显示点什么防止卡顿的感觉": "隨便顯示點什麼防止卡頓的感覺", + "对整个Markdown项目进行翻译": "對整個Markdown項目進行翻譯", + "替换操作": "替換操作", + "然后通过getattr函数获取函数名": "然後通過getattr函數獲取函數名", + "并替换为空字符串": "並替換為空字符串", + "逐个文件分析已完成": "逐個文件分析已完成", + "填写之前不要忘记把USE_PROXY改成True": "填寫之前不要忘記把USE_PROXY改成True", + "不要遗漏括号": "不要遺漏括號", + "避免包括解释": "避免包括解釋", + "把newbing的长长的cookie放到这里": "把newbing的長長的cookie放到這裡", + "如API和代理网址": "如API和代理網址", + "模块预热": "模塊預熱", + "Latex项目全文英译中": "Latex項目全文英譯中", + "尝试计算比例": "嘗試計算比例", + "OpenAI所允許的最大並行過載": "OpenAI所允許的最大並行過載", + "向chatbot中添加簡單的意外錯誤信息": "向chatbot中添加簡單的意外錯誤信息", + "history至少釋放二分之一": "history至少釋放二分之一", + "”補上": "”補上", + "我們剝離Introduction之後的部分": "我們剝離Introduction之後的部分", + "嘗試加載": "嘗試加載", + "**函數功能**": "**函數功能**", + "藍色": "藍色", + "重置文件的創建時間": "重置文件的創建時間", + "再失敗就沒辦法了": "再失敗就沒辦法了", + "解析整個Python項目": "解析整個Python項目", + "此處不修改": "此處不修改", + "安裝ChatGLM的依賴": "安裝ChatGLM的依賴", + "使用wraps": "使用wraps", + "優先級1. 獲取環境變量作為配置": "優先級1. 獲取環境變量作為配置", + "遞歸地切割PDF文件": "遞歸地切割PDF文件", + "隨變按鈕的回調函數註冊": "隨變按鈕的回調函數註冊", + "我們": "我們", + "然後請使用Markdown格式封裝": "然後請使用Markdown格式封裝", + "網絡的遠程文件": "網絡的遠程文件", + "主进程统一调用函数接口": "主進程統一調用函數介面", + "请按以下描述给我发送图片": "請按以下描述給我發送圖片", + "正常对话时使用": "正常對話時使用", + "不需要高级参数": "不需要高級參數", + "双换行": "雙換行", + "初始值是摘要": "初始值是摘要", + "已经对该文章的所有片段总结完毕": "已經對該文章的所有片段總結完畢", + "proxies格式错误": "proxies格式錯誤", + "一次性完成": "一次性完成", + "设置一个token上限": "設置一個token上限", + "接下来": "接下來", + "以_array结尾的输入变量都是列表": "以_array結尾的輸入變量都是列表", + "收到以下文件": "收到以下文件", + "但显示Token不足": "但顯示Token不足", + "可以多线程并行": "可以多線程並行", + "带Cookies的Chatbot类": "帶Cookies的Chatbot類", + "空空如也的输入栏": "空空如也的輸入欄", + "然后回车键提交后即可生效": "然後回車鍵提交後即可生效", + "这是必应": "這是必應", + "聊天显示框的句柄": "聊天顯示框的句柄", + "集合文件": "集合文件", + "并显示到聊天当中": "並顯示到聊天當中", + "设置5秒即可": "設置5秒即可", + "不懂就填localhost或者127.0.0.1肯定错不了": "不懂就填localhost或者127.0.0.1肯定錯不了", + "安装方法": "安裝方法", + "Openai 限制免费用户每分钟20次请求": "Openai 限制免費用戶每分鐘20次請求", + "建议": "建議", + "将普通文本转换为Markdown格式的文本": "將普通文本轉換為Markdown格式的文本", + "应急食品是“原神”游戏中的角色派蒙的外号": "應急食品是“原神”遊戲中的角色派蒙的外號", + "不要修改!!": "不要修改!!", + "注意无论是inputs还是history": "注意無論是inputs還是history", + "读取Latex文件": "讀取Latex文件", + "\\n 翻译": "\\n 翻譯", + "第 1 步": "第 1 步", + "代理配置": "代理配置", + "temperature是LLM的内部调优参数": "temperature是LLM的內部調優參數", + "解析整个Lua项目": "解析整個Lua項目", + "重试几次": "重試幾次", + "接管gradio默认的markdown处理方式": "接管gradio默認的markdown處理方式", + "请注意自我隐私保护哦!": "請注意自我隱私保護哦!", + "导入软件依赖失败": "導入軟件依賴失敗", + "方便调试和定位问题": "方便調試和定位問題", + "请用代码块输出代码": "請用代碼塊輸出代碼", + "字符数小于100": "字符數小於100", + "程序终止": "程序終止", + "处理历史信息": "處理歷史信息", + "在界面上显示结果": "在界面上顯示結果", + "自动定位": "自動定位", + "读Tex论文写摘要": "讀Tex論文寫摘要", + "截断时的颗粒度": "截斷時的顆粒度", + "第 4 步": "第 4 步", + "正在处理中": "正在處理中", + "酸橙色": "酸橙色", + "分别为 __enter__": "分別為 __enter__", + "Json异常": "Json異常", + "输入过长已放弃": "輸入過長已放棄", + "按照章节切割PDF": "按照章節切割PDF", + "作为切分点": "作為切分點", + "用一句话概括程序的整体功能": "用一句話概括程序的整體功能", + "PDF文件也已经下载": "PDF文件也已經下載", + "您可能选择了错误的模型或请求源": "您可能選擇了錯誤的模型或請求源", + "则终止": "則終止", + "完成了吗": "完成了嗎", + "表示要搜索的文件类型": "表示要搜索的文件類型", + "文件内容是": "文件內容是", + "亮色主题": "亮色主題", + "函数插件输入输出接驳区": "函數插件輸入輸出接驳區", + "异步任务开始": "異步任務開始", + "Index 2 框框": "索引 2 框框", + "方便实现复杂的功能逻辑": "方便實現複雜的功能邏輯", + "警告": "警告", + "放在这里": "放在這裡", + "处理中途中止的情况": "處理中途中止的情況", + "结尾除去一次": "結尾除去一次", + "代码开源和更新": "代碼開源和更新", + "列表": "列表", + "状态": "狀態", + "第9步": "第9步", + "的标识": "的標識", + "Call jittorllms fail 不能正常加载jittorllms的参数": "Call jittorllms 失敗 不能正常加載 jittorllms 的參數", + "中性色": "中性色", + "优先": "優先", + "读取配置": "讀取配置", + "jittorllms消耗大量的内存": "jittorllms消耗大量的內存", + "Latex项目全文中译英": "Latex項目全文中譯英", + "在代理软件的设置里找": "在代理軟件的設置裡找", + "否则将导致每个人的NewBing问询历史互相渗透": "否則將導致每個人的NewBing問詢歷史互相滲透", + "这个函数运行在子进程": "這個函數運行在子進程", + "2. 长效解决方案": "2. 長效解決方案", + "Windows上还需要安装winrar软件": "Windows上還需要安裝winrar軟件", + "正在执行一些模块的预热": "正在執行一些模塊的預熱", + "一键DownloadArxivPapersAndTranslateAbstract": "一鍵DownloadArxivPapersAndTranslateAbstract", + "完成全部响应": "完成全部響應", + "输入中可能存在乱码": "輸入中可能存在亂碼", + "用了很多trick": "用了很多trick", + "填写格式是": "填寫格式是", + "预处理一波": "預處理一波", + "如果只询问1个大语言模型": "如果只詢問1個大語言模型", + "第二部分": "第二部分", + "或历史数据过长. 历史缓存数据已部分释放": "或歷史數據過長. 歷史緩存數據已部分釋放", + "文章内容是": "文章內容是", + "二、论文翻译": "二、論文翻譯", + "汇总报告已经添加到右侧“文件上传区”": "匯總報告已經添加到右側“檔案上傳區”", + "图像中转网址": "圖像中轉網址", + "第4次尝试": "第4次嘗試", + "越新越好": "越新越好", + "解决一个mdx_math的bug": "解決一個mdx_math的bug", + "中间过程不予显示": "中間過程不予顯示", + "路径或网址": "路徑或網址", + "您可以试试让AI写一个Related Works": "您可以試試讓AI寫一個Related Works", + "开始接收chatglm的回复": "開始接收chatglm的回覆", + "环境变量可以是": "環境變數可以是", + "请将此部分润色以满足学术标准": "請將此部分潤色以滿足學術標準", + "* 此函数未来将被弃用": "* 此函數未來將被棄用", + "替换其他特殊字符": "替換其他特殊字元", + "该模板可以实现ChatGPT联网信息综合": "該模板可以實現ChatGPT聯網資訊綜合", + "当前问答": "當前問答", + "洋红色": "洋紅色", + "不需要重启程序": "不需要重啟程式", + "所有线程同时开始执行任务函数": "所有線程同時開始執行任務函數", + "因此把prompt加入 history": "因此將prompt加入歷史", + "刷新界面": "重新整理介面", + "青色": "藍綠色", + "实时在UI上反馈远程数据流": "即時在UI上回饋遠程數據流", + "第一种情况": "第一種情況", + "的耐心": "的耐心", + "提取所有块元的文本信息": "提取所有塊元的文本信息", + "裁剪时": "裁剪時", + "对从 PDF 提取出的原始文本进行清洗和格式化处理": "對從PDF提取出的原始文本進行清洗和格式化處理", + "如果是第一次运行": "如果是第一次運行", + "程序完成": "程式完成", + "api-key不满足要求": "API金鑰不滿足要求", + "布尔值": "布林值", + "尝试导入依赖": "嘗試匯入相依性", + "逐个文件分析": "逐個檔案分析", + "详情见get_full_error的输出": "詳情見get_full_error的輸出", + "检测到": "偵測到", + "手动指定和筛选源代码文件类型": "手動指定和篩選原始程式碼檔案類型", + "进入任务等待状态": "進入任務等待狀態", + "当 输入部分的token占比 小于 全文的一半时": "當輸入部分的token佔比小於全文的一半時", + "查询代理的地理位置": "查詢代理的地理位置", + "是否在输入过长时": "是否在輸入過長時", + "chatGPT分析报告": "chatGPT分析報告", + "然后yeild出去": "然後yield出去", + "用户取消了程序": "使用者取消了程式", + "琥珀色": "琥珀色", + "这里是特殊函数插件的高级参数输入区": "這裡是特殊函數插件的高級參數輸入區", + "第 2 步": "第 2 步", + "字符串": "字串", + "检测到程序终止": "偵測到程式終止", + "对整个Latex项目进行润色": "對整個Latex專案進行潤色", + "方法则会被调用": "方法則會被調用", + "实验性函数调用出错": "實驗性函數調用出錯", + "把完整输入-输出结果显示在聊天框": "把完整輸入-輸出結果顯示在聊天框", + "本地文件预览": "本地檔案預覽", + "接下来请你逐文件分析下面的论文文件": "接下來請你逐檔案分析下面的論文檔案", + "英语关键词": "英語關鍵詞", + "一-鿿": "一-鿿", + "尝试识别section": "嘗試識別section", + "用于显示给用户": "用於顯示給使用者", + "newbing回复的片段": "newbing回覆的片段", + "的转化": "的轉換", + "将要忽略匹配的文件名": "將要忽略匹配的檔案名稱", + "生成正则表达式": "生成正則表示式", + "失败时的重试次数": "失敗時的重試次數", + "亲人两行泪": "親人兩行淚", + "故可以只分析文章内容": "故可以只分析文章內容", + "然后回车提交": "然後按下Enter提交", + "并提供改进建议": "並提供改進建議", + "不可多线程": "不可多執行緒", + "这个文件用于函数插件的单元测试": "這個檔案用於函數插件的單元測試", + "用一张Markdown表格简要描述以下文件的功能": "用一張Markdown表格簡要描述以下檔案的功能", + "可用clear将其清空": "可用clear將其清空", + "发送至LLM": "發送至LLM", + "先在input输入编号": "先在input輸入編號", + "更新失败": "更新失敗", + "相关功能不稳定": "相關功能不穩定", + "自动解压": "自動解壓", + "效果奇好": "效果奇佳", + "拆分过长的IPynb文件": "拆分過長的IPynb檔案", + "份搜索结果": "搜尋結果", + "如果没有指定文件名": "如果沒有指定檔案名稱", + "有$标识的公式符号": "有$標識的公式符號", + "跨平台": "跨平台", + "最终": "最終", + "第3次尝试": "第三次嘗試", + "检查代理服务器是否可用": "檢查代理伺服器是否可用", + "再例如一个包含了待处理文件的路径": "再例如一個包含了待處理檔案的路徑", + "注意文章中的每一句话都要翻译": "注意文章中的每一句話都要翻譯", + "修改它": "修改它", + "发送 GET 请求": "發送 GET 請求", + "判定为不是正文": "判定為不是正文", + "默认是.md": "預設是.md", + "终止按钮的回调函数注册": "終止按鈕的回調函數註冊", + "搜索需要处理的文件清单": "搜尋需要處理的檔案清單", + "当历史上下文过长时": "當歷史上下文過長時", + "不包含任何可用于": "不包含任何可用於", + "本项目现已支持OpenAI和API2D的api-key": "本專案現已支援OpenAI和API2D的api-key", + "异常原因": "異常原因", + "additional_fn代表点击的哪个按钮": "additional_fn代表點擊的哪個按鈕", + "注意": "注意", + "找不到任何.docx或doc文件": "找不到任何.docx或doc文件", + "刷新用户界面": "刷新使用者介面", + "失败": "失敗", + "Index 0 文本": "索引 0 文本", + "你需要翻译以下内容": "你需要翻譯以下內容", + "chatglm 没有 sys_prompt 接口": "chatglm 沒有 sys_prompt 介面", + "您的 API_KEY 是": "您的 API_KEY 是", + "请缩减输入文件的数量": "請減少輸入檔案的數量", + "并且将结合上下文内容": "並且將結合上下文內容", + "返回当前系统中可用的未使用端口": "返回目前系統中可用的未使用埠口", + "以下配置可以优化体验": "以下配置可以優化體驗", + "常规情况下": "一般情況下", + "递归": "遞迴", + "分解代码文件": "分解程式碼檔案", + "用户反馈": "使用者回饋", + "第 0 步": "第 0 步", + "即将更新pip包依赖……": "即將更新pip套件相依性......", + "请从": "請從", + "第二种情况": "第二種情況", + "NEWBING_COOKIES未填寫或有格式錯誤": "NEWBING_COOKIES未填寫或格式錯誤", + "以上材料已經被寫入": "以上材料已經被寫入", + "找圖片": "尋找圖片", + "函數插件-固定按鈕區": "函數插件-固定按鈕區", + "該文件中主要包含三個函數": "該文件主要包含三個函數", + "用於與with語句一起使用": "用於與with語句一起使用", + "插件初始化中": "插件初始化中", + "文件讀取完成": "文件讀取完成", + "讀取文件": "讀取文件", + "高危設置!通過修改此設置": "高危設置!通過修改此設置", + "所有文件都總結完成了嗎": "所有文件都總結完成了嗎", + "限制的3/4時": "限制的3/4時", + "取決於": "取決於", + "預處理": "預處理", + "至少一個線程任務Token溢出而失敗": "至少一個線程任務Token溢出而失敗", + "一、論文概況": "一、論文概況", + "TGUI不支持函數插件的實現": "TGUI不支持函數插件的實現", + "拒絕服務": "拒絕服務", + "請更換為API_URL_REDIRECT配置": "請更換為API_URL_REDIRECT配置", + "是否自動處理token溢出的情況": "是否自動處理token溢出的情況", + "和": "和", + "双层列表": "雙層列表", + "做一些外观色彩上的调整": "做一些外觀色彩上的調整", + "发送请求到子进程": "發送請求到子進程", + "配置信息如下": "配置信息如下", + "从而实现分批次处理": "從而實現分批次處理", + "找不到任何.ipynb文件": "找不到任何.ipynb文件", + "代理网络的地址": "代理網絡的地址", + "新版本": "新版本", + "用于实现Python函数插件的热更新": "用於實現Python函數插件的熱更新", + "将中文句号": "將中文句號", + "警告!被保存的对话历史可以被使用该系统的任何人查阅": "警告!被保存的對話歷史可以被使用該系統的任何人查閱", + "用于数据流可视化": "用於數據流可視化", + "第三部分": "第三部分", + "界面更新": "界面更新", + "**输出参数说明**": "**輸出參數說明**", + "其中$E$是能量": "其中$E$是能量", + "这个内部函数可以将函数的原始定义更新为最新版本": "這個內部函數可以將函數的原始定義更新為最新版本", + "不要修改任何LaTeX命令": "不要修改任何LaTeX命令", + "英译中": "英譯中", + "将错误显示出来": "顯示錯誤", + "*代表通配符": "*代表通配符", + "找不到任何lua文件": "找不到任何lua文件", + "准备文件的下载": "準備下載文件", + "爬取搜索引擎的结果": "爬取搜尋引擎的結果", + "例如在windows cmd中": "例如在windows cmd中", + "一般原样传递下去就行": "一般原樣傳遞下去就行", + "免费用户填3": "免費用戶填3", + "在汇总报告中隐藏啰嗦的真实输入": "在匯總報告中隱藏啰嗦的真實輸入", + "Tiktoken未知错误": "Tiktoken未知錯誤", + "整理结果": "整理結果", + "也许等待十几秒后": "也許等待十幾秒後", + "将匹配到的数字作为替换值": "將匹配到的數字作為替換值", + "对每一个源代码文件": "對每一個源代碼文件", + "补上后面的": "補上後面的", + "调用时": "調用時", + "也支持同时填写多个api-key": "也支持同時填寫多個api-key", + "第二层列表是对话历史": "第二層列表是對話歷史", + "询问多个GPT模型": "詢問多個GPT模型", + "您可能需要手动安装新增的依赖库": "您可能需要手動安裝新增的依賴庫", + "隨機負載均衡": "隨機負載均衡", + "等待多線程操作": "等待多線程操作", + "質能方程式": "質能方程式", + "需要預先pip install py7zr": "需要預先pip install py7zr", + "是否丟棄掉 不是正文的內容": "是否丟棄掉 不是正文的內容", + "加載失敗!": "加載失敗!", + "然後再寫一段英文摘要": "然後再寫一段英文摘要", + "從以上搜索結果中抽取信息": "從以上搜索結果中抽取信息", + "response中會攜帶traceback報錯信息": "response中會攜帶traceback報錯信息", + "放到history中": "放到history中", + "不能正常加載jittorllms的參數!": "不能正常加載jittorllms的參數!", + "需要預先pip install rarfile": "需要預先pip install rarfile", + "以免輸入溢出": "以免輸入溢出", + "MOSS消耗大量的內存": "MOSS消耗大量的內存", + "獲取預處理函數": "獲取預處理函數", + "缺少MOSS的依賴": "缺少MOSS的依賴", + "多線程": "多線程", + "結束": "結束", + "請使用Markdown": "請使用Markdown", + "匹配^數字^": "匹配^數字^", + "负责把学术论文准确翻译成中文": "負責將學術論文準確翻譯成中文", + "否则可能导致显存溢出而造成卡顿": "否則可能導致顯存溢出而造成卡頓", + "不输入即全部匹配": "不輸入即全部匹配", + "下面是一些学术文献的数据": "下面是一些學術文獻的數據", + "网络卡顿、代理失败、KEY失效": "網絡卡頓、代理失敗、KEY失效", + "其他的排队等待": "其他的排隊等待", + "表示要搜索的文件或者文件夹路径或网络上的文件": "表示要搜索的文件或者文件夾路徑或網絡上的文件", + "当输入部分的token占比": "當輸入部分的token佔比", + "你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性": "你的任務是改進所提供文本的拼寫、語法、清晰、簡潔和整體可讀性", + "这是什么功能": "這是什麼功能", + "剩下的情况都开头除去": "剩下的情況都開頭除去", + "清除换行符": "清除換行符", + "请提取": "請提取", + "覆盖和重启": "覆蓋和重啟", + "发送至chatGPT": "發送至chatGPT", + "+ 已经汇总的文件组": "+ 已經匯總的文件組", + "插件": "插件", + "OpenAI模型选择是": "OpenAI模型選擇是", + "原文": "原文", + "您可以随时在history子文件夹下找回旧版的程序": "您可以隨時在history子文件夾下找回舊版的程序", + "以确保一些资源在代码块执行期间得到正确的初始化和清理": "以確保一些資源在程式碼區塊執行期間得到正確的初始化和清理", + "它们会继续向下调用更底层的LLM模型": "它們會繼續向下調用更底層的LLM模型", + "GPT输出格式错误": "GPT輸出格式錯誤", + "中译英": "中譯英", + "无代理状态下很可能无法访问OpenAI家族的模型": "無代理狀態下很可能無法訪問OpenAI家族的模型", + "已失败": "已失敗", + "最大线程数": "最大線程數", + "读取时首先看是否存在私密的config_private配置文件": "讀取時首先看是否存在私密的config_private配置文件", + "必要时": "必要時", + "在装饰器内部": "在裝飾器內部", + "api2d 正常完成": "api2d 正常完成", + "您可以调用“LoadConversationHistoryArchive”还原当下的对话": "您可以調用“LoadConversationHistoryArchive”還原當下的對話", + "找不到任何golang文件": "找不到任何golang文件", + "找不到任何rust文件": "找不到任何rust文件", + "输入了已经经过转化的字符串": "輸入了已經經過轉換的字串", + "是否在结束时": "是否在結束時", + "存档文件详情": "存檔文件詳情", + "用英文逗号分割": "用英文逗號分割", + "已删除": "已刪除", + "收到消息": "收到訊息", + "系统输入": "系統輸入", + "读取配置文件": "讀取配置檔", + "跨线程传递": "跨線程傳遞", + "Index 1 字体": "索引 1 字型", + "设定一个最小段落长度阈值": "設定最小段落長度閾值", + "流式获取输出": "流式取得輸出", + "默认按钮颜色是 secondary": "預設按鈕顏色為 secondary", + "请对下面的程序文件做一个概述": "請對下面的程式檔案做一個概述", + "当文件被上传时的回调函数": "當檔案被上傳時的回撥函數", + "对话窗的高度": "對話窗的高度", + "Github更新地址": "Github更新位址", + "然后在用常规的": "然後再用常規的", + "读取Markdown文件": "讀取Markdown檔案", + "会把列表拆解": "會拆解列表", + "OpenAI绑定信用卡可解除频率限制": "OpenAI綁定信用卡可解除頻率限制", + "可能需要一点时间下载参数": "可能需要一點時間下載參數", + "需要访问谷歌": "需要訪問谷歌", + "根据给定的匹配结果来判断换行符是否表示段落分隔": "根據給定的匹配結果來判斷換行符是否表示段落分隔", + "请提交新问题": "請提交新問題", + "测试功能": "測試功能", + "尚未充分测试的函数插件": "尚未充分測試的函數插件", + "解析此项目本身": "解析此專案本身", + "提取摘要": "提取摘要", + "用于输入给GPT的前提提示": "用於輸入給GPT的前提提示", + "第一步": "第一步", + "此外": "此外", + "找不到任何前端相关文件": "找不到任何前端相關檔案", + "输入其他/无输入+回车=不更新": "輸入其他/無輸入+回車=不更新", + "句号": "句號", + "如果最后成功了": "如果最後成功了", + "导致输出不完整": "導致輸出不完整", + "并修改代码拆分file_manifest列表": "並修改程式碼拆分file_manifest列表", + "在读取API_KEY时": "在讀取API_KEY時", + "迭代地历遍整个文章": "迭代地歷遍整個文章", + "存在一行极长的文本!": "存在一行極長的文字!", + "private_upload里面的文件名在解压zip后容易出现乱码": "private_upload裡面的檔案名在解壓縮zip後容易出現亂碼", + "清除当前溢出的输入": "清除當前溢出的輸入", + "只输出转化后的英文代码": "只輸出轉換後的英文程式碼", + "打开插件列表": "打開外掛程式列表", + "查询版本和用户意见": "查詢版本和使用者意見", + "需要用此选项防止高频地请求openai导致错误": "需要用此選項防止高頻地請求openai導致錯誤", + "有肉眼不可见的小变化": "有肉眼不可見的小變化", + "返回一个新的字符串": "返回一個新的字串", + "如果是.doc文件": "如果是.doc文件", + "英语学术润色": "英語學術潤色", + "已经全部完成": "已經全部完成", + "该文件中主要包含2个函数": "該文件中主要包含2個函數", + "捕捉函数f中的异常并封装到一个生成器中返回": "捕捉函數f中的異常並封裝到一個生成器中返回", + "兼容旧版的配置": "兼容舊版的配置", + "LLM的内部调优参数": "LLM的內部調優參數", + "请查收": "請查收", + "输出了前面的": "輸出了前面的", + "用多种方式组合": "用多種方式組合", + "等待中": "等待中", + "从最长的条目开始裁剪": "從最長的條目開始裁剪", + "就是临时文件夹的路径": "就是臨時文件夾的路徑", + "体验gpt-4可以试试api2d": "體驗gpt-4可以試試api2d", + "提交任务": "提交任務", + "已配置": "已配置", + "第三方库": "第三方庫", + "将y中最后一项的输入部分段落化": "將y中最後一項的輸入部分段落化", + "高级函数插件": "Advanced Function Plugin", + "等待jittorllms响应中": "Waiting for jittorllms response", + "解析整个C++项目": "Parsing the entire C++ project", + "你是一名专业的学术教授": "You are a professional academic professor", + "截断重试": "Truncated retry", + "即在代码结构不变得情况下取代其他的上下文管理器": "That is, replace other context managers without changing the code structure", + "表示函数是否成功执行": "Indicates whether the function was executed successfully", + "处理多模型并行等细节": "Handling details such as parallelism of multiple models", + "不显示中间过程": "Do not display intermediate process", + "chatGPT的内部调优参数": "Internal tuning parameters of chatGPT", + "你必须使用Markdown表格": "You must use Markdown tables", + "第 5 步": "Step 5", + "jittorllms响应异常": "jittorllms response exception", + "在项目根目录运行这两个指令": "Run these two commands in the project root directory", + "获取tokenizer": "Get tokenizer", + "chatbot 为WebUI中显示的对话列表": "chatbot is the list of dialogues displayed in WebUI", + "test_解析一个Cpp项目": "test_parse a Cpp project", + "将对话记录history以Markdown格式写入文件中": "Write the dialogue record history to a file in Markdown format", + "装饰器函数": "Decorator function", + "玫瑰色": "Rose color", + "将单空行": "刪除單行空白", + "祖母绿": "綠松石色", + "整合所有信息": "整合所有資訊", + "如温度和top_p等": "例如溫度和top_p等", + "重试中": "重試中", + "月": "月份", + "localhost意思是代理软件安装在本机上": "localhost意思是代理軟體安裝在本機上", + "gpt_log/**/chatGPT对话历史*.html": "gpt_log/**/chatGPT對話歷史*.html", + "的长度必须小于 2500 个 Token": "長度必須小於 2500 個 Token", + "抽取可用的api-key": "提取可用的api-key", + "增强报告的可读性": "增強報告的可讀性", + "对话历史": "對話歷史", + "-1代表随机端口": "-1代表隨機端口", + "在函数插件中被调用": "在函數插件中被調用", + "向chatbot中添加错误信息": "向chatbot中添加錯誤訊息", + "代理可能无效": "代理可能無效", + "比如introduction": "例如introduction", + "接下来请你逐文件分析下面的工程": "接下來請你逐文件分析下面的工程", + "任务函数": "任務函數", + "删除所有历史对话文件": "刪除所有歷史對話檔案", + "找不到任何.md文件": "找不到任何.md文件", + "给出输出文件清单": "給出輸出文件清單", + "不能正常加载ChatGLM的参数!": "無法正常加載ChatGLM的參數!", + "不详": "不詳", + "提取出以下内容": "提取出以下內容", + "请注意": "請注意", + "不能加载Newbing组件": "無法加載Newbing組件", + "您既可以在config.py中修改api-key": "您可以在config.py中修改api-key", + "但推荐上传压缩文件": "但建議上傳壓縮文件", + "支持任意数量的llm接口": "支持任意數量的llm接口", + "材料如下": "材料如下", + "停止": "停止", + "gradio的inbrowser触发不太稳定": "gradio的inbrowser觸發不太穩定", + "带token约简功能": "帶token約簡功能", + "解析项目": "解析項目", + "尝试识别段落": "嘗試識別段落", + "输入栏用户输入的文本": "輸入欄用戶輸入的文本", + "清理规则包括": "清理規則包括", + "新版配置": "新版配置", + "如果有": "如果有", + "高級參數輸入區": "#", + "您提供的api-key不滿足要求": "#", + "“喂狗”": "#", + "有線程鎖": "#", + "解析整個CSharp項目": "#", + "上下文管理器必須實現兩個方法": "#", + "Call MOSS fail 不能正常加載MOSS的參數": "#", + "獲取圖片URL": "#", + "輸入部分太自由": "#", + "Not enough point. API2D賬戶點數不足": "#", + "網絡錯誤": "#", + "請開始多線程操作": "#", + "authors獲取失敗": "#", + "、地址": "#", + "根據以上分析": "#", + "1、英文題目;2、中文題目翻譯;3、作者;4、arxiv公開": "#", + "一些普通功能模塊": "#", + "參數簡單": "#", + "具備以下功能": "#", + "優先級2. 獲取config_private中的配置": "#", + "汇总报告如何远程获取": "如何遠程獲取匯總報告", + "热更新prompt": "熱更新提示", + "插件调度异常": "插件調度異常", + "英文Latex项目全文润色": "英文Latex項目全文潤色", + "此外我们也提供可同步处理大量文件的多线程Demo供您参考": "此外我們也提供可同步處理大量文件的多線程Demo供您參考", + "则不解析notebook中的Markdown块": "則不解析notebook中的Markdown塊", + "备选输入区": "備選輸入區", + "个片段": "個片段", + "总结输出": "總結輸出", + "2. 把输出用的余量留出来": "2. 把輸出用的餘量留出來", + "请对下面的文章片段做一个概述": "請對下面的文章片段做一個概述", + "多线程方法": "多線程方法", + "下面是对每个参数和返回值的说明": "下面是對每個參數和返回值的說明", + "由于请求gpt需要一段时间": "由於請求gpt需要一段時間", + "历史": "歷史", + "用空格或段落分隔符替换原换行符": "用空格或段落分隔符替換原換行符", + "查找语法错误": "查找語法錯誤", + "输出 Returns": "輸出 Returns", + "在config.py中配置": "在config.py中配置", + "找不到任何.tex文件": "找不到任何.tex文件", + "一键更新协议": "一鍵更新協議", + "gradio版本较旧": "gradio版本較舊", + "灵活而简洁": "靈活而簡潔", + "等待NewBing响应中": "等待NewBing響應中", + "更多函数插件": "更多函數插件", + "作为一个标识而存在": "作為一個標識而存在", + "GPT模型返回的回复字符串": "GPT模型返回的回復字串", + "请从给定的若干条搜索结果中抽取信息": "請從給定的若干條搜索結果中抽取信息", + "请对下面的文章片段做概述": "請對下面的文章片段做概述", + "历史对话输入": "歷史對話輸入", + "请稍等": "請稍等", + "整理报告的格式": "整理報告的格式", + "保存当前的对话": "保存當前的對話", + "代理所在地查询超时": "代理所在地查詢超時", + "inputs 是本次问询的输入": "inputs是本次問詢的輸入", + "网页的端口": "網頁的端口", + "仅仅服务于视觉效果": "僅僅服務於視覺效果", + "把结果写入文件": "把結果寫入文件", + "留空即可": "留空即可", + "按钮颜色": "按鈕顏色", + "借鉴了 https": "借鉴了 https", + "Token溢出数": "Token溢出數", + "找不到任何java文件": "找不到任何java文件", + "批量总结Word文档": "批量總結Word文檔", + "一言以蔽之": "一言以蔽之", + "提取字体大小是否近似相等": "提取字體大小是否近似相等", + "直接给定文件": "直接給定文件", + "使用该模块需要额外依赖": "使用該模塊需要額外依賴", + "的配置": "的配置", + "pip install python-docx 用于docx格式": "pip install python-docx 用於docx格式", + "正在查找对话历史文件": "正在查找對話歷史文件", + "输入已识别为openai的api_key": "輸入已識別為openai的api_key", + "对整个Latex项目进行翻译": "對整個Latex項目進行翻譯", + "Y+回车=确认": "Y+回車=確認", + "正在同时咨询ChatGPT和ChatGLM……": "正在同時諮詢ChatGPT和ChatGLM……", + "根据 heuristic 规则": "根據heuristic規則", + "如256x256": "如256x256", + "函数插件区": "函數插件區", + "*** API_KEY 导入成功": "*** API_KEY 導入成功", + "请对下面的程序文件做一个概述文件名是": "請對下面的程序文件做一個概述文件名是", + "替換跨行的連詞": "#", + "內容太長了都會觸發token數量溢出的錯誤": "#", + "尚未完成全部響應": "#", + "生成帶有段落標籤的HTML代碼": "#", + "函數熱更新是指在不停止程序運行的情況下": "#", + "將Unsplash API中的PUT_YOUR_QUERY_HERE替換成描述該事件的一個最重要的單詞": "#", + "沒有提供高級參數功能說明": "#", + "條": "#", + "請刷新界面重試": "#", + "和openai的連接容易斷掉": "#", + "使用 Unsplash API": "#", + "完成情況": "#", + "迭代上一次的結果": "#", + "每個線程都要“餵狗”": "#", + "最多收納多少個網頁的結果": "#", + "日": "#", + "第4步": "#", + "找不到任何python文件": "#", + "經過充分測試": "#", + "缺少的依賴": "#", + "分组+迭代处理": "分組+迭代處理", + "安装Newbing的依赖": "安裝Newbing的依賴", + "批": "批", + "代理与自动更新": "代理與自動更新", + "读取pdf文件并清理其中的文本内容": "讀取pdf文件並清理其中的文本內容", + "多线程Demo": "多線程Demo", + "\\cite和方程式": "\\cite和方程式", + "可能会导致严重卡顿": "可能會導致嚴重卡頓", + "将Markdown格式的文本转换为HTML格式": "將Markdown格式的文本轉換為HTML格式", + "建议您复制一个config_private.py放自己的秘密": "建議您複製一個config_private.py放自己的秘密", + "质能方程可以写成$$E=mc^2$$": "質能方程可以寫成$$E=mc^2$$", + "的文件": "的文件", + "是本次问询的输入": "是本次問詢的輸入", + "第三种情况": "第三種情況", + "如果同时InquireMultipleLargeLanguageModels": "如果同時InquireMultipleLargeLanguageModels", + "小于正文的": "小於正文的", + "将输入和输出解析为HTML格式": "將輸入和輸出解析為HTML格式", + "您正在调用一个": "您正在調用一個", + "缺少jittorllms的依赖": "缺少jittorllms的依賴", + "是否重置": "是否重置", + "解析整个前端项目": "解析整個前端專案", + "是否唤起高级插件参数区": "是否喚起高級插件參數區", + "pip包依赖安装出现问题": "pip包依賴安裝出現問題", + "请先转化为.docx格式": "請先轉換為.docx格式", + "整理history": "整理歷史記錄", + "缺少api_key": "缺少api_key", + "拆分过长的latex文件": "拆分過長的latex文件", + "使用markdown表格输出结果": "使用markdown表格輸出結果", + "搜集初始信息": "搜集初始信息", + "但还没输出完后面的": "但還沒輸出完後面的", + "在上下文执行开始的情况下": "在上下文執行開始的情況下", + "不要用代码块": "不要用代碼塊", + "比如你是翻译官怎样怎样": "例如你是翻譯官怎樣怎樣", + "装饰器函数返回内部函数": "裝飾器函數返回內部函數", + "请你作为一个学术翻译": "請你作為一個學術翻譯", + "清除重复的换行": "清除重複的換行", + "换行 -": "換行 -", + "你好": "你好", + "触发重置": "觸發重置", + "安装MOSS的依赖": "安裝MOSS的依賴", + "首先你在英文語境下通讀整篇論文": "首先你在英文語境下通讀整篇論文", + "需要清除首尾空格": "需要清除首尾空格", + "多線程函數插件中": "多線程函數插件中", + "分析用戶提供的谷歌學術": "分析用戶提供的谷歌學術", + "基本信息": "基本信息", + "python 版本建議3.9+": "python 版本建議3.9+", + "開始請求": "開始請求", + "不會實時顯示在界面上": "不會實時顯示在界面上", + "接下來兩句話只顯示在界面上": "接下來兩句話只顯示在界面上", + "根據當前的模型類別": "根據當前的模型類別", + "10個文件為一組": "10個文件為一組", + "第三組插件": "第三組插件", + "此函數逐漸地搜索最長的條目進行剪輯": "此函數逐漸地搜索最長的條目進行剪輯", + "拆分過長的Markdown文件": "拆分過長的Markdown文件", + "最多同時執行5個": "最多同時執行5個", + "裁剪input": "裁剪input", + "現在您點擊任意“紅顏色”標識的函數插件時": "現在您點擊任意“紅顏色”標識的函數插件時", + "且沒有代碼段": "且沒有代碼段", + "建議低於1": "建議低於1", + "並且對於網絡上的文件": "並且對於網絡上的文件", + "文件代码是": "檔案代碼是", + "我上传了文件": "我上傳了檔案", + "年份获取失败": "年份獲取失敗", + "解析网页内容": "解析網頁內容", + "但内部用stream的方法避免中途网线被掐": "但內部使用stream的方法避免中途網路斷線", + "这个函数用于分割pdf": "這個函數用於分割PDF", + "概括其内容": "概括其內容", + "请谨慎操作": "請謹慎操作", + "更新UI": "更新使用者介面", + "输出": "輸出", + "请先从插件列表中选择": "請先從插件列表中選擇", + "函数插件": "函數插件", + "的方式启动": "的方式啟動", + "否则在回复时会因余量太少出问题": "否則在回覆時會因餘量太少出問題", + "并替换为回车符": "並替換為換行符號", + "Newbing失败": "Newbing失敗", + "找不到任何.h头文件": "找不到任何.h頭檔案", + "执行时": "執行時", + "不支持通过环境变量设置!": "不支持透過環境變數設置!", + "获取完整的从Openai返回的报错": "獲取完整的從Openai返回的錯誤", + "放弃": "放棄", + "系统静默prompt": "系統靜默提示", + "如果子任务非常多": "如果子任務非常多", + "打印traceback": "列印追蹤信息", + "前情提要": "前情提要", + "请在config文件中修改API密钥之后再运行": "請在config文件中修改API密鑰之後再運行", + "使用正则表达式查找注释": "使用正則表達式查找註釋", + "这段代码定义了一个名为DummyWith的空上下文管理器": "這段代碼定義了一個名為DummyWith的空上下文管理器", + "用学术性语言写一段中文摘要": "用學術性語言寫一段中文摘要", + "优先级3. 获取config中的配置": "優先級3. 獲取config中的配置", + "此key无效": "此key無效", + "对话历史列表": "對話歷史列表", + "循环轮询各个线程是否执行完毕": "循環輪詢各個線程是否執行完畢", + "处理数据流的主体": "處理數據流的主體", + "综合": "綜合", + "感叹号": "感嘆號", + "浮点数": "浮點數", + "必要时再进行切割": "必要時再進行切割", + "请注意proxies选项的格式": "請注意proxies選項的格式", + "我需要你找一张网络图片": "我需要你找一張網絡圖片", + "裁剪输入": "裁剪輸入", + "这里其实不需要join了": "這裡其實不需要join了", + "例如 v2**y 和 ss* 的默认本地协议是socks5h": "例如 v2**y 和 ss* 的默認本地協議是socks5h", + "粉红色": "粉紅色", + "llm_kwargs参数": "llm_kwargs參數", + "设置gradio的并行线程数": "設置gradio的並行線程數", + "端口": "端口", + "将每个换行符替换为两个换行符": "將每個換行符替換為兩個換行符", + "防止回答时Token溢出": "防止回答時Token溢出", + "单线": "單線", + "成功读取环境变量": "成功讀取環境變量", + "GPT返回的结果": "GPT返回的結果", + "函数插件功能": "函數插件功能", + "根据前后相邻字符的特点": "根據前後相鄰字符的特點", + "发送到chatgpt进行分析": "發送到chatgpt進行分析", + "例如": "例如", + "翻译": "翻譯", + "选择放弃": "選擇放棄", + "将输出代码片段的“后面的": "將輸出代碼片段的“後面的", + "两个指令来安装jittorllms的依赖": "兩個指令來安裝jittorllms的依賴", + "不在arxiv中无法获取完整摘要": "無法在arxiv中取得完整摘要", + "读取默认值作为数据类型转换的参考": "讀取預設值作為資料型態轉換的參考", + "最后": "最後", + "用于负责跨越线程传递已经输出的部分": "用於負責跨越線程傳遞已經輸出的部分", + "请避免混用多种jittor模型": "請避免混用多種jittor模型", + "等待输入": "等待輸入", + "默认": "預設", + "读取PDF文件": "讀取PDF文件", + "作为一名中文学术论文写作改进助理": "作為一名中文學術論文寫作改進助理", + "如果WEB_PORT是-1": "如果WEB_PORT是-1", + "虽然不同的代理软件界面不一样": "雖然不同的代理軟體介面不一樣", + "选择LLM模型": "選擇LLM模型", + "回车退出": "按Enter退出", + "第3步": "第3步", + "找到原文本中的换行符": "找到原文本中的換行符號", + "表示文件所在的文件夹路径": "表示文件所在的資料夾路徑", + "您可以请再次尝试.": "您可以請再次嘗試。", + "其他小工具": "其他小工具", + "开始问问题": "開始問問題", + "默认值": "預設值", + "正在获取文献名!": "正在獲取文獻名稱!", + "也可以在问题输入区输入临时的api-key": "也可以在問題輸入區輸入臨時的api-key", + "单$包裹begin命令时多余": "單$包裹begin命令時多餘", + "从而达到实时更新功能": "從而達到實時更新功能", + "开始接收jittorllms的回复": "開始接收jittorllms的回覆", + "防止爆token": "防止爆token", + "等待重试": "等待重試", + "解析整个Go项目": "解析整個Go項目", + "解析整个Rust项目": "解析整個Rust項目", + "则随机选取WEB端口": "則隨機選取WEB端口", + "不输入代表全部匹配": "不輸入代表全部匹配", + "在前端打印些好玩的东西": "在前端打印些好玩的東西", + "而在上下文执行结束时": "而在上下文執行結束時", + "会自动使用已配置的代理": "會自動使用已配置的代理", + "第 3 步": "第 3 步", + "稍微留一点余地": "稍微留一點余地", + "靛蓝色": "靛藍色", + "改变输入参数的顺序与结构": "改變輸入參數的順序與結構", + "中提取出“标题”、“收录会议或期刊”等基本信息": "中提取出“標題”、“收錄會議或期刊”等基本信息", + "刷新界面用 yield from update_ui": "刷新界面用 yield from update_ui", + "下载编号": "下載編號", + "来自EdgeGPT.py": "來自EdgeGPT.py", + "每个子任务的输出汇总": "每個子任務的輸出匯總", + "你是一位专业的中文学术论文作家": "你是一位專業的中文學術論文作家", + "加了^代表不匹配": "加了^代表不匹配", + "则覆盖原config文件": "則覆蓋原config文件", + "提交按钮、重置按钮": "提交按鈕、重置按鈕", + "对程序的整体功能和构架重新做出概括": "對程式的整體功能和架構重新做出概述", + "未配置": "未配置", + "文本过长将进行截断": "文本過長將進行截斷", + "将英文句号": "將英文句號", + "则使用当前时间生成文件名": "則使用當前時間生成檔名", + "或显存": "或顯存", + "请只提供文本的更正版本": "請只提供文本的更正版本", + "大部分时候仅仅为了fancy的视觉效果": "大部分時候僅僅為了fancy的視覺效果", + "不能达到预期效果": "不能達到預期效果", + "css等": "css等", + "该函数只有20多行代码": "該函數只有20多行程式碼", + "以下是一篇学术论文中的一段内容": "以下是一篇學術論文中的一段內容", + "Markdown/Readme英译中": "Markdown/Readme英譯中", + "递归搜索": "遞歸搜尋", + "检查一下是不是忘了改config": "檢查一下是不是忘了改config", + "不需要修改": "不需要修改", + "请求GPT模型同时维持用户界面活跃": "請求GPT模型同時維持用戶界面活躍", + "是本次输入": "是本次輸入", + "随便切一下敷衍吧": "隨便切一下敷衍吧", + "紫罗兰色": "紫羅蘭色", + "显示/隐藏功能区": "顯示/隱藏功能區", + "加入下拉菜单中": "加入下拉菜單中", + "等待ChatGLM响应中": "等待ChatGLM響應中", + "代码已经更新": "代碼已經更新", + "总结文章": "總結文章", + "正常": "正常", + "降低请求频率中": "降低請求頻率中", + "3. 根据 heuristic 规则判断换行符是否是段落分隔": "3. 根據heuristic規則判斷換行符是否是段落分隔", + "整理反复出现的控件句柄组合": "整理反復出現的控件句柄組合", + "则给出安装建议": "則給出安裝建議", + "我们先及时地做一次界面更新": "我們先及時地做一次界面更新", + "数据流的显示最后收到的多少个字符": "數據流的顯示最後收到的多少個字符", + "并将输出部分的Markdown和数学公式转换为HTML格式": "並將輸出部分的Markdown和數學公式轉換為HTML格式", + "rar和7z格式正常": "rar和7z格式正常", + "代码高亮": "程式碼高亮", + "和 __exit__": "和 __exit__", + "黄色": "黃色", + "使用线程池": "使用線程池", + "的主要内容": "的主要內容", + "定义注释的正则表达式": "定義註釋的正則表達式", + "Reduce the length. 本次输入过长": "減少長度。本次輸入過長", + "具备多线程调用能力的函数": "具備多線程調用能力的函數", + "你是一个程序架构分析师": "你是一個程式架構分析師", + "MOSS尚未加载": "MOSS尚未載入", + "环境变量": "環境變數", + "请分析此页面中出现的所有文章": "請分析此頁面中出現的所有文章", + "只裁剪历史": "只裁剪歷史", + "在结束时": "在結束時", + "缺一不可": "缺一不可", + "第10步": "第10步", + "安全第一条": "安全第一條", + "解释代码": "解釋程式碼", + "地址": "地址", + "全部文件解析完成": "全部檔案解析完成", + "乱七八糟的后处理": "亂七八糟的後處理", + "输入时用逗号隔开": "輸入時用逗號隔開", + "对最相关的两个搜索结果进行总结": "對最相關的兩個搜索結果進行總結", + "第": "第", + "清空历史": "清空歷史", + "引用次数是链接中的文本": "引用次數是鏈接中的文本", + "时": "時", + "如没有给定输入参数": "如沒有給定輸入參數", + "与gradio版本和网络都相关": "與gradio版本和網絡都相關", + "润色": "潤色", + "青蓝色": "青藍色", + "如果浏览器没有自动打开": "如果瀏覽器沒有自動打開", + "新功能": "新功能", + "会把traceback和已经接收的数据转入输出": "會把traceback和已經接收的數據轉入輸出", + "在这里输入分辨率": "在這裡輸入分辨率", + "至少一个线程任务意外失败": "至少一個線程任務意外失敗", + "子进程Worker": "子進程Worker", + "使用yield from语句返回重新加载过的函数": "使用yield from語句返回重新加載過的函數", + "网络等出问题时": "網絡等出問題時", + "does not exist. 模型不存在": "不存在該模型", + "本地LLM模型如ChatGLM的执行方式 CPU/GPU": "本地LLM模型如ChatGLM的執行方式 CPU/GPU", + "如果选择自动处理": "如果選擇自動處理", + "找不到本地项目或无权访问": "找不到本地專案或無權訪問", + "是否在arxiv中": "是否在arxiv中", + "版": "版", + "数据流的第一帧不携带content": "數據流的第一幀不攜帶content", + "OpenAI和API2D不会走这里": "OpenAI和API2D不會走這裡", + "请编辑以下文本": "請編輯以下文本", + "尽可能多地保留文本": "盡可能多地保留文本", + "将文本按照段落分隔符分割开": "將文本按照段落分隔符分割開", + "获取成功": "獲取成功", + "然后回答问题": "然後回答問題", + "同时分解长句": "同時分解長句", + "刷新时间间隔频率": "刷新時間間隔頻率", + "您可以将任意一个文件路径粘贴到输入区": "您可以將任意一個文件路徑粘貼到輸入區", + "需要手动安装新增的依赖库": "需要手動安裝新增的依賴庫", + "的模板": "的模板", + "重命名文件": "重命名文件", + "第1步": "第1步", + "只输出代码": "只輸出代碼", + "准备对工程源代码进行汇总分析": "準備對工程源代碼進行匯總分析", + "是所有LLM的通用接口": "是所有LLM的通用接口", + "等待回复": "等待回覆", + "此线程失败前收到的回答": "此線程失敗前收到的回答", + "Call ChatGLM fail 不能正常加载ChatGLM的参数": "呼叫ChatGLM失敗,無法正常加載ChatGLM的參數", + "输入参数 Args": "輸入參數Args", + "也可以获取它": "也可以獲取它", + "请求GPT模型的": "請求GPT模型的", + "您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!": "您將把您的API-KEY和對話隱私完全暴露給您設定的中間人!", + "等待MOSS响应中": "等待MOSS響應中", + "文件保存到本地": "文件保存到本地", + "例如需要翻译的一段话": "例如需要翻譯的一段話", + "避免解析压缩文件": "避免解析壓縮文件", + "另外您可以随时在history子文件夹下找回旧版的程序": "另外您可以隨時在history子文件夾下找回舊版的程式", + "由于您没有设置config_private.py私密配置": "由於您沒有設置config_private.py私密配置", + "缺少ChatGLM的依赖": "缺少ChatGLM的依賴", + "试着补上后个": "試著補上後個", + "如果是网络上的文件": "如果是網路上的檔案", + "找不到任何.tex或pdf文件": "找不到任何.tex或pdf檔案", + "直到历史记录的标记数量降低到阈值以下": "直到歷史記錄的標記數量降低到閾值以下", + "当代码输出半截的时候": "當程式碼輸出一半時", + "输入区2": "輸入區2", + "则删除报错信息": "則刪除錯誤訊息", + "如果需要使用newbing": "如果需要使用newbing", + "迭代之前的分析": "迭代之前的分析", + "单线程方法": "單線程方法", + "装载请求内容": "載入請求內容", + "翻译为中文": "翻譯為中文", + "以及代理设置的格式是否正确": "以及代理設置的格式是否正確", + "石头色": "石頭色", + "输入谷歌学术搜索页url": "輸入谷歌學術搜索頁URL", + "可选 ↓↓↓": "可選 ↓↓↓", + "再点击按钮": "再點擊按鈕", + "开发者们❤️": "開發者們❤️", + "若再次失败则更可能是因为输入过长.": "若再次失敗則更可能是因為輸入過長。", + "载入对话": "載入對話", + "包括": "包括", + "或者": "或者", + "并执行函数的新版本": "並執行函數的新版本", + "论文": "論文" +} \ No newline at end of file diff --git a/docs/waifu_plugin/autoload.js b/docs/waifu_plugin/autoload.js new file mode 100644 index 0000000000000000000000000000000000000000..3464a5cd44b0d4e1b0f2528bd01fc1793275b964 --- /dev/null +++ b/docs/waifu_plugin/autoload.js @@ -0,0 +1,30 @@ +try { + $("").attr({href: "file=docs/waifu_plugin/waifu.css", rel: "stylesheet", type: "text/css"}).appendTo('head'); + $('body').append('
'); + $.ajax({url: "file=docs/waifu_plugin/waifu-tips.js", dataType:"script", cache: true, success: function() { + $.ajax({url: "file=docs/waifu_plugin/live2d.js", dataType:"script", cache: true, success: function() { + /* 可直接修改部分参数 */ + live2d_settings['hitokotoAPI'] = "hitokoto.cn"; // 一言 API + live2d_settings['modelId'] = 5; // 默认模型 ID + live2d_settings['modelTexturesId'] = 1; // 默认材质 ID + live2d_settings['modelStorage'] = false; // 不储存模型 ID + live2d_settings['waifuSize'] = '210x187'; + live2d_settings['waifuTipsSize'] = '187x52'; + live2d_settings['canSwitchModel'] = true; + live2d_settings['canSwitchTextures'] = true; + live2d_settings['canSwitchHitokoto'] = false; + live2d_settings['canTakeScreenshot'] = false; + live2d_settings['canTurnToHomePage'] = false; + live2d_settings['canTurnToAboutPage'] = false; + live2d_settings['showHitokoto'] = false; // 显示一言 + live2d_settings['showF12Status'] = false; // 显示加载状态 + live2d_settings['showF12Message'] = false; // 显示看板娘消息 + live2d_settings['showF12OpenMsg'] = false; // 显示控制台打开提示 + live2d_settings['showCopyMessage'] = false; // 显示 复制内容 提示 + live2d_settings['showWelcomeMessage'] = true; // 显示进入面页欢迎词 + + /* 在 initModel 前添加 */ + initModel("file=docs/waifu_plugin/waifu-tips.json"); + }}); + }}); +} catch(err) { console.log("[Error] JQuery is not defined.") } diff --git a/docs/waifu_plugin/flat-ui-icons-regular.eot b/docs/waifu_plugin/flat-ui-icons-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..536680e9f1070d3feb03038448f4ef4764a6784a Binary files /dev/null and b/docs/waifu_plugin/flat-ui-icons-regular.eot differ diff --git a/docs/waifu_plugin/flat-ui-icons-regular.svg b/docs/waifu_plugin/flat-ui-icons-regular.svg new file mode 100644 index 0000000000000000000000000000000000000000..cb2727cac3c0f52b7370e851a1e2f3092ad76d1a --- /dev/null +++ b/docs/waifu_plugin/flat-ui-icons-regular.svg @@ -0,0 +1,126 @@ + + + + + +{ + "fontFamily": "flat-ui-icons", + "majorVersion": 1, + "minorVersion": 1, + "fontURL": "http://designmodo.com/flat", + "designer": "Sergey Shmidt", + "designerURL": "http://designmodo.com", + "license": "Attribution-NonCommercial-NoDerivs 3.0 Unported", + "licenseURL": "http://creativecommons.org/licenses/by-nc-nd/3.0/", + "version": "Version 1.1", + "fontId": "flat-ui-icons", + "psName": "flat-ui-icons", + "subFamily": "Regular", + "fullName": "flat-ui-icons", + "description": "Generated by IcoMoon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/waifu_plugin/flat-ui-icons-regular.ttf b/docs/waifu_plugin/flat-ui-icons-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f4933ff3590f3c3644d32fe50f5d7148c2ede9b6 Binary files /dev/null and b/docs/waifu_plugin/flat-ui-icons-regular.ttf differ diff --git a/docs/waifu_plugin/flat-ui-icons-regular.woff b/docs/waifu_plugin/flat-ui-icons-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..f9e9805e768525c296ed284e1bc803ca9e757679 Binary files /dev/null and b/docs/waifu_plugin/flat-ui-icons-regular.woff differ diff --git a/docs/waifu_plugin/jquery-ui.min.js b/docs/waifu_plugin/jquery-ui.min.js new file mode 100644 index 0000000000000000000000000000000000000000..25398a167415050ae8bfb0bfebac6aa3ab790909 --- /dev/null +++ b/docs/waifu_plugin/jquery-ui.min.js @@ -0,0 +1,13 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("
"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) +}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; +this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
    ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
    ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
    ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s)) +}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
    "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
    ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="
    "}for(T+="
    "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"
    "+"",P=u?"":"",w=0;7>w;w++)M=(w+c)%7,P+="";for(T+=P+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="",W=u?"":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}Z++,Z>11&&(Z=0,te++),T+="
    "+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[M]+"
    "+this._get(t,"calculateWeek")(A)+""+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"
    "+(X?"
    "+(U[0]>0&&C===U[1]-1?"
    ":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
    ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
    ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())} +},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog +},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
    ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
    ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
    ").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
    ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
    ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("
    ").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
    ").attr("role","tooltip"),s=t("
    ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip}); \ No newline at end of file diff --git a/docs/waifu_plugin/jquery.min.js b/docs/waifu_plugin/jquery.min.js new file mode 100644 index 0000000000000000000000000000000000000000..ab28a24729b320bffd3d2f60302af949db39ab85 --- /dev/null +++ b/docs/waifu_plugin/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.11.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
    ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="
    ","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h; +if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/\s*$/g,rb={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?""!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("