diff --git a/404.html b/404.html index 9e5d7e0..49acd26 100644 --- a/404.html +++ b/404.html @@ -6,7 +6,7 @@ 404 | Shmily - + @@ -17,7 +17,7 @@
- + \ No newline at end of file diff --git a/assets/guide_concept.md.C5xa82sZ.js b/assets/guide_concept.md.bZvMtX-b.js similarity index 99% rename from assets/guide_concept.md.C5xa82sZ.js rename to assets/guide_concept.md.bZvMtX-b.js index c173073..ecf2103 100644 --- a/assets/guide_concept.md.C5xa82sZ.js +++ b/assets/guide_concept.md.bZvMtX-b.js @@ -1,4 +1,4 @@ -import{_ as e,c as l,a0 as s,o as i}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1734849817000}'),t={name:"guide/concept.md"};function n(o,a,p,h,r,c){return i(),l("div",null,a[0]||(a[0]=[s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


+import{_ as e,c as l,a0 as s,o as i}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1735357881000}'),t={name:"guide/concept.md"};function n(o,a,p,h,r,c){return i(),l("div",null,a[0]||(a[0]=[s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


 导出数据库 --> 解密数据库 --> 解密资源(图片等) --> 生成 HTML (多为模板直出)

在此流程中有很多弊端

  • 使用上
    • 大都为 HTML 模板直出,无分页,几百兆的 HTML 不可用
    • 导出的归档数据无法查询, 筛选、评论等. 失去了归档数据的意义
    • 没有图表统计,数据未体现额外价值
    • 显示数据单一, 无法多项目如 QQ Wechat 按时间线合并查看
    • 多次导出的数据 (如 2020 年导出的数据和 2021 年导出的数据) 不能累计查看并分析
  • 程序上
    • 获取数据不完整,只能拿到当前 HTML 所需导出的数据, 无法拿到数据库中完整的额外字段
    • 全流程耦合,如果对产物不满意, 只能从头开始造轮子, 难以从中间(如解密后的数据库)开始
  基于以上问题,Shimly 的亮点在于
  • 使用上

    • Show 基于 Vue 组件化开发,纯前端实现,240M 数据文件浏览搜索无压力
    • 支持筛选、搜索(支持正则)、评论(支持双向引用链接且显示)
    • 支持我能想到所有维度的数据图表统计
    • 支持多种类、多批次数据合并显示与统计
  • 程序上

    • 完整的数据导出、不管是否 Show 有使用,能导尽导,万一别人需要呢
    • 架构 (见下)

架构

基于以上问题, 我提出以下架构进行 "前后端" "功能化" 拆分, 减少后人的 轮子

|---------|----------------------- Get -----------------------|------------------------ Show -------------------------|
 |---------|------- ExportDB ------|----------- ToMsg ---------|------- ModifyServer ------|---------- Web ------------|
 
diff --git a/assets/guide_concept.md.C5xa82sZ.lean.js b/assets/guide_concept.md.bZvMtX-b.lean.js
similarity index 99%
rename from assets/guide_concept.md.C5xa82sZ.lean.js
rename to assets/guide_concept.md.bZvMtX-b.lean.js
index c173073..ecf2103 100644
--- a/assets/guide_concept.md.C5xa82sZ.lean.js
+++ b/assets/guide_concept.md.bZvMtX-b.lean.js
@@ -1,4 +1,4 @@
-import{_ as e,c as l,a0 as s,o as i}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1734849817000}'),t={name:"guide/concept.md"};function n(o,a,p,h,r,c){return i(),l("div",null,a[0]||(a[0]=[s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


+import{_ as e,c as l,a0 as s,o as i}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"理念","description":"","frontmatter":{},"headers":[],"relativePath":"guide/concept.md","filePath":"guide/concept.md","lastUpdated":1735357881000}'),t={name:"guide/concept.md"};function n(o,a,p,h,r,c){return i(),l("div",null,a[0]||(a[0]=[s(`

理念

why

现有的聊天记录导出归档项目主要分为以下几步, 以 Wechat 为例


 导出数据库 --> 解密数据库 --> 解密资源(图片等) --> 生成 HTML (多为模板直出)

在此流程中有很多弊端

  • 使用上
    • 大都为 HTML 模板直出,无分页,几百兆的 HTML 不可用
    • 导出的归档数据无法查询, 筛选、评论等. 失去了归档数据的意义
    • 没有图表统计,数据未体现额外价值
    • 显示数据单一, 无法多项目如 QQ Wechat 按时间线合并查看
    • 多次导出的数据 (如 2020 年导出的数据和 2021 年导出的数据) 不能累计查看并分析
  • 程序上
    • 获取数据不完整,只能拿到当前 HTML 所需导出的数据, 无法拿到数据库中完整的额外字段
    • 全流程耦合,如果对产物不满意, 只能从头开始造轮子, 难以从中间(如解密后的数据库)开始
  基于以上问题,Shimly 的亮点在于
  • 使用上

    • Show 基于 Vue 组件化开发,纯前端实现,240M 数据文件浏览搜索无压力
    • 支持筛选、搜索(支持正则)、评论(支持双向引用链接且显示)
    • 支持我能想到所有维度的数据图表统计
    • 支持多种类、多批次数据合并显示与统计
  • 程序上

    • 完整的数据导出、不管是否 Show 有使用,能导尽导,万一别人需要呢
    • 架构 (见下)

架构

基于以上问题, 我提出以下架构进行 "前后端" "功能化" 拆分, 减少后人的 轮子

|---------|----------------------- Get -----------------------|------------------------ Show -------------------------|
 |---------|------- ExportDB ------|----------- ToMsg ---------|------- ModifyServer ------|---------- Web ------------|
 
diff --git a/assets/guide_other_donation.md.ykEMLzJp.js b/assets/guide_other_donation.md.ByYCsKBj.js
similarity index 98%
rename from assets/guide_other_donation.md.ykEMLzJp.js
rename to assets/guide_other_donation.md.ByYCsKBj.js
index 79aabe5..65da9aa 100644
--- a/assets/guide_other_donation.md.ykEMLzJp.js
+++ b/assets/guide_other_donation.md.ByYCsKBj.js
@@ -1 +1 @@
-import{_ as r,c as a,j as t,a as i,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const l="/Shmily/assets/Ailurus.BKIVbLEY.mp4",n="/Shmily/assets/pay_al.C8QiDXY7.png",d="/Shmily/assets/pay_wx.DPufi611.png",p="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.D7_Wcvy5.jpg",y=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1734849817000}'),m={name:"guide/other/donation.md"},h={align:"center"},g={key:0};function v(_,e,b,f,w,u){return s(),a("div",null,[e[4]||(e[4]=t("h1",{id:"捐赠",tabindex:"-1"},[i("捐赠 "),t("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1)),t("div",h,[e[2]||(e[2]=t("p",null,[i("!!! "),t("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[t("em",null,"小熊猫")]),i(" 是世界上最可爱的动物 !!! XD")],-1)),(s(),a("div",g,e[0]||(e[0]=[t("video",{src:l,controls:""},null,-1)]))),e[3]||(e[3]=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',12))])])}const k=r(m,[["render",v]]);export{y as __pageData,k as default}; +import{_ as r,c as a,j as t,a as i,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const l="/Shmily/assets/Ailurus.BKIVbLEY.mp4",n="/Shmily/assets/pay_al.C8QiDXY7.png",d="/Shmily/assets/pay_wx.DPufi611.png",p="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.D7_Wcvy5.jpg",y=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1735357881000}'),m={name:"guide/other/donation.md"},h={align:"center"},g={key:0};function v(_,e,b,f,w,u){return s(),a("div",null,[e[4]||(e[4]=t("h1",{id:"捐赠",tabindex:"-1"},[i("捐赠 "),t("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1)),t("div",h,[e[2]||(e[2]=t("p",null,[i("!!! "),t("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[t("em",null,"小熊猫")]),i(" 是世界上最可爱的动物 !!! XD")],-1)),(s(),a("div",g,e[0]||(e[0]=[t("video",{src:l,controls:""},null,-1)]))),e[3]||(e[3]=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',12))])])}const k=r(m,[["render",v]]);export{y as __pageData,k as default}; diff --git a/assets/guide_other_donation.md.ykEMLzJp.lean.js b/assets/guide_other_donation.md.ByYCsKBj.lean.js similarity index 98% rename from assets/guide_other_donation.md.ykEMLzJp.lean.js rename to assets/guide_other_donation.md.ByYCsKBj.lean.js index 79aabe5..65da9aa 100644 --- a/assets/guide_other_donation.md.ykEMLzJp.lean.js +++ b/assets/guide_other_donation.md.ByYCsKBj.lean.js @@ -1 +1 @@ -import{_ as r,c as a,j as t,a as i,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const l="/Shmily/assets/Ailurus.BKIVbLEY.mp4",n="/Shmily/assets/pay_al.C8QiDXY7.png",d="/Shmily/assets/pay_wx.DPufi611.png",p="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.D7_Wcvy5.jpg",y=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1734849817000}'),m={name:"guide/other/donation.md"},h={align:"center"},g={key:0};function v(_,e,b,f,w,u){return s(),a("div",null,[e[4]||(e[4]=t("h1",{id:"捐赠",tabindex:"-1"},[i("捐赠 "),t("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1)),t("div",h,[e[2]||(e[2]=t("p",null,[i("!!! "),t("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[t("em",null,"小熊猫")]),i(" 是世界上最可爱的动物 !!! XD")],-1)),(s(),a("div",g,e[0]||(e[0]=[t("video",{src:l,controls:""},null,-1)]))),e[3]||(e[3]=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',12))])])}const k=r(m,[["render",v]]);export{y as __pageData,k as default}; +import{_ as r,c as a,j as t,a as i,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const l="/Shmily/assets/Ailurus.BKIVbLEY.mp4",n="/Shmily/assets/pay_al.C8QiDXY7.png",d="/Shmily/assets/pay_wx.DPufi611.png",p="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1688964239119'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='3140'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M228.96%20172.16a76.64%2076.64%200%201%200%2075.84%2076.64%2076.32%2076.32%200%200%200-75.84-76.64zM317.76%20535.52C307.52%20458.24%20160%20360.48%20160%20360.48l-57.6%2082.24s123.84%2061.92%20134.08%20112S66.56%20753.28%2066.56%20753.28l128%2094.4s133.28-235.04%20123.2-312.16z'%20fill='%23FC8848'%20p-id='3141'%3e%3c/path%3e%3cpath%20d='M957.44%20380.96c0-66.88-66.4-152.32-174.72-171.52s-263.04%2060-286.88%2064-30.56-3.52-30.56-3.52l27.2-53.12L400%20178.56A416%20416%200%200%201%20355.04%20288a425.28%20425.28%200%200%201-74.72%2092.64L338.08%20432l76.32-90.88%2050.88%205.12L372%20464s3.36%2039.52%2032%2041.28%2072.96-67.04%2072.96-67.04l52.48%2010.4%201.76%2068.64H360.16v46.24l169.6%205.12v145.92s-48.96%207.36-70.56-23.2-12.96-78.72-12.96-78.72L336%20609.28s-6.88%2084.64%2022.56%20126.88%2090.24%2057.12%20152%2051.84%20215.84-70.72%20215.84-70.72l10.08%2046.4%2081.44-37.76-49.12-130.4-66.24%2013.76%206.88%2056.64-81.6%2036v-130.4L800%20564.64v-48H624.8V448h168v-54.88H517.92l40.8-80A562.88%20562.88%200%200%201%20679.2%20272c48-6.88%2069.44-10.24%20113.6%2017.12a108.48%20108.48%200%200%201%2050.88%2067.04v381.76a96%2096%200%200%201-60.96%2053.12c-48%2016-124-1.6-124-1.6l-6.72%2053.12s128%2025.76%20210.4-8.48%2095.04-132.16%2095.04-132.16z'%20fill='%23FC8848'%20p-id='3142'%3e%3c/path%3e%3c/svg%3e",c="/Shmily/assets/red-panda.D7_Wcvy5.jpg",y=JSON.parse('{"title":"捐赠","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation.md","filePath":"guide/other/donation.md","lastUpdated":1735357881000}'),m={name:"guide/other/donation.md"},h={align:"center"},g={key:0};function v(_,e,b,f,w,u){return s(),a("div",null,[e[4]||(e[4]=t("h1",{id:"捐赠",tabindex:"-1"},[i("捐赠 "),t("a",{class:"header-anchor",href:"#捐赠","aria-label":'Permalink to "捐赠"'},"​")],-1)),t("div",h,[e[2]||(e[2]=t("p",null,[i("!!! "),t("a",{href:"https://baike.baidu.com/item/%E5%B0%8F%E7%86%8A%E7%8C%AB/22379",target:"_blank",rel:"noreferrer"},[t("em",null,"小熊猫")]),i(" 是世界上最可爱的动物 !!! XD")],-1)),(s(),a("div",g,e[0]||(e[0]=[t("video",{src:l,controls:""},null,-1)]))),e[3]||(e[3]=o('

https://www.bilibili.com/video/BV1qy4y1s7SJ/


如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                            

请在备注内包含 Shmily 字样
有问题请请发 Email 或 issues, 我没法通过收款码联系你的


门票公示


如果觉得太麻烦,可以付费代劳。淘宝店地址

贱的那个是 小浣熊, 萌的那个是 小熊猫

red-panda

',12))])])}const k=r(m,[["render",v]]);export{y as __pageData,k as default}; diff --git a/assets/guide_other_donation_list.md.18p1AXTo.js b/assets/guide_other_donation_list.md.18p1AXTo.js deleted file mode 100644 index 0775cbc..0000000 --- a/assets/guide_other_donation_list.md.18p1AXTo.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as l,a0 as n,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1734849817000}'),r={name:"guide/other/donation_list.md"};function a(i,t,c,s,y,g){return d(),l("div",null,t[0]||(t[0]=[n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/12/18 21:11:16J*e8.88WechatShmily
2024/11/29 17:52:24*R20Wechatwechat-need-web
2024/11/02 16:01:37s*i6.66Wechat
2024/10/27 21:58:33*帅1Alipay
2024/10/10 12:34:38*.8.88Wechatwechat-need-web
2024/08/14 19:47:58w*h20WechatShmily
2024/08/12 17:21:15*醚10WechatShmily
2024/07/15 11:16:14N*d1Wechat
2024/04/19 11:37:04*勇5Wechat
2024/04/15 11:34:26A*n88WechatShmily
2024/04/15 09:25:28$*f88WechatShmily
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily
',5)]))}const o=e(r,[["render",a]]);export{h as __pageData,o as default}; diff --git a/assets/guide_other_donation_list.md.18p1AXTo.lean.js b/assets/guide_other_donation_list.md.18p1AXTo.lean.js deleted file mode 100644 index 0775cbc..0000000 --- a/assets/guide_other_donation_list.md.18p1AXTo.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as l,a0 as n,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1734849817000}'),r={name:"guide/other/donation_list.md"};function a(i,t,c,s,y,g){return d(),l("div",null,t[0]||(t[0]=[n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/12/18 21:11:16J*e8.88WechatShmily
2024/11/29 17:52:24*R20Wechatwechat-need-web
2024/11/02 16:01:37s*i6.66Wechat
2024/10/27 21:58:33*帅1Alipay
2024/10/10 12:34:38*.8.88Wechatwechat-need-web
2024/08/14 19:47:58w*h20WechatShmily
2024/08/12 17:21:15*醚10WechatShmily
2024/07/15 11:16:14N*d1Wechat
2024/04/19 11:37:04*勇5Wechat
2024/04/15 11:34:26A*n88WechatShmily
2024/04/15 09:25:28$*f88WechatShmily
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily
',5)]))}const o=e(r,[["render",a]]);export{h as __pageData,o as default}; diff --git a/assets/guide_other_donation_list.md.CqXEuXtq.js b/assets/guide_other_donation_list.md.CqXEuXtq.js new file mode 100644 index 0000000..7fed152 --- /dev/null +++ b/assets/guide_other_donation_list.md.CqXEuXtq.js @@ -0,0 +1 @@ +import{_ as e,c as l,a0 as n,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1735357881000}'),r={name:"guide/other/donation_list.md"};function a(i,t,c,s,y,g){return d(),l("div",null,t[0]||(t[0]=[n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/12/26 15:57:14*雨1WechatShmily
2024/12/18 21:11:16J*e8.88WechatShmily
2024/11/29 17:52:24*R20Wechatwechat-need-web
2024/11/02 16:01:37s*i6.66Wechat
2024/10/27 21:58:33*帅1Alipay
2024/10/10 12:34:38*.8.88Wechatwechat-need-web
2024/08/14 19:47:58w*h20WechatShmily
2024/08/12 17:21:15*醚10WechatShmily
2024/07/15 11:16:14N*d1Wechat
2024/04/19 11:37:04*勇5Wechat
2024/04/15 11:34:26A*n88WechatShmily
2024/04/15 09:25:28$*f88WechatShmily
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily
',5)]))}const o=e(r,[["render",a]]);export{h as __pageData,o as default}; diff --git a/assets/guide_other_donation_list.md.CqXEuXtq.lean.js b/assets/guide_other_donation_list.md.CqXEuXtq.lean.js new file mode 100644 index 0000000..7fed152 --- /dev/null +++ b/assets/guide_other_donation_list.md.CqXEuXtq.lean.js @@ -0,0 +1 @@ +import{_ as e,c as l,a0 as n,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/donation_list.md","filePath":"guide/other/donation_list.md","lastUpdated":1735357881000}'),r={name:"guide/other/donation_list.md"};function a(i,t,c,s,y,g){return d(),l("div",null,t[0]||(t[0]=[n('
门票公示

TIP

请在备注内包含 Shmily 字样

如有遗漏或疑问,请发送截图至 i@lqzh.me

有问题请请发 Email 或 issues, 我没法通过收款码联系你的


时间姓名金额来源项目
2024/12/26 15:57:14*雨1WechatShmily
2024/12/18 21:11:16J*e8.88WechatShmily
2024/11/29 17:52:24*R20Wechatwechat-need-web
2024/11/02 16:01:37s*i6.66Wechat
2024/10/27 21:58:33*帅1Alipay
2024/10/10 12:34:38*.8.88Wechatwechat-need-web
2024/08/14 19:47:58w*h20WechatShmily
2024/08/12 17:21:15*醚10WechatShmily
2024/07/15 11:16:14N*d1Wechat
2024/04/19 11:37:04*勇5Wechat
2024/04/15 11:34:26A*n88WechatShmily
2024/04/15 09:25:28$*f88WechatShmily
2024/03/06 18:08:09*寒10WechatShmily
2024/02/24 18:15:43a*s2Wechatwechat-need-web
2024/01/11 23:47:09*晨10AlipayShmily
2023/12/29 23:34:10*赢10WechatShmily
2023/12/12 18:48:50t*b18.88WechatShmily
2023/12/08 09:51:19**焜50AlipayShmily
2023/11/24 19:18:28*生20WechatShmily
2023/11/22 10:17:50*羊5.61WechatShmily
2023/11/19 01:39:48A*s5WechatShmily
2023/11/18 17:08:15*畅11.11AlipayShmily
2023/11/18 14:51:42*翔10AlipayShmily
2023/11/02 14:56:02**勇15AlipayShmily
2023/09/03 17:12:36*门10WechatShmily
',5)]))}const o=e(r,[["render",a]]);export{h as __pageData,o as default}; diff --git a/assets/guide_other_thanks.md.DzewEh8i.js b/assets/guide_other_thanks.md.D4piGETp.js similarity index 97% rename from assets/guide_other_thanks.md.DzewEh8i.js rename to assets/guide_other_thanks.md.D4piGETp.js index 083931b..286a126 100644 --- a/assets/guide_other_thanks.md.DzewEh8i.js +++ b/assets/guide_other_thanks.md.D4piGETp.js @@ -1 +1 @@ -import{_ as t,c as r,a0 as a,o}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1734849817000}'),i={name:"guide/other/thanks.md"};function h(l,e,s,c,n,p){return o(),r("div",null,e[0]||(e[0]=[a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6)]))}const b=t(i,[["render",h]]);export{g as __pageData,b as default}; +import{_ as t,c as r,a0 as a,o}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1735357881000}'),i={name:"guide/other/thanks.md"};function h(l,e,s,c,n,p){return o(),r("div",null,e[0]||(e[0]=[a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6)]))}const b=t(i,[["render",h]]);export{g as __pageData,b as default}; diff --git a/assets/guide_other_thanks.md.DzewEh8i.lean.js b/assets/guide_other_thanks.md.D4piGETp.lean.js similarity index 97% rename from assets/guide_other_thanks.md.DzewEh8i.lean.js rename to assets/guide_other_thanks.md.D4piGETp.lean.js index 083931b..286a126 100644 --- a/assets/guide_other_thanks.md.DzewEh8i.lean.js +++ b/assets/guide_other_thanks.md.D4piGETp.lean.js @@ -1 +1 @@ -import{_ as t,c as r,a0 as a,o}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1734849817000}'),i={name:"guide/other/thanks.md"};function h(l,e,s,c,n,p){return o(),r("div",null,e[0]||(e[0]=[a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6)]))}const b=t(i,[["render",h]]);export{g as __pageData,b as default}; +import{_ as t,c as r,a0 as a,o}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"感谢","description":"","frontmatter":{},"headers":[],"relativePath":"guide/other/thanks.md","filePath":"guide/other/thanks.md","lastUpdated":1735357881000}'),i={name:"guide/other/thanks.md"};function h(l,e,s,c,n,p){return o(),r("div",null,e[0]||(e[0]=[a('

感谢

这 3 年的开发中受到了各种开源库的启发与帮助, 在此感谢

Adun toridas

神圣的 Ctrl_C 连接着我们每个人的思想!让我们在绝望之中团结一致。

恩人

开发周期有点长, 名单不完整, 会逐步补充

',6)]))}const b=t(i,[["render",h]]);export{g as __pageData,b as default}; diff --git a/assets/guide_setup-runtime_Android-copy-backup.md.B244NozS.js b/assets/guide_setup-runtime_Android-copy-backup.md.DjJYTD11.js similarity index 94% rename from assets/guide_setup-runtime_Android-copy-backup.md.B244NozS.js rename to assets/guide_setup-runtime_Android-copy-backup.md.DjJYTD11.js index 88d6625..0fac25b 100644 --- a/assets/guide_setup-runtime_Android-copy-backup.md.B244NozS.js +++ b/assets/guide_setup-runtime_Android-copy-backup.md.DjJYTD11.js @@ -1 +1 @@ -import{_ as a,c as n,j as e,a as t,o}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1734849817000}'),d={name:"guide/setup-runtime/Android-copy-backup.md"};function i(s,r,l,p,u,c){return o(),n("div",null,r[0]||(r[0]=[e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1)]))}const f=a(d,[["render",i]]);export{h as __pageData,f as default}; +import{_ as a,c as n,j as e,a as t,o}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1735357881000}'),d={name:"guide/setup-runtime/Android-copy-backup.md"};function i(s,r,l,p,u,c){return o(),n("div",null,r[0]||(r[0]=[e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1)]))}const f=a(d,[["render",i]]);export{h as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_Android-copy-backup.md.B244NozS.lean.js b/assets/guide_setup-runtime_Android-copy-backup.md.DjJYTD11.lean.js similarity index 94% rename from assets/guide_setup-runtime_Android-copy-backup.md.B244NozS.lean.js rename to assets/guide_setup-runtime_Android-copy-backup.md.DjJYTD11.lean.js index 88d6625..0fac25b 100644 --- a/assets/guide_setup-runtime_Android-copy-backup.md.B244NozS.lean.js +++ b/assets/guide_setup-runtime_Android-copy-backup.md.DjJYTD11.lean.js @@ -1 +1 @@ -import{_ as a,c as n,j as e,a as t,o}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1734849817000}'),d={name:"guide/setup-runtime/Android-copy-backup.md"};function i(s,r,l,p,u,c){return o(),n("div",null,r[0]||(r[0]=[e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1)]))}const f=a(d,[["render",i]]);export{h as __pageData,f as default}; +import{_ as a,c as n,j as e,a as t,o}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"通过 备份 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-backup.md","filePath":"guide/setup-runtime/Android-copy-backup.md","lastUpdated":1735357881000}'),d={name:"guide/setup-runtime/Android-copy-backup.md"};function i(s,r,l,p,u,c){return o(),n("div",null,r[0]||(r[0]=[e("h1",{id:"通过-备份-将-android-文件复制到电脑",tabindex:"-1"},[t("通过 备份 将 Android 文件复制到电脑 "),e("a",{class:"header-anchor",href:"#通过-备份-将-android-文件复制到电脑","aria-label":'Permalink to "通过 备份 将 Android 文件复制到电脑"'},"​")],-1),e("ul",null,[e("li",null,[t("MIUI 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://github.com/Heyxk/notes/issues/1",target:"_blank",rel:"noreferrer"},"https://github.com/Heyxk/notes/issues/1")]),e("li",null,[t("华为 通过备份复制"),e("code",null,"保护区"),t("文件, 参考 "),e("a",{href:"https://1248.ink/?p=8",target:"_blank",rel:"noreferrer"},"https://1248.ink/?p=8")])],-1)]))}const f=a(d,[["render",i]]);export{h as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_Android-copy-root.md.BUQ9PBdk.js b/assets/guide_setup-runtime_Android-copy-root.md.Dyc9l4SV.js similarity index 95% rename from assets/guide_setup-runtime_Android-copy-root.md.BUQ9PBdk.js rename to assets/guide_setup-runtime_Android-copy-root.md.Dyc9l4SV.js index ef06b1f..cd0400f 100644 --- a/assets/guide_setup-runtime_Android-copy-root.md.BUQ9PBdk.js +++ b/assets/guide_setup-runtime_Android-copy-root.md.Dyc9l4SV.js @@ -1 +1 @@ -import{_ as e,c as d,a0 as t,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1734849817000}'),i={name:"guide/setup-runtime/Android-copy-root.md"};function c(l,o,a,n,p,u){return r(),d("div",null,o[0]||(o[0]=[t('

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机
',2)]))}const f=e(i,[["render",c]]);export{m as __pageData,f as default}; +import{_ as e,c as d,a0 as t,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1735357881000}'),i={name:"guide/setup-runtime/Android-copy-root.md"};function c(l,o,a,n,p,u){return r(),d("div",null,o[0]||(o[0]=[t('

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机
',2)]))}const f=e(i,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_Android-copy-root.md.BUQ9PBdk.lean.js b/assets/guide_setup-runtime_Android-copy-root.md.Dyc9l4SV.lean.js similarity index 95% rename from assets/guide_setup-runtime_Android-copy-root.md.BUQ9PBdk.lean.js rename to assets/guide_setup-runtime_Android-copy-root.md.Dyc9l4SV.lean.js index ef06b1f..cd0400f 100644 --- a/assets/guide_setup-runtime_Android-copy-root.md.BUQ9PBdk.lean.js +++ b/assets/guide_setup-runtime_Android-copy-root.md.Dyc9l4SV.lean.js @@ -1 +1 @@ -import{_ as e,c as d,a0 as t,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1734849817000}'),i={name:"guide/setup-runtime/Android-copy-root.md"};function c(l,o,a,n,p,u){return r(),d("div",null,o[0]||(o[0]=[t('

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机
',2)]))}const f=e(i,[["render",c]]);export{m as __pageData,f as default}; +import{_ as e,c as d,a0 as t,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"通过 root 将 Android 文件复制到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy-root.md","filePath":"guide/setup-runtime/Android-copy-root.md","lastUpdated":1735357881000}'),i={name:"guide/setup-runtime/Android-copy-root.md"};function c(l,o,a,n,p,u){return r(),d("div",null,o[0]||(o[0]=[t('

通过 root 将 Android 文件复制到电脑

  • 如果手机已 root ,通过 ftp 复制到电脑

  • 没有 root

    主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

    • 借一台有 root 的手机
    • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
      • 在手机上安装模拟器 / 虚拟机
        • 安卓虚拟机有 vmos 光速虚拟机 等
      • 在电脑上安装模拟器 / 虚拟机
',2)]))}const f=e(i,[["render",c]]);export{m as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_Android-copy.md.5Dh6-HOi.js b/assets/guide_setup-runtime_Android-copy.md.CbT9_t-Q.js similarity index 97% rename from assets/guide_setup-runtime_Android-copy.md.5Dh6-HOi.js rename to assets/guide_setup-runtime_Android-copy.md.CbT9_t-Q.js index c5a1a4c..02b8f0e 100644 --- a/assets/guide_setup-runtime_Android-copy.md.5Dh6-HOi.js +++ b/assets/guide_setup-runtime_Android-copy.md.CbT9_t-Q.js @@ -1,4 +1,4 @@ -import{_ as n,c as s,a0 as e,o as p}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1734849817000}'),o={name:"guide/setup-runtime/Android-copy.md"};function t(i,a,d,l,c,r){return p(),s("div",null,a[0]||(a[0]=[e(`

Android 复制文件到电脑

说明

Android 手机的文件夹大致如下

- data // 保护区, 需要 root 权限
+import{_ as n,c as s,a0 as e,o as p}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1735357881000}'),o={name:"guide/setup-runtime/Android-copy.md"};function t(i,a,d,l,c,r){return p(),s("div",null,a[0]||(a[0]=[e(`

Android 复制文件到电脑

说明

Android 手机的文件夹大致如下

- data // 保护区, 需要 root 权限
     - data
        - com.tencent.mm 
        - ...
diff --git a/assets/guide_setup-runtime_Android-copy.md.5Dh6-HOi.lean.js b/assets/guide_setup-runtime_Android-copy.md.CbT9_t-Q.lean.js
similarity index 97%
rename from assets/guide_setup-runtime_Android-copy.md.5Dh6-HOi.lean.js
rename to assets/guide_setup-runtime_Android-copy.md.CbT9_t-Q.lean.js
index c5a1a4c..02b8f0e 100644
--- a/assets/guide_setup-runtime_Android-copy.md.5Dh6-HOi.lean.js
+++ b/assets/guide_setup-runtime_Android-copy.md.CbT9_t-Q.lean.js
@@ -1,4 +1,4 @@
-import{_ as n,c as s,a0 as e,o as p}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1734849817000}'),o={name:"guide/setup-runtime/Android-copy.md"};function t(i,a,d,l,c,r){return p(),s("div",null,a[0]||(a[0]=[e(`

Android 复制文件到电脑

说明

Android 手机的文件夹大致如下

- data // 保护区, 需要 root 权限
+import{_ as n,c as s,a0 as e,o as p}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Android 复制文件到电脑","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Android-copy.md","filePath":"guide/setup-runtime/Android-copy.md","lastUpdated":1735357881000}'),o={name:"guide/setup-runtime/Android-copy.md"};function t(i,a,d,l,c,r){return p(),s("div",null,a[0]||(a[0]=[e(`

Android 复制文件到电脑

说明

Android 手机的文件夹大致如下

- data // 保护区, 需要 root 权限
     - data
        - com.tencent.mm 
        - ...
diff --git a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.C3BfQKXD.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.Ddsg7tmK.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.C3BfQKXD.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.Ddsg7tmK.js
index 2f26acb..41e6e77 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.C3BfQKXD.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.Ddsg7tmK.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,a0 as e,o as l}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1734849817000}'),d={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"};function o(p,n,i,t,r,c){return l(),a("div",null,n[0]||(n[0]=[e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
+import{_ as s,c as a,a0 as e,o as l}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1735357881000}'),d={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"};function o(p,n,i,t,r,c){return l(),a("div",null,n[0]||(n[0]=[e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
 Require stack:
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\decode\\utils\\db.js
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\tools\\exportTable.js
diff --git a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.C3BfQKXD.lean.js b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.Ddsg7tmK.lean.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.C3BfQKXD.lean.js
rename to assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.Ddsg7tmK.lean.js
index 2f26acb..41e6e77 100644
--- a/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.C3BfQKXD.lean.js
+++ b/assets/guide_setup-runtime_Q_A-detail_cannot-find-module.md.Ddsg7tmK.lean.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,a0 as e,o as l}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1734849817000}'),d={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"};function o(p,n,i,t,r,c){return l(),a("div",null,n[0]||(n[0]=[e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
+import{_ as s,c as a,a0 as e,o as l}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Cannot find module ‘xxxxxx’","description":"","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"headers":[],"relativePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","filePath":"guide/setup-runtime/Q&A-detail/cannot-find-module.md","lastUpdated":1735357881000}'),d={name:"guide/setup-runtime/Q&A-detail/cannot-find-module.md"};function o(p,n,i,t,r,c){return l(),a("div",null,n[0]||(n[0]=[e(`

DANGER

Cannot find module ‘xxxxxx’

报错详情
Error: Cannot find module 'fs-extra'
 Require stack:
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\decode\\utils\\db.js
 - D:\\transfer_redmi\\AndroidQQ_MIUI\\Shmily-Get-MobileQQ-Andriod\\tools\\exportTable.js
diff --git a/assets/guide_setup-runtime_Q_A.md.CordSzvT.js b/assets/guide_setup-runtime_Q_A.md.BLp2K7wZ.js
similarity index 98%
rename from assets/guide_setup-runtime_Q_A.md.CordSzvT.js
rename to assets/guide_setup-runtime_Q_A.md.BLp2K7wZ.js
index 0d54bbf..3466c19 100644
--- a/assets/guide_setup-runtime_Q_A.md.CordSzvT.js
+++ b/assets/guide_setup-runtime_Q_A.md.BLp2K7wZ.js
@@ -1 +1 @@
-import{d as t,c as l,j as n,a,F as i,C as r,k as p,o as d,t as o}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c={class:"qa-list"},m={class:"title"},_={class:"link",target:"_blank"},Q={class:"author"},h=["innerHTML"],f=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1734849817000}'),j={name:"guide/setup-runtime/Q&A.md"},A=t({...j,setup(x){return(M,e)=>(d(),l("div",null,[e[0]||(e[0]=n("h1",{id:"q-a",tabindex:"-1"},[a("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1)),e[1]||(e[1]=n("blockquote",null,[n("p",null,[a("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[a("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1)),e[2]||(e[2]=n("h2",{id:"常见问题",tabindex:"-1"},[a("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1)),n("div",null,[(d(!0),l(i,null,r(p(u),s=>(d(),l("details",c,[n("summary",m,[n("h4",_,o(s.frontmatter.title),1),n("span",Q,"by "+o(s.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:s.html},null,8,h)]))),256))])]))}});export{f as __pageData,A as default}; +import{d as t,c as l,j as n,a,F as i,C as r,k as p,o as d,t as o}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c={class:"qa-list"},m={class:"title"},_={class:"link",target:"_blank"},Q={class:"author"},h=["innerHTML"],f=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1735357881000}'),j={name:"guide/setup-runtime/Q&A.md"},A=t({...j,setup(x){return(M,e)=>(d(),l("div",null,[e[0]||(e[0]=n("h1",{id:"q-a",tabindex:"-1"},[a("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1)),e[1]||(e[1]=n("blockquote",null,[n("p",null,[a("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[a("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1)),e[2]||(e[2]=n("h2",{id:"常见问题",tabindex:"-1"},[a("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1)),n("div",null,[(d(!0),l(i,null,r(p(u),s=>(d(),l("details",c,[n("summary",m,[n("h4",_,o(s.frontmatter.title),1),n("span",Q,"by "+o(s.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:s.html},null,8,h)]))),256))])]))}});export{f as __pageData,A as default}; diff --git a/assets/guide_setup-runtime_Q_A.md.CordSzvT.lean.js b/assets/guide_setup-runtime_Q_A.md.BLp2K7wZ.lean.js similarity index 98% rename from assets/guide_setup-runtime_Q_A.md.CordSzvT.lean.js rename to assets/guide_setup-runtime_Q_A.md.BLp2K7wZ.lean.js index 0d54bbf..3466c19 100644 --- a/assets/guide_setup-runtime_Q_A.md.CordSzvT.lean.js +++ b/assets/guide_setup-runtime_Q_A.md.BLp2K7wZ.lean.js @@ -1 +1 @@ -import{d as t,c as l,j as n,a,F as i,C as r,k as p,o as d,t as o}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c={class:"qa-list"},m={class:"title"},_={class:"link",target:"_blank"},Q={class:"author"},h=["innerHTML"],f=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1734849817000}'),j={name:"guide/setup-runtime/Q&A.md"},A=t({...j,setup(x){return(M,e)=>(d(),l("div",null,[e[0]||(e[0]=n("h1",{id:"q-a",tabindex:"-1"},[a("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1)),e[1]||(e[1]=n("blockquote",null,[n("p",null,[a("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[a("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1)),e[2]||(e[2]=n("h2",{id:"常见问题",tabindex:"-1"},[a("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1)),n("div",null,[(d(!0),l(i,null,r(p(u),s=>(d(),l("details",c,[n("summary",m,[n("h4",_,o(s.frontmatter.title),1),n("span",Q,"by "+o(s.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:s.html},null,8,h)]))),256))])]))}});export{f as __pageData,A as default}; +import{d as t,c as l,j as n,a,F as i,C as r,k as p,o as d,t as o}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse(`[{"src":"---\\ntitle: Cannot find module ‘xxxxxx’\\nauthor: '@appinn.com F124nk1e'\\n---\\n\\n::: danger\\nCannot find module ‘xxxxxx’\\n:::\\n\\n
报错详情\\n\\n\`\`\`\\nError: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n at Module._load (node:internal/modules/cjs/loader:893:27)\\n at Module.require (node:internal/modules/cjs/loader:1113:19)\\n at require (node:internal/modules/cjs/helpers:103:18)\\n at Object. (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n at Module.load (node:internal/modules/cjs/loader:1089:32)\\n at Module._load (node:internal/modules/cjs/loader:930:12)\\n at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n code: 'MODULE_NOT_FOUND',\\n requireStack: [\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n 'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n ]\\n}\\n\\nNode.js v18.14.0\\n\`\`\`\\n\\n
\\n\\n##### 解决办法\\n\\n\`nodejs\` 没有安装依赖, 参考 [nodejs](./nodejs.md) \`2.安装依赖\`\\n","html":"

DANGER

\\n

Cannot find module ‘xxxxxx’

\\n
\\n
报错详情\\n
Error: Cannot find module 'fs-extra'\\nRequire stack:\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js\\n- D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\tools\\\\exportTable.js\\n    at Module._resolveFilename (node:internal/modules/cjs/loader:1047:15)\\n    at Module._load (node:internal/modules/cjs/loader:893:27)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19)\\n    at require (node:internal/modules/cjs/helpers:103:18)\\n    at Object.<anonymous> (D:\\\\transfer_redmi\\\\AndroidQQ_MIUI\\\\Shmily-Get-MobileQQ-Andriod\\\\decode\\\\utils\\\\db.js:8:12)\\n    at Module._compile (node:internal/modules/cjs/loader:1226:14)\\n    at Module._extensions..js (node:internal/modules/cjs/loader:1280:10)\\n    at Module.load (node:internal/modules/cjs/loader:1089:32)\\n    at Module._load (node:internal/modules/cjs/loader:930:12)\\n    at Module.require (node:internal/modules/cjs/loader:1113:19) {\\n  code: 'MODULE_NOT_FOUND',\\n  requireStack: [\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\decode\\\\\\\\utils\\\\\\\\db.js',\\n    'D:\\\\\\\\transfer_redmi\\\\\\\\AndroidQQ_MIUI\\\\\\\\Shmily-Get-MobileQQ-Andriod\\\\\\\\tools\\\\\\\\exportTable.js'\\n  ]\\n}\\n\\nNode.js v18.14.0
\\n
\\n
解决办法
\\n

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

\\n","frontmatter":{"title":"Cannot find module ‘xxxxxx’","author":"@appinn.com F124nk1e"},"excerpt":"","url":"/guide/setup-runtime/Q&A-detail/cannot-find-module.html"}]`),c={class:"qa-list"},m={class:"title"},_={class:"link",target:"_blank"},Q={class:"author"},h=["innerHTML"],f=JSON.parse('{"title":"Q & A","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/Q&A.md","filePath":"guide/setup-runtime/Q&A.md","lastUpdated":1735357881000}'),j={name:"guide/setup-runtime/Q&A.md"},A=t({...j,setup(x){return(M,e)=>(d(),l("div",null,[e[0]||(e[0]=n("h1",{id:"q-a",tabindex:"-1"},[a("Q & A "),n("a",{class:"header-anchor",href:"#q-a","aria-label":'Permalink to "Q & A"'},"​")],-1)),e[1]||(e[1]=n("blockquote",null,[n("p",null,[a("如需新增, 请新建 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/{新问题}.md")]),n("p",null,[a("内容参考模板 "),n("code",null,"docs/guide/setup-runtime/Q&A-detail/template.md.tpl")])],-1)),e[2]||(e[2]=n("h2",{id:"常见问题",tabindex:"-1"},[a("常见问题 "),n("a",{class:"header-anchor",href:"#常见问题","aria-label":'Permalink to "常见问题"'},"​")],-1)),n("div",null,[(d(!0),l(i,null,r(p(u),s=>(d(),l("details",c,[n("summary",m,[n("h4",_,o(s.frontmatter.title),1),n("span",Q,"by "+o(s.frontmatter.author),1)]),n("div",{class:"detail",innerHTML:s.html},null,8,h)]))),256))])]))}});export{f as __pageData,A as default}; diff --git a/assets/guide_setup-runtime_docker.md.DrDBMBCL.js b/assets/guide_setup-runtime_docker.md.BE56qQGK.js similarity index 93% rename from assets/guide_setup-runtime_docker.md.DrDBMBCL.js rename to assets/guide_setup-runtime_docker.md.BE56qQGK.js index e14958d..f0faff3 100644 --- a/assets/guide_setup-runtime_docker.md.DrDBMBCL.js +++ b/assets/guide_setup-runtime_docker.md.BE56qQGK.js @@ -1 +1 @@ -import{_ as t,c as r,a0 as o,o as a}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1734849817000}'),i={name:"guide/setup-runtime/docker.md"};function d(c,e,s,l,n,p){return a(),r("div",null,e[0]||(e[0]=[o('

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成
',3)]))}const m=t(i,[["render",d]]);export{u as __pageData,m as default}; +import{_ as t,c as r,a0 as o,o as a}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1735357881000}'),i={name:"guide/setup-runtime/docker.md"};function d(c,e,s,l,n,p){return a(),r("div",null,e[0]||(e[0]=[o('

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成
',3)]))}const m=t(i,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/guide_setup-runtime_docker.md.DrDBMBCL.lean.js b/assets/guide_setup-runtime_docker.md.BE56qQGK.lean.js similarity index 93% rename from assets/guide_setup-runtime_docker.md.DrDBMBCL.lean.js rename to assets/guide_setup-runtime_docker.md.BE56qQGK.lean.js index e14958d..f0faff3 100644 --- a/assets/guide_setup-runtime_docker.md.DrDBMBCL.lean.js +++ b/assets/guide_setup-runtime_docker.md.BE56qQGK.lean.js @@ -1 +1 @@ -import{_ as t,c as r,a0 as o,o as a}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1734849817000}'),i={name:"guide/setup-runtime/docker.md"};function d(c,e,s,l,n,p){return a(),r("div",null,e[0]||(e[0]=[o('

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成
',3)]))}const m=t(i,[["render",d]]);export{u as __pageData,m as default}; +import{_ as t,c as r,a0 as o,o as a}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"开始 docker","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/docker.md","filePath":"guide/setup-runtime/docker.md","lastUpdated":1735357881000}'),i={name:"guide/setup-runtime/docker.md"};function d(c,e,s,l,n,p){return a(),r("div",null,e[0]||(e[0]=[o('

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成
',3)]))}const m=t(i,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/guide_setup-runtime_explain.md.8Roxfwdr.js b/assets/guide_setup-runtime_explain.md.DqJt1XyY.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.8Roxfwdr.js rename to assets/guide_setup-runtime_explain.md.DqJt1XyY.js index 32943c0..887ea0e 100644 --- a/assets/guide_setup-runtime_explain.md.8Roxfwdr.js +++ b/assets/guide_setup-runtime_explain.md.DqJt1XyY.js @@ -1 +1 @@ -import{_ as t,c as n,j as e,a as r,o as s}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1734849817000}'),i={name:"guide/setup-runtime/explain.md"};function l(p,a,o,d,u,c){return s(),n("div",null,a[0]||(a[0]=[e("h1",{id:"说明",tabindex:"-1"},[r("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),e("p",null,"不是说这里的运行时你需要全部安装",-1)]))}const x=t(i,[["render",l]]);export{f as __pageData,x as default}; +import{_ as t,c as n,j as e,a as r,o as s}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1735357881000}'),i={name:"guide/setup-runtime/explain.md"};function l(p,a,o,d,u,c){return s(),n("div",null,a[0]||(a[0]=[e("h1",{id:"说明",tabindex:"-1"},[r("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),e("p",null,"不是说这里的运行时你需要全部安装",-1)]))}const x=t(i,[["render",l]]);export{f as __pageData,x as default}; diff --git a/assets/guide_setup-runtime_explain.md.8Roxfwdr.lean.js b/assets/guide_setup-runtime_explain.md.DqJt1XyY.lean.js similarity index 92% rename from assets/guide_setup-runtime_explain.md.8Roxfwdr.lean.js rename to assets/guide_setup-runtime_explain.md.DqJt1XyY.lean.js index 32943c0..887ea0e 100644 --- a/assets/guide_setup-runtime_explain.md.8Roxfwdr.lean.js +++ b/assets/guide_setup-runtime_explain.md.DqJt1XyY.lean.js @@ -1 +1 @@ -import{_ as t,c as n,j as e,a as r,o as s}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1734849817000}'),i={name:"guide/setup-runtime/explain.md"};function l(p,a,o,d,u,c){return s(),n("div",null,a[0]||(a[0]=[e("h1",{id:"说明",tabindex:"-1"},[r("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),e("p",null,"不是说这里的运行时你需要全部安装",-1)]))}const x=t(i,[["render",l]]);export{f as __pageData,x as default}; +import{_ as t,c as n,j as e,a as r,o as s}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"说明","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/explain.md","filePath":"guide/setup-runtime/explain.md","lastUpdated":1735357881000}'),i={name:"guide/setup-runtime/explain.md"};function l(p,a,o,d,u,c){return s(),n("div",null,a[0]||(a[0]=[e("h1",{id:"说明",tabindex:"-1"},[r("说明 "),e("a",{class:"header-anchor",href:"#说明","aria-label":'Permalink to "说明"'},"​")],-1),e("p",null,"这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行",-1),e("p",null,"每个项目有自己所需要的运行时, 按照项目文档进行即可.",-1),e("p",null,"不是说这里的运行时你需要全部安装",-1)]))}const x=t(i,[["render",l]]);export{f as __pageData,x as default}; diff --git a/assets/guide_setup-runtime_github-down-repo.md.C0uwsR5V.js b/assets/guide_setup-runtime_github-down-repo.md.cOd4TVbR.js similarity index 91% rename from assets/guide_setup-runtime_github-down-repo.md.C0uwsR5V.js rename to assets/guide_setup-runtime_github-down-repo.md.cOd4TVbR.js index ffed54a..2d68bdf 100644 --- a/assets/guide_setup-runtime_github-down-repo.md.C0uwsR5V.js +++ b/assets/guide_setup-runtime_github-down-repo.md.cOd4TVbR.js @@ -1 +1 @@ -import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as r,c as o,j as e,a as i,o as n}from"./chunks/framework.BQKxUb7q.js";const b=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1734849817000}'),s={name:"guide/setup-runtime/github-down-repo.md"};function d(u,t,p,l,m,c){return n(),o("div",null,t[0]||(t[0]=[e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),e("p",null,[e("img",{src:a,alt:"download repo"})],-1)]))}const g=r(s,[["render",d]]);export{b as __pageData,g as default}; +import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as r,c as o,j as e,a as i,o as n}from"./chunks/framework.BQKxUb7q.js";const b=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1735357881000}'),s={name:"guide/setup-runtime/github-down-repo.md"};function d(u,t,p,l,m,c){return n(),o("div",null,t[0]||(t[0]=[e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),e("p",null,[e("img",{src:a,alt:"download repo"})],-1)]))}const g=r(s,[["render",d]]);export{b as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_github-down-repo.md.C0uwsR5V.lean.js b/assets/guide_setup-runtime_github-down-repo.md.cOd4TVbR.lean.js similarity index 91% rename from assets/guide_setup-runtime_github-down-repo.md.C0uwsR5V.lean.js rename to assets/guide_setup-runtime_github-down-repo.md.cOd4TVbR.lean.js index ffed54a..2d68bdf 100644 --- a/assets/guide_setup-runtime_github-down-repo.md.C0uwsR5V.lean.js +++ b/assets/guide_setup-runtime_github-down-repo.md.cOd4TVbR.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as r,c as o,j as e,a as i,o as n}from"./chunks/framework.BQKxUb7q.js";const b=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1734849817000}'),s={name:"guide/setup-runtime/github-down-repo.md"};function d(u,t,p,l,m,c){return n(),o("div",null,t[0]||(t[0]=[e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),e("p",null,[e("img",{src:a,alt:"download repo"})],-1)]))}const g=r(s,[["render",d]]);export{b as __pageData,g as default}; +import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as r,c as o,j as e,a as i,o as n}from"./chunks/framework.BQKxUb7q.js";const b=JSON.parse('{"title":"Github 下载项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/github-down-repo.md","filePath":"guide/setup-runtime/github-down-repo.md","lastUpdated":1735357881000}'),s={name:"guide/setup-runtime/github-down-repo.md"};function d(u,t,p,l,m,c){return n(),o("div",null,t[0]||(t[0]=[e("h1",{id:"github-下载项目",tabindex:"-1"},[i("Github 下载项目 "),e("a",{class:"header-anchor",href:"#github-下载项目","aria-label":'Permalink to "Github 下载项目"'},"​")],-1),e("p",null,[e("img",{src:a,alt:"download repo"})],-1)]))}const g=r(s,[["render",d]]);export{b as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_java.md.DkQsnBA-.js b/assets/guide_setup-runtime_java.md.bCBn-kDa.js similarity index 94% rename from assets/guide_setup-runtime_java.md.DkQsnBA-.js rename to assets/guide_setup-runtime_java.md.bCBn-kDa.js index 1631488..e3f1fe5 100644 --- a/assets/guide_setup-runtime_java.md.DkQsnBA-.js +++ b/assets/guide_setup-runtime_java.md.bCBn-kDa.js @@ -1 +1 @@ -import{_ as e,c as t,a0 as o,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1734849817000}'),l={name:"guide/setup-runtime/java.md"};function i(n,a,s,d,c,u){return r(),t("div",null,a[0]||(a[0]=[o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4)]))}const h=e(l,[["render",i]]);export{m as __pageData,h as default}; +import{_ as e,c as t,a0 as o,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1735357881000}'),l={name:"guide/setup-runtime/java.md"};function i(n,a,s,d,c,u){return r(),t("div",null,a[0]||(a[0]=[o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4)]))}const h=e(l,[["render",i]]);export{m as __pageData,h as default}; diff --git a/assets/guide_setup-runtime_java.md.DkQsnBA-.lean.js b/assets/guide_setup-runtime_java.md.bCBn-kDa.lean.js similarity index 94% rename from assets/guide_setup-runtime_java.md.DkQsnBA-.lean.js rename to assets/guide_setup-runtime_java.md.bCBn-kDa.lean.js index 1631488..e3f1fe5 100644 --- a/assets/guide_setup-runtime_java.md.DkQsnBA-.lean.js +++ b/assets/guide_setup-runtime_java.md.bCBn-kDa.lean.js @@ -1 +1 @@ -import{_ as e,c as t,a0 as o,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1734849817000}'),l={name:"guide/setup-runtime/java.md"};function i(n,a,s,d,c,u){return r(),t("div",null,a[0]||(a[0]=[o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4)]))}const h=e(l,[["render",i]]);export{m as __pageData,h as default}; +import{_ as e,c as t,a0 as o,o as r}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"开始 java 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/java.md","filePath":"guide/setup-runtime/java.md","lastUpdated":1735357881000}'),l={name:"guide/setup-runtime/java.md"};function i(n,a,s,d,c,u){return r(),t("div",null,a[0]||(a[0]=[o('

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

',4)]))}const h=e(l,[["render",i]]);export{m as __pageData,h as default}; diff --git a/assets/guide_setup-runtime_nodejs-dependencies.md.BrWtdyHp.js b/assets/guide_setup-runtime_nodejs-dependencies.md.cjO_ulOG.js similarity index 97% rename from assets/guide_setup-runtime_nodejs-dependencies.md.BrWtdyHp.js rename to assets/guide_setup-runtime_nodejs-dependencies.md.cjO_ulOG.js index c9ace02..693c179 100644 --- a/assets/guide_setup-runtime_nodejs-dependencies.md.BrWtdyHp.js +++ b/assets/guide_setup-runtime_nodejs-dependencies.md.cjO_ulOG.js @@ -1,4 +1,4 @@ -import{_ as e}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as n,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const t="/Shmily/assets/node-dependencies.DuKMlfUl.png",l="/Shmily/assets/npm%20i.Cj1E6Was.png",_=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1734849817000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"};function d(c,s,r,m,u,h){return i(),n("div",null,s[0]||(s[0]=[p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
+import{_ as e}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as n,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const t="/Shmily/assets/node-dependencies.DuKMlfUl.png",l="/Shmily/assets/npm%20i.Cj1E6Was.png",_=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1735357881000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"};function d(c,s,r,m,u,h){return i(),n("div",null,s[0]||(s[0]=[p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
 
 -\\
   - node_modules
diff --git a/assets/guide_setup-runtime_nodejs-dependencies.md.BrWtdyHp.lean.js b/assets/guide_setup-runtime_nodejs-dependencies.md.cjO_ulOG.lean.js
similarity index 97%
rename from assets/guide_setup-runtime_nodejs-dependencies.md.BrWtdyHp.lean.js
rename to assets/guide_setup-runtime_nodejs-dependencies.md.cjO_ulOG.lean.js
index c9ace02..693c179 100644
--- a/assets/guide_setup-runtime_nodejs-dependencies.md.BrWtdyHp.lean.js
+++ b/assets/guide_setup-runtime_nodejs-dependencies.md.cjO_ulOG.lean.js
@@ -1,4 +1,4 @@
-import{_ as e}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as n,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const t="/Shmily/assets/node-dependencies.DuKMlfUl.png",l="/Shmily/assets/npm%20i.Cj1E6Was.png",_=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1734849817000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"};function d(c,s,r,m,u,h){return i(),n("div",null,s[0]||(s[0]=[p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
+import{_ as e}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as n,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const t="/Shmily/assets/node-dependencies.DuKMlfUl.png",l="/Shmily/assets/npm%20i.Cj1E6Was.png",_=JSON.parse('{"title":"安装 nodejs 项目依赖","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-dependencies.md","filePath":"guide/setup-runtime/nodejs-dependencies.md","lastUpdated":1735357881000}'),o={name:"guide/setup-runtime/nodejs-dependencies.md"};function d(c,s,r,m,u,h){return i(),n("div",null,s[0]||(s[0]=[p('

安装 nodejs 项目依赖

下面提供 从项目下载从本地安装 两种方式, 二选一即可

从项目下载 (建议)

从项目下载依赖

可以查看项目是否有 node_modules 分支, 如果有, 可以直接下载其中的压缩包并解压到项目目录

// 解压后项目文件夹结构
 
 -\\
   - node_modules
diff --git a/assets/guide_setup-runtime_nodejs-start.md.2LhyWOin.js b/assets/guide_setup-runtime_nodejs-start.md.PBXQcTnV.js
similarity index 98%
rename from assets/guide_setup-runtime_nodejs-start.md.2LhyWOin.js
rename to assets/guide_setup-runtime_nodejs-start.md.PBXQcTnV.js
index 9a453f7..fa97a1a 100644
--- a/assets/guide_setup-runtime_nodejs-start.md.2LhyWOin.js
+++ b/assets/guide_setup-runtime_nodejs-start.md.PBXQcTnV.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const r=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1734849817000}'),e={name:"guide/setup-runtime/nodejs-start.md"};function l(p,s,d,h,o,k){return t(),a("div",null,s[0]||(s[0]=[n(`

启动 nodejs 程序

WARNING

启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

优先级从高到低

  • 按照项目说明启动程序 (一般为 npm run xxx)

  • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

    json
    {
    +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const r=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1735357881000}'),e={name:"guide/setup-runtime/nodejs-start.md"};function l(p,s,d,h,o,k){return t(),a("div",null,s[0]||(s[0]=[n(`

    启动 nodejs 程序

    WARNING

    启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

    优先级从高到低

    • 按照项目说明启动程序 (一般为 npm run xxx)

    • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

      json
      {
           ...
           "scripts": {
               "dev": "vitepress dev docs",
      diff --git a/assets/guide_setup-runtime_nodejs-start.md.2LhyWOin.lean.js b/assets/guide_setup-runtime_nodejs-start.md.PBXQcTnV.lean.js
      similarity index 98%
      rename from assets/guide_setup-runtime_nodejs-start.md.2LhyWOin.lean.js
      rename to assets/guide_setup-runtime_nodejs-start.md.PBXQcTnV.lean.js
      index 9a453f7..fa97a1a 100644
      --- a/assets/guide_setup-runtime_nodejs-start.md.2LhyWOin.lean.js
      +++ b/assets/guide_setup-runtime_nodejs-start.md.PBXQcTnV.lean.js
      @@ -1,4 +1,4 @@
      -import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const r=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1734849817000}'),e={name:"guide/setup-runtime/nodejs-start.md"};function l(p,s,d,h,o,k){return t(),a("div",null,s[0]||(s[0]=[n(`

      启动 nodejs 程序

      WARNING

      启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

      优先级从高到低

      • 按照项目说明启动程序 (一般为 npm run xxx)

      • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

        json
        {
        +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const r=JSON.parse('{"title":"启动 nodejs 程序","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs-start.md","filePath":"guide/setup-runtime/nodejs-start.md","lastUpdated":1735357881000}'),e={name:"guide/setup-runtime/nodejs-start.md"};function l(p,s,d,h,o,k){return t(),a("div",null,s[0]||(s[0]=[n(`

        启动 nodejs 程序

        WARNING

        启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

        优先级从高到低

        • 按照项目说明启动程序 (一般为 npm run xxx)

        • 若项目无说明, 从 package.json 文件中的 scripts 字段获取执行脚本名称, 通过 npm run {script} 启动程序

          json
          {
               ...
               "scripts": {
                   "dev": "vitepress dev docs",
          diff --git a/assets/guide_setup-runtime_nodejs.md.B_z0yaTN.js b/assets/guide_setup-runtime_nodejs.md.Cear-ham.js
          similarity index 96%
          rename from assets/guide_setup-runtime_nodejs.md.B_z0yaTN.js
          rename to assets/guide_setup-runtime_nodejs.md.Cear-ham.js
          index d4a85a5..1d5b2ec 100644
          --- a/assets/guide_setup-runtime_nodejs.md.B_z0yaTN.js
          +++ b/assets/guide_setup-runtime_nodejs.md.Cear-ham.js
          @@ -1 +1 @@
          -import{_ as o,c as d,a0 as i,o as t}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1734849817000}'),s={name:"guide/setup-runtime/nodejs.md"};function c(l,e,n,a,r,p){return t(),d("div",null,e[0]||(e[0]=[i('

          安装 nodejs

          • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

            • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
          • https://nodejs.org/dist/ 下载相应版本的 nodejs

            • Windows 平台
              • (推荐) node-v99.99.9-x64.msi 标准安装程序
              • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
              • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
          • 安装过程,选项全部默认

          ',3)]))}const j=o(s,[["render",c]]);export{m as __pageData,j as default}; +import{_ as o,c as d,a0 as i,o as t}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1735357881000}'),s={name:"guide/setup-runtime/nodejs.md"};function c(l,e,n,a,r,p){return t(),d("div",null,e[0]||(e[0]=[i('

          安装 nodejs

          • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

            • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
          • https://nodejs.org/dist/ 下载相应版本的 nodejs

            • Windows 平台
              • (推荐) node-v99.99.9-x64.msi 标准安装程序
              • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
              • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
          • 安装过程,选项全部默认

          ',3)]))}const j=o(s,[["render",c]]);export{m as __pageData,j as default}; diff --git a/assets/guide_setup-runtime_nodejs.md.B_z0yaTN.lean.js b/assets/guide_setup-runtime_nodejs.md.Cear-ham.lean.js similarity index 96% rename from assets/guide_setup-runtime_nodejs.md.B_z0yaTN.lean.js rename to assets/guide_setup-runtime_nodejs.md.Cear-ham.lean.js index d4a85a5..1d5b2ec 100644 --- a/assets/guide_setup-runtime_nodejs.md.B_z0yaTN.lean.js +++ b/assets/guide_setup-runtime_nodejs.md.Cear-ham.lean.js @@ -1 +1 @@ -import{_ as o,c as d,a0 as i,o as t}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1734849817000}'),s={name:"guide/setup-runtime/nodejs.md"};function c(l,e,n,a,r,p){return t(),d("div",null,e[0]||(e[0]=[i('

          安装 nodejs

          • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

            • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
          • https://nodejs.org/dist/ 下载相应版本的 nodejs

            • Windows 平台
              • (推荐) node-v99.99.9-x64.msi 标准安装程序
              • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
              • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
          • 安装过程,选项全部默认

          ',3)]))}const j=o(s,[["render",c]]);export{m as __pageData,j as default}; +import{_ as o,c as d,a0 as i,o as t}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"安装 nodejs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/nodejs.md","filePath":"guide/setup-runtime/nodejs.md","lastUpdated":1735357881000}'),s={name:"guide/setup-runtime/nodejs.md"};function c(l,e,n,a,r,p){return t(),d("div",null,e[0]||(e[0]=[i('

          安装 nodejs

          • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

            • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
          • https://nodejs.org/dist/ 下载相应版本的 nodejs

            • Windows 平台
              • (推荐) node-v99.99.9-x64.msi 标准安装程序
              • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
              • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
          • 安装过程,选项全部默认

          ',3)]))}const j=o(s,[["render",c]]);export{m as __pageData,j as default}; diff --git a/assets/guide_setup-runtime_php.md.BkZLT8nr.js b/assets/guide_setup-runtime_php.md.D7TRA8P0.js similarity index 95% rename from assets/guide_setup-runtime_php.md.BkZLT8nr.js rename to assets/guide_setup-runtime_php.md.D7TRA8P0.js index 74fa198..acf842f 100644 --- a/assets/guide_setup-runtime_php.md.BkZLT8nr.js +++ b/assets/guide_setup-runtime_php.md.D7TRA8P0.js @@ -1 +1 @@ -import{_ as o,c as t,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const c="/Shmily/assets/php.CMlb2fCJ.png",u=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1734849817000}'),d={name:"guide/setup-runtime/php.md"};function a(l,e,r,s,n,h){return i(),t("div",null,e[0]||(e[0]=[p('

          开始 PHP 项目

          1. 官网 下载 PHP

            Windows 下载 VS16 x64 Thread Safe .zip 就行了

          2. 解压 .zipD:\\php
          3. 确认 D:\\php\\php.exe 存在
          4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
          5. 选择 高级 环境变量
          6. 选择 Path,新增一行 D:\\php
          7. 确认关闭窗口

          php

          ',4)]))}const f=o(d,[["render",a]]);export{u as __pageData,f as default}; +import{_ as o,c as t,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const c="/Shmily/assets/php.CMlb2fCJ.png",u=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1735357881000}'),d={name:"guide/setup-runtime/php.md"};function a(l,e,r,s,n,h){return i(),t("div",null,e[0]||(e[0]=[p('

          开始 PHP 项目

          1. 官网 下载 PHP

            Windows 下载 VS16 x64 Thread Safe .zip 就行了

          2. 解压 .zipD:\\php
          3. 确认 D:\\php\\php.exe 存在
          4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
          5. 选择 高级 环境变量
          6. 选择 Path,新增一行 D:\\php
          7. 确认关闭窗口

          php

          ',4)]))}const f=o(d,[["render",a]]);export{u as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_php.md.BkZLT8nr.lean.js b/assets/guide_setup-runtime_php.md.D7TRA8P0.lean.js similarity index 95% rename from assets/guide_setup-runtime_php.md.BkZLT8nr.lean.js rename to assets/guide_setup-runtime_php.md.D7TRA8P0.lean.js index 74fa198..acf842f 100644 --- a/assets/guide_setup-runtime_php.md.BkZLT8nr.lean.js +++ b/assets/guide_setup-runtime_php.md.D7TRA8P0.lean.js @@ -1 +1 @@ -import{_ as o,c as t,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const c="/Shmily/assets/php.CMlb2fCJ.png",u=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1734849817000}'),d={name:"guide/setup-runtime/php.md"};function a(l,e,r,s,n,h){return i(),t("div",null,e[0]||(e[0]=[p('

          开始 PHP 项目

          1. 官网 下载 PHP

            Windows 下载 VS16 x64 Thread Safe .zip 就行了

          2. 解压 .zipD:\\php
          3. 确认 D:\\php\\php.exe 存在
          4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
          5. 选择 高级 环境变量
          6. 选择 Path,新增一行 D:\\php
          7. 确认关闭窗口

          php

          ',4)]))}const f=o(d,[["render",a]]);export{u as __pageData,f as default}; +import{_ as o,c as t,a0 as p,o as i}from"./chunks/framework.BQKxUb7q.js";const c="/Shmily/assets/php.CMlb2fCJ.png",u=JSON.parse('{"title":"开始 PHP 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/php.md","filePath":"guide/setup-runtime/php.md","lastUpdated":1735357881000}'),d={name:"guide/setup-runtime/php.md"};function a(l,e,r,s,n,h){return i(),t("div",null,e[0]||(e[0]=[p('

          开始 PHP 项目

          1. 官网 下载 PHP

            Windows 下载 VS16 x64 Thread Safe .zip 就行了

          2. 解压 .zipD:\\php
          3. 确认 D:\\php\\php.exe 存在
          4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
          5. 选择 高级 环境变量
          6. 选择 Path,新增一行 D:\\php
          7. 确认关闭窗口

          php

          ',4)]))}const f=o(d,[["render",a]]);export{u as __pageData,f as default}; diff --git a/assets/guide_setup-runtime_python.md.Dq_AHHr6.js b/assets/guide_setup-runtime_python.md.D3LX2sw4.js similarity index 97% rename from assets/guide_setup-runtime_python.md.Dq_AHHr6.js rename to assets/guide_setup-runtime_python.md.D3LX2sw4.js index a941e59..7c08503 100644 --- a/assets/guide_setup-runtime_python.md.Dq_AHHr6.js +++ b/assets/guide_setup-runtime_python.md.D3LX2sw4.js @@ -1 +1 @@ -import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as i,c as e,a0 as s,o as l}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/python-setup.C7P5p5gC.png",y=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1734849817000}'),n={name:"guide/setup-runtime/python.md"};function o(h,a,r,d,c,u){return l(),e("div",null,a[0]||(a[0]=[s('

          开始 Python 项目

          1. 安装 python

          • 进入官网下载

          • 勾选 Add python.exe to PATH

            python add path

          • 全默认 下一步 完成

          2. 安装项目依赖

          • 命令行打开项目目录
            • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

            • 执行命令安装依赖

            shell
            pip install -r requirements.txt

          3.启动程序

          WARNING

          项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

          • 按照项目说明启动程序

          • 若无说明, 一般 main.py 为入口文件

            shell
                python main.py
          ',8)]))}const g=i(n,[["render",o]]);export{y as __pageData,g as default}; +import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as i,c as e,a0 as s,o as l}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/python-setup.C7P5p5gC.png",y=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1735357881000}'),n={name:"guide/setup-runtime/python.md"};function o(h,a,r,d,c,u){return l(),e("div",null,a[0]||(a[0]=[s('

          开始 Python 项目

          1. 安装 python

          • 进入官网下载

          • 勾选 Add python.exe to PATH

            python add path

          • 全默认 下一步 完成

          2. 安装项目依赖

          • 命令行打开项目目录
            • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

            • 执行命令安装依赖

            shell
            pip install -r requirements.txt

          3.启动程序

          WARNING

          项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

          • 按照项目说明启动程序

          • 若无说明, 一般 main.py 为入口文件

            shell
                python main.py
          ',8)]))}const g=i(n,[["render",o]]);export{y as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_python.md.Dq_AHHr6.lean.js b/assets/guide_setup-runtime_python.md.D3LX2sw4.lean.js similarity index 97% rename from assets/guide_setup-runtime_python.md.Dq_AHHr6.lean.js rename to assets/guide_setup-runtime_python.md.D3LX2sw4.lean.js index a941e59..7c08503 100644 --- a/assets/guide_setup-runtime_python.md.Dq_AHHr6.lean.js +++ b/assets/guide_setup-runtime_python.md.D3LX2sw4.lean.js @@ -1 +1 @@ -import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as i,c as e,a0 as s,o as l}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/python-setup.C7P5p5gC.png",y=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1734849817000}'),n={name:"guide/setup-runtime/python.md"};function o(h,a,r,d,c,u){return l(),e("div",null,a[0]||(a[0]=[s('

          开始 Python 项目

          1. 安装 python

          • 进入官网下载

          • 勾选 Add python.exe to PATH

            python add path

          • 全默认 下一步 完成

          2. 安装项目依赖

          • 命令行打开项目目录
            • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

            • 执行命令安装依赖

            shell
            pip install -r requirements.txt

          3.启动程序

          WARNING

          项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

          • 按照项目说明启动程序

          • 若无说明, 一般 main.py 为入口文件

            shell
                python main.py
          ',8)]))}const g=i(n,[["render",o]]);export{y as __pageData,g as default}; +import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as i,c as e,a0 as s,o as l}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/python-setup.C7P5p5gC.png",y=JSON.parse('{"title":"开始 Python 项目","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/python.md","filePath":"guide/setup-runtime/python.md","lastUpdated":1735357881000}'),n={name:"guide/setup-runtime/python.md"};function o(h,a,r,d,c,u){return l(),e("div",null,a[0]||(a[0]=[s('

          开始 Python 项目

          1. 安装 python

          • 进入官网下载

          • 勾选 Add python.exe to PATH

            python add path

          • 全默认 下一步 完成

          2. 安装项目依赖

          • 命令行打开项目目录
            • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

            • 执行命令安装依赖

            shell
            pip install -r requirements.txt

          3.启动程序

          WARNING

          项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

          • 按照项目说明启动程序

          • 若无说明, 一般 main.py 为入口文件

            shell
                python main.py
          ',8)]))}const g=i(n,[["render",o]]);export{y as __pageData,g as default}; diff --git a/assets/guide_setup-runtime_snippets_open_cmd.md.DTqr8_DM.js b/assets/guide_setup-runtime_snippets_open_cmd.md.kWtulpZt.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.DTqr8_DM.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.kWtulpZt.js index 60bc2dc..ae36ac8 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.DTqr8_DM.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.kWtulpZt.js @@ -1 +1 @@ -import{_ as n}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as o,j as e,a as s,o as p}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1734849817000}'),r={name:"guide/setup-runtime/snippets/open_cmd.md"};function i(d,t,l,m,c,u){return p(),o("div",null,t[0]||(t[0]=[e("ul",null,[e("li",null,[s("命令行打开项目目录 "),e("ul",null,[e("li",null,[s("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:n,alt:"open cmd"})])])])],-1)]))}const x=a(r,[["render",i]]);export{g as __pageData,x as default}; +import{_ as n}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as o,j as e,a as s,o as p}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1735357881000}'),r={name:"guide/setup-runtime/snippets/open_cmd.md"};function i(d,t,l,m,c,u){return p(),o("div",null,t[0]||(t[0]=[e("ul",null,[e("li",null,[s("命令行打开项目目录 "),e("ul",null,[e("li",null,[s("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:n,alt:"open cmd"})])])])],-1)]))}const x=a(r,[["render",i]]);export{g as __pageData,x as default}; diff --git a/assets/guide_setup-runtime_snippets_open_cmd.md.DTqr8_DM.lean.js b/assets/guide_setup-runtime_snippets_open_cmd.md.kWtulpZt.lean.js similarity index 91% rename from assets/guide_setup-runtime_snippets_open_cmd.md.DTqr8_DM.lean.js rename to assets/guide_setup-runtime_snippets_open_cmd.md.kWtulpZt.lean.js index 60bc2dc..ae36ac8 100644 --- a/assets/guide_setup-runtime_snippets_open_cmd.md.DTqr8_DM.lean.js +++ b/assets/guide_setup-runtime_snippets_open_cmd.md.kWtulpZt.lean.js @@ -1 +1 @@ -import{_ as n}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as o,j as e,a as s,o as p}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1734849817000}'),r={name:"guide/setup-runtime/snippets/open_cmd.md"};function i(d,t,l,m,c,u){return p(),o("div",null,t[0]||(t[0]=[e("ul",null,[e("li",null,[s("命令行打开项目目录 "),e("ul",null,[e("li",null,[s("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:n,alt:"open cmd"})])])])],-1)]))}const x=a(r,[["render",i]]);export{g as __pageData,x as default}; +import{_ as n}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as a,c as o,j as e,a as s,o as p}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/setup-runtime/snippets/open_cmd.md","filePath":"guide/setup-runtime/snippets/open_cmd.md","lastUpdated":1735357881000}'),r={name:"guide/setup-runtime/snippets/open_cmd.md"};function i(d,t,l,m,c,u){return p(),o("div",null,t[0]||(t[0]=[e("ul",null,[e("li",null,[s("命令行打开项目目录 "),e("ul",null,[e("li",null,[s("Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 "),e("img",{src:n,alt:"open cmd"})])])])],-1)]))}const x=a(r,[["render",i]]);export{g as __pageData,x as default}; diff --git a/assets/guide_tools_Github_visit.md.Db6lYeIP.js b/assets/guide_tools_Github_visit.md.Cl5ZBBJd.js similarity index 93% rename from assets/guide_tools_Github_visit.md.Db6lYeIP.js rename to assets/guide_tools_Github_visit.md.Cl5ZBBJd.js index f892c5b..a0d88d8 100644 --- a/assets/guide_tools_Github_visit.md.Db6lYeIP.js +++ b/assets/guide_tools_Github_visit.md.Cl5ZBBJd.js @@ -1 +1 @@ -import{_ as r,c as o,j as t,a as e,o as i}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1734849817000}'),s={name:"guide/tools/Github/visit.md"};function l(n,a,d,c,u,h){return i(),o("div",null,a[0]||(a[0]=[t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1)]))}const b=r(s,[["render",l]]);export{f as __pageData,b as default}; +import{_ as r,c as o,j as t,a as e,o as i}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1735357881000}'),s={name:"guide/tools/Github/visit.md"};function l(n,a,d,c,u,h){return i(),o("div",null,a[0]||(a[0]=[t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1)]))}const b=r(s,[["render",l]]);export{f as __pageData,b as default}; diff --git a/assets/guide_tools_Github_visit.md.Db6lYeIP.lean.js b/assets/guide_tools_Github_visit.md.Cl5ZBBJd.lean.js similarity index 93% rename from assets/guide_tools_Github_visit.md.Db6lYeIP.lean.js rename to assets/guide_tools_Github_visit.md.Cl5ZBBJd.lean.js index f892c5b..a0d88d8 100644 --- a/assets/guide_tools_Github_visit.md.Db6lYeIP.lean.js +++ b/assets/guide_tools_Github_visit.md.Cl5ZBBJd.lean.js @@ -1 +1 @@ -import{_ as r,c as o,j as t,a as e,o as i}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1734849817000}'),s={name:"guide/tools/Github/visit.md"};function l(n,a,d,c,u,h){return i(),o("div",null,a[0]||(a[0]=[t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1)]))}const b=r(s,[["render",l]]);export{f as __pageData,b as default}; +import{_ as r,c as o,j as t,a as e,o as i}from"./chunks/framework.BQKxUb7q.js";const f=JSON.parse('{"title":"访问 Github","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Github/visit.md","filePath":"guide/tools/Github/visit.md","lastUpdated":1735357881000}'),s={name:"guide/tools/Github/visit.md"};function l(n,a,d,c,u,h){return i(),o("div",null,a[0]||(a[0]=[t("h1",{id:"访问-github",tabindex:"-1"},[e("访问 Github "),t("a",{class:"header-anchor",href:"#访问-github","aria-label":'Permalink to "访问 Github"'},"​")],-1),t("p",null,[e("如果 "),t("code",null,"Github"),e(" 访问不顺畅, 可以在 "),t("a",{href:"https://www.microsoft.com/store/productId/9MTCFHS560NG?ocid=pdpshare",target:"_blank",rel:"noreferrer"},"微软商店"),e(" 搜索 "),t("a",{href:"https://steampp.net/",target:"_blank",rel:"noreferrer"},[t("code",null,"Watt Toolkit")])],-1)]))}const b=r(s,[["render",l]]);export{f as __pageData,b as default}; diff --git a/assets/guide_tools_Wechat_calc-wechat-key.md.D41wNBCO.js b/assets/guide_tools_Wechat_calc-wechat-key.md.CUCTao83.js similarity index 99% rename from assets/guide_tools_Wechat_calc-wechat-key.md.D41wNBCO.js rename to assets/guide_tools_Wechat_calc-wechat-key.md.CUCTao83.js index bcbdd61..cb79fe3 100644 --- a/assets/guide_tools_Wechat_calc-wechat-key.md.D41wNBCO.js +++ b/assets/guide_tools_Wechat_calc-wechat-key.md.CUCTao83.js @@ -3,4 +3,4 @@ import{g as w}from"./chunks/commonjsHelpers.Cpj98o6Y.js";import{_ as C,c as U,j * * @author Feross Aboukhadijeh * @license MIT - */var N=function(l){return l!=null&&(M(l)||V(l)||!!l._isBuffer)};function M(l){return!!l.constructor&&typeof l.constructor.isBuffer=="function"&&l.constructor.isBuffer(l)}function V(l){return typeof l.readFloatLE=="function"&&typeof l.slice=="function"&&M(l.slice(0,0))}(function(){var l=H,p=T.utf8,a=N,c=T.bin,f=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=c.stringToBytes(i):i=p.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=l.bytesToWords(i),g=i.length*8,n=1732584193,r=-271733879,e=-1732584194,t=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[g>>>5]|=128<>>9<<4)+14]=g;for(var d=f._ff,h=f._gg,v=f._hh,y=f._ii,u=0;u>>0,r=r+S>>>0,e=e+m>>>0,t=t+A>>>0}return l.endian([n,r,e,t])};f._ff=function(i,s,o,g,n,r,e){var t=i+(s&o|~s&g)+(n>>>0)+e;return(t<>>32-r)+s},f._gg=function(i,s,o,g,n,r,e){var t=i+(s&g|o&~g)+(n>>>0)+e;return(t<>>32-r)+s},f._hh=function(i,s,o,g,n,r,e){var t=i+(s^o^g)+(n>>>0)+e;return(t<>>32-r)+s},f._ii=function(i,s,o,g,n,r,e){var t=i+(o^(s|~g))+(n>>>0)+e;return(t<>>32-r)+s},f._blocksize=16,f._digestsize=16,E.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=l.wordsToBytes(f(i,s));return s&&s.asBytes?o:s&&s.asString?c.bytesToString(o):l.bytesToHex(o)}})();var O=E.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(l){this._IMEI=l.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const l=this.IMEI+""+this.uni;return P(l).substring(0,7).toLowerCase()}}},q=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1734849817000}'),L={class:"form"},R={for:"IMEI"},$={for:"uni"};function J(l,p,a,c,f,i){return z(),U("div",null,[p[5]||(p[5]=I("h1",{id:"计算微信数据库-key",tabindex:"-1"},[D("计算微信数据库 key "),I("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1)),I("div",null,[I("div",L,[I("label",R,[p[2]||(p[2]=I("span",null,"IMEI: ",-1)),F(I("input",{type:"text",name:"IMEI","onUpdate:modelValue":p[0]||(p[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[B,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),p[4]||(p[4]=I("br",null,null,-1)),I("label",$,[p[3]||(p[3]=I("span",null,"uni: ",-1)),F(I("input",{type:"text",name:"uni","onUpdate:modelValue":p[1]||(p[1]=s=>l.uni=s),placeholder:"请输入 uni"},null,512),[[B,l.uni,void 0,{lazy:!0,trim:!0}]])])]),I("p",null,"key: "+W(i.key),1)])])}const Q=C(G,[["render",J]]);export{q as __pageData,Q as default}; + */var N=function(l){return l!=null&&(M(l)||V(l)||!!l._isBuffer)};function M(l){return!!l.constructor&&typeof l.constructor.isBuffer=="function"&&l.constructor.isBuffer(l)}function V(l){return typeof l.readFloatLE=="function"&&typeof l.slice=="function"&&M(l.slice(0,0))}(function(){var l=H,p=T.utf8,a=N,c=T.bin,f=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=c.stringToBytes(i):i=p.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=l.bytesToWords(i),g=i.length*8,n=1732584193,r=-271733879,e=-1732584194,t=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[g>>>5]|=128<>>9<<4)+14]=g;for(var d=f._ff,h=f._gg,v=f._hh,y=f._ii,u=0;u>>0,r=r+S>>>0,e=e+m>>>0,t=t+A>>>0}return l.endian([n,r,e,t])};f._ff=function(i,s,o,g,n,r,e){var t=i+(s&o|~s&g)+(n>>>0)+e;return(t<>>32-r)+s},f._gg=function(i,s,o,g,n,r,e){var t=i+(s&g|o&~g)+(n>>>0)+e;return(t<>>32-r)+s},f._hh=function(i,s,o,g,n,r,e){var t=i+(s^o^g)+(n>>>0)+e;return(t<>>32-r)+s},f._ii=function(i,s,o,g,n,r,e){var t=i+(o^(s|~g))+(n>>>0)+e;return(t<>>32-r)+s},f._blocksize=16,f._digestsize=16,E.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=l.wordsToBytes(f(i,s));return s&&s.asBytes?o:s&&s.asString?c.bytesToString(o):l.bytesToHex(o)}})();var O=E.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(l){this._IMEI=l.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const l=this.IMEI+""+this.uni;return P(l).substring(0,7).toLowerCase()}}},q=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1735357881000}'),L={class:"form"},R={for:"IMEI"},$={for:"uni"};function J(l,p,a,c,f,i){return z(),U("div",null,[p[5]||(p[5]=I("h1",{id:"计算微信数据库-key",tabindex:"-1"},[D("计算微信数据库 key "),I("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1)),I("div",null,[I("div",L,[I("label",R,[p[2]||(p[2]=I("span",null,"IMEI: ",-1)),F(I("input",{type:"text",name:"IMEI","onUpdate:modelValue":p[0]||(p[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[B,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),p[4]||(p[4]=I("br",null,null,-1)),I("label",$,[p[3]||(p[3]=I("span",null,"uni: ",-1)),F(I("input",{type:"text",name:"uni","onUpdate:modelValue":p[1]||(p[1]=s=>l.uni=s),placeholder:"请输入 uni"},null,512),[[B,l.uni,void 0,{lazy:!0,trim:!0}]])])]),I("p",null,"key: "+W(i.key),1)])])}const Q=C(G,[["render",J]]);export{q as __pageData,Q as default}; diff --git a/assets/guide_tools_Wechat_calc-wechat-key.md.D41wNBCO.lean.js b/assets/guide_tools_Wechat_calc-wechat-key.md.CUCTao83.lean.js similarity index 99% rename from assets/guide_tools_Wechat_calc-wechat-key.md.D41wNBCO.lean.js rename to assets/guide_tools_Wechat_calc-wechat-key.md.CUCTao83.lean.js index bcbdd61..cb79fe3 100644 --- a/assets/guide_tools_Wechat_calc-wechat-key.md.D41wNBCO.lean.js +++ b/assets/guide_tools_Wechat_calc-wechat-key.md.CUCTao83.lean.js @@ -3,4 +3,4 @@ import{g as w}from"./chunks/commonjsHelpers.Cpj98o6Y.js";import{_ as C,c as U,j * * @author Feross Aboukhadijeh * @license MIT - */var N=function(l){return l!=null&&(M(l)||V(l)||!!l._isBuffer)};function M(l){return!!l.constructor&&typeof l.constructor.isBuffer=="function"&&l.constructor.isBuffer(l)}function V(l){return typeof l.readFloatLE=="function"&&typeof l.slice=="function"&&M(l.slice(0,0))}(function(){var l=H,p=T.utf8,a=N,c=T.bin,f=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=c.stringToBytes(i):i=p.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=l.bytesToWords(i),g=i.length*8,n=1732584193,r=-271733879,e=-1732584194,t=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[g>>>5]|=128<>>9<<4)+14]=g;for(var d=f._ff,h=f._gg,v=f._hh,y=f._ii,u=0;u>>0,r=r+S>>>0,e=e+m>>>0,t=t+A>>>0}return l.endian([n,r,e,t])};f._ff=function(i,s,o,g,n,r,e){var t=i+(s&o|~s&g)+(n>>>0)+e;return(t<>>32-r)+s},f._gg=function(i,s,o,g,n,r,e){var t=i+(s&g|o&~g)+(n>>>0)+e;return(t<>>32-r)+s},f._hh=function(i,s,o,g,n,r,e){var t=i+(s^o^g)+(n>>>0)+e;return(t<>>32-r)+s},f._ii=function(i,s,o,g,n,r,e){var t=i+(o^(s|~g))+(n>>>0)+e;return(t<>>32-r)+s},f._blocksize=16,f._digestsize=16,E.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=l.wordsToBytes(f(i,s));return s&&s.asBytes?o:s&&s.asString?c.bytesToString(o):l.bytesToHex(o)}})();var O=E.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(l){this._IMEI=l.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const l=this.IMEI+""+this.uni;return P(l).substring(0,7).toLowerCase()}}},q=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1734849817000}'),L={class:"form"},R={for:"IMEI"},$={for:"uni"};function J(l,p,a,c,f,i){return z(),U("div",null,[p[5]||(p[5]=I("h1",{id:"计算微信数据库-key",tabindex:"-1"},[D("计算微信数据库 key "),I("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1)),I("div",null,[I("div",L,[I("label",R,[p[2]||(p[2]=I("span",null,"IMEI: ",-1)),F(I("input",{type:"text",name:"IMEI","onUpdate:modelValue":p[0]||(p[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[B,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),p[4]||(p[4]=I("br",null,null,-1)),I("label",$,[p[3]||(p[3]=I("span",null,"uni: ",-1)),F(I("input",{type:"text",name:"uni","onUpdate:modelValue":p[1]||(p[1]=s=>l.uni=s),placeholder:"请输入 uni"},null,512),[[B,l.uni,void 0,{lazy:!0,trim:!0}]])])]),I("p",null,"key: "+W(i.key),1)])])}const Q=C(G,[["render",J]]);export{q as __pageData,Q as default}; + */var N=function(l){return l!=null&&(M(l)||V(l)||!!l._isBuffer)};function M(l){return!!l.constructor&&typeof l.constructor.isBuffer=="function"&&l.constructor.isBuffer(l)}function V(l){return typeof l.readFloatLE=="function"&&typeof l.slice=="function"&&M(l.slice(0,0))}(function(){var l=H,p=T.utf8,a=N,c=T.bin,f=function(i,s){i.constructor==String?s&&s.encoding==="binary"?i=c.stringToBytes(i):i=p.stringToBytes(i):a(i)?i=Array.prototype.slice.call(i,0):!Array.isArray(i)&&i.constructor!==Uint8Array&&(i=i.toString());for(var o=l.bytesToWords(i),g=i.length*8,n=1732584193,r=-271733879,e=-1732584194,t=271733878,u=0;u>>24)&16711935|(o[u]<<24|o[u]>>>8)&4278255360;o[g>>>5]|=128<>>9<<4)+14]=g;for(var d=f._ff,h=f._gg,v=f._hh,y=f._ii,u=0;u>>0,r=r+S>>>0,e=e+m>>>0,t=t+A>>>0}return l.endian([n,r,e,t])};f._ff=function(i,s,o,g,n,r,e){var t=i+(s&o|~s&g)+(n>>>0)+e;return(t<>>32-r)+s},f._gg=function(i,s,o,g,n,r,e){var t=i+(s&g|o&~g)+(n>>>0)+e;return(t<>>32-r)+s},f._hh=function(i,s,o,g,n,r,e){var t=i+(s^o^g)+(n>>>0)+e;return(t<>>32-r)+s},f._ii=function(i,s,o,g,n,r,e){var t=i+(o^(s|~g))+(n>>>0)+e;return(t<>>32-r)+s},f._blocksize=16,f._digestsize=16,E.exports=function(i,s){if(i==null)throw new Error("Illegal argument "+i);var o=l.wordsToBytes(f(i,s));return s&&s.asBytes?o:s&&s.asString?c.bytesToString(o):l.bytesToHex(o)}})();var O=E.exports;const P=w(O),G={data:()=>({_IMEI:"",uni:""}),computed:{IMEI:{get(){return this._IMEI},set(l){this._IMEI=l.toUpperCase()}},key(){if(!this.IMEI||!this.uni)return"";const l=this.IMEI+""+this.uni;return P(l).substring(0,7).toLowerCase()}}},q=JSON.parse('{"title":"计算微信数据库 key","description":"","frontmatter":{},"headers":[],"relativePath":"guide/tools/Wechat/calc-wechat-key.md","filePath":"guide/tools/Wechat/calc-wechat-key.md","lastUpdated":1735357881000}'),L={class:"form"},R={for:"IMEI"},$={for:"uni"};function J(l,p,a,c,f,i){return z(),U("div",null,[p[5]||(p[5]=I("h1",{id:"计算微信数据库-key",tabindex:"-1"},[D("计算微信数据库 key "),I("a",{class:"header-anchor",href:"#计算微信数据库-key","aria-label":'Permalink to "计算微信数据库 key"'},"​")],-1)),I("div",null,[I("div",L,[I("label",R,[p[2]||(p[2]=I("span",null,"IMEI: ",-1)),F(I("input",{type:"text",name:"IMEI","onUpdate:modelValue":p[0]||(p[0]=s=>i.IMEI=s),placeholder:"请输入 IMEI"},null,512),[[B,i.IMEI,void 0,{lazy:!0,trim:!0}]])]),p[4]||(p[4]=I("br",null,null,-1)),I("label",$,[p[3]||(p[3]=I("span",null,"uni: ",-1)),F(I("input",{type:"text",name:"uni","onUpdate:modelValue":p[1]||(p[1]=s=>l.uni=s),placeholder:"请输入 uni"},null,512),[[B,l.uni,void 0,{lazy:!0,trim:!0}]])])]),I("p",null,"key: "+W(i.key),1)])])}const Q=C(G,[["render",J]]);export{q as __pageData,Q as default}; diff --git a/assets/guide_use_begin.md.DIhYTDlA.js b/assets/guide_use_begin.md.BMEfmB5j.js similarity index 99% rename from assets/guide_use_begin.md.DIhYTDlA.js rename to assets/guide_use_begin.md.BMEfmB5j.js index 5cbf1b9..f1016e0 100644 --- a/assets/guide_use_begin.md.DIhYTDlA.js +++ b/assets/guide_use_begin.md.BMEfmB5j.js @@ -1,4 +1,4 @@ -import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as o}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as s,c as d,a0 as n,o as c}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/cmd_run.Chgnt9hc.png",f=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1734849817000}'),l={name:"guide/use/begin.md"};function i(r,e,h,u,m,b){return c(),d("div",null,e[0]||(e[0]=[n('

          开始吧

          概述

          对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

          若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

          所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

          因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

          基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

          学前班 ( 如何开始一个项目 )

          大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

          实操

          Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

          在每个章节最后均有实操示例

          如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

          学前班教程

          1. 下载源码

          在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

          实操

          打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
          下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

          2. 安装项目运行时环境

          什么是运行时环境?

          顾名思义: 运行这个 "东西" 所需要的 "环境"

          例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
          那么运行 风景.mp4 所需要环境就是 视频播放器

          下载的 源码 也需要对应的 (运行时)环境

          项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

          2.1 如何判断项目的 编程语言

          2.1.1 按照项目的特征(推荐)
          编程语言特征
          nodejspackage.json 文件, 或大量 .js .ts 后缀文件
          pythonrequirements.txt 文件, 或大量 .py 后缀文件
          java大量 .java 后缀文件
          2.1.2 Github 会自动标注主要语言(并不准确)

          what-languages

          2.2 根据 编程语言 安装对应的 运行时

          编程语言安装运行时
          nodejs教程
          python教程
          java教程
          php教程
          docker教程

          实操

          打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
          按照 nodejs 教程,
          下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
          在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

          3. 使用

          参照具体项目中的文档继续

          实操

          打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

          1. 安装 node 环境

            上述 2.2 已经安装

          2. 安装 php 环境

            参照2.2 安装 php 环境

          3. 导出的 .mht 文件放入 input

            从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

            // 文件夹结构
            +import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as o}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as s,c as d,a0 as n,o as c}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/cmd_run.Chgnt9hc.png",f=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1735357881000}'),l={name:"guide/use/begin.md"};function i(r,e,h,u,m,b){return c(),d("div",null,e[0]||(e[0]=[n('

            开始吧

            概述

            对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

            若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

            所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

            因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

            基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

            学前班 ( 如何开始一个项目 )

            大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

            实操

            Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

            在每个章节最后均有实操示例

            如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

            学前班教程

            1. 下载源码

            在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

            实操

            打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
            下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

            2. 安装项目运行时环境

            什么是运行时环境?

            顾名思义: 运行这个 "东西" 所需要的 "环境"

            例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
            那么运行 风景.mp4 所需要环境就是 视频播放器

            下载的 源码 也需要对应的 (运行时)环境

            项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

            2.1 如何判断项目的 编程语言

            2.1.1 按照项目的特征(推荐)
            编程语言特征
            nodejspackage.json 文件, 或大量 .js .ts 后缀文件
            pythonrequirements.txt 文件, 或大量 .py 后缀文件
            java大量 .java 后缀文件
            2.1.2 Github 会自动标注主要语言(并不准确)

            what-languages

            2.2 根据 编程语言 安装对应的 运行时

            编程语言安装运行时
            nodejs教程
            python教程
            java教程
            php教程
            docker教程

            实操

            打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
            按照 nodejs 教程,
            下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
            在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

            3. 使用

            参照具体项目中的文档继续

            实操

            打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

            1. 安装 node 环境

              上述 2.2 已经安装

            2. 安装 php 环境

              参照2.2 安装 php 环境

            3. 导出的 .mht 文件放入 input

              从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

              // 文件夹结构
               
               -\\
                 - node_modules
              diff --git a/assets/guide_use_begin.md.DIhYTDlA.lean.js b/assets/guide_use_begin.md.BMEfmB5j.lean.js
              similarity index 99%
              rename from assets/guide_use_begin.md.DIhYTDlA.lean.js
              rename to assets/guide_use_begin.md.BMEfmB5j.lean.js
              index 5cbf1b9..f1016e0 100644
              --- a/assets/guide_use_begin.md.DIhYTDlA.lean.js
              +++ b/assets/guide_use_begin.md.BMEfmB5j.lean.js
              @@ -1,4 +1,4 @@
              -import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as o}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as s,c as d,a0 as n,o as c}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/cmd_run.Chgnt9hc.png",f=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1734849817000}'),l={name:"guide/use/begin.md"};function i(r,e,h,u,m,b){return c(),d("div",null,e[0]||(e[0]=[n('

              开始吧

              概述

              对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

              若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

              所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

              因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

              基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

              学前班 ( 如何开始一个项目 )

              大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

              实操

              Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

              在每个章节最后均有实操示例

              如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

              学前班教程

              1. 下载源码

              在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

              实操

              打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
              下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

              2. 安装项目运行时环境

              什么是运行时环境?

              顾名思义: 运行这个 "东西" 所需要的 "环境"

              例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
              那么运行 风景.mp4 所需要环境就是 视频播放器

              下载的 源码 也需要对应的 (运行时)环境

              项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

              2.1 如何判断项目的 编程语言

              2.1.1 按照项目的特征(推荐)
              编程语言特征
              nodejspackage.json 文件, 或大量 .js .ts 后缀文件
              pythonrequirements.txt 文件, 或大量 .py 后缀文件
              java大量 .java 后缀文件
              2.1.2 Github 会自动标注主要语言(并不准确)

              what-languages

              2.2 根据 编程语言 安装对应的 运行时

              编程语言安装运行时
              nodejs教程
              python教程
              java教程
              php教程
              docker教程

              实操

              打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
              按照 nodejs 教程,
              下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
              在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

              3. 使用

              参照具体项目中的文档继续

              实操

              打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

              1. 安装 node 环境

                上述 2.2 已经安装

              2. 安装 php 环境

                参照2.2 安装 php 环境

              3. 导出的 .mht 文件放入 input

                从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

                // 文件夹结构
                +import{_ as a}from"./chunks/down_repo.qaP5-_4m.js";import{_ as o}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t}from"./chunks/open_cmd.Dc_Ap6bK.js";import{_ as s,c as d,a0 as n,o as c}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/cmd_run.Chgnt9hc.png",f=JSON.parse('{"title":"开始吧","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/begin.md","filePath":"guide/use/begin.md","lastUpdated":1735357881000}'),l={name:"guide/use/begin.md"};function i(r,e,h,u,m,b){return c(),d("div",null,e[0]||(e[0]=[n('

                开始吧

                概述

                对于用户来说, 希望一个软件足够简单,打开一个窗口,点击一个按钮, 就可以得到最终的 结果 . 这称为黑盒, 所有的事情都被这个按钮挡住的了,不利于 debug 与 程序的解耦.

                若有些人只希望导出 MobileQQ 的数据做一个自己的 Ai 机器人 ,并不需要Show(展示数据). 如果按照以上的设计,他还需要从上述按钮获取的展示 结果 逆向为数据.

                所以 Shmily 的使用是在 程序解耦使用便利 之间取舍. 我希望 Shmily 对于不懂编程的人能简单使用, 同时也能足够解耦拆分足够细, 不让开发者 重造轮子, 中间的纽带就是文档了.

                因为我自身是 Shimly 的开发者,很容易一叶障目, 所以我也很希望你们从各种角度对文档提出各方面的问题来完善文档. 欢迎 提出建议

                基于以上 Shmily 的使用会被拆分为很多个步骤, 而且没有 GUI 界面, 这会让人看起来感觉很复杂, 但我保证, 每个步骤基本都是拷贝文件, 执行一行命令 完了~ 别担心~

                学前班 ( 如何开始一个项目 )

                大部分项目并不会打包为有界面的 "exe", 而是需要从源码运行, Github 是一个存储源码的网站, 本章介绍如何开始一个存储在 Github 项目

                实操

                Windows11https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT(电脑QQ聊天记录) 为例

                在每个章节最后均有实操示例

                如果你非程序员, 可以展开这里获取一些基本知识来开始一个项目

                学前班教程

                1. 下载源码

                在 Github 项目中, 点击下图中 Download ZIP 即可下载当前项目源码 down repo

                实操

                打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT 并下载
                下载后解压缩 Shmily-Get-QQ-PC_MHT-main.zipD:\\Shmily-Get-QQ-PC_MHT-main

                2. 安装项目运行时环境

                什么是运行时环境?

                顾名思义: 运行这个 "东西" 所需要的 "环境"

                例如你有一个 风景.mp4 的视频, 如果你要播放出来, 那么你需要一个 视频播放器
                那么运行 风景.mp4 所需要环境就是 视频播放器

                下载的 源码 也需要对应的 (运行时)环境

                项目的源码可能是由不同 编程语言 书写的, 相应的 编程语言 需要对应的 运行时, 如 C++源代码 需要 C++运行时, Java源代码 需要 Java运行时

                2.1 如何判断项目的 编程语言

                2.1.1 按照项目的特征(推荐)
                编程语言特征
                nodejspackage.json 文件, 或大量 .js .ts 后缀文件
                pythonrequirements.txt 文件, 或大量 .py 后缀文件
                java大量 .java 后缀文件
                2.1.2 Github 会自动标注主要语言(并不准确)

                what-languages

                2.2 根据 编程语言 安装对应的 运行时

                编程语言安装运行时
                nodejs教程
                python教程
                java教程
                php教程
                docker教程

                实操

                打开 D:\\Shmily-Get-QQ-PC_MHT-main, 项目中有 package.json 文件, 所以这是一个 nodejs 项目
                按照 nodejs 教程,
                下载 Windows 平台 https://nodejs.org/dist/v18.18.2/node-v18.18.2-x64.msi 并安装
                在项目目录 D:\\Shmily-Get-QQ-PC_MHT-main 执行 npm i 安装依赖

                3. 使用

                参照具体项目中的文档继续

                实操

                打开 https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT, 参照项目文档中的 使用 部分

                1. 安装 node 环境

                  上述 2.2 已经安装

                2. 安装 php 环境

                  参照2.2 安装 php 环境

                3. 导出的 .mht 文件放入 input

                  从 PC QQ 的聊天管理器中导出 .mht 格式的聊天记录, 并放入 input 文件夹(如没有则新建)

                  // 文件夹结构
                   
                   -\\
                     - node_modules
                  diff --git a/assets/guide_use_data.md.Oxydr24Y.js b/assets/guide_use_data.md.BiO81cYb.js
                  similarity index 96%
                  rename from assets/guide_use_data.md.Oxydr24Y.js
                  rename to assets/guide_use_data.md.BiO81cYb.js
                  index 4ace682..8f8694e 100644
                  --- a/assets/guide_use_data.md.Oxydr24Y.js
                  +++ b/assets/guide_use_data.md.BiO81cYb.js
                  @@ -1 +1 @@
                  -import{_ as e,c as t,a0 as o,o as d}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1734849817000}'),r={name:"guide/use/data.md"};function c(i,a,n,s,l,h){return d(),t("div",null,a[0]||(a[0]=[o('

                  资源文件

                  路径说明

                  资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

                  其中 $rootPath 可以在 Get 项目的 config.js 配置.

                  修改补充

                  如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

                  评论资源

                  评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

                  ',8)]))}const u=e(r,[["render",c]]);export{m as __pageData,u as default}; +import{_ as e,c as t,a0 as o,o as d}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1735357881000}'),r={name:"guide/use/data.md"};function c(i,a,n,s,l,h){return d(),t("div",null,a[0]||(a[0]=[o('

                  资源文件

                  路径说明

                  资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

                  其中 $rootPath 可以在 Get 项目的 config.js 配置.

                  修改补充

                  如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

                  评论资源

                  评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

                  ',8)]))}const u=e(r,[["render",c]]);export{m as __pageData,u as default}; diff --git a/assets/guide_use_data.md.Oxydr24Y.lean.js b/assets/guide_use_data.md.BiO81cYb.lean.js similarity index 96% rename from assets/guide_use_data.md.Oxydr24Y.lean.js rename to assets/guide_use_data.md.BiO81cYb.lean.js index 4ace682..8f8694e 100644 --- a/assets/guide_use_data.md.Oxydr24Y.lean.js +++ b/assets/guide_use_data.md.BiO81cYb.lean.js @@ -1 +1 @@ -import{_ as e,c as t,a0 as o,o as d}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1734849817000}'),r={name:"guide/use/data.md"};function c(i,a,n,s,l,h){return d(),t("div",null,a[0]||(a[0]=[o('

                  资源文件

                  路径说明

                  资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

                  其中 $rootPath 可以在 Get 项目的 config.js 配置.

                  修改补充

                  如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

                  评论资源

                  评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

                  ',8)]))}const u=e(r,[["render",c]]);export{m as __pageData,u as default}; +import{_ as e,c as t,a0 as o,o as d}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"资源文件","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/data.md","filePath":"guide/use/data.md","lastUpdated":1735357881000}'),r={name:"guide/use/data.md"};function c(i,a,n,s,l,h){return d(),t("div",null,a[0]||(a[0]=[o('

                  资源文件

                  路径说明

                  资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

                  其中 $rootPath 可以在 Get 项目的 config.js 配置.

                  修改补充

                  如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

                  评论资源

                  评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

                  ',8)]))}const u=e(r,[["render",c]]);export{m as __pageData,u as default}; diff --git a/assets/guide_use_draft.md.Dv4nnQSo.js b/assets/guide_use_draft.md.DXPFqo3C.js similarity index 94% rename from assets/guide_use_draft.md.Dv4nnQSo.js rename to assets/guide_use_draft.md.DXPFqo3C.js index 706383a..aaa3a85 100644 --- a/assets/guide_use_draft.md.Dv4nnQSo.js +++ b/assets/guide_use_draft.md.DXPFqo3C.js @@ -1 +1 @@ -import{_ as a}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t,c as o,a0 as r,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1734849817000}'),s={name:"guide/use/draft.md"};function i(p,e,n,l,c,u){return d(),o("div",null,e[0]||(e[0]=[r('

                  2. 安装项目运行时环境

                  根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

                  也可以按照下面列出的特性, 安装对应语言的运行时

                  • nodejs (项目中有 package.json 文件)

                  • python (大量 .py 后缀文件)

                  • java (大量 .java 后缀文件)

                  ',4)]))}const _=t(s,[["render",i]]);export{h as __pageData,_ as default}; +import{_ as a}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t,c as o,a0 as r,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1735357881000}'),s={name:"guide/use/draft.md"};function i(p,e,n,l,c,u){return d(),o("div",null,e[0]||(e[0]=[r('

                  2. 安装项目运行时环境

                  根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

                  也可以按照下面列出的特性, 安装对应语言的运行时

                  • nodejs (项目中有 package.json 文件)

                  • python (大量 .py 后缀文件)

                  • java (大量 .java 后缀文件)

                  ',4)]))}const _=t(s,[["render",i]]);export{h as __pageData,_ as default}; diff --git a/assets/guide_use_draft.md.Dv4nnQSo.lean.js b/assets/guide_use_draft.md.DXPFqo3C.lean.js similarity index 94% rename from assets/guide_use_draft.md.Dv4nnQSo.lean.js rename to assets/guide_use_draft.md.DXPFqo3C.lean.js index 706383a..aaa3a85 100644 --- a/assets/guide_use_draft.md.Dv4nnQSo.lean.js +++ b/assets/guide_use_draft.md.DXPFqo3C.lean.js @@ -1 +1 @@ -import{_ as a}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t,c as o,a0 as r,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1734849817000}'),s={name:"guide/use/draft.md"};function i(p,e,n,l,c,u){return d(),o("div",null,e[0]||(e[0]=[r('

                  2. 安装项目运行时环境

                  根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

                  也可以按照下面列出的特性, 安装对应语言的运行时

                  • nodejs (项目中有 package.json 文件)

                  • python (大量 .py 后缀文件)

                  • java (大量 .java 后缀文件)

                  ',4)]))}const _=t(s,[["render",i]]);export{h as __pageData,_ as default}; +import{_ as a}from"./chunks/what-languages.pQIRa0c_.js";import{_ as t,c as o,a0 as r,o as d}from"./chunks/framework.BQKxUb7q.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/draft.md","filePath":"guide/use/draft.md","lastUpdated":1735357881000}'),s={name:"guide/use/draft.md"};function i(p,e,n,l,c,u){return d(),o("div",null,e[0]||(e[0]=[r('

                  2. 安装项目运行时环境

                  根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

                  也可以按照下面列出的特性, 安装对应语言的运行时

                  • nodejs (项目中有 package.json 文件)

                  • python (大量 .py 后缀文件)

                  • java (大量 .java 后缀文件)

                  ',4)]))}const _=t(s,[["render",i]]);export{h as __pageData,_ as default}; diff --git a/assets/guide_use_get.md.C0qEC4Ke.js b/assets/guide_use_get.md.IrCSHjqs.js similarity index 98% rename from assets/guide_use_get.md.C0qEC4Ke.js rename to assets/guide_use_get.md.IrCSHjqs.js index bab4e5a..8ad7f28 100644 --- a/assets/guide_use_get.md.C0qEC4Ke.js +++ b/assets/guide_use_get.md.IrCSHjqs.js @@ -1,4 +1,4 @@ -import{_ as a,c as l,a0 as t,o as s}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1734849817000}'),n={name:"guide/use/get.md"};function i(o,e,r,p,h,d){return s(),l("div",null,e[0]||(e[0]=[t(`

                  Get

                  支持列表 中选择所需项目, 按照相应的文档操作

                  支持列表

                  下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

                  TIP

                  有 🎞️ 标记的在项目文档中均包含视频教程

                  产物结构

                  最终可以在输出目录(一般是 dist)获得 数据文件资源文件

                  // 示例
                  +import{_ as a,c as l,a0 as t,o as s}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1735357881000}'),n={name:"guide/use/get.md"};function i(o,e,r,p,h,d){return s(),l("div",null,e[0]||(e[0]=[t(`

                  Get

                  支持列表 中选择所需项目, 按照相应的文档操作

                  支持列表

                  下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

                  TIP

                  有 🎞️ 标记的在项目文档中均包含视频教程

                  产物结构

                  最终可以在输出目录(一般是 dist)获得 数据文件资源文件

                  // 示例
                   
                   - dist
                       - MobileQQ-lqzh-20230101.json  <--- 数据文件
                  diff --git a/assets/guide_use_get.md.C0qEC4Ke.lean.js b/assets/guide_use_get.md.IrCSHjqs.lean.js
                  similarity index 98%
                  rename from assets/guide_use_get.md.C0qEC4Ke.lean.js
                  rename to assets/guide_use_get.md.IrCSHjqs.lean.js
                  index bab4e5a..8ad7f28 100644
                  --- a/assets/guide_use_get.md.C0qEC4Ke.lean.js
                  +++ b/assets/guide_use_get.md.IrCSHjqs.lean.js
                  @@ -1,4 +1,4 @@
                  -import{_ as a,c as l,a0 as t,o as s}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1734849817000}'),n={name:"guide/use/get.md"};function i(o,e,r,p,h,d){return s(),l("div",null,e[0]||(e[0]=[t(`

                  Get

                  支持列表 中选择所需项目, 按照相应的文档操作

                  支持列表

                  下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

                  TIP

                  有 🎞️ 标记的在项目文档中均包含视频教程

                  产物结构

                  最终可以在输出目录(一般是 dist)获得 数据文件资源文件

                  // 示例
                  +import{_ as a,c as l,a0 as t,o as s}from"./chunks/framework.BQKxUb7q.js";const m=JSON.parse('{"title":"Get","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/get.md","filePath":"guide/use/get.md","lastUpdated":1735357881000}'),n={name:"guide/use/get.md"};function i(o,e,r,p,h,d){return s(),l("div",null,e[0]||(e[0]=[t(`

                  Get

                  支持列表 中选择所需项目, 按照相应的文档操作

                  支持列表

                  下面列出现有已知的 Get 项目, 更多项目可在 Github 搜索 Shmily-Get-

                  TIP

                  有 🎞️ 标记的在项目文档中均包含视频教程

                  产物结构

                  最终可以在输出目录(一般是 dist)获得 数据文件资源文件

                  // 示例
                   
                   - dist
                       - MobileQQ-lqzh-20230101.json  <--- 数据文件
                  diff --git a/assets/guide_use_merger.md.pnfRSWwf.js b/assets/guide_use_merger.md.DLoNbGRy.js
                  similarity index 95%
                  rename from assets/guide_use_merger.md.pnfRSWwf.js
                  rename to assets/guide_use_merger.md.DLoNbGRy.js
                  index 15fad19..8faa322 100644
                  --- a/assets/guide_use_merger.md.pnfRSWwf.js
                  +++ b/assets/guide_use_merger.md.DLoNbGRy.js
                  @@ -1 +1 @@
                  -import{_ as r,c as a,a0 as o,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1734849817000}'),l={name:"guide/use/merger.md"};function d(c,e,s,i,n,p){return t(),a("div",null,e[0]||(e[0]=[o('

                  Merger

                  用来对 不同来源(Get), 相同内容数据文件 合并去重

                  如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

                  可以通过此工具去重 2013-2015 年的部分.

                  DANGER

                  !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

                  支持列表

                  • SMS CallLog 短信与通话记录
                  ',7)]))}const m=r(l,[["render",d]]);export{g as __pageData,m as default}; +import{_ as r,c as a,a0 as o,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1735357881000}'),l={name:"guide/use/merger.md"};function d(c,e,s,i,n,p){return t(),a("div",null,e[0]||(e[0]=[o('

                  Merger

                  用来对 不同来源(Get), 相同内容数据文件 合并去重

                  如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

                  可以通过此工具去重 2013-2015 年的部分.

                  DANGER

                  !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

                  支持列表

                  • SMS CallLog 短信与通话记录
                  ',7)]))}const m=r(l,[["render",d]]);export{g as __pageData,m as default}; diff --git a/assets/guide_use_merger.md.pnfRSWwf.lean.js b/assets/guide_use_merger.md.DLoNbGRy.lean.js similarity index 95% rename from assets/guide_use_merger.md.pnfRSWwf.lean.js rename to assets/guide_use_merger.md.DLoNbGRy.lean.js index 15fad19..8faa322 100644 --- a/assets/guide_use_merger.md.pnfRSWwf.lean.js +++ b/assets/guide_use_merger.md.DLoNbGRy.lean.js @@ -1 +1 @@ -import{_ as r,c as a,a0 as o,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1734849817000}'),l={name:"guide/use/merger.md"};function d(c,e,s,i,n,p){return t(),a("div",null,e[0]||(e[0]=[o('

                  Merger

                  用来对 不同来源(Get), 相同内容数据文件 合并去重

                  如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

                  可以通过此工具去重 2013-2015 年的部分.

                  DANGER

                  !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

                  支持列表

                  • SMS CallLog 短信与通话记录
                  ',7)]))}const m=r(l,[["render",d]]);export{g as __pageData,m as default}; +import{_ as r,c as a,a0 as o,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"Merger","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/merger.md","filePath":"guide/use/merger.md","lastUpdated":1735357881000}'),l={name:"guide/use/merger.md"};function d(c,e,s,i,n,p){return t(),a("div",null,e[0]||(e[0]=[o('

                  Merger

                  用来对 不同来源(Get), 相同内容数据文件 合并去重

                  如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

                  可以通过此工具去重 2013-2015 年的部分.

                  DANGER

                  !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

                  支持列表

                  • SMS CallLog 短信与通话记录
                  ',7)]))}const m=r(l,[["render",d]]);export{g as __pageData,m as default}; diff --git a/assets/guide_use_msg_custom.md.L8eHfJ5G.js b/assets/guide_use_msg_custom.md.BZsQRYju.js similarity index 99% rename from assets/guide_use_msg_custom.md.L8eHfJ5G.js rename to assets/guide_use_msg_custom.md.BZsQRYju.js index eed83cf..d7979af 100644 --- a/assets/guide_use_msg_custom.md.L8eHfJ5G.js +++ b/assets/guide_use_msg_custom.md.BZsQRYju.js @@ -1,4 +1,4 @@ -import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const E=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1734849817000}'),l={name:"guide/use/msg/custom.md"};function h(e,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

                  自定义

                  • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

                  • A: 按以下步骤即可

                    简单模式

                    适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

                    此方式不利于数据统计

                    js
                        {
                    +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const E=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1735357881000}'),l={name:"guide/use/msg/custom.md"};function h(e,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

                    自定义

                    • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

                    • A: 按以下步骤即可

                      简单模式

                      适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

                      此方式不利于数据统计

                      js
                          {
                               // 通用字段都是必填 参考 [标准]
                               "source": "SMS",
                               "content": "你好,钉钉", // 用于搜索
                      diff --git a/assets/guide_use_msg_custom.md.L8eHfJ5G.lean.js b/assets/guide_use_msg_custom.md.BZsQRYju.lean.js
                      similarity index 99%
                      rename from assets/guide_use_msg_custom.md.L8eHfJ5G.lean.js
                      rename to assets/guide_use_msg_custom.md.BZsQRYju.lean.js
                      index eed83cf..d7979af 100644
                      --- a/assets/guide_use_msg_custom.md.L8eHfJ5G.lean.js
                      +++ b/assets/guide_use_msg_custom.md.BZsQRYju.lean.js
                      @@ -1,4 +1,4 @@
                      -import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const E=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1734849817000}'),l={name:"guide/use/msg/custom.md"};function h(e,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

                      自定义

                      • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

                      • A: 按以下步骤即可

                        简单模式

                        适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

                        此方式不利于数据统计

                        js
                            {
                        +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const E=JSON.parse('{"title":"自定义","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/custom.md","filePath":"guide/use/msg/custom.md","lastUpdated":1735357881000}'),l={name:"guide/use/msg/custom.md"};function h(e,s,p,k,r,o){return t(),a("div",null,s[0]||(s[0]=[n(`

                        自定义

                        • Q: 如果我想新增 Msg 类型,如 钉钉 怎么办?

                        • A: 按以下步骤即可

                          简单模式

                          适用于和 短信 一样的简单数据,html 就够了,不需要用到复杂组件,只需要提供 html 即可

                          此方式不利于数据统计

                          js
                              {
                                   // 通用字段都是必填 参考 [标准]
                                   "source": "SMS",
                                   "content": "你好,钉钉", // 用于搜索
                          diff --git a/assets/guide_use_msg_other_emotion.md.BoqeCw6a.js b/assets/guide_use_msg_other_emotion.md.BLupdkQY.js
                          similarity index 99%
                          rename from assets/guide_use_msg_other_emotion.md.BoqeCw6a.js
                          rename to assets/guide_use_msg_other_emotion.md.BLupdkQY.js
                          index 9239f91..844a6f1 100644
                          --- a/assets/guide_use_msg_other_emotion.md.BoqeCw6a.js
                          +++ b/assets/guide_use_msg_other_emotion.md.BLupdkQY.js
                          @@ -1,4 +1,4 @@
                          -import{_ as a,c as i,a0 as t,o as e}from"./chunks/framework.BQKxUb7q.js";const c=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1734849817000}'),n={name:"guide/use/msg/other/emotion.md"};function h(l,s,o,p,d,r){return e(),i("div",null,s[0]||(s[0]=[t(`

                          表情

                          如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

                          约定

                          keyvalue举例备注
                          packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
                          desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
                          mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

                          文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

                          ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

                          简单模式 (从 HTML 字段统计)

                          js
                          {
                          +import{_ as a,c as i,a0 as t,o as e}from"./chunks/framework.BQKxUb7q.js";const c=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1735357881000}'),n={name:"guide/use/msg/other/emotion.md"};function h(l,s,o,p,d,r){return e(),i("div",null,s[0]||(s[0]=[t(`

                          表情

                          如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

                          约定

                          keyvalue举例备注
                          packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
                          desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
                          mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

                          文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

                          ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

                          简单模式 (从 HTML 字段统计)

                          js
                          {
                               ...
                               html: "我是简单的一个表情,<img title='[阿狸过新年-饺子]' alt='[阿狸过新年-饺子]' src='./data/qq-android/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif' />"
                               content: "我是简单的一个表情,[阿狸过新年-饺子]"
                          diff --git a/assets/guide_use_msg_other_emotion.md.BoqeCw6a.lean.js b/assets/guide_use_msg_other_emotion.md.BLupdkQY.lean.js
                          similarity index 99%
                          rename from assets/guide_use_msg_other_emotion.md.BoqeCw6a.lean.js
                          rename to assets/guide_use_msg_other_emotion.md.BLupdkQY.lean.js
                          index 9239f91..844a6f1 100644
                          --- a/assets/guide_use_msg_other_emotion.md.BoqeCw6a.lean.js
                          +++ b/assets/guide_use_msg_other_emotion.md.BLupdkQY.lean.js
                          @@ -1,4 +1,4 @@
                          -import{_ as a,c as i,a0 as t,o as e}from"./chunks/framework.BQKxUb7q.js";const c=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1734849817000}'),n={name:"guide/use/msg/other/emotion.md"};function h(l,s,o,p,d,r){return e(),i("div",null,s[0]||(s[0]=[t(`

                          表情

                          如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

                          约定

                          keyvalue举例备注
                          packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
                          desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
                          mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

                          文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

                          ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

                          简单模式 (从 HTML 字段统计)

                          js
                          {
                          +import{_ as a,c as i,a0 as t,o as e}from"./chunks/framework.BQKxUb7q.js";const c=JSON.parse('{"title":"表情","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/other/emotion.md","filePath":"guide/use/msg/other/emotion.md","lastUpdated":1735357881000}'),n={name:"guide/use/msg/other/emotion.md"};function h(l,s,o,p,d,r){return e(),i("div",null,s[0]||(s[0]=[t(`

                          表情

                          如果您要对表情进行统计,根据数据模式不同,需要遵循以下规则

                          约定

                          keyvalue举例备注
                          packName表情包 名称阿狸过新年如果不知道或不想写,需要硬编码为 "其他"
                          desc表情 名称饺子如果不知道或不想写,需要硬编码为 "未知"
                          mark表情包 描述温暖可爱的阿狸新年新装扮,让我们一起把春节、情人节和元宵节都变得萌萌哒可选, MobileQQ 官方提供这个值

                          文件名使用 MD5 小写,这样可以减少重复文件占用的空间,而且如果消息类型是图片,也可以通过 md5 修正类型为表情

                          ./data/qq-android-lqzh-20230101/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif

                          简单模式 (从 HTML 字段统计)

                          js
                          {
                               ...
                               html: "我是简单的一个表情,<img title='[阿狸过新年-饺子]' alt='[阿狸过新年-饺子]' src='./data/qq-android/emoticon/阿狸过新年/4793ef7525e16fd692ec1620ac19c4fd.gif' />"
                               content: "我是简单的一个表情,[阿狸过新年-饺子]"
                          diff --git a/assets/guide_use_msg_schema.md.BQ7fwv19.js b/assets/guide_use_msg_schema.md.C01JN3wh.js
                          similarity index 99%
                          rename from assets/guide_use_msg_schema.md.BQ7fwv19.js
                          rename to assets/guide_use_msg_schema.md.C01JN3wh.js
                          index 11f271c..ee15d97 100644
                          --- a/assets/guide_use_msg_schema.md.BQ7fwv19.js
                          +++ b/assets/guide_use_msg_schema.md.C01JN3wh.js
                          @@ -1,4 +1,4 @@
                          -import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1734849817000}'),l={name:"guide/use/msg/schema.md"};function h(k,s,p,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`

                          数据文件-Msg

                          为了 GetShow 的良好沟通, 所以需要标准化数据格式

                          建议开发 Get 时按以下数据标准导出.

                          • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

                          v2.0

                          json
                          [{
                          +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1735357881000}'),l={name:"guide/use/msg/schema.md"};function h(k,s,p,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`

                          数据文件-Msg

                          为了 GetShow 的良好沟通, 所以需要标准化数据格式

                          建议开发 Get 时按以下数据标准导出.

                          • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

                          v2.0

                          json
                          [{
                           
                               ⬇⬇⬇⬇⬇⬇  通用字段 ⬇⬇⬇⬇⬇⬇⬇
                           
                          diff --git a/assets/guide_use_msg_schema.md.BQ7fwv19.lean.js b/assets/guide_use_msg_schema.md.C01JN3wh.lean.js
                          similarity index 99%
                          rename from assets/guide_use_msg_schema.md.BQ7fwv19.lean.js
                          rename to assets/guide_use_msg_schema.md.C01JN3wh.lean.js
                          index 11f271c..ee15d97 100644
                          --- a/assets/guide_use_msg_schema.md.BQ7fwv19.lean.js
                          +++ b/assets/guide_use_msg_schema.md.C01JN3wh.lean.js
                          @@ -1,4 +1,4 @@
                          -import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1734849817000}'),l={name:"guide/use/msg/schema.md"};function h(k,s,p,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`

                          数据文件-Msg

                          为了 GetShow 的良好沟通, 所以需要标准化数据格式

                          建议开发 Get 时按以下数据标准导出.

                          • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

                          v2.0

                          json
                          [{
                          +import{_ as i,c as a,a0 as n,o as t}from"./chunks/framework.BQKxUb7q.js";const g=JSON.parse('{"title":"数据文件-Msg","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/schema.md","filePath":"guide/use/msg/schema.md","lastUpdated":1735357881000}'),l={name:"guide/use/msg/schema.md"};function h(k,s,p,e,E,r){return t(),a("div",null,s[0]||(s[0]=[n(`

                          数据文件-Msg

                          为了 GetShow 的良好沟通, 所以需要标准化数据格式

                          建议开发 Get 时按以下数据标准导出.

                          • 可导尽导,为以后的历史留下余量。冗余数据在 Show 中再选择性删除

                          v2.0

                          json
                          [{
                           
                               ⬇⬇⬇⬇⬇⬇  通用字段 ⬇⬇⬇⬇⬇⬇⬇
                           
                          diff --git a/assets/guide_use_msg_template_index.md.CMANboji.js b/assets/guide_use_msg_template_index.md.BMsQfUDx.js
                          similarity index 99%
                          rename from assets/guide_use_msg_template_index.md.CMANboji.js
                          rename to assets/guide_use_msg_template_index.md.BMsQfUDx.js
                          index a35f9c3..012e67c 100644
                          --- a/assets/guide_use_msg_template_index.md.CMANboji.js
                          +++ b/assets/guide_use_msg_template_index.md.BMsQfUDx.js
                          @@ -26,4 +26,4 @@ function print() { __p += __j.call(arguments, '') }
                           `)+v+`return __p
                           }`;var R=bs(function(){return M(o,b+"return "+v).apply(s,l)});if(R.source=v,Si(R))throw R;return R}function Ud(n){return W(n).toLowerCase()}function $d(n){return W(n).toUpperCase()}function Nd(n,e,t){if(n=W(n),n&&(t||e===s))return Iu(n);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Dn(e),o=Ru(r,i),l=Pu(r,i)+1;return de(r,o,l).join("")}function qd(n,e,t){if(n=W(n),n&&(t||e===s))return n.slice(0,Du(n)+1);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Pu(r,Dn(e))+1;return de(r,0,i).join("")}function Gd(n,e,t){if(n=W(n),n&&(t||e===s))return n.replace(Sr,"");if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Ru(r,Dn(e));return de(r,i).join("")}function Hd(n,e){var t=Fs,r=Ms;if(Y(e)){var i="separator"in e?e.separator:i;t="length"in e?I(e.length):t,r="omission"in e?vn(e.omission):r}n=W(n);var o=n.length;if(Be(n)){var l=Dn(n);o=l.length}if(t>=o)return n;var f=t-De(r);if(f<1)return r;var h=l?de(l,0,f).join(""):n.slice(0,f);if(i===s)return h+r;if(l&&(f+=h.length-f),Ci(i)){if(n.slice(f).search(i)){var g,_=h;for(i.global||(i=Gr(i.source,W(ki.exec(i))+"g")),i.lastIndex=0;g=i.exec(_);)var v=g.index;h=h.slice(0,v===s?f:v)}}else if(n.indexOf(vn(i),f)!=f){var m=h.lastIndexOf(i);m>-1&&(h=h.slice(0,m))}return h+r}function Kd(n){return n=W(n),n&&nl.test(n)?n.replace(Xi,mf):n}var Vd=qe(function(n,e,t){return n+(t?" ":"")+e.toUpperCase()}),Ei=Ao("toUpperCase");function xs(n,e,t){return n=W(n),e=t?s:e,e===s?df(n)?bf(n):uf(n):n.match(e)||[]}var bs=P(function(n,e){try{return gn(n,s,e)}catch(t){return Si(t)?t:new T(t)}}),zd=ne(function(n,e){return On(e,function(t){t=Vn(t),kn(n,t,Ai(n[t],n))}),n});function Yd(n){var e=n==null?0:n.length,t=A();return n=e?z(n,function(r){if(typeof r[1]!="function")throw new Sn(K);return[t(r[0]),r[1]]}):[],P(function(r){for(var i=-1;++ioe)return[];var t=Gn,r=rn(n,Gn);e=A(e),n-=Gn;for(var i=$r(r,e);++t0||e<0)?new D(t):(n<0?t=t.takeRight(-n):n&&(t=t.drop(n)),e!==s&&(e=I(e),t=e<0?t.dropRight(-e):t.take(e-n)),t)},D.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},D.prototype.toArray=function(){return this.take(Gn)},Hn(D.prototype,function(n,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=u[r?"take"+(e=="last"?"Right":""):e],o=r||/^find/.test(e);i&&(u.prototype[e]=function(){var l=this.__wrapped__,f=r?[1]:arguments,h=l instanceof D,g=f[0],_=h||E(l),v=function(B){var F=i.apply(u,le([B],f));return r&&m?F[0]:F};_&&t&&typeof g=="function"&&g.length!=1&&(h=_=!1);var m=this.__chain__,b=!!this.__actions__.length,S=o&&!m,R=h&&!b;if(!o&&_){l=R?l:new D(this);var C=n.apply(l,f);return C.__actions__.push({func:ir,args:[v],thisArg:s}),new Cn(C,m)}return S&&R?n.apply(this,f):(C=this.thru(v),S?r?C.value()[0]:C.value():C)})}),On(["pop","push","shift","sort","splice","unshift"],function(n){var e=It[n],t=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);u.prototype[n]=function(){var i=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(E(o)?o:[],i)}return this[t](function(l){return e.apply(E(l)?l:[],i)})}}),Hn(D.prototype,function(n,e){var t=u[e];if(t){var r=t.name+"";$.call(Ue,r)||(Ue[r]=[]),Ue[r].push({name:e,func:t})}}),Ue[Qt(s,_e).name]=[{name:"wrapper",func:s}],D.prototype.clone=Kf,D.prototype.reverse=Vf,D.prototype.value=zf,u.prototype.at=xh,u.prototype.chain=bh,u.prototype.commit=Ah,u.prototype.next=Oh,u.prototype.plant=Ch,u.prototype.reverse=Lh,u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=Th,u.prototype.first=u.prototype.head,rt&&(u.prototype[rt]=Sh),u},Fe=Af();we?((we.exports=Fe)._=Fe,Rr._=Fe):nn._=Fe}).call(vt)})(pr,pr.exports);var Ng=pr.exports;const qg=Rg(Ng);var Gg=Object.defineProperty,Hg=Object.defineProperties,Kg=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,Vg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable,Ps=(a,w,s)=>w in a?Gg(a,w,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[w]=s,Ve=(a,w)=>{for(var s in w||(w={}))Vg.call(w,s)&&Ps(a,s,w[s]);if(Rs)for(var s of Rs(w))zg.call(w,s)&&Ps(a,s,w[s]);return a},Bs=(a,w)=>Hg(a,Kg(w));const Yg={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer(){this.autoscroll&&this.maybeAdjustScroll()},open(a){this.autoscroll&&a&&this.$nextTick(()=>this.maybeAdjustScroll())}},methods:{maybeAdjustScroll(){var a;const w=((a=this.$refs.dropdownMenu)==null?void 0:a.children[this.typeAheadPointer])||!1;if(w){const s=this.getDropdownViewport(),{top:O,bottom:G,height:L}=w.getBoundingClientRect();if(Os.bottom)return this.$refs.dropdownMenu.scrollTop=w.offsetTop-(s.height-L)}},getDropdownViewport(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},Zg={data(){return{typeAheadPointer:-1}},watch:{filteredOptions(){for(let a=0;a=0;a--)if(this.selectable(this.filteredOptions[a])){this.typeAheadPointer=a;break}},typeAheadDown(){for(let a=this.typeAheadPointer+1;a{const s=a.__vccOpts||a;for(const[O,G]of w)s[O]=G;return s},Jg={},Qg={xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"},kg=N("path",{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"},null,-1),jg=[kg];function n0(a,w){return fn(),Rn("svg",Qg,jg)}const e0=Ki(Jg,[["render",n0]]),t0={},r0={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"},i0=N("path",{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"},null,-1),u0=[i0];function o0(a,w){return fn(),Rn("svg",r0,u0)}const s0=Ki(t0,[["render",o0]]),Ds={Deselect:e0,OpenIndicator:s0},l0={mounted(a,{instance:w}){if(w.appendToBody){const{height:s,top:O,left:G,width:L}=w.$refs.toggle.getBoundingClientRect();let K=window.scrollX||window.pageXOffset,x=window.scrollY||window.pageYOffset;a.unbindPosition=w.calculatePosition(a,w,{width:L+"px",left:K+G+"px",top:x+O+s+"px"}),document.body.appendChild(a)}},unmounted(a,{instance:w}){w.appendToBody&&(a.unbindPosition&&typeof a.unbindPosition=="function"&&a.unbindPosition(),a.parentNode&&a.parentNode.removeChild(a))}};function f0(a){const w={};return Object.keys(a).sort().forEach(s=>{w[s]=a[s]}),JSON.stringify(w)}let a0=0;function c0(){return++a0}const h0={components:Ve({},Ds),directives:{appendToBody:l0},mixins:[Yg,Zg,Xg],compatConfig:{MODE:3},emits:["open","close","update:modelValue","search","search:compositionstart","search:compositionend","search:keydown","search:blur","search:focus","search:input","option:created","option:selecting","option:selected","option:deselecting","option:deselected"],props:{modelValue:{},components:{type:Object,default:()=>({})},options:{type:Array,default(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},transition:{type:String,default:"vs__fade"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:"label"},autocomplete:{type:String,default:"off"},reduce:{type:Function,default:a=>a},selectable:{type:Function,default:a=>!0},getOptionLabel:{type:Function,default(a){return typeof a=="object"?a.hasOwnProperty(this.label)?a[this.label]:console.warn(`[vue-select warn]: Label key "option.${this.label}" does not exist in options object ${JSON.stringify(a)}.
                           https://vue-select.org/api/props.html#getoptionlabel`):a}},getOptionKey:{type:Function,default(a){if(typeof a!="object")return a;try{return a.hasOwnProperty("id")?a.id:f0(a)}catch(w){return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option.
                          -https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let O=this.getOptionLabel(s);return typeof O=="number"&&(O=O.toString()),this.filterBy(s,O,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:O,left:G}){a.style.top=O,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c0()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(O=>O.contains(a.target)||O===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=O=>JSON.stringify(this.reduce(O))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(O=>this.optionComparator(O,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const O=this.mapKeydown(s,this);if(typeof O[a.keyCode]=="function")return O[a.keyCode](a)}}},p0=["dir"],d0=["id","aria-expanded","aria-owns"],g0={ref:"selectedOptions",class:"vs__selected-options"},_0=["disabled","title","aria-label","onClick"],v0={ref:"actions",class:"vs__actions"},w0=["disabled"],m0={class:"vs__spinner"},y0=["id"],x0=["id","aria-selected","onMouseover","onClick"],b0={key:0,class:"vs__no-options"},A0=ze(" Sorry, no matching options. "),O0=["id"];function S0(a,w,s,O,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[Un(a.$slots,"header",$n(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=x=>L.toggleDropdown(x))},[N("div",g0,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(x,U)=>Un(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(x),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(x),class:"vs__selected"},[Un(a.$slots,"selected-option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[U]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(x)}`,"aria-label":`Deselect ${s.getOptionLabel(x)}`,onClick:xn=>L.deselect(x)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,_0)):Ui("",!0)]))])),256)),Un(a.$slots,"search",$n(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v0,[$i(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...x)=>L.clearSelection&&L.clearSelection(...x))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w0),[[Ts,L.showClearButton]]),Un(a.$slots,"open-indicator",$n(zn(L.scope.openIndicator)),()=>[s.noDrop?Ui("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),$n(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),Un(a.$slots,"spinner",$n(zn(L.scope.spinner)),()=>[$i(N("div",m0,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d0),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?$i((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...x)=>L.onMousedown&&L.onMousedown(...x),["prevent"])),onMouseup:w[3]||(w[3]=(...x)=>L.onMouseUp&&L.onMouseUp(...x))},[Un(a.$slots,"list-header",$n(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(x,U)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${U}`,key:s.getOptionKey(x),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(x)&&U===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(x),"vs__dropdown-option--highlight":U===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(x)}]),"aria-selected":U===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(x)?a.typeAheadPointer=U:null,onClick:Es(xn=>s.selectable(x)?L.select(x):null,["prevent","stop"])},[Un(a.$slots,"option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)])],42,x0))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b0,[Un(a.$slots,"no-options",$n(zn(L.scope.noOptions)),()=>[A0])])):Ui("",!0),Un(a.$slots,"list-footer",$n(zn(L.scope.listFooter)))],40,y0)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O0))]),_:3},8,["name"]),Un(a.$slots,"footer",$n(zn(L.scope.footer)))],10,p0)}const qi=Ki(h0,[["render",S0]]),C0={id:"msg-template"},L0={class:"row"},T0={class:"col"},E0={class:"col"},I0={class:"language-js vp-adaptive-theme"},R0={class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},P0={class:"line"},B0={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},W0=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1734849817000}'),D0={name:"guide/use/msg/template/index.md"},U0=Object.assign(D0,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(x=>x.json());const K=w.reduce((x,U,xn,Ye)=>{let an=x.find(tn=>tn.source===U.source);an||(an={source:U.source,type:[]},x.push(an));let ue=an.type.find(tn=>tn.type===U.type);ue||(ue={type:U.type,os:[]},an.type.push(ue));const Yn=Object.keys(U).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get(U,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return x},[]);s.push(...K)});let w=[];const s=Is([]),O=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!O.source||!O.type)return[];const K=O.source.source,x=O.type.type,U=w.filter(xn=>xn.source===K&&xn.type===x);return O.type.os.length===0?U:U.filter(xn=>xn[`$${K}`].os===O.os)});function L(K){K==="source"?(O.type="",O.os=""):K==="type"&&(O.type.os.length===1?O.os=O.type.os[0]:O.os="")}return(K,x)=>(fn(),Rn("div",null,[x[10]||(x[10]=Ug('

                          数据文件-Msg 示例

                          示例有以下几种查看方式

                          源码 (推荐)

                          最及时最可靠

                          Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

                          Demo

                          更新不及时

                          ',7)),N("div",C0,[N("div",L0,[N("div",T0,[x[5]||(x[5]=N("label",null,"source",-1)),hr(Ni(qi),{options:s,label:"source",modelValue:O.source,"onUpdate:modelValue":x[0]||(x[0]=U=>O.source=U),"onOption:selected":x[1]||(x[1]=U=>L("source"))},null,8,["options","modelValue"])]),N("div",E0,[x[6]||(x[6]=N("label",null,"type",-1)),hr(Ni(qi),{options:O.source?O.source.type:[],label:"type",modelValue:O.type,"onUpdate:modelValue":x[2]||(x[2]=U=>O.type=U),"onOption:selected":x[3]||(x[3]=U=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!O.type||O.type.os.length===0}])},[x[7]||(x[7]=N("label",null,"$source.os",-1)),hr(Ni(qi),{options:O.type?O.type.os:[],modelValue:O.os,"onUpdate:modelValue":x[4]||(x[4]=U=>O.os=U)},null,8,["options","modelValue"])],2)])]),N("div",I0,[x[8]||(x[8]=N("button",{title:"Copy Code",class:"copy"},null,-1)),x[9]||(x[9]=N("span",{class:"lang"},"js",-1)),N("pre",R0,[N("code",null,[N("span",P0,[N("span",B0,Gi(G.value.slice(0,1)),1)])])])]),x[11]||(x[11]=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1)),x[12]||(x[12]=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1))]))}});export{W0 as __pageData,U0 as default}; +https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let O=this.getOptionLabel(s);return typeof O=="number"&&(O=O.toString()),this.filterBy(s,O,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:O,left:G}){a.style.top=O,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c0()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(O=>O.contains(a.target)||O===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=O=>JSON.stringify(this.reduce(O))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(O=>this.optionComparator(O,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const O=this.mapKeydown(s,this);if(typeof O[a.keyCode]=="function")return O[a.keyCode](a)}}},p0=["dir"],d0=["id","aria-expanded","aria-owns"],g0={ref:"selectedOptions",class:"vs__selected-options"},_0=["disabled","title","aria-label","onClick"],v0={ref:"actions",class:"vs__actions"},w0=["disabled"],m0={class:"vs__spinner"},y0=["id"],x0=["id","aria-selected","onMouseover","onClick"],b0={key:0,class:"vs__no-options"},A0=ze(" Sorry, no matching options. "),O0=["id"];function S0(a,w,s,O,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[Un(a.$slots,"header",$n(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=x=>L.toggleDropdown(x))},[N("div",g0,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(x,U)=>Un(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(x),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(x),class:"vs__selected"},[Un(a.$slots,"selected-option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[U]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(x)}`,"aria-label":`Deselect ${s.getOptionLabel(x)}`,onClick:xn=>L.deselect(x)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,_0)):Ui("",!0)]))])),256)),Un(a.$slots,"search",$n(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v0,[$i(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...x)=>L.clearSelection&&L.clearSelection(...x))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w0),[[Ts,L.showClearButton]]),Un(a.$slots,"open-indicator",$n(zn(L.scope.openIndicator)),()=>[s.noDrop?Ui("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),$n(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),Un(a.$slots,"spinner",$n(zn(L.scope.spinner)),()=>[$i(N("div",m0,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d0),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?$i((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...x)=>L.onMousedown&&L.onMousedown(...x),["prevent"])),onMouseup:w[3]||(w[3]=(...x)=>L.onMouseUp&&L.onMouseUp(...x))},[Un(a.$slots,"list-header",$n(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(x,U)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${U}`,key:s.getOptionKey(x),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(x)&&U===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(x),"vs__dropdown-option--highlight":U===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(x)}]),"aria-selected":U===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(x)?a.typeAheadPointer=U:null,onClick:Es(xn=>s.selectable(x)?L.select(x):null,["prevent","stop"])},[Un(a.$slots,"option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)])],42,x0))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b0,[Un(a.$slots,"no-options",$n(zn(L.scope.noOptions)),()=>[A0])])):Ui("",!0),Un(a.$slots,"list-footer",$n(zn(L.scope.listFooter)))],40,y0)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O0))]),_:3},8,["name"]),Un(a.$slots,"footer",$n(zn(L.scope.footer)))],10,p0)}const qi=Ki(h0,[["render",S0]]),C0={id:"msg-template"},L0={class:"row"},T0={class:"col"},E0={class:"col"},I0={class:"language-js vp-adaptive-theme"},R0={class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},P0={class:"line"},B0={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},W0=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1735357881000}'),D0={name:"guide/use/msg/template/index.md"},U0=Object.assign(D0,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(x=>x.json());const K=w.reduce((x,U,xn,Ye)=>{let an=x.find(tn=>tn.source===U.source);an||(an={source:U.source,type:[]},x.push(an));let ue=an.type.find(tn=>tn.type===U.type);ue||(ue={type:U.type,os:[]},an.type.push(ue));const Yn=Object.keys(U).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get(U,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return x},[]);s.push(...K)});let w=[];const s=Is([]),O=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!O.source||!O.type)return[];const K=O.source.source,x=O.type.type,U=w.filter(xn=>xn.source===K&&xn.type===x);return O.type.os.length===0?U:U.filter(xn=>xn[`$${K}`].os===O.os)});function L(K){K==="source"?(O.type="",O.os=""):K==="type"&&(O.type.os.length===1?O.os=O.type.os[0]:O.os="")}return(K,x)=>(fn(),Rn("div",null,[x[10]||(x[10]=Ug('

                          数据文件-Msg 示例

                          示例有以下几种查看方式

                          源码 (推荐)

                          最及时最可靠

                          Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

                          Demo

                          更新不及时

                          ',7)),N("div",C0,[N("div",L0,[N("div",T0,[x[5]||(x[5]=N("label",null,"source",-1)),hr(Ni(qi),{options:s,label:"source",modelValue:O.source,"onUpdate:modelValue":x[0]||(x[0]=U=>O.source=U),"onOption:selected":x[1]||(x[1]=U=>L("source"))},null,8,["options","modelValue"])]),N("div",E0,[x[6]||(x[6]=N("label",null,"type",-1)),hr(Ni(qi),{options:O.source?O.source.type:[],label:"type",modelValue:O.type,"onUpdate:modelValue":x[2]||(x[2]=U=>O.type=U),"onOption:selected":x[3]||(x[3]=U=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!O.type||O.type.os.length===0}])},[x[7]||(x[7]=N("label",null,"$source.os",-1)),hr(Ni(qi),{options:O.type?O.type.os:[],modelValue:O.os,"onUpdate:modelValue":x[4]||(x[4]=U=>O.os=U)},null,8,["options","modelValue"])],2)])]),N("div",I0,[x[8]||(x[8]=N("button",{title:"Copy Code",class:"copy"},null,-1)),x[9]||(x[9]=N("span",{class:"lang"},"js",-1)),N("pre",R0,[N("code",null,[N("span",P0,[N("span",B0,Gi(G.value.slice(0,1)),1)])])])]),x[11]||(x[11]=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1)),x[12]||(x[12]=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1))]))}});export{W0 as __pageData,U0 as default}; diff --git a/assets/guide_use_msg_template_index.md.CMANboji.lean.js b/assets/guide_use_msg_template_index.md.BMsQfUDx.lean.js similarity index 99% rename from assets/guide_use_msg_template_index.md.CMANboji.lean.js rename to assets/guide_use_msg_template_index.md.BMsQfUDx.lean.js index a35f9c3..012e67c 100644 --- a/assets/guide_use_msg_template_index.md.CMANboji.lean.js +++ b/assets/guide_use_msg_template_index.md.BMsQfUDx.lean.js @@ -26,4 +26,4 @@ function print() { __p += __j.call(arguments, '') } `)+v+`return __p }`;var R=bs(function(){return M(o,b+"return "+v).apply(s,l)});if(R.source=v,Si(R))throw R;return R}function Ud(n){return W(n).toLowerCase()}function $d(n){return W(n).toUpperCase()}function Nd(n,e,t){if(n=W(n),n&&(t||e===s))return Iu(n);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Dn(e),o=Ru(r,i),l=Pu(r,i)+1;return de(r,o,l).join("")}function qd(n,e,t){if(n=W(n),n&&(t||e===s))return n.slice(0,Du(n)+1);if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Pu(r,Dn(e))+1;return de(r,0,i).join("")}function Gd(n,e,t){if(n=W(n),n&&(t||e===s))return n.replace(Sr,"");if(!n||!(e=vn(e)))return n;var r=Dn(n),i=Ru(r,Dn(e));return de(r,i).join("")}function Hd(n,e){var t=Fs,r=Ms;if(Y(e)){var i="separator"in e?e.separator:i;t="length"in e?I(e.length):t,r="omission"in e?vn(e.omission):r}n=W(n);var o=n.length;if(Be(n)){var l=Dn(n);o=l.length}if(t>=o)return n;var f=t-De(r);if(f<1)return r;var h=l?de(l,0,f).join(""):n.slice(0,f);if(i===s)return h+r;if(l&&(f+=h.length-f),Ci(i)){if(n.slice(f).search(i)){var g,_=h;for(i.global||(i=Gr(i.source,W(ki.exec(i))+"g")),i.lastIndex=0;g=i.exec(_);)var v=g.index;h=h.slice(0,v===s?f:v)}}else if(n.indexOf(vn(i),f)!=f){var m=h.lastIndexOf(i);m>-1&&(h=h.slice(0,m))}return h+r}function Kd(n){return n=W(n),n&&nl.test(n)?n.replace(Xi,mf):n}var Vd=qe(function(n,e,t){return n+(t?" ":"")+e.toUpperCase()}),Ei=Ao("toUpperCase");function xs(n,e,t){return n=W(n),e=t?s:e,e===s?df(n)?bf(n):uf(n):n.match(e)||[]}var bs=P(function(n,e){try{return gn(n,s,e)}catch(t){return Si(t)?t:new T(t)}}),zd=ne(function(n,e){return On(e,function(t){t=Vn(t),kn(n,t,Ai(n[t],n))}),n});function Yd(n){var e=n==null?0:n.length,t=A();return n=e?z(n,function(r){if(typeof r[1]!="function")throw new Sn(K);return[t(r[0]),r[1]]}):[],P(function(r){for(var i=-1;++ioe)return[];var t=Gn,r=rn(n,Gn);e=A(e),n-=Gn;for(var i=$r(r,e);++t0||e<0)?new D(t):(n<0?t=t.takeRight(-n):n&&(t=t.drop(n)),e!==s&&(e=I(e),t=e<0?t.dropRight(-e):t.take(e-n)),t)},D.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},D.prototype.toArray=function(){return this.take(Gn)},Hn(D.prototype,function(n,e){var t=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=u[r?"take"+(e=="last"?"Right":""):e],o=r||/^find/.test(e);i&&(u.prototype[e]=function(){var l=this.__wrapped__,f=r?[1]:arguments,h=l instanceof D,g=f[0],_=h||E(l),v=function(B){var F=i.apply(u,le([B],f));return r&&m?F[0]:F};_&&t&&typeof g=="function"&&g.length!=1&&(h=_=!1);var m=this.__chain__,b=!!this.__actions__.length,S=o&&!m,R=h&&!b;if(!o&&_){l=R?l:new D(this);var C=n.apply(l,f);return C.__actions__.push({func:ir,args:[v],thisArg:s}),new Cn(C,m)}return S&&R?n.apply(this,f):(C=this.thru(v),S?r?C.value()[0]:C.value():C)})}),On(["pop","push","shift","sort","splice","unshift"],function(n){var e=It[n],t=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",r=/^(?:pop|shift)$/.test(n);u.prototype[n]=function(){var i=arguments;if(r&&!this.__chain__){var o=this.value();return e.apply(E(o)?o:[],i)}return this[t](function(l){return e.apply(E(l)?l:[],i)})}}),Hn(D.prototype,function(n,e){var t=u[e];if(t){var r=t.name+"";$.call(Ue,r)||(Ue[r]=[]),Ue[r].push({name:e,func:t})}}),Ue[Qt(s,_e).name]=[{name:"wrapper",func:s}],D.prototype.clone=Kf,D.prototype.reverse=Vf,D.prototype.value=zf,u.prototype.at=xh,u.prototype.chain=bh,u.prototype.commit=Ah,u.prototype.next=Oh,u.prototype.plant=Ch,u.prototype.reverse=Lh,u.prototype.toJSON=u.prototype.valueOf=u.prototype.value=Th,u.prototype.first=u.prototype.head,rt&&(u.prototype[rt]=Sh),u},Fe=Af();we?((we.exports=Fe)._=Fe,Rr._=Fe):nn._=Fe}).call(vt)})(pr,pr.exports);var Ng=pr.exports;const qg=Rg(Ng);var Gg=Object.defineProperty,Hg=Object.defineProperties,Kg=Object.getOwnPropertyDescriptors,Rs=Object.getOwnPropertySymbols,Vg=Object.prototype.hasOwnProperty,zg=Object.prototype.propertyIsEnumerable,Ps=(a,w,s)=>w in a?Gg(a,w,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[w]=s,Ve=(a,w)=>{for(var s in w||(w={}))Vg.call(w,s)&&Ps(a,s,w[s]);if(Rs)for(var s of Rs(w))zg.call(w,s)&&Ps(a,s,w[s]);return a},Bs=(a,w)=>Hg(a,Kg(w));const Yg={props:{autoscroll:{type:Boolean,default:!0}},watch:{typeAheadPointer(){this.autoscroll&&this.maybeAdjustScroll()},open(a){this.autoscroll&&a&&this.$nextTick(()=>this.maybeAdjustScroll())}},methods:{maybeAdjustScroll(){var a;const w=((a=this.$refs.dropdownMenu)==null?void 0:a.children[this.typeAheadPointer])||!1;if(w){const s=this.getDropdownViewport(),{top:O,bottom:G,height:L}=w.getBoundingClientRect();if(Os.bottom)return this.$refs.dropdownMenu.scrollTop=w.offsetTop-(s.height-L)}},getDropdownViewport(){return this.$refs.dropdownMenu?this.$refs.dropdownMenu.getBoundingClientRect():{height:0,top:0,bottom:0}}}},Zg={data(){return{typeAheadPointer:-1}},watch:{filteredOptions(){for(let a=0;a=0;a--)if(this.selectable(this.filteredOptions[a])){this.typeAheadPointer=a;break}},typeAheadDown(){for(let a=this.typeAheadPointer+1;a{const s=a.__vccOpts||a;for(const[O,G]of w)s[O]=G;return s},Jg={},Qg={xmlns:"http://www.w3.org/2000/svg",width:"10",height:"10"},kg=N("path",{d:"M6.895455 5l2.842897-2.842898c.348864-.348863.348864-.914488 0-1.263636L9.106534.261648c-.348864-.348864-.914489-.348864-1.263636 0L5 3.104545 2.157102.261648c-.348863-.348864-.914488-.348864-1.263636 0L.261648.893466c-.348864.348864-.348864.914489 0 1.263636L3.104545 5 .261648 7.842898c-.348864.348863-.348864.914488 0 1.263636l.631818.631818c.348864.348864.914773.348864 1.263636 0L5 6.895455l2.842898 2.842897c.348863.348864.914772.348864 1.263636 0l.631818-.631818c.348864-.348864.348864-.914489 0-1.263636L6.895455 5z"},null,-1),jg=[kg];function n0(a,w){return fn(),Rn("svg",Qg,jg)}const e0=Ki(Jg,[["render",n0]]),t0={},r0={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"10"},i0=N("path",{d:"M9.211364 7.59931l4.48338-4.867229c.407008-.441854.407008-1.158247 0-1.60046l-.73712-.80023c-.407008-.441854-1.066904-.441854-1.474243 0L7 5.198617 2.51662.33139c-.407008-.441853-1.066904-.441853-1.474243 0l-.737121.80023c-.407008.441854-.407008 1.158248 0 1.600461l4.48338 4.867228L7 10l2.211364-2.40069z"},null,-1),u0=[i0];function o0(a,w){return fn(),Rn("svg",r0,u0)}const s0=Ki(t0,[["render",o0]]),Ds={Deselect:e0,OpenIndicator:s0},l0={mounted(a,{instance:w}){if(w.appendToBody){const{height:s,top:O,left:G,width:L}=w.$refs.toggle.getBoundingClientRect();let K=window.scrollX||window.pageXOffset,x=window.scrollY||window.pageYOffset;a.unbindPosition=w.calculatePosition(a,w,{width:L+"px",left:K+G+"px",top:x+O+s+"px"}),document.body.appendChild(a)}},unmounted(a,{instance:w}){w.appendToBody&&(a.unbindPosition&&typeof a.unbindPosition=="function"&&a.unbindPosition(),a.parentNode&&a.parentNode.removeChild(a))}};function f0(a){const w={};return Object.keys(a).sort().forEach(s=>{w[s]=a[s]}),JSON.stringify(w)}let a0=0;function c0(){return++a0}const h0={components:Ve({},Ds),directives:{appendToBody:l0},mixins:[Yg,Zg,Xg],compatConfig:{MODE:3},emits:["open","close","update:modelValue","search","search:compositionstart","search:compositionend","search:keydown","search:blur","search:focus","search:input","option:created","option:selecting","option:selected","option:deselecting","option:deselected"],props:{modelValue:{},components:{type:Object,default:()=>({})},options:{type:Array,default(){return[]}},disabled:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},deselectFromDropdown:{type:Boolean,default:!1},searchable:{type:Boolean,default:!0},multiple:{type:Boolean,default:!1},placeholder:{type:String,default:""},transition:{type:String,default:"vs__fade"},clearSearchOnSelect:{type:Boolean,default:!0},closeOnSelect:{type:Boolean,default:!0},label:{type:String,default:"label"},autocomplete:{type:String,default:"off"},reduce:{type:Function,default:a=>a},selectable:{type:Function,default:a=>!0},getOptionLabel:{type:Function,default(a){return typeof a=="object"?a.hasOwnProperty(this.label)?a[this.label]:console.warn(`[vue-select warn]: Label key "option.${this.label}" does not exist in options object ${JSON.stringify(a)}. https://vue-select.org/api/props.html#getoptionlabel`):a}},getOptionKey:{type:Function,default(a){if(typeof a!="object")return a;try{return a.hasOwnProperty("id")?a.id:f0(a)}catch(w){return console.warn(`[vue-select warn]: Could not stringify this option to generate unique key. Please provide'getOptionKey' prop to return a unique key for each option. -https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let O=this.getOptionLabel(s);return typeof O=="number"&&(O=O.toString()),this.filterBy(s,O,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:O,left:G}){a.style.top=O,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c0()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(O=>O.contains(a.target)||O===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=O=>JSON.stringify(this.reduce(O))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(O=>this.optionComparator(O,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const O=this.mapKeydown(s,this);if(typeof O[a.keyCode]=="function")return O[a.keyCode](a)}}},p0=["dir"],d0=["id","aria-expanded","aria-owns"],g0={ref:"selectedOptions",class:"vs__selected-options"},_0=["disabled","title","aria-label","onClick"],v0={ref:"actions",class:"vs__actions"},w0=["disabled"],m0={class:"vs__spinner"},y0=["id"],x0=["id","aria-selected","onMouseover","onClick"],b0={key:0,class:"vs__no-options"},A0=ze(" Sorry, no matching options. "),O0=["id"];function S0(a,w,s,O,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[Un(a.$slots,"header",$n(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=x=>L.toggleDropdown(x))},[N("div",g0,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(x,U)=>Un(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(x),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(x),class:"vs__selected"},[Un(a.$slots,"selected-option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[U]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(x)}`,"aria-label":`Deselect ${s.getOptionLabel(x)}`,onClick:xn=>L.deselect(x)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,_0)):Ui("",!0)]))])),256)),Un(a.$slots,"search",$n(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v0,[$i(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...x)=>L.clearSelection&&L.clearSelection(...x))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w0),[[Ts,L.showClearButton]]),Un(a.$slots,"open-indicator",$n(zn(L.scope.openIndicator)),()=>[s.noDrop?Ui("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),$n(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),Un(a.$slots,"spinner",$n(zn(L.scope.spinner)),()=>[$i(N("div",m0,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d0),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?$i((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...x)=>L.onMousedown&&L.onMousedown(...x),["prevent"])),onMouseup:w[3]||(w[3]=(...x)=>L.onMouseUp&&L.onMouseUp(...x))},[Un(a.$slots,"list-header",$n(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(x,U)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${U}`,key:s.getOptionKey(x),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(x)&&U===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(x),"vs__dropdown-option--highlight":U===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(x)}]),"aria-selected":U===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(x)?a.typeAheadPointer=U:null,onClick:Es(xn=>s.selectable(x)?L.select(x):null,["prevent","stop"])},[Un(a.$slots,"option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)])],42,x0))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b0,[Un(a.$slots,"no-options",$n(zn(L.scope.noOptions)),()=>[A0])])):Ui("",!0),Un(a.$slots,"list-footer",$n(zn(L.scope.listFooter)))],40,y0)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O0))]),_:3},8,["name"]),Un(a.$slots,"footer",$n(zn(L.scope.footer)))],10,p0)}const qi=Ki(h0,[["render",S0]]),C0={id:"msg-template"},L0={class:"row"},T0={class:"col"},E0={class:"col"},I0={class:"language-js vp-adaptive-theme"},R0={class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},P0={class:"line"},B0={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},W0=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1734849817000}'),D0={name:"guide/use/msg/template/index.md"},U0=Object.assign(D0,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(x=>x.json());const K=w.reduce((x,U,xn,Ye)=>{let an=x.find(tn=>tn.source===U.source);an||(an={source:U.source,type:[]},x.push(an));let ue=an.type.find(tn=>tn.type===U.type);ue||(ue={type:U.type,os:[]},an.type.push(ue));const Yn=Object.keys(U).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get(U,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return x},[]);s.push(...K)});let w=[];const s=Is([]),O=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!O.source||!O.type)return[];const K=O.source.source,x=O.type.type,U=w.filter(xn=>xn.source===K&&xn.type===x);return O.type.os.length===0?U:U.filter(xn=>xn[`$${K}`].os===O.os)});function L(K){K==="source"?(O.type="",O.os=""):K==="type"&&(O.type.os.length===1?O.os=O.type.os[0]:O.os="")}return(K,x)=>(fn(),Rn("div",null,[x[10]||(x[10]=Ug('

                          数据文件-Msg 示例

                          示例有以下几种查看方式

                          源码 (推荐)

                          最及时最可靠

                          Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

                          Demo

                          更新不及时

                          ',7)),N("div",C0,[N("div",L0,[N("div",T0,[x[5]||(x[5]=N("label",null,"source",-1)),hr(Ni(qi),{options:s,label:"source",modelValue:O.source,"onUpdate:modelValue":x[0]||(x[0]=U=>O.source=U),"onOption:selected":x[1]||(x[1]=U=>L("source"))},null,8,["options","modelValue"])]),N("div",E0,[x[6]||(x[6]=N("label",null,"type",-1)),hr(Ni(qi),{options:O.source?O.source.type:[],label:"type",modelValue:O.type,"onUpdate:modelValue":x[2]||(x[2]=U=>O.type=U),"onOption:selected":x[3]||(x[3]=U=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!O.type||O.type.os.length===0}])},[x[7]||(x[7]=N("label",null,"$source.os",-1)),hr(Ni(qi),{options:O.type?O.type.os:[],modelValue:O.os,"onUpdate:modelValue":x[4]||(x[4]=U=>O.os=U)},null,8,["options","modelValue"])],2)])]),N("div",I0,[x[8]||(x[8]=N("button",{title:"Copy Code",class:"copy"},null,-1)),x[9]||(x[9]=N("span",{class:"lang"},"js",-1)),N("pre",R0,[N("code",null,[N("span",P0,[N("span",B0,Gi(G.value.slice(0,1)),1)])])])]),x[11]||(x[11]=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1)),x[12]||(x[12]=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1))]))}});export{W0 as __pageData,U0 as default}; +https://vue-select.org/api/props.html#getoptionkey`,a,w)}}},onTab:{type:Function,default:function(){this.selectOnTab&&!this.isComposing&&this.typeAheadSelect()}},taggable:{type:Boolean,default:!1},tabindex:{type:Number,default:null},pushTags:{type:Boolean,default:!1},filterable:{type:Boolean,default:!0},filterBy:{type:Function,default(a,w,s){return(w||"").toLocaleLowerCase().indexOf(s.toLocaleLowerCase())>-1}},filter:{type:Function,default(a,w){return a.filter(s=>{let O=this.getOptionLabel(s);return typeof O=="number"&&(O=O.toString()),this.filterBy(s,O,w)})}},createOption:{type:Function,default(a){return typeof this.optionList[0]=="object"?{[this.label]:a}:a}},resetOnOptionsChange:{default:!1,validator:a=>["function","boolean"].includes(typeof a)},clearSearchOnBlur:{type:Function,default:function({clearSearchOnSelect:a,multiple:w}){return a&&!w}},noDrop:{type:Boolean,default:!1},inputId:{type:String},dir:{type:String,default:"auto"},selectOnTab:{type:Boolean,default:!1},selectOnKeyCodes:{type:Array,default:()=>[13]},searchInputQuerySelector:{type:String,default:"[type=search]"},mapKeydown:{type:Function,default:(a,w)=>a},appendToBody:{type:Boolean,default:!1},calculatePosition:{type:Function,default(a,w,{width:s,top:O,left:G}){a.style.top=O,a.style.left=G,a.style.width=s}},dropdownShouldOpen:{type:Function,default({noDrop:a,open:w,mutableLoading:s}){return a?!1:w&&!s}},uid:{type:[String,Number],default:()=>c0()}},data(){return{search:"",open:!1,isComposing:!1,pushedTags:[],_value:[],deselectButtons:[]}},computed:{isReducingValues(){return this.$props.reduce!==this.$options.props.reduce.default},isTrackingValues(){return typeof this.modelValue>"u"||this.isReducingValues},selectedValue(){let a=this.modelValue;return this.isTrackingValues&&(a=this.$data._value),a!=null&&a!==""?[].concat(a):[]},optionList(){return this.options.concat(this.pushTags?this.pushedTags:[])},searchEl(){return this.$slots.search?this.$refs.selectedOptions.querySelector(this.searchInputQuerySelector):this.$refs.search},scope(){const a={search:this.search,loading:this.loading,searching:this.searching,filteredOptions:this.filteredOptions};return{search:{attributes:Ve({disabled:this.disabled,placeholder:this.searchPlaceholder,tabindex:this.tabindex,readonly:!this.searchable,id:this.inputId,"aria-autocomplete":"list","aria-labelledby":`vs${this.uid}__combobox`,"aria-controls":`vs${this.uid}__listbox`,ref:"search",type:"search",autocomplete:this.autocomplete,value:this.search},this.dropdownOpen&&this.filteredOptions[this.typeAheadPointer]?{"aria-activedescendant":`vs${this.uid}__option-${this.typeAheadPointer}`}:{}),events:{compositionstart:()=>this.isComposing=!0,compositionend:()=>this.isComposing=!1,keydown:this.onSearchKeyDown,blur:this.onSearchBlur,focus:this.onSearchFocus,input:w=>this.search=w.target.value}},spinner:{loading:this.mutableLoading},noOptions:{search:this.search,loading:this.mutableLoading,searching:this.searching},openIndicator:{attributes:{ref:"openIndicator",role:"presentation",class:"vs__open-indicator"}},listHeader:a,listFooter:a,header:Bs(Ve({},a),{deselect:this.deselect}),footer:Bs(Ve({},a),{deselect:this.deselect})}},childComponents(){return Ve(Ve({},Ds),this.components)},stateClasses(){return{"vs--open":this.dropdownOpen,"vs--single":!this.multiple,"vs--multiple":this.multiple,"vs--searching":this.searching&&!this.noDrop,"vs--searchable":this.searchable&&!this.noDrop,"vs--unsearchable":!this.searchable,"vs--loading":this.mutableLoading,"vs--disabled":this.disabled}},searching(){return!!this.search},dropdownOpen(){return this.dropdownShouldOpen(this)},searchPlaceholder(){return this.isValueEmpty&&this.placeholder?this.placeholder:void 0},filteredOptions(){const a=[].concat(this.optionList);if(!this.filterable&&!this.taggable)return a;const w=this.search.length?this.filter(a,this.search,this):a;if(this.taggable&&this.search.length){const s=this.createOption(this.search);this.optionExists(s)||w.unshift(s)}return w},isValueEmpty(){return this.selectedValue.length===0},showClearButton(){return!this.multiple&&this.clearable&&!this.open&&!this.isValueEmpty}},watch:{options(a,w){const s=()=>typeof this.resetOnOptionsChange=="function"?this.resetOnOptionsChange(a,w,this.selectedValue):this.resetOnOptionsChange;!this.taggable&&s()&&this.clearSelection(),this.modelValue&&this.isTrackingValues&&this.setInternalValueFromOptions(this.modelValue)},modelValue:{immediate:!0,handler(a){this.isTrackingValues&&this.setInternalValueFromOptions(a)}},multiple(){this.clearSelection()},open(a){this.$emit(a?"open":"close")}},created(){this.mutableLoading=this.loading},methods:{setInternalValueFromOptions(a){Array.isArray(a)?this.$data._value=a.map(w=>this.findOptionFromReducedValue(w)):this.$data._value=this.findOptionFromReducedValue(a)},select(a){this.$emit("option:selecting",a),this.isOptionSelected(a)?this.deselectFromDropdown&&(this.clearable||this.multiple&&this.selectedValue.length>1)&&this.deselect(a):(this.taggable&&!this.optionExists(a)&&(this.$emit("option:created",a),this.pushTag(a)),this.multiple&&(a=this.selectedValue.concat(a)),this.updateValue(a),this.$emit("option:selected",a)),this.onAfterSelect(a)},deselect(a){this.$emit("option:deselecting",a),this.updateValue(this.selectedValue.filter(w=>!this.optionComparator(w,a))),this.$emit("option:deselected",a)},clearSelection(){this.updateValue(this.multiple?[]:null)},onAfterSelect(a){this.closeOnSelect&&(this.open=!this.open,this.searchEl.blur()),this.clearSearchOnSelect&&(this.search="")},updateValue(a){typeof this.modelValue>"u"&&(this.$data._value=a),a!==null&&(Array.isArray(a)?a=a.map(w=>this.reduce(w)):a=this.reduce(a)),this.$emit("update:modelValue",a)},toggleDropdown(a){const w=a.target!==this.searchEl;w&&a.preventDefault();const s=[...this.deselectButtons||[],this.$refs.clearButton];if(this.searchEl===void 0||s.filter(Boolean).some(O=>O.contains(a.target)||O===a.target)){a.preventDefault();return}this.open&&w?this.searchEl.blur():this.disabled||(this.open=!0,this.searchEl.focus())},isOptionSelected(a){return this.selectedValue.some(w=>this.optionComparator(w,a))},isOptionDeselectable(a){return this.isOptionSelected(a)&&this.deselectFromDropdown},optionComparator(a,w){return this.getOptionKey(a)===this.getOptionKey(w)},findOptionFromReducedValue(a){const w=O=>JSON.stringify(this.reduce(O))===JSON.stringify(a),s=[...this.options,...this.pushedTags].filter(w);return s.length===1?s[0]:s.find(O=>this.optionComparator(O,this.$data._value))||a},closeSearchOptions(){this.open=!1,this.$emit("search:blur")},maybeDeleteValue(){if(!this.searchEl.value.length&&this.selectedValue&&this.selectedValue.length&&this.clearable){let a=null;this.multiple&&(a=[...this.selectedValue.slice(0,this.selectedValue.length-1)]),this.updateValue(a)}},optionExists(a){return this.optionList.some(w=>this.optionComparator(w,a))},normalizeOptionForSlot(a){return typeof a=="object"?a:{[this.label]:a}},pushTag(a){this.pushedTags.push(a)},onEscape(){this.search.length?this.search="":this.searchEl.blur()},onSearchBlur(){if(this.mousedown&&!this.searching)this.mousedown=!1;else{const{clearSearchOnSelect:a,multiple:w}=this;this.clearSearchOnBlur({clearSearchOnSelect:a,multiple:w})&&(this.search=""),this.closeSearchOptions();return}if(this.search.length===0&&this.options.length===0){this.closeSearchOptions();return}},onSearchFocus(){this.open=!0,this.$emit("search:focus")},onMousedown(){this.mousedown=!0},onMouseUp(){this.mousedown=!1},onSearchKeyDown(a){const w=G=>(G.preventDefault(),!this.isComposing&&this.typeAheadSelect()),s={8:G=>this.maybeDeleteValue(),9:G=>this.onTab(),27:G=>this.onEscape(),38:G=>(G.preventDefault(),this.typeAheadUp()),40:G=>(G.preventDefault(),this.typeAheadDown())};this.selectOnKeyCodes.forEach(G=>s[G]=w);const O=this.mapKeydown(s,this);if(typeof O[a.keyCode]=="function")return O[a.keyCode](a)}}},p0=["dir"],d0=["id","aria-expanded","aria-owns"],g0={ref:"selectedOptions",class:"vs__selected-options"},_0=["disabled","title","aria-label","onClick"],v0={ref:"actions",class:"vs__actions"},w0=["disabled"],m0={class:"vs__spinner"},y0=["id"],x0=["id","aria-selected","onMouseover","onClick"],b0={key:0,class:"vs__no-options"},A0=ze(" Sorry, no matching options. "),O0=["id"];function S0(a,w,s,O,G,L){const K=Pg("append-to-body");return fn(),Rn("div",{dir:s.dir,class:Hi(["v-select",L.stateClasses])},[Un(a.$slots,"header",$n(zn(L.scope.header))),N("div",{id:`vs${s.uid}__combobox`,ref:"toggle",class:"vs__dropdown-toggle",role:"combobox","aria-expanded":L.dropdownOpen.toString(),"aria-owns":`vs${s.uid}__listbox`,"aria-label":"Search for option",onMousedown:w[1]||(w[1]=x=>L.toggleDropdown(x))},[N("div",g0,[(fn(!0),Rn(Ss,null,Cs(L.selectedValue,(x,U)=>Un(a.$slots,"selected-option-container",{option:L.normalizeOptionForSlot(x),deselect:L.deselect,multiple:s.multiple,disabled:s.disabled},()=>[(fn(),Rn("span",{key:s.getOptionKey(x),class:"vs__selected"},[Un(a.$slots,"selected-option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)]),s.multiple?(fn(),Rn("button",{key:0,ref_for:!0,ref:xn=>G.deselectButtons[U]=xn,disabled:s.disabled,type:"button",class:"vs__deselect",title:`Deselect ${s.getOptionLabel(x)}`,"aria-label":`Deselect ${s.getOptionLabel(x)}`,onClick:xn=>L.deselect(x)},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,_0)):Ui("",!0)]))])),256)),Un(a.$slots,"search",$n(zn(L.scope.search)),()=>[N("input",Ls({class:"vs__search"},L.scope.search.attributes,Bg(L.scope.search.events)),null,16)])],512),N("div",v0,[$i(N("button",{ref:"clearButton",disabled:s.disabled,type:"button",class:"vs__clear",title:"Clear Selected","aria-label":"Clear Selected",onClick:w[0]||(w[0]=(...x)=>L.clearSelection&&L.clearSelection(...x))},[(fn(),Mi(Wi(L.childComponents.Deselect)))],8,w0),[[Ts,L.showClearButton]]),Un(a.$slots,"open-indicator",$n(zn(L.scope.openIndicator)),()=>[s.noDrop?Ui("",!0):(fn(),Mi(Wi(L.childComponents.OpenIndicator),$n(Ls({key:0},L.scope.openIndicator.attributes)),null,16))]),Un(a.$slots,"spinner",$n(zn(L.scope.spinner)),()=>[$i(N("div",m0,"Loading...",512),[[Ts,a.mutableLoading]])])],512)],40,d0),hr(Fg,{name:s.transition},{default:Dg(()=>[L.dropdownOpen?$i((fn(),Rn("ul",{id:`vs${s.uid}__listbox`,ref:"dropdownMenu",key:`vs${s.uid}__listbox`,class:"vs__dropdown-menu",role:"listbox",tabindex:"-1",onMousedown:w[2]||(w[2]=Es((...x)=>L.onMousedown&&L.onMousedown(...x),["prevent"])),onMouseup:w[3]||(w[3]=(...x)=>L.onMouseUp&&L.onMouseUp(...x))},[Un(a.$slots,"list-header",$n(zn(L.scope.listHeader))),(fn(!0),Rn(Ss,null,Cs(L.filteredOptions,(x,U)=>(fn(),Rn("li",{id:`vs${s.uid}__option-${U}`,key:s.getOptionKey(x),role:"option",class:Hi(["vs__dropdown-option",{"vs__dropdown-option--deselect":L.isOptionDeselectable(x)&&U===a.typeAheadPointer,"vs__dropdown-option--selected":L.isOptionSelected(x),"vs__dropdown-option--highlight":U===a.typeAheadPointer,"vs__dropdown-option--disabled":!s.selectable(x)}]),"aria-selected":U===a.typeAheadPointer?!0:null,onMouseover:xn=>s.selectable(x)?a.typeAheadPointer=U:null,onClick:Es(xn=>s.selectable(x)?L.select(x):null,["prevent","stop"])},[Un(a.$slots,"option",$n(zn(L.normalizeOptionForSlot(x))),()=>[ze(Gi(s.getOptionLabel(x)),1)])],42,x0))),128)),L.filteredOptions.length===0?(fn(),Rn("li",b0,[Un(a.$slots,"no-options",$n(zn(L.scope.noOptions)),()=>[A0])])):Ui("",!0),Un(a.$slots,"list-footer",$n(zn(L.scope.listFooter)))],40,y0)),[[K]]):(fn(),Rn("ul",{key:1,id:`vs${s.uid}__listbox`,role:"listbox",style:{display:"none",visibility:"hidden"}},null,8,O0))]),_:3},8,["name"]),Un(a.$slots,"footer",$n(zn(L.scope.footer)))],10,p0)}const qi=Ki(h0,[["render",S0]]),C0={id:"msg-template"},L0={class:"row"},T0={class:"col"},E0={class:"col"},I0={class:"language-js vp-adaptive-theme"},R0={class:"shiki shiki-themes github-light github-dark vp-code",tabindex:"0"},P0={class:"line"},B0={style:{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"}},W0=JSON.parse('{"title":"数据文件-Msg 示例","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/msg/template/index.md","filePath":"guide/use/msg/template/index.md","lastUpdated":1735357881000}'),D0={name:"guide/use/msg/template/index.md"},U0=Object.assign(D0,{setup(a){Mg(async()=>{w=await fetch("https://demo.shmily.lqzh.me/json/msg/msg.json").then(x=>x.json());const K=w.reduce((x,U,xn,Ye)=>{let an=x.find(tn=>tn.source===U.source);an||(an={source:U.source,type:[]},x.push(an));let ue=an.type.find(tn=>tn.type===U.type);ue||(ue={type:U.type,os:[]},an.type.push(ue));const Yn=Object.keys(U).find(tn=>tn.startsWith("$"));if(Yn){let tn=qg.get(U,`${Yn}.os`);tn&&!ue.os.includes(tn)&&ue.os.push(tn)}return x},[]);s.push(...K)});let w=[];const s=Is([]),O=Is({source:"",type:"",os:""}),G=Wg(()=>{if(!O.source||!O.type)return[];const K=O.source.source,x=O.type.type,U=w.filter(xn=>xn.source===K&&xn.type===x);return O.type.os.length===0?U:U.filter(xn=>xn[`$${K}`].os===O.os)});function L(K){K==="source"?(O.type="",O.os=""):K==="type"&&(O.type.os.length===1?O.os=O.type.os[0]:O.os="")}return(K,x)=>(fn(),Rn("div",null,[x[10]||(x[10]=Ug('

                          数据文件-Msg 示例

                          示例有以下几种查看方式

                          源码 (推荐)

                          最及时最可靠

                          Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

                          Demo

                          更新不及时

                          ',7)),N("div",C0,[N("div",L0,[N("div",T0,[x[5]||(x[5]=N("label",null,"source",-1)),hr(Ni(qi),{options:s,label:"source",modelValue:O.source,"onUpdate:modelValue":x[0]||(x[0]=U=>O.source=U),"onOption:selected":x[1]||(x[1]=U=>L("source"))},null,8,["options","modelValue"])]),N("div",E0,[x[6]||(x[6]=N("label",null,"type",-1)),hr(Ni(qi),{options:O.source?O.source.type:[],label:"type",modelValue:O.type,"onUpdate:modelValue":x[2]||(x[2]=U=>O.type=U),"onOption:selected":x[3]||(x[3]=U=>L("type"))},null,8,["options","modelValue"])]),N("div",{class:Hi(["col",{disable:!O.type||O.type.os.length===0}])},[x[7]||(x[7]=N("label",null,"$source.os",-1)),hr(Ni(qi),{options:O.type?O.type.os:[],modelValue:O.os,"onUpdate:modelValue":x[4]||(x[4]=U=>O.os=U)},null,8,["options","modelValue"])],2)])]),N("div",I0,[x[8]||(x[8]=N("button",{title:"Copy Code",class:"copy"},null,-1)),x[9]||(x[9]=N("span",{class:"lang"},"js",-1)),N("pre",R0,[N("code",null,[N("span",P0,[N("span",B0,Gi(G.value.slice(0,1)),1)])])])]),x[11]||(x[11]=N("p",null,[ze("从 "),N("code",null,"Demo"),ze(),N("a",{href:"http://demo.shmily.lqzh.me/#/query?searchType=%E6%B6%88%E6%81%AF&searchKey=-Reg:/*/",target:"_blank",rel:"noreferrer"},"链接"),ze(" 筛选查看")],-1)),x[12]||(x[12]=N("p",null,[N("img",{src:$g,alt:"from demo web"})],-1))]))}});export{W0 as __pageData,U0 as default}; diff --git a/assets/guide_use_show.md.D9RsAquR.js b/assets/guide_use_show.md.DjCoOkyV.js similarity index 95% rename from assets/guide_use_show.md.D9RsAquR.js rename to assets/guide_use_show.md.DjCoOkyV.js index a432341..0ae2e8f 100644 --- a/assets/guide_use_show.md.D9RsAquR.js +++ b/assets/guide_use_show.md.DjCoOkyV.js @@ -1 +1 @@ -import{_ as o,c as a,a0 as t,o as h}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1734849817000}'),r={name:"guide/use/show.md"};function l(s,e,i,d,c,n){return h(),a("div",null,e[0]||(e[0]=[t('

                          Show

                          TIP

                          有 🎞️ 标记的在项目文档中均包含视频教程

                          显示 和 修改

                          加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


                          Demo

                          这是演示站~ 上面加工完就是这个效果~

                          ',9)]))}const p=o(r,[["render",l]]);export{u as __pageData,p as default}; +import{_ as o,c as a,a0 as t,o as h}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1735357881000}'),r={name:"guide/use/show.md"};function l(s,e,i,d,c,n){return h(),a("div",null,e[0]||(e[0]=[t('

                          Show

                          TIP

                          有 🎞️ 标记的在项目文档中均包含视频教程

                          显示 和 修改

                          加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


                          Demo

                          这是演示站~ 上面加工完就是这个效果~

                          ',9)]))}const p=o(r,[["render",l]]);export{u as __pageData,p as default}; diff --git a/assets/guide_use_show.md.D9RsAquR.lean.js b/assets/guide_use_show.md.DjCoOkyV.lean.js similarity index 95% rename from assets/guide_use_show.md.D9RsAquR.lean.js rename to assets/guide_use_show.md.DjCoOkyV.lean.js index a432341..0ae2e8f 100644 --- a/assets/guide_use_show.md.D9RsAquR.lean.js +++ b/assets/guide_use_show.md.DjCoOkyV.lean.js @@ -1 +1 @@ -import{_ as o,c as a,a0 as t,o as h}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1734849817000}'),r={name:"guide/use/show.md"};function l(s,e,i,d,c,n){return h(),a("div",null,e[0]||(e[0]=[t('

                          Show

                          TIP

                          有 🎞️ 标记的在项目文档中均包含视频教程

                          显示 和 修改

                          加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


                          Demo

                          这是演示站~ 上面加工完就是这个效果~

                          ',9)]))}const p=o(r,[["render",l]]);export{u as __pageData,p as default}; +import{_ as o,c as a,a0 as t,o as h}from"./chunks/framework.BQKxUb7q.js";const u=JSON.parse('{"title":"Show","description":"","frontmatter":{},"headers":[],"relativePath":"guide/use/show.md","filePath":"guide/use/show.md","lastUpdated":1735357881000}'),r={name:"guide/use/show.md"};function l(s,e,i,d,c,n){return h(),a("div",null,e[0]||(e[0]=[t('

                          Show

                          TIP

                          有 🎞️ 标记的在项目文档中均包含视频教程

                          显示 和 修改

                          加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


                          Demo

                          这是演示站~ 上面加工完就是这个效果~

                          ',9)]))}const p=o(r,[["render",l]]);export{u as __pageData,p as default}; diff --git a/assets/guide_what-is.md.kKb0IkVm.js b/assets/guide_what-is.md.BuFHlCIV.js similarity index 97% rename from assets/guide_what-is.md.kKb0IkVm.js rename to assets/guide_what-is.md.BuFHlCIV.js index b98fb05..c1b6bbc 100644 --- a/assets/guide_what-is.md.kKb0IkVm.js +++ b/assets/guide_what-is.md.BuFHlCIV.js @@ -1 +1 @@ -import{_ as e,c as a,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const n=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1734849817000}'),i={name:"guide/what-is.md"};function l(r,t,h,p,c,m){return s(),a("div",null,t[0]||(t[0]=[o('

                          这是啥

                          一个悲伤的故事

                          我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

                          • QQ 微信 等记录能融合, 并用时间线查看
                          • 支持搜索过滤查询
                          • 可以给消息评论
                          • 有图表分析

                          然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

                          吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

                          手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

                          总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

                          少啰嗦,先看Demo

                           

                          最后

                          不支持用户数据导出的公司都是耍流氓~

                          Adun Toridas

                          今天,我们将夺回我们的家园,夺回我们的遗产!

                          ',13)]))}const u=e(i,[["render",l]]);export{n as __pageData,u as default}; +import{_ as e,c as a,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const n=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1735357881000}'),i={name:"guide/what-is.md"};function l(r,t,h,p,c,m){return s(),a("div",null,t[0]||(t[0]=[o('

                          这是啥

                          一个悲伤的故事

                          我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

                          • QQ 微信 等记录能融合, 并用时间线查看
                          • 支持搜索过滤查询
                          • 可以给消息评论
                          • 有图表分析

                          然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

                          吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

                          手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

                          总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

                          少啰嗦,先看Demo

                           

                          最后

                          不支持用户数据导出的公司都是耍流氓~

                          Adun Toridas

                          今天,我们将夺回我们的家园,夺回我们的遗产!

                          ',13)]))}const u=e(i,[["render",l]]);export{n as __pageData,u as default}; diff --git a/assets/guide_what-is.md.kKb0IkVm.lean.js b/assets/guide_what-is.md.BuFHlCIV.lean.js similarity index 97% rename from assets/guide_what-is.md.kKb0IkVm.lean.js rename to assets/guide_what-is.md.BuFHlCIV.lean.js index b98fb05..c1b6bbc 100644 --- a/assets/guide_what-is.md.kKb0IkVm.lean.js +++ b/assets/guide_what-is.md.BuFHlCIV.lean.js @@ -1 +1 @@ -import{_ as e,c as a,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const n=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1734849817000}'),i={name:"guide/what-is.md"};function l(r,t,h,p,c,m){return s(),a("div",null,t[0]||(t[0]=[o('

                          这是啥

                          一个悲伤的故事

                          我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

                          • QQ 微信 等记录能融合, 并用时间线查看
                          • 支持搜索过滤查询
                          • 可以给消息评论
                          • 有图表分析

                          然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

                          吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

                          手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

                          总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

                          少啰嗦,先看Demo

                           

                          最后

                          不支持用户数据导出的公司都是耍流氓~

                          Adun Toridas

                          今天,我们将夺回我们的家园,夺回我们的遗产!

                          ',13)]))}const u=e(i,[["render",l]]);export{n as __pageData,u as default}; +import{_ as e,c as a,a0 as o,o as s}from"./chunks/framework.BQKxUb7q.js";const n=JSON.parse('{"title":"这是啥","description":"","frontmatter":{},"headers":[],"relativePath":"guide/what-is.md","filePath":"guide/what-is.md","lastUpdated":1735357881000}'),i={name:"guide/what-is.md"};function l(r,t,h,p,c,m){return s(),a("div",null,t[0]||(t[0]=[o('

                          这是啥

                          一个悲伤的故事

                          我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

                          • QQ 微信 等记录能融合, 并用时间线查看
                          • 支持搜索过滤查询
                          • 可以给消息评论
                          • 有图表分析

                          然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

                          吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

                          手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

                          总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

                          少啰嗦,先看Demo

                           

                          最后

                          不支持用户数据导出的公司都是耍流氓~

                          Adun Toridas

                          今天,我们将夺回我们的家园,夺回我们的遗产!

                          ',13)]))}const u=e(i,[["render",l]]);export{n as __pageData,u as default}; diff --git a/assets/index.md.CNe96jor.js b/assets/index.md.CNe96jor.js new file mode 100644 index 0000000..d1c20c8 --- /dev/null +++ b/assets/index.md.CNe96jor.js @@ -0,0 +1 @@ +import{_ as l,c as o,j as t,G as i,w as d,a0 as e,B as n,o as p,a as v}from"./chunks/framework.BQKxUb7q.js";const f="/Shmily/assets/f1.Dc0TKChg.png",r="/Shmily/assets/f2.qZ4INiI0.png",m="/Shmily/assets/f7.YMt8zeZW.jpg",c="/Shmily/assets/f3.Ff-YmFK_.png",x="/Shmily/assets/f4.BcFR2vTx.png",g="/Shmily/assets/f5._uAEuM09.png",u="/Shmily/assets/f6.BDoRD1Vs.jpg",I=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1735357881000}'),h={name:"index.md"},w={id:"features"},y={class:"row"},S={class:"info"},_={class:"content"},b={class:"row"},Q={class:"info"},M={class:"content"},N={class:"row"},k={class:"info"},B={class:"content"};function C(D,a,P,T,V,E){const s=n("P");return p(),o("div",null,[t("div",w,[t("div",y,[t("div",S,[t("div",_,[a[3]||(a[3]=t("h2",{class:"title"},"类型多 平台全",-1)),t("div",null,[a[1]||(a[1]=t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),i(s,null,{default:d(()=>a[0]||(a[0]=[v("PC、Android、iOS 等各种平台")])),_:1}),a[2]||(a[2]=t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1))])])]),a[4]||(a[4]=t("div",{class:"cover"},[t("img",{src:f,style:{"max-width":"240px"}})],-1))]),a[16]||(a[16]=e('

                          以前导出的能合并

                          支持将以前导出的数据和现在合并

                          历史不再断代

                          * 如2013年导出记录(2000-2013)可以
                          和2020年导出记录(2007-2020)合并
                          在同一时间线查看

                          数据全

                          记录中的图片、表情、视频等全下载到本地永留存

                          数据库字段全导出, 不限于你看到的

                          * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

                          ',2)),t("div",b,[t("div",Q,[t("div",M,[a[9]||(a[9]=t("h2",{class:"title"},"支持搜索和筛选",-1)),t("div",null,[a[6]||(a[6]=t("p",null,"关键词(支持正则)搜索",-1)),i(s,null,{default:d(()=>a[5]||(a[5]=[v("时间、类型、设备、人物、通话时长等筛选")])),_:1}),a[7]||(a[7]=t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),a[8]||(a[8]=t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1))])])]),a[10]||(a[10]=t("div",{class:"cover"},[t("img",{src:c,style:{"max-width":"600px"}})],-1))]),a[17]||(a[17]=e('

                          还有评论和引用

                          时间的长河有感而发?添加一条评论或打上一个Tag吧

                          引用的消息也会转化为双向链接可快速跳转

                          * 评论也可以搜索哦

                          ',1)),t("div",N,[t("div",k,[t("div",B,[a[14]||(a[14]=t("h2",{class:"title"},"图表与统计",-1)),t("div",null,[a[12]||(a[12]=t("p",null,"不想看看各种维度的大数据么?",-1)),i(s,null,{default:d(()=>a[11]||(a[11]=[v("纯表情回复的数量与对比都有哦!")])),_:1}),a[13]||(a[13]=t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1))])])]),a[15]||(a[15]=t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1))]),a[18]||(a[18]=e('

                          开发

                          深入底层优化,240M数据纯前端静态处理

                          你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

                          标准化、模块化、组件化,开发更容易

                          数据字段全导出,总有你能用上的

                          数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

                          ',1))])])}const $=l(h,[["render",C],["__scopeId","data-v-5a8e89f8"]]);export{I as __pageData,$ as default}; diff --git a/assets/index.md.CNe96jor.lean.js b/assets/index.md.CNe96jor.lean.js new file mode 100644 index 0000000..d1c20c8 --- /dev/null +++ b/assets/index.md.CNe96jor.lean.js @@ -0,0 +1 @@ +import{_ as l,c as o,j as t,G as i,w as d,a0 as e,B as n,o as p,a as v}from"./chunks/framework.BQKxUb7q.js";const f="/Shmily/assets/f1.Dc0TKChg.png",r="/Shmily/assets/f2.qZ4INiI0.png",m="/Shmily/assets/f7.YMt8zeZW.jpg",c="/Shmily/assets/f3.Ff-YmFK_.png",x="/Shmily/assets/f4.BcFR2vTx.png",g="/Shmily/assets/f5._uAEuM09.png",u="/Shmily/assets/f6.BDoRD1Vs.jpg",I=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1735357881000}'),h={name:"index.md"},w={id:"features"},y={class:"row"},S={class:"info"},_={class:"content"},b={class:"row"},Q={class:"info"},M={class:"content"},N={class:"row"},k={class:"info"},B={class:"content"};function C(D,a,P,T,V,E){const s=n("P");return p(),o("div",null,[t("div",w,[t("div",y,[t("div",S,[t("div",_,[a[3]||(a[3]=t("h2",{class:"title"},"类型多 平台全",-1)),t("div",null,[a[1]||(a[1]=t("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),i(s,null,{default:d(()=>a[0]||(a[0]=[v("PC、Android、iOS 等各种平台")])),_:1}),a[2]||(a[2]=t("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1))])])]),a[4]||(a[4]=t("div",{class:"cover"},[t("img",{src:f,style:{"max-width":"240px"}})],-1))]),a[16]||(a[16]=e('

                          以前导出的能合并

                          支持将以前导出的数据和现在合并

                          历史不再断代

                          * 如2013年导出记录(2000-2013)可以
                          和2020年导出记录(2007-2020)合并
                          在同一时间线查看

                          数据全

                          记录中的图片、表情、视频等全下载到本地永留存

                          数据库字段全导出, 不限于你看到的

                          * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

                          ',2)),t("div",b,[t("div",Q,[t("div",M,[a[9]||(a[9]=t("h2",{class:"title"},"支持搜索和筛选",-1)),t("div",null,[a[6]||(a[6]=t("p",null,"关键词(支持正则)搜索",-1)),i(s,null,{default:d(()=>a[5]||(a[5]=[v("时间、类型、设备、人物、通话时长等筛选")])),_:1}),a[7]||(a[7]=t("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),a[8]||(a[8]=t("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1))])])]),a[10]||(a[10]=t("div",{class:"cover"},[t("img",{src:c,style:{"max-width":"600px"}})],-1))]),a[17]||(a[17]=e('

                          还有评论和引用

                          时间的长河有感而发?添加一条评论或打上一个Tag吧

                          引用的消息也会转化为双向链接可快速跳转

                          * 评论也可以搜索哦

                          ',1)),t("div",N,[t("div",k,[t("div",B,[a[14]||(a[14]=t("h2",{class:"title"},"图表与统计",-1)),t("div",null,[a[12]||(a[12]=t("p",null,"不想看看各种维度的大数据么?",-1)),i(s,null,{default:d(()=>a[11]||(a[11]=[v("纯表情回复的数量与对比都有哦!")])),_:1}),a[13]||(a[13]=t("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1))])])]),a[15]||(a[15]=t("div",{class:"cover"},[t("img",{src:g,style:{"max-width":"600px"}})],-1))]),a[18]||(a[18]=e('

                          开发

                          深入底层优化,240M数据纯前端静态处理

                          你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

                          标准化、模块化、组件化,开发更容易

                          数据字段全导出,总有你能用上的

                          数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

                          ',1))])])}const $=l(h,[["render",C],["__scopeId","data-v-5a8e89f8"]]);export{I as __pageData,$ as default}; diff --git a/assets/index.md.DZbLMCAZ.js b/assets/index.md.DZbLMCAZ.js deleted file mode 100644 index d998302..0000000 --- a/assets/index.md.DZbLMCAZ.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,c as o,j as d,G as c,w as a,a0 as i,B as n,o as e,a as v}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/f1.Dc0TKChg.png",f="/Shmily/assets/f2.qZ4INiI0.png",r="/Shmily/assets/f7.YMt8zeZW.jpg",m="/Shmily/assets/f3.Ff-YmFK_.png",x="/Shmily/assets/f4.BcFR2vTx.png",g="/Shmily/assets/f5._uAEuM09.png",u="/Shmily/assets/f6.BDoRD1Vs.jpg",I=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1734849817000}'),h={name:"index.md"},w={id:"features"},y={class:"row"},S={class:"info"},_={class:"content"},b={class:"row"},Q={class:"info"},M={class:"content"},N={class:"row"},k={class:"info"},B={class:"content"};function C(D,t,P,T,V,E){const s=n("P");return e(),o("div",null,[d("div",w,[d("div",y,[d("div",S,[d("div",_,[t[3]||(t[3]=d("h2",{class:"title"},"类型多 平台全",-1)),d("div",null,[t[1]||(t[1]=d("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),c(s,null,{default:a(()=>t[0]||(t[0]=[v("PC、Android、iOS 等各种平台")])),_:1}),t[2]||(t[2]=d("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1))])])]),t[4]||(t[4]=d("div",{class:"cover"},[d("img",{src:p,style:{"max-width":"240px"}})],-1))]),t[16]||(t[16]=i('

                          以前导出的能合并

                          支持将以前导出的数据和现在合并

                          历史不再断代

                          * 如2013年导出记录(2000-2013)可以
                          和2020年导出记录(2007-2020)合并
                          在同一时间线查看

                          数据全

                          记录中的图片、表情、视频等全下载到本地永留存

                          数据库字段全导出, 不限于你看到的

                          * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

                          ',2)),d("div",b,[d("div",Q,[d("div",M,[t[9]||(t[9]=d("h2",{class:"title"},"支持搜索和筛选",-1)),d("div",null,[t[6]||(t[6]=d("p",null,"关键词(支持正则)搜索",-1)),c(s,null,{default:a(()=>t[5]||(t[5]=[v("时间、类型、设备、人物、通话时长等筛选")])),_:1}),t[7]||(t[7]=d("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),t[8]||(t[8]=d("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1))])])]),t[10]||(t[10]=d("div",{class:"cover"},[d("img",{src:m,style:{"max-width":"600px"}})],-1))]),t[17]||(t[17]=i('

                          还有评论和引用

                          时间的长河有感而发?添加一条评论或打上一个Tag吧

                          引用的消息也会转化为双向链接可快速跳转

                          * 评论也可以搜索哦

                          ',1)),d("div",N,[d("div",k,[d("div",B,[t[14]||(t[14]=d("h2",{class:"title"},"图表与统计",-1)),d("div",null,[t[12]||(t[12]=d("p",null,"不想看看各种维度的大数据么?",-1)),c(s,null,{default:a(()=>t[11]||(t[11]=[v("纯表情回复的数量与对比都有哦!")])),_:1}),t[13]||(t[13]=d("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1))])])]),t[15]||(t[15]=d("div",{class:"cover"},[d("img",{src:g,style:{"max-width":"600px"}})],-1))]),t[18]||(t[18]=i('

                          开发

                          深入底层优化,240M数据纯前端静态处理

                          你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

                          标准化、模块化、组件化,开发更容易

                          数据字段全导出,总有你能用上的

                          数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

                          ',1))])])}const $=l(h,[["render",C],["__scopeId","data-v-c53fdc0c"]]);export{I as __pageData,$ as default}; diff --git a/assets/index.md.DZbLMCAZ.lean.js b/assets/index.md.DZbLMCAZ.lean.js deleted file mode 100644 index d998302..0000000 --- a/assets/index.md.DZbLMCAZ.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as l,c as o,j as d,G as c,w as a,a0 as i,B as n,o as e,a as v}from"./chunks/framework.BQKxUb7q.js";const p="/Shmily/assets/f1.Dc0TKChg.png",f="/Shmily/assets/f2.qZ4INiI0.png",r="/Shmily/assets/f7.YMt8zeZW.jpg",m="/Shmily/assets/f3.Ff-YmFK_.png",x="/Shmily/assets/f4.BcFR2vTx.png",g="/Shmily/assets/f5._uAEuM09.png",u="/Shmily/assets/f6.BDoRD1Vs.jpg",I=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"SHMILY","text":"历史的归档","tagline":"QQ、Wechat、SMS、CallLog、Email……","image":{"src":"./favicon.png","alt":"icon"},"actions":[{"theme":"brand","text":"开始文档","link":"/guide/what-is"},{"theme":"alt","text":"Demo演示","link":"http://demo.shmily.lqzh.me/"}]}},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1734849817000}'),h={name:"index.md"},w={id:"features"},y={class:"row"},S={class:"info"},_={class:"content"},b={class:"row"},Q={class:"info"},M={class:"content"},N={class:"row"},k={class:"info"},B={class:"content"};function C(D,t,P,T,V,E){const s=n("P");return e(),o("div",null,[d("div",w,[d("div",y,[d("div",S,[d("div",_,[t[3]||(t[3]=d("h2",{class:"title"},"类型多 平台全",-1)),d("div",null,[t[1]||(t[1]=d("p",null,"QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型",-1)),c(s,null,{default:a(()=>t[0]||(t[0]=[v("PC、Android、iOS 等各种平台")])),_:1}),t[2]||(t[2]=d("p",{class:"tips"},"* 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!",-1))])])]),t[4]||(t[4]=d("div",{class:"cover"},[d("img",{src:p,style:{"max-width":"240px"}})],-1))]),t[16]||(t[16]=i('

                          以前导出的能合并

                          支持将以前导出的数据和现在合并

                          历史不再断代

                          * 如2013年导出记录(2000-2013)可以
                          和2020年导出记录(2007-2020)合并
                          在同一时间线查看

                          数据全

                          记录中的图片、表情、视频等全下载到本地永留存

                          数据库字段全导出, 不限于你看到的

                          * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

                          ',2)),d("div",b,[d("div",Q,[d("div",M,[t[9]||(t[9]=d("h2",{class:"title"},"支持搜索和筛选",-1)),d("div",null,[t[6]||(t[6]=d("p",null,"关键词(支持正则)搜索",-1)),c(s,null,{default:a(()=>t[5]||(t[5]=[v("时间、类型、设备、人物、通话时长等筛选")])),_:1}),t[7]||(t[7]=d("p",{class:"tips"},"* 搜索支持正则,人物支持分组",-1)),t[8]||(t[8]=d("p",{class:"tips"},"* 极致优化,240M数据复杂搜索100ms内出结果",-1))])])]),t[10]||(t[10]=d("div",{class:"cover"},[d("img",{src:m,style:{"max-width":"600px"}})],-1))]),t[17]||(t[17]=i('

                          还有评论和引用

                          时间的长河有感而发?添加一条评论或打上一个Tag吧

                          引用的消息也会转化为双向链接可快速跳转

                          * 评论也可以搜索哦

                          ',1)),d("div",N,[d("div",k,[d("div",B,[t[14]||(t[14]=d("h2",{class:"title"},"图表与统计",-1)),d("div",null,[t[12]||(t[12]=d("p",null,"不想看看各种维度的大数据么?",-1)),c(s,null,{default:a(()=>t[11]||(t[11]=[v("纯表情回复的数量与对比都有哦!")])),_:1}),t[13]||(t[13]=d("p",{class:"tips"},"* 评论里的 Tag 也有统计,开心的次数不能少",-1))])])]),t[15]||(t[15]=d("div",{class:"cover"},[d("img",{src:g,style:{"max-width":"600px"}})],-1))]),t[18]||(t[18]=i('

                          开发

                          深入底层优化,240M数据纯前端静态处理

                          你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

                          标准化、模块化、组件化,开发更容易

                          数据字段全导出,总有你能用上的

                          数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

                          ',1))])])}const $=l(h,[["render",C],["__scopeId","data-v-c53fdc0c"]]);export{I as __pageData,$ as default}; diff --git a/assets/style.BLFEwvvb.css b/assets/style.CtNyNVMp.css similarity index 99% rename from assets/style.BLFEwvvb.css rename to assets/style.CtNyNVMp.css index 9f6bb89..42125b1 100644 --- a/assets/style.BLFEwvvb.css +++ b/assets/style.CtNyNVMp.css @@ -1 +1 @@ -.qa-list .title{display:flex}.qa-list .title:before{content:">";margin-right:10px}.qa-list .title .link{flex:1;cursor:pointer}.qa-list .title .author{font-size:12px}.qa-list .detail{margin-left:20px;background:#f0f8ff;padding:5px 10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.form input{border:1px solid #333}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}#msg-template .row{width:100%;display:flex}#msg-template .row .col{flex:1 0 33%}#msg-template .row .col.disable{opacity:0}.VPHome{background:radial-gradient(transparent,#0000004d),url(/Shmily/assets/bg.Byxnk99l.jpg);background-attachment:fixed;background-size:cover}#features[data-v-c53fdc0c]{margin:0 auto;max-width:1000px;background:#ffffffb3;padding:0 20px;box-sizing:content-box;border-radius:10px;box-shadow:0 2px 12px #0000001a}#features .row[data-v-c53fdc0c]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-c53fdc0c]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-c53fdc0c]{text-align:right}#features .row[data-v-c53fdc0c]:last-child{border-bottom:none}#features .row .info[data-v-c53fdc0c]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-c53fdc0c]{font-weight:700;font-size:18px}#features .row .info .content[data-v-c53fdc0c]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-c53fdc0c]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-c53fdc0c]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-c53fdc0c]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-c53fdc0c]{flex:0 0 auto}#features .row .cover img[data-v-c53fdc0c]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-c53fdc0c]{flex-direction:column!important}#features .row .info[data-v-c53fdc0c],#features .row .cover[data-v-c53fdc0c]{text-align:center!important;padding:0!important}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e98dd255]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e98dd255]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e257564d]{margin-top:64px}.edit-info[data-v-e257564d]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e257564d]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e257564d]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-e257564d]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e257564d]{margin-right:8px}.prev-next[data-v-e257564d]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-e257564d]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e257564d]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-e257564d]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e257564d]{margin-left:auto;text-align:right}.desc[data-v-e257564d]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e257564d]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-5337faa4]{opacity:1}.moon[data-v-5337faa4],.dark .sun[data-v-5337faa4]{opacity:0}.dark .moon[data-v-5337faa4]{opacity:1}.dark .VPSwitchAppearance[data-v-5337faa4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-6c893767]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-6c893767]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b98bc113]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-b98bc113] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b98bc113] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b98bc113] .group:last-child{padding-bottom:0}.VPMenu[data-v-b98bc113] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b98bc113] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b98bc113] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-b98bc113] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-bb2aa2f0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-bb2aa2f0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-bb2aa2f0]{display:none}}.trans-title[data-v-bb2aa2f0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-bb2aa2f0],.item.social-links[data-v-bb2aa2f0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-bb2aa2f0]{min-width:176px}.appearance-action[data-v-bb2aa2f0]{margin-right:-2px}.social-links-list[data-v-bb2aa2f0]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-dc692963]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-dc692963]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-6aa21345]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-6aa21345]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-6aa21345]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-6aa21345]:not(.home){background-color:transparent}.VPNavBar[data-v-6aa21345]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-6aa21345]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-6aa21345]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-6aa21345]{padding:0}}.container[data-v-6aa21345]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-6aa21345],.container>.content[data-v-6aa21345]{pointer-events:none}.container[data-v-6aa21345] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-6aa21345]{max-width:100%}}.title[data-v-6aa21345]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-6aa21345]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-6aa21345]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-6aa21345]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-6aa21345]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-6aa21345]{column-gap:.5rem}}.menu+.translations[data-v-6aa21345]:before,.menu+.appearance[data-v-6aa21345]:before,.menu+.social-links[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before,.appearance+.social-links[data-v-6aa21345]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before{margin-right:16px}.appearance+.social-links[data-v-6aa21345]:before{margin-left:16px}.social-links[data-v-6aa21345]{margin-right:-8px}.divider[data-v-6aa21345]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-6aa21345]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-6aa21345]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b44890b2]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-b44890b2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-b9ab8c58]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-b9ab8c58]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-b9ab8c58]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-b9ab8c58]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-b9ab8c58]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-b9ab8c58]{transform:rotate(45deg)}.button[data-v-b9ab8c58]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-b9ab8c58]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-b9ab8c58]{transition:transform .25s}.group[data-v-b9ab8c58]:first-child{padding-top:0}.group+.group[data-v-b9ab8c58],.group+.item[data-v-b9ab8c58]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-f2779853]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-f2779853],.VPNavScreen.fade-leave-active[data-v-f2779853]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-f2779853],.VPNavScreen.fade-leave-active .container[data-v-f2779853]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-f2779853],.VPNavScreen.fade-leave-to[data-v-f2779853]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-f2779853],.VPNavScreen.fade-leave-to .container[data-v-f2779853]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-f2779853]{display:none}}.container[data-v-f2779853]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-f2779853],.menu+.appearance[data-v-f2779853],.translations+.appearance[data-v-f2779853]{margin-top:24px}.menu+.social-links[data-v-f2779853]{margin-top:16px}.appearance+.social-links[data-v-f2779853]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b7550ba0]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b7550ba0]{padding-bottom:10px}.item[data-v-b7550ba0]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b7550ba0]{cursor:pointer}.indicator[data-v-b7550ba0]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b7550ba0]{background-color:var(--vp-c-brand-1)}.link[data-v-b7550ba0]{display:flex;align-items:center;flex-grow:1}.text[data-v-b7550ba0]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b7550ba0]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b7550ba0],.VPSidebarItem.level-2 .text[data-v-b7550ba0],.VPSidebarItem.level-3 .text[data-v-b7550ba0],.VPSidebarItem.level-4 .text[data-v-b7550ba0],.VPSidebarItem.level-5 .text[data-v-b7550ba0]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b7550ba0]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.caret[data-v-b7550ba0]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b7550ba0]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b7550ba0]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b7550ba0]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b7550ba0]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b7550ba0],.VPSidebarItem.level-2 .items[data-v-b7550ba0],.VPSidebarItem.level-3 .items[data-v-b7550ba0],.VPSidebarItem.level-4 .items[data-v-b7550ba0],.VPSidebarItem.level-5 .items[data-v-b7550ba0]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b7550ba0]{display:none}.no-transition[data-v-c40bc020] .caret-icon{transition:none}.group+.group[data-v-c40bc020]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c40bc020]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-319d5ca6]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-319d5ca6]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-319d5ca6]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-319d5ca6]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-319d5ca6]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-319d5ca6]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-319d5ca6]{outline:0}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px} +.qa-list .title{display:flex}.qa-list .title:before{content:">";margin-right:10px}.qa-list .title .link{flex:1;cursor:pointer}.qa-list .title .author{font-size:12px}.qa-list .detail{margin-left:20px;background:#f0f8ff;padding:5px 10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.form input{border:1px solid #333}:root{--vs-colors--lightest: rgba(60, 60, 60, .26);--vs-colors--light: rgba(60, 60, 60, .5);--vs-colors--dark: #333;--vs-colors--darkest: rgba(0, 0, 0, .15);--vs-search-input-color: inherit;--vs-search-input-placeholder-color: inherit;--vs-font-size: 1rem;--vs-line-height: 1.4;--vs-state-disabled-bg: rgb(248, 248, 248);--vs-state-disabled-color: var(--vs-colors--light);--vs-state-disabled-controls-color: var(--vs-colors--light);--vs-state-disabled-cursor: not-allowed;--vs-border-color: var(--vs-colors--lightest);--vs-border-width: 1px;--vs-border-style: solid;--vs-border-radius: 4px;--vs-actions-padding: 4px 6px 0 3px;--vs-controls-color: var(--vs-colors--light);--vs-controls-size: 1;--vs-controls--deselect-text-shadow: 0 1px 0 #fff;--vs-selected-bg: #f0f0f0;--vs-selected-color: var(--vs-colors--dark);--vs-selected-border-color: var(--vs-border-color);--vs-selected-border-style: var(--vs-border-style);--vs-selected-border-width: var(--vs-border-width);--vs-dropdown-bg: #fff;--vs-dropdown-color: inherit;--vs-dropdown-z-index: 1000;--vs-dropdown-min-width: 160px;--vs-dropdown-max-height: 350px;--vs-dropdown-box-shadow: 0px 3px 6px 0px var(--vs-colors--darkest);--vs-dropdown-option-bg: #000;--vs-dropdown-option-color: var(--vs-dropdown-color);--vs-dropdown-option-padding: 3px 20px;--vs-dropdown-option--active-bg: #5897fb;--vs-dropdown-option--active-color: #fff;--vs-dropdown-option--deselect-bg: #fb5858;--vs-dropdown-option--deselect-color: #fff;--vs-transition-timing-function: cubic-bezier(1, -.115, .975, .855);--vs-transition-duration: .15s}.v-select{position:relative;font-family:inherit}.v-select,.v-select *{box-sizing:border-box}:root{--vs-transition-timing-function: cubic-bezier(1, .5, .8, 1);--vs-transition-duration: .15s}@-webkit-keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes vSelectSpinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs__fade-enter-active,.vs__fade-leave-active{pointer-events:none;transition:opacity var(--vs-transition-duration) var(--vs-transition-timing-function)}.vs__fade-enter,.vs__fade-leave-to{opacity:0}:root{--vs-disabled-bg: var(--vs-state-disabled-bg);--vs-disabled-color: var(--vs-state-disabled-color);--vs-disabled-cursor: var(--vs-state-disabled-cursor)}.vs--disabled .vs__dropdown-toggle,.vs--disabled .vs__clear,.vs--disabled .vs__search,.vs--disabled .vs__selected,.vs--disabled .vs__open-indicator{cursor:var(--vs-disabled-cursor);background-color:var(--vs-disabled-bg)}.v-select[dir=rtl] .vs__actions{padding:0 3px 0 6px}.v-select[dir=rtl] .vs__clear{margin-left:6px;margin-right:0}.v-select[dir=rtl] .vs__deselect{margin-left:0;margin-right:2px}.v-select[dir=rtl] .vs__dropdown-menu{text-align:right}.vs__dropdown-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;padding:0 0 4px;background:none;border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-radius:var(--vs-border-radius);white-space:normal}.vs__selected-options{display:flex;flex-basis:100%;flex-grow:1;flex-wrap:wrap;padding:0 2px;position:relative}.vs__actions{display:flex;align-items:center;padding:var(--vs-actions-padding)}.vs--searchable .vs__dropdown-toggle{cursor:text}.vs--unsearchable .vs__dropdown-toggle{cursor:pointer}.vs--open .vs__dropdown-toggle{border-bottom-color:transparent;border-bottom-left-radius:0;border-bottom-right-radius:0}.vs__open-indicator{fill:var(--vs-controls-color);transform:scale(var(--vs-controls-size));transition:transform var(--vs-transition-duration) var(--vs-transition-timing-function);transition-timing-function:var(--vs-transition-timing-function)}.vs--open .vs__open-indicator{transform:rotate(180deg) scale(var(--vs-controls-size))}.vs--loading .vs__open-indicator{opacity:0}.vs__clear{fill:var(--vs-controls-color);padding:0;border:0;background-color:transparent;cursor:pointer;margin-right:8px}.vs__dropdown-menu{display:block;box-sizing:border-box;position:absolute;top:calc(100% - var(--vs-border-width));left:0;z-index:var(--vs-dropdown-z-index);padding:5px 0;margin:0;width:100%;max-height:var(--vs-dropdown-max-height);min-width:var(--vs-dropdown-min-width);overflow-y:auto;box-shadow:var(--vs-dropdown-box-shadow);border:var(--vs-border-width) var(--vs-border-style) var(--vs-border-color);border-top-style:none;border-radius:0 0 var(--vs-border-radius) var(--vs-border-radius);text-align:left;list-style:none;background:var(--vs-dropdown-bg);color:var(--vs-dropdown-color)}.vs__no-options{text-align:center}.vs__dropdown-option{line-height:1.42857143;display:block;padding:var(--vs-dropdown-option-padding);clear:both;color:var(--vs-dropdown-option-color);white-space:nowrap;cursor:pointer}.vs__dropdown-option--highlight{background:var(--vs-dropdown-option--active-bg);color:var(--vs-dropdown-option--active-color)}.vs__dropdown-option--deselect{background:var(--vs-dropdown-option--deselect-bg);color:var(--vs-dropdown-option--deselect-color)}.vs__dropdown-option--disabled{background:var(--vs-state-disabled-bg);color:var(--vs-state-disabled-color);cursor:var(--vs-state-disabled-cursor)}.vs__selected{display:flex;align-items:center;background-color:var(--vs-selected-bg);border:var(--vs-selected-border-width) var(--vs-selected-border-style) var(--vs-selected-border-color);border-radius:var(--vs-border-radius);color:var(--vs-selected-color);line-height:var(--vs-line-height);margin:4px 2px 0;padding:0 .25em;z-index:0}.vs__deselect{display:inline-flex;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-left:4px;padding:0;border:0;cursor:pointer;background:none;fill:var(--vs-controls-color);text-shadow:var(--vs-controls--deselect-text-shadow)}.vs--single .vs__selected{background-color:transparent;border-color:transparent}.vs--single.vs--open .vs__selected,.vs--single.vs--loading .vs__selected{position:absolute;opacity:.4}.vs--single.vs--searching .vs__selected{display:none}.vs__search::-webkit-search-cancel-button{display:none}.vs__search::-webkit-search-decoration,.vs__search::-webkit-search-results-button,.vs__search::-webkit-search-results-decoration,.vs__search::-ms-clear{display:none}.vs__search,.vs__search:focus{color:var(--vs-search-input-color);-webkit-appearance:none;-moz-appearance:none;appearance:none;line-height:var(--vs-line-height);font-size:var(--vs-font-size);border:1px solid transparent;border-left:none;outline:none;margin:4px 0 0;padding:0 7px;background:none;box-shadow:none;width:0;max-width:100%;flex-grow:1;z-index:1}.vs__search::-moz-placeholder{color:var(--vs-search-input-placeholder-color)}.vs__search::placeholder{color:var(--vs-search-input-placeholder-color)}.vs--unsearchable .vs__search{opacity:1}.vs--unsearchable:not(.vs--disabled) .vs__search{cursor:pointer}.vs--single.vs--searching:not(.vs--open):not(.vs--loading) .vs__search{opacity:.2}.vs__spinner{align-self:center;opacity:0;font-size:5px;text-indent:-9999em;overflow:hidden;border-top:.9em solid rgba(100,100,100,.1);border-right:.9em solid rgba(100,100,100,.1);border-bottom:.9em solid rgba(100,100,100,.1);border-left:.9em solid rgba(60,60,60,.45);transform:translateZ(0) scale(var(--vs-controls--spinner-size, var(--vs-controls-size)));-webkit-animation:vSelectSpinner 1.1s infinite linear;animation:vSelectSpinner 1.1s infinite linear;transition:opacity .1s}.vs__spinner,.vs__spinner:after{border-radius:50%;width:5em;height:5em;transform:scale(var(--vs-controls--spinner-size, var(--vs-controls-size)))}.vs--loading .vs__spinner{opacity:1}#msg-template .row{width:100%;display:flex}#msg-template .row .col{flex:1 0 33%}#msg-template .row .col.disable{opacity:0}.VPHome{background:radial-gradient(transparent,#0000004d),url(/Shmily/assets/bg.Byxnk99l.jpg);background-attachment:fixed;background-size:cover}#features[data-v-5a8e89f8]{margin:0 auto;max-width:1000px;background:#ffffffb3;padding:0 20px;box-sizing:content-box;border-radius:10px;box-shadow:0 2px 12px #0000001a}#features .row[data-v-5a8e89f8]{justify-content:center;display:flex;padding:20px 0;border-bottom:1px solid #aaa}#features .row[data-v-5a8e89f8]:nth-child(2n){flex-direction:row-reverse}#features .row:nth-child(2n) .info[data-v-5a8e89f8]{text-align:right}#features .row[data-v-5a8e89f8]:last-child{border-bottom:none}#features .row .info[data-v-5a8e89f8]{flex:1 1 auto;display:flex;align-items:center}#features .row .info .title[data-v-5a8e89f8]{font-weight:700;font-size:18px}#features .row .info .content[data-v-5a8e89f8]{margin-bottom:20px;width:100%}#features .row .info .content p[data-v-5a8e89f8]{font-size:16px;margin:10px 0}#features .row .info .content .tips[data-v-5a8e89f8]{font-size:12px;color:#333;font-style:italic}#features .row .info .content a[data-v-5a8e89f8]{color:#3451b2;text-decoration:underline;padding:0 5px;font-weight:700;font-style:italic}#features .row .cover[data-v-5a8e89f8]{flex:0 0 auto}#features .row .cover img[data-v-5a8e89f8]{display:inline-block;width:100%}@media (max-width: 960px){#features .row[data-v-5a8e89f8]{flex-direction:column!important}#features .row .info[data-v-5a8e89f8],#features .row .cover[data-v-5a8e89f8]{text-align:center!important;padding:0!important}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/Shmily/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e98dd255]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e98dd255]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e257564d]{margin-top:64px}.edit-info[data-v-e257564d]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e257564d]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e257564d]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-e257564d]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e257564d]{margin-right:8px}.prev-next[data-v-e257564d]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-e257564d]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e257564d]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-e257564d]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e257564d]{margin-left:auto;text-align:right}.desc[data-v-e257564d]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e257564d]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-5337faa4]{opacity:1}.moon[data-v-5337faa4],.dark .sun[data-v-5337faa4]{opacity:0}.dark .moon[data-v-5337faa4]{opacity:1}.dark .VPSwitchAppearance[data-v-5337faa4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-6c893767]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-6c893767]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b98bc113]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-b98bc113] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b98bc113] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b98bc113] .group:last-child{padding-bottom:0}.VPMenu[data-v-b98bc113] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b98bc113] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b98bc113] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-b98bc113] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-bb2aa2f0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-bb2aa2f0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-bb2aa2f0]{display:none}}.trans-title[data-v-bb2aa2f0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-bb2aa2f0],.item.social-links[data-v-bb2aa2f0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-bb2aa2f0]{min-width:176px}.appearance-action[data-v-bb2aa2f0]{margin-right:-2px}.social-links-list[data-v-bb2aa2f0]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-dc692963]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-dc692963]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-6aa21345]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-6aa21345]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-6aa21345]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-6aa21345]:not(.home){background-color:transparent}.VPNavBar[data-v-6aa21345]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-6aa21345]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-6aa21345]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-6aa21345]{padding:0}}.container[data-v-6aa21345]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-6aa21345],.container>.content[data-v-6aa21345]{pointer-events:none}.container[data-v-6aa21345] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-6aa21345]{max-width:100%}}.title[data-v-6aa21345]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-6aa21345]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-6aa21345]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-6aa21345]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-6aa21345]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-6aa21345]{column-gap:.5rem}}.menu+.translations[data-v-6aa21345]:before,.menu+.appearance[data-v-6aa21345]:before,.menu+.social-links[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before,.appearance+.social-links[data-v-6aa21345]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before{margin-right:16px}.appearance+.social-links[data-v-6aa21345]:before{margin-left:16px}.social-links[data-v-6aa21345]{margin-right:-8px}.divider[data-v-6aa21345]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-6aa21345]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-6aa21345]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b44890b2]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-b44890b2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-b9ab8c58]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-b9ab8c58]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-b9ab8c58]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-b9ab8c58]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-b9ab8c58]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-b9ab8c58]{transform:rotate(45deg)}.button[data-v-b9ab8c58]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-b9ab8c58]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-b9ab8c58]{transition:transform .25s}.group[data-v-b9ab8c58]:first-child{padding-top:0}.group+.group[data-v-b9ab8c58],.group+.item[data-v-b9ab8c58]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-f2779853]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-f2779853],.VPNavScreen.fade-leave-active[data-v-f2779853]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-f2779853],.VPNavScreen.fade-leave-active .container[data-v-f2779853]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-f2779853],.VPNavScreen.fade-leave-to[data-v-f2779853]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-f2779853],.VPNavScreen.fade-leave-to .container[data-v-f2779853]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-f2779853]{display:none}}.container[data-v-f2779853]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-f2779853],.menu+.appearance[data-v-f2779853],.translations+.appearance[data-v-f2779853]{margin-top:24px}.menu+.social-links[data-v-f2779853]{margin-top:16px}.appearance+.social-links[data-v-f2779853]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b7550ba0]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b7550ba0]{padding-bottom:10px}.item[data-v-b7550ba0]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b7550ba0]{cursor:pointer}.indicator[data-v-b7550ba0]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b7550ba0]{background-color:var(--vp-c-brand-1)}.link[data-v-b7550ba0]{display:flex;align-items:center;flex-grow:1}.text[data-v-b7550ba0]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b7550ba0]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b7550ba0],.VPSidebarItem.level-2 .text[data-v-b7550ba0],.VPSidebarItem.level-3 .text[data-v-b7550ba0],.VPSidebarItem.level-4 .text[data-v-b7550ba0],.VPSidebarItem.level-5 .text[data-v-b7550ba0]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b7550ba0]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.caret[data-v-b7550ba0]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b7550ba0]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b7550ba0]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b7550ba0]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b7550ba0]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b7550ba0],.VPSidebarItem.level-2 .items[data-v-b7550ba0],.VPSidebarItem.level-3 .items[data-v-b7550ba0],.VPSidebarItem.level-4 .items[data-v-b7550ba0],.VPSidebarItem.level-5 .items[data-v-b7550ba0]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b7550ba0]{display:none}.no-transition[data-v-c40bc020] .caret-icon{transition:none}.group+.group[data-v-c40bc020]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c40bc020]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-319d5ca6]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-319d5ca6]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-319d5ca6]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-319d5ca6]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-319d5ca6]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-319d5ca6]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-319d5ca6]{outline:0}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px} diff --git a/guide/concept.html b/guide/concept.html index 64c0c8d..4f6769a 100644 --- a/guide/concept.html +++ b/guide/concept.html @@ -6,13 +6,13 @@ 理念 | Shmily - + - + @@ -29,8 +29,8 @@ / \ / \ MobileQQ: 导出数据库 -> 解密资源(图片等) 数据预处理 大数据图表 -更多来源...

                          将过程分为 Get(后端采集) 和 Show(前端展示), 并细化为 4 个部分(库), 中间使用 Shimly-Msg 标准格式进行融合

                          • Get
                            • ExportDB 从设备导出原始数据(库)并解密
                            • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
                              • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
                              • 能存尽存, 远程的图片及资源使用爬虫本地静态化, 以免以后 URL 失效
                          • Show
                            • ModifyServer 用于手动修改 数据文件添加评论
                            • Web 用于最终显示 时间线大数据图表

                          让过程变为 4 个部分后

                          • 完全解耦, 便于各种二开造轮子, 便于各个阶段变为轮子
                          • 使用现代 Web 框架组件化开发,展示上有了更多可能性. 更多 Show 的问答参考 Shmily-Show/docs/Q_A.md
                          • 多种类、多批次的 Get 都可以融合在一个 Show 中时间线展示

                          问题

                          拆分后势必增加运行成本, 我希望通过批处理等脚本方式粘合各个库之间的运行, 尽量做到开箱即用. 也会完善文档让非程序员也能阅读明白, 如有不懂之处, 欢迎 Github 提 issues.

                          感想

                          花了近 3 年用 JS 写了一大堆的 Get, 我发现还是原生语言开发最方便, 如 MobileQQ 中 Java Serializable问题JS 太难了, 所以以后我还是希望由开源社区贡献与维护 Get, 我会尽力维护 Show 部分.

                          数据本身就归属用户, 不提供数据导出的都是耍流氓.

                          GPLv3 License.

                        - +更多来源...

                      将过程分为 Get(后端采集) 和 Show(前端展示), 并细化为 4 个部分(库), 中间使用 Shimly-Msg 标准格式进行融合

                      • Get
                        • ExportDB 从设备导出原始数据(库)并解密
                        • ToMsg 从解密数据库导出为标准数据 ${Shmily-Msg}, 并解密资源(图片等)
                          • 导出的数据为 json 格式, 并尽可能导出所有数据, 不管用没用,历史不嫌多
                          • 能存尽存, 远程的图片及资源使用爬虫本地静态化, 以免以后 URL 失效
                      • Show
                        • ModifyServer 用于手动修改 数据文件添加评论
                        • Web 用于最终显示 时间线大数据图表

                      让过程变为 4 个部分后

                      • 完全解耦, 便于各种二开造轮子, 便于各个阶段变为轮子
                      • 使用现代 Web 框架组件化开发,展示上有了更多可能性. 更多 Show 的问答参考 Shmily-Show/docs/Q_A.md
                      • 多种类、多批次的 Get 都可以融合在一个 Show 中时间线展示

                      问题

                      拆分后势必增加运行成本, 我希望通过批处理等脚本方式粘合各个库之间的运行, 尽量做到开箱即用. 也会完善文档让非程序员也能阅读明白, 如有不懂之处, 欢迎 Github 提 issues.

                      感想

                      花了近 3 年用 JS 写了一大堆的 Get, 我发现还是原生语言开发最方便, 如 MobileQQ 中 Java Serializable问题JS 太难了, 所以以后我还是希望由开源社区贡献与维护 Get, 我会尽力维护 Show 部分.

                      数据本身就归属用户, 不提供数据导出的都是耍流氓.

                GPLv3 License.

              + \ No newline at end of file diff --git a/guide/other/donation.html b/guide/other/donation.html index 28c51c9..03a3bfb 100644 --- a/guide/other/donation.html +++ b/guide/other/donation.html @@ -6,21 +6,21 @@ 捐赠 | Shmily - + - + -
              Skip to content

              捐赠

              !!! 小熊猫 是世界上最可爱的动物 !!! XD

              https://www.bilibili.com/video/BV1qy4y1s7SJ/


              如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                                          

              请在备注内包含 Shmily 字样
              有问题请请发 Email 或 issues, 我没法通过收款码联系你的


              门票公示


              如果觉得太麻烦,可以付费代劳。淘宝店地址

              贱的那个是 小浣熊, 萌的那个是 小熊猫

              red-panda

              GPLv3 License.

              - +
              Skip to content

              捐赠

              !!! 小熊猫 是世界上最可爱的动物 !!! XD

              https://www.bilibili.com/video/BV1qy4y1s7SJ/


              如果您觉得这个项目对你有帮助, 欢迎投币请我去动物园看 小熊猫

                                          

              请在备注内包含 Shmily 字样
              有问题请请发 Email 或 issues, 我没法通过收款码联系你的


              门票公示


              如果觉得太麻烦,可以付费代劳。淘宝店地址

              贱的那个是 小浣熊, 萌的那个是 小熊猫

              red-panda

              GPLv3 License.

              + \ No newline at end of file diff --git a/guide/other/donation_list.html b/guide/other/donation_list.html index ec558c9..44e47a9 100644 --- a/guide/other/donation_list.html +++ b/guide/other/donation_list.html @@ -6,21 +6,21 @@ Shmily - + - + -
              Skip to content
              门票公示

              TIP

              请在备注内包含 Shmily 字样

              如有遗漏或疑问,请发送截图至 i@lqzh.me

              有问题请请发 Email 或 issues, 我没法通过收款码联系你的


              时间姓名金额来源项目
              2024/12/18 21:11:16J*e8.88WechatShmily
              2024/11/29 17:52:24*R20Wechatwechat-need-web
              2024/11/02 16:01:37s*i6.66Wechat
              2024/10/27 21:58:33*帅1Alipay
              2024/10/10 12:34:38*.8.88Wechatwechat-need-web
              2024/08/14 19:47:58w*h20WechatShmily
              2024/08/12 17:21:15*醚10WechatShmily
              2024/07/15 11:16:14N*d1Wechat
              2024/04/19 11:37:04*勇5Wechat
              2024/04/15 11:34:26A*n88WechatShmily
              2024/04/15 09:25:28$*f88WechatShmily
              2024/03/06 18:08:09*寒10WechatShmily
              2024/02/24 18:15:43a*s2Wechatwechat-need-web
              2024/01/11 23:47:09*晨10AlipayShmily
              2023/12/29 23:34:10*赢10WechatShmily
              2023/12/12 18:48:50t*b18.88WechatShmily
              2023/12/08 09:51:19**焜50AlipayShmily
              2023/11/24 19:18:28*生20WechatShmily
              2023/11/22 10:17:50*羊5.61WechatShmily
              2023/11/19 01:39:48A*s5WechatShmily
              2023/11/18 17:08:15*畅11.11AlipayShmily
              2023/11/18 14:51:42*翔10AlipayShmily
              2023/11/02 14:56:02**勇15AlipayShmily
              2023/09/03 17:12:36*门10WechatShmily

              GPLv3 License.

              - +
              Skip to content
              门票公示

              TIP

              请在备注内包含 Shmily 字样

              如有遗漏或疑问,请发送截图至 i@lqzh.me

              有问题请请发 Email 或 issues, 我没法通过收款码联系你的


              时间姓名金额来源项目
              2024/12/26 15:57:14*雨1WechatShmily
              2024/12/18 21:11:16J*e8.88WechatShmily
              2024/11/29 17:52:24*R20Wechatwechat-need-web
              2024/11/02 16:01:37s*i6.66Wechat
              2024/10/27 21:58:33*帅1Alipay
              2024/10/10 12:34:38*.8.88Wechatwechat-need-web
              2024/08/14 19:47:58w*h20WechatShmily
              2024/08/12 17:21:15*醚10WechatShmily
              2024/07/15 11:16:14N*d1Wechat
              2024/04/19 11:37:04*勇5Wechat
              2024/04/15 11:34:26A*n88WechatShmily
              2024/04/15 09:25:28$*f88WechatShmily
              2024/03/06 18:08:09*寒10WechatShmily
              2024/02/24 18:15:43a*s2Wechatwechat-need-web
              2024/01/11 23:47:09*晨10AlipayShmily
              2023/12/29 23:34:10*赢10WechatShmily
              2023/12/12 18:48:50t*b18.88WechatShmily
              2023/12/08 09:51:19**焜50AlipayShmily
              2023/11/24 19:18:28*生20WechatShmily
              2023/11/22 10:17:50*羊5.61WechatShmily
              2023/11/19 01:39:48A*s5WechatShmily
              2023/11/18 17:08:15*畅11.11AlipayShmily
              2023/11/18 14:51:42*翔10AlipayShmily
              2023/11/02 14:56:02**勇15AlipayShmily
              2023/09/03 17:12:36*门10WechatShmily

              GPLv3 License.

              + \ No newline at end of file diff --git a/guide/other/thanks.html b/guide/other/thanks.html index 664452d..2ae568a 100644 --- a/guide/other/thanks.html +++ b/guide/other/thanks.html @@ -6,21 +6,21 @@ 感谢 | Shmily - + - + - - + + \ No newline at end of file diff --git a/guide/setup-runtime/Android-copy-backup.html b/guide/setup-runtime/Android-copy-backup.html index 849dece..0d0d88f 100644 --- a/guide/setup-runtime/Android-copy-backup.html +++ b/guide/setup-runtime/Android-copy-backup.html @@ -6,21 +6,21 @@ 通过 备份 将 Android 文件复制到电脑 | Shmily - + - + -
              Skip to content

              通过 备份 将 Android 文件复制到电脑

              GPLv3 License.

              - +
              Skip to content

              通过 备份 将 Android 文件复制到电脑

              GPLv3 License.

              + \ No newline at end of file diff --git a/guide/setup-runtime/Android-copy-root.html b/guide/setup-runtime/Android-copy-root.html index c082a13..2ff213e 100644 --- a/guide/setup-runtime/Android-copy-root.html +++ b/guide/setup-runtime/Android-copy-root.html @@ -6,21 +6,21 @@ 通过 root 将 Android 文件复制到电脑 | Shmily - + - + -
              Skip to content

              通过 root 将 Android 文件复制到电脑

              • 如果手机已 root ,通过 ftp 复制到电脑

              • 没有 root

                主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

                • 借一台有 root 的手机
                • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
                  • 在手机上安装模拟器 / 虚拟机
                    • 安卓虚拟机有 vmos 光速虚拟机 等
                  • 在电脑上安装模拟器 / 虚拟机

              GPLv3 License.

              - +
              Skip to content

              通过 root 将 Android 文件复制到电脑

              • 如果手机已 root ,通过 ftp 复制到电脑

              • 没有 root

                主体思路是通过 微信/QQ 等官方数据迁移功能把本机数据迁移到带 rootAndroid 系统内

                • 借一台有 root 的手机
                • 使用 Android 模拟器 / 虚拟机 (一般均自带 root)
                  • 在手机上安装模拟器 / 虚拟机
                    • 安卓虚拟机有 vmos 光速虚拟机 等
                  • 在电脑上安装模拟器 / 虚拟机

              GPLv3 License.

              + \ No newline at end of file diff --git a/guide/setup-runtime/Android-copy.html b/guide/setup-runtime/Android-copy.html index f2a478a..df2803f 100644 --- a/guide/setup-runtime/Android-copy.html +++ b/guide/setup-runtime/Android-copy.html @@ -6,13 +6,13 @@ Android 复制文件到电脑 | Shmily - + - + @@ -31,8 +31,8 @@ - tencent - MicroMsg - ... - - ...

              在不考虑权限的情况下, 可以在手机与电脑在同一个局域网的情况下, 电脑通过 FTP 服务访问手机上的文件

              🎞️ 视频教程

              // Android 通过 ftp 复制文件到电脑

              https://www.bilibili.com/video/BV1o94y1P7zo/

              保护区文件

              大部分应用会将自己的 数据 存放在手机的 保护区, 只有手机的最高管理员 root 可以访问

              所以获取 保护区 文件的方式有两种

    GPLv3 License.

- + - ...

在不考虑权限的情况下, 可以在手机与电脑在同一个局域网的情况下, 电脑通过 FTP 服务访问手机上的文件

🎞️ 视频教程

// Android 通过 ftp 复制文件到电脑

https://www.bilibili.com/video/BV1o94y1P7zo/

保护区文件

大部分应用会将自己的 数据 存放在手机的 保护区, 只有手机的最高管理员 root 可以访问

所以获取 保护区 文件的方式有两种

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/Q&A-detail/cannot-find-module.html b/guide/setup-runtime/Q&A-detail/cannot-find-module.html index 1f59d7c..56f1349 100644 --- a/guide/setup-runtime/Q&A-detail/cannot-find-module.html +++ b/guide/setup-runtime/Q&A-detail/cannot-find-module.html @@ -6,13 +6,13 @@ Cannot find module ‘xxxxxx’ | Shmily - + - + @@ -40,8 +40,8 @@ ] } -Node.js v18.14.0
解决办法

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

- +Node.js v18.14.0
解决办法

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

+ \ No newline at end of file diff --git a/guide/setup-runtime/Q&A.html b/guide/setup-runtime/Q&A.html index dc3e784..6838ba2 100644 --- a/guide/setup-runtime/Q&A.html +++ b/guide/setup-runtime/Q&A.html @@ -6,13 +6,13 @@ Q & A | Shmily - + - + @@ -48,8 +48,8 @@
解决办法

nodejs 没有安装依赖, 参考 nodejs 2.安装依赖

- - + + \ No newline at end of file diff --git a/guide/setup-runtime/docker.html b/guide/setup-runtime/docker.html index 2bd6d03..a1fdba2 100644 --- a/guide/setup-runtime/docker.html +++ b/guide/setup-runtime/docker.html @@ -6,21 +6,21 @@ 开始 docker | Shmily - + - + -
Skip to content

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成

GPLv3 License.

- +
Skip to content

开始 docker

  • 官网下载 docker desktop
  • 全默认下一步完成

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/explain.html b/guide/setup-runtime/explain.html index 4ea5dc1..9c80b44 100644 --- a/guide/setup-runtime/explain.html +++ b/guide/setup-runtime/explain.html @@ -6,21 +6,21 @@ 说明 | Shmily - + - + -
Skip to content

说明

这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行

每个项目有自己所需要的运行时, 按照项目文档进行即可.

不是说这里的运行时你需要全部安装

GPLv3 License.

- +
Skip to content

说明

这里仅作为目录使用, 你不应该来到这里, 请按相应的项目文档进行

每个项目有自己所需要的运行时, 按照项目文档进行即可.

不是说这里的运行时你需要全部安装

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/github-down-repo.html b/guide/setup-runtime/github-down-repo.html index 179d6da..d8373a8 100644 --- a/guide/setup-runtime/github-down-repo.html +++ b/guide/setup-runtime/github-down-repo.html @@ -6,22 +6,22 @@ Github 下载项目 | Shmily - + - + -
Skip to content

GPLv3 License.

- +
Skip to content

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/java.html b/guide/setup-runtime/java.html index 49c8548..a43b10b 100644 --- a/guide/setup-runtime/java.html +++ b/guide/setup-runtime/java.html @@ -6,21 +6,21 @@ 开始 java 项目 | Shmily - + - + -
Skip to content

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

GPLv3 License.

- +
Skip to content

开始 java 项目

  1. 官方下载安装 JDK
  2. 全默认下一步安装完成

FAQ

  • Java heap space

    添加环境变量 JAVA_OPTS=-Xmx4096m // 最大允许 JVM 使用 4G 内存

GPLv3 License.

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-dependencies.html b/guide/setup-runtime/nodejs-dependencies.html index 5e653fa..b47db1e 100644 --- a/guide/setup-runtime/nodejs-dependencies.html +++ b/guide/setup-runtime/nodejs-dependencies.html @@ -6,14 +6,14 @@ 安装 nodejs 项目依赖 | Shmily - + - + @@ -28,8 +28,8 @@ - ... - package.json - README.md - - ...

从本地安装

- + - ...

从本地安装

+ \ No newline at end of file diff --git a/guide/setup-runtime/nodejs-start.html b/guide/setup-runtime/nodejs-start.html index 9175436..9f0df4f 100644 --- a/guide/setup-runtime/nodejs-start.html +++ b/guide/setup-runtime/nodejs-start.html @@ -6,13 +6,13 @@ 启动 nodejs 程序 | Shmily - + - + @@ -31,8 +31,8 @@ 若 `script` 中有多个脚本名称(如上图), 一般来说,`build` 代表生产(正式),`dev` 代表测试 -执行 `npm run build` 即可
  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

    shell
        node index.js
  • - +执行 `npm run build` 即可
  • 若项目 package.json 中没有 script 字段, 则大多数情况下, index.js 为入口文件, 执行:

    shell
        node index.js
  • + \ No newline at end of file diff --git a/guide/setup-runtime/nodejs.html b/guide/setup-runtime/nodejs.html index ba3b20b..b7275cc 100644 --- a/guide/setup-runtime/nodejs.html +++ b/guide/setup-runtime/nodejs.html @@ -6,21 +6,21 @@ 安装 nodejs | Shmily - + - + -
    Skip to content

    安装 nodejs

    • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

      • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
    • https://nodejs.org/dist/ 下载相应版本的 nodejs

      • Windows 平台
        • (推荐) node-v99.99.9-x64.msi 标准安装程序
        • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
        • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
    • 安装过程,选项全部默认

    GPLv3 License.

    - +
    Skip to content

    安装 nodejs

    • 查看项目中 package.jsonengines 字段获取项目所需 nodejs 版本

      • 如果没有 engines 字段,从官网 https://nodejs.org/ 下载 LTS 版本
    • https://nodejs.org/dist/ 下载相应版本的 nodejs

      • Windows 平台
        • (推荐) node-v99.99.9-x64.msi 标准安装程序
        • (不推荐) node-v99.9.9-win-x64.7z / .zip 绿色版, 需要自己配置 Path 环境变量
        • (不推荐) ./win-x64/node.exe 绿色单文件, 不含 npm
    • 安装过程,选项全部默认

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/setup-runtime/php.html b/guide/setup-runtime/php.html index 8ce3a93..93f9ec6 100644 --- a/guide/setup-runtime/php.html +++ b/guide/setup-runtime/php.html @@ -6,21 +6,21 @@ 开始 PHP 项目 | Shmily - + - + -
    Skip to content

    开始 PHP 项目

    1. 官网 下载 PHP

      Windows 下载 VS16 x64 Thread Safe .zip 就行了

    2. 解压 .zipD:\php
    3. 确认 D:\php\php.exe 存在
    4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
    5. 选择 高级 环境变量
    6. 选择 Path,新增一行 D:\php
    7. 确认关闭窗口

    php

    GPLv3 License.

    - +
    Skip to content

    开始 PHP 项目

    1. 官网 下载 PHP

      Windows 下载 VS16 x64 Thread Safe .zip 就行了

    2. 解压 .zipD:\php
    3. 确认 D:\php\php.exe 存在
    4. Win+R快捷键打开 运行, 输入 sysdm.cpl 并执行
    5. 选择 高级 环境变量
    6. 选择 Path,新增一行 D:\php
    7. 确认关闭窗口

    php

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/setup-runtime/python.html b/guide/setup-runtime/python.html index b951869..36ac0ec 100644 --- a/guide/setup-runtime/python.html +++ b/guide/setup-runtime/python.html @@ -6,22 +6,22 @@ 开始 Python 项目 | Shmily - + - + -
    Skip to content

    开始 Python 项目

    1. 安装 python

    • 进入官网下载

    • 勾选 Add python.exe to PATH

      python add path

    • 全默认 下一步 完成

    2. 安装项目依赖

    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

      • 执行命令安装依赖

      shell
      pip install -r requirements.txt

    3.启动程序

    WARNING

    项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

    • 按照项目说明启动程序

    • 若无说明, 一般 main.py 为入口文件

      shell
          python main.py

    GPLv3 License.

    - +
    Skip to content

    开始 Python 项目

    1. 安装 python

    • 进入官网下载

    • 勾选 Add python.exe to PATH

      python add path

    • 全默认 下一步 完成

    2. 安装项目依赖

    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

      • 执行命令安装依赖

      shell
      pip install -r requirements.txt

    3.启动程序

    WARNING

    项目启动方式并不唯一, 下面为常用的项目启动方式, 仅供参考

    • 按照项目说明启动程序

    • 若无说明, 一般 main.py 为入口文件

      shell
          python main.py

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/setup-runtime/snippets/open_cmd.html b/guide/setup-runtime/snippets/open_cmd.html index 94648d2..f29120c 100644 --- a/guide/setup-runtime/snippets/open_cmd.html +++ b/guide/setup-runtime/snippets/open_cmd.html @@ -6,22 +6,22 @@ Shmily - + - + -
    Skip to content
    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    GPLv3 License.

    - +
    Skip to content
    • 命令行打开项目目录
      • Windows 用户在地址栏输入 cmd 回车即可打开当前目录命令行 open cmd

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/tools/Github/visit.html b/guide/tools/Github/visit.html index cea4f2f..732167f 100644 --- a/guide/tools/Github/visit.html +++ b/guide/tools/Github/visit.html @@ -6,21 +6,21 @@ 访问 Github | Shmily - + - + -
    Skip to content

    访问 Github

    如果 Github 访问不顺畅, 可以在 微软商店 搜索 Watt Toolkit

    GPLv3 License.

    - +
    Skip to content

    访问 Github

    如果 Github 访问不顺畅, 可以在 微软商店 搜索 Watt Toolkit

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/tools/Wechat/calc-wechat-key.html b/guide/tools/Wechat/calc-wechat-key.html index 5b92df1..277dbb2 100644 --- a/guide/tools/Wechat/calc-wechat-key.html +++ b/guide/tools/Wechat/calc-wechat-key.html @@ -6,22 +6,22 @@ 计算微信数据库 key | Shmily - + - + -
    Skip to content

    计算微信数据库 key


    key:

    GPLv3 License.

    - +
    Skip to content

    计算微信数据库 key


    key:

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/begin.html b/guide/use/begin.html index 5682915..4c223e3 100644 --- a/guide/use/begin.html +++ b/guide/use/begin.html @@ -6,7 +6,7 @@ 开始吧 | Shmily - + @@ -15,7 +15,7 @@ - + @@ -43,8 +43,8 @@ - ... <-- 其他过程文件及日志 - index.js - package.json - - README.md

    4. 其他说明

    以上是一个 Github 项目运行的完整流程

    以通过 Shmily 导出 电脑QQ聊天记录 为例, 至少需要运行两个 Github 项目,

    1. Get 获取数据, https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT

      得到 数据文件(data)资源文件(QQ_PC_MHT-12345678-20230101.json)

    2. Show 显示数据, https://github.com/lqzhgood/Shmily-Show/

      使用 Get 得到的 "文件" 生成最后的 "显示" 结果

    你可通过多个 Get 获取多个 "文件", 同时导入 Show 获得集中 "显示" 结果

    视频教程

    施工中....

    9 / 43 // 2023-12-10

    开始项目

    大致步骤

    Get(获取数据) ---> Merger(合并数据) ---> Show(展示数据)

    TIP

    大多数情况下 Merger(合并数据) 可以跳过

    1. Get-获取数据

    参考 Get 文档

    2. Merger-合并数据 (可选)

    参考 Merger 文档

    3. Show-展示数据

    参考 Show 文档

    - + - README.md

    4. 其他说明

    以上是一个 Github 项目运行的完整流程

    以通过 Shmily 导出 电脑QQ聊天记录 为例, 至少需要运行两个 Github 项目,

    1. Get 获取数据, https://github.com/lqzhgood/Shmily-Get-QQ-PC_MHT

      得到 数据文件(data)资源文件(QQ_PC_MHT-12345678-20230101.json)

    2. Show 显示数据, https://github.com/lqzhgood/Shmily-Show/

      使用 Get 得到的 "文件" 生成最后的 "显示" 结果

    你可通过多个 Get 获取多个 "文件", 同时导入 Show 获得集中 "显示" 结果

    视频教程

    施工中....

    9 / 43 // 2023-12-10

    开始项目

    大致步骤

    Get(获取数据) ---> Merger(合并数据) ---> Show(展示数据)

    TIP

    大多数情况下 Merger(合并数据) 可以跳过

    1. Get-获取数据

    参考 Get 文档

    2. Merger-合并数据 (可选)

    参考 Merger 文档

    3. Show-展示数据

    参考 Show 文档

    + \ No newline at end of file diff --git a/guide/use/data.html b/guide/use/data.html index 9a0cbbf..1d6588c 100644 --- a/guide/use/data.html +++ b/guide/use/data.html @@ -6,21 +6,21 @@ 资源文件 | Shmily - + - + -
    Skip to content

    资源文件

    路径说明

    资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

    其中 $rootPath 可以在 Get 项目的 config.js 配置.

    修改补充

    如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

    评论资源

    评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

    GPLv3 License.

    - +
    Skip to content

    资源文件

    路径说明

    资源文件路径为 /data/$rootPath/$type/$file, 例如 /data/Wechat-20200101/img/123.jpg

    其中 $rootPath 可以在 Get 项目的 config.js 配置.

    修改补充

    如资源错误或补充, 可以通过 Web ModifyServer 手动修改, 上传的文件会放置到 manual 下, 如 /data/Wechat-20200101/img/manual/123.jpg

    评论资源

    评论资源会通过 Web ModifyServer 上传到 /data/comment/$msgId/123.jpg

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/draft.html b/guide/use/draft.html index aa634c4..a88c214 100644 --- a/guide/use/draft.html +++ b/guide/use/draft.html @@ -6,22 +6,22 @@ Shmily - + - + -
    Skip to content

    2. 安装项目运行时环境

    根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

    也可以按照下面列出的特性, 安装对应语言的运行时

    • nodejs (项目中有 package.json 文件)

    • python (大量 .py 后缀文件)

    • java (大量 .java 后缀文件)

    GPLv3 License.

    - +
    Skip to content

    2. 安装项目运行时环境

    根据不同的项目语言安装不同的运行时环境, Github 会自动标注主要语言 what-languages

    也可以按照下面列出的特性, 安装对应语言的运行时

    • nodejs (项目中有 package.json 文件)

    • python (大量 .py 后缀文件)

    • java (大量 .java 后缀文件)

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/get.html b/guide/use/get.html index b217e4f..0131419 100644 --- a/guide/use/get.html +++ b/guide/use/get.html @@ -6,13 +6,13 @@ Get | Shmily - + - + @@ -35,8 +35,8 @@ - XXXX.json - + + \ No newline at end of file diff --git a/guide/use/merger.html b/guide/use/merger.html index 2aca24e..0a68fc9 100644 --- a/guide/use/merger.html +++ b/guide/use/merger.html @@ -6,21 +6,21 @@ Merger | Shmily - + - + -
    Skip to content

    Merger

    用来对 不同来源(Get), 相同内容数据文件 合并去重

    如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

    可以通过此工具去重 2013-2015 年的部分.

    DANGER

    !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

    支持列表

    • SMS CallLog 短信与通话记录

    GPLv3 License.

    - +
    Skip to content

    Merger

    用来对 不同来源(Get), 相同内容数据文件 合并去重

    如通过 Android 短信 导出了 2010-2015 的短信, QQ 同步助手 导出了 2013-2018 的短信

    可以通过此工具去重 2013-2015 年的部分.

    DANGER

    !!! 如可以接受重复内容, 或多个 数据文件 不含重复内容, 不需要运行此项目 !!!

    支持列表

    • SMS CallLog 短信与通话记录

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/msg/custom.html b/guide/use/msg/custom.html index 2497e0f..4e482bc 100644 --- a/guide/use/msg/custom.html +++ b/guide/use/msg/custom.html @@ -6,13 +6,13 @@ 自定义 | Shmily - + - + @@ -40,8 +40,8 @@ } $Dev: {} // 开发中需要用到的数据,Show 生成数据时会被删除 -}
    1. 标准 格式之外,将数据放入 $source
    2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据

    - +}
    1. 标准 格式之外,将数据放入 $source
    2. Shmily-Show 项目 memoryweb/src/components/Msg/source 下新增前端组件用于显示数据

    + \ No newline at end of file diff --git a/guide/use/msg/other/emotion.html b/guide/use/msg/other/emotion.html index 93a2d88..5b0397b 100644 --- a/guide/use/msg/other/emotion.html +++ b/guide/use/msg/other/emotion.html @@ -6,13 +6,13 @@ 表情 | Shmily - + - + @@ -37,8 +37,8 @@ "rootPath": 'qq-android-lqzh-20230101' ... } -}

    可以参考 wechat 的函数进行统计

    新类型

    如果是新的 Get 类型,需要在 这里 补充统计函数

    表情数据的一些说明

    正向导出

    Wechat、MobileQQ 可以直接从数据库中获取表情的 packNamedesc 等值,这样的就很简单,直接导出即可。

    反向匹配

    如 PC-QQ 无法导出表情类型的消息,更无法获取 packNamedesc,所以所有表情都被视为图片类型被导出

    这种情况可以自己收集表情包,根据表情的 MD5 去匹配导出的图片,从而修正图片类型并补充 packNamedesc

    这是个苦力活,可以参考 Shmily-Get-QQ-PC-MHT 的表情文件集合,和 Show-Modify-msg 辅助的实现。

    - +}

    可以参考 wechat 的函数进行统计

    新类型

    如果是新的 Get 类型,需要在 这里 补充统计函数

    表情数据的一些说明

    正向导出

    Wechat、MobileQQ 可以直接从数据库中获取表情的 packNamedesc 等值,这样的就很简单,直接导出即可。

    反向匹配

    如 PC-QQ 无法导出表情类型的消息,更无法获取 packNamedesc,所以所有表情都被视为图片类型被导出

    这种情况可以自己收集表情包,根据表情的 MD5 去匹配导出的图片,从而修正图片类型并补充 packNamedesc

    这是个苦力活,可以参考 Shmily-Get-QQ-PC-MHT 的表情文件集合,和 Show-Modify-msg 辅助的实现。

    + \ No newline at end of file diff --git a/guide/use/msg/schema.html b/guide/use/msg/schema.html index 4cccb89..0ed4301 100644 --- a/guide/use/msg/schema.html +++ b/guide/use/msg/schema.html @@ -6,13 +6,13 @@ 数据文件-Msg | Shmily - + - + @@ -115,8 +115,8 @@ "id": "camera.json_2009-09-25_10-33-02_g_11e351_1", // 所有消息合并后, 按时间线排序第几条消息 "index": 123 -}]

    因为项目持续了近 3 年, 所以我写的很多早期 Get 并未遵循以上标准, 我会慢慢重构的.

    - +}]

    因为项目持续了近 3 年, 所以我写的很多早期 Get 并未遵循以上标准, 我会慢慢重构的.

    + \ No newline at end of file diff --git a/guide/use/msg/template/index.html b/guide/use/msg/template/index.html index 5a2de9c..a5ebb57 100644 --- a/guide/use/msg/template/index.html +++ b/guide/use/msg/template/index.html @@ -6,22 +6,22 @@ 数据文件-Msg 示例 | Shmily - + - + -
    Skip to content

    数据文件-Msg 示例

    示例有以下几种查看方式

    源码 (推荐)

    最及时最可靠

    Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

    Demo

    更新不及时

    js
    []

    Demo 链接 筛选查看

    from demo web

    GPLv3 License.

    - +
    Skip to content

    数据文件-Msg 示例

    示例有以下几种查看方式

    源码 (推荐)

    最及时最可靠

    Shmily-Show 项目 memoryweb/src/components/Msg/source 下查看组件源码

    Demo

    更新不及时

    js
    []

    Demo 链接 筛选查看

    from demo web

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/use/show.html b/guide/use/show.html index 32f1913..5055aa3 100644 --- a/guide/use/show.html +++ b/guide/use/show.html @@ -6,21 +6,21 @@ Show | Shmily - + - + -
    Skip to content

    Show

    TIP

    有 🎞️ 标记的在项目文档中均包含视频教程

    显示 和 修改

    加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


    Demo

    这是演示站~ 上面加工完就是这个效果~

    GPLv3 License.

    - +
    Skip to content

    Show

    TIP

    有 🎞️ 标记的在项目文档中均包含视频教程

    显示 和 修改

    加工前面 Get 到的所有数据, 用于 显示 / 搜索 / 图表 / 统计 / 评论等~


    Demo

    这是演示站~ 上面加工完就是这个效果~

    GPLv3 License.

    + \ No newline at end of file diff --git a/guide/what-is.html b/guide/what-is.html index 52263ed..c44e3b5 100644 --- a/guide/what-is.html +++ b/guide/what-is.html @@ -6,21 +6,21 @@ 这是啥 | Shmily - + - + -
    Skip to content

    这是啥

    一个悲伤的故事

    我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

    • QQ 微信 等记录能融合, 并用时间线查看
    • 支持搜索过滤查询
    • 可以给消息评论
    • 有图表分析

    然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

    吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

    手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

    总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

    少啰嗦,先看Demo

     

    最后

    不支持用户数据导出的公司都是耍流氓~

    Adun Toridas

    今天,我们将夺回我们的家园,夺回我们的遗产!

    GPLv3 License.

    - +
    Skip to content

    这是啥

    一个悲伤的故事

    我想归档 QQ 微信 短信等记录为冷数据, 搜了一圈发现并没有符合以下条件的方案

    • QQ 微信 等记录能融合, 并用时间线查看
    • 支持搜索过滤查询
    • 可以给消息评论
    • 有图表分析

    然后开始自己造轮子, 以为很简单的项目, 陆陆续续搞了近 3 年, 主要是各种解密难度超乎想象~

    吐槽, 什么让摩尔定律停下脚步? 什么让手机电量锁死一天?

    手机忙得最多的就是加解密吧... 表情包都要加密 2 次呢

    总之我把 归档 这事 "导出" 和 "显示" 分离了, 导出叫 Get, 显示叫 Show, 中间用 <JSON>Msg 粘合

    少啰嗦,先看Demo

     

    最后

    不支持用户数据导出的公司都是耍流氓~

    Adun Toridas

    今天,我们将夺回我们的家园,夺回我们的遗产!

    GPLv3 License.

    + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index d50b7bc..36cb429 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"guide_concept.md":"C5xa82sZ","guide_other_donation.md":"ykEMLzJp","guide_other_donation_list.md":"18p1AXTo","guide_other_thanks.md":"DzewEh8i","guide_setup-runtime_android-copy-backup.md":"B244NozS","guide_setup-runtime_android-copy-root.md":"BUQ9PBdk","guide_setup-runtime_android-copy.md":"5Dh6-HOi","guide_setup-runtime_docker.md":"DrDBMBCL","guide_setup-runtime_explain.md":"8Roxfwdr","guide_setup-runtime_github-down-repo.md":"C0uwsR5V","guide_setup-runtime_java.md":"DkQsnBA-","guide_setup-runtime_nodejs-dependencies.md":"BrWtdyHp","guide_setup-runtime_nodejs-start.md":"2LhyWOin","guide_setup-runtime_nodejs.md":"B_z0yaTN","guide_setup-runtime_php.md":"BkZLT8nr","guide_setup-runtime_python.md":"Dq_AHHr6","guide_setup-runtime_q_a-detail_cannot-find-module.md":"C3BfQKXD","guide_setup-runtime_q_a.md":"CordSzvT","guide_setup-runtime_snippets_open_cmd.md":"DTqr8_DM","guide_tools_github_visit.md":"Db6lYeIP","guide_tools_wechat_calc-wechat-key.md":"D41wNBCO","guide_use_begin.md":"DIhYTDlA","guide_use_data.md":"Oxydr24Y","guide_use_draft.md":"Dv4nnQSo","guide_use_get.md":"C0qEC4Ke","guide_use_merger.md":"pnfRSWwf","guide_use_msg_custom.md":"L8eHfJ5G","guide_use_msg_other_emotion.md":"BoqeCw6a","guide_use_msg_schema.md":"BQ7fwv19","guide_use_msg_template_index.md":"CMANboji","guide_use_show.md":"D9RsAquR","guide_what-is.md":"kKb0IkVm","index.md":"DZbLMCAZ"} +{"guide_concept.md":"bZvMtX-b","guide_other_donation.md":"ByYCsKBj","guide_other_donation_list.md":"CqXEuXtq","guide_other_thanks.md":"D4piGETp","guide_setup-runtime_android-copy-backup.md":"DjJYTD11","guide_setup-runtime_android-copy-root.md":"Dyc9l4SV","guide_setup-runtime_android-copy.md":"CbT9_t-Q","guide_setup-runtime_docker.md":"BE56qQGK","guide_setup-runtime_explain.md":"DqJt1XyY","guide_setup-runtime_github-down-repo.md":"cOd4TVbR","guide_setup-runtime_java.md":"bCBn-kDa","guide_setup-runtime_nodejs-dependencies.md":"cjO_ulOG","guide_setup-runtime_nodejs-start.md":"PBXQcTnV","guide_setup-runtime_nodejs.md":"Cear-ham","guide_setup-runtime_php.md":"D7TRA8P0","guide_setup-runtime_python.md":"D3LX2sw4","guide_setup-runtime_q_a-detail_cannot-find-module.md":"Ddsg7tmK","guide_setup-runtime_q_a.md":"BLp2K7wZ","guide_setup-runtime_snippets_open_cmd.md":"kWtulpZt","guide_tools_github_visit.md":"Cl5ZBBJd","guide_tools_wechat_calc-wechat-key.md":"CUCTao83","guide_use_begin.md":"BMEfmB5j","guide_use_data.md":"BiO81cYb","guide_use_draft.md":"DXPFqo3C","guide_use_get.md":"IrCSHjqs","guide_use_merger.md":"DLoNbGRy","guide_use_msg_custom.md":"BZsQRYju","guide_use_msg_other_emotion.md":"BLupdkQY","guide_use_msg_schema.md":"C01JN3wh","guide_use_msg_template_index.md":"BMsQfUDx","guide_use_show.md":"DjCoOkyV","guide_what-is.md":"BuFHlCIV","index.md":"CNe96jor"} diff --git a/index.html b/index.html index 1e78140..f1d82da 100644 --- a/index.html +++ b/index.html @@ -6,21 +6,21 @@ Shmily - + - + -
    Skip to content

    SHMILY

    历史的归档

    QQ、Wechat、SMS、CallLog、Email……

    icon

    类型多 平台全

    QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型

    * 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!

    以前导出的能合并

    支持将以前导出的数据和现在合并

    历史不再断代

    * 如2013年导出记录(2000-2013)可以
    和2020年导出记录(2007-2020)合并
    在同一时间线查看

    数据全

    记录中的图片、表情、视频等全下载到本地永留存

    数据库字段全导出, 不限于你看到的

    * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

    支持搜索和筛选

    关键词(支持正则)搜索

    * 搜索支持正则,人物支持分组

    * 极致优化,240M数据复杂搜索100ms内出结果

    还有评论和引用

    时间的长河有感而发?添加一条评论或打上一个Tag吧

    引用的消息也会转化为双向链接可快速跳转

    * 评论也可以搜索哦

    图表与统计

    不想看看各种维度的大数据么?

    * 评论里的 Tag 也有统计,开心的次数不能少

    开发

    深入底层优化,240M数据纯前端静态处理

    你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

    标准化、模块化、组件化,开发更容易

    数据字段全导出,总有你能用上的

    数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

    GPLv3 License.

    - +
    Skip to content

    SHMILY

    历史的归档

    QQ、Wechat、SMS、CallLog、Email……

    icon

    类型多 平台全

    QQ、MobileQQ、微信、通话记录、短信、照片视频、Email等各种类型

    * 甚至 Nokia Symbian S60v3 的 MobileQQ 和 短信都可以!

    以前导出的能合并

    支持将以前导出的数据和现在合并

    历史不再断代

    * 如2013年导出记录(2000-2013)可以
    和2020年导出记录(2007-2020)合并
    在同一时间线查看

    数据全

    记录中的图片、表情、视频等全下载到本地永留存

    数据库字段全导出, 不限于你看到的

    * 消息头像上点击右键, 即可在 F12 开发者模式中看到完整数据

    支持搜索和筛选

    关键词(支持正则)搜索

    * 搜索支持正则,人物支持分组

    * 极致优化,240M数据复杂搜索100ms内出结果

    还有评论和引用

    时间的长河有感而发?添加一条评论或打上一个Tag吧

    引用的消息也会转化为双向链接可快速跳转

    * 评论也可以搜索哦

    图表与统计

    不想看看各种维度的大数据么?

    * 评论里的 Tag 也有统计,开心的次数不能少

    开发

    深入底层优化,240M数据纯前端静态处理

    你还想要归档钉钉?导出(Get)、显示(Show)分离,你可以在任意阶段发力

    标准化、模块化、组件化,开发更容易

    数据字段全导出,总有你能用上的

    数据库导出、解密转换、合并清洗全过程解耦,拆开都是小轮子,自己的车装上就能跑

    GPLv3 License.

    + \ No newline at end of file