diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000000..0a20668d176 Binary files /dev/null and b/.DS_Store differ diff --git a/.gems/jekyll-archives/test/source/_posts/2013-08-16-post-from-yesteryear.md b/.gems/jekyll-archives/test/source/_posts/2013-08-16-post-from-yesteryear.md index cd79b4cdc0a..c83a001cd01 100644 --- a/.gems/jekyll-archives/test/source/_posts/2013-08-16-post-from-yesteryear.md +++ b/.gems/jekyll-archives/test/source/_posts/2013-08-16-post-from-yesteryear.md @@ -1,4 +1,5 @@ --- +layout: post title: Post from yesteryear --- diff --git a/.gems/jekyll-archives/test/source/_posts/2014-03-15-tagged-post.md b/.gems/jekyll-archives/test/source/_posts/2014-03-15-tagged-post.md index 8c3ca08a748..d057ee4bd3d 100644 --- a/.gems/jekyll-archives/test/source/_posts/2014-03-15-tagged-post.md +++ b/.gems/jekyll-archives/test/source/_posts/2014-03-15-tagged-post.md @@ -1,4 +1,5 @@ --- +layout: post title: Tagged post tags: ["Test Tag", tagged] --- diff --git a/.gems/jekyll-archives/test/source/_posts/2014-08-17-introducing-jekyll-archives.md b/.gems/jekyll-archives/test/source/_posts/2014-08-17-introducing-jekyll-archives.md index d04330d506d..be672bf824e 100644 --- a/.gems/jekyll-archives/test/source/_posts/2014-08-17-introducing-jekyll-archives.md +++ b/.gems/jekyll-archives/test/source/_posts/2014-08-17-introducing-jekyll-archives.md @@ -1,4 +1,5 @@ --- +layout: post title: Introducing Jekyll archives! category: plugins tags: new diff --git a/.gems/jekyll-archives/test/source/_posts/2018-11-05-pretty-slugs.md b/.gems/jekyll-archives/test/source/_posts/2018-11-05-pretty-slugs.md index be768a5021e..26d19d54328 100644 --- a/.gems/jekyll-archives/test/source/_posts/2018-11-05-pretty-slugs.md +++ b/.gems/jekyll-archives/test/source/_posts/2018-11-05-pretty-slugs.md @@ -1,4 +1,5 @@ --- +layout: post title: Pretty Slugs category: 💎 --- diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 1dfb2b26dd0..00000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,5 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask the community for help - url: https://github.com/cotes2020/jekyll-theme-chirpy/discussions - about: Please ask and answer questions here. diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml deleted file mode 100644 index 1439beb5c5e..00000000000 --- a/.github/codeql/codeql-config.yml +++ /dev/null @@ -1,2 +0,0 @@ -paths-ignore: - - "assets/js" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 06feb7fd69a..00000000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: ["master"] - paths: ["_javascript/**/*.js"] - pull_request: - paths: ["_javascript/**/*.js"] - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: ["javascript"] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v3 - with: - languages: "${{ matrix.language }}" - config-file: .github/codeql/codeql-config.yml - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v3 - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 - with: - category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/starter/pages-deploy.yml b/.github/workflows/pages-deploy.yml similarity index 98% rename from .github/workflows/starter/pages-deploy.yml rename to .github/workflows/pages-deploy.yml index cc28f99fd25..538cca6588e 100644 --- a/.github/workflows/starter/pages-deploy.yml +++ b/.github/workflows/pages-deploy.yml @@ -31,7 +31,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 - # submodules: true + submodules: true # If using the 'assets' git submodule from Chirpy Starter, uncomment above # (See: https://github.com/cotes2020/chirpy-starter/tree/main/assets) diff --git a/.gitignore b/.gitignore index da4175d85a1..cdd5ccfe7ea 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ package-lock.json !.vscode/settings.json !.vscode/extensions.json !.vscode/tasks.json + +# Misc +script.sh \ No newline at end of file diff --git a/README.md b/README.md index a89c8bf2f1f..980585dc9b4 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,6 @@ -基于 [Chirpy](https://github.com/cotes2020/jekyll-theme-chirpy) 主题定制化的个人博客,博客内容已转移到 `blog` 分支,`master` 将作为模板使用。[此处进入我的博客](https://nihil.cc/)。 + +
+ # My ML Tech stack +
-[![996.icu](https://img.shields.io/badge/link-996.icu-red.svg)](https://996.icu) - -使用之前请先参考原版 Chirpy 的[使用教程](https://chirpy.cotes.page/posts/getting-started/)。 - -与原版 Chirpy 不同的点在于: - -* 在原版支持的评论系统 [Disqus](https://disqus.com/),[Utterances](https://utteranc.es/) 和 [Giscus](https://giscus.app/zh-CN) 外,增加对 [Waline](https://waline.js.org/) 评论系统的支持,参见 `_config.yml` 里的 `comments.waline`。 -* 使用[知乎式 404 界面](https://404.life/564.html),可以返回首页或者返回上一页。 -* 新增了分享到 Line,QQ,QQ 空间和微博,参见 `_data/share.yml`。 -* 使用 [iconfont](https://www.iconfont.cn/) 取代 [Font Awesome](https://fontawesome.com/),有更多的图标选择空间。注意:自 2022-12-29 起,iconfont 路径配置从 `_config.yml` 迁移到了 `_data/origin/cors.yml` 及 `_data/origin/basic.yml` 中的 `iconfont.css`,以支持下载 css 到本地。 -* 右侧边栏添加了外部链接块,参见 `_data/external_links.yml`。 -* 可以自由地控制在帖子中显示右侧边栏哪些块。参见 `_config.yml` 里的 `panel`。 -* 添加了子域页。参见 `_data/subdomain.yml`。不需要该页面的情况下删除 `_tabs/subdomain.md` 即可。 -* 添加了 `
` 标签的样式,同时调整了 blockquote 的样式。 -* 使用改自 [`just the docs`](https://github.com/pmarsceill/just-the-docs) 的表格样式。 -* 将代码染色应用到了行内代码段,例如 `` `let fuck_rust = 114514;`{:.language-rust} ``。 -* 使用 [Fira Code](https://github.com/tonsky/FiraCode) 作为代码段字体。默认对行内代码不开启连体(Ligature),对块代码开启。因为某些原因,在 shell 语言中禁用连体。 -* 暗色主题时,标题和加粗内容在白色文字之中难以区分,增加发光效果以突出显示。 -* 可以配置高亮代码段中的某些行,参考[此处](http://nihil.cc/posts/highlight_lines_for_jekyll/#%E4%BE%8B%E5%AD%90)。 -* 运行代码显示输出结果(开发中,目前支持部分语言),需要在代码段的下一行添加 `{: run="lang" }`,例如: - - ````markdown - ```rust - fn main() { - println!("hello world"); - } - ``` - {: run="rust" } - ```` - - 语言支持情况: - - | 已支持的语言 | `run="lang"` 参数 | 后端 | - | :----------: | :----------------: | :---------------------------------------------: | - | C++ | `run="cpp"` | [Coliru](https://coliru.stacked-crooked.com/) | - | JavaScript | `run="javascript"` | N/A (本地) | - | Python | `run="python"` | [Online Python](https://www.online-python.com/) | - | Rust | `run="rust"` | [Rust Playground](https://play.rust-lang.org/) | - -* (2022-11-29) 支持同名的多级 categories,如果你是从旧版本更新到当前版本,请在本地运行 `bundle update`。原版 Chirpy 使用 `jekyll-archives` 插件生成 categories,该插件将所有 categories 视为同等级别关系,这导致在 Chirpy 中无法使用相同名字的二级 categories,这个问题在本分支中得以修复,可以使用任何同名的多级 categories 了。注意:由于将 `jekyll-archives` 下载到本地 `.gems` 目录,并且将 `Gemfile` 指向本地路径,因此本地需要 `bundle update` 之后才能生效。 -* (2022-12-12) 添加了动画背景效果和鼠标点击效果,考虑到不是所有人都喜欢特效,默认情况下这两都是禁用的。如需开启,请在 `_config.yml` 中配置 `backgroud_animation` 和 `mouse_click_effect` 为 `true`。 - -通常,每周会至少 merge 一次 [`upstream/master`](https://github.com/cotes2020/jekyll-theme-chirpy) 以追踪新的功能。 +基于[nihil](https://nihil.cc/)和[Chirpy](https://chirpy.cotes.page/)修改 \ No newline at end of file diff --git a/_config.yml b/_config.yml index 61315dcfa6d..7a2f1ee3faa 100644 --- a/_config.yml +++ b/_config.yml @@ -13,33 +13,36 @@ timezone: Asia/Shanghai # jekyll-seo-tag 设置 › https://github.com/jekyll/jekyll-seo-tag/blob/master/docs/usage.md # -------------------------- -title: Nihil # 主标题 +title: cyboTiger # 主标题 -tagline: Nichts Hsu # 副标题 +tagline: ML stack # 副标题 description: >- # 由 seo meta 和 atom feed 使用 - Nichts Hsu 的个人博客 + cyboTiger 的个人博客 # 填入你的网站的协议和域名. # 例如,'https://username.github.io',注意不要以 '/' 结尾。 -url: "https://nihil.cc" +url: "https://cybotiger.github.io" + +# Fill in the protocol & hostname for your site. +# E.g. 'https://username.github.io', note that it does not end with a '/'. github: - username: NichtsHsu # Github 用户名 + username: cybotiger # Github 用户名 twitter: - username: NichtsHsu # 推特用户名 + username: zhruhn643327 # 推特用户名 social: # 改为你的全名。 # 这将会显示为帖子的默认作者以及页脚的版权所有者 - name: Nichts Hsu - email: NichtsVonChaos@gmail.com # 邮箱地址 + name: cybotiger + email: ruihanzhu.tiger@gmail.com # 邮箱地址 links: # 第一个链接将会作为版权所有者的链接 - - https://nihil.cc/ - - https://twitter.com/NichtsHsu # 推特主页 - - https://github.com/NichtsHsu # Github 主页 + - https://cybotiger.github.io/ + - https://twitter.com/zhruhn643327 # 推特主页 + - https://github.com/cybotiger # Github 主页 # 取消注释以添加更多链接 # - https://www.facebook.com/username # - https://www.linkedin.com/in/username @@ -90,20 +93,27 @@ pageviews: theme_mode: # [light | dark] # 启用动画背景特效 -backgroud_animation: false +backgroud_animation: true # 启用鼠标点击特效 mouse_click_effect: false +# The CDN endpoint for media resources. +# Notice that once it is assigned, the CDN url +# will be added to all media resources (site avatar, posts' images, audio and video files) paths starting with '/' +# +# e.g. 'https://cdn.com' +cdn: + +# the avatar on sidebar, support local or CORS resources # 媒体资源 CDN 端点。 # 注意一旦被分配,CDN 网址会被加在 # 所有以 '/' 开始的媒体资源(网站头像,帖子中的图像,音频和视频文件)路径上 -# +# # 例如,'https://cdn.com' -cdn: "" # 侧边栏的头像,支持本地或 CROS 资源 -avatar: /avatar.png +avatar: /kagula.png # SEO `og:image` 元标记中使用的全站社交预览图像的 URL。 # 可以在帖子的 Front Matter 中使用 `page.image` 覆盖。 @@ -112,7 +122,7 @@ social_preview_image: # 字符串,本地或跨域资源 # 设置显示右侧边栏的内容 panel: # 设置显示在帖子中右侧边栏的内容 - # + # # 提示: # 全局开关为 false 时必定不显示对应块。 # 全局开关为 true 时,可以在帖子的 md 文件头部使用形如: @@ -120,11 +130,11 @@ panel: # 的方式为该帖子单独关闭右侧边栏的功能。 post: # 最近更新 - lastmod: true + lastmod: false # 热门标签 trending_tags: false # 外部链接 - external_links: true + external_links: false # 目录 toc: true @@ -159,7 +169,7 @@ comments: # 自托管静态资产,可选 › https://github.com/cotes2020/chirpy-static-assets assets: self_host: - enabled: # 布尔值, 置空表示否 + enabled: false # 布尔值, 置空表示否 # 指定 Jekyll 环境,置空意味着都启用 # 仅在 `assets.self_host.enabled` 为 'true' 时生效 env: # [development|production] @@ -176,8 +186,8 @@ pwa: # 每一页的帖子数量 paginate: 10 -# 网站的基础 URL -baseurl: "" +# The base URL of your site +baseurl: "/stack" # ------------ 下面的设置不建议修改 ------------------ diff --git a/_data/authors.yml b/_data/authors.yml index c63770a2e30..950e3ca048b 100644 --- a/_data/authors.yml +++ b/_data/authors.yml @@ -20,3 +20,8 @@ nihil: name: Nichts Hsu twitter: Still_Nihil url: https://nihil.cc/ + +cybotiger: + name: Ruihan Zhu + twitter: zhruhn643327 + url: https://cybotiger.github.io/ diff --git a/_data/contact.yml b/_data/contact.yml index 4d9981fa3e3..1d752a78601 100644 --- a/_data/contact.yml +++ b/_data/contact.yml @@ -1,19 +1,18 @@ # 联系方式选项 - type: github - icon: "iconfont icon-github" + icon: "fab fa-github" - type: twitter - icon: "iconfont icon-twitter" + icon: "fa-brands fa-x-twitter" - type: email - icon: "iconfont icon-mail" - noblank: true # 在当前页面打开链接 + icon: "fas fa-envelope" + noblank: true # open link in current tab - type: rss - icon: "iconfont icon-rss" + icon: "fas fa-rss" noblank: true - # 取消注释并完善下列链接以启用更多联系方式 # - type: mastodon # icon: "iconfont icon-mastodon" diff --git a/_data/external_links.yml b/_data/external_links.yml index 917ecb97b65..fc2cdc88969 100644 --- a/_data/external_links.yml +++ b/_data/external_links.yml @@ -1,15 +1,14 @@ -- - icon: https://img.shields.io/badge/link-996.icu-red.svg +- icon: https://img.shields.io/badge/link-996.icu-red.svg # 是否使用 Iconfont 的图标字体 - use_iconfont: false + use_iconfont: true name: 996.icu # 为 true 时当且仅当图片无法加载时,使用名字替代。为 false 时始终显示名字。 automatic_name: true link: https://996.icu # 在下面添加更多外部链接 # - -# icon: +# icon: # use_iconfont: # name: # automatic_name: -# link: \ No newline at end of file +# link: diff --git a/_data/locales/en.yml b/_data/locales/en.yml index 952eb1c03f5..f6d1b8e7830 100644 --- a/_data/locales/en.yml +++ b/_data/locales/en.yml @@ -11,7 +11,6 @@ layout: tabs: # format: : home: Home - subdomain: Subdomain categories: Categories tags: Tags archives: Archives diff --git a/_data/locales/zh-CN.yml b/_data/locales/zh-CN.yml index ddcb8a79e55..acbaa56f11f 100644 --- a/_data/locales/zh-CN.yml +++ b/_data/locales/zh-CN.yml @@ -11,7 +11,6 @@ layout: tabs: # 格式: <无尾缀文件名>: <值> home: 首页 - subdomain: 子域 categories: 分类 tags: 标签 archives: 归档 diff --git a/_data/origin/basic.yml b/_data/origin/basic.yml index 32e51c26a7b..2d5298229d3 100644 --- a/_data/origin/basic.yml +++ b/_data/origin/basic.yml @@ -37,27 +37,3 @@ clipboard: mathjax: js: /assets/lib/mathjax/tex-chtml.js - -firacode: - css: /assets/lib/firacode/distr/fira_code.css - -socket-io-client: - js: /assets/lib/socket.io-client/dist/socket.io.min.js - -waline: - js: /assets/lib/client/dist/waline.js - css: /assets/lib/client/dist/waline.css - emojis: /assets/lib/emojis - -# 自定义 Iconfont 的图标链接。 › https://www.iconfont.cn/ -# 需要添加自己的 Iconfont 图标,请在 Iconfont 中新建项目, -# 加入图标到项目,选择 Font Class,查看在线链接,并将其拷贝到下面。 -# -# 注意:请不要与项目原本使用的图标重名,请全局搜索以确保该名称没被使用。 -# 一个比较好的办法是修改 Iconfont 项目的 FontClass/Symbol 前缀为其他值。 -iconfont: - css: - # 此 css 包含以 'icon-' 为前缀的图标,为模板的核心图标,请勿删除。 - - /assets/lib/iconfont/font_2440352_5nfkefwgc3q/iconfont.css - # 添加你的 Iconfont 图标链接 - # - diff --git a/_data/origin/cors.yml b/_data/origin/cors.yml index e064de72c86..fdb43d07810 100644 --- a/_data/origin/cors.yml +++ b/_data/origin/cors.yml @@ -53,9 +53,6 @@ clipboard: mathjax: js: https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-chtml.js -firacode: - css: https://cdn.jsdelivr.net/npm/firacode@6.2.0/distr/fira_code.css - socket-io-client: js: https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/socket.io.min.js @@ -75,4 +72,4 @@ iconfont: # 此 css 包含以 'icon-' 为前缀的图标,为模板的核心图标,请勿删除。 - https://at.alicdn.com/t/c/font_2440352_o7nixqud1l.css # 添加你的 Iconfont 图标链接 - # - + # - diff --git a/_data/share.yml b/_data/share.yml index 0c9a77fe5f0..5590d6cc224 100644 --- a/_data/share.yml +++ b/_data/share.yml @@ -5,29 +5,29 @@ platforms: icon: "icon-twitter" link: "https://twitter.com/intent/tweet?text=TITLE&url=URL" - - type: Line - icon: "icon-13" - link: "https://lineit.line.me/share/ui?url=URL&text=TITLE" + # - type: Line + # icon: "icon-13" + # link: "https://lineit.line.me/share/ui?url=URL&text=TITLE" - - type: Facebook - icon: "icon-facebook" - link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL" + # - type: Facebook + # icon: "icon-facebook" + # link: "https://www.facebook.com/sharer/sharer.php?title=TITLE&u=URL" - - type: Telegram - icon: "icon-telegram" - link: "https://t.me/share/url?url=URL&text=TITLE" + # - type: Telegram + # icon: "icon-telegram" + # link: "https://t.me/share/url?url=URL&text=TITLE" - - type: QQ - icon: "icon-QQ" - link: "https://connect.qq.com/widget/shareqq/index.html?url=URL&title=TITLE" + # - type: QQ + # icon: "icon-QQ" + # link: "https://connect.qq.com/widget/shareqq/index.html?url=URL&title=TITLE" - - type: QQ 空间 - icon: "icon-qzone" - link: "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=URL&title=TITLE" + # - type: QQ 空间 + # icon: "icon-qzone" + # link: "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=URL&title=TITLE" - - type: 微博 - icon: "icon-weibo" - link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL" + # - type: 微博 + # icon: "icon-weibo" + # link: "https://service.weibo.com/share/share.php?title=TITLE&url=URL" # - type: Linkedin # icon: "icon-linkedin" diff --git a/_data/subdomain.yml b/_data/subdomain.yml deleted file mode 100644 index 8d34fbc5084..00000000000 --- a/_data/subdomain.yml +++ /dev/null @@ -1,6 +0,0 @@ -# - -# icon: 保存在 assets/img/subdomain 下的图标 -# link: 子域名链接 -# title: 标题 -# description: >- -# 描述 \ No newline at end of file diff --git a/_includes/head.html b/_includes/head.html index 3e0319f98b7..4d0e3f5fcd3 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -1,144 +1,137 @@ - - - - - + + + + + + /> - {%- capture seo_tags -%} - {% seo title=false %} - {%- endcapture -%} + {%- capture seo_tags -%} {% seo title=false %} {%- endcapture -%} - {% if page.image %} - {% assign src = page.image.path | default: page.image %} - - {% unless src contains '://' %} - {%- capture img_url -%} - {% include media-url.html src=src subpath=page.media_subpath absolute=true %} - {%- endcapture -%} - - {%- capture old_url -%}{{ src | absolute_url }}{%- endcapture -%} - {%- capture new_url -%}{{ img_url }}{%- endcapture -%} - - {% assign seo_tags = seo_tags | replace: old_url, new_url %} - {% endunless %} - - {% elsif site.social_preview_image %} - {%- capture img_url -%} - {% include media-url.html src=site.social_preview_image absolute=true %} - {%- endcapture -%} - - {%- capture og_image -%} - - {%- endcapture -%} - - {%- capture twitter_image -%} - - - {%- endcapture -%} - - {% assign old_meta_clip = '' %} - {% assign new_meta_clip = og_image | append: twitter_image %} - {% assign seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %} - {% endif %} - - {{ seo_tags }} + {% if page.image %} {% assign src = page.image.path | default: page.image %} + {% unless src contains '://' %} {%- capture img_url -%} {% include + media-url.html src=src subpath=page.media_subpath absolute=true %} {%- + endcapture -%} {%- capture old_url -%}{{ src | absolute_url }}{%- endcapture + -%} {%- capture new_url -%}{{ img_url }}{%- endcapture -%} {% assign seo_tags + = seo_tags | replace: old_url, new_url %} {% endunless %} {% elsif + site.social_preview_image %} {%- capture img_url -%} {% include media-url.html + src=site.social_preview_image absolute=true %} {%- endcapture -%} {%- capture + og_image -%} + + {%- endcapture -%} {%- capture twitter_image -%} + + + {%- endcapture -%} {% assign old_meta_clip = ' + + ' %} {% assign new_meta_clip = og_image | append: twitter_image %} {% assign + seo_tags = seo_tags | replace: old_meta_clip, new_meta_clip %} {% endif %} {{ + seo_tags }} - {%- unless page.layout == 'home' -%} - {{ page.title | flatify | append: ' | '}} - {%- endunless -%} - {{ site.title | flatify }} + {%- unless page.layout == 'home' -%} {{ page.title | flatify | append: ' | + '}} {%- endunless -%} {{ site.title | flatify }} {% include_cached favicons.html %} - {% unless site.assets.self_host.enabled %} - {% for hint in site.data.origin.cors.resource_hints %} - {% for link in hint.links %} - - {% endfor %} - {% endfor %} - {% endunless %} + {% unless site.assets.self_host.enabled %} {% for hint in + site.data.origin.cors.resource_hints %} {% for link in hint.links %} {% + endfor %} {% endfor %} {% endunless %} {% unless jekyll.environment == 'production' %} - + {% endunless %} - + - + - + - {% if site.data.origin[type].iconfont.css %} - {% for css in site.data.origin[type].iconfont.css %} - - {% endfor %} - {% endif %} - - - - - {% if site.panel.post.toc and page.toc %} - - {% endif %} - - {% if page.layout == 'post' or page.layout == 'page' or page.layout == 'home' %} - - {% endif %} - - {% if page.layout == 'page' or page.layout == 'post' %} - - + {% if site.data.origin[type].iconfont.css %} {% for css in + site.data.origin[type].iconfont.css %} + + {% endfor %} {% endif %} {% if site.panel.post.toc and page.toc %} + + {% endif %} {% if page.layout == 'post' or page.layout == 'page' or + page.layout == 'home' %} + + {% endif %} {% if page.layout == 'page' or page.layout == 'post' %} + + {% endif %} - + {% if site.mouse_click_effect %} - - {% endif %} - - {% unless site.theme_mode %} - - {% endunless %} - - {% include js-selector.html lang=lang %} - - {% if jekyll.environment == 'production' %} - - {% if site.pwa.enabled %} - - {% endif %} - - - {% for analytics in site.analytics %} - {% capture str %}{{ analytics }}{% endcapture %} - {% assign platform = str | split: '{' | first %} - {% if site.analytics[platform].id and site.analytics[platform].id != empty %} - {% include analytics/{{ platform }}.html %} - {% endif %} - {% endfor %} + + {% endif %} {% unless site.theme_mode %} + + {% endunless %} {% include js-selector.html lang=lang %} {% if + jekyll.environment == 'production' %} + + {% if site.pwa.enabled %} + {% endif %} + + {% for analytics in site.analytics %} {% capture str %}{{ analytics }}{% + endcapture %} {% assign platform = str | split: '{' | first %} {% if + site.analytics[platform].id and site.analytics[platform].id != empty %} {% + include analytics/{{ platform }}.html %} {% endif %} {% endfor %} {% endif %} {% include metadata-hook.html %} diff --git a/_includes/sidebar.html b/_includes/sidebar.html index 16a0b58dd96..77eecb0e00b 100644 --- a/_includes/sidebar.html +++ b/_includes/sidebar.html @@ -43,7 +43,7 @@ @@ -77,21 +81,14 @@
- {% if site.pwa.enabled %} - {% include_cached notification.html lang=lang %} - {% endif %} - - {% if site.backgroud_animation %} - {% include animated-background.html %} - {% endif %} + {% if site.pwa.enabled %} {% include_cached notification.html lang=lang %} + {% endif %} {% if site.backgroud_animation %} {% include + animated-background.html %} {% endif %} - {% for _include in layout.script_includes %} - {% assign _include_path = _include | append: '.html' %} - {% include {{ _include_path }} %} - {% endfor %} - + {% for _include in layout.script_includes %} {% assign _include_path = + _include | append: '.html' %} {% include {{ _include_path }} %} {% endfor %} {% include_cached search-loader.html lang=lang %} diff --git a/_layouts/default2.html b/_layouts/default2.html new file mode 100644 index 00000000000..29eb98069e7 --- /dev/null +++ b/_layouts/default2.html @@ -0,0 +1,92 @@ +--- +layout: compress +--- + + + +{% include origin-type.html %} {% include lang.html %} {% if site.theme_mode %} +{% capture prefer_mode %}data-mode="{{ site.theme_mode }}"{% endcapture %} {% +endif %} + + + + {% include head.html %} + + +
+
+ {% include topbar.html lang=lang %} + +
+
+ {% if layout.refactor or layout.layout == 'default' and + page.permalink != '/404.html' %} {% include refactor-content.html + content=content lang=lang %} {% else %} {{ content }} {% endif %} +
+ + + +
+ +
+ +
+ {% for _include in layout.tail_includes %} {% assign _include_path = + _include | flatify | append: '.html' %} {% include {{ _include_path + }} lang=lang %} {% endfor %} {% include_cached footer.html lang=lang + %} +
+
+ + {% include_cached search-results.html lang=lang %} +
+ + +
+ +
+ + {% if site.pwa.enabled %} {% include_cached notification.html lang=lang %} + {% endif %} {% if site.backgroud_animation %} {% include + animated-background.html %} {% endif %} + + + + {% for _include in layout.script_includes %} {% assign _include_path = + _include | append: '.html' %} {% include {{ _include_path }} %} {% endfor %} + {% include_cached search-loader.html lang=lang %} + + diff --git a/_layouts/post.html b/_layouts/post.html index 8fd53ea11c1..cefe91470d5 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -1,5 +1,5 @@ --- -layout: default +layout: default2 refactor: true panel_includes: - toc @@ -10,85 +10,78 @@ - comment --- -{% include lang.html %} - -{% include toc-status.html %} +{% include lang.html %} {% include toc-status.html %}

{{ page.title }}

{% if page.description %} -

{{ page.description }}

+

{{ page.description }}

{% endif %}
{% if enable_toc %} - - - + - -
-
{{- page.title -}}
- -
-
-
+ + + +
+
{{- page.title -}}
+ +
+
+
{% endif %} -
- {{ content }} -
+
{{ content }}
{% if page.categories.size > 0 %} {% endif %} {% if page.tags.size > 0 %} - + {% endif %}
- {% if site.data.locales[lang].copyright.license.template %} - {% capture _replacement %} + {% if site.data.locales[lang].copyright.license.template %} {% capture + _replacement %} {{ site.data.locales[lang].copyright.license.name }} - {% endcapture %} - - {{ site.data.locales[lang].copyright.license.template | replace: ':LICENSE_NAME', _replacement }} - {% endif %} + {% endcapture %} {{ site.data.locales[lang].copyright.license.template | + replace: ':LICENSE_NAME', _replacement }} {% endif %}
{% include post-sharing.html lang=lang %} diff --git a/_layouts/subdomain.html b/_layouts/subdomain.html deleted file mode 100644 index 91edacaf3f0..00000000000 --- a/_layouts/subdomain.html +++ /dev/null @@ -1,33 +0,0 @@ ---- -layout: page -# List all subdomains ---- - -
- {% for subdomain in site.data.subdomain %} - - {% endfor %} -
\ No newline at end of file diff --git a/_posts/2022-11-21-please_remove_this.md b/_posts/2022-11-21-please_remove_this.md deleted file mode 100644 index 21d5c4c3a52..00000000000 --- a/_posts/2022-11-21-please_remove_this.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: Please Remove This Post -date: 2022-11-21 9:42:38 +0800 -categories: [Test, Placeholder] -tags: [test] # TAG names should always be lowercase ---- - -## 请移除该帖子 - -该帖子仅仅只是为了保证 `_posts` 文件夹不被 git 忽略而存在的。 diff --git a/_posts/2025-03-17-PPO.md b/_posts/2025-03-17-PPO.md new file mode 100644 index 00000000000..235e86e8a7d --- /dev/null +++ b/_posts/2025-03-17-PPO.md @@ -0,0 +1,479 @@ +--- +title: PPO算法 +description: >- + RL基础 +author: cybotiger +date: 2025-03-17 12:00:00 +0800 +categories: [AI] +tags: [] +pin: false +math: true +mermaid: true +--- + +## 1. 背景 +策略梯度优化中最常用的 gradient estimator 是 + +$$ +\hat{g}=\hat{\mathbb{E}}_{t}\Big{[}\nabla_{\theta}\log\pi_{\theta}(a_{t}\,|\,s_{t})\hat{A}_{t}\Big{]} +$$ + +因此可以构造最原始的 objective function 如下: + +$$ +L^{PG}(\theta)=\hat{\mathbb{E}}_{t}\Big{[}\log\pi_{\theta}(a_{t}\,|\,s_{t})\hat{A}_{t}\Big{]} +$$ + +### TRPO算法 +全称 Trust Region Policy Optimization,为了避免更新后的策略偏离原来策略过多,引入 KL 散度限制,在此限制下最大化 objective function 如下: + +$$ +\max_\theta\ \ \ +\hat{\mathbb{E}}_{t}\Big{[}\frac{\pi_{\theta}(a_{t}\,|\,s_{t})}{\pi_{\theta_{old}}(a_{t}\,|\,s_{t})}\hat{A}_{t}\Big{]} +$$ + +$$ +\text{subject to: }\ \ \ +\hat{\mathbb{E}}_{t}[\text{KL}[\pi_{\theta_{old}}(\cdot\,|\,s_{t}),\pi_{\theta}(\cdot\,|\,s_{t})]] \leq \delta +$$ + +实际中,使用共轭梯度方法求解该问题,对 objective 使用一阶近似,对 constraint 使用二阶近似; + +TRPO 算法的理论依据是将上述的限制转化为惩罚项,即优化以下目标: + +$$ +\hat{\mathbb{E}}_{t}\Big{[}\frac{\pi_{\theta}(a_{t}\,|\,s_{t})}{\pi_{\theta_{old}}(a_{t}\,|\,s_{t})}\hat{A}_{t}-\beta\,\text{KL}[\pi_{\theta_{old}}(\cdot\,|\,s_{t}),\pi_{\theta}(\cdot\,|\,s_{t})]\Big{]} +$$ + +但在实际过程中,很难确定惩罚项系数 $\beta$ 的值,一般需要在学习的过程中动态的调整,即 adaptive KL penalty + +## 2. PPO算法 +记概率比 $r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)}$(于是有 $r_t(\theta_{\text{old}}) = 1$)。TRPO 的目标函数为: + +$$ +L^{CPI}(\theta) = \hat{E}_t \left[ \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} \hat{A}_t \right] = \hat{E}_t \left[ r_t(\theta) \hat{A}_t \right] +$$ + +而 PPO 进行了裁剪(clip),来防止策略偏离过大: + +$$ +L^{CLIP}(\theta) = \hat{E}_t \left[ \min\left(r_t(\theta) \hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1 + \epsilon) \hat{A}_t\right) \right] +$$ + +可以看到 $L^{CLIP}(\theta)$ 是 $L^{PG}(\theta)$ 的下界,只会更差,不会更好 + +![PPO objective](/assets/img/rl/image.png) + +### 具体算法 +#### 优势函数 +多数优势函数会用到一个可学习的状态-价值函数 $V(s)$ 来估计当前状态下的价值,比如 GAE(Generalized Advantage Estimator)。PPO 使用的是 GAE 的截断版本(从 $\infty$ 截断到 $T$ 时间步),在 rollout 时进行 T 步采样,计算每一步 t 的优势: + +$$ +\hat{A}_{t} = \delta_{t} + (\gamma\lambda)\delta_{t+1} + \cdots + (\gamma\lambda)^{T-t-1}\delta_{T-1} +$$ + +$$ +\text{where}\ \ \delta_{t} = r_{t} + \gamma V(s_{t+1}) - V(s_{t}) +$$ + +> 当 $\lambda=1$ 时,该式退化为 +> +> $$ +> \hat{A}_{t} = -V(s_{t}) + r_{t} + \gamma r_{t+1} + \cdots + \gamma^{T-t-1}r_{T-1} + \gamma^{T-t}V(s_{T}) +> $$ +> +> 即多步时序差分 + +PPO 算法的伪代码如下: + +![ppo algo](/assets/img/rl/image1.png) + +N 个 actor 并行采样生成 T 步轨迹,利用这 NT 个样本,进行 K 个 epoch 的批次优化 + +#### 加强目标函数 +如果 actor 和 critic(即 value model)共享参数,那么需要同时优化 critic 与目标价值的 loss;此外还可以引入 entropy bonus 来鼓励探索。综合上述,就有如下的加强版 PPO: + +$$ +L_{t}^{CLIP+VF+S}(\theta) = \hat{\mathbb{E}}_{t}\left[L_{t}^{CLIP}(\theta) - c_{1}L_{t}^{VF}(\theta) + c_{2}S[\pi_{\theta}](s_{t})\right] +$$ + + +--- + +## 参考资料 + +[知乎:从策略梯度开始理解PPO算法](https://zhuanlan.zhihu.com/p/614115887) + +### 1. 传统策略梯度算法 + +#### **1.1 从价值近似到策略近似** + +强化学习算法可以分为两大类:基于值函数的强化学习和基于策略的强化学习。 + +- **基于值函数的强化学习**通过递归地求解贝尔曼方程来维护Q值函数(可以是离散的列表,也可以是神经网络),每次选择动作时会选择该状态下对应Q值最大的动作,使得未来积累的期望奖励值最大。这些算法在学习后的Q值函数不再发生变化,每次做出的策略也是一定的,可以理解为确定性策略。policy 如下: + + $$ + \pi:s \rightarrow a + $$ + +- **基于策略的强化学习**不再通过价值函数来确定选择动作的策略,而是直接学习策略本身,通过一组参数 $\theta$ 对策略进行参数化,并通过神经网络方法优化。policy 如下: + + $$ + \pi_\theta(a|s)=P(a|s;\theta) + $$ + + +#### **1.2 定义目标函数** + +$$ +\max_{\theta} J(\theta) = \max_{\theta} \mathbb{E}_{\tau \sim \pi_{\theta}} R(\tau) = \max_{\theta} \sum_{\tau} P(\tau;\theta)R(\tau) +$$ + +其中轨迹 $\tau$ 是agent与环境交互产生的状态-动作轨迹 $(s_1,a_1,s_2,a_2,...)$,服从 $\pi_\theta$ 的概率分布 + + + +### [AUX] 术语介绍 +> Generated by Deepseek +{: .prompt-info } + +在强化学习中,**优势函数(A)**、**价值函数(V)** 和 **奖励(R)** 是核心概念,它们共同描述了智能体在环境中的决策依据和长期收益的评估。以下是它们的定义、区别和关系: + +--- + +#### 1. **奖励(R, Reward)** + - **定义**: + 奖励是环境在智能体执行某个动作后给出的**即时反馈信号**(标量值),表示该动作的短期好坏。 + - 例如:游戏中得分增加(+1)、碰撞障碍物(-10)。 + - **数学表示**: + $ R_t $ 表示时间步 $ t $ 的即时奖励。 + - **特点**: + - 完全由环境决定,是强化学习中最基础的信号。 + - 仅反映当前动作的瞬时效果,不包含长期信息。 + +--- + +#### 2. **状态价值函数(V, State Value Function)** + - **定义**: + 状态价值函数 $ V^\pi(s) $ 表示在状态 $ s $ 下,**遵循策略 $ \pi $ 后能获得的预期累积奖励**(考虑未来奖励的折扣)。 + - 回答:“当前状态 $ s $ 长期来看有多好?” + - **数学表示**: + $$ + V^\pi(s) = \mathbb{E}_{\pi} \left[ \sum_{k=0}^\infty \gamma^k R_{t+k} \mid S_t = s \right] + $$ + - $ \gamma \in [0,1] $ 是折扣因子,平衡即时奖励和未来奖励的重要性。 + - **特点**: + - 评价的是**状态**的长期价值,与具体动作无关。 + - 由策略 $ \pi $ 决定(不同策略下同一状态的价值可能不同)。 + +--- + +#### 3. **优势函数(A, Advantage Function)** + - **定义**: + 优势函数 $ A^\pi(s,a) $ 表示在状态 $ s $ 下执行动作 $ a $ **相比策略 $ \pi $ 的平均水平有多好**。 + - 回答:“在状态 $ s $ 下选择动作 $ a $ 比默认策略好多少?” + - **数学表示**: + $$ + A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s) + $$ + 其中 $ Q^\pi(s,a) $ 是动作价值函数(即状态-动作对的预期累积奖励)。 + - **特点**: + - 若 $ A > 0 $,说明动作 $ a $ 优于策略 $ \pi $ 的平均水平;反之则劣于平均水平。 + - 用于减少策略梯度的方差(如Actor-Critic方法)。 + +--- + +#### 三者的关系 +##### 1. **数学关系** + - **动作价值函数 $ Q^\pi(s,a) $** 是核心桥梁: + + $$ + Q^\pi(s,a) = \mathbb{E}_{\pi} \left[ R_t + \gamma V^\pi(S_{t+1}) \mid S_t=s, A_t=a \right] + $$ + + - **优势函数 $ A $** 通过 $ Q $ 和 $ V $ 计算: + + $$ + A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s) + $$ + + - **价值函数 $ V $** 是 $ Q $ 对动作的期望: + + $$ + V^\pi(s) = \mathbb{E}_{a \sim \pi} \left[ Q^\pi(s,a) \right] + $$ + +##### 2. **直观理解** + - **奖励 $ R $** 是即时反馈,**价值 $ V $** 是长期评价,**优势 $ A $** 是动作的相对优势。 + - **例子**(游戏场景): + - 当前状态 $ s $:玩家面对敌人。 + - 动作 $ a $:发射子弹。 + - $ R $:击中敌人(+10),未击中(0)。 + - $ V(s) $:当前状态的长期预期得分(如+50)。 + - $ Q(s,a) $:选择“发射子弹”的长期预期得分(如+60)。 + - $ A(s,a) = Q(s,a) - V(s) = +10 $ → 发射子弹比平均策略更好。 + +--- + +#### 关键区别 + +| 概念 | 评价对象 | 依赖关系 | 用途 | +|:--------------|:-------------|:----------------|:-----------------------| +| **奖励 $ R $** | 即时动作的效果 | 由环境直接给出 | 策略优化的原始信号 | +| **价值 $ V $** | 状态的长期价值 | 依赖策略 $ \pi $ | 评估状态好坏,作为基线 | +| **优势 $ A $** | 动作的相对优势 | $ A = Q - V $ | 减少方差,指导策略更新方向 | + +--- + +#### 在PPO中的具体应用 +1. **计算优势函数**: + PPO 使用广义优势估计(GAE)来平衡偏差和方差: + + $$ + A_t^{\text{GAE}} = \sum_{k=0}^{T-t} (\gamma \lambda)^k \delta_{t+k}, \quad \delta_t = R_t + \gamma V(S_{t+1}) - V(S_t) + $$ + + - $ \lambda $ 是GAE的超参数,控制方差与偏差的权衡。 + +2. **策略更新**: + PPO 的损失函数利用优势函数 $ A $ 加权策略更新: + + $$ + L^{\text{CLIP}} = -\mathbb{E} \left[ \min \left( r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t \right) \right] + $$ + + - $ r_t(\theta) $ 是新旧策略的重要性采样比率。 + +--- + +#### 总结 +- **奖励 $ R $** 是环境的即时反馈,**价值 $ V $** 是状态的长期评价,**优势 $ A $** 是动作的相对改进潜力。 +- **关系链**: + + $$ + R \rightarrow Q \rightarrow \begin{cases} + V = \mathbb{E}_\pi [Q] \\ + A = Q - V + \end{cases} + $$ + +- 优势函数在策略梯度方法中至关重要,它帮助智能体识别哪些动作值得更多探索或利用。 + +在强化学习中,**重要性采样比率(Importance Sampling Ratio)** $ r_t(\theta) $ 和 PPO 的**截断(Clipping)**机制是保证策略梯度方法稳定性的核心设计。下面详细解释它们的作用和原理。 + +--- + +#### **1. 重要性采样比率 $ r_t(\theta) $ 的作用** +##### **(1)定义** +重要性采样比率衡量**新策略**和**旧策略**在相同状态下选择某个动作的概率比: +$$ +r_t(\theta) = \frac{\pi_\theta(a_t | s_t)}{\pi_{\theta_{\text{old}}}(a_t | s_t)} +$$ +其中: +- $ \pi_\theta $ 是**新策略**(待优化的策略)。 +- $ \pi_{\theta_{\text{old}}} $ 是**旧策略**(采样数据时的策略)。 + +##### **(2)作用** +1. **修正策略更新的偏差** + - PPO 是一种**异策略(Off-Policy)**算法,即用于采样的策略(旧策略)和待优化的策略(新策略)不同。 + - 由于新策略的参数 $ \theta $ 不断变化,直接用新策略的梯度更新会导致偏差。 + - **重要性采样比率** $ r_t(\theta) $ 用于调整梯度更新,使其仍然适用于旧策略采样的数据。 + +2. **计算策略更新的权重** + - 在策略梯度法中,我们希望最大化 **优势函数 $ A_t $** 加权后的策略概率: + + $$ + \mathbb{E}_{a \sim \pi_{\theta_{\text{old}}}} \left[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{\text{old}}}(a|s)} A_t \right] + $$ + + - 如果 $ r_t(\theta) > 1 $,说明新策略比旧策略更倾向于选择该动作,应该加强该动作的概率。 + - 如果 $ r_t(\theta) < 1 $,说明新策略不太愿意选择该动作,应该降低其概率。 + +--- + +#### **2. 为什么 PPO 的损失函数要截断(Clipping)?** +##### **(1)问题:重要性采样比率的不稳定性** +- 如果新策略 $ \pi_\theta $ 和旧策略 $ \pi_{\theta_{\text{old}}} $ 差异太大,$ r_t(\theta) $ 可能会变得**极大或极小**,导致: + 1. **梯度爆炸**:如果 $ r_t(\theta) $ 极大,梯度更新可能过大,导致训练不稳定。 + 2. **策略崩溃**:如果 $ r_t(\theta) $ 极小,某些动作的概率可能被过度压制,导致探索不足。 + +##### **(2)PPO 的解决方案:Clipped Surrogate Objective** +PPO 的损失函数通过**截断(Clipping)**限制 $ r_t(\theta) $ 的变化范围,确保策略更新**平滑且稳定**: +$$ +L^{\text{CLIP}}(\theta) = \mathbb{E}_t \left[ \min \left( r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t \right) \right] +$$ +其中: +- $ \epsilon $ 是一个超参数(通常取 0.1~0.3),控制截断范围。 +- $ \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) $ 将 $ r_t(\theta) $ 限制在 $ [1-\epsilon, 1+\epsilon] $ 之间。 + +##### **(3)截断的作用** +1. **防止策略更新过大** + - 如果 $ A_t > 0 $(动作比平均水平好),但 $ r_t(\theta) > 1+\epsilon $,则梯度更新被限制在 $ 1+\epsilon $,避免过度优化。 + - 如果 $ A_t < 0 $(动作比平均水平差),但 $ r_t(\theta) < 1-\epsilon $,则梯度更新被限制在 $ 1-\epsilon $,避免过度惩罚。 + +2. **保证训练稳定性** + - 通过限制 $ r_t(\theta) $ 的变化范围,PPO 避免了传统策略梯度方法(如TRPO)中复杂的约束优化问题,同时仍能保证策略更新不会剧烈变化。 + +--- + +#### **3. 直观理解** +##### **(1)情况1:$ A_t > 0 $(好动作)** +- **未截断**:如果 $ r_t(\theta) $ 很大(比如 5),新策略会大幅提高该动作的概率,可能导致过度优化。 +- **截断后**:限制 $ r_t(\theta) \leq 1+\epsilon $,避免策略突变。 + +##### **(2)情况2:$ A_t < 0 $(坏动作)** +- **未截断**:如果 $ r_t(\theta) $ 很小(比如 0.1),新策略会大幅降低该动作的概率,可能导致探索不足。 +- **截断后**:限制 $ r_t(\theta) \geq 1-\epsilon $,避免策略过早放弃某些动作。 + +--- + +#### **4. 总结** + +| **概念** | **作用** | **PPO 的处理方式** | +|:--------------------------------|:------------------------------------------------------------------------|:----------|:------------------------| +| **重要性采样比率 $ r_t(\theta) $** | 修正新旧策略差异,计算梯度更新的权重。 | 通过重要性采样调整策略梯度。 | +| **截断(Clipping)** | 防止 $ r_t(\theta) $ 过大或过小,避免梯度爆炸或策略崩溃。 | 限制 $ r_t(\theta) \in [1-\epsilon, 1+\epsilon] $。 | +| **优势函数 $ A_t $** | 衡量动作的相对优势,决定更新方向(加强 or 削弱)。 | 用于加权策略更新。 | + +PPO 通过**重要性采样比率**修正策略梯度,再通过**截断**机制保证训练稳定性,使其成为目前最流行的强化学习算法之一。 + +### [MISC] 个人理解 +价值函数的理论计算似乎会无限的往后延伸。因为 t 时刻的价值 V 依赖于该时刻的 Q,而 Q 则依赖于 R 和下一时刻的 V,这样就会形成循环了。 + +因此,在强化学习(如PPO、RLHF等)中,**Critic模型(价值函数网络)的更新流程**采用近似估计。具体而言,通过最小化预测价值和目标价值的差异来更新Critic模型的参数。近似如下: + + +--- + +#### **1. Critic的理论优化目标** +Critic的任务是学习**状态价值函数 $ V^\pi(s) $**,即预测从状态 $ s $ 开始,遵循当前策略 $ \pi $ 能获得的**预期累积奖励**: +$$ +V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{k=0}^\infty \gamma^k R_{t+k} \mid S_t = s \right] +$$ + +--- + +#### **2. Critic更新的输入数据** +Critic的更新依赖于从环境中采样(或Actor生成)的轨迹数据,包括: +- 状态序列 $ s_t $ +- 奖励序列 $ R_t $ +- 下一状态 $ s_{t+1} $ +- 终止标志 $ done_t $(可选) + +--- + +#### **3. Critic更新的具体流程** +##### **步骤1:计算目标值(Target Value)** +Critic的目标是让 $ V(s_t) $ 逼近真实的累积奖励。目标值的计算方式有两种: +- **蒙特卡洛(MC)目标**(适用于完整轨迹): + $$ + V_{\text{target}}(s_t) = \sum_{k=0}^{T-t} \gamma^k R_{t+k} + $$ +- **时序差分(TD)目标**(更常用): + $$ + V_{\text{target}}(s_t) = R_t + \gamma (1 - done_t) V_{\text{old}}(s_{t+1}) + $$ + 其中: + - $ V_{\text{old}}(s_{t+1}) $ 是**旧Critic网络**(或当前Critic在更新前的输出)对下一状态的估计。 + - $ done_t $ 为1时表示终止状态(无未来奖励)。 + +##### **步骤2:计算损失函数** +Critic的更新通过最小化预测值 $ V(s_t) $ 与目标值 $ V_{\text{target}}(s_t) $ 的误差: +$$ +L_{\text{Critic}} = \mathbb{E}_t \left[ \left( V(s_t) - V_{\text{target}}(s_t) \right)^2 \right] +$$ +实际实现中通常使用**均方误差(MSE)**或**Huber损失**。 + +##### **步骤3:梯度下降更新** +使用优化器(如Adam)对Critic的参数 $ \phi $ 进行梯度下降: +$$ +\phi \leftarrow \phi - \alpha \nabla_\phi L_{\text{Critic}} +$$ +其中 $ \alpha $ 是学习率。 + +--- + +#### **4. 关键实现细节** +##### **(1) 目标值的稳定性** +- **目标网络(Target Network)**: + 类似DQN,可以维护一个旧Critic网络(参数定期更新)来计算 $ V_{\text{target}} $,减少训练波动。 +- **GAE(广义优势估计)**: + 若使用GAE计算优势函数,Critic的目标值会基于多步TD误差调整(平衡偏差和方差)。 + +##### **(2) 数据来源** +- **同策略(On-Policy)**: + 在PPO中,Critic和Actor使用**同一批最新数据**更新(数据在每次迭代后丢弃)。 +- **异策略(Off-Policy)**: + 某些算法(如SAC)可复用历史数据,但需重要性采样修正。 + +##### **(3) 与Actor的协同训练** +- **交替更新**: + 通常先更新Critic多次(如10次),再更新Actor,确保价值估计足够准确。 +- **共享网络结构**: + 在部分实现中,Actor和Critic共享底层特征提取层(如Transformer的编码器),但输出层独立。 + +--- + +#### **5. 伪代码实现(PyTorch示例)** +```python +import torch +import torch.optim as optim + +# 定义Critic网络 +class Critic(torch.nn.Module): + def __init__(self, state_dim): + super().__init__() + self.fc = torch.nn.Sequential( + torch.nn.Linear(state_dim, 64), + torch.nn.ReLU(), + torch.nn.Linear(64, 1) + ) + +# 初始化 +critic = Critic(state_dim) +optimizer = optim.Adam(critic.parameters(), lr=1e-3) + +# 更新函数 +def update_critic(states, rewards, next_states, dones, gamma=0.99): + # 计算目标值 + with torch.no_grad(): + V_next = critic(next_states) + V_target = rewards + gamma * (1 - dones) * V_next + + # 计算当前值 + V_current = critic(states) + + # 计算MSE损失 + loss = torch.nn.functional.mse_loss(V_current, V_target) + + # 梯度下降 + optimizer.zero_grad() + loss.backward() + optimizer.step() + + return loss.item() +``` + +--- + +#### **6. 在RLHF中的特殊考虑** +当Critic用于大语言模型(LLM)的RLHF训练时: +1. **输入状态**: + Critic的输入是文本序列(如生成的回答),需通过编码器(如Transformer)提取特征。 +2. **奖励归一化**: + Reward Model的输出可能需归一化后作为Critic的训练目标。 +3. **KL散度约束**: + 可能需在Critic的损失中加入与Reference Model的KL散度项,防止过度偏离初始策略。 + +--- + +#### **7. 总结** + +| **步骤** | **操作** | +|------------------------|--------------------------------------------------------------------------| +| 1. **数据收集** | 通过Actor生成轨迹(状态、动作、奖励、下一状态)。 | +| 2. **计算目标值** | 使用MC或TD方法(如 $ V_{\text{target}} = r + \gamma V_{\text{old}}(s') $。 | +| 3. **计算损失** | 最小化 $ \|V(s) - V_{\text{target}}\|^2 $。 | +| 4. **梯度更新** | 反向传播优化Critic参数。 | + +Critic的高效更新是稳定训练的关键,尤其在PPO中,准确的价值估计能显著提升策略优化的效果。 \ No newline at end of file diff --git a/_posts/2025-04-21-x86_64-sheet.md b/_posts/2025-04-21-x86_64-sheet.md new file mode 100644 index 00000000000..a8fc4dd2bf4 --- /dev/null +++ b/_posts/2025-04-21-x86_64-sheet.md @@ -0,0 +1,12 @@ +--- +title: x86_64 架构介绍 +description: +author: cybotiger +date: 2025-04-21 12:00:00 +0800 +categories: [计算机系统, ISA] +tags: [] +math: true +mermaid: true +--- + +![](/assets/img/misc/x86_64reg.png) \ No newline at end of file diff --git a/_posts/2025-04-22-pytorch.md b/_posts/2025-04-22-pytorch.md new file mode 100644 index 00000000000..9985856790e --- /dev/null +++ b/_posts/2025-04-22-pytorch.md @@ -0,0 +1,57 @@ +--- +title: PyTorch 学习 +description: >- + PyTorch basics, will evolve into intermediary, and finally advanced) +author: cybotiger +date: 2025-04-22 12:00:00 +0800 +categories: [编程语言, 深度学习框架] +tags: [] +math: true +mermaid: true +--- + +## Autograd +Autograd is a reverse automatic differentiation system. Conceptually, autograd records a graph recording all of the operations that created the data as you execute operations, giving you a directed acyclic graph whose leaves are the input tensors and roots are the output tensors. By tracing this graph from roots to leaves, you can automatically compute the gradients using the chain rule. + +Internally, autograd represents this graph as a graph of Function objects (really expressions), which can be apply() ed to compute the result of evaluating the graph. When computing the forward pass, autograd simultaneously performs the requested computations and builds up a graph representing the function that computes the gradient (the .grad_fn attribute of each torch.Tensor is an entry point into this graph). When the forward pass is completed, we evaluate this graph in the backwards pass to compute the gradients. + +An important thing to note is that the graph is recreated from scratch at every iteration, and this is exactly what allows for using arbitrary Python control flow statements, that can change the overall shape and size of the graph at every iteration. You don’t have to encode all possible paths before you launch the training - what you run is what you differentiate. +### Computation Graph + +#### 两类tensor/node ++ leaf node + + 即神经网络中的 weight,`nn.Module` 中的参数张量 + + 这些 node 没有 `grad_fn`,设置 `requires_grad=True` 时,调用 non-leaf node 的 `.bakcward()` 会积累梯度 + ++ non-leaf node + + 即神经网络中的 activation,每一个 node 都捆绑着计算图中一个 operation + + 这些 node 有 `grad_fn`,调用 `.bakcward()` 时会积累梯度,在 `optimizer.step()` 时可能会用到它们的梯度。它们的梯度作为计算的中间结果,一般是不可见的。 + +> 冻结权重参数张量可直接调用 `.requires_grad_(False)` +{: .prompt-tip } + +### Grad Mode ++ Default Mode(grad Mode) + + 默认模式,对每个操作都会记录到计算图中。`requires_grad=True` 仅在默认模式下有效 + ++ no-grad Mode + + 操作不记录到计算图。存储计算结果,并记录梯度 + ++ Inference Mode + + 计算结果也不记录 + ++ Evaluation Mode (`nn.Module.eval()`) + + 和上述 3 种 mode 无关。建议 evaluate 时用 `model.eval()`,train 时用 `model.train()` + + +## 改变形状 +torch: permute, view, reshape; squeeze, unsqueeze +numpy: transpose; squeeze, expand_dims \ No newline at end of file diff --git a/_posts/2025-05-21-diffusion.md b/_posts/2025-05-21-diffusion.md new file mode 100644 index 00000000000..b733691fc42 --- /dev/null +++ b/_posts/2025-05-21-diffusion.md @@ -0,0 +1,39 @@ +--- +title: Diffusion model +description: >- + diffusion原理与架构 +author: cybotiger +date: 2025-05-21 12:00:00 +0800 +categories: [AI, 神经网络] +tags: [] +math: true +mermaid: true +--- + +## 简介 +diffusion 的思想是通过对一个纯噪声去噪来生成样本(预期的图片)。其过程分为 forward process 和 reverse process,前者将真实数据集中的图像逐步添加噪声,最终生成纯噪声;后者通过对 forward 过程添加噪声的逆过程(即去噪)进行建模,来生成样本。 + +forward 过程是假想的,实际并不会发生,因此加噪过程的 $q$ 分布是一个理论分布,需要我们建模来进行拟合,也就是去噪过程的 $p_\theta$ + +## 拟合概率分布 $q$ +加噪过程的概率分布 $q$ 如下计算: + +$$ +q(\mathbf{x}_t|\mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1-\beta_t}\mathbf{x}_{t-1}, \beta_t\mathbf{I}) \quad q(\mathbf{x}_{1:T}|\mathbf{x}_0) = \prod_{t=1}^T q(\mathbf{x}_t|\mathbf{x}_{t-1}) +$$ + +我们的拟合概率分布 $p_\theta$ 希望从 $x_t$ 去噪生成 $x_{t-1}$,然而无法直接进行去噪获得 $q(\mathbf{x}_{t-1}\|\mathbf{x}_t)$ ;此处通过加入 $x_0$ 的 condition 使得逆向过程可解(可建模),即: + +$$ +q(\mathbf{x}_{t-1}|\mathbf{x}_t, \mathbf{x}_0) = \mathcal{N}(\mathbf{x}_{t-1}; \color{blue}\tilde{\boldsymbol{\mu}}(\mathbf{x}_t, \mathbf{x}_0), \color{red}\tilde{\beta}_t\mathbf{I}) +$$ + +经化简,得: + +$$ +\tilde{\beta}_t = \color{green}\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t} \cdot \beta_t +$$ + +$$ +\tilde{\boldsymbol{\mu}}_t = \frac{1}{\sqrt{\bar{\alpha}_t}}\left(\mathbf{x}_t - \frac{1-\alpha_t}{\sqrt{1-\bar{\alpha}_t}}\boldsymbol{\epsilon}_t\right) +$$ \ No newline at end of file diff --git a/_posts/2025-09-23-eic-mesh.md b/_posts/2025-09-23-eic-mesh.md new file mode 100644 index 00000000000..eea5b45024a --- /dev/null +++ b/_posts/2025-09-23-eic-mesh.md @@ -0,0 +1,43 @@ +--- +title: GaTech EIC Mesh project +description: 解题过程 +author: cybotiger +date: 2025-09-23 12:00:00 +0800 +categories: [AI, Vision] +tags: [] +math: true +mermaid: true +--- + +## step 1 +Find a depth estimation model that takes the RGB image as the input and +outputs the corresponding depth. Here, let’s use DistDepth, which can provide the +absolute depth from the origin of the cameras to the surface of the objects in the +scene. + +## step 2 +Merge the depth estimation results from multiple images into one point +cloud. Please refer to [this script](https://github.com/facebookresearch/DistDepth/blob/main/visualize_pc.py) to learn how to convert the depth estimation to the +point cloud based on the intrinsic and extrinsic of the camera. + +![alt text](assets/img/eic-mesh/image.png) + +![alt text](assets/img/eic-mesh/image1.png) + +发现问题来源:DistDepth 模型是在 SimSIN 合成环境中进行训练的,训练时采用 1.312 的 scale + +突然发现 color image 在经过 resize 和 crop 后,intrinsic 矩阵也需要经过相应的调整,调整过后稍微好了一些,但是还是很差s + +## step 3 +Convert the point cloud into mesh by first converting the point cloud into a +3D grid (you can define the resolution of the 3D grid yourself, but we recommend +256 * 256 * 256), where each item in the 3D grid represents the normalized number +of points (normalized to the max value of all items), which is in the range of [0, 1]. +Then, we convert such a 3D grid into mesh via a [marching cube](https://scikit-image.org/docs/stable/api/skimage.measure.html#skimage.measure.marching_cubes). The marching +cube implementation is described in [this script](https://github.com/apchenstu/TensoRF/blob/17deeedae5ab4106b30a3295709ec3a8a654c7b1/utils.py#L161). + +## step 4 +Fine-tune the mesh’s vertices positions and colors using [nvdiffrec](https://github.com/NVlabs/nvdiffrec/tree/main) with the +RGB images as training data. To simplify the fine-tuning process, please just learn +the RGB color and position for each vertex instead of the combination of PBR +materials and environment light in the official codebase of [nvdiffrec](https://github.com/NVlabs/nvdiffrec/tree/main). \ No newline at end of file diff --git a/_posts/2025-10-04-eic-tflite-project.md b/_posts/2025-10-04-eic-tflite-project.md new file mode 100644 index 00000000000..d2b191a65b0 --- /dev/null +++ b/_posts/2025-10-04-eic-tflite-project.md @@ -0,0 +1,940 @@ +--- +title: GaTech EIC TFLite project +description: 解题过程 +author: cybotiger +date: 2025-10-04 12:00:00 +0800 +categories: [编程语言, 深度学习框架] +tags: [] +math: true +mermaid: true +--- + +onnx 的 nightly version 为 1.19.0;onnx-tf 的 nightly version 为 1.10.0 + +当 onnx<=1.18.0 时,会报以下错误 + +```bash +onnx.backend.test.runner.BackendIsNotSupposedToImplementIt: in user code: + + File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/backend_tf_module.py", line 99, in __call__ * + output_ops = self.backend._onnx_node_to_tensorflow_op(onnx_node, + File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/backend.py", line 347, in _onnx_node_to_tensorflow_op * + return handler.handle(node, tensor_dict=tensor_dict, strict=strict) + File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/handlers/handler.py", line 61, in handle * + raise BackendIsNotSupposedToImplementIt("{} version {} is not implemented.".format(node.op_type, cls.SINCE_VERSION)) + + BackendIsNotSupposedToImplementIt: ReduceMean version 18 is not implemented. +``` + +当 onnx==1.19.0 时,会报以下错误 +```bash +File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx_tf/common/data_type.py", line 4, in + from onnx import mapping +ImportError: cannot import name 'mapping' from 'onnx' (/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx/__init__.py) +``` + +这样同时还需要修改其他 py 文件中有 mapping 的地方;一一修改完成 +但最终还是同样的问题:`BackendIsNotSupposedToImplementIt: ReduceMean version 18 is not implemented.` + +因为这个问题是出在 `tf_ref.export_graph` 语句,对应的是 onnx-tf 后端。于是,接下来的任务就是 ++ 将 onnx-tf 升级,使其支持reducemean 18 算子; + +或者 + ++ 修改 torch2onnx 的模型转化流程,使其不包含 reducemean 18 操作 + +目前的环境如下: +``` +Python 3.10.18 +--- +Name: torch +Version: 2.8.0 +--- +Name: tensorflow +Version: 2.20.0 +--- +Name: onnx +Version: 1.19.0 +--- +Name: onnx-tf +Version: 1.10.0 +--- +Name: keras +Version: 3.11.3 +--- +Name: tf_keras +Version: 2.20.1 +``` +这样之后先遇到 `ImportError: cannot import name 'mapping' from 'onnx' (/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/onnx/__init__.py)` 问题 + +这是由于 mapping 文件在新的 onnx 版本中 deprecated。解决方案:改用 helper 中的 api + +这样之后会遇到 `ModuleNotFoundError: No module named 'tensorflow_probability'` 问题;解决方案:pip install tensorflow_probability,会下载 tensorflow_probability-0.25.0 + +这样之后会遇到 `ModuleNotFoundError: No module named 'tf_keras'` 这是因为 tfprob 依赖 tf_keras;解决方案:pip install tf_keras。会下载 tf_keras-2.20.1 + +这样之后会遇到 +```bash +File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/utils/types.py", line 29, in + from keras.src.engine import keras_tensor +ModuleNotFoundError: No module named 'keras.src.engine' +``` +解决方案:将该语句改成 `from tensorflow.python.keras.engine import keras_tensor` + +这样之后会遇到 +```bash + File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/optimizers/__init__.py", line 34, in + from tensorflow_addons.optimizers.lazy_adam import LazyAdam + File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/optimizers/lazy_adam.py", line 38, in + class LazyAdam(adam_optimizer_class): + File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/keras/src/saving/object_registration.py", line 146, in decorator + raise ValueError( +ValueError: Cannot register a class that does not have a get_config() method. +``` +在 class LazyAdam 中添加 +```python +def get_config(self): + return super().get_config() +``` +这是在 github 原仓库 [https://github.com/tensorflow/addons/blob/master/tensorflow_addons/optimizers/lazy_adam.py#L153] 找到的 + + +这样之后遇到 +```bash +File "/home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow_addons/rnn/nas_cell.py", line 30, in + class NASCell(keras.layers.AbstractRNNCell): +AttributeError: module 'keras._tf_keras.keras.layers' has no attribute 'AbstractRNNCell' +``` + +## torch2tf directly (Failed) +尝试直接从 torch 转 tflite,遇到报错 undefined symbol error,不想管了 + +```bash +ImportError: /home/ruihan/miniconda3/envs/deploy/lib/python3.10/site-packages/tensorflow/lite/python/metrics/_pywrap_tensorflow_lite_metrics_wrapper.so: +undefined symbol: Wrapped_PyInit__pywrap_tensorflow_lite_metrics_wrapper +``` + +## Summary +最大的问题在于,onnx 到 tensorflow 的转换库 onnx-tf 已经停止维护了。所以后续 onnx 库的更新添加更多算子时,很多就不能与旧版本的 tensorflow converter 兼容 + + +## Manually design tensorflow model +### fbnet-a arch +```python +FBNet( + (backbone): FBNetBackbone( + (stages): Sequential( + (xif0_0): ConvBNRelu( + (conv): Conv2d(3, 16, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) + (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (xif1_0): Identity() + (xif2_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(16, 48, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(48, 48, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=48) + (bn): BatchNorm2d(48, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(48, 24, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif2_1): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif2_2): Identity() + (xif2_3): Identity() + (xif3_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(24, 144, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(144, 144, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=144) + (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(144, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif3_1): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=96) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif3_2): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(32, 32, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=32) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif3_3): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=96) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=192) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif4_1): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=192) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_2): IRFBlock( + (shuffle): ChannelShuffle() + (dw): ConvBNRelu( + (conv): Conv2d(64, 64, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=64) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), groups=2) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_3): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(384, 384, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=384) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_4): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=384) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(384, 112, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif4_5): IRFBlock( + (shuffle): ChannelShuffle() + (dw): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=112) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1), groups=2) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_6): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(112, 336, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(336, 336, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=336) + (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(336, 112, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_7): IRFBlock( + (shuffle): ChannelShuffle() + (dw): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=112) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1), groups=2) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(672, 672, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=672) + (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(672, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif5_1): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_2): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 552, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(552, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(552, 552, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=552) + (bn): BatchNorm2d(552, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(552, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_3): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_4): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(1104, 352, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(352, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif6_0): ConvBNRelu( + (conv): Conv2d(352, 1504, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1504, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + ) + ) + (head): ClsConvHead( + (avg_pool): AdaptiveAvgPool2d(output_size=(1, 1)) + (conv): Conv2d(1504, 1000, kernel_size=(1, 1), stride=(1, 1)) + ) +) + +``` + +### fbnet-b arch +```python +FBNet( + (backbone): FBNetBackbone( + (stages): Sequential( + (xif0_0): ConvBNRelu( + (conv): Conv2d(3, 16, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1)) + (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (xif1_0): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=16) + (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif2_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(16, 96, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(96, 96, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), groups=96) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(96, 24, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif2_1): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=24) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif2_2): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif2_3): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(24, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif3_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(24, 144, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(144, 144, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=144) + (bn): BatchNorm2d(144, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(144, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif3_1): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 96, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(96, 96, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=96) + (bn): BatchNorm2d(96, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(96, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif3_2): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(192, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=192) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(192, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif3_3): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=192) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(192, 32, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=192) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif4_1): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(384, 384, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=384) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_2): Identity() + (xif4_3): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(64, 192, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(192, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=192) + (bn): BatchNorm2d(192, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(192, 64, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_4): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(64, 384, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(384, 384, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=384) + (bn): BatchNorm2d(384, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(384, 112, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif4_5): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=112) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_6): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=112) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(112, 112, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif4_7): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(112, 336, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(336, 336, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=336) + (bn): BatchNorm2d(336, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(336, 112, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(112, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_0): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(672, 672, kernel_size=(5, 5), stride=(2, 2), padding=(2, 2), groups=672) + (bn): BatchNorm2d(672, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(672, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif5_1): IRFBlock( + (dw): ConvBNRelu( + (conv): Conv2d(184, 184, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=184) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(184, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_2): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_3): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(1104, 1104, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2), groups=1104) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(1104, 184, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(184, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + (res_conn): TorchAdd( + (add_func): FloatFunctional( + (activation_post_process): Identity() + ) + ) + ) + (xif5_4): IRFBlock( + (pw): ConvBNRelu( + (conv): Conv2d(184, 1104, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (dw): ConvBNRelu( + (conv): Conv2d(1104, 1104, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1104) + (bn): BatchNorm2d(1104, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + (pwl): ConvBNRelu( + (conv): Conv2d(1104, 352, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(352, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + ) + ) + (xif6_0): ConvBNRelu( + (conv): Conv2d(352, 1984, kernel_size=(1, 1), stride=(1, 1)) + (bn): BatchNorm2d(1984, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) + (relu): ReLU(inplace=True) + ) + ) + ) + (head): ClsConvHead( + (avg_pool): AdaptiveAvgPool2d(output_size=(1, 1)) + (conv): Conv2d(1984, 1000, kernel_size=(1, 1), stride=(1, 1)) + ) +) +``` + +## Depth-wise Separable Conv net +步骤 A: Depthwise Convolution (深度卷积) + + 操作: 针对输入的每个通道,独立地使用一个单通道的滤波器 (K×K×1) 进行空间卷积。 + + 作用: 只负责提取空间特征,如边缘、纹理等,但不会在通道之间混合信息。 + + 结果: 保持通道数不变。如果输入有 Cin​ 个通道,输出也有 Cin​ 个通道。 + + 参数量: 极少,仅为 K×K×Cin​。 + +步骤 B: Pointwise Convolution (逐点卷积) + + 操作: 使用 1×1 的卷积核。这个 1×1×Cin​ 的卷积核会在空间上滑动,对深度卷积的输出进行跨通道加权求和。 + + 作用: 只负责通道融合和通道数调整。它将深度卷积中分离的特征图进行线性组合,生成新的 Cout​ 个输出通道。 + + 参数量:1×1×Cin​×Cout​。 + + +``` +Keras 推理完成。总耗时: 132.9528 秒 +Keras 吞吐量 (FPS): 7.39 样本/秒 + +TFLite 推理中: 100%|██████████████████████████████████████████████████████| 982/982 [00:05<00:00, 183.37it/s] +TFLite 推理完成。总耗时: 5.3581 秒 +TFLite 吞吐量 (FPS): 183.27 样本/秒 + +PyTorch 推理完成。总耗时: 4.8217 秒 +PyTorch 吞吐量 (FPS): 203.66 样本/秒 + +--- 精度验证报告 --- +样本总数: 982 +1. 预测一致性 (INT8 TFLite vs Float32 Keras): (84.62%) + (Float32 TFLite vs Float32 Keras): (100.00%) + +2. 平均输出 L2 差异 (越小越好): 0.000001(tflite)/0.152170(quantized_tflite) +3. Keras (Float32) Top-1 精度: 0.0010 +4. TFLite (INT8) Top-1 精度: 0.0010 +4. TFLite (Float32) Top-1 精度: 0.0010 +5. PyTorch (Float32) Top-1 精度: 0.0010 +量化损失 (Float32 - INT8): 0.00% +``` \ No newline at end of file diff --git a/_posts/2025-10-31-sync-primitive.md b/_posts/2025-10-31-sync-primitive.md new file mode 100644 index 00000000000..3a9decb2b88 --- /dev/null +++ b/_posts/2025-10-31-sync-primitive.md @@ -0,0 +1,132 @@ +--- +title: C++通信原语 +description: C++通信原语 +author: cybotiger +date: 2025-10-30 12:00:00 +0800 +categories: [计算机系统, 通信] +tags: [] +math: true +mermaid: true +--- + +## std::mutex +最普通的锁,用来保护一个资源只有一个线程可以操作。 + ++ 缺点1:不安全,控制僵硬 + + 不能进行 recursive_lock(同个线程多次 lock 该锁) + + 需要手动 lock 和 unlock;如果在持有锁的中途出现异常,可能会死锁;如果线程结束但仍然持有锁,会出现异常 + + 不支持 deferred lock,即先声明,后续通过 `lock()` 显式获取锁 + ++ 缺点2:效率低 + + 被其他线程占用时,`lock()` 会阻塞,该线程会进行 busy_waiting,导致 CPU 空转 + + 为了避免 CPU 资源的浪费,可以配合 `std::condition_variable` 使用 + +## std::unique_lock +mutex 的 RAII (Resource Acquisition Is Initialization) wrapper,支持 recursive_lock、deferred lock + +## std::condition_variable +通过 wait 和 notify 机制,让等待锁的线程进入休眠状态,不占用计算资源,在 waiting_queue 中等待锁的释放 + +```cpp +/* + * Wrapper class around a counter, a condition variable, and a mutex. + */ +class ThreadState { + public: + std::condition_variable* condition_variable_; + std::mutex* mutex_; + int counter_; + int num_waiting_threads_; + ThreadState(int num_waiting_threads) { + condition_variable_ = new std::condition_variable(); + mutex_ = new std::mutex(); + counter_ = 0; + num_waiting_threads_ = num_waiting_threads; + } + ~ThreadState() { + delete condition_variable_; + delete mutex_; + } +}; + +void signal_fn(ThreadState* thread_state) { + // Acquire mutex to make sure the shared counter is read in a + // consistent state. + thread_state->mutex_->lock(); + while (thread_state->counter_ < thread_state->num_waiting_threads_) { + thread_state->mutex_->unlock(); + // Release the mutex before calling `notify_all()` to make sure + // waiting threads have a chance to make progress. + thread_state->condition_variable_->notify_all(); + // Re-acquire the mutex to read the shared counter again. + thread_state->mutex_->lock(); + } + thread_state->mutex_->unlock(); +} + +void wait_fn(ThreadState* thread_state) { + // A lock must be held in order to wait on a condition variable. + // This lock is atomically released before the thread goes to sleep + // when `wait()` is called. The lock is atomically re-acquired when + // the thread is woken up using `notify_all()`. + std::unique_lock lk(*thread_state->mutex_); + thread_state->condition_variable_->wait(lk); + // Increment the shared counter with the lock re-acquired to inform the + // signaling thread that this waiting thread has successfully been + // woken up. + thread_state->counter_++; + printf("Lock re-acquired after wait()...\n"); + lk.unlock(); +} + +/* + * Signaling thread spins until each waiting thread increments a shared + * counter after being woken up from the `wait()` method. + */ +void condition_variable_example() { + int num_threads = 3; + + printf("==============================================================\n"); + printf("Starting %d threads for signal-and-waiting...\n", num_threads); + std::thread* threads = new std::thread[num_threads]; + ThreadState* thread_state = new ThreadState(num_threads-1); + threads[0] = std::thread(signal_fn, thread_state); + for (int i = 1; i < num_threads; i++) { + threads[i] = std::thread(wait_fn, thread_state); + } + for (int i = 0; i < num_threads; i++) { + threads[i].join(); + } + printf("==============================================================\n"); + + delete thread_state; + delete[] threads; +} +``` + +## std::atomic + +如果需要保护的资源是一个简单的变量,可以使用更为简洁的 `std::atomic`,通常比 mutex 更快 + +```cpp +#include +#include +#include + +std::atomic counter(0); + +void incrementCounter() { + for (int i = 0; i < 1000; ++i) { + ++counter; // Atomic increment + } +} + +int main() { + std::thread t1(incrementCounter); + std::thread t2(incrementCounter); + t1.join(); + t2.join(); + std::cout << "Final counter value: " << counter << std::endl; + return 0; +} +``` \ No newline at end of file diff --git a/_posts/2025-11-04-mar.md b/_posts/2025-11-04-mar.md new file mode 100644 index 00000000000..3ce1dec15c3 --- /dev/null +++ b/_posts/2025-11-04-mar.md @@ -0,0 +1,351 @@ +--- +title: visual generative Masked AR model +description: Masked AR model with small diffusion network for Image generation +author: cybotiger +date: 2025-11-04 12:00:00 +0800 +categories: [AI, Vision] +tags: [] +math: true +mermaid: true +--- + +原文位于 [Autoregressive Image Generation without Vector Quantization](https://arxiv.org/pdf/2406.11838) + +## VAE +```python +AutoencoderKL( + (encoder): Encoder( + (conv_in): Conv2d(3, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (down): ModuleList( + (0-1): 2 x Module( + (block): ModuleList( + (0-1): 2 x ResnetBlock( + (norm1): GroupNorm(32, 128, eps=1e-06, affine=True) + (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 128, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (downsample): Downsample( + (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2)) + ) + ) + (2): Module( + (block): ModuleList( + (0): ResnetBlock( + (norm1): GroupNorm(32, 128, eps=1e-06, affine=True) + (conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 256, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (nin_shortcut): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1)) + ) + (1): ResnetBlock( + (norm1): GroupNorm(32, 256, eps=1e-06, affine=True) + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 256, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (downsample): Downsample( + (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2)) + ) + ) + (3): Module( + (block): ModuleList( + (0-1): 2 x ResnetBlock( + (norm1): GroupNorm(32, 256, eps=1e-06, affine=True) + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 256, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (downsample): Downsample( + (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2)) + ) + ) + (4): Module( + (block): ModuleList( + (0): ResnetBlock( + (norm1): GroupNorm(32, 256, eps=1e-06, affine=True) + (conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (nin_shortcut): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1)) + ) + (1): ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList( + (0-1): 2 x AttnBlock( + (norm): GroupNorm(32, 512, eps=1e-06, affine=True) + (q): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (k): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (v): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (proj_out): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + ) + ) + ) + ) + (mid): Module( + (block_1): ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + (attn_1): AttnBlock( + (norm): GroupNorm(32, 512, eps=1e-06, affine=True) + (q): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (k): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (v): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (proj_out): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + ) + (block_2): ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (norm_out): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv_out): Conv2d(512, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + (decoder): Decoder( + (conv_in): Conv2d(16, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (mid): Module( + (block_1): ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + (attn_1): AttnBlock( + (norm): GroupNorm(32, 512, eps=1e-06, affine=True) + (q): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (k): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (v): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + (proj_out): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1)) + ) + (block_2): ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (up): ModuleList( + (0): Module( + (block): ModuleList( + (0-2): 3 x ResnetBlock( + (norm1): GroupNorm(32, 128, eps=1e-06, affine=True) + (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 128, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + ) + (1): Module( + (block): ModuleList( + (0): ResnetBlock( + (norm1): GroupNorm(32, 256, eps=1e-06, affine=True) + (conv1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 128, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (nin_shortcut): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1)) + ) + (1-2): 2 x ResnetBlock( + (norm1): GroupNorm(32, 128, eps=1e-06, affine=True) + (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 128, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (upsample): Upsample( + (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (2): Module( + (block): ModuleList( + (0-2): 3 x ResnetBlock( + (norm1): GroupNorm(32, 256, eps=1e-06, affine=True) + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 256, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (upsample): Upsample( + (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (3): Module( + (block): ModuleList( + (0): ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 256, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (nin_shortcut): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1)) + ) + (1-2): 2 x ResnetBlock( + (norm1): GroupNorm(32, 256, eps=1e-06, affine=True) + (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 256, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (upsample): Upsample( + (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (4): Module( + (block): ModuleList( + (0-2): 3 x ResnetBlock( + (norm1): GroupNorm(32, 512, eps=1e-06, affine=True) + (conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + (norm2): GroupNorm(32, 512, eps=1e-06, affine=True) + (dropout): Dropout(p=0.0, inplace=False) + (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + (attn): ModuleList() + (upsample): Upsample( + (conv): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + ) + ) + (norm_out): GroupNorm(32, 128, eps=1e-06, affine=True) + (conv_out): Conv2d(128, 3, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1)) + ) + (quant_conv): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1)) + (post_quant_conv): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1)) +) +``` + +## MAR + +```python +Model = MAR( + (class_emb): Embedding(1000, 1024) + (z_proj): Linear(in_features=16, out_features=1024, bias=True) + (z_proj_ln): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (encoder_blocks): ModuleList( + (0-15): 16 x Block( + (norm1): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (attn): Attention( + (qkv): Linear(in_features=1024, out_features=3072, bias=True) + (q_norm): Identity() + (k_norm): Identity() + (attn_drop): Dropout(p=0.1, inplace=False) + (norm): Identity() + (proj): Linear(in_features=1024, out_features=1024, bias=True) + (proj_drop): Dropout(p=0.1, inplace=False) + ) + (ls1): Identity() + (drop_path1): Identity() + (norm2): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (mlp): Mlp( + (fc1): Linear(in_features=1024, out_features=4096, bias=True) + (act): GELU(approximate='none') + (drop1): Dropout(p=0.1, inplace=False) + (norm): Identity() + (fc2): Linear(in_features=4096, out_features=1024, bias=True) + (drop2): Dropout(p=0.1, inplace=False) + ) + (ls2): Identity() + (drop_path2): Identity() + ) + ) + (encoder_norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (decoder_embed): Linear(in_features=1024, out_features=1024, bias=True) + (decoder_blocks): ModuleList( + (0-15): 16 x Block( + (norm1): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (attn): Attention( + (qkv): Linear(in_features=1024, out_features=3072, bias=True) + (q_norm): Identity() + (k_norm): Identity() + (attn_drop): Dropout(p=0.1, inplace=False) + (norm): Identity() + (proj): Linear(in_features=1024, out_features=1024, bias=True) + (proj_drop): Dropout(p=0.1, inplace=False) + ) + (ls1): Identity() + (drop_path1): Identity() + (norm2): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (mlp): Mlp( + (fc1): Linear(in_features=1024, out_features=4096, bias=True) + (act): GELU(approximate='none') + (drop1): Dropout(p=0.1, inplace=False) + (norm): Identity() + (fc2): Linear(in_features=4096, out_features=1024, bias=True) + (drop2): Dropout(p=0.1, inplace=False) + ) + (ls2): Identity() + (drop_path2): Identity() + ) + ) + (decoder_norm): LayerNorm((1024,), eps=1e-06, elementwise_affine=True) + (diffloss): DiffLoss( + (net): SimpleMLPAdaLN( + (time_embed): TimestepEmbedder( + (mlp): Sequential( + (0): Linear(in_features=256, out_features=1536, bias=True) + (1): SiLU() + (2): Linear(in_features=1536, out_features=1536, bias=True) + ) + ) + (cond_embed): Linear(in_features=1024, out_features=1536, bias=True) + (input_proj): Linear(in_features=16, out_features=1536, bias=True) + (res_blocks): ModuleList( + (0-11): 12 x ResBlock( + (in_ln): LayerNorm((1536,), eps=1e-06, elementwise_affine=True) + (mlp): Sequential( + (0): Linear(in_features=1536, out_features=1536, bias=True) + (1): SiLU() + (2): Linear(in_features=1536, out_features=1536, bias=True) + ) + (adaLN_modulation): Sequential( + (0): SiLU() + (1): Linear(in_features=1536, out_features=4608, bias=True) + ) + ) + ) + (final_layer): FinalLayer( + (norm_final): LayerNorm((1536,), eps=1e-06, elementwise_affine=False) + (linear): Linear(in_features=1536, out_features=32, bias=True) + (adaLN_modulation): Sequential( + (0): SiLU() + (1): Linear(in_features=1536, out_features=3072, bias=True) + ) + ) + ) + ) +) +``` \ No newline at end of file diff --git a/_posts/2025-12-01-github-deploy-key.md b/_posts/2025-12-01-github-deploy-key.md new file mode 100644 index 00000000000..ca7a95b7691 --- /dev/null +++ b/_posts/2025-12-01-github-deploy-key.md @@ -0,0 +1,73 @@ +--- +title: Github deploy key 的使用 +description: 通过 deploy key 在远程服务器安全的管理单个仓库 +author: cybotiger +date: 2025-12-01 07:00:00 +0800 +categories: [开发, 网络] +tags: [] +--- + +## 动机 +在实验室的服务器上 push 项目代码,可以选择 https 协议或 ssh 协议。由于 https 协议在 push 时要求输入莫名其妙的 password,我尝试了账户密码、 patoken(personal access token),都被服务器拒绝了。看了一下 stackoverflow 和 csdn,也是没有标准的解法。索性就全部使用 ssh 连接了。 + +## 步骤 +而 ssh 连接,需要考虑安全性。我只是实习生,以后离开实验室之后要保护自己的其他无关仓库不被 hack,因此不能直接配置**关联账户**的 ssh key,而应该配置**关联单个仓库**的 deploy key。步骤如下: + +首先,打开仓库的 settings,找到 security 下的 deploy key,添加新的 deploy key + +然后在 server 端生成新的密钥(或使用已有的密钥) + +```bash +ssh-keygen -t rsa -b 4096 -C "your_email@example.com" +``` + +之后 terminal 会询问你密钥对的存储位置,如果你不想覆盖已有的密钥对,需要自定义文件位置。 + +我们假定文件位于 `~/.ssh/id_rsa`,此时通过 `cat ~/.ssh/id_rsa.pub`,打印公钥,复制粘贴到 github 的 deploy key 中,就添加了新的 deploy key + +之后尝试在 server 端连接 + +```bash +ssh -T git@github.com +``` + +初次建立连接,会有询问信息,输入 yes 后,应该会看到以下内容,则配置成功,可以安全的 push 代码! + +``` +Hi USERNAME/REPO! You've successfully authenticated, but GitHub does not provide shell access. +``` + +最后,将 github 仓库的 remote 改成 ssh 连接 + +```bash +git remote set-url origin git@github.com:USERNAME/REPO.git +``` +## 多个仓库 +多个仓库无法共享同一个 deploy key!需要为每一个仓库生成新的密钥对。 + +同时,为了确保 ssh 连接 github 时,不同的仓库连接使用不同的密钥对,需要在 `~/.ssh/config` 文件中为不同的仓库域名配置别名,例如下: + +```bash +Host github.com-sglang + Hostname github.com + IdentityFile=/home/your-username/.ssh/id_rsa + +Host github.com-vllm + Hostname github.com + IdentityFile=/home/your-username/.ssh/id_rsa_1 +``` + +然后可以测试仓库和对应 deploy key 的连接 + +```bash +ssh -T -i ~/.ssh/id_rsa_1 git@github.com-vllm +``` + +因为 ssh 连接默认使用 id_rsa 密钥,所以每个仓库的 remote url 应该配置为域名别名 + +```bash +git remote set-url origin git@github.com-vllm:USERNAME/VLLM-REPO.git + +git remote set-url origin git@github.com-sglang:USERNAME/SGLANG-REPO.git +``` + diff --git a/_posts/2025-12-28-python-pkg-manager.md b/_posts/2025-12-28-python-pkg-manager.md new file mode 100644 index 00000000000..b635553a8c8 --- /dev/null +++ b/_posts/2025-12-28-python-pkg-manager.md @@ -0,0 +1,8 @@ +--- +title: Python 虚拟环境管理 +description: conda、uv 等工具的环境管理机制 +author: cybotiger +date: 2025-12-28 12:00:00 +0800 +categories: [开发, 环境配置] +tags: [] +--- \ No newline at end of file diff --git a/_posts/2025-12-30-undergrad-course.md b/_posts/2025-12-30-undergrad-course.md new file mode 100644 index 00000000000..2a620ff2698 --- /dev/null +++ b/_posts/2025-12-30-undergrad-course.md @@ -0,0 +1,32 @@ +--- +title: 本科课程总结 +description: 本科课程总结 +author: cybotiger +date: 2025-12-30 12:00:00 +0800 +categories: [感想] +tags: [] +--- + +今天上完了本科最后一门在教室里听老师讲的课,也算是有一些纪念意义吧。我四年课上下来,有感悟的并不多。不过其实一直以来我也没有对大学课堂抱有什么预期,一开始只是觉得都要认真听,好好学习,毕竟自己也觉得自己是个乖宝宝。 + +于是数理编程类的基础课程总是抢前排,生怕哪一节课漏听了老师的一句话都会在我完美的知识体系中出现一丝裂缝。 + +然后逐渐发现这样学习知识很是被动,像是被束缚着,而且很多时候打瞌睡,打瞌睡的时候估计自己能靠着耳边的念叨吸收 10%-30% 的讲课内容,课后也没有复习;至于课后习题,会做就会做,不会就乱写,反正做了就好,基本没有深究过。学线代和数分一的时候,还会偶尔看看答疑群,有些同学的提问是相当有营养的,包括有些玩梗的家伙,感觉玩懂他们的梗都能让自己醍醐灌顶。 + +学线代和数分二的时候,就基本没有主动性了,事情很多,但又不知道在忙什么,还时常 emo,每次试图复习往往 end up 应付作业完事。那段时间的一段经历,我第一次意识到自己的工程实践能力挺弱的,然而我也并没有做出改变。它留下了一道疤痕,我看到了,却没有痛感。 + +到了专业课部分更是有很多不理解的地方,即便理解了也不能用代码实现。而且很多时候,并没有意识到这门课的重要性,比如体系结构,其中的分布式计算等等内容在当代的应用;比如数据算法,作为 CS 工程和科研的基石应该熟练掌握。实验能偷懒则偷懒,能不弄懂底层细节绝对不花时间琢磨。 + +当然这些也没有那么的严重。我们有 csdiy 这样的线上自学模式,优质资源触手可得。然而作为一个内心有些躁动的人,我感觉自己缺失了某种激情。而且我也尚未在 csdiy 的模式中找到那种缺失的激情。 + +还有很多想在课堂做的事,比如多问助教学长学姐一些问题,包括这门课的意义、未来规划,以及一些实用的 debug 技巧;比如通两个宵把算法优化到班级里的 sota;比如组队认识几个大佬,能一起打比赛或者科研带飞我;比如向给我们讲课的大牛展现一下自己认真学习这门课的态度,并要封推荐信。 + +这是基础课和专业课。我也曾经上过一门数学课。那个时候,在校园论坛看到一位学长 cs 辅修数学,做 ml theory,从他的字里行间感受到了数学的美妙,于是也想学习一些高等数学。我选的这门数学课,确实是比较纯粹的数学,老师上课手写板书,我和数学专业的同学们对着讲台抄板书,同时理解内容。 + +我还上过一门英语课。这门课有很多的发言机会,锻炼口头表达和临场发挥。我一度感觉自己回到了初中,拉着同组的同学一起发言。但后来觉得只是自嗨,而且自己的讲话效果也并没有自己想象中那么好。但我至少很主动,不管别人怎么想,我就是要表达。于是它成了我繁忙之余的调剂。 + +这学期上的最后一门教室里的课,属于一门 ai+bio 的拓展课,对于做 ai 科研的我来说比较新鲜,可以了解 ai4bio 的应用。我也确实学到了一些前沿生物知识。可能因为 ai 前置知识足够,我和助教交流也比较多而顺畅,做实验的时候也比较轻松愉快。 + +讲完了本科四年的上课,现在,我的主要学习方式是做科研。看论文,读代码,逛 github 找有趣和重要的项目学习。我是挺喜欢这种方式的,尤其是每天逛 github 的时候,都抱着一丝兴奋的心情。但是现在很弱也是真的,人菜瘾大。而且我觉得自己有一种执念,那就是只要有决心,一定能通过搜索引擎或者 AI 提问找到合适的学习资料提升自己,所谓“在舒适区边缘”磨练自己。兴趣也很重要,所幸我对目前的方向是有兴趣的。 + +扯了这么多,算作一个时间节点上纪念和总结吧。多年以后,当我看到自己写下的这段文字,又会有什么感想呢?总之,希望自己能够保持终身学习的态度,脚踏实地的前进。 \ No newline at end of file diff --git a/_posts/2026-01-04-cnn-and-linear-are-same.md b/_posts/2026-01-04-cnn-and-linear-are-same.md new file mode 100644 index 00000000000..b27cf910252 --- /dev/null +++ b/_posts/2026-01-04-cnn-and-linear-are-same.md @@ -0,0 +1,86 @@ +--- +title: 卷积网络和线性层的等价性 +description: 卷积网络和线性层的等价性 +author: cybotiger +date: 2026-01-04 08:00:00 +0800 +categories: [AI, 神经网络] +tags: [] +--- + +对于一个非重叠(non-overlapping)的卷积网络,参数为 + +```python +nn.Conv2d( + input_channel=inc, + output_channel=outc, + kernel_size=p, + stride=p +) +``` + +从 CNN 角度来看,输入为 `[inc, h, w]` 的图片张量,输出为 `[outc, h/p, w/p]` 的张量(p 整除 h,w);按照定义,有 `outc` 组卷积核组,每组有 `inc` 个 `p*p` 大小的卷积核,分别和每个 patch 的对应 channel 卷积后求和,得到 `outc` 个输出 channel,对应 1 个 patch + +而如果从线性层的角度来看,可以看作输入为 `[h/p*w/p, inc*p*p]` ,输出为 `[h/p*w/p, outc]`,即将每一个 patch 视为向量,共有 `h/p*w/p` 个向量,向量的输入维度为 `inc*p*p`,输出维度为 `outc*p*p`;于是线性层矩阵的形状为 `[inc*p*p, outc]` + +这个矩阵共有 `outc` 列,每列的参数 为 对应组的 `inc` 个卷积核按序展平为一个 `inc*p*p` 的向量 + +## example +输入 `[3, 4, 4]` 的图片,输出 `[2, 2, 2]` 的张量,卷积网络和线性矩阵为 +```python +# inc=3, outc=2, p=2 +[ + [ + [1,1, + 1,1] + , # indim=12, outdim=2 + [1,1, [ + 1,1] [1, -1], + , [1, -1], + [1,1, [1, -1], + 1,1] [1, -1], + ] [1, -1], + , [1, -1], + -> [1, -1], + [ [1, -1], + [-1,-1, [1, -1], + -1,-1] [1, -1], + , [1, -1], + [-1,-1, [1, -1] + -1,-1] ] + , + [-1,-1, + -1,-1] + ] +] +``` + +## 实际场景 +由此可以得出一个结论,使用 CNN 对图像进行卷积 等价于 patchify+使用 linear 层进行变换; + +在 Kaiming He 的 [JiT](https://arxiv.org/pdf/2511.13720) 工作中,论文中使用 linear transformation 变换图片,而在实际代码中使用的是 Conv2d + +![alt text](assets/img/misc/jit-model.png) + +```python +class BottleneckPatchEmbed(nn.Module): + """ Image to Patch Embedding + """ + def __init__(self, img_size=224, patch_size=16, in_chans=3, pca_dim=768, embed_dim=768, bias=True): + super().__init__() + img_size = (img_size, img_size) + patch_size = (patch_size, patch_size) + num_patches = (img_size[1] // patch_size[1]) * (img_size[0] // patch_size[0]) + self.img_size = img_size + self.patch_size = patch_size + self.num_patches = num_patches + + self.proj1 = nn.Conv2d(in_chans, pca_dim, kernel_size=patch_size, stride=patch_size, bias=False) + self.proj2 = nn.Conv2d(pca_dim, embed_dim, kernel_size=1, stride=1, bias=bias) + + def forward(self, x): + B, C, H, W = x.shape + assert H == self.img_size[0] and W == self.img_size[1], \ + f"Input image size ({H}*{W}) doesn't match model ({self.img_size[0]}*{self.img_size[1]})." + x = self.proj2(self.proj1(x)).flatten(2).transpose(1, 2) + return x +``` \ No newline at end of file diff --git a/_posts/2026-01-07-as-a-collaborator.md b/_posts/2026-01-07-as-a-collaborator.md new file mode 100644 index 00000000000..01f65db034f --- /dev/null +++ b/_posts/2026-01-07-as-a-collaborator.md @@ -0,0 +1,51 @@ +--- +title: Why I suck as a collaborator +description: An attempt to summarize my bad habits and metality during collaboration +author: cybotiger +date: 2026-01-07 08:00:00 +0800 +categories: [自我批评] +tags: [english, life] +--- + +From the start of my undergrad, I've been consistently engaged in collaboration across curiculum teamwork, research projects and beyond. However, it's not until recently that I truly and deeply felt that how much I suck as a collaborator, which is because of a severe academic accident. + +Here I would like to share some experiences and try to summarize some common issue beneath all the failure, and hopefully learn my lesson and grow up as a good collaborator. + +## Paper submission +Recently our research team summitted a paper to a conference, and my supervisor asked me to complete **my own author form**. I instead resubmit the same paper as a duplication without informing him, or leting him give me instructions on how and where to complete my form. I thought that was my form to complete. + +When the sumbission ddl passed, after roughly 3 hours, he reached me in emergency and told me that I ran into big trouble, which could potentially harm all the other collaborators on the author list. + +I regret out of question. I regret why I did not ask him about how and where to complete the form, or if I had correctly completed my task as demanded. Even if I know the procedure, I should have double checked it with him about it, let alone me being a newbie to paper submission. + +If it's some campus thesis, careless resubmission might be forgiven. But it's a international conference with rigorously specified rules. Any mistakes, whether on purpose or not, will be considered a violation of rule. We might get away this time if we contact the committee timely and honestly, but a green hand should on no occasion do virtually anything without carefullt inquery a senior author. + +As I regret, I come to realize that this accident is essentially due to my lack of communication and alignment with my collaborators. As I begin to recall my previous research project experiences, I found this a common pattern across all of them. + +## Research intern +Currently I'm doing intern somewhere mentored by a postdoc. We just had a meeting yesterday, and I talked about how I move inefficiently in this project without asking for help or getting satisfying experimental results. He kind of pointed out some missing ingradients. + +First, before this meeting, our last meeting was held ~3 weeks ago. At that time we already had a quite clear to-do list. What I need to do is basically doing experiments and surveying literatures as the list says. But I seemed to be extremely interested in diverging from the conventional path: before I finish the to-dos step by step, I jumped out and change our codebase significantly and tried some new architectures, expecting it to work. When it turns out to be a failure, I just realized that I haven't finished my old jobs, which could provide more guidance on future progress, like excluding or verifying some of our assumptions, serving as powerful proof that XX doesn't work. Like my mentor says, now we don't even have a convincing proof that XX doesn't work, because you changed multiple variables at one time. + +By now we haven't laid a solid foundation for analysing root causes, so the solution seems still distant. If I had discussed with him once I found out that XX didn't work, or prepared to try my new notion, he would give proper advice, telling me if it's beneficial for our follow-up research. Of course you can diverge and try out new ideas, but that's based on the fact that I had conducted all the required experiments and make sure they don't work, and find some hint that guide me towards this trial. Of course that might be a tough skill for a undergrad like me to master in a short time, and that's where discussion comes in. + +Previously in Hong Kong, I experienced somthing similar. Each time I would report a chunk of things I did without thinking if it's reasonable or not. And then leave it to my my mentor to try to understand what I did and its meaning, and decide what's the next move. Timely report has become somewhat a luxury, either because I dont think there's much to deliver, or I feel reluctant to sort out and come up with the right questions. + +Reflecting on that, I think it's really irresponsible behaviors, and consumes my energy and passion quickly. + +## Major weaknesses +As such, I think it necessary to summarize some major weaknesses that exists across these collaborations, and needs to be eliminated. + +### Communicate with your collaborators +Dont be constrained by any factors, and give communication and alignment top priority. It' better to ask redundant questions than not asking necessary questions. Plus, short-interval and constant discussion might be better. Sometimes you dont want waste time on unsubstantial discussions because there really has nothing to discuss. In that case, set a time limit, like 1 week. + +Normally, when you finished what's on the to-do list, there will be much to discuss. + +### Do planned jobs before unplanned jobs +After discussion the first execution must be verifying the proposed notions. Based on that you can do some other things before the next meeting/discussion. + +### Do solid things, Dont be greedy +Maybe I am so greedy to produce promising results, that I just didn't treat basic stuffs carefully. And when I deliver it, it seems not convincing enough, either because I'm still unclear about the details, or I just didn't complete the experiments. + +## TBD +I had a intuition that there's gonna be a lot more to learn concerning collaboration. Hopefully I can keep updating and exploring the philosophy/art of collaborations. \ No newline at end of file diff --git a/_posts/2026-02-14-missed-diversity.md b/_posts/2026-02-14-missed-diversity.md new file mode 100644 index 00000000000..819032bcd86 --- /dev/null +++ b/_posts/2026-02-14-missed-diversity.md @@ -0,0 +1,42 @@ +--- +title: 我的大学本科 +description: Am I missing the undergrad "buffet"? +author: cybotiger +date: 2026-02-14 08:00:00 +0800 +categories: [感想] +tags: [life] +--- + +今天背托福单词的时候看到了这么一句话: + +> 大学就像一顿丰盛的自助餐,可是却有一群笨蛋白白饿死。尝试才是找到兴趣的唯一方法。 + +瞬间破防了。那种遗憾的感觉,紧接着就开始想象他人在大学找到一生热爱的爽文剧情,紧接着那种自己往后余生都将在没有热情、应付世俗中度过的恐惧,一一浮上心头。 + +确实,我的大学生活并没有什么特别的经历,那种让自己脱颖而出的经历。但是转念一想,我早在大一就开始了自己的尝试。从大一上加入学生会,大一下报名工高班,到大二上亚运会志愿者、选修抽象代数,大二下确实没有什么动作,当时的我也是抑郁到了极点,孤独和压力让我在学业和作息上都非常挣扎。堕入谷底之后,我开始思考了,并有所答案:我想要探索自己的无限可能,想要找到真正的热爱,为此我愿意付出一切的努力。 + +所以,应该说从那时候开始,我就有意识的在寻找了,暑假期间拍脑袋想试试 MLSys 科研,就联系到了 zbh 老师。随后的大三上,我的课业压力还是比较大,还很自负,认为不用花很多时间学习网络、OS、体系课,还错失了可能是一生唯一一次好好捣鼓交换机的机会,现在想想,这些真的是 MLSys 的基础啊;托福也是应付式的考了一次,果不其然考的不怎么样。沉浸于动漫的世界,我差一点失去了对现实的感知;在科研方面,胡乱而间断的学习让我并没有掌握什么实质性的知识,按说应该开始跟随学长做项目了,却在不知不觉中消磨了时间。我本应该向 z 老师和学长们寻求帮助,但是却憋着不说,心思根本不在科研上。 + +我没有放弃,也没有任何理由放弃。在寒假,我联系了 lak 学长,努力复现了实验结果,然后开始了我的第一段正式的科研。这段科研,做的很被动,一开始尝试的是 prompt engineering,一度让我觉得没有任何技术含量。后来在和 ak 学长提出了问题后,学长凭借良好的科研直觉指出我们可以做一种新型的思维链。于是我们转向了使用 langchain 框架的思维链引导,充分利用图片数据和对应的 3D 场景数据来指导 VLM 进行探索,提高感知能力。中途我时而很被动、惰怠,导致学长生气了一次,更换了一位合作者。在那之后,我比较迅速的搭出了实验框架,我们在两个数据集上测评了一下,发现确实有一些提升。随后投了一个会,但由于数据集太少、效果不明显,后来撤稿了。 + +这之后,我开始和 ybh 老师做暑研,还是很惰怠,我觉得自己沟通的太少了,而且只局限于和老师沟通,没有一位比较亲近的学长。因此虽然也有在做实验,但是很挣扎,常常没有正反馈,也不想尝试新方法,懒得动脑子。期间,老师也有些不满,但非常克制、有礼貌,即便如此我还是很焦虑。我在 sparsity 和 KV cache reuse 上的尝试,最终由于缺乏好的 idea 而告终,随后开始了 linear attention 的尝试。我个人感觉刚开始接触 linear attention 比较痛苦,一个人啃 paper,推导数学都很艰难。随后偶然间看到了 sonta 学姐的 tutorial,才感觉醍醐灌顶。然而我也没有系统性的记下笔记,只是在胡乱的看自己不太懂的 fla 代码,并不知道要先学习一下 triton...就这样,我们最终打算开始用几个 linear attention 替换 standard attention 的微调框架开始微调 dllm。我比较快速的开始修改代码运行实验,这个时候,保研的时间点到了。 + +我有点焦急的问了一下 y 老师,能否给我 phd offer。结果显而易见,得到否定的答复。老师加上了一个条件,给我布置了一个作业,如果能够完成,那么就招我做 gpu virtualization 方向。我当时觉得不熟悉这个方向,也觉得自己和 y 老师合作不顺利,因此就不了了之了。 + +就这样,我没有 phd offer,也没有参加保研,而推荐信也很难向 y 老师开口要。其实 z 老师的推荐信,我心里也没底。就这样,我用带着这几段没有结果的简历,开始了一段实习套磁,向北美的几个有做 mlsys 的 lab 投递了简历。有三个老师回复了我,我就这样开始了在 ucsd 的新一段实习。 + +这次,是一个 postdoc 学长带我,他有一个 low hanging 的 idea 想要验证,我看了相关 paper 后就开始了实验。一开始运行修改后的代码,训练代码没有问题,但测评时出现了 NaN 的报错,我找不到原因,学长看了代码也没有找到原因。后来,我 debug 了一下,尝试把 cuda 的 auto mixed precision 关掉,就没有这个问题了,但并不知道所以然,学长也不太明白。这个时候,我和学长之间的进度对齐已经出现了问题,我没有立即的把自己要做的实验,已有的实验结果分享给学长,每次都是他找我才汇报,而且我也逐渐丧失了热情,每天投入科研的时间很少,汇报成了一种应付手段。有一次,我找到了一篇 idea 和我们很相似的 paper,但没有第一时间和他汇报。第二天他得知这篇 paper 之后,觉得我们的 idea 已经被这篇 paper 做掉了。我抱着很多的疑惑,尝试去跑一下我们提出的其他的版本,尽可能避免与这篇 paper 的 idea 有重合,然而都失败了。我记得学长问了很多次,“为什么他们能 work,我们跑的却不能?“ + +于是我们尝试训练另一个原本冻结的模块,结果还是不理想。这次,还是学长催促我汇报。结束之后,他说这个项目已经没有什么希望了。他告诉我,以我现在的状态,虽然能拿到他们 lab 的推荐信,但是 return offer 是不可能的。他还告诉我,如果我愿意,现在组里有另外一个 phd 在做一个 diffusion attention 相关的项目,预计投nips,我现在参与进来,可以拿一个三作。 + +我觉得这些经历,我始终没有做到很主动,可能一开始会有些热情,但每次都逐渐丧失,也没有积极的去想 idea。更重要的是,没有积极的沟通,请教学长学姐。没有把自己当成一个新手本科生,想学长学姐请教自己不会不熟悉的问题,也没有按照要求去学习新的知识和材料、执行下一步。在项目上花的时间也越来越少。但奇怪的是,在那些不做项目的时间里,我也没有非常放松的去娱乐和探索新事物,就是这样一种“我应该工作“和“我不想工作“的摇摆中过的很不自在。 + +回顾到此,已经差不多了。我的结论是,我一直在探索和尝试,但是心态似乎不太稳定,我觉得不管是生活中还是科研上,都应该找到好的伙伴,时常沟通交流,重拾热情。那种破防的感觉,已经逐渐被自己切实留下的脚印消解了,是的,我确实是在好好享用大学这顿“丰盛的自助餐“,只不过尝试的还没有这么坚决,而这就是我接下来该做的。 + +其实不止于此,我还尝试了其他的事物并感受到了自己内心的声音。我开始了自己的网球之旅,街舞之路,认识了一两个还不错的朋友。我希望自己能够多沟通,像自己中学时那样,放下一切自负的心理,虚心求教,踏实学习。 + +其实我认为,这句话的主语“大学“,完全可以换成“科研“。科研应当是旷野,你应该不断尝试,找到自己产生原创和影响力的方向,这才是我读 phd 的目的。当然,你应该去实习,掌握现有的理论和技术,发现他们的长处,找到他们的短处,然后总结出来,然后使用新的方法来尝试解决,然后不停的尝试,然后总结,输出博客或者 tutorial,然后再学习新的 cs 和 math 甚至于 physics 知识,然后尝试用新的方法解决,直到你找到 work 的方式。 + +这真的很浪漫,这真的是独属于 phd 的浪漫。我想拥有这样一份浪漫,也想要书写自己的故事。我希望自己能够有一双灵巧的手帮我写出完善的代码来执行,一个聪明的脑袋来不断吸收、消化已有知识,创造出新的知识。在 AI 和 system 乃至现实世界做出一些有用的东西。 + +而且你收获的可能不止于此,在这条路上,还可能会有志同道合的研究伙伴、技艺高超的工程师、雄心勃勃的企业家、一起玩耍的好兄弟,还可能会有,最最奢侈的,一份美丽的爱情。 \ No newline at end of file diff --git a/_posts/2026-02-16-xgboost.md b/_posts/2026-02-16-xgboost.md new file mode 100644 index 00000000000..6f9b068b486 --- /dev/null +++ b/_posts/2026-02-16-xgboost.md @@ -0,0 +1,10 @@ +--- +title: XGBoost学习笔记 +description: Tree boosting 类监督学习范式 +author: cybotiger +date: 2026-02-16 08:00:00 +0800 +categories: [AI, 神经网络] +tags: [tbd] +--- + +[https://xgboost.readthedocs.io/en/release_3.2.0/tutorials/model.html](https://xgboost.readthedocs.io/en/release_3.2.0/tutorials/model.html) \ No newline at end of file diff --git a/_posts/2026-02-20-streamline-as-philosophy.md b/_posts/2026-02-20-streamline-as-philosophy.md new file mode 100644 index 00000000000..523281bfa8f --- /dev/null +++ b/_posts/2026-02-20-streamline-as-philosophy.md @@ -0,0 +1,20 @@ +--- +title: 流程化的哲学 +description: 流程化蕴含的管理哲学 +author: cybotiger +date: 2026-02-19 08:00:00 +0800 +categories: [哲学, 效率] +tags: [tbd] +--- + +之前舅妈听妈妈抱怨一个问题,说老爸作为一个老板,却总是亲力亲为,没有把工人给用起来。也不是因为工人不想干或者老爸不好意思派活,但似乎给他派活这件事本身就需要某种稀缺性的精力,不是每次都能有的。接着妈妈又说,每次有临时性的活想让工人干,老爸又不太放心,还是觉得自己做稳妥。 + +舅妈回答很干脆:你要把每天要工人做的事情流程化,比如每天都要把所有的清单查一遍。这样,工人每天有固定的流程,明确的指标;不需要工人很高的主观能动性,也不需要老板随机应变;最重要的是,可以把随机性的、临时性的任务也囊括进去,这样就都在一个框架里面解决,不会有那么多例外。 + +舅妈也是有管理小规模团队经验的,我听了之后也觉得很有道理,而且有感触。因为,在科研的过程中,我也发现自己很多时候都需要费劲的动脑,不管是读论文、还是读代码、还是改代码跑实验、还是汇报进度、还是交流请教疑问,都很缺乏一种标准的模式“以不变应万变“,各种意外带来的是情绪的波动、时间安排的不合理、科研探索思路的混乱,最终都会导致科研陷入低谷。 + +这听起来似乎很像是所谓的“应该克服的惰性“,但我认为并非如此。很多时候反而是需要这种流程化的工作带来的稳定踏实感,能在时间的积累下产生效益;科研的 idea 并非凭空冒出,总是在和最正确的人交流+动手实践+多看 paper 中产生的。 + +现在对于我的启示,应该是上手新项目时,就要快速找到一套做事的框架,然后多问,微调。需要日日践行。做完一个项目,要进行大的复盘,把正确的习惯、成功的经验提炼出来,形成自己的研究方法论。 + +完了,我不知道继续写啥了,就先这样吧。但是我觉得这或许是一种管理哲学,也是一种办事原则,有值得研究的地方。希望未来能够填上这个坑。 \ No newline at end of file diff --git a/_posts/2026-03-01-load-balance-in-transformers.md b/_posts/2026-03-01-load-balance-in-transformers.md new file mode 100644 index 00000000000..e26087f6138 --- /dev/null +++ b/_posts/2026-03-01-load-balance-in-transformers.md @@ -0,0 +1,19 @@ +--- +title: AI workload balance Literature +description: >- + 负载均衡的系统层面优化相关 paper +author: cybotiger +date: 2026-03-01 12:00:00 +0800 +categories: [计算机系统, AI] +tags: [分布式, 论文阅读] +math: true +mermaid: true +--- +## DCP +原文链接: +[DCP: Addressing Input Dynamism In Long-Context Training via Dynamic Context Parallelism](https://arxiv.org/pdf/2510.10620) + +## WLB-LLM +原文链接: +[WLB-LLM: Workload-Balanced 4D Parallelism for Large Language Model Training](https://arxiv.org/pdf/2503.17924) + diff --git a/_sass/addon/commons.scss b/_sass/addon/commons.scss index 7ba57557868..e986f98fdd2 100644 --- a/_sass/addon/commons.scss +++ b/_sass/addon/commons.scss @@ -1,3 +1,9 @@ +@use 'sass:math'; +@use 'module'; +@use 'variables'; +@use '../colors/typography-dark'; +@use '../colors/typography-light'; + /* The common styles */ html { @@ -6,22 +12,22 @@ html { @media (prefers-color-scheme: light) { &:not([data-mode]), &[data-mode='light'] { - @include light-scheme; + @include typography-light.light-scheme; } &[data-mode='dark'] { - @include dark-scheme; + @include typography-dark.dark-scheme; } } @media (prefers-color-scheme: dark) { &:not([data-mode]), &[data-mode='dark'] { - @include dark-scheme; + @include typography-dark.dark-scheme; } &[data-mode='light'] { - @include light-scheme; + @include typography-light.light-scheme; } } } @@ -32,17 +38,17 @@ body { env(safe-area-inset-bottom) env(safe-area-inset-left); color: var(--text-color); -webkit-font-smoothing: antialiased; - font-family: $font-family-base; + font-family: variables.$font-family-base; } /* --- Typography --- */ @for $i from 1 through 5 { h#{$i} { - @extend %heading; + @extend %heading !optional; @if $i > 1 { - @extend %anchor; + @extend %anchor !optional; } @if $i < 5 { @@ -70,7 +76,7 @@ body { } a { - @extend %link-color; + @extend %link-color !optional; text-decoration: none; } @@ -115,10 +121,10 @@ blockquote { padding: 1rem 1rem 1rem 3rem; color: var(--prompt-text-color); - @extend %rounded; + @extend %rounded !optional; &::before { - font-family: "iconfont"; + font-family: 'iconfont'; text-align: center; width: 3rem; position: absolute; @@ -128,10 +134,10 @@ blockquote { } } - @include prompt('tip', '\e608'); - @include prompt('info', '\e6e8'); - @include prompt('warning', '\e6e8', $rotate: 180); - @include prompt('danger', '\e6be'); + @include module.prompt('tip', '\e608'); + @include module.prompt('info', '\e6e8'); + @include module.prompt('warning', '\e6e8', $rotate: 180); + @include module.prompt('danger', '\e6be'); } kbd { @@ -145,7 +151,7 @@ kbd { padding-top: 0.1rem; color: var(--kbd-text-color); background-color: var(--kbd-bg-color); - border-radius: $radius-sm; + border-radius: variables.$radius-sm; border: solid 1px var(--kbd-wrap-color); box-shadow: inset 0 -2px 0 var(--kbd-wrap-color); } @@ -157,21 +163,21 @@ hr { footer { background-color: var(--main-bg); - height: $footer-height; + height: variables.$footer-height; border-top: 1px solid var(--main-border-color); - @extend %text-xs; + @extend %text-xs !optional; a { - @extend %text-highlight; + @extend %text-highlight !optional; &:hover { - @extend %link-hover; + @extend %link-hover !optional; } } em { - @extend %text-highlight; + @extend %text-highlight !optional; } p { @@ -183,7 +189,7 @@ footer { /* iconfont icons */ i { &.iconfont { - @extend %no-cursor; + @extend %no-cursor !optional; } } @@ -220,7 +226,7 @@ i { font-family: inherit; line-height: inherit; - @include label(inherit); + @include module.label(inherit); } .post-tag { @@ -252,7 +258,7 @@ i { } a { - @extend %no-bottom-border; + @extend %no-bottom-border !optional; color: #6c757d; } @@ -268,10 +274,10 @@ i { color: inherit; &:hover { - @extend %link-hover; + @extend %link-hover !optional; } - @extend %no-bottom-border; + @extend %no-bottom-border !optional; } } @@ -284,27 +290,27 @@ i { margin-bottom: 0.3rem; } - @extend %sup-fn-target; + @extend %sup-fn-target !optional; > p { margin-left: 0.25em; - @include mt-mb(0); + @include module.mt-mb(0); } } } .footnote { @at-root a#{&} { - @include ml-mr(1px); - @include pl-pr(2px); + @include module.ml-mr(1px); + @include module.pl-pr(2px); border-bottom-style: none !important; } } sup { - @extend %sup-fn-target; + @extend %sup-fn-target !optional; } .reversefootnote { @@ -326,7 +332,8 @@ sup { margin-bottom: 1.5rem; overflow-x: auto; border-radius: 0.25rem; - box-shadow: 0 1px 2px rgba(var(--tb-shade-color), 0.12), 0 3px 10px rgba(var(--tb-shade-color), 0.08); + box-shadow: 0 1px 2px rgba(var(--tb-shade-color), 0.12), + 0 3px 10px rgba(var(--tb-shade-color), 0.08); > table { display: table; @@ -365,7 +372,7 @@ sup { } > td { - @extend %table-cell; + @extend %table-cell !optional; } &:last-child > td { @@ -383,7 +390,7 @@ sup { height: 100%; overflow: hidden; - @extend %rounded; + @extend %rounded !optional; &:not(.no-bg) { background: var(--img-bg); @@ -394,7 +401,7 @@ sup { -o-object-fit: cover; object-fit: cover; - @extend %rounded; + @extend %rounded !optional; @at-root #post-list & { width: 100%; @@ -403,14 +410,14 @@ sup { } .post-preview { - @extend %rounded; + @extend %rounded !optional; border: 0; background: var(--card-bg); box-shadow: var(--card-shadow); &::before { - @extend %rounded; + @extend %rounded !optional; content: ''; width: 100%; @@ -438,7 +445,7 @@ main { p { > a.popup { &:not(.normal):not(.left):not(.right) { - @include align-center; + @include module.align-center; } } } @@ -447,22 +454,22 @@ main { #tags, #archives { a:not(:hover) { - @extend %no-bottom-border; + @extend %no-bottom-border !optional; } } } .post-meta { - @extend %text-sm; + @extend %text-sm !optional; a { &:not([class]):hover { - @extend %link-hover; + @extend %link-hover !optional; } } em { - @extend %normal-font-style; + @extend %normal-font-style !optional; } } @@ -473,18 +480,18 @@ main { a { &.popup { - @extend %no-cursor; - @extend %img-caption; - @include mt-mb(0.5rem); + @extend %no-cursor !optional; + @extend %img-caption !optional; + @include module.mt-mb(0.5rem); cursor: zoom-in; } &:not(.img-link) { - @extend %link-underline; + @extend %link-underline !optional; &:hover { - @extend %link-hover; + @extend %link-hover !optional; } } } @@ -551,7 +558,7 @@ main { } /* .content */ .tag:hover { - @extend %tag-hover; + @extend %tag-hover !optional; } .post-tag { @@ -620,7 +627,7 @@ main { margin-bottom: 1rem; aspect-ratio: 16 / 9; - @extend %rounded; + @extend %rounded !optional; &.twitch { aspect-ratio: 310 / 189; @@ -636,14 +643,14 @@ main { margin-bottom: 0; } - @extend %img-caption; + @extend %img-caption !optional; } .embed-audio { width: 100%; display: block; - @extend %img-caption; + @extend %img-caption !optional; } /* --- buttons --- */ @@ -675,7 +682,7 @@ main { /* Overwrite bootstrap tooltip */ .tooltip-inner { -/* Overrided BS4 Tooltip */ + /* Overrided BS4 Tooltip */ font-size: 0.7rem; max-width: 220px; text-align: left; @@ -735,14 +742,14 @@ $btn-border-width: 3px; $btn-mb: 0.5rem; #sidebar { - @include pl-pr(0); + @include module.pl-pr(0); position: fixed; top: 0; left: 0; height: 100%; overflow-y: auto; - width: $sidebar-width; + width: variables.$sidebar-width; background: var(--sidebar-bg); border-right: 1px solid var(--sidebar-border-color); @@ -762,7 +769,7 @@ $btn-mb: 0.5rem; } a { - @extend %sidebar-links; + @extend %sidebar-links !optional; } #avatar { @@ -783,16 +790,16 @@ $btn-mb: 0.5rem; } .profile-wrapper { - @include mt-mb(2.5rem); - @include ml-mr(1.25rem); - @extend %clickable-transition; + @include module.mt-mb(2.5rem); + @include module.ml-mr(1.25rem); + @extend %clickable-transition !optional; width: 100%; } .site-title { - @extend %clickable-transition; - @extend %sidebar-link-hover; + @extend %clickable-transition !optional; + @extend %sidebar-link-hover !optional; font-family: inherit; font-weight: 900; @@ -822,10 +829,10 @@ $btn-mb: 0.5rem; opacity: 0.9; width: 100%; - @include pl-pr(1.5rem); + @include module.pl-pr(1.5rem); a.nav-link { - @include pt-pb(0.6rem); + @include module.pt-pb(0.6rem); display: flex; align-items: center; @@ -894,12 +901,12 @@ $btn-mb: 0.5rem; } a { - @extend %button; - @extend %sidebar-link-hover; - @extend %clickable-transition; + @extend %button !optional; + @extend %sidebar-link-hover !optional; + @extend %clickable-transition !optional; &:not(:last-child) { - margin-right: $sb-btn-gap; + margin-right: variables.$sb-btn-gap; } } @@ -908,14 +915,16 @@ $btn-mb: 0.5rem; } #mode-toggle { - @extend %button; - @extend %sidebar-links; - @extend %sidebar-link-hover; + @extend %button !optional; + @extend %sidebar-links !optional; + @extend %sidebar-link-hover !optional; } .icon-border { - @extend %no-cursor; - @include ml-mr(calc(($sb-btn-gap - $btn-border-width) / 2)); + @extend %no-cursor !optional; + @include module.ml-mr( + calc((variables.$sb-btn-gap - $btn-border-width) / 2) + ); background-color: var(--sidebar-btn-color); content: ''; @@ -955,12 +964,12 @@ $btn-mb: 0.5rem; /* --- top-bar --- */ #topbar-wrapper { - height: $topbar-height; + height: variables.$topbar-height; background-color: var(--topbar-bg); } #topbar { - @extend %btn-color; + @extend %btn-color !optional; #breadcrumb { font-size: 1rem; @@ -968,7 +977,7 @@ $btn-mb: 0.5rem; padding-left: 0.5rem; a:hover { - @extend %link-hover; + @extend %link-hover !optional; } span { @@ -983,43 +992,43 @@ $btn-mb: 0.5rem; } /* #topbar */ ::-webkit-input-placeholder { - @include placeholder; + @include module.placeholder; } ::-moz-placeholder { - @include placeholder; + @include module.placeholder; } :-ms-input-placeholder { - @include placeholder; + @include module.placeholder; } ::-ms-input-placeholder { - @include placeholder; + @include module.placeholder; } ::placeholder { - @include placeholder; + @include module.placeholder; } :focus::-webkit-input-placeholder { - @include placeholder-focus; + @include module.placeholder-focus; } :focus::-moz-placeholder { - @include placeholder-focus; + @include module.placeholder-focus; } :focus:-ms-input-placeholder { - @include placeholder-focus; + @include module.placeholder-focus; } :focus::-ms-input-placeholder { - @include placeholder-focus; + @include module.placeholder-focus; } :focus::placeholder { - @include placeholder-focus; + @include module.placeholder-focus; } search { @@ -1048,7 +1057,7 @@ search { display: none; white-space: nowrap; - @extend %cursor-pointer; + @extend %cursor-pointer !optional; } #search-input { @@ -1086,7 +1095,7 @@ search { padding-right: 0.2rem; } - @extend %link-color; + @extend %link-color !optional; } } @@ -1098,12 +1107,12 @@ search { line-height: 1.5rem; &:hover { - @extend %link-hover; + @extend %link-hover !optional; } - @extend %link-color; - @extend %no-bottom-border; - @extend %heading; + @extend %link-color !optional; + @extend %no-bottom-border !optional; + @extend %heading !optional; } > article { @@ -1121,7 +1130,7 @@ search { } > p { - @extend %text-ellipsis; + @extend %text-ellipsis !optional; white-space: break-spaces; display: -webkit-box; @@ -1151,7 +1160,7 @@ search { #main-wrapper { position: relative; - @include pl-pr(0); + @include module.pl-pr(0); > .container { min-height: 100vh; @@ -1161,7 +1170,7 @@ search { #topbar-wrapper.row, #main-wrapper > .container > .row, #search-result-wrapper > .row { - @include ml-mr(0); + @include module.ml-mr(0); } #tail-wrapper { @@ -1181,12 +1190,12 @@ search { cursor: pointer; position: fixed; right: 1rem; - bottom: calc($footer-height-large - $back2top-size / 2); + bottom: calc(variables.$footer-height-large - variables.$back2top-size / 2); background: var(--button-bg); color: var(--btn-backtotop-color); padding: 0; - width: $back2top-size; - height: $back2top-size; + width: variables.$back2top-size; + height: variables.$back2top-size; border-radius: 50%; border: 1px solid var(--btn-backtotop-border-color); transition: opacity 0.5s ease-in-out, transform 0.2s ease-out; @@ -1197,7 +1206,7 @@ search { } i { - line-height: $back2top-size; + line-height: variables.$back2top-size; position: relative; bottom: 2px; } @@ -1271,7 +1280,7 @@ search { main { .content { > blockquote[class^='prompt-'] { - @include ml-mr(-1rem); + @include module.ml-mr(-1rem); border-radius: 0; max-width: none; @@ -1291,12 +1300,12 @@ search { } #topbar { - @extend %full-width; + @extend %full-width !optional; } #main-wrapper > .container { - @extend %full-width; - @include pl-pr(0); + @extend %full-width !optional; + @include module.pl-pr(0); } } @@ -1315,7 +1324,7 @@ search { footer { @include slide; - height: $footer-height-large; + height: variables.$footer-height-large; padding: 1.5rem 0; } @@ -1325,7 +1334,7 @@ search { } #main-wrapper { - transform: translateX($sidebar-width); + transform: translateX(variables.$sidebar-width); } #back-to-top { @@ -1336,8 +1345,8 @@ search { #sidebar { @include slide; - transform: translateX(-$sidebar-width); /* hide */ - -webkit-transform: translateX(-$sidebar-width); + transform: translateX(-(variables.$sidebar-width)); /* hide */ + -webkit-transform: translateX(-(variables.$sidebar-width)); } #main-wrapper { @@ -1400,7 +1409,7 @@ search { } #main-wrapper { - margin-left: $sidebar-width; + margin-left: variables.$sidebar-width; } #sidebar { @@ -1414,11 +1423,11 @@ search { } search { - max-width: $search-max-width; + max-width: variables.$search-max-width; } #search-result-wrapper { - max-width: $main-content-max-width; + max-width: variables.$main-content-max-width; justify-content: start !important; } @@ -1435,7 +1444,7 @@ search { /* button 'back-to-Top' position */ #back-to-top { right: 5%; - bottom: calc($footer-height - $back2top-size / 2); + bottom: calc(variables.$footer-height - variables.$back2top-size / 2); } #topbar-title { @@ -1512,7 +1521,7 @@ search { @media all and (min-width: 1400px) { #back-to-top { - right: calc((100vw - $sidebar-width - 1140px) / 2 + 3rem); + right: calc((100vw - variables.$sidebar-width - 1140px) / 2 + 3rem); } } @@ -1520,23 +1529,24 @@ search { $icon-gap: 1rem; #main-wrapper { - margin-left: $sidebar-width-large; + margin-left: variables.$sidebar-width-large; } #topbar-wrapper { - left: $sidebar-width-large; + left: variables.$sidebar-width-large; } search { margin-right: calc( - $main-content-max-width / 4 - $search-max-width - 0.75rem + variables.$main-content-max-width / 4 - variables.$search-max-width - + 0.75rem ); } #main-wrapper > .container { - max-width: $main-content-max-width; + max-width: variables.$main-content-max-width; - @include pl-pr(1.75rem, true); + @include module.pl-pr(1.75rem, true); } main.col-12, @@ -1546,12 +1556,15 @@ search { #back-to-top { right: calc( - (100vw - $sidebar-width-large - $main-content-max-width) / 2 + 2rem + ( + 100vw - variables.$sidebar-width-large - + variables.$main-content-max-width + ) / 2 + 2rem ); } #sidebar { - width: $sidebar-width-large; + width: variables.$sidebar-width-large; .profile-wrapper { margin-top: 3.5rem; @@ -1593,7 +1606,7 @@ search { ul { li.nav-item { - @include pl-pr(2.75rem); + @include module.pl-pr(2.75rem); } } @@ -1602,11 +1615,13 @@ search { margin-bottom: 1.75rem; a:not(:last-child) { - margin-right: $sb-btn-gap-lg; + margin-right: variables.$sb-btn-gap-lg; } .icon-border { - @include ml-mr(calc(($sb-btn-gap-lg - $btn-border-width) / 2)); + @include module.ml-mr( + calc((variables.$sb-btn-gap-lg - $btn-border-width) / 2) + ); } } } @@ -1678,8 +1693,8 @@ details { } @function random_range($min, $max) { - $rand: random(); - $random_range: $min + floor($rand * (($max - $min) + 1)); + $rand: math.random(); + $random_range: $min + math.floor($rand * (($max - $min) + 1)); @return $random_range; } @@ -1722,7 +1737,12 @@ details { @for $i from 0 through 50 { &:nth-child(#{$i}) { --circle-left: #{random_range(0%, 100%)}; - --circle-background: rgba(#{random_range(0, 255)}, #{random_range(0, 255)}, #{random_range(0, 255)}, 0.06); + --circle-background: rgba( + #{random_range(0, 255)}, + #{random_range(0, 255)}, + #{random_range(0, 255)}, + 0.06 + ); --circle-side-length: #{random_range(20px, 200px)}; --circle-time: #{random_range(10s, 45s)}; --circle-delay: #{random_range(0s, 25s)}; @@ -1740,4 +1760,4 @@ details { .btn-link { text-decoration: none; -} \ No newline at end of file +} diff --git a/_sass/addon/module.scss b/_sass/addon/module.scss index 5be6bfa7e33..6fac84e29d8 100644 --- a/_sass/addon/module.scss +++ b/_sass/addon/module.scss @@ -1,3 +1,5 @@ +@use 'variables'; + /* * Mainly scss modules, only imported to `assets/css/main.scss` */ @@ -7,7 +9,7 @@ %heading { color: var(--heading-color); font-weight: 600; - font-family: $font-family-heading; + font-family: variables.$font-family-heading; scroll-margin-top: 3.5rem; } @@ -82,7 +84,7 @@ } %rounded { - border-radius: $radius-lg; + border-radius: variables.$radius-lg; } %img-caption { diff --git a/_sass/addon/syntax.scss b/_sass/addon/syntax.scss index b40d90f9b77..edc4c09308f 100644 --- a/_sass/addon/syntax.scss +++ b/_sass/addon/syntax.scss @@ -2,29 +2,31 @@ * The syntax highlight. */ -@import 'colors/syntax-light'; -@import 'colors/syntax-dark'; +@use '../colors/syntax-light'; +@use '../colors/syntax-dark'; +@use 'module'; +@use 'variables'; html { @media (prefers-color-scheme: light) { &:not([data-mode]), &[data-mode='light'] { - @include light-syntax; + @include syntax-light.light-syntax; } &[data-mode='dark'] { - @include dark-syntax; + @include syntax-dark.dark-syntax; } } @media (prefers-color-scheme: dark) { &:not([data-mode]), &[data-mode='dark'] { - @include dark-syntax; + @include syntax-dark.dark-syntax; } &[data-mode='light'] { - @include light-syntax; + @include syntax-light.light-syntax; } } } @@ -54,21 +56,21 @@ html { } .highlight { - @extend %rounded; - @extend %code-snippet-bg; + @extend %rounded !optional; + @extend %code-snippet-bg !optional; overflow: auto; padding-bottom: 0.75rem; @at-root figure#{&} { - @extend %code-snippet-bg; + @extend %code-snippet-bg !optional; } pre { - font-family: "Fira Code", "Microsoft Yahei", monospace; + font-family: 'Microsoft Yahei', monospace; font-variant-ligatures: normal; margin-bottom: 0; - font-size: $code-font-size; + font-size: variables.$code-font-size; line-height: 1.4rem; word-wrap: normal; /* Fixed Safari overflow-x */ } @@ -107,7 +109,7 @@ code { -webkit-hyphens: none; -ms-hyphens: none; hyphens: none; - font-family: "Fira Code", "Microsoft Yahei", monospace; + font-family: 'Microsoft Yahei', monospace; font-variant-ligatures: none; color: var(--code-color); @@ -115,7 +117,7 @@ code { // font-size: $code-font-size; padding: 3px 5px; word-break: break-word; - border-radius: $radius-sm; + border-radius: variables.$radius-sm; background-color: var(--inline-code-bg); } @@ -141,7 +143,7 @@ code { } td.rouge-code { - @extend %code-snippet-padding; + @extend %code-snippet-padding !optional; /* Prevent some browser extends from @@ -155,13 +157,13 @@ td.rouge-code { } div[class^='language-'] { - @extend %rounded; - @extend %code-snippet-bg; + @extend %rounded !optional; + @extend %code-snippet-bg !optional; box-shadow: var(--language-border-color) 0 0 0 1px; .content > & { - @include ml-mr(-1rem); + @include module.ml-mr(-1rem); border-radius: 0; } @@ -190,23 +192,23 @@ div { } .code-header { - @extend %no-cursor; + @extend %no-cursor !optional; display: flex; justify-content: space-between; align-items: center; - height: $code-header-height; + height: variables.$code-header-height; margin-left: 0.75rem; margin-right: 0.25rem; /* the label block */ span { - line-height: $code-header-height; + line-height: variables.$code-header-height; /* label icon */ i { font-size: 1rem; - width: $code-icon-width; + width: variables.$code-icon-width; color: var(--code-header-icon-color); &.small { @@ -230,12 +232,12 @@ div { /* clipboard */ button { - @extend %cursor-pointer; - @extend %rounded; + @extend %cursor-pointer !optional; + @extend %rounded !optional; border: 1px solid transparent; - height: $code-header-height; - width: $code-header-height; + height: variables.$code-header-height; + width: variables.$code-header-height; padding: 0; background-color: inherit; @@ -279,13 +281,13 @@ div { @media all and (min-width: 576px) { div[class^='language-'] { .content > & { - @include ml-mr(0); + @include module.ml-mr(0); - border-radius: $radius-lg; + border-radius: variables.$radius-lg; } .code-header { - @include ml-mr(0); + @include module.ml-mr(0); $dot-margin: 1rem; @@ -293,19 +295,19 @@ div { content: ''; display: inline-block; margin-left: $dot-margin; - width: $code-dot-size; - height: $code-dot-size; + width: variables.$code-dot-size; + height: variables.$code-dot-size; border-radius: 50%; background-color: var(--code-header-muted-color); - box-shadow: ($code-dot-size + $code-dot-gap) 0 0 + box-shadow: (variables.$code-dot-size + variables.$code-dot-gap) 0 0 var(--code-header-muted-color), - ($code-dot-size + $code-dot-gap) * 2 0 0 + (variables.$code-dot-size + variables.$code-dot-gap) * 2 0 0 var(--code-header-muted-color); } span { // center the text of label - margin-left: calc(($dot-margin + $code-dot-size) / 2 * -1); + margin-left: calc(($dot-margin + variables.$code-dot-size) / 2 * -1); } } } diff --git a/_sass/dist/bootstrap.css b/_sass/dist/bootstrap.css index 700b90407f3..88a5ec9d932 100644 --- a/_sass/dist/bootstrap.css +++ b/_sass/dist/bootstrap.css @@ -1,5 +1,1969 @@ -@charset "UTF-8";/*! +@charset "UTF-8"; /*! * Bootstrap v5.3.3 (https://getbootstrap.com/) * Copyright 2011-2024 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root{--bs-success:#198754;--bs-danger:#dc3545;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-bg:#e9ecef;--bs-tertiary-bg:#f8f9fa;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}.small,small{font-size:.875em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button{text-transform:none}[role=button]{cursor:pointer}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.list-unstyled{padding-left:0;list-style:none}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.figure{display:inline-block}.container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}@media (min-width:1400px){.container{max-width:1320px}}:root{}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-1>*{flex:0 0 auto;width:100%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.g-0{--bs-gutter-x:0}.g-0{--bs-gutter-y:0}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}}@media (min-width:992px){.col-lg{flex:1 0 0%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333333%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}}.table{--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;--bs-table-color:var(--bs-emphasis-color);--bs-table-bg:var(--bs-body-bg);--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.col-form-label{padding-top:calc(.375rem + var(--bs-border-width));padding-bottom:calc(.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + var(--bs-border-width));padding-bottom:calc(.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + var(--bs-border-width));padding-bottom:calc(.25rem + var(--bs-border-width));font-size:.875rem}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-tooltip,.was-validated :valid~.valid-tooltip{display:block}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-tooltip{display:block}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:var(--bs-border-radius-lg)}.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:var(--bs-border-radius-sm)}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-text:last-child{margin-bottom:0}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-border-radius);position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast:not(.show){display:none}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:var(--bs-emphasis-color);--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-decoration-color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,0.5));text-underline-offset:0.25em;-webkit-backface-visibility:hidden;backface-visibility:hidden}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-middle{vertical-align:middle!important}.opacity-75{opacity:.75!important}.overflow-hidden{overflow:hidden!important}.d-block{display:block!important}.d-flex{display:flex!important}.d-none{display:none!important}.shadow{box-shadow:var(--bs-box-shadow)!important}.position-fixed{position:fixed!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-100{height:100%!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-grow-1{flex-grow:1!important}.flex-wrap{flex-wrap:wrap!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.pt-0{padding-top:0!important}.pt-2{padding-top:.5rem!important}.pe-1{padding-right:.25rem!important}.pe-4{padding-right:1.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-4{padding-bottom:1.5rem!important}.ps-0{padding-left:0!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-nowrap{white-space:nowrap!important}.text-muted{color:var(--bs-secondary-color)!important}.pe-none{pointer-events:none!important}.rounded-circle{border-radius:50%!important}.invisible{visibility:hidden!important}.z-1{z-index:1!important}.z-2{z-index:2!important}@media (min-width:576px){.flex-sm-row{flex-direction:row!important}.me-sm-4{margin-right:1.5rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}}@media (min-width:768px){.flex-md-row-reverse{flex-direction:row-reverse!important}.mt-md-0{margin-top:0!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}}@media (min-width:992px){.flex-lg-row{flex-direction:row!important}.justify-content-lg-between{justify-content:space-between!important}.align-items-lg-center{align-items:center!important}.ms-lg-0{margin-left:0!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.ps-lg-2{padding-left:.5rem!important}}@media (min-width:1200px){.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}}@media (min-width:1400px){.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}} \ No newline at end of file + */ +:root { + --bs-success: #198754; + --bs-danger: #dc3545; + --bs-font-sans-serif: system-ui, -apple-system, 'Segoe UI', Roboto, + 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif, + 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, + 'Liberation Mono', 'Courier New', monospace; + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-emphasis-color: #000; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-bg: #e9ecef; + --bs-tertiary-bg: #f8f9fa; + --bs-heading-color: inherit; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); +} +*, +::after, +::before { + box-sizing: border-box; +} +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: transparent; +} +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color); +} +.h1, +h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + .h1, + h1 { + font-size: 2.5rem; + } +} +.h2, +h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + .h2, + h2 { + font-size: 2rem; + } +} +.h3, +h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + .h3, + h3 { + font-size: 1.75rem; + } +} +.h4, +h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + .h4, + h4 { + font-size: 1.5rem; + } +} +.h5, +h5 { + font-size: 1.25rem; +} +.h6, +h6 { + font-size: 1rem; +} +p { + margin-top: 0; + margin-bottom: 1rem; +} +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} +ol, +ul { + padding-left: 2rem; +} +dl, +ol, +ul { + margin-top: 0; + margin-bottom: 1rem; +} +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0; +} +dt { + font-weight: 700; +} +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} +blockquote { + margin: 0 0 1rem; +} +.small, +small { + font-size: 0.875em; +} +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} +a:not([href]):not([class]), +a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} +code, +kbd, +pre { + font-family: var(--bs-font-monospace); + font-size: 1em; +} +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} +figure { + margin: 0 0 1rem; +} +img { + vertical-align: middle; +} +table { + caption-side: bottom; + border-collapse: collapse; +} +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} +th { + text-align: inherit; + text-align: -webkit-match-parent; +} +tbody, +td, +tfoot, +th, +thead, +tr { + border-color: inherit; + border-style: solid; + border-width: 0; +} +label { + display: inline-block; +} +button { + border-radius: 0; +} +button:focus:not(:focus-visible) { + outline: 0; +} +button, +input, +optgroup { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +button { + text-transform: none; +} +[role='button'] { + cursor: pointer; +} +[list]:not([type='date']):not([type='datetime-local']):not([type='month']):not( + [type='week'] + ):not([type='time'])::-webkit-calendar-picker-indicator { + display: none !important; +} +[type='button'], +[type='reset'], +button { + -webkit-appearance: button; +} +[type='button']:not(:disabled), +[type='reset']:not(:disabled), +button:not(:disabled) { + cursor: pointer; +} +::-moz-focus-inner { + padding: 0; + border-style: none; +} +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-year-field { + padding: 0; +} +::-webkit-inner-spin-button { + height: auto; +} +[type='search'] { + -webkit-appearance: textfield; + outline-offset: -2px; +} +::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-color-swatch-wrapper { + padding: 0; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +iframe { + border: 0; +} +summary { + display: list-item; + cursor: pointer; +} +[hidden] { + display: none !important; +} +.lead { + font-size: 1.25rem; + font-weight: 300; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} +.figure { + display: inline-block; +} +.container { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} +@media (min-width: 576px) { + .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container { + max-width: 1320px; + } +} +:root { +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} +.col { + flex: 1 0 0%; +} +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} +.col-auto { + flex: 0 0 auto; + width: auto; +} +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} +.col-3 { + flex: 0 0 auto; + width: 25%; +} +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} +.col-6 { + flex: 0 0 auto; + width: 50%; +} +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} +.col-9 { + flex: 0 0 auto; + width: 75%; +} +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} +.col-12 { + flex: 0 0 auto; + width: 100%; +} +.g-0 { + --bs-gutter-x: 0; +} +.g-0 { + --bs-gutter-y: 0; +} +.g-4 { + --bs-gutter-x: 1.5rem; +} +.g-4 { + --bs-gutter-y: 1.5rem; +} +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } +} +.table { + --bs-table-color-type: initial; + --bs-table-bg-type: initial; + --bs-table-color-state: initial; + --bs-table-bg-state: initial; + --bs-table-color: var(--bs-emphasis-color); + --bs-table-bg: var(--bs-body-bg); + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + color: var( + --bs-table-color-state, + var(--bs-table-color-type, var(--bs-table-color)) + ); + background-color: var(--bs-table-bg); + border-bottom-width: var(--bs-border-width); + box-shadow: inset 0 0 0 9999px + var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} +.col-form-label { + padding-top: calc(0.375rem + var(--bs-border-width)); + padding-bottom: calc(0.375rem + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.25rem; +} +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.875rem; +} +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: var(--bs-body-bg); + background-clip: padding-box; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type='file'] { + overflow: hidden; +} +.form-control[type='file']:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.5em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-moz-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control:disabled { + background-color: var(--bs-secondary-bg); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--bs-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--bs-secondary-bg); +} +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-success); + border-radius: var(--bs-border-radius); +} +.is-valid ~ .valid-tooltip, +.was-validated :valid ~ .valid-tooltip { + display: block; +} +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: var(--bs-border-radius); +} +.is-invalid ~ .invalid-tooltip, +.was-validated :invalid ~ .invalid-tooltip { + display: block; +} +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: var(--bs-body-color); + --bs-btn-bg: transparent; + --bs-btn-border-width: var(--bs-border-width); + --bs-btn-border-color: transparent; + --bs-btn-border-radius: var(--bs-border-radius); + --bs-btn-hover-border-color: transparent; + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem + rgba(var(--bs-btn-focus-shadow-rgb), 0.5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn.active, +.btn.show, +.btn:first-child:active, +:not(.btn-check) + .btn:active { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} +.btn.active:focus-visible, +.btn.show:focus-visible, +.btn:first-child:active:focus-visible, +:not(.btn-check) + .btn:active:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn.disabled, +.btn:disabled { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0b5ed7; + --bs-btn-hover-border-color: #0a58ca; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0a58ca; + --bs-btn-active-border-color: #0a53be; + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0d6efd; + --bs-btn-disabled-border-color: #0d6efd; +} +.btn-outline-primary { + --bs-btn-color: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0d6efd; + --bs-btn-hover-border-color: #0d6efd; + --bs-btn-focus-shadow-rgb: 13, 110, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0d6efd; + --bs-btn-active-border-color: #0d6efd; + --bs-btn-disabled-color: #0d6efd; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0d6efd; +} +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108, 117, 125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; +} +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} +.btn-lg { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); +} +.btn-sm { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); +} +.collapse:not(.show) { + display: none; +} +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + background: 0 0; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:focus, +.nav-link:hover { + color: var(--bs-nav-link-hover-color); +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.nav-link.disabled, +.nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: ; + --bs-card-border-width: var(--bs-border-width); + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: var(--bs-border-radius); + --bs-card-inner-border-radius: calc( + var(--bs-border-radius) - (var(--bs-border-width)) + ); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + color: var(--bs-body-color); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group { + border-top: 0; +} +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); +} +.card-text:last-child { + margin-bottom: 0; +} +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) + var(--bs-card-inner-border-radius) 0 0; +} +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: var(--bs-body-bg); + --bs-pagination-border-width: var(--bs-border-width); + --bs-pagination-border-color: var(--bs-border-color); + --bs-pagination-border-radius: var(--bs-border-radius); + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: var(--bs-tertiary-bg); + --bs-pagination-hover-border-color: var(--bs-border-color); + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: var(--bs-secondary-bg); + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0d6efd; + --bs-pagination-active-border-color: #0d6efd; + --bs-pagination-disabled-color: var(--bs-secondary-color); + --bs-pagination-disabled-bg: var(--bs-secondary-bg); + --bs-pagination-disabled-border-color: var(--bs-border-color); + display: flex; + padding-left: 0; + list-style: none; +} +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid + var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.active > .page-link, +.page-link.active { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.disabled > .page-link, +.page-link.disabled { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} +.page-item:not(:first-child) .page-link { + margin-left: calc(var(--bs-border-width) * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: var(--bs-border-radius); + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} +.list-group { + --bs-list-group-color: var(--bs-body-color); + --bs-list-group-bg: var(--bs-body-bg); + --bs-list-group-border-color: var(--bs-border-color); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-disabled-color: var(--bs-secondary-color); + --bs-list-group-disabled-bg: var(--bs-body-bg); + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0d6efd; + --bs-list-group-active-border-color: #0d6efd; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) + var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid + var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, +.list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} +.btn-close { + --bs-btn-close-color: #000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); +} +.btn-close.disabled, +.btn-close:disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); +} +.toast { + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-secondary-color); + --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-header-border-color: var(--bs-border-color-translucent); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast:not(.show) { + display: none; +} +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid + var(--bs-toast-header-border-color); + border-top-left-radius: calc( + var(--bs-toast-border-radius) - var(--bs-toast-border-width) + ); + border-top-right-radius: calc( + var(--bs-toast-border-radius) - var(--bs-toast-border-width) + ); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: var(--bs-body-bg); + --bs-tooltip-bg: var(--bs-emphasis-color); + --bs-tooltip-border-radius: var(--bs-border-radius); + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ''; + border-color: transparent; + border-style: solid; +} +.bs-tooltip-auto[data-popper-placement^='top'] .tooltip-arrow, +.bs-tooltip-top .tooltip-arrow { + bottom: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-auto[data-popper-placement^='top'] .tooltip-arrow::before, +.bs-tooltip-top .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) + calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^='right'] .tooltip-arrow, +.bs-tooltip-end .tooltip-arrow { + left: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-auto[data-popper-placement^='right'] .tooltip-arrow::before, +.bs-tooltip-end .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) + var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^='bottom'] .tooltip-arrow, +.bs-tooltip-bottom .tooltip-arrow { + top: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-auto[data-popper-placement^='bottom'] .tooltip-arrow::before, +.bs-tooltip-bottom .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) + var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^='left'] .tooltip-arrow, +.bs-tooltip-start .tooltip-arrow { + right: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-auto[data-popper-placement^='left'] .tooltip-arrow::before, +.bs-tooltip-start .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 + calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ''; +} +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba( + var(--bs-link-color-rgb), + var(--bs-link-opacity, 0.5) + ); + text-decoration-color: rgba( + var(--bs-link-color-rgb), + var(--bs-link-opacity, 0.5) + ); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.align-middle { + vertical-align: middle !important; +} +.opacity-75 { + opacity: 0.75 !important; +} +.overflow-hidden { + overflow: hidden !important; +} +.d-block { + display: block !important; +} +.d-flex { + display: flex !important; +} +.d-none { + display: none !important; +} +.shadow { + box-shadow: var(--bs-box-shadow) !important; +} +.position-fixed { + position: fixed !important; +} +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} +.w-25 { + width: 25% !important; +} +.w-50 { + width: 50% !important; +} +.w-75 { + width: 75% !important; +} +.w-100 { + width: 100% !important; +} +.w-auto { + width: auto !important; +} +.h-100 { + height: 100% !important; +} +.flex-row { + flex-direction: row !important; +} +.flex-column { + flex-direction: column !important; +} +.flex-grow-1 { + flex-grow: 1 !important; +} +.flex-wrap { + flex-wrap: wrap !important; +} +.justify-content-center { + justify-content: center !important; +} +.justify-content-between { + justify-content: space-between !important; +} +.align-items-end { + align-items: flex-end !important; +} +.align-items-center { + align-items: center !important; +} +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} +.mt-0 { + margin-top: 0 !important; +} +.mt-1 { + margin-top: 0.25rem !important; +} +.mt-2 { + margin-top: 0.5rem !important; +} +.mt-3 { + margin-top: 1rem !important; +} +.mt-4 { + margin-top: 1.5rem !important; +} +.mt-5 { + margin-top: 3rem !important; +} +.me-1 { + margin-right: 0.25rem !important; +} +.me-2 { + margin-right: 0.5rem !important; +} +.me-3 { + margin-right: 1rem !important; +} +.me-auto { + margin-right: auto !important; +} +.mb-0 { + margin-bottom: 0 !important; +} +.mb-1 { + margin-bottom: 0.25rem !important; +} +.mb-2 { + margin-bottom: 0.5rem !important; +} +.mb-3 { + margin-bottom: 1rem !important; +} +.mb-4 { + margin-bottom: 1.5rem !important; +} +.mb-5 { + margin-bottom: 3rem !important; +} +.ms-1 { + margin-left: 0.25rem !important; +} +.ms-2 { + margin-left: 0.5rem !important; +} +.ms-3 { + margin-left: 1rem !important; +} +.ms-4 { + margin-left: 1.5rem !important; +} +.ms-auto { + margin-left: auto !important; +} +.p-0 { + padding: 0 !important; +} +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} +.pt-0 { + padding-top: 0 !important; +} +.pt-2 { + padding-top: 0.5rem !important; +} +.pe-1 { + padding-right: 0.25rem !important; +} +.pe-4 { + padding-right: 1.5rem !important; +} +.pb-1 { + padding-bottom: 0.25rem !important; +} +.pb-2 { + padding-bottom: 0.5rem !important; +} +.pb-4 { + padding-bottom: 1.5rem !important; +} +.ps-0 { + padding-left: 0 !important; +} +.ps-2 { + padding-left: 0.5rem !important; +} +.ps-3 { + padding-left: 1rem !important; +} +.fs-6 { + font-size: 1rem !important; +} +.fst-italic { + font-style: italic !important; +} +.fst-normal { + font-style: normal !important; +} +.fw-light { + font-weight: 300 !important; +} +.lh-lg { + line-height: 2 !important; +} +.text-start { + text-align: left !important; +} +.text-center { + text-align: center !important; +} +.text-decoration-none { + text-decoration: none !important; +} +.text-nowrap { + white-space: nowrap !important; +} +.text-muted { + color: var(--bs-secondary-color) !important; +} +.pe-none { + pointer-events: none !important; +} +.rounded-circle { + border-radius: 50% !important; +} +.invisible { + visibility: hidden !important; +} +.z-1 { + z-index: 1 !important; +} +.z-2 { + z-index: 2 !important; +} +@media (min-width: 576px) { + .flex-sm-row { + flex-direction: row !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } +} +@media (min-width: 768px) { + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } +} +@media (min-width: 992px) { + .flex-lg-row { + flex-direction: row !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .align-items-lg-center { + align-items: center !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } +} +@media (min-width: 1200px) { + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } +} +@media (min-width: 1400px) { + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } +} diff --git a/_sass/layout/archives.scss b/_sass/layout/archives.scss index fd1979b8f91..2edb6f89eb7 100644 --- a/_sass/layout/archives.scss +++ b/_sass/layout/archives.scss @@ -23,7 +23,7 @@ margin-left: -$timeline-width; &::before { - @extend %timeline; + @extend %timeline !optional; height: 72px; left: 79px; @@ -31,7 +31,7 @@ } &:first-child::before { - @extend %timeline; + @extend %timeline !optional; height: 32px; top: 24px; @@ -59,7 +59,7 @@ font-size: 1.1rem; line-height: 3rem; - @extend %text-ellipsis; + @extend %text-ellipsis !optional; &:nth-child(odd) { background-color: var(--main-bg, #ffffff); @@ -74,7 +74,7 @@ } &::before { - @extend %timeline; + @extend %timeline !optional; top: 0; left: 77px; diff --git a/_sass/layout/categories.scss b/_sass/layout/categories.scss index 8136f9eec0d..fc10fad32e7 100644 --- a/_sass/layout/categories.scss +++ b/_sass/layout/categories.scss @@ -1,3 +1,5 @@ +@use '../addon/variables'; + /* Style for Tab Categories */ @@ -12,11 +14,11 @@ &.card, .list-group { - @extend %rounded; + @extend %rounded !optional; } .card-header { - $radius: calc($radius-lg - 1px); + $radius: calc(variables.$radius-lg - 1px); padding: 0.75rem; border-radius: $radius; @@ -29,7 +31,7 @@ } i { - @extend %category-icon-color; + @extend %category-icon-color !optional; } .list-group-item { diff --git a/_sass/layout/category-tag.scss b/_sass/layout/category-tag.scss index fe7d99cec25..2b5fb851bd3 100644 --- a/_sass/layout/category-tag.scss +++ b/_sass/layout/category-tag.scss @@ -1,3 +1,5 @@ +@use '../addon/module'; + /* Style for page Category and Tag */ @@ -28,7 +30,7 @@ /* post's title */ > a { - @extend %no-bottom-border; + @extend %no-bottom-border !optional; font-size: 1.1rem; } @@ -48,7 +50,7 @@ #page-tag, #access-lastmod { a:hover { - @extend %link-hover; + @extend %link-hover !optional; margin-bottom: -1px; /* Avoid jumping */ } @@ -63,7 +65,7 @@ } > a { - @include text-ellipsis; + @include module.text-ellipsis; } } } diff --git a/_sass/layout/home.scss b/_sass/layout/home.scss index c33d54d3cf5..3a27503a353 100644 --- a/_sass/layout/home.scss +++ b/_sass/layout/home.scss @@ -1,3 +1,4 @@ +@use '../addon/variables'; /* Style for Homepage */ @@ -20,14 +21,14 @@ background: none; %img-radius { - border-radius: $radius-lg $radius-lg 0 0; + border-radius: variables.$radius-lg variables.$radius-lg 0 0; } .preview-img { - @extend %img-radius; + @extend %img-radius !optional; img { - @extend %img-radius; + @extend %img-radius !optional; } } @@ -36,7 +37,7 @@ padding: 1rem; .card-title { - @extend %text-clip; + @extend %text-clip !optional; color: var(--heading-color) !important; font-size: 1.25rem; @@ -49,10 +50,10 @@ } .card-text.content { - @extend %muted; + @extend %muted !optional; p { - @extend %text-clip; + @extend %text-clip !optional; line-height: 1.5; margin: 0; @@ -60,7 +61,7 @@ } .post-meta { - @extend %muted; + @extend %muted !optional; i { &:not(:first-child) { @@ -69,7 +70,7 @@ } em { - @extend %normal-font-style; + @extend %normal-font-style !optional; color: inherit; } @@ -77,7 +78,7 @@ > div:first-child { display: block; - @extend %text-ellipsis; + @extend %text-ellipsis !optional; } } } @@ -132,7 +133,7 @@ /* Tablet */ @media all and (min-width: 768px) { %img-radius { - border-radius: 0 $radius-lg $radius-lg 0; + border-radius: 0 variables.$radius-lg variables.$radius-lg 0; } #post-list { diff --git a/_sass/layout/post.scss b/_sass/layout/post.scss index b09ab824248..4fa355f5259 100644 --- a/_sass/layout/post.scss +++ b/_sass/layout/post.scss @@ -1,3 +1,6 @@ +@use '../addon/module'; +@use '../addon/variables'; + /** * Post-specific styles */ @@ -16,7 +19,7 @@ header { .post-desc { - @extend %heading; + @extend %heading !optional; font-size: 1.125rem; line-height: 1.6; @@ -29,7 +32,7 @@ header { em, time { - @extend %text-highlight; + @extend %text-highlight !optional; } em { @@ -45,7 +48,7 @@ header { } .post-tail-wrapper { - @extend %text-sm; + @extend %text-sm !optional; margin-top: 6rem; border-bottom: 1px double var(--main-border-color); @@ -54,20 +57,20 @@ header { line-height: 1.2rem; > a { - @extend %text-highlight; + @extend %text-highlight !optional; &:hover { - @extend %link-hover; + @extend %link-hover !optional; } } span:last-child { - @extend %text-sm; + @extend %text-sm !optional; } } /* .license-wrapper */ .post-meta a:not(:hover) { - @extend %link-underline; + @extend %link-underline !optional; } .share-wrapper { @@ -87,17 +90,17 @@ header { i { color: var(--btn-share-color); - @extend %icon-size; + @extend %icon-size !optional; } > * { - @extend %icon-size; + @extend %icon-size !optional; margin-left: 0.5rem; &:hover { i { - @extend %btn-share-hover; + @extend %btn-share-hover !optional; } } } @@ -107,7 +110,7 @@ header { border: none; line-height: inherit; - @extend %cursor-pointer; + @extend %cursor-pointer !optional; } a :hover { @@ -118,27 +121,27 @@ header { &.icon-twitter { color: rgba(29, 161, 242, 1); } - + &.icon-facebook { color: rgb(66, 95, 156); } - + &.icon-telegram { color: rgb(39, 159, 217); } - + &.icon-linkedin { color: rgb(0, 119, 181); } - + &.icon-weibo { color: rgb(229, 20, 43); } - + &.icon-13 { color: rgb(1, 187, 10); } - + &.icon-qzone { color: rgb(255, 218, 5); } @@ -165,16 +168,16 @@ header { .post-tag { &:hover { - @extend %link-hover; - @extend %tag-hover; - @extend %no-bottom-border; + @extend %link-hover !optional; + @extend %tag-hover !optional; + @extend %no-bottom-border !optional; } } } .post-navigation { .btn { - @extend %btn-post-nav; + @extend %btn-post-nav !optional; &:not(:hover) { color: var(--link-color); @@ -187,7 +190,7 @@ header { } &.disabled { - @extend %btn-post-nav; + @extend %btn-post-nav !optional; pointer-events: auto; cursor: not-allowed; @@ -207,12 +210,12 @@ header { } &:first-child { - border-radius: $radius-lg 0 0 $radius-lg; + border-radius: variables.$radius-lg 0 0 variables.$radius-lg; left: 0.5px; } &:last-child { - border-radius: 0 $radius-lg $radius-lg 0; + border-radius: 0 variables.$radius-lg variables.$radius-lg 0; right: 0.5px; } } @@ -294,7 +297,7 @@ header { .toc-link { display: block; - @extend %text-ellipsis; + @extend %text-ellipsis !optional; &:hover { color: var(--toc-highlight); @@ -333,15 +336,15 @@ header { top: 0; z-index: 1; margin: 0 -1rem; - height: $topbar-height; + height: variables.$topbar-height; background: var(--main-bg); border-bottom: 1px solid var(--main-border-color); transition: all 0.2s ease-in-out; - @extend %btn-color; + @extend %btn-color !optional; .label { - @extend %heading; + @extend %heading !optional; margin-left: 0.25rem; padding: 0 0.75rem; @@ -349,7 +352,7 @@ header { } &.invisible { - top: -$topbar-height; + top: -(variables.$topbar-height); transition: none; } } @@ -357,11 +360,11 @@ header { #toc-solo-trigger { color: var(--text-muted-color); border-color: var(--btn-border-color); - border-radius: $radius-lg; + border-radius: variables.$radius-lg; .label { font-size: 1rem; - font-family: $font-family-heading; + font-family: variables.$font-family-heading; } &:hover { @@ -373,7 +376,7 @@ header { @mixin slide-in { from { opacity: 0.7; - transform: translateY(-$topbar-height); + transform: translateY(-(variables.$topbar-height)); } to { @@ -389,7 +392,7 @@ header { } 100% { - transform: translateY(-$topbar-height); + transform: translateY(-(variables.$topbar-height)); opacity: 0; } } @@ -418,10 +421,10 @@ header { border-color: var(--toc-popup-border-color); border-width: 1px; - border-radius: $radius-lg; + border-radius: variables.$radius-lg; color: var(--text-color); background: var(--card-bg); - margin-top: $topbar-height; + margin-top: variables.$topbar-height; min-width: 20rem; font-size: 1.05rem; @@ -440,11 +443,11 @@ header { } @media all and (min-width: 850px) { - left: $sidebar-width; + left: variables.$sidebar-width; } .header { - @extend %btn-color; + @extend %btn-color !optional; position: -webkit-sticky; position: sticky; @@ -453,7 +456,7 @@ header { border-bottom: 1px solid var(--main-border-color); .label { - font-family: $font-family-heading; + font-family: variables.$font-family-heading; } } @@ -522,8 +525,8 @@ header { #toc-popup-content { overflow: auto; - max-height: calc(100vh - 4 * $topbar-height); - font-family: $font-family-heading; + max-height: calc(100vh - 4 * variables.$topbar-height); + font-family: variables.$font-family-heading; margin-bottom: -$curtain-height; } } @@ -532,18 +535,18 @@ header { #related-posts { > h3 { - @include label(1.1rem, 600); + @include module.label(1.1rem, 600); } time { - @extend %normal-font-style; - @extend %text-xs; + @extend %normal-font-style !optional; + @extend %text-xs !optional; color: var(--text-muted-color); } p { - @extend %text-ellipsis; + @extend %text-ellipsis !optional; font-size: 0.9rem; margin-bottom: 0.5rem; @@ -555,7 +558,7 @@ header { .card { h4 { - @extend %text-clip; + @extend %text-clip !optional; } } } @@ -575,7 +578,7 @@ header { } .share-label { - @include label(inherit, 400, inherit); + @include module.label(inherit, 400, inherit); &::after { content: ':'; @@ -602,8 +605,8 @@ header { /* Hide SideBar and TOC */ @media all and (max-width: 849px) { .post-navigation { - @include pl-pr(0); - @include ml-mr(-0.5rem); + @include module.pl-pr(0); + @include module.ml-mr(-0.5rem); } } diff --git a/_sass/main.bundle.scss b/_sass/main.bundle.scss index 52e893feb36..bc7014bb7ff 100644 --- a/_sass/main.bundle.scss +++ b/_sass/main.bundle.scss @@ -1,2 +1,2 @@ -@import 'dist/bootstrap'; -@import 'main'; +@use 'dist/bootstrap'; +@use 'main'; diff --git a/_sass/main.scss b/_sass/main.scss index 5b0ea596924..e285fdbe3bc 100644 --- a/_sass/main.scss +++ b/_sass/main.scss @@ -1,14 +1,13 @@ -@import 'colors/typography-light'; -@import 'colors/typography-dark'; -@import 'addon/variables'; -@import 'variables-hook'; -@import 'addon/module'; -@import 'addon/syntax'; -@import 'addon/commons'; -@import 'layout/home'; -@import 'layout/subdomain'; -@import 'layout/post'; -@import 'layout/tags'; -@import 'layout/archives'; -@import 'layout/categories'; -@import 'layout/category-tag'; +@use 'colors/typography-light'; +@use 'colors/typography-dark'; +@use 'addon/variables'; +@use 'variables-hook'; +@use 'addon/module'; +@use 'addon/syntax'; +@use 'addon/commons'; +@use 'layout/home'; +@use 'layout/post'; +@use 'layout/tags'; +@use 'layout/archives'; +@use 'layout/categories'; +@use 'layout/category-tag'; diff --git a/_tabs/about.md b/_tabs/about.md index 356d2910b74..0437f1394d8 100644 --- a/_tabs/about.md +++ b/_tabs/about.md @@ -1,9 +1,9 @@ --- title: 关于 icon: icon-info -order: 5 +order: 4 --- ## 关于我 -此处填入您想要展示的信息。 +此处填入您想要展示的信息。 \ No newline at end of file diff --git a/_tabs/archives.md b/_tabs/archives.md index 7e9393df173..0372c0d5b33 100644 --- a/_tabs/archives.md +++ b/_tabs/archives.md @@ -2,5 +2,5 @@ layout: archives title: 档案 icon: icon-archive -order: 4 +order: 2 --- diff --git a/_tabs/categories.md b/_tabs/categories.md index 35ac22f7e20..d6df005183c 100644 --- a/_tabs/categories.md +++ b/_tabs/categories.md @@ -2,5 +2,5 @@ layout: categories title: 分类 icon: icon-stream -order: 2 +order: 1 --- diff --git a/_tabs/subdomain.md b/_tabs/subdomain.md deleted file mode 100644 index 3d9db93570c..00000000000 --- a/_tabs/subdomain.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -layout: subdomain -title: 子域 -no_title: true -no_post: true -icon: icon-buywebhostingstep1domain -order: 1 ---- diff --git a/assets/404.html b/assets/404.html index 0fa3e3a9574..31c3a206901 100644 --- a/assets/404.html +++ b/assets/404.html @@ -4,19 +4,19 @@ permalink: /404.html redirect_from: -- /norobots/ -- /assets/ -- /posts/ + - /norobots/ + - /assets/ + - /posts/ no_title: true --- - - - - - - + + + + + +
- 404 Template + 404 Template

404

-

{{ site.data.locales[site.lang].not_found.statment }}

- +

+ {{ site.data.locales[site.lang].not_found.statment }} +

+
{{ site.data.locales[site.lang].not_found.head_back }}
{{ site.data.locales[site.lang].not_found.or }} - +
diff --git a/assets/css/jekyll-theme-chirpy.scss b/assets/css/jekyll-theme-chirpy.scss index d20545ba80b..6a979b7f5c1 100644 --- a/assets/css/jekyll-theme-chirpy.scss +++ b/assets/css/jekyll-theme-chirpy.scss @@ -1,10 +1,10 @@ --- --- -@import 'main {%- if jekyll.environment == 'production' -%} - .bundle +@use 'main.bundle'; +{%- else -%} +@use 'main'; {%- endif -%} -'; /* append your custom style below */ diff --git a/assets/img/404/404 Template.png b/assets/img/404/Template.png similarity index 100% rename from assets/img/404/404 Template.png rename to assets/img/404/Template.png diff --git a/assets/img/eic-mesh/image.png b/assets/img/eic-mesh/image.png new file mode 100644 index 00000000000..ccced44402f Binary files /dev/null and b/assets/img/eic-mesh/image.png differ diff --git a/assets/img/eic-mesh/image1.png b/assets/img/eic-mesh/image1.png new file mode 100644 index 00000000000..a62742916a8 Binary files /dev/null and b/assets/img/eic-mesh/image1.png differ diff --git a/assets/img/favicons/android-chrome-192x192.png b/assets/img/favicons/android-chrome-192x192.png index 3571ffbec02..d6c53af4a32 100644 Binary files a/assets/img/favicons/android-chrome-192x192.png and b/assets/img/favicons/android-chrome-192x192.png differ diff --git a/assets/img/favicons/android-chrome-512x512.png b/assets/img/favicons/android-chrome-512x512.png index 524e0620a93..d9977ee7634 100644 Binary files a/assets/img/favicons/android-chrome-512x512.png and b/assets/img/favicons/android-chrome-512x512.png differ diff --git a/assets/img/favicons/apple-touch-icon.png b/assets/img/favicons/apple-touch-icon.png index 50ee1d2446b..51b429603f7 100644 Binary files a/assets/img/favicons/apple-touch-icon.png and b/assets/img/favicons/apple-touch-icon.png differ diff --git a/assets/img/favicons/browserconfig.xml b/assets/img/favicons/browserconfig.xml index a02a5c74ebb..55f8c068fa8 100644 --- a/assets/img/favicons/browserconfig.xml +++ b/assets/img/favicons/browserconfig.xml @@ -6,7 +6,7 @@ layout: compress - + #da532c diff --git a/assets/img/favicons/favicon-16x16.png b/assets/img/favicons/favicon-16x16.png index e5bdb2cc82b..b58643c356e 100644 Binary files a/assets/img/favicons/favicon-16x16.png and b/assets/img/favicons/favicon-16x16.png differ diff --git a/assets/img/favicons/favicon-32x32.png b/assets/img/favicons/favicon-32x32.png index 1b64f53b72f..7e26a51b3aa 100644 Binary files a/assets/img/favicons/favicon-32x32.png and b/assets/img/favicons/favicon-32x32.png differ diff --git a/assets/img/favicons/favicon-96x96.png b/assets/img/favicons/favicon-96x96.png new file mode 100644 index 00000000000..656880f8146 Binary files /dev/null and b/assets/img/favicons/favicon-96x96.png differ diff --git a/assets/img/favicons/favicon.ico b/assets/img/favicons/favicon.ico index 8c537e026a7..c35a2b50a40 100644 Binary files a/assets/img/favicons/favicon.ico and b/assets/img/favicons/favicon.ico differ diff --git a/assets/img/favicons/mstile-150x150.png b/assets/img/favicons/mstile-150x150.png index 313e69dbea5..8c2a1aaef05 100644 Binary files a/assets/img/favicons/mstile-150x150.png and b/assets/img/favicons/mstile-150x150.png differ diff --git a/assets/img/favicons/site.webmanifest b/assets/img/favicons/site.webmanifest index 03c6113b824..4afbfa1dd4c 100644 --- a/assets/img/favicons/site.webmanifest +++ b/assets/img/favicons/site.webmanifest @@ -2,25 +2,29 @@ layout: compress --- -{% assign favicon_path = "/assets/img/favicons" | relative_url %} - { - "name": "{{ site.title }}", - "short_name": "{{ site.title }}", - "description": "{{ site.description }}", - "icons": [ - { - "src": "{{ favicon_path }}/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "{{ favicon_path }}/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - }], - "start_url": "{{ '/index.html' | relative_url }}", - "theme_color": "#2a1e6b", - "background_color": "#ffffff", - "display": "fullscreen" + % assign favicon_path = "/assets/img/favicons" | relative_url % } + + +{ + "name": "{{ site.title }}", + "short_name": "{{ site.title }}", + "description": "{{ site.description }}", + "icons": [ + { + "src": "{{ favicon_path }}/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "{{ favicon_path }}/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "start_url": "{{ '/index.html' | relative_url }}", + "theme_color": "#2a1e6b", + "background_color": "#ffffff", + "display": "fullscreen" +} \ No newline at end of file diff --git a/assets/img/misc/jit-model.png b/assets/img/misc/jit-model.png new file mode 100644 index 00000000000..c47f6b764a1 Binary files /dev/null and b/assets/img/misc/jit-model.png differ diff --git a/assets/img/misc/x86_64reg.png b/assets/img/misc/x86_64reg.png new file mode 100644 index 00000000000..d7f562a51a2 Binary files /dev/null and b/assets/img/misc/x86_64reg.png differ diff --git a/assets/img/rl/image.png b/assets/img/rl/image.png new file mode 100644 index 00000000000..c18ebb4909d Binary files /dev/null and b/assets/img/rl/image.png differ diff --git a/assets/img/rl/image1.png b/assets/img/rl/image1.png new file mode 100644 index 00000000000..56f3f9c14bf Binary files /dev/null and b/assets/img/rl/image1.png differ diff --git a/assets/js/dist/categories.min.js b/assets/js/dist/categories.min.js index a923177afee..cd72f828e9f 100644 --- a/assets/js/dist/categories.min.js +++ b/assets/js/dist/categories.min.js @@ -1,4 +1,2844 @@ /*! * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ */ -!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},d=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),d(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${b++}`||e.uidEvent||b++}function E(e){const t=w(e);return e.uidEvent=t,v[t]=v[t]||{},v[t]}function O(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=T(e);return _.has(r)||(r=e),[i,o,r]}function A(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,t.replace(h,"")),d=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return j(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,e.addEventListener(a,d,r)}function C(e,t,n,i,o){const r=O(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function L(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function T(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){A(e,t,n,i,!1)},one(e,t,n,i){A(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))L(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==T(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const P={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class N{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?P.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?P.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class M extends N{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const B=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=B(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=B(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=B(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,z=`hide${F}`,W=`hidden${F}`,q=`click${F}.data-api`,R="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends M{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,R),this._element.style[t]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,R);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(R)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(U,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,q,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),f(G);const J=document.getElementsByClassName("collapse");var Z="top",ee="bottom",te="right",ne="left",ie="auto",oe=[Z,ee,te,ne],re="start",se="end",ae="clippingParents",le="viewport",ce="popper",ue="reference",fe=oe.reduce((function(e,t){return e.concat([t+"-"+re,t+"-"+se])}),[]),de=[].concat(oe,[ie]).reduce((function(e,t){return e.concat([t,t+"-"+re,t+"-"+se])}),[]),pe="beforeRead",he="read",me="afterRead",ge="beforeMain",ve="main",be="afterMain",ye="beforeWrite",_e="write",we="afterWrite",Ee=[pe,he,me,ge,ve,be,ye,_e,we];function Oe(e){return e?(e.nodeName||"").toLowerCase():null}function xe(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ae(e){return e instanceof xe(e).Element||e instanceof Element}function Ce(e){return e instanceof xe(e).HTMLElement||e instanceof HTMLElement}function Le(e){return"undefined"!=typeof ShadowRoot&&(e instanceof xe(e).ShadowRoot||e instanceof ShadowRoot)}var Te={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Ce(o)&&Oe(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Ce(i)&&Oe(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Se(e){return e.split("-")[0]}var je=Math.max,ke=Math.min,De=Math.round;function Pe(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function Ne(){return!/^((?!chrome|android).)*safari/i.test(Pe())}function Me(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Ce(e)&&(o=e.offsetWidth>0&&De(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&De(i.height)/e.offsetHeight||1);var s=(Ae(e)?xe(e):window).visualViewport,a=!Ne()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Be(e){var t=Me(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Ie(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Le(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Fe(e){return xe(e).getComputedStyle(e)}function He(e){return["table","td","th"].indexOf(Oe(e))>=0}function $e(e){return((Ae(e)?e.ownerDocument:e.document)||window.document).documentElement}function ze(e){return"html"===Oe(e)?e:e.assignedSlot||e.parentNode||(Le(e)?e.host:null)||$e(e)}function We(e){return Ce(e)&&"fixed"!==Fe(e).position?e.offsetParent:null}function qe(e){for(var t=xe(e),n=We(e);n&&He(n)&&"static"===Fe(n).position;)n=We(n);return n&&("html"===Oe(n)||"body"===Oe(n)&&"static"===Fe(n).position)?t:n||function(e){var t=/firefox/i.test(Pe());if(/Trident/i.test(Pe())&&Ce(e)&&"fixed"===Fe(e).position)return null;var n=ze(e);for(Le(n)&&(n=n.host);Ce(n)&&["html","body"].indexOf(Oe(n))<0;){var i=Fe(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Ve(e,t,n){return je(e,ke(t,n))}function Ye(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ke={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Se(n.placement),l=Re(a),c=[ne,te].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ye("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,oe))}(o.padding,n),f=Be(r),d="y"===l?Z:ne,p="y"===l?ee:te,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=qe(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Ve(y,w,_),O=l;n.modifiersData[i]=((t={})[O]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Ie(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Qe(e){return e.split("-")[1]}var Xe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Ge(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,f=e.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=ne,_=Z,w=window;if(c){var E=qe(n),O="clientHeight",x="clientWidth";if(E===xe(n)&&"static"!==Fe(E=$e(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===Z||(o===ne||o===te)&&r===se)_=ee,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===ne||(o===Z||o===ee)&&r===se)y=te,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Xe),L=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:De(n*o)/o||0,y:De(i*o)/o||0}}({x:p,y:m},xe(n)):{x:p,y:m};return p=L.x,m=L.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((t={})[_]=b?m+"px":"",t[y]=v?p+"px":"",t.transform="",t))}var Je={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Se(t.placement),variation:Qe(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Ge(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ge(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Ze={passive:!0};var et={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=xe(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Ze)})),a&&l.addEventListener("resize",n.update,Ze),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Ze)})),a&&l.removeEventListener("resize",n.update,Ze)}},data:{}},tt={left:"right",right:"left",bottom:"top",top:"bottom"};function nt(e){return e.replace(/left|right|bottom|top/g,(function(e){return tt[e]}))}var it={start:"end",end:"start"};function ot(e){return e.replace(/start|end/g,(function(e){return it[e]}))}function rt(e){var t=xe(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function st(e){return Me($e(e)).left+rt(e).scrollLeft}function at(e){var t=Fe(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function lt(e){return["html","body","#document"].indexOf(Oe(e))>=0?e.ownerDocument.body:Ce(e)&&at(e)?e:lt(ze(e))}function ct(e,t){var n;void 0===t&&(t=[]);var i=lt(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=xe(i),s=o?[r].concat(r.visualViewport||[],at(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(ct(ze(s)))}function ut(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ft(e,t,n){return t===le?ut(function(e,t){var n=xe(e),i=$e(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Ne();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+st(e),y:l}}(e,n)):Ae(t)?function(e,t){var n=Me(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ut(function(e){var t,n=$e(e),i=rt(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=je(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=je(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+st(e),l=-i.scrollTop;return"rtl"===Fe(o||n).direction&&(a+=je(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}($e(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=ct(ze(e)),n=["absolute","fixed"].indexOf(Fe(e).position)>=0&&Ce(e)?qe(e):e;return Ae(n)?t.filter((function(e){return Ae(e)&&Ie(e,n)&&"body"!==Oe(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ft(e,n,i);return t.top=je(o.top,t.top),t.right=ke(o.right,t.right),t.bottom=ke(o.bottom,t.bottom),t.left=je(o.left,t.left),t}),ft(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function pt(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Se(o):null,s=o?Qe(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case Z:t={x:a,y:n.y-i.height};break;case ee:t={x:a,y:n.y+n.height};break;case te:t={x:n.x+n.width,y:l};break;case ne:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case re:t[c]=t[c]-(n[u]/2-i[u]/2);break;case se:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?ae:a,c=n.rootBoundary,u=void 0===c?le:c,f=n.elementContext,d=void 0===f?ce:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Ye("number"!=typeof g?g:Ue(g,oe)),b=d===ce?ue:ce,y=e.rects.popper,_=e.elements[h?b:d],w=dt(Ae(_)?_:_.contextElement||$e(e.elements.popper),l,u,s),E=Me(e.elements.reference),O=pt({reference:E,element:y,placement:o}),x=ut(Object.assign({},y,O)),A=d===ce?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},L=e.modifiersData.offset;if(d===ce&&L){var T=L[o];Object.keys(C).forEach((function(e){var t=[te,ee].indexOf(e)>=0?1:-1,n=[Z,ee].indexOf(e)>=0?"y":"x";C[e]+=T[n]*t}))}return C}function mt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Qe(i),f=u?a?fe:fe.filter((function(e){return Qe(e)===u})):oe,d=f.filter((function(e){return c.indexOf(e)>=0}));0===d.length&&(d=f);var p=d.reduce((function(t,n){return t[n]=ht(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Se(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var gt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,v=Se(g),b=l||(v===g||!h?[nt(g)]:function(e){if(Se(e)===ie)return[];var t=nt(e);return[ot(e),t,ot(t)]}(g)),y=[g].concat(b).reduce((function(e,n){return e.concat(Se(n)===ie?mt(t,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=ht(t,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?T?te:ne:T?ee:Z;_[j]>w[j]&&(D=nt(D));var P=nt(D),N=[];if(r&&N.push(k[L]<=0),a&&N.push(k[D]<=0,k[P]<=0),N.every((function(e){return e}))){x=C,O=!1;break}E.set(C,N)}if(O)for(var M=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},B=h?3:1;B>0;B--){if("break"===M(B))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[Z,te,ee,ne].some((function(t){return e[t]>=0}))}var yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=ht(t,{elementContext:"reference"}),a=ht(t,{altBoundary:!0}),l=vt(s,i),c=vt(a,o,r),u=bt(l),f=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var _t={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Se(e),o=[ne,Z].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[ne,te].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var wt={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=pt({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=ht(t,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Se(t.placement),b=Qe(t.placement),y=!b,_=Re(v),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,O=t.rects.reference,x=t.rects.popper,A="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,T={x:0,y:0};if(E){if(r){var S,j="y"===_?Z:ne,k="y"===_?ee:te,D="y"===_?"height":"width",P=E[_],N=P+g[j],M=P-g[k],B=p?-x[D]/2:0,I=b===re?O[D]:x[D],F=b===re?-x[D]:-O[D],H=t.elements.arrow,$=p&&H?Be(H):{width:0,height:0},z=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],q=z[k],R=Ve(0,O[D],$[D]),V=y?O[D]/2-B-R-W-C.mainAxis:I-R-W-C.mainAxis,Y=y?-O[D]/2+B+R+q+C.mainAxis:F+R+q+C.mainAxis,U=t.elements.arrow&&qe(t.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==L?void 0:L[_])?S:0,X=P+Y-Q,G=Ve(p?ke(N,P+V-Q-K):N,P,p?je(M,X):M);E[_]=G,T[_]=G-P}if(a){var J,ie="x"===_?Z:ne,oe="x"===_?ee:te,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[oe],ue=-1!==[Z,ne].indexOf(v),fe=null!=(J=null==L?void 0:L[w])?J:0,de=ue?le:se-O[ae]-x[ae]-fe+C.altAxis,pe=ue?se+O[ae]+x[ae]-fe-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=Ve(e,t,n);return i>n?n:i}(de,se,pe):Ve(p?de:le,se,p?pe:ce);E[w]=he,T[w]=he-se}t.modifiersData[i]=T}},requiresIfExists:["offset"]};function Ot(e,t,n){void 0===n&&(n=!1);var i,o,r=Ce(t),s=Ce(t)&&function(e){var t=e.getBoundingClientRect(),n=De(t.width)/e.offsetWidth||1,i=De(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=$e(t),l=Me(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Oe(t)||at(a))&&(c=(i=t)!==xe(i)&&Ce(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:rt(i)),Ce(t)?((u=Me(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=st(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function xt(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var At={placement:"bottom",modifiers:[],strategy:"absolute"};function Ct(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Pt.has(n)||Boolean(Nt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Bt={allowList:Dt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},It={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ft={entry:"(string|element|function|null)",selector:"(string|element)"};class Ht extends N{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Bt}static get DefaultType(){return It}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},Ft)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Mt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return d(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const $t=new Set(["sanitize","allowList","sanitizeFn"]),zt="fade",Wt="show",qt=".tooltip-inner",Rt=".modal",Vt="hide.bs.modal",Yt="hover",Ut="focus",Kt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Qt={allowList:Dt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Xt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Gt extends M{constructor(e,t){if(void 0===kt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Qt}static get DefaultType(){return Xt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Vt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Wt),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Yt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(zt,Wt),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(zt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ht({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[qt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(zt)}_isShown(){return this.tip&&this.tip.classList.contains(Wt)}_createPopper(e){const t=d(this._config.placement,[this,e,this._element]),n=Kt[t.toUpperCase()];return jt(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return d(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...d(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Yt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Yt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Yt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Yt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Vt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=P.getDataAttributes(this._element);for(const e of Object.keys(t))$t.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Gt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}function Jt(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Zt(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var en;f(Gt);const tn=document.getElementById("toc-bar"),nn=document.getElementById("toc-solo-trigger"),on=document.getElementsByClassName("toc-trigger"),rn=document.getElementById("toc-popup"),sn=document.getElementById("toc-popup-close"),an="overflow-hidden",ln="closing";class cn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{tn.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${Jt(cn,this,fn)._}px 0px 0px 0px`}).observe(nn),un._=Jt(cn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){Jt(cn,this,un)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return rn.open}static showPopup(){this.lockScroll(!0),rn.showModal();rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){rn.toggleAttribute(ln),rn.addEventListener("animationend",(()=>{rn.toggleAttribute(ln),rn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(an,e),document.body.classList.toggle(an,e)}static clickBackdrop(e){if(rn.hasAttribute(ln))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...on].forEach((e=>{e.onclick=()=>this.showPopup()})),rn.onclick=e=>this.clickBackdrop(e),sn.onclick=()=>this.hidePopup(),rn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var un={_:!0},fn={_:48};Zt(cn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Jt(en=cn,en,fn)._});Zt(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const dn=document.getElementById("mode-toggle");const pn=document.getElementById("sidebar"),hn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class gn{static toggle(){vn._=Jt(gn,this,!Jt(gn,this,vn)._),document.body.toggleAttribute("sidebar-display",Jt(gn,this,vn)._),pn.classList.toggle("z-2",Jt(gn,this,vn)._),mn.classList.toggle("d-none",!Jt(gn,this,vn)._)}}var vn={_:!1};const bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),_n=document.getElementById("search-cancel"),wn=document.querySelectorAll("#main-wrapper>.container>.row"),En=document.getElementById("topbar-title"),On=document.getElementById("search"),xn=document.getElementById("search-result-wrapper"),An=document.getElementById("search-results"),Cn=document.getElementById("search-input"),Ln=document.getElementById("search-hints"),Tn="d-block",Sn="d-none",jn="input-focus",kn="d-flex";class Dn{static on(){bn.classList.add(Sn),En.classList.add(Sn),yn.classList.add(Sn),On.classList.add(kn),_n.classList.add(Tn)}static off(){_n.classList.remove(Tn),On.classList.remove(kn),bn.classList.remove(Sn),En.classList.remove(Sn),yn.classList.remove(Sn)}}class Pn{static on(){this.resultVisible||(xn.classList.remove(Sn),wn.forEach((e=>{e.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(An.innerHTML="",Ln.classList.contains(Sn)&&Ln.classList.remove(Sn),xn.classList.add(Sn),wn.forEach((e=>{e.classList.remove(Sn)})),Cn.textContent="",this.resultVisible=!1)}}function Nn(){return _n.classList.contains(Tn)}Zt(Pn,"resultVisible",!1),dn&&dn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Gt(e))),hn.onclick=mn.onclick=()=>gn.toggle(),yn.addEventListener("click",(()=>{Dn.on(),Pn.on(),Cn.focus()})),_n.addEventListener("click",(()=>{Dn.off(),Pn.off()})),Cn.addEventListener("focus",(()=>{On.classList.add(jn)})),Cn.addEventListener("focusout",(()=>{On.classList.remove(jn)})),Cn.addEventListener("input",(()=>{""===Cn.value?Nn()?Ln.classList.remove(Sn):Pn.off():(Pn.on(),Nn()&&Ln.classList.add(Sn))})),[...J].forEach((e=>{const t="h_"+e.id.substring(2),n=document.getElementById(t);e.addEventListener("hide.bs.collapse",(()=>{n&&(n.querySelector(".iconfont.icon-FolderOpen-1").className="iconfont icon-folder",n.querySelector(".ifrot").classList.add("rotate"),n.classList.remove("hide-border-bottom"))})),e.addEventListener("show.bs.collapse",(()=>{n&&(n.querySelector(".iconfont.icon-folder").className="iconfont icon-FolderOpen-1",n.querySelector(".ifrot").classList.remove("rotate"),n.classList.add("hide-border-bottom"))}))}))}(); +!(function () { + 'use strict'; + const e = new Map(); + var t = { + set(t, n, i) { + e.has(t) || e.set(t, new Map()); + const o = e.get(t); + o.has(n) || 0 === o.size + ? o.set(n, i) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(o.keys())[0] + }.` + ); + }, + get: (t, n) => (e.has(t) && e.get(t).get(n)) || null, + remove(t, n) { + if (!e.has(t)) return; + const i = e.get(t); + i.delete(n), 0 === i.size && e.delete(t); + } + }; + const n = 'transitionend', + i = (e) => ( + e && + window.CSS && + window.CSS.escape && + (e = e.replace(/#([^\s"#']+)/g, (e, t) => `#${CSS.escape(t)}`)), + e + ), + o = (e) => + !(!e || 'object' != typeof e) && + (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType), + r = (e) => + o(e) + ? e.jquery + ? e[0] + : e + : 'string' == typeof e && e.length > 0 + ? document.querySelector(i(e)) + : null, + s = (e) => { + if (!document.documentElement.attachShadow) return null; + if ('function' == typeof e.getRootNode) { + const t = e.getRootNode(); + return t instanceof ShadowRoot ? t : null; + } + return e instanceof ShadowRoot + ? e + : e.parentNode + ? s(e.parentNode) + : null; + }, + a = () => {}, + l = () => + window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') + ? window.jQuery + : null, + c = [], + u = () => 'rtl' === document.documentElement.dir, + f = (e) => { + var t; + (t = () => { + const t = l(); + if (t) { + const n = e.NAME, + i = t.fn[n]; + (t.fn[n] = e.jQueryInterface), + (t.fn[n].Constructor = e), + (t.fn[n].noConflict = () => ((t.fn[n] = i), e.jQueryInterface)); + } + }), + 'loading' === document.readyState + ? (c.length || + document.addEventListener('DOMContentLoaded', () => { + for (const e of c) e(); + }), + c.push(t)) + : t(); + }, + d = function (e) { + let t = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e; + return 'function' == typeof e + ? e( + ...(arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : []) + ) + : t; + }, + p = function (e, t) { + if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2])) + return void d(e); + const i = + ((e) => { + if (!e) return 0; + let { transitionDuration: t, transitionDelay: n } = + window.getComputedStyle(e); + const i = Number.parseFloat(t), + o = Number.parseFloat(n); + return i || o + ? ((t = t.split(',')[0]), + (n = n.split(',')[0]), + 1e3 * (Number.parseFloat(t) + Number.parseFloat(n))) + : 0; + })(t) + 5; + let o = !1; + const r = (i) => { + let { target: s } = i; + s === t && ((o = !0), t.removeEventListener(n, r), d(e)); + }; + t.addEventListener(n, r), + setTimeout(() => { + o || t.dispatchEvent(new Event(n)); + }, i); + }, + h = /[^.]*(?=\..*)\.|.*/, + m = /\..*/, + g = /::\d+$/, + v = {}; + let b = 1; + const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, + _ = new Set([ + 'click', + 'dblclick', + 'mouseup', + 'mousedown', + 'contextmenu', + 'mousewheel', + 'DOMMouseScroll', + 'mouseover', + 'mouseout', + 'mousemove', + 'selectstart', + 'selectend', + 'keydown', + 'keypress', + 'keyup', + 'orientationchange', + 'touchstart', + 'touchmove', + 'touchend', + 'touchcancel', + 'pointerdown', + 'pointermove', + 'pointerup', + 'pointerleave', + 'pointercancel', + 'gesturestart', + 'gesturechange', + 'gestureend', + 'focus', + 'blur', + 'change', + 'reset', + 'select', + 'submit', + 'focusin', + 'focusout', + 'load', + 'unload', + 'beforeunload', + 'resize', + 'move', + 'DOMContentLoaded', + 'readystatechange', + 'error', + 'abort', + 'scroll' + ]); + function w(e, t) { + return (t && `${t}::${b++}`) || e.uidEvent || b++; + } + function E(e) { + const t = w(e); + return (e.uidEvent = t), (v[t] = v[t] || {}), v[t]; + } + function O(e, t) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; + return Object.values(e).find( + (e) => e.callable === t && e.delegationSelector === n + ); + } + function x(e, t, n) { + const i = 'string' == typeof t, + o = i ? n : t || n; + let r = T(e); + return _.has(r) || (r = e), [i, o, r]; + } + function A(e, t, n, i, o) { + if ('string' != typeof t || !e) return; + let [r, s, a] = x(t, n, i); + if (t in y) { + const e = (e) => + function (t) { + if ( + !t.relatedTarget || + (t.relatedTarget !== t.delegateTarget && + !t.delegateTarget.contains(t.relatedTarget)) + ) + return e.call(this, t); + }; + s = e(s); + } + const l = E(e), + c = l[a] || (l[a] = {}), + u = O(c, s, r ? n : null); + if (u) return void (u.oneOff = u.oneOff && o); + const f = w(s, t.replace(h, '')), + d = r + ? (function (e, t, n) { + return function i(o) { + const r = e.querySelectorAll(t); + for (let { target: s } = o; s && s !== this; s = s.parentNode) + for (const a of r) + if (a === s) + return ( + j(o, { delegateTarget: s }), + i.oneOff && S.off(e, o.type, t, n), + n.apply(s, [o]) + ); + }; + })(e, n, s) + : (function (e, t) { + return function n(i) { + return ( + j(i, { delegateTarget: e }), + n.oneOff && S.off(e, i.type, t), + t.apply(e, [i]) + ); + }; + })(e, s); + (d.delegationSelector = r ? n : null), + (d.callable = s), + (d.oneOff = o), + (d.uidEvent = f), + (c[f] = d), + e.addEventListener(a, d, r); + } + function C(e, t, n, i, o) { + const r = O(t[n], i, o); + r && (e.removeEventListener(n, r, Boolean(o)), delete t[n][r.uidEvent]); + } + function L(e, t, n, i) { + const o = t[n] || {}; + for (const [r, s] of Object.entries(o)) + r.includes(i) && C(e, t, n, s.callable, s.delegationSelector); + } + function T(e) { + return (e = e.replace(m, '')), y[e] || e; + } + const S = { + on(e, t, n, i) { + A(e, t, n, i, !1); + }, + one(e, t, n, i) { + A(e, t, n, i, !0); + }, + off(e, t, n, i) { + if ('string' != typeof t || !e) return; + const [o, r, s] = x(t, n, i), + a = s !== t, + l = E(e), + c = l[s] || {}, + u = t.startsWith('.'); + if (void 0 === r) { + if (u) for (const n of Object.keys(l)) L(e, l, n, t.slice(1)); + for (const [n, i] of Object.entries(c)) { + const o = n.replace(g, ''); + (a && !t.includes(o)) || C(e, l, s, i.callable, i.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + C(e, l, s, r, o ? n : null); + } + }, + trigger(e, t, n) { + if ('string' != typeof t || !e) return null; + const i = l(); + let o = null, + r = !0, + s = !0, + a = !1; + t !== T(t) && + i && + ((o = i.Event(t, n)), + i(e).trigger(o), + (r = !o.isPropagationStopped()), + (s = !o.isImmediatePropagationStopped()), + (a = o.isDefaultPrevented())); + const c = j(new Event(t, { bubbles: r, cancelable: !0 }), n); + return ( + a && c.preventDefault(), + s && e.dispatchEvent(c), + c.defaultPrevented && o && o.preventDefault(), + c + ); + } + }; + function j(e) { + let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + for (const [n, i] of Object.entries(t)) + try { + e[n] = i; + } catch { + Object.defineProperty(e, n, { configurable: !0, get: () => i }); + } + return e; + } + function k(e) { + if ('true' === e) return !0; + if ('false' === e) return !1; + if (e === Number(e).toString()) return Number(e); + if ('' === e || 'null' === e) return null; + if ('string' != typeof e) return e; + try { + return JSON.parse(decodeURIComponent(e)); + } catch { + return e; + } + } + function D(e) { + return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`); + } + const P = { + setDataAttribute(e, t, n) { + e.setAttribute(`data-bs-${D(t)}`, n); + }, + removeDataAttribute(e, t) { + e.removeAttribute(`data-bs-${D(t)}`); + }, + getDataAttributes(e) { + if (!e) return {}; + const t = {}, + n = Object.keys(e.dataset).filter( + (e) => e.startsWith('bs') && !e.startsWith('bsConfig') + ); + for (const i of n) { + let n = i.replace(/^bs/, ''); + (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (t[n] = k(e.dataset[i])); + } + return t; + }, + getDataAttribute: (e, t) => k(e.getAttribute(`data-bs-${D(t)}`)) + }; + class N { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(e) { + return ( + (e = this._mergeConfigObj(e)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + _configAfterMerge(e) { + return e; + } + _mergeConfigObj(e, t) { + const n = o(t) ? P.getDataAttribute(t, 'config') : {}; + return { + ...this.constructor.Default, + ...('object' == typeof n ? n : {}), + ...(o(t) ? P.getDataAttributes(t) : {}), + ...('object' == typeof e ? e : {}) + }; + } + _typeCheckConfig(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : this.constructor.DefaultType; + for (const [i, r] of Object.entries(t)) { + const t = e[i], + s = o(t) + ? 'element' + : null == (n = t) + ? `${n}` + : Object.prototype.toString + .call(n) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(r).test(s)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".` + ); + } + var n; + } + } + class M extends N { + constructor(e, n) { + super(), + (e = r(e)) && + ((this._element = e), + (this._config = this._getConfig(n)), + t.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + t.remove(this._element, this.constructor.DATA_KEY), + S.off(this._element, this.constructor.EVENT_KEY); + for (const e of Object.getOwnPropertyNames(this)) this[e] = null; + } + _queueCallback(e, t) { + p( + e, + t, + !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] + ); + } + _getConfig(e) { + return ( + (e = this._mergeConfigObj(e, this._element)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + static getInstance(e) { + return t.get(r(e), this.DATA_KEY); + } + static getOrCreateInstance(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + return ( + this.getInstance(e) || new this(e, 'object' == typeof t ? t : null) + ); + } + static get VERSION() { + return '5.3.3'; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(e) { + return `${e}${this.EVENT_KEY}`; + } + } + const B = (e) => { + let t = e.getAttribute('data-bs-target'); + if (!t || '#' === t) { + let n = e.getAttribute('href'); + if (!n || (!n.includes('#') && !n.startsWith('.'))) return null; + n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`), + (t = n && '#' !== n ? n.trim() : null); + } + return t + ? t + .split(',') + .map((e) => i(e)) + .join(',') + : null; + }, + I = { + find(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return [].concat(...Element.prototype.querySelectorAll.call(t, e)); + }, + findOne(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return Element.prototype.querySelector.call(t, e); + }, + children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)), + parents(e, t) { + const n = []; + let i = e.parentNode.closest(t); + for (; i; ) n.push(i), (i = i.parentNode.closest(t)); + return n; + }, + prev(e, t) { + let n = e.previousElementSibling; + for (; n; ) { + if (n.matches(t)) return [n]; + n = n.previousElementSibling; + } + return []; + }, + next(e, t) { + let n = e.nextElementSibling; + for (; n; ) { + if (n.matches(t)) return [n]; + n = n.nextElementSibling; + } + return []; + }, + focusableChildren(e) { + const t = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ] + .map((e) => `${e}:not([tabindex^="-"])`) + .join(','); + return this.find(t, e).filter( + (e) => + !((e) => + !e || + e.nodeType !== Node.ELEMENT_NODE || + !!e.classList.contains('disabled') || + (void 0 !== e.disabled + ? e.disabled + : e.hasAttribute('disabled') && + 'false' !== e.getAttribute('disabled')))(e) && + ((e) => { + if (!o(e) || 0 === e.getClientRects().length) return !1; + const t = + 'visible' === + getComputedStyle(e).getPropertyValue('visibility'), + n = e.closest('details:not([open])'); + if (!n) return t; + if (n !== e) { + const t = e.closest('summary'); + if (t && t.parentNode !== n) return !1; + if (null === t) return !1; + } + return t; + })(e) + ); + }, + getSelectorFromElement(e) { + const t = B(e); + return t && I.findOne(t) ? t : null; + }, + getElementFromSelector(e) { + const t = B(e); + return t ? I.findOne(t) : null; + }, + getMultipleElementsFromSelector(e) { + const t = B(e); + return t ? I.find(t) : []; + } + }, + F = '.bs.collapse', + H = `show${F}`, + $ = `shown${F}`, + z = `hide${F}`, + W = `hidden${F}`, + q = `click${F}.data-api`, + R = 'show', + V = 'collapse', + Y = 'collapsing', + U = `:scope .${V} .${V}`, + K = '[data-bs-toggle="collapse"]', + Q = { parent: null, toggle: !0 }, + X = { parent: '(null|element)', toggle: 'boolean' }; + class G extends M { + constructor(e, t) { + super(e, t), (this._isTransitioning = !1), (this._triggerArray = []); + const n = I.find(K); + for (const e of n) { + const t = I.getSelectorFromElement(e), + n = I.find(t).filter((e) => e === this._element); + null !== t && n.length && this._triggerArray.push(e); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), + this._config.toggle && this.toggle(); + } + static get Default() { + return Q; + } + static get DefaultType() { + return X; + } + static get NAME() { + return 'collapse'; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let e = []; + if ( + (this._config.parent && + (e = this._getFirstLevelChildren( + '.collapse.show, .collapse.collapsing' + ) + .filter((e) => e !== this._element) + .map((e) => G.getOrCreateInstance(e, { toggle: !1 }))), + e.length && e[0]._isTransitioning) + ) + return; + if (S.trigger(this._element, H).defaultPrevented) return; + for (const t of e) t.hide(); + const t = this._getDimension(); + this._element.classList.remove(V), + this._element.classList.add(Y), + (this._element.style[t] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const n = `scroll${t[0].toUpperCase() + t.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Y), + this._element.classList.add(V, R), + (this._element.style[t] = ''), + S.trigger(this._element, $); + }, + this._element, + !0 + ), + (this._element.style[t] = `${this._element[n]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (S.trigger(this._element, z).defaultPrevented) return; + const e = this._getDimension(); + (this._element.style[e] = `${ + this._element.getBoundingClientRect()[e] + }px`), + this._element.offsetHeight, + this._element.classList.add(Y), + this._element.classList.remove(V, R); + for (const e of this._triggerArray) { + const t = I.getElementFromSelector(e); + t && !this._isShown(t) && this._addAriaAndCollapsedClass([e], !1); + } + this._isTransitioning = !0; + (this._element.style[e] = ''), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Y), + this._element.classList.add(V), + S.trigger(this._element, W); + }, + this._element, + !0 + ); + } + _isShown() { + return ( + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : this._element + ).classList.contains(R); + } + _configAfterMerge(e) { + return (e.toggle = Boolean(e.toggle)), (e.parent = r(e.parent)), e; + } + _getDimension() { + return this._element.classList.contains('collapse-horizontal') + ? 'width' + : 'height'; + } + _initializeChildren() { + if (!this._config.parent) return; + const e = this._getFirstLevelChildren(K); + for (const t of e) { + const e = I.getElementFromSelector(t); + e && this._addAriaAndCollapsedClass([t], this._isShown(e)); + } + } + _getFirstLevelChildren(e) { + const t = I.find(U, this._config.parent); + return I.find(e, this._config.parent).filter((e) => !t.includes(e)); + } + _addAriaAndCollapsedClass(e, t) { + if (e.length) + for (const n of e) + n.classList.toggle('collapsed', !t), + n.setAttribute('aria-expanded', t); + } + static jQueryInterface(e) { + const t = {}; + return ( + 'string' == typeof e && /show|hide/.test(e) && (t.toggle = !1), + this.each(function () { + const n = G.getOrCreateInstance(this, t); + if ('string' == typeof e) { + if (void 0 === n[e]) throw new TypeError(`No method named "${e}"`); + n[e](); + } + }) + ); + } + } + S.on(document, q, K, function (e) { + ('A' === e.target.tagName || + (e.delegateTarget && 'A' === e.delegateTarget.tagName)) && + e.preventDefault(); + for (const e of I.getMultipleElementsFromSelector(this)) + G.getOrCreateInstance(e, { toggle: !1 }).toggle(); + }), + f(G); + const J = document.getElementsByClassName('collapse'); + var Z = 'top', + ee = 'bottom', + te = 'right', + ne = 'left', + ie = 'auto', + oe = [Z, ee, te, ne], + re = 'start', + se = 'end', + ae = 'clippingParents', + le = 'viewport', + ce = 'popper', + ue = 'reference', + fe = oe.reduce(function (e, t) { + return e.concat([t + '-' + re, t + '-' + se]); + }, []), + de = [].concat(oe, [ie]).reduce(function (e, t) { + return e.concat([t, t + '-' + re, t + '-' + se]); + }, []), + pe = 'beforeRead', + he = 'read', + me = 'afterRead', + ge = 'beforeMain', + ve = 'main', + be = 'afterMain', + ye = 'beforeWrite', + _e = 'write', + we = 'afterWrite', + Ee = [pe, he, me, ge, ve, be, ye, _e, we]; + function Oe(e) { + return e ? (e.nodeName || '').toLowerCase() : null; + } + function xe(e) { + if (null == e) return window; + if ('[object Window]' !== e.toString()) { + var t = e.ownerDocument; + return (t && t.defaultView) || window; + } + return e; + } + function Ae(e) { + return e instanceof xe(e).Element || e instanceof Element; + } + function Ce(e) { + return e instanceof xe(e).HTMLElement || e instanceof HTMLElement; + } + function Le(e) { + return ( + 'undefined' != typeof ShadowRoot && + (e instanceof xe(e).ShadowRoot || e instanceof ShadowRoot) + ); + } + var Te = { + name: 'applyStyles', + enabled: !0, + phase: 'write', + fn: function (e) { + var t = e.state; + Object.keys(t.elements).forEach(function (e) { + var n = t.styles[e] || {}, + i = t.attributes[e] || {}, + o = t.elements[e]; + Ce(o) && + Oe(o) && + (Object.assign(o.style, n), + Object.keys(i).forEach(function (e) { + var t = i[e]; + !1 === t + ? o.removeAttribute(e) + : o.setAttribute(e, !0 === t ? '' : t); + })); + }); + }, + effect: function (e) { + var t = e.state, + n = { + popper: { + position: t.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { position: 'absolute' }, + reference: {} + }; + return ( + Object.assign(t.elements.popper.style, n.popper), + (t.styles = n), + t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), + function () { + Object.keys(t.elements).forEach(function (e) { + var i = t.elements[e], + o = t.attributes[e] || {}, + r = Object.keys( + t.styles.hasOwnProperty(e) ? t.styles[e] : n[e] + ).reduce(function (e, t) { + return (e[t] = ''), e; + }, {}); + Ce(i) && + Oe(i) && + (Object.assign(i.style, r), + Object.keys(o).forEach(function (e) { + i.removeAttribute(e); + })); + }); + } + ); + }, + requires: ['computeStyles'] + }; + function Se(e) { + return e.split('-')[0]; + } + var je = Math.max, + ke = Math.min, + De = Math.round; + function Pe() { + var e = navigator.userAgentData; + return null != e && e.brands && Array.isArray(e.brands) + ? e.brands + .map(function (e) { + return e.brand + '/' + e.version; + }) + .join(' ') + : navigator.userAgent; + } + function Ne() { + return !/^((?!chrome|android).)*safari/i.test(Pe()); + } + function Me(e, t, n) { + void 0 === t && (t = !1), void 0 === n && (n = !1); + var i = e.getBoundingClientRect(), + o = 1, + r = 1; + t && + Ce(e) && + ((o = (e.offsetWidth > 0 && De(i.width) / e.offsetWidth) || 1), + (r = (e.offsetHeight > 0 && De(i.height) / e.offsetHeight) || 1)); + var s = (Ae(e) ? xe(e) : window).visualViewport, + a = !Ne() && n, + l = (i.left + (a && s ? s.offsetLeft : 0)) / o, + c = (i.top + (a && s ? s.offsetTop : 0)) / r, + u = i.width / o, + f = i.height / r; + return { + width: u, + height: f, + top: c, + right: l + u, + bottom: c + f, + left: l, + x: l, + y: c + }; + } + function Be(e) { + var t = Me(e), + n = e.offsetWidth, + i = e.offsetHeight; + return ( + Math.abs(t.width - n) <= 1 && (n = t.width), + Math.abs(t.height - i) <= 1 && (i = t.height), + { x: e.offsetLeft, y: e.offsetTop, width: n, height: i } + ); + } + function Ie(e, t) { + var n = t.getRootNode && t.getRootNode(); + if (e.contains(t)) return !0; + if (n && Le(n)) { + var i = t; + do { + if (i && e.isSameNode(i)) return !0; + i = i.parentNode || i.host; + } while (i); + } + return !1; + } + function Fe(e) { + return xe(e).getComputedStyle(e); + } + function He(e) { + return ['table', 'td', 'th'].indexOf(Oe(e)) >= 0; + } + function $e(e) { + return ((Ae(e) ? e.ownerDocument : e.document) || window.document) + .documentElement; + } + function ze(e) { + return 'html' === Oe(e) + ? e + : e.assignedSlot || e.parentNode || (Le(e) ? e.host : null) || $e(e); + } + function We(e) { + return Ce(e) && 'fixed' !== Fe(e).position ? e.offsetParent : null; + } + function qe(e) { + for (var t = xe(e), n = We(e); n && He(n) && 'static' === Fe(n).position; ) + n = We(n); + return n && + ('html' === Oe(n) || ('body' === Oe(n) && 'static' === Fe(n).position)) + ? t + : n || + (function (e) { + var t = /firefox/i.test(Pe()); + if (/Trident/i.test(Pe()) && Ce(e) && 'fixed' === Fe(e).position) + return null; + var n = ze(e); + for ( + Le(n) && (n = n.host); + Ce(n) && ['html', 'body'].indexOf(Oe(n)) < 0; + + ) { + var i = Fe(n); + if ( + 'none' !== i.transform || + 'none' !== i.perspective || + 'paint' === i.contain || + -1 !== ['transform', 'perspective'].indexOf(i.willChange) || + (t && 'filter' === i.willChange) || + (t && i.filter && 'none' !== i.filter) + ) + return n; + n = n.parentNode; + } + return null; + })(e) || + t; + } + function Re(e) { + return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y'; + } + function Ve(e, t, n) { + return je(e, ke(t, n)); + } + function Ye(e) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e); + } + function Ue(e, t) { + return t.reduce(function (t, n) { + return (t[n] = e), t; + }, {}); + } + var Ke = { + name: 'arrow', + enabled: !0, + phase: 'main', + fn: function (e) { + var t, + n = e.state, + i = e.name, + o = e.options, + r = n.elements.arrow, + s = n.modifiersData.popperOffsets, + a = Se(n.placement), + l = Re(a), + c = [ne, te].indexOf(a) >= 0 ? 'height' : 'width'; + if (r && s) { + var u = (function (e, t) { + return Ye( + 'number' != + typeof (e = + 'function' == typeof e + ? e(Object.assign({}, t.rects, { placement: t.placement })) + : e) + ? e + : Ue(e, oe) + ); + })(o.padding, n), + f = Be(r), + d = 'y' === l ? Z : ne, + p = 'y' === l ? ee : te, + h = + n.rects.reference[c] + + n.rects.reference[l] - + s[l] - + n.rects.popper[c], + m = s[l] - n.rects.reference[l], + g = qe(r), + v = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0, + b = h / 2 - m / 2, + y = u[d], + _ = v - f[c] - u[p], + w = v / 2 - f[c] / 2 + b, + E = Ve(y, w, _), + O = l; + n.modifiersData[i] = (((t = {})[O] = E), (t.centerOffset = E - w), t); + } + }, + effect: function (e) { + var t = e.state, + n = e.options.element, + i = void 0 === n ? '[data-popper-arrow]' : n; + null != i && + ('string' != typeof i || (i = t.elements.popper.querySelector(i))) && + Ie(t.elements.popper, i) && + (t.elements.arrow = i); + }, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + function Qe(e) { + return e.split('-')[1]; + } + var Xe = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; + function Ge(e) { + var t, + n = e.popper, + i = e.popperRect, + o = e.placement, + r = e.variation, + s = e.offsets, + a = e.position, + l = e.gpuAcceleration, + c = e.adaptive, + u = e.roundOffsets, + f = e.isFixed, + d = s.x, + p = void 0 === d ? 0 : d, + h = s.y, + m = void 0 === h ? 0 : h, + g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m }; + (p = g.x), (m = g.y); + var v = s.hasOwnProperty('x'), + b = s.hasOwnProperty('y'), + y = ne, + _ = Z, + w = window; + if (c) { + var E = qe(n), + O = 'clientHeight', + x = 'clientWidth'; + if ( + (E === xe(n) && + 'static' !== Fe((E = $e(n))).position && + 'absolute' === a && + ((O = 'scrollHeight'), (x = 'scrollWidth')), + o === Z || ((o === ne || o === te) && r === se)) + ) + (_ = ee), + (m -= + (f && E === w && w.visualViewport + ? w.visualViewport.height + : E[O]) - i.height), + (m *= l ? 1 : -1); + if (o === ne || ((o === Z || o === ee) && r === se)) + (y = te), + (p -= + (f && E === w && w.visualViewport ? w.visualViewport.width : E[x]) - + i.width), + (p *= l ? 1 : -1); + } + var A, + C = Object.assign({ position: a }, c && Xe), + L = + !0 === u + ? (function (e, t) { + var n = e.x, + i = e.y, + o = t.devicePixelRatio || 1; + return { x: De(n * o) / o || 0, y: De(i * o) / o || 0 }; + })({ x: p, y: m }, xe(n)) + : { x: p, y: m }; + return ( + (p = L.x), + (m = L.y), + l + ? Object.assign( + {}, + C, + (((A = {})[_] = b ? '0' : ''), + (A[y] = v ? '0' : ''), + (A.transform = + (w.devicePixelRatio || 1) <= 1 + ? 'translate(' + p + 'px, ' + m + 'px)' + : 'translate3d(' + p + 'px, ' + m + 'px, 0)'), + A) + ) + : Object.assign( + {}, + C, + (((t = {})[_] = b ? m + 'px' : ''), + (t[y] = v ? p + 'px' : ''), + (t.transform = ''), + t) + ) + ); + } + var Je = { + name: 'computeStyles', + enabled: !0, + phase: 'beforeWrite', + fn: function (e) { + var t = e.state, + n = e.options, + i = n.gpuAcceleration, + o = void 0 === i || i, + r = n.adaptive, + s = void 0 === r || r, + a = n.roundOffsets, + l = void 0 === a || a, + c = { + placement: Se(t.placement), + variation: Qe(t.placement), + popper: t.elements.popper, + popperRect: t.rects.popper, + gpuAcceleration: o, + isFixed: 'fixed' === t.options.strategy + }; + null != t.modifiersData.popperOffsets && + (t.styles.popper = Object.assign( + {}, + t.styles.popper, + Ge( + Object.assign({}, c, { + offsets: t.modifiersData.popperOffsets, + position: t.options.strategy, + adaptive: s, + roundOffsets: l + }) + ) + )), + null != t.modifiersData.arrow && + (t.styles.arrow = Object.assign( + {}, + t.styles.arrow, + Ge( + Object.assign({}, c, { + offsets: t.modifiersData.arrow, + position: 'absolute', + adaptive: !1, + roundOffsets: l + }) + ) + )), + (t.attributes.popper = Object.assign({}, t.attributes.popper, { + 'data-popper-placement': t.placement + })); + }, + data: {} + }, + Ze = { passive: !0 }; + var et = { + name: 'eventListeners', + enabled: !0, + phase: 'write', + fn: function () {}, + effect: function (e) { + var t = e.state, + n = e.instance, + i = e.options, + o = i.scroll, + r = void 0 === o || o, + s = i.resize, + a = void 0 === s || s, + l = xe(t.elements.popper), + c = [].concat(t.scrollParents.reference, t.scrollParents.popper); + return ( + r && + c.forEach(function (e) { + e.addEventListener('scroll', n.update, Ze); + }), + a && l.addEventListener('resize', n.update, Ze), + function () { + r && + c.forEach(function (e) { + e.removeEventListener('scroll', n.update, Ze); + }), + a && l.removeEventListener('resize', n.update, Ze); + } + ); + }, + data: {} + }, + tt = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + function nt(e) { + return e.replace(/left|right|bottom|top/g, function (e) { + return tt[e]; + }); + } + var it = { start: 'end', end: 'start' }; + function ot(e) { + return e.replace(/start|end/g, function (e) { + return it[e]; + }); + } + function rt(e) { + var t = xe(e); + return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset }; + } + function st(e) { + return Me($e(e)).left + rt(e).scrollLeft; + } + function at(e) { + var t = Fe(e), + n = t.overflow, + i = t.overflowX, + o = t.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + i); + } + function lt(e) { + return ['html', 'body', '#document'].indexOf(Oe(e)) >= 0 + ? e.ownerDocument.body + : Ce(e) && at(e) + ? e + : lt(ze(e)); + } + function ct(e, t) { + var n; + void 0 === t && (t = []); + var i = lt(e), + o = i === (null == (n = e.ownerDocument) ? void 0 : n.body), + r = xe(i), + s = o ? [r].concat(r.visualViewport || [], at(i) ? i : []) : i, + a = t.concat(s); + return o ? a : a.concat(ct(ze(s))); + } + function ut(e) { + return Object.assign({}, e, { + left: e.x, + top: e.y, + right: e.x + e.width, + bottom: e.y + e.height + }); + } + function ft(e, t, n) { + return t === le + ? ut( + (function (e, t) { + var n = xe(e), + i = $e(e), + o = n.visualViewport, + r = i.clientWidth, + s = i.clientHeight, + a = 0, + l = 0; + if (o) { + (r = o.width), (s = o.height); + var c = Ne(); + (c || (!c && 'fixed' === t)) && + ((a = o.offsetLeft), (l = o.offsetTop)); + } + return { width: r, height: s, x: a + st(e), y: l }; + })(e, n) + ) + : Ae(t) + ? (function (e, t) { + var n = Me(e, !1, 'fixed' === t); + return ( + (n.top = n.top + e.clientTop), + (n.left = n.left + e.clientLeft), + (n.bottom = n.top + e.clientHeight), + (n.right = n.left + e.clientWidth), + (n.width = e.clientWidth), + (n.height = e.clientHeight), + (n.x = n.left), + (n.y = n.top), + n + ); + })(t, n) + : ut( + (function (e) { + var t, + n = $e(e), + i = rt(e), + o = null == (t = e.ownerDocument) ? void 0 : t.body, + r = je( + n.scrollWidth, + n.clientWidth, + o ? o.scrollWidth : 0, + o ? o.clientWidth : 0 + ), + s = je( + n.scrollHeight, + n.clientHeight, + o ? o.scrollHeight : 0, + o ? o.clientHeight : 0 + ), + a = -i.scrollLeft + st(e), + l = -i.scrollTop; + return ( + 'rtl' === Fe(o || n).direction && + (a += je(n.clientWidth, o ? o.clientWidth : 0) - r), + { width: r, height: s, x: a, y: l } + ); + })($e(e)) + ); + } + function dt(e, t, n, i) { + var o = + 'clippingParents' === t + ? (function (e) { + var t = ct(ze(e)), + n = + ['absolute', 'fixed'].indexOf(Fe(e).position) >= 0 && Ce(e) + ? qe(e) + : e; + return Ae(n) + ? t.filter(function (e) { + return Ae(e) && Ie(e, n) && 'body' !== Oe(e); + }) + : []; + })(e) + : [].concat(t), + r = [].concat(o, [n]), + s = r[0], + a = r.reduce(function (t, n) { + var o = ft(e, n, i); + return ( + (t.top = je(o.top, t.top)), + (t.right = ke(o.right, t.right)), + (t.bottom = ke(o.bottom, t.bottom)), + (t.left = je(o.left, t.left)), + t + ); + }, ft(e, s, i)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + } + function pt(e) { + var t, + n = e.reference, + i = e.element, + o = e.placement, + r = o ? Se(o) : null, + s = o ? Qe(o) : null, + a = n.x + n.width / 2 - i.width / 2, + l = n.y + n.height / 2 - i.height / 2; + switch (r) { + case Z: + t = { x: a, y: n.y - i.height }; + break; + case ee: + t = { x: a, y: n.y + n.height }; + break; + case te: + t = { x: n.x + n.width, y: l }; + break; + case ne: + t = { x: n.x - i.width, y: l }; + break; + default: + t = { x: n.x, y: n.y }; + } + var c = r ? Re(r) : null; + if (null != c) { + var u = 'y' === c ? 'height' : 'width'; + switch (s) { + case re: + t[c] = t[c] - (n[u] / 2 - i[u] / 2); + break; + case se: + t[c] = t[c] + (n[u] / 2 - i[u] / 2); + } + } + return t; + } + function ht(e, t) { + void 0 === t && (t = {}); + var n = t, + i = n.placement, + o = void 0 === i ? e.placement : i, + r = n.strategy, + s = void 0 === r ? e.strategy : r, + a = n.boundary, + l = void 0 === a ? ae : a, + c = n.rootBoundary, + u = void 0 === c ? le : c, + f = n.elementContext, + d = void 0 === f ? ce : f, + p = n.altBoundary, + h = void 0 !== p && p, + m = n.padding, + g = void 0 === m ? 0 : m, + v = Ye('number' != typeof g ? g : Ue(g, oe)), + b = d === ce ? ue : ce, + y = e.rects.popper, + _ = e.elements[h ? b : d], + w = dt(Ae(_) ? _ : _.contextElement || $e(e.elements.popper), l, u, s), + E = Me(e.elements.reference), + O = pt({ reference: E, element: y, placement: o }), + x = ut(Object.assign({}, y, O)), + A = d === ce ? x : E, + C = { + top: w.top - A.top + v.top, + bottom: A.bottom - w.bottom + v.bottom, + left: w.left - A.left + v.left, + right: A.right - w.right + v.right + }, + L = e.modifiersData.offset; + if (d === ce && L) { + var T = L[o]; + Object.keys(C).forEach(function (e) { + var t = [te, ee].indexOf(e) >= 0 ? 1 : -1, + n = [Z, ee].indexOf(e) >= 0 ? 'y' : 'x'; + C[e] += T[n] * t; + }); + } + return C; + } + function mt(e, t) { + void 0 === t && (t = {}); + var n = t, + i = n.placement, + o = n.boundary, + r = n.rootBoundary, + s = n.padding, + a = n.flipVariations, + l = n.allowedAutoPlacements, + c = void 0 === l ? de : l, + u = Qe(i), + f = u + ? a + ? fe + : fe.filter(function (e) { + return Qe(e) === u; + }) + : oe, + d = f.filter(function (e) { + return c.indexOf(e) >= 0; + }); + 0 === d.length && (d = f); + var p = d.reduce(function (t, n) { + return ( + (t[n] = ht(e, { + placement: n, + boundary: o, + rootBoundary: r, + padding: s + })[Se(n)]), + t + ); + }, {}); + return Object.keys(p).sort(function (e, t) { + return p[e] - p[t]; + }); + } + var gt = { + name: 'flip', + enabled: !0, + phase: 'main', + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name; + if (!t.modifiersData[i]._skip) { + for ( + var o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 === s || s, + l = n.fallbackPlacements, + c = n.padding, + u = n.boundary, + f = n.rootBoundary, + d = n.altBoundary, + p = n.flipVariations, + h = void 0 === p || p, + m = n.allowedAutoPlacements, + g = t.options.placement, + v = Se(g), + b = + l || + (v === g || !h + ? [nt(g)] + : (function (e) { + if (Se(e) === ie) return []; + var t = nt(e); + return [ot(e), t, ot(t)]; + })(g)), + y = [g].concat(b).reduce(function (e, n) { + return e.concat( + Se(n) === ie + ? mt(t, { + placement: n, + boundary: u, + rootBoundary: f, + padding: c, + flipVariations: h, + allowedAutoPlacements: m + }) + : n + ); + }, []), + _ = t.rects.reference, + w = t.rects.popper, + E = new Map(), + O = !0, + x = y[0], + A = 0; + A < y.length; + A++ + ) { + var C = y[A], + L = Se(C), + T = Qe(C) === re, + S = [Z, ee].indexOf(L) >= 0, + j = S ? 'width' : 'height', + k = ht(t, { + placement: C, + boundary: u, + rootBoundary: f, + altBoundary: d, + padding: c + }), + D = S ? (T ? te : ne) : T ? ee : Z; + _[j] > w[j] && (D = nt(D)); + var P = nt(D), + N = []; + if ( + (r && N.push(k[L] <= 0), + a && N.push(k[D] <= 0, k[P] <= 0), + N.every(function (e) { + return e; + })) + ) { + (x = C), (O = !1); + break; + } + E.set(C, N); + } + if (O) + for ( + var M = function (e) { + var t = y.find(function (t) { + var n = E.get(t); + if (n) + return n.slice(0, e).every(function (e) { + return e; + }); + }); + if (t) return (x = t), 'break'; + }, + B = h ? 3 : 1; + B > 0; + B-- + ) { + if ('break' === M(B)) break; + } + t.placement !== x && + ((t.modifiersData[i]._skip = !0), (t.placement = x), (t.reset = !0)); + } + }, + requiresIfExists: ['offset'], + data: { _skip: !1 } + }; + function vt(e, t, n) { + return ( + void 0 === n && (n = { x: 0, y: 0 }), + { + top: e.top - t.height - n.y, + right: e.right - t.width + n.x, + bottom: e.bottom - t.height + n.y, + left: e.left - t.width - n.x + } + ); + } + function bt(e) { + return [Z, te, ee, ne].some(function (t) { + return e[t] >= 0; + }); + } + var yt = { + name: 'hide', + enabled: !0, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: function (e) { + var t = e.state, + n = e.name, + i = t.rects.reference, + o = t.rects.popper, + r = t.modifiersData.preventOverflow, + s = ht(t, { elementContext: 'reference' }), + a = ht(t, { altBoundary: !0 }), + l = vt(s, i), + c = vt(a, o, r), + u = bt(l), + f = bt(c); + (t.modifiersData[n] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: u, + hasPopperEscaped: f + }), + (t.attributes.popper = Object.assign({}, t.attributes.popper, { + 'data-popper-reference-hidden': u, + 'data-popper-escaped': f + })); + } + }; + var _t = { + name: 'offset', + enabled: !0, + phase: 'main', + requires: ['popperOffsets'], + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name, + o = n.offset, + r = void 0 === o ? [0, 0] : o, + s = de.reduce(function (e, n) { + return ( + (e[n] = (function (e, t, n) { + var i = Se(e), + o = [ne, Z].indexOf(i) >= 0 ? -1 : 1, + r = + 'function' == typeof n + ? n(Object.assign({}, t, { placement: e })) + : n, + s = r[0], + a = r[1]; + return ( + (s = s || 0), + (a = (a || 0) * o), + [ne, te].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a } + ); + })(n, t.rects, r)), + e + ); + }, {}), + a = s[t.placement], + l = a.x, + c = a.y; + null != t.modifiersData.popperOffsets && + ((t.modifiersData.popperOffsets.x += l), + (t.modifiersData.popperOffsets.y += c)), + (t.modifiersData[i] = s); + } + }; + var wt = { + name: 'popperOffsets', + enabled: !0, + phase: 'read', + fn: function (e) { + var t = e.state, + n = e.name; + t.modifiersData[n] = pt({ + reference: t.rects.reference, + element: t.rects.popper, + placement: t.placement + }); + }, + data: {} + }; + var Et = { + name: 'preventOverflow', + enabled: !0, + phase: 'main', + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name, + o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 !== s && s, + l = n.boundary, + c = n.rootBoundary, + u = n.altBoundary, + f = n.padding, + d = n.tether, + p = void 0 === d || d, + h = n.tetherOffset, + m = void 0 === h ? 0 : h, + g = ht(t, { boundary: l, rootBoundary: c, padding: f, altBoundary: u }), + v = Se(t.placement), + b = Qe(t.placement), + y = !b, + _ = Re(v), + w = 'x' === _ ? 'y' : 'x', + E = t.modifiersData.popperOffsets, + O = t.rects.reference, + x = t.rects.popper, + A = + 'function' == typeof m + ? m(Object.assign({}, t.rects, { placement: t.placement })) + : m, + C = + 'number' == typeof A + ? { mainAxis: A, altAxis: A } + : Object.assign({ mainAxis: 0, altAxis: 0 }, A), + L = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, + T = { x: 0, y: 0 }; + if (E) { + if (r) { + var S, + j = 'y' === _ ? Z : ne, + k = 'y' === _ ? ee : te, + D = 'y' === _ ? 'height' : 'width', + P = E[_], + N = P + g[j], + M = P - g[k], + B = p ? -x[D] / 2 : 0, + I = b === re ? O[D] : x[D], + F = b === re ? -x[D] : -O[D], + H = t.elements.arrow, + $ = p && H ? Be(H) : { width: 0, height: 0 }, + z = t.modifiersData['arrow#persistent'] + ? t.modifiersData['arrow#persistent'].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + W = z[j], + q = z[k], + R = Ve(0, O[D], $[D]), + V = y ? O[D] / 2 - B - R - W - C.mainAxis : I - R - W - C.mainAxis, + Y = y ? -O[D] / 2 + B + R + q + C.mainAxis : F + R + q + C.mainAxis, + U = t.elements.arrow && qe(t.elements.arrow), + K = U ? ('y' === _ ? U.clientTop || 0 : U.clientLeft || 0) : 0, + Q = null != (S = null == L ? void 0 : L[_]) ? S : 0, + X = P + Y - Q, + G = Ve(p ? ke(N, P + V - Q - K) : N, P, p ? je(M, X) : M); + (E[_] = G), (T[_] = G - P); + } + if (a) { + var J, + ie = 'x' === _ ? Z : ne, + oe = 'x' === _ ? ee : te, + se = E[w], + ae = 'y' === w ? 'height' : 'width', + le = se + g[ie], + ce = se - g[oe], + ue = -1 !== [Z, ne].indexOf(v), + fe = null != (J = null == L ? void 0 : L[w]) ? J : 0, + de = ue ? le : se - O[ae] - x[ae] - fe + C.altAxis, + pe = ue ? se + O[ae] + x[ae] - fe - C.altAxis : ce, + he = + p && ue + ? (function (e, t, n) { + var i = Ve(e, t, n); + return i > n ? n : i; + })(de, se, pe) + : Ve(p ? de : le, se, p ? pe : ce); + (E[w] = he), (T[w] = he - se); + } + t.modifiersData[i] = T; + } + }, + requiresIfExists: ['offset'] + }; + function Ot(e, t, n) { + void 0 === n && (n = !1); + var i, + o, + r = Ce(t), + s = + Ce(t) && + (function (e) { + var t = e.getBoundingClientRect(), + n = De(t.width) / e.offsetWidth || 1, + i = De(t.height) / e.offsetHeight || 1; + return 1 !== n || 1 !== i; + })(t), + a = $e(t), + l = Me(e, s, n), + c = { scrollLeft: 0, scrollTop: 0 }, + u = { x: 0, y: 0 }; + return ( + (r || (!r && !n)) && + (('body' !== Oe(t) || at(a)) && + (c = + (i = t) !== xe(i) && Ce(i) + ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop } + : rt(i)), + Ce(t) + ? (((u = Me(t, !0)).x += t.clientLeft), (u.y += t.clientTop)) + : a && (u.x = st(a))), + { + x: l.left + c.scrollLeft - u.x, + y: l.top + c.scrollTop - u.y, + width: l.width, + height: l.height + } + ); + } + function xt(e) { + var t = new Map(), + n = new Set(), + i = []; + function o(e) { + n.add(e.name), + [] + .concat(e.requires || [], e.requiresIfExists || []) + .forEach(function (e) { + if (!n.has(e)) { + var i = t.get(e); + i && o(i); + } + }), + i.push(e); + } + return ( + e.forEach(function (e) { + t.set(e.name, e); + }), + e.forEach(function (e) { + n.has(e.name) || o(e); + }), + i + ); + } + var At = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; + function Ct() { + for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) + t[n] = arguments[n]; + return !t.some(function (e) { + return !(e && 'function' == typeof e.getBoundingClientRect); + }); + } + function Lt(e) { + void 0 === e && (e = {}); + var t = e, + n = t.defaultModifiers, + i = void 0 === n ? [] : n, + o = t.defaultOptions, + r = void 0 === o ? At : o; + return function (e, t, n) { + void 0 === n && (n = r); + var o, + s, + a = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, At, r), + modifiersData: {}, + elements: { reference: e, popper: t }, + attributes: {}, + styles: {} + }, + l = [], + c = !1, + u = { + state: a, + setOptions: function (n) { + var o = 'function' == typeof n ? n(a.options) : n; + f(), + (a.options = Object.assign({}, r, a.options, o)), + (a.scrollParents = { + reference: Ae(e) + ? ct(e) + : e.contextElement + ? ct(e.contextElement) + : [], + popper: ct(t) + }); + var s, + c, + d = (function (e) { + var t = xt(e); + return Ee.reduce(function (e, n) { + return e.concat( + t.filter(function (e) { + return e.phase === n; + }) + ); + }, []); + })( + ((s = [].concat(i, a.options.modifiers)), + (c = s.reduce(function (e, t) { + var n = e[t.name]; + return ( + (e[t.name] = n + ? Object.assign({}, n, t, { + options: Object.assign({}, n.options, t.options), + data: Object.assign({}, n.data, t.data) + }) + : t), + e + ); + }, {})), + Object.keys(c).map(function (e) { + return c[e]; + })) + ); + return ( + (a.orderedModifiers = d.filter(function (e) { + return e.enabled; + })), + a.orderedModifiers.forEach(function (e) { + var t = e.name, + n = e.options, + i = void 0 === n ? {} : n, + o = e.effect; + if ('function' == typeof o) { + var r = o({ state: a, name: t, instance: u, options: i }), + s = function () {}; + l.push(r || s); + } + }), + u.update() + ); + }, + forceUpdate: function () { + if (!c) { + var e = a.elements, + t = e.reference, + n = e.popper; + if (Ct(t, n)) { + (a.rects = { + reference: Ot(t, qe(n), 'fixed' === a.options.strategy), + popper: Be(n) + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (e) { + return (a.modifiersData[e.name] = Object.assign( + {}, + e.data + )); + }); + for (var i = 0; i < a.orderedModifiers.length; i++) + if (!0 !== a.reset) { + var o = a.orderedModifiers[i], + r = o.fn, + s = o.options, + l = void 0 === s ? {} : s, + f = o.name; + 'function' == typeof r && + (a = + r({ state: a, options: l, name: f, instance: u }) || a); + } else (a.reset = !1), (i = -1); + } + } + }, + update: + ((o = function () { + return new Promise(function (e) { + u.forceUpdate(), e(a); + }); + }), + function () { + return ( + s || + (s = new Promise(function (e) { + Promise.resolve().then(function () { + (s = void 0), e(o()); + }); + })), + s + ); + }), + destroy: function () { + f(), (c = !0); + } + }; + if (!Ct(e, t)) return u; + function f() { + l.forEach(function (e) { + return e(); + }), + (l = []); + } + return ( + u.setOptions(n).then(function (e) { + !c && n.onFirstUpdate && n.onFirstUpdate(e); + }), + u + ); + }; + } + var Tt = Lt(), + St = Lt({ defaultModifiers: [et, wt, Je, Te] }), + jt = Lt({ defaultModifiers: [et, wt, Je, Te, _t, gt, Et, Ke, yt] }), + kt = Object.freeze({ + __proto__: null, + afterMain: be, + afterRead: me, + afterWrite: we, + applyStyles: Te, + arrow: Ke, + auto: ie, + basePlacements: oe, + beforeMain: ge, + beforeRead: pe, + beforeWrite: ye, + bottom: ee, + clippingParents: ae, + computeStyles: Je, + createPopper: jt, + createPopperBase: Tt, + createPopperLite: St, + detectOverflow: ht, + end: se, + eventListeners: et, + flip: gt, + hide: yt, + left: ne, + main: ve, + modifierPhases: Ee, + offset: _t, + placements: de, + popper: ce, + popperGenerator: Lt, + popperOffsets: wt, + preventOverflow: Et, + read: he, + reference: ue, + right: te, + start: re, + top: Z, + variationPlacements: fe, + viewport: le, + write: _e + }); + const Dt = { + '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + Pt = new Set([ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]), + Nt = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + Mt = (e, t) => { + const n = e.nodeName.toLowerCase(); + return t.includes(n) + ? !Pt.has(n) || Boolean(Nt.test(e.nodeValue)) + : t.filter((e) => e instanceof RegExp).some((e) => e.test(n)); + }; + const Bt = { + allowList: Dt, + content: {}, + extraClass: '', + html: !1, + sanitize: !0, + sanitizeFn: null, + template: '
' + }, + It = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }, + Ft = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class Ht extends N { + constructor(e) { + super(), (this._config = this._getConfig(e)); + } + static get Default() { + return Bt; + } + static get DefaultType() { + return It; + } + static get NAME() { + return 'TemplateFactory'; + } + getContent() { + return Object.values(this._config.content) + .map((e) => this._resolvePossibleFunction(e)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(e) { + return ( + this._checkContent(e), + (this._config.content = { ...this._config.content, ...e }), + this + ); + } + toHtml() { + const e = document.createElement('div'); + e.innerHTML = this._maybeSanitize(this._config.template); + for (const [t, n] of Object.entries(this._config.content)) + this._setContent(e, n, t); + const t = e.children[0], + n = this._resolvePossibleFunction(this._config.extraClass); + return n && t.classList.add(...n.split(' ')), t; + } + _typeCheckConfig(e) { + super._typeCheckConfig(e), this._checkContent(e.content); + } + _checkContent(e) { + for (const [t, n] of Object.entries(e)) + super._typeCheckConfig({ selector: t, entry: n }, Ft); + } + _setContent(e, t, n) { + const i = I.findOne(n, e); + i && + ((t = this._resolvePossibleFunction(t)) + ? o(t) + ? this._putElementInTemplate(r(t), i) + : this._config.html + ? (i.innerHTML = this._maybeSanitize(t)) + : (i.textContent = t) + : i.remove()); + } + _maybeSanitize(e) { + return this._config.sanitize + ? (function (e, t, n) { + if (!e.length) return e; + if (n && 'function' == typeof n) return n(e); + const i = new window.DOMParser().parseFromString(e, 'text/html'), + o = [].concat(...i.body.querySelectorAll('*')); + for (const e of o) { + const n = e.nodeName.toLowerCase(); + if (!Object.keys(t).includes(n)) { + e.remove(); + continue; + } + const i = [].concat(...e.attributes), + o = [].concat(t['*'] || [], t[n] || []); + for (const t of i) Mt(t, o) || e.removeAttribute(t.nodeName); + } + return i.body.innerHTML; + })(e, this._config.allowList, this._config.sanitizeFn) + : e; + } + _resolvePossibleFunction(e) { + return d(e, [this]); + } + _putElementInTemplate(e, t) { + if (this._config.html) return (t.innerHTML = ''), void t.append(e); + t.textContent = e.textContent; + } + } + const $t = new Set(['sanitize', 'allowList', 'sanitizeFn']), + zt = 'fade', + Wt = 'show', + qt = '.tooltip-inner', + Rt = '.modal', + Vt = 'hide.bs.modal', + Yt = 'hover', + Ut = 'focus', + Kt = { + AUTO: 'auto', + TOP: 'top', + RIGHT: u() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: u() ? 'right' : 'left' + }, + Qt = { + allowList: Dt, + animation: !0, + boundary: 'clippingParents', + container: !1, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: !1, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: '', + trigger: 'hover focus' + }, + Xt = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + class Gt extends M { + constructor(e, t) { + if (void 0 === kt) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(e, t), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return Qt; + } + static get DefaultType() { + return Xt; + } + static get NAME() { + return 'tooltip'; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + S.off(this._element.closest(Rt), Vt, this._hideModalHandler), + this._element.getAttribute('data-bs-original-title') && + this._element.setAttribute( + 'title', + this._element.getAttribute('data-bs-original-title') + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ('none' === this._element.style.display) + throw new Error('Please use show on visible elements'); + if (!this._isWithContent() || !this._isEnabled) return; + const e = S.trigger(this._element, this.constructor.eventName('show')), + t = ( + s(this._element) || this._element.ownerDocument.documentElement + ).contains(this._element); + if (e.defaultPrevented || !t) return; + this._disposePopper(); + const n = this._getTipElement(); + this._element.setAttribute('aria-describedby', n.getAttribute('id')); + const { container: i } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains(this.tip) || + (i.append(n), + S.trigger(this._element, this.constructor.eventName('inserted'))), + (this._popper = this._createPopper(n)), + n.classList.add(Wt), + 'ontouchstart' in document.documentElement) + ) + for (const e of [].concat(...document.body.children)) + S.on(e, 'mouseover', a); + this._queueCallback( + () => { + S.trigger(this._element, this.constructor.eventName('shown')), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if (!this._isShown()) return; + if ( + S.trigger(this._element, this.constructor.eventName('hide')) + .defaultPrevented + ) + return; + if ( + (this._getTipElement().classList.remove(Wt), + 'ontouchstart' in document.documentElement) + ) + for (const e of [].concat(...document.body.children)) + S.off(e, 'mouseover', a); + (this._activeTrigger.click = !1), + (this._activeTrigger[Ut] = !1), + (this._activeTrigger[Yt] = !1), + (this._isHovered = null); + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute('aria-describedby'), + S.trigger(this._element, this.constructor.eventName('hidden'))); + }, + this.tip, + this._isAnimated() + ); + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(e) { + const t = this._getTemplateFactory(e).toHtml(); + if (!t) return null; + t.classList.remove(zt, Wt), + t.classList.add(`bs-${this.constructor.NAME}-auto`); + const n = ((e) => { + do { + e += Math.floor(1e6 * Math.random()); + } while (document.getElementById(e)); + return e; + })(this.constructor.NAME).toString(); + return ( + t.setAttribute('id', n), this._isAnimated() && t.classList.add(zt), t + ); + } + setContent(e) { + (this._newContent = e), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(e) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(e) + : (this._templateFactory = new Ht({ + ...this._config, + content: e, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ) + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { [qt]: this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute('data-bs-original-title') + ); + } + _initializeOnDelegatedTarget(e) { + return this.constructor.getOrCreateInstance( + e.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || (this.tip && this.tip.classList.contains(zt)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains(Wt); + } + _createPopper(e) { + const t = d(this._config.placement, [this, e, this._element]), + n = Kt[t.toUpperCase()]; + return jt(this._element, e, this._getPopperConfig(n)); + } + _getOffset() { + const { offset: e } = this._config; + return 'string' == typeof e + ? e.split(',').map((e) => Number.parseInt(e, 10)) + : 'function' == typeof e + ? (t) => e(t, this._element) + : e; + } + _resolvePossibleFunction(e) { + return d(e, [this._element]); + } + _getPopperConfig(e) { + const t = { + placement: e, + modifiers: [ + { + name: 'flip', + options: { fallbackPlacements: this._config.fallbackPlacements } + }, + { name: 'offset', options: { offset: this._getOffset() } }, + { + name: 'preventOverflow', + options: { boundary: this._config.boundary } + }, + { + name: 'arrow', + options: { element: `.${this.constructor.NAME}-arrow` } + }, + { + name: 'preSetPlacement', + enabled: !0, + phase: 'beforeMain', + fn: (e) => { + this._getTipElement().setAttribute( + 'data-popper-placement', + e.state.placement + ); + } + } + ] + }; + return { ...t, ...d(this._config.popperConfig, [t]) }; + } + _setListeners() { + const e = this._config.trigger.split(' '); + for (const t of e) + if ('click' === t) + S.on( + this._element, + this.constructor.eventName('click'), + this._config.selector, + (e) => { + this._initializeOnDelegatedTarget(e).toggle(); + } + ); + else if ('manual' !== t) { + const e = + t === Yt + ? this.constructor.eventName('mouseenter') + : this.constructor.eventName('focusin'), + n = + t === Yt + ? this.constructor.eventName('mouseleave') + : this.constructor.eventName('focusout'); + S.on(this._element, e, this._config.selector, (e) => { + const t = this._initializeOnDelegatedTarget(e); + (t._activeTrigger['focusin' === e.type ? Ut : Yt] = !0), t._enter(); + }), + S.on(this._element, n, this._config.selector, (e) => { + const t = this._initializeOnDelegatedTarget(e); + (t._activeTrigger['focusout' === e.type ? Ut : Yt] = + t._element.contains(e.relatedTarget)), + t._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + S.on(this._element.closest(Rt), Vt, this._hideModalHandler); + } + _fixTitle() { + const e = this._element.getAttribute('title'); + e && + (this._element.getAttribute('aria-label') || + this._element.textContent.trim() || + this._element.setAttribute('aria-label', e), + this._element.setAttribute('data-bs-original-title', e), + this._element.removeAttribute('title')); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(e, t) { + clearTimeout(this._timeout), (this._timeout = setTimeout(e, t)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(e) { + const t = P.getDataAttributes(this._element); + for (const e of Object.keys(t)) $t.has(e) && delete t[e]; + return ( + (e = { ...t, ...('object' == typeof e && e ? e : {}) }), + (e = this._mergeConfigObj(e)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + _configAfterMerge(e) { + return ( + (e.container = !1 === e.container ? document.body : r(e.container)), + 'number' == typeof e.delay && + (e.delay = { show: e.delay, hide: e.delay }), + 'number' == typeof e.title && (e.title = e.title.toString()), + 'number' == typeof e.content && (e.content = e.content.toString()), + e + ); + } + _getDelegateConfig() { + const e = {}; + for (const [t, n] of Object.entries(this._config)) + this.constructor.Default[t] !== n && (e[t] = n); + return (e.selector = !1), (e.trigger = 'manual'), e; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(e) { + return this.each(function () { + const t = Gt.getOrCreateInstance(this, e); + if ('string' == typeof e) { + if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`); + t[e](); + } + }); + } + } + function Jt(e, t, n) { + if ('function' == typeof e ? e === t : e.has(t)) + return arguments.length < 3 ? t : n; + throw new TypeError('Private element is not present on this object'); + } + function Zt(e, t, n) { + return ( + (t = (function (e) { + var t = (function (e, t) { + if ('object' != typeof e || !e) return e; + var n = e[Symbol.toPrimitive]; + if (void 0 !== n) { + var i = n.call(e, t || 'default'); + if ('object' != typeof i) return i; + throw new TypeError('@@toPrimitive must return a primitive value.'); + } + return ('string' === t ? String : Number)(e); + })(e, 'string'); + return 'symbol' == typeof t ? t : t + ''; + })(t)) in e + ? Object.defineProperty(e, t, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (e[t] = n), + e + ); + } + var en; + f(Gt); + const tn = document.getElementById('toc-bar'), + nn = document.getElementById('toc-solo-trigger'), + on = document.getElementsByClassName('toc-trigger'), + rn = document.getElementById('toc-popup'), + sn = document.getElementById('toc-popup-close'), + an = 'overflow-hidden', + ln = 'closing'; + class cn { + static initBar() { + new IntersectionObserver( + (e) => { + e.forEach((e) => { + tn.classList.toggle('invisible', e.isIntersecting); + }); + }, + { rootMargin: `-${Jt(cn, this, fn)._}px 0px 0px 0px` } + ).observe(nn), + (un._ = Jt(cn, this, !1)); + } + static listenAnchors() { + [...document.getElementsByClassName('toc-link')].forEach((e) => { + e.onclick = () => this.hidePopup(); + }); + } + static refresh() { + Jt(cn, this, un)._ && this.initComponents(), + tocbot.refresh(this.options), + this.listenAnchors(); + } + static get popupOpened() { + return rn.open; + } + static showPopup() { + this.lockScroll(!0), rn.showModal(); + rn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' }); + } + static hidePopup() { + rn.toggleAttribute(ln), + rn.addEventListener( + 'animationend', + () => { + rn.toggleAttribute(ln), rn.close(); + }, + { once: !0 } + ), + this.lockScroll(!1); + } + static lockScroll(e) { + document.documentElement.classList.toggle(an, e), + document.body.classList.toggle(an, e); + } + static clickBackdrop(e) { + if (rn.hasAttribute(ln)) return; + const t = e.target.getBoundingClientRect(); + (e.clientX < t.left || + e.clientX > t.right || + e.clientY < t.top || + e.clientY > t.bottom) && + this.hidePopup(); + } + static initComponents() { + this.initBar(), + [...on].forEach((e) => { + e.onclick = () => this.showPopup(); + }), + (rn.onclick = (e) => this.clickBackdrop(e)), + (sn.onclick = () => this.hidePopup()), + (rn.oncancel = (e) => { + e.preventDefault(), this.hidePopup(); + }); + } + static init() { + tocbot.init(this.options), this.listenAnchors(), this.initComponents(); + } + } + var un = { _: !0 }, + fn = { _: 48 }; + Zt(cn, 'options', { + tocSelector: '#toc-popup-content', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + collapseDepth: 4, + headingsOffset: Jt((en = cn), en, fn)._ + }); + Zt( + class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + document.getElementById('toc-wrapper') && tocbot.init(this.options); + } + }, + 'options', + { + tocSelector: '#toc', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + headingsOffset: 32 + } + ), + matchMedia('(min-width: 1200px)'), + Theme.getThemeMapper('default', 'dark'); + const dn = document.getElementById('mode-toggle'); + const pn = document.getElementById('sidebar'), + hn = document.getElementById('sidebar-trigger'), + mn = document.getElementById('mask'); + class gn { + static toggle() { + (vn._ = Jt(gn, this, !Jt(gn, this, vn)._)), + document.body.toggleAttribute('sidebar-display', Jt(gn, this, vn)._), + pn.classList.toggle('z-2', Jt(gn, this, vn)._), + mn.classList.toggle('d-none', !Jt(gn, this, vn)._); + } + } + var vn = { _: !1 }; + const bn = document.getElementById('sidebar-trigger'), + yn = document.getElementById('search-trigger'), + _n = document.getElementById('search-cancel'), + wn = document.querySelectorAll('#main-wrapper>.container>.row'), + En = document.getElementById('topbar-title'), + On = document.getElementById('search'), + xn = document.getElementById('search-result-wrapper'), + An = document.getElementById('search-results'), + Cn = document.getElementById('search-input'), + Ln = document.getElementById('search-hints'), + Tn = 'd-block', + Sn = 'd-none', + jn = 'input-focus', + kn = 'd-flex'; + class Dn { + static on() { + bn.classList.add(Sn), + En.classList.add(Sn), + yn.classList.add(Sn), + On.classList.add(kn), + _n.classList.add(Tn); + } + static off() { + _n.classList.remove(Tn), + On.classList.remove(kn), + bn.classList.remove(Sn), + En.classList.remove(Sn), + yn.classList.remove(Sn); + } + } + class Pn { + static on() { + this.resultVisible || + (xn.classList.remove(Sn), + wn.forEach((e) => { + e.classList.add(Sn); + }), + (this.resultVisible = !0)); + } + static off() { + this.resultVisible && + ((An.innerHTML = ''), + Ln.classList.contains(Sn) && Ln.classList.remove(Sn), + xn.classList.add(Sn), + wn.forEach((e) => { + e.classList.remove(Sn); + }), + (Cn.textContent = ''), + (this.resultVisible = !1)); + } + } + function Nn() { + return _n.classList.contains(Tn); + } + Zt(Pn, 'resultVisible', !1), + dn && + dn.addEventListener('click', () => { + Theme.flip(); + }), + (function () { + const e = document.getElementById('back-to-top'); + window.addEventListener('scroll', () => { + window.scrollY > 50 + ? e.classList.add('show') + : e.classList.remove('show'); + }), + e.addEventListener('click', () => { + window.scrollTo({ top: 0 }); + }); + })(), + [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map( + (e) => new Gt(e) + ), + (hn.onclick = mn.onclick = () => gn.toggle()), + yn.addEventListener('click', () => { + Dn.on(), Pn.on(), Cn.focus(); + }), + _n.addEventListener('click', () => { + Dn.off(), Pn.off(); + }), + Cn.addEventListener('focus', () => { + On.classList.add(jn); + }), + Cn.addEventListener('focusout', () => { + On.classList.remove(jn); + }), + Cn.addEventListener('input', () => { + '' === Cn.value + ? Nn() + ? Ln.classList.remove(Sn) + : Pn.off() + : (Pn.on(), Nn() && Ln.classList.add(Sn)); + }), + [...J].forEach((e) => { + const t = 'h_' + e.id.substring(2), + n = document.getElementById(t); + e.addEventListener('hide.bs.collapse', () => { + n && + ((n.querySelector('.iconfont.icon-FolderOpen-1').className = + 'iconfont icon-folder'), + n.querySelector('.ifrot').classList.add('rotate'), + n.classList.remove('hide-border-bottom')); + }), + e.addEventListener('show.bs.collapse', () => { + n && + ((n.querySelector('.iconfont.icon-folder').className = + 'iconfont icon-FolderOpen-1'), + n.querySelector('.ifrot').classList.remove('rotate'), + n.classList.add('hide-border-bottom')); + }); + }); +})(); diff --git a/assets/js/dist/home.min.js b/assets/js/dist/home.min.js index 5ba98e440a4..0157e0a5511 100644 --- a/assets/js/dist/home.min.js +++ b/assets/js/dist/home.min.js @@ -1,4 +1,2892 @@ /*! * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ */ -!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of c)t()})),c.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&`${e}::${b++}`||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=E(t),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,l=E(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function D(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const P={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${D(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${D(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=k(t.dataset[i])}return e},getDataAttribute:(t,e)=>k(t.getAttribute(`data-bs-${D(e)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?P.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(e)?P.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},I={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=B(t);return e&&I.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?I.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?I.find(e):[]}},F=".bs.collapse",H=`show${F}`,$=`shown${F}`,R=`hide${F}`,z=`hidden${F}`,q=`click${F}.data-api`,W="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const t of n){const e=I.getSelectorFromElement(t),n=I.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>G.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,W),this._element.style[e]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,R).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,W);for(const t of this._triggerArray){const e=I.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(W)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(K);for(const e of t){const t=I.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=I.find(U,this._config.parent);return I.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}S.on(document,q,K,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",tt="right",et="left",nt="auto",it=[J,Z,tt,et],ot="start",rt="end",st="clippingParents",at="viewport",lt="popper",ct="reference",ut=it.reduce((function(t,e){return t.concat([e+"-"+ot,e+"-"+rt])}),[]),ft=[].concat(it,[nt]).reduce((function(t,e){return t.concat([e,e+"-"+ot,e+"-"+rt])}),[]),dt="beforeRead",pt="read",ht="afterRead",mt="beforeMain",gt="main",vt="afterMain",bt="beforeWrite",yt="write",_t="afterWrite",wt=[dt,pt,ht,mt,gt,vt,bt,yt,_t];function Et(t){return t?(t.nodeName||"").toLowerCase():null}function Ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xt(t){return t instanceof Ot(t).Element||t instanceof Element}function At(t){return t instanceof Ot(t).HTMLElement||t instanceof HTMLElement}function Ct(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Ot(t).ShadowRoot||t instanceof ShadowRoot)}var Tt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];At(o)&&Et(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});At(i)&&Et(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Lt(t){return t.split("-")[0]}var St=Math.max,jt=Math.min,kt=Math.round;function Dt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(Dt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&At(t)&&(o=t.offsetWidth>0&&kt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&kt(i.height)/t.offsetHeight||1);var s=(xt(t)?Ot(t):window).visualViewport,a=!Pt()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Nt(t){var e=Mt(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Bt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Ct(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function It(t){return Ot(t).getComputedStyle(t)}function Ft(t){return["table","td","th"].indexOf(Et(t))>=0}function Ht(t){return((xt(t)?t.ownerDocument:t.document)||window.document).documentElement}function $t(t){return"html"===Et(t)?t:t.assignedSlot||t.parentNode||(Ct(t)?t.host:null)||Ht(t)}function Rt(t){return At(t)&&"fixed"!==It(t).position?t.offsetParent:null}function zt(t){for(var e=Ot(t),n=Rt(t);n&&Ft(n)&&"static"===It(n).position;)n=Rt(n);return n&&("html"===Et(n)||"body"===Et(n)&&"static"===It(n).position)?e:n||function(t){var e=/firefox/i.test(Dt());if(/Trident/i.test(Dt())&&At(t)&&"fixed"===It(t).position)return null;var n=$t(t);for(Ct(n)&&(n=n.host);At(n)&&["html","body"].indexOf(Et(n))<0;){var i=It(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function qt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Wt(t,e,n){return St(t,jt(e,n))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Yt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Ut={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Lt(n.placement),l=qt(a),c=[et,tt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Yt(t,it))}(o.padding,n),f=Nt(r),d="y"===l?J:et,p="y"===l?Z:tt,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=zt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=Wt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Bt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(t){return t.split("-")[1]}var Qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=et,_=J,w=window;if(c){var E=zt(n),O="clientHeight",x="clientWidth";if(E===Ot(n)&&"static"!==It(E=Ht(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===et||o===tt)&&r===rt)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===et||(o===J||o===Z)&&r===rt)y=tt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:kt(n*o)/o||0,y:kt(i*o)/o||0}}({x:p,y:m},Ot(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Gt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Lt(e.placement),variation:Kt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Jt={passive:!0};var Zt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Jt)})),a&&l.addEventListener("resize",n.update,Jt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Jt)})),a&&l.removeEventListener("resize",n.update,Jt)}},data:{}},te={left:"right",right:"left",bottom:"top",top:"bottom"};function ee(t){return t.replace(/left|right|bottom|top/g,(function(t){return te[t]}))}var ne={start:"end",end:"start"};function ie(t){return t.replace(/start|end/g,(function(t){return ne[t]}))}function oe(t){var e=Ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return Mt(Ht(t)).left+oe(t).scrollLeft}function se(t){var e=It(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ae(t){return["html","body","#document"].indexOf(Et(t))>=0?t.ownerDocument.body:At(t)&&se(t)?t:ae($t(t))}function le(t,e){var n;void 0===e&&(e=[]);var i=ae(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ot(i),s=o?[r].concat(r.visualViewport||[],se(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(le($t(s)))}function ce(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ue(t,e,n){return e===at?ce(function(t,e){var n=Ot(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+re(t),y:l}}(t,n)):xt(e)?function(t,e){var n=Mt(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ce(function(t){var e,n=Ht(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=St(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=St(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+re(t),l=-i.scrollTop;return"rtl"===It(o||n).direction&&(a+=St(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function fe(t,e,n,i){var o="clippingParents"===e?function(t){var e=le($t(t)),n=["absolute","fixed"].indexOf(It(t).position)>=0&&At(t)?zt(t):t;return xt(n)?e.filter((function(t){return xt(t)&&Bt(t,n)&&"body"!==Et(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ue(t,n,i);return e.top=St(o.top,e.top),e.right=jt(o.right,e.right),e.bottom=jt(o.bottom,e.bottom),e.left=St(o.left,e.left),e}),ue(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Lt(o):null,s=o?Kt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:e={x:a,y:n.y-i.height};break;case Z:e={x:a,y:n.y+n.height};break;case tt:e={x:n.x+n.width,y:l};break;case et:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?qt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case ot:e[c]=e[c]-(n[u]/2-i[u]/2);break;case rt:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function pe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?st:a,c=n.rootBoundary,u=void 0===c?at:c,f=n.elementContext,d=void 0===f?lt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Vt("number"!=typeof g?g:Yt(g,it)),b=d===lt?ct:lt,y=t.rects.popper,_=t.elements[h?b:d],w=fe(xt(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),O=de({reference:E,element:y,placement:o}),x=ce(Object.assign({},y,O)),A=d===lt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===lt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[tt,Z].indexOf(t)>=0?1:-1,n=[J,Z].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ft:l,u=Kt(i),f=u?a?ut:ut.filter((function(t){return Kt(t)===u})):it,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=pe(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Lt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Lt(g),b=l||(v===g||!h?[ee(g)]:function(t){if(Lt(t)===nt)return[];var e=ee(t);return[ie(t),e,ie(e)]}(g)),y=[g].concat(b).reduce((function(t,n){return t.concat(Lt(n)===nt?he(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=pe(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?tt:et:L?Z:J;_[j]>w[j]&&(D=ee(D));var P=ee(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function ve(t){return[J,tt,Z,et].some((function(e){return t[e]>=0}))}var be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=pe(e,{elementContext:"reference"}),a=pe(e,{altBoundary:!0}),l=ge(s,i),c=ge(a,o,r),u=ve(l),f=ve(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ye={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ft.reduce((function(t,n){return t[n]=function(t,e,n){var i=Lt(t),o=[et,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[et,tt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var _e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=de({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var we={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pe(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Lt(e.placement),b=Kt(e.placement),y=!b,_=qt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?J:et,k="y"===_?Z:tt,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,I=b===ot?O[D]:x[D],F=b===ot?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Nt(H):{width:0,height:0},R=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=R[j],q=R[k],W=Wt(0,O[D],$[D]),V=y?O[D]/2-B-W-z-C.mainAxis:I-W-z-C.mainAxis,Y=y?-O[D]/2+B+W+q+C.mainAxis:F+W+q+C.mainAxis,U=e.elements.arrow&&zt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=Wt(p?jt(M,P+V-Q-K):M,P,p?St(N,X):N);E[_]=G,L[_]=G-P}if(a){var nt,it="x"===_?J:et,rt="x"===_?Z:tt,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[rt],ut=-1!==[J,et].indexOf(v),ft=null!=(nt=null==T?void 0:T[w])?nt:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=Wt(t,e,n);return i>n?n:i}(dt,st,pt):Wt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ee(t,e,n){void 0===n&&(n=!1);var i,o,r=At(e),s=At(e)&&function(t){var e=t.getBoundingClientRect(),n=kt(e.width)/t.offsetWidth||1,i=kt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Et(e)||se(a))&&(c=(i=e)!==Ot(i)&&At(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),At(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=re(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var xe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!De.has(n)||Boolean(Pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const Ne={allowList:ke,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Be={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Ie={entry:"(string|element|function|null)",selector:"(string|element)"};class Fe extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ne}static get DefaultType(){return Be}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Ie)}_setContent(t,e,n){const i=I.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),$e="fade",Re="show",ze=".tooltip-inner",qe=".modal",We="hide.bs.modal",Ve="hover",Ye="focus",Ue={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ke={allowList:ke,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qe={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xe extends N{constructor(t,e){if(void 0===je)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ke}static get DefaultType(){return Qe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(qe),We,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(Re),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(Re),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove($e,Re),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add($e),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Fe({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[ze]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($e)}_isShown(){return this.tip&&this.tip.classList.contains(Re)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ue[e.toUpperCase()];return Se(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...d(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ye:Ve]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ye:Ve]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(qe),We,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=P.getDataAttributes(this._element);for(const t of Object.keys(e))He.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}f(Xe);const Ge="data-src",Je="data-lqip",Ze={SHIMMER:"shimmer",BLUR:"blur"};function tn(t){this.parentElement.classList.remove(t)}function en(){this.complete&&(this.hasAttribute(Je)?tn.call(this,Ze.BLUR):tn.call(this,Ze.SHIMMER))}function nn(){const t=this.getAttribute(Ge);this.setAttribute("src",encodeURI(t)),this.removeAttribute(Ge)}class on{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}function rn(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function sn(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var an;const ln=document.getElementById("toc-bar"),cn=document.getElementById("toc-solo-trigger"),un=document.getElementsByClassName("toc-trigger"),fn=document.getElementById("toc-popup"),dn=document.getElementById("toc-popup-close"),pn="overflow-hidden",hn="closing";class mn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{ln.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${rn(mn,this,vn)._}px 0px 0px 0px`}).observe(cn),gn._=rn(mn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){rn(mn,this,gn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return fn.open}static showPopup(){this.lockScroll(!0),fn.showModal();fn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){fn.toggleAttribute(hn),fn.addEventListener("animationend",(()=>{fn.toggleAttribute(hn),fn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(pn,t),document.body.classList.toggle(pn,t)}static clickBackdrop(t){if(fn.hasAttribute(hn))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...un].forEach((t=>{t.onclick=()=>this.showPopup()})),fn.onclick=t=>this.clickBackdrop(t),dn.onclick=()=>this.hidePopup(),fn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var gn={_:!0},vn={_:48};sn(mn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:rn(an=mn,an,vn)._});sn(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const bn=document.getElementById("mode-toggle");const yn=document.getElementById("sidebar"),_n=document.getElementById("sidebar-trigger"),wn=document.getElementById("mask");class En{static toggle(){On._=rn(En,this,!rn(En,this,On)._),document.body.toggleAttribute("sidebar-display",rn(En,this,On)._),yn.classList.toggle("z-2",rn(En,this,On)._),wn.classList.toggle("d-none",!rn(En,this,On)._)}}var On={_:!1};const xn=document.getElementById("sidebar-trigger"),An=document.getElementById("search-trigger"),Cn=document.getElementById("search-cancel"),Tn=document.querySelectorAll("#main-wrapper>.container>.row"),Ln=document.getElementById("topbar-title"),Sn=document.getElementById("search"),jn=document.getElementById("search-result-wrapper"),kn=document.getElementById("search-results"),Dn=document.getElementById("search-input"),Pn=document.getElementById("search-hints"),Mn="d-block",Nn="d-none",Bn="input-focus",In="d-flex";class Fn{static on(){xn.classList.add(Nn),Ln.classList.add(Nn),An.classList.add(Nn),Sn.classList.add(In),Cn.classList.add(Mn)}static off(){Cn.classList.remove(Mn),Sn.classList.remove(In),xn.classList.remove(Nn),Ln.classList.remove(Nn),An.classList.remove(Nn)}}class Hn{static on(){this.resultVisible||(jn.classList.remove(Nn),Tn.forEach((t=>{t.classList.add(Nn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(kn.innerHTML="",Pn.classList.contains(Nn)&&Pn.classList.remove(Nn),jn.classList.add(Nn),Tn.forEach((t=>{t.classList.remove(Nn)})),Dn.textContent="",this.resultVisible=!1)}}function $n(){return Cn.classList.contains(Mn)}sn(Hn,"resultVisible",!1),function(){const t=document.querySelectorAll("article img");if(0===t.length)return;t.forEach((t=>{t.addEventListener("load",en)})),document.querySelectorAll('article img[loading="lazy"]').forEach((t=>{t.complete&&tn.call(t,Ze.SHIMMER)}));const e=document.querySelectorAll(`article img[${Je}="true"]`);e.length&&e.forEach((t=>{nn.call(t)}))}(),dayjs.locale(on.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${on.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(on.getTimestamp(t)),n=e.format(on.getDateFormat(t));if(t.textContent=n,t.removeAttribute(on.attrTimestamp),t.removeAttribute(on.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),_n.onclick=wn.onclick=()=>En.toggle(),An.addEventListener("click",(()=>{Fn.on(),Hn.on(),Dn.focus()})),Cn.addEventListener("click",(()=>{Fn.off(),Hn.off()})),Dn.addEventListener("focus",(()=>{Sn.classList.add(Bn)})),Dn.addEventListener("focusout",(()=>{Sn.classList.remove(Bn)})),Dn.addEventListener("input",(()=>{""===Dn.value?$n()?Pn.classList.remove(Nn):Hn.off():(Hn.on(),$n()&&Pn.classList.add(Nn))})),bn&&bn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Xe(t)))}(); +!(function () { + 'use strict'; + const t = new Map(); + var e = { + set(e, n, i) { + t.has(e) || t.set(e, new Map()); + const o = t.get(e); + o.has(n) || 0 === o.size + ? o.set(n, i) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(o.keys())[0] + }.` + ); + }, + get: (e, n) => (t.has(e) && t.get(e).get(n)) || null, + remove(e, n) { + if (!t.has(e)) return; + const i = t.get(e); + i.delete(n), 0 === i.size && t.delete(e); + } + }; + const n = 'transitionend', + i = (t) => ( + t && + window.CSS && + window.CSS.escape && + (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)), + t + ), + o = (t) => + !(!t || 'object' != typeof t) && + (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType), + r = (t) => + o(t) + ? t.jquery + ? t[0] + : t + : 'string' == typeof t && t.length > 0 + ? document.querySelector(i(t)) + : null, + s = (t) => { + if (!document.documentElement.attachShadow) return null; + if ('function' == typeof t.getRootNode) { + const e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? s(t.parentNode) + : null; + }, + a = () => {}, + l = () => + window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') + ? window.jQuery + : null, + c = [], + u = () => 'rtl' === document.documentElement.dir, + f = (t) => { + var e; + (e = () => { + const e = l(); + if (e) { + const n = t.NAME, + i = e.fn[n]; + (e.fn[n] = t.jQueryInterface), + (e.fn[n].Constructor = t), + (e.fn[n].noConflict = () => ((e.fn[n] = i), t.jQueryInterface)); + } + }), + 'loading' === document.readyState + ? (c.length || + document.addEventListener('DOMContentLoaded', () => { + for (const t of c) t(); + }), + c.push(e)) + : e(); + }, + d = function (t) { + let e = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t; + return 'function' == typeof t + ? t( + ...(arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : []) + ) + : e; + }, + p = function (t, e) { + if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2])) + return void d(t); + const i = + ((t) => { + if (!t) return 0; + let { transitionDuration: e, transitionDelay: n } = + window.getComputedStyle(t); + const i = Number.parseFloat(e), + o = Number.parseFloat(n); + return i || o + ? ((e = e.split(',')[0]), + (n = n.split(',')[0]), + 1e3 * (Number.parseFloat(e) + Number.parseFloat(n))) + : 0; + })(e) + 5; + let o = !1; + const r = (i) => { + let { target: s } = i; + s === e && ((o = !0), e.removeEventListener(n, r), d(t)); + }; + e.addEventListener(n, r), + setTimeout(() => { + o || e.dispatchEvent(new Event(n)); + }, i); + }, + h = /[^.]*(?=\..*)\.|.*/, + m = /\..*/, + g = /::\d+$/, + v = {}; + let b = 1; + const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, + _ = new Set([ + 'click', + 'dblclick', + 'mouseup', + 'mousedown', + 'contextmenu', + 'mousewheel', + 'DOMMouseScroll', + 'mouseover', + 'mouseout', + 'mousemove', + 'selectstart', + 'selectend', + 'keydown', + 'keypress', + 'keyup', + 'orientationchange', + 'touchstart', + 'touchmove', + 'touchend', + 'touchcancel', + 'pointerdown', + 'pointermove', + 'pointerup', + 'pointerleave', + 'pointercancel', + 'gesturestart', + 'gesturechange', + 'gestureend', + 'focus', + 'blur', + 'change', + 'reset', + 'select', + 'submit', + 'focusin', + 'focusout', + 'load', + 'unload', + 'beforeunload', + 'resize', + 'move', + 'DOMContentLoaded', + 'readystatechange', + 'error', + 'abort', + 'scroll' + ]); + function w(t, e) { + return (e && `${e}::${b++}`) || t.uidEvent || b++; + } + function E(t) { + const e = w(t); + return (t.uidEvent = e), (v[e] = v[e] || {}), v[e]; + } + function O(t, e) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; + return Object.values(t).find( + (t) => t.callable === e && t.delegationSelector === n + ); + } + function x(t, e, n) { + const i = 'string' == typeof e, + o = i ? n : e || n; + let r = L(t); + return _.has(r) || (r = t), [i, o, r]; + } + function A(t, e, n, i, o) { + if ('string' != typeof e || !t) return; + let [r, s, a] = x(e, n, i); + if (e in y) { + const t = (t) => + function (e) { + if ( + !e.relatedTarget || + (e.relatedTarget !== e.delegateTarget && + !e.delegateTarget.contains(e.relatedTarget)) + ) + return t.call(this, e); + }; + s = t(s); + } + const l = E(t), + c = l[a] || (l[a] = {}), + u = O(c, s, r ? n : null); + if (u) return void (u.oneOff = u.oneOff && o); + const f = w(s, e.replace(h, '')), + d = r + ? (function (t, e, n) { + return function i(o) { + const r = t.querySelectorAll(e); + for (let { target: s } = o; s && s !== this; s = s.parentNode) + for (const a of r) + if (a === s) + return ( + j(o, { delegateTarget: s }), + i.oneOff && S.off(t, o.type, e, n), + n.apply(s, [o]) + ); + }; + })(t, n, s) + : (function (t, e) { + return function n(i) { + return ( + j(i, { delegateTarget: t }), + n.oneOff && S.off(t, i.type, e), + e.apply(t, [i]) + ); + }; + })(t, s); + (d.delegationSelector = r ? n : null), + (d.callable = s), + (d.oneOff = o), + (d.uidEvent = f), + (c[f] = d), + t.addEventListener(a, d, r); + } + function C(t, e, n, i, o) { + const r = O(e[n], i, o); + r && (t.removeEventListener(n, r, Boolean(o)), delete e[n][r.uidEvent]); + } + function T(t, e, n, i) { + const o = e[n] || {}; + for (const [r, s] of Object.entries(o)) + r.includes(i) && C(t, e, n, s.callable, s.delegationSelector); + } + function L(t) { + return (t = t.replace(m, '')), y[t] || t; + } + const S = { + on(t, e, n, i) { + A(t, e, n, i, !1); + }, + one(t, e, n, i) { + A(t, e, n, i, !0); + }, + off(t, e, n, i) { + if ('string' != typeof e || !t) return; + const [o, r, s] = x(e, n, i), + a = s !== e, + l = E(t), + c = l[s] || {}, + u = e.startsWith('.'); + if (void 0 === r) { + if (u) for (const n of Object.keys(l)) T(t, l, n, e.slice(1)); + for (const [n, i] of Object.entries(c)) { + const o = n.replace(g, ''); + (a && !e.includes(o)) || C(t, l, s, i.callable, i.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + C(t, l, s, r, o ? n : null); + } + }, + trigger(t, e, n) { + if ('string' != typeof e || !t) return null; + const i = l(); + let o = null, + r = !0, + s = !0, + a = !1; + e !== L(e) && + i && + ((o = i.Event(e, n)), + i(t).trigger(o), + (r = !o.isPropagationStopped()), + (s = !o.isImmediatePropagationStopped()), + (a = o.isDefaultPrevented())); + const c = j(new Event(e, { bubbles: r, cancelable: !0 }), n); + return ( + a && c.preventDefault(), + s && t.dispatchEvent(c), + c.defaultPrevented && o && o.preventDefault(), + c + ); + } + }; + function j(t) { + let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + for (const [n, i] of Object.entries(e)) + try { + t[n] = i; + } catch { + Object.defineProperty(t, n, { configurable: !0, get: () => i }); + } + return t; + } + function k(t) { + if ('true' === t) return !0; + if ('false' === t) return !1; + if (t === Number(t).toString()) return Number(t); + if ('' === t || 'null' === t) return null; + if ('string' != typeof t) return t; + try { + return JSON.parse(decodeURIComponent(t)); + } catch { + return t; + } + } + function D(t) { + return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`); + } + const P = { + setDataAttribute(t, e, n) { + t.setAttribute(`data-bs-${D(e)}`, n); + }, + removeDataAttribute(t, e) { + t.removeAttribute(`data-bs-${D(e)}`); + }, + getDataAttributes(t) { + if (!t) return {}; + const e = {}, + n = Object.keys(t.dataset).filter( + (t) => t.startsWith('bs') && !t.startsWith('bsConfig') + ); + for (const i of n) { + let n = i.replace(/^bs/, ''); + (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (e[n] = k(t.dataset[i])); + } + return e; + }, + getDataAttribute: (t, e) => k(t.getAttribute(`data-bs-${D(e)}`)) + }; + class M { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return t; + } + _mergeConfigObj(t, e) { + const n = o(e) ? P.getDataAttribute(e, 'config') : {}; + return { + ...this.constructor.Default, + ...('object' == typeof n ? n : {}), + ...(o(e) ? P.getDataAttributes(e) : {}), + ...('object' == typeof t ? t : {}) + }; + } + _typeCheckConfig(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : this.constructor.DefaultType; + for (const [i, r] of Object.entries(e)) { + const e = t[i], + s = o(e) + ? 'element' + : null == (n = e) + ? `${n}` + : Object.prototype.toString + .call(n) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(r).test(s)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".` + ); + } + var n; + } + } + class N extends M { + constructor(t, n) { + super(), + (t = r(t)) && + ((this._element = t), + (this._config = this._getConfig(n)), + e.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + e.remove(this._element, this.constructor.DATA_KEY), + S.off(this._element, this.constructor.EVENT_KEY); + for (const t of Object.getOwnPropertyNames(this)) this[t] = null; + } + _queueCallback(t, e) { + p( + t, + e, + !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t, this._element)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + static getInstance(t) { + return e.get(r(t), this.DATA_KEY); + } + static getOrCreateInstance(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + return ( + this.getInstance(t) || new this(t, 'object' == typeof e ? e : null) + ); + } + static get VERSION() { + return '5.3.3'; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(t) { + return `${t}${this.EVENT_KEY}`; + } + } + const B = (t) => { + let e = t.getAttribute('data-bs-target'); + if (!e || '#' === e) { + let n = t.getAttribute('href'); + if (!n || (!n.includes('#') && !n.startsWith('.'))) return null; + n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`), + (e = n && '#' !== n ? n.trim() : null); + } + return e + ? e + .split(',') + .map((t) => i(t)) + .join(',') + : null; + }, + I = { + find(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return [].concat(...Element.prototype.querySelectorAll.call(e, t)); + }, + findOne(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return Element.prototype.querySelector.call(e, t); + }, + children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)), + parents(t, e) { + const n = []; + let i = t.parentNode.closest(e); + for (; i; ) n.push(i), (i = i.parentNode.closest(e)); + return n; + }, + prev(t, e) { + let n = t.previousElementSibling; + for (; n; ) { + if (n.matches(e)) return [n]; + n = n.previousElementSibling; + } + return []; + }, + next(t, e) { + let n = t.nextElementSibling; + for (; n; ) { + if (n.matches(e)) return [n]; + n = n.nextElementSibling; + } + return []; + }, + focusableChildren(t) { + const e = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ] + .map((t) => `${t}:not([tabindex^="-"])`) + .join(','); + return this.find(e, t).filter( + (t) => + !((t) => + !t || + t.nodeType !== Node.ELEMENT_NODE || + !!t.classList.contains('disabled') || + (void 0 !== t.disabled + ? t.disabled + : t.hasAttribute('disabled') && + 'false' !== t.getAttribute('disabled')))(t) && + ((t) => { + if (!o(t) || 0 === t.getClientRects().length) return !1; + const e = + 'visible' === + getComputedStyle(t).getPropertyValue('visibility'), + n = t.closest('details:not([open])'); + if (!n) return e; + if (n !== t) { + const e = t.closest('summary'); + if (e && e.parentNode !== n) return !1; + if (null === e) return !1; + } + return e; + })(t) + ); + }, + getSelectorFromElement(t) { + const e = B(t); + return e && I.findOne(e) ? e : null; + }, + getElementFromSelector(t) { + const e = B(t); + return e ? I.findOne(e) : null; + }, + getMultipleElementsFromSelector(t) { + const e = B(t); + return e ? I.find(e) : []; + } + }, + F = '.bs.collapse', + H = `show${F}`, + $ = `shown${F}`, + R = `hide${F}`, + z = `hidden${F}`, + q = `click${F}.data-api`, + W = 'show', + V = 'collapse', + Y = 'collapsing', + U = `:scope .${V} .${V}`, + K = '[data-bs-toggle="collapse"]', + Q = { parent: null, toggle: !0 }, + X = { parent: '(null|element)', toggle: 'boolean' }; + class G extends N { + constructor(t, e) { + super(t, e), (this._isTransitioning = !1), (this._triggerArray = []); + const n = I.find(K); + for (const t of n) { + const e = I.getSelectorFromElement(t), + n = I.find(e).filter((t) => t === this._element); + null !== e && n.length && this._triggerArray.push(t); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), + this._config.toggle && this.toggle(); + } + static get Default() { + return Q; + } + static get DefaultType() { + return X; + } + static get NAME() { + return 'collapse'; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let t = []; + if ( + (this._config.parent && + (t = this._getFirstLevelChildren( + '.collapse.show, .collapse.collapsing' + ) + .filter((t) => t !== this._element) + .map((t) => G.getOrCreateInstance(t, { toggle: !1 }))), + t.length && t[0]._isTransitioning) + ) + return; + if (S.trigger(this._element, H).defaultPrevented) return; + for (const e of t) e.hide(); + const e = this._getDimension(); + this._element.classList.remove(V), + this._element.classList.add(Y), + (this._element.style[e] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const n = `scroll${e[0].toUpperCase() + e.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Y), + this._element.classList.add(V, W), + (this._element.style[e] = ''), + S.trigger(this._element, $); + }, + this._element, + !0 + ), + (this._element.style[e] = `${this._element[n]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (S.trigger(this._element, R).defaultPrevented) return; + const t = this._getDimension(); + (this._element.style[t] = `${ + this._element.getBoundingClientRect()[t] + }px`), + this._element.offsetHeight, + this._element.classList.add(Y), + this._element.classList.remove(V, W); + for (const t of this._triggerArray) { + const e = I.getElementFromSelector(t); + e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1); + } + this._isTransitioning = !0; + (this._element.style[t] = ''), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Y), + this._element.classList.add(V), + S.trigger(this._element, z); + }, + this._element, + !0 + ); + } + _isShown() { + return ( + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : this._element + ).classList.contains(W); + } + _configAfterMerge(t) { + return (t.toggle = Boolean(t.toggle)), (t.parent = r(t.parent)), t; + } + _getDimension() { + return this._element.classList.contains('collapse-horizontal') + ? 'width' + : 'height'; + } + _initializeChildren() { + if (!this._config.parent) return; + const t = this._getFirstLevelChildren(K); + for (const e of t) { + const t = I.getElementFromSelector(e); + t && this._addAriaAndCollapsedClass([e], this._isShown(t)); + } + } + _getFirstLevelChildren(t) { + const e = I.find(U, this._config.parent); + return I.find(t, this._config.parent).filter((t) => !e.includes(t)); + } + _addAriaAndCollapsedClass(t, e) { + if (t.length) + for (const n of t) + n.classList.toggle('collapsed', !e), + n.setAttribute('aria-expanded', e); + } + static jQueryInterface(t) { + const e = {}; + return ( + 'string' == typeof t && /show|hide/.test(t) && (e.toggle = !1), + this.each(function () { + const n = G.getOrCreateInstance(this, e); + if ('string' == typeof t) { + if (void 0 === n[t]) throw new TypeError(`No method named "${t}"`); + n[t](); + } + }) + ); + } + } + S.on(document, q, K, function (t) { + ('A' === t.target.tagName || + (t.delegateTarget && 'A' === t.delegateTarget.tagName)) && + t.preventDefault(); + for (const t of I.getMultipleElementsFromSelector(this)) + G.getOrCreateInstance(t, { toggle: !1 }).toggle(); + }), + f(G), + document.getElementsByClassName('collapse'); + var J = 'top', + Z = 'bottom', + tt = 'right', + et = 'left', + nt = 'auto', + it = [J, Z, tt, et], + ot = 'start', + rt = 'end', + st = 'clippingParents', + at = 'viewport', + lt = 'popper', + ct = 'reference', + ut = it.reduce(function (t, e) { + return t.concat([e + '-' + ot, e + '-' + rt]); + }, []), + ft = [].concat(it, [nt]).reduce(function (t, e) { + return t.concat([e, e + '-' + ot, e + '-' + rt]); + }, []), + dt = 'beforeRead', + pt = 'read', + ht = 'afterRead', + mt = 'beforeMain', + gt = 'main', + vt = 'afterMain', + bt = 'beforeWrite', + yt = 'write', + _t = 'afterWrite', + wt = [dt, pt, ht, mt, gt, vt, bt, yt, _t]; + function Et(t) { + return t ? (t.nodeName || '').toLowerCase() : null; + } + function Ot(t) { + if (null == t) return window; + if ('[object Window]' !== t.toString()) { + var e = t.ownerDocument; + return (e && e.defaultView) || window; + } + return t; + } + function xt(t) { + return t instanceof Ot(t).Element || t instanceof Element; + } + function At(t) { + return t instanceof Ot(t).HTMLElement || t instanceof HTMLElement; + } + function Ct(t) { + return ( + 'undefined' != typeof ShadowRoot && + (t instanceof Ot(t).ShadowRoot || t instanceof ShadowRoot) + ); + } + var Tt = { + name: 'applyStyles', + enabled: !0, + phase: 'write', + fn: function (t) { + var e = t.state; + Object.keys(e.elements).forEach(function (t) { + var n = e.styles[t] || {}, + i = e.attributes[t] || {}, + o = e.elements[t]; + At(o) && + Et(o) && + (Object.assign(o.style, n), + Object.keys(i).forEach(function (t) { + var e = i[t]; + !1 === e + ? o.removeAttribute(t) + : o.setAttribute(t, !0 === e ? '' : e); + })); + }); + }, + effect: function (t) { + var e = t.state, + n = { + popper: { + position: e.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { position: 'absolute' }, + reference: {} + }; + return ( + Object.assign(e.elements.popper.style, n.popper), + (e.styles = n), + e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow), + function () { + Object.keys(e.elements).forEach(function (t) { + var i = e.elements[t], + o = e.attributes[t] || {}, + r = Object.keys( + e.styles.hasOwnProperty(t) ? e.styles[t] : n[t] + ).reduce(function (t, e) { + return (t[e] = ''), t; + }, {}); + At(i) && + Et(i) && + (Object.assign(i.style, r), + Object.keys(o).forEach(function (t) { + i.removeAttribute(t); + })); + }); + } + ); + }, + requires: ['computeStyles'] + }; + function Lt(t) { + return t.split('-')[0]; + } + var St = Math.max, + jt = Math.min, + kt = Math.round; + function Dt() { + var t = navigator.userAgentData; + return null != t && t.brands && Array.isArray(t.brands) + ? t.brands + .map(function (t) { + return t.brand + '/' + t.version; + }) + .join(' ') + : navigator.userAgent; + } + function Pt() { + return !/^((?!chrome|android).)*safari/i.test(Dt()); + } + function Mt(t, e, n) { + void 0 === e && (e = !1), void 0 === n && (n = !1); + var i = t.getBoundingClientRect(), + o = 1, + r = 1; + e && + At(t) && + ((o = (t.offsetWidth > 0 && kt(i.width) / t.offsetWidth) || 1), + (r = (t.offsetHeight > 0 && kt(i.height) / t.offsetHeight) || 1)); + var s = (xt(t) ? Ot(t) : window).visualViewport, + a = !Pt() && n, + l = (i.left + (a && s ? s.offsetLeft : 0)) / o, + c = (i.top + (a && s ? s.offsetTop : 0)) / r, + u = i.width / o, + f = i.height / r; + return { + width: u, + height: f, + top: c, + right: l + u, + bottom: c + f, + left: l, + x: l, + y: c + }; + } + function Nt(t) { + var e = Mt(t), + n = t.offsetWidth, + i = t.offsetHeight; + return ( + Math.abs(e.width - n) <= 1 && (n = e.width), + Math.abs(e.height - i) <= 1 && (i = e.height), + { x: t.offsetLeft, y: t.offsetTop, width: n, height: i } + ); + } + function Bt(t, e) { + var n = e.getRootNode && e.getRootNode(); + if (t.contains(e)) return !0; + if (n && Ct(n)) { + var i = e; + do { + if (i && t.isSameNode(i)) return !0; + i = i.parentNode || i.host; + } while (i); + } + return !1; + } + function It(t) { + return Ot(t).getComputedStyle(t); + } + function Ft(t) { + return ['table', 'td', 'th'].indexOf(Et(t)) >= 0; + } + function Ht(t) { + return ((xt(t) ? t.ownerDocument : t.document) || window.document) + .documentElement; + } + function $t(t) { + return 'html' === Et(t) + ? t + : t.assignedSlot || t.parentNode || (Ct(t) ? t.host : null) || Ht(t); + } + function Rt(t) { + return At(t) && 'fixed' !== It(t).position ? t.offsetParent : null; + } + function zt(t) { + for (var e = Ot(t), n = Rt(t); n && Ft(n) && 'static' === It(n).position; ) + n = Rt(n); + return n && + ('html' === Et(n) || ('body' === Et(n) && 'static' === It(n).position)) + ? e + : n || + (function (t) { + var e = /firefox/i.test(Dt()); + if (/Trident/i.test(Dt()) && At(t) && 'fixed' === It(t).position) + return null; + var n = $t(t); + for ( + Ct(n) && (n = n.host); + At(n) && ['html', 'body'].indexOf(Et(n)) < 0; + + ) { + var i = It(n); + if ( + 'none' !== i.transform || + 'none' !== i.perspective || + 'paint' === i.contain || + -1 !== ['transform', 'perspective'].indexOf(i.willChange) || + (e && 'filter' === i.willChange) || + (e && i.filter && 'none' !== i.filter) + ) + return n; + n = n.parentNode; + } + return null; + })(t) || + e; + } + function qt(t) { + return ['top', 'bottom'].indexOf(t) >= 0 ? 'x' : 'y'; + } + function Wt(t, e, n) { + return St(t, jt(e, n)); + } + function Vt(t) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t); + } + function Yt(t, e) { + return e.reduce(function (e, n) { + return (e[n] = t), e; + }, {}); + } + var Ut = { + name: 'arrow', + enabled: !0, + phase: 'main', + fn: function (t) { + var e, + n = t.state, + i = t.name, + o = t.options, + r = n.elements.arrow, + s = n.modifiersData.popperOffsets, + a = Lt(n.placement), + l = qt(a), + c = [et, tt].indexOf(a) >= 0 ? 'height' : 'width'; + if (r && s) { + var u = (function (t, e) { + return Vt( + 'number' != + typeof (t = + 'function' == typeof t + ? t(Object.assign({}, e.rects, { placement: e.placement })) + : t) + ? t + : Yt(t, it) + ); + })(o.padding, n), + f = Nt(r), + d = 'y' === l ? J : et, + p = 'y' === l ? Z : tt, + h = + n.rects.reference[c] + + n.rects.reference[l] - + s[l] - + n.rects.popper[c], + m = s[l] - n.rects.reference[l], + g = zt(r), + v = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0, + b = h / 2 - m / 2, + y = u[d], + _ = v - f[c] - u[p], + w = v / 2 - f[c] / 2 + b, + E = Wt(y, w, _), + O = l; + n.modifiersData[i] = (((e = {})[O] = E), (e.centerOffset = E - w), e); + } + }, + effect: function (t) { + var e = t.state, + n = t.options.element, + i = void 0 === n ? '[data-popper-arrow]' : n; + null != i && + ('string' != typeof i || (i = e.elements.popper.querySelector(i))) && + Bt(e.elements.popper, i) && + (e.elements.arrow = i); + }, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + function Kt(t) { + return t.split('-')[1]; + } + var Qt = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; + function Xt(t) { + var e, + n = t.popper, + i = t.popperRect, + o = t.placement, + r = t.variation, + s = t.offsets, + a = t.position, + l = t.gpuAcceleration, + c = t.adaptive, + u = t.roundOffsets, + f = t.isFixed, + d = s.x, + p = void 0 === d ? 0 : d, + h = s.y, + m = void 0 === h ? 0 : h, + g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m }; + (p = g.x), (m = g.y); + var v = s.hasOwnProperty('x'), + b = s.hasOwnProperty('y'), + y = et, + _ = J, + w = window; + if (c) { + var E = zt(n), + O = 'clientHeight', + x = 'clientWidth'; + if ( + (E === Ot(n) && + 'static' !== It((E = Ht(n))).position && + 'absolute' === a && + ((O = 'scrollHeight'), (x = 'scrollWidth')), + o === J || ((o === et || o === tt) && r === rt)) + ) + (_ = Z), + (m -= + (f && E === w && w.visualViewport + ? w.visualViewport.height + : E[O]) - i.height), + (m *= l ? 1 : -1); + if (o === et || ((o === J || o === Z) && r === rt)) + (y = tt), + (p -= + (f && E === w && w.visualViewport ? w.visualViewport.width : E[x]) - + i.width), + (p *= l ? 1 : -1); + } + var A, + C = Object.assign({ position: a }, c && Qt), + T = + !0 === u + ? (function (t, e) { + var n = t.x, + i = t.y, + o = e.devicePixelRatio || 1; + return { x: kt(n * o) / o || 0, y: kt(i * o) / o || 0 }; + })({ x: p, y: m }, Ot(n)) + : { x: p, y: m }; + return ( + (p = T.x), + (m = T.y), + l + ? Object.assign( + {}, + C, + (((A = {})[_] = b ? '0' : ''), + (A[y] = v ? '0' : ''), + (A.transform = + (w.devicePixelRatio || 1) <= 1 + ? 'translate(' + p + 'px, ' + m + 'px)' + : 'translate3d(' + p + 'px, ' + m + 'px, 0)'), + A) + ) + : Object.assign( + {}, + C, + (((e = {})[_] = b ? m + 'px' : ''), + (e[y] = v ? p + 'px' : ''), + (e.transform = ''), + e) + ) + ); + } + var Gt = { + name: 'computeStyles', + enabled: !0, + phase: 'beforeWrite', + fn: function (t) { + var e = t.state, + n = t.options, + i = n.gpuAcceleration, + o = void 0 === i || i, + r = n.adaptive, + s = void 0 === r || r, + a = n.roundOffsets, + l = void 0 === a || a, + c = { + placement: Lt(e.placement), + variation: Kt(e.placement), + popper: e.elements.popper, + popperRect: e.rects.popper, + gpuAcceleration: o, + isFixed: 'fixed' === e.options.strategy + }; + null != e.modifiersData.popperOffsets && + (e.styles.popper = Object.assign( + {}, + e.styles.popper, + Xt( + Object.assign({}, c, { + offsets: e.modifiersData.popperOffsets, + position: e.options.strategy, + adaptive: s, + roundOffsets: l + }) + ) + )), + null != e.modifiersData.arrow && + (e.styles.arrow = Object.assign( + {}, + e.styles.arrow, + Xt( + Object.assign({}, c, { + offsets: e.modifiersData.arrow, + position: 'absolute', + adaptive: !1, + roundOffsets: l + }) + ) + )), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + 'data-popper-placement': e.placement + })); + }, + data: {} + }, + Jt = { passive: !0 }; + var Zt = { + name: 'eventListeners', + enabled: !0, + phase: 'write', + fn: function () {}, + effect: function (t) { + var e = t.state, + n = t.instance, + i = t.options, + o = i.scroll, + r = void 0 === o || o, + s = i.resize, + a = void 0 === s || s, + l = Ot(e.elements.popper), + c = [].concat(e.scrollParents.reference, e.scrollParents.popper); + return ( + r && + c.forEach(function (t) { + t.addEventListener('scroll', n.update, Jt); + }), + a && l.addEventListener('resize', n.update, Jt), + function () { + r && + c.forEach(function (t) { + t.removeEventListener('scroll', n.update, Jt); + }), + a && l.removeEventListener('resize', n.update, Jt); + } + ); + }, + data: {} + }, + te = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + function ee(t) { + return t.replace(/left|right|bottom|top/g, function (t) { + return te[t]; + }); + } + var ne = { start: 'end', end: 'start' }; + function ie(t) { + return t.replace(/start|end/g, function (t) { + return ne[t]; + }); + } + function oe(t) { + var e = Ot(t); + return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset }; + } + function re(t) { + return Mt(Ht(t)).left + oe(t).scrollLeft; + } + function se(t) { + var e = It(t), + n = e.overflow, + i = e.overflowX, + o = e.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + i); + } + function ae(t) { + return ['html', 'body', '#document'].indexOf(Et(t)) >= 0 + ? t.ownerDocument.body + : At(t) && se(t) + ? t + : ae($t(t)); + } + function le(t, e) { + var n; + void 0 === e && (e = []); + var i = ae(t), + o = i === (null == (n = t.ownerDocument) ? void 0 : n.body), + r = Ot(i), + s = o ? [r].concat(r.visualViewport || [], se(i) ? i : []) : i, + a = e.concat(s); + return o ? a : a.concat(le($t(s))); + } + function ce(t) { + return Object.assign({}, t, { + left: t.x, + top: t.y, + right: t.x + t.width, + bottom: t.y + t.height + }); + } + function ue(t, e, n) { + return e === at + ? ce( + (function (t, e) { + var n = Ot(t), + i = Ht(t), + o = n.visualViewport, + r = i.clientWidth, + s = i.clientHeight, + a = 0, + l = 0; + if (o) { + (r = o.width), (s = o.height); + var c = Pt(); + (c || (!c && 'fixed' === e)) && + ((a = o.offsetLeft), (l = o.offsetTop)); + } + return { width: r, height: s, x: a + re(t), y: l }; + })(t, n) + ) + : xt(e) + ? (function (t, e) { + var n = Mt(t, !1, 'fixed' === e); + return ( + (n.top = n.top + t.clientTop), + (n.left = n.left + t.clientLeft), + (n.bottom = n.top + t.clientHeight), + (n.right = n.left + t.clientWidth), + (n.width = t.clientWidth), + (n.height = t.clientHeight), + (n.x = n.left), + (n.y = n.top), + n + ); + })(e, n) + : ce( + (function (t) { + var e, + n = Ht(t), + i = oe(t), + o = null == (e = t.ownerDocument) ? void 0 : e.body, + r = St( + n.scrollWidth, + n.clientWidth, + o ? o.scrollWidth : 0, + o ? o.clientWidth : 0 + ), + s = St( + n.scrollHeight, + n.clientHeight, + o ? o.scrollHeight : 0, + o ? o.clientHeight : 0 + ), + a = -i.scrollLeft + re(t), + l = -i.scrollTop; + return ( + 'rtl' === It(o || n).direction && + (a += St(n.clientWidth, o ? o.clientWidth : 0) - r), + { width: r, height: s, x: a, y: l } + ); + })(Ht(t)) + ); + } + function fe(t, e, n, i) { + var o = + 'clippingParents' === e + ? (function (t) { + var e = le($t(t)), + n = + ['absolute', 'fixed'].indexOf(It(t).position) >= 0 && At(t) + ? zt(t) + : t; + return xt(n) + ? e.filter(function (t) { + return xt(t) && Bt(t, n) && 'body' !== Et(t); + }) + : []; + })(t) + : [].concat(e), + r = [].concat(o, [n]), + s = r[0], + a = r.reduce(function (e, n) { + var o = ue(t, n, i); + return ( + (e.top = St(o.top, e.top)), + (e.right = jt(o.right, e.right)), + (e.bottom = jt(o.bottom, e.bottom)), + (e.left = St(o.left, e.left)), + e + ); + }, ue(t, s, i)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + } + function de(t) { + var e, + n = t.reference, + i = t.element, + o = t.placement, + r = o ? Lt(o) : null, + s = o ? Kt(o) : null, + a = n.x + n.width / 2 - i.width / 2, + l = n.y + n.height / 2 - i.height / 2; + switch (r) { + case J: + e = { x: a, y: n.y - i.height }; + break; + case Z: + e = { x: a, y: n.y + n.height }; + break; + case tt: + e = { x: n.x + n.width, y: l }; + break; + case et: + e = { x: n.x - i.width, y: l }; + break; + default: + e = { x: n.x, y: n.y }; + } + var c = r ? qt(r) : null; + if (null != c) { + var u = 'y' === c ? 'height' : 'width'; + switch (s) { + case ot: + e[c] = e[c] - (n[u] / 2 - i[u] / 2); + break; + case rt: + e[c] = e[c] + (n[u] / 2 - i[u] / 2); + } + } + return e; + } + function pe(t, e) { + void 0 === e && (e = {}); + var n = e, + i = n.placement, + o = void 0 === i ? t.placement : i, + r = n.strategy, + s = void 0 === r ? t.strategy : r, + a = n.boundary, + l = void 0 === a ? st : a, + c = n.rootBoundary, + u = void 0 === c ? at : c, + f = n.elementContext, + d = void 0 === f ? lt : f, + p = n.altBoundary, + h = void 0 !== p && p, + m = n.padding, + g = void 0 === m ? 0 : m, + v = Vt('number' != typeof g ? g : Yt(g, it)), + b = d === lt ? ct : lt, + y = t.rects.popper, + _ = t.elements[h ? b : d], + w = fe(xt(_) ? _ : _.contextElement || Ht(t.elements.popper), l, u, s), + E = Mt(t.elements.reference), + O = de({ reference: E, element: y, placement: o }), + x = ce(Object.assign({}, y, O)), + A = d === lt ? x : E, + C = { + top: w.top - A.top + v.top, + bottom: A.bottom - w.bottom + v.bottom, + left: w.left - A.left + v.left, + right: A.right - w.right + v.right + }, + T = t.modifiersData.offset; + if (d === lt && T) { + var L = T[o]; + Object.keys(C).forEach(function (t) { + var e = [tt, Z].indexOf(t) >= 0 ? 1 : -1, + n = [J, Z].indexOf(t) >= 0 ? 'y' : 'x'; + C[t] += L[n] * e; + }); + } + return C; + } + function he(t, e) { + void 0 === e && (e = {}); + var n = e, + i = n.placement, + o = n.boundary, + r = n.rootBoundary, + s = n.padding, + a = n.flipVariations, + l = n.allowedAutoPlacements, + c = void 0 === l ? ft : l, + u = Kt(i), + f = u + ? a + ? ut + : ut.filter(function (t) { + return Kt(t) === u; + }) + : it, + d = f.filter(function (t) { + return c.indexOf(t) >= 0; + }); + 0 === d.length && (d = f); + var p = d.reduce(function (e, n) { + return ( + (e[n] = pe(t, { + placement: n, + boundary: o, + rootBoundary: r, + padding: s + })[Lt(n)]), + e + ); + }, {}); + return Object.keys(p).sort(function (t, e) { + return p[t] - p[e]; + }); + } + var me = { + name: 'flip', + enabled: !0, + phase: 'main', + fn: function (t) { + var e = t.state, + n = t.options, + i = t.name; + if (!e.modifiersData[i]._skip) { + for ( + var o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 === s || s, + l = n.fallbackPlacements, + c = n.padding, + u = n.boundary, + f = n.rootBoundary, + d = n.altBoundary, + p = n.flipVariations, + h = void 0 === p || p, + m = n.allowedAutoPlacements, + g = e.options.placement, + v = Lt(g), + b = + l || + (v === g || !h + ? [ee(g)] + : (function (t) { + if (Lt(t) === nt) return []; + var e = ee(t); + return [ie(t), e, ie(e)]; + })(g)), + y = [g].concat(b).reduce(function (t, n) { + return t.concat( + Lt(n) === nt + ? he(e, { + placement: n, + boundary: u, + rootBoundary: f, + padding: c, + flipVariations: h, + allowedAutoPlacements: m + }) + : n + ); + }, []), + _ = e.rects.reference, + w = e.rects.popper, + E = new Map(), + O = !0, + x = y[0], + A = 0; + A < y.length; + A++ + ) { + var C = y[A], + T = Lt(C), + L = Kt(C) === ot, + S = [J, Z].indexOf(T) >= 0, + j = S ? 'width' : 'height', + k = pe(e, { + placement: C, + boundary: u, + rootBoundary: f, + altBoundary: d, + padding: c + }), + D = S ? (L ? tt : et) : L ? Z : J; + _[j] > w[j] && (D = ee(D)); + var P = ee(D), + M = []; + if ( + (r && M.push(k[T] <= 0), + a && M.push(k[D] <= 0, k[P] <= 0), + M.every(function (t) { + return t; + })) + ) { + (x = C), (O = !1); + break; + } + E.set(C, M); + } + if (O) + for ( + var N = function (t) { + var e = y.find(function (e) { + var n = E.get(e); + if (n) + return n.slice(0, t).every(function (t) { + return t; + }); + }); + if (e) return (x = e), 'break'; + }, + B = h ? 3 : 1; + B > 0; + B-- + ) { + if ('break' === N(B)) break; + } + e.placement !== x && + ((e.modifiersData[i]._skip = !0), (e.placement = x), (e.reset = !0)); + } + }, + requiresIfExists: ['offset'], + data: { _skip: !1 } + }; + function ge(t, e, n) { + return ( + void 0 === n && (n = { x: 0, y: 0 }), + { + top: t.top - e.height - n.y, + right: t.right - e.width + n.x, + bottom: t.bottom - e.height + n.y, + left: t.left - e.width - n.x + } + ); + } + function ve(t) { + return [J, tt, Z, et].some(function (e) { + return t[e] >= 0; + }); + } + var be = { + name: 'hide', + enabled: !0, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: function (t) { + var e = t.state, + n = t.name, + i = e.rects.reference, + o = e.rects.popper, + r = e.modifiersData.preventOverflow, + s = pe(e, { elementContext: 'reference' }), + a = pe(e, { altBoundary: !0 }), + l = ge(s, i), + c = ge(a, o, r), + u = ve(l), + f = ve(c); + (e.modifiersData[n] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: u, + hasPopperEscaped: f + }), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + 'data-popper-reference-hidden': u, + 'data-popper-escaped': f + })); + } + }; + var ye = { + name: 'offset', + enabled: !0, + phase: 'main', + requires: ['popperOffsets'], + fn: function (t) { + var e = t.state, + n = t.options, + i = t.name, + o = n.offset, + r = void 0 === o ? [0, 0] : o, + s = ft.reduce(function (t, n) { + return ( + (t[n] = (function (t, e, n) { + var i = Lt(t), + o = [et, J].indexOf(i) >= 0 ? -1 : 1, + r = + 'function' == typeof n + ? n(Object.assign({}, e, { placement: t })) + : n, + s = r[0], + a = r[1]; + return ( + (s = s || 0), + (a = (a || 0) * o), + [et, tt].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a } + ); + })(n, e.rects, r)), + t + ); + }, {}), + a = s[e.placement], + l = a.x, + c = a.y; + null != e.modifiersData.popperOffsets && + ((e.modifiersData.popperOffsets.x += l), + (e.modifiersData.popperOffsets.y += c)), + (e.modifiersData[i] = s); + } + }; + var _e = { + name: 'popperOffsets', + enabled: !0, + phase: 'read', + fn: function (t) { + var e = t.state, + n = t.name; + e.modifiersData[n] = de({ + reference: e.rects.reference, + element: e.rects.popper, + placement: e.placement + }); + }, + data: {} + }; + var we = { + name: 'preventOverflow', + enabled: !0, + phase: 'main', + fn: function (t) { + var e = t.state, + n = t.options, + i = t.name, + o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 !== s && s, + l = n.boundary, + c = n.rootBoundary, + u = n.altBoundary, + f = n.padding, + d = n.tether, + p = void 0 === d || d, + h = n.tetherOffset, + m = void 0 === h ? 0 : h, + g = pe(e, { boundary: l, rootBoundary: c, padding: f, altBoundary: u }), + v = Lt(e.placement), + b = Kt(e.placement), + y = !b, + _ = qt(v), + w = 'x' === _ ? 'y' : 'x', + E = e.modifiersData.popperOffsets, + O = e.rects.reference, + x = e.rects.popper, + A = + 'function' == typeof m + ? m(Object.assign({}, e.rects, { placement: e.placement })) + : m, + C = + 'number' == typeof A + ? { mainAxis: A, altAxis: A } + : Object.assign({ mainAxis: 0, altAxis: 0 }, A), + T = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, + L = { x: 0, y: 0 }; + if (E) { + if (r) { + var S, + j = 'y' === _ ? J : et, + k = 'y' === _ ? Z : tt, + D = 'y' === _ ? 'height' : 'width', + P = E[_], + M = P + g[j], + N = P - g[k], + B = p ? -x[D] / 2 : 0, + I = b === ot ? O[D] : x[D], + F = b === ot ? -x[D] : -O[D], + H = e.elements.arrow, + $ = p && H ? Nt(H) : { width: 0, height: 0 }, + R = e.modifiersData['arrow#persistent'] + ? e.modifiersData['arrow#persistent'].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + z = R[j], + q = R[k], + W = Wt(0, O[D], $[D]), + V = y ? O[D] / 2 - B - W - z - C.mainAxis : I - W - z - C.mainAxis, + Y = y ? -O[D] / 2 + B + W + q + C.mainAxis : F + W + q + C.mainAxis, + U = e.elements.arrow && zt(e.elements.arrow), + K = U ? ('y' === _ ? U.clientTop || 0 : U.clientLeft || 0) : 0, + Q = null != (S = null == T ? void 0 : T[_]) ? S : 0, + X = P + Y - Q, + G = Wt(p ? jt(M, P + V - Q - K) : M, P, p ? St(N, X) : N); + (E[_] = G), (L[_] = G - P); + } + if (a) { + var nt, + it = 'x' === _ ? J : et, + rt = 'x' === _ ? Z : tt, + st = E[w], + at = 'y' === w ? 'height' : 'width', + lt = st + g[it], + ct = st - g[rt], + ut = -1 !== [J, et].indexOf(v), + ft = null != (nt = null == T ? void 0 : T[w]) ? nt : 0, + dt = ut ? lt : st - O[at] - x[at] - ft + C.altAxis, + pt = ut ? st + O[at] + x[at] - ft - C.altAxis : ct, + ht = + p && ut + ? (function (t, e, n) { + var i = Wt(t, e, n); + return i > n ? n : i; + })(dt, st, pt) + : Wt(p ? dt : lt, st, p ? pt : ct); + (E[w] = ht), (L[w] = ht - st); + } + e.modifiersData[i] = L; + } + }, + requiresIfExists: ['offset'] + }; + function Ee(t, e, n) { + void 0 === n && (n = !1); + var i, + o, + r = At(e), + s = + At(e) && + (function (t) { + var e = t.getBoundingClientRect(), + n = kt(e.width) / t.offsetWidth || 1, + i = kt(e.height) / t.offsetHeight || 1; + return 1 !== n || 1 !== i; + })(e), + a = Ht(e), + l = Mt(t, s, n), + c = { scrollLeft: 0, scrollTop: 0 }, + u = { x: 0, y: 0 }; + return ( + (r || (!r && !n)) && + (('body' !== Et(e) || se(a)) && + (c = + (i = e) !== Ot(i) && At(i) + ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop } + : oe(i)), + At(e) + ? (((u = Mt(e, !0)).x += e.clientLeft), (u.y += e.clientTop)) + : a && (u.x = re(a))), + { + x: l.left + c.scrollLeft - u.x, + y: l.top + c.scrollTop - u.y, + width: l.width, + height: l.height + } + ); + } + function Oe(t) { + var e = new Map(), + n = new Set(), + i = []; + function o(t) { + n.add(t.name), + [] + .concat(t.requires || [], t.requiresIfExists || []) + .forEach(function (t) { + if (!n.has(t)) { + var i = e.get(t); + i && o(i); + } + }), + i.push(t); + } + return ( + t.forEach(function (t) { + e.set(t.name, t); + }), + t.forEach(function (t) { + n.has(t.name) || o(t); + }), + i + ); + } + var xe = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; + function Ae() { + for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) + e[n] = arguments[n]; + return !e.some(function (t) { + return !(t && 'function' == typeof t.getBoundingClientRect); + }); + } + function Ce(t) { + void 0 === t && (t = {}); + var e = t, + n = e.defaultModifiers, + i = void 0 === n ? [] : n, + o = e.defaultOptions, + r = void 0 === o ? xe : o; + return function (t, e, n) { + void 0 === n && (n = r); + var o, + s, + a = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, xe, r), + modifiersData: {}, + elements: { reference: t, popper: e }, + attributes: {}, + styles: {} + }, + l = [], + c = !1, + u = { + state: a, + setOptions: function (n) { + var o = 'function' == typeof n ? n(a.options) : n; + f(), + (a.options = Object.assign({}, r, a.options, o)), + (a.scrollParents = { + reference: xt(t) + ? le(t) + : t.contextElement + ? le(t.contextElement) + : [], + popper: le(e) + }); + var s, + c, + d = (function (t) { + var e = Oe(t); + return wt.reduce(function (t, n) { + return t.concat( + e.filter(function (t) { + return t.phase === n; + }) + ); + }, []); + })( + ((s = [].concat(i, a.options.modifiers)), + (c = s.reduce(function (t, e) { + var n = t[e.name]; + return ( + (t[e.name] = n + ? Object.assign({}, n, e, { + options: Object.assign({}, n.options, e.options), + data: Object.assign({}, n.data, e.data) + }) + : e), + t + ); + }, {})), + Object.keys(c).map(function (t) { + return c[t]; + })) + ); + return ( + (a.orderedModifiers = d.filter(function (t) { + return t.enabled; + })), + a.orderedModifiers.forEach(function (t) { + var e = t.name, + n = t.options, + i = void 0 === n ? {} : n, + o = t.effect; + if ('function' == typeof o) { + var r = o({ state: a, name: e, instance: u, options: i }), + s = function () {}; + l.push(r || s); + } + }), + u.update() + ); + }, + forceUpdate: function () { + if (!c) { + var t = a.elements, + e = t.reference, + n = t.popper; + if (Ae(e, n)) { + (a.rects = { + reference: Ee(e, zt(n), 'fixed' === a.options.strategy), + popper: Nt(n) + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (t) { + return (a.modifiersData[t.name] = Object.assign( + {}, + t.data + )); + }); + for (var i = 0; i < a.orderedModifiers.length; i++) + if (!0 !== a.reset) { + var o = a.orderedModifiers[i], + r = o.fn, + s = o.options, + l = void 0 === s ? {} : s, + f = o.name; + 'function' == typeof r && + (a = + r({ state: a, options: l, name: f, instance: u }) || a); + } else (a.reset = !1), (i = -1); + } + } + }, + update: + ((o = function () { + return new Promise(function (t) { + u.forceUpdate(), t(a); + }); + }), + function () { + return ( + s || + (s = new Promise(function (t) { + Promise.resolve().then(function () { + (s = void 0), t(o()); + }); + })), + s + ); + }), + destroy: function () { + f(), (c = !0); + } + }; + if (!Ae(t, e)) return u; + function f() { + l.forEach(function (t) { + return t(); + }), + (l = []); + } + return ( + u.setOptions(n).then(function (t) { + !c && n.onFirstUpdate && n.onFirstUpdate(t); + }), + u + ); + }; + } + var Te = Ce(), + Le = Ce({ defaultModifiers: [Zt, _e, Gt, Tt] }), + Se = Ce({ defaultModifiers: [Zt, _e, Gt, Tt, ye, me, we, Ut, be] }), + je = Object.freeze({ + __proto__: null, + afterMain: vt, + afterRead: ht, + afterWrite: _t, + applyStyles: Tt, + arrow: Ut, + auto: nt, + basePlacements: it, + beforeMain: mt, + beforeRead: dt, + beforeWrite: bt, + bottom: Z, + clippingParents: st, + computeStyles: Gt, + createPopper: Se, + createPopperBase: Te, + createPopperLite: Le, + detectOverflow: pe, + end: rt, + eventListeners: Zt, + flip: me, + hide: be, + left: et, + main: gt, + modifierPhases: wt, + offset: ye, + placements: ft, + popper: lt, + popperGenerator: Ce, + popperOffsets: _e, + preventOverflow: we, + read: pt, + reference: ct, + right: tt, + start: ot, + top: J, + variationPlacements: ut, + viewport: at, + write: yt + }); + const ke = { + '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + De = new Set([ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]), + Pe = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + Me = (t, e) => { + const n = t.nodeName.toLowerCase(); + return e.includes(n) + ? !De.has(n) || Boolean(Pe.test(t.nodeValue)) + : e.filter((t) => t instanceof RegExp).some((t) => t.test(n)); + }; + const Ne = { + allowList: ke, + content: {}, + extraClass: '', + html: !1, + sanitize: !0, + sanitizeFn: null, + template: '
' + }, + Be = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }, + Ie = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class Fe extends M { + constructor(t) { + super(), (this._config = this._getConfig(t)); + } + static get Default() { + return Ne; + } + static get DefaultType() { + return Be; + } + static get NAME() { + return 'TemplateFactory'; + } + getContent() { + return Object.values(this._config.content) + .map((t) => this._resolvePossibleFunction(t)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(t) { + return ( + this._checkContent(t), + (this._config.content = { ...this._config.content, ...t }), + this + ); + } + toHtml() { + const t = document.createElement('div'); + t.innerHTML = this._maybeSanitize(this._config.template); + for (const [e, n] of Object.entries(this._config.content)) + this._setContent(t, n, e); + const e = t.children[0], + n = this._resolvePossibleFunction(this._config.extraClass); + return n && e.classList.add(...n.split(' ')), e; + } + _typeCheckConfig(t) { + super._typeCheckConfig(t), this._checkContent(t.content); + } + _checkContent(t) { + for (const [e, n] of Object.entries(t)) + super._typeCheckConfig({ selector: e, entry: n }, Ie); + } + _setContent(t, e, n) { + const i = I.findOne(n, t); + i && + ((e = this._resolvePossibleFunction(e)) + ? o(e) + ? this._putElementInTemplate(r(e), i) + : this._config.html + ? (i.innerHTML = this._maybeSanitize(e)) + : (i.textContent = e) + : i.remove()); + } + _maybeSanitize(t) { + return this._config.sanitize + ? (function (t, e, n) { + if (!t.length) return t; + if (n && 'function' == typeof n) return n(t); + const i = new window.DOMParser().parseFromString(t, 'text/html'), + o = [].concat(...i.body.querySelectorAll('*')); + for (const t of o) { + const n = t.nodeName.toLowerCase(); + if (!Object.keys(e).includes(n)) { + t.remove(); + continue; + } + const i = [].concat(...t.attributes), + o = [].concat(e['*'] || [], e[n] || []); + for (const e of i) Me(e, o) || t.removeAttribute(e.nodeName); + } + return i.body.innerHTML; + })(t, this._config.allowList, this._config.sanitizeFn) + : t; + } + _resolvePossibleFunction(t) { + return d(t, [this]); + } + _putElementInTemplate(t, e) { + if (this._config.html) return (e.innerHTML = ''), void e.append(t); + e.textContent = t.textContent; + } + } + const He = new Set(['sanitize', 'allowList', 'sanitizeFn']), + $e = 'fade', + Re = 'show', + ze = '.tooltip-inner', + qe = '.modal', + We = 'hide.bs.modal', + Ve = 'hover', + Ye = 'focus', + Ue = { + AUTO: 'auto', + TOP: 'top', + RIGHT: u() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: u() ? 'right' : 'left' + }, + Ke = { + allowList: ke, + animation: !0, + boundary: 'clippingParents', + container: !1, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: !1, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: '', + trigger: 'hover focus' + }, + Qe = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + class Xe extends N { + constructor(t, e) { + if (void 0 === je) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(t, e), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return Ke; + } + static get DefaultType() { + return Qe; + } + static get NAME() { + return 'tooltip'; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + S.off(this._element.closest(qe), We, this._hideModalHandler), + this._element.getAttribute('data-bs-original-title') && + this._element.setAttribute( + 'title', + this._element.getAttribute('data-bs-original-title') + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ('none' === this._element.style.display) + throw new Error('Please use show on visible elements'); + if (!this._isWithContent() || !this._isEnabled) return; + const t = S.trigger(this._element, this.constructor.eventName('show')), + e = ( + s(this._element) || this._element.ownerDocument.documentElement + ).contains(this._element); + if (t.defaultPrevented || !e) return; + this._disposePopper(); + const n = this._getTipElement(); + this._element.setAttribute('aria-describedby', n.getAttribute('id')); + const { container: i } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains(this.tip) || + (i.append(n), + S.trigger(this._element, this.constructor.eventName('inserted'))), + (this._popper = this._createPopper(n)), + n.classList.add(Re), + 'ontouchstart' in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + S.on(t, 'mouseover', a); + this._queueCallback( + () => { + S.trigger(this._element, this.constructor.eventName('shown')), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if (!this._isShown()) return; + if ( + S.trigger(this._element, this.constructor.eventName('hide')) + .defaultPrevented + ) + return; + if ( + (this._getTipElement().classList.remove(Re), + 'ontouchstart' in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + S.off(t, 'mouseover', a); + (this._activeTrigger.click = !1), + (this._activeTrigger[Ye] = !1), + (this._activeTrigger[Ve] = !1), + (this._isHovered = null); + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute('aria-describedby'), + S.trigger(this._element, this.constructor.eventName('hidden'))); + }, + this.tip, + this._isAnimated() + ); + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(t) { + const e = this._getTemplateFactory(t).toHtml(); + if (!e) return null; + e.classList.remove($e, Re), + e.classList.add(`bs-${this.constructor.NAME}-auto`); + const n = ((t) => { + do { + t += Math.floor(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + })(this.constructor.NAME).toString(); + return ( + e.setAttribute('id', n), this._isAnimated() && e.classList.add($e), e + ); + } + setContent(t) { + (this._newContent = t), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(t) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(t) + : (this._templateFactory = new Fe({ + ...this._config, + content: t, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ) + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { [ze]: this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute('data-bs-original-title') + ); + } + _initializeOnDelegatedTarget(t) { + return this.constructor.getOrCreateInstance( + t.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || (this.tip && this.tip.classList.contains($e)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains(Re); + } + _createPopper(t) { + const e = d(this._config.placement, [this, t, this._element]), + n = Ue[e.toUpperCase()]; + return Se(this._element, t, this._getPopperConfig(n)); + } + _getOffset() { + const { offset: t } = this._config; + return 'string' == typeof t + ? t.split(',').map((t) => Number.parseInt(t, 10)) + : 'function' == typeof t + ? (e) => t(e, this._element) + : t; + } + _resolvePossibleFunction(t) { + return d(t, [this._element]); + } + _getPopperConfig(t) { + const e = { + placement: t, + modifiers: [ + { + name: 'flip', + options: { fallbackPlacements: this._config.fallbackPlacements } + }, + { name: 'offset', options: { offset: this._getOffset() } }, + { + name: 'preventOverflow', + options: { boundary: this._config.boundary } + }, + { + name: 'arrow', + options: { element: `.${this.constructor.NAME}-arrow` } + }, + { + name: 'preSetPlacement', + enabled: !0, + phase: 'beforeMain', + fn: (t) => { + this._getTipElement().setAttribute( + 'data-popper-placement', + t.state.placement + ); + } + } + ] + }; + return { ...e, ...d(this._config.popperConfig, [e]) }; + } + _setListeners() { + const t = this._config.trigger.split(' '); + for (const e of t) + if ('click' === e) + S.on( + this._element, + this.constructor.eventName('click'), + this._config.selector, + (t) => { + this._initializeOnDelegatedTarget(t).toggle(); + } + ); + else if ('manual' !== e) { + const t = + e === Ve + ? this.constructor.eventName('mouseenter') + : this.constructor.eventName('focusin'), + n = + e === Ve + ? this.constructor.eventName('mouseleave') + : this.constructor.eventName('focusout'); + S.on(this._element, t, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger['focusin' === t.type ? Ye : Ve] = !0), e._enter(); + }), + S.on(this._element, n, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger['focusout' === t.type ? Ye : Ve] = + e._element.contains(t.relatedTarget)), + e._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + S.on(this._element.closest(qe), We, this._hideModalHandler); + } + _fixTitle() { + const t = this._element.getAttribute('title'); + t && + (this._element.getAttribute('aria-label') || + this._element.textContent.trim() || + this._element.setAttribute('aria-label', t), + this._element.setAttribute('data-bs-original-title', t), + this._element.removeAttribute('title')); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(t, e) { + clearTimeout(this._timeout), (this._timeout = setTimeout(t, e)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(t) { + const e = P.getDataAttributes(this._element); + for (const t of Object.keys(e)) He.has(t) && delete e[t]; + return ( + (t = { ...e, ...('object' == typeof t && t ? t : {}) }), + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return ( + (t.container = !1 === t.container ? document.body : r(t.container)), + 'number' == typeof t.delay && + (t.delay = { show: t.delay, hide: t.delay }), + 'number' == typeof t.title && (t.title = t.title.toString()), + 'number' == typeof t.content && (t.content = t.content.toString()), + t + ); + } + _getDelegateConfig() { + const t = {}; + for (const [e, n] of Object.entries(this._config)) + this.constructor.Default[e] !== n && (t[e] = n); + return (t.selector = !1), (t.trigger = 'manual'), t; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Xe.getOrCreateInstance(this, t); + if ('string' == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + f(Xe); + const Ge = 'data-src', + Je = 'data-lqip', + Ze = { SHIMMER: 'shimmer', BLUR: 'blur' }; + function tn(t) { + this.parentElement.classList.remove(t); + } + function en() { + this.complete && + (this.hasAttribute(Je) + ? tn.call(this, Ze.BLUR) + : tn.call(this, Ze.SHIMMER)); + } + function nn() { + const t = this.getAttribute(Ge); + this.setAttribute('src', encodeURI(t)), this.removeAttribute(Ge); + } + class on { + static get attrTimestamp() { + return 'data-ts'; + } + static get attrDateFormat() { + return 'data-df'; + } + static get locale() { + return document.documentElement.getAttribute('lang').substring(0, 2); + } + static getTimestamp(t) { + return Number(t.getAttribute(this.attrTimestamp)); + } + static getDateFormat(t) { + return t.getAttribute(this.attrDateFormat); + } + } + function rn(t, e, n) { + if ('function' == typeof t ? t === e : t.has(e)) + return arguments.length < 3 ? e : n; + throw new TypeError('Private element is not present on this object'); + } + function sn(t, e, n) { + return ( + (e = (function (t) { + var e = (function (t, e) { + if ('object' != typeof t || !t) return t; + var n = t[Symbol.toPrimitive]; + if (void 0 !== n) { + var i = n.call(t, e || 'default'); + if ('object' != typeof i) return i; + throw new TypeError('@@toPrimitive must return a primitive value.'); + } + return ('string' === e ? String : Number)(t); + })(t, 'string'); + return 'symbol' == typeof e ? e : e + ''; + })(e)) in t + ? Object.defineProperty(t, e, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (t[e] = n), + t + ); + } + var an; + const ln = document.getElementById('toc-bar'), + cn = document.getElementById('toc-solo-trigger'), + un = document.getElementsByClassName('toc-trigger'), + fn = document.getElementById('toc-popup'), + dn = document.getElementById('toc-popup-close'), + pn = 'overflow-hidden', + hn = 'closing'; + class mn { + static initBar() { + new IntersectionObserver( + (t) => { + t.forEach((t) => { + ln.classList.toggle('invisible', t.isIntersecting); + }); + }, + { rootMargin: `-${rn(mn, this, vn)._}px 0px 0px 0px` } + ).observe(cn), + (gn._ = rn(mn, this, !1)); + } + static listenAnchors() { + [...document.getElementsByClassName('toc-link')].forEach((t) => { + t.onclick = () => this.hidePopup(); + }); + } + static refresh() { + rn(mn, this, gn)._ && this.initComponents(), + tocbot.refresh(this.options), + this.listenAnchors(); + } + static get popupOpened() { + return fn.open; + } + static showPopup() { + this.lockScroll(!0), fn.showModal(); + fn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' }); + } + static hidePopup() { + fn.toggleAttribute(hn), + fn.addEventListener( + 'animationend', + () => { + fn.toggleAttribute(hn), fn.close(); + }, + { once: !0 } + ), + this.lockScroll(!1); + } + static lockScroll(t) { + document.documentElement.classList.toggle(pn, t), + document.body.classList.toggle(pn, t); + } + static clickBackdrop(t) { + if (fn.hasAttribute(hn)) return; + const e = t.target.getBoundingClientRect(); + (t.clientX < e.left || + t.clientX > e.right || + t.clientY < e.top || + t.clientY > e.bottom) && + this.hidePopup(); + } + static initComponents() { + this.initBar(), + [...un].forEach((t) => { + t.onclick = () => this.showPopup(); + }), + (fn.onclick = (t) => this.clickBackdrop(t)), + (dn.onclick = () => this.hidePopup()), + (fn.oncancel = (t) => { + t.preventDefault(), this.hidePopup(); + }); + } + static init() { + tocbot.init(this.options), this.listenAnchors(), this.initComponents(); + } + } + var gn = { _: !0 }, + vn = { _: 48 }; + sn(mn, 'options', { + tocSelector: '#toc-popup-content', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + collapseDepth: 4, + headingsOffset: rn((an = mn), an, vn)._ + }); + sn( + class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + document.getElementById('toc-wrapper') && tocbot.init(this.options); + } + }, + 'options', + { + tocSelector: '#toc', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + headingsOffset: 32 + } + ), + matchMedia('(min-width: 1200px)'), + Theme.getThemeMapper('default', 'dark'); + const bn = document.getElementById('mode-toggle'); + const yn = document.getElementById('sidebar'), + _n = document.getElementById('sidebar-trigger'), + wn = document.getElementById('mask'); + class En { + static toggle() { + (On._ = rn(En, this, !rn(En, this, On)._)), + document.body.toggleAttribute('sidebar-display', rn(En, this, On)._), + yn.classList.toggle('z-2', rn(En, this, On)._), + wn.classList.toggle('d-none', !rn(En, this, On)._); + } + } + var On = { _: !1 }; + const xn = document.getElementById('sidebar-trigger'), + An = document.getElementById('search-trigger'), + Cn = document.getElementById('search-cancel'), + Tn = document.querySelectorAll('#main-wrapper>.container>.row'), + Ln = document.getElementById('topbar-title'), + Sn = document.getElementById('search'), + jn = document.getElementById('search-result-wrapper'), + kn = document.getElementById('search-results'), + Dn = document.getElementById('search-input'), + Pn = document.getElementById('search-hints'), + Mn = 'd-block', + Nn = 'd-none', + Bn = 'input-focus', + In = 'd-flex'; + class Fn { + static on() { + xn.classList.add(Nn), + Ln.classList.add(Nn), + An.classList.add(Nn), + Sn.classList.add(In), + Cn.classList.add(Mn); + } + static off() { + Cn.classList.remove(Mn), + Sn.classList.remove(In), + xn.classList.remove(Nn), + Ln.classList.remove(Nn), + An.classList.remove(Nn); + } + } + class Hn { + static on() { + this.resultVisible || + (jn.classList.remove(Nn), + Tn.forEach((t) => { + t.classList.add(Nn); + }), + (this.resultVisible = !0)); + } + static off() { + this.resultVisible && + ((kn.innerHTML = ''), + Pn.classList.contains(Nn) && Pn.classList.remove(Nn), + jn.classList.add(Nn), + Tn.forEach((t) => { + t.classList.remove(Nn); + }), + (Dn.textContent = ''), + (this.resultVisible = !1)); + } + } + function $n() { + return Cn.classList.contains(Mn); + } + sn(Hn, 'resultVisible', !1), + (function () { + const t = document.querySelectorAll('article img'); + if (0 === t.length) return; + t.forEach((t) => { + t.addEventListener('load', en); + }), + document + .querySelectorAll('article img[loading="lazy"]') + .forEach((t) => { + t.complete && tn.call(t, Ze.SHIMMER); + }); + const e = document.querySelectorAll(`article img[${Je}="true"]`); + e.length && + e.forEach((t) => { + nn.call(t); + }); + })(), + dayjs.locale(on.locale), + dayjs.extend(window.dayjs_plugin_localizedFormat), + document.querySelectorAll(`[${on.attrTimestamp}]`).forEach((t) => { + const e = dayjs.unix(on.getTimestamp(t)), + n = e.format(on.getDateFormat(t)); + if ( + ((t.textContent = n), + t.removeAttribute(on.attrTimestamp), + t.removeAttribute(on.attrDateFormat), + t.hasAttribute('data-bs-toggle') && + 'tooltip' === t.getAttribute('data-bs-toggle')) + ) { + const n = e.format('llll'); + t.setAttribute('data-bs-title', n); + } + }), + (_n.onclick = wn.onclick = () => En.toggle()), + An.addEventListener('click', () => { + Fn.on(), Hn.on(), Dn.focus(); + }), + Cn.addEventListener('click', () => { + Fn.off(), Hn.off(); + }), + Dn.addEventListener('focus', () => { + Sn.classList.add(Bn); + }), + Dn.addEventListener('focusout', () => { + Sn.classList.remove(Bn); + }), + Dn.addEventListener('input', () => { + '' === Dn.value + ? $n() + ? Pn.classList.remove(Nn) + : Hn.off() + : (Hn.on(), $n() && Pn.classList.add(Nn)); + }), + bn && + bn.addEventListener('click', () => { + Theme.flip(); + }), + (function () { + const t = document.getElementById('back-to-top'); + window.addEventListener('scroll', () => { + window.scrollY > 50 + ? t.classList.add('show') + : t.classList.remove('show'); + }), + t.addEventListener('click', () => { + window.scrollTo({ top: 0 }); + }); + })(), + [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map( + (t) => new Xe(t) + ); +})(); diff --git a/assets/js/dist/misc.min.js b/assets/js/dist/misc.min.js index 6f7ecdc1889..f55284d6f0c 100644 --- a/assets/js/dist/misc.min.js +++ b/assets/js/dist/misc.min.js @@ -1,4 +1,2859 @@ /*! * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ */ -!function(){"use strict";const t=new Map;var e={set(e,n,i){t.has(e)||t.set(e,new Map);const o=t.get(e);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(e,n)=>t.has(e)&&t.get(e).get(n)||null,remove(e,n){if(!t.has(e))return;const i=t.get(e);i.delete(n),0===i.size&&t.delete(e)}};const n="transitionend",i=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(i(t)):null,s=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?s(t.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,f=t=>{var e;e=()=>{const e=l();if(e){const n=t.NAME,i=e.fn[n];e.fn[n]=t.jQueryInterface,e.fn[n].Constructor=t,e.fn[n].noConflict=()=>(e.fn[n]=i,t.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of c)t()})),c.push(e)):e()},d=function(t){let e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;return"function"==typeof t?t(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):e},p=function(t,e){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void d(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:n}=window.getComputedStyle(t);const i=Number.parseFloat(e),o=Number.parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(n))):0})(e)+5;let o=!1;const r=i=>{let{target:s}=i;s===e&&(o=!0,e.removeEventListener(n,r),d(t))};e.addEventListener(n,r),setTimeout((()=>{o||e.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,v={};let b=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(t,e){return e&&`${e}::${b++}`||t.uidEvent||b++}function E(t){const e=w(t);return t.uidEvent=e,v[e]=v[e]||{},v[e]}function O(t,e){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===n))}function x(t,e,n){const i="string"==typeof e,o=i?n:e||n;let r=L(t);return _.has(r)||(r=t),[i,o,r]}function A(t,e,n,i,o){if("string"!=typeof e||!t)return;let[r,s,a]=x(e,n,i);if(e in y){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};s=t(s)}const l=E(t),c=l[a]||(l[a]={}),u=O(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const f=w(s,e.replace(h,"")),d=r?function(t,e,n){return function i(o){const r=t.querySelectorAll(e);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return j(o,{delegateTarget:s}),i.oneOff&&S.off(t,o.type,e,n),n.apply(s,[o])}}(t,n,s):function(t,e){return function n(i){return j(i,{delegateTarget:t}),n.oneOff&&S.off(t,i.type,e),e.apply(t,[i])}}(t,s);d.delegationSelector=r?n:null,d.callable=s,d.oneOff=o,d.uidEvent=f,c[f]=d,t.addEventListener(a,d,r)}function C(t,e,n,i,o){const r=O(e[n],i,o);r&&(t.removeEventListener(n,r,Boolean(o)),delete e[n][r.uidEvent])}function T(t,e,n,i){const o=e[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(t,e,n,s.callable,s.delegationSelector)}function L(t){return t=t.replace(m,""),y[t]||t}const S={on(t,e,n,i){A(t,e,n,i,!1)},one(t,e,n,i){A(t,e,n,i,!0)},off(t,e,n,i){if("string"!=typeof e||!t)return;const[o,r,s]=x(e,n,i),a=s!==e,l=E(t),c=l[s]||{},u=e.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))T(t,l,n,e.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!e.includes(o)||C(t,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(t,l,s,r,o?n:null)}},trigger(t,e,n){if("string"!=typeof e||!t)return null;const i=l();let o=null,r=!0,s=!0,a=!1;e!==L(e)&&i&&(o=i.Event(e,n),i(t).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=j(new Event(e,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&t.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function j(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(e))try{t[n]=i}catch{Object.defineProperty(t,n,{configurable:!0,get:()=>i})}return t}function k(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch{return t}}function D(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const P={setDataAttribute(t,e,n){t.setAttribute(`data-bs-${D(e)}`,n)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${D(e)}`)},getDataAttributes(t){if(!t)return{};const e={},n=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),e[n]=k(t.dataset[i])}return e},getDataAttribute:(t,e)=>k(t.getAttribute(`data-bs-${D(e)}`))};class M{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const n=o(e)?P.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(e)?P.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(e)){const e=t[i],s=o(e)?"element":null==(n=e)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class N extends M{constructor(t,n){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(n),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e){p(t,e,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let n=t.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),e=n&&"#"!==n?n.trim():null}return e?e.split(",").map((t=>i(t))).join(","):null},F={find(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(e,t))},findOne(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(e,t)},children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const n=[];let i=t.parentNode.closest(e);for(;i;)n.push(i),i=i.parentNode.closest(e);return n},prev(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return[n];n=n.previousElementSibling}return[]},next(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return[n];n=n.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!(t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")))(t)&&(t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),n=t.closest("details:not([open])");if(!n)return e;if(n!==t){const e=t.closest("summary");if(e&&e.parentNode!==n)return!1;if(null===e)return!1}return e})(t)))},getSelectorFromElement(t){const e=B(t);return e&&F.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?F.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?F.find(e):[]}},I=".bs.collapse",H=`show${I}`,$=`shown${I}`,z=`hide${I}`,W=`hidden${I}`,R=`click${I}.data-api`,q="show",V="collapse",Y="collapsing",U=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends N{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const n=F.find(K);for(const t of n){const e=F.getSelectorFromElement(t),n=F.find(e).filter((t=>t===this._element));null!==e&&n.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>G.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(V),this._element.classList.add(Y),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V,q),this._element.style[e]="",S.trigger(this._element,$)}),this._element,!0),this._element.style[e]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,z).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,this._element.offsetHeight,this._element.classList.add(Y),this._element.classList.remove(V,q);for(const t of this._triggerArray){const e=F.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0;this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Y),this._element.classList.add(V),S.trigger(this._element,W)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(q)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(K);for(const e of t){const t=F.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=F.find(U,this._config.parent);return F.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const n of t)n.classList.toggle("collapsed",!e),n.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===n[t])throw new TypeError(`No method named "${t}"`);n[t]()}}))}}S.on(document,R,K,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of F.getMultipleElementsFromSelector(this))G.getOrCreateInstance(t,{toggle:!1}).toggle()})),f(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",tt="right",et="left",nt="auto",it=[J,Z,tt,et],ot="start",rt="end",st="clippingParents",at="viewport",lt="popper",ct="reference",ut=it.reduce((function(t,e){return t.concat([e+"-"+ot,e+"-"+rt])}),[]),ft=[].concat(it,[nt]).reduce((function(t,e){return t.concat([e,e+"-"+ot,e+"-"+rt])}),[]),dt="beforeRead",pt="read",ht="afterRead",mt="beforeMain",gt="main",vt="afterMain",bt="beforeWrite",yt="write",_t="afterWrite",wt=[dt,pt,ht,mt,gt,vt,bt,yt,_t];function Et(t){return t?(t.nodeName||"").toLowerCase():null}function Ot(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function xt(t){return t instanceof Ot(t).Element||t instanceof Element}function At(t){return t instanceof Ot(t).HTMLElement||t instanceof HTMLElement}function Ct(t){return"undefined"!=typeof ShadowRoot&&(t instanceof Ot(t).ShadowRoot||t instanceof ShadowRoot)}var Tt={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];At(o)&&Et(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});At(i)&&Et(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]};function Lt(t){return t.split("-")[0]}var St=Math.max,jt=Math.min,kt=Math.round;function Dt(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Pt(){return!/^((?!chrome|android).)*safari/i.test(Dt())}function Mt(t,e,n){void 0===e&&(e=!1),void 0===n&&(n=!1);var i=t.getBoundingClientRect(),o=1,r=1;e&&At(t)&&(o=t.offsetWidth>0&&kt(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&kt(i.height)/t.offsetHeight||1);var s=(xt(t)?Ot(t):window).visualViewport,a=!Pt()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:c,right:l+u,bottom:c+f,left:l,x:l,y:c}}function Nt(t){var e=Mt(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function Bt(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Ct(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ft(t){return Ot(t).getComputedStyle(t)}function It(t){return["table","td","th"].indexOf(Et(t))>=0}function Ht(t){return((xt(t)?t.ownerDocument:t.document)||window.document).documentElement}function $t(t){return"html"===Et(t)?t:t.assignedSlot||t.parentNode||(Ct(t)?t.host:null)||Ht(t)}function zt(t){return At(t)&&"fixed"!==Ft(t).position?t.offsetParent:null}function Wt(t){for(var e=Ot(t),n=zt(t);n&&It(n)&&"static"===Ft(n).position;)n=zt(n);return n&&("html"===Et(n)||"body"===Et(n)&&"static"===Ft(n).position)?e:n||function(t){var e=/firefox/i.test(Dt());if(/Trident/i.test(Dt())&&At(t)&&"fixed"===Ft(t).position)return null;var n=$t(t);for(Ct(n)&&(n=n.host);At(n)&&["html","body"].indexOf(Et(n))<0;){var i=Ft(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}function Rt(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function qt(t,e,n){return St(t,jt(e,n))}function Vt(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Yt(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}var Ut={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Lt(n.placement),l=Rt(a),c=[et,tt].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(t,e){return Vt("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Yt(t,it))}(o.padding,n),f=Nt(r),d="y"===l?J:et,p="y"===l?Z:tt,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=Wt(r),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=h/2-m/2,y=u[d],_=v-f[c]-u[p],w=v/2-f[c]/2+b,E=qt(y,w,_),O=l;n.modifiersData[i]=((e={})[O]=E,e.centerOffset=E-w,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&Bt(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Kt(t){return t.split("-")[1]}var Qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xt(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,s=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,f=t.isFixed,d=s.x,p=void 0===d?0:d,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var v=s.hasOwnProperty("x"),b=s.hasOwnProperty("y"),y=et,_=J,w=window;if(c){var E=Wt(n),O="clientHeight",x="clientWidth";if(E===Ot(n)&&"static"!==Ft(E=Ht(n)).position&&"absolute"===a&&(O="scrollHeight",x="scrollWidth"),o===J||(o===et||o===tt)&&r===rt)_=Z,m-=(f&&E===w&&w.visualViewport?w.visualViewport.height:E[O])-i.height,m*=l?1:-1;if(o===et||(o===J||o===Z)&&r===rt)y=tt,p-=(f&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var A,C=Object.assign({position:a},c&&Qt),T=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:kt(n*o)/o||0,y:kt(i*o)/o||0}}({x:p,y:m},Ot(n)):{x:p,y:m};return p=T.x,m=T.y,l?Object.assign({},C,((A={})[_]=b?"0":"",A[y]=v?"0":"",A.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",A)):Object.assign({},C,((e={})[_]=b?m+"px":"",e[y]=v?p+"px":"",e.transform="",e))}var Gt={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Lt(e.placement),variation:Kt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,Xt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,Xt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},Jt={passive:!0};var Zt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,n=t.instance,i=t.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ot(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&c.forEach((function(t){t.addEventListener("scroll",n.update,Jt)})),a&&l.addEventListener("resize",n.update,Jt),function(){r&&c.forEach((function(t){t.removeEventListener("scroll",n.update,Jt)})),a&&l.removeEventListener("resize",n.update,Jt)}},data:{}},te={left:"right",right:"left",bottom:"top",top:"bottom"};function ee(t){return t.replace(/left|right|bottom|top/g,(function(t){return te[t]}))}var ne={start:"end",end:"start"};function ie(t){return t.replace(/start|end/g,(function(t){return ne[t]}))}function oe(t){var e=Ot(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return Mt(Ht(t)).left+oe(t).scrollLeft}function se(t){var e=Ft(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ae(t){return["html","body","#document"].indexOf(Et(t))>=0?t.ownerDocument.body:At(t)&&se(t)?t:ae($t(t))}function le(t,e){var n;void 0===e&&(e=[]);var i=ae(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ot(i),s=o?[r].concat(r.visualViewport||[],se(i)?i:[]):i,a=e.concat(s);return o?a:a.concat(le($t(s)))}function ce(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ue(t,e,n){return e===at?ce(function(t,e){var n=Ot(t),i=Ht(t),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=Pt();(c||!c&&"fixed"===e)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+re(t),y:l}}(t,n)):xt(e)?function(t,e){var n=Mt(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):ce(function(t){var e,n=Ht(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=St(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=St(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+re(t),l=-i.scrollTop;return"rtl"===Ft(o||n).direction&&(a+=St(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Ht(t)))}function fe(t,e,n,i){var o="clippingParents"===e?function(t){var e=le($t(t)),n=["absolute","fixed"].indexOf(Ft(t).position)>=0&&At(t)?Wt(t):t;return xt(n)?e.filter((function(t){return xt(t)&&Bt(t,n)&&"body"!==Et(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(e,n){var o=ue(t,n,i);return e.top=St(o.top,e.top),e.right=jt(o.right,e.right),e.bottom=jt(o.bottom,e.bottom),e.left=St(o.left,e.left),e}),ue(t,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function de(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Lt(o):null,s=o?Kt(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:e={x:a,y:n.y-i.height};break;case Z:e={x:a,y:n.y+n.height};break;case tt:e={x:n.x+n.width,y:l};break;case et:e={x:n.x-i.width,y:l};break;default:e={x:n.x,y:n.y}}var c=r?Rt(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case ot:e[c]=e[c]-(n[u]/2-i[u]/2);break;case rt:e[c]=e[c]+(n[u]/2-i[u]/2)}}return e}function pe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,s=void 0===r?t.strategy:r,a=n.boundary,l=void 0===a?st:a,c=n.rootBoundary,u=void 0===c?at:c,f=n.elementContext,d=void 0===f?lt:f,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,v=Vt("number"!=typeof g?g:Yt(g,it)),b=d===lt?ct:lt,y=t.rects.popper,_=t.elements[h?b:d],w=fe(xt(_)?_:_.contextElement||Ht(t.elements.popper),l,u,s),E=Mt(t.elements.reference),O=de({reference:E,element:y,placement:o}),x=ce(Object.assign({},y,O)),A=d===lt?x:E,C={top:w.top-A.top+v.top,bottom:A.bottom-w.bottom+v.bottom,left:w.left-A.left+v.left,right:A.right-w.right+v.right},T=t.modifiersData.offset;if(d===lt&&T){var L=T[o];Object.keys(C).forEach((function(t){var e=[tt,Z].indexOf(t)>=0?1:-1,n=[J,Z].indexOf(t)>=0?"y":"x";C[t]+=L[n]*e}))}return C}function he(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?ft:l,u=Kt(i),f=u?a?ut:ut.filter((function(t){return Kt(t)===u})):it,d=f.filter((function(t){return c.indexOf(t)>=0}));0===d.length&&(d=f);var p=d.reduce((function(e,n){return e[n]=pe(t,{placement:n,boundary:o,rootBoundary:r,padding:s})[Lt(n)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}var me={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,f=n.rootBoundary,d=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=e.options.placement,v=Lt(g),b=l||(v===g||!h?[ee(g)]:function(t){if(Lt(t)===nt)return[];var e=ee(t);return[ie(t),e,ie(e)]}(g)),y=[g].concat(b).reduce((function(t,n){return t.concat(Lt(n)===nt?he(e,{placement:n,boundary:u,rootBoundary:f,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=e.rects.reference,w=e.rects.popper,E=new Map,O=!0,x=y[0],A=0;A=0,j=S?"width":"height",k=pe(e,{placement:C,boundary:u,rootBoundary:f,altBoundary:d,padding:c}),D=S?L?tt:et:L?Z:J;_[j]>w[j]&&(D=ee(D));var P=ee(D),M=[];if(r&&M.push(k[T]<=0),a&&M.push(k[D]<=0,k[P]<=0),M.every((function(t){return t}))){x=C,O=!1;break}E.set(C,M)}if(O)for(var N=function(t){var e=y.find((function(e){var n=E.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return x=e,"break"},B=h?3:1;B>0;B--){if("break"===N(B))break}e.placement!==x&&(e.modifiersData[i]._skip=!0,e.placement=x,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function ge(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function ve(t){return[J,tt,Z,et].some((function(e){return t[e]>=0}))}var be={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=pe(e,{elementContext:"reference"}),a=pe(e,{altBoundary:!0}),l=ge(s,i),c=ge(a,o,r),u=ve(l),f=ve(c);e.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}};var ye={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,s=ft.reduce((function(t,n){return t[n]=function(t,e,n){var i=Lt(t),o=[et,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[et,tt].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,e.rects,r),t}),{}),a=s[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[i]=s}};var _e={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=de({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})},data:{}};var we={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,f=n.padding,d=n.tether,p=void 0===d||d,h=n.tetherOffset,m=void 0===h?0:h,g=pe(e,{boundary:l,rootBoundary:c,padding:f,altBoundary:u}),v=Lt(e.placement),b=Kt(e.placement),y=!b,_=Rt(v),w="x"===_?"y":"x",E=e.modifiersData.popperOffsets,O=e.rects.reference,x=e.rects.popper,A="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,C="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),T=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(E){if(r){var S,j="y"===_?J:et,k="y"===_?Z:tt,D="y"===_?"height":"width",P=E[_],M=P+g[j],N=P-g[k],B=p?-x[D]/2:0,F=b===ot?O[D]:x[D],I=b===ot?-x[D]:-O[D],H=e.elements.arrow,$=p&&H?Nt(H):{width:0,height:0},z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},W=z[j],R=z[k],q=qt(0,O[D],$[D]),V=y?O[D]/2-B-q-W-C.mainAxis:F-q-W-C.mainAxis,Y=y?-O[D]/2+B+q+R+C.mainAxis:I+q+R+C.mainAxis,U=e.elements.arrow&&Wt(e.elements.arrow),K=U?"y"===_?U.clientTop||0:U.clientLeft||0:0,Q=null!=(S=null==T?void 0:T[_])?S:0,X=P+Y-Q,G=qt(p?jt(M,P+V-Q-K):M,P,p?St(N,X):N);E[_]=G,L[_]=G-P}if(a){var nt,it="x"===_?J:et,rt="x"===_?Z:tt,st=E[w],at="y"===w?"height":"width",lt=st+g[it],ct=st-g[rt],ut=-1!==[J,et].indexOf(v),ft=null!=(nt=null==T?void 0:T[w])?nt:0,dt=ut?lt:st-O[at]-x[at]-ft+C.altAxis,pt=ut?st+O[at]+x[at]-ft-C.altAxis:ct,ht=p&&ut?function(t,e,n){var i=qt(t,e,n);return i>n?n:i}(dt,st,pt):qt(p?dt:lt,st,p?pt:ct);E[w]=ht,L[w]=ht-st}e.modifiersData[i]=L}},requiresIfExists:["offset"]};function Ee(t,e,n){void 0===n&&(n=!1);var i,o,r=At(e),s=At(e)&&function(t){var e=t.getBoundingClientRect(),n=kt(e.width)/t.offsetWidth||1,i=kt(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),a=Ht(e),l=Mt(t,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Et(e)||se(a))&&(c=(i=e)!==Ot(i)&&At(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),At(e)?((u=Mt(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):a&&(u.x=re(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function Oe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var xe={placement:"bottom",modifiers:[],strategy:"absolute"};function Ae(){for(var t=arguments.length,e=new Array(t),n=0;n{const n=t.nodeName.toLowerCase();return e.includes(n)?!De.has(n)||Boolean(Pe.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(n)))};const Ne={allowList:ke,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Be={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Fe={entry:"(string|element|function|null)",selector:"(string|element)"};class Ie extends M{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Ne}static get DefaultType(){return Be}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,n]of Object.entries(this._config.content))this._setContent(t,n,e);const e=t.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&e.classList.add(...n.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,n]of Object.entries(t))super._typeCheckConfig({selector:e,entry:n},Fe)}_setContent(t,e,n){const i=F.findOne(n,t);i&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),i):this._config.html?i.innerHTML=this._maybeSanitize(e):i.textContent=e:i.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,n){if(!t.length)return t;if(n&&"function"==typeof n)return n(t);const i=(new window.DOMParser).parseFromString(t,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const t of o){const n=t.nodeName.toLowerCase();if(!Object.keys(e).includes(n)){t.remove();continue}const i=[].concat(...t.attributes),o=[].concat(e["*"]||[],e[n]||[]);for(const e of i)Me(e,o)||t.removeAttribute(e.nodeName)}return i.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return d(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const He=new Set(["sanitize","allowList","sanitizeFn"]),$e="fade",ze="show",We=".tooltip-inner",Re=".modal",qe="hide.bs.modal",Ve="hover",Ye="focus",Ue={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Ke={allowList:ke,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qe={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xe extends N{constructor(t,e){if(void 0===je)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Ke}static get DefaultType(){return Qe}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Re),qe,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=S.trigger(this._element,this.constructor.eventName("show")),e=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.on(t,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove(ze),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))S.off(t,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove($e,ze),e.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",n),this._isAnimated()&&e.classList.add($e),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Ie({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[We]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains($e)}_isShown(){return this.tip&&this.tip.classList.contains(ze)}_createPopper(t){const e=d(this._config.placement,[this,t,this._element]),n=Ue[e.toUpperCase()];return Se(this._element,t,this._getPopperConfig(n))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return d(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...d(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===Ve?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=e===Ve?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?Ye:Ve]=!0,e._enter()})),S.on(this._element,n,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?Ye:Ve]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Re),qe,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=P.getDataAttributes(this._element);for(const t of Object.keys(e))He.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,n]of Object.entries(this._config))this.constructor.Default[e]!==n&&(t[e]=n);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=Xe.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}f(Xe);class Ge{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(t){return Number(t.getAttribute(this.attrTimestamp))}static getDateFormat(t){return t.getAttribute(this.attrDateFormat)}}function Je(t,e,n){if("function"==typeof t?t===e:t.has(e))return arguments.length<3?e:n;throw new TypeError("Private element is not present on this object")}function Ze(t,e,n){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,e||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var tn;const en=document.getElementById("toc-bar"),nn=document.getElementById("toc-solo-trigger"),on=document.getElementsByClassName("toc-trigger"),rn=document.getElementById("toc-popup"),sn=document.getElementById("toc-popup-close"),an="overflow-hidden",ln="closing";class cn{static initBar(){new IntersectionObserver((t=>{t.forEach((t=>{en.classList.toggle("invisible",t.isIntersecting)}))}),{rootMargin:`-${Je(cn,this,fn)._}px 0px 0px 0px`}).observe(nn),un._=Je(cn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((t=>{t.onclick=()=>this.hidePopup()}))}static refresh(){Je(cn,this,un)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return rn.open}static showPopup(){this.lockScroll(!0),rn.showModal();rn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){rn.toggleAttribute(ln),rn.addEventListener("animationend",(()=>{rn.toggleAttribute(ln),rn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(t){document.documentElement.classList.toggle(an,t),document.body.classList.toggle(an,t)}static clickBackdrop(t){if(rn.hasAttribute(ln))return;const e=t.target.getBoundingClientRect();(t.clientXe.right||t.clientYe.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...on].forEach((t=>{t.onclick=()=>this.showPopup()})),rn.onclick=t=>this.clickBackdrop(t),sn.onclick=()=>this.hidePopup(),rn.oncancel=t=>{t.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var un={_:!0},fn={_:48};Ze(cn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:Je(tn=cn,tn,fn)._});Ze(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)"),Theme.getThemeMapper("default","dark");const dn=document.getElementById("mode-toggle");const pn=document.getElementById("sidebar"),hn=document.getElementById("sidebar-trigger"),mn=document.getElementById("mask");class gn{static toggle(){vn._=Je(gn,this,!Je(gn,this,vn)._),document.body.toggleAttribute("sidebar-display",Je(gn,this,vn)._),pn.classList.toggle("z-2",Je(gn,this,vn)._),mn.classList.toggle("d-none",!Je(gn,this,vn)._)}}var vn={_:!1};const bn=document.getElementById("sidebar-trigger"),yn=document.getElementById("search-trigger"),_n=document.getElementById("search-cancel"),wn=document.querySelectorAll("#main-wrapper>.container>.row"),En=document.getElementById("topbar-title"),On=document.getElementById("search"),xn=document.getElementById("search-result-wrapper"),An=document.getElementById("search-results"),Cn=document.getElementById("search-input"),Tn=document.getElementById("search-hints"),Ln="d-block",Sn="d-none",jn="input-focus",kn="d-flex";class Dn{static on(){bn.classList.add(Sn),En.classList.add(Sn),yn.classList.add(Sn),On.classList.add(kn),_n.classList.add(Ln)}static off(){_n.classList.remove(Ln),On.classList.remove(kn),bn.classList.remove(Sn),En.classList.remove(Sn),yn.classList.remove(Sn)}}class Pn{static on(){this.resultVisible||(xn.classList.remove(Sn),wn.forEach((t=>{t.classList.add(Sn)})),this.resultVisible=!0)}static off(){this.resultVisible&&(An.innerHTML="",Tn.classList.contains(Sn)&&Tn.classList.remove(Sn),xn.classList.add(Sn),wn.forEach((t=>{t.classList.remove(Sn)})),Cn.textContent="",this.resultVisible=!1)}}function Mn(){return _n.classList.contains(Ln)}Ze(Pn,"resultVisible",!1),hn.onclick=mn.onclick=()=>gn.toggle(),yn.addEventListener("click",(()=>{Dn.on(),Pn.on(),Cn.focus()})),_n.addEventListener("click",(()=>{Dn.off(),Pn.off()})),Cn.addEventListener("focus",(()=>{On.classList.add(jn)})),Cn.addEventListener("focusout",(()=>{On.classList.remove(jn)})),Cn.addEventListener("input",(()=>{""===Cn.value?Mn()?Tn.classList.remove(Sn):Pn.off():(Pn.on(),Mn()&&Tn.classList.add(Sn))})),dayjs.locale(Ge.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${Ge.attrTimestamp}]`).forEach((t=>{const e=dayjs.unix(Ge.getTimestamp(t)),n=e.format(Ge.getDateFormat(t));if(t.textContent=n,t.removeAttribute(Ge.attrTimestamp),t.removeAttribute(Ge.attrDateFormat),t.hasAttribute("data-bs-toggle")&&"tooltip"===t.getAttribute("data-bs-toggle")){const n=e.format("llll");t.setAttribute("data-bs-title",n)}})),dn&&dn.addEventListener("click",(()=>{Theme.flip()})),function(){const t=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?t.classList.add("show"):t.classList.remove("show")})),t.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((t=>new Xe(t)))}(); +!(function () { + 'use strict'; + const t = new Map(); + var e = { + set(e, n, i) { + t.has(e) || t.set(e, new Map()); + const o = t.get(e); + o.has(n) || 0 === o.size + ? o.set(n, i) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(o.keys())[0] + }.` + ); + }, + get: (e, n) => (t.has(e) && t.get(e).get(n)) || null, + remove(e, n) { + if (!t.has(e)) return; + const i = t.get(e); + i.delete(n), 0 === i.size && t.delete(e); + } + }; + const n = 'transitionend', + i = (t) => ( + t && + window.CSS && + window.CSS.escape && + (t = t.replace(/#([^\s"#']+)/g, (t, e) => `#${CSS.escape(e)}`)), + t + ), + o = (t) => + !(!t || 'object' != typeof t) && + (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType), + r = (t) => + o(t) + ? t.jquery + ? t[0] + : t + : 'string' == typeof t && t.length > 0 + ? document.querySelector(i(t)) + : null, + s = (t) => { + if (!document.documentElement.attachShadow) return null; + if ('function' == typeof t.getRootNode) { + const e = t.getRootNode(); + return e instanceof ShadowRoot ? e : null; + } + return t instanceof ShadowRoot + ? t + : t.parentNode + ? s(t.parentNode) + : null; + }, + a = () => {}, + l = () => + window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') + ? window.jQuery + : null, + c = [], + u = () => 'rtl' === document.documentElement.dir, + f = (t) => { + var e; + (e = () => { + const e = l(); + if (e) { + const n = t.NAME, + i = e.fn[n]; + (e.fn[n] = t.jQueryInterface), + (e.fn[n].Constructor = t), + (e.fn[n].noConflict = () => ((e.fn[n] = i), t.jQueryInterface)); + } + }), + 'loading' === document.readyState + ? (c.length || + document.addEventListener('DOMContentLoaded', () => { + for (const t of c) t(); + }), + c.push(e)) + : e(); + }, + d = function (t) { + let e = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : t; + return 'function' == typeof t + ? t( + ...(arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : []) + ) + : e; + }, + p = function (t, e) { + if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2])) + return void d(t); + const i = + ((t) => { + if (!t) return 0; + let { transitionDuration: e, transitionDelay: n } = + window.getComputedStyle(t); + const i = Number.parseFloat(e), + o = Number.parseFloat(n); + return i || o + ? ((e = e.split(',')[0]), + (n = n.split(',')[0]), + 1e3 * (Number.parseFloat(e) + Number.parseFloat(n))) + : 0; + })(e) + 5; + let o = !1; + const r = (i) => { + let { target: s } = i; + s === e && ((o = !0), e.removeEventListener(n, r), d(t)); + }; + e.addEventListener(n, r), + setTimeout(() => { + o || e.dispatchEvent(new Event(n)); + }, i); + }, + h = /[^.]*(?=\..*)\.|.*/, + m = /\..*/, + g = /::\d+$/, + v = {}; + let b = 1; + const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, + _ = new Set([ + 'click', + 'dblclick', + 'mouseup', + 'mousedown', + 'contextmenu', + 'mousewheel', + 'DOMMouseScroll', + 'mouseover', + 'mouseout', + 'mousemove', + 'selectstart', + 'selectend', + 'keydown', + 'keypress', + 'keyup', + 'orientationchange', + 'touchstart', + 'touchmove', + 'touchend', + 'touchcancel', + 'pointerdown', + 'pointermove', + 'pointerup', + 'pointerleave', + 'pointercancel', + 'gesturestart', + 'gesturechange', + 'gestureend', + 'focus', + 'blur', + 'change', + 'reset', + 'select', + 'submit', + 'focusin', + 'focusout', + 'load', + 'unload', + 'beforeunload', + 'resize', + 'move', + 'DOMContentLoaded', + 'readystatechange', + 'error', + 'abort', + 'scroll' + ]); + function w(t, e) { + return (e && `${e}::${b++}`) || t.uidEvent || b++; + } + function E(t) { + const e = w(t); + return (t.uidEvent = e), (v[e] = v[e] || {}), v[e]; + } + function O(t, e) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; + return Object.values(t).find( + (t) => t.callable === e && t.delegationSelector === n + ); + } + function x(t, e, n) { + const i = 'string' == typeof e, + o = i ? n : e || n; + let r = L(t); + return _.has(r) || (r = t), [i, o, r]; + } + function A(t, e, n, i, o) { + if ('string' != typeof e || !t) return; + let [r, s, a] = x(e, n, i); + if (e in y) { + const t = (t) => + function (e) { + if ( + !e.relatedTarget || + (e.relatedTarget !== e.delegateTarget && + !e.delegateTarget.contains(e.relatedTarget)) + ) + return t.call(this, e); + }; + s = t(s); + } + const l = E(t), + c = l[a] || (l[a] = {}), + u = O(c, s, r ? n : null); + if (u) return void (u.oneOff = u.oneOff && o); + const f = w(s, e.replace(h, '')), + d = r + ? (function (t, e, n) { + return function i(o) { + const r = t.querySelectorAll(e); + for (let { target: s } = o; s && s !== this; s = s.parentNode) + for (const a of r) + if (a === s) + return ( + j(o, { delegateTarget: s }), + i.oneOff && S.off(t, o.type, e, n), + n.apply(s, [o]) + ); + }; + })(t, n, s) + : (function (t, e) { + return function n(i) { + return ( + j(i, { delegateTarget: t }), + n.oneOff && S.off(t, i.type, e), + e.apply(t, [i]) + ); + }; + })(t, s); + (d.delegationSelector = r ? n : null), + (d.callable = s), + (d.oneOff = o), + (d.uidEvent = f), + (c[f] = d), + t.addEventListener(a, d, r); + } + function C(t, e, n, i, o) { + const r = O(e[n], i, o); + r && (t.removeEventListener(n, r, Boolean(o)), delete e[n][r.uidEvent]); + } + function T(t, e, n, i) { + const o = e[n] || {}; + for (const [r, s] of Object.entries(o)) + r.includes(i) && C(t, e, n, s.callable, s.delegationSelector); + } + function L(t) { + return (t = t.replace(m, '')), y[t] || t; + } + const S = { + on(t, e, n, i) { + A(t, e, n, i, !1); + }, + one(t, e, n, i) { + A(t, e, n, i, !0); + }, + off(t, e, n, i) { + if ('string' != typeof e || !t) return; + const [o, r, s] = x(e, n, i), + a = s !== e, + l = E(t), + c = l[s] || {}, + u = e.startsWith('.'); + if (void 0 === r) { + if (u) for (const n of Object.keys(l)) T(t, l, n, e.slice(1)); + for (const [n, i] of Object.entries(c)) { + const o = n.replace(g, ''); + (a && !e.includes(o)) || C(t, l, s, i.callable, i.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + C(t, l, s, r, o ? n : null); + } + }, + trigger(t, e, n) { + if ('string' != typeof e || !t) return null; + const i = l(); + let o = null, + r = !0, + s = !0, + a = !1; + e !== L(e) && + i && + ((o = i.Event(e, n)), + i(t).trigger(o), + (r = !o.isPropagationStopped()), + (s = !o.isImmediatePropagationStopped()), + (a = o.isDefaultPrevented())); + const c = j(new Event(e, { bubbles: r, cancelable: !0 }), n); + return ( + a && c.preventDefault(), + s && t.dispatchEvent(c), + c.defaultPrevented && o && o.preventDefault(), + c + ); + } + }; + function j(t) { + let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + for (const [n, i] of Object.entries(e)) + try { + t[n] = i; + } catch { + Object.defineProperty(t, n, { configurable: !0, get: () => i }); + } + return t; + } + function k(t) { + if ('true' === t) return !0; + if ('false' === t) return !1; + if (t === Number(t).toString()) return Number(t); + if ('' === t || 'null' === t) return null; + if ('string' != typeof t) return t; + try { + return JSON.parse(decodeURIComponent(t)); + } catch { + return t; + } + } + function D(t) { + return t.replace(/[A-Z]/g, (t) => `-${t.toLowerCase()}`); + } + const P = { + setDataAttribute(t, e, n) { + t.setAttribute(`data-bs-${D(e)}`, n); + }, + removeDataAttribute(t, e) { + t.removeAttribute(`data-bs-${D(e)}`); + }, + getDataAttributes(t) { + if (!t) return {}; + const e = {}, + n = Object.keys(t.dataset).filter( + (t) => t.startsWith('bs') && !t.startsWith('bsConfig') + ); + for (const i of n) { + let n = i.replace(/^bs/, ''); + (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (e[n] = k(t.dataset[i])); + } + return e; + }, + getDataAttribute: (t, e) => k(t.getAttribute(`data-bs-${D(e)}`)) + }; + class M { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return t; + } + _mergeConfigObj(t, e) { + const n = o(e) ? P.getDataAttribute(e, 'config') : {}; + return { + ...this.constructor.Default, + ...('object' == typeof n ? n : {}), + ...(o(e) ? P.getDataAttributes(e) : {}), + ...('object' == typeof t ? t : {}) + }; + } + _typeCheckConfig(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : this.constructor.DefaultType; + for (const [i, r] of Object.entries(e)) { + const e = t[i], + s = o(e) + ? 'element' + : null == (n = e) + ? `${n}` + : Object.prototype.toString + .call(n) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(r).test(s)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".` + ); + } + var n; + } + } + class N extends M { + constructor(t, n) { + super(), + (t = r(t)) && + ((this._element = t), + (this._config = this._getConfig(n)), + e.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + e.remove(this._element, this.constructor.DATA_KEY), + S.off(this._element, this.constructor.EVENT_KEY); + for (const t of Object.getOwnPropertyNames(this)) this[t] = null; + } + _queueCallback(t, e) { + p( + t, + e, + !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] + ); + } + _getConfig(t) { + return ( + (t = this._mergeConfigObj(t, this._element)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + static getInstance(t) { + return e.get(r(t), this.DATA_KEY); + } + static getOrCreateInstance(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + return ( + this.getInstance(t) || new this(t, 'object' == typeof e ? e : null) + ); + } + static get VERSION() { + return '5.3.3'; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(t) { + return `${t}${this.EVENT_KEY}`; + } + } + const B = (t) => { + let e = t.getAttribute('data-bs-target'); + if (!e || '#' === e) { + let n = t.getAttribute('href'); + if (!n || (!n.includes('#') && !n.startsWith('.'))) return null; + n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`), + (e = n && '#' !== n ? n.trim() : null); + } + return e + ? e + .split(',') + .map((t) => i(t)) + .join(',') + : null; + }, + F = { + find(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return [].concat(...Element.prototype.querySelectorAll.call(e, t)); + }, + findOne(t) { + let e = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return Element.prototype.querySelector.call(e, t); + }, + children: (t, e) => [].concat(...t.children).filter((t) => t.matches(e)), + parents(t, e) { + const n = []; + let i = t.parentNode.closest(e); + for (; i; ) n.push(i), (i = i.parentNode.closest(e)); + return n; + }, + prev(t, e) { + let n = t.previousElementSibling; + for (; n; ) { + if (n.matches(e)) return [n]; + n = n.previousElementSibling; + } + return []; + }, + next(t, e) { + let n = t.nextElementSibling; + for (; n; ) { + if (n.matches(e)) return [n]; + n = n.nextElementSibling; + } + return []; + }, + focusableChildren(t) { + const e = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ] + .map((t) => `${t}:not([tabindex^="-"])`) + .join(','); + return this.find(e, t).filter( + (t) => + !((t) => + !t || + t.nodeType !== Node.ELEMENT_NODE || + !!t.classList.contains('disabled') || + (void 0 !== t.disabled + ? t.disabled + : t.hasAttribute('disabled') && + 'false' !== t.getAttribute('disabled')))(t) && + ((t) => { + if (!o(t) || 0 === t.getClientRects().length) return !1; + const e = + 'visible' === + getComputedStyle(t).getPropertyValue('visibility'), + n = t.closest('details:not([open])'); + if (!n) return e; + if (n !== t) { + const e = t.closest('summary'); + if (e && e.parentNode !== n) return !1; + if (null === e) return !1; + } + return e; + })(t) + ); + }, + getSelectorFromElement(t) { + const e = B(t); + return e && F.findOne(e) ? e : null; + }, + getElementFromSelector(t) { + const e = B(t); + return e ? F.findOne(e) : null; + }, + getMultipleElementsFromSelector(t) { + const e = B(t); + return e ? F.find(e) : []; + } + }, + I = '.bs.collapse', + H = `show${I}`, + $ = `shown${I}`, + z = `hide${I}`, + W = `hidden${I}`, + R = `click${I}.data-api`, + q = 'show', + V = 'collapse', + Y = 'collapsing', + U = `:scope .${V} .${V}`, + K = '[data-bs-toggle="collapse"]', + Q = { parent: null, toggle: !0 }, + X = { parent: '(null|element)', toggle: 'boolean' }; + class G extends N { + constructor(t, e) { + super(t, e), (this._isTransitioning = !1), (this._triggerArray = []); + const n = F.find(K); + for (const t of n) { + const e = F.getSelectorFromElement(t), + n = F.find(e).filter((t) => t === this._element); + null !== e && n.length && this._triggerArray.push(t); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), + this._config.toggle && this.toggle(); + } + static get Default() { + return Q; + } + static get DefaultType() { + return X; + } + static get NAME() { + return 'collapse'; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let t = []; + if ( + (this._config.parent && + (t = this._getFirstLevelChildren( + '.collapse.show, .collapse.collapsing' + ) + .filter((t) => t !== this._element) + .map((t) => G.getOrCreateInstance(t, { toggle: !1 }))), + t.length && t[0]._isTransitioning) + ) + return; + if (S.trigger(this._element, H).defaultPrevented) return; + for (const e of t) e.hide(); + const e = this._getDimension(); + this._element.classList.remove(V), + this._element.classList.add(Y), + (this._element.style[e] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const n = `scroll${e[0].toUpperCase() + e.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Y), + this._element.classList.add(V, q), + (this._element.style[e] = ''), + S.trigger(this._element, $); + }, + this._element, + !0 + ), + (this._element.style[e] = `${this._element[n]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (S.trigger(this._element, z).defaultPrevented) return; + const t = this._getDimension(); + (this._element.style[t] = `${ + this._element.getBoundingClientRect()[t] + }px`), + this._element.offsetHeight, + this._element.classList.add(Y), + this._element.classList.remove(V, q); + for (const t of this._triggerArray) { + const e = F.getElementFromSelector(t); + e && !this._isShown(e) && this._addAriaAndCollapsedClass([t], !1); + } + this._isTransitioning = !0; + (this._element.style[t] = ''), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(Y), + this._element.classList.add(V), + S.trigger(this._element, W); + }, + this._element, + !0 + ); + } + _isShown() { + return ( + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : this._element + ).classList.contains(q); + } + _configAfterMerge(t) { + return (t.toggle = Boolean(t.toggle)), (t.parent = r(t.parent)), t; + } + _getDimension() { + return this._element.classList.contains('collapse-horizontal') + ? 'width' + : 'height'; + } + _initializeChildren() { + if (!this._config.parent) return; + const t = this._getFirstLevelChildren(K); + for (const e of t) { + const t = F.getElementFromSelector(e); + t && this._addAriaAndCollapsedClass([e], this._isShown(t)); + } + } + _getFirstLevelChildren(t) { + const e = F.find(U, this._config.parent); + return F.find(t, this._config.parent).filter((t) => !e.includes(t)); + } + _addAriaAndCollapsedClass(t, e) { + if (t.length) + for (const n of t) + n.classList.toggle('collapsed', !e), + n.setAttribute('aria-expanded', e); + } + static jQueryInterface(t) { + const e = {}; + return ( + 'string' == typeof t && /show|hide/.test(t) && (e.toggle = !1), + this.each(function () { + const n = G.getOrCreateInstance(this, e); + if ('string' == typeof t) { + if (void 0 === n[t]) throw new TypeError(`No method named "${t}"`); + n[t](); + } + }) + ); + } + } + S.on(document, R, K, function (t) { + ('A' === t.target.tagName || + (t.delegateTarget && 'A' === t.delegateTarget.tagName)) && + t.preventDefault(); + for (const t of F.getMultipleElementsFromSelector(this)) + G.getOrCreateInstance(t, { toggle: !1 }).toggle(); + }), + f(G), + document.getElementsByClassName('collapse'); + var J = 'top', + Z = 'bottom', + tt = 'right', + et = 'left', + nt = 'auto', + it = [J, Z, tt, et], + ot = 'start', + rt = 'end', + st = 'clippingParents', + at = 'viewport', + lt = 'popper', + ct = 'reference', + ut = it.reduce(function (t, e) { + return t.concat([e + '-' + ot, e + '-' + rt]); + }, []), + ft = [].concat(it, [nt]).reduce(function (t, e) { + return t.concat([e, e + '-' + ot, e + '-' + rt]); + }, []), + dt = 'beforeRead', + pt = 'read', + ht = 'afterRead', + mt = 'beforeMain', + gt = 'main', + vt = 'afterMain', + bt = 'beforeWrite', + yt = 'write', + _t = 'afterWrite', + wt = [dt, pt, ht, mt, gt, vt, bt, yt, _t]; + function Et(t) { + return t ? (t.nodeName || '').toLowerCase() : null; + } + function Ot(t) { + if (null == t) return window; + if ('[object Window]' !== t.toString()) { + var e = t.ownerDocument; + return (e && e.defaultView) || window; + } + return t; + } + function xt(t) { + return t instanceof Ot(t).Element || t instanceof Element; + } + function At(t) { + return t instanceof Ot(t).HTMLElement || t instanceof HTMLElement; + } + function Ct(t) { + return ( + 'undefined' != typeof ShadowRoot && + (t instanceof Ot(t).ShadowRoot || t instanceof ShadowRoot) + ); + } + var Tt = { + name: 'applyStyles', + enabled: !0, + phase: 'write', + fn: function (t) { + var e = t.state; + Object.keys(e.elements).forEach(function (t) { + var n = e.styles[t] || {}, + i = e.attributes[t] || {}, + o = e.elements[t]; + At(o) && + Et(o) && + (Object.assign(o.style, n), + Object.keys(i).forEach(function (t) { + var e = i[t]; + !1 === e + ? o.removeAttribute(t) + : o.setAttribute(t, !0 === e ? '' : e); + })); + }); + }, + effect: function (t) { + var e = t.state, + n = { + popper: { + position: e.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { position: 'absolute' }, + reference: {} + }; + return ( + Object.assign(e.elements.popper.style, n.popper), + (e.styles = n), + e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow), + function () { + Object.keys(e.elements).forEach(function (t) { + var i = e.elements[t], + o = e.attributes[t] || {}, + r = Object.keys( + e.styles.hasOwnProperty(t) ? e.styles[t] : n[t] + ).reduce(function (t, e) { + return (t[e] = ''), t; + }, {}); + At(i) && + Et(i) && + (Object.assign(i.style, r), + Object.keys(o).forEach(function (t) { + i.removeAttribute(t); + })); + }); + } + ); + }, + requires: ['computeStyles'] + }; + function Lt(t) { + return t.split('-')[0]; + } + var St = Math.max, + jt = Math.min, + kt = Math.round; + function Dt() { + var t = navigator.userAgentData; + return null != t && t.brands && Array.isArray(t.brands) + ? t.brands + .map(function (t) { + return t.brand + '/' + t.version; + }) + .join(' ') + : navigator.userAgent; + } + function Pt() { + return !/^((?!chrome|android).)*safari/i.test(Dt()); + } + function Mt(t, e, n) { + void 0 === e && (e = !1), void 0 === n && (n = !1); + var i = t.getBoundingClientRect(), + o = 1, + r = 1; + e && + At(t) && + ((o = (t.offsetWidth > 0 && kt(i.width) / t.offsetWidth) || 1), + (r = (t.offsetHeight > 0 && kt(i.height) / t.offsetHeight) || 1)); + var s = (xt(t) ? Ot(t) : window).visualViewport, + a = !Pt() && n, + l = (i.left + (a && s ? s.offsetLeft : 0)) / o, + c = (i.top + (a && s ? s.offsetTop : 0)) / r, + u = i.width / o, + f = i.height / r; + return { + width: u, + height: f, + top: c, + right: l + u, + bottom: c + f, + left: l, + x: l, + y: c + }; + } + function Nt(t) { + var e = Mt(t), + n = t.offsetWidth, + i = t.offsetHeight; + return ( + Math.abs(e.width - n) <= 1 && (n = e.width), + Math.abs(e.height - i) <= 1 && (i = e.height), + { x: t.offsetLeft, y: t.offsetTop, width: n, height: i } + ); + } + function Bt(t, e) { + var n = e.getRootNode && e.getRootNode(); + if (t.contains(e)) return !0; + if (n && Ct(n)) { + var i = e; + do { + if (i && t.isSameNode(i)) return !0; + i = i.parentNode || i.host; + } while (i); + } + return !1; + } + function Ft(t) { + return Ot(t).getComputedStyle(t); + } + function It(t) { + return ['table', 'td', 'th'].indexOf(Et(t)) >= 0; + } + function Ht(t) { + return ((xt(t) ? t.ownerDocument : t.document) || window.document) + .documentElement; + } + function $t(t) { + return 'html' === Et(t) + ? t + : t.assignedSlot || t.parentNode || (Ct(t) ? t.host : null) || Ht(t); + } + function zt(t) { + return At(t) && 'fixed' !== Ft(t).position ? t.offsetParent : null; + } + function Wt(t) { + for (var e = Ot(t), n = zt(t); n && It(n) && 'static' === Ft(n).position; ) + n = zt(n); + return n && + ('html' === Et(n) || ('body' === Et(n) && 'static' === Ft(n).position)) + ? e + : n || + (function (t) { + var e = /firefox/i.test(Dt()); + if (/Trident/i.test(Dt()) && At(t) && 'fixed' === Ft(t).position) + return null; + var n = $t(t); + for ( + Ct(n) && (n = n.host); + At(n) && ['html', 'body'].indexOf(Et(n)) < 0; + + ) { + var i = Ft(n); + if ( + 'none' !== i.transform || + 'none' !== i.perspective || + 'paint' === i.contain || + -1 !== ['transform', 'perspective'].indexOf(i.willChange) || + (e && 'filter' === i.willChange) || + (e && i.filter && 'none' !== i.filter) + ) + return n; + n = n.parentNode; + } + return null; + })(t) || + e; + } + function Rt(t) { + return ['top', 'bottom'].indexOf(t) >= 0 ? 'x' : 'y'; + } + function qt(t, e, n) { + return St(t, jt(e, n)); + } + function Vt(t) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, t); + } + function Yt(t, e) { + return e.reduce(function (e, n) { + return (e[n] = t), e; + }, {}); + } + var Ut = { + name: 'arrow', + enabled: !0, + phase: 'main', + fn: function (t) { + var e, + n = t.state, + i = t.name, + o = t.options, + r = n.elements.arrow, + s = n.modifiersData.popperOffsets, + a = Lt(n.placement), + l = Rt(a), + c = [et, tt].indexOf(a) >= 0 ? 'height' : 'width'; + if (r && s) { + var u = (function (t, e) { + return Vt( + 'number' != + typeof (t = + 'function' == typeof t + ? t(Object.assign({}, e.rects, { placement: e.placement })) + : t) + ? t + : Yt(t, it) + ); + })(o.padding, n), + f = Nt(r), + d = 'y' === l ? J : et, + p = 'y' === l ? Z : tt, + h = + n.rects.reference[c] + + n.rects.reference[l] - + s[l] - + n.rects.popper[c], + m = s[l] - n.rects.reference[l], + g = Wt(r), + v = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0, + b = h / 2 - m / 2, + y = u[d], + _ = v - f[c] - u[p], + w = v / 2 - f[c] / 2 + b, + E = qt(y, w, _), + O = l; + n.modifiersData[i] = (((e = {})[O] = E), (e.centerOffset = E - w), e); + } + }, + effect: function (t) { + var e = t.state, + n = t.options.element, + i = void 0 === n ? '[data-popper-arrow]' : n; + null != i && + ('string' != typeof i || (i = e.elements.popper.querySelector(i))) && + Bt(e.elements.popper, i) && + (e.elements.arrow = i); + }, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + function Kt(t) { + return t.split('-')[1]; + } + var Qt = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; + function Xt(t) { + var e, + n = t.popper, + i = t.popperRect, + o = t.placement, + r = t.variation, + s = t.offsets, + a = t.position, + l = t.gpuAcceleration, + c = t.adaptive, + u = t.roundOffsets, + f = t.isFixed, + d = s.x, + p = void 0 === d ? 0 : d, + h = s.y, + m = void 0 === h ? 0 : h, + g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m }; + (p = g.x), (m = g.y); + var v = s.hasOwnProperty('x'), + b = s.hasOwnProperty('y'), + y = et, + _ = J, + w = window; + if (c) { + var E = Wt(n), + O = 'clientHeight', + x = 'clientWidth'; + if ( + (E === Ot(n) && + 'static' !== Ft((E = Ht(n))).position && + 'absolute' === a && + ((O = 'scrollHeight'), (x = 'scrollWidth')), + o === J || ((o === et || o === tt) && r === rt)) + ) + (_ = Z), + (m -= + (f && E === w && w.visualViewport + ? w.visualViewport.height + : E[O]) - i.height), + (m *= l ? 1 : -1); + if (o === et || ((o === J || o === Z) && r === rt)) + (y = tt), + (p -= + (f && E === w && w.visualViewport ? w.visualViewport.width : E[x]) - + i.width), + (p *= l ? 1 : -1); + } + var A, + C = Object.assign({ position: a }, c && Qt), + T = + !0 === u + ? (function (t, e) { + var n = t.x, + i = t.y, + o = e.devicePixelRatio || 1; + return { x: kt(n * o) / o || 0, y: kt(i * o) / o || 0 }; + })({ x: p, y: m }, Ot(n)) + : { x: p, y: m }; + return ( + (p = T.x), + (m = T.y), + l + ? Object.assign( + {}, + C, + (((A = {})[_] = b ? '0' : ''), + (A[y] = v ? '0' : ''), + (A.transform = + (w.devicePixelRatio || 1) <= 1 + ? 'translate(' + p + 'px, ' + m + 'px)' + : 'translate3d(' + p + 'px, ' + m + 'px, 0)'), + A) + ) + : Object.assign( + {}, + C, + (((e = {})[_] = b ? m + 'px' : ''), + (e[y] = v ? p + 'px' : ''), + (e.transform = ''), + e) + ) + ); + } + var Gt = { + name: 'computeStyles', + enabled: !0, + phase: 'beforeWrite', + fn: function (t) { + var e = t.state, + n = t.options, + i = n.gpuAcceleration, + o = void 0 === i || i, + r = n.adaptive, + s = void 0 === r || r, + a = n.roundOffsets, + l = void 0 === a || a, + c = { + placement: Lt(e.placement), + variation: Kt(e.placement), + popper: e.elements.popper, + popperRect: e.rects.popper, + gpuAcceleration: o, + isFixed: 'fixed' === e.options.strategy + }; + null != e.modifiersData.popperOffsets && + (e.styles.popper = Object.assign( + {}, + e.styles.popper, + Xt( + Object.assign({}, c, { + offsets: e.modifiersData.popperOffsets, + position: e.options.strategy, + adaptive: s, + roundOffsets: l + }) + ) + )), + null != e.modifiersData.arrow && + (e.styles.arrow = Object.assign( + {}, + e.styles.arrow, + Xt( + Object.assign({}, c, { + offsets: e.modifiersData.arrow, + position: 'absolute', + adaptive: !1, + roundOffsets: l + }) + ) + )), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + 'data-popper-placement': e.placement + })); + }, + data: {} + }, + Jt = { passive: !0 }; + var Zt = { + name: 'eventListeners', + enabled: !0, + phase: 'write', + fn: function () {}, + effect: function (t) { + var e = t.state, + n = t.instance, + i = t.options, + o = i.scroll, + r = void 0 === o || o, + s = i.resize, + a = void 0 === s || s, + l = Ot(e.elements.popper), + c = [].concat(e.scrollParents.reference, e.scrollParents.popper); + return ( + r && + c.forEach(function (t) { + t.addEventListener('scroll', n.update, Jt); + }), + a && l.addEventListener('resize', n.update, Jt), + function () { + r && + c.forEach(function (t) { + t.removeEventListener('scroll', n.update, Jt); + }), + a && l.removeEventListener('resize', n.update, Jt); + } + ); + }, + data: {} + }, + te = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + function ee(t) { + return t.replace(/left|right|bottom|top/g, function (t) { + return te[t]; + }); + } + var ne = { start: 'end', end: 'start' }; + function ie(t) { + return t.replace(/start|end/g, function (t) { + return ne[t]; + }); + } + function oe(t) { + var e = Ot(t); + return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset }; + } + function re(t) { + return Mt(Ht(t)).left + oe(t).scrollLeft; + } + function se(t) { + var e = Ft(t), + n = e.overflow, + i = e.overflowX, + o = e.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + i); + } + function ae(t) { + return ['html', 'body', '#document'].indexOf(Et(t)) >= 0 + ? t.ownerDocument.body + : At(t) && se(t) + ? t + : ae($t(t)); + } + function le(t, e) { + var n; + void 0 === e && (e = []); + var i = ae(t), + o = i === (null == (n = t.ownerDocument) ? void 0 : n.body), + r = Ot(i), + s = o ? [r].concat(r.visualViewport || [], se(i) ? i : []) : i, + a = e.concat(s); + return o ? a : a.concat(le($t(s))); + } + function ce(t) { + return Object.assign({}, t, { + left: t.x, + top: t.y, + right: t.x + t.width, + bottom: t.y + t.height + }); + } + function ue(t, e, n) { + return e === at + ? ce( + (function (t, e) { + var n = Ot(t), + i = Ht(t), + o = n.visualViewport, + r = i.clientWidth, + s = i.clientHeight, + a = 0, + l = 0; + if (o) { + (r = o.width), (s = o.height); + var c = Pt(); + (c || (!c && 'fixed' === e)) && + ((a = o.offsetLeft), (l = o.offsetTop)); + } + return { width: r, height: s, x: a + re(t), y: l }; + })(t, n) + ) + : xt(e) + ? (function (t, e) { + var n = Mt(t, !1, 'fixed' === e); + return ( + (n.top = n.top + t.clientTop), + (n.left = n.left + t.clientLeft), + (n.bottom = n.top + t.clientHeight), + (n.right = n.left + t.clientWidth), + (n.width = t.clientWidth), + (n.height = t.clientHeight), + (n.x = n.left), + (n.y = n.top), + n + ); + })(e, n) + : ce( + (function (t) { + var e, + n = Ht(t), + i = oe(t), + o = null == (e = t.ownerDocument) ? void 0 : e.body, + r = St( + n.scrollWidth, + n.clientWidth, + o ? o.scrollWidth : 0, + o ? o.clientWidth : 0 + ), + s = St( + n.scrollHeight, + n.clientHeight, + o ? o.scrollHeight : 0, + o ? o.clientHeight : 0 + ), + a = -i.scrollLeft + re(t), + l = -i.scrollTop; + return ( + 'rtl' === Ft(o || n).direction && + (a += St(n.clientWidth, o ? o.clientWidth : 0) - r), + { width: r, height: s, x: a, y: l } + ); + })(Ht(t)) + ); + } + function fe(t, e, n, i) { + var o = + 'clippingParents' === e + ? (function (t) { + var e = le($t(t)), + n = + ['absolute', 'fixed'].indexOf(Ft(t).position) >= 0 && At(t) + ? Wt(t) + : t; + return xt(n) + ? e.filter(function (t) { + return xt(t) && Bt(t, n) && 'body' !== Et(t); + }) + : []; + })(t) + : [].concat(e), + r = [].concat(o, [n]), + s = r[0], + a = r.reduce(function (e, n) { + var o = ue(t, n, i); + return ( + (e.top = St(o.top, e.top)), + (e.right = jt(o.right, e.right)), + (e.bottom = jt(o.bottom, e.bottom)), + (e.left = St(o.left, e.left)), + e + ); + }, ue(t, s, i)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + } + function de(t) { + var e, + n = t.reference, + i = t.element, + o = t.placement, + r = o ? Lt(o) : null, + s = o ? Kt(o) : null, + a = n.x + n.width / 2 - i.width / 2, + l = n.y + n.height / 2 - i.height / 2; + switch (r) { + case J: + e = { x: a, y: n.y - i.height }; + break; + case Z: + e = { x: a, y: n.y + n.height }; + break; + case tt: + e = { x: n.x + n.width, y: l }; + break; + case et: + e = { x: n.x - i.width, y: l }; + break; + default: + e = { x: n.x, y: n.y }; + } + var c = r ? Rt(r) : null; + if (null != c) { + var u = 'y' === c ? 'height' : 'width'; + switch (s) { + case ot: + e[c] = e[c] - (n[u] / 2 - i[u] / 2); + break; + case rt: + e[c] = e[c] + (n[u] / 2 - i[u] / 2); + } + } + return e; + } + function pe(t, e) { + void 0 === e && (e = {}); + var n = e, + i = n.placement, + o = void 0 === i ? t.placement : i, + r = n.strategy, + s = void 0 === r ? t.strategy : r, + a = n.boundary, + l = void 0 === a ? st : a, + c = n.rootBoundary, + u = void 0 === c ? at : c, + f = n.elementContext, + d = void 0 === f ? lt : f, + p = n.altBoundary, + h = void 0 !== p && p, + m = n.padding, + g = void 0 === m ? 0 : m, + v = Vt('number' != typeof g ? g : Yt(g, it)), + b = d === lt ? ct : lt, + y = t.rects.popper, + _ = t.elements[h ? b : d], + w = fe(xt(_) ? _ : _.contextElement || Ht(t.elements.popper), l, u, s), + E = Mt(t.elements.reference), + O = de({ reference: E, element: y, placement: o }), + x = ce(Object.assign({}, y, O)), + A = d === lt ? x : E, + C = { + top: w.top - A.top + v.top, + bottom: A.bottom - w.bottom + v.bottom, + left: w.left - A.left + v.left, + right: A.right - w.right + v.right + }, + T = t.modifiersData.offset; + if (d === lt && T) { + var L = T[o]; + Object.keys(C).forEach(function (t) { + var e = [tt, Z].indexOf(t) >= 0 ? 1 : -1, + n = [J, Z].indexOf(t) >= 0 ? 'y' : 'x'; + C[t] += L[n] * e; + }); + } + return C; + } + function he(t, e) { + void 0 === e && (e = {}); + var n = e, + i = n.placement, + o = n.boundary, + r = n.rootBoundary, + s = n.padding, + a = n.flipVariations, + l = n.allowedAutoPlacements, + c = void 0 === l ? ft : l, + u = Kt(i), + f = u + ? a + ? ut + : ut.filter(function (t) { + return Kt(t) === u; + }) + : it, + d = f.filter(function (t) { + return c.indexOf(t) >= 0; + }); + 0 === d.length && (d = f); + var p = d.reduce(function (e, n) { + return ( + (e[n] = pe(t, { + placement: n, + boundary: o, + rootBoundary: r, + padding: s + })[Lt(n)]), + e + ); + }, {}); + return Object.keys(p).sort(function (t, e) { + return p[t] - p[e]; + }); + } + var me = { + name: 'flip', + enabled: !0, + phase: 'main', + fn: function (t) { + var e = t.state, + n = t.options, + i = t.name; + if (!e.modifiersData[i]._skip) { + for ( + var o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 === s || s, + l = n.fallbackPlacements, + c = n.padding, + u = n.boundary, + f = n.rootBoundary, + d = n.altBoundary, + p = n.flipVariations, + h = void 0 === p || p, + m = n.allowedAutoPlacements, + g = e.options.placement, + v = Lt(g), + b = + l || + (v === g || !h + ? [ee(g)] + : (function (t) { + if (Lt(t) === nt) return []; + var e = ee(t); + return [ie(t), e, ie(e)]; + })(g)), + y = [g].concat(b).reduce(function (t, n) { + return t.concat( + Lt(n) === nt + ? he(e, { + placement: n, + boundary: u, + rootBoundary: f, + padding: c, + flipVariations: h, + allowedAutoPlacements: m + }) + : n + ); + }, []), + _ = e.rects.reference, + w = e.rects.popper, + E = new Map(), + O = !0, + x = y[0], + A = 0; + A < y.length; + A++ + ) { + var C = y[A], + T = Lt(C), + L = Kt(C) === ot, + S = [J, Z].indexOf(T) >= 0, + j = S ? 'width' : 'height', + k = pe(e, { + placement: C, + boundary: u, + rootBoundary: f, + altBoundary: d, + padding: c + }), + D = S ? (L ? tt : et) : L ? Z : J; + _[j] > w[j] && (D = ee(D)); + var P = ee(D), + M = []; + if ( + (r && M.push(k[T] <= 0), + a && M.push(k[D] <= 0, k[P] <= 0), + M.every(function (t) { + return t; + })) + ) { + (x = C), (O = !1); + break; + } + E.set(C, M); + } + if (O) + for ( + var N = function (t) { + var e = y.find(function (e) { + var n = E.get(e); + if (n) + return n.slice(0, t).every(function (t) { + return t; + }); + }); + if (e) return (x = e), 'break'; + }, + B = h ? 3 : 1; + B > 0; + B-- + ) { + if ('break' === N(B)) break; + } + e.placement !== x && + ((e.modifiersData[i]._skip = !0), (e.placement = x), (e.reset = !0)); + } + }, + requiresIfExists: ['offset'], + data: { _skip: !1 } + }; + function ge(t, e, n) { + return ( + void 0 === n && (n = { x: 0, y: 0 }), + { + top: t.top - e.height - n.y, + right: t.right - e.width + n.x, + bottom: t.bottom - e.height + n.y, + left: t.left - e.width - n.x + } + ); + } + function ve(t) { + return [J, tt, Z, et].some(function (e) { + return t[e] >= 0; + }); + } + var be = { + name: 'hide', + enabled: !0, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: function (t) { + var e = t.state, + n = t.name, + i = e.rects.reference, + o = e.rects.popper, + r = e.modifiersData.preventOverflow, + s = pe(e, { elementContext: 'reference' }), + a = pe(e, { altBoundary: !0 }), + l = ge(s, i), + c = ge(a, o, r), + u = ve(l), + f = ve(c); + (e.modifiersData[n] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: u, + hasPopperEscaped: f + }), + (e.attributes.popper = Object.assign({}, e.attributes.popper, { + 'data-popper-reference-hidden': u, + 'data-popper-escaped': f + })); + } + }; + var ye = { + name: 'offset', + enabled: !0, + phase: 'main', + requires: ['popperOffsets'], + fn: function (t) { + var e = t.state, + n = t.options, + i = t.name, + o = n.offset, + r = void 0 === o ? [0, 0] : o, + s = ft.reduce(function (t, n) { + return ( + (t[n] = (function (t, e, n) { + var i = Lt(t), + o = [et, J].indexOf(i) >= 0 ? -1 : 1, + r = + 'function' == typeof n + ? n(Object.assign({}, e, { placement: t })) + : n, + s = r[0], + a = r[1]; + return ( + (s = s || 0), + (a = (a || 0) * o), + [et, tt].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a } + ); + })(n, e.rects, r)), + t + ); + }, {}), + a = s[e.placement], + l = a.x, + c = a.y; + null != e.modifiersData.popperOffsets && + ((e.modifiersData.popperOffsets.x += l), + (e.modifiersData.popperOffsets.y += c)), + (e.modifiersData[i] = s); + } + }; + var _e = { + name: 'popperOffsets', + enabled: !0, + phase: 'read', + fn: function (t) { + var e = t.state, + n = t.name; + e.modifiersData[n] = de({ + reference: e.rects.reference, + element: e.rects.popper, + placement: e.placement + }); + }, + data: {} + }; + var we = { + name: 'preventOverflow', + enabled: !0, + phase: 'main', + fn: function (t) { + var e = t.state, + n = t.options, + i = t.name, + o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 !== s && s, + l = n.boundary, + c = n.rootBoundary, + u = n.altBoundary, + f = n.padding, + d = n.tether, + p = void 0 === d || d, + h = n.tetherOffset, + m = void 0 === h ? 0 : h, + g = pe(e, { boundary: l, rootBoundary: c, padding: f, altBoundary: u }), + v = Lt(e.placement), + b = Kt(e.placement), + y = !b, + _ = Rt(v), + w = 'x' === _ ? 'y' : 'x', + E = e.modifiersData.popperOffsets, + O = e.rects.reference, + x = e.rects.popper, + A = + 'function' == typeof m + ? m(Object.assign({}, e.rects, { placement: e.placement })) + : m, + C = + 'number' == typeof A + ? { mainAxis: A, altAxis: A } + : Object.assign({ mainAxis: 0, altAxis: 0 }, A), + T = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, + L = { x: 0, y: 0 }; + if (E) { + if (r) { + var S, + j = 'y' === _ ? J : et, + k = 'y' === _ ? Z : tt, + D = 'y' === _ ? 'height' : 'width', + P = E[_], + M = P + g[j], + N = P - g[k], + B = p ? -x[D] / 2 : 0, + F = b === ot ? O[D] : x[D], + I = b === ot ? -x[D] : -O[D], + H = e.elements.arrow, + $ = p && H ? Nt(H) : { width: 0, height: 0 }, + z = e.modifiersData['arrow#persistent'] + ? e.modifiersData['arrow#persistent'].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + W = z[j], + R = z[k], + q = qt(0, O[D], $[D]), + V = y ? O[D] / 2 - B - q - W - C.mainAxis : F - q - W - C.mainAxis, + Y = y ? -O[D] / 2 + B + q + R + C.mainAxis : I + q + R + C.mainAxis, + U = e.elements.arrow && Wt(e.elements.arrow), + K = U ? ('y' === _ ? U.clientTop || 0 : U.clientLeft || 0) : 0, + Q = null != (S = null == T ? void 0 : T[_]) ? S : 0, + X = P + Y - Q, + G = qt(p ? jt(M, P + V - Q - K) : M, P, p ? St(N, X) : N); + (E[_] = G), (L[_] = G - P); + } + if (a) { + var nt, + it = 'x' === _ ? J : et, + rt = 'x' === _ ? Z : tt, + st = E[w], + at = 'y' === w ? 'height' : 'width', + lt = st + g[it], + ct = st - g[rt], + ut = -1 !== [J, et].indexOf(v), + ft = null != (nt = null == T ? void 0 : T[w]) ? nt : 0, + dt = ut ? lt : st - O[at] - x[at] - ft + C.altAxis, + pt = ut ? st + O[at] + x[at] - ft - C.altAxis : ct, + ht = + p && ut + ? (function (t, e, n) { + var i = qt(t, e, n); + return i > n ? n : i; + })(dt, st, pt) + : qt(p ? dt : lt, st, p ? pt : ct); + (E[w] = ht), (L[w] = ht - st); + } + e.modifiersData[i] = L; + } + }, + requiresIfExists: ['offset'] + }; + function Ee(t, e, n) { + void 0 === n && (n = !1); + var i, + o, + r = At(e), + s = + At(e) && + (function (t) { + var e = t.getBoundingClientRect(), + n = kt(e.width) / t.offsetWidth || 1, + i = kt(e.height) / t.offsetHeight || 1; + return 1 !== n || 1 !== i; + })(e), + a = Ht(e), + l = Mt(t, s, n), + c = { scrollLeft: 0, scrollTop: 0 }, + u = { x: 0, y: 0 }; + return ( + (r || (!r && !n)) && + (('body' !== Et(e) || se(a)) && + (c = + (i = e) !== Ot(i) && At(i) + ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop } + : oe(i)), + At(e) + ? (((u = Mt(e, !0)).x += e.clientLeft), (u.y += e.clientTop)) + : a && (u.x = re(a))), + { + x: l.left + c.scrollLeft - u.x, + y: l.top + c.scrollTop - u.y, + width: l.width, + height: l.height + } + ); + } + function Oe(t) { + var e = new Map(), + n = new Set(), + i = []; + function o(t) { + n.add(t.name), + [] + .concat(t.requires || [], t.requiresIfExists || []) + .forEach(function (t) { + if (!n.has(t)) { + var i = e.get(t); + i && o(i); + } + }), + i.push(t); + } + return ( + t.forEach(function (t) { + e.set(t.name, t); + }), + t.forEach(function (t) { + n.has(t.name) || o(t); + }), + i + ); + } + var xe = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; + function Ae() { + for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) + e[n] = arguments[n]; + return !e.some(function (t) { + return !(t && 'function' == typeof t.getBoundingClientRect); + }); + } + function Ce(t) { + void 0 === t && (t = {}); + var e = t, + n = e.defaultModifiers, + i = void 0 === n ? [] : n, + o = e.defaultOptions, + r = void 0 === o ? xe : o; + return function (t, e, n) { + void 0 === n && (n = r); + var o, + s, + a = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, xe, r), + modifiersData: {}, + elements: { reference: t, popper: e }, + attributes: {}, + styles: {} + }, + l = [], + c = !1, + u = { + state: a, + setOptions: function (n) { + var o = 'function' == typeof n ? n(a.options) : n; + f(), + (a.options = Object.assign({}, r, a.options, o)), + (a.scrollParents = { + reference: xt(t) + ? le(t) + : t.contextElement + ? le(t.contextElement) + : [], + popper: le(e) + }); + var s, + c, + d = (function (t) { + var e = Oe(t); + return wt.reduce(function (t, n) { + return t.concat( + e.filter(function (t) { + return t.phase === n; + }) + ); + }, []); + })( + ((s = [].concat(i, a.options.modifiers)), + (c = s.reduce(function (t, e) { + var n = t[e.name]; + return ( + (t[e.name] = n + ? Object.assign({}, n, e, { + options: Object.assign({}, n.options, e.options), + data: Object.assign({}, n.data, e.data) + }) + : e), + t + ); + }, {})), + Object.keys(c).map(function (t) { + return c[t]; + })) + ); + return ( + (a.orderedModifiers = d.filter(function (t) { + return t.enabled; + })), + a.orderedModifiers.forEach(function (t) { + var e = t.name, + n = t.options, + i = void 0 === n ? {} : n, + o = t.effect; + if ('function' == typeof o) { + var r = o({ state: a, name: e, instance: u, options: i }), + s = function () {}; + l.push(r || s); + } + }), + u.update() + ); + }, + forceUpdate: function () { + if (!c) { + var t = a.elements, + e = t.reference, + n = t.popper; + if (Ae(e, n)) { + (a.rects = { + reference: Ee(e, Wt(n), 'fixed' === a.options.strategy), + popper: Nt(n) + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (t) { + return (a.modifiersData[t.name] = Object.assign( + {}, + t.data + )); + }); + for (var i = 0; i < a.orderedModifiers.length; i++) + if (!0 !== a.reset) { + var o = a.orderedModifiers[i], + r = o.fn, + s = o.options, + l = void 0 === s ? {} : s, + f = o.name; + 'function' == typeof r && + (a = + r({ state: a, options: l, name: f, instance: u }) || a); + } else (a.reset = !1), (i = -1); + } + } + }, + update: + ((o = function () { + return new Promise(function (t) { + u.forceUpdate(), t(a); + }); + }), + function () { + return ( + s || + (s = new Promise(function (t) { + Promise.resolve().then(function () { + (s = void 0), t(o()); + }); + })), + s + ); + }), + destroy: function () { + f(), (c = !0); + } + }; + if (!Ae(t, e)) return u; + function f() { + l.forEach(function (t) { + return t(); + }), + (l = []); + } + return ( + u.setOptions(n).then(function (t) { + !c && n.onFirstUpdate && n.onFirstUpdate(t); + }), + u + ); + }; + } + var Te = Ce(), + Le = Ce({ defaultModifiers: [Zt, _e, Gt, Tt] }), + Se = Ce({ defaultModifiers: [Zt, _e, Gt, Tt, ye, me, we, Ut, be] }), + je = Object.freeze({ + __proto__: null, + afterMain: vt, + afterRead: ht, + afterWrite: _t, + applyStyles: Tt, + arrow: Ut, + auto: nt, + basePlacements: it, + beforeMain: mt, + beforeRead: dt, + beforeWrite: bt, + bottom: Z, + clippingParents: st, + computeStyles: Gt, + createPopper: Se, + createPopperBase: Te, + createPopperLite: Le, + detectOverflow: pe, + end: rt, + eventListeners: Zt, + flip: me, + hide: be, + left: et, + main: gt, + modifierPhases: wt, + offset: ye, + placements: ft, + popper: lt, + popperGenerator: Ce, + popperOffsets: _e, + preventOverflow: we, + read: pt, + reference: ct, + right: tt, + start: ot, + top: J, + variationPlacements: ut, + viewport: at, + write: yt + }); + const ke = { + '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + De = new Set([ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]), + Pe = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + Me = (t, e) => { + const n = t.nodeName.toLowerCase(); + return e.includes(n) + ? !De.has(n) || Boolean(Pe.test(t.nodeValue)) + : e.filter((t) => t instanceof RegExp).some((t) => t.test(n)); + }; + const Ne = { + allowList: ke, + content: {}, + extraClass: '', + html: !1, + sanitize: !0, + sanitizeFn: null, + template: '
' + }, + Be = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }, + Fe = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class Ie extends M { + constructor(t) { + super(), (this._config = this._getConfig(t)); + } + static get Default() { + return Ne; + } + static get DefaultType() { + return Be; + } + static get NAME() { + return 'TemplateFactory'; + } + getContent() { + return Object.values(this._config.content) + .map((t) => this._resolvePossibleFunction(t)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(t) { + return ( + this._checkContent(t), + (this._config.content = { ...this._config.content, ...t }), + this + ); + } + toHtml() { + const t = document.createElement('div'); + t.innerHTML = this._maybeSanitize(this._config.template); + for (const [e, n] of Object.entries(this._config.content)) + this._setContent(t, n, e); + const e = t.children[0], + n = this._resolvePossibleFunction(this._config.extraClass); + return n && e.classList.add(...n.split(' ')), e; + } + _typeCheckConfig(t) { + super._typeCheckConfig(t), this._checkContent(t.content); + } + _checkContent(t) { + for (const [e, n] of Object.entries(t)) + super._typeCheckConfig({ selector: e, entry: n }, Fe); + } + _setContent(t, e, n) { + const i = F.findOne(n, t); + i && + ((e = this._resolvePossibleFunction(e)) + ? o(e) + ? this._putElementInTemplate(r(e), i) + : this._config.html + ? (i.innerHTML = this._maybeSanitize(e)) + : (i.textContent = e) + : i.remove()); + } + _maybeSanitize(t) { + return this._config.sanitize + ? (function (t, e, n) { + if (!t.length) return t; + if (n && 'function' == typeof n) return n(t); + const i = new window.DOMParser().parseFromString(t, 'text/html'), + o = [].concat(...i.body.querySelectorAll('*')); + for (const t of o) { + const n = t.nodeName.toLowerCase(); + if (!Object.keys(e).includes(n)) { + t.remove(); + continue; + } + const i = [].concat(...t.attributes), + o = [].concat(e['*'] || [], e[n] || []); + for (const e of i) Me(e, o) || t.removeAttribute(e.nodeName); + } + return i.body.innerHTML; + })(t, this._config.allowList, this._config.sanitizeFn) + : t; + } + _resolvePossibleFunction(t) { + return d(t, [this]); + } + _putElementInTemplate(t, e) { + if (this._config.html) return (e.innerHTML = ''), void e.append(t); + e.textContent = t.textContent; + } + } + const He = new Set(['sanitize', 'allowList', 'sanitizeFn']), + $e = 'fade', + ze = 'show', + We = '.tooltip-inner', + Re = '.modal', + qe = 'hide.bs.modal', + Ve = 'hover', + Ye = 'focus', + Ue = { + AUTO: 'auto', + TOP: 'top', + RIGHT: u() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: u() ? 'right' : 'left' + }, + Ke = { + allowList: ke, + animation: !0, + boundary: 'clippingParents', + container: !1, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: !1, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: '', + trigger: 'hover focus' + }, + Qe = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + class Xe extends N { + constructor(t, e) { + if (void 0 === je) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(t, e), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return Ke; + } + static get DefaultType() { + return Qe; + } + static get NAME() { + return 'tooltip'; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + S.off(this._element.closest(Re), qe, this._hideModalHandler), + this._element.getAttribute('data-bs-original-title') && + this._element.setAttribute( + 'title', + this._element.getAttribute('data-bs-original-title') + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ('none' === this._element.style.display) + throw new Error('Please use show on visible elements'); + if (!this._isWithContent() || !this._isEnabled) return; + const t = S.trigger(this._element, this.constructor.eventName('show')), + e = ( + s(this._element) || this._element.ownerDocument.documentElement + ).contains(this._element); + if (t.defaultPrevented || !e) return; + this._disposePopper(); + const n = this._getTipElement(); + this._element.setAttribute('aria-describedby', n.getAttribute('id')); + const { container: i } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains(this.tip) || + (i.append(n), + S.trigger(this._element, this.constructor.eventName('inserted'))), + (this._popper = this._createPopper(n)), + n.classList.add(ze), + 'ontouchstart' in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + S.on(t, 'mouseover', a); + this._queueCallback( + () => { + S.trigger(this._element, this.constructor.eventName('shown')), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if (!this._isShown()) return; + if ( + S.trigger(this._element, this.constructor.eventName('hide')) + .defaultPrevented + ) + return; + if ( + (this._getTipElement().classList.remove(ze), + 'ontouchstart' in document.documentElement) + ) + for (const t of [].concat(...document.body.children)) + S.off(t, 'mouseover', a); + (this._activeTrigger.click = !1), + (this._activeTrigger[Ye] = !1), + (this._activeTrigger[Ve] = !1), + (this._isHovered = null); + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute('aria-describedby'), + S.trigger(this._element, this.constructor.eventName('hidden'))); + }, + this.tip, + this._isAnimated() + ); + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(t) { + const e = this._getTemplateFactory(t).toHtml(); + if (!e) return null; + e.classList.remove($e, ze), + e.classList.add(`bs-${this.constructor.NAME}-auto`); + const n = ((t) => { + do { + t += Math.floor(1e6 * Math.random()); + } while (document.getElementById(t)); + return t; + })(this.constructor.NAME).toString(); + return ( + e.setAttribute('id', n), this._isAnimated() && e.classList.add($e), e + ); + } + setContent(t) { + (this._newContent = t), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(t) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(t) + : (this._templateFactory = new Ie({ + ...this._config, + content: t, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ) + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { [We]: this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute('data-bs-original-title') + ); + } + _initializeOnDelegatedTarget(t) { + return this.constructor.getOrCreateInstance( + t.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || (this.tip && this.tip.classList.contains($e)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains(ze); + } + _createPopper(t) { + const e = d(this._config.placement, [this, t, this._element]), + n = Ue[e.toUpperCase()]; + return Se(this._element, t, this._getPopperConfig(n)); + } + _getOffset() { + const { offset: t } = this._config; + return 'string' == typeof t + ? t.split(',').map((t) => Number.parseInt(t, 10)) + : 'function' == typeof t + ? (e) => t(e, this._element) + : t; + } + _resolvePossibleFunction(t) { + return d(t, [this._element]); + } + _getPopperConfig(t) { + const e = { + placement: t, + modifiers: [ + { + name: 'flip', + options: { fallbackPlacements: this._config.fallbackPlacements } + }, + { name: 'offset', options: { offset: this._getOffset() } }, + { + name: 'preventOverflow', + options: { boundary: this._config.boundary } + }, + { + name: 'arrow', + options: { element: `.${this.constructor.NAME}-arrow` } + }, + { + name: 'preSetPlacement', + enabled: !0, + phase: 'beforeMain', + fn: (t) => { + this._getTipElement().setAttribute( + 'data-popper-placement', + t.state.placement + ); + } + } + ] + }; + return { ...e, ...d(this._config.popperConfig, [e]) }; + } + _setListeners() { + const t = this._config.trigger.split(' '); + for (const e of t) + if ('click' === e) + S.on( + this._element, + this.constructor.eventName('click'), + this._config.selector, + (t) => { + this._initializeOnDelegatedTarget(t).toggle(); + } + ); + else if ('manual' !== e) { + const t = + e === Ve + ? this.constructor.eventName('mouseenter') + : this.constructor.eventName('focusin'), + n = + e === Ve + ? this.constructor.eventName('mouseleave') + : this.constructor.eventName('focusout'); + S.on(this._element, t, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger['focusin' === t.type ? Ye : Ve] = !0), e._enter(); + }), + S.on(this._element, n, this._config.selector, (t) => { + const e = this._initializeOnDelegatedTarget(t); + (e._activeTrigger['focusout' === t.type ? Ye : Ve] = + e._element.contains(t.relatedTarget)), + e._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + S.on(this._element.closest(Re), qe, this._hideModalHandler); + } + _fixTitle() { + const t = this._element.getAttribute('title'); + t && + (this._element.getAttribute('aria-label') || + this._element.textContent.trim() || + this._element.setAttribute('aria-label', t), + this._element.setAttribute('data-bs-original-title', t), + this._element.removeAttribute('title')); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(t, e) { + clearTimeout(this._timeout), (this._timeout = setTimeout(t, e)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(t) { + const e = P.getDataAttributes(this._element); + for (const t of Object.keys(e)) He.has(t) && delete e[t]; + return ( + (t = { ...e, ...('object' == typeof t && t ? t : {}) }), + (t = this._mergeConfigObj(t)), + (t = this._configAfterMerge(t)), + this._typeCheckConfig(t), + t + ); + } + _configAfterMerge(t) { + return ( + (t.container = !1 === t.container ? document.body : r(t.container)), + 'number' == typeof t.delay && + (t.delay = { show: t.delay, hide: t.delay }), + 'number' == typeof t.title && (t.title = t.title.toString()), + 'number' == typeof t.content && (t.content = t.content.toString()), + t + ); + } + _getDelegateConfig() { + const t = {}; + for (const [e, n] of Object.entries(this._config)) + this.constructor.Default[e] !== n && (t[e] = n); + return (t.selector = !1), (t.trigger = 'manual'), t; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(t) { + return this.each(function () { + const e = Xe.getOrCreateInstance(this, t); + if ('string' == typeof t) { + if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`); + e[t](); + } + }); + } + } + f(Xe); + class Ge { + static get attrTimestamp() { + return 'data-ts'; + } + static get attrDateFormat() { + return 'data-df'; + } + static get locale() { + return document.documentElement.getAttribute('lang').substring(0, 2); + } + static getTimestamp(t) { + return Number(t.getAttribute(this.attrTimestamp)); + } + static getDateFormat(t) { + return t.getAttribute(this.attrDateFormat); + } + } + function Je(t, e, n) { + if ('function' == typeof t ? t === e : t.has(e)) + return arguments.length < 3 ? e : n; + throw new TypeError('Private element is not present on this object'); + } + function Ze(t, e, n) { + return ( + (e = (function (t) { + var e = (function (t, e) { + if ('object' != typeof t || !t) return t; + var n = t[Symbol.toPrimitive]; + if (void 0 !== n) { + var i = n.call(t, e || 'default'); + if ('object' != typeof i) return i; + throw new TypeError('@@toPrimitive must return a primitive value.'); + } + return ('string' === e ? String : Number)(t); + })(t, 'string'); + return 'symbol' == typeof e ? e : e + ''; + })(e)) in t + ? Object.defineProperty(t, e, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (t[e] = n), + t + ); + } + var tn; + const en = document.getElementById('toc-bar'), + nn = document.getElementById('toc-solo-trigger'), + on = document.getElementsByClassName('toc-trigger'), + rn = document.getElementById('toc-popup'), + sn = document.getElementById('toc-popup-close'), + an = 'overflow-hidden', + ln = 'closing'; + class cn { + static initBar() { + new IntersectionObserver( + (t) => { + t.forEach((t) => { + en.classList.toggle('invisible', t.isIntersecting); + }); + }, + { rootMargin: `-${Je(cn, this, fn)._}px 0px 0px 0px` } + ).observe(nn), + (un._ = Je(cn, this, !1)); + } + static listenAnchors() { + [...document.getElementsByClassName('toc-link')].forEach((t) => { + t.onclick = () => this.hidePopup(); + }); + } + static refresh() { + Je(cn, this, un)._ && this.initComponents(), + tocbot.refresh(this.options), + this.listenAnchors(); + } + static get popupOpened() { + return rn.open; + } + static showPopup() { + this.lockScroll(!0), rn.showModal(); + rn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' }); + } + static hidePopup() { + rn.toggleAttribute(ln), + rn.addEventListener( + 'animationend', + () => { + rn.toggleAttribute(ln), rn.close(); + }, + { once: !0 } + ), + this.lockScroll(!1); + } + static lockScroll(t) { + document.documentElement.classList.toggle(an, t), + document.body.classList.toggle(an, t); + } + static clickBackdrop(t) { + if (rn.hasAttribute(ln)) return; + const e = t.target.getBoundingClientRect(); + (t.clientX < e.left || + t.clientX > e.right || + t.clientY < e.top || + t.clientY > e.bottom) && + this.hidePopup(); + } + static initComponents() { + this.initBar(), + [...on].forEach((t) => { + t.onclick = () => this.showPopup(); + }), + (rn.onclick = (t) => this.clickBackdrop(t)), + (sn.onclick = () => this.hidePopup()), + (rn.oncancel = (t) => { + t.preventDefault(), this.hidePopup(); + }); + } + static init() { + tocbot.init(this.options), this.listenAnchors(), this.initComponents(); + } + } + var un = { _: !0 }, + fn = { _: 48 }; + Ze(cn, 'options', { + tocSelector: '#toc-popup-content', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + collapseDepth: 4, + headingsOffset: Je((tn = cn), tn, fn)._ + }); + Ze( + class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + document.getElementById('toc-wrapper') && tocbot.init(this.options); + } + }, + 'options', + { + tocSelector: '#toc', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + headingsOffset: 32 + } + ), + matchMedia('(min-width: 1200px)'), + Theme.getThemeMapper('default', 'dark'); + const dn = document.getElementById('mode-toggle'); + const pn = document.getElementById('sidebar'), + hn = document.getElementById('sidebar-trigger'), + mn = document.getElementById('mask'); + class gn { + static toggle() { + (vn._ = Je(gn, this, !Je(gn, this, vn)._)), + document.body.toggleAttribute('sidebar-display', Je(gn, this, vn)._), + pn.classList.toggle('z-2', Je(gn, this, vn)._), + mn.classList.toggle('d-none', !Je(gn, this, vn)._); + } + } + var vn = { _: !1 }; + const bn = document.getElementById('sidebar-trigger'), + yn = document.getElementById('search-trigger'), + _n = document.getElementById('search-cancel'), + wn = document.querySelectorAll('#main-wrapper>.container>.row'), + En = document.getElementById('topbar-title'), + On = document.getElementById('search'), + xn = document.getElementById('search-result-wrapper'), + An = document.getElementById('search-results'), + Cn = document.getElementById('search-input'), + Tn = document.getElementById('search-hints'), + Ln = 'd-block', + Sn = 'd-none', + jn = 'input-focus', + kn = 'd-flex'; + class Dn { + static on() { + bn.classList.add(Sn), + En.classList.add(Sn), + yn.classList.add(Sn), + On.classList.add(kn), + _n.classList.add(Ln); + } + static off() { + _n.classList.remove(Ln), + On.classList.remove(kn), + bn.classList.remove(Sn), + En.classList.remove(Sn), + yn.classList.remove(Sn); + } + } + class Pn { + static on() { + this.resultVisible || + (xn.classList.remove(Sn), + wn.forEach((t) => { + t.classList.add(Sn); + }), + (this.resultVisible = !0)); + } + static off() { + this.resultVisible && + ((An.innerHTML = ''), + Tn.classList.contains(Sn) && Tn.classList.remove(Sn), + xn.classList.add(Sn), + wn.forEach((t) => { + t.classList.remove(Sn); + }), + (Cn.textContent = ''), + (this.resultVisible = !1)); + } + } + function Mn() { + return _n.classList.contains(Ln); + } + Ze(Pn, 'resultVisible', !1), + (hn.onclick = mn.onclick = () => gn.toggle()), + yn.addEventListener('click', () => { + Dn.on(), Pn.on(), Cn.focus(); + }), + _n.addEventListener('click', () => { + Dn.off(), Pn.off(); + }), + Cn.addEventListener('focus', () => { + On.classList.add(jn); + }), + Cn.addEventListener('focusout', () => { + On.classList.remove(jn); + }), + Cn.addEventListener('input', () => { + '' === Cn.value + ? Mn() + ? Tn.classList.remove(Sn) + : Pn.off() + : (Pn.on(), Mn() && Tn.classList.add(Sn)); + }), + dayjs.locale(Ge.locale), + dayjs.extend(window.dayjs_plugin_localizedFormat), + document.querySelectorAll(`[${Ge.attrTimestamp}]`).forEach((t) => { + const e = dayjs.unix(Ge.getTimestamp(t)), + n = e.format(Ge.getDateFormat(t)); + if ( + ((t.textContent = n), + t.removeAttribute(Ge.attrTimestamp), + t.removeAttribute(Ge.attrDateFormat), + t.hasAttribute('data-bs-toggle') && + 'tooltip' === t.getAttribute('data-bs-toggle')) + ) { + const n = e.format('llll'); + t.setAttribute('data-bs-title', n); + } + }), + dn && + dn.addEventListener('click', () => { + Theme.flip(); + }), + (function () { + const t = document.getElementById('back-to-top'); + window.addEventListener('scroll', () => { + window.scrollY > 50 + ? t.classList.add('show') + : t.classList.remove('show'); + }), + t.addEventListener('click', () => { + window.scrollTo({ top: 0 }); + }); + })(), + [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map( + (t) => new Xe(t) + ); +})(); diff --git a/assets/js/dist/page.min.js b/assets/js/dist/page.min.js index 76669b44d8b..be136d49ab2 100644 --- a/assets/js/dist/page.min.js +++ b/assets/js/dist/page.min.js @@ -1,4 +1,3354 @@ /*! * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ */ -!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},f=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void f(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),f(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${v++}`||e.uidEvent||v++}function E(e){const t=w(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=L(e);return _.has(r)||(r=e),[i,o,r]}function T(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=A(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const d=w(s,t.replace(h,"")),f=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return N(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return N(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);f.delegationSelector=r?n:null,f.callable=s,f.oneOff=o,f.uidEvent=d,c[d]=f,e.addEventListener(a,f,r)}function C(e,t,n,i,o){const r=A(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function O(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function L(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){T(e,t,n,i,!1)},one(e,t,n,i){T(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))O(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==L(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=N(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function N(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const j={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class B{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?j.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?j.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class P extends B{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const M=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=M(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=M(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=M(e);return t?I.find(t):[]}},H=".bs.collapse",F=`show${H}`,q=`shown${H}`,$=`hide${H}`,z=`hidden${H}`,R=`click${H}.data-api`,W="show",V="collapse",U="collapsing",Y=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends P{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,F).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(U),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V,W),this._element.style[t]="",S.trigger(this._element,q)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,$).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(V,W);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(W)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(Y,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,R,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),d(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",ee="right",te="left",ne="auto",ie=[J,Z,ee,te],oe="start",re="end",se="clippingParents",ae="viewport",le="popper",ce="reference",ue=ie.reduce((function(e,t){return e.concat([t+"-"+oe,t+"-"+re])}),[]),de=[].concat(ie,[ne]).reduce((function(e,t){return e.concat([t,t+"-"+oe,t+"-"+re])}),[]),fe="beforeRead",pe="read",he="afterRead",me="beforeMain",ge="main",be="afterMain",ve="beforeWrite",ye="write",_e="afterWrite",we=[fe,pe,he,me,ge,be,ve,ye,_e];function Ee(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xe(e){return e instanceof Ae(e).Element||e instanceof Element}function Te(e){return e instanceof Ae(e).HTMLElement||e instanceof HTMLElement}function Ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ae(e).ShadowRoot||e instanceof ShadowRoot)}var Oe={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Te(o)&&Ee(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Te(i)&&Ee(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Le(e){return e.split("-")[0]}var Se=Math.max,Ne=Math.min,ke=Math.round;function De(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function je(){return!/^((?!chrome|android).)*safari/i.test(De())}function Be(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Te(e)&&(o=e.offsetWidth>0&&ke(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&ke(i.height)/e.offsetHeight||1);var s=(xe(e)?Ae(e):window).visualViewport,a=!je()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,d=i.height/r;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function Pe(e){var t=Be(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Me(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ce(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ie(e){return Ae(e).getComputedStyle(e)}function He(e){return["table","td","th"].indexOf(Ee(e))>=0}function Fe(e){return((xe(e)?e.ownerDocument:e.document)||window.document).documentElement}function qe(e){return"html"===Ee(e)?e:e.assignedSlot||e.parentNode||(Ce(e)?e.host:null)||Fe(e)}function $e(e){return Te(e)&&"fixed"!==Ie(e).position?e.offsetParent:null}function ze(e){for(var t=Ae(e),n=$e(e);n&&He(n)&&"static"===Ie(n).position;)n=$e(n);return n&&("html"===Ee(n)||"body"===Ee(n)&&"static"===Ie(n).position)?t:n||function(e){var t=/firefox/i.test(De());if(/Trident/i.test(De())&&Te(e)&&"fixed"===Ie(e).position)return null;var n=qe(e);for(Ce(n)&&(n=n.host);Te(n)&&["html","body"].indexOf(Ee(n))<0;){var i=Ie(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function We(e,t,n){return Se(e,Ne(t,n))}function Ve(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ye={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Le(n.placement),l=Re(a),c=[te,ee].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ve("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,ie))}(o.padding,n),d=Pe(r),f="y"===l?J:te,p="y"===l?Z:ee,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=ze(r),b=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[f],_=b-d[c]-u[p],w=b/2-d[c]/2+v,E=We(y,w,_),A=l;n.modifiersData[i]=((t={})[A]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Me(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ke(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xe(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=s.x,p=void 0===f?0:f,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=te,_=J,w=window;if(c){var E=ze(n),A="clientHeight",x="clientWidth";if(E===Ae(n)&&"static"!==Ie(E=Fe(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===J||(o===te||o===ee)&&r===re)_=Z,m-=(d&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===te||(o===J||o===Z)&&r===re)y=ee,p-=(d&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var T,C=Object.assign({position:a},c&&Qe),O=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:ke(n*o)/o||0,y:ke(i*o)/o||0}}({x:p,y:m},Ae(n)):{x:p,y:m};return p=O.x,m=O.y,l?Object.assign({},C,((T={})[_]=v?"0":"",T[y]=b?"0":"",T.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",T)):Object.assign({},C,((t={})[_]=v?m+"px":"",t[y]=b?p+"px":"",t.transform="",t))}var Ge={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Le(t.placement),variation:Ke(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xe(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xe(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Je={passive:!0};var Ze={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Je)})),a&&l.addEventListener("resize",n.update,Je),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Je)})),a&&l.removeEventListener("resize",n.update,Je)}},data:{}},et={left:"right",right:"left",bottom:"top",top:"bottom"};function tt(e){return e.replace(/left|right|bottom|top/g,(function(e){return et[e]}))}var nt={start:"end",end:"start"};function it(e){return e.replace(/start|end/g,(function(e){return nt[e]}))}function ot(e){var t=Ae(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rt(e){return Be(Fe(e)).left+ot(e).scrollLeft}function st(e){var t=Ie(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function at(e){return["html","body","#document"].indexOf(Ee(e))>=0?e.ownerDocument.body:Te(e)&&st(e)?e:at(qe(e))}function lt(e,t){var n;void 0===t&&(t=[]);var i=at(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Ae(i),s=o?[r].concat(r.visualViewport||[],st(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(lt(qe(s)))}function ct(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ut(e,t,n){return t===ae?ct(function(e,t){var n=Ae(e),i=Fe(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=je();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+rt(e),y:l}}(e,n)):xe(t)?function(e,t){var n=Be(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ct(function(e){var t,n=Fe(e),i=ot(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Se(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Se(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+rt(e),l=-i.scrollTop;return"rtl"===Ie(o||n).direction&&(a+=Se(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(Fe(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=lt(qe(e)),n=["absolute","fixed"].indexOf(Ie(e).position)>=0&&Te(e)?ze(e):e;return xe(n)?t.filter((function(e){return xe(e)&&Me(e,n)&&"body"!==Ee(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ut(e,n,i);return t.top=Se(o.top,t.top),t.right=Ne(o.right,t.right),t.bottom=Ne(o.bottom,t.bottom),t.left=Se(o.left,t.left),t}),ut(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ft(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Le(o):null,s=o?Ke(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:t={x:a,y:n.y-i.height};break;case Z:t={x:a,y:n.y+n.height};break;case ee:t={x:n.x+n.width,y:l};break;case te:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case oe:t[c]=t[c]-(n[u]/2-i[u]/2);break;case re:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function pt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?se:a,c=n.rootBoundary,u=void 0===c?ae:c,d=n.elementContext,f=void 0===d?le:d,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Ve("number"!=typeof g?g:Ue(g,ie)),v=f===le?ce:le,y=e.rects.popper,_=e.elements[h?v:f],w=dt(xe(_)?_:_.contextElement||Fe(e.elements.popper),l,u,s),E=Be(e.elements.reference),A=ft({reference:E,element:y,placement:o}),x=ct(Object.assign({},y,A)),T=f===le?x:E,C={top:w.top-T.top+b.top,bottom:T.bottom-w.bottom+b.bottom,left:w.left-T.left+b.left,right:T.right-w.right+b.right},O=e.modifiersData.offset;if(f===le&&O){var L=O[o];Object.keys(C).forEach((function(e){var t=[ee,Z].indexOf(e)>=0?1:-1,n=[J,Z].indexOf(e)>=0?"y":"x";C[e]+=L[n]*t}))}return C}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Ke(i),d=u?a?ue:ue.filter((function(e){return Ke(e)===u})):ie,f=d.filter((function(e){return c.indexOf(e)>=0}));0===f.length&&(f=d);var p=f.reduce((function(t,n){return t[n]=pt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Le(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,b=Le(g),v=l||(b===g||!h?[tt(g)]:function(e){if(Le(e)===ne)return[];var t=tt(e);return[it(e),t,it(t)]}(g)),y=[g].concat(v).reduce((function(e,n){return e.concat(Le(n)===ne?ht(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,A=!0,x=y[0],T=0;T=0,N=S?"width":"height",k=pt(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:f,padding:c}),D=S?L?ee:te:L?Z:J;_[N]>w[N]&&(D=tt(D));var j=tt(D),B=[];if(r&&B.push(k[O]<=0),a&&B.push(k[D]<=0,k[j]<=0),B.every((function(e){return e}))){x=C,A=!1;break}E.set(C,B)}if(A)for(var P=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},M=h?3:1;M>0;M--){if("break"===P(M))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function gt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[J,ee,Z,te].some((function(t){return e[t]>=0}))}var vt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=pt(t,{elementContext:"reference"}),a=pt(t,{altBoundary:!0}),l=gt(s,i),c=gt(a,o,r),u=bt(l),d=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}};var yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Le(e),o=[te,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[te,ee].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var _t={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ft({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var wt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=void 0===f||f,h=n.tetherOffset,m=void 0===h?0:h,g=pt(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),b=Le(t.placement),v=Ke(t.placement),y=!v,_=Re(b),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,A=t.rects.reference,x=t.rects.popper,T="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),O=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(E){if(r){var S,N="y"===_?J:te,k="y"===_?Z:ee,D="y"===_?"height":"width",j=E[_],B=j+g[N],P=j-g[k],M=p?-x[D]/2:0,I=v===oe?A[D]:x[D],H=v===oe?-x[D]:-A[D],F=t.elements.arrow,q=p&&F?Pe(F):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=$[N],R=$[k],W=We(0,A[D],q[D]),V=y?A[D]/2-M-W-z-C.mainAxis:I-W-z-C.mainAxis,U=y?-A[D]/2+M+W+R+C.mainAxis:H+W+R+C.mainAxis,Y=t.elements.arrow&&ze(t.elements.arrow),K=Y?"y"===_?Y.clientTop||0:Y.clientLeft||0:0,Q=null!=(S=null==O?void 0:O[_])?S:0,X=j+U-Q,G=We(p?Ne(B,j+V-Q-K):B,j,p?Se(P,X):P);E[_]=G,L[_]=G-j}if(a){var ne,ie="x"===_?J:te,re="x"===_?Z:ee,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[re],ue=-1!==[J,te].indexOf(b),de=null!=(ne=null==O?void 0:O[w])?ne:0,fe=ue?le:se-A[ae]-x[ae]-de+C.altAxis,pe=ue?se+A[ae]+x[ae]-de-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=We(e,t,n);return i>n?n:i}(fe,se,pe):We(p?fe:le,se,p?pe:ce);E[w]=he,L[w]=he-se}t.modifiersData[i]=L}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var i,o,r=Te(t),s=Te(t)&&function(e){var t=e.getBoundingClientRect(),n=ke(t.width)/e.offsetWidth||1,i=ke(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=Fe(t),l=Be(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ee(t)||st(a))&&(c=(i=t)!==Ae(i)&&Te(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ot(i)),Te(t)?((u=Be(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=rt(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function Tt(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Dt.has(n)||Boolean(jt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Pt={allowList:kt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Mt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},It={entry:"(string|element|function|null)",selector:"(string|element)"};class Ht extends B{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Pt}static get DefaultType(){return Mt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},It)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Bt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return f(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ft=new Set(["sanitize","allowList","sanitizeFn"]),qt="fade",$t="show",zt=".tooltip-inner",Rt=".modal",Wt="hide.bs.modal",Vt="hover",Ut="focus",Yt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Kt={allowList:kt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xt extends P{constructor(e,t){if(void 0===Nt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Kt}static get DefaultType(){return Qt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Wt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Vt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(qt,$t),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(qt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ht({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[zt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(qt)}_isShown(){return this.tip&&this.tip.classList.contains($t)}_createPopper(e){const t=f(this._config.placement,[this,e,this._element]),n=Yt[t.toUpperCase()];return St(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return f(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...f(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Vt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Vt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Vt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Vt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Wt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=j.getDataAttributes(this._element);for(const e of Object.keys(t))Ft.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Xt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}d(Xt);const Gt=".code-header>button.button-copy",Jt="iconfont icon-copy",Zt="iconfont icon-check",en="timeout",tn="data-title-succeed",nn="data-bs-original-title",on=2e3;function rn(e){if(e.hasAttribute(en)){let t=e.getAttribute(en);if(Number(t)>Date.now())return!0}return!1}function sn(e){e.setAttribute(en,Date.now()+on)}function an(e){e.removeAttribute(en)}function ln(){const e=document.querySelectorAll(Gt);if(0===e.length)return;const t=new ClipboardJS(Gt,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map((e=>new Xt(e,{placement:"left"}))),t.on("success",(e=>{const t=e.trigger;(e.clearSelection(),rn(t))||(t.children[0].setAttribute("class",Zt),function(e){const t=e.getAttribute(tn);e.setAttribute(nn,t),Xt.getInstance(e).show()}(t),sn(t),setTimeout((()=>{!function(e){Xt.getInstance(e).hide(),e.removeAttribute(nn)}(t),function(e){e.children[0].setAttribute("class",Jt)}(t),an(t)}),on))}))}const cn="data-src",un="data-lqip",dn={SHIMMER:"shimmer",BLUR:"blur"};function fn(e){this.parentElement.classList.remove(e)}function pn(){this.complete&&(this.hasAttribute(un)?fn.call(this,dn.BLUR):fn.call(this,dn.SHIMMER))}function hn(){const e=this.getAttribute(cn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(cn)}const mn=".popup:not(.dark)",gn=".popup:not(.light)";let bn=mn;function vn(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function yn(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _n;const wn=document.getElementById("toc-bar"),En=document.getElementById("toc-solo-trigger"),An=document.getElementsByClassName("toc-trigger"),xn=document.getElementById("toc-popup"),Tn=document.getElementById("toc-popup-close"),Cn="overflow-hidden",On="closing";class Ln{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{wn.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${vn(Ln,this,Nn)._}px 0px 0px 0px`}).observe(En),Sn._=vn(Ln,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){vn(Ln,this,Sn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return xn.open}static showPopup(){this.lockScroll(!0),xn.showModal();xn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){xn.toggleAttribute(On),xn.addEventListener("animationend",(()=>{xn.toggleAttribute(On),xn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(Cn,e),document.body.classList.toggle(Cn,e)}static clickBackdrop(e){if(xn.hasAttribute(On))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...An].forEach((e=>{e.onclick=()=>this.showPopup()})),xn.onclick=e=>this.clickBackdrop(e),Tn.onclick=()=>this.hidePopup(),xn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Sn={_:!0},Nn={_:48};yn(Ln,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:vn(_n=Ln,_n,Nn)._});yn(class{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}},"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32}),matchMedia("(min-width: 1200px)");const kn="mermaid",Dn=Theme.getThemeMapper("default","dark");function jn(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(kn)].forEach((e=>{const t=e.previousSibling.children.item(0).innerHTML;e.textContent=t,e.removeAttribute("data-processed")}));const e=Dn[Theme.visualState];mermaid.initialize({theme:e}),mermaid.init(null,`.${kn}`)}}function Bn(e){const t=e.textContent,n=e.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(kn);const o=document.createTextNode(t);i.appendChild(o),n.after(i)}const Pn=document.getElementById("mode-toggle");const Mn="lock",In=2e4;function Hn(e){e.removeAttribute(Mn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Fn="lock",qn=2e4;function $n(e){e.removeAttribute(Fn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function zn(){console.logs.push(Array.from(arguments)),console.stdlog.apply(console,arguments)}const Rn="lock",Wn=2e4;function Vn(e){e.removeAttribute(Rn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Un="lock",Yn=2e4;function Kn(e){e.removeAttribute(Un),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function Qn(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Kn(n);o=r[0].innerText}let s={version:"stable",optimize:"0",code:o,edition:"2021"};-1!==o.indexOf("#![feature")&&(s.version="nightly"),function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e4;return Promise.race([fetch(e,t),new Promise(((e,t)=>setTimeout((()=>t(new Error("timeout"))),n)))])}("https://play.rust-lang.org/evaluate.json",{headers:{"Content-Type":"application/json"},method:"POST",mode:"cors",body:JSON.stringify(s)}).then((e=>e.json())).then((e=>{t.innerText=e.result,Kn(n)})).catch((e=>{t.innerText=i+e.message,Kn(n)}))}const Xn=document.getElementById("sidebar"),Gn=document.getElementById("sidebar-trigger"),Jn=document.getElementById("mask");class Zn{static toggle(){ei._=vn(Zn,this,!vn(Zn,this,ei)._),document.body.toggleAttribute("sidebar-display",vn(Zn,this,ei)._),Xn.classList.toggle("z-2",vn(Zn,this,ei)._),Jn.classList.toggle("d-none",!vn(Zn,this,ei)._)}}var ei={_:!1};const ti=document.getElementById("sidebar-trigger"),ni=document.getElementById("search-trigger"),ii=document.getElementById("search-cancel"),oi=document.querySelectorAll("#main-wrapper>.container>.row"),ri=document.getElementById("topbar-title"),si=document.getElementById("search"),ai=document.getElementById("search-result-wrapper"),li=document.getElementById("search-results"),ci=document.getElementById("search-input"),ui=document.getElementById("search-hints"),di="d-block",fi="d-none",pi="input-focus",hi="d-flex";class mi{static on(){ti.classList.add(fi),ri.classList.add(fi),ni.classList.add(fi),si.classList.add(hi),ii.classList.add(di)}static off(){ii.classList.remove(di),si.classList.remove(hi),ti.classList.remove(fi),ri.classList.remove(fi),ni.classList.remove(fi)}}class gi{static on(){this.resultVisible||(ai.classList.remove(fi),oi.forEach((e=>{e.classList.add(fi)})),this.resultVisible=!0)}static off(){this.resultVisible&&(li.innerHTML="",ui.classList.contains(fi)&&ui.classList.remove(fi),ai.classList.add(fi),oi.forEach((e=>{e.classList.remove(fi)})),ci.textContent="",this.resultVisible=!1)}}function bi(){return ii.classList.contains(di)}yn(gi,"resultVisible",!1),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach((e=>{e.addEventListener("load",pn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((e=>{e.complete&&fn.call(e,dn.SHIMMER)}));const t=document.querySelectorAll(`article img[${un}="true"]`);t.length&&t.forEach((e=>{hn.call(e)}))}(),function(){if(null===document.querySelector(".popup"))return;const e=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(bn=gn);let t=GLightbox({selector:`${bn}`});if(e&&Theme.switchable){let e=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(e,t){bn=bn===mn?gn:mn,null===t&&(t=GLightbox({selector:`${bn}`})),[e,t]=[t,e]}(t,e)}))}}(),Gn.onclick=Jn.onclick=()=>Zn.toggle(),ni.addEventListener("click",(()=>{mi.on(),gi.on(),ci.focus()})),ii.addEventListener("click",(()=>{mi.off(),gi.off()})),ci.addEventListener("focus",(()=>{si.classList.add(pi)})),ci.addEventListener("focusout",(()=>{si.classList.remove(pi)})),ci.addEventListener("input",(()=>{""===ci.value?bi()?ui.classList.remove(fi):gi.off():(gi.on(),bi()&&ui.classList.add(fi))})),ln(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",(e=>{const t=e.target;rn(t)||navigator.clipboard.writeText(window.location.href).then((()=>{const e=t.getAttribute(nn),n=t.getAttribute(tn);t.setAttribute(nn,n),Xt.getInstance(t).show(),sn(t),setTimeout((()=>{t.setAttribute(nn,e),an(t)}),on)}))})),e.addEventListener("mouseleave",(e=>{Xt.getInstance(e.target).hide()})))}(),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let e={theme:Dn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Bn),mermaid.initialize(e),Theme.switchable&&window.addEventListener("message",jn)}(),Pn&&Pn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Xt(e))),[...document.getElementsByClassName("highlighter-rouge")].forEach((e=>{const t=e.getAttribute("highlight-lines");if(t&&t.length>0){let n=[];(","+t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach((function(e){let t=e.split("-"),i=parseInt(t[0]);if(t.length>1){let e=parseInt(t[1]);if(e>=i)for(let t=i;t<=e;t++)n.push(t)}else 1==t.length&&n.push(i)}));let i=e.getElementsByTagName("pre");!function(e,t){let n=null,i=1;for(let o=e.firstChild;null!=o;o=o.nextSibling){null==n&&(n=o);let r=o.textContent.split(/\n/g);if((r||[]).length>1){let s=r.length-1,a=[];for(let t=0;t{e.onclick=()=>{if(function(e){if(e.hasAttribute(Mn)){let t=e.getAttribute(Mn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Mn,Date.now()+In),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Hn(n);o=r[0].innerText}let s={cmd:"g++ -std=c++20 main.cpp && ./a.out",src:o},a=new XMLHttpRequest;a.open("POST","https://coliru.stacked-crooked.com/compile",!0),a.onload=()=>{t.innerText=a.responseText,Hn(n)},a.onerror=()=>{t.innerText=i+a.responseText,Hn(n)},a.send(JSON.stringify(s))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-javascript")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Fn)){let t=e.getAttribute(Fn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Fn,Date.now()+qn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i);let o,r=e.parentNode.nextElementSibling.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void $n(e);o=r[0].innerText}let s=new Function(o);console.log!=zn&&(console.stdlog=console.log.bind(console),console.log=zn),console.logs=[],s(),i.innerText=console.logs.join("\n"),$n(e)}})),[...document.querySelectorAll(".code-header button.button-run-python")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Rn)){let t=e.getAttribute(Rn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Rn,Date.now()+Wn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Vn(n);o=r[0].innerText}let s=[{code:o,file_name:"main.py"}];socket=io("https://repl.online-cpp.com",{transports:["websocket"],timeout:Wn,"connect timeout":3e3,reconnection:!1,query:{type:"script",lang:"python3"}}),socket.emit("code",s,"","main.py"),socket.on("exit",(function(e,t){Vn(n)})),socket.on("output",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=n})),socket.on("err",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=i+"\n"+n})),socket.on("connect_error",(function(e){t.innerText=i+e.message,socket.close(),Vn(n)}))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-rust")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Un)){let t=e.getAttribute(Un);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Un,Date.now()+Yn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),Qn(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}}))}(); +!(function () { + 'use strict'; + const e = new Map(); + var t = { + set(t, n, i) { + e.has(t) || e.set(t, new Map()); + const o = e.get(t); + o.has(n) || 0 === o.size + ? o.set(n, i) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(o.keys())[0] + }.` + ); + }, + get: (t, n) => (e.has(t) && e.get(t).get(n)) || null, + remove(t, n) { + if (!e.has(t)) return; + const i = e.get(t); + i.delete(n), 0 === i.size && e.delete(t); + } + }; + const n = 'transitionend', + i = (e) => ( + e && + window.CSS && + window.CSS.escape && + (e = e.replace(/#([^\s"#']+)/g, (e, t) => `#${CSS.escape(t)}`)), + e + ), + o = (e) => + !(!e || 'object' != typeof e) && + (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType), + r = (e) => + o(e) + ? e.jquery + ? e[0] + : e + : 'string' == typeof e && e.length > 0 + ? document.querySelector(i(e)) + : null, + s = (e) => { + if (!document.documentElement.attachShadow) return null; + if ('function' == typeof e.getRootNode) { + const t = e.getRootNode(); + return t instanceof ShadowRoot ? t : null; + } + return e instanceof ShadowRoot + ? e + : e.parentNode + ? s(e.parentNode) + : null; + }, + a = () => {}, + l = () => + window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') + ? window.jQuery + : null, + c = [], + u = () => 'rtl' === document.documentElement.dir, + d = (e) => { + var t; + (t = () => { + const t = l(); + if (t) { + const n = e.NAME, + i = t.fn[n]; + (t.fn[n] = e.jQueryInterface), + (t.fn[n].Constructor = e), + (t.fn[n].noConflict = () => ((t.fn[n] = i), e.jQueryInterface)); + } + }), + 'loading' === document.readyState + ? (c.length || + document.addEventListener('DOMContentLoaded', () => { + for (const e of c) e(); + }), + c.push(t)) + : t(); + }, + f = function (e) { + let t = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e; + return 'function' == typeof e + ? e( + ...(arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : []) + ) + : t; + }, + p = function (e, t) { + if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2])) + return void f(e); + const i = + ((e) => { + if (!e) return 0; + let { transitionDuration: t, transitionDelay: n } = + window.getComputedStyle(e); + const i = Number.parseFloat(t), + o = Number.parseFloat(n); + return i || o + ? ((t = t.split(',')[0]), + (n = n.split(',')[0]), + 1e3 * (Number.parseFloat(t) + Number.parseFloat(n))) + : 0; + })(t) + 5; + let o = !1; + const r = (i) => { + let { target: s } = i; + s === t && ((o = !0), t.removeEventListener(n, r), f(e)); + }; + t.addEventListener(n, r), + setTimeout(() => { + o || t.dispatchEvent(new Event(n)); + }, i); + }, + h = /[^.]*(?=\..*)\.|.*/, + m = /\..*/, + g = /::\d+$/, + b = {}; + let v = 1; + const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, + _ = new Set([ + 'click', + 'dblclick', + 'mouseup', + 'mousedown', + 'contextmenu', + 'mousewheel', + 'DOMMouseScroll', + 'mouseover', + 'mouseout', + 'mousemove', + 'selectstart', + 'selectend', + 'keydown', + 'keypress', + 'keyup', + 'orientationchange', + 'touchstart', + 'touchmove', + 'touchend', + 'touchcancel', + 'pointerdown', + 'pointermove', + 'pointerup', + 'pointerleave', + 'pointercancel', + 'gesturestart', + 'gesturechange', + 'gestureend', + 'focus', + 'blur', + 'change', + 'reset', + 'select', + 'submit', + 'focusin', + 'focusout', + 'load', + 'unload', + 'beforeunload', + 'resize', + 'move', + 'DOMContentLoaded', + 'readystatechange', + 'error', + 'abort', + 'scroll' + ]); + function w(e, t) { + return (t && `${t}::${v++}`) || e.uidEvent || v++; + } + function E(e) { + const t = w(e); + return (e.uidEvent = t), (b[t] = b[t] || {}), b[t]; + } + function A(e, t) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; + return Object.values(e).find( + (e) => e.callable === t && e.delegationSelector === n + ); + } + function x(e, t, n) { + const i = 'string' == typeof t, + o = i ? n : t || n; + let r = L(e); + return _.has(r) || (r = e), [i, o, r]; + } + function T(e, t, n, i, o) { + if ('string' != typeof t || !e) return; + let [r, s, a] = x(t, n, i); + if (t in y) { + const e = (e) => + function (t) { + if ( + !t.relatedTarget || + (t.relatedTarget !== t.delegateTarget && + !t.delegateTarget.contains(t.relatedTarget)) + ) + return e.call(this, t); + }; + s = e(s); + } + const l = E(e), + c = l[a] || (l[a] = {}), + u = A(c, s, r ? n : null); + if (u) return void (u.oneOff = u.oneOff && o); + const d = w(s, t.replace(h, '')), + f = r + ? (function (e, t, n) { + return function i(o) { + const r = e.querySelectorAll(t); + for (let { target: s } = o; s && s !== this; s = s.parentNode) + for (const a of r) + if (a === s) + return ( + N(o, { delegateTarget: s }), + i.oneOff && S.off(e, o.type, t, n), + n.apply(s, [o]) + ); + }; + })(e, n, s) + : (function (e, t) { + return function n(i) { + return ( + N(i, { delegateTarget: e }), + n.oneOff && S.off(e, i.type, t), + t.apply(e, [i]) + ); + }; + })(e, s); + (f.delegationSelector = r ? n : null), + (f.callable = s), + (f.oneOff = o), + (f.uidEvent = d), + (c[d] = f), + e.addEventListener(a, f, r); + } + function C(e, t, n, i, o) { + const r = A(t[n], i, o); + r && (e.removeEventListener(n, r, Boolean(o)), delete t[n][r.uidEvent]); + } + function O(e, t, n, i) { + const o = t[n] || {}; + for (const [r, s] of Object.entries(o)) + r.includes(i) && C(e, t, n, s.callable, s.delegationSelector); + } + function L(e) { + return (e = e.replace(m, '')), y[e] || e; + } + const S = { + on(e, t, n, i) { + T(e, t, n, i, !1); + }, + one(e, t, n, i) { + T(e, t, n, i, !0); + }, + off(e, t, n, i) { + if ('string' != typeof t || !e) return; + const [o, r, s] = x(t, n, i), + a = s !== t, + l = E(e), + c = l[s] || {}, + u = t.startsWith('.'); + if (void 0 === r) { + if (u) for (const n of Object.keys(l)) O(e, l, n, t.slice(1)); + for (const [n, i] of Object.entries(c)) { + const o = n.replace(g, ''); + (a && !t.includes(o)) || C(e, l, s, i.callable, i.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + C(e, l, s, r, o ? n : null); + } + }, + trigger(e, t, n) { + if ('string' != typeof t || !e) return null; + const i = l(); + let o = null, + r = !0, + s = !0, + a = !1; + t !== L(t) && + i && + ((o = i.Event(t, n)), + i(e).trigger(o), + (r = !o.isPropagationStopped()), + (s = !o.isImmediatePropagationStopped()), + (a = o.isDefaultPrevented())); + const c = N(new Event(t, { bubbles: r, cancelable: !0 }), n); + return ( + a && c.preventDefault(), + s && e.dispatchEvent(c), + c.defaultPrevented && o && o.preventDefault(), + c + ); + } + }; + function N(e) { + let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + for (const [n, i] of Object.entries(t)) + try { + e[n] = i; + } catch { + Object.defineProperty(e, n, { configurable: !0, get: () => i }); + } + return e; + } + function k(e) { + if ('true' === e) return !0; + if ('false' === e) return !1; + if (e === Number(e).toString()) return Number(e); + if ('' === e || 'null' === e) return null; + if ('string' != typeof e) return e; + try { + return JSON.parse(decodeURIComponent(e)); + } catch { + return e; + } + } + function D(e) { + return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`); + } + const j = { + setDataAttribute(e, t, n) { + e.setAttribute(`data-bs-${D(t)}`, n); + }, + removeDataAttribute(e, t) { + e.removeAttribute(`data-bs-${D(t)}`); + }, + getDataAttributes(e) { + if (!e) return {}; + const t = {}, + n = Object.keys(e.dataset).filter( + (e) => e.startsWith('bs') && !e.startsWith('bsConfig') + ); + for (const i of n) { + let n = i.replace(/^bs/, ''); + (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (t[n] = k(e.dataset[i])); + } + return t; + }, + getDataAttribute: (e, t) => k(e.getAttribute(`data-bs-${D(t)}`)) + }; + class B { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(e) { + return ( + (e = this._mergeConfigObj(e)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + _configAfterMerge(e) { + return e; + } + _mergeConfigObj(e, t) { + const n = o(t) ? j.getDataAttribute(t, 'config') : {}; + return { + ...this.constructor.Default, + ...('object' == typeof n ? n : {}), + ...(o(t) ? j.getDataAttributes(t) : {}), + ...('object' == typeof e ? e : {}) + }; + } + _typeCheckConfig(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : this.constructor.DefaultType; + for (const [i, r] of Object.entries(t)) { + const t = e[i], + s = o(t) + ? 'element' + : null == (n = t) + ? `${n}` + : Object.prototype.toString + .call(n) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(r).test(s)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".` + ); + } + var n; + } + } + class P extends B { + constructor(e, n) { + super(), + (e = r(e)) && + ((this._element = e), + (this._config = this._getConfig(n)), + t.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + t.remove(this._element, this.constructor.DATA_KEY), + S.off(this._element, this.constructor.EVENT_KEY); + for (const e of Object.getOwnPropertyNames(this)) this[e] = null; + } + _queueCallback(e, t) { + p( + e, + t, + !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] + ); + } + _getConfig(e) { + return ( + (e = this._mergeConfigObj(e, this._element)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + static getInstance(e) { + return t.get(r(e), this.DATA_KEY); + } + static getOrCreateInstance(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + return ( + this.getInstance(e) || new this(e, 'object' == typeof t ? t : null) + ); + } + static get VERSION() { + return '5.3.3'; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(e) { + return `${e}${this.EVENT_KEY}`; + } + } + const M = (e) => { + let t = e.getAttribute('data-bs-target'); + if (!t || '#' === t) { + let n = e.getAttribute('href'); + if (!n || (!n.includes('#') && !n.startsWith('.'))) return null; + n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`), + (t = n && '#' !== n ? n.trim() : null); + } + return t + ? t + .split(',') + .map((e) => i(e)) + .join(',') + : null; + }, + I = { + find(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return [].concat(...Element.prototype.querySelectorAll.call(t, e)); + }, + findOne(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return Element.prototype.querySelector.call(t, e); + }, + children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)), + parents(e, t) { + const n = []; + let i = e.parentNode.closest(t); + for (; i; ) n.push(i), (i = i.parentNode.closest(t)); + return n; + }, + prev(e, t) { + let n = e.previousElementSibling; + for (; n; ) { + if (n.matches(t)) return [n]; + n = n.previousElementSibling; + } + return []; + }, + next(e, t) { + let n = e.nextElementSibling; + for (; n; ) { + if (n.matches(t)) return [n]; + n = n.nextElementSibling; + } + return []; + }, + focusableChildren(e) { + const t = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ] + .map((e) => `${e}:not([tabindex^="-"])`) + .join(','); + return this.find(t, e).filter( + (e) => + !((e) => + !e || + e.nodeType !== Node.ELEMENT_NODE || + !!e.classList.contains('disabled') || + (void 0 !== e.disabled + ? e.disabled + : e.hasAttribute('disabled') && + 'false' !== e.getAttribute('disabled')))(e) && + ((e) => { + if (!o(e) || 0 === e.getClientRects().length) return !1; + const t = + 'visible' === + getComputedStyle(e).getPropertyValue('visibility'), + n = e.closest('details:not([open])'); + if (!n) return t; + if (n !== e) { + const t = e.closest('summary'); + if (t && t.parentNode !== n) return !1; + if (null === t) return !1; + } + return t; + })(e) + ); + }, + getSelectorFromElement(e) { + const t = M(e); + return t && I.findOne(t) ? t : null; + }, + getElementFromSelector(e) { + const t = M(e); + return t ? I.findOne(t) : null; + }, + getMultipleElementsFromSelector(e) { + const t = M(e); + return t ? I.find(t) : []; + } + }, + H = '.bs.collapse', + F = `show${H}`, + q = `shown${H}`, + $ = `hide${H}`, + z = `hidden${H}`, + R = `click${H}.data-api`, + W = 'show', + V = 'collapse', + U = 'collapsing', + Y = `:scope .${V} .${V}`, + K = '[data-bs-toggle="collapse"]', + Q = { parent: null, toggle: !0 }, + X = { parent: '(null|element)', toggle: 'boolean' }; + class G extends P { + constructor(e, t) { + super(e, t), (this._isTransitioning = !1), (this._triggerArray = []); + const n = I.find(K); + for (const e of n) { + const t = I.getSelectorFromElement(e), + n = I.find(t).filter((e) => e === this._element); + null !== t && n.length && this._triggerArray.push(e); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), + this._config.toggle && this.toggle(); + } + static get Default() { + return Q; + } + static get DefaultType() { + return X; + } + static get NAME() { + return 'collapse'; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let e = []; + if ( + (this._config.parent && + (e = this._getFirstLevelChildren( + '.collapse.show, .collapse.collapsing' + ) + .filter((e) => e !== this._element) + .map((e) => G.getOrCreateInstance(e, { toggle: !1 }))), + e.length && e[0]._isTransitioning) + ) + return; + if (S.trigger(this._element, F).defaultPrevented) return; + for (const t of e) t.hide(); + const t = this._getDimension(); + this._element.classList.remove(V), + this._element.classList.add(U), + (this._element.style[t] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const n = `scroll${t[0].toUpperCase() + t.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(U), + this._element.classList.add(V, W), + (this._element.style[t] = ''), + S.trigger(this._element, q); + }, + this._element, + !0 + ), + (this._element.style[t] = `${this._element[n]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (S.trigger(this._element, $).defaultPrevented) return; + const e = this._getDimension(); + (this._element.style[e] = `${ + this._element.getBoundingClientRect()[e] + }px`), + this._element.offsetHeight, + this._element.classList.add(U), + this._element.classList.remove(V, W); + for (const e of this._triggerArray) { + const t = I.getElementFromSelector(e); + t && !this._isShown(t) && this._addAriaAndCollapsedClass([e], !1); + } + this._isTransitioning = !0; + (this._element.style[e] = ''), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(U), + this._element.classList.add(V), + S.trigger(this._element, z); + }, + this._element, + !0 + ); + } + _isShown() { + return ( + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : this._element + ).classList.contains(W); + } + _configAfterMerge(e) { + return (e.toggle = Boolean(e.toggle)), (e.parent = r(e.parent)), e; + } + _getDimension() { + return this._element.classList.contains('collapse-horizontal') + ? 'width' + : 'height'; + } + _initializeChildren() { + if (!this._config.parent) return; + const e = this._getFirstLevelChildren(K); + for (const t of e) { + const e = I.getElementFromSelector(t); + e && this._addAriaAndCollapsedClass([t], this._isShown(e)); + } + } + _getFirstLevelChildren(e) { + const t = I.find(Y, this._config.parent); + return I.find(e, this._config.parent).filter((e) => !t.includes(e)); + } + _addAriaAndCollapsedClass(e, t) { + if (e.length) + for (const n of e) + n.classList.toggle('collapsed', !t), + n.setAttribute('aria-expanded', t); + } + static jQueryInterface(e) { + const t = {}; + return ( + 'string' == typeof e && /show|hide/.test(e) && (t.toggle = !1), + this.each(function () { + const n = G.getOrCreateInstance(this, t); + if ('string' == typeof e) { + if (void 0 === n[e]) throw new TypeError(`No method named "${e}"`); + n[e](); + } + }) + ); + } + } + S.on(document, R, K, function (e) { + ('A' === e.target.tagName || + (e.delegateTarget && 'A' === e.delegateTarget.tagName)) && + e.preventDefault(); + for (const e of I.getMultipleElementsFromSelector(this)) + G.getOrCreateInstance(e, { toggle: !1 }).toggle(); + }), + d(G), + document.getElementsByClassName('collapse'); + var J = 'top', + Z = 'bottom', + ee = 'right', + te = 'left', + ne = 'auto', + ie = [J, Z, ee, te], + oe = 'start', + re = 'end', + se = 'clippingParents', + ae = 'viewport', + le = 'popper', + ce = 'reference', + ue = ie.reduce(function (e, t) { + return e.concat([t + '-' + oe, t + '-' + re]); + }, []), + de = [].concat(ie, [ne]).reduce(function (e, t) { + return e.concat([t, t + '-' + oe, t + '-' + re]); + }, []), + fe = 'beforeRead', + pe = 'read', + he = 'afterRead', + me = 'beforeMain', + ge = 'main', + be = 'afterMain', + ve = 'beforeWrite', + ye = 'write', + _e = 'afterWrite', + we = [fe, pe, he, me, ge, be, ve, ye, _e]; + function Ee(e) { + return e ? (e.nodeName || '').toLowerCase() : null; + } + function Ae(e) { + if (null == e) return window; + if ('[object Window]' !== e.toString()) { + var t = e.ownerDocument; + return (t && t.defaultView) || window; + } + return e; + } + function xe(e) { + return e instanceof Ae(e).Element || e instanceof Element; + } + function Te(e) { + return e instanceof Ae(e).HTMLElement || e instanceof HTMLElement; + } + function Ce(e) { + return ( + 'undefined' != typeof ShadowRoot && + (e instanceof Ae(e).ShadowRoot || e instanceof ShadowRoot) + ); + } + var Oe = { + name: 'applyStyles', + enabled: !0, + phase: 'write', + fn: function (e) { + var t = e.state; + Object.keys(t.elements).forEach(function (e) { + var n = t.styles[e] || {}, + i = t.attributes[e] || {}, + o = t.elements[e]; + Te(o) && + Ee(o) && + (Object.assign(o.style, n), + Object.keys(i).forEach(function (e) { + var t = i[e]; + !1 === t + ? o.removeAttribute(e) + : o.setAttribute(e, !0 === t ? '' : t); + })); + }); + }, + effect: function (e) { + var t = e.state, + n = { + popper: { + position: t.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { position: 'absolute' }, + reference: {} + }; + return ( + Object.assign(t.elements.popper.style, n.popper), + (t.styles = n), + t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), + function () { + Object.keys(t.elements).forEach(function (e) { + var i = t.elements[e], + o = t.attributes[e] || {}, + r = Object.keys( + t.styles.hasOwnProperty(e) ? t.styles[e] : n[e] + ).reduce(function (e, t) { + return (e[t] = ''), e; + }, {}); + Te(i) && + Ee(i) && + (Object.assign(i.style, r), + Object.keys(o).forEach(function (e) { + i.removeAttribute(e); + })); + }); + } + ); + }, + requires: ['computeStyles'] + }; + function Le(e) { + return e.split('-')[0]; + } + var Se = Math.max, + Ne = Math.min, + ke = Math.round; + function De() { + var e = navigator.userAgentData; + return null != e && e.brands && Array.isArray(e.brands) + ? e.brands + .map(function (e) { + return e.brand + '/' + e.version; + }) + .join(' ') + : navigator.userAgent; + } + function je() { + return !/^((?!chrome|android).)*safari/i.test(De()); + } + function Be(e, t, n) { + void 0 === t && (t = !1), void 0 === n && (n = !1); + var i = e.getBoundingClientRect(), + o = 1, + r = 1; + t && + Te(e) && + ((o = (e.offsetWidth > 0 && ke(i.width) / e.offsetWidth) || 1), + (r = (e.offsetHeight > 0 && ke(i.height) / e.offsetHeight) || 1)); + var s = (xe(e) ? Ae(e) : window).visualViewport, + a = !je() && n, + l = (i.left + (a && s ? s.offsetLeft : 0)) / o, + c = (i.top + (a && s ? s.offsetTop : 0)) / r, + u = i.width / o, + d = i.height / r; + return { + width: u, + height: d, + top: c, + right: l + u, + bottom: c + d, + left: l, + x: l, + y: c + }; + } + function Pe(e) { + var t = Be(e), + n = e.offsetWidth, + i = e.offsetHeight; + return ( + Math.abs(t.width - n) <= 1 && (n = t.width), + Math.abs(t.height - i) <= 1 && (i = t.height), + { x: e.offsetLeft, y: e.offsetTop, width: n, height: i } + ); + } + function Me(e, t) { + var n = t.getRootNode && t.getRootNode(); + if (e.contains(t)) return !0; + if (n && Ce(n)) { + var i = t; + do { + if (i && e.isSameNode(i)) return !0; + i = i.parentNode || i.host; + } while (i); + } + return !1; + } + function Ie(e) { + return Ae(e).getComputedStyle(e); + } + function He(e) { + return ['table', 'td', 'th'].indexOf(Ee(e)) >= 0; + } + function Fe(e) { + return ((xe(e) ? e.ownerDocument : e.document) || window.document) + .documentElement; + } + function qe(e) { + return 'html' === Ee(e) + ? e + : e.assignedSlot || e.parentNode || (Ce(e) ? e.host : null) || Fe(e); + } + function $e(e) { + return Te(e) && 'fixed' !== Ie(e).position ? e.offsetParent : null; + } + function ze(e) { + for (var t = Ae(e), n = $e(e); n && He(n) && 'static' === Ie(n).position; ) + n = $e(n); + return n && + ('html' === Ee(n) || ('body' === Ee(n) && 'static' === Ie(n).position)) + ? t + : n || + (function (e) { + var t = /firefox/i.test(De()); + if (/Trident/i.test(De()) && Te(e) && 'fixed' === Ie(e).position) + return null; + var n = qe(e); + for ( + Ce(n) && (n = n.host); + Te(n) && ['html', 'body'].indexOf(Ee(n)) < 0; + + ) { + var i = Ie(n); + if ( + 'none' !== i.transform || + 'none' !== i.perspective || + 'paint' === i.contain || + -1 !== ['transform', 'perspective'].indexOf(i.willChange) || + (t && 'filter' === i.willChange) || + (t && i.filter && 'none' !== i.filter) + ) + return n; + n = n.parentNode; + } + return null; + })(e) || + t; + } + function Re(e) { + return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y'; + } + function We(e, t, n) { + return Se(e, Ne(t, n)); + } + function Ve(e) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e); + } + function Ue(e, t) { + return t.reduce(function (t, n) { + return (t[n] = e), t; + }, {}); + } + var Ye = { + name: 'arrow', + enabled: !0, + phase: 'main', + fn: function (e) { + var t, + n = e.state, + i = e.name, + o = e.options, + r = n.elements.arrow, + s = n.modifiersData.popperOffsets, + a = Le(n.placement), + l = Re(a), + c = [te, ee].indexOf(a) >= 0 ? 'height' : 'width'; + if (r && s) { + var u = (function (e, t) { + return Ve( + 'number' != + typeof (e = + 'function' == typeof e + ? e(Object.assign({}, t.rects, { placement: t.placement })) + : e) + ? e + : Ue(e, ie) + ); + })(o.padding, n), + d = Pe(r), + f = 'y' === l ? J : te, + p = 'y' === l ? Z : ee, + h = + n.rects.reference[c] + + n.rects.reference[l] - + s[l] - + n.rects.popper[c], + m = s[l] - n.rects.reference[l], + g = ze(r), + b = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0, + v = h / 2 - m / 2, + y = u[f], + _ = b - d[c] - u[p], + w = b / 2 - d[c] / 2 + v, + E = We(y, w, _), + A = l; + n.modifiersData[i] = (((t = {})[A] = E), (t.centerOffset = E - w), t); + } + }, + effect: function (e) { + var t = e.state, + n = e.options.element, + i = void 0 === n ? '[data-popper-arrow]' : n; + null != i && + ('string' != typeof i || (i = t.elements.popper.querySelector(i))) && + Me(t.elements.popper, i) && + (t.elements.arrow = i); + }, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + function Ke(e) { + return e.split('-')[1]; + } + var Qe = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; + function Xe(e) { + var t, + n = e.popper, + i = e.popperRect, + o = e.placement, + r = e.variation, + s = e.offsets, + a = e.position, + l = e.gpuAcceleration, + c = e.adaptive, + u = e.roundOffsets, + d = e.isFixed, + f = s.x, + p = void 0 === f ? 0 : f, + h = s.y, + m = void 0 === h ? 0 : h, + g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m }; + (p = g.x), (m = g.y); + var b = s.hasOwnProperty('x'), + v = s.hasOwnProperty('y'), + y = te, + _ = J, + w = window; + if (c) { + var E = ze(n), + A = 'clientHeight', + x = 'clientWidth'; + if ( + (E === Ae(n) && + 'static' !== Ie((E = Fe(n))).position && + 'absolute' === a && + ((A = 'scrollHeight'), (x = 'scrollWidth')), + o === J || ((o === te || o === ee) && r === re)) + ) + (_ = Z), + (m -= + (d && E === w && w.visualViewport + ? w.visualViewport.height + : E[A]) - i.height), + (m *= l ? 1 : -1); + if (o === te || ((o === J || o === Z) && r === re)) + (y = ee), + (p -= + (d && E === w && w.visualViewport ? w.visualViewport.width : E[x]) - + i.width), + (p *= l ? 1 : -1); + } + var T, + C = Object.assign({ position: a }, c && Qe), + O = + !0 === u + ? (function (e, t) { + var n = e.x, + i = e.y, + o = t.devicePixelRatio || 1; + return { x: ke(n * o) / o || 0, y: ke(i * o) / o || 0 }; + })({ x: p, y: m }, Ae(n)) + : { x: p, y: m }; + return ( + (p = O.x), + (m = O.y), + l + ? Object.assign( + {}, + C, + (((T = {})[_] = v ? '0' : ''), + (T[y] = b ? '0' : ''), + (T.transform = + (w.devicePixelRatio || 1) <= 1 + ? 'translate(' + p + 'px, ' + m + 'px)' + : 'translate3d(' + p + 'px, ' + m + 'px, 0)'), + T) + ) + : Object.assign( + {}, + C, + (((t = {})[_] = v ? m + 'px' : ''), + (t[y] = b ? p + 'px' : ''), + (t.transform = ''), + t) + ) + ); + } + var Ge = { + name: 'computeStyles', + enabled: !0, + phase: 'beforeWrite', + fn: function (e) { + var t = e.state, + n = e.options, + i = n.gpuAcceleration, + o = void 0 === i || i, + r = n.adaptive, + s = void 0 === r || r, + a = n.roundOffsets, + l = void 0 === a || a, + c = { + placement: Le(t.placement), + variation: Ke(t.placement), + popper: t.elements.popper, + popperRect: t.rects.popper, + gpuAcceleration: o, + isFixed: 'fixed' === t.options.strategy + }; + null != t.modifiersData.popperOffsets && + (t.styles.popper = Object.assign( + {}, + t.styles.popper, + Xe( + Object.assign({}, c, { + offsets: t.modifiersData.popperOffsets, + position: t.options.strategy, + adaptive: s, + roundOffsets: l + }) + ) + )), + null != t.modifiersData.arrow && + (t.styles.arrow = Object.assign( + {}, + t.styles.arrow, + Xe( + Object.assign({}, c, { + offsets: t.modifiersData.arrow, + position: 'absolute', + adaptive: !1, + roundOffsets: l + }) + ) + )), + (t.attributes.popper = Object.assign({}, t.attributes.popper, { + 'data-popper-placement': t.placement + })); + }, + data: {} + }, + Je = { passive: !0 }; + var Ze = { + name: 'eventListeners', + enabled: !0, + phase: 'write', + fn: function () {}, + effect: function (e) { + var t = e.state, + n = e.instance, + i = e.options, + o = i.scroll, + r = void 0 === o || o, + s = i.resize, + a = void 0 === s || s, + l = Ae(t.elements.popper), + c = [].concat(t.scrollParents.reference, t.scrollParents.popper); + return ( + r && + c.forEach(function (e) { + e.addEventListener('scroll', n.update, Je); + }), + a && l.addEventListener('resize', n.update, Je), + function () { + r && + c.forEach(function (e) { + e.removeEventListener('scroll', n.update, Je); + }), + a && l.removeEventListener('resize', n.update, Je); + } + ); + }, + data: {} + }, + et = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + function tt(e) { + return e.replace(/left|right|bottom|top/g, function (e) { + return et[e]; + }); + } + var nt = { start: 'end', end: 'start' }; + function it(e) { + return e.replace(/start|end/g, function (e) { + return nt[e]; + }); + } + function ot(e) { + var t = Ae(e); + return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset }; + } + function rt(e) { + return Be(Fe(e)).left + ot(e).scrollLeft; + } + function st(e) { + var t = Ie(e), + n = t.overflow, + i = t.overflowX, + o = t.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + i); + } + function at(e) { + return ['html', 'body', '#document'].indexOf(Ee(e)) >= 0 + ? e.ownerDocument.body + : Te(e) && st(e) + ? e + : at(qe(e)); + } + function lt(e, t) { + var n; + void 0 === t && (t = []); + var i = at(e), + o = i === (null == (n = e.ownerDocument) ? void 0 : n.body), + r = Ae(i), + s = o ? [r].concat(r.visualViewport || [], st(i) ? i : []) : i, + a = t.concat(s); + return o ? a : a.concat(lt(qe(s))); + } + function ct(e) { + return Object.assign({}, e, { + left: e.x, + top: e.y, + right: e.x + e.width, + bottom: e.y + e.height + }); + } + function ut(e, t, n) { + return t === ae + ? ct( + (function (e, t) { + var n = Ae(e), + i = Fe(e), + o = n.visualViewport, + r = i.clientWidth, + s = i.clientHeight, + a = 0, + l = 0; + if (o) { + (r = o.width), (s = o.height); + var c = je(); + (c || (!c && 'fixed' === t)) && + ((a = o.offsetLeft), (l = o.offsetTop)); + } + return { width: r, height: s, x: a + rt(e), y: l }; + })(e, n) + ) + : xe(t) + ? (function (e, t) { + var n = Be(e, !1, 'fixed' === t); + return ( + (n.top = n.top + e.clientTop), + (n.left = n.left + e.clientLeft), + (n.bottom = n.top + e.clientHeight), + (n.right = n.left + e.clientWidth), + (n.width = e.clientWidth), + (n.height = e.clientHeight), + (n.x = n.left), + (n.y = n.top), + n + ); + })(t, n) + : ct( + (function (e) { + var t, + n = Fe(e), + i = ot(e), + o = null == (t = e.ownerDocument) ? void 0 : t.body, + r = Se( + n.scrollWidth, + n.clientWidth, + o ? o.scrollWidth : 0, + o ? o.clientWidth : 0 + ), + s = Se( + n.scrollHeight, + n.clientHeight, + o ? o.scrollHeight : 0, + o ? o.clientHeight : 0 + ), + a = -i.scrollLeft + rt(e), + l = -i.scrollTop; + return ( + 'rtl' === Ie(o || n).direction && + (a += Se(n.clientWidth, o ? o.clientWidth : 0) - r), + { width: r, height: s, x: a, y: l } + ); + })(Fe(e)) + ); + } + function dt(e, t, n, i) { + var o = + 'clippingParents' === t + ? (function (e) { + var t = lt(qe(e)), + n = + ['absolute', 'fixed'].indexOf(Ie(e).position) >= 0 && Te(e) + ? ze(e) + : e; + return xe(n) + ? t.filter(function (e) { + return xe(e) && Me(e, n) && 'body' !== Ee(e); + }) + : []; + })(e) + : [].concat(t), + r = [].concat(o, [n]), + s = r[0], + a = r.reduce(function (t, n) { + var o = ut(e, n, i); + return ( + (t.top = Se(o.top, t.top)), + (t.right = Ne(o.right, t.right)), + (t.bottom = Ne(o.bottom, t.bottom)), + (t.left = Se(o.left, t.left)), + t + ); + }, ut(e, s, i)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + } + function ft(e) { + var t, + n = e.reference, + i = e.element, + o = e.placement, + r = o ? Le(o) : null, + s = o ? Ke(o) : null, + a = n.x + n.width / 2 - i.width / 2, + l = n.y + n.height / 2 - i.height / 2; + switch (r) { + case J: + t = { x: a, y: n.y - i.height }; + break; + case Z: + t = { x: a, y: n.y + n.height }; + break; + case ee: + t = { x: n.x + n.width, y: l }; + break; + case te: + t = { x: n.x - i.width, y: l }; + break; + default: + t = { x: n.x, y: n.y }; + } + var c = r ? Re(r) : null; + if (null != c) { + var u = 'y' === c ? 'height' : 'width'; + switch (s) { + case oe: + t[c] = t[c] - (n[u] / 2 - i[u] / 2); + break; + case re: + t[c] = t[c] + (n[u] / 2 - i[u] / 2); + } + } + return t; + } + function pt(e, t) { + void 0 === t && (t = {}); + var n = t, + i = n.placement, + o = void 0 === i ? e.placement : i, + r = n.strategy, + s = void 0 === r ? e.strategy : r, + a = n.boundary, + l = void 0 === a ? se : a, + c = n.rootBoundary, + u = void 0 === c ? ae : c, + d = n.elementContext, + f = void 0 === d ? le : d, + p = n.altBoundary, + h = void 0 !== p && p, + m = n.padding, + g = void 0 === m ? 0 : m, + b = Ve('number' != typeof g ? g : Ue(g, ie)), + v = f === le ? ce : le, + y = e.rects.popper, + _ = e.elements[h ? v : f], + w = dt(xe(_) ? _ : _.contextElement || Fe(e.elements.popper), l, u, s), + E = Be(e.elements.reference), + A = ft({ reference: E, element: y, placement: o }), + x = ct(Object.assign({}, y, A)), + T = f === le ? x : E, + C = { + top: w.top - T.top + b.top, + bottom: T.bottom - w.bottom + b.bottom, + left: w.left - T.left + b.left, + right: T.right - w.right + b.right + }, + O = e.modifiersData.offset; + if (f === le && O) { + var L = O[o]; + Object.keys(C).forEach(function (e) { + var t = [ee, Z].indexOf(e) >= 0 ? 1 : -1, + n = [J, Z].indexOf(e) >= 0 ? 'y' : 'x'; + C[e] += L[n] * t; + }); + } + return C; + } + function ht(e, t) { + void 0 === t && (t = {}); + var n = t, + i = n.placement, + o = n.boundary, + r = n.rootBoundary, + s = n.padding, + a = n.flipVariations, + l = n.allowedAutoPlacements, + c = void 0 === l ? de : l, + u = Ke(i), + d = u + ? a + ? ue + : ue.filter(function (e) { + return Ke(e) === u; + }) + : ie, + f = d.filter(function (e) { + return c.indexOf(e) >= 0; + }); + 0 === f.length && (f = d); + var p = f.reduce(function (t, n) { + return ( + (t[n] = pt(e, { + placement: n, + boundary: o, + rootBoundary: r, + padding: s + })[Le(n)]), + t + ); + }, {}); + return Object.keys(p).sort(function (e, t) { + return p[e] - p[t]; + }); + } + var mt = { + name: 'flip', + enabled: !0, + phase: 'main', + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name; + if (!t.modifiersData[i]._skip) { + for ( + var o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 === s || s, + l = n.fallbackPlacements, + c = n.padding, + u = n.boundary, + d = n.rootBoundary, + f = n.altBoundary, + p = n.flipVariations, + h = void 0 === p || p, + m = n.allowedAutoPlacements, + g = t.options.placement, + b = Le(g), + v = + l || + (b === g || !h + ? [tt(g)] + : (function (e) { + if (Le(e) === ne) return []; + var t = tt(e); + return [it(e), t, it(t)]; + })(g)), + y = [g].concat(v).reduce(function (e, n) { + return e.concat( + Le(n) === ne + ? ht(t, { + placement: n, + boundary: u, + rootBoundary: d, + padding: c, + flipVariations: h, + allowedAutoPlacements: m + }) + : n + ); + }, []), + _ = t.rects.reference, + w = t.rects.popper, + E = new Map(), + A = !0, + x = y[0], + T = 0; + T < y.length; + T++ + ) { + var C = y[T], + O = Le(C), + L = Ke(C) === oe, + S = [J, Z].indexOf(O) >= 0, + N = S ? 'width' : 'height', + k = pt(t, { + placement: C, + boundary: u, + rootBoundary: d, + altBoundary: f, + padding: c + }), + D = S ? (L ? ee : te) : L ? Z : J; + _[N] > w[N] && (D = tt(D)); + var j = tt(D), + B = []; + if ( + (r && B.push(k[O] <= 0), + a && B.push(k[D] <= 0, k[j] <= 0), + B.every(function (e) { + return e; + })) + ) { + (x = C), (A = !1); + break; + } + E.set(C, B); + } + if (A) + for ( + var P = function (e) { + var t = y.find(function (t) { + var n = E.get(t); + if (n) + return n.slice(0, e).every(function (e) { + return e; + }); + }); + if (t) return (x = t), 'break'; + }, + M = h ? 3 : 1; + M > 0; + M-- + ) { + if ('break' === P(M)) break; + } + t.placement !== x && + ((t.modifiersData[i]._skip = !0), (t.placement = x), (t.reset = !0)); + } + }, + requiresIfExists: ['offset'], + data: { _skip: !1 } + }; + function gt(e, t, n) { + return ( + void 0 === n && (n = { x: 0, y: 0 }), + { + top: e.top - t.height - n.y, + right: e.right - t.width + n.x, + bottom: e.bottom - t.height + n.y, + left: e.left - t.width - n.x + } + ); + } + function bt(e) { + return [J, ee, Z, te].some(function (t) { + return e[t] >= 0; + }); + } + var vt = { + name: 'hide', + enabled: !0, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: function (e) { + var t = e.state, + n = e.name, + i = t.rects.reference, + o = t.rects.popper, + r = t.modifiersData.preventOverflow, + s = pt(t, { elementContext: 'reference' }), + a = pt(t, { altBoundary: !0 }), + l = gt(s, i), + c = gt(a, o, r), + u = bt(l), + d = bt(c); + (t.modifiersData[n] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: u, + hasPopperEscaped: d + }), + (t.attributes.popper = Object.assign({}, t.attributes.popper, { + 'data-popper-reference-hidden': u, + 'data-popper-escaped': d + })); + } + }; + var yt = { + name: 'offset', + enabled: !0, + phase: 'main', + requires: ['popperOffsets'], + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name, + o = n.offset, + r = void 0 === o ? [0, 0] : o, + s = de.reduce(function (e, n) { + return ( + (e[n] = (function (e, t, n) { + var i = Le(e), + o = [te, J].indexOf(i) >= 0 ? -1 : 1, + r = + 'function' == typeof n + ? n(Object.assign({}, t, { placement: e })) + : n, + s = r[0], + a = r[1]; + return ( + (s = s || 0), + (a = (a || 0) * o), + [te, ee].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a } + ); + })(n, t.rects, r)), + e + ); + }, {}), + a = s[t.placement], + l = a.x, + c = a.y; + null != t.modifiersData.popperOffsets && + ((t.modifiersData.popperOffsets.x += l), + (t.modifiersData.popperOffsets.y += c)), + (t.modifiersData[i] = s); + } + }; + var _t = { + name: 'popperOffsets', + enabled: !0, + phase: 'read', + fn: function (e) { + var t = e.state, + n = e.name; + t.modifiersData[n] = ft({ + reference: t.rects.reference, + element: t.rects.popper, + placement: t.placement + }); + }, + data: {} + }; + var wt = { + name: 'preventOverflow', + enabled: !0, + phase: 'main', + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name, + o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 !== s && s, + l = n.boundary, + c = n.rootBoundary, + u = n.altBoundary, + d = n.padding, + f = n.tether, + p = void 0 === f || f, + h = n.tetherOffset, + m = void 0 === h ? 0 : h, + g = pt(t, { boundary: l, rootBoundary: c, padding: d, altBoundary: u }), + b = Le(t.placement), + v = Ke(t.placement), + y = !v, + _ = Re(b), + w = 'x' === _ ? 'y' : 'x', + E = t.modifiersData.popperOffsets, + A = t.rects.reference, + x = t.rects.popper, + T = + 'function' == typeof m + ? m(Object.assign({}, t.rects, { placement: t.placement })) + : m, + C = + 'number' == typeof T + ? { mainAxis: T, altAxis: T } + : Object.assign({ mainAxis: 0, altAxis: 0 }, T), + O = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, + L = { x: 0, y: 0 }; + if (E) { + if (r) { + var S, + N = 'y' === _ ? J : te, + k = 'y' === _ ? Z : ee, + D = 'y' === _ ? 'height' : 'width', + j = E[_], + B = j + g[N], + P = j - g[k], + M = p ? -x[D] / 2 : 0, + I = v === oe ? A[D] : x[D], + H = v === oe ? -x[D] : -A[D], + F = t.elements.arrow, + q = p && F ? Pe(F) : { width: 0, height: 0 }, + $ = t.modifiersData['arrow#persistent'] + ? t.modifiersData['arrow#persistent'].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + z = $[N], + R = $[k], + W = We(0, A[D], q[D]), + V = y ? A[D] / 2 - M - W - z - C.mainAxis : I - W - z - C.mainAxis, + U = y ? -A[D] / 2 + M + W + R + C.mainAxis : H + W + R + C.mainAxis, + Y = t.elements.arrow && ze(t.elements.arrow), + K = Y ? ('y' === _ ? Y.clientTop || 0 : Y.clientLeft || 0) : 0, + Q = null != (S = null == O ? void 0 : O[_]) ? S : 0, + X = j + U - Q, + G = We(p ? Ne(B, j + V - Q - K) : B, j, p ? Se(P, X) : P); + (E[_] = G), (L[_] = G - j); + } + if (a) { + var ne, + ie = 'x' === _ ? J : te, + re = 'x' === _ ? Z : ee, + se = E[w], + ae = 'y' === w ? 'height' : 'width', + le = se + g[ie], + ce = se - g[re], + ue = -1 !== [J, te].indexOf(b), + de = null != (ne = null == O ? void 0 : O[w]) ? ne : 0, + fe = ue ? le : se - A[ae] - x[ae] - de + C.altAxis, + pe = ue ? se + A[ae] + x[ae] - de - C.altAxis : ce, + he = + p && ue + ? (function (e, t, n) { + var i = We(e, t, n); + return i > n ? n : i; + })(fe, se, pe) + : We(p ? fe : le, se, p ? pe : ce); + (E[w] = he), (L[w] = he - se); + } + t.modifiersData[i] = L; + } + }, + requiresIfExists: ['offset'] + }; + function Et(e, t, n) { + void 0 === n && (n = !1); + var i, + o, + r = Te(t), + s = + Te(t) && + (function (e) { + var t = e.getBoundingClientRect(), + n = ke(t.width) / e.offsetWidth || 1, + i = ke(t.height) / e.offsetHeight || 1; + return 1 !== n || 1 !== i; + })(t), + a = Fe(t), + l = Be(e, s, n), + c = { scrollLeft: 0, scrollTop: 0 }, + u = { x: 0, y: 0 }; + return ( + (r || (!r && !n)) && + (('body' !== Ee(t) || st(a)) && + (c = + (i = t) !== Ae(i) && Te(i) + ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop } + : ot(i)), + Te(t) + ? (((u = Be(t, !0)).x += t.clientLeft), (u.y += t.clientTop)) + : a && (u.x = rt(a))), + { + x: l.left + c.scrollLeft - u.x, + y: l.top + c.scrollTop - u.y, + width: l.width, + height: l.height + } + ); + } + function At(e) { + var t = new Map(), + n = new Set(), + i = []; + function o(e) { + n.add(e.name), + [] + .concat(e.requires || [], e.requiresIfExists || []) + .forEach(function (e) { + if (!n.has(e)) { + var i = t.get(e); + i && o(i); + } + }), + i.push(e); + } + return ( + e.forEach(function (e) { + t.set(e.name, e); + }), + e.forEach(function (e) { + n.has(e.name) || o(e); + }), + i + ); + } + var xt = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; + function Tt() { + for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) + t[n] = arguments[n]; + return !t.some(function (e) { + return !(e && 'function' == typeof e.getBoundingClientRect); + }); + } + function Ct(e) { + void 0 === e && (e = {}); + var t = e, + n = t.defaultModifiers, + i = void 0 === n ? [] : n, + o = t.defaultOptions, + r = void 0 === o ? xt : o; + return function (e, t, n) { + void 0 === n && (n = r); + var o, + s, + a = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, xt, r), + modifiersData: {}, + elements: { reference: e, popper: t }, + attributes: {}, + styles: {} + }, + l = [], + c = !1, + u = { + state: a, + setOptions: function (n) { + var o = 'function' == typeof n ? n(a.options) : n; + d(), + (a.options = Object.assign({}, r, a.options, o)), + (a.scrollParents = { + reference: xe(e) + ? lt(e) + : e.contextElement + ? lt(e.contextElement) + : [], + popper: lt(t) + }); + var s, + c, + f = (function (e) { + var t = At(e); + return we.reduce(function (e, n) { + return e.concat( + t.filter(function (e) { + return e.phase === n; + }) + ); + }, []); + })( + ((s = [].concat(i, a.options.modifiers)), + (c = s.reduce(function (e, t) { + var n = e[t.name]; + return ( + (e[t.name] = n + ? Object.assign({}, n, t, { + options: Object.assign({}, n.options, t.options), + data: Object.assign({}, n.data, t.data) + }) + : t), + e + ); + }, {})), + Object.keys(c).map(function (e) { + return c[e]; + })) + ); + return ( + (a.orderedModifiers = f.filter(function (e) { + return e.enabled; + })), + a.orderedModifiers.forEach(function (e) { + var t = e.name, + n = e.options, + i = void 0 === n ? {} : n, + o = e.effect; + if ('function' == typeof o) { + var r = o({ state: a, name: t, instance: u, options: i }), + s = function () {}; + l.push(r || s); + } + }), + u.update() + ); + }, + forceUpdate: function () { + if (!c) { + var e = a.elements, + t = e.reference, + n = e.popper; + if (Tt(t, n)) { + (a.rects = { + reference: Et(t, ze(n), 'fixed' === a.options.strategy), + popper: Pe(n) + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (e) { + return (a.modifiersData[e.name] = Object.assign( + {}, + e.data + )); + }); + for (var i = 0; i < a.orderedModifiers.length; i++) + if (!0 !== a.reset) { + var o = a.orderedModifiers[i], + r = o.fn, + s = o.options, + l = void 0 === s ? {} : s, + d = o.name; + 'function' == typeof r && + (a = + r({ state: a, options: l, name: d, instance: u }) || a); + } else (a.reset = !1), (i = -1); + } + } + }, + update: + ((o = function () { + return new Promise(function (e) { + u.forceUpdate(), e(a); + }); + }), + function () { + return ( + s || + (s = new Promise(function (e) { + Promise.resolve().then(function () { + (s = void 0), e(o()); + }); + })), + s + ); + }), + destroy: function () { + d(), (c = !0); + } + }; + if (!Tt(e, t)) return u; + function d() { + l.forEach(function (e) { + return e(); + }), + (l = []); + } + return ( + u.setOptions(n).then(function (e) { + !c && n.onFirstUpdate && n.onFirstUpdate(e); + }), + u + ); + }; + } + var Ot = Ct(), + Lt = Ct({ defaultModifiers: [Ze, _t, Ge, Oe] }), + St = Ct({ defaultModifiers: [Ze, _t, Ge, Oe, yt, mt, wt, Ye, vt] }), + Nt = Object.freeze({ + __proto__: null, + afterMain: be, + afterRead: he, + afterWrite: _e, + applyStyles: Oe, + arrow: Ye, + auto: ne, + basePlacements: ie, + beforeMain: me, + beforeRead: fe, + beforeWrite: ve, + bottom: Z, + clippingParents: se, + computeStyles: Ge, + createPopper: St, + createPopperBase: Ot, + createPopperLite: Lt, + detectOverflow: pt, + end: re, + eventListeners: Ze, + flip: mt, + hide: vt, + left: te, + main: ge, + modifierPhases: we, + offset: yt, + placements: de, + popper: le, + popperGenerator: Ct, + popperOffsets: _t, + preventOverflow: wt, + read: pe, + reference: ce, + right: ee, + start: oe, + top: J, + variationPlacements: ue, + viewport: ae, + write: ye + }); + const kt = { + '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + Dt = new Set([ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]), + jt = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + Bt = (e, t) => { + const n = e.nodeName.toLowerCase(); + return t.includes(n) + ? !Dt.has(n) || Boolean(jt.test(e.nodeValue)) + : t.filter((e) => e instanceof RegExp).some((e) => e.test(n)); + }; + const Pt = { + allowList: kt, + content: {}, + extraClass: '', + html: !1, + sanitize: !0, + sanitizeFn: null, + template: '
' + }, + Mt = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }, + It = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class Ht extends B { + constructor(e) { + super(), (this._config = this._getConfig(e)); + } + static get Default() { + return Pt; + } + static get DefaultType() { + return Mt; + } + static get NAME() { + return 'TemplateFactory'; + } + getContent() { + return Object.values(this._config.content) + .map((e) => this._resolvePossibleFunction(e)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(e) { + return ( + this._checkContent(e), + (this._config.content = { ...this._config.content, ...e }), + this + ); + } + toHtml() { + const e = document.createElement('div'); + e.innerHTML = this._maybeSanitize(this._config.template); + for (const [t, n] of Object.entries(this._config.content)) + this._setContent(e, n, t); + const t = e.children[0], + n = this._resolvePossibleFunction(this._config.extraClass); + return n && t.classList.add(...n.split(' ')), t; + } + _typeCheckConfig(e) { + super._typeCheckConfig(e), this._checkContent(e.content); + } + _checkContent(e) { + for (const [t, n] of Object.entries(e)) + super._typeCheckConfig({ selector: t, entry: n }, It); + } + _setContent(e, t, n) { + const i = I.findOne(n, e); + i && + ((t = this._resolvePossibleFunction(t)) + ? o(t) + ? this._putElementInTemplate(r(t), i) + : this._config.html + ? (i.innerHTML = this._maybeSanitize(t)) + : (i.textContent = t) + : i.remove()); + } + _maybeSanitize(e) { + return this._config.sanitize + ? (function (e, t, n) { + if (!e.length) return e; + if (n && 'function' == typeof n) return n(e); + const i = new window.DOMParser().parseFromString(e, 'text/html'), + o = [].concat(...i.body.querySelectorAll('*')); + for (const e of o) { + const n = e.nodeName.toLowerCase(); + if (!Object.keys(t).includes(n)) { + e.remove(); + continue; + } + const i = [].concat(...e.attributes), + o = [].concat(t['*'] || [], t[n] || []); + for (const t of i) Bt(t, o) || e.removeAttribute(t.nodeName); + } + return i.body.innerHTML; + })(e, this._config.allowList, this._config.sanitizeFn) + : e; + } + _resolvePossibleFunction(e) { + return f(e, [this]); + } + _putElementInTemplate(e, t) { + if (this._config.html) return (t.innerHTML = ''), void t.append(e); + t.textContent = e.textContent; + } + } + const Ft = new Set(['sanitize', 'allowList', 'sanitizeFn']), + qt = 'fade', + $t = 'show', + zt = '.tooltip-inner', + Rt = '.modal', + Wt = 'hide.bs.modal', + Vt = 'hover', + Ut = 'focus', + Yt = { + AUTO: 'auto', + TOP: 'top', + RIGHT: u() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: u() ? 'right' : 'left' + }, + Kt = { + allowList: kt, + animation: !0, + boundary: 'clippingParents', + container: !1, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: !1, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: '', + trigger: 'hover focus' + }, + Qt = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + class Xt extends P { + constructor(e, t) { + if (void 0 === Nt) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(e, t), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return Kt; + } + static get DefaultType() { + return Qt; + } + static get NAME() { + return 'tooltip'; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + S.off(this._element.closest(Rt), Wt, this._hideModalHandler), + this._element.getAttribute('data-bs-original-title') && + this._element.setAttribute( + 'title', + this._element.getAttribute('data-bs-original-title') + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ('none' === this._element.style.display) + throw new Error('Please use show on visible elements'); + if (!this._isWithContent() || !this._isEnabled) return; + const e = S.trigger(this._element, this.constructor.eventName('show')), + t = ( + s(this._element) || this._element.ownerDocument.documentElement + ).contains(this._element); + if (e.defaultPrevented || !t) return; + this._disposePopper(); + const n = this._getTipElement(); + this._element.setAttribute('aria-describedby', n.getAttribute('id')); + const { container: i } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains(this.tip) || + (i.append(n), + S.trigger(this._element, this.constructor.eventName('inserted'))), + (this._popper = this._createPopper(n)), + n.classList.add($t), + 'ontouchstart' in document.documentElement) + ) + for (const e of [].concat(...document.body.children)) + S.on(e, 'mouseover', a); + this._queueCallback( + () => { + S.trigger(this._element, this.constructor.eventName('shown')), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if (!this._isShown()) return; + if ( + S.trigger(this._element, this.constructor.eventName('hide')) + .defaultPrevented + ) + return; + if ( + (this._getTipElement().classList.remove($t), + 'ontouchstart' in document.documentElement) + ) + for (const e of [].concat(...document.body.children)) + S.off(e, 'mouseover', a); + (this._activeTrigger.click = !1), + (this._activeTrigger[Ut] = !1), + (this._activeTrigger[Vt] = !1), + (this._isHovered = null); + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute('aria-describedby'), + S.trigger(this._element, this.constructor.eventName('hidden'))); + }, + this.tip, + this._isAnimated() + ); + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(e) { + const t = this._getTemplateFactory(e).toHtml(); + if (!t) return null; + t.classList.remove(qt, $t), + t.classList.add(`bs-${this.constructor.NAME}-auto`); + const n = ((e) => { + do { + e += Math.floor(1e6 * Math.random()); + } while (document.getElementById(e)); + return e; + })(this.constructor.NAME).toString(); + return ( + t.setAttribute('id', n), this._isAnimated() && t.classList.add(qt), t + ); + } + setContent(e) { + (this._newContent = e), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(e) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(e) + : (this._templateFactory = new Ht({ + ...this._config, + content: e, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ) + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { [zt]: this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute('data-bs-original-title') + ); + } + _initializeOnDelegatedTarget(e) { + return this.constructor.getOrCreateInstance( + e.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || (this.tip && this.tip.classList.contains(qt)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains($t); + } + _createPopper(e) { + const t = f(this._config.placement, [this, e, this._element]), + n = Yt[t.toUpperCase()]; + return St(this._element, e, this._getPopperConfig(n)); + } + _getOffset() { + const { offset: e } = this._config; + return 'string' == typeof e + ? e.split(',').map((e) => Number.parseInt(e, 10)) + : 'function' == typeof e + ? (t) => e(t, this._element) + : e; + } + _resolvePossibleFunction(e) { + return f(e, [this._element]); + } + _getPopperConfig(e) { + const t = { + placement: e, + modifiers: [ + { + name: 'flip', + options: { fallbackPlacements: this._config.fallbackPlacements } + }, + { name: 'offset', options: { offset: this._getOffset() } }, + { + name: 'preventOverflow', + options: { boundary: this._config.boundary } + }, + { + name: 'arrow', + options: { element: `.${this.constructor.NAME}-arrow` } + }, + { + name: 'preSetPlacement', + enabled: !0, + phase: 'beforeMain', + fn: (e) => { + this._getTipElement().setAttribute( + 'data-popper-placement', + e.state.placement + ); + } + } + ] + }; + return { ...t, ...f(this._config.popperConfig, [t]) }; + } + _setListeners() { + const e = this._config.trigger.split(' '); + for (const t of e) + if ('click' === t) + S.on( + this._element, + this.constructor.eventName('click'), + this._config.selector, + (e) => { + this._initializeOnDelegatedTarget(e).toggle(); + } + ); + else if ('manual' !== t) { + const e = + t === Vt + ? this.constructor.eventName('mouseenter') + : this.constructor.eventName('focusin'), + n = + t === Vt + ? this.constructor.eventName('mouseleave') + : this.constructor.eventName('focusout'); + S.on(this._element, e, this._config.selector, (e) => { + const t = this._initializeOnDelegatedTarget(e); + (t._activeTrigger['focusin' === e.type ? Ut : Vt] = !0), t._enter(); + }), + S.on(this._element, n, this._config.selector, (e) => { + const t = this._initializeOnDelegatedTarget(e); + (t._activeTrigger['focusout' === e.type ? Ut : Vt] = + t._element.contains(e.relatedTarget)), + t._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + S.on(this._element.closest(Rt), Wt, this._hideModalHandler); + } + _fixTitle() { + const e = this._element.getAttribute('title'); + e && + (this._element.getAttribute('aria-label') || + this._element.textContent.trim() || + this._element.setAttribute('aria-label', e), + this._element.setAttribute('data-bs-original-title', e), + this._element.removeAttribute('title')); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(e, t) { + clearTimeout(this._timeout), (this._timeout = setTimeout(e, t)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(e) { + const t = j.getDataAttributes(this._element); + for (const e of Object.keys(t)) Ft.has(e) && delete t[e]; + return ( + (e = { ...t, ...('object' == typeof e && e ? e : {}) }), + (e = this._mergeConfigObj(e)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + _configAfterMerge(e) { + return ( + (e.container = !1 === e.container ? document.body : r(e.container)), + 'number' == typeof e.delay && + (e.delay = { show: e.delay, hide: e.delay }), + 'number' == typeof e.title && (e.title = e.title.toString()), + 'number' == typeof e.content && (e.content = e.content.toString()), + e + ); + } + _getDelegateConfig() { + const e = {}; + for (const [t, n] of Object.entries(this._config)) + this.constructor.Default[t] !== n && (e[t] = n); + return (e.selector = !1), (e.trigger = 'manual'), e; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(e) { + return this.each(function () { + const t = Xt.getOrCreateInstance(this, e); + if ('string' == typeof e) { + if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`); + t[e](); + } + }); + } + } + d(Xt); + const Gt = '.code-header>button.button-copy', + Jt = 'iconfont icon-copy', + Zt = 'iconfont icon-check', + en = 'timeout', + tn = 'data-title-succeed', + nn = 'data-bs-original-title', + on = 2e3; + function rn(e) { + if (e.hasAttribute(en)) { + let t = e.getAttribute(en); + if (Number(t) > Date.now()) return !0; + } + return !1; + } + function sn(e) { + e.setAttribute(en, Date.now() + on); + } + function an(e) { + e.removeAttribute(en); + } + function ln() { + const e = document.querySelectorAll(Gt); + if (0 === e.length) return; + const t = new ClipboardJS(Gt, { + target: (e) => + e.parentNode.nextElementSibling.querySelector('code .rouge-code') + }); + [...e].map((e) => new Xt(e, { placement: 'left' })), + t.on('success', (e) => { + const t = e.trigger; + (e.clearSelection(), rn(t)) || + (t.children[0].setAttribute('class', Zt), + (function (e) { + const t = e.getAttribute(tn); + e.setAttribute(nn, t), Xt.getInstance(e).show(); + })(t), + sn(t), + setTimeout(() => { + !(function (e) { + Xt.getInstance(e).hide(), e.removeAttribute(nn); + })(t), + (function (e) { + e.children[0].setAttribute('class', Jt); + })(t), + an(t); + }, on)); + }); + } + const cn = 'data-src', + un = 'data-lqip', + dn = { SHIMMER: 'shimmer', BLUR: 'blur' }; + function fn(e) { + this.parentElement.classList.remove(e); + } + function pn() { + this.complete && + (this.hasAttribute(un) + ? fn.call(this, dn.BLUR) + : fn.call(this, dn.SHIMMER)); + } + function hn() { + const e = this.getAttribute(cn); + this.setAttribute('src', encodeURI(e)), this.removeAttribute(cn); + } + const mn = '.popup:not(.dark)', + gn = '.popup:not(.light)'; + let bn = mn; + function vn(e, t, n) { + if ('function' == typeof e ? e === t : e.has(t)) + return arguments.length < 3 ? t : n; + throw new TypeError('Private element is not present on this object'); + } + function yn(e, t, n) { + return ( + (t = (function (e) { + var t = (function (e, t) { + if ('object' != typeof e || !e) return e; + var n = e[Symbol.toPrimitive]; + if (void 0 !== n) { + var i = n.call(e, t || 'default'); + if ('object' != typeof i) return i; + throw new TypeError('@@toPrimitive must return a primitive value.'); + } + return ('string' === t ? String : Number)(e); + })(e, 'string'); + return 'symbol' == typeof t ? t : t + ''; + })(t)) in e + ? Object.defineProperty(e, t, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (e[t] = n), + e + ); + } + var _n; + const wn = document.getElementById('toc-bar'), + En = document.getElementById('toc-solo-trigger'), + An = document.getElementsByClassName('toc-trigger'), + xn = document.getElementById('toc-popup'), + Tn = document.getElementById('toc-popup-close'), + Cn = 'overflow-hidden', + On = 'closing'; + class Ln { + static initBar() { + new IntersectionObserver( + (e) => { + e.forEach((e) => { + wn.classList.toggle('invisible', e.isIntersecting); + }); + }, + { rootMargin: `-${vn(Ln, this, Nn)._}px 0px 0px 0px` } + ).observe(En), + (Sn._ = vn(Ln, this, !1)); + } + static listenAnchors() { + [...document.getElementsByClassName('toc-link')].forEach((e) => { + e.onclick = () => this.hidePopup(); + }); + } + static refresh() { + vn(Ln, this, Sn)._ && this.initComponents(), + tocbot.refresh(this.options), + this.listenAnchors(); + } + static get popupOpened() { + return xn.open; + } + static showPopup() { + this.lockScroll(!0), xn.showModal(); + xn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' }); + } + static hidePopup() { + xn.toggleAttribute(On), + xn.addEventListener( + 'animationend', + () => { + xn.toggleAttribute(On), xn.close(); + }, + { once: !0 } + ), + this.lockScroll(!1); + } + static lockScroll(e) { + document.documentElement.classList.toggle(Cn, e), + document.body.classList.toggle(Cn, e); + } + static clickBackdrop(e) { + if (xn.hasAttribute(On)) return; + const t = e.target.getBoundingClientRect(); + (e.clientX < t.left || + e.clientX > t.right || + e.clientY < t.top || + e.clientY > t.bottom) && + this.hidePopup(); + } + static initComponents() { + this.initBar(), + [...An].forEach((e) => { + e.onclick = () => this.showPopup(); + }), + (xn.onclick = (e) => this.clickBackdrop(e)), + (Tn.onclick = () => this.hidePopup()), + (xn.oncancel = (e) => { + e.preventDefault(), this.hidePopup(); + }); + } + static init() { + tocbot.init(this.options), this.listenAnchors(), this.initComponents(); + } + } + var Sn = { _: !0 }, + Nn = { _: 48 }; + yn(Ln, 'options', { + tocSelector: '#toc-popup-content', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + collapseDepth: 4, + headingsOffset: vn((_n = Ln), _n, Nn)._ + }); + yn( + class { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + document.getElementById('toc-wrapper') && tocbot.init(this.options); + } + }, + 'options', + { + tocSelector: '#toc', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + headingsOffset: 32 + } + ), + matchMedia('(min-width: 1200px)'); + const kn = 'mermaid', + Dn = Theme.getThemeMapper('default', 'dark'); + function jn(e) { + if (e.source === window && e.data && e.data.id === Theme.ID) { + [...document.getElementsByClassName(kn)].forEach((e) => { + const t = e.previousSibling.children.item(0).innerHTML; + (e.textContent = t), e.removeAttribute('data-processed'); + }); + const e = Dn[Theme.visualState]; + mermaid.initialize({ theme: e }), mermaid.init(null, `.${kn}`); + } + } + function Bn(e) { + const t = e.textContent, + n = e.parentElement; + n.classList.add('d-none'); + const i = document.createElement('pre'); + i.classList.add(kn); + const o = document.createTextNode(t); + i.appendChild(o), n.after(i); + } + const Pn = document.getElementById('mode-toggle'); + const Mn = 'lock', + In = 2e4; + function Hn(e) { + e.removeAttribute(Mn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + const Fn = 'lock', + qn = 2e4; + function $n(e) { + e.removeAttribute(Fn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + function zn() { + console.logs.push(Array.from(arguments)), + console.stdlog.apply(console, arguments); + } + const Rn = 'lock', + Wn = 2e4; + function Vn(e) { + e.removeAttribute(Rn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + const Un = 'lock', + Yn = 2e4; + function Kn(e) { + e.removeAttribute(Un), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + function Qn(e, t, n, i) { + let o, + r = e.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void Kn(n); + o = r[0].innerText; + } + let s = { version: 'stable', optimize: '0', code: o, edition: '2021' }; + -1 !== o.indexOf('#![feature') && (s.version = 'nightly'), + (function (e, t) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2e4; + return Promise.race([ + fetch(e, t), + new Promise((e, t) => setTimeout(() => t(new Error('timeout')), n)) + ]); + })('https://play.rust-lang.org/evaluate.json', { + headers: { 'Content-Type': 'application/json' }, + method: 'POST', + mode: 'cors', + body: JSON.stringify(s) + }) + .then((e) => e.json()) + .then((e) => { + (t.innerText = e.result), Kn(n); + }) + .catch((e) => { + (t.innerText = i + e.message), Kn(n); + }); + } + const Xn = document.getElementById('sidebar'), + Gn = document.getElementById('sidebar-trigger'), + Jn = document.getElementById('mask'); + class Zn { + static toggle() { + (ei._ = vn(Zn, this, !vn(Zn, this, ei)._)), + document.body.toggleAttribute('sidebar-display', vn(Zn, this, ei)._), + Xn.classList.toggle('z-2', vn(Zn, this, ei)._), + Jn.classList.toggle('d-none', !vn(Zn, this, ei)._); + } + } + var ei = { _: !1 }; + const ti = document.getElementById('sidebar-trigger'), + ni = document.getElementById('search-trigger'), + ii = document.getElementById('search-cancel'), + oi = document.querySelectorAll('#main-wrapper>.container>.row'), + ri = document.getElementById('topbar-title'), + si = document.getElementById('search'), + ai = document.getElementById('search-result-wrapper'), + li = document.getElementById('search-results'), + ci = document.getElementById('search-input'), + ui = document.getElementById('search-hints'), + di = 'd-block', + fi = 'd-none', + pi = 'input-focus', + hi = 'd-flex'; + class mi { + static on() { + ti.classList.add(fi), + ri.classList.add(fi), + ni.classList.add(fi), + si.classList.add(hi), + ii.classList.add(di); + } + static off() { + ii.classList.remove(di), + si.classList.remove(hi), + ti.classList.remove(fi), + ri.classList.remove(fi), + ni.classList.remove(fi); + } + } + class gi { + static on() { + this.resultVisible || + (ai.classList.remove(fi), + oi.forEach((e) => { + e.classList.add(fi); + }), + (this.resultVisible = !0)); + } + static off() { + this.resultVisible && + ((li.innerHTML = ''), + ui.classList.contains(fi) && ui.classList.remove(fi), + ai.classList.add(fi), + oi.forEach((e) => { + e.classList.remove(fi); + }), + (ci.textContent = ''), + (this.resultVisible = !1)); + } + } + function bi() { + return ii.classList.contains(di); + } + yn(gi, 'resultVisible', !1), + (function () { + const e = document.querySelectorAll('article img'); + if (0 === e.length) return; + e.forEach((e) => { + e.addEventListener('load', pn); + }), + document + .querySelectorAll('article img[loading="lazy"]') + .forEach((e) => { + e.complete && fn.call(e, dn.SHIMMER); + }); + const t = document.querySelectorAll(`article img[${un}="true"]`); + t.length && + t.forEach((e) => { + hn.call(e); + }); + })(), + (function () { + if (null === document.querySelector('.popup')) return; + const e = !( + null === document.querySelector('.popup.light') && + null === document.querySelector('.popup.dark') + ); + Theme.visualState === Theme.DARK && (bn = gn); + let t = GLightbox({ selector: `${bn}` }); + if (e && Theme.switchable) { + let e = null; + window.addEventListener('message', (n) => { + n.source === window && + n.data && + n.data.id === Theme.ID && + (function (e, t) { + (bn = bn === mn ? gn : mn), + null === t && (t = GLightbox({ selector: `${bn}` })), + ([e, t] = [t, e]); + })(t, e); + }); + } + })(), + (Gn.onclick = Jn.onclick = () => Zn.toggle()), + ni.addEventListener('click', () => { + mi.on(), gi.on(), ci.focus(); + }), + ii.addEventListener('click', () => { + mi.off(), gi.off(); + }), + ci.addEventListener('focus', () => { + si.classList.add(pi); + }), + ci.addEventListener('focusout', () => { + si.classList.remove(pi); + }), + ci.addEventListener('input', () => { + '' === ci.value + ? bi() + ? ui.classList.remove(fi) + : gi.off() + : (gi.on(), bi() && ui.classList.add(fi)); + }), + ln(), + (function () { + const e = document.getElementById('copy-link'); + null !== e && + (e.addEventListener('click', (e) => { + const t = e.target; + rn(t) || + navigator.clipboard.writeText(window.location.href).then(() => { + const e = t.getAttribute(nn), + n = t.getAttribute(tn); + t.setAttribute(nn, n), + Xt.getInstance(t).show(), + sn(t), + setTimeout(() => { + t.setAttribute(nn, e), an(t); + }, on); + }); + }), + e.addEventListener('mouseleave', (e) => { + Xt.getInstance(e.target).hide(); + })); + })(), + (function () { + if ( + 'undefined' == typeof mermaid || + 'function' != typeof mermaid.initialize + ) + return; + let e = { theme: Dn[Theme.visualState] }; + [...document.getElementsByClassName('language-mermaid')].forEach(Bn), + mermaid.initialize(e), + Theme.switchable && window.addEventListener('message', jn); + })(), + Pn && + Pn.addEventListener('click', () => { + Theme.flip(); + }), + (function () { + const e = document.getElementById('back-to-top'); + window.addEventListener('scroll', () => { + window.scrollY > 50 + ? e.classList.add('show') + : e.classList.remove('show'); + }), + e.addEventListener('click', () => { + window.scrollTo({ top: 0 }); + }); + })(), + [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map( + (e) => new Xt(e) + ), + [...document.getElementsByClassName('highlighter-rouge')].forEach((e) => { + const t = e.getAttribute('highlight-lines'); + if (t && t.length > 0) { + let n = []; + (',' + t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach(function (e) { + let t = e.split('-'), + i = parseInt(t[0]); + if (t.length > 1) { + let e = parseInt(t[1]); + if (e >= i) for (let t = i; t <= e; t++) n.push(t); + } else 1 == t.length && n.push(i); + }); + let i = e.getElementsByTagName('pre'); + !(function (e, t) { + let n = null, + i = 1; + for (let o = e.firstChild; null != o; o = o.nextSibling) { + null == n && (n = o); + let r = o.textContent.split(/\n/g); + if ((r || []).length > 1) { + let s = r.length - 1, + a = []; + for (let t = 0; t < s + 1; t++) { + let n = o.cloneNode(!1); + (n.textContent = r[t]), + t != s && (n.textContent += '\n'), + e.insertBefore(n, o), + a.push(n); + } + e.removeChild(o), (o = a[s]); + for (let o = 0; o < s; o++) { + if (t.includes(i)) { + let t = document.createElement('span'); + t.setAttribute('class', 'hll'), e.insertBefore(t, n); + for (let e = t.nextSibling; e != a[o]; e = t.nextSibling) + t.appendChild(e); + t.appendChild(a[o]); + } + (n = a[o + 1]), i++; + } + } + } + })(i[i.length - 1], n), + e.removeAttribute('highlight-lines'); + } + }), + [ + ...document.querySelectorAll('.code-header button.button-run-cpp') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Mn)) { + let t = e.getAttribute(Mn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Mn, Date.now() + In), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), + n.appendChild(i), + (function (e, t, n, i) { + let o, + r = e.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void Hn(n); + o = r[0].innerText; + } + let s = { cmd: 'g++ -std=c++20 main.cpp && ./a.out', src: o }, + a = new XMLHttpRequest(); + a.open('POST', 'https://coliru.stacked-crooked.com/compile', !0), + (a.onload = () => { + (t.innerText = a.responseText), Hn(n); + }), + (a.onerror = () => { + (t.innerText = i + a.responseText), Hn(n); + }), + a.send(JSON.stringify(s)); + })( + e.parentNode.nextElementSibling, + i, + e, + e.getAttribute('error-prompt') + ); + }; + }), + [ + ...document.querySelectorAll('.code-header button.button-run-javascript') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Fn)) { + let t = e.getAttribute(Fn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Fn, Date.now() + qn), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), n.appendChild(i); + let o, + r = e.parentNode.nextElementSibling.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void $n(e); + o = r[0].innerText; + } + let s = new Function(o); + console.log != zn && + ((console.stdlog = console.log.bind(console)), (console.log = zn)), + (console.logs = []), + s(), + (i.innerText = console.logs.join('\n')), + $n(e); + }; + }), + [ + ...document.querySelectorAll('.code-header button.button-run-python') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Rn)) { + let t = e.getAttribute(Rn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Rn, Date.now() + Wn), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), + n.appendChild(i), + (function (e, t, n, i) { + let o, + r = e.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void Vn(n); + o = r[0].innerText; + } + let s = [{ code: o, file_name: 'main.py' }]; + (socket = io('https://repl.online-cpp.com', { + transports: ['websocket'], + timeout: Wn, + 'connect timeout': 3e3, + reconnection: !1, + query: { type: 'script', lang: 'python3' } + })), + socket.emit('code', s, '', 'main.py'), + socket.on('exit', function (e, t) { + Vn(n); + }), + socket.on('output', function (e) { + let n = new TextDecoder().decode(new Uint8Array(e)); + t.innerText = n; + }), + socket.on('err', function (e) { + let n = new TextDecoder().decode(new Uint8Array(e)); + t.innerText = i + '\n' + n; + }), + socket.on('connect_error', function (e) { + (t.innerText = i + e.message), socket.close(), Vn(n); + }); + })( + e.parentNode.nextElementSibling, + i, + e, + e.getAttribute('error-prompt') + ); + }; + }), + [ + ...document.querySelectorAll('.code-header button.button-run-rust') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Un)) { + let t = e.getAttribute(Un); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Un, Date.now() + Yn), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), + n.appendChild(i), + Qn( + e.parentNode.nextElementSibling, + i, + e, + e.getAttribute('error-prompt') + ); + }; + }); +})(); diff --git a/assets/js/dist/post.min.js b/assets/js/dist/post.min.js index f1130e6d1f6..5936de0095d 100644 --- a/assets/js/dist/post.min.js +++ b/assets/js/dist/post.min.js @@ -1,4 +1,3389 @@ /*! * jekyll-theme-chirpy v7.1.1 | © 2019 Cotes Chung | MIT Licensed | https://github.com/cotes2020/jekyll-theme-chirpy/ */ -!function(){"use strict";const e=new Map;var t={set(t,n,i){e.has(t)||e.set(t,new Map);const o=e.get(t);o.has(n)||0===o.size?o.set(n,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(o.keys())[0]}.`)},get:(t,n)=>e.has(t)&&e.get(t).get(n)||null,remove(t,n){if(!e.has(t))return;const i=e.get(t);i.delete(n),0===i.size&&e.delete(t)}};const n="transitionend",i=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),o=e=>!(!e||"object"!=typeof e)&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),r=e=>o(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(i(e)):null,s=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?s(e.parentNode):null},a=()=>{},l=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,c=[],u=()=>"rtl"===document.documentElement.dir,d=e=>{var t;t=()=>{const t=l();if(t){const n=e.NAME,i=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=i,e.jQueryInterface)}},"loading"===document.readyState?(c.length||document.addEventListener("DOMContentLoaded",(()=>{for(const e of c)e()})),c.push(t)):t()},f=function(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e;return"function"==typeof e?e(...arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]):t},p=function(e,t){if(!(!(arguments.length>2&&void 0!==arguments[2])||arguments[2]))return void f(e);const i=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),o=Number.parseFloat(n);return i||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let o=!1;const r=i=>{let{target:s}=i;s===t&&(o=!0,t.removeEventListener(n,r),f(e))};t.addEventListener(n,r),setTimeout((()=>{o||t.dispatchEvent(new Event(n))}),i)},h=/[^.]*(?=\..*)\.|.*/,m=/\..*/,g=/::\d+$/,b={};let v=1;const y={mouseenter:"mouseover",mouseleave:"mouseout"},_=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function w(e,t){return t&&`${t}::${v++}`||e.uidEvent||v++}function E(e){const t=w(e);return e.uidEvent=t,b[t]=b[t]||{},b[t]}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return Object.values(e).find((e=>e.callable===t&&e.delegationSelector===n))}function x(e,t,n){const i="string"==typeof t,o=i?n:t||n;let r=L(e);return _.has(r)||(r=e),[i,o,r]}function T(e,t,n,i,o){if("string"!=typeof t||!e)return;let[r,s,a]=x(t,n,i);if(t in y){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};s=e(s)}const l=E(e),c=l[a]||(l[a]={}),u=A(c,s,r?n:null);if(u)return void(u.oneOff=u.oneOff&&o);const d=w(s,t.replace(h,"")),f=r?function(e,t,n){return function i(o){const r=e.querySelectorAll(t);for(let{target:s}=o;s&&s!==this;s=s.parentNode)for(const a of r)if(a===s)return N(o,{delegateTarget:s}),i.oneOff&&S.off(e,o.type,t,n),n.apply(s,[o])}}(e,n,s):function(e,t){return function n(i){return N(i,{delegateTarget:e}),n.oneOff&&S.off(e,i.type,t),t.apply(e,[i])}}(e,s);f.delegationSelector=r?n:null,f.callable=s,f.oneOff=o,f.uidEvent=d,c[d]=f,e.addEventListener(a,f,r)}function C(e,t,n,i,o){const r=A(t[n],i,o);r&&(e.removeEventListener(n,r,Boolean(o)),delete t[n][r.uidEvent])}function O(e,t,n,i){const o=t[n]||{};for(const[r,s]of Object.entries(o))r.includes(i)&&C(e,t,n,s.callable,s.delegationSelector)}function L(e){return e=e.replace(m,""),y[e]||e}const S={on(e,t,n,i){T(e,t,n,i,!1)},one(e,t,n,i){T(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[o,r,s]=x(t,n,i),a=s!==t,l=E(e),c=l[s]||{},u=t.startsWith(".");if(void 0===r){if(u)for(const n of Object.keys(l))O(e,l,n,t.slice(1));for(const[n,i]of Object.entries(c)){const o=n.replace(g,"");a&&!t.includes(o)||C(e,l,s,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;C(e,l,s,r,o?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=l();let o=null,r=!0,s=!0,a=!1;t!==L(t)&&i&&(o=i.Event(t,n),i(e).trigger(o),r=!o.isPropagationStopped(),s=!o.isImmediatePropagationStopped(),a=o.isDefaultPrevented());const c=N(new Event(t,{bubbles:r,cancelable:!0}),n);return a&&c.preventDefault(),s&&e.dispatchEvent(c),c.defaultPrevented&&o&&o.preventDefault(),c}};function N(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function k(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function D(e){return e.replace(/[A-Z]/g,(e=>`-${e.toLowerCase()}`))}const j={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${D(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${D(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter((e=>e.startsWith("bs")&&!e.startsWith("bsConfig")));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1,n.length),t[n]=k(e.dataset[i])}return t},getDataAttribute:(e,t)=>k(e.getAttribute(`data-bs-${D(t)}`))};class B{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=o(t)?j.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...o(t)?j.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.constructor.DefaultType;for(const[i,r]of Object.entries(t)){const t=e[i],s=o(t)?"element":null==(n=t)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(r).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".`)}var n}}class P extends B{constructor(e,n){super(),(e=r(e))&&(this._element=e,this._config=this._getConfig(n),t.set(this._element,this.constructor.DATA_KEY,this))}dispose(){t.remove(this._element,this.constructor.DATA_KEY),S.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t){p(e,t,!(arguments.length>2&&void 0!==arguments[2])||arguments[2])}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return t.get(r(e),this.DATA_KEY)}static getOrCreateInstance(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const M=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map((e=>i(e))).join(","):null},I={find(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return[].concat(...Element.prototype.querySelectorAll.call(t,e))},findOne(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.documentElement;return Element.prototype.querySelector.call(t,e)},children:(e,t)=>[].concat(...e.children).filter((e=>e.matches(t))),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((e=>`${e}:not([tabindex^="-"])`)).join(",");return this.find(t,e).filter((e=>!(e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")))(e)&&(e=>{if(!o(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t})(e)))},getSelectorFromElement(e){const t=M(e);return t&&I.findOne(t)?t:null},getElementFromSelector(e){const t=M(e);return t?I.findOne(t):null},getMultipleElementsFromSelector(e){const t=M(e);return t?I.find(t):[]}},F=".bs.collapse",H=`show${F}`,q=`shown${F}`,$=`hide${F}`,z=`hidden${F}`,R=`click${F}.data-api`,W="show",V="collapse",U="collapsing",Y=`:scope .${V} .${V}`,K='[data-bs-toggle="collapse"]',Q={parent:null,toggle:!0},X={parent:"(null|element)",toggle:"boolean"};class G extends P{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=I.find(K);for(const e of n){const t=I.getSelectorFromElement(e),n=I.find(t).filter((e=>e===this._element));null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Q}static get DefaultType(){return X}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((e=>e!==this._element)).map((e=>G.getOrCreateInstance(e,{toggle:!1})))),e.length&&e[0]._isTransitioning)return;if(S.trigger(this._element,H).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove(V),this._element.classList.add(U),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V,W),this._element.style[t]="",S.trigger(this._element,q)}),this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(S.trigger(this._element,$).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,this._element.offsetHeight,this._element.classList.add(U),this._element.classList.remove(V,W);for(const e of this._triggerArray){const t=I.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0;this._element.style[e]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(U),this._element.classList.add(V),S.trigger(this._element,z)}),this._element,!0)}_isShown(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._element).classList.contains(W)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=r(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(K);for(const t of e){const e=I.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=I.find(Y,this._config.parent);return I.find(e,this._config.parent).filter((e=>!t.includes(e)))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each((function(){const n=G.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}}))}}S.on(document,R,K,(function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of I.getMultipleElementsFromSelector(this))G.getOrCreateInstance(e,{toggle:!1}).toggle()})),d(G),document.getElementsByClassName("collapse");var J="top",Z="bottom",ee="right",te="left",ne="auto",ie=[J,Z,ee,te],oe="start",re="end",se="clippingParents",ae="viewport",le="popper",ce="reference",ue=ie.reduce((function(e,t){return e.concat([t+"-"+oe,t+"-"+re])}),[]),de=[].concat(ie,[ne]).reduce((function(e,t){return e.concat([t,t+"-"+oe,t+"-"+re])}),[]),fe="beforeRead",pe="read",he="afterRead",me="beforeMain",ge="main",be="afterMain",ve="beforeWrite",ye="write",_e="afterWrite",we=[fe,pe,he,me,ge,be,ve,ye,_e];function Ee(e){return e?(e.nodeName||"").toLowerCase():null}function Ae(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function xe(e){return e instanceof Ae(e).Element||e instanceof Element}function Te(e){return e instanceof Ae(e).HTMLElement||e instanceof HTMLElement}function Ce(e){return"undefined"!=typeof ShadowRoot&&(e instanceof Ae(e).ShadowRoot||e instanceof ShadowRoot)}var Oe={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach((function(e){var n=t.styles[e]||{},i=t.attributes[e]||{},o=t.elements[e];Te(o)&&Ee(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(e){var t=i[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)})))}))},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach((function(e){var i=t.elements[e],o=t.attributes[e]||{},r=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce((function(e,t){return e[t]="",e}),{});Te(i)&&Ee(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(e){i.removeAttribute(e)})))}))}},requires:["computeStyles"]};function Le(e){return e.split("-")[0]}var Se=Math.max,Ne=Math.min,ke=Math.round;function De(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function je(){return!/^((?!chrome|android).)*safari/i.test(De())}function Be(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var i=e.getBoundingClientRect(),o=1,r=1;t&&Te(e)&&(o=e.offsetWidth>0&&ke(i.width)/e.offsetWidth||1,r=e.offsetHeight>0&&ke(i.height)/e.offsetHeight||1);var s=(xe(e)?Ae(e):window).visualViewport,a=!je()&&n,l=(i.left+(a&&s?s.offsetLeft:0))/o,c=(i.top+(a&&s?s.offsetTop:0))/r,u=i.width/o,d=i.height/r;return{width:u,height:d,top:c,right:l+u,bottom:c+d,left:l,x:l,y:c}}function Pe(e){var t=Be(e),n=e.offsetWidth,i=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-i)<=1&&(i=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:i}}function Me(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Ce(n)){var i=t;do{if(i&&e.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ie(e){return Ae(e).getComputedStyle(e)}function Fe(e){return["table","td","th"].indexOf(Ee(e))>=0}function He(e){return((xe(e)?e.ownerDocument:e.document)||window.document).documentElement}function qe(e){return"html"===Ee(e)?e:e.assignedSlot||e.parentNode||(Ce(e)?e.host:null)||He(e)}function $e(e){return Te(e)&&"fixed"!==Ie(e).position?e.offsetParent:null}function ze(e){for(var t=Ae(e),n=$e(e);n&&Fe(n)&&"static"===Ie(n).position;)n=$e(n);return n&&("html"===Ee(n)||"body"===Ee(n)&&"static"===Ie(n).position)?t:n||function(e){var t=/firefox/i.test(De());if(/Trident/i.test(De())&&Te(e)&&"fixed"===Ie(e).position)return null;var n=qe(e);for(Ce(n)&&(n=n.host);Te(n)&&["html","body"].indexOf(Ee(n))<0;){var i=Ie(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||t}function Re(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function We(e,t,n){return Se(e,Ne(t,n))}function Ve(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Ue(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}var Ye={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,i=e.name,o=e.options,r=n.elements.arrow,s=n.modifiersData.popperOffsets,a=Le(n.placement),l=Re(a),c=[te,ee].indexOf(a)>=0?"height":"width";if(r&&s){var u=function(e,t){return Ve("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Ue(e,ie))}(o.padding,n),d=Pe(r),f="y"===l?J:te,p="y"===l?Z:ee,h=n.rects.reference[c]+n.rects.reference[l]-s[l]-n.rects.popper[c],m=s[l]-n.rects.reference[l],g=ze(r),b=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,v=h/2-m/2,y=u[f],_=b-d[c]-u[p],w=b/2-d[c]/2+v,E=We(y,w,_),A=l;n.modifiersData[i]=((t={})[A]=E,t.centerOffset=E-w,t)}},effect:function(e){var t=e.state,n=e.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=t.elements.popper.querySelector(i)))&&Me(t.elements.popper,i)&&(t.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ke(e){return e.split("-")[1]}var Qe={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xe(e){var t,n=e.popper,i=e.popperRect,o=e.placement,r=e.variation,s=e.offsets,a=e.position,l=e.gpuAcceleration,c=e.adaptive,u=e.roundOffsets,d=e.isFixed,f=s.x,p=void 0===f?0:f,h=s.y,m=void 0===h?0:h,g="function"==typeof u?u({x:p,y:m}):{x:p,y:m};p=g.x,m=g.y;var b=s.hasOwnProperty("x"),v=s.hasOwnProperty("y"),y=te,_=J,w=window;if(c){var E=ze(n),A="clientHeight",x="clientWidth";if(E===Ae(n)&&"static"!==Ie(E=He(n)).position&&"absolute"===a&&(A="scrollHeight",x="scrollWidth"),o===J||(o===te||o===ee)&&r===re)_=Z,m-=(d&&E===w&&w.visualViewport?w.visualViewport.height:E[A])-i.height,m*=l?1:-1;if(o===te||(o===J||o===Z)&&r===re)y=ee,p-=(d&&E===w&&w.visualViewport?w.visualViewport.width:E[x])-i.width,p*=l?1:-1}var T,C=Object.assign({position:a},c&&Qe),O=!0===u?function(e,t){var n=e.x,i=e.y,o=t.devicePixelRatio||1;return{x:ke(n*o)/o||0,y:ke(i*o)/o||0}}({x:p,y:m},Ae(n)):{x:p,y:m};return p=O.x,m=O.y,l?Object.assign({},C,((T={})[_]=v?"0":"",T[y]=b?"0":"",T.transform=(w.devicePixelRatio||1)<=1?"translate("+p+"px, "+m+"px)":"translate3d("+p+"px, "+m+"px, 0)",T)):Object.assign({},C,((t={})[_]=v?m+"px":"",t[y]=b?p+"px":"",t.transform="",t))}var Ge={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,s=void 0===r||r,a=n.roundOffsets,l=void 0===a||a,c={placement:Le(t.placement),variation:Ke(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,Xe(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:s,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,Xe(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},Je={passive:!0};var Ze={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,i=e.options,o=i.scroll,r=void 0===o||o,s=i.resize,a=void 0===s||s,l=Ae(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return r&&c.forEach((function(e){e.addEventListener("scroll",n.update,Je)})),a&&l.addEventListener("resize",n.update,Je),function(){r&&c.forEach((function(e){e.removeEventListener("scroll",n.update,Je)})),a&&l.removeEventListener("resize",n.update,Je)}},data:{}},et={left:"right",right:"left",bottom:"top",top:"bottom"};function tt(e){return e.replace(/left|right|bottom|top/g,(function(e){return et[e]}))}var nt={start:"end",end:"start"};function it(e){return e.replace(/start|end/g,(function(e){return nt[e]}))}function ot(e){var t=Ae(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function rt(e){return Be(He(e)).left+ot(e).scrollLeft}function st(e){var t=Ie(e),n=t.overflow,i=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function at(e){return["html","body","#document"].indexOf(Ee(e))>=0?e.ownerDocument.body:Te(e)&&st(e)?e:at(qe(e))}function lt(e,t){var n;void 0===t&&(t=[]);var i=at(e),o=i===(null==(n=e.ownerDocument)?void 0:n.body),r=Ae(i),s=o?[r].concat(r.visualViewport||[],st(i)?i:[]):i,a=t.concat(s);return o?a:a.concat(lt(qe(s)))}function ct(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ut(e,t,n){return t===ae?ct(function(e,t){var n=Ae(e),i=He(e),o=n.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;var c=je();(c||!c&&"fixed"===t)&&(a=o.offsetLeft,l=o.offsetTop)}return{width:r,height:s,x:a+rt(e),y:l}}(e,n)):xe(t)?function(e,t){var n=Be(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):ct(function(e){var t,n=He(e),i=ot(e),o=null==(t=e.ownerDocument)?void 0:t.body,r=Se(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=Se(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-i.scrollLeft+rt(e),l=-i.scrollTop;return"rtl"===Ie(o||n).direction&&(a+=Se(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:l}}(He(e)))}function dt(e,t,n,i){var o="clippingParents"===t?function(e){var t=lt(qe(e)),n=["absolute","fixed"].indexOf(Ie(e).position)>=0&&Te(e)?ze(e):e;return xe(n)?t.filter((function(e){return xe(e)&&Me(e,n)&&"body"!==Ee(e)})):[]}(e):[].concat(t),r=[].concat(o,[n]),s=r[0],a=r.reduce((function(t,n){var o=ut(e,n,i);return t.top=Se(o.top,t.top),t.right=Ne(o.right,t.right),t.bottom=Ne(o.bottom,t.bottom),t.left=Se(o.left,t.left),t}),ut(e,s,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function ft(e){var t,n=e.reference,i=e.element,o=e.placement,r=o?Le(o):null,s=o?Ke(o):null,a=n.x+n.width/2-i.width/2,l=n.y+n.height/2-i.height/2;switch(r){case J:t={x:a,y:n.y-i.height};break;case Z:t={x:a,y:n.y+n.height};break;case ee:t={x:n.x+n.width,y:l};break;case te:t={x:n.x-i.width,y:l};break;default:t={x:n.x,y:n.y}}var c=r?Re(r):null;if(null!=c){var u="y"===c?"height":"width";switch(s){case oe:t[c]=t[c]-(n[u]/2-i[u]/2);break;case re:t[c]=t[c]+(n[u]/2-i[u]/2)}}return t}function pt(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=void 0===i?e.placement:i,r=n.strategy,s=void 0===r?e.strategy:r,a=n.boundary,l=void 0===a?se:a,c=n.rootBoundary,u=void 0===c?ae:c,d=n.elementContext,f=void 0===d?le:d,p=n.altBoundary,h=void 0!==p&&p,m=n.padding,g=void 0===m?0:m,b=Ve("number"!=typeof g?g:Ue(g,ie)),v=f===le?ce:le,y=e.rects.popper,_=e.elements[h?v:f],w=dt(xe(_)?_:_.contextElement||He(e.elements.popper),l,u,s),E=Be(e.elements.reference),A=ft({reference:E,element:y,placement:o}),x=ct(Object.assign({},y,A)),T=f===le?x:E,C={top:w.top-T.top+b.top,bottom:T.bottom-w.bottom+b.bottom,left:w.left-T.left+b.left,right:T.right-w.right+b.right},O=e.modifiersData.offset;if(f===le&&O){var L=O[o];Object.keys(C).forEach((function(e){var t=[ee,Z].indexOf(e)>=0?1:-1,n=[J,Z].indexOf(e)>=0?"y":"x";C[e]+=L[n]*t}))}return C}function ht(e,t){void 0===t&&(t={});var n=t,i=n.placement,o=n.boundary,r=n.rootBoundary,s=n.padding,a=n.flipVariations,l=n.allowedAutoPlacements,c=void 0===l?de:l,u=Ke(i),d=u?a?ue:ue.filter((function(e){return Ke(e)===u})):ie,f=d.filter((function(e){return c.indexOf(e)>=0}));0===f.length&&(f=d);var p=f.reduce((function(t,n){return t[n]=pt(e,{placement:n,boundary:o,rootBoundary:r,padding:s})[Le(n)],t}),{});return Object.keys(p).sort((function(e,t){return p[e]-p[t]}))}var mt={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name;if(!t.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0===s||s,l=n.fallbackPlacements,c=n.padding,u=n.boundary,d=n.rootBoundary,f=n.altBoundary,p=n.flipVariations,h=void 0===p||p,m=n.allowedAutoPlacements,g=t.options.placement,b=Le(g),v=l||(b===g||!h?[tt(g)]:function(e){if(Le(e)===ne)return[];var t=tt(e);return[it(e),t,it(t)]}(g)),y=[g].concat(v).reduce((function(e,n){return e.concat(Le(n)===ne?ht(t,{placement:n,boundary:u,rootBoundary:d,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),_=t.rects.reference,w=t.rects.popper,E=new Map,A=!0,x=y[0],T=0;T=0,N=S?"width":"height",k=pt(t,{placement:C,boundary:u,rootBoundary:d,altBoundary:f,padding:c}),D=S?L?ee:te:L?Z:J;_[N]>w[N]&&(D=tt(D));var j=tt(D),B=[];if(r&&B.push(k[O]<=0),a&&B.push(k[D]<=0,k[j]<=0),B.every((function(e){return e}))){x=C,A=!1;break}E.set(C,B)}if(A)for(var P=function(e){var t=y.find((function(t){var n=E.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return x=t,"break"},M=h?3:1;M>0;M--){if("break"===P(M))break}t.placement!==x&&(t.modifiersData[i]._skip=!0,t.placement=x,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function gt(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function bt(e){return[J,ee,Z,te].some((function(t){return e[t]>=0}))}var vt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,i=t.rects.reference,o=t.rects.popper,r=t.modifiersData.preventOverflow,s=pt(t,{elementContext:"reference"}),a=pt(t,{altBoundary:!0}),l=gt(s,i),c=gt(a,o,r),u=bt(l),d=bt(c);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":d})}};var yt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.offset,r=void 0===o?[0,0]:o,s=de.reduce((function(e,n){return e[n]=function(e,t,n){var i=Le(e),o=[te,J].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},t,{placement:e})):n,s=r[0],a=r[1];return s=s||0,a=(a||0)*o,[te,ee].indexOf(i)>=0?{x:a,y:s}:{x:s,y:a}}(n,t.rects,r),e}),{}),a=s[t.placement],l=a.x,c=a.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=c),t.modifiersData[i]=s}};var _t={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=ft({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})},data:{}};var wt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,i=e.name,o=n.mainAxis,r=void 0===o||o,s=n.altAxis,a=void 0!==s&&s,l=n.boundary,c=n.rootBoundary,u=n.altBoundary,d=n.padding,f=n.tether,p=void 0===f||f,h=n.tetherOffset,m=void 0===h?0:h,g=pt(t,{boundary:l,rootBoundary:c,padding:d,altBoundary:u}),b=Le(t.placement),v=Ke(t.placement),y=!v,_=Re(b),w="x"===_?"y":"x",E=t.modifiersData.popperOffsets,A=t.rects.reference,x=t.rects.popper,T="function"==typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,C="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),O=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,L={x:0,y:0};if(E){if(r){var S,N="y"===_?J:te,k="y"===_?Z:ee,D="y"===_?"height":"width",j=E[_],B=j+g[N],P=j-g[k],M=p?-x[D]/2:0,I=v===oe?A[D]:x[D],F=v===oe?-x[D]:-A[D],H=t.elements.arrow,q=p&&H?Pe(H):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=$[N],R=$[k],W=We(0,A[D],q[D]),V=y?A[D]/2-M-W-z-C.mainAxis:I-W-z-C.mainAxis,U=y?-A[D]/2+M+W+R+C.mainAxis:F+W+R+C.mainAxis,Y=t.elements.arrow&&ze(t.elements.arrow),K=Y?"y"===_?Y.clientTop||0:Y.clientLeft||0:0,Q=null!=(S=null==O?void 0:O[_])?S:0,X=j+U-Q,G=We(p?Ne(B,j+V-Q-K):B,j,p?Se(P,X):P);E[_]=G,L[_]=G-j}if(a){var ne,ie="x"===_?J:te,re="x"===_?Z:ee,se=E[w],ae="y"===w?"height":"width",le=se+g[ie],ce=se-g[re],ue=-1!==[J,te].indexOf(b),de=null!=(ne=null==O?void 0:O[w])?ne:0,fe=ue?le:se-A[ae]-x[ae]-de+C.altAxis,pe=ue?se+A[ae]+x[ae]-de-C.altAxis:ce,he=p&&ue?function(e,t,n){var i=We(e,t,n);return i>n?n:i}(fe,se,pe):We(p?fe:le,se,p?pe:ce);E[w]=he,L[w]=he-se}t.modifiersData[i]=L}},requiresIfExists:["offset"]};function Et(e,t,n){void 0===n&&(n=!1);var i,o,r=Te(t),s=Te(t)&&function(e){var t=e.getBoundingClientRect(),n=ke(t.width)/e.offsetWidth||1,i=ke(t.height)/e.offsetHeight||1;return 1!==n||1!==i}(t),a=He(t),l=Be(e,s,n),c={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==Ee(t)||st(a))&&(c=(i=t)!==Ae(i)&&Te(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:ot(i)),Te(t)?((u=Be(t,!0)).x+=t.clientLeft,u.y+=t.clientTop):a&&(u.x=rt(a))),{x:l.left+c.scrollLeft-u.x,y:l.top+c.scrollTop-u.y,width:l.width,height:l.height}}function At(e){var t=new Map,n=new Set,i=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var i=t.get(e);i&&o(i)}})),i.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),i}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function Tt(){for(var e=arguments.length,t=new Array(e),n=0;n{const n=e.nodeName.toLowerCase();return t.includes(n)?!Dt.has(n)||Boolean(jt.test(e.nodeValue)):t.filter((e=>e instanceof RegExp)).some((e=>e.test(n)))};const Pt={allowList:kt,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Mt={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},It={entry:"(string|element|function|null)",selector:"(string|element)"};class Ft extends B{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Pt}static get DefaultType(){return Mt}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((e=>this._resolvePossibleFunction(e))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},It)}_setContent(e,t,n){const i=I.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?o(t)?this._putElementInTemplate(r(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...i.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[].concat(...e.attributes),o=[].concat(t["*"]||[],t[n]||[]);for(const t of i)Bt(t,o)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return f(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const Ht=new Set(["sanitize","allowList","sanitizeFn"]),qt="fade",$t="show",zt=".tooltip-inner",Rt=".modal",Wt="hide.bs.modal",Vt="hover",Ut="focus",Yt={AUTO:"auto",TOP:"top",RIGHT:u()?"left":"right",BOTTOM:"bottom",LEFT:u()?"right":"left"},Kt={allowList:kt,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},Qt={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Xt extends P{constructor(e,t){if(void 0===Nt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Kt}static get DefaultType(){return Qt}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),S.off(this._element.closest(Rt),Wt,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=S.trigger(this._element,this.constructor.eventName("show")),t=(s(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return;this._disposePopper();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));const{container:i}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),S.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(n),n.classList.add($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.on(e,"mouseover",a);this._queueCallback((()=>{S.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(!this._isShown())return;if(S.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented)return;if(this._getTipElement().classList.remove($t),"ontouchstart"in document.documentElement)for(const e of[].concat(...document.body.children))S.off(e,"mouseover",a);this._activeTrigger.click=!1,this._activeTrigger[Ut]=!1,this._activeTrigger[Vt]=!1,this._isHovered=null;this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),S.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(qt,$t),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(qt),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Ft({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[zt]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(qt)}_isShown(){return this.tip&&this.tip.classList.contains($t)}_createPopper(e){const t=f(this._config.placement,[this,e,this._element]),n=Yt[t.toUpperCase()];return St(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map((e=>Number.parseInt(e,10))):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return f(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...f(this._config.popperConfig,[t])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)S.on(this._element,this.constructor.eventName("click"),this._config.selector,(e=>{this._initializeOnDelegatedTarget(e).toggle()}));else if("manual"!==t){const e=t===Vt?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n=t===Vt?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");S.on(this._element,e,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Ut:Vt]=!0,t._enter()})),S.on(this._element,n,this._config.selector,(e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Ut:Vt]=t._element.contains(e.relatedTarget),t._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},S.on(this._element.closest(Rt),Wt,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=j.getDataAttributes(this._element);for(const e of Object.keys(t))Ht.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:r(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each((function(){const t=Xt.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}}))}}d(Xt);const Gt=".code-header>button.button-copy",Jt="iconfont icon-copy",Zt="iconfont icon-check",en="timeout",tn="data-title-succeed",nn="data-bs-original-title",on=2e3;function rn(e){if(e.hasAttribute(en)){let t=e.getAttribute(en);if(Number(t)>Date.now())return!0}return!1}function sn(e){e.setAttribute(en,Date.now()+on)}function an(e){e.removeAttribute(en)}function ln(){const e=document.querySelectorAll(Gt);if(0===e.length)return;const t=new ClipboardJS(Gt,{target:e=>e.parentNode.nextElementSibling.querySelector("code .rouge-code")});[...e].map((e=>new Xt(e,{placement:"left"}))),t.on("success",(e=>{const t=e.trigger;(e.clearSelection(),rn(t))||(t.children[0].setAttribute("class",Zt),function(e){const t=e.getAttribute(tn);e.setAttribute(nn,t),Xt.getInstance(e).show()}(t),sn(t),setTimeout((()=>{!function(e){Xt.getInstance(e).hide(),e.removeAttribute(nn)}(t),function(e){e.children[0].setAttribute("class",Jt)}(t),an(t)}),on))}))}const cn="data-src",un="data-lqip",dn={SHIMMER:"shimmer",BLUR:"blur"};function fn(e){this.parentElement.classList.remove(e)}function pn(){this.complete&&(this.hasAttribute(un)?fn.call(this,dn.BLUR):fn.call(this,dn.SHIMMER))}function hn(){const e=this.getAttribute(cn);this.setAttribute("src",encodeURI(e)),this.removeAttribute(cn)}const mn=".popup:not(.dark)",gn=".popup:not(.light)";let bn=mn;class vn{static get attrTimestamp(){return"data-ts"}static get attrDateFormat(){return"data-df"}static get locale(){return document.documentElement.getAttribute("lang").substring(0,2)}static getTimestamp(e){return Number(e.getAttribute(this.attrTimestamp))}static getDateFormat(e){return e.getAttribute(this.attrDateFormat)}}function yn(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function _n(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var wn;const En=document.getElementById("toc-bar"),An=document.getElementById("toc-solo-trigger"),xn=document.getElementsByClassName("toc-trigger"),Tn=document.getElementById("toc-popup"),Cn=document.getElementById("toc-popup-close"),On="overflow-hidden",Ln="closing";class Sn{static initBar(){new IntersectionObserver((e=>{e.forEach((e=>{En.classList.toggle("invisible",e.isIntersecting)}))}),{rootMargin:`-${yn(Sn,this,kn)._}px 0px 0px 0px`}).observe(An),Nn._=yn(Sn,this,!1)}static listenAnchors(){[...document.getElementsByClassName("toc-link")].forEach((e=>{e.onclick=()=>this.hidePopup()}))}static refresh(){yn(Sn,this,Nn)._&&this.initComponents(),tocbot.refresh(this.options),this.listenAnchors()}static get popupOpened(){return Tn.open}static showPopup(){this.lockScroll(!0),Tn.showModal();Tn.querySelector("li.is-active-li").scrollIntoView({block:"center"})}static hidePopup(){Tn.toggleAttribute(Ln),Tn.addEventListener("animationend",(()=>{Tn.toggleAttribute(Ln),Tn.close()}),{once:!0}),this.lockScroll(!1)}static lockScroll(e){document.documentElement.classList.toggle(On,e),document.body.classList.toggle(On,e)}static clickBackdrop(e){if(Tn.hasAttribute(Ln))return;const t=e.target.getBoundingClientRect();(e.clientXt.right||e.clientYt.bottom)&&this.hidePopup()}static initComponents(){this.initBar(),[...xn].forEach((e=>{e.onclick=()=>this.showPopup()})),Tn.onclick=e=>this.clickBackdrop(e),Cn.onclick=()=>this.hidePopup(),Tn.oncancel=e=>{e.preventDefault(),this.hidePopup()}}static init(){tocbot.init(this.options),this.listenAnchors(),this.initComponents()}}var Nn={_:!0},kn={_:48};_n(Sn,"options",{tocSelector:"#toc-popup-content",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,collapseDepth:4,headingsOffset:yn(wn=Sn,wn,kn)._});class Dn{static refresh(){tocbot.refresh(this.options)}static init(){document.getElementById("toc-wrapper")&&tocbot.init(this.options)}}_n(Dn,"options",{tocSelector:"#toc",contentSelector:".content",ignoreSelector:"[data-toc-skip]",headingSelector:"h2, h3, h4",orderedList:!1,scrollSmooth:!1,headingsOffset:32});const jn=matchMedia("(min-width: 1200px)");function Bn(e){e.matches?(Sn.popupOpened&&Sn.hidePopup(),Dn.refresh()):Sn.refresh()}const Pn="mermaid",Mn=Theme.getThemeMapper("default","dark");function In(e){if(e.source===window&&e.data&&e.data.id===Theme.ID){[...document.getElementsByClassName(Pn)].forEach((e=>{const t=e.previousSibling.children.item(0).innerHTML;e.textContent=t,e.removeAttribute("data-processed")}));const e=Mn[Theme.visualState];mermaid.initialize({theme:e}),mermaid.init(null,`.${Pn}`)}}function Fn(e){const t=e.textContent,n=e.parentElement;n.classList.add("d-none");const i=document.createElement("pre");i.classList.add(Pn);const o=document.createTextNode(t);i.appendChild(o),n.after(i)}const Hn=document.getElementById("mode-toggle");const qn="lock",$n=2e4;function zn(e){e.removeAttribute(qn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Rn="lock",Wn=2e4;function Vn(e){e.removeAttribute(Rn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function Un(){console.logs.push(Array.from(arguments)),console.stdlog.apply(console,arguments)}const Yn="lock",Kn=2e4;function Qn(e){e.removeAttribute(Yn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}const Xn="lock",Gn=2e4;function Jn(e){e.removeAttribute(Xn),e.getElementsByTagName("i")[0].classList.replace("icon-loading1","icon-playfill")}function Zn(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Jn(n);o=r[0].innerText}let s={version:"stable",optimize:"0",code:o,edition:"2021"};-1!==o.indexOf("#![feature")&&(s.version="nightly"),function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:2e4;return Promise.race([fetch(e,t),new Promise(((e,t)=>setTimeout((()=>t(new Error("timeout"))),n)))])}("https://play.rust-lang.org/evaluate.json",{headers:{"Content-Type":"application/json"},method:"POST",mode:"cors",body:JSON.stringify(s)}).then((e=>e.json())).then((e=>{t.innerText=e.result,Jn(n)})).catch((e=>{t.innerText=i+e.message,Jn(n)}))}const ei=document.getElementById("sidebar"),ti=document.getElementById("sidebar-trigger"),ni=document.getElementById("mask");class ii{static toggle(){oi._=yn(ii,this,!yn(ii,this,oi)._),document.body.toggleAttribute("sidebar-display",yn(ii,this,oi)._),ei.classList.toggle("z-2",yn(ii,this,oi)._),ni.classList.toggle("d-none",!yn(ii,this,oi)._)}}var oi={_:!1};const ri=document.getElementById("sidebar-trigger"),si=document.getElementById("search-trigger"),ai=document.getElementById("search-cancel"),li=document.querySelectorAll("#main-wrapper>.container>.row"),ci=document.getElementById("topbar-title"),ui=document.getElementById("search"),di=document.getElementById("search-result-wrapper"),fi=document.getElementById("search-results"),pi=document.getElementById("search-input"),hi=document.getElementById("search-hints"),mi="d-block",gi="d-none",bi="input-focus",vi="d-flex";class yi{static on(){ri.classList.add(gi),ci.classList.add(gi),si.classList.add(gi),ui.classList.add(vi),ai.classList.add(mi)}static off(){ai.classList.remove(mi),ui.classList.remove(vi),ri.classList.remove(gi),ci.classList.remove(gi),si.classList.remove(gi)}}class _i{static on(){this.resultVisible||(di.classList.remove(gi),li.forEach((e=>{e.classList.add(gi)})),this.resultVisible=!0)}static off(){this.resultVisible&&(fi.innerHTML="",hi.classList.contains(gi)&&hi.classList.remove(gi),di.classList.add(gi),li.forEach((e=>{e.classList.remove(gi)})),pi.textContent="",this.resultVisible=!1)}}function wi(){return ai.classList.contains(mi)}_n(_i,"resultVisible",!1),function(){const e=document.querySelectorAll("article img");if(0===e.length)return;e.forEach((e=>{e.addEventListener("load",pn)})),document.querySelectorAll('article img[loading="lazy"]').forEach((e=>{e.complete&&fn.call(e,dn.SHIMMER)}));const t=document.querySelectorAll(`article img[${un}="true"]`);t.length&&t.forEach((e=>{hn.call(e)}))}(),null!==document.querySelector('main>article[data-toc="true"]')&&(jn.matches?Dn.init():Sn.init(),jn.onchange=Bn),function(){if(null===document.querySelector(".popup"))return;const e=!(null===document.querySelector(".popup.light")&&null===document.querySelector(".popup.dark"));Theme.visualState===Theme.DARK&&(bn=gn);let t=GLightbox({selector:`${bn}`});if(e&&Theme.switchable){let e=null;window.addEventListener("message",(n=>{n.source===window&&n.data&&n.data.id===Theme.ID&&function(e,t){bn=bn===mn?gn:mn,null===t&&(t=GLightbox({selector:`${bn}`})),[e,t]=[t,e]}(t,e)}))}}(),ti.onclick=ni.onclick=()=>ii.toggle(),dayjs.locale(vn.locale),dayjs.extend(window.dayjs_plugin_localizedFormat),document.querySelectorAll(`[${vn.attrTimestamp}]`).forEach((e=>{const t=dayjs.unix(vn.getTimestamp(e)),n=t.format(vn.getDateFormat(e));if(e.textContent=n,e.removeAttribute(vn.attrTimestamp),e.removeAttribute(vn.attrDateFormat),e.hasAttribute("data-bs-toggle")&&"tooltip"===e.getAttribute("data-bs-toggle")){const n=t.format("llll");e.setAttribute("data-bs-title",n)}})),ln(),function(){const e=document.getElementById("copy-link");null!==e&&(e.addEventListener("click",(e=>{const t=e.target;rn(t)||navigator.clipboard.writeText(window.location.href).then((()=>{const e=t.getAttribute(nn),n=t.getAttribute(tn);t.setAttribute(nn,n),Xt.getInstance(t).show(),sn(t),setTimeout((()=>{t.setAttribute(nn,e),an(t)}),on)}))})),e.addEventListener("mouseleave",(e=>{Xt.getInstance(e.target).hide()})))}(),si.addEventListener("click",(()=>{yi.on(),_i.on(),pi.focus()})),ai.addEventListener("click",(()=>{yi.off(),_i.off()})),pi.addEventListener("focus",(()=>{ui.classList.add(bi)})),pi.addEventListener("focusout",(()=>{ui.classList.remove(bi)})),pi.addEventListener("input",(()=>{""===pi.value?wi()?hi.classList.remove(gi):_i.off():(_i.on(),wi()&&hi.classList.add(gi))})),function(){if("undefined"==typeof mermaid||"function"!=typeof mermaid.initialize)return;let e={theme:Mn[Theme.visualState]};[...document.getElementsByClassName("language-mermaid")].forEach(Fn),mermaid.initialize(e),Theme.switchable&&window.addEventListener("message",In)}(),Hn&&Hn.addEventListener("click",(()=>{Theme.flip()})),function(){const e=document.getElementById("back-to-top");window.addEventListener("scroll",(()=>{window.scrollY>50?e.classList.add("show"):e.classList.remove("show")})),e.addEventListener("click",(()=>{window.scrollTo({top:0})}))}(),[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map((e=>new Xt(e))),[...document.getElementsByClassName("highlighter-rouge")].forEach((e=>{const t=e.getAttribute("highlight-lines");if(t&&t.length>0){let n=[];(","+t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach((function(e){let t=e.split("-"),i=parseInt(t[0]);if(t.length>1){let e=parseInt(t[1]);if(e>=i)for(let t=i;t<=e;t++)n.push(t)}else 1==t.length&&n.push(i)}));let i=e.getElementsByTagName("pre");!function(e,t){let n=null,i=1;for(let o=e.firstChild;null!=o;o=o.nextSibling){null==n&&(n=o);let r=o.textContent.split(/\n/g);if((r||[]).length>1){let s=r.length-1,a=[];for(let t=0;t{e.onclick=()=>{if(function(e){if(e.hasAttribute(qn)){let t=e.getAttribute(qn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(qn,Date.now()+$n),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void zn(n);o=r[0].innerText}let s={cmd:"g++ -std=c++20 main.cpp && ./a.out",src:o},a=new XMLHttpRequest;a.open("POST","https://coliru.stacked-crooked.com/compile",!0),a.onload=()=>{t.innerText=a.responseText,zn(n)},a.onerror=()=>{t.innerText=i+a.responseText,zn(n)},a.send(JSON.stringify(s))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-javascript")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Rn)){let t=e.getAttribute(Rn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Rn,Date.now()+Wn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i);let o,r=e.parentNode.nextElementSibling.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Vn(e);o=r[0].innerText}let s=new Function(o);console.log!=Un&&(console.stdlog=console.log.bind(console),console.log=Un),console.logs=[],s(),i.innerText=console.logs.join("\n"),Vn(e)}})),[...document.querySelectorAll(".code-header button.button-run-python")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Yn)){let t=e.getAttribute(Yn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Yn,Date.now()+Kn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),function(e,t,n,i){let o,r=e.getElementsByTagName("pre");if(2==r.length)o=r[1].innerText;else{if(1!=r.length)return void Qn(n);o=r[0].innerText}let s=[{code:o,file_name:"main.py"}];socket=io("https://repl.online-cpp.com",{transports:["websocket"],timeout:Kn,"connect timeout":3e3,reconnection:!1,query:{type:"script",lang:"python3"}}),socket.emit("code",s,"","main.py"),socket.on("exit",(function(e,t){Qn(n)})),socket.on("output",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=n})),socket.on("err",(function(e){let n=(new TextDecoder).decode(new Uint8Array(e));t.innerText=i+"\n"+n})),socket.on("connect_error",(function(e){t.innerText=i+e.message,socket.close(),Qn(n)}))}(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}})),[...document.querySelectorAll(".code-header button.button-run-rust")].forEach((e=>{e.onclick=()=>{if(function(e){if(e.hasAttribute(Xn)){let t=e.getAttribute(Xn);if(Number(t)+5e3>Date.now())return!0}return!1}(e))return;var t;(t=e).setAttribute(Xn,Date.now()+Gn),t.getElementsByTagName("i")[0].classList.replace("icon-playfill","icon-loading1");let n=function(e){let t=e.parentNode.parentNode.nextElementSibling;if(null==t||"DETAILS"!=t.tagName||"run-output"!=t.className){let n=t;t=document.createElement("details"),t.className="run-output";let i=document.createElement("summary");i.textContent=e.getAttribute("output-title"),t.appendChild(i),null==n?e.parentNode.parentNode.parentNode.appendChild(t):n.parentNode.insertBefore(t,n)}return t.setAttribute("open","open"),t}(e);for(let e of n.getElementsByTagName("p"))n.removeChild(e);let i=document.createElement("p");i.innerText=e.getAttribute("wait-message"),n.appendChild(i),Zn(e.parentNode.nextElementSibling,i,e,e.getAttribute("error-prompt"))}}))}(); +!(function () { + 'use strict'; + const e = new Map(); + var t = { + set(t, n, i) { + e.has(t) || e.set(t, new Map()); + const o = e.get(t); + o.has(n) || 0 === o.size + ? o.set(n, i) + : console.error( + `Bootstrap doesn't allow more than one instance per element. Bound instance: ${ + Array.from(o.keys())[0] + }.` + ); + }, + get: (t, n) => (e.has(t) && e.get(t).get(n)) || null, + remove(t, n) { + if (!e.has(t)) return; + const i = e.get(t); + i.delete(n), 0 === i.size && e.delete(t); + } + }; + const n = 'transitionend', + i = (e) => ( + e && + window.CSS && + window.CSS.escape && + (e = e.replace(/#([^\s"#']+)/g, (e, t) => `#${CSS.escape(t)}`)), + e + ), + o = (e) => + !(!e || 'object' != typeof e) && + (void 0 !== e.jquery && (e = e[0]), void 0 !== e.nodeType), + r = (e) => + o(e) + ? e.jquery + ? e[0] + : e + : 'string' == typeof e && e.length > 0 + ? document.querySelector(i(e)) + : null, + s = (e) => { + if (!document.documentElement.attachShadow) return null; + if ('function' == typeof e.getRootNode) { + const t = e.getRootNode(); + return t instanceof ShadowRoot ? t : null; + } + return e instanceof ShadowRoot + ? e + : e.parentNode + ? s(e.parentNode) + : null; + }, + a = () => {}, + l = () => + window.jQuery && !document.body.hasAttribute('data-bs-no-jquery') + ? window.jQuery + : null, + c = [], + u = () => 'rtl' === document.documentElement.dir, + d = (e) => { + var t; + (t = () => { + const t = l(); + if (t) { + const n = e.NAME, + i = t.fn[n]; + (t.fn[n] = e.jQueryInterface), + (t.fn[n].Constructor = e), + (t.fn[n].noConflict = () => ((t.fn[n] = i), e.jQueryInterface)); + } + }), + 'loading' === document.readyState + ? (c.length || + document.addEventListener('DOMContentLoaded', () => { + for (const e of c) e(); + }), + c.push(t)) + : t(); + }, + f = function (e) { + let t = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e; + return 'function' == typeof e + ? e( + ...(arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : []) + ) + : t; + }, + p = function (e, t) { + if (!(!(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2])) + return void f(e); + const i = + ((e) => { + if (!e) return 0; + let { transitionDuration: t, transitionDelay: n } = + window.getComputedStyle(e); + const i = Number.parseFloat(t), + o = Number.parseFloat(n); + return i || o + ? ((t = t.split(',')[0]), + (n = n.split(',')[0]), + 1e3 * (Number.parseFloat(t) + Number.parseFloat(n))) + : 0; + })(t) + 5; + let o = !1; + const r = (i) => { + let { target: s } = i; + s === t && ((o = !0), t.removeEventListener(n, r), f(e)); + }; + t.addEventListener(n, r), + setTimeout(() => { + o || t.dispatchEvent(new Event(n)); + }, i); + }, + h = /[^.]*(?=\..*)\.|.*/, + m = /\..*/, + g = /::\d+$/, + b = {}; + let v = 1; + const y = { mouseenter: 'mouseover', mouseleave: 'mouseout' }, + _ = new Set([ + 'click', + 'dblclick', + 'mouseup', + 'mousedown', + 'contextmenu', + 'mousewheel', + 'DOMMouseScroll', + 'mouseover', + 'mouseout', + 'mousemove', + 'selectstart', + 'selectend', + 'keydown', + 'keypress', + 'keyup', + 'orientationchange', + 'touchstart', + 'touchmove', + 'touchend', + 'touchcancel', + 'pointerdown', + 'pointermove', + 'pointerup', + 'pointerleave', + 'pointercancel', + 'gesturestart', + 'gesturechange', + 'gestureend', + 'focus', + 'blur', + 'change', + 'reset', + 'select', + 'submit', + 'focusin', + 'focusout', + 'load', + 'unload', + 'beforeunload', + 'resize', + 'move', + 'DOMContentLoaded', + 'readystatechange', + 'error', + 'abort', + 'scroll' + ]); + function w(e, t) { + return (t && `${t}::${v++}`) || e.uidEvent || v++; + } + function E(e) { + const t = w(e); + return (e.uidEvent = t), (b[t] = b[t] || {}), b[t]; + } + function A(e, t) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; + return Object.values(e).find( + (e) => e.callable === t && e.delegationSelector === n + ); + } + function x(e, t, n) { + const i = 'string' == typeof t, + o = i ? n : t || n; + let r = L(e); + return _.has(r) || (r = e), [i, o, r]; + } + function T(e, t, n, i, o) { + if ('string' != typeof t || !e) return; + let [r, s, a] = x(t, n, i); + if (t in y) { + const e = (e) => + function (t) { + if ( + !t.relatedTarget || + (t.relatedTarget !== t.delegateTarget && + !t.delegateTarget.contains(t.relatedTarget)) + ) + return e.call(this, t); + }; + s = e(s); + } + const l = E(e), + c = l[a] || (l[a] = {}), + u = A(c, s, r ? n : null); + if (u) return void (u.oneOff = u.oneOff && o); + const d = w(s, t.replace(h, '')), + f = r + ? (function (e, t, n) { + return function i(o) { + const r = e.querySelectorAll(t); + for (let { target: s } = o; s && s !== this; s = s.parentNode) + for (const a of r) + if (a === s) + return ( + N(o, { delegateTarget: s }), + i.oneOff && S.off(e, o.type, t, n), + n.apply(s, [o]) + ); + }; + })(e, n, s) + : (function (e, t) { + return function n(i) { + return ( + N(i, { delegateTarget: e }), + n.oneOff && S.off(e, i.type, t), + t.apply(e, [i]) + ); + }; + })(e, s); + (f.delegationSelector = r ? n : null), + (f.callable = s), + (f.oneOff = o), + (f.uidEvent = d), + (c[d] = f), + e.addEventListener(a, f, r); + } + function C(e, t, n, i, o) { + const r = A(t[n], i, o); + r && (e.removeEventListener(n, r, Boolean(o)), delete t[n][r.uidEvent]); + } + function O(e, t, n, i) { + const o = t[n] || {}; + for (const [r, s] of Object.entries(o)) + r.includes(i) && C(e, t, n, s.callable, s.delegationSelector); + } + function L(e) { + return (e = e.replace(m, '')), y[e] || e; + } + const S = { + on(e, t, n, i) { + T(e, t, n, i, !1); + }, + one(e, t, n, i) { + T(e, t, n, i, !0); + }, + off(e, t, n, i) { + if ('string' != typeof t || !e) return; + const [o, r, s] = x(t, n, i), + a = s !== t, + l = E(e), + c = l[s] || {}, + u = t.startsWith('.'); + if (void 0 === r) { + if (u) for (const n of Object.keys(l)) O(e, l, n, t.slice(1)); + for (const [n, i] of Object.entries(c)) { + const o = n.replace(g, ''); + (a && !t.includes(o)) || C(e, l, s, i.callable, i.delegationSelector); + } + } else { + if (!Object.keys(c).length) return; + C(e, l, s, r, o ? n : null); + } + }, + trigger(e, t, n) { + if ('string' != typeof t || !e) return null; + const i = l(); + let o = null, + r = !0, + s = !0, + a = !1; + t !== L(t) && + i && + ((o = i.Event(t, n)), + i(e).trigger(o), + (r = !o.isPropagationStopped()), + (s = !o.isImmediatePropagationStopped()), + (a = o.isDefaultPrevented())); + const c = N(new Event(t, { bubbles: r, cancelable: !0 }), n); + return ( + a && c.preventDefault(), + s && e.dispatchEvent(c), + c.defaultPrevented && o && o.preventDefault(), + c + ); + } + }; + function N(e) { + let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + for (const [n, i] of Object.entries(t)) + try { + e[n] = i; + } catch { + Object.defineProperty(e, n, { configurable: !0, get: () => i }); + } + return e; + } + function k(e) { + if ('true' === e) return !0; + if ('false' === e) return !1; + if (e === Number(e).toString()) return Number(e); + if ('' === e || 'null' === e) return null; + if ('string' != typeof e) return e; + try { + return JSON.parse(decodeURIComponent(e)); + } catch { + return e; + } + } + function D(e) { + return e.replace(/[A-Z]/g, (e) => `-${e.toLowerCase()}`); + } + const j = { + setDataAttribute(e, t, n) { + e.setAttribute(`data-bs-${D(t)}`, n); + }, + removeDataAttribute(e, t) { + e.removeAttribute(`data-bs-${D(t)}`); + }, + getDataAttributes(e) { + if (!e) return {}; + const t = {}, + n = Object.keys(e.dataset).filter( + (e) => e.startsWith('bs') && !e.startsWith('bsConfig') + ); + for (const i of n) { + let n = i.replace(/^bs/, ''); + (n = n.charAt(0).toLowerCase() + n.slice(1, n.length)), + (t[n] = k(e.dataset[i])); + } + return t; + }, + getDataAttribute: (e, t) => k(e.getAttribute(`data-bs-${D(t)}`)) + }; + class B { + static get Default() { + return {}; + } + static get DefaultType() { + return {}; + } + static get NAME() { + throw new Error( + 'You have to implement the static method "NAME", for each component!' + ); + } + _getConfig(e) { + return ( + (e = this._mergeConfigObj(e)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + _configAfterMerge(e) { + return e; + } + _mergeConfigObj(e, t) { + const n = o(t) ? j.getDataAttribute(t, 'config') : {}; + return { + ...this.constructor.Default, + ...('object' == typeof n ? n : {}), + ...(o(t) ? j.getDataAttributes(t) : {}), + ...('object' == typeof e ? e : {}) + }; + } + _typeCheckConfig(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : this.constructor.DefaultType; + for (const [i, r] of Object.entries(t)) { + const t = e[i], + s = o(t) + ? 'element' + : null == (n = t) + ? `${n}` + : Object.prototype.toString + .call(n) + .match(/\s([a-z]+)/i)[1] + .toLowerCase(); + if (!new RegExp(r).test(s)) + throw new TypeError( + `${this.constructor.NAME.toUpperCase()}: Option "${i}" provided type "${s}" but expected type "${r}".` + ); + } + var n; + } + } + class P extends B { + constructor(e, n) { + super(), + (e = r(e)) && + ((this._element = e), + (this._config = this._getConfig(n)), + t.set(this._element, this.constructor.DATA_KEY, this)); + } + dispose() { + t.remove(this._element, this.constructor.DATA_KEY), + S.off(this._element, this.constructor.EVENT_KEY); + for (const e of Object.getOwnPropertyNames(this)) this[e] = null; + } + _queueCallback(e, t) { + p( + e, + t, + !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2] + ); + } + _getConfig(e) { + return ( + (e = this._mergeConfigObj(e, this._element)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + static getInstance(e) { + return t.get(r(e), this.DATA_KEY); + } + static getOrCreateInstance(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; + return ( + this.getInstance(e) || new this(e, 'object' == typeof t ? t : null) + ); + } + static get VERSION() { + return '5.3.3'; + } + static get DATA_KEY() { + return `bs.${this.NAME}`; + } + static get EVENT_KEY() { + return `.${this.DATA_KEY}`; + } + static eventName(e) { + return `${e}${this.EVENT_KEY}`; + } + } + const M = (e) => { + let t = e.getAttribute('data-bs-target'); + if (!t || '#' === t) { + let n = e.getAttribute('href'); + if (!n || (!n.includes('#') && !n.startsWith('.'))) return null; + n.includes('#') && !n.startsWith('#') && (n = `#${n.split('#')[1]}`), + (t = n && '#' !== n ? n.trim() : null); + } + return t + ? t + .split(',') + .map((e) => i(e)) + .join(',') + : null; + }, + I = { + find(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return [].concat(...Element.prototype.querySelectorAll.call(t, e)); + }, + findOne(e) { + let t = + arguments.length > 1 && void 0 !== arguments[1] + ? arguments[1] + : document.documentElement; + return Element.prototype.querySelector.call(t, e); + }, + children: (e, t) => [].concat(...e.children).filter((e) => e.matches(t)), + parents(e, t) { + const n = []; + let i = e.parentNode.closest(t); + for (; i; ) n.push(i), (i = i.parentNode.closest(t)); + return n; + }, + prev(e, t) { + let n = e.previousElementSibling; + for (; n; ) { + if (n.matches(t)) return [n]; + n = n.previousElementSibling; + } + return []; + }, + next(e, t) { + let n = e.nextElementSibling; + for (; n; ) { + if (n.matches(t)) return [n]; + n = n.nextElementSibling; + } + return []; + }, + focusableChildren(e) { + const t = [ + 'a', + 'button', + 'input', + 'textarea', + 'select', + 'details', + '[tabindex]', + '[contenteditable="true"]' + ] + .map((e) => `${e}:not([tabindex^="-"])`) + .join(','); + return this.find(t, e).filter( + (e) => + !((e) => + !e || + e.nodeType !== Node.ELEMENT_NODE || + !!e.classList.contains('disabled') || + (void 0 !== e.disabled + ? e.disabled + : e.hasAttribute('disabled') && + 'false' !== e.getAttribute('disabled')))(e) && + ((e) => { + if (!o(e) || 0 === e.getClientRects().length) return !1; + const t = + 'visible' === + getComputedStyle(e).getPropertyValue('visibility'), + n = e.closest('details:not([open])'); + if (!n) return t; + if (n !== e) { + const t = e.closest('summary'); + if (t && t.parentNode !== n) return !1; + if (null === t) return !1; + } + return t; + })(e) + ); + }, + getSelectorFromElement(e) { + const t = M(e); + return t && I.findOne(t) ? t : null; + }, + getElementFromSelector(e) { + const t = M(e); + return t ? I.findOne(t) : null; + }, + getMultipleElementsFromSelector(e) { + const t = M(e); + return t ? I.find(t) : []; + } + }, + F = '.bs.collapse', + H = `show${F}`, + q = `shown${F}`, + $ = `hide${F}`, + z = `hidden${F}`, + R = `click${F}.data-api`, + W = 'show', + V = 'collapse', + U = 'collapsing', + Y = `:scope .${V} .${V}`, + K = '[data-bs-toggle="collapse"]', + Q = { parent: null, toggle: !0 }, + X = { parent: '(null|element)', toggle: 'boolean' }; + class G extends P { + constructor(e, t) { + super(e, t), (this._isTransitioning = !1), (this._triggerArray = []); + const n = I.find(K); + for (const e of n) { + const t = I.getSelectorFromElement(e), + n = I.find(t).filter((e) => e === this._element); + null !== t && n.length && this._triggerArray.push(e); + } + this._initializeChildren(), + this._config.parent || + this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()), + this._config.toggle && this.toggle(); + } + static get Default() { + return Q; + } + static get DefaultType() { + return X; + } + static get NAME() { + return 'collapse'; + } + toggle() { + this._isShown() ? this.hide() : this.show(); + } + show() { + if (this._isTransitioning || this._isShown()) return; + let e = []; + if ( + (this._config.parent && + (e = this._getFirstLevelChildren( + '.collapse.show, .collapse.collapsing' + ) + .filter((e) => e !== this._element) + .map((e) => G.getOrCreateInstance(e, { toggle: !1 }))), + e.length && e[0]._isTransitioning) + ) + return; + if (S.trigger(this._element, H).defaultPrevented) return; + for (const t of e) t.hide(); + const t = this._getDimension(); + this._element.classList.remove(V), + this._element.classList.add(U), + (this._element.style[t] = 0), + this._addAriaAndCollapsedClass(this._triggerArray, !0), + (this._isTransitioning = !0); + const n = `scroll${t[0].toUpperCase() + t.slice(1)}`; + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(U), + this._element.classList.add(V, W), + (this._element.style[t] = ''), + S.trigger(this._element, q); + }, + this._element, + !0 + ), + (this._element.style[t] = `${this._element[n]}px`); + } + hide() { + if (this._isTransitioning || !this._isShown()) return; + if (S.trigger(this._element, $).defaultPrevented) return; + const e = this._getDimension(); + (this._element.style[e] = `${ + this._element.getBoundingClientRect()[e] + }px`), + this._element.offsetHeight, + this._element.classList.add(U), + this._element.classList.remove(V, W); + for (const e of this._triggerArray) { + const t = I.getElementFromSelector(e); + t && !this._isShown(t) && this._addAriaAndCollapsedClass([e], !1); + } + this._isTransitioning = !0; + (this._element.style[e] = ''), + this._queueCallback( + () => { + (this._isTransitioning = !1), + this._element.classList.remove(U), + this._element.classList.add(V), + S.trigger(this._element, z); + }, + this._element, + !0 + ); + } + _isShown() { + return ( + arguments.length > 0 && void 0 !== arguments[0] + ? arguments[0] + : this._element + ).classList.contains(W); + } + _configAfterMerge(e) { + return (e.toggle = Boolean(e.toggle)), (e.parent = r(e.parent)), e; + } + _getDimension() { + return this._element.classList.contains('collapse-horizontal') + ? 'width' + : 'height'; + } + _initializeChildren() { + if (!this._config.parent) return; + const e = this._getFirstLevelChildren(K); + for (const t of e) { + const e = I.getElementFromSelector(t); + e && this._addAriaAndCollapsedClass([t], this._isShown(e)); + } + } + _getFirstLevelChildren(e) { + const t = I.find(Y, this._config.parent); + return I.find(e, this._config.parent).filter((e) => !t.includes(e)); + } + _addAriaAndCollapsedClass(e, t) { + if (e.length) + for (const n of e) + n.classList.toggle('collapsed', !t), + n.setAttribute('aria-expanded', t); + } + static jQueryInterface(e) { + const t = {}; + return ( + 'string' == typeof e && /show|hide/.test(e) && (t.toggle = !1), + this.each(function () { + const n = G.getOrCreateInstance(this, t); + if ('string' == typeof e) { + if (void 0 === n[e]) throw new TypeError(`No method named "${e}"`); + n[e](); + } + }) + ); + } + } + S.on(document, R, K, function (e) { + ('A' === e.target.tagName || + (e.delegateTarget && 'A' === e.delegateTarget.tagName)) && + e.preventDefault(); + for (const e of I.getMultipleElementsFromSelector(this)) + G.getOrCreateInstance(e, { toggle: !1 }).toggle(); + }), + d(G), + document.getElementsByClassName('collapse'); + var J = 'top', + Z = 'bottom', + ee = 'right', + te = 'left', + ne = 'auto', + ie = [J, Z, ee, te], + oe = 'start', + re = 'end', + se = 'clippingParents', + ae = 'viewport', + le = 'popper', + ce = 'reference', + ue = ie.reduce(function (e, t) { + return e.concat([t + '-' + oe, t + '-' + re]); + }, []), + de = [].concat(ie, [ne]).reduce(function (e, t) { + return e.concat([t, t + '-' + oe, t + '-' + re]); + }, []), + fe = 'beforeRead', + pe = 'read', + he = 'afterRead', + me = 'beforeMain', + ge = 'main', + be = 'afterMain', + ve = 'beforeWrite', + ye = 'write', + _e = 'afterWrite', + we = [fe, pe, he, me, ge, be, ve, ye, _e]; + function Ee(e) { + return e ? (e.nodeName || '').toLowerCase() : null; + } + function Ae(e) { + if (null == e) return window; + if ('[object Window]' !== e.toString()) { + var t = e.ownerDocument; + return (t && t.defaultView) || window; + } + return e; + } + function xe(e) { + return e instanceof Ae(e).Element || e instanceof Element; + } + function Te(e) { + return e instanceof Ae(e).HTMLElement || e instanceof HTMLElement; + } + function Ce(e) { + return ( + 'undefined' != typeof ShadowRoot && + (e instanceof Ae(e).ShadowRoot || e instanceof ShadowRoot) + ); + } + var Oe = { + name: 'applyStyles', + enabled: !0, + phase: 'write', + fn: function (e) { + var t = e.state; + Object.keys(t.elements).forEach(function (e) { + var n = t.styles[e] || {}, + i = t.attributes[e] || {}, + o = t.elements[e]; + Te(o) && + Ee(o) && + (Object.assign(o.style, n), + Object.keys(i).forEach(function (e) { + var t = i[e]; + !1 === t + ? o.removeAttribute(e) + : o.setAttribute(e, !0 === t ? '' : t); + })); + }); + }, + effect: function (e) { + var t = e.state, + n = { + popper: { + position: t.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { position: 'absolute' }, + reference: {} + }; + return ( + Object.assign(t.elements.popper.style, n.popper), + (t.styles = n), + t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), + function () { + Object.keys(t.elements).forEach(function (e) { + var i = t.elements[e], + o = t.attributes[e] || {}, + r = Object.keys( + t.styles.hasOwnProperty(e) ? t.styles[e] : n[e] + ).reduce(function (e, t) { + return (e[t] = ''), e; + }, {}); + Te(i) && + Ee(i) && + (Object.assign(i.style, r), + Object.keys(o).forEach(function (e) { + i.removeAttribute(e); + })); + }); + } + ); + }, + requires: ['computeStyles'] + }; + function Le(e) { + return e.split('-')[0]; + } + var Se = Math.max, + Ne = Math.min, + ke = Math.round; + function De() { + var e = navigator.userAgentData; + return null != e && e.brands && Array.isArray(e.brands) + ? e.brands + .map(function (e) { + return e.brand + '/' + e.version; + }) + .join(' ') + : navigator.userAgent; + } + function je() { + return !/^((?!chrome|android).)*safari/i.test(De()); + } + function Be(e, t, n) { + void 0 === t && (t = !1), void 0 === n && (n = !1); + var i = e.getBoundingClientRect(), + o = 1, + r = 1; + t && + Te(e) && + ((o = (e.offsetWidth > 0 && ke(i.width) / e.offsetWidth) || 1), + (r = (e.offsetHeight > 0 && ke(i.height) / e.offsetHeight) || 1)); + var s = (xe(e) ? Ae(e) : window).visualViewport, + a = !je() && n, + l = (i.left + (a && s ? s.offsetLeft : 0)) / o, + c = (i.top + (a && s ? s.offsetTop : 0)) / r, + u = i.width / o, + d = i.height / r; + return { + width: u, + height: d, + top: c, + right: l + u, + bottom: c + d, + left: l, + x: l, + y: c + }; + } + function Pe(e) { + var t = Be(e), + n = e.offsetWidth, + i = e.offsetHeight; + return ( + Math.abs(t.width - n) <= 1 && (n = t.width), + Math.abs(t.height - i) <= 1 && (i = t.height), + { x: e.offsetLeft, y: e.offsetTop, width: n, height: i } + ); + } + function Me(e, t) { + var n = t.getRootNode && t.getRootNode(); + if (e.contains(t)) return !0; + if (n && Ce(n)) { + var i = t; + do { + if (i && e.isSameNode(i)) return !0; + i = i.parentNode || i.host; + } while (i); + } + return !1; + } + function Ie(e) { + return Ae(e).getComputedStyle(e); + } + function Fe(e) { + return ['table', 'td', 'th'].indexOf(Ee(e)) >= 0; + } + function He(e) { + return ((xe(e) ? e.ownerDocument : e.document) || window.document) + .documentElement; + } + function qe(e) { + return 'html' === Ee(e) + ? e + : e.assignedSlot || e.parentNode || (Ce(e) ? e.host : null) || He(e); + } + function $e(e) { + return Te(e) && 'fixed' !== Ie(e).position ? e.offsetParent : null; + } + function ze(e) { + for (var t = Ae(e), n = $e(e); n && Fe(n) && 'static' === Ie(n).position; ) + n = $e(n); + return n && + ('html' === Ee(n) || ('body' === Ee(n) && 'static' === Ie(n).position)) + ? t + : n || + (function (e) { + var t = /firefox/i.test(De()); + if (/Trident/i.test(De()) && Te(e) && 'fixed' === Ie(e).position) + return null; + var n = qe(e); + for ( + Ce(n) && (n = n.host); + Te(n) && ['html', 'body'].indexOf(Ee(n)) < 0; + + ) { + var i = Ie(n); + if ( + 'none' !== i.transform || + 'none' !== i.perspective || + 'paint' === i.contain || + -1 !== ['transform', 'perspective'].indexOf(i.willChange) || + (t && 'filter' === i.willChange) || + (t && i.filter && 'none' !== i.filter) + ) + return n; + n = n.parentNode; + } + return null; + })(e) || + t; + } + function Re(e) { + return ['top', 'bottom'].indexOf(e) >= 0 ? 'x' : 'y'; + } + function We(e, t, n) { + return Se(e, Ne(t, n)); + } + function Ve(e) { + return Object.assign({}, { top: 0, right: 0, bottom: 0, left: 0 }, e); + } + function Ue(e, t) { + return t.reduce(function (t, n) { + return (t[n] = e), t; + }, {}); + } + var Ye = { + name: 'arrow', + enabled: !0, + phase: 'main', + fn: function (e) { + var t, + n = e.state, + i = e.name, + o = e.options, + r = n.elements.arrow, + s = n.modifiersData.popperOffsets, + a = Le(n.placement), + l = Re(a), + c = [te, ee].indexOf(a) >= 0 ? 'height' : 'width'; + if (r && s) { + var u = (function (e, t) { + return Ve( + 'number' != + typeof (e = + 'function' == typeof e + ? e(Object.assign({}, t.rects, { placement: t.placement })) + : e) + ? e + : Ue(e, ie) + ); + })(o.padding, n), + d = Pe(r), + f = 'y' === l ? J : te, + p = 'y' === l ? Z : ee, + h = + n.rects.reference[c] + + n.rects.reference[l] - + s[l] - + n.rects.popper[c], + m = s[l] - n.rects.reference[l], + g = ze(r), + b = g ? ('y' === l ? g.clientHeight || 0 : g.clientWidth || 0) : 0, + v = h / 2 - m / 2, + y = u[f], + _ = b - d[c] - u[p], + w = b / 2 - d[c] / 2 + v, + E = We(y, w, _), + A = l; + n.modifiersData[i] = (((t = {})[A] = E), (t.centerOffset = E - w), t); + } + }, + effect: function (e) { + var t = e.state, + n = e.options.element, + i = void 0 === n ? '[data-popper-arrow]' : n; + null != i && + ('string' != typeof i || (i = t.elements.popper.querySelector(i))) && + Me(t.elements.popper, i) && + (t.elements.arrow = i); + }, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] + }; + function Ke(e) { + return e.split('-')[1]; + } + var Qe = { top: 'auto', right: 'auto', bottom: 'auto', left: 'auto' }; + function Xe(e) { + var t, + n = e.popper, + i = e.popperRect, + o = e.placement, + r = e.variation, + s = e.offsets, + a = e.position, + l = e.gpuAcceleration, + c = e.adaptive, + u = e.roundOffsets, + d = e.isFixed, + f = s.x, + p = void 0 === f ? 0 : f, + h = s.y, + m = void 0 === h ? 0 : h, + g = 'function' == typeof u ? u({ x: p, y: m }) : { x: p, y: m }; + (p = g.x), (m = g.y); + var b = s.hasOwnProperty('x'), + v = s.hasOwnProperty('y'), + y = te, + _ = J, + w = window; + if (c) { + var E = ze(n), + A = 'clientHeight', + x = 'clientWidth'; + if ( + (E === Ae(n) && + 'static' !== Ie((E = He(n))).position && + 'absolute' === a && + ((A = 'scrollHeight'), (x = 'scrollWidth')), + o === J || ((o === te || o === ee) && r === re)) + ) + (_ = Z), + (m -= + (d && E === w && w.visualViewport + ? w.visualViewport.height + : E[A]) - i.height), + (m *= l ? 1 : -1); + if (o === te || ((o === J || o === Z) && r === re)) + (y = ee), + (p -= + (d && E === w && w.visualViewport ? w.visualViewport.width : E[x]) - + i.width), + (p *= l ? 1 : -1); + } + var T, + C = Object.assign({ position: a }, c && Qe), + O = + !0 === u + ? (function (e, t) { + var n = e.x, + i = e.y, + o = t.devicePixelRatio || 1; + return { x: ke(n * o) / o || 0, y: ke(i * o) / o || 0 }; + })({ x: p, y: m }, Ae(n)) + : { x: p, y: m }; + return ( + (p = O.x), + (m = O.y), + l + ? Object.assign( + {}, + C, + (((T = {})[_] = v ? '0' : ''), + (T[y] = b ? '0' : ''), + (T.transform = + (w.devicePixelRatio || 1) <= 1 + ? 'translate(' + p + 'px, ' + m + 'px)' + : 'translate3d(' + p + 'px, ' + m + 'px, 0)'), + T) + ) + : Object.assign( + {}, + C, + (((t = {})[_] = v ? m + 'px' : ''), + (t[y] = b ? p + 'px' : ''), + (t.transform = ''), + t) + ) + ); + } + var Ge = { + name: 'computeStyles', + enabled: !0, + phase: 'beforeWrite', + fn: function (e) { + var t = e.state, + n = e.options, + i = n.gpuAcceleration, + o = void 0 === i || i, + r = n.adaptive, + s = void 0 === r || r, + a = n.roundOffsets, + l = void 0 === a || a, + c = { + placement: Le(t.placement), + variation: Ke(t.placement), + popper: t.elements.popper, + popperRect: t.rects.popper, + gpuAcceleration: o, + isFixed: 'fixed' === t.options.strategy + }; + null != t.modifiersData.popperOffsets && + (t.styles.popper = Object.assign( + {}, + t.styles.popper, + Xe( + Object.assign({}, c, { + offsets: t.modifiersData.popperOffsets, + position: t.options.strategy, + adaptive: s, + roundOffsets: l + }) + ) + )), + null != t.modifiersData.arrow && + (t.styles.arrow = Object.assign( + {}, + t.styles.arrow, + Xe( + Object.assign({}, c, { + offsets: t.modifiersData.arrow, + position: 'absolute', + adaptive: !1, + roundOffsets: l + }) + ) + )), + (t.attributes.popper = Object.assign({}, t.attributes.popper, { + 'data-popper-placement': t.placement + })); + }, + data: {} + }, + Je = { passive: !0 }; + var Ze = { + name: 'eventListeners', + enabled: !0, + phase: 'write', + fn: function () {}, + effect: function (e) { + var t = e.state, + n = e.instance, + i = e.options, + o = i.scroll, + r = void 0 === o || o, + s = i.resize, + a = void 0 === s || s, + l = Ae(t.elements.popper), + c = [].concat(t.scrollParents.reference, t.scrollParents.popper); + return ( + r && + c.forEach(function (e) { + e.addEventListener('scroll', n.update, Je); + }), + a && l.addEventListener('resize', n.update, Je), + function () { + r && + c.forEach(function (e) { + e.removeEventListener('scroll', n.update, Je); + }), + a && l.removeEventListener('resize', n.update, Je); + } + ); + }, + data: {} + }, + et = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + function tt(e) { + return e.replace(/left|right|bottom|top/g, function (e) { + return et[e]; + }); + } + var nt = { start: 'end', end: 'start' }; + function it(e) { + return e.replace(/start|end/g, function (e) { + return nt[e]; + }); + } + function ot(e) { + var t = Ae(e); + return { scrollLeft: t.pageXOffset, scrollTop: t.pageYOffset }; + } + function rt(e) { + return Be(He(e)).left + ot(e).scrollLeft; + } + function st(e) { + var t = Ie(e), + n = t.overflow, + i = t.overflowX, + o = t.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + i); + } + function at(e) { + return ['html', 'body', '#document'].indexOf(Ee(e)) >= 0 + ? e.ownerDocument.body + : Te(e) && st(e) + ? e + : at(qe(e)); + } + function lt(e, t) { + var n; + void 0 === t && (t = []); + var i = at(e), + o = i === (null == (n = e.ownerDocument) ? void 0 : n.body), + r = Ae(i), + s = o ? [r].concat(r.visualViewport || [], st(i) ? i : []) : i, + a = t.concat(s); + return o ? a : a.concat(lt(qe(s))); + } + function ct(e) { + return Object.assign({}, e, { + left: e.x, + top: e.y, + right: e.x + e.width, + bottom: e.y + e.height + }); + } + function ut(e, t, n) { + return t === ae + ? ct( + (function (e, t) { + var n = Ae(e), + i = He(e), + o = n.visualViewport, + r = i.clientWidth, + s = i.clientHeight, + a = 0, + l = 0; + if (o) { + (r = o.width), (s = o.height); + var c = je(); + (c || (!c && 'fixed' === t)) && + ((a = o.offsetLeft), (l = o.offsetTop)); + } + return { width: r, height: s, x: a + rt(e), y: l }; + })(e, n) + ) + : xe(t) + ? (function (e, t) { + var n = Be(e, !1, 'fixed' === t); + return ( + (n.top = n.top + e.clientTop), + (n.left = n.left + e.clientLeft), + (n.bottom = n.top + e.clientHeight), + (n.right = n.left + e.clientWidth), + (n.width = e.clientWidth), + (n.height = e.clientHeight), + (n.x = n.left), + (n.y = n.top), + n + ); + })(t, n) + : ct( + (function (e) { + var t, + n = He(e), + i = ot(e), + o = null == (t = e.ownerDocument) ? void 0 : t.body, + r = Se( + n.scrollWidth, + n.clientWidth, + o ? o.scrollWidth : 0, + o ? o.clientWidth : 0 + ), + s = Se( + n.scrollHeight, + n.clientHeight, + o ? o.scrollHeight : 0, + o ? o.clientHeight : 0 + ), + a = -i.scrollLeft + rt(e), + l = -i.scrollTop; + return ( + 'rtl' === Ie(o || n).direction && + (a += Se(n.clientWidth, o ? o.clientWidth : 0) - r), + { width: r, height: s, x: a, y: l } + ); + })(He(e)) + ); + } + function dt(e, t, n, i) { + var o = + 'clippingParents' === t + ? (function (e) { + var t = lt(qe(e)), + n = + ['absolute', 'fixed'].indexOf(Ie(e).position) >= 0 && Te(e) + ? ze(e) + : e; + return xe(n) + ? t.filter(function (e) { + return xe(e) && Me(e, n) && 'body' !== Ee(e); + }) + : []; + })(e) + : [].concat(t), + r = [].concat(o, [n]), + s = r[0], + a = r.reduce(function (t, n) { + var o = ut(e, n, i); + return ( + (t.top = Se(o.top, t.top)), + (t.right = Ne(o.right, t.right)), + (t.bottom = Ne(o.bottom, t.bottom)), + (t.left = Se(o.left, t.left)), + t + ); + }, ut(e, s, i)); + return ( + (a.width = a.right - a.left), + (a.height = a.bottom - a.top), + (a.x = a.left), + (a.y = a.top), + a + ); + } + function ft(e) { + var t, + n = e.reference, + i = e.element, + o = e.placement, + r = o ? Le(o) : null, + s = o ? Ke(o) : null, + a = n.x + n.width / 2 - i.width / 2, + l = n.y + n.height / 2 - i.height / 2; + switch (r) { + case J: + t = { x: a, y: n.y - i.height }; + break; + case Z: + t = { x: a, y: n.y + n.height }; + break; + case ee: + t = { x: n.x + n.width, y: l }; + break; + case te: + t = { x: n.x - i.width, y: l }; + break; + default: + t = { x: n.x, y: n.y }; + } + var c = r ? Re(r) : null; + if (null != c) { + var u = 'y' === c ? 'height' : 'width'; + switch (s) { + case oe: + t[c] = t[c] - (n[u] / 2 - i[u] / 2); + break; + case re: + t[c] = t[c] + (n[u] / 2 - i[u] / 2); + } + } + return t; + } + function pt(e, t) { + void 0 === t && (t = {}); + var n = t, + i = n.placement, + o = void 0 === i ? e.placement : i, + r = n.strategy, + s = void 0 === r ? e.strategy : r, + a = n.boundary, + l = void 0 === a ? se : a, + c = n.rootBoundary, + u = void 0 === c ? ae : c, + d = n.elementContext, + f = void 0 === d ? le : d, + p = n.altBoundary, + h = void 0 !== p && p, + m = n.padding, + g = void 0 === m ? 0 : m, + b = Ve('number' != typeof g ? g : Ue(g, ie)), + v = f === le ? ce : le, + y = e.rects.popper, + _ = e.elements[h ? v : f], + w = dt(xe(_) ? _ : _.contextElement || He(e.elements.popper), l, u, s), + E = Be(e.elements.reference), + A = ft({ reference: E, element: y, placement: o }), + x = ct(Object.assign({}, y, A)), + T = f === le ? x : E, + C = { + top: w.top - T.top + b.top, + bottom: T.bottom - w.bottom + b.bottom, + left: w.left - T.left + b.left, + right: T.right - w.right + b.right + }, + O = e.modifiersData.offset; + if (f === le && O) { + var L = O[o]; + Object.keys(C).forEach(function (e) { + var t = [ee, Z].indexOf(e) >= 0 ? 1 : -1, + n = [J, Z].indexOf(e) >= 0 ? 'y' : 'x'; + C[e] += L[n] * t; + }); + } + return C; + } + function ht(e, t) { + void 0 === t && (t = {}); + var n = t, + i = n.placement, + o = n.boundary, + r = n.rootBoundary, + s = n.padding, + a = n.flipVariations, + l = n.allowedAutoPlacements, + c = void 0 === l ? de : l, + u = Ke(i), + d = u + ? a + ? ue + : ue.filter(function (e) { + return Ke(e) === u; + }) + : ie, + f = d.filter(function (e) { + return c.indexOf(e) >= 0; + }); + 0 === f.length && (f = d); + var p = f.reduce(function (t, n) { + return ( + (t[n] = pt(e, { + placement: n, + boundary: o, + rootBoundary: r, + padding: s + })[Le(n)]), + t + ); + }, {}); + return Object.keys(p).sort(function (e, t) { + return p[e] - p[t]; + }); + } + var mt = { + name: 'flip', + enabled: !0, + phase: 'main', + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name; + if (!t.modifiersData[i]._skip) { + for ( + var o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 === s || s, + l = n.fallbackPlacements, + c = n.padding, + u = n.boundary, + d = n.rootBoundary, + f = n.altBoundary, + p = n.flipVariations, + h = void 0 === p || p, + m = n.allowedAutoPlacements, + g = t.options.placement, + b = Le(g), + v = + l || + (b === g || !h + ? [tt(g)] + : (function (e) { + if (Le(e) === ne) return []; + var t = tt(e); + return [it(e), t, it(t)]; + })(g)), + y = [g].concat(v).reduce(function (e, n) { + return e.concat( + Le(n) === ne + ? ht(t, { + placement: n, + boundary: u, + rootBoundary: d, + padding: c, + flipVariations: h, + allowedAutoPlacements: m + }) + : n + ); + }, []), + _ = t.rects.reference, + w = t.rects.popper, + E = new Map(), + A = !0, + x = y[0], + T = 0; + T < y.length; + T++ + ) { + var C = y[T], + O = Le(C), + L = Ke(C) === oe, + S = [J, Z].indexOf(O) >= 0, + N = S ? 'width' : 'height', + k = pt(t, { + placement: C, + boundary: u, + rootBoundary: d, + altBoundary: f, + padding: c + }), + D = S ? (L ? ee : te) : L ? Z : J; + _[N] > w[N] && (D = tt(D)); + var j = tt(D), + B = []; + if ( + (r && B.push(k[O] <= 0), + a && B.push(k[D] <= 0, k[j] <= 0), + B.every(function (e) { + return e; + })) + ) { + (x = C), (A = !1); + break; + } + E.set(C, B); + } + if (A) + for ( + var P = function (e) { + var t = y.find(function (t) { + var n = E.get(t); + if (n) + return n.slice(0, e).every(function (e) { + return e; + }); + }); + if (t) return (x = t), 'break'; + }, + M = h ? 3 : 1; + M > 0; + M-- + ) { + if ('break' === P(M)) break; + } + t.placement !== x && + ((t.modifiersData[i]._skip = !0), (t.placement = x), (t.reset = !0)); + } + }, + requiresIfExists: ['offset'], + data: { _skip: !1 } + }; + function gt(e, t, n) { + return ( + void 0 === n && (n = { x: 0, y: 0 }), + { + top: e.top - t.height - n.y, + right: e.right - t.width + n.x, + bottom: e.bottom - t.height + n.y, + left: e.left - t.width - n.x + } + ); + } + function bt(e) { + return [J, ee, Z, te].some(function (t) { + return e[t] >= 0; + }); + } + var vt = { + name: 'hide', + enabled: !0, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: function (e) { + var t = e.state, + n = e.name, + i = t.rects.reference, + o = t.rects.popper, + r = t.modifiersData.preventOverflow, + s = pt(t, { elementContext: 'reference' }), + a = pt(t, { altBoundary: !0 }), + l = gt(s, i), + c = gt(a, o, r), + u = bt(l), + d = bt(c); + (t.modifiersData[n] = { + referenceClippingOffsets: l, + popperEscapeOffsets: c, + isReferenceHidden: u, + hasPopperEscaped: d + }), + (t.attributes.popper = Object.assign({}, t.attributes.popper, { + 'data-popper-reference-hidden': u, + 'data-popper-escaped': d + })); + } + }; + var yt = { + name: 'offset', + enabled: !0, + phase: 'main', + requires: ['popperOffsets'], + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name, + o = n.offset, + r = void 0 === o ? [0, 0] : o, + s = de.reduce(function (e, n) { + return ( + (e[n] = (function (e, t, n) { + var i = Le(e), + o = [te, J].indexOf(i) >= 0 ? -1 : 1, + r = + 'function' == typeof n + ? n(Object.assign({}, t, { placement: e })) + : n, + s = r[0], + a = r[1]; + return ( + (s = s || 0), + (a = (a || 0) * o), + [te, ee].indexOf(i) >= 0 ? { x: a, y: s } : { x: s, y: a } + ); + })(n, t.rects, r)), + e + ); + }, {}), + a = s[t.placement], + l = a.x, + c = a.y; + null != t.modifiersData.popperOffsets && + ((t.modifiersData.popperOffsets.x += l), + (t.modifiersData.popperOffsets.y += c)), + (t.modifiersData[i] = s); + } + }; + var _t = { + name: 'popperOffsets', + enabled: !0, + phase: 'read', + fn: function (e) { + var t = e.state, + n = e.name; + t.modifiersData[n] = ft({ + reference: t.rects.reference, + element: t.rects.popper, + placement: t.placement + }); + }, + data: {} + }; + var wt = { + name: 'preventOverflow', + enabled: !0, + phase: 'main', + fn: function (e) { + var t = e.state, + n = e.options, + i = e.name, + o = n.mainAxis, + r = void 0 === o || o, + s = n.altAxis, + a = void 0 !== s && s, + l = n.boundary, + c = n.rootBoundary, + u = n.altBoundary, + d = n.padding, + f = n.tether, + p = void 0 === f || f, + h = n.tetherOffset, + m = void 0 === h ? 0 : h, + g = pt(t, { boundary: l, rootBoundary: c, padding: d, altBoundary: u }), + b = Le(t.placement), + v = Ke(t.placement), + y = !v, + _ = Re(b), + w = 'x' === _ ? 'y' : 'x', + E = t.modifiersData.popperOffsets, + A = t.rects.reference, + x = t.rects.popper, + T = + 'function' == typeof m + ? m(Object.assign({}, t.rects, { placement: t.placement })) + : m, + C = + 'number' == typeof T + ? { mainAxis: T, altAxis: T } + : Object.assign({ mainAxis: 0, altAxis: 0 }, T), + O = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, + L = { x: 0, y: 0 }; + if (E) { + if (r) { + var S, + N = 'y' === _ ? J : te, + k = 'y' === _ ? Z : ee, + D = 'y' === _ ? 'height' : 'width', + j = E[_], + B = j + g[N], + P = j - g[k], + M = p ? -x[D] / 2 : 0, + I = v === oe ? A[D] : x[D], + F = v === oe ? -x[D] : -A[D], + H = t.elements.arrow, + q = p && H ? Pe(H) : { width: 0, height: 0 }, + $ = t.modifiersData['arrow#persistent'] + ? t.modifiersData['arrow#persistent'].padding + : { top: 0, right: 0, bottom: 0, left: 0 }, + z = $[N], + R = $[k], + W = We(0, A[D], q[D]), + V = y ? A[D] / 2 - M - W - z - C.mainAxis : I - W - z - C.mainAxis, + U = y ? -A[D] / 2 + M + W + R + C.mainAxis : F + W + R + C.mainAxis, + Y = t.elements.arrow && ze(t.elements.arrow), + K = Y ? ('y' === _ ? Y.clientTop || 0 : Y.clientLeft || 0) : 0, + Q = null != (S = null == O ? void 0 : O[_]) ? S : 0, + X = j + U - Q, + G = We(p ? Ne(B, j + V - Q - K) : B, j, p ? Se(P, X) : P); + (E[_] = G), (L[_] = G - j); + } + if (a) { + var ne, + ie = 'x' === _ ? J : te, + re = 'x' === _ ? Z : ee, + se = E[w], + ae = 'y' === w ? 'height' : 'width', + le = se + g[ie], + ce = se - g[re], + ue = -1 !== [J, te].indexOf(b), + de = null != (ne = null == O ? void 0 : O[w]) ? ne : 0, + fe = ue ? le : se - A[ae] - x[ae] - de + C.altAxis, + pe = ue ? se + A[ae] + x[ae] - de - C.altAxis : ce, + he = + p && ue + ? (function (e, t, n) { + var i = We(e, t, n); + return i > n ? n : i; + })(fe, se, pe) + : We(p ? fe : le, se, p ? pe : ce); + (E[w] = he), (L[w] = he - se); + } + t.modifiersData[i] = L; + } + }, + requiresIfExists: ['offset'] + }; + function Et(e, t, n) { + void 0 === n && (n = !1); + var i, + o, + r = Te(t), + s = + Te(t) && + (function (e) { + var t = e.getBoundingClientRect(), + n = ke(t.width) / e.offsetWidth || 1, + i = ke(t.height) / e.offsetHeight || 1; + return 1 !== n || 1 !== i; + })(t), + a = He(t), + l = Be(e, s, n), + c = { scrollLeft: 0, scrollTop: 0 }, + u = { x: 0, y: 0 }; + return ( + (r || (!r && !n)) && + (('body' !== Ee(t) || st(a)) && + (c = + (i = t) !== Ae(i) && Te(i) + ? { scrollLeft: (o = i).scrollLeft, scrollTop: o.scrollTop } + : ot(i)), + Te(t) + ? (((u = Be(t, !0)).x += t.clientLeft), (u.y += t.clientTop)) + : a && (u.x = rt(a))), + { + x: l.left + c.scrollLeft - u.x, + y: l.top + c.scrollTop - u.y, + width: l.width, + height: l.height + } + ); + } + function At(e) { + var t = new Map(), + n = new Set(), + i = []; + function o(e) { + n.add(e.name), + [] + .concat(e.requires || [], e.requiresIfExists || []) + .forEach(function (e) { + if (!n.has(e)) { + var i = t.get(e); + i && o(i); + } + }), + i.push(e); + } + return ( + e.forEach(function (e) { + t.set(e.name, e); + }), + e.forEach(function (e) { + n.has(e.name) || o(e); + }), + i + ); + } + var xt = { placement: 'bottom', modifiers: [], strategy: 'absolute' }; + function Tt() { + for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) + t[n] = arguments[n]; + return !t.some(function (e) { + return !(e && 'function' == typeof e.getBoundingClientRect); + }); + } + function Ct(e) { + void 0 === e && (e = {}); + var t = e, + n = t.defaultModifiers, + i = void 0 === n ? [] : n, + o = t.defaultOptions, + r = void 0 === o ? xt : o; + return function (e, t, n) { + void 0 === n && (n = r); + var o, + s, + a = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, xt, r), + modifiersData: {}, + elements: { reference: e, popper: t }, + attributes: {}, + styles: {} + }, + l = [], + c = !1, + u = { + state: a, + setOptions: function (n) { + var o = 'function' == typeof n ? n(a.options) : n; + d(), + (a.options = Object.assign({}, r, a.options, o)), + (a.scrollParents = { + reference: xe(e) + ? lt(e) + : e.contextElement + ? lt(e.contextElement) + : [], + popper: lt(t) + }); + var s, + c, + f = (function (e) { + var t = At(e); + return we.reduce(function (e, n) { + return e.concat( + t.filter(function (e) { + return e.phase === n; + }) + ); + }, []); + })( + ((s = [].concat(i, a.options.modifiers)), + (c = s.reduce(function (e, t) { + var n = e[t.name]; + return ( + (e[t.name] = n + ? Object.assign({}, n, t, { + options: Object.assign({}, n.options, t.options), + data: Object.assign({}, n.data, t.data) + }) + : t), + e + ); + }, {})), + Object.keys(c).map(function (e) { + return c[e]; + })) + ); + return ( + (a.orderedModifiers = f.filter(function (e) { + return e.enabled; + })), + a.orderedModifiers.forEach(function (e) { + var t = e.name, + n = e.options, + i = void 0 === n ? {} : n, + o = e.effect; + if ('function' == typeof o) { + var r = o({ state: a, name: t, instance: u, options: i }), + s = function () {}; + l.push(r || s); + } + }), + u.update() + ); + }, + forceUpdate: function () { + if (!c) { + var e = a.elements, + t = e.reference, + n = e.popper; + if (Tt(t, n)) { + (a.rects = { + reference: Et(t, ze(n), 'fixed' === a.options.strategy), + popper: Pe(n) + }), + (a.reset = !1), + (a.placement = a.options.placement), + a.orderedModifiers.forEach(function (e) { + return (a.modifiersData[e.name] = Object.assign( + {}, + e.data + )); + }); + for (var i = 0; i < a.orderedModifiers.length; i++) + if (!0 !== a.reset) { + var o = a.orderedModifiers[i], + r = o.fn, + s = o.options, + l = void 0 === s ? {} : s, + d = o.name; + 'function' == typeof r && + (a = + r({ state: a, options: l, name: d, instance: u }) || a); + } else (a.reset = !1), (i = -1); + } + } + }, + update: + ((o = function () { + return new Promise(function (e) { + u.forceUpdate(), e(a); + }); + }), + function () { + return ( + s || + (s = new Promise(function (e) { + Promise.resolve().then(function () { + (s = void 0), e(o()); + }); + })), + s + ); + }), + destroy: function () { + d(), (c = !0); + } + }; + if (!Tt(e, t)) return u; + function d() { + l.forEach(function (e) { + return e(); + }), + (l = []); + } + return ( + u.setOptions(n).then(function (e) { + !c && n.onFirstUpdate && n.onFirstUpdate(e); + }), + u + ); + }; + } + var Ot = Ct(), + Lt = Ct({ defaultModifiers: [Ze, _t, Ge, Oe] }), + St = Ct({ defaultModifiers: [Ze, _t, Ge, Oe, yt, mt, wt, Ye, vt] }), + Nt = Object.freeze({ + __proto__: null, + afterMain: be, + afterRead: he, + afterWrite: _e, + applyStyles: Oe, + arrow: Ye, + auto: ne, + basePlacements: ie, + beforeMain: me, + beforeRead: fe, + beforeWrite: ve, + bottom: Z, + clippingParents: se, + computeStyles: Ge, + createPopper: St, + createPopperBase: Ot, + createPopperLite: Lt, + detectOverflow: pt, + end: re, + eventListeners: Ze, + flip: mt, + hide: vt, + left: te, + main: ge, + modifierPhases: we, + offset: yt, + placements: de, + popper: le, + popperGenerator: Ct, + popperOffsets: _t, + preventOverflow: wt, + read: pe, + reference: ce, + right: ee, + start: oe, + top: J, + variationPlacements: ue, + viewport: ae, + write: ye + }); + const kt = { + '*': ['class', 'dir', 'id', 'lang', 'role', /^aria-[\w-]*$/i], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + dd: [], + div: [], + dl: [], + dt: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + }, + Dt = new Set([ + 'background', + 'cite', + 'href', + 'itemtype', + 'longdesc', + 'poster', + 'src', + 'xlink:href' + ]), + jt = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i, + Bt = (e, t) => { + const n = e.nodeName.toLowerCase(); + return t.includes(n) + ? !Dt.has(n) || Boolean(jt.test(e.nodeValue)) + : t.filter((e) => e instanceof RegExp).some((e) => e.test(n)); + }; + const Pt = { + allowList: kt, + content: {}, + extraClass: '', + html: !1, + sanitize: !0, + sanitizeFn: null, + template: '
' + }, + Mt = { + allowList: 'object', + content: 'object', + extraClass: '(string|function)', + html: 'boolean', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + template: 'string' + }, + It = { + entry: '(string|element|function|null)', + selector: '(string|element)' + }; + class Ft extends B { + constructor(e) { + super(), (this._config = this._getConfig(e)); + } + static get Default() { + return Pt; + } + static get DefaultType() { + return Mt; + } + static get NAME() { + return 'TemplateFactory'; + } + getContent() { + return Object.values(this._config.content) + .map((e) => this._resolvePossibleFunction(e)) + .filter(Boolean); + } + hasContent() { + return this.getContent().length > 0; + } + changeContent(e) { + return ( + this._checkContent(e), + (this._config.content = { ...this._config.content, ...e }), + this + ); + } + toHtml() { + const e = document.createElement('div'); + e.innerHTML = this._maybeSanitize(this._config.template); + for (const [t, n] of Object.entries(this._config.content)) + this._setContent(e, n, t); + const t = e.children[0], + n = this._resolvePossibleFunction(this._config.extraClass); + return n && t.classList.add(...n.split(' ')), t; + } + _typeCheckConfig(e) { + super._typeCheckConfig(e), this._checkContent(e.content); + } + _checkContent(e) { + for (const [t, n] of Object.entries(e)) + super._typeCheckConfig({ selector: t, entry: n }, It); + } + _setContent(e, t, n) { + const i = I.findOne(n, e); + i && + ((t = this._resolvePossibleFunction(t)) + ? o(t) + ? this._putElementInTemplate(r(t), i) + : this._config.html + ? (i.innerHTML = this._maybeSanitize(t)) + : (i.textContent = t) + : i.remove()); + } + _maybeSanitize(e) { + return this._config.sanitize + ? (function (e, t, n) { + if (!e.length) return e; + if (n && 'function' == typeof n) return n(e); + const i = new window.DOMParser().parseFromString(e, 'text/html'), + o = [].concat(...i.body.querySelectorAll('*')); + for (const e of o) { + const n = e.nodeName.toLowerCase(); + if (!Object.keys(t).includes(n)) { + e.remove(); + continue; + } + const i = [].concat(...e.attributes), + o = [].concat(t['*'] || [], t[n] || []); + for (const t of i) Bt(t, o) || e.removeAttribute(t.nodeName); + } + return i.body.innerHTML; + })(e, this._config.allowList, this._config.sanitizeFn) + : e; + } + _resolvePossibleFunction(e) { + return f(e, [this]); + } + _putElementInTemplate(e, t) { + if (this._config.html) return (t.innerHTML = ''), void t.append(e); + t.textContent = e.textContent; + } + } + const Ht = new Set(['sanitize', 'allowList', 'sanitizeFn']), + qt = 'fade', + $t = 'show', + zt = '.tooltip-inner', + Rt = '.modal', + Wt = 'hide.bs.modal', + Vt = 'hover', + Ut = 'focus', + Yt = { + AUTO: 'auto', + TOP: 'top', + RIGHT: u() ? 'left' : 'right', + BOTTOM: 'bottom', + LEFT: u() ? 'right' : 'left' + }, + Kt = { + allowList: kt, + animation: !0, + boundary: 'clippingParents', + container: !1, + customClass: '', + delay: 0, + fallbackPlacements: ['top', 'right', 'bottom', 'left'], + html: !1, + offset: [0, 6], + placement: 'top', + popperConfig: null, + sanitize: !0, + sanitizeFn: null, + selector: !1, + template: + '', + title: '', + trigger: 'hover focus' + }, + Qt = { + allowList: 'object', + animation: 'boolean', + boundary: '(string|element)', + container: '(string|element|boolean)', + customClass: '(string|function)', + delay: '(number|object)', + fallbackPlacements: 'array', + html: 'boolean', + offset: '(array|string|function)', + placement: '(string|function)', + popperConfig: '(null|object|function)', + sanitize: 'boolean', + sanitizeFn: '(null|function)', + selector: '(string|boolean)', + template: 'string', + title: '(string|element|function)', + trigger: 'string' + }; + class Xt extends P { + constructor(e, t) { + if (void 0 === Nt) + throw new TypeError( + "Bootstrap's tooltips require Popper (https://popper.js.org)" + ); + super(e, t), + (this._isEnabled = !0), + (this._timeout = 0), + (this._isHovered = null), + (this._activeTrigger = {}), + (this._popper = null), + (this._templateFactory = null), + (this._newContent = null), + (this.tip = null), + this._setListeners(), + this._config.selector || this._fixTitle(); + } + static get Default() { + return Kt; + } + static get DefaultType() { + return Qt; + } + static get NAME() { + return 'tooltip'; + } + enable() { + this._isEnabled = !0; + } + disable() { + this._isEnabled = !1; + } + toggleEnabled() { + this._isEnabled = !this._isEnabled; + } + toggle() { + this._isEnabled && + ((this._activeTrigger.click = !this._activeTrigger.click), + this._isShown() ? this._leave() : this._enter()); + } + dispose() { + clearTimeout(this._timeout), + S.off(this._element.closest(Rt), Wt, this._hideModalHandler), + this._element.getAttribute('data-bs-original-title') && + this._element.setAttribute( + 'title', + this._element.getAttribute('data-bs-original-title') + ), + this._disposePopper(), + super.dispose(); + } + show() { + if ('none' === this._element.style.display) + throw new Error('Please use show on visible elements'); + if (!this._isWithContent() || !this._isEnabled) return; + const e = S.trigger(this._element, this.constructor.eventName('show')), + t = ( + s(this._element) || this._element.ownerDocument.documentElement + ).contains(this._element); + if (e.defaultPrevented || !t) return; + this._disposePopper(); + const n = this._getTipElement(); + this._element.setAttribute('aria-describedby', n.getAttribute('id')); + const { container: i } = this._config; + if ( + (this._element.ownerDocument.documentElement.contains(this.tip) || + (i.append(n), + S.trigger(this._element, this.constructor.eventName('inserted'))), + (this._popper = this._createPopper(n)), + n.classList.add($t), + 'ontouchstart' in document.documentElement) + ) + for (const e of [].concat(...document.body.children)) + S.on(e, 'mouseover', a); + this._queueCallback( + () => { + S.trigger(this._element, this.constructor.eventName('shown')), + !1 === this._isHovered && this._leave(), + (this._isHovered = !1); + }, + this.tip, + this._isAnimated() + ); + } + hide() { + if (!this._isShown()) return; + if ( + S.trigger(this._element, this.constructor.eventName('hide')) + .defaultPrevented + ) + return; + if ( + (this._getTipElement().classList.remove($t), + 'ontouchstart' in document.documentElement) + ) + for (const e of [].concat(...document.body.children)) + S.off(e, 'mouseover', a); + (this._activeTrigger.click = !1), + (this._activeTrigger[Ut] = !1), + (this._activeTrigger[Vt] = !1), + (this._isHovered = null); + this._queueCallback( + () => { + this._isWithActiveTrigger() || + (this._isHovered || this._disposePopper(), + this._element.removeAttribute('aria-describedby'), + S.trigger(this._element, this.constructor.eventName('hidden'))); + }, + this.tip, + this._isAnimated() + ); + } + update() { + this._popper && this._popper.update(); + } + _isWithContent() { + return Boolean(this._getTitle()); + } + _getTipElement() { + return ( + this.tip || + (this.tip = this._createTipElement( + this._newContent || this._getContentForTemplate() + )), + this.tip + ); + } + _createTipElement(e) { + const t = this._getTemplateFactory(e).toHtml(); + if (!t) return null; + t.classList.remove(qt, $t), + t.classList.add(`bs-${this.constructor.NAME}-auto`); + const n = ((e) => { + do { + e += Math.floor(1e6 * Math.random()); + } while (document.getElementById(e)); + return e; + })(this.constructor.NAME).toString(); + return ( + t.setAttribute('id', n), this._isAnimated() && t.classList.add(qt), t + ); + } + setContent(e) { + (this._newContent = e), + this._isShown() && (this._disposePopper(), this.show()); + } + _getTemplateFactory(e) { + return ( + this._templateFactory + ? this._templateFactory.changeContent(e) + : (this._templateFactory = new Ft({ + ...this._config, + content: e, + extraClass: this._resolvePossibleFunction( + this._config.customClass + ) + })), + this._templateFactory + ); + } + _getContentForTemplate() { + return { [zt]: this._getTitle() }; + } + _getTitle() { + return ( + this._resolvePossibleFunction(this._config.title) || + this._element.getAttribute('data-bs-original-title') + ); + } + _initializeOnDelegatedTarget(e) { + return this.constructor.getOrCreateInstance( + e.delegateTarget, + this._getDelegateConfig() + ); + } + _isAnimated() { + return ( + this._config.animation || (this.tip && this.tip.classList.contains(qt)) + ); + } + _isShown() { + return this.tip && this.tip.classList.contains($t); + } + _createPopper(e) { + const t = f(this._config.placement, [this, e, this._element]), + n = Yt[t.toUpperCase()]; + return St(this._element, e, this._getPopperConfig(n)); + } + _getOffset() { + const { offset: e } = this._config; + return 'string' == typeof e + ? e.split(',').map((e) => Number.parseInt(e, 10)) + : 'function' == typeof e + ? (t) => e(t, this._element) + : e; + } + _resolvePossibleFunction(e) { + return f(e, [this._element]); + } + _getPopperConfig(e) { + const t = { + placement: e, + modifiers: [ + { + name: 'flip', + options: { fallbackPlacements: this._config.fallbackPlacements } + }, + { name: 'offset', options: { offset: this._getOffset() } }, + { + name: 'preventOverflow', + options: { boundary: this._config.boundary } + }, + { + name: 'arrow', + options: { element: `.${this.constructor.NAME}-arrow` } + }, + { + name: 'preSetPlacement', + enabled: !0, + phase: 'beforeMain', + fn: (e) => { + this._getTipElement().setAttribute( + 'data-popper-placement', + e.state.placement + ); + } + } + ] + }; + return { ...t, ...f(this._config.popperConfig, [t]) }; + } + _setListeners() { + const e = this._config.trigger.split(' '); + for (const t of e) + if ('click' === t) + S.on( + this._element, + this.constructor.eventName('click'), + this._config.selector, + (e) => { + this._initializeOnDelegatedTarget(e).toggle(); + } + ); + else if ('manual' !== t) { + const e = + t === Vt + ? this.constructor.eventName('mouseenter') + : this.constructor.eventName('focusin'), + n = + t === Vt + ? this.constructor.eventName('mouseleave') + : this.constructor.eventName('focusout'); + S.on(this._element, e, this._config.selector, (e) => { + const t = this._initializeOnDelegatedTarget(e); + (t._activeTrigger['focusin' === e.type ? Ut : Vt] = !0), t._enter(); + }), + S.on(this._element, n, this._config.selector, (e) => { + const t = this._initializeOnDelegatedTarget(e); + (t._activeTrigger['focusout' === e.type ? Ut : Vt] = + t._element.contains(e.relatedTarget)), + t._leave(); + }); + } + (this._hideModalHandler = () => { + this._element && this.hide(); + }), + S.on(this._element.closest(Rt), Wt, this._hideModalHandler); + } + _fixTitle() { + const e = this._element.getAttribute('title'); + e && + (this._element.getAttribute('aria-label') || + this._element.textContent.trim() || + this._element.setAttribute('aria-label', e), + this._element.setAttribute('data-bs-original-title', e), + this._element.removeAttribute('title')); + } + _enter() { + this._isShown() || this._isHovered + ? (this._isHovered = !0) + : ((this._isHovered = !0), + this._setTimeout(() => { + this._isHovered && this.show(); + }, this._config.delay.show)); + } + _leave() { + this._isWithActiveTrigger() || + ((this._isHovered = !1), + this._setTimeout(() => { + this._isHovered || this.hide(); + }, this._config.delay.hide)); + } + _setTimeout(e, t) { + clearTimeout(this._timeout), (this._timeout = setTimeout(e, t)); + } + _isWithActiveTrigger() { + return Object.values(this._activeTrigger).includes(!0); + } + _getConfig(e) { + const t = j.getDataAttributes(this._element); + for (const e of Object.keys(t)) Ht.has(e) && delete t[e]; + return ( + (e = { ...t, ...('object' == typeof e && e ? e : {}) }), + (e = this._mergeConfigObj(e)), + (e = this._configAfterMerge(e)), + this._typeCheckConfig(e), + e + ); + } + _configAfterMerge(e) { + return ( + (e.container = !1 === e.container ? document.body : r(e.container)), + 'number' == typeof e.delay && + (e.delay = { show: e.delay, hide: e.delay }), + 'number' == typeof e.title && (e.title = e.title.toString()), + 'number' == typeof e.content && (e.content = e.content.toString()), + e + ); + } + _getDelegateConfig() { + const e = {}; + for (const [t, n] of Object.entries(this._config)) + this.constructor.Default[t] !== n && (e[t] = n); + return (e.selector = !1), (e.trigger = 'manual'), e; + } + _disposePopper() { + this._popper && (this._popper.destroy(), (this._popper = null)), + this.tip && (this.tip.remove(), (this.tip = null)); + } + static jQueryInterface(e) { + return this.each(function () { + const t = Xt.getOrCreateInstance(this, e); + if ('string' == typeof e) { + if (void 0 === t[e]) throw new TypeError(`No method named "${e}"`); + t[e](); + } + }); + } + } + d(Xt); + const Gt = '.code-header>button.button-copy', + Jt = 'iconfont icon-copy', + Zt = 'iconfont icon-check', + en = 'timeout', + tn = 'data-title-succeed', + nn = 'data-bs-original-title', + on = 2e3; + function rn(e) { + if (e.hasAttribute(en)) { + let t = e.getAttribute(en); + if (Number(t) > Date.now()) return !0; + } + return !1; + } + function sn(e) { + e.setAttribute(en, Date.now() + on); + } + function an(e) { + e.removeAttribute(en); + } + function ln() { + const e = document.querySelectorAll(Gt); + if (0 === e.length) return; + const t = new ClipboardJS(Gt, { + target: (e) => + e.parentNode.nextElementSibling.querySelector('code .rouge-code') + }); + [...e].map((e) => new Xt(e, { placement: 'left' })), + t.on('success', (e) => { + const t = e.trigger; + (e.clearSelection(), rn(t)) || + (t.children[0].setAttribute('class', Zt), + (function (e) { + const t = e.getAttribute(tn); + e.setAttribute(nn, t), Xt.getInstance(e).show(); + })(t), + sn(t), + setTimeout(() => { + !(function (e) { + Xt.getInstance(e).hide(), e.removeAttribute(nn); + })(t), + (function (e) { + e.children[0].setAttribute('class', Jt); + })(t), + an(t); + }, on)); + }); + } + const cn = 'data-src', + un = 'data-lqip', + dn = { SHIMMER: 'shimmer', BLUR: 'blur' }; + function fn(e) { + this.parentElement.classList.remove(e); + } + function pn() { + this.complete && + (this.hasAttribute(un) + ? fn.call(this, dn.BLUR) + : fn.call(this, dn.SHIMMER)); + } + function hn() { + const e = this.getAttribute(cn); + this.setAttribute('src', encodeURI(e)), this.removeAttribute(cn); + } + const mn = '.popup:not(.dark)', + gn = '.popup:not(.light)'; + let bn = mn; + class vn { + static get attrTimestamp() { + return 'data-ts'; + } + static get attrDateFormat() { + return 'data-df'; + } + static get locale() { + return document.documentElement.getAttribute('lang').substring(0, 2); + } + static getTimestamp(e) { + return Number(e.getAttribute(this.attrTimestamp)); + } + static getDateFormat(e) { + return e.getAttribute(this.attrDateFormat); + } + } + function yn(e, t, n) { + if ('function' == typeof e ? e === t : e.has(t)) + return arguments.length < 3 ? t : n; + throw new TypeError('Private element is not present on this object'); + } + function _n(e, t, n) { + return ( + (t = (function (e) { + var t = (function (e, t) { + if ('object' != typeof e || !e) return e; + var n = e[Symbol.toPrimitive]; + if (void 0 !== n) { + var i = n.call(e, t || 'default'); + if ('object' != typeof i) return i; + throw new TypeError('@@toPrimitive must return a primitive value.'); + } + return ('string' === t ? String : Number)(e); + })(e, 'string'); + return 'symbol' == typeof t ? t : t + ''; + })(t)) in e + ? Object.defineProperty(e, t, { + value: n, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (e[t] = n), + e + ); + } + var wn; + const En = document.getElementById('toc-bar'), + An = document.getElementById('toc-solo-trigger'), + xn = document.getElementsByClassName('toc-trigger'), + Tn = document.getElementById('toc-popup'), + Cn = document.getElementById('toc-popup-close'), + On = 'overflow-hidden', + Ln = 'closing'; + class Sn { + static initBar() { + new IntersectionObserver( + (e) => { + e.forEach((e) => { + En.classList.toggle('invisible', e.isIntersecting); + }); + }, + { rootMargin: `-${yn(Sn, this, kn)._}px 0px 0px 0px` } + ).observe(An), + (Nn._ = yn(Sn, this, !1)); + } + static listenAnchors() { + [...document.getElementsByClassName('toc-link')].forEach((e) => { + e.onclick = () => this.hidePopup(); + }); + } + static refresh() { + yn(Sn, this, Nn)._ && this.initComponents(), + tocbot.refresh(this.options), + this.listenAnchors(); + } + static get popupOpened() { + return Tn.open; + } + static showPopup() { + this.lockScroll(!0), Tn.showModal(); + Tn.querySelector('li.is-active-li').scrollIntoView({ block: 'center' }); + } + static hidePopup() { + Tn.toggleAttribute(Ln), + Tn.addEventListener( + 'animationend', + () => { + Tn.toggleAttribute(Ln), Tn.close(); + }, + { once: !0 } + ), + this.lockScroll(!1); + } + static lockScroll(e) { + document.documentElement.classList.toggle(On, e), + document.body.classList.toggle(On, e); + } + static clickBackdrop(e) { + if (Tn.hasAttribute(Ln)) return; + const t = e.target.getBoundingClientRect(); + (e.clientX < t.left || + e.clientX > t.right || + e.clientY < t.top || + e.clientY > t.bottom) && + this.hidePopup(); + } + static initComponents() { + this.initBar(), + [...xn].forEach((e) => { + e.onclick = () => this.showPopup(); + }), + (Tn.onclick = (e) => this.clickBackdrop(e)), + (Cn.onclick = () => this.hidePopup()), + (Tn.oncancel = (e) => { + e.preventDefault(), this.hidePopup(); + }); + } + static init() { + tocbot.init(this.options), this.listenAnchors(), this.initComponents(); + } + } + var Nn = { _: !0 }, + kn = { _: 48 }; + _n(Sn, 'options', { + tocSelector: '#toc-popup-content', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + collapseDepth: 4, + headingsOffset: yn((wn = Sn), wn, kn)._ + }); + class Dn { + static refresh() { + tocbot.refresh(this.options); + } + static init() { + document.getElementById('toc-wrapper') && tocbot.init(this.options); + } + } + _n(Dn, 'options', { + tocSelector: '#toc', + contentSelector: '.content', + ignoreSelector: '[data-toc-skip]', + headingSelector: 'h2, h3, h4', + orderedList: !1, + scrollSmooth: !1, + headingsOffset: 32 + }); + const jn = matchMedia('(min-width: 1200px)'); + function Bn(e) { + e.matches ? (Sn.popupOpened && Sn.hidePopup(), Dn.refresh()) : Sn.refresh(); + } + const Pn = 'mermaid', + Mn = Theme.getThemeMapper('default', 'dark'); + function In(e) { + if (e.source === window && e.data && e.data.id === Theme.ID) { + [...document.getElementsByClassName(Pn)].forEach((e) => { + const t = e.previousSibling.children.item(0).innerHTML; + (e.textContent = t), e.removeAttribute('data-processed'); + }); + const e = Mn[Theme.visualState]; + mermaid.initialize({ theme: e }), mermaid.init(null, `.${Pn}`); + } + } + function Fn(e) { + const t = e.textContent, + n = e.parentElement; + n.classList.add('d-none'); + const i = document.createElement('pre'); + i.classList.add(Pn); + const o = document.createTextNode(t); + i.appendChild(o), n.after(i); + } + const Hn = document.getElementById('mode-toggle'); + const qn = 'lock', + $n = 2e4; + function zn(e) { + e.removeAttribute(qn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + const Rn = 'lock', + Wn = 2e4; + function Vn(e) { + e.removeAttribute(Rn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + function Un() { + console.logs.push(Array.from(arguments)), + console.stdlog.apply(console, arguments); + } + const Yn = 'lock', + Kn = 2e4; + function Qn(e) { + e.removeAttribute(Yn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + const Xn = 'lock', + Gn = 2e4; + function Jn(e) { + e.removeAttribute(Xn), + e + .getElementsByTagName('i')[0] + .classList.replace('icon-loading1', 'icon-playfill'); + } + function Zn(e, t, n, i) { + let o, + r = e.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void Jn(n); + o = r[0].innerText; + } + let s = { version: 'stable', optimize: '0', code: o, edition: '2021' }; + -1 !== o.indexOf('#![feature') && (s.version = 'nightly'), + (function (e, t) { + let n = + arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2e4; + return Promise.race([ + fetch(e, t), + new Promise((e, t) => setTimeout(() => t(new Error('timeout')), n)) + ]); + })('https://play.rust-lang.org/evaluate.json', { + headers: { 'Content-Type': 'application/json' }, + method: 'POST', + mode: 'cors', + body: JSON.stringify(s) + }) + .then((e) => e.json()) + .then((e) => { + (t.innerText = e.result), Jn(n); + }) + .catch((e) => { + (t.innerText = i + e.message), Jn(n); + }); + } + const ei = document.getElementById('sidebar'), + ti = document.getElementById('sidebar-trigger'), + ni = document.getElementById('mask'); + class ii { + static toggle() { + (oi._ = yn(ii, this, !yn(ii, this, oi)._)), + document.body.toggleAttribute('sidebar-display', yn(ii, this, oi)._), + ei.classList.toggle('z-2', yn(ii, this, oi)._), + ni.classList.toggle('d-none', !yn(ii, this, oi)._); + } + } + var oi = { _: !1 }; + const ri = document.getElementById('sidebar-trigger'), + si = document.getElementById('search-trigger'), + ai = document.getElementById('search-cancel'), + li = document.querySelectorAll('#main-wrapper>.container>.row'), + ci = document.getElementById('topbar-title'), + ui = document.getElementById('search'), + di = document.getElementById('search-result-wrapper'), + fi = document.getElementById('search-results'), + pi = document.getElementById('search-input'), + hi = document.getElementById('search-hints'), + mi = 'd-block', + gi = 'd-none', + bi = 'input-focus', + vi = 'd-flex'; + class yi { + static on() { + ri.classList.add(gi), + ci.classList.add(gi), + si.classList.add(gi), + ui.classList.add(vi), + ai.classList.add(mi); + } + static off() { + ai.classList.remove(mi), + ui.classList.remove(vi), + ri.classList.remove(gi), + ci.classList.remove(gi), + si.classList.remove(gi); + } + } + class _i { + static on() { + this.resultVisible || + (di.classList.remove(gi), + li.forEach((e) => { + e.classList.add(gi); + }), + (this.resultVisible = !0)); + } + static off() { + this.resultVisible && + ((fi.innerHTML = ''), + hi.classList.contains(gi) && hi.classList.remove(gi), + di.classList.add(gi), + li.forEach((e) => { + e.classList.remove(gi); + }), + (pi.textContent = ''), + (this.resultVisible = !1)); + } + } + function wi() { + return ai.classList.contains(mi); + } + _n(_i, 'resultVisible', !1), + (function () { + const e = document.querySelectorAll('article img'); + if (0 === e.length) return; + e.forEach((e) => { + e.addEventListener('load', pn); + }), + document + .querySelectorAll('article img[loading="lazy"]') + .forEach((e) => { + e.complete && fn.call(e, dn.SHIMMER); + }); + const t = document.querySelectorAll(`article img[${un}="true"]`); + t.length && + t.forEach((e) => { + hn.call(e); + }); + })(), + null !== document.querySelector('main>article[data-toc="true"]') && + (jn.matches ? Dn.init() : Sn.init(), (jn.onchange = Bn)), + (function () { + if (null === document.querySelector('.popup')) return; + const e = !( + null === document.querySelector('.popup.light') && + null === document.querySelector('.popup.dark') + ); + Theme.visualState === Theme.DARK && (bn = gn); + let t = GLightbox({ selector: `${bn}` }); + if (e && Theme.switchable) { + let e = null; + window.addEventListener('message', (n) => { + n.source === window && + n.data && + n.data.id === Theme.ID && + (function (e, t) { + (bn = bn === mn ? gn : mn), + null === t && (t = GLightbox({ selector: `${bn}` })), + ([e, t] = [t, e]); + })(t, e); + }); + } + })(), + (ti.onclick = ni.onclick = () => ii.toggle()), + dayjs.locale(vn.locale), + dayjs.extend(window.dayjs_plugin_localizedFormat), + document.querySelectorAll(`[${vn.attrTimestamp}]`).forEach((e) => { + const t = dayjs.unix(vn.getTimestamp(e)), + n = t.format(vn.getDateFormat(e)); + if ( + ((e.textContent = n), + e.removeAttribute(vn.attrTimestamp), + e.removeAttribute(vn.attrDateFormat), + e.hasAttribute('data-bs-toggle') && + 'tooltip' === e.getAttribute('data-bs-toggle')) + ) { + const n = t.format('llll'); + e.setAttribute('data-bs-title', n); + } + }), + ln(), + (function () { + const e = document.getElementById('copy-link'); + null !== e && + (e.addEventListener('click', (e) => { + const t = e.target; + rn(t) || + navigator.clipboard.writeText(window.location.href).then(() => { + const e = t.getAttribute(nn), + n = t.getAttribute(tn); + t.setAttribute(nn, n), + Xt.getInstance(t).show(), + sn(t), + setTimeout(() => { + t.setAttribute(nn, e), an(t); + }, on); + }); + }), + e.addEventListener('mouseleave', (e) => { + Xt.getInstance(e.target).hide(); + })); + })(), + si.addEventListener('click', () => { + yi.on(), _i.on(), pi.focus(); + }), + ai.addEventListener('click', () => { + yi.off(), _i.off(); + }), + pi.addEventListener('focus', () => { + ui.classList.add(bi); + }), + pi.addEventListener('focusout', () => { + ui.classList.remove(bi); + }), + pi.addEventListener('input', () => { + '' === pi.value + ? wi() + ? hi.classList.remove(gi) + : _i.off() + : (_i.on(), wi() && hi.classList.add(gi)); + }), + (function () { + if ( + 'undefined' == typeof mermaid || + 'function' != typeof mermaid.initialize + ) + return; + let e = { theme: Mn[Theme.visualState] }; + [...document.getElementsByClassName('language-mermaid')].forEach(Fn), + mermaid.initialize(e), + Theme.switchable && window.addEventListener('message', In); + })(), + Hn && + Hn.addEventListener('click', () => { + Theme.flip(); + }), + (function () { + const e = document.getElementById('back-to-top'); + window.addEventListener('scroll', () => { + window.scrollY > 50 + ? e.classList.add('show') + : e.classList.remove('show'); + }), + e.addEventListener('click', () => { + window.scrollTo({ top: 0 }); + }); + })(), + [...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map( + (e) => new Xt(e) + ), + [...document.getElementsByClassName('highlighter-rouge')].forEach((e) => { + const t = e.getAttribute('highlight-lines'); + if (t && t.length > 0) { + let n = []; + (',' + t).match(/(?<=\s|,)\d+(-\d+)?/g).forEach(function (e) { + let t = e.split('-'), + i = parseInt(t[0]); + if (t.length > 1) { + let e = parseInt(t[1]); + if (e >= i) for (let t = i; t <= e; t++) n.push(t); + } else 1 == t.length && n.push(i); + }); + let i = e.getElementsByTagName('pre'); + !(function (e, t) { + let n = null, + i = 1; + for (let o = e.firstChild; null != o; o = o.nextSibling) { + null == n && (n = o); + let r = o.textContent.split(/\n/g); + if ((r || []).length > 1) { + let s = r.length - 1, + a = []; + for (let t = 0; t < s + 1; t++) { + let n = o.cloneNode(!1); + (n.textContent = r[t]), + t != s && (n.textContent += '\n'), + e.insertBefore(n, o), + a.push(n); + } + e.removeChild(o), (o = a[s]); + for (let o = 0; o < s; o++) { + if (t.includes(i)) { + let t = document.createElement('span'); + t.setAttribute('class', 'hll'), e.insertBefore(t, n); + for (let e = t.nextSibling; e != a[o]; e = t.nextSibling) + t.appendChild(e); + t.appendChild(a[o]); + } + (n = a[o + 1]), i++; + } + } + } + })(i[i.length - 1], n), + e.removeAttribute('highlight-lines'); + } + }), + [ + ...document.querySelectorAll('.code-header button.button-run-cpp') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(qn)) { + let t = e.getAttribute(qn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(qn, Date.now() + $n), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), + n.appendChild(i), + (function (e, t, n, i) { + let o, + r = e.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void zn(n); + o = r[0].innerText; + } + let s = { cmd: 'g++ -std=c++20 main.cpp && ./a.out', src: o }, + a = new XMLHttpRequest(); + a.open('POST', 'https://coliru.stacked-crooked.com/compile', !0), + (a.onload = () => { + (t.innerText = a.responseText), zn(n); + }), + (a.onerror = () => { + (t.innerText = i + a.responseText), zn(n); + }), + a.send(JSON.stringify(s)); + })( + e.parentNode.nextElementSibling, + i, + e, + e.getAttribute('error-prompt') + ); + }; + }), + [ + ...document.querySelectorAll('.code-header button.button-run-javascript') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Rn)) { + let t = e.getAttribute(Rn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Rn, Date.now() + Wn), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), n.appendChild(i); + let o, + r = e.parentNode.nextElementSibling.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void Vn(e); + o = r[0].innerText; + } + let s = new Function(o); + console.log != Un && + ((console.stdlog = console.log.bind(console)), (console.log = Un)), + (console.logs = []), + s(), + (i.innerText = console.logs.join('\n')), + Vn(e); + }; + }), + [ + ...document.querySelectorAll('.code-header button.button-run-python') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Yn)) { + let t = e.getAttribute(Yn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Yn, Date.now() + Kn), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), + n.appendChild(i), + (function (e, t, n, i) { + let o, + r = e.getElementsByTagName('pre'); + if (2 == r.length) o = r[1].innerText; + else { + if (1 != r.length) return void Qn(n); + o = r[0].innerText; + } + let s = [{ code: o, file_name: 'main.py' }]; + (socket = io('https://repl.online-cpp.com', { + transports: ['websocket'], + timeout: Kn, + 'connect timeout': 3e3, + reconnection: !1, + query: { type: 'script', lang: 'python3' } + })), + socket.emit('code', s, '', 'main.py'), + socket.on('exit', function (e, t) { + Qn(n); + }), + socket.on('output', function (e) { + let n = new TextDecoder().decode(new Uint8Array(e)); + t.innerText = n; + }), + socket.on('err', function (e) { + let n = new TextDecoder().decode(new Uint8Array(e)); + t.innerText = i + '\n' + n; + }), + socket.on('connect_error', function (e) { + (t.innerText = i + e.message), socket.close(), Qn(n); + }); + })( + e.parentNode.nextElementSibling, + i, + e, + e.getAttribute('error-prompt') + ); + }; + }), + [ + ...document.querySelectorAll('.code-header button.button-run-rust') + ].forEach((e) => { + e.onclick = () => { + if ( + (function (e) { + if (e.hasAttribute(Xn)) { + let t = e.getAttribute(Xn); + if (Number(t) + 5e3 > Date.now()) return !0; + } + return !1; + })(e) + ) + return; + var t; + (t = e).setAttribute(Xn, Date.now() + Gn), + t + .getElementsByTagName('i')[0] + .classList.replace('icon-playfill', 'icon-loading1'); + let n = (function (e) { + let t = e.parentNode.parentNode.nextElementSibling; + if ( + null == t || + 'DETAILS' != t.tagName || + 'run-output' != t.className + ) { + let n = t; + (t = document.createElement('details')), + (t.className = 'run-output'); + let i = document.createElement('summary'); + (i.textContent = e.getAttribute('output-title')), + t.appendChild(i), + null == n + ? e.parentNode.parentNode.parentNode.appendChild(t) + : n.parentNode.insertBefore(t, n); + } + return t.setAttribute('open', 'open'), t; + })(e); + for (let e of n.getElementsByTagName('p')) n.removeChild(e); + let i = document.createElement('p'); + (i.innerText = e.getAttribute('wait-message')), + n.appendChild(i), + Zn( + e.parentNode.nextElementSibling, + i, + e, + e.getAttribute('error-prompt') + ); + }; + }); +})(); diff --git a/assets/lib b/assets/lib index 897439a25d9..a231bc7e2c6 160000 --- a/assets/lib +++ b/assets/lib @@ -1 +1 @@ -Subproject commit 897439a25d99ca74eaec34a26ac18438df47d24b +Subproject commit a231bc7e2c67198e604950cb2be9147a0b2020c0 diff --git a/avatar.png b/avatar.png deleted file mode 100755 index 0da04776b5a..00000000000 Binary files a/avatar.png and /dev/null differ diff --git a/favicon.ico b/favicon.ico index 8c537e026a7..c35a2b50a40 100644 Binary files a/favicon.ico and b/favicon.ico differ diff --git a/kagula.png b/kagula.png new file mode 100644 index 00000000000..045a10c7525 Binary files /dev/null and b/kagula.png differ diff --git a/tools/init.sh b/tools/init.sh deleted file mode 100755 index 2ad72ab9bea..00000000000 --- a/tools/init.sh +++ /dev/null @@ -1,130 +0,0 @@ -#!/usr/bin/env bash -# -# Init the environment for new user. - -set -eu - -# CLI Dependencies -CLI=("git" "npm") - -ACTIONS_WORKFLOW=pages-deploy.yml - -RELEASE_HASH=$(git log --grep="chore(release):" -1 --pretty="%H") - -# temporary file suffixes that make `sed -i` compatible with BSD and Linux -TEMP_SUFFIX="to-delete" - -_no_gh=false - -help() { - echo "Usage:" - echo - echo " bash /path/to/init [options]" - echo - echo "Options:" - echo " --no-gh Do not deploy to Github." - echo " -h, --help Print this help information." -} - -# BSD and GNU compatible sed -_sedi() { - regex=$1 - file=$2 - sed -i.$TEMP_SUFFIX -E "$regex" "$file" - rm -f "$file".$TEMP_SUFFIX -} - -_check_cli() { - for i in "${!CLI[@]}"; do - cli="${CLI[$i]}" - if ! command -v "$cli" &>/dev/null; then - echo "Command '$cli' not found! Hint: you should install it." - exit 1 - fi - done -} - -_check_status() { - if [[ -n $(git status . -s) ]]; then - echo "Error: Commit unstaged files first, and then run this tool again." - exit 1 - fi -} - -_check_init() { - if [[ $(git rev-parse HEAD^1) == "$RELEASE_HASH" ]]; then - echo "Already initialized." - exit 0 - fi -} - -check_env() { - _check_cli - _check_status - _check_init -} - -reset_latest() { - git reset --hard "$RELEASE_HASH" - git clean -fd - git submodule update --init --recursive -} - -init_files() { - if $_no_gh; then - rm -rf .github - else - ## Change the files of `.github/` - temp="$(mktemp -d)" - find .github/workflows -type f -name "*$ACTIONS_WORKFLOW*" -exec mv {} "$temp/$ACTIONS_WORKFLOW" \; - rm -rf .github && mkdir -p .github/workflows - mv "$temp/$ACTIONS_WORKFLOW" .github/workflows/"$ACTIONS_WORKFLOW" - rm -rf "$temp" - fi - - # Cleanup image settings in site config - _sedi "s/(^timezone:).*/\1/;s/(^.*cdn:).*/\1/;s/(^avatar:).*/\1/" _config.yml - - # remove the other files - rm -rf tools/init.sh tools/release.sh _posts/* - - # build assets - npm i && npm run build - - # track the CSS/JS output - _sedi "/.*\/dist$/d" .gitignore -} - -commit() { - git add -A - git commit -m "chore: initialize the environment" -q - echo -e "\n> Initialization successful!\n" -} - -main() { - check_env - reset_latest - init_files - commit -} - -while (($#)); do - opt="$1" - case $opt in - --no-gh) - _no_gh=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main diff --git a/tools/release.sh b/tools/release.sh deleted file mode 100755 index 522c892c827..00000000000 --- a/tools/release.sh +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env bash -# -# Requires: Git, NPM and RubyGems - -set -eu - -opt_pre=false # option for bump gem version -opt_pkg=false # option for building gem package - -MAIN_BRANCH="master" -RELEASE_BRANCH="production" - -GEM_SPEC="jekyll-theme-chirpy.gemspec" -NODE_SPEC="package.json" -CHANGELOG="docs/CHANGELOG.md" -CONFIG="_config.yml" - -CSS_DIST="_sass/dist" -JS_DIST="assets/js/dist" - -FILES=( - "$GEM_SPEC" - "$NODE_SPEC" - "$CHANGELOG" - "$CONFIG" -) - -TOOLS=( - "git" - "npm" - "gem" -) - -help() { - echo -e "A tool to release new version Chirpy gem.\nThis tool will:" - echo " 1. Build a new gem and publish it to RubyGems.org" - echo " 2. Merge the release branch into the default branch" - echo - echo "Usage:" - echo " bash $0 [options]" - echo - echo "Options:" - echo " --prepare Preparation for release" - echo " -p, --package Build a gem package only, for local packaging in case of auto-publishing failure" - echo " -h, --help Display this help message" -} - -_check_cli() { - for i in "${!TOOLS[@]}"; do - cli="${TOOLS[$i]}" - if ! command -v "$cli" &>/dev/null; then - echo "> Command '$cli' not found!" - exit 1 - fi - done -} - -_check_git() { - $opt_pre || ( - # ensure that changes have been committed - if [[ -n $(git status . -s) ]]; then - echo "> Abort: Commit the staged files first, and then run this tool again." - exit 1 - fi - ) - - $opt_pkg || ( - if [[ "$(git branch --show-current)" != "$RELEASE_BRANCH" ]]; then - echo "> Abort: Please run the tool in the '$RELEASE_BRANCH' branch." - exit 1 - fi - ) -} - -_check_src() { - for i in "${!FILES[@]}"; do - _src="${FILES[$i]}" - if [[ ! -f $_src && ! -d $_src ]]; then - echo -e "> Error: Missing file \"$_src\"!\n" - exit 1 - fi - done -} - -init() { - _check_cli - _check_git - _check_src - echo -e "> npm install\n" - npm i -} - -## Bump new version to gem-spec file -_bump_version() { - _version="$(grep '"version":' "$NODE_SPEC" | sed 's/.*: "//;s/".*//')" - sed -i "s/[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+/$_version/" "$GEM_SPEC" - echo "> Bump gem version to $_version" -} - -_improve_changelog() { - # Replace multiple empty lines with a single empty line - sed -i '/^$/N;/^\n$/D' "$CHANGELOG" - # Escape left angle brackets of HTML tag in the changelog as they break the markdown structure. e.g., '
' - sed -i -E 's/\s(<[a-z])/ \\\1/g' "$CHANGELOG" -} - -prepare() { - _bump_version - _improve_changelog -} - -## Build a Gem package -build_gem() { - # Remove unnecessary theme settings - sed -i -E "s/(^timezone:).*/\1/;s/(^cdn:).*/\1/;s/(^avatar:).*/\1/" $CONFIG - rm -f ./*.gem - - npm run build - # add CSS/JS distribution files to gem package - git add "$CSS_DIST" "$JS_DIST" -f - - echo -e "\n> gem build $GEM_SPEC\n" - gem build "$GEM_SPEC" - - echo -e "\n> Resume file changes ...\n" - git reset - git checkout . -} - -# Push the gem to RubyGems.org (using $GEM_HOST_API_KEY) -push_gem() { - gem push ./*.gem -} - -## Merge the release branch into the default branch -merge() { - git fetch origin "$MAIN_BRANCH" - git checkout -b "$MAIN_BRANCH" origin/"$MAIN_BRANCH" - - git merge --no-ff --no-edit "$RELEASE_BRANCH" || ( - git merge --abort - echo -e "\n> Conflict detected. Aborting merge.\n" - exit 0 - ) - - git push origin "$MAIN_BRANCH" -} - -main() { - init - - if $opt_pre; then - prepare - exit 0 - fi - - build_gem - $opt_pkg && exit 0 - push_gem - merge -} - -while (($#)); do - opt="$1" - case $opt in - --prepare) - opt_pre=true - shift - ;; - -p | --package) - opt_pkg=true - shift - ;; - -h | --help) - help - exit 0 - ;; - *) - # unknown option - help - exit 1 - ;; - esac -done - -main