diff --git a/DrissionPage/chromium_driver.py b/DrissionPage/chromium_driver.py index f5abac4..72020db 100644 --- a/DrissionPage/chromium_driver.py +++ b/DrissionPage/chromium_driver.py @@ -206,7 +206,7 @@ class ChromiumDriver(object): if self._stopped.is_set(): return False if not self._started: - raise RuntimeError("Driver未在运行。") + return True self.status = self._STOPPED_ self._stopped.set() diff --git a/DrissionPage/configs/configs.ini b/DrissionPage/configs/configs.ini index 9d8421c..1e30934 100644 --- a/DrissionPage/configs/configs.ini +++ b/DrissionPage/configs/configs.ini @@ -1,5 +1,5 @@ [paths] -chromedriver_path = +chromedriver_path = D:\python\projects\DrissionPage\DrissionPage\chromedriver.exe download_path = [chrome_options] diff --git a/DrissionPage/configs/session_options.pyi b/DrissionPage/configs/session_options.pyi index 628360f..00aece2 100644 --- a/DrissionPage/configs/session_options.pyi +++ b/DrissionPage/configs/session_options.pyi @@ -102,10 +102,10 @@ class SessionOptions(object): @property def max_redirects(self) -> int: ... - def _sets(self, arg: str, val: Any) -> None: ... - def set_max_redirects(self, times: Union[int, None]) -> SessionOptions: ... + def _sets(self, arg: str, val: Any) -> None: ... + def save(self, path: str = None) -> str: ... def save_to_default(self) -> str: ... diff --git a/DrissionPage/session_page.py b/DrissionPage/session_page.py index 3dd3215..1dfd540 100644 --- a/DrissionPage/session_page.py +++ b/DrissionPage/session_page.py @@ -355,6 +355,13 @@ class SessionPageSetter(object): def __init__(self, page): self._page = page + def timeout(self, second): + """设置连接超时时间 + :param second: 秒数 + :return: None + """ + self._page.timeout = second + def cookies(self, cookies): """为Session对象设置cookies :param cookies: cookies信息 @@ -363,18 +370,100 @@ class SessionPageSetter(object): set_session_cookies(self._page.session, cookies) def headers(self, headers): - """设置通用的headers,设置的headers值回逐个覆盖原有的,不会清理原来的 + """设置通用的headers :param headers: dict形式的headers :return: None """ - headers = CaseInsensitiveDict(headers) - for i in headers: - self._page.session.headers[i] = headers[i] + self._page.session.headers = CaseInsensitiveDict(headers) + + def header(self, attr, value): + """设置headers中一个项 + :param attr: 设置名称 + :param value: 设置值 + :return: None + """ + self._page.session.headers[attr.lower()] = value def user_agent(self, ua): - """设置user agent""" + """设置user agent + :param ua: user agent + :return: None + """ self._page.session.headers['user-agent'] = ua + def proxies(self, http, https=None): + """设置proxies参数 + :param http: http代理地址 + :param https: https代理地址 + :return: None + """ + proxies = None if http == https is None else {'http': http, 'https': https or http} + self._page.session.proxies = proxies + + def auth(self, auth): + """设置认证元组或对象 + :param auth: 认证元组或对象 + :return: None + """ + self._page.session.auth = auth + + def hooks(self, hooks): + """设置回调方法 + :param hooks: 回调方法 + :return: None + """ + self._page.session.hooks = hooks + + def params(self, params): + """设置查询参数字典 + :param params: 查询参数字典 + :return: None + """ + self._page.session.params = params + + def verify(self, on_off): + """设置是否验证SSL证书 + :param on_off: 是否验证 SSL 证书 + :return: None + """ + self._page.session.verify = on_off + + def cert(self, cert): + """SSL客户端证书文件的路径(.pem格式),或(‘cert’, ‘key’)元组 + :param cert: 证书路径或元组 + :return: None + """ + self._page.session.cert = cert + + def stream(self, on_off): + """设置是否使用流式响应内容 + :param on_off: 是否使用流式响应内容 + :return: None + """ + self._page.session.stream = on_off + + def trust_env(self, on_off): + """设置是否信任环境 + :param on_off: 是否信任环境 + :return: None + """ + self._page.session.trust_env = on_off + + def max_redirects(self, times): + """设置最大重定向次数 + :param times: 最大重定向次数 + :return: None + """ + self._page.session.max_redirects = times + + def add_adapter(self, url, adapter): + """添加适配器 + :param url: 适配器对应url + :param adapter: 适配器对象 + :return: None + """ + self._page.session.mount(url, adapter) + class DownloadSetter(object): """用于设置下载参数的类""" diff --git a/DrissionPage/session_page.pyi b/DrissionPage/session_page.pyi index 4c6a769..b76c366 100644 --- a/DrissionPage/session_page.pyi +++ b/DrissionPage/session_page.pyi @@ -8,6 +8,8 @@ from typing import Any, Union, Tuple, List from DownloadKit import DownloadKit from requests import Session, Response +from requests.adapters import HTTPAdapter +from requests.auth import HTTPBasicAuth from requests.cookies import RequestsCookieJar from requests.structures import CaseInsensitiveDict @@ -169,12 +171,36 @@ class SessionPageSetter(object): def __init__(self, page: SessionPage): self._page: SessionPage = ... + def timeout(self, second: Union[int, float]) -> None: ... + def cookies(self, cookies: Union[RequestsCookieJar, list, tuple, str, dict]) -> None: ... def headers(self, headers: dict) -> None: ... + def header(self, attr: str, value: str) -> None: ... + def user_agent(self, ua: str) -> None: ... + def proxies(self, http, https=None) -> None: ... + + def auth(self, auth: Union[Tuple[str, str], HTTPBasicAuth, None]) -> None: ... + + def hooks(self, hooks: Union[dict, None]) -> None: ... + + def params(self, params: Union[dict, None]) -> None: ... + + def verify(self, on_off: Union[bool, None]) -> None: ... + + def cert(self, cert: Union[str, Tuple[str, str], None]) -> None: ... + + def stream(self, on_off: Union[bool, None]) -> None: ... + + def trust_env(self, on_off: Union[bool, None]) -> None: ... + + def max_redirects(self, times: Union[int, None]) -> None: ... + + def add_adapter(self, url: str, adapter: HTTPAdapter) -> None: ... + class DownloadSetter(object): def __init__(self, page: Union[SessionPage, WebPage, ChromiumPage]): diff --git a/README.md b/README.md index 379bfae..158318a 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ DrissionPage 是一个基于 python 的网页自动化工具。 -它既能控制浏览器,也能收发数据包,甚至能把两者合而为一, +它既能控制浏览器,也能收发数据包,甚至能把两者合而为一。 可兼顾浏览器自动化的便利性和 requests 的高效率。 @@ -10,7 +10,15 @@ DrissionPage 是一个基于 python 的网页自动化工具。 它的语法简洁而优雅,代码量少,对新手友好。 -*** +--- + +star fork + +项目地址:[gitee](https://gitee.com/g1879/DrissionPage) | [github](https://github.com/g1879/DrissionPage) + +您的星星是对我最大的支持💖 + +--- 支持系统:Windows、Linux、Mac @@ -18,17 +26,13 @@ python 版本:3.6 及以上 支持浏览器:Chromium 内核浏览器(如 Chrome 和 Edge) -*** +--- -star fork - -项目地址:[gitee](https://gitee.com/g1879/DrissionPage) | [github](https://github.com/g1879/DrissionPage) +**📖 使用文档:** [点击查看](http://g1879.gitee.io/drissionpagedocs) **交流QQ群:** 897838127 -**联系邮箱:** g1879@qq.com - -**📖 使用文档:** [点击查看](http://g1879.gitee.io/drissionpagedocs) +--- # 📕 背景 @@ -40,10 +44,14 @@ python 版本:3.6 及以上 以前的版本是对 selenium 进行重新封装实现的。从 3.0 开始,作者另起炉灶,对底层进行了重新开发,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。 +--- + # 💡 理念 简洁!易用 !方便! +--- + # ☀️ 特性和亮点 作者经过长期实践,踩过无数坑,总结出的经验全写到这个库里了。 @@ -94,6 +102,8 @@ python 版本:3.6 及以上 - 还有很多细节,这里不一一列举,欢迎实际使用中体验:) +--- + # 🌟 简单演示 ## ⭐ **与 selenium 代码对比** @@ -277,19 +287,27 @@ Git 命令学习 https://oschina.gitee.io/learn-git-branching/ Git 命令学习 ``` +--- + # 🛠 使用方法 [点击跳转到使用文档](http://g1879.gitee.io/drissionpage) +--- + # 🔖 版本历史 -[点击查看版本历史](http://g1879.gitee.io/drissionpage/#/%E7%89%88%E6%9C%AC%E5%8E%86%E5%8F%B2) +[点击查看版本历史](http://g1879.gitee.io/drissionpagedocs/10_history/) + +--- # 🖐🏻 免责声明 请勿将 DrissionPage 应用到任何可能会违反法律规定和道德约束的工作中,请友善使用 DrissionPage,遵守蜘蛛协议,不要将 DrissionPage 用于任何非法用途。如您选择使用 DrissionPage 即代表您遵守此协议,作者不承担任何由于您违反此协议带来任何的法律风险和损失,一切后果由您承担。 +--- + # ☕ 请我喝咖啡 如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :) diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/docs/10_history.md b/docs/10_history.md deleted file mode 100644 index b6bfdf4..0000000 --- a/docs/10_history.md +++ /dev/null @@ -1,434 +0,0 @@ -# v3.1.3 - -- `ChromiumPage`添加`latest_tab`属性 - -- `WebPage`初始化删除`tab_id`参数 - -- 修复页面未加载完可能获取到空元素的问题 - -- 修复新标签页重定向时获取文档不正确问题 - -- 增强稳定性 - -# v3.1.1 - -- 增强下载功能 - - - `ChromiumPage`也可以使用内置下载器下载文件 - - - 可拦截并接管浏览器下载任务 - - - 新增`download_set`属性对下载参数进行设置 - - - 增加`wait_download_begin()`方法 - -- 改进浏览器启动设置 - - - 优化 ini 文件结构 - - - 新增`ChromiumOptions`取代`DriverOptions`,完全摆脱对 selenium 的依赖 - - - 新增自动分配端口功能 - - - 优化`SessionOptions`设计,增加一系列设置参数的方法 - - - 改进对用户配置文件的设置 - -- 对部分代码进行重构 - - - 优化页面对象启动逻辑 - - - 优化配置类逻辑 - - - 优化项目结构 - -- 细节 - - - 上传文件时支持传入相对路径 - -- bug 修复 - - - 修复`get_tab()`出错问题 - - - 修复新浏览器第一次新建标签页时不正确切换的问题 - - - 修复关闭当前标签页出错问题 - - - 修复改变浏览器窗口大小出错问题 - -# v3.0.34 - -- `WebPage`删除`check_page()`方法 - -- `DriverOptions`和`easy_set`的`set_paths()`增加`browser_path`参数 - -- `DriverOptions`增加`browser_path`属性 - -- `ChromiumFrame`现在支持页面滚动 - -- 改进滚动到元素功能 - -- 修改`SessionElement`相对定位参数顺序 - -- `SessionPage`也可以从 ini 文件读取 timeout 设置 - -- ini 文件中`session_options`增加`timeout`项 - -- `SessionOptions`增加`timeout`属性、`set_timeout()`方法 - -- 优化和修复一些问题 - -# v3.0.31 - -- `run_script()`、`run_async_script()`更名为`run_js`和`run_async_js()` -- 返回的坐标数据全部转为`int`类型组成的`tuple` -- 修改注释 - -# v3.0.30 - -- 元素增加`m_click()`方法 -- 动作链增加`type()`、`m_click()`、`r_hold()`、`r_release()`、`m_hold()`、`m_release()`方法 -- 动作链的`on_ele`参数可接收文本定位符 -- `WebPage`、`SessionPage`、`ChromiumPage`增加`set_headers()`方法 - -# v3.0.28 - -- 各种大小、位置信息从`dict`改为用`tuple`返回 -- 改进`ChromiumFrame` -- 修复小窗时定位不准问题,修复 iframe 内元素无法获取 s_ele() 问题 -- 增加`wait_loading`方法和参数 -- 其它优化和问题修复 - -# v3.0.22 - -- `change_mode()`增加`copy_cookies`参数 -- 调整`WebPage`生成的元素对象的`prev()`、`next()`、`before()`、`after()`参数顺序 -- 修复读取页面时小概率失效问题 -- 用存根文件取代类型注解 - -# v3.0.20 - -重大更新。推出`WebPage`,重新开发底层逻辑,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。支持 chromium 内核的浏览器(如 chrome 和 edge)。比`MixPage`有以下优点: - -- 无 webdriver 特征,不会被网站识别 -- 无需为不同版本的浏览器下载不同的驱动 -- 运行速度更快 -- 可以跨 iframe 查找元素,无需切入切出 -- 把 iframe 看作普通元素,获取后可直接在其中查找元素,逻辑更清晰 -- 可以同时操作浏览器中的多个标签页,即使标签页为非激活状态 -- 可以直接读取浏览器缓存来保持图片,无需用 GUI 点击保存 -- 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持) - -其它更新: - -- 增加`ChromiumTab`和`ChromiumFrame`类用于处理 tab 和 frame 元素 -- 新增与`WebPage`配合的动作链接`ActionChains` -- ini 文件和`DriverOption`删除`set_window_rect`属性 -- 浏览器启动配置实现对插件的支持 -- 浏览器启动配置实现对`experimental_options`的`prefs`属性支持 - -# v2.7.3 - -- 页面对象和元素对象的`screenshot_as_bytes()`方法合并到`screenshot()` -- `input()`方法接收非文本参数时自动转成文本输入 - -# v2.7.2 - -- d 模式页面和元素对象增加`screenshot_as_bytes()`方法 - -# v2.7.1 - -- DriverPage - - 增加`get_session_storage()`、`get_local_storage()`、`set_session_storage()`、`set_local_storage()`、`clean_cache()`方法 - - `run_cdp()`的`cmd_args`参数改为`**cmd_args` -- 关闭 driver 时会主动关闭 chromedriver.exe 的进程 -- 优化关闭浏览器进程逻辑 - -# v2.6.2 - -- d 模式增加`stop_loading()`方法 -- 优化完善监听器功能 - -# v2.6.0 - -- 新增`Listener`类 - - 可监听浏览器数据包 - - 可异步监听 - - 可实现每监听到若干数据包执行操作 -- 放弃对selenium4.1以下的支持 -- 解决使用新版浏览器时出现的一些问题 - -# v2.5.9 - -- 优化 s 模式创建连接的逻辑 - -# v2.5.7 - -- 列表元素`select()`、`deselect()`等方法添加`timeout`参数,可等待列表元素加载 -- 优化了对消息提示框的处理 -- `drag()`和`drag_to()`不再检测是否拖拽成功,改成返回`None` -- `DriverOptions`对象从父类继承的方法也支持链式操作 -- 其它优化和问题修复 - -# v2.5.5 - -- `DriverPage`添加`run_cdp()`方法 -- `get()`和`post()`方法删除`go_anyway`参数 -- 连接重试默认不打印提示 - -# v2.5.0 - -- 用 DownloadKit 库替代原来的`download()`方法,支持多线程并发 -- `DriverPage`增加`set_ua_to_tab()`方法 -- 删除`scroll_to()`方法 -- 其它优化和问题修复 - -# v2.4.3 - -- `wait_ele()`、`to_frame()`、`scroll_to()`改用类的方式,避免使用字符串方式选择功能 -- `scroll_to()`方法改为`scroll`属性 -- 滚动页面或元素增加`to_location()`方式 -- 优化`Select`类用法 - -# v2.3.3 - -- `DriverPage`添加`forward()`方法 -- `DriverPage`的`close_current_tab()`改为`close_tabs()`,可一次过关闭多个标签页 -- `DriverPage`添加`run_async_script()` -- `DriverPage`添加`timeouts`属性 -- `DriverPage`添加`set_timeouts()`方法 -- `DriverElement`添加`scroll_to()`方法,可在元素内滑动滚动条 -- `DriverOptions`添加`set_page_load_strategy()`方法 -- ini 文件增加`page_load_strategy`、`set_window_rect`、`timeouts`三个属性 -- 其它优化和问题修复 - -# v2.2.1 - -- 新增基于页面布局的相对定位方法`left()`,`right()`,`below()`,`above()`,`near()`,`lefts()`,`rights()`,`belows()`,`aboves()`,`nears()` -- 修改基于 DOM 的相对定位方法:删除`parents()`方法,`parent`属性改为 `parent()`方法,`next`属性 改为`next()`方法,`prev`属性改为`prev()`方法,`nexts()`和`prevs()` - 方法改为返回多个对象 -- 增加`after()`,`before()`,`afters()`,`before()`等基于 DOM 的相对定位方法 -- 定位语法增加`@@`和`@@-`语法,用于同时匹配多个条件和排除条件 -- 改进`ShadowRootElement`功能,现在在 shadow-root 下查找元素可用完全版的定位语法。 -- `DriverElement`的`after`和`before`属性改为`pseudo_after`和`pseudo_before` -- `DriverElement`的`input()`增加`timeout`参数 -- `DriverElement`的`clear()`增加`insure_clear`参数 -- 优化`DriverElement`的`submit()`方法 -- `DriverPage`增加`active_ele`属性,获取焦点所在元素 -- `DriverPage`的`get_style_property()`改名为`style()` -- `DriverPage`的`hover()`增加偏移量参数 -- `DriverPage`的`current_tab_num`改名为`current_tab_index` -- `DriverPage`的`to_frame()`方法返回页面对象自己,便于链式操作 -- 优化自动下载 driver 逻辑 -- `set_paths()`增加`local_port`参数 -- 默认使用`9222`端口启动浏览器 -- 其它优化和问题修复 - -# v2.0.0 - -- 支持从`DriverElement`或 html 文本生成`SessionElement`,可把 d 模式的页面信息爬取速度提高几个数量级(使用新增的`s_ele()`和`s_eles()`方法) -- 支持随时隐藏和显示浏览器进程窗口(只支持 Windows 系统) -- s 模式和 d 模式使用相同的提取文本逻辑,d 模式提取文本效率大增 -- `input()`能自动检测以确保输入成功 -- `click()`支持失败后不断重试,可用于确保点击成功及等待页面遮罩层消失 -- 对 linux 和 mac 系统路径问题做了修复 -- `download()`能更准确地获取文件名 -- 其它稳定性和效率上的优化 - -# v1.11.7 - -- `SessionOptions`增加`set_headers()`方法 -- 调整`MixPage`初始化参数 -- `click()`增加`timeout`参数,修改逻辑为在超时时间内不断重试点击。可用于监视遮罩层是否消失 -- 处理`process_alert()`增加`timeout`参数 -- 其他优化和问题修复 - -# v1.11.0 - -- `set_property()`方法改名为`set_prop` -- 增加`prop()` -- `clear()`改用 selenium 原生 -- 增加`r_click()`和`r_click_at()` -- `input()`返回`None` -- 增加`input_txt()` - -# v1.10.0 - -- 优化启动浏览器的逻辑 -- 用 debug 模式启动时可读取启动参数 -- 完善`select`标签处理功能 -- `MixPage`类的`to_iframe()`改名为`to_frame()` -- `MixPage`类的`scroll_to()`增加`'half'`方式,滚动半页 -- Drission 类增加`kill_browser()`方法 - -# v1.9.0 - -- 元素增加`click_at()`方法,支持点击偏移量 -- `download()`支持重试 -- 元素`input()`允许接收组合键,如`ctrl+a` -- 其它优化 - -# v1.8.0 - -- 添加`retry_times`和`retry_interval`属性,可统一指定重连次数 -- 元素对象增加`raw_text`属性 -- 元素查找字符串支持极简模式,用`x`表示`xpath`、`c`表示`css`、`t`表示`tag`、`tx`表示`text` -- s 模式元素`text`尽量与 d 模式保持一致 -- 其它完善和问题修复 - -# v1.7.7 - -- 创建`WebDriver`时可自动下载 chromedriver.exe -- 修复获取不到`content-type`时会出现的问题 - -# v1.7.1 - -- d 模式如指定了调试端口,可自动启动浏览器进程并接入 -- 去除对 cssselect 库依赖 -- 提高查找元素效率 -- 调整获取元素 xpath 和 css_path 逻辑 - -# v1.7.0 - -- 优化`cookies`相关逻辑 -- `MixPage`增加`get_cookies()`和`set_cookies()`方法 -- 增加`SessionOptions`类 -- 浏览文件`DriverElement`增加`remove_attr()`方法 -- 修复`MixPage`初始化时`Session`导入`cookies`时的问题 -- `MixPage`的`close_other_tabs()`方法现在可以接收列表或元组以保留多个 tab -- 其它优化 - -# v1.6.1 - -- 增加`.`和`#`方式用于查找元素,相当于`@Class`和`@id` -- easy_set 增加识别 chrome 版本并自动下载匹配的 chromedriver.exe 功能 -- 改进配置功能 -- 修复 shadow-root 方面的问题 - -# v1.5.4 - -- 优化获取编码的逻辑 -- 修复下载不能显示进度的问题 - -# v1.5.2 - -- 修复获取 html 时会把元素后面的文本节点带上的问题 -- 修复获取编码可能出现的错误 -- 优化`download()`和获取编码代码 - -# v1.5.1 - -- 修复获取编码可能出现的 bug - -# v1.5.0 - -- s 模式使用 lxml 库代替 requests_html 库 -- 可直接调用页面对象和元素对象获取下级元素,`element('@id=ele_id')`等价于`element.ele('@id=ele_id')` -- `nexts()`、`prevs()`方法可获取文本节点 -- 可获取伪元素属性及文本 -- 元素对象增加`link`和`inner_html`属性 -- 各种优化 - -# v1.4.0 - -- d 模式使用 js 通过`evaluate()`方法处理 xpath,放弃使用 selenium 原生的方法,以支持用 xpath 直接获取文本节点、元素属性 -- d 模式增加支持用 xpath 获取元素文本、属性 -- 优化和修复小问题 - -# v1.3.0 - -- 可与 selenium 代码无缝对接 -- 下载功能支持 post 方式 -- 元素添加`texts`属性,返回元素内每个文本节点内容 -- s 模式增加支持用 xpath 获取元素文本、属性 - -# v1.2.1 - -- 优化修复网页编码逻辑 -- `download()`函数优化获取文件名逻辑 -- 优化`download()`获取文件大小逻辑 -- 优化`MixPage`对象关闭 session 逻辑 - -# v1.2.0 - -- 增加对 shadow-root 的支持 -- 增加自动重试连接功能 -- `MixPage`可直接接收配置 -- 修复一些 bug - -# v1.1.3 - -- 连接有关函数增加是否抛出异常参数 -- s 模式判断编码优化 -- d 模式`check_page()`优化 -- 修复`run_script()`遗漏`args`参数的问题 - -# v1.1.1 - -- 删除`get_tabs_sum()`和`get_tab_num()`函数,以属性`tabs_count`和`current_tab_num`代替 -- 增加`current_tab_handle`、`tab_handles`属性 -- `to_tab()`和`close_other_tabs()`函数可接收`handle`值 -- `create_tab()`可接收一个 url 在新标签页打开 -- 其它优化和 bug 修复 - -# v1.1.0 - -- 元素对象增加 xpath 和 css path 路径属性 -- 修复 driver 模式下元素对象用 css 方式不能获取直接子元素的问题(selenium 的锅) -- s 模式下现在能通过 xpath 定位上级元素 -- 优化 d 模式兄弟元素、父级元素的获取效率 -- 优化标签页处理功能 -- 其它小优化和修复 - -# V1.0.5 - -- 修复切换模式时 url 出错的 bug - -# V1.0.3 - -- `DriverOptions`支持链式操作 -- `download()`函数增加参数处理遇到已存在同名文件的情况,可选跳过、覆盖、自动重命名 -- `download()`函数重命名调整为只需输入文件名,不带后缀名,输入带后缀名也可自动识别 - -# V1.0.1 - -- 增强拖拽功能和 chrome 设置功能 - -# V0.14.0 - -- `Drission`类增加代理设置和修改 - -# V0.12.4 - -- `click()`的`by_js`可接收`False` -- 修复一些 bug - -# V0.12.0 - -- 增加`tag:tagName@arg=val`查找元素方式 -- `MixPage`增加简易方式创建对象方式 - -# V0.11.0 - -- 完善`easy_set`的函数 -- 元素增加多级定位函数 - -# v0.10.2 - -- 完善`attr`及`attrs`功能 - -# v0.10.1 - -- 增加`set_headless()`以及`to_iframe()`兼容全部原生参数 - -# v0.9.4 - -- 修复 bug - -# v0.9.0 - -- 增加了元素拖拽和处理提示框功能 - -# v0.8.4 - -- 基本完成 diff --git a/docs/2_features/1_intimate_design.md b/docs/2_features/1_intimate_design.md deleted file mode 100644 index 81cb98f..0000000 --- a/docs/2_features/1_intimate_design.md +++ /dev/null @@ -1,112 +0,0 @@ -这里介绍一些本库内置了人性化设计。 - -# ✔️ 无处不在的等待 - -网络环境不稳定,很多时候程序须要稍微等待一下才能继续运行。等待太少,会导致程序出错,等待太多,又会浪费时间。为了解决这些问题,本库在大量须要等待的部分内置了超时功能,并且可以随时灵活设置,大幅降低程序复杂性。 - -- 查找元素内置等待。可以为每次查找元素单独设定等待时间。有些页面会不定期出现提示信息,如果一律等待会太浪费时间,可以独立设置一个很短的超时时间,避免浪费。 - -- 等待下拉列表选项。很多下拉列表使用 js 加载,本库选择下拉列表时,会自动等待列表项出现。 - -- 等待弹窗。有时预期的 alert 未必立刻出现,本库处理 弹窗消息时也可以设置等待。 - -- 等待元素状态改变。使用`wait_ele()`方法可等待元素出现、消失、删除等状态。 - -- 点击功能也内置等待,如遇元素被遮挡可不断重试点击。 - -- 设置页面加载时限及加载策略。有时不需要完整加载页面资源,可根据实际须要设置加载策略。 - ---- - -# ✔️ 自动重试连接 - -在访问网站时,由于网络不稳定可能导致连接异常。本库设置了连接自动重试功能,当网页连接异常,会默认重试 3 次。当然也可以手动设置次数和间隔。 - -```python -page.get('xxxxxx', retry=5, interval=3) # 出错是重试 5 次,每次间隔 3 秒 -``` - ---- - -# ✔️ 极简的定位语法 - -本库制定了一套简洁高效的查找元素语法,支持链式操作,支持相对定位。与 selenium 繁琐的语法相比简直不要太方便。 - -而且每次查找内置等待,可以独立设置每次查找超时时间。 - -同是设置了超时等待的查找,对比一下: - -```python -# 使用 selenium: -element = WebDriverWait(driver, 10).until(ec.presence_of_element_located((By.XPATH, '//*[contains(text(), "some text")]'))) - -# 使用 DrissionPage: -element = page('some text', timeout=10) -``` - ---- - -# ✔️ 无需切入切出,逻辑清晰 - -使用过 selenium 的人都知道,selenium 同一时间只能操作一个标签页或` - - -``` - -按`F12`,可以看到网页右侧是一个两层`"}},video:function(e,t){return{html:'"}},audio:function(e,t){return{html:'"}},code:function(e,t){var n=e.match(/\.(\w+)$/);return"md"===(n=t||n&&n[1])&&(n="markdown"),{url:e,lang:n}}};On.prototype.compileEmbed=function(e,t){var n,r,i=Sn(t),o=i.str,i=i.config;if(t=o,i.include)return O(e)||(e=N(this.contentBase,F(this.router.getCurrentPath()),e)),i.type&&(r=Fn[i.type])?(n=r.call(this,e,t)).type=i.type:(r="code",/\.(md|markdown)/.test(e)?r="markdown":/\.mmd/.test(e)?r="mermaid":/\.html?/.test(e)?r="iframe":/\.(mp4|ogg)/.test(e)?r="video":/\.mp3/.test(e)&&(r="audio"),(n=Fn[r].call(this,e,t)).type=r),n.fragment=i.fragment,n},On.prototype._matchNotCompileLink=function(e){for(var t=this.config.noCompileLinks||[],n=0;n/g.test(r)&&(r=r.replace("\x3c!-- {docsify-ignore} --\x3e",""),e.title=An(r),e.ignoreSubHeading=!0),/{docsify-ignore}/g.test(r)&&(r=r.replace("{docsify-ignore}",""),e.title=An(r),e.ignoreSubHeading=!0),//g.test(r)&&(r=r.replace("\x3c!-- {docsify-ignore-all} --\x3e",""),e.title=An(r),e.ignoreAllSubs=!0),/{docsify-ignore-all}/g.test(r)&&(r=r.replace("{docsify-ignore-all}",""),e.title=An(r),e.ignoreAllSubs=!0);n=xn(i.id||r),i=o.toURL(o.getCurrentPath(),{id:n});return e.slug=i,h.toc.push(e),"'+r+""},i.code={renderer:e}.renderer.code=function(e,t){void 0===t&&(t="markup");var n=En.languages[t]||En.languages.markup;return'
'+En.highlight(e.replace(/@DOCSIFY_QM@/g,"`"),n,t)+"
"},i.link=(n=(t={renderer:e,router:o,linkTarget:t,linkRel:n,compilerClass:h}).renderer,a=t.router,s=t.linkTarget,l=t.linkRel,c=t.compilerClass,n.link=function(e,t,n){void 0===t&&(t="");var r=[],i=Sn(t),o=i.str,i=i.config;return s=i.target||s,l="_blank"===s?c.config.externalLinkRel||"noopener":"",t=o,O(e)||c._matchNotCompileLink(e)||i.ignore?(O(e)||"./"!==e.slice(0,2)||(e=document.URL.replace(/\/(?!.*\/).*/,"/").replace("#/./","")+e),r.push(0===e.indexOf("mailto:")?"":'target="'+s+'"'),r.push(0!==e.indexOf("mailto:")&&""!==l?' rel="'+l+'"':"")):(e===c.config.homepage&&(e="README"),e=a.toURL(e,null,a.getCurrentPath())),i.crossorgin&&"_self"===s&&"history"===c.config.routerMode&&-1===c.config.crossOriginLinks.indexOf(e)&&c.config.crossOriginLinks.push(e),i.disabled&&(r.push("disabled"),e="javascript:void(0)"),i.class&&r.push('class="'+i.class+'"'),i.id&&r.push('id="'+i.id+'"'),t&&r.push('title="'+t+'"'),'"+n+""}),i.paragraph={renderer:e}.renderer.paragraph=function(e){e=/^!>/.test(e)?vn("tip",e):/^\?>/.test(e)?vn("warn",e):"

"+e+"

";return e},i.image=(r=(n={renderer:e,contentBase:r,router:o}).renderer,u=n.contentBase,p=n.router,r.image=function(e,t,n){var r=e,i=[],o=Sn(t),a=o.str,o=o.config;return t=a,o["no-zoom"]&&i.push("data-no-zoom"),t&&i.push('title="'+t+'"'),o.size&&(t=(a=o.size.split("x"))[0],(a=a[1])?i.push('width="'+t+'" height="'+a+'"'):i.push('width="'+t+'"')),o.class&&i.push('class="'+o.class+'"'),o.id&&i.push('id="'+o.id+'"'),O(e)||(r=N(u,F(p.getCurrentPath()),e)),0":''+n+'"}),i.list={renderer:e}.renderer.list=function(e,t,n){t=t?"ol":"ul";return"<"+t+" "+[/
  • /.test(e.split('class="task-list"')[0])?'class="task-list"':"",n&&1"+e+""},i.listitem={renderer:e}.renderer.listitem=function(e){return/^(]*>)/.test(e)?'
  • ":"
  • "+e+"
  • "},e.origin=i,e},On.prototype.sidebar=function(e,t){var n=this.toc,r=this.router.getCurrentPath(),i="";if(e)i=this.compile(e);else{for(var o=0;o{inner}");this.cacheTree[r]=t}return i},On.prototype.subSidebar=function(e){if(e){var t=this.router.getCurrentPath(),n=this.cacheTree,r=this.toc;r[0]&&r[0].ignoreAllSubs&&r.splice(0),r[0]&&1===r[0].level&&r.shift();for(var i=0;i\n'+e+"\n"}]).links={}:(t=[{type:"html",text:e}]).links={}),o({token:i,embedToken:t}),++l>=s&&o({})}}(t);t.embed.url?ce(t.embed.url).then(r):r(t.embed.html)}}({compile:n,embedTokens:s,fetch:t},function(e){var t,n=e.embedToken,e=e.token;e?(t=e.index,u.forEach(function(e){t>e.start&&(t+=e.length)}),y(c,n.links),a=a.slice(0,t).concat(n,a.slice(t+1)),u.push({start:t,length:n.length-1})):(zn[i]=a.concat(),a.links=zn[i].links=c,r(a))})}function Mn(e,t,n){var r,i,o,a;return t="function"==typeof n?n(t):"string"==typeof n?(o=[],a=0,(r=n).replace(B,function(t,e,n){o.push(r.substring(a,n-1)),a=n+=t.length+1,o.push(i&&i[t]||function(e){return("00"+("string"==typeof Z[t]?e[Z[t]]():Z[t](e))).slice(-t.length)})}),a!==r.length&&o.push(r.substring(a)),function(e){for(var t="",n=0,r=e||new Date;n404 - Not found","Vue"in window)for(var o=0,a=k(".markdown-section > *").filter(t);oscript").filter(function(e){return!/template/.test(e.type)})[0])||(e=e.innerText.trim())&&new Function(e)()),"Vue"in window){var l,c,u=[],p=Object.keys(n.vueComponents||{});2===i&&p.length&&p.forEach(function(e){window.Vue.options.components[e]||window.Vue.component(e,n.vueComponents[e])}),!Cn&&n.vueGlobalOptions&&"function"==typeof n.vueGlobalOptions.data&&(Cn=n.vueGlobalOptions.data()),u.push.apply(u,Object.keys(n.vueMounts||{}).map(function(e){return[b(r,e),n.vueMounts[e]]}).filter(function(e){var t=e[0];e[1];return t})),(n.vueGlobalOptions||p.length)&&(l=/{{2}[^{}]*}{2}/,c=/<[^>/]+\s([@:]|v-)[\w-:.[\]]+[=>\s]/,u.push.apply(u,k(".markdown-section > *").filter(function(n){return!u.some(function(e){var t=e[0];e[1];return t===n})}).filter(function(e){return e.tagName.toLowerCase()in(n.vueComponents||{})||e.querySelector(p.join(",")||null)||l.test(e.outerHTML)||c.test(e.outerHTML)}).map(function(e){var t=y({},n.vueGlobalOptions||{});return Cn&&(t.data=function(){return Cn}),[e,t]})));for(var h=0,d=u;h([^<]*?)

    $'))&&("color"===t[2]?r.style.background=t[1]+(t[3]||""):(e=t[1],S(r,"add","has-mask"),O(t[1])||(e=N(this.router.getBasePath(),t[1])),r.style.backgroundImage="url("+e+")",r.style.backgroundSize="cover",r.style.backgroundPosition="center center"),n=n.replace(t[0],"")),this._renderTo(".cover-main",n),he()):S(r,"remove","show")},t.prototype._updateRender=function(){var e,t,n,r;e=this,t=d(".app-name-link"),n=e.config.nameLink,r=e.route.path,t&&(c(e.config.nameLink)?t.setAttribute("href",n):"object"==typeof n&&(e=Object.keys(n).filter(function(e){return-1'):"")),e.coverpage&&(c+=(r=", 100%, 85%",'
    \x3c!--cover--\x3e
    ')),e.logo&&(r=/^data:image/.test(e.logo),t=/(?:http[s]?:)?\/\//.test(e.logo),n=/^\./.test(e.logo),r||t||n||(e.logo=N(this.router.getBasePath(),e.logo))),c+=(n=(t=e).name?t.name:"","
    "+('')+'
    \x3c!--main--\x3e
    '),this._renderTo(l,c,!0)):this.rendered=!0,e.mergeNavbar&&h?u=b(".sidebar"):(s.classList.add("app-nav"),e.repo||s.classList.add("no-badge")),e.loadNavbar&&w(u,s),e.themeColor&&(f.head.appendChild(v("div","").firstElementChild),o=e.themeColor,window.CSS&&window.CSS.supports&&window.CSS.supports("(--v:red)")||(e=k("style:not(.inserted),link"),[].forEach.call(e,function(e){if("STYLE"===e.nodeName)ue(e,o);else if("LINK"===e.nodeName){e=e.getAttribute("href");if(!/\.css$/.test(e))return;ce(e).then(function(e){e=v("style",e);m.appendChild(e),ue(e,o)})}}))),this._updateRender(),S(g,"ready")},t}(function(n){function e(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];n.apply(this,e),this.route={}}return n&&(e.__proto__=n),((e.prototype=Object.create(n&&n.prototype)).constructor=e).prototype.updateRender=function(){this.router.normalize(),this.route=this.router.parse(),g.setAttribute("data-page",this.route.file)},e.prototype.initRouter=function(){var t=this,e=this.config,e=new("history"===(e.routerMode||"hash")&&i?q:H)(e);this.router=e,this.updateRender(),U=this.route,e.onchange(function(e){t.updateRender(),t._updateRender(),U.path!==t.route.path?(t.$fetch(u,t.$resetEvents.bind(t,e.source)),U=t.route):t.$resetEvents(e.source)})},e}(function(e){function t(){e.apply(this,arguments)}return e&&(t.__proto__=e),((t.prototype=Object.create(e&&e.prototype)).constructor=t).prototype.initLifecycle=function(){var n=this;this._hooks={},this._lifecycle={},["init","mounted","beforeEach","afterEach","doneEach","ready"].forEach(function(e){var t=n._hooks[e]=[];n._lifecycle[e]=function(e){return t.push(e)}})},t.prototype.callHook=function(e,n,r){void 0===r&&(r=u);var i=this._hooks[e],o=function(t){var e=i[t];t>=i.length?r(n):"function"==typeof e?2===e.length?e(n,function(e){n=e,o(t+1)}):(e=e(n),n=void 0===e?n:e,o(t+1)):o(t+1)};o(0)},t}(Hn)))))));function Un(e,t,n){return jn&&jn.abort&&jn.abort(),jn=ce(e,!0,n)}window.Docsify={util:In,dom:t,get:ce,slugify:xn,version:"4.12.2"},window.DocsifyCompiler=On,window.marked=gn,window.Prism=En,e(function(e){return new qn})}(); diff --git a/docs/scripts/emoji.min.js b/docs/scripts/emoji.min.js deleted file mode 100644 index b3f4ad3..0000000 --- a/docs/scripts/emoji.min.js +++ /dev/null @@ -1,2 +0,0 @@ - -!function(){var o={100:"unicode/1f4af",1234:"unicode/1f522","+1":"unicode/1f44d","-1":"unicode/1f44e","1st_place_medal":"unicode/1f947","2nd_place_medal":"unicode/1f948","3rd_place_medal":"unicode/1f949","8ball":"unicode/1f3b1",a:"unicode/1f170",ab:"unicode/1f18e",abacus:"unicode/1f9ee",abc:"unicode/1f524",abcd:"unicode/1f521",accept:"unicode/1f251",adhesive_bandage:"unicode/1fa79",adult:"unicode/1f9d1",aerial_tramway:"unicode/1f6a1",afghanistan:"unicode/1f1e6-1f1eb",airplane:"unicode/2708",aland_islands:"unicode/1f1e6-1f1fd",alarm_clock:"unicode/23f0",albania:"unicode/1f1e6-1f1f1",alembic:"unicode/2697",algeria:"unicode/1f1e9-1f1ff",alien:"unicode/1f47d",ambulance:"unicode/1f691",american_samoa:"unicode/1f1e6-1f1f8",amphora:"unicode/1f3fa",anchor:"unicode/2693",andorra:"unicode/1f1e6-1f1e9",angel:"unicode/1f47c",anger:"unicode/1f4a2",angola:"unicode/1f1e6-1f1f4",angry:"unicode/1f620",anguilla:"unicode/1f1e6-1f1ee",anguished:"unicode/1f627",ant:"unicode/1f41c",antarctica:"unicode/1f1e6-1f1f6",antigua_barbuda:"unicode/1f1e6-1f1ec",apple:"unicode/1f34e",aquarius:"unicode/2652",argentina:"unicode/1f1e6-1f1f7",aries:"unicode/2648",armenia:"unicode/1f1e6-1f1f2",arrow_backward:"unicode/25c0",arrow_double_down:"unicode/23ec",arrow_double_up:"unicode/23eb",arrow_down:"unicode/2b07",arrow_down_small:"unicode/1f53d",arrow_forward:"unicode/25b6",arrow_heading_down:"unicode/2935",arrow_heading_up:"unicode/2934",arrow_left:"unicode/2b05",arrow_lower_left:"unicode/2199",arrow_lower_right:"unicode/2198",arrow_right:"unicode/27a1",arrow_right_hook:"unicode/21aa",arrow_up:"unicode/2b06",arrow_up_down:"unicode/2195",arrow_up_small:"unicode/1f53c",arrow_upper_left:"unicode/2196",arrow_upper_right:"unicode/2197",arrows_clockwise:"unicode/1f503",arrows_counterclockwise:"unicode/1f504",art:"unicode/1f3a8",articulated_lorry:"unicode/1f69b",artificial_satellite:"unicode/1f6f0",artist:"unicode/1f9d1-1f3a8",aruba:"unicode/1f1e6-1f1fc",ascension_island:"unicode/1f1e6-1f1e8",asterisk:"unicode/002a-20e3",astonished:"unicode/1f632",astronaut:"unicode/1f9d1-1f680",athletic_shoe:"unicode/1f45f",atm:"unicode/1f3e7",atom:"atom",atom_symbol:"unicode/269b",australia:"unicode/1f1e6-1f1fa",austria:"unicode/1f1e6-1f1f9",auto_rickshaw:"unicode/1f6fa",avocado:"unicode/1f951",axe:"unicode/1fa93",azerbaijan:"unicode/1f1e6-1f1ff",b:"unicode/1f171",baby:"unicode/1f476",baby_bottle:"unicode/1f37c",baby_chick:"unicode/1f424",baby_symbol:"unicode/1f6bc",back:"unicode/1f519",bacon:"unicode/1f953",badger:"unicode/1f9a1",badminton:"unicode/1f3f8",bagel:"unicode/1f96f",baggage_claim:"unicode/1f6c4",baguette_bread:"unicode/1f956",bahamas:"unicode/1f1e7-1f1f8",bahrain:"unicode/1f1e7-1f1ed",balance_scale:"unicode/2696",bald_man:"unicode/1f468-1f9b2",bald_woman:"unicode/1f469-1f9b2",ballet_shoes:"unicode/1fa70",balloon:"unicode/1f388",ballot_box:"unicode/1f5f3",ballot_box_with_check:"unicode/2611",bamboo:"unicode/1f38d",banana:"unicode/1f34c",bangbang:"unicode/203c",bangladesh:"unicode/1f1e7-1f1e9",banjo:"unicode/1fa95",bank:"unicode/1f3e6",bar_chart:"unicode/1f4ca",barbados:"unicode/1f1e7-1f1e7",barber:"unicode/1f488",baseball:"unicode/26be",basecamp:"basecamp",basecampy:"basecampy",basket:"unicode/1f9fa",basketball:"unicode/1f3c0",basketball_man:"unicode/26f9-2642",basketball_woman:"unicode/26f9-2640",bat:"unicode/1f987",bath:"unicode/1f6c0",bathtub:"unicode/1f6c1",battery:"unicode/1f50b",beach_umbrella:"unicode/1f3d6",bear:"unicode/1f43b",bearded_person:"unicode/1f9d4",bed:"unicode/1f6cf",bee:"unicode/1f41d",beer:"unicode/1f37a",beers:"unicode/1f37b",beetle:"unicode/1f41e",beginner:"unicode/1f530",belarus:"unicode/1f1e7-1f1fe",belgium:"unicode/1f1e7-1f1ea",belize:"unicode/1f1e7-1f1ff",bell:"unicode/1f514",bellhop_bell:"unicode/1f6ce",benin:"unicode/1f1e7-1f1ef",bento:"unicode/1f371",bermuda:"unicode/1f1e7-1f1f2",beverage_box:"unicode/1f9c3",bhutan:"unicode/1f1e7-1f1f9",bicyclist:"unicode/1f6b4",bike:"unicode/1f6b2",biking_man:"unicode/1f6b4-2642",biking_woman:"unicode/1f6b4-2640",bikini:"unicode/1f459",billed_cap:"unicode/1f9e2",biohazard:"unicode/2623",bird:"unicode/1f426",birthday:"unicode/1f382",black_circle:"unicode/26ab",black_flag:"unicode/1f3f4",black_heart:"unicode/1f5a4",black_joker:"unicode/1f0cf",black_large_square:"unicode/2b1b",black_medium_small_square:"unicode/25fe",black_medium_square:"unicode/25fc",black_nib:"unicode/2712",black_small_square:"unicode/25aa",black_square_button:"unicode/1f532",blond_haired_man:"unicode/1f471-2642",blond_haired_person:"unicode/1f471",blond_haired_woman:"unicode/1f471-2640",blonde_woman:"unicode/1f471-2640",blossom:"unicode/1f33c",blowfish:"unicode/1f421",blue_book:"unicode/1f4d8",blue_car:"unicode/1f699",blue_heart:"unicode/1f499",blue_square:"unicode/1f7e6",blush:"unicode/1f60a",boar:"unicode/1f417",boat:"unicode/26f5",bolivia:"unicode/1f1e7-1f1f4",bomb:"unicode/1f4a3",bone:"unicode/1f9b4",book:"unicode/1f4d6",bookmark:"unicode/1f516",bookmark_tabs:"unicode/1f4d1",books:"unicode/1f4da",boom:"unicode/1f4a5",boot:"unicode/1f462",bosnia_herzegovina:"unicode/1f1e7-1f1e6",botswana:"unicode/1f1e7-1f1fc",bouncing_ball_man:"unicode/26f9-2642",bouncing_ball_person:"unicode/26f9",bouncing_ball_woman:"unicode/26f9-2640",bouquet:"unicode/1f490",bouvet_island:"unicode/1f1e7-1f1fb",bow:"unicode/1f647",bow_and_arrow:"unicode/1f3f9",bowing_man:"unicode/1f647-2642",bowing_woman:"unicode/1f647-2640",bowl_with_spoon:"unicode/1f963",bowling:"unicode/1f3b3",bowtie:"bowtie",boxing_glove:"unicode/1f94a",boy:"unicode/1f466",brain:"unicode/1f9e0",brazil:"unicode/1f1e7-1f1f7",bread:"unicode/1f35e",breast_feeding:"unicode/1f931",bricks:"unicode/1f9f1",bride_with_veil:"unicode/1f470",bridge_at_night:"unicode/1f309",briefcase:"unicode/1f4bc",british_indian_ocean_territory:"unicode/1f1ee-1f1f4",british_virgin_islands:"unicode/1f1fb-1f1ec",broccoli:"unicode/1f966",broken_heart:"unicode/1f494",broom:"unicode/1f9f9",brown_circle:"unicode/1f7e4",brown_heart:"unicode/1f90e",brown_square:"unicode/1f7eb",brunei:"unicode/1f1e7-1f1f3",bug:"unicode/1f41b",building_construction:"unicode/1f3d7",bulb:"unicode/1f4a1",bulgaria:"unicode/1f1e7-1f1ec",bullettrain_front:"unicode/1f685",bullettrain_side:"unicode/1f684",burkina_faso:"unicode/1f1e7-1f1eb",burrito:"unicode/1f32f",burundi:"unicode/1f1e7-1f1ee",bus:"unicode/1f68c",business_suit_levitating:"unicode/1f574",busstop:"unicode/1f68f",bust_in_silhouette:"unicode/1f464",busts_in_silhouette:"unicode/1f465",butter:"unicode/1f9c8",butterfly:"unicode/1f98b",cactus:"unicode/1f335",cake:"unicode/1f370",calendar:"unicode/1f4c6",call_me_hand:"unicode/1f919",calling:"unicode/1f4f2",cambodia:"unicode/1f1f0-1f1ed",camel:"unicode/1f42b",camera:"unicode/1f4f7",camera_flash:"unicode/1f4f8",cameroon:"unicode/1f1e8-1f1f2",camping:"unicode/1f3d5",canada:"unicode/1f1e8-1f1e6",canary_islands:"unicode/1f1ee-1f1e8",cancer:"unicode/264b",candle:"unicode/1f56f",candy:"unicode/1f36c",canned_food:"unicode/1f96b",canoe:"unicode/1f6f6",cape_verde:"unicode/1f1e8-1f1fb",capital_abcd:"unicode/1f520",capricorn:"unicode/2651",car:"unicode/1f697",card_file_box:"unicode/1f5c3",card_index:"unicode/1f4c7",card_index_dividers:"unicode/1f5c2",caribbean_netherlands:"unicode/1f1e7-1f1f6",carousel_horse:"unicode/1f3a0",carrot:"unicode/1f955",cartwheeling:"unicode/1f938",cat:"unicode/1f431",cat2:"unicode/1f408",cayman_islands:"unicode/1f1f0-1f1fe",cd:"unicode/1f4bf",central_african_republic:"unicode/1f1e8-1f1eb",ceuta_melilla:"unicode/1f1ea-1f1e6",chad:"unicode/1f1f9-1f1e9",chains:"unicode/26d3",chair:"unicode/1fa91",champagne:"unicode/1f37e",chart:"unicode/1f4b9",chart_with_downwards_trend:"unicode/1f4c9",chart_with_upwards_trend:"unicode/1f4c8",checkered_flag:"unicode/1f3c1",cheese:"unicode/1f9c0",cherries:"unicode/1f352",cherry_blossom:"unicode/1f338",chess_pawn:"unicode/265f",chestnut:"unicode/1f330",chicken:"unicode/1f414",child:"unicode/1f9d2",children_crossing:"unicode/1f6b8",chile:"unicode/1f1e8-1f1f1",chipmunk:"unicode/1f43f",chocolate_bar:"unicode/1f36b",chopsticks:"unicode/1f962",christmas_island:"unicode/1f1e8-1f1fd",christmas_tree:"unicode/1f384",church:"unicode/26ea",cinema:"unicode/1f3a6",circus_tent:"unicode/1f3aa",city_sunrise:"unicode/1f307",city_sunset:"unicode/1f306",cityscape:"unicode/1f3d9",cl:"unicode/1f191",clamp:"unicode/1f5dc",clap:"unicode/1f44f",clapper:"unicode/1f3ac",classical_building:"unicode/1f3db",climbing:"unicode/1f9d7",climbing_man:"unicode/1f9d7-2642",climbing_woman:"unicode/1f9d7-2640",clinking_glasses:"unicode/1f942",clipboard:"unicode/1f4cb",clipperton_island:"unicode/1f1e8-1f1f5",clock1:"unicode/1f550",clock10:"unicode/1f559",clock1030:"unicode/1f565",clock11:"unicode/1f55a",clock1130:"unicode/1f566",clock12:"unicode/1f55b",clock1230:"unicode/1f567",clock130:"unicode/1f55c",clock2:"unicode/1f551",clock230:"unicode/1f55d",clock3:"unicode/1f552",clock330:"unicode/1f55e",clock4:"unicode/1f553",clock430:"unicode/1f55f",clock5:"unicode/1f554",clock530:"unicode/1f560",clock6:"unicode/1f555",clock630:"unicode/1f561",clock7:"unicode/1f556",clock730:"unicode/1f562",clock8:"unicode/1f557",clock830:"unicode/1f563",clock9:"unicode/1f558",clock930:"unicode/1f564",closed_book:"unicode/1f4d5",closed_lock_with_key:"unicode/1f510",closed_umbrella:"unicode/1f302",cloud:"unicode/2601",cloud_with_lightning:"unicode/1f329",cloud_with_lightning_and_rain:"unicode/26c8",cloud_with_rain:"unicode/1f327",cloud_with_snow:"unicode/1f328",clown_face:"unicode/1f921",clubs:"unicode/2663",cn:"unicode/1f1e8-1f1f3",coat:"unicode/1f9e5",cocktail:"unicode/1f378",coconut:"unicode/1f965",cocos_islands:"unicode/1f1e8-1f1e8",coffee:"unicode/2615",coffin:"unicode/26b0",cold_face:"unicode/1f976",cold_sweat:"unicode/1f630",collision:"unicode/1f4a5",colombia:"unicode/1f1e8-1f1f4",comet:"unicode/2604",comoros:"unicode/1f1f0-1f1f2",compass:"unicode/1f9ed",computer:"unicode/1f4bb",computer_mouse:"unicode/1f5b1",confetti_ball:"unicode/1f38a",confounded:"unicode/1f616",confused:"unicode/1f615",congo_brazzaville:"unicode/1f1e8-1f1ec",congo_kinshasa:"unicode/1f1e8-1f1e9",congratulations:"unicode/3297",construction:"unicode/1f6a7",construction_worker:"unicode/1f477",construction_worker_man:"unicode/1f477-2642",construction_worker_woman:"unicode/1f477-2640",control_knobs:"unicode/1f39b",convenience_store:"unicode/1f3ea",cook:"unicode/1f9d1-1f373",cook_islands:"unicode/1f1e8-1f1f0",cookie:"unicode/1f36a",cool:"unicode/1f192",cop:"unicode/1f46e",copyright:"unicode/00a9",corn:"unicode/1f33d",costa_rica:"unicode/1f1e8-1f1f7",cote_divoire:"unicode/1f1e8-1f1ee",couch_and_lamp:"unicode/1f6cb",couple:"unicode/1f46b",couple_with_heart:"unicode/1f491",couple_with_heart_man_man:"unicode/1f468-2764-1f468",couple_with_heart_woman_man:"unicode/1f469-2764-1f468",couple_with_heart_woman_woman:"unicode/1f469-2764-1f469",couplekiss:"unicode/1f48f",couplekiss_man_man:"unicode/1f468-2764-1f48b-1f468",couplekiss_man_woman:"unicode/1f469-2764-1f48b-1f468",couplekiss_woman_woman:"unicode/1f469-2764-1f48b-1f469",cow:"unicode/1f42e",cow2:"unicode/1f404",cowboy_hat_face:"unicode/1f920",crab:"unicode/1f980",crayon:"unicode/1f58d",credit_card:"unicode/1f4b3",crescent_moon:"unicode/1f319",cricket:"unicode/1f997",cricket_game:"unicode/1f3cf",croatia:"unicode/1f1ed-1f1f7",crocodile:"unicode/1f40a",croissant:"unicode/1f950",crossed_fingers:"unicode/1f91e",crossed_flags:"unicode/1f38c",crossed_swords:"unicode/2694",crown:"unicode/1f451",cry:"unicode/1f622",crying_cat_face:"unicode/1f63f",crystal_ball:"unicode/1f52e",cuba:"unicode/1f1e8-1f1fa",cucumber:"unicode/1f952",cup_with_straw:"unicode/1f964",cupcake:"unicode/1f9c1",cupid:"unicode/1f498",curacao:"unicode/1f1e8-1f1fc",curling_stone:"unicode/1f94c",curly_haired_man:"unicode/1f468-1f9b1",curly_haired_woman:"unicode/1f469-1f9b1",curly_loop:"unicode/27b0",currency_exchange:"unicode/1f4b1",curry:"unicode/1f35b",cursing_face:"unicode/1f92c",custard:"unicode/1f36e",customs:"unicode/1f6c3",cut_of_meat:"unicode/1f969",cyclone:"unicode/1f300",cyprus:"unicode/1f1e8-1f1fe",czech_republic:"unicode/1f1e8-1f1ff",dagger:"unicode/1f5e1",dancer:"unicode/1f483",dancers:"unicode/1f46f",dancing_men:"unicode/1f46f-2642",dancing_women:"unicode/1f46f-2640",dango:"unicode/1f361",dark_sunglasses:"unicode/1f576",dart:"unicode/1f3af",dash:"unicode/1f4a8",date:"unicode/1f4c5",de:"unicode/1f1e9-1f1ea",deaf_man:"unicode/1f9cf-2642",deaf_person:"unicode/1f9cf",deaf_woman:"unicode/1f9cf-2640",deciduous_tree:"unicode/1f333",deer:"unicode/1f98c",denmark:"unicode/1f1e9-1f1f0",department_store:"unicode/1f3ec",derelict_house:"unicode/1f3da",desert:"unicode/1f3dc",desert_island:"unicode/1f3dd",desktop_computer:"unicode/1f5a5",detective:"unicode/1f575",diamond_shape_with_a_dot_inside:"unicode/1f4a0",diamonds:"unicode/2666",diego_garcia:"unicode/1f1e9-1f1ec",disappointed:"unicode/1f61e",disappointed_relieved:"unicode/1f625",diving_mask:"unicode/1f93f",diya_lamp:"unicode/1fa94",dizzy:"unicode/1f4ab",dizzy_face:"unicode/1f635",djibouti:"unicode/1f1e9-1f1ef",dna:"unicode/1f9ec",do_not_litter:"unicode/1f6af",dog:"unicode/1f436",dog2:"unicode/1f415",dollar:"unicode/1f4b5",dolls:"unicode/1f38e",dolphin:"unicode/1f42c",dominica:"unicode/1f1e9-1f1f2",dominican_republic:"unicode/1f1e9-1f1f4",door:"unicode/1f6aa",doughnut:"unicode/1f369",dove:"unicode/1f54a",dragon:"unicode/1f409",dragon_face:"unicode/1f432",dress:"unicode/1f457",dromedary_camel:"unicode/1f42a",drooling_face:"unicode/1f924",drop_of_blood:"unicode/1fa78",droplet:"unicode/1f4a7",drum:"unicode/1f941",duck:"unicode/1f986",dumpling:"unicode/1f95f",dvd:"unicode/1f4c0","e-mail":"unicode/1f4e7",eagle:"unicode/1f985",ear:"unicode/1f442",ear_of_rice:"unicode/1f33e",ear_with_hearing_aid:"unicode/1f9bb",earth_africa:"unicode/1f30d",earth_americas:"unicode/1f30e",earth_asia:"unicode/1f30f",ecuador:"unicode/1f1ea-1f1e8",egg:"unicode/1f95a",eggplant:"unicode/1f346",egypt:"unicode/1f1ea-1f1ec",eight:"unicode/0038-20e3",eight_pointed_black_star:"unicode/2734",eight_spoked_asterisk:"unicode/2733",eject_button:"unicode/23cf",el_salvador:"unicode/1f1f8-1f1fb",electric_plug:"unicode/1f50c",electron:"electron",elephant:"unicode/1f418",elf:"unicode/1f9dd",elf_man:"unicode/1f9dd-2642",elf_woman:"unicode/1f9dd-2640",email:"unicode/2709",end:"unicode/1f51a",england:"unicode/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f",envelope:"unicode/2709",envelope_with_arrow:"unicode/1f4e9",equatorial_guinea:"unicode/1f1ec-1f1f6",eritrea:"unicode/1f1ea-1f1f7",es:"unicode/1f1ea-1f1f8",estonia:"unicode/1f1ea-1f1ea",ethiopia:"unicode/1f1ea-1f1f9",eu:"unicode/1f1ea-1f1fa",euro:"unicode/1f4b6",european_castle:"unicode/1f3f0",european_post_office:"unicode/1f3e4",european_union:"unicode/1f1ea-1f1fa",evergreen_tree:"unicode/1f332",exclamation:"unicode/2757",exploding_head:"unicode/1f92f",expressionless:"unicode/1f611",eye:"unicode/1f441",eye_speech_bubble:"unicode/1f441-1f5e8",eyeglasses:"unicode/1f453",eyes:"unicode/1f440",face_with_head_bandage:"unicode/1f915",face_with_thermometer:"unicode/1f912",facepalm:"unicode/1f926",facepunch:"unicode/1f44a",factory:"unicode/1f3ed",factory_worker:"unicode/1f9d1-1f3ed",fairy:"unicode/1f9da",fairy_man:"unicode/1f9da-2642",fairy_woman:"unicode/1f9da-2640",falafel:"unicode/1f9c6",falkland_islands:"unicode/1f1eb-1f1f0",fallen_leaf:"unicode/1f342",family:"unicode/1f46a",family_man_boy:"unicode/1f468-1f466",family_man_boy_boy:"unicode/1f468-1f466-1f466",family_man_girl:"unicode/1f468-1f467",family_man_girl_boy:"unicode/1f468-1f467-1f466",family_man_girl_girl:"unicode/1f468-1f467-1f467",family_man_man_boy:"unicode/1f468-1f468-1f466",family_man_man_boy_boy:"unicode/1f468-1f468-1f466-1f466",family_man_man_girl:"unicode/1f468-1f468-1f467",family_man_man_girl_boy:"unicode/1f468-1f468-1f467-1f466",family_man_man_girl_girl:"unicode/1f468-1f468-1f467-1f467",family_man_woman_boy:"unicode/1f468-1f469-1f466",family_man_woman_boy_boy:"unicode/1f468-1f469-1f466-1f466",family_man_woman_girl:"unicode/1f468-1f469-1f467",family_man_woman_girl_boy:"unicode/1f468-1f469-1f467-1f466",family_man_woman_girl_girl:"unicode/1f468-1f469-1f467-1f467",family_woman_boy:"unicode/1f469-1f466",family_woman_boy_boy:"unicode/1f469-1f466-1f466",family_woman_girl:"unicode/1f469-1f467",family_woman_girl_boy:"unicode/1f469-1f467-1f466",family_woman_girl_girl:"unicode/1f469-1f467-1f467",family_woman_woman_boy:"unicode/1f469-1f469-1f466",family_woman_woman_boy_boy:"unicode/1f469-1f469-1f466-1f466",family_woman_woman_girl:"unicode/1f469-1f469-1f467",family_woman_woman_girl_boy:"unicode/1f469-1f469-1f467-1f466",family_woman_woman_girl_girl:"unicode/1f469-1f469-1f467-1f467",farmer:"unicode/1f9d1-1f33e",faroe_islands:"unicode/1f1eb-1f1f4",fast_forward:"unicode/23e9",fax:"unicode/1f4e0",fearful:"unicode/1f628",feelsgood:"feelsgood",feet:"unicode/1f43e",female_detective:"unicode/1f575-2640",female_sign:"unicode/2640",ferris_wheel:"unicode/1f3a1",ferry:"unicode/26f4",field_hockey:"unicode/1f3d1",fiji:"unicode/1f1eb-1f1ef",file_cabinet:"unicode/1f5c4",file_folder:"unicode/1f4c1",film_projector:"unicode/1f4fd",film_strip:"unicode/1f39e",finland:"unicode/1f1eb-1f1ee",finnadie:"finnadie",fire:"unicode/1f525",fire_engine:"unicode/1f692",fire_extinguisher:"unicode/1f9ef",firecracker:"unicode/1f9e8",firefighter:"unicode/1f9d1-1f692",fireworks:"unicode/1f386",first_quarter_moon:"unicode/1f313",first_quarter_moon_with_face:"unicode/1f31b",fish:"unicode/1f41f",fish_cake:"unicode/1f365",fishing_pole_and_fish:"unicode/1f3a3",fist:"unicode/270a",fist_left:"unicode/1f91b",fist_oncoming:"unicode/1f44a",fist_raised:"unicode/270a",fist_right:"unicode/1f91c",five:"unicode/0035-20e3",flags:"unicode/1f38f",flamingo:"unicode/1f9a9",flashlight:"unicode/1f526",flat_shoe:"unicode/1f97f",fleur_de_lis:"unicode/269c",flight_arrival:"unicode/1f6ec",flight_departure:"unicode/1f6eb",flipper:"unicode/1f42c",floppy_disk:"unicode/1f4be",flower_playing_cards:"unicode/1f3b4",flushed:"unicode/1f633",flying_disc:"unicode/1f94f",flying_saucer:"unicode/1f6f8",fog:"unicode/1f32b",foggy:"unicode/1f301",foot:"unicode/1f9b6",football:"unicode/1f3c8",footprints:"unicode/1f463",fork_and_knife:"unicode/1f374",fortune_cookie:"unicode/1f960",fountain:"unicode/26f2",fountain_pen:"unicode/1f58b",four:"unicode/0034-20e3",four_leaf_clover:"unicode/1f340",fox_face:"unicode/1f98a",fr:"unicode/1f1eb-1f1f7",framed_picture:"unicode/1f5bc",free:"unicode/1f193",french_guiana:"unicode/1f1ec-1f1eb",french_polynesia:"unicode/1f1f5-1f1eb",french_southern_territories:"unicode/1f1f9-1f1eb",fried_egg:"unicode/1f373",fried_shrimp:"unicode/1f364",fries:"unicode/1f35f",frog:"unicode/1f438",frowning:"unicode/1f626",frowning_face:"unicode/2639",frowning_man:"unicode/1f64d-2642",frowning_person:"unicode/1f64d",frowning_woman:"unicode/1f64d-2640",fu:"unicode/1f595",fuelpump:"unicode/26fd",full_moon:"unicode/1f315",full_moon_with_face:"unicode/1f31d",funeral_urn:"unicode/26b1",gabon:"unicode/1f1ec-1f1e6",gambia:"unicode/1f1ec-1f1f2",game_die:"unicode/1f3b2",garlic:"unicode/1f9c4",gb:"unicode/1f1ec-1f1e7",gear:"unicode/2699",gem:"unicode/1f48e",gemini:"unicode/264a",genie:"unicode/1f9de",genie_man:"unicode/1f9de-2642",genie_woman:"unicode/1f9de-2640",georgia:"unicode/1f1ec-1f1ea",ghana:"unicode/1f1ec-1f1ed",ghost:"unicode/1f47b",gibraltar:"unicode/1f1ec-1f1ee",gift:"unicode/1f381",gift_heart:"unicode/1f49d",giraffe:"unicode/1f992",girl:"unicode/1f467",globe_with_meridians:"unicode/1f310",gloves:"unicode/1f9e4",goal_net:"unicode/1f945",goat:"unicode/1f410",goberserk:"goberserk",godmode:"godmode",goggles:"unicode/1f97d",golf:"unicode/26f3",golfing:"unicode/1f3cc",golfing_man:"unicode/1f3cc-2642",golfing_woman:"unicode/1f3cc-2640",gorilla:"unicode/1f98d",grapes:"unicode/1f347",greece:"unicode/1f1ec-1f1f7",green_apple:"unicode/1f34f",green_book:"unicode/1f4d7",green_circle:"unicode/1f7e2",green_heart:"unicode/1f49a",green_salad:"unicode/1f957",green_square:"unicode/1f7e9",greenland:"unicode/1f1ec-1f1f1",grenada:"unicode/1f1ec-1f1e9",grey_exclamation:"unicode/2755",grey_question:"unicode/2754",grimacing:"unicode/1f62c",grin:"unicode/1f601",grinning:"unicode/1f600",guadeloupe:"unicode/1f1ec-1f1f5",guam:"unicode/1f1ec-1f1fa",guard:"unicode/1f482",guardsman:"unicode/1f482-2642",guardswoman:"unicode/1f482-2640",guatemala:"unicode/1f1ec-1f1f9",guernsey:"unicode/1f1ec-1f1ec",guide_dog:"unicode/1f9ae",guinea:"unicode/1f1ec-1f1f3",guinea_bissau:"unicode/1f1ec-1f1fc",guitar:"unicode/1f3b8",gun:"unicode/1f52b",guyana:"unicode/1f1ec-1f1fe",haircut:"unicode/1f487",haircut_man:"unicode/1f487-2642",haircut_woman:"unicode/1f487-2640",haiti:"unicode/1f1ed-1f1f9",hamburger:"unicode/1f354",hammer:"unicode/1f528",hammer_and_pick:"unicode/2692",hammer_and_wrench:"unicode/1f6e0",hamster:"unicode/1f439",hand:"unicode/270b",hand_over_mouth:"unicode/1f92d",handbag:"unicode/1f45c",handball_person:"unicode/1f93e",handshake:"unicode/1f91d",hankey:"unicode/1f4a9",hash:"unicode/0023-20e3",hatched_chick:"unicode/1f425",hatching_chick:"unicode/1f423",headphones:"unicode/1f3a7",health_worker:"unicode/1f9d1-2695",hear_no_evil:"unicode/1f649",heard_mcdonald_islands:"unicode/1f1ed-1f1f2",heart:"unicode/2764",heart_decoration:"unicode/1f49f",heart_eyes:"unicode/1f60d",heart_eyes_cat:"unicode/1f63b",heartbeat:"unicode/1f493",heartpulse:"unicode/1f497",hearts:"unicode/2665",heavy_check_mark:"unicode/2714",heavy_division_sign:"unicode/2797",heavy_dollar_sign:"unicode/1f4b2",heavy_exclamation_mark:"unicode/2757",heavy_heart_exclamation:"unicode/2763",heavy_minus_sign:"unicode/2796",heavy_multiplication_x:"unicode/2716",heavy_plus_sign:"unicode/2795",hedgehog:"unicode/1f994",helicopter:"unicode/1f681",herb:"unicode/1f33f",hibiscus:"unicode/1f33a",high_brightness:"unicode/1f506",high_heel:"unicode/1f460",hiking_boot:"unicode/1f97e",hindu_temple:"unicode/1f6d5",hippopotamus:"unicode/1f99b",hocho:"unicode/1f52a",hole:"unicode/1f573",honduras:"unicode/1f1ed-1f1f3",honey_pot:"unicode/1f36f",honeybee:"unicode/1f41d",hong_kong:"unicode/1f1ed-1f1f0",horse:"unicode/1f434",horse_racing:"unicode/1f3c7",hospital:"unicode/1f3e5",hot_face:"unicode/1f975",hot_pepper:"unicode/1f336",hotdog:"unicode/1f32d",hotel:"unicode/1f3e8",hotsprings:"unicode/2668",hourglass:"unicode/231b",hourglass_flowing_sand:"unicode/23f3",house:"unicode/1f3e0",house_with_garden:"unicode/1f3e1",houses:"unicode/1f3d8",hugs:"unicode/1f917",hungary:"unicode/1f1ed-1f1fa",hurtrealbad:"hurtrealbad",hushed:"unicode/1f62f",ice_cream:"unicode/1f368",ice_cube:"unicode/1f9ca",ice_hockey:"unicode/1f3d2",ice_skate:"unicode/26f8",icecream:"unicode/1f366",iceland:"unicode/1f1ee-1f1f8",id:"unicode/1f194",ideograph_advantage:"unicode/1f250",imp:"unicode/1f47f",inbox_tray:"unicode/1f4e5",incoming_envelope:"unicode/1f4e8",india:"unicode/1f1ee-1f1f3",indonesia:"unicode/1f1ee-1f1e9",infinity:"unicode/267e",information_desk_person:"unicode/1f481",information_source:"unicode/2139",innocent:"unicode/1f607",interrobang:"unicode/2049",iphone:"unicode/1f4f1",iran:"unicode/1f1ee-1f1f7",iraq:"unicode/1f1ee-1f1f6",ireland:"unicode/1f1ee-1f1ea",isle_of_man:"unicode/1f1ee-1f1f2",israel:"unicode/1f1ee-1f1f1",it:"unicode/1f1ee-1f1f9",izakaya_lantern:"unicode/1f3ee",jack_o_lantern:"unicode/1f383",jamaica:"unicode/1f1ef-1f1f2",japan:"unicode/1f5fe",japanese_castle:"unicode/1f3ef",japanese_goblin:"unicode/1f47a",japanese_ogre:"unicode/1f479",jeans:"unicode/1f456",jersey:"unicode/1f1ef-1f1ea",jigsaw:"unicode/1f9e9",jordan:"unicode/1f1ef-1f1f4",joy:"unicode/1f602",joy_cat:"unicode/1f639",joystick:"unicode/1f579",jp:"unicode/1f1ef-1f1f5",judge:"unicode/1f9d1-2696",juggling_person:"unicode/1f939",kaaba:"unicode/1f54b",kangaroo:"unicode/1f998",kazakhstan:"unicode/1f1f0-1f1ff",kenya:"unicode/1f1f0-1f1ea",key:"unicode/1f511",keyboard:"unicode/2328",keycap_ten:"unicode/1f51f",kick_scooter:"unicode/1f6f4",kimono:"unicode/1f458",kiribati:"unicode/1f1f0-1f1ee",kiss:"unicode/1f48b",kissing:"unicode/1f617",kissing_cat:"unicode/1f63d",kissing_closed_eyes:"unicode/1f61a",kissing_heart:"unicode/1f618",kissing_smiling_eyes:"unicode/1f619",kite:"unicode/1fa81",kiwi_fruit:"unicode/1f95d",kneeling_man:"unicode/1f9ce-2642",kneeling_person:"unicode/1f9ce",kneeling_woman:"unicode/1f9ce-2640",knife:"unicode/1f52a",koala:"unicode/1f428",koko:"unicode/1f201",kosovo:"unicode/1f1fd-1f1f0",kr:"unicode/1f1f0-1f1f7",kuwait:"unicode/1f1f0-1f1fc",kyrgyzstan:"unicode/1f1f0-1f1ec",lab_coat:"unicode/1f97c",label:"unicode/1f3f7",lacrosse:"unicode/1f94d",lantern:"unicode/1f3ee",laos:"unicode/1f1f1-1f1e6",large_blue_circle:"unicode/1f535",large_blue_diamond:"unicode/1f537",large_orange_diamond:"unicode/1f536",last_quarter_moon:"unicode/1f317",last_quarter_moon_with_face:"unicode/1f31c",latin_cross:"unicode/271d",latvia:"unicode/1f1f1-1f1fb",laughing:"unicode/1f606",leafy_green:"unicode/1f96c",leaves:"unicode/1f343",lebanon:"unicode/1f1f1-1f1e7",ledger:"unicode/1f4d2",left_luggage:"unicode/1f6c5",left_right_arrow:"unicode/2194",left_speech_bubble:"unicode/1f5e8",leftwards_arrow_with_hook:"unicode/21a9",leg:"unicode/1f9b5",lemon:"unicode/1f34b",leo:"unicode/264c",leopard:"unicode/1f406",lesotho:"unicode/1f1f1-1f1f8",level_slider:"unicode/1f39a",liberia:"unicode/1f1f1-1f1f7",libra:"unicode/264e",libya:"unicode/1f1f1-1f1fe",liechtenstein:"unicode/1f1f1-1f1ee",light_rail:"unicode/1f688",link:"unicode/1f517",lion:"unicode/1f981",lips:"unicode/1f444",lipstick:"unicode/1f484",lithuania:"unicode/1f1f1-1f1f9",lizard:"unicode/1f98e",llama:"unicode/1f999",lobster:"unicode/1f99e",lock:"unicode/1f512",lock_with_ink_pen:"unicode/1f50f",lollipop:"unicode/1f36d",loop:"unicode/27bf",lotion_bottle:"unicode/1f9f4",lotus_position:"unicode/1f9d8",lotus_position_man:"unicode/1f9d8-2642",lotus_position_woman:"unicode/1f9d8-2640",loud_sound:"unicode/1f50a",loudspeaker:"unicode/1f4e2",love_hotel:"unicode/1f3e9",love_letter:"unicode/1f48c",love_you_gesture:"unicode/1f91f",low_brightness:"unicode/1f505",luggage:"unicode/1f9f3",luxembourg:"unicode/1f1f1-1f1fa",lying_face:"unicode/1f925",m:"unicode/24c2",macau:"unicode/1f1f2-1f1f4",macedonia:"unicode/1f1f2-1f1f0",madagascar:"unicode/1f1f2-1f1ec",mag:"unicode/1f50d",mag_right:"unicode/1f50e",mage:"unicode/1f9d9",mage_man:"unicode/1f9d9-2642",mage_woman:"unicode/1f9d9-2640",magnet:"unicode/1f9f2",mahjong:"unicode/1f004",mailbox:"unicode/1f4eb",mailbox_closed:"unicode/1f4ea",mailbox_with_mail:"unicode/1f4ec",mailbox_with_no_mail:"unicode/1f4ed",malawi:"unicode/1f1f2-1f1fc",malaysia:"unicode/1f1f2-1f1fe",maldives:"unicode/1f1f2-1f1fb",male_detective:"unicode/1f575-2642",male_sign:"unicode/2642",mali:"unicode/1f1f2-1f1f1",malta:"unicode/1f1f2-1f1f9",man:"unicode/1f468",man_artist:"unicode/1f468-1f3a8",man_astronaut:"unicode/1f468-1f680",man_cartwheeling:"unicode/1f938-2642",man_cook:"unicode/1f468-1f373",man_dancing:"unicode/1f57a",man_facepalming:"unicode/1f926-2642",man_factory_worker:"unicode/1f468-1f3ed",man_farmer:"unicode/1f468-1f33e",man_firefighter:"unicode/1f468-1f692",man_health_worker:"unicode/1f468-2695",man_in_manual_wheelchair:"unicode/1f468-1f9bd",man_in_motorized_wheelchair:"unicode/1f468-1f9bc",man_in_tuxedo:"unicode/1f935",man_judge:"unicode/1f468-2696",man_juggling:"unicode/1f939-2642",man_mechanic:"unicode/1f468-1f527",man_office_worker:"unicode/1f468-1f4bc",man_pilot:"unicode/1f468-2708",man_playing_handball:"unicode/1f93e-2642",man_playing_water_polo:"unicode/1f93d-2642",man_scientist:"unicode/1f468-1f52c",man_shrugging:"unicode/1f937-2642",man_singer:"unicode/1f468-1f3a4",man_student:"unicode/1f468-1f393",man_teacher:"unicode/1f468-1f3eb",man_technologist:"unicode/1f468-1f4bb",man_with_gua_pi_mao:"unicode/1f472",man_with_probing_cane:"unicode/1f468-1f9af",man_with_turban:"unicode/1f473-2642",mandarin:"unicode/1f34a",mango:"unicode/1f96d",mans_shoe:"unicode/1f45e",mantelpiece_clock:"unicode/1f570",manual_wheelchair:"unicode/1f9bd",maple_leaf:"unicode/1f341",marshall_islands:"unicode/1f1f2-1f1ed",martial_arts_uniform:"unicode/1f94b",martinique:"unicode/1f1f2-1f1f6",mask:"unicode/1f637",massage:"unicode/1f486",massage_man:"unicode/1f486-2642",massage_woman:"unicode/1f486-2640",mate:"unicode/1f9c9",mauritania:"unicode/1f1f2-1f1f7",mauritius:"unicode/1f1f2-1f1fa",mayotte:"unicode/1f1fe-1f1f9",meat_on_bone:"unicode/1f356",mechanic:"unicode/1f9d1-1f527",mechanical_arm:"unicode/1f9be",mechanical_leg:"unicode/1f9bf",medal_military:"unicode/1f396",medal_sports:"unicode/1f3c5",medical_symbol:"unicode/2695",mega:"unicode/1f4e3",melon:"unicode/1f348",memo:"unicode/1f4dd",men_wrestling:"unicode/1f93c-2642",menorah:"unicode/1f54e",mens:"unicode/1f6b9",mermaid:"unicode/1f9dc-2640",merman:"unicode/1f9dc-2642",merperson:"unicode/1f9dc",metal:"unicode/1f918",metro:"unicode/1f687",mexico:"unicode/1f1f2-1f1fd",microbe:"unicode/1f9a0",micronesia:"unicode/1f1eb-1f1f2",microphone:"unicode/1f3a4",microscope:"unicode/1f52c",middle_finger:"unicode/1f595",milk_glass:"unicode/1f95b",milky_way:"unicode/1f30c",minibus:"unicode/1f690",minidisc:"unicode/1f4bd",mobile_phone_off:"unicode/1f4f4",moldova:"unicode/1f1f2-1f1e9",monaco:"unicode/1f1f2-1f1e8",money_mouth_face:"unicode/1f911",money_with_wings:"unicode/1f4b8",moneybag:"unicode/1f4b0",mongolia:"unicode/1f1f2-1f1f3",monkey:"unicode/1f412",monkey_face:"unicode/1f435",monocle_face:"unicode/1f9d0",monorail:"unicode/1f69d",montenegro:"unicode/1f1f2-1f1ea",montserrat:"unicode/1f1f2-1f1f8",moon:"unicode/1f314",moon_cake:"unicode/1f96e",morocco:"unicode/1f1f2-1f1e6",mortar_board:"unicode/1f393",mosque:"unicode/1f54c",mosquito:"unicode/1f99f",motor_boat:"unicode/1f6e5",motor_scooter:"unicode/1f6f5",motorcycle:"unicode/1f3cd",motorized_wheelchair:"unicode/1f9bc",motorway:"unicode/1f6e3",mount_fuji:"unicode/1f5fb",mountain:"unicode/26f0",mountain_bicyclist:"unicode/1f6b5",mountain_biking_man:"unicode/1f6b5-2642",mountain_biking_woman:"unicode/1f6b5-2640",mountain_cableway:"unicode/1f6a0",mountain_railway:"unicode/1f69e",mountain_snow:"unicode/1f3d4",mouse:"unicode/1f42d",mouse2:"unicode/1f401",movie_camera:"unicode/1f3a5",moyai:"unicode/1f5ff",mozambique:"unicode/1f1f2-1f1ff",mrs_claus:"unicode/1f936",muscle:"unicode/1f4aa",mushroom:"unicode/1f344",musical_keyboard:"unicode/1f3b9",musical_note:"unicode/1f3b5",musical_score:"unicode/1f3bc",mute:"unicode/1f507",myanmar:"unicode/1f1f2-1f1f2",nail_care:"unicode/1f485",name_badge:"unicode/1f4db",namibia:"unicode/1f1f3-1f1e6",national_park:"unicode/1f3de",nauru:"unicode/1f1f3-1f1f7",nauseated_face:"unicode/1f922",nazar_amulet:"unicode/1f9ff",neckbeard:"neckbeard",necktie:"unicode/1f454",negative_squared_cross_mark:"unicode/274e",nepal:"unicode/1f1f3-1f1f5",nerd_face:"unicode/1f913",netherlands:"unicode/1f1f3-1f1f1",neutral_face:"unicode/1f610",new:"unicode/1f195",new_caledonia:"unicode/1f1f3-1f1e8",new_moon:"unicode/1f311",new_moon_with_face:"unicode/1f31a",new_zealand:"unicode/1f1f3-1f1ff",newspaper:"unicode/1f4f0",newspaper_roll:"unicode/1f5de",next_track_button:"unicode/23ed",ng:"unicode/1f196",ng_man:"unicode/1f645-2642",ng_woman:"unicode/1f645-2640",nicaragua:"unicode/1f1f3-1f1ee",niger:"unicode/1f1f3-1f1ea",nigeria:"unicode/1f1f3-1f1ec",night_with_stars:"unicode/1f303",nine:"unicode/0039-20e3",niue:"unicode/1f1f3-1f1fa",no_bell:"unicode/1f515",no_bicycles:"unicode/1f6b3",no_entry:"unicode/26d4",no_entry_sign:"unicode/1f6ab",no_good:"unicode/1f645",no_good_man:"unicode/1f645-2642",no_good_woman:"unicode/1f645-2640",no_mobile_phones:"unicode/1f4f5",no_mouth:"unicode/1f636",no_pedestrians:"unicode/1f6b7",no_smoking:"unicode/1f6ad","non-potable_water":"unicode/1f6b1",norfolk_island:"unicode/1f1f3-1f1eb",north_korea:"unicode/1f1f0-1f1f5",northern_mariana_islands:"unicode/1f1f2-1f1f5",norway:"unicode/1f1f3-1f1f4",nose:"unicode/1f443",notebook:"unicode/1f4d3",notebook_with_decorative_cover:"unicode/1f4d4",notes:"unicode/1f3b6",nut_and_bolt:"unicode/1f529",o:"unicode/2b55",o2:"unicode/1f17e",ocean:"unicode/1f30a",octocat:"octocat",octopus:"unicode/1f419",oden:"unicode/1f362",office:"unicode/1f3e2",office_worker:"unicode/1f9d1-1f4bc",oil_drum:"unicode/1f6e2",ok:"unicode/1f197",ok_hand:"unicode/1f44c",ok_man:"unicode/1f646-2642",ok_person:"unicode/1f646",ok_woman:"unicode/1f646-2640",old_key:"unicode/1f5dd",older_adult:"unicode/1f9d3",older_man:"unicode/1f474",older_woman:"unicode/1f475",om:"unicode/1f549",oman:"unicode/1f1f4-1f1f2",on:"unicode/1f51b",oncoming_automobile:"unicode/1f698",oncoming_bus:"unicode/1f68d",oncoming_police_car:"unicode/1f694",oncoming_taxi:"unicode/1f696",one:"unicode/0031-20e3",one_piece_swimsuit:"unicode/1fa71",onion:"unicode/1f9c5",open_book:"unicode/1f4d6",open_file_folder:"unicode/1f4c2",open_hands:"unicode/1f450",open_mouth:"unicode/1f62e",open_umbrella:"unicode/2602",ophiuchus:"unicode/26ce",orange:"unicode/1f34a",orange_book:"unicode/1f4d9",orange_circle:"unicode/1f7e0",orange_heart:"unicode/1f9e1",orange_square:"unicode/1f7e7",orangutan:"unicode/1f9a7",orthodox_cross:"unicode/2626",otter:"unicode/1f9a6",outbox_tray:"unicode/1f4e4",owl:"unicode/1f989",ox:"unicode/1f402",oyster:"unicode/1f9aa",package:"unicode/1f4e6",page_facing_up:"unicode/1f4c4",page_with_curl:"unicode/1f4c3",pager:"unicode/1f4df",paintbrush:"unicode/1f58c",pakistan:"unicode/1f1f5-1f1f0",palau:"unicode/1f1f5-1f1fc",palestinian_territories:"unicode/1f1f5-1f1f8",palm_tree:"unicode/1f334",palms_up_together:"unicode/1f932",panama:"unicode/1f1f5-1f1e6",pancakes:"unicode/1f95e",panda_face:"unicode/1f43c",paperclip:"unicode/1f4ce",paperclips:"unicode/1f587",papua_new_guinea:"unicode/1f1f5-1f1ec",parachute:"unicode/1fa82",paraguay:"unicode/1f1f5-1f1fe",parasol_on_ground:"unicode/26f1",parking:"unicode/1f17f",parrot:"unicode/1f99c",part_alternation_mark:"unicode/303d",partly_sunny:"unicode/26c5",partying_face:"unicode/1f973",passenger_ship:"unicode/1f6f3",passport_control:"unicode/1f6c2",pause_button:"unicode/23f8",paw_prints:"unicode/1f43e",peace_symbol:"unicode/262e",peach:"unicode/1f351",peacock:"unicode/1f99a",peanuts:"unicode/1f95c",pear:"unicode/1f350",pen:"unicode/1f58a",pencil:"unicode/1f4dd",pencil2:"unicode/270f",penguin:"unicode/1f427",pensive:"unicode/1f614",people_holding_hands:"unicode/1f9d1-1f91d-1f9d1",performing_arts:"unicode/1f3ad",persevere:"unicode/1f623",person_bald:"unicode/1f9d1-1f9b2",person_curly_hair:"unicode/1f9d1-1f9b1",person_fencing:"unicode/1f93a",person_in_manual_wheelchair:"unicode/1f9d1-1f9bd",person_in_motorized_wheelchair:"unicode/1f9d1-1f9bc",person_red_hair:"unicode/1f9d1-1f9b0",person_white_hair:"unicode/1f9d1-1f9b3",person_with_probing_cane:"unicode/1f9d1-1f9af",person_with_turban:"unicode/1f473",peru:"unicode/1f1f5-1f1ea",petri_dish:"unicode/1f9eb",philippines:"unicode/1f1f5-1f1ed",phone:"unicode/260e",pick:"unicode/26cf",pie:"unicode/1f967",pig:"unicode/1f437",pig2:"unicode/1f416",pig_nose:"unicode/1f43d",pill:"unicode/1f48a",pilot:"unicode/1f9d1-2708",pinching_hand:"unicode/1f90f",pineapple:"unicode/1f34d",ping_pong:"unicode/1f3d3",pirate_flag:"unicode/1f3f4-2620",pisces:"unicode/2653",pitcairn_islands:"unicode/1f1f5-1f1f3",pizza:"unicode/1f355",place_of_worship:"unicode/1f6d0",plate_with_cutlery:"unicode/1f37d",play_or_pause_button:"unicode/23ef",pleading_face:"unicode/1f97a",point_down:"unicode/1f447",point_left:"unicode/1f448",point_right:"unicode/1f449",point_up:"unicode/261d",point_up_2:"unicode/1f446",poland:"unicode/1f1f5-1f1f1",police_car:"unicode/1f693",police_officer:"unicode/1f46e",policeman:"unicode/1f46e-2642",policewoman:"unicode/1f46e-2640",poodle:"unicode/1f429",poop:"unicode/1f4a9",popcorn:"unicode/1f37f",portugal:"unicode/1f1f5-1f1f9",post_office:"unicode/1f3e3",postal_horn:"unicode/1f4ef",postbox:"unicode/1f4ee",potable_water:"unicode/1f6b0",potato:"unicode/1f954",pouch:"unicode/1f45d",poultry_leg:"unicode/1f357",pound:"unicode/1f4b7",pout:"unicode/1f621",pouting_cat:"unicode/1f63e",pouting_face:"unicode/1f64e",pouting_man:"unicode/1f64e-2642",pouting_woman:"unicode/1f64e-2640",pray:"unicode/1f64f",prayer_beads:"unicode/1f4ff",pregnant_woman:"unicode/1f930",pretzel:"unicode/1f968",previous_track_button:"unicode/23ee",prince:"unicode/1f934",princess:"unicode/1f478",printer:"unicode/1f5a8",probing_cane:"unicode/1f9af",puerto_rico:"unicode/1f1f5-1f1f7",punch:"unicode/1f44a",purple_circle:"unicode/1f7e3",purple_heart:"unicode/1f49c",purple_square:"unicode/1f7ea",purse:"unicode/1f45b",pushpin:"unicode/1f4cc",put_litter_in_its_place:"unicode/1f6ae",qatar:"unicode/1f1f6-1f1e6",question:"unicode/2753",rabbit:"unicode/1f430",rabbit2:"unicode/1f407",raccoon:"unicode/1f99d",racehorse:"unicode/1f40e",racing_car:"unicode/1f3ce",radio:"unicode/1f4fb",radio_button:"unicode/1f518",radioactive:"unicode/2622",rage:"unicode/1f621",rage1:"rage1",rage2:"rage2",rage3:"rage3",rage4:"rage4",railway_car:"unicode/1f683",railway_track:"unicode/1f6e4",rainbow:"unicode/1f308",rainbow_flag:"unicode/1f3f3-1f308",raised_back_of_hand:"unicode/1f91a",raised_eyebrow:"unicode/1f928",raised_hand:"unicode/270b",raised_hand_with_fingers_splayed:"unicode/1f590",raised_hands:"unicode/1f64c",raising_hand:"unicode/1f64b",raising_hand_man:"unicode/1f64b-2642",raising_hand_woman:"unicode/1f64b-2640",ram:"unicode/1f40f",ramen:"unicode/1f35c",rat:"unicode/1f400",razor:"unicode/1fa92",receipt:"unicode/1f9fe",record_button:"unicode/23fa",recycle:"unicode/267b",red_car:"unicode/1f697",red_circle:"unicode/1f534",red_envelope:"unicode/1f9e7",red_haired_man:"unicode/1f468-1f9b0",red_haired_woman:"unicode/1f469-1f9b0",red_square:"unicode/1f7e5",registered:"unicode/00ae",relaxed:"unicode/263a",relieved:"unicode/1f60c",reminder_ribbon:"unicode/1f397",repeat:"unicode/1f501",repeat_one:"unicode/1f502",rescue_worker_helmet:"unicode/26d1",restroom:"unicode/1f6bb",reunion:"unicode/1f1f7-1f1ea",revolving_hearts:"unicode/1f49e",rewind:"unicode/23ea",rhinoceros:"unicode/1f98f",ribbon:"unicode/1f380",rice:"unicode/1f35a",rice_ball:"unicode/1f359",rice_cracker:"unicode/1f358",rice_scene:"unicode/1f391",right_anger_bubble:"unicode/1f5ef",ring:"unicode/1f48d",ringed_planet:"unicode/1fa90",robot:"unicode/1f916",rocket:"unicode/1f680",rofl:"unicode/1f923",roll_eyes:"unicode/1f644",roll_of_paper:"unicode/1f9fb",roller_coaster:"unicode/1f3a2",romania:"unicode/1f1f7-1f1f4",rooster:"unicode/1f413",rose:"unicode/1f339",rosette:"unicode/1f3f5",rotating_light:"unicode/1f6a8",round_pushpin:"unicode/1f4cd",rowboat:"unicode/1f6a3",rowing_man:"unicode/1f6a3-2642",rowing_woman:"unicode/1f6a3-2640",ru:"unicode/1f1f7-1f1fa",rugby_football:"unicode/1f3c9",runner:"unicode/1f3c3",running:"unicode/1f3c3",running_man:"unicode/1f3c3-2642",running_shirt_with_sash:"unicode/1f3bd",running_woman:"unicode/1f3c3-2640",rwanda:"unicode/1f1f7-1f1fc",sa:"unicode/1f202",safety_pin:"unicode/1f9f7",safety_vest:"unicode/1f9ba",sagittarius:"unicode/2650",sailboat:"unicode/26f5",sake:"unicode/1f376",salt:"unicode/1f9c2",samoa:"unicode/1f1fc-1f1f8",san_marino:"unicode/1f1f8-1f1f2",sandal:"unicode/1f461",sandwich:"unicode/1f96a",santa:"unicode/1f385",sao_tome_principe:"unicode/1f1f8-1f1f9",sari:"unicode/1f97b",sassy_man:"unicode/1f481-2642",sassy_woman:"unicode/1f481-2640",satellite:"unicode/1f4e1",satisfied:"unicode/1f606",saudi_arabia:"unicode/1f1f8-1f1e6",sauna_man:"unicode/1f9d6-2642",sauna_person:"unicode/1f9d6",sauna_woman:"unicode/1f9d6-2640",sauropod:"unicode/1f995",saxophone:"unicode/1f3b7",scarf:"unicode/1f9e3",school:"unicode/1f3eb",school_satchel:"unicode/1f392",scientist:"unicode/1f9d1-1f52c",scissors:"unicode/2702",scorpion:"unicode/1f982",scorpius:"unicode/264f",scotland:"unicode/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f",scream:"unicode/1f631",scream_cat:"unicode/1f640",scroll:"unicode/1f4dc",seat:"unicode/1f4ba",secret:"unicode/3299",see_no_evil:"unicode/1f648",seedling:"unicode/1f331",selfie:"unicode/1f933",senegal:"unicode/1f1f8-1f1f3",serbia:"unicode/1f1f7-1f1f8",service_dog:"unicode/1f415-1f9ba",seven:"unicode/0037-20e3",seychelles:"unicode/1f1f8-1f1e8",shallow_pan_of_food:"unicode/1f958",shamrock:"unicode/2618",shark:"unicode/1f988",shaved_ice:"unicode/1f367",sheep:"unicode/1f411",shell:"unicode/1f41a",shield:"unicode/1f6e1",shinto_shrine:"unicode/26e9",ship:"unicode/1f6a2",shipit:"shipit",shirt:"unicode/1f455",shit:"unicode/1f4a9",shoe:"unicode/1f45e",shopping:"unicode/1f6cd",shopping_cart:"unicode/1f6d2",shorts:"unicode/1fa73",shower:"unicode/1f6bf",shrimp:"unicode/1f990",shrug:"unicode/1f937",shushing_face:"unicode/1f92b",sierra_leone:"unicode/1f1f8-1f1f1",signal_strength:"unicode/1f4f6",singapore:"unicode/1f1f8-1f1ec",singer:"unicode/1f9d1-1f3a4",sint_maarten:"unicode/1f1f8-1f1fd",six:"unicode/0036-20e3",six_pointed_star:"unicode/1f52f",skateboard:"unicode/1f6f9",ski:"unicode/1f3bf",skier:"unicode/26f7",skull:"unicode/1f480",skull_and_crossbones:"unicode/2620",skunk:"unicode/1f9a8",sled:"unicode/1f6f7",sleeping:"unicode/1f634",sleeping_bed:"unicode/1f6cc",sleepy:"unicode/1f62a",slightly_frowning_face:"unicode/1f641",slightly_smiling_face:"unicode/1f642",slot_machine:"unicode/1f3b0",sloth:"unicode/1f9a5",slovakia:"unicode/1f1f8-1f1f0",slovenia:"unicode/1f1f8-1f1ee",small_airplane:"unicode/1f6e9",small_blue_diamond:"unicode/1f539",small_orange_diamond:"unicode/1f538",small_red_triangle:"unicode/1f53a",small_red_triangle_down:"unicode/1f53b",smile:"unicode/1f604",smile_cat:"unicode/1f638",smiley:"unicode/1f603",smiley_cat:"unicode/1f63a",smiling_face_with_three_hearts:"unicode/1f970",smiling_imp:"unicode/1f608",smirk:"unicode/1f60f",smirk_cat:"unicode/1f63c",smoking:"unicode/1f6ac",snail:"unicode/1f40c",snake:"unicode/1f40d",sneezing_face:"unicode/1f927",snowboarder:"unicode/1f3c2",snowflake:"unicode/2744",snowman:"unicode/26c4",snowman_with_snow:"unicode/2603",soap:"unicode/1f9fc",sob:"unicode/1f62d",soccer:"unicode/26bd",socks:"unicode/1f9e6",softball:"unicode/1f94e",solomon_islands:"unicode/1f1f8-1f1e7",somalia:"unicode/1f1f8-1f1f4",soon:"unicode/1f51c",sos:"unicode/1f198",sound:"unicode/1f509",south_africa:"unicode/1f1ff-1f1e6",south_georgia_south_sandwich_islands:"unicode/1f1ec-1f1f8",south_sudan:"unicode/1f1f8-1f1f8",space_invader:"unicode/1f47e",spades:"unicode/2660",spaghetti:"unicode/1f35d",sparkle:"unicode/2747",sparkler:"unicode/1f387",sparkles:"unicode/2728",sparkling_heart:"unicode/1f496",speak_no_evil:"unicode/1f64a",speaker:"unicode/1f508",speaking_head:"unicode/1f5e3",speech_balloon:"unicode/1f4ac",speedboat:"unicode/1f6a4",spider:"unicode/1f577",spider_web:"unicode/1f578",spiral_calendar:"unicode/1f5d3",spiral_notepad:"unicode/1f5d2",sponge:"unicode/1f9fd",spoon:"unicode/1f944",squid:"unicode/1f991",sri_lanka:"unicode/1f1f1-1f1f0",st_barthelemy:"unicode/1f1e7-1f1f1",st_helena:"unicode/1f1f8-1f1ed",st_kitts_nevis:"unicode/1f1f0-1f1f3",st_lucia:"unicode/1f1f1-1f1e8",st_martin:"unicode/1f1f2-1f1eb",st_pierre_miquelon:"unicode/1f1f5-1f1f2",st_vincent_grenadines:"unicode/1f1fb-1f1e8",stadium:"unicode/1f3df",standing_man:"unicode/1f9cd-2642",standing_person:"unicode/1f9cd",standing_woman:"unicode/1f9cd-2640",star:"unicode/2b50",star2:"unicode/1f31f",star_and_crescent:"unicode/262a",star_of_david:"unicode/2721",star_struck:"unicode/1f929",stars:"unicode/1f320",station:"unicode/1f689",statue_of_liberty:"unicode/1f5fd",steam_locomotive:"unicode/1f682",stethoscope:"unicode/1fa7a",stew:"unicode/1f372",stop_button:"unicode/23f9",stop_sign:"unicode/1f6d1",stopwatch:"unicode/23f1",straight_ruler:"unicode/1f4cf",strawberry:"unicode/1f353",stuck_out_tongue:"unicode/1f61b",stuck_out_tongue_closed_eyes:"unicode/1f61d",stuck_out_tongue_winking_eye:"unicode/1f61c",student:"unicode/1f9d1-1f393",studio_microphone:"unicode/1f399",stuffed_flatbread:"unicode/1f959",sudan:"unicode/1f1f8-1f1e9",sun_behind_large_cloud:"unicode/1f325",sun_behind_rain_cloud:"unicode/1f326",sun_behind_small_cloud:"unicode/1f324",sun_with_face:"unicode/1f31e",sunflower:"unicode/1f33b",sunglasses:"unicode/1f60e",sunny:"unicode/2600",sunrise:"unicode/1f305",sunrise_over_mountains:"unicode/1f304",superhero:"unicode/1f9b8",superhero_man:"unicode/1f9b8-2642",superhero_woman:"unicode/1f9b8-2640",supervillain:"unicode/1f9b9",supervillain_man:"unicode/1f9b9-2642",supervillain_woman:"unicode/1f9b9-2640",surfer:"unicode/1f3c4",surfing_man:"unicode/1f3c4-2642",surfing_woman:"unicode/1f3c4-2640",suriname:"unicode/1f1f8-1f1f7",sushi:"unicode/1f363",suspect:"suspect",suspension_railway:"unicode/1f69f",svalbard_jan_mayen:"unicode/1f1f8-1f1ef",swan:"unicode/1f9a2",swaziland:"unicode/1f1f8-1f1ff",sweat:"unicode/1f613",sweat_drops:"unicode/1f4a6",sweat_smile:"unicode/1f605",sweden:"unicode/1f1f8-1f1ea",sweet_potato:"unicode/1f360",swim_brief:"unicode/1fa72",swimmer:"unicode/1f3ca",swimming_man:"unicode/1f3ca-2642",swimming_woman:"unicode/1f3ca-2640",switzerland:"unicode/1f1e8-1f1ed",symbols:"unicode/1f523",synagogue:"unicode/1f54d",syria:"unicode/1f1f8-1f1fe",syringe:"unicode/1f489","t-rex":"unicode/1f996",taco:"unicode/1f32e",tada:"unicode/1f389",taiwan:"unicode/1f1f9-1f1fc",tajikistan:"unicode/1f1f9-1f1ef",takeout_box:"unicode/1f961",tanabata_tree:"unicode/1f38b",tangerine:"unicode/1f34a",tanzania:"unicode/1f1f9-1f1ff",taurus:"unicode/2649",taxi:"unicode/1f695",tea:"unicode/1f375",teacher:"unicode/1f9d1-1f3eb",technologist:"unicode/1f9d1-1f4bb",teddy_bear:"unicode/1f9f8",telephone:"unicode/260e",telephone_receiver:"unicode/1f4de",telescope:"unicode/1f52d",tennis:"unicode/1f3be",tent:"unicode/26fa",test_tube:"unicode/1f9ea",thailand:"unicode/1f1f9-1f1ed",thermometer:"unicode/1f321",thinking:"unicode/1f914",thought_balloon:"unicode/1f4ad",thread:"unicode/1f9f5",three:"unicode/0033-20e3",thumbsdown:"unicode/1f44e",thumbsup:"unicode/1f44d",ticket:"unicode/1f3ab",tickets:"unicode/1f39f",tiger:"unicode/1f42f",tiger2:"unicode/1f405",timer_clock:"unicode/23f2",timor_leste:"unicode/1f1f9-1f1f1",tipping_hand_man:"unicode/1f481-2642",tipping_hand_person:"unicode/1f481",tipping_hand_woman:"unicode/1f481-2640",tired_face:"unicode/1f62b",tm:"unicode/2122",togo:"unicode/1f1f9-1f1ec",toilet:"unicode/1f6bd",tokelau:"unicode/1f1f9-1f1f0",tokyo_tower:"unicode/1f5fc",tomato:"unicode/1f345",tonga:"unicode/1f1f9-1f1f4",tongue:"unicode/1f445",toolbox:"unicode/1f9f0",tooth:"unicode/1f9b7",top:"unicode/1f51d",tophat:"unicode/1f3a9",tornado:"unicode/1f32a",tr:"unicode/1f1f9-1f1f7",trackball:"unicode/1f5b2",tractor:"unicode/1f69c",traffic_light:"unicode/1f6a5",train:"unicode/1f68b",train2:"unicode/1f686",tram:"unicode/1f68a",triangular_flag_on_post:"unicode/1f6a9",triangular_ruler:"unicode/1f4d0",trident:"unicode/1f531",trinidad_tobago:"unicode/1f1f9-1f1f9",tristan_da_cunha:"unicode/1f1f9-1f1e6",triumph:"unicode/1f624",trolleybus:"unicode/1f68e",trollface:"trollface",trophy:"unicode/1f3c6",tropical_drink:"unicode/1f379",tropical_fish:"unicode/1f420",truck:"unicode/1f69a",trumpet:"unicode/1f3ba",tshirt:"unicode/1f455",tulip:"unicode/1f337",tumbler_glass:"unicode/1f943",tunisia:"unicode/1f1f9-1f1f3",turkey:"unicode/1f983",turkmenistan:"unicode/1f1f9-1f1f2",turks_caicos_islands:"unicode/1f1f9-1f1e8",turtle:"unicode/1f422",tuvalu:"unicode/1f1f9-1f1fb",tv:"unicode/1f4fa",twisted_rightwards_arrows:"unicode/1f500",two:"unicode/0032-20e3",two_hearts:"unicode/1f495",two_men_holding_hands:"unicode/1f46c",two_women_holding_hands:"unicode/1f46d",u5272:"unicode/1f239",u5408:"unicode/1f234",u55b6:"unicode/1f23a",u6307:"unicode/1f22f",u6708:"unicode/1f237",u6709:"unicode/1f236",u6e80:"unicode/1f235",u7121:"unicode/1f21a",u7533:"unicode/1f238",u7981:"unicode/1f232",u7a7a:"unicode/1f233",uganda:"unicode/1f1fa-1f1ec",uk:"unicode/1f1ec-1f1e7",ukraine:"unicode/1f1fa-1f1e6",umbrella:"unicode/2614",unamused:"unicode/1f612",underage:"unicode/1f51e",unicorn:"unicode/1f984",united_arab_emirates:"unicode/1f1e6-1f1ea",united_nations:"unicode/1f1fa-1f1f3",unlock:"unicode/1f513",up:"unicode/1f199",upside_down_face:"unicode/1f643",uruguay:"unicode/1f1fa-1f1fe",us:"unicode/1f1fa-1f1f8",us_outlying_islands:"unicode/1f1fa-1f1f2",us_virgin_islands:"unicode/1f1fb-1f1ee",uzbekistan:"unicode/1f1fa-1f1ff",v:"unicode/270c",vampire:"unicode/1f9db",vampire_man:"unicode/1f9db-2642",vampire_woman:"unicode/1f9db-2640",vanuatu:"unicode/1f1fb-1f1fa",vatican_city:"unicode/1f1fb-1f1e6",venezuela:"unicode/1f1fb-1f1ea",vertical_traffic_light:"unicode/1f6a6",vhs:"unicode/1f4fc",vibration_mode:"unicode/1f4f3",video_camera:"unicode/1f4f9",video_game:"unicode/1f3ae",vietnam:"unicode/1f1fb-1f1f3",violin:"unicode/1f3bb",virgo:"unicode/264d",volcano:"unicode/1f30b",volleyball:"unicode/1f3d0",vomiting_face:"unicode/1f92e",vs:"unicode/1f19a",vulcan_salute:"unicode/1f596",waffle:"unicode/1f9c7",wales:"unicode/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f",walking:"unicode/1f6b6",walking_man:"unicode/1f6b6-2642",walking_woman:"unicode/1f6b6-2640",wallis_futuna:"unicode/1f1fc-1f1eb",waning_crescent_moon:"unicode/1f318",waning_gibbous_moon:"unicode/1f316",warning:"unicode/26a0",wastebasket:"unicode/1f5d1",watch:"unicode/231a",water_buffalo:"unicode/1f403",water_polo:"unicode/1f93d",watermelon:"unicode/1f349",wave:"unicode/1f44b",wavy_dash:"unicode/3030",waxing_crescent_moon:"unicode/1f312",waxing_gibbous_moon:"unicode/1f314",wc:"unicode/1f6be",weary:"unicode/1f629",wedding:"unicode/1f492",weight_lifting:"unicode/1f3cb",weight_lifting_man:"unicode/1f3cb-2642",weight_lifting_woman:"unicode/1f3cb-2640",western_sahara:"unicode/1f1ea-1f1ed",whale:"unicode/1f433",whale2:"unicode/1f40b",wheel_of_dharma:"unicode/2638",wheelchair:"unicode/267f",white_check_mark:"unicode/2705",white_circle:"unicode/26aa",white_flag:"unicode/1f3f3",white_flower:"unicode/1f4ae",white_haired_man:"unicode/1f468-1f9b3",white_haired_woman:"unicode/1f469-1f9b3",white_heart:"unicode/1f90d",white_large_square:"unicode/2b1c",white_medium_small_square:"unicode/25fd",white_medium_square:"unicode/25fb",white_small_square:"unicode/25ab",white_square_button:"unicode/1f533",wilted_flower:"unicode/1f940",wind_chime:"unicode/1f390",wind_face:"unicode/1f32c",wine_glass:"unicode/1f377",wink:"unicode/1f609",wolf:"unicode/1f43a",woman:"unicode/1f469",woman_artist:"unicode/1f469-1f3a8",woman_astronaut:"unicode/1f469-1f680",woman_cartwheeling:"unicode/1f938-2640",woman_cook:"unicode/1f469-1f373",woman_dancing:"unicode/1f483",woman_facepalming:"unicode/1f926-2640",woman_factory_worker:"unicode/1f469-1f3ed",woman_farmer:"unicode/1f469-1f33e",woman_firefighter:"unicode/1f469-1f692",woman_health_worker:"unicode/1f469-2695",woman_in_manual_wheelchair:"unicode/1f469-1f9bd",woman_in_motorized_wheelchair:"unicode/1f469-1f9bc",woman_judge:"unicode/1f469-2696",woman_juggling:"unicode/1f939-2640",woman_mechanic:"unicode/1f469-1f527",woman_office_worker:"unicode/1f469-1f4bc",woman_pilot:"unicode/1f469-2708",woman_playing_handball:"unicode/1f93e-2640",woman_playing_water_polo:"unicode/1f93d-2640",woman_scientist:"unicode/1f469-1f52c",woman_shrugging:"unicode/1f937-2640",woman_singer:"unicode/1f469-1f3a4",woman_student:"unicode/1f469-1f393",woman_teacher:"unicode/1f469-1f3eb",woman_technologist:"unicode/1f469-1f4bb",woman_with_headscarf:"unicode/1f9d5",woman_with_probing_cane:"unicode/1f469-1f9af",woman_with_turban:"unicode/1f473-2640",womans_clothes:"unicode/1f45a",womans_hat:"unicode/1f452",women_wrestling:"unicode/1f93c-2640",womens:"unicode/1f6ba",woozy_face:"unicode/1f974",world_map:"unicode/1f5fa",worried:"unicode/1f61f",wrench:"unicode/1f527",wrestling:"unicode/1f93c",writing_hand:"unicode/270d",x:"unicode/274c",yarn:"unicode/1f9f6",yawning_face:"unicode/1f971",yellow_circle:"unicode/1f7e1",yellow_heart:"unicode/1f49b",yellow_square:"unicode/1f7e8",yemen:"unicode/1f1fe-1f1ea",yen:"unicode/1f4b4",yin_yang:"unicode/262f",yo_yo:"unicode/1fa80",yum:"unicode/1f60b",zambia:"unicode/1f1ff-1f1f2",zany_face:"unicode/1f92a",zap:"unicode/26a1",zebra:"unicode/1f993",zero:"unicode/0030-20e3",zimbabwe:"unicode/1f1ff-1f1fc",zipper_mouth_face:"unicode/1f910",zombie:"unicode/1f9df",zombie_man:"unicode/1f9df-2642",zombie_woman:"unicode/1f9df-2640",zzz:"unicode/1f4a4"};window.emojify=function(e,n){return!1===o.hasOwnProperty(n)?e:''+n+''}}(); diff --git a/docs/scripts/prism-bash.min.js b/docs/scripts/prism-bash.min.js deleted file mode 100644 index 37c3d42..0000000 --- a/docs/scripts/prism-bash.min.js +++ /dev/null @@ -1,2 +0,0 @@ - -!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],s=a.variable[1].inside,i=0;i]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},Prism.languages.python["string-interpolation"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python; \ No newline at end of file diff --git a/docs/scripts/search.min.js b/docs/scripts/search.min.js deleted file mode 100644 index 5190d84..0000000 --- a/docs/scripts/search.min.js +++ /dev/null @@ -1,2 +0,0 @@ - -!function(){"use strict";function e(e){var n={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(e).replace(/[&<>"'\/]/g,function(e){return n[e]})}function n(e){var n=[];return h.dom.findAll("a:not([data-nosearch])").map(function(t){var o=t.href,i=t.getAttribute("href"),r=e.parse(o).path;r&&-1===n.indexOf(r)&&!Docsify.util.isAbsolutePath(i)&&n.push(r)}),n}function t(e){localStorage.setItem("docsify.search.expires",Date.now()+e),localStorage.setItem("docsify.search.index",JSON.stringify(g))}function o(e,n,t,o){void 0===n&&(n="");var i,r=window.marked.lexer(n),a=window.Docsify.slugify,s={};return r.forEach(function(n){if("heading"===n.type&&n.depth<=o)i=t.toURL(e,{id:a(n.text)}),s[i]={slug:i,title:n.text,body:""};else{if(!i)return;s[i]?s[i].body?s[i].body+="\n"+(n.text||""):s[i].body=n.text:s[i]={slug:i,title:"",body:""}}}),a.clear(),s}function i(n){var t=[],o=[];Object.keys(g).forEach(function(e){o=o.concat(Object.keys(g[e]).map(function(n){return g[e][n]}))}),n=n.trim();var i=n.split(/[\s\-\,\\\/]+/);1!==i.length&&(i=[].concat(n,i));for(var r=0;rl.length&&(d=l.length);var p="..."+e(l).substring(f,d).replace(o,''+n+"")+"...";s+=p}}),a)){var d={title:e(c),content:s,url:f};t.push(d)}}(r);return t}function r(e,i){h=Docsify;var r="auto"===e.paths,a=localStorage.getItem("docsify.search.expires")
    ',o=Docsify.dom.create("div",t),i=Docsify.dom.find("aside");Docsify.dom.toggleClass(o,"search"),Docsify.dom.before(i,o)}function c(e){var n=Docsify.dom.find("div.search"),t=Docsify.dom.find(n,".results-panel");if(!e)return t.classList.remove("show"),void(t.innerHTML="");var o=i(e),r="";o.forEach(function(e){r+='
    \n \n

    '+e.title+"

    \n

    "+e.content+"

    \n
    \n
    "}),t.classList.add("show"),t.innerHTML=r||'

    '+y+"

    "}function l(){var e,n=Docsify.dom.find("div.search"),t=Docsify.dom.find(n,"input");Docsify.dom.on(n,"click",function(e){return"A"!==e.target.tagName&&e.stopPropagation()}),Docsify.dom.on(t,"input",function(n){clearTimeout(e),e=setTimeout(function(e){return c(n.target.value.trim())},100)})}function f(e,n){var t=Docsify.dom.getNode('.search input[type="search"]');if(t)if("string"==typeof e)t.placeholder=e;else{var o=Object.keys(e).filter(function(e){return n.indexOf(e)>-1})[0];t.placeholder=e[o]}}function d(e,n){if("string"==typeof e)y=e;else{var t=Object.keys(e).filter(function(e){return n.indexOf(e)>-1})[0];y=e[t]}}function p(e,n){var t=n.router.parse().query.s;a(),s(e,t),l(),t&&setTimeout(function(e){return c(t)},500)}function u(e,n){f(e.placeholder,n.route.path),d(e.noData,n.route.path)}var h,g={},y="",m={placeholder:"Type to search",noData:"No Results!",paths:"auto",depth:2,maxAge:864e5},v=function(e,n){var t=Docsify.util,o=n.config.search||m;Array.isArray(o)?m.paths=o:"object"==typeof o&&(m.paths=Array.isArray(o.paths)?o.paths:"auto",m.maxAge=t.isPrimitive(o.maxAge)?o.maxAge:m.maxAge,m.placeholder=o.placeholder||m.placeholder,m.noData=o.noData||m.noData,m.depth=o.depth||m.depth);var i="auto"===m.paths;e.mounted(function(e){p(m,n),!i&&r(m,n)}),e.doneEach(function(e){u(m,n),i&&r(m,n)})};$docsify.plugins=[].concat(v,$docsify.plugins)}(); diff --git a/docs/scripts/theme-simple-dark.css b/docs/scripts/theme-simple-dark.css deleted file mode 100644 index f0b5fc0..0000000 --- a/docs/scripts/theme-simple-dark.css +++ /dev/null @@ -1,6 +0,0 @@ -.github-corner{position:absolute;z-index:40;top:0;right:0;border-bottom:0;text-decoration:none}.github-corner svg{height:70px;width:70px;fill:var(--theme-color);color:var(--base-background-color)}.github-corner:hover .octo-arm{-webkit-animation:octocat-wave 560ms ease-in-out;animation:octocat-wave 560ms ease-in-out}@-webkit-keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}.progress{position:fixed;z-index:2147483647;top:0;left:0;right:0;height:3px;width:0;background-color:var(--theme-color);transition:width var(--duration-fast),opacity calc(var(--duration-fast) * 2)}body.ready-transition:after,body.ready-transition>*:not(.progress){opacity:0;transition:opacity var(--spinner-transition-duration)}body.ready-transition:after{content:'';position:absolute;z-index:1000;top:calc(50% - (var(--spinner-size) / 2));left:calc(50% - (var(--spinner-size) / 2));height:var(--spinner-size);width:var(--spinner-size);border:var(--spinner-track-width, 0) solid var(--spinner-track-color);border-left-color:var(--theme-color);border-left-color:var(--theme-color);border-radius:50%;-webkit-animation:spinner var(--duration-slow) infinite linear;animation:spinner var(--duration-slow) infinite linear}body.ready-transition.ready-spinner:after{opacity:1}body.ready-transition.ready-fix:after{opacity:0}body.ready-transition.ready-fix>*:not(.progress){opacity:1;transition-delay:var(--spinner-transition-duration)}@-webkit-keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}*,*:before,*:after{box-sizing:inherit;font-size:inherit;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-webkit-touch-callout:none}:root{box-sizing:border-box;background-color:var(--base-background-color);font-size:var(--base-font-size);font-weight:var(--base-font-weight);line-height:var(--base-line-height);letter-spacing:var(--base-letter-spacing);color:var(--base-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smoothing:antialiased}html,button,input,optgroup,select,textarea{font-family:var(--base-font-family)}button,input,optgroup,select,textarea{font-size:100%;margin:0}a{text-decoration:none;-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}body{margin:0}hr{height:0;margin:2em 0;border:none;border-bottom:var(--hr-border, 0)}img{max-width:100%;border:0}main{display:block}main.hidden{display:none}mark{background:var(--mark-background);color:var(--mark-color)}pre{font-family:var(--pre-font-family);font-size:var(--pre-font-size);font-weight:var(--pre-font-weight);line-height:var(--pre-line-height)}small{display:inline-block;font-size:var(--small-font-size)}strong{font-weight:var(--strong-font-weight);color:var(--strong-color, currentColor)}sub,sup{font-size:var(--subsup-font-size);line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}body:not([data-platform^="Mac"]) *{scrollbar-color:hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.3) hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.1);scrollbar-width:thin}body:not([data-platform^="Mac"]) * ::-webkit-scrollbar{width:5px;height:5px}body:not([data-platform^="Mac"]) * ::-webkit-scrollbar-thumb{background:hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.3)}body:not([data-platform^="Mac"]) * ::-webkit-scrollbar-track{background:hsla(var(--mono-hue), var(--mono-saturation), 50%, 0.1)}::-moz-selection{background:var(--selection-color)}::selection{background:var(--selection-color)}.emoji{height:var(--emoji-size);vertical-align:middle}.task-list-item{list-style:none}.task-list-item input{margin-right:0.5em;margin-left:0;vertical-align:0.075em}.markdown-section code[class*="lang-"],.markdown-section pre[data-lang]{font-family:var(--code-font-family);font-size:var(--code-font-size);font-weight:var(--code-font-weight);letter-spacing:normal;line-height:var(--code-block-line-height);-moz-tab-size:var(--code-tab-size);-o-tab-size:var(--code-tab-size);tab-size:var(--code-tab-size);text-align:left;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}.markdown-section pre[data-lang]{position:relative;overflow:hidden;margin:var(--code-block-margin);padding:0;border-radius:var(--code-block-border-radius)}.markdown-section pre[data-lang]::after{content:attr(data-lang);position:absolute;top:0.75em;right:0.75em;opacity:0.6;color:inherit;font-size:var(--font-size-s);line-height:1}.markdown-section pre[data-lang] code{display:block;overflow:auto;padding:var(--code-block-padding)}code[class*="lang-"],pre[data-lang]{color:var(--code-theme-text)}pre[data-lang]::-moz-selection,pre[data-lang] ::-moz-selection,code[class*="lang-"]::-moz-selection,code[class*="lang-"] ::-moz-selection{background:var(--code-theme-selection, var(--selection-color))}pre[data-lang]::-moz-selection, pre[data-lang] ::-moz-selection, code[class*="lang-"]::-moz-selection, code[class*="lang-"] ::-moz-selection{background:var(--code-theme-selection, var(--selection-color))}pre[data-lang]::selection,pre[data-lang] ::selection,code[class*="lang-"]::selection,code[class*="lang-"] ::selection{background:var(--code-theme-selection, var(--selection-color))}:not(pre)>code[class*="lang-"],pre[data-lang]{background:var(--code-theme-background)}.namespace{opacity:0.7}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--code-theme-comment)}.token.punctuation{color:var(--code-theme-punctuation)}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:var(--code-theme-tag)}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:var(--code-theme-selector)}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:var(--code-theme-operator)}.token.atrule,.token.attr-value,.token.keyword{color:var(--code-theme-keyword)}.token.function{color:var(--code-theme-function)}.token.regex,.token.important,.token.variable{color:var(--code-theme-variable)}.token.important,.token.bold{font-weight:bold}.token.italic{font-style:italic}.token.entity{cursor:help}.markdown-section{position:relative;max-width:var(--content-max-width);margin:0 auto;padding:2rem 45px}.app-nav:not(:empty) ~ main .markdown-section{padding-top:3.5rem}.markdown-section figure,.markdown-section p,.markdown-section ol,.markdown-section ul{margin:1em 0}.markdown-section ol,.markdown-section ul{padding-left:1.5rem}.markdown-section ol ol,.markdown-section ol ul,.markdown-section ul ol,.markdown-section ul ul{margin-top:0.15rem;margin-bottom:0.15rem}.markdown-section a{border-bottom:var(--link-border-bottom);color:var(--link-color);-webkit-text-decoration:var(--link-text-decoration);text-decoration:var(--link-text-decoration);-webkit-text-decoration-color:var(--link-text-decoration-color);text-decoration-color:var(--link-text-decoration-color)}.markdown-section a:hover{border-bottom:var(--link-border-bottom--hover, var(--link-border-bottom, 0));color:var(--link-color--hover, var(--link-color));-webkit-text-decoration:var(--link-text-decoration--hover, var(--link-text-decoration));text-decoration:var(--link-text-decoration--hover, var(--link-text-decoration));-webkit-text-decoration-color:var(--link-text-decoration-color--hover, var(--link-text-decoration-color));text-decoration-color:var(--link-text-decoration-color--hover, var(--link-text-decoration-color))}.markdown-section a.anchor{border-bottom:0;color:inherit;text-decoration:none}.markdown-section a.anchor:hover{text-decoration:underline}.markdown-section blockquote{overflow:visible;margin:2em 0;padding:1.5em;border-width:var(--blockquote-border-width, 0);border-style:var(--blockquote-border-style);border-color:var(--blockquote-border-color);border-radius:var(--blockquote-border-radius);background:var(--blockquote-background);color:var(--blockquote-color);font-family:var(--blockquote-font-family);font-size:var(--blockquote-font-size);font-style:var(--blockquote-font-style);font-weight:var(--blockquote-font-weight);quotes:"“" "”" "‘" "’"}.markdown-section blockquote em{font-family:var(--blockquote-em-font-family);font-size:var(--blockquote-em-font-size);font-style:var(--blockquote-em-font-style);font-weight:var(--blockquote-em-font-weight)}.markdown-section blockquote p:first-child{margin-top:0}.markdown-section blockquote p:first-child:before,.markdown-section blockquote p:first-child:after{color:var(--blockquote-quotes-color);font-family:var(--blockquote-quotes-font-family);font-size:var(--blockquote-quotes-font-size);line-height:0}.markdown-section blockquote p:first-child:before{content:var(--blockquote-quotes-open);margin-right:0.15em;vertical-align:-0.45em}.markdown-section blockquote p:first-child:after{content:var(--blockquote-quotes-close);margin-left:0.15em;vertical-align:-0.55em}.markdown-section blockquote p:last-child{margin-bottom:0}.markdown-section code{font-family:var(--code-font-family);font-size:var(--code-font-size);font-weight:var(--code-font-weight);line-height:inherit}.markdown-section code:not([class*="lang-"]):not([class*="language-"]){margin:var(--code-inline-margin);padding:var(--code-inline-padding);border-radius:var(--code-inline-border-radius);background:var(--code-inline-background);color:var(--code-inline-color, currentColor);white-space:nowrap}.markdown-section h1:first-child,.markdown-section h2:first-child,.markdown-section h3:first-child,.markdown-section h4:first-child,.markdown-section h5:first-child,.markdown-section h6:first-child{margin-top:0}.markdown-section h1 a[data-id],.markdown-section h2 a[data-id],.markdown-section h3 a[data-id],.markdown-section h4 a[data-id],.markdown-section h5 a[data-id],.markdown-section h6 a[data-id]{display:inline-block}.markdown-section h1 code,.markdown-section h2 code,.markdown-section h3 code,.markdown-section h4 code,.markdown-section h5 code,.markdown-section h6 code{font-size:0.875em}.markdown-section h1+h2,.markdown-section h1+h3,.markdown-section h1+h4,.markdown-section h1+h5,.markdown-section h1+h6,.markdown-section h2+h3,.markdown-section h2+h4,.markdown-section h2+h5,.markdown-section h2+h6,.markdown-section h3+h4,.markdown-section h3+h5,.markdown-section h3+h6,.markdown-section h4+h5,.markdown-section h4+h6,.markdown-section h5+h6{margin-top:1rem}.markdown-section h1{margin:var(--heading-h1-margin, var(--heading-margin));padding:var(--heading-h1-padding, var(--heading-padding));border-width:var(--heading-h1-border-width, 0);border-style:var(--heading-h1-border-style);border-color:var(--heading-h1-border-color);font-family:var(--heading-h1-font-family, var(--heading-font-family));font-size:var(--heading-h1-font-size);font-weight:var(--heading-h1-font-weight, var(--heading-font-weight));line-height:var(--base-line-height);color:var(--heading-h1-color, var(--heading-color))}.markdown-section h2{margin:var(--heading-h2-margin, var(--heading-margin));padding:var(--heading-h2-padding, var(--heading-padding));border-width:var(--heading-h2-border-width, 0);border-color:var(--heading-h2-border-color);font-family:var(--heading-h2-font-family, var(--heading-font-family));font-size:var(--heading-h2-font-size);font-weight:var(--heading-h2-font-weight, var(--heading-font-weight));line-height:var(--base-line-height);color:var(--heading-h2-color, var(--heading-color))}.markdown-section h3{margin:var(--heading-h3-margin, var(--heading-margin));padding:var(--heading-h3-padding, var(--heading-padding));border-width:var(--heading-h3-border-width, 0);border-style:var(--heading-h3-border-style);border-color:var(--heading-h3-border-color);font-family:var(--heading-h3-font-family, var(--heading-font-family));font-size:var(--heading-h3-font-size);font-weight:var(--heading-h3-font-weight, var(--heading-font-weight));color:var(--heading-h3-color, var(--heading-color))}.markdown-section h4{margin:var(--heading-h4-margin, var(--heading-margin));padding:var(--heading-h4-padding, var(--heading-padding));border-width:var(--heading-h4-border-width, 0);border-style:var(--heading-h4-border-style);border-color:var(--heading-h4-border-color);font-family:var(--heading-h4-font-family, var(--heading-font-family));font-size:var(--heading-h4-font-size);font-weight:var(--heading-h4-font-weight, var(--heading-font-weight));color:var(--heading-h4-color, var(--heading-color))}.markdown-section h5{margin:var(--heading-h5-margin, var(--heading-margin));padding:var(--heading-h5-padding, var(--heading-padding));border-width:var(--heading-h5-border-width, 0);border-style:var(--heading-h5-border-style);border-color:var(--heading-h5-border-color);font-family:var(--heading-h5-font-family, var(--heading-font-family));font-size:var(--heading-h5-font-size);font-weight:var(--heading-h5-font-weight, var(--heading-font-weight));color:var(--heading-h5-color, var(--heading-color))}.markdown-section h6{margin:var(--heading-h6-margin, var(--heading-margin));padding:var(--heading-h6-padding, var(--heading-padding));border-width:var(--heading-h6-border-width, 0);border-style:var(--heading-h6-border-style);border-color:var(--heading-h6-border-color);font-family:var(--heading-h6-font-family, var(--heading-font-family));font-size:var(--heading-h6-font-size);font-weight:var(--heading-h6-font-weight, var(--heading-font-weight));color:var(--heading-h6-color, var(--heading-color))}.markdown-section iframe{margin:1em 0}.markdown-section img{max-width:100%}.markdown-section kbd{display:inline-block;min-width:var(--kbd-min-width);margin:var(--kbd-margin);padding:var(--kbd-padding);border:var(--kbd-border);border-radius:var(--kbd-border-radius);background:var(--kbd-background);font-family:inherit;font-size:var(--kbd-font-size);text-align:center;letter-spacing:0;line-height:1;color:var(--kbd-color)}.markdown-section kbd+kbd{margin-left:-0.15em}.markdown-section table{display:block;overflow:auto;margin:1rem 0;}.markdown-section th,.markdown-section td{padding:var(--table-cell-padding)}.markdown-section th:not([align]){text-align:center;white-space: nowrap;}.markdown-section thead{border-color:var(--table-head-border-color);border-style:solid;border-width:var(--table-head-border-width, 0);background:var(--table-head-background)}.markdown-section th{font-weight:var(--table-head-font-weight);color:var(--strong-color)}.markdown-section td{border-color:var(--table-cell-border-color);}.markdown-section tbody{border-color:var(--table-body-border-color);border-style:solid;border-width:var(--table-body-border-width, 0)}.markdown-section tbody tr:nth-child(odd){background:var(--table-row-odd-background)}.markdown-section tbody tr:nth-child(even){background:var(--table-row-even-background)}.markdown-section>ul .task-list-item{margin-left:-1.25em}.markdown-section>ul .task-list-item .task-list-item{margin-left:0}.markdown-section .table-wrapper{overflow-x:auto}.markdown-section .table-wrapper table{display:table;width:100%}.markdown-section .table-wrapper td::before{display:none}@media (max-width: 30em){.markdown-section .table-wrapper tbody,.markdown-section .table-wrapper tr,.markdown-section .table-wrapper td{display:block}.markdown-section .table-wrapper th,.markdown-section .table-wrapper td{border:none}.markdown-section .table-wrapper thead{display:none}.markdown-section .table-wrapper tr{border-color:var(--table-cell-border-color);border-style:solid;border-width:var(--table-cell-border-width, 0);padding:var(--table-cell-padding)}.markdown-section .table-wrapper tr:not(:last-child){border-bottom:0}.markdown-section .table-wrapper td{padding:0.15em 0 0.15em 8em}.markdown-section .table-wrapper td::before{display:inline-block;float:left;width:8em;margin-left:-8em;font-weight:bold;text-align:left}}.markdown-section .tip,.markdown-section .warn{position:relative;margin:2em 0;padding:var(--notice-padding);border-width:var(--notice-border-width, 0);border-style:var(--notice-border-style);border-color:var(--notice-border-color);border-radius:var(--notice-border-radius);background:var(--notice-background);font-family:var(--notice-font-family);font-weight:var(--notice-font-weight);color:var(--notice-color)}.markdown-section .tip:before,.markdown-section .warn:before{display:inline-block;position:var(--notice-before-position, relative);top:var(--notice-before-top);left:var(--notice-before-left);height:var(--notice-before-height);width:var(--notice-before-width);margin:var(--notice-before-margin);padding:var(--notice-before-padding);border-radius:var(--notice-before-border-radius);line-height:var(--notice-before-line-height);font-family:var(--notice-before-font-family);font-size:var(--notice-before-font-size);font-weight:var(--notice-before-font-weight);text-align:center}.markdown-section .tip{border-width:var(--notice-important-border-width, var(--notice-border-width, 0));border-style:var(--notice-important-border-style, var(--notice-border-style));border-color:var(--notice-important-border-color, var(--notice-border-color));background:var(--notice-important-background, var(--notice-background));color:var(--notice-important-color, var(--notice-color))}.markdown-section .tip:before{content:var(--notice-important-before-content, var(--notice-before-content));background:var(--notice-important-before-background, var(--notice-before-background));color:var(--notice-important-before-color, var(--notice-before-color))}.markdown-section .warn{border-width:var(--notice-tip-border-width, var(--notice-border-width, 0));border-style:var(--notice-tip-border-style, var(--notice-border-style));border-color:var(--notice-tip-border-color, var(--notice-border-color));background:var(--notice-tip-background, var(--notice-background));color:var(--notice-tip-color, var(--notice-color))}.markdown-section .warn:before{content:var(--notice-tip-before-content, var(--notice-before-content));background:var(--notice-tip-before-background, var(--notice-before-background));color:var(--notice-tip-before-color, var(--notice-before-color))}.cover{display:none;position:relative;z-index:20;min-height:100vh;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--cover-border-inset, 0px) + var(--cover-border-width, 0px));color:var(--cover-color);text-align:var(--cover-text-align)}@media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none){.cover{height:100vh}}.cover:before,.cover:after{content:'';position:absolute}.cover:before{top:0;bottom:0;left:0;right:0;background-blend-mode:var(--cover-background-blend-mode);background-color:var(--cover-background-color);background-image:var(--cover-background-image);background-position:var(--cover-background-position);background-repeat:var(--cover-background-repeat);background-size:var(--cover-background-size)}.cover:after{top:var(--cover-border-inset, 0);bottom:var(--cover-border-inset, 0);left:var(--cover-border-inset, 0);right:var(--cover-border-inset, 0);border-width:var(--cover-border-width, 0);border-style:solid;border-color:var(--cover-border-color)}.cover a{border-bottom:var(--cover-link-border-bottom);color:var(--cover-link-color);-webkit-text-decoration:var(--cover-link-text-decoration);text-decoration:var(--cover-link-text-decoration);-webkit-text-decoration-color:var(--cover-link-text-decoration-color);text-decoration-color:var(--cover-link-text-decoration-color)}.cover a:hover{border-bottom:var(--cover-link-border-bottom--hover, var(--cover-link-border-bottom));color:var(--cover-link-color--hover, var(--cover-link-color));-webkit-text-decoration:var(--cover-link-text-decoration--hover, var(--cover-link-text-decoration));text-decoration:var(--cover-link-text-decoration--hover, var(--cover-link-text-decoration));-webkit-text-decoration-color:var(--cover-link-text-decoration-color--hover, var(--cover-link-text-decoration-color));text-decoration-color:var(--cover-link-text-decoration-color--hover, var(--cover-link-text-decoration-color))}.cover h1{color:var(--cover-heading-color);position:relative;margin:0;font-size:var(--cover-heading-font-size);font-weight:var(--cover-heading-font-weight);line-height:1.2}.cover h1 a,.cover h1 a:hover{display:block;border-bottom:none;color:inherit;text-decoration:none}.cover h1 small{position:absolute;bottom:0;margin-left:0.5em}.cover h1 span{font-size:calc(var(--cover-heading-font-size-min) * 1px)}@media (min-width: 26em){.cover h1 span{font-size:calc((var(--cover-heading-font-size-min) * 1px) + (var(--cover-heading-font-size-max) - var(--cover-heading-font-size-min)) * ((100vw - 420px) / (1024 - 420)))}}@media (min-width: 64em){.cover h1 span{font-size:calc(var(--cover-heading-font-size-max) * 1px)}}.cover blockquote{margin:0;color:var(--cover-blockquote-color);font-size:var(--cover-blockquote-font-size)}.cover blockquote a{color:inherit}.cover ul{padding:0;list-style-type:none}.cover .cover-main{position:relative;z-index:1;max-width:var(--cover-max-width);margin:var(--cover-margin);padding:0 45px}.cover .cover-main>p:last-child{margin:1.25em -.25em}.cover .cover-main>p:last-child a{display:block;margin:.375em .25em;padding:var(--cover-button-padding);border:var(--cover-button-border);border-radius:var(--cover-button-border-radius);box-shadow:var(--cover-button-box-shadow);background:var(--cover-button-background);text-align:center;-webkit-text-decoration:var(--cover-button-text-decoration);text-decoration:var(--cover-button-text-decoration);-webkit-text-decoration-color:var(--cover-button-text-decoration-color);text-decoration-color:var(--cover-button-text-decoration-color);color:var(--cover-button-color);white-space:nowrap;transition:var(--cover-button-transition)}.cover .cover-main>p:last-child a:hover{border:var(--cover-button-border--hover, var(--cover-button-border));box-shadow:var(--cover-button-box-shadow--hover, var(--cover-button-box-shadow));background:var(--cover-button-background--hover, var(--cover-button-background));-webkit-text-decoration:var(--cover-button-text-decoration--hover, var(--cover-button-text-decoration));text-decoration:var(--cover-button-text-decoration--hover, var(--cover-button-text-decoration));-webkit-text-decoration-color:var(--cover-button-text-decoration-color--hover, var(--cover-button-text-decoration-color));text-decoration-color:var(--cover-button-text-decoration-color--hover, var(--cover-button-text-decoration-color));color:var(--cover-button-color--hover, var(--cover-button-color))}.cover .cover-main>p:last-child a:first-child{border:var(--cover-button-primary-border, var(--cover-button-border));box-shadow:var(--cover-button-primary-box-shadow, var(--cover-button-box-shadow));background:var(--cover-button-primary-background, var(--cover-button-background));-webkit-text-decoration:var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration));text-decoration:var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration));-webkit-text-decoration-color:var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color));text-decoration-color:var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color));color:var(--cover-button-primary-color, var(--cover-button-color))}.cover .cover-main>p:last-child a:first-child:hover{border:var(--cover-button-primary-border--hover, var(--cover-button-border--hover, var(--cover-button-primary-border, var(--cover-button-border))));box-shadow:var(--cover-button-primary-box-shadow--hover, var(--cover-button-box-shadow--hover, var(--cover-button-primary-box-shadow, var(--cover-button-box-shadow))));background:var(--cover-button-primary-background--hover, var(--cover-button-background--hover, var(--cover-button-primary-background, var(--cover-button-background))));-webkit-text-decoration:var(--cover-button-primary-text-decoration--hover, var(--cover-button-text-decoration--hover, var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration))));text-decoration:var(--cover-button-primary-text-decoration--hover, var(--cover-button-text-decoration--hover, var(--cover-button-primary-text-decoration, var(--cover-button-text-decoration))));-webkit-text-decoration-color:var(--cover-button-primary-text-decoration-color--hover, var(--cover-button-text-decoration-color--hover, var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color))));text-decoration-color:var(--cover-button-primary-text-decoration-color--hover, var(--cover-button-text-decoration-color--hover, var(--cover-button-primary-text-decoration-color, var(--cover-button-text-decoration-color))));color:var(--cover-button-primary-color--hover, var(--cover-button-color--hover, var(--cover-button-primary-color, var(--cover-button-color))))}@media (min-width: 30.01em){.cover .cover-main>p:last-child a{display:inline-block}}.cover .mask{visibility:var(--cover-background-mask-visibility, hidden);position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--cover-background-mask-color);opacity:var(--cover-background-mask-opacity)}.cover.has-mask .mask{visibility:visible}.cover.show{display:flex}.app-nav{position:absolute;z-index:30;top:calc(35px - (0.5em * var(--base-line-height)));left:45px;right:80px;text-align:right}.app-nav.no-badge{right:45px}.app-nav li>img,.app-nav li>a>img{margin-top:-0.25em;vertical-align:middle}.app-nav li>img:first-child,.app-nav li>a>img:first-child{margin-right:0.5em}.app-nav ul,.app-nav li{margin:0;padding:0;list-style:none}.app-nav li{position:relative}.app-nav li a{display:block;line-height:1;transition:var(--navbar-root-transition)}.app-nav>ul>li{display:inline-block;margin:var(--navbar-root-margin)}.app-nav>ul>li:first-child{margin-left:0}.app-nav>ul>li:last-child{margin-right:0}.app-nav>ul>li>a,.app-nav>ul>li>span{padding:var(--navbar-root-padding);border-width:var(--navbar-root-border-width, 0);border-style:var(--navbar-root-border-style);border-color:var(--navbar-root-border-color);border-radius:var(--navbar-root-border-radius);background:var(--navbar-root-background);color:var(--navbar-root-color);-webkit-text-decoration:var(--navbar-root-text-decoration);text-decoration:var(--navbar-root-text-decoration);-webkit-text-decoration-color:var(--navbar-root-text-decoration-color);text-decoration-color:var(--navbar-root-text-decoration-color)}.app-nav>ul>li>a:hover,.app-nav>ul>li>span:hover{background:var(--navbar-root-background--hover, var(--navbar-root-background));border-style:var(--navbar-root-border-style--hover, var(--navbar-root-border-style));border-color:var(--navbar-root-border-color--hover, var(--navbar-root-border-color));color:var(--navbar-root-color--hover, var(--navbar-root-color));-webkit-text-decoration:var(--navbar-root-text-decoration--hover, var(--navbar-root-text-decoration));text-decoration:var(--navbar-root-text-decoration--hover, var(--navbar-root-text-decoration));-webkit-text-decoration-color:var(--navbar-root-text-decoration-color--hover, var(--navbar-root-text-decoration-color));text-decoration-color:var(--navbar-root-text-decoration-color--hover, var(--navbar-root-text-decoration-color))}.app-nav>ul>li>a:not(:last-child),.app-nav>ul>li>span:not(:last-child){padding:var(--navbar-menu-root-padding, var(--navbar-root-padding));background:var(--navbar-menu-root-background, var(--navbar-root-background))}.app-nav>ul>li>a:not(:last-child):hover,.app-nav>ul>li>span:not(:last-child):hover{background:var(--navbar-menu-root-background--hover, var(--navbar-menu-root-background, var(--navbar-root-background--hover, var(--navbar-root-background))))}.app-nav>ul>li>a.active{background:var(--navbar-root-background--active, var(--navbar-root-background));border-style:var(--navbar-root-border-style--active, var(--navbar-root-border-style));border-color:var(--navbar-root-border-color--active, var(--navbar-root-border-color));color:var(--navbar-root-color--active, var(--navbar-root-color));-webkit-text-decoration:var(--navbar-root-text-decoration--active, var(--navbar-root-text-decoration));text-decoration:var(--navbar-root-text-decoration--active, var(--navbar-root-text-decoration));-webkit-text-decoration-color:var(--navbar-root-text-decoration-color--active, var(--navbar-root-text-decoration-color));text-decoration-color:var(--navbar-root-text-decoration-color--active, var(--navbar-root-text-decoration-color))}.app-nav>ul>li>a.active:not(:last-child):hover{background:var(--navbar-menu-root-background--active, var(--navbar-menu-root-background, var(--navbar-root-background--active, var(--navbar-root-background))))}.app-nav>ul>li ul{visibility:hidden;position:absolute;top:100%;right:50%;overflow-y:auto;box-sizing:border-box;max-height:calc(50vh);padding:var(--navbar-menu-padding);border-width:var(--navbar-menu-border-width, 0);border-style:solid;border-color:var(--navbar-menu-border-color);border-radius:var(--navbar-menu-border-radius);background:var(--navbar-menu-background);box-shadow:var(--navbar-menu-box-shadow);text-align:left;white-space:nowrap;opacity:0;transform:translate(50%, -0.35em);transition:var(--navbar-menu-transition)}.app-nav>ul>li ul li{white-space:nowrap}.app-nav>ul>li ul a{margin:var(--navbar-menu-link-margin);padding:var(--navbar-menu-link-padding);border-width:var(--navbar-menu-link-border-width, 0);border-style:var(--navbar-menu-link-border-style);border-color:var(--navbar-menu-link-border-color);border-radius:var(--navbar-menu-link-border-radius);background:var(--navbar-menu-link-background);color:var(--navbar-menu-link-color);-webkit-text-decoration:var(--navbar-menu-link-text-decoration);text-decoration:var(--navbar-menu-link-text-decoration);-webkit-text-decoration-color:var(--navbar-menu-link-text-decoration-color);text-decoration-color:var(--navbar-menu-link-text-decoration-color)}.app-nav>ul>li ul a:hover{background:var(--navbar-menu-link-background--hover, var(--navbar-menu-link-background));border-style:var(--navbar-menu-link-border-style--hover, var(--navbar-menu-link-border-style));border-color:var(--navbar-menu-link-border-color--hover, var(--navbar-menu-link-border-color));color:var(--navbar-menu-link-color--hover, var(--navbar-menu-link-color));-webkit-text-decoration:var(--navbar-menu-link-text-decoration--hover, var(--navbar-menu-link-text-decoration));text-decoration:var(--navbar-menu-link-text-decoration--hover, var(--navbar-menu-link-text-decoration));-webkit-text-decoration-color:var(--navbar-menu-link-text-decoration-color--hover, var(--navbar-menu-link-text-decoration-color));text-decoration-color:var(--navbar-menu-link-text-decoration-color--hover, var(--navbar-menu-link-text-decoration-color))}.app-nav>ul>li ul a.active{background:var(--navbar-menu-link-background--active, var(--navbar-menu-link-background));border-style:var(--navbar-menu-link-border-style--active, var(--navbar-menu-link-border-style));border-color:var(--navbar-menu-link-border-color--active, var(--navbar-menu-link-border-color));color:var(--navbar-menu-link-color--active, var(--navbar-menu-link-color));-webkit-text-decoration:var(--navbar-menu-link-text-decoration--active, var(--navbar-menu-link-text-decoration));text-decoration:var(--navbar-menu-link-text-decoration--active, var(--navbar-menu-link-text-decoration));-webkit-text-decoration-color:var(--navbar-menu-link-text-decoration-color--active, var(--navbar-menu-link-text-decoration-color));text-decoration-color:var(--navbar-menu-link-text-decoration-color--active, var(--navbar-menu-link-text-decoration-color))}.app-nav>ul>li:hover ul,.app-nav>ul>li:focus ul,.app-nav>ul>li.focus-within ul{visibility:visible;opacity:1;transform:translate(50%, 0)}@media (min-width: 48em){nav.app-nav{margin-left:var(--sidebar-width)}}main{position:relative;overflow-x:hidden;min-height:100vh}.sidebar,.sidebar-toggle,.sidebar+.content{transition:all var(--sidebar-transition-duration) ease-out}@media (min-width: 48em){.sidebar+.content{margin-left:var(--sidebar-width)}}.sidebar{display:flex;flex-direction:column;position:fixed;z-index:10;top:0;right:100%;overflow-x:hidden;overflow-y:auto;height:100vh;width:var(--sidebar-width);padding:var(--sidebar-padding);border-width:var(--sidebar-border-width);border-style:solid;border-color:var(--sidebar-border-color);background:var(--sidebar-background)}.sidebar>h1{margin:0;margin:var(--sidebar-name-margin);padding:var(--sidebar-name-padding);background:var(--sidebar-name-background);color:var(--sidebar-name-color);font-family:var(--sidebar-name-font-family);font-size:var(--sidebar-name-font-size);font-weight:var(--sidebar-name-font-weight);text-align:var(--sidebar-name-text-align)}.sidebar>h1 img{max-width:100%}.sidebar>h1 .app-name-link{color:var(--sidebar-name-color)}body:not([data-platform^="Mac"]) .sidebar::-webkit-scrollbar{width:5px}body:not([data-platform^="Mac"]) .sidebar::-webkit-scrollbar-thumb{border-radius:50vw}@media (min-width: 48em){.sidebar{position:absolute;transform:translateX(var(--sidebar-width))}}@media print{.sidebar{display:none}}.sidebar-nav,.sidebar nav{order:1;margin:var(--sidebar-nav-margin);padding:var(--sidebar-nav-padding);background:var(--sidebar-nav-background)}.sidebar-nav ul,.sidebar nav ul{margin:0;padding:0;list-style:none}.sidebar-nav ul ul,.sidebar nav ul ul{margin-left:var(--sidebar-nav-indent)}.sidebar-nav a,.sidebar nav a{display:block;overflow:hidden;margin:var(--sidebar-nav-link-margin);padding:var(--sidebar-nav-link-padding);border-width:var(--sidebar-nav-link-border-width, 0);border-style:var(--sidebar-nav-link-border-style);border-color:var(--sidebar-nav-link-border-color);border-radius:var(--sidebar-nav-link-border-radius);background-color:var(--sidebar-nav-link-background-color);background-image:var(--sidebar-nav-link-background-image);background-position:var(--sidebar-nav-link-background-position);background-repeat:var(--sidebar-nav-link-background-repeat);background-size:var(--sidebar-nav-link-background-size);color:var(--sidebar-nav-link-color);font-weight:var(--sidebar-nav-link-font-weight);white-space:nowrap;-webkit-text-decoration:var(--sidebar-nav-link-text-decoration);text-decoration:var(--sidebar-nav-link-text-decoration);-webkit-text-decoration-color:var(--sidebar-nav-link-text-decoration-color);text-decoration-color:var(--sidebar-nav-link-text-decoration-color);text-overflow:ellipsis;transition:var(--sidebar-nav-link-transition)}.sidebar-nav a img,.sidebar nav a img{margin-top:-0.25em;vertical-align:middle}.sidebar-nav a img:first-child,.sidebar nav a img:first-child{margin-right:0.5em}.sidebar-nav a:hover,.sidebar nav a:hover{border-width:var(--sidebar-nav-link-border-width--hover, var(--sidebar-nav-link-border-width, 0));border-style:var(--sidebar-nav-link-border-style--hover, var(--sidebar-nav-link-border-style));border-color:var(--sidebar-nav-link-border-color--hover, var(--sidebar-nav-link-border-color));background-color:var(--sidebar-nav-link-background-color--hover, var(--sidebar-nav-link-background-color));background-image:var(--sidebar-nav-link-background-image--hover, var(--sidebar-nav-link-background-image));background-position:var(--sidebar-nav-link-background-position--hover, var(--sidebar-nav-link-background-position));background-size:var(--sidebar-nav-link-background-size--hover, var(--sidebar-nav-link-background-size));color:var(--sidebar-nav-link-color--hover, var(--sidebar-nav-link-color));font-weight:var(--sidebar-nav-link-font-weight--hover, var(--sidebar-nav-link-font-weight));-webkit-text-decoration:var(--sidebar-nav-link-text-decoration--hover, var(--sidebar-nav-link-text-decoration));text-decoration:var(--sidebar-nav-link-text-decoration--hover, var(--sidebar-nav-link-text-decoration));-webkit-text-decoration-color:var(--sidebar-nav-link-text-decoration-color);text-decoration-color:var(--sidebar-nav-link-text-decoration-color)}.sidebar-nav ul>li>span,.sidebar-nav ul>li>strong,.sidebar nav ul>li>span,.sidebar nav ul>li>strong{display:block;margin:var(--sidebar-nav-strong-margin);padding:var(--sidebar-nav-strong-padding);border-width:var(--sidebar-nav-strong-border-width, 0);border-style:solid;border-color:var(--sidebar-nav-strong-border-color);color:var(--sidebar-nav-strong-color);font-size:var(--sidebar-nav-strong-font-size);font-weight:var(--sidebar-nav-strong-font-weight);text-transform:var(--sidebar-nav-strong-text-transform)}.sidebar-nav ul>li>span+ul,.sidebar-nav ul>li>strong+ul,.sidebar nav ul>li>span+ul,.sidebar nav ul>li>strong+ul{margin-left:0}.sidebar-nav ul>li:first-child>span,.sidebar-nav ul>li:first-child>strong,.sidebar nav ul>li:first-child>span,.sidebar nav ul>li:first-child>strong{margin-top:0}.sidebar-nav::-webkit-scrollbar,.sidebar nav::-webkit-scrollbar{width:0}@supports (width: env(safe-area-inset)){@media only screen and (orientation: landscape){.sidebar-nav,.sidebar nav{margin-left:calc(env(safe-area-inset-left) / 2)}}}.sidebar-nav li>a:before,.sidebar-nav li>strong:before{display:inline-block}.sidebar-nav li>a{background-repeat:var(--sidebar-nav-pagelink-background-repeat);background-size:var(--sidebar-nav-pagelink-background-size)}.sidebar-nav li>a[href^="/"]:not([href*="?id="]),.sidebar-nav li>a[href^="#/"]:not([href*="?id="]){transition:var(--sidebar-nav-pagelink-transition)}.sidebar-nav li>a[href^="/"]:not([href*="?id="]):only-child,.sidebar-nav li>a[href^="#/"]:not([href*="?id="]):only-child{background-image:var(--sidebar-nav-pagelink-background-image);background-position:var(--sidebar-nav-pagelink-background-position)}.sidebar-nav li>a[href^="/"]:not([href*="?id="]):not(:only-child),.sidebar-nav li>a[href^="#/"]:not([href*="?id="]):not(:only-child){background-image:var(--sidebar-nav-pagelink-background-image--loaded, var(--sidebar-nav-pagelink-background-image));background-position:var(--sidebar-nav-pagelink-background-position--loaded, var(--sidebar-nav-pagelink-background-image))}.sidebar-nav li.active>a,.sidebar-nav li.collapse>a{border-width:var(--sidebar-nav-link-border-width--active, var(--sidebar-nav-link-border-width));border-style:var(--sidebar-nav-link-border-style--active, var(--sidebar-nav-link-border-style));border-color:var(--sidebar-nav-link-border-color--active, var(--sidebar-nav-link-border-color));background-color:var(--sidebar-nav-link-background-color--active, var(--sidebar-nav-link-background-color));background-image:var(--sidebar-nav-link-background-image--active, var(--sidebar-nav-link-background-image));background-position:var(--sidebar-nav-link-background-position--active, var(--sidebar-nav-link-background-position));background-size:var(--sidebar-nav-link-background-size--active, var(--sidebar-nav-link-background-size));color:var(--sidebar-nav-link-color--active, var(--sidebar-nav-link-color));font-weight:var(--sidebar-nav-link-font-weight--active, var(--sidebar-nav-link-font-weight));-webkit-text-decoration:var(--sidebar-nav-link-text-decoration--active, var(--sidebar-nav-link-text-decoration));text-decoration:var(--sidebar-nav-link-text-decoration--active, var(--sidebar-nav-link-text-decoration));-webkit-text-decoration-color:var(--sidebar-nav-link-text-decoration-color);text-decoration-color:var(--sidebar-nav-link-text-decoration-color)}.sidebar-nav li.active>a[href^="/"]:not([href*="?id="]):not(:only-child),.sidebar-nav li.active>a[href^="#/"]:not([href*="?id="]):not(:only-child){background-image:var(--sidebar-nav-pagelink-background-image--active, var(--sidebar-nav-pagelink-background-image--loaded, var(--sidebar-nav-pagelink-background-image)));background-position:var(--sidebar-nav-pagelink-background-position--active, var(--sidebar-nav-pagelink-background-position--loaded, var(--sidebar-nav-pagelink-background-image)))}.sidebar-nav li.collapse>a[href^="/"]:not([href*="?id="]):not(:only-child),.sidebar-nav li.collapse>a[href^="#/"]:not([href*="?id="]):not(:only-child){background-image:var(--sidebar-nav-pagelink-background-image--collapse, var(--sidebar-nav-pagelink-background-image--loaded, var(--sidebar-nav-pagelink-background-image)));background-position:var(--sidebar-nav-pagelink-background-position--collapse, var(--sidebar-nav-pagelink-background-position--loaded, var(--sidebar-nav-pagelink-background-image)))}.sidebar-nav li.collapse .app-sub-sidebar{display:none}.sidebar-nav>ul>li>a:before{content:var(--sidebar-nav-link-before-content-l1, var(--sidebar-nav-link-before-content));margin:var(--sidebar-nav-link-before-margin-l1, var(--sidebar-nav-link-before-margin));color:var(--sidebar-nav-link-before-color-l1, var(--sidebar-nav-link-before-color))}.sidebar-nav>ul>li.active>a:before{content:var(--sidebar-nav-link-before-content-l1--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l1, var(--sidebar-nav-link-before-content))));color:var(--sidebar-nav-link-before-color-l1--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l1, var(--sidebar-nav-link-before-color))))}.sidebar-nav>ul>li>ul>li>a:before{content:var(--sidebar-nav-link-before-content-l2, var(--sidebar-nav-link-before-content));margin:var(--sidebar-nav-link-before-margin-l2, var(--sidebar-nav-link-before-margin));color:var(--sidebar-nav-link-before-color-l2, var(--sidebar-nav-link-before-color))}.sidebar-nav>ul>li>ul>li.active>a:before{content:var(--sidebar-nav-link-before-content-l2--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l2, var(--sidebar-nav-link-before-content))));color:var(--sidebar-nav-link-before-color-l2--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l2, var(--sidebar-nav-link-before-color))))}.sidebar-nav>ul>li>ul>li>ul>li>ul>li>a:before{content:var(--sidebar-nav-link-before-content-l4, var(--sidebar-nav-link-before-content));margin:var(--sidebar-nav-link-before-margin-l4, var(--sidebar-nav-link-before-margin));color:var(--sidebar-nav-link-before-color-l4, var(--sidebar-nav-link-before-color))}.sidebar-nav>ul>li>ul>li>ul>li>ul>li.active>a:before{content:var(--sidebar-nav-link-before-content-l4--active, var(--sidebar-nav-link-before-content--active, var(--sidebar-nav-link-before-content-l4, var(--sidebar-nav-link-before-content))));color:var(--sidebar-nav-link-before-color-l4--active, var(--sidebar-nav-link-before-color--active, var(--sidebar-nav-link-before-color-l4, var(--sidebar-nav-link-before-color))))}.sidebar-nav>:last-child{margin-bottom:2rem}.sidebar-toggle,.sidebar-toggle-button{width:var(--sidebar-toggle-width);outline:none}.sidebar-toggle{position:fixed;z-index:11;top:0;bottom:0;left:0;max-width:40px;margin:0;padding:0;border:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.sidebar-toggle .sidebar-toggle-button{position:absolute;top:var(--sidebar-toggle-offset-top);left:var(--sidebar-toggle-offset-left);height:var(--sidebar-toggle-height);border-radius:var(--sidebar-toggle-border-radius);border-width:var(--sidebar-toggle-border-width);border-style:var(--sidebar-toggle-border-style);border-color:var(--sidebar-toggle-border-color);background:var(--sidebar-toggle-background, transparent);color:var(--sidebar-toggle-icon-color)}.sidebar-toggle span{position:absolute;top:calc(50% - (var(--sidebar-toggle-icon-stroke-width) / 2));left:calc(50% - (var(--sidebar-toggle-icon-width) / 2));height:var(--sidebar-toggle-icon-stroke-width);width:var(--sidebar-toggle-icon-width);background-color:currentColor}.sidebar-toggle span:nth-child(1){margin-top:calc(0px - (var(--sidebar-toggle-icon-height) / 2))}.sidebar-toggle span:nth-child(3){margin-top:calc((var(--sidebar-toggle-icon-height) / 2))}@media (min-width: 48em){.sidebar-toggle{position:absolute;overflow:visible;top:var(--sidebar-toggle-offset-top);bottom:auto;left:0;height:var(--sidebar-toggle-height);transform:translateX(var(--sidebar-width))}.sidebar-toggle .sidebar-toggle-button{top:0}}@media print{.sidebar-toggle{display:none}}@media (max-width: 47.99em){body.close .sidebar,body.close .sidebar-toggle,body.close .sidebar+.content{transform:translateX(var(--sidebar-width))}}@media (min-width: 48em){body.close .sidebar+.content{transform:translateX(0)}}@media (max-width: 47.99em){body.close nav.app-nav,body.close .github-corner{display:none}}@media (min-width: 48em){body.close .sidebar,body.close .sidebar-toggle{transform:translateX(0)}}@media (min-width: 48em){body.close nav.app-nav{margin-left:0}}@media (max-width: 47.99em){body.close .sidebar-toggle{width:100%;max-width:none}body.close .sidebar-toggle span{margin-top:0}body.close .sidebar-toggle span:nth-child(1){transform:rotate(45deg)}body.close .sidebar-toggle span:nth-child(2){display:none}body.close .sidebar-toggle span:nth-child(3){transform:rotate(-45deg)}}@media (min-width: 48em){body.close .sidebar+.content{margin-left:0}}@media (min-width: 48em){body.sticky .sidebar,body.sticky .sidebar-toggle{position:fixed}}body .docsify-copy-code-button,body .docsify-copy-code-button:after{border-radius:var(--border-radius-m, 0);border-top-left-radius:0;border-bottom-right-radius:0;background:var(--copycode-background);color:var(--copycode-color)}body .docsify-copy-code-button span{border-radius:var(--border-radius-s, 0)}body .docsify-pagination-container{border-top:var(--pagination-border-top);color:var(--pagination-color)}body .pagination-item-label{font-size:var(--pagination-label-font-size)}body .pagination-item-label svg{color:var(--pagination-label-color);height:var(--pagination-chevron-height);stroke:var(--pagination-chevron-stroke);stroke-linecap:var(--pagination-chevron-stroke-linecap);stroke-linejoin:var(--pagination-chevron-stroke-linecap);stroke-width:var(--pagination-chevron-stroke-width)}body .pagination-item-title{color:var(--pagination-title-color);font-size:var(--pagination-title-font-size)}body .app-name.hide{display:block}body .sidebar{padding:var(--sidebar-padding)}.sidebar .search{margin:0;padding:0;border:0}.sidebar .search input{padding:0;line-height:1;font-size:inherit}.sidebar .search .clear-button{width:auto}.sidebar .search .clear-button svg{transform:scale(1)}.sidebar .search .matching-post{border:none}.sidebar .search p{font-size:inherit}.sidebar .search{order:var(--search-flex-order);margin:var(--search-margin);padding:var(--search-padding);background:var(--search-background)}.sidebar .search a{color:inherit}.sidebar .search h2{margin:var(--search-result-heading-margin);font-size:var(--search-result-heading-font-size);font-weight:var(--search-result-heading-font-weight);color:var(--search-result-heading-color)}.sidebar .search .input-wrap{align-items:stretch;margin:var(--search-input-margin);background-color:var(--search-input-background-color);border-width:var(--search-input-border-width, 0);border-style:solid;border-color:var(--search-input-border-color);border-radius:var(--search-input-border-radius)}.sidebar .search input[type="search"]{min-width:0;padding:var(--search-input-padding);border:none;background-color:transparent;background-image:var(--search-input-background-image);background-position:var(--search-input-background-position);background-repeat:var(--search-input-background-repeat);background-size:var(--search-input-background-size);font-size:var(--search-input-font-size);color:var(--search-input-color);transition:var(--search-input-transition)}.sidebar .search input[type="search"]::-ms-clear{display:none}.sidebar .search input[type="search"]::-moz-placeholder{color:var(--search-input-placeholder-color, gray)}.sidebar .search input[type="search"]:-ms-input-placeholder{color:var(--search-input-placeholder-color, gray)}.sidebar .search input[type="search"]::placeholder{color:var(--search-input-placeholder-color, gray)}.sidebar .search input[type="search"]::-webkit-input-placeholder{line-height:normal}.sidebar .search input[type="search"]:focus{background-color:var(--search-input-background-color--focus, var(--search-input-background-color));background-image:var(--search-input-background-image--focus, var(--search-input-background-image));background-position:var(--search-input-background-position--focus, var(--search-input-background-position));background-size:var(--search-input-background-size--focus, var(--search-input-background-size))}@supports (width: env(safe-area-inset)){@media only screen and (orientation: landscape){.sidebar .search input[type="search"]{margin-left:calc(env(safe-area-inset-left) / 2)}}}.sidebar .search p{overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical;-webkit-line-clamp:2}.sidebar .search p:empty{text-align:center}.sidebar .search .clear-button{margin:0;padding:0 10px;border:none;line-height:1;background:transparent;cursor:pointer}.sidebar .search .clear-button svg circle{fill:var(--search-clear-icon-color1, gray)}.sidebar .search .clear-button svg path{stroke:var(--search-clear-icon-color2, #fff)}.sidebar .search.show ~ *:not(h1){display:none}.sidebar .search .results-panel{display:none;color:var(--search-result-item-color);font-size:var(--search-result-item-font-size);font-weight:var(--search-result-item-font-weight)}.sidebar .search .results-panel.show{display:block}.sidebar .search .matching-post{margin:var(--search-result-item-margin);padding:var(--search-result-item-padding)}.sidebar .search .matching-post,.sidebar .search .matching-post:last-child{border-width:var(--search-result-item-border-width, 0) !important;border-style:var(--search-result-item-border-style);border-color:var(--search-result-item-border-color)}.sidebar .search .matching-post p{margin:0}.sidebar .search .search-keyword{margin:var(--search-result-keyword-margin);padding:var(--search-result-keyword-padding);border-radius:var(--search-result-keyword-border-radius);background-color:var(--search-result-keyword-background);color:var(--search-result-keyword-color, currentColor);font-style:normal;font-weight:var(--search-result-keyword-font-weight)}.medium-zoom-overlay,.medium-zoom-image--open,.medium-zoom-image--opened{z-index:2147483646 !important}.medium-zoom-overlay{background:var(--zoomimage-overlay-background) !important}:root{--mono-hue: 113;--mono-saturation: 0%;--mono-shade3: hsl(var(--mono-hue), var(--mono-saturation), 20%);--mono-shade2: hsl(var(--mono-hue), var(--mono-saturation), 30%);--mono-shade1: hsl(var(--mono-hue), var(--mono-saturation), 40%);--mono-base: hsl(var(--mono-hue), var(--mono-saturation), 50%);--mono-tint1: hsl(var(--mono-hue), var(--mono-saturation), 70%);--mono-tint2: hsl(var(--mono-hue), var(--mono-saturation), 89%);--mono-tint3: hsl(var(--mono-hue), var(--mono-saturation), 97%);--theme-hue: 204;--theme-saturation: 90%;--theme-lightness: 45%;--theme-color: hsl(var(--theme-hue), var(--theme-saturation), var(--theme-lightness));--modular-scale: 1.333;--modular-scale--2: calc(var(--modular-scale--1) / var(--modular-scale));--modular-scale--1: calc(var(--modular-scale-1) / var(--modular-scale));--modular-scale-1: 1rem;--modular-scale-2: calc(var(--modular-scale-1) * var(--modular-scale));--modular-scale-3: calc(var(--modular-scale-2) * var(--modular-scale));--modular-scale-4: calc(var(--modular-scale-3) * var(--modular-scale));--modular-scale-5: calc(var(--modular-scale-4) * var(--modular-scale));--font-size-xxxl: var(--modular-scale-5);--font-size-xxl: var(--modular-scale-4);--font-size-xl: var(--modular-scale-3);--font-size-l: var(--modular-scale-2);--font-size-m: var(--modular-scale-1);--font-size-s: var(--modular-scale--1);--font-size-xs: var(--modular-scale--2);--duration-slow: 1s;--duration-medium: 0.5s;--duration-fast: 0.25s;--spinner-size: 60px;--spinner-track-width: 4px;--spinner-track-color: rgba(0, 0, 0, 0.15);--spinner-transition-duration: var(--duration-medium)}:root{--base-background-color: #fff;--base-color: var(--mono-shade2);--base-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--base-font-size: 16px;--base-font-weight: normal;--base-line-height: 1.7;--emoji-size: calc(var(--base-line-height) * 1em);--hr-border: 1px solid var(--mono-tint2);--mark-background: #ffecb3;--pre-font-family: var(--code-font-family);--pre-font-size: var(--code-font-size);--pre-font-weight: normal;--selection-color: #b4d5fe;--small-font-size: var(--font-size-s);--strong-color: var(--heading-color);--strong-font-weight: 600;--subsup-font-size: var(--font-size-s)}:root{--content-max-width: 55em;--blockquote-background: var(--mono-tint3);--blockquote-border-style: solid;--blockquote-border-radius: var(--border-radius-m);--blockquote-em-font-weight: normal;--blockquote-font-weight: normal;--code-font-family: Inconsolata, Consolas, Menlo, Monaco, "Andale Mono WT", "Andale Mono", "Lucida Console", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace;--code-font-size: calc(var(--font-size-m) * 0.95);--code-font-weight: normal;--code-tab-size: 4;--code-block-border-radius: var(--border-radius-m);--code-block-line-height: var(--base-line-height);--code-block-margin: 1em 0;--code-block-padding: 1.75em 1.5em 1.5em 1.5em;--code-inline-background: var(--code-theme-background);--code-inline-border-radius: var(--border-radius-s);--code-inline-color: var(--code-theme-text);--code-inline-margin: 0 0.15em;--code-inline-padding: 0.125em 0.4em;--code-theme-background: var(--mono-tint3);--heading-color: var(--mono-shade3);--heading-margin: 2.5rem 0 0;--heading-h1-border-style: solid;--heading-h1-font-size: var(--font-size-xxl);--heading-h2-border-style: solid;--heading-h2-font-size: var(--font-size-xl);--heading-h3-border-style: solid;--heading-h3-font-size: var(--font-size-l);--heading-h4-border-style: solid;--heading-h4-font-size: var(--font-size-m);--heading-h5-border-style: solid;--heading-h5-font-size: var(--font-size-s);--heading-h6-border-style: solid;--heading-h6-font-size: var(--font-size-xs);--kbd-background: var(--mono-tint3);--kbd-border-radius: var(--border-radius-m);--kbd-margin: 0 0.3em;--kbd-min-width: 2.5em;--kbd-padding: 0.65em 0.5em;--link-text-decoration: underline;--notice-background: var(--mono-tint3);--notice-border-radius: var(--border-radius-m);--notice-border-style: solid;--notice-font-weight: normal;--notice-padding: 1em 1.5em;--notice-before-font-weight: normal;--table-cell-padding: 0.75em 0.5em;--table-head-border-color: var(--table-cell-border-color);--table-head-font-weight: var(--strong-font-weight);--table-row-odd-background: var(--mono-tint3)}:root{--cover-margin: 0 auto;--cover-max-width: 40em;--cover-text-align: center;--cover-background-color: var(--base-background-color);--cover-background-mask-color: var(--base-background-color);--cover-background-mask-opacity: 0.8;--cover-background-position: center center;--cover-background-repeat: no-repeat;--cover-background-size: cover;--cover-blockquote-font-size: var(--font-size-l);--cover-border-color: var(--theme-color);--cover-button-border: 1px solid var(--theme-color);--cover-button-border-radius: var(--border-radius-m);--cover-button-color: var(--theme-color);--cover-button-padding: 0.5em 2rem;--cover-button-text-decoration: none;--cover-button-transition: all var(--duration-fast) ease-in-out;--cover-button-primary-background: var(--theme-color);--cover-button-primary-border: 1px solid var(--theme-color);--cover-button-primary-color: #fff;--cover-heading-color: var(--theme-color);--cover-heading-font-size: var(--font-size-xxl);--cover-heading-font-weight: normal;--cover-link-text-decoration: underline }:root{--navbar-root-border-style: solid;--navbar-root-margin: 0 0 0 1.5em;--navbar-root-transition: all var(--duration-fast);--navbar-menu-background: var(--base-background-color);--navbar-menu-border-radius: var(--border-radius-m);--navbar-menu-box-shadow: rgba(45,45,45,0.05) 0px 0px 1px, rgba(49,49,49,0.05) 0px 1px 2px, rgba(42,42,42,0.05) 0px 2px 4px, rgba(32,32,32,0.05) 0px 4px 8px, rgba(49,49,49,0.05) 0px 8px 16px, rgba(35,35,35,0.05) 0px 16px 32px;--navbar-menu-padding: 0.5em;--navbar-menu-transition: all var(--duration-fast);--navbar-menu-link-border-style: solid;--navbar-menu-link-margin: 0.75em 0.5em;--navbar-menu-link-padding: 0.2em 0 }:root{--copycode-background: #808080;--copycode-color: #fff}:root{--docsifytabs-border-color: var(--mono-tint2);--docsifytabs-border-radius-px: var(--border-radius-s);--docsifytabs-tab-background: var(--mono-tint3);--docsifytabs-tab-color: var(--mono-tint1)}:root{--pagination-border-top: 1px solid var(--mono-tint2);--pagination-chevron-height: 0.8em;--pagination-chevron-stroke: currentColor;--pagination-chevron-stroke-linecap: round;--pagination-chevron-stroke-width: 1px;--pagination-label-font-size: var(--font-size-s);--pagination-title-font-size: var(--font-size-l)}:root{--search-margin: 1.5rem 0 0;--search-input-background-repeat: no-repeat;--search-input-border-color: var(--mono-tint1);--search-input-border-width: 1px;--search-input-padding: 0.5em;--search-flex-order: 1;--search-result-heading-color: var(--heading-color);--search-result-heading-font-size: var(--base-font-size);--search-result-heading-font-weight: normal;--search-result-heading-margin: 0 0 0.25em;--search-result-item-border-color: var(--mono-tint2);--search-result-item-border-style: solid;--search-result-item-border-width: 0 0 1px 0;--search-result-item-font-weight: normal;--search-result-item-padding: 1em 0;--search-result-keyword-background: var(--mark-background);--search-result-keyword-border-radius: var(--border-radius-s);--search-result-keyword-color: var(--mark-color);--search-result-keyword-font-weight: normal;--search-result-keyword-margin: 0 0.1em;--search-result-keyword-padding: 0.2em 0}:root{--zoomimage-overlay-background: rgba(0, 0, 0, 0.875)}:root{--sidebar-background: var(--base-background-color);--sidebar-border-width: 0;--sidebar-padding: 0 25px;--sidebar-transition-duration: var(--duration-fast);--sidebar-width: 17rem;--sidebar-name-font-size: var(--font-size-l);--sidebar-name-font-weight: normal;--sidebar-name-margin: 1.5rem 0 0;--sidebar-name-text-align: center;--sidebar-nav-strong-border-color: var(--sidebar-border-color);--sidebar-nav-strong-color: var(--heading-color);--sidebar-nav-strong-font-weight: var(--strong-font-weight);--sidebar-nav-strong-margin: 1.5em 0 0.5em;--sidebar-nav-strong-padding: 0.25em 0;--sidebar-nav-indent: 1em;--sidebar-nav-margin: 1.5rem 0 0;--sidebar-nav-link-border-style: solid;--sidebar-nav-link-border-width: 0;--sidebar-nav-link-color: var(--base-color);--sidebar-nav-link-font-weight: normal;--sidebar-nav-link-padding: 0.25em 0;--sidebar-nav-link-text-decoration--active: underline;--sidebar-nav-link-text-decoration--hover: underline;--sidebar-nav-link-before-margin: 0 0.35em 0 0;--sidebar-nav-pagelink-background-repeat: no-repeat;--sidebar-nav-pagelink-transition: var(--sidebar-nav-link-transition);--sidebar-toggle-border-radius: var(--border-radius-s);--sidebar-toggle-border-style: solid;--sidebar-toggle-border-width: 0;--sidebar-toggle-height: 36px;--sidebar-toggle-icon-color: var(--base-color);--sidebar-toggle-icon-height: 10px;--sidebar-toggle-icon-stroke-width: 1px;--sidebar-toggle-icon-width: 16px;--sidebar-toggle-offset-left: 0;--sidebar-toggle-offset-top: calc(35px - (var(--sidebar-toggle-height) / 2));--sidebar-toggle-width: 44px}:root{--code-theme-background: #f3f3f3;--code-theme-comment: #6e8090;--code-theme-function: #dd4a68;--code-theme-keyword: #07a;--code-theme-operator: #a67f59;--code-theme-punctuation: #999;--code-theme-selector: #690;--code-theme-tag: #905;--code-theme-text: #333;--code-theme-variable: #e90}:root{--border-radius-s: 2px;--border-radius-m: 4px;--border-radius-l: 8px;--strong-font-weight: 600;--blockquote-border-color: var(--theme-color);--blockquote-border-radius: 0 var(--border-radius-m) var(--border-radius-m) 0;--blockquote-border-width: 0 0 0 4px;--code-inline-background: var(--mono-tint2);--code-theme-background: var(--mono-tint3);--heading-font-weight: var(--strong-font-weight);--heading-h1-font-weight: 400;--heading-h2-font-weight: 400;--heading-h2-border-color: var(--mono-tint2);--heading-h2-border-width: 0 0 1px 0;--heading-h2-margin: 2.5rem 0 1.5rem;--heading-h2-padding: 0 0 1rem 0;--kbd-border: 1px solid var(--mono-tint2);--notice-border-radius: 0 var(--border-radius-m) var(--border-radius-m) 0;--notice-border-width: 0 0 0 4px;--notice-padding: 1em 1.5em 1em 3em;--notice-before-border-radius: 100%;--notice-before-font-weight: bold;--notice-before-height: 1.5em;--notice-before-left: 0.75em;--notice-before-line-height: 1.5;--notice-before-margin: 0 0.25em 0 0;--notice-before-position: absolute;--notice-before-width: var(--notice-before-height);--notice-important-background: hsl(340, 60%, 96%);--notice-important-border-color: hsl(340, 90%, 45%);--notice-important-before-background: var(--notice-important-border-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M10 14C10 15.1 9.1 16 8 16 6.9 16 6 15.1 6 14 6 12.9 6.9 12 8 12 9.1 12 10 12.9 10 14Z'/%3E%3Cpath d='M10 1.6C10 1.2 9.8 0.9 9.6 0.7 9.2 0.3 8.6 0 8 0 7.4 0 6.8 0.2 6.5 0.6 6.2 0.9 6 1.2 6 1.6 6 1.7 6 1.8 6 1.9L6.8 9.6C6.9 9.9 7 10.1 7.2 10.2 7.4 10.4 7.7 10.5 8 10.5 8.3 10.5 8.6 10.4 8.8 10.3 9 10.1 9.1 9.9 9.2 9.6L10 1.9C10 1.8 10 1.7 10 1.6Z'/%3E%3C/svg%3E") center / 0.875em no-repeat;--notice-important-before-color: #fff;--notice-important-before-content: "";--notice-tip-background: hsl(204, 60%, 96%);--notice-tip-border-color: hsl(204, 90%, 45%);--notice-tip-before-background: var(--notice-tip-border-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3E%3Cpath d='M9.1 0C10.2 0 10.7 0.7 10.7 1.6 10.7 2.6 9.8 3.6 8.6 3.6 7.6 3.6 7 3 7 2 7 1.1 7.7 0 9.1 0Z'/%3E%3Cpath d='M5.8 16C5 16 4.4 15.5 5 13.2L5.9 9.1C6.1 8.5 6.1 8.2 5.9 8.2 5.7 8.2 4.6 8.6 3.9 9.1L3.5 8.4C5.6 6.6 7.9 5.6 8.9 5.6 9.8 5.6 9.9 6.6 9.5 8.2L8.4 12.5C8.2 13.2 8.3 13.5 8.5 13.5 8.7 13.5 9.6 13.2 10.4 12.5L10.9 13.2C8.9 15.2 6.7 16 5.8 16Z'/%3E%3C/svg%3E") center / 0.875em no-repeat;--notice-tip-before-color: #fff;--notice-tip-before-content: "";--table-cell-border-color: var(--mono-tint2);--table-cell-border-width: 1px 0;--cover-background-color: hsl(var(--theme-hue), 25%, 60%);--cover-background-image: radial-gradient(ellipse at center 115%, rgba(255, 255, 255, 0.9), transparent);--cover-blockquote-color: var(--strong-color);--cover-heading-color: #fff;--cover-heading-font-size-max: 56;--cover-heading-font-size-min: 34;--cover-heading-font-weight: 200;--navbar-root-color--active: var(--theme-color);--navbar-menu-border-radius: var(--border-radius-m);--navbar-menu-root-background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='9.6' height='6' viewBox='0 0 9.6 6'%3E%3Cpath d='M1.5 1.5l3.3 3 3.3-3' stroke-width='1.5' stroke='rgb%28179, 179, 179%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E") right no-repeat;--navbar-menu-root-padding: 0 18px 0 0;--search-input-background-color: #fff;--search-input-background-image: url("data:image/svg+xml,%3Csvg height='20px' width='20px' viewBox='0 0 24 24' fill='none' stroke='rgba(0, 0, 0, 0.3)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' preserveAspectRatio='xMidYMid meet' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10.5' cy='10.5' r='7.5' vector-effect='non-scaling-stroke'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='15.8' y2='15.8' vector-effect='non-scaling-stroke'%3E%3C/line%3E%3C/svg%3E");--search-input-background-position: 21px center;--search-input-border-color: var(--sidebar-border-color);--search-input-border-width: 1px 0;--search-input-margin: 0 -25px;--search-input-padding: 0.65em 1em 0.65em 50px;--search-input-placeholder-color: rgba(0, 0, 0, 0.4);--search-clear-icon-color1: rgba(0, 0, 0, 0.3);--search-result-heading-font-weight: var(--strong-font-weight);--search-result-item-border-color: var(--sidebar-border-color);--search-result-keyword-border-radius: var(--border-radius-s);--sidebar-background: var(--mono-tint3);--sidebar-border-color: var(--mono-tint2);--sidebar-border-width: 0 1px 0 0;--sidebar-name-color: var(--theme-color);--sidebar-name-font-weight: 300;--sidebar-nav-strong-border-width: 0 0 1px 0;--sidebar-nav-strong-font-size: smaller;--sidebar-nav-strong-margin: 2em -25px 0.75em 0;--sidebar-nav-strong-padding: 0.25em 0 0.75em 0;--sidebar-nav-strong-text-transform: uppercase;--sidebar-nav-link-border-color: transparent;--sidebar-nav-link-border-color--active: var(--theme-color);--sidebar-nav-link-border-width: 0 4px 0 0;--sidebar-nav-link-color--active: var(--theme-color);--sidebar-nav-link-margin: 0 -25px 0 0;--sidebar-nav-link-text-decoration: none;--sidebar-nav-link-text-decoration--active: none;--sidebar-nav-link-text-decoration--hover: underline;--sidebar-nav-link-before-content-l3: '-';--sidebar-nav-pagelink-background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='11.2' viewBox='0 0 7 11.2'%3E%3Cpath d='M1.5 1.5l4 4.1 -4 4.1' stroke-width='1.5' stroke='rgb%28179, 179, 179%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");--sidebar-nav-pagelink-background-image--active: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11.2' height='7' viewBox='0 0 11.2 7'%3E%3Cpath d='M1.5 1.5l4.1 4 4.1-4' stroke-width='1.5' stroke='rgb%2811, 135, 218%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");--sidebar-nav-pagelink-background-image--collapse: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='11.2' viewBox='0 0 7 11.2'%3E%3Cpath d='M1.5 1.5l4 4.1 -4 4.1' stroke-width='1.5' stroke='rgb%2811, 135, 218%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");--sidebar-nav-pagelink-background-image--loaded: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11.2' height='7' viewBox='0 0 11.2 7'%3E%3Cpath d='M1.5 1.5l4.1 4 4.1-4' stroke-width='1.5' stroke='rgb%2811, 135, 218%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");--sidebar-nav-pagelink-background-position: 3px center;--sidebar-nav-pagelink-background-position--active: left center;--sidebar-nav-pagelink-background-position--collapse: var(--sidebar-nav-pagelink-background-position);--sidebar-nav-pagelink-background-position--loaded: var(--sidebar-nav-pagelink-background-position--active);--sidebar-nav-pagelink-padding: 0.25em 0 0.25em 20px;--sidebar-nav-pagelink-transition: none;--sidebar-toggle-background: var(--sidebar-border-color);--sidebar-toggle-border-radius: 0 var(--border-radius-s) var(--border-radius-s) 0;--sidebar-toggle-width: 32px}:root{--code-theme-background: #222;--code-theme-comment: #516e7a;--code-theme-function: #f07178;--code-theme-keyword: #c2e78c;--code-theme-operator: #ffcb6b;--code-theme-punctuation: #89ddff;--code-theme-selector: #ffcb6b;--code-theme-tag: #f07178;--code-theme-text: #f3f3f3;--code-theme-variable: #ffcb6b}:root{--mono-hue: 201;--mono-saturation: 18%;--mono-shade3: hsl(var(--mono-hue), var(--mono-saturation), 13%);--mono-shade2: hsl(var(--mono-hue), var(--mono-saturation), 15%);--mono-shade1: hsl(var(--mono-hue), var(--mono-saturation), 17%);--mono-base: hsl(var(--mono-hue), var(--mono-saturation), 19%);--mono-tint1: hsl(var(--mono-hue), var(--mono-saturation), 25%);--mono-tint2: hsl(var(--mono-hue), var(--mono-saturation), 35%);--mono-tint3: hsl(var(--mono-hue), var(--mono-saturation), 43%);--spinner-track-color: rgba(255, 255, 255, 0.15);--base-background-color: var(--mono-base);--base-color: #d3d3d3;--hr-border: 1px solid var(--mono-tint2);--mark-background: #ffcb6b;--mark-color: var(--base-background-color);--selection-color: rgba(94, 131, 175, 0.75);--blockquote-background: var(--mono-shade2);--code-inline-background: var(--mono-tint1);--code-theme-background: var(--mono-shade2);--heading-color: #fff;--heading-h2-border-color: var(--mono-tint2);--kbd-background: var(--mono-shade2);--kbd-border: none;--kbd-color: var(--strong-color);--notice-important-background: var(--mono-shade2);--notice-tip-background: var(--mono-shade2);--table-cell-border-color: var(--mono-tint1);--table-row-odd-background: var(--mono-shade2);--cover-background-color: var(--base-background-color);--cover-background-image: radial-gradient(ellipse at center bottom, var(--mono-tint3), transparent);--cover-blockquote-color: var(--mark-background);--cover-button-border: 1px solid var(--mono-tint3);--cover-button-color: #fff;--navbar-menu-background: var(--mono-tint1);--navbar-menu-box-shadow: rgba(0,0,0,0.05) 0px 0px 1px, rgba(0,0,0,0.05) 0px 1px 2px, rgba(0,0,0,0.05) 0px 2px 4px, rgba(0,0,0,0.05) 0px 4px 8px, rgba(0,0,0,0.05) 0px 8px 16px, rgba(0,0,0,0.05) 0px 16px 32px;--copycode-background: var(--mono-tint1);--copycode-color: #fff;--docsifytabs-border-color: var(--mono-tint2);--docsifytabs-tab-background: var(--mono-shade1);--docsifytabs-tab-color: var(--mono-tint2);--pagination-border-top: 1px solid var(--mono-tint2);--pagination-title-color: #fff;--search-input-background-color: var(--mono-shade2);--search-input-background-image: url("data:image/svg+xml,%3Csvg height='20px' width='20px' viewBox='0 0 24 24' fill='none' stroke='rgba(255, 255, 255, 0.3)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' preserveAspectRatio='xMidYMid meet' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10.5' cy='10.5' r='7.5' vector-effect='non-scaling-stroke'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='15.8' y2='15.8' vector-effect='non-scaling-stroke'%3E%3C/line%3E%3C/svg%3E");--search-input-border-color: var(--mono-tint1);--search-input-placeholder-color: rgba(255, 255, 255, 0.4);--search-clear-icon-color1: rgba(255, 255, 255, 0.3);--sidebar-background: var(--mono-shade1);--sidebar-border-color: var(--mono-tint1);--sidebar-nav-pagelink-background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='11.2' viewBox='0 0 7 11.2'%3E%3Cpath d='M1.5 1.5l4 4.1 -4 4.1' stroke-width='1.5' stroke='rgb%2873, 93, 104%29' fill='none' stroke-linecap='square' stroke-linejoin='miter' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E")} -table { - display: table !important; - width: 100%; -} -/*# sourceMappingURL=theme-simple-dark.css.map */ \ No newline at end of file diff --git a/docs/scripts/zoom-image.js b/docs/scripts/zoom-image.js deleted file mode 100644 index 0432c50..0000000 --- a/docs/scripts/zoom-image.js +++ /dev/null @@ -1,660 +0,0 @@ - -(function () { - /*! medium-zoom 1.0.6 | MIT License | https://github.com/francoischalifour/medium-zoom */ - var _extends = Object.assign || function (target) { - var arguments$1 = arguments; - - for (var i = 1; i < arguments.length; i++) { - var source = arguments$1[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - var isSupported = function isSupported(node) { - return node.tagName === 'IMG'; - }; - - /* eslint-disable-next-line no-prototype-builtins */ - var isNodeList = function isNodeList(selector) { - return NodeList.prototype.isPrototypeOf(selector); - }; - - var isNode = function isNode(selector) { - return selector && selector.nodeType === 1; - }; - - var isSvg = function isSvg(image) { - var source = image.currentSrc || image.src; - return source.substr(-4).toLowerCase() === '.svg'; - }; - - var getImagesFromSelector = function getImagesFromSelector(selector) { - try { - if (Array.isArray(selector)) { - return selector.filter(isSupported); - } - - if (isNodeList(selector)) { - // Do not use spread operator or Array.from() for IE support - return [].slice.call(selector).filter(isSupported); - } - - if (isNode(selector)) { - return [selector].filter(isSupported); - } - - if (typeof selector === 'string') { - // Do not use spread operator or Array.from() for IE support - return [].slice.call(document.querySelectorAll(selector)).filter(isSupported); - } - - return []; - } catch (err) { - throw new TypeError('The provided selector is invalid.\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\n' + 'See: https://github.com/francoischalifour/medium-zoom'); - } - }; - - var createOverlay = function createOverlay(background) { - var overlay = document.createElement('div'); - overlay.classList.add('medium-zoom-overlay'); - overlay.style.background = background; - - return overlay; - }; - - var cloneTarget = function cloneTarget(template) { - var _template$getBounding = template.getBoundingClientRect(), - top = _template$getBounding.top, - left = _template$getBounding.left, - width = _template$getBounding.width, - height = _template$getBounding.height; - - var clone = template.cloneNode(); - var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; - var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0; - - clone.removeAttribute('id'); - clone.style.position = 'absolute'; - clone.style.top = top + scrollTop + 'px'; - clone.style.left = left + scrollLeft + 'px'; - clone.style.width = width + 'px'; - clone.style.height = height + 'px'; - clone.style.transform = ''; - - return clone; - }; - - var createCustomEvent = function createCustomEvent(type, params) { - var eventParams = _extends({ - bubbles: false, - cancelable: false, - detail: undefined - }, params); - - if (typeof window.CustomEvent === 'function') { - return new CustomEvent(type, eventParams); - } - - var customEvent = document.createEvent('CustomEvent'); - customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail); - - return customEvent; - }; - - var mediumZoom = function mediumZoom(selector) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - - /** - * Ensure the compatibility with IE11 if no Promise polyfill are used. - */ - var Promise = window.Promise || function Promise(fn) { - function noop() {} - fn(noop, noop); - }; - - var _handleClick = function _handleClick(event) { - var target = event.target; - - - if (target === overlay) { - close(); - return; - } - - if (images.indexOf(target) === -1) { - return; - } - - toggle({ target: target }); - }; - - var _handleScroll = function _handleScroll() { - if (isAnimating || !active.original) { - return; - } - - var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; - - if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) { - setTimeout(close, 150); - } - }; - - var _handleKeyUp = function _handleKeyUp(event) { - var key = event.key || event.keyCode; - - // Close if escape key is pressed - if (key === 'Escape' || key === 'Esc' || key === 27) { - close(); - } - }; - - var update = function update() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - var newOptions = options; - - if (options.background) { - overlay.style.background = options.background; - } - - if (options.container && options.container instanceof Object) { - newOptions.container = _extends({}, zoomOptions.container, options.container); - } - - if (options.template) { - var template = isNode(options.template) ? options.template : document.querySelector(options.template); - - newOptions.template = template; - } - - zoomOptions = _extends({}, zoomOptions, newOptions); - - images.forEach(function (image) { - image.dispatchEvent(createCustomEvent('medium-zoom:update', { - detail: { zoom: zoom } - })); - }); - - return zoom; - }; - - var clone = function clone() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - return mediumZoom(_extends({}, zoomOptions, options)); - }; - - var attach = function attach() { - var arguments$1 = arguments; - - for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) { - selectors[_key] = arguments$1[_key]; - } - - var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) { - return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector)); - }, []); - - newImages.filter(function (newImage) { - return images.indexOf(newImage) === -1; - }).forEach(function (newImage) { - images.push(newImage); - newImage.classList.add('medium-zoom-image'); - }); - - eventListeners.forEach(function (_ref) { - var type = _ref.type, - listener = _ref.listener, - options = _ref.options; - - newImages.forEach(function (image) { - image.addEventListener(type, listener, options); - }); - }); - - return zoom; - }; - - var detach = function detach() { - var arguments$1 = arguments; - - for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - selectors[_key2] = arguments$1[_key2]; - } - - if (active.zoomed) { - close(); - } - - var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) { - return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector)); - }, []) : images; - - imagesToDetach.forEach(function (image) { - image.classList.remove('medium-zoom-image'); - image.dispatchEvent(createCustomEvent('medium-zoom:detach', { - detail: { zoom: zoom } - })); - }); - - images = images.filter(function (image) { - return imagesToDetach.indexOf(image) === -1; - }); - - return zoom; - }; - - var on = function on(type, listener) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - images.forEach(function (image) { - image.addEventListener('medium-zoom:' + type, listener, options); - }); - - eventListeners.push({ type: 'medium-zoom:' + type, listener: listener, options: options }); - - return zoom; - }; - - var off = function off(type, listener) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - images.forEach(function (image) { - image.removeEventListener('medium-zoom:' + type, listener, options); - }); - - eventListeners = eventListeners.filter(function (eventListener) { - return !(eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString()); - }); - - return zoom; - }; - - var open = function open() { - var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - target = _ref2.target; - - var _animate = function _animate() { - var container = { - width: document.documentElement.clientWidth, - height: document.documentElement.clientHeight, - left: 0, - top: 0, - right: 0, - bottom: 0 - }; - var viewportWidth = void 0; - var viewportHeight = void 0; - - if (zoomOptions.container) { - if (zoomOptions.container instanceof Object) { - // The container is given as an object with properties like width, height, left, top - container = _extends({}, container, zoomOptions.container); - - // We need to adjust custom options like container.right or container.bottom - viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2; - viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2; - } else { - // The container is given as an element - var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container); - - var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(), - _width = _zoomContainer$getBou.width, - _height = _zoomContainer$getBou.height, - _left = _zoomContainer$getBou.left, - _top = _zoomContainer$getBou.top; - - container = _extends({}, container, { - width: _width, - height: _height, - left: _left, - top: _top - }); - } - } - - viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2; - viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2; - - var zoomTarget = active.zoomedHd || active.original; - var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth; - var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight; - - var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), - top = _zoomTarget$getBoundi.top, - left = _zoomTarget$getBoundi.left, - width = _zoomTarget$getBoundi.width, - height = _zoomTarget$getBoundi.height; - - var scaleX = Math.min(naturalWidth, viewportWidth) / width; - var scaleY = Math.min(naturalHeight, viewportHeight) / height; - var scale = Math.min(scaleX, scaleY); - var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale; - var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale; - var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)'; - - active.zoomed.style.transform = transform; - - if (active.zoomedHd) { - active.zoomedHd.style.transform = transform; - } - }; - - return new Promise(function (resolve) { - if (target && images.indexOf(target) === -1) { - resolve(zoom); - return; - } - - var _handleOpenEnd = function _handleOpenEnd() { - isAnimating = false; - active.zoomed.removeEventListener('transitionend', _handleOpenEnd); - active.original.dispatchEvent(createCustomEvent('medium-zoom:opened', { - detail: { zoom: zoom } - })); - - resolve(zoom); - }; - - if (active.zoomed) { - resolve(zoom); - return; - } - - if (target) { - // The zoom was triggered manually via a click - active.original = target; - } else if (images.length > 0) { - var _images = images; - active.original = _images[0]; - } else { - resolve(zoom); - return; - } - - active.original.dispatchEvent(createCustomEvent('medium-zoom:open', { - detail: { zoom: zoom } - })); - - scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; - isAnimating = true; - active.zoomed = cloneTarget(active.original); - - document.body.appendChild(overlay); - - if (zoomOptions.template) { - var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template); - active.template = document.createElement('div'); - active.template.appendChild(template.content.cloneNode(true)); - - document.body.appendChild(active.template); - } - - document.body.appendChild(active.zoomed); - - window.requestAnimationFrame(function () { - document.body.classList.add('medium-zoom--opened'); - }); - - active.original.classList.add('medium-zoom-image--hidden'); - active.zoomed.classList.add('medium-zoom-image--opened'); - - active.zoomed.addEventListener('click', close); - active.zoomed.addEventListener('transitionend', _handleOpenEnd); - - if (active.original.getAttribute('data-zoom-src')) { - active.zoomedHd = active.zoomed.cloneNode(); - - // Reset the `scrset` property or the HD image won't load. - active.zoomedHd.removeAttribute('srcset'); - active.zoomedHd.removeAttribute('sizes'); - - active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src'); - - active.zoomedHd.onerror = function () { - clearInterval(getZoomTargetSize); - console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src); - active.zoomedHd = null; - _animate(); - }; - - // We need to access the natural size of the full HD - // target as fast as possible to compute the animation. - var getZoomTargetSize = setInterval(function () { - if ( active.zoomedHd.complete) { - clearInterval(getZoomTargetSize); - active.zoomedHd.classList.add('medium-zoom-image--opened'); - active.zoomedHd.addEventListener('click', close); - document.body.appendChild(active.zoomedHd); - _animate(); - } - }, 10); - } else if (active.original.hasAttribute('srcset')) { - // If an image has a `srcset` attribuet, we don't know the dimensions of the - // zoomed (HD) image (like when `data-zoom-src` is specified). - // Therefore the approach is quite similar. - active.zoomedHd = active.zoomed.cloneNode(); - - // Resetting the sizes attribute tells the browser to load the - // image best fitting the current viewport size, respecting the `srcset`. - active.zoomedHd.removeAttribute('sizes'); - - // In Firefox, the `loading` attribute needs to be set to `eager` (default - // value) for the load event to be fired. - active.zoomedHd.removeAttribute('loading'); - - // Wait for the load event of the hd image. This will fire if the image - // is already cached. - var loadEventListener = active.zoomedHd.addEventListener('load', function () { - active.zoomedHd.removeEventListener('load', loadEventListener); - active.zoomedHd.classList.add('medium-zoom-image--opened'); - active.zoomedHd.addEventListener('click', close); - document.body.appendChild(active.zoomedHd); - _animate(); - }); - } else { - _animate(); - } - }); - }; - - var close = function close() { - return new Promise(function (resolve) { - if (isAnimating || !active.original) { - resolve(zoom); - return; - } - - var _handleCloseEnd = function _handleCloseEnd() { - active.original.classList.remove('medium-zoom-image--hidden'); - document.body.removeChild(active.zoomed); - if (active.zoomedHd) { - document.body.removeChild(active.zoomedHd); - } - document.body.removeChild(overlay); - active.zoomed.classList.remove('medium-zoom-image--opened'); - if (active.template) { - document.body.removeChild(active.template); - } - - isAnimating = false; - active.zoomed.removeEventListener('transitionend', _handleCloseEnd); - - active.original.dispatchEvent(createCustomEvent('medium-zoom:closed', { - detail: { zoom: zoom } - })); - - active.original = null; - active.zoomed = null; - active.zoomedHd = null; - active.template = null; - - resolve(zoom); - }; - - isAnimating = true; - document.body.classList.remove('medium-zoom--opened'); - active.zoomed.style.transform = ''; - - if (active.zoomedHd) { - active.zoomedHd.style.transform = ''; - } - - // Fade out the template so it's not too abrupt - if (active.template) { - active.template.style.transition = 'opacity 150ms'; - active.template.style.opacity = 0; - } - - active.original.dispatchEvent(createCustomEvent('medium-zoom:close', { - detail: { zoom: zoom } - })); - - active.zoomed.addEventListener('transitionend', _handleCloseEnd); - }); - }; - - var toggle = function toggle() { - var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, - target = _ref3.target; - - if (active.original) { - return close(); - } - - return open({ target: target }); - }; - - var getOptions = function getOptions() { - return zoomOptions; - }; - - var getImages = function getImages() { - return images; - }; - - var getZoomedImage = function getZoomedImage() { - return active.original; - }; - - var images = []; - var eventListeners = []; - var isAnimating = false; - var scrollTop = 0; - var zoomOptions = options; - var active = { - original: null, - zoomed: null, - zoomedHd: null, - template: null - - // If the selector is omitted, it's replaced by the options - };if (Object.prototype.toString.call(selector) === '[object Object]') { - zoomOptions = selector; - } else if (selector || typeof selector === 'string' // to process empty string as a selector - ) { - attach(selector); - } - - // Apply the default option values - zoomOptions = _extends({ - margin: 0, - background: '#fff', - scrollOffset: 40, - container: null, - template: null - }, zoomOptions); - - var overlay = createOverlay(zoomOptions.background); - - document.addEventListener('click', _handleClick); - document.addEventListener('keyup', _handleKeyUp); - document.addEventListener('scroll', _handleScroll); - window.addEventListener('resize', close); - - var zoom = { - open: open, - close: close, - toggle: toggle, - update: update, - clone: clone, - attach: attach, - detach: detach, - on: on, - off: off, - getOptions: getOptions, - getImages: getImages, - getZoomedImage: getZoomedImage - }; - - return zoom; - }; - - function styleInject(css, ref) { - if ( ref === void 0 ) { ref = {}; } - var insertAt = ref.insertAt; - - if (!css || typeof document === 'undefined') { return; } - - var head = document.head || document.getElementsByTagName('head')[0]; - var style = document.createElement('style'); - style.type = 'text/css'; - - if (insertAt === 'top') { - if (head.firstChild) { - head.insertBefore(style, head.firstChild); - } else { - head.appendChild(style); - } - } else { - head.appendChild(style); - } - - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - } - } - - var css = ".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}"; - styleInject(css); - - /* eslint-disable no-unused-vars */ - - var matchesSelector = - Element.prototype.matches || - Element.prototype.webkitMatchesSelector || - Element.prototype.msMatchesSelector; - - function install(hook) { - var zoom; - - hook.doneEach(function (_) { - var elms = Array.apply( - null, - document.querySelectorAll( - '.markdown-section img:not(.emoji):not([data-no-zoom])' - ) - ); - - elms = elms.filter(function (elm) { return matchesSelector.call(elm, 'a img') === false; }); - - if (zoom) { - zoom.detach(); - } - - zoom = mediumZoom(elms); - }); - } - - $docsify.plugins = [].concat(install, $docsify.plugins); - -}()); diff --git a/docs/thx.md b/docs/thx.md deleted file mode 100644 index f773594..0000000 --- a/docs/thx.md +++ /dev/null @@ -1,4 +0,0 @@ -- 剩爪(感谢建群) -- 激石网页设计-小徐(感谢找bug和提建议) -- Bumblebee47大怪兽47(感谢测试) -- kkjj828(感谢建议) \ No newline at end of file