-1,w[1]=P<0||R-1||Y(w,"default"))&&l.push(h)}}}const u=[i,l];return Z(e)&&s.set(e,u),u}function rr(e){return e[0]!=="$"&&!bt(e)}function or(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function ir(e,t){return or(e)===or(t)}function lr(e,t){return U(t)?t.findIndex(n=>ir(n,e)):K(t)&&ir(t,e)?0:-1}const Ro=e=>e[0]==="_"||e==="$stable",Fs=e=>U(e)?e.map(Ae):[Ae(e)],Kl=(e,t,n)=>{if(t._n)return t;const s=ul((...r)=>Fs(t(...r)),n);return s._c=!1,s},Lo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ro(r))continue;const o=e[r];if(K(o))t[r]=Kl(r,o,s);else if(o!=null){const i=Fs(o);t[r]=()=>i}}},Io=(e,t)=>{const n=Fs(t);e.slots.default=()=>n},Wl=(e,t)=>{const n=e.slots=So();if(e.vnode.shapeFlag&32){const s=t._;s?(re(n,t),$r(n,"_",s,!0)):Lo(t,n)}else t&&Io(e,t)},ql=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(re(r,t),!n&&l===1&&delete r._):(o=!t.$stable,Lo(t,r)),i=t}else t&&(Io(e,t),i={default:1});if(o)for(const l in r)!Ro(l)&&i[l]==null&&delete r[l]};function gn(e,t,n,s,r=!1){if(U(e)){e.forEach((m,w)=>gn(m,t&&(U(t)?t[w]:t),n,s,r));return}if(wt(s)&&!r)return;const o=s.shapeFlag&4?Hn(s.component)||s.component.proxy:s.el,i=r?null:o,{i:l,r:c}=e,u=t&&t.r,d=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(u!=null&&u!==c&&(se(u)?(d[u]=null,Y(h,u)&&(h[u]=null)):de(u)&&(u.value=null)),K(c))Ye(c,l,12,[i,d]);else{const m=se(c),w=de(c);if(m||w){const R=()=>{if(e.f){const P=m?Y(h,c)?h[c]:d[c]:c.value;r?U(P)&&bs(P,o):U(P)?P.includes(o)||P.push(o):m?(d[c]=[o],Y(h,c)&&(h[c]=d[c])):(c.value=[o],e.k&&(d[e.k]=c.value))}else m?(d[c]=i,Y(h,c)&&(h[c]=i)):w&&(c.value=i,e.k&&(d[e.k]=i))};i?(R.id=-1,pe(R,n)):R()}}}let Ue=!1;const Gl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",zl=e=>e.namespaceURI.includes("MathML"),Zt=e=>{if(Gl(e))return"svg";if(zl(e))return"mathml"},en=e=>e.nodeType===8;function Xl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:u}}=e,d=(g,y)=>{if(!y.hasChildNodes()){n(null,g,y),dn(),y._vnode=g;return}Ue=!1,h(y.firstChild,g,null,null,null),dn(),y._vnode=g,Ue&&console.error("Hydration completed but contains mismatches.")},h=(g,y,M,L,D,A=!1)=>{A=A||!!y.dynamicChildren;const j=en(g)&&g.data==="[",E=()=>P(g,y,M,L,D,j),{type:V,ref:S,shapeFlag:W,patchFlag:oe}=y;let ce=g.nodeType;y.el=g,oe===-2&&(A=!1,y.dynamicChildren=null);let H=null;switch(V){case Ct:ce!==3?y.children===""?(c(y.el=r(""),i(g),g),H=g):H=E():(g.data!==y.children&&(Ue=!0,g.data=y.children),H=o(g));break;case ye:G(g)?(H=o(g),q(y.el=g.content.firstChild,g,M)):ce!==8||j?H=E():H=o(g);break;case Pt:if(j&&(g=o(g),ce=g.nodeType),ce===1||ce===3){H=g;const X=!y.children.length;for(let F=0;F{A=A||!!y.dynamicChildren;const{type:j,props:E,patchFlag:V,shapeFlag:S,dirs:W,transition:oe}=y,ce=j==="input"||j==="option";if(ce||V!==-1){W&&Me(y,null,M,"created");let H=!1;if(G(g)){H=Mo(L,oe)&&M&&M.vnode.props&&M.vnode.props.appear;const F=g.content.firstChild;H&&oe.beforeEnter(F),q(F,g,M),y.el=g=F}if(S&16&&!(E&&(E.innerHTML||E.textContent))){let F=w(g.firstChild,y,g,M,L,D,A);for(;F;){Ue=!0;const Fe=F;F=F.nextSibling,l(Fe)}}else S&8&&g.textContent!==y.children&&(Ue=!0,g.textContent=y.children);if(E)if(ce||!A||V&48)for(const F in E)(ce&&(F.endsWith("value")||F==="indeterminate")||Bt(F)&&!bt(F)||F[0]===".")&&s(g,F,null,E[F],void 0,void 0,M);else E.onClick&&s(g,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ee(X,M,y),W&&Me(y,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||W||H)&&fo(()=>{X&&Ee(X,M,y),H&&oe.enter(g),W&&Me(y,null,M,"mounted")},L)}return g.nextSibling},w=(g,y,M,L,D,A,j)=>{j=j||!!y.dynamicChildren;const E=y.children,V=E.length;for(let S=0;S{const{slotScopeIds:j}=y;j&&(D=D?D.concat(j):j);const E=i(g),V=w(o(g),y,E,M,L,D,A);return V&&en(V)&&V.data==="]"?o(y.anchor=V):(Ue=!0,c(y.anchor=u("]"),E,V),V)},P=(g,y,M,L,D,A)=>{if(Ue=!0,y.el=null,A){const V=B(g);for(;;){const S=o(g);if(S&&S!==V)l(S);else break}}const j=o(g),E=i(g);return l(g),n(null,y,E,j,M,L,Zt(E),D),j},B=(g,y="[",M="]")=>{let L=0;for(;g;)if(g=o(g),g&&en(g)&&(g.data===y&&L++,g.data===M)){if(L===0)return o(g);L--}return g},q=(g,y,M)=>{const L=y.parentNode;L&&L.replaceChild(g,y);let D=M;for(;D;)D.vnode.el===y&&(D.vnode.el=D.subTree.el=g),D=D.parent},G=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[d,h]}const pe=fo;function Yl(e){return Jl(e,Xl)}function Jl(e,t){const n=jr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:u,setElementText:d,parentNode:h,nextSibling:m,setScopeId:w=xe,insertStaticContent:R}=e,P=(a,f,p,_=null,b=null,x=null,O=void 0,C=null,T=!!f.dynamicChildren)=>{if(a===f)return;a&&!ct(a,f)&&(_=Wt(a),Le(a,b,x,!0),a=null),f.patchFlag===-2&&(T=!1,f.dynamicChildren=null);const{type:v,ref:I,shapeFlag:$}=f;switch(v){case Ct:B(a,f,p,_);break;case ye:q(a,f,p,_);break;case Pt:a==null&&G(f,p,_,O);break;case ge:S(a,f,p,_,b,x,O,C,T);break;default:$&1?M(a,f,p,_,b,x,O,C,T):$&6?W(a,f,p,_,b,x,O,C,T):($&64||$&128)&&v.process(a,f,p,_,b,x,O,C,T,gt)}I!=null&&b&&gn(I,a&&a.ref,x,f||a,!f)},B=(a,f,p,_)=>{if(a==null)s(f.el=l(f.children),p,_);else{const b=f.el=a.el;f.children!==a.children&&u(b,f.children)}},q=(a,f,p,_)=>{a==null?s(f.el=c(f.children||""),p,_):f.el=a.el},G=(a,f,p,_)=>{[a.el,a.anchor]=R(a.children,f,p,_,a.el,a.anchor)},g=({el:a,anchor:f},p,_)=>{let b;for(;a&&a!==f;)b=m(a),s(a,p,_),a=b;s(f,p,_)},y=({el:a,anchor:f})=>{let p;for(;a&&a!==f;)p=m(a),r(a),a=p;r(f)},M=(a,f,p,_,b,x,O,C,T)=>{f.type==="svg"?O="svg":f.type==="math"&&(O="mathml"),a==null?L(f,p,_,b,x,O,C,T):j(a,f,b,x,O,C,T)},L=(a,f,p,_,b,x,O,C)=>{let T,v;const{props:I,shapeFlag:$,transition:N,dirs:k}=a;if(T=a.el=i(a.type,x,I&&I.is,I),$&8?d(T,a.children):$&16&&A(a.children,T,null,_,b,qn(a,x),O,C),k&&Me(a,null,_,"created"),D(T,a,a.scopeId,O,_),I){for(const Q in I)Q!=="value"&&!bt(Q)&&o(T,Q,null,I[Q],x,a.children,_,b,He);"value"in I&&o(T,"value",null,I.value,x),(v=I.onVnodeBeforeMount)&&Ee(v,_,a)}k&&Me(a,null,_,"beforeMount");const z=Mo(b,N);z&&N.beforeEnter(T),s(T,f,p),((v=I&&I.onVnodeMounted)||z||k)&&pe(()=>{v&&Ee(v,_,a),z&&N.enter(T),k&&Me(a,null,_,"mounted")},b)},D=(a,f,p,_,b)=>{if(p&&w(a,p),_)for(let x=0;x<_.length;x++)w(a,_[x]);if(b){let x=b.subTree;if(f===x){const O=b.vnode;D(a,O,O.scopeId,O.slotScopeIds,b.parent)}}},A=(a,f,p,_,b,x,O,C,T=0)=>{for(let v=T;v{const C=f.el=a.el;let{patchFlag:T,dynamicChildren:v,dirs:I}=f;T|=a.patchFlag&16;const $=a.props||ee,N=f.props||ee;let k;if(p&&rt(p,!1),(k=N.onVnodeBeforeUpdate)&&Ee(k,p,f,a),I&&Me(f,a,p,"beforeUpdate"),p&&rt(p,!0),v?E(a.dynamicChildren,v,C,p,_,qn(f,b),x):O||F(a,f,C,null,p,_,qn(f,b),x,!1),T>0){if(T&16)V(C,f,$,N,p,_,b);else if(T&2&&$.class!==N.class&&o(C,"class",null,N.class,b),T&4&&o(C,"style",$.style,N.style,b),T&8){const z=f.dynamicProps;for(let Q=0;Q{k&&Ee(k,p,f,a),I&&Me(f,a,p,"updated")},_)},E=(a,f,p,_,b,x,O)=>{for(let C=0;C{if(p!==_){if(p!==ee)for(const C in p)!bt(C)&&!(C in _)&&o(a,C,p[C],null,O,f.children,b,x,He);for(const C in _){if(bt(C))continue;const T=_[C],v=p[C];T!==v&&C!=="value"&&o(a,C,v,T,O,f.children,b,x,He)}"value"in _&&o(a,"value",p.value,_.value,O)}},S=(a,f,p,_,b,x,O,C,T)=>{const v=f.el=a?a.el:l(""),I=f.anchor=a?a.anchor:l("");let{patchFlag:$,dynamicChildren:N,slotScopeIds:k}=f;k&&(C=C?C.concat(k):k),a==null?(s(v,p,_),s(I,p,_),A(f.children||[],p,I,b,x,O,C,T)):$>0&&$&64&&N&&a.dynamicChildren?(E(a.dynamicChildren,N,p,b,x,O,C),(f.key!=null||b&&f===b.subTree)&&Po(a,f,!0)):F(a,f,p,I,b,x,O,C,T)},W=(a,f,p,_,b,x,O,C,T)=>{f.slotScopeIds=C,a==null?f.shapeFlag&512?b.ctx.activate(f,p,_,O,T):oe(f,p,_,b,x,O,T):ce(a,f,T)},oe=(a,f,p,_,b,x,O)=>{const C=a.component=ic(a,_,b);if(In(a)&&(C.ctx.renderer=gt),lc(C),C.asyncDep){if(b&&b.registerDep(C,H),!a.el){const T=C.subTree=ue(ye);q(null,T,f,p)}}else H(C,a,f,p,b,x,O)},ce=(a,f,p)=>{const _=f.component=a.component;if(hl(a,f,p))if(_.asyncDep&&!_.asyncResolved){X(_,f,p);return}else _.next=f,il(_.update),_.effect.dirty=!0,_.update();else f.el=a.el,_.vnode=f},H=(a,f,p,_,b,x,O)=>{const C=()=>{if(a.isMounted){let{next:I,bu:$,u:N,parent:k,vnode:z}=a;{const mt=No(a);if(mt){I&&(I.el=z.el,X(a,I,O)),mt.asyncDep.then(()=>{a.isUnmounted||C()});return}}let Q=I,te;rt(a,!1),I?(I.el=z.el,X(a,I,O)):I=z,$&&Un($),(te=I.props&&I.props.onVnodeBeforeUpdate)&&Ee(te,k,I,z),rt(a,!0);const le=kn(a),Te=a.subTree;a.subTree=le,P(Te,le,h(Te.el),Wt(Te),a,b,x),I.el=le.el,Q===null&&pl(a,le.el),N&&pe(N,b),(te=I.props&&I.props.onVnodeUpdated)&&pe(()=>Ee(te,k,I,z),b)}else{let I;const{el:$,props:N}=f,{bm:k,m:z,parent:Q}=a,te=wt(f);if(rt(a,!1),k&&Un(k),!te&&(I=N&&N.onVnodeBeforeMount)&&Ee(I,Q,f),rt(a,!0),$&&Vn){const le=()=>{a.subTree=kn(a),Vn($,a.subTree,a,b,null)};te?f.type.__asyncLoader().then(()=>!a.isUnmounted&&le()):le()}else{const le=a.subTree=kn(a);P(null,le,p,_,a,b,x),f.el=le.el}if(z&&pe(z,b),!te&&(I=N&&N.onVnodeMounted)){const le=f;pe(()=>Ee(I,Q,le),b)}(f.shapeFlag&256||Q&&wt(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&pe(a.a,b),a.isMounted=!0,f=p=_=null}},T=a.effect=new Cs(C,xe,()=>Ms(v),a.scope),v=a.update=()=>{T.dirty&&T.run()};v.id=a.uid,rt(a,!0),v()},X=(a,f,p)=>{f.component=a;const _=a.vnode.props;a.vnode=f,a.next=null,kl(a,f.props,_,p),ql(a,f.children,p),tt(),Ys(a),nt()},F=(a,f,p,_,b,x,O,C,T=!1)=>{const v=a&&a.children,I=a?a.shapeFlag:0,$=f.children,{patchFlag:N,shapeFlag:k}=f;if(N>0){if(N&128){Kt(v,$,p,_,b,x,O,C,T);return}else if(N&256){Fe(v,$,p,_,b,x,O,C,T);return}}k&8?(I&16&&He(v,b,x),$!==v&&d(p,$)):I&16?k&16?Kt(v,$,p,_,b,x,O,C,T):He(v,b,x,!0):(I&8&&d(p,""),k&16&&A($,p,_,b,x,O,C,T))},Fe=(a,f,p,_,b,x,O,C,T)=>{a=a||yt,f=f||yt;const v=a.length,I=f.length,$=Math.min(v,I);let N;for(N=0;N<$;N++){const k=f[N]=T?qe(f[N]):Ae(f[N]);P(a[N],k,p,null,b,x,O,C,T)}v>I?He(a,b,x,!0,!1,$):A(f,p,_,b,x,O,C,T,$)},Kt=(a,f,p,_,b,x,O,C,T)=>{let v=0;const I=f.length;let $=a.length-1,N=I-1;for(;v<=$&&v<=N;){const k=a[v],z=f[v]=T?qe(f[v]):Ae(f[v]);if(ct(k,z))P(k,z,p,null,b,x,O,C,T);else break;v++}for(;v<=$&&v<=N;){const k=a[$],z=f[N]=T?qe(f[N]):Ae(f[N]);if(ct(k,z))P(k,z,p,null,b,x,O,C,T);else break;$--,N--}if(v>$){if(v<=N){const k=N+1,z=kN)for(;v<=$;)Le(a[v],b,x,!0),v++;else{const k=v,z=v,Q=new Map;for(v=z;v<=N;v++){const be=f[v]=T?qe(f[v]):Ae(f[v]);be.key!=null&&Q.set(be.key,v)}let te,le=0;const Te=N-z+1;let mt=!1,Ds=0;const St=new Array(Te);for(v=0;v=Te){Le(be,b,x,!0);continue}let Ie;if(be.key!=null)Ie=Q.get(be.key);else for(te=z;te<=N;te++)if(St[te-z]===0&&ct(be,f[te])){Ie=te;break}Ie===void 0?Le(be,b,x,!0):(St[Ie-z]=v+1,Ie>=Ds?Ds=Ie:mt=!0,P(be,f[Ie],p,null,b,x,O,C,T),le++)}const Vs=mt?Ql(St):yt;for(te=Vs.length-1,v=Te-1;v>=0;v--){const be=z+v,Ie=f[be],Us=be+1{const{el:x,type:O,transition:C,children:T,shapeFlag:v}=a;if(v&6){st(a.component.subTree,f,p,_);return}if(v&128){a.suspense.move(f,p,_);return}if(v&64){O.move(a,f,p,gt);return}if(O===ge){s(x,f,p);for(let $=0;$C.enter(x),b);else{const{leave:$,delayLeave:N,afterLeave:k}=C,z=()=>s(x,f,p),Q=()=>{$(x,()=>{z(),k&&k()})};N?N(x,z,Q):Q()}else s(x,f,p)},Le=(a,f,p,_=!1,b=!1)=>{const{type:x,props:O,ref:C,children:T,dynamicChildren:v,shapeFlag:I,patchFlag:$,dirs:N}=a;if(C!=null&&gn(C,null,p,a,!0),I&256){f.ctx.deactivate(a);return}const k=I&1&&N,z=!wt(a);let Q;if(z&&(Q=O&&O.onVnodeBeforeUnmount)&&Ee(Q,f,a),I&6)fi(a.component,p,_);else{if(I&128){a.suspense.unmount(p,_);return}k&&Me(a,null,f,"beforeUnmount"),I&64?a.type.remove(a,f,p,b,gt,_):v&&(x!==ge||$>0&&$&64)?He(v,f,p,!1,!0):(x===ge&&$&384||!b&&I&16)&&He(T,f,p),_&&$s(a)}(z&&(Q=O&&O.onVnodeUnmounted)||k)&&pe(()=>{Q&&Ee(Q,f,a),k&&Me(a,null,f,"unmounted")},p)},$s=a=>{const{type:f,el:p,anchor:_,transition:b}=a;if(f===ge){ui(p,_);return}if(f===Pt){y(a);return}const x=()=>{r(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:O,delayLeave:C}=b,T=()=>O(p,x);C?C(a.el,x,T):T()}else x()},ui=(a,f)=>{let p;for(;a!==f;)p=m(a),r(a),a=p;r(f)},fi=(a,f,p)=>{const{bum:_,scope:b,update:x,subTree:O,um:C}=a;_&&Un(_),b.stop(),x&&(x.active=!1,Le(O,a,f,p)),C&&pe(C,f),pe(()=>{a.isUnmounted=!0},f),f&&f.pendingBranch&&!f.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===f.pendingId&&(f.deps--,f.deps===0&&f.resolve())},He=(a,f,p,_=!1,b=!1,x=0)=>{for(let O=x;Oa.shapeFlag&6?Wt(a.component.subTree):a.shapeFlag&128?a.suspense.next():m(a.anchor||a.el);let jn=!1;const js=(a,f,p)=>{a==null?f._vnode&&Le(f._vnode,null,null,!0):P(f._vnode||null,a,f,null,null,null,p),jn||(jn=!0,Ys(),dn(),jn=!1),f._vnode=a},gt={p:P,um:Le,m:st,r:$s,mt:oe,mc:A,pc:F,pbc:E,n:Wt,o:e};let Dn,Vn;return t&&([Dn,Vn]=t(gt)),{render:js,hydrate:Dn,createApp:Vl(js,Dn)}}function qn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Mo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Po(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function No(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:No(t)}const Zl=e=>e.__isTeleport,ge=Symbol.for("v-fgt"),Ct=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Pt=Symbol.for("v-stc"),Nt=[];let Oe=null;function Fo(e=!1){Nt.push(Oe=e?null:[])}function ec(){Nt.pop(),Oe=Nt[Nt.length-1]||null}let Vt=1;function cr(e){Vt+=e}function Ho(e){return e.dynamicChildren=Vt>0?Oe||yt:null,ec(),Vt>0&&Oe&&Oe.push(e),e}function Ga(e,t,n,s,r,o){return Ho(Do(e,t,n,s,r,o,!0))}function $o(e,t,n,s,r){return Ho(ue(e,t,n,s,r,!0))}function mn(e){return e?e.__v_isVNode===!0:!1}function ct(e,t){return e.type===t.type&&e.key===t.key}const jo=({key:e})=>e??null,ln=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||de(e)||K(e)?{i:ie,r:e,k:t,f:!!n}:e:null);function Do(e,t=null,n=null,s=0,r=null,o=e===ge?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&jo(t),ref:t&&ln(t),scopeId:Rn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ie};return l?(Hs(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Vt>0&&!i&&Oe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Oe.push(c),c}const ue=tc;function tc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===ao)&&(e=ye),mn(e)){const l=et(e,t,!0);return n&&Hs(l,n),Vt>0&&!o&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(fc(e)&&(e=e.__vccOpts),t){t=nc(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Es(l)),Z(c)&&(Zr(c)&&!U(c)&&(c=re({},c)),t.style=ws(c))}const i=se(e)?1:gl(e)?128:Zl(e)?64:Z(e)?4:K(e)?2:0;return Do(e,t,n,s,r,i,o,!0)}function nc(e){return e?Zr(e)||To(e)?re({},e):e:null}function et(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,u=t?sc(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&jo(u),ref:t&&t.ref?n&&o?U(o)?o.concat(ln(t)):[o,ln(t)]:ln(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&et(e.ssContent),ssFallback:e.ssFallback&&et(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&(d.transition=c.clone(d)),d}function Vo(e=" ",t=0){return ue(Ct,null,e,t)}function za(e,t){const n=ue(Pt,null,e);return n.staticCount=t,n}function Xa(e="",t=!1){return t?(Fo(),$o(ye,null,e)):ue(ye,null,e)}function Ae(e){return e==null||typeof e=="boolean"?ue(ye):U(e)?ue(ge,null,e.slice()):typeof e=="object"?qe(e):ue(Ct,null,String(e))}function qe(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:et(e)}function Hs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Hs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!To(t)?t._ctx=ie:r===3&&ie&&(ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:ie},n=32):(t=String(t),s&64?(n=16,t=[Vo(t)]):n=8);e.children=t,e.shapeFlag|=n}function sc(...e){const t={};for(let n=0;nae||ie;let yn,ps;{const e=jr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};yn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),ps=t("__VUE_SSR_SETTERS__",n=>Fn=n)}const kt=e=>{const t=ae;return yn(e),e.scope.on(),()=>{e.scope.off(),yn(t)}},ar=()=>{ae&&ae.scope.off(),yn(null)};function Uo(e){return e.vnode.shapeFlag&4}let Fn=!1;function lc(e,t=!1){t&&ps(t);const{props:n,children:s}=e.vnode,r=Uo(e);Bl(e,n,r,t),Wl(e,s);const o=r?cc(e,t):void 0;return t&&ps(!1),o}function cc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ml);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?ko(e):null,o=kt(e);tt();const i=Ye(s,e,0,[e.props,r]);if(nt(),o(),Nr(i)){if(i.then(ar,ar),t)return i.then(l=>{ur(e,l,t)}).catch(l=>{Tn(l,e,0)});e.asyncDep=i}else ur(e,i,t)}else Bo(e,t)}function ur(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ro(t)),Bo(e,n)}let fr;function Bo(e,t,n){const s=e.type;if(!e.render){if(!t&&fr&&!s.render){const r=s.template||Ns(e).template;if(r){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,u=re(re({isCustomElement:o,delimiters:l},i),c);s.render=fr(r,u)}}e.render=s.render||xe}{const r=kt(e);tt();try{Nl(e)}finally{nt(),r()}}}const ac={get(e,t){return _e(e,"get",""),e[t]}};function ko(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,ac),slots:e.slots,emit:e.emit,expose:t}}function Hn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ro(on(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}}))}function uc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function fc(e){return K(e)&&"__vccOpts"in e}const ne=(e,t)=>Xi(e,t,Fn);function gs(e,t,n){const s=arguments.length;return s===2?Z(t)&&!U(t)?mn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&mn(n)&&(n=[n]),ue(e,t,n))}const dc="3.4.27";/**
+* @vue/runtime-dom v3.4.27
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/const hc="http://www.w3.org/2000/svg",pc="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,dr=Ge&&Ge.createElement("template"),gc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ge.createElementNS(hc,e):t==="mathml"?Ge.createElementNS(pc,e):Ge.createElement(e,n?{is:n}:void 0);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{dr.innerHTML=s==="svg"?`${e} `:s==="mathml"?`${e} `:e;const l=dr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Be="transition",Tt="animation",Ut=Symbol("_vtc"),Ko=(e,{slots:t})=>gs(wl,mc(e),t);Ko.displayName="Transition";const Wo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ko.props=re({},go,Wo);const ot=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},hr=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function mc(e){const t={};for(const S in e)S in Wo||(t[S]=e[S]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:u=i,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,R=yc(r),P=R&&R[0],B=R&&R[1],{onBeforeEnter:q,onEnter:G,onEnterCancelled:g,onLeave:y,onLeaveCancelled:M,onBeforeAppear:L=q,onAppear:D=G,onAppearCancelled:A=g}=t,j=(S,W,oe)=>{it(S,W?d:l),it(S,W?u:i),oe&&oe()},E=(S,W)=>{S._isLeaving=!1,it(S,h),it(S,w),it(S,m),W&&W()},V=S=>(W,oe)=>{const ce=S?D:G,H=()=>j(W,S,oe);ot(ce,[W,H]),pr(()=>{it(W,S?c:o),ke(W,S?d:l),hr(ce)||gr(W,s,P,H)})};return re(t,{onBeforeEnter(S){ot(q,[S]),ke(S,o),ke(S,i)},onBeforeAppear(S){ot(L,[S]),ke(S,c),ke(S,u)},onEnter:V(!1),onAppear:V(!0),onLeave(S,W){S._isLeaving=!0;const oe=()=>E(S,W);ke(S,h),ke(S,m),vc(),pr(()=>{S._isLeaving&&(it(S,h),ke(S,w),hr(y)||gr(S,s,B,oe))}),ot(y,[S,oe])},onEnterCancelled(S){j(S,!1),ot(g,[S])},onAppearCancelled(S){j(S,!0),ot(A,[S])},onLeaveCancelled(S){E(S),ot(M,[S])}})}function yc(e){if(e==null)return null;if(Z(e))return[Gn(e.enter),Gn(e.leave)];{const t=Gn(e);return[t,t]}}function Gn(e){return _i(e)}function ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function it(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function pr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let _c=0;function gr(e,t,n,s){const r=e._endId=++_c,o=()=>{r===e._endId&&s()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=bc(e,t);if(!i)return s();const u=i+"end";let d=0;const h=()=>{e.removeEventListener(u,m),o()},m=w=>{w.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[R]||"").split(", "),r=s(`${Be}Delay`),o=s(`${Be}Duration`),i=mr(r,o),l=s(`${Tt}Delay`),c=s(`${Tt}Duration`),u=mr(l,c);let d=null,h=0,m=0;t===Be?i>0&&(d=Be,h=i,m=o.length):t===Tt?u>0&&(d=Tt,h=u,m=c.length):(h=Math.max(i,u),d=h>0?i>u?Be:Tt:null,m=d?d===Be?o.length:c.length:0);const w=d===Be&&/\b(transform|all)(,|$)/.test(s(`${Be}Property`).toString());return{type:d,timeout:h,propCount:m,hasTransform:w}}function mr(e,t){for(;e.lengthyr(n)+yr(e[s])))}function yr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function vc(){return document.body.offsetHeight}function wc(e,t,n){const s=e[Ut];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const _n=Symbol("_vod"),qo=Symbol("_vsh"),Ya={beforeMount(e,{value:t},{transition:n}){e[_n]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):At(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),At(e,!0),s.enter(e)):s.leave(e,()=>{At(e,!1)}):At(e,t))},beforeUnmount(e,{value:t}){At(e,t)}};function At(e,t){e.style.display=t?e[_n]:"none",e[qo]=!t}const Ec=Symbol(""),Cc=/(^|;)\s*display\s*:/;function xc(e,t,n){const s=e.style,r=se(n);let o=!1;if(n&&!r){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&cn(s,l,"")}else for(const i in t)n[i]==null&&cn(s,i,"");for(const i in n)i==="display"&&(o=!0),cn(s,i,n[i])}else if(r){if(t!==n){const i=s[Ec];i&&(n+=";"+i),s.cssText=n,o=Cc.test(n)}}else t&&e.removeAttribute("style");_n in e&&(e[_n]=o?s.display:"",e[qo]&&(s.display="none"))}const _r=/\s*!important$/;function cn(e,t,n){if(U(n))n.forEach(s=>cn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Sc(e,t);_r.test(n)?e.setProperty(pt(s),n.replace(_r,""),"important"):e[s]=n}}const br=["Webkit","Moz","ms"],zn={};function Sc(e,t){const n=zn[t];if(n)return n;let s=Ne(t);if(s!=="filter"&&s in e)return zn[t]=s;s=En(s);for(let r=0;rXn||(Mc.then(()=>Xn=0),Xn=Date.now());function Nc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Se(Fc(s,n.value),t,5,[s])};return n.value=e,n.attached=Pc(),n}function Fc(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Cr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Hc=(e,t,n,s,r,o,i,l,c)=>{const u=r==="svg";t==="class"?wc(e,s,u):t==="style"?xc(e,n,s):Bt(t)?_s(t)||Lc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):$c(e,t,s,u))?Ac(e,t,s,o,i,l,c):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Tc(e,t,s,u))};function $c(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Cr(t)&&K(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Cr(t)&&se(n)?!1:t in e}const jc=["ctrl","shift","alt","meta"],Dc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>jc.some(n=>e[`${n}Key`]&&!t.includes(n))},Ja=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=pt(r.key);if(t.some(i=>i===o||Vc[i]===o))return e(r)})},Uc=re({patchProp:Hc},gc);let Yn,xr=!1;function Bc(){return Yn=xr?Yn:Yl(Uc),xr=!0,Yn}const Za=(...e)=>{const t=Bc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Kc(s);if(r)return n(r,!0,kc(r))},t};function kc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Kc(e){return se(e)?document.querySelector(e):e}const eu=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n};function $n(e){return Ur()?(Ai(e),!0):!1}function Je(e){return typeof e=="function"?e():so(e)}const Go=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Wc=Object.prototype.toString,qc=e=>Wc.call(e)==="[object Object]",Ft=()=>{},ms=Gc();function Gc(){var e,t;return Go&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function zc(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}const zo=e=>e();function Xc(e=zo){const t=me(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...o)=>{t.value&&e(...o)};return{isActive:Sn(t),pause:n,resume:s,eventFilter:r}}function Yc(e){return Nn()}function Xo(...e){if(e.length!==1)return nl(...e);const t=e[0];return typeof t=="function"?Sn(Zi(()=>({get:t,set:Ft}))):me(t)}function Jc(e,t,n={}){const{eventFilter:s=zo,...r}=n;return je(e,zc(s,t),r)}function Qc(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=Xc(s);return{stop:Jc(e,t,{...r,eventFilter:o}),pause:i,resume:l,isActive:c}}function Yo(e,t=!0,n){Yc()?xt(e,n):t?e():An(e)}function ze(e){var t;const n=Je(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Re=Go?window:void 0;function Qe(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=Re):[t,n,s,r]=e,!t)return Ft;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(d=>d()),o.length=0},l=(d,h,m,w)=>(d.addEventListener(h,m,w),()=>d.removeEventListener(h,m,w)),c=je(()=>[ze(t),Je(r)],([d,h])=>{if(i(),!d)return;const m=qc(h)?{...h}:h;o.push(...n.flatMap(w=>s.map(R=>l(d,w,R,m))))},{immediate:!0,flush:"post"}),u=()=>{c(),i()};return $n(u),u}let Sr=!1;function tu(e,t,n={}){const{window:s=Re,ignore:r=[],capture:o=!0,detectIframe:i=!1}=n;if(!s)return Ft;ms&&!Sr&&(Sr=!0,Array.from(s.document.body.children).forEach(m=>m.addEventListener("click",Ft)),s.document.documentElement.addEventListener("click",Ft));let l=!0;const c=m=>r.some(w=>{if(typeof w=="string")return Array.from(s.document.querySelectorAll(w)).some(R=>R===m.target||m.composedPath().includes(R));{const R=ze(w);return R&&(m.target===R||m.composedPath().includes(R))}}),d=[Qe(s,"click",m=>{const w=ze(e);if(!(!w||w===m.target||m.composedPath().includes(w))){if(m.detail===0&&(l=!c(m)),!l){l=!0;return}t(m)}},{passive:!0,capture:o}),Qe(s,"pointerdown",m=>{const w=ze(e);l=!c(m)&&!!(w&&!m.composedPath().includes(w))},{passive:!0}),i&&Qe(s,"blur",m=>{setTimeout(()=>{var w;const R=ze(e);((w=s.document.activeElement)==null?void 0:w.tagName)==="IFRAME"&&!(R!=null&&R.contains(s.document.activeElement))&&t(m)},0)})].filter(Boolean);return()=>d.forEach(m=>m())}function Zc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function nu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=Re,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=s,c=Zc(t);return Qe(r,o,d=>{d.repeat&&Je(l)||c(d)&&n(d)},i)}function ea(){const e=me(!1),t=Nn();return t&&xt(()=>{e.value=!0},t),e}function Jo(e){const t=ea();return ne(()=>(t.value,!!e()))}function ta(e,t={}){const{window:n=Re}=t,s=Jo(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const o=me(!1),i=u=>{o.value=u.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",i):r.removeListener(i))},c=ho(()=>{s.value&&(l(),r=n.matchMedia(Je(e)),"addEventListener"in r?r.addEventListener("change",i):r.addListener(i),o.value=r.matches)});return $n(()=>{c(),l(),r=void 0}),o}const tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},nn="__vueuse_ssr_handlers__",na=sa();function sa(){return nn in tn||(tn[nn]=tn[nn]||{}),tn[nn]}function Qo(e,t){return na[e]||t}function ra(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const oa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Tr="vueuse-storage";function Zo(e,t,n,s={}){var r;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:u=!1,shallow:d,window:h=Re,eventFilter:m,onError:w=E=>{console.error(E)},initOnMounted:R}=s,P=(d?to:me)(typeof t=="function"?t():t);if(!n)try{n=Qo("getDefaultStorage",()=>{var E;return(E=Re)==null?void 0:E.localStorage})()}catch(E){w(E)}if(!n)return P;const B=Je(t),q=ra(B),G=(r=s.serializer)!=null?r:oa[q],{pause:g,resume:y}=Qc(P,()=>L(P.value),{flush:o,deep:i,eventFilter:m});h&&l&&Yo(()=>{Qe(h,"storage",A),Qe(h,Tr,j),R&&A()}),R||A();function M(E,V){h&&h.dispatchEvent(new CustomEvent(Tr,{detail:{key:e,oldValue:E,newValue:V,storageArea:n}}))}function L(E){try{const V=n.getItem(e);if(E==null)M(V,null),n.removeItem(e);else{const S=G.write(E);V!==S&&(n.setItem(e,S),M(V,S))}}catch(V){w(V)}}function D(E){const V=E?E.newValue:n.getItem(e);if(V==null)return c&&B!=null&&n.setItem(e,G.write(B)),B;if(!E&&u){const S=G.read(V);return typeof u=="function"?u(S,B):q==="object"&&!Array.isArray(S)?{...B,...S}:S}else return typeof V!="string"?V:G.read(V)}function A(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){P.value=B;return}if(!(E&&E.key!==e)){g();try{(E==null?void 0:E.newValue)!==G.write(P.value)&&(P.value=D(E))}catch(V){w(V)}finally{E?An(y):y()}}}}function j(E){A(E.detail)}return P}function ei(e){return ta("(prefers-color-scheme: dark)",e)}function ia(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=Re,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:u,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=ei({window:r}),w=ne(()=>m.value?"dark":"light"),R=c||(i==null?Xo(s):Zo(i,s,o,{window:r,listenToStorageChanges:l})),P=ne(()=>R.value==="auto"?w.value:R.value),B=Qo("updateHTMLAttrs",(y,M,L)=>{const D=typeof y=="string"?r==null?void 0:r.document.querySelector(y):ze(y);if(!D)return;let A;if(d&&(A=r.document.createElement("style"),A.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild(A)),M==="class"){const j=L.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{j.includes(E)?D.classList.add(E):D.classList.remove(E)})}else D.setAttribute(M,L);d&&(r.getComputedStyle(A).opacity,document.head.removeChild(A))});function q(y){var M;B(t,n,(M=h[y])!=null?M:y)}function G(y){e.onChanged?e.onChanged(y,q):q(y)}je(P,G,{flush:"post",immediate:!0}),Yo(()=>G(P.value));const g=ne({get(){return u?R.value:P.value},set(y){R.value=y}});try{return Object.assign(g,{store:R,system:w,state:P})}catch{return g}}function la(e={}){const{valueDark:t="dark",valueLight:n="",window:s=Re}=e,r=ia({...e,onChanged:(l,c)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>r.system?r.system.value:ei({window:s}).value?"dark":"light");return ne({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?r.value="auto":r.value=c}})}function su(e,t,n={}){const{window:s=Re,...r}=n;let o;const i=Jo(()=>s&&"ResizeObserver"in s),l=()=>{o&&(o.disconnect(),o=void 0)},c=ne(()=>Array.isArray(e)?e.map(h=>ze(h)):[ze(e)]),u=je(c,h=>{if(l(),i.value&&s){o=new ResizeObserver(t);for(const m of h)m&&o.observe(m,r)}},{immediate:!0,flush:"post"}),d=()=>{l(),u()};return $n(d),{isSupported:i,stop:d}}function Jn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ru(e,t,n={}){const{window:s=Re}=n;return Zo(e,t,s==null?void 0:s.localStorage,n)}function ti(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Qn=new WeakMap;function ou(e,t=!1){const n=me(t);let s=null,r="";je(Xo(e),l=>{const c=Jn(Je(l));if(c){const u=c;if(Qn.get(u)||Qn.set(u,u.style.overflow),u.style.overflow!=="hidden"&&(r=u.style.overflow),u.style.overflow==="hidden")return n.value=!0;if(n.value)return u.style.overflow="hidden"}},{immediate:!0});const o=()=>{const l=Jn(Je(e));!l||n.value||(ms&&(s=Qe(l,"touchmove",c=>{ca(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=Jn(Je(e));!l||!n.value||(ms&&(s==null||s()),l.style.overflow=r,Qn.delete(l),n.value=!1)};return $n(i),ne({get(){return n.value},set(l){l?o():i()}})}function iu(e={}){const{window:t=Re,behavior:n="auto"}=e;if(!t)return{x:me(0),y:me(0)};const s=me(t.scrollX),r=me(t.scrollY),o=ne({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Qe(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}const aa=window.__VP_SITE_DATA__;var Zn={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},ua={};const ni=/^(?:[a-z]+:|\/\/)/i,fa="vitepress-theme-appearance",si=/#.*$/,da=/(index)?\.(md|html)$/,Ce=typeof document<"u",ri={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function ha(e,t,n=!1){if(t===void 0)return!1;if(e=Ar(`/${e}`),n)return new RegExp(t).test(e);if(Ar(t)!==e)return!1;const s=t.match(si);return s?(Ce?location.hash:"")===s[0]:!0}function Ar(e){return decodeURI(e).replace(si,"").replace(da,"")}function pa(e){return ni.test(e)}function ga(e,t){var s,r,o,i,l,c,u;const n=Object.keys(e.locales).find(d=>d!=="root"&&!pa(d)&&ha(t,`/${d}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:ii(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(u=e.locales[n])==null?void 0:u.themeConfig}})}function oi(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=ma(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function ma(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function ya(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([o,i])=>o===n&&i[r[0]]===r[1])}function ii(e,t){return[...e.filter(n=>!ya(t,n)),...t]}const _a=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ba=/^[a-z]:/i;function Or(e){const t=ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(_a,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const es=typeof process=="object"&&ua.VITE_EXTRA_EXTENSIONS||(Zn==null?void 0:Zn.VITE_EXTRA_EXTENSIONS)||"",va=new Set(("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(es&&typeof es=="string"?","+es:"")).split(","));function wa(e){const t=e.split(".").pop();return t==null||!va.has(t.toLowerCase())}const Ea=Symbol(),dt=to(aa);function lu(e){const t=ne(()=>ga(dt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?me(!0):n?la({storageKey:fa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):me(!1);return{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>oi(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:s}}function Ca(){const e=Et(Ea);if(!e)throw new Error("vitepress data not properly injected in app");return e}function xa(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Rr(e){return ni.test(e)||!e.startsWith("/")?e:xa(dt.value.base,e)}function Sa(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ce){const n="/";t=Or(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Or(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let an=[];function cu(e){an.push(e),Pn(()=>{an=an.filter(t=>t!==e)})}function Ta(){let e=dt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Lr(e,n);else if(Array.isArray(e))for(const s of e){const r=Lr(s,n);if(r){t=r;break}}return t}function Lr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Aa=Symbol(),li="http://a.com",Oa=()=>({path:"/",component:null,data:ri});function au(e,t){const n=xn(Oa()),s={route:n,go:r};async function r(l=Ce?location.href:"/"){var c,u;l=bn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(Mr(l),await i(l),await((u=s.onAfterRouteChanged)==null?void 0:u.call(s,l)))}let o=null;async function i(l,c=0,u=!1){var m;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const d=new URL(l,li),h=o=d.pathname;try{let w=await e(h);if(!w)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:R,__pageData:P}=w;if(!R)throw new Error(`Invalid route component: ${R}`);n.path=Ce?h:Rr(h),n.component=on(R),n.data=on(P),Ce&&An(()=>{let B=dt.value.base+P.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!dt.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==d.pathname&&(d.pathname=B,l=B+d.search+d.hash,history.replaceState(null,"",l)),d.hash&&!c){let q=null;try{q=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(G){console.warn(G)}if(q){Ir(q,d.hash);return}}window.scrollTo(0,c)})}}catch(w){if(!/fetch|Page not found/.test(w.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(w),!u)try{const R=await fetch(dt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await R.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=Ce?h:Rr(h),n.component=t?on(t):null,n.data=ri)}}return Ce&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const u=l.target.closest("a");if(u&&!u.closest(".vp-raw")&&(u instanceof SVGElement||!u.download)){const{target:d}=u,{href:h,origin:m,pathname:w,hash:R,search:P}=new URL(u.href instanceof SVGAnimatedString?u.href.animVal:u.href,u.baseURI),B=window.location;!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!d&&m===B.origin&&wa(w)&&(l.preventDefault(),w===B.pathname&&P===B.search?(R!==B.hash&&(history.pushState(null,"",R),window.dispatchEvent(new Event("hashchange"))),R?Ir(u,R,u.classList.contains("header-anchor")):(Mr(h),window.scrollTo(0,0))):r(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;await i(bn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ra(){const e=Et(Aa);if(!e)throw new Error("useRouter() is called without provider.");return e}function ci(){return Ra().route}function Ir(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(s).paddingTop,10),i=window.scrollY+s.getBoundingClientRect().top-Ta()+o;requestAnimationFrame(r)}}function Mr(e){Ce&&bn(e)!==bn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}function bn(e){const t=new URL(e,li);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),dt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const ts=()=>an.forEach(e=>e()),uu=_o({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ci(),{site:n}=Ca();return()=>gs(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?gs(t.component,{onVnodeMounted:ts,onVnodeUpdated:ts,onVnodeUnmounted:ts}):"404 Page Not Found"])}}),fu=_o({setup(e,{slots:t}){const n=me(!1);return xt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function du(){Ce&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const o=s.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(u=>u.classList.contains("active"));if(!i)return;const l=o.children[r];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function hu(){if(Ce){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,o=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let u=c.textContent||"";i&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),La(u).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function La(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function pu(e,t){let n=!0,s=[];const r=o=>{if(n){n=!1,o.forEach(l=>{const c=ns(l);for(const u of document.head.children)if(u.isEqualNode(c)){s.push(u);return}});return}const i=o.map(ns);s.forEach((l,c)=>{const u=i.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));u!==-1?delete i[u]:(l==null||l.remove(),delete s[c])}),i.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...i].filter(Boolean)};ho(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],u=oi(i,o);u!==document.title&&(document.title=u);const d=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):ns(["meta",{name:"description",content:d}]),r(ii(i.head,Ma(c)))})}function ns([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Ia(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Ma(e){return e.filter(t=>!Ia(t))}const ss=new Set,ai=()=>document.createElement("link"),Pa=e=>{const t=ai();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Na=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let sn;const Fa=Ce&&(sn=ai())&&sn.relList&&sn.relList.supports&&sn.relList.supports("prefetch")?Pa:Na;function gu(){if(!Ce||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!ss.has(c)){ss.add(c);const u=Sa(c);u&&Fa(u)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):ss.add(l))})})};xt(s);const r=ci();je(()=>r.path,s),Pn(()=>{n&&n.disconnect()})}export{Vo as $,Ka as A,Va as B,Xa as C,qc as D,su as E,ge as F,Ca as G,pa as H,wa as I,Rr as J,ha as K,Ce as L,ta as M,ho as N,Pn as O,Ua as P,Ta as Q,Da as R,ka as S,Ko as T,Ha as U,to as V,cu as W,$a as X,ja as Y,ni as Z,eu as _,Fo as a,ci as a0,qa as a1,sc as a2,tu as a3,nu as a4,iu as a5,za as a6,Sn as a7,ou as a8,Wa as a9,Qa as aa,Ja as ab,ru as ac,Je as ad,pu as ae,Aa as af,lu as ag,Ea as ah,uu as ai,fu as aj,dt as ak,Za as al,au as am,Sa as an,gu as ao,hu as ap,du as aq,gs as ar,$o as b,ne as c,_o as d,Ba as e,Do as f,Nn as g,so as h,Et as i,ws as j,Go as k,Ga as l,ue as m,Es as n,vo as o,je as p,Ul as q,me as r,xn as s,nl as t,Qe as u,Ya as v,ul as w,xt as x,An as y,Al as z};
diff --git a/assets/chunks/theme.B9SrN7Nq.js b/assets/chunks/theme.B9SrN7Nq.js
new file mode 100644
index 0000000..a9415ae
--- /dev/null
+++ b/assets/chunks/theme.B9SrN7Nq.js
@@ -0,0 +1 @@
+import{r as S,g as Ge,i as Z,c as w,d as $,o as je,u as ke,t as Ee,a,b as P,w as h,e as wt,v as Pt,f as u,n as B,h as l,j as ae,T as fe,k as St,l as c,m,F as H,p as G,q as re,s as We,x as X,y as pe,z as Ke,A as v,B as Y,C as b,D as Vt,E as Lt,G as Ve,H as Mt,I as Ct,J as Le,K as te,L as ne,M as ye,N as _e,O as Me,P as Ce,Q as Tt,R as Q,S as D,U as I,_ as k,V as qe,W as me,X as j,Y as W,Z as Xe,$ as x,a0 as le,a1 as Ye,a2 as de,a3 as Nt,a4 as It,a5 as Je,a6 as Bt,a7 as Ht,a8 as Ze,a9 as At,aa as zt,ab as Qe,ac as Et,ad as Dt}from"./framework.CtqZpALn.js";const et=Symbol("scrollbarContextKey"),se=4,Ot={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},xt=({move:s,size:e,bar:t})=>({[t.size]:e,transform:`translate${t.axis}(${s}%)`});function De(s,e="px"){if(!s)return"";if(typeof s=="number"||Ft(s))return`${s}${e}`;if(typeof s=="string")return s}const Ft=s=>typeof s!="string"?!1:!Number.isNaN(Number(s));class Rt extends Error{constructor(e){super(e),this.name="ElementPlusError"}}function Ut(s,e){throw new Rt(`[${s}] ${e}`)}const Gt=Symbol(""),Oe=S();function jt(s,e=void 0){const t=Ge()?Z(Gt,Oe):Oe;return w(()=>{var n;return((n=t.value)==null?void 0:n[s])??e})}const Wt="el",Kt="is-",ee=(s,e,t,n,o)=>{let r=`${s}-${e}`;return t&&(r+=`-${t}`),n&&(r+=`__${n}`),o&&(r+=`--${o}`),r},tt=s=>{const e=jt("namespace",Wt);return{namespace:e,b:(g="")=>ee(e.value,s,g,"",""),e:g=>g?ee(e.value,s,"",g,""):"",m:g=>g?ee(e.value,s,"","",g):"",be:(g,V)=>g&&V?ee(e.value,s,g,V,""):"",em:(g,V)=>g&&V?ee(e.value,s,"",g,V):"",bm:(g,V)=>g&&V?ee(e.value,s,g,"",V):"",bem:(g,V,L)=>g&&V&&L?ee(e.value,s,g,V,L):"",is:(g,...V)=>{const L=V.length>=1?V[0]:!0;return g&&L?`${Kt}${g}`:""},cssVar:g=>{const V={};for(const L in g)g[L]&&(V[`--${e.value}-${L}`]=g[L]);return V},cssVarName:g=>`--${e.value}-${g}`,cssVarBlock:g=>{const V={};for(const L in g)g[L]&&(V[`--${e.value}-${s}-${L}`]=g[L]);return V},cssVarBlockName:g=>`--${e.value}-${s}-${g}`}},qt={vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean},Xt="Thumb",xe=$({__name:"thumb",props:qt,setup(s){const e=s,t=Z(et),n=tt("scrollbar");t||Ut(Xt,"can not inject scrollbar context");const o=S(),r=S(),i=S({}),d=S(!1);let p=!1,_=!1,y=St?document.onselectstart:null;const f=w(()=>Ot[e.vertical?"vertical":"horizontal"]),N=w(()=>xt({size:e.size,move:e.move,bar:f.value})),C=w(()=>o.value[f.value.offset]**2/t.wrapElement[f.value.scrollSize]/e.ratio/r.value[f.value.offset]),g=E=>{var M;if(E.stopPropagation(),E.ctrlKey||[1,2].includes(E.button))return;(M=window.getSelection())==null||M.removeAllRanges(),L(E);const O=E.currentTarget;O&&(i.value[f.value.axis]=O[f.value.offset]-(E[f.value.client]-O.getBoundingClientRect()[f.value.direction]))},V=E=>{if(!r.value||!o.value||!t.wrapElement)return;const O=Math.abs(E.target.getBoundingClientRect()[f.value.direction]-E[f.value.client]),M=r.value[f.value.offset]/2,R=(O-M)*100*C.value/o.value[f.value.offset];t.wrapElement[f.value.scroll]=R*t.wrapElement[f.value.scrollSize]/100},L=E=>{E.stopImmediatePropagation(),p=!0,document.addEventListener("mousemove",z),document.addEventListener("mouseup",A),y=document.onselectstart,document.onselectstart=()=>!1},z=E=>{if(!o.value||!r.value||p===!1)return;const O=i.value[f.value.axis];if(!O)return;const M=(o.value.getBoundingClientRect()[f.value.direction]-E[f.value.client])*-1,R=r.value[f.value.offset]-O,oe=(M-R)*100*C.value/o.value[f.value.offset];t.wrapElement[f.value.scroll]=oe*t.wrapElement[f.value.scrollSize]/100},A=()=>{p=!1,i.value[f.value.axis]=0,document.removeEventListener("mousemove",z),document.removeEventListener("mouseup",A),J(),_&&(d.value=!1)},F=()=>{_=!1,d.value=!!e.size},U=()=>{_=!0,d.value=p};je(()=>{J(),document.removeEventListener("mouseup",A)});const J=()=>{document.onselectstart!==y&&(document.onselectstart=y)};return ke(Ee(t,"scrollbarElement"),"mousemove",F),ke(Ee(t,"scrollbarElement"),"mouseleave",U),(E,O)=>(a(),P(fe,{name:l(n).b("fade")},{default:h(()=>[wt(u("div",{ref_key:"instance",ref:o,class:B([l(n).e("bar"),l(n).is(f.value.key)]),onMousedown:V},[u("div",{ref_key:"thumb",ref:r,class:B(l(n).e("thumb")),style:ae(N.value),onMousedown:g},null,38)],34),[[Pt,E.always||d.value]])]),_:1},8,["name"]))}}),Yt={always:{type:Boolean,default:!0},width:String,height:String,ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}},Jt=$({__name:"bar",props:Yt,setup(s,{expose:e}){const t=s,n=S(0),o=S(0);return e({handleScroll:i=>{if(i){const d=i.offsetHeight-se,p=i.offsetWidth-se;o.value=i.scrollTop*100/d*t.ratioY,n.value=i.scrollLeft*100/p*t.ratioX}}}),(i,d)=>(a(),c(H,null,[m(xe,{move:n.value,ratio:i.ratioX,size:i.width,always:i.always},null,8,["move","ratio","size","always"]),m(xe,{move:o.value,ratio:i.ratioY,size:i.height,vertical:"",always:i.always},null,8,["move","ratio","size","always"])],64))}}),Zt={height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:[String,Object,Array],default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20}},Qt={scroll:({scrollTop:s,scrollLeft:e})=>[s,e].every(t=>typeof t=="number")},es={name:"ElScrollbar"},ts=$({...es,props:Zt,emits:Qt,setup(s,{expose:e,emit:t}){const n=s,o=t,r=tt("scrollbar");let i,d;const p=S(),_=S(),y=S(),f=S("0"),N=S("0"),C=S(),g=S(1),V=S(1),L=w(()=>{const M={};return n.height&&(M.height=De(n.height)),n.maxHeight&&(M.maxHeight=De(n.maxHeight)),[n.wrapStyle,M]}),z=w(()=>[n.wrapClass,r.e("wrap"),{[r.em("wrap","hidden-default")]:!n.native}]),A=w(()=>[r.e("view"),n.viewClass]),F=()=>{var M;_.value&&((M=C.value)==null||M.handleScroll(_.value),o("scroll",{scrollTop:_.value.scrollTop,scrollLeft:_.value.scrollLeft}))};function U(M,R){Vt(M)?_.value.scrollTo(M):typeof M=="number"&&typeof R=="number"&&_.value.scrollTo(M,R)}const J=M=>{typeof M=="number"&&(_.value.scrollTop=M)},E=M=>{typeof M=="number"&&(_.value.scrollLeft=M)},O=()=>{if(!_.value)return;const M=_.value.offsetHeight-se,R=_.value.offsetWidth-se,oe=M**2/_.value.scrollHeight,be=R**2/_.value.scrollWidth,ce=Math.max(oe,n.minSize),ue=Math.max(be,n.minSize);g.value=oe/(M-oe)/(ce/(M-ce)),V.value=be/(R-be)/(ue/(R-ue)),N.value=ce+sen.noresize,M=>{M?(i==null||i(),d==null||d()):({stop:i}=Lt(y,O),d=ke("resize",O))},{immediate:!0}),G(()=>[n.maxHeight,n.height],()=>{n.native||pe(()=>{var M;O(),_.value&&((M=C.value)==null||M.handleScroll(_.value))})}),re(et,We({scrollbarElement:p,wrapElement:_})),X(()=>{n.native||pe(()=>{O()})}),Ke(()=>O()),e({wrapRef:_,update:O,scrollTo:U,setScrollTop:J,setScrollLeft:E,handleScroll:F}),(M,R)=>(a(),c("div",{ref_key:"scrollbarRef",ref:p,class:B(l(r).b())},[u("div",{ref_key:"wrapRef",ref:_,class:B(z.value),style:ae(L.value),onScroll:F},[(a(),P(Y(M.tag),{ref_key:"resizeRef",ref:y,class:B(A.value),style:ae(M.viewStyle)},{default:h(()=>[v(M.$slots,"default")]),_:3},8,["class","style"]))],38),M.native?b("",!0):(a(),P(Jt,{key:0,ref_key:"barRef",ref:C,height:N.value,width:f.value,always:M.always,"ratio-x":V.value,"ratio-y":g.value},null,8,["height","width","always","ratio-x","ratio-y"]))],2))}}),T=Ve;function ss(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function we(s){return/^\//.test(s)?s:`/${s}`}function Te(s){const{pathname:e,search:t,hash:n,protocol:o}=new URL(s,"http://a.com");if(Mt(s)||s.startsWith("#")||!o.startsWith("http")||!Ct(e))return s;const{site:r}=T(),i=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${n}`);return Le(i)}function st(s,e){if(Array.isArray(s))return ve(s);if(s==null)return[];e=we(e);const t=Object.keys(s).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>e.startsWith(we(o))),n=t?s[t]:[];return Array.isArray(n)?ve(n):ve(n.items,n.base)}function ns(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function os(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function Pe(s,e){return Array.isArray(e)?e.some(t=>Pe(s,t)):te(s,e.link)?!0:e.items?Pe(s,e.items):!1}function ve(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=ve(n.items,o)),n})}const Ne=S(ne?location.hash:"");ne&&window.addEventListener("hashchange",()=>{Ne.value=location.hash});function K(){const{frontmatter:s,page:e,theme:t}=T(),n=ye("(min-width: 960px)"),o=S(!1),r=w(()=>{const V=t.value.sidebar,L=e.value.relativePath;return V?st(V,L):[]}),i=S(r.value);G(r,(V,L)=>{JSON.stringify(V)!==JSON.stringify(L)&&(i.value=r.value)});const d=w(()=>s.value.sidebar!==!1&&i.value.length>0&&s.value.layout!=="home"),p=w(()=>_?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),_=w(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),y=w(()=>d.value&&n.value),f=w(()=>d.value?ns(i.value):[]);function N(){o.value=!0}function C(){o.value=!1}function g(){o.value?C():N()}return{isOpen:o,sidebar:i,sidebarGroups:f,hasSidebar:d,hasAside:_,leftAside:p,isSidebarEnabled:y,open:N,close:C,toggle:g}}function nt(s,e){let t;_e(()=>{t=s.value?document.activeElement:void 0}),X(()=>{window.addEventListener("keyup",n)}),Me(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function as(s){const{page:e}=T(),t=S(!1),n=w(()=>s.value.collapsed!=null),o=w(()=>!!s.value.link),r=S(!1),i=()=>{r.value=te(e.value.relativePath,s.value.link)};G([e,s,Ne],i),X(i);const d=w(()=>r.value?!0:s.value.items?Pe(e.value.relativePath,s.value.items):!1),p=w(()=>!!(s.value.items&&s.value.items.length));_e(()=>{t.value=!!(n.value&&s.value.collapsed)}),Ce(()=>{(r.value||d.value)&&(t.value=!1)});function _(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:d,hasChildren:p,toggle:_}}function rs(){const{hasSidebar:s}=K(),e=ye("(min-width: 960px)"),t=ye("(min-width: 1280px)");return{isAsideEnabled:w(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const Se=[];function ot(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function ls(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(i=>i.level>=n&&i.level<=o),Se.length=0;for(const{element:i,link:d}of s)Se.push({element:i,link:d});const r=[];e:for(let i=0;i=0;p--){const _=s[p];if(_.level{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ke(()=>{i(location.hash)}),Me(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const d=window.scrollY,p=window.innerHeight,_=document.body.offsetHeight,y=Math.abs(d+p-_)<1,f=Se.map(({element:C,link:g})=>({link:g,top:cs(C)})).filter(({top:C})=>!Number.isNaN(C)).sort((C,g)=>C.top-g.top);if(!f.length){i(null);return}if(d<1){i(null);return}if(y){i(f[f.length-1].link);return}let N=null;for(const{link:C,top:g}of f){if(g>d+Tt()+4)break;N=C}i(N)}function i(d){o&&o.classList.remove("active"),d==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const p=o;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function cs(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function Ie(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:ds(t),link:"#"+t.id,level:n}});return ls(e,s)}const us=["badge","VPBadge","header-anchor","ignore-header"];function ds(s){let e="";for(const t of s.childNodes)if(t.nodeType===Node.ELEMENT_NODE){if(us.some(n=>t.classList.contains(n)))continue;e+=t.textContent}else t.nodeType===Node.TEXT_NODE&&(e+=t.textContent.replace(/(\w+)\(.+?\)(\s|$).*/,"$1()"));return e.trim()}const vs=["href","title"],ps=$({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const n=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(n));o==null||o.focus({preventScroll:!0})}return(t,n)=>{const o=Q("VPDocOutlineItem",!0);return a(),c("ul",{class:B(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(H,null,D(t.headers,({children:r,link:i,title:d})=>(a(),c("li",null,[u("a",{class:"outline-link",href:i,onClick:e,title:d},I(d),9,vs),r!=null&&r.length?(a(),P(o,{key:0,headers:r},null,8,["headers"])):b("",!0)]))),256))],2)}}}),at=k(ps,[["__scopeId","data-v-53c99d69"]]),hs=s=>(j("data-v-6b52fe58"),s=s(),W(),s),fs={class:"content"},_s={class:"outline-title",role:"heading","aria-level":"2"},ms={"aria-labelledby":"doc-outline-aria-label"},gs=hs(()=>u("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),bs=$({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=T(),n=qe([]);me(()=>{n.value=Ie(e.value.outline??t.value.outline)});const o=S(),r=S();return is(o,r),(i,d)=>(a(),c("div",{class:B(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[u("div",fs,[u("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),u("div",_s,I(l(ot)(l(t))),1),u("nav",ms,[gs,m(at,{headers:n.value,root:!0},null,8,["headers"])])])],2))}}),$s=k(bs,[["__scopeId","data-v-6b52fe58"]]),ks={class:"VPDocAsideCarbonAds"},ys=$({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),c("div",ks,[m(l(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),ws=s=>(j("data-v-cb998dce"),s=s(),W(),s),Ps={class:"VPDocAside"},Ss=ws(()=>u("div",{class:"spacer"},null,-1)),Vs=$({__name:"VPDocAside",setup(s){const{theme:e}=T();return(t,n)=>(a(),c("div",Ps,[v(t.$slots,"aside-top",{},void 0,!0),v(t.$slots,"aside-outline-before",{},void 0,!0),m($s),v(t.$slots,"aside-outline-after",{},void 0,!0),Ss,v(t.$slots,"aside-ads-before",{},void 0,!0),l(e).carbonAds?(a(),P(ys,{key:0,"carbon-ads":l(e).carbonAds},null,8,["carbon-ads"])):b("",!0),v(t.$slots,"aside-ads-after",{},void 0,!0),v(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ls=k(Vs,[["__scopeId","data-v-cb998dce"]]);function Ms(){const{theme:s,page:e}=T();return w(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{},{relativePath:o}=e.value;let r=n.replace(/:path/g,o);return s.value.crowdin&&(r=r.replace(/:id/g,s.value.crowdin[o.split("/").slice(1).join("/")])),{url:r,text:t}})}function Cs(){const{page:s,theme:e,frontmatter:t}=T();return w(()=>{var p,_,y,f,N,C,g,V;const n=st(e.value.sidebar,s.value.relativePath),o=os(n),r=o.findIndex(L=>te(s.value.relativePath,L.link)),i=((p=e.value.docFooter)==null?void 0:p.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((_=e.value.docFooter)==null?void 0:_.next)===!1&&!t.value.next||t.value.next===!1;return{prev:i?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=o[r-1])==null?void 0:y.docFooterText)??((f=o[r-1])==null?void 0:f.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((N=o[r-1])==null?void 0:N.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((C=o[r+1])==null?void 0:C.docFooterText)??((g=o[r+1])==null?void 0:g.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((V=o[r+1])==null?void 0:V.link)}}})}const Ts={},Ns={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Is=u("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Bs=u("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),Hs=[Is,Bs];function As(s,e){return a(),c("svg",Ns,Hs)}const zs=k(Ts,[["render",As]]),q=$({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=w(()=>e.tag??(e.href?"a":"span")),n=w(()=>e.href&&Xe.test(e.href));return(o,r)=>(a(),P(Y(t.value),{class:B(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?l(Te)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:h(()=>[v(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Es={class:"VPLastUpdated"},Ds=["datetime"],Os=$({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=T(),r=w(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),i=w(()=>r.value.toISOString()),d=S("");return X(()=>{_e(()=>{var p,_,y;d.value=new Intl.DateTimeFormat((_=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&_.forceLocale?o.value:void 0,((y=e.value.lastUpdated)==null?void 0:y.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(r.value)})}),(p,_)=>{var y;return a(),c("p",Es,[x(I(((y=l(e).lastUpdated)==null?void 0:y.text)||l(e).lastUpdatedText||"Last updated")+": ",1),u("time",{datetime:i.value},I(d.value),9,Ds)])}}}),xs=k(Os,[["__scopeId","data-v-19a7ae4e"]]),Fs={key:0,class:"VPDocFooter"},Rs={key:0,class:"edit-info"},Us={key:0,class:"edit-link"},Gs={key:1,class:"last-updated"},js={key:1,class:"prev-next"},Ws={class:"pager"},Ks=["innerHTML"],qs=["innerHTML"],Xs={class:"pager"},Ys=["innerHTML"],Js=["innerHTML"],Zs=$({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=T(),o=Ms(),r=Cs(),i=w(()=>e.value.editLink&&n.value.editLink!==!1),d=w(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),p=w(()=>i.value||d.value||r.value.prev||r.value.next);return(_,y)=>{var f,N,C,g;return p.value?(a(),c("footer",Fs,[v(_.$slots,"doc-footer-before",{},void 0,!0),i.value||d.value?(a(),c("div",Rs,[i.value?(a(),c("div",Us,[m(q,{class:"edit-link-button",href:l(o).url,"no-icon":!0},{default:h(()=>[m(zs,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+I(l(o).text),1)]),_:1},8,["href"])])):b("",!0),d.value?(a(),c("div",Gs,[m(xs)])):b("",!0)])):b("",!0),(f=l(r).prev)!=null&&f.link||(N=l(r).next)!=null&&N.link?(a(),c("nav",js,[u("div",Ws,[(C=l(r).prev)!=null&&C.link?(a(),P(q,{key:0,class:"pager-link prev",href:l(r).prev.link},{default:h(()=>{var V;return[u("span",{class:"desc",innerHTML:((V=l(e).docFooter)==null?void 0:V.prev)||"Previous page"},null,8,Ks),u("span",{class:"title",innerHTML:l(r).prev.text},null,8,qs)]}),_:1},8,["href"])):b("",!0)]),u("div",Xs,[(g=l(r).next)!=null&&g.link?(a(),P(q,{key:0,class:"pager-link next",href:l(r).next.link},{default:h(()=>{var V;return[u("span",{class:"desc",innerHTML:((V=l(e).docFooter)==null?void 0:V.next)||"Next page"},null,8,Ys),u("span",{class:"title",innerHTML:l(r).next.text},null,8,Js)]}),_:1},8,["href"])):b("",!0)])])):b("",!0)])):b("",!0)}}}),Qs=k(Zs,[["__scopeId","data-v-b4b63abf"]]),en=s=>(j("data-v-e6f2a212"),s=s(),W(),s),tn={class:"container"},sn=en(()=>u("div",{class:"aside-curtain"},null,-1)),nn={class:"aside-container"},on={class:"aside-content"},an={class:"content"},rn={class:"content-container"},ln={class:"main"},cn=$({__name:"VPDoc",setup(s){const{theme:e}=T(),t=le(),{hasSidebar:n,hasAside:o,leftAside:r}=K(),i=w(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,p)=>{const _=Q("Content");return a(),c("div",{class:B(["VPDoc",{"has-sidebar":l(n),"has-aside":l(o)}])},[v(d.$slots,"doc-top",{},void 0,!0),u("div",tn,[l(o)?(a(),c("div",{key:0,class:B(["aside",{"left-aside":l(r)}])},[sn,u("div",nn,[u("div",on,[m(Ls,null,{"aside-top":h(()=>[v(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[v(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[v(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[v(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[v(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[v(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):b("",!0),u("div",an,[u("div",rn,[v(d.$slots,"doc-before",{},void 0,!0),u("main",ln,[m(_,{class:B(["vp-doc",[i.value,l(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(Qs,null,{"doc-footer-before":h(()=>[v(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),v(d.$slots,"doc-after",{},void 0,!0)])])]),v(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),rt=k(cn,[["__scopeId","data-v-e6f2a212"]]),un={class:"spoiler"},dn=$({__name:"spoiler",props:{text:{type:String}},setup(s){return(e,t)=>(a(),c("span",un,[v(e.$slots,"default",{},()=>[x(I(s.text),1)],!0)]))}}),vn=k(dn,[["__scopeId","data-v-4b7f368a"]]),pn=["src"],hn={class:"nickname"},fn={class:"message-box"},_n=$({__name:"chat-message",props:{nickname:{},color:{},avatar:{}},setup(s,{expose:e}){const t={Alice:"#cc0066",Bob:"#00994d",Carol:"#1e90ff",Dave:"#f4a460"},n={Koishi:"https://koishi.chat/logo.png"},o=s,r=S(!1),i=S(!1),d=S(!1),p=S(),_=w(()=>o.color||t[o.nickname]),y=w(()=>o.avatar||n[o.nickname]);function f(){let z;for(const A of document.querySelectorAll(".chat-message")){if(A===p.value)return z;z=A}}G(i,z=>{if(!z)return r.value=!1;const A=f();if(!A||A.getBoundingClientRect().bottom<0)return C();const U=A.__vue__.exposed;U.moving.value||!U.shown.value?U.onappear(C):C()});let N=()=>{};function C(){r.value=!0,d.value=!0,setTimeout(()=>{d.value=!1,N()},100)}function g(){p.value.getBoundingClientRect().top{p.value.__vue__=V,g(),addEventListener("scroll",g),addEventListener("resize",g)}),je(()=>{removeEventListener("scroll",g),removeEventListener("resize",g)}),(z,A)=>(a(),c("div",{ref_key:"root",ref:p,class:B(["chat-message",{shown:r.value}])},[y.value?(a(),c("img",{key:0,class:"avatar",src:y.value},null,8,pn)):(a(),c("div",{key:1,class:"avatar",style:ae({backgroundColor:_.value})},I(z.nickname[0]),5)),u("div",hn,I(z.nickname),1),u("div",fn,[v(z.$slots,"default",{},()=>[x(" ")])])],2))}}),mn={props:{controls:Boolean,title:String},data:()=>({tab:"default"}),computed:{mini(){return!this.controls&&!this.title}}},gn={class:"controls"},bn=u("div",{class:"circle red"},null,-1),$n=u("div",{class:"circle yellow"},null,-1),kn=u("div",{class:"circle green"},null,-1),yn={class:"title"},wn={key:0,class:"title-text"},Pn={class:"content"};function Sn(s,e,t,n,o,r){return a(),c("div",{class:B(["panel-view",{mini:r.mini}])},[u("div",gn,[bn,$n,kn,u("div",yn,[t.title?(a(),c("span",wn,I(t.title),1)):b("",!0)])]),u("div",Pn,[v(s.$slots,"default")])],2)}const Vn=k(mn,[["render",Sn]]),Ln={class:"tab-select"},Mn={class:"header"},Cn=["onClick"],Tn=$({__name:"tab-select",setup(s){const e=Ye(),t=w(()=>Object.keys(e).filter(o=>o.startsWith("tab-")).map(o=>o.slice(4))),n=yi(t);return(o,r)=>(a(),c("div",Ln,[u("div",Mn,[(a(!0),c(H,null,D(t.value,i=>(a(),c("span",{key:i,class:B({active:l(n)===i}),onClick:d=>n.value=i},[v(o.$slots,"title-"+i,{},()=>[x(I(i),1)])],10,Cn))),128))]),v(o.$slots,"tab-"+l(n))]))}}),Nn=$({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),c("span",{class:B(["VPBadge",e.type])},[v(e.$slots,"default",{},()=>[x(I(e.text),1)])],2))}}),In={key:0,class:"VPBackdrop"},Bn=$({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),P(fe,{name:"fade"},{default:h(()=>[e.show?(a(),c("div",In)):b("",!0)]),_:1}))}}),lt=k(Bn,[["__scopeId","data-v-54a304ca"]]);function ie({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:r}=T(),i=w(()=>{var p,_;return{label:(p=t.value.locales[n.value])==null?void 0:p.label,link:((_=t.value.locales[n.value])==null?void 0:_.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:w(()=>Object.entries(t.value.locales).flatMap(([p,_])=>s&&i.value.label===_.label?[]:{text:_.label,link:Hn(_.link||(p==="root"?"/":`/${p}/`),r.value.i18nRouting!==!1&&e,o.value.relativePath.slice(i.value.link.length-1),!t.value.cleanUrls)+Ne.value})),currentLang:i}}function Hn(s,e,t,n){return e?s.replace(/\/$/,"")+we(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const An=s=>(j("data-v-b9c0c15a"),s=s(),W(),s),zn={class:"NotFound"},En={class:"code"},Dn={class:"title"},On=An(()=>u("div",{class:"divider"},null,-1)),xn={class:"quote"},Fn={class:"action"},Rn=["href","aria-label"],Un=$({__name:"NotFound",setup(s){const{site:e,theme:t}=T(),{localeLinks:n}=ie({removeCurrent:!1}),o=S("/");return X(()=>{var i;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((i=n.value.find(({link:d})=>d.startsWith(r)))==null?void 0:i.link)||n.value[0].link)}),(r,i)=>{var d,p,_,y,f;return a(),c("div",zn,[u("p",En,I(((d=l(t).notFound)==null?void 0:d.code)??"404"),1),u("h1",Dn,I(((p=l(t).notFound)==null?void 0:p.title)??"PAGE NOT FOUND"),1),On,u("blockquote",xn,I(((_=l(t).notFound)==null?void 0:_.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),u("div",Fn,[u("a",{class:"link",href:l(Le)(o.value),"aria-label":((y=l(t).notFound)==null?void 0:y.linkLabel)??"go to home"},I(((f=l(t).notFound)==null?void 0:f.linkText)??"Take me home"),9,Rn)])])}}}),Gn=k(Un,[["__scopeId","data-v-b9c0c15a"]]),jn=$({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=w(()=>e.href&&Xe.test(e.href)),n=w(()=>e.tag||e.href?"a":"button");return(o,r)=>(a(),P(Y(n.value),{class:B(["VPButton",[o.size,o.theme]]),href:o.href?l(Te)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:h(()=>[x(I(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),Wn=k(jn,[["__scopeId","data-v-1e76fe75"]]),Kn=["src","alt"],qn=$({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=Q("VPImage",!0);return e.image?(a(),c(H,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",de({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:l(Le)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Kn)):(a(),c(H,{key:1},[m(n,de({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(n,de({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):b("",!0)}}}),he=k(qn,[["__scopeId","data-v-ab19afbb"]]),Xn=s=>(j("data-v-5a3e9999"),s=s(),W(),s),Yn={class:"container"},Jn={class:"main"},Zn={key:0,class:"name"},Qn=["innerHTML"],eo=["innerHTML"],to=["innerHTML"],so={key:0,class:"actions"},no={key:0,class:"image"},oo={class:"image-container"},ao=Xn(()=>u("div",{class:"image-bg"},null,-1)),ro=$({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=Z("hero-image-slot-exists");return(t,n)=>(a(),c("div",{class:B(["VPHero",{"has-image":t.image||l(e)}])},[u("div",Yn,[u("div",Jn,[v(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Zn,[u("span",{innerHTML:t.name,class:"clip"},null,8,Qn)])):b("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,eo)):b("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,to)):b("",!0)],!0),t.actions?(a(),c("div",so,[(a(!0),c(H,null,D(t.actions,o=>(a(),c("div",{key:o.link,class:"action"},[m(Wn,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):b("",!0)]),t.image||l(e)?(a(),c("div",no,[u("div",oo,[ao,v(t.$slots,"home-hero-image",{},()=>[t.image?(a(),P(he,{key:0,class:"image-src",image:t.image},null,8,["image"])):b("",!0)],!0)])])):b("",!0)])],2))}}),lo=k(ro,[["__scopeId","data-v-5a3e9999"]]),io=$({__name:"VPHomeHero",setup(s){const{frontmatter:e}=T();return(t,n)=>l(e).hero?(a(),P(lo,{key:0,class:"VPHomeHero",name:l(e).hero.name,text:l(e).hero.text,tagline:l(e).hero.tagline,image:l(e).hero.image,actions:l(e).hero.actions},{"home-hero-info":h(()=>[v(t.$slots,"home-hero-info")]),"home-hero-image":h(()=>[v(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):b("",!0)}}),co={},uo={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},vo=u("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),po=[vo];function ho(s,e){return a(),c("svg",uo,po)}const fo=k(co,[["render",ho]]),_o={class:"box"},mo={key:0,class:"icon"},go=["innerHTML"],bo=["innerHTML"],$o=["innerHTML"],ko={key:4,class:"link-text"},yo={class:"link-text-value"},wo=$({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),P(q,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:h(()=>[u("article",_o,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",mo,[m(he,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),P(he,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,go)):b("",!0),u("h2",{class:"title",innerHTML:e.title},null,8,bo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,$o)):b("",!0),e.linkText?(a(),c("div",ko,[u("p",yo,[x(I(e.linkText)+" ",1),m(fo,{class:"link-text-icon"})])])):b("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Po=k(wo,[["__scopeId","data-v-ee984185"]]),So={key:0,class:"VPFeatures"},Vo={class:"container"},Lo={class:"items"},Mo=$({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=w(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),c("div",So,[u("div",Vo,[u("div",Lo,[(a(!0),c(H,null,D(n.features,r=>(a(),c("div",{key:r.title,class:B(["item",[t.value]])},[m(Po,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):b("",!0)}}),Co=k(Mo,[["__scopeId","data-v-b1eea84a"]]),To=$({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=T();return(t,n)=>l(e).features?(a(),P(Co,{key:0,class:"VPHomeFeatures",features:l(e).features},null,8,["features"])):b("",!0)}}),No={class:"VPHome"},Io=$({__name:"VPHome",setup(s){return(e,t)=>{const n=Q("Content");return a(),c("div",No,[v(e.$slots,"home-hero-before",{},void 0,!0),m(io,null,{"home-hero-info":h(()=>[v(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[v(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),v(e.$slots,"home-hero-after",{},void 0,!0),v(e.$slots,"home-features-before",{},void 0,!0),m(To),v(e.$slots,"home-features-after",{},void 0,!0),m(n)])}}}),Bo=k(Io,[["__scopeId","data-v-20eabd3a"]]),Ho={},Ao={class:"VPPage"};function zo(s,e){const t=Q("Content");return a(),c("div",Ao,[v(s.$slots,"page-top"),m(t),v(s.$slots,"page-bottom")])}const Eo=k(Ho,[["render",zo]]),Do=$({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=T(),{hasSidebar:n}=K();return(o,r)=>(a(),c("div",{class:B(["VPContent",{"has-sidebar":l(n),"is-home":l(t).layout==="home"}]),id:"VPContent"},[l(e).isNotFound?v(o.$slots,"not-found",{key:0},()=>[m(Gn)],!0):l(t).layout==="page"?(a(),P(Eo,{key:1},{"page-top":h(()=>[v(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[v(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):l(t).layout==="home"?(a(),P(Bo,{key:2},{"home-hero-before":h(()=>[v(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":h(()=>[v(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[v(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[v(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[v(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[v(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):l(t).layout&&l(t).layout!=="doc"?(a(),P(Y(l(t).layout),{key:3})):(a(),P(rt,{key:4},{"doc-top":h(()=>[v(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[v(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":h(()=>[v(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[v(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[v(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":h(()=>[v(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":h(()=>[v(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[v(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[v(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[v(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":h(()=>[v(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Oo=k(Do,[["__scopeId","data-v-3cf691b6"]]),xo={class:"container"},Fo=["innerHTML"],Ro=["innerHTML"],Uo=$({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=T(),{hasSidebar:n}=K();return(o,r)=>l(e).footer&&l(t).footer!==!1?(a(),c("footer",{key:0,class:B(["VPFooter",{"has-sidebar":l(n)}])},[u("div",xo,[l(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:l(e).footer.message},null,8,Fo)):b("",!0),l(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:l(e).footer.copyright},null,8,Ro)):b("",!0)])],2)):b("",!0)}}),it=k(Uo,[["__scopeId","data-v-566314d4"]]);function ct(){const{theme:s,frontmatter:e}=T(),t=qe([]),n=w(()=>t.value.length>0);return me(()=>{t.value=Ie(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:n}}const Go={},jo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Wo=u("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),Ko=[Wo];function qo(s,e){return a(),c("svg",jo,Ko)}const ut=k(Go,[["render",qo]]),Xo={class:"header"},Yo={class:"outline"},Jo=$({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=T(),n=S(!1),o=S(0),r=S(),i=S();Nt(r,()=>{n.value=!1}),It("Escape",()=>{n.value=!1}),me(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(y){y.target.classList.contains("outline-link")&&(i.value&&(i.value.style.transition="none"),pe(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,f)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:ae({"--vp-vh":o.value+"px"}),ref_key:"main",ref:r},[y.headers.length>0?(a(),c("button",{key:0,onClick:d,class:B({open:n.value})},[x(I(l(ot)(l(t)))+" ",1),m(ut,{class:"icon"})],2)):(a(),c("button",{key:1,onClick:_},I(l(t).returnToTopLabel||"Return to top"),1)),m(fe,{name:"flyout"},{default:h(()=>[n.value?(a(),c("div",{key:0,ref_key:"items",ref:i,class:"items",onClick:p},[u("div",Xo,[u("a",{class:"top-link",href:"#",onClick:_},I(l(t).returnToTopLabel||"Return to top"),1)]),u("div",Yo,[m(at,{headers:y.headers},null,8,["headers"])])],512)):b("",!0)]),_:1})],4))}}),Zo=k(Jo,[["__scopeId","data-v-2744f6e0"]]),Qo={},ea={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ta=u("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),sa=u("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),na=u("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),oa=u("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),aa=[ta,sa,na,oa];function ra(s,e){return a(),c("svg",ea,aa)}const la=k(Qo,[["render",ra]]),ia={class:"container"},ca=["aria-expanded"],ua={class:"menu-text"},da=$({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=T(),{hasSidebar:n}=K(),{headers:o}=ct(),{y:r}=Je(),i=S(0);X(()=>{i.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),me(()=>{o.value=Ie(t.value.outline??e.value.outline)});const d=w(()=>o.value.length===0),p=w(()=>d.value&&!n.value),_=w(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:d.value,fixed:p.value}));return(y,f)=>l(t).layout!=="home"&&(!p.value||l(r)>=i.value)?(a(),c("div",{key:0,class:B(_.value)},[u("div",ia,[l(n)?(a(),c("button",{key:0,class:"menu","aria-expanded":y.open,"aria-controls":"VPSidebarNav",onClick:f[0]||(f[0]=N=>y.$emit("open-menu"))},[m(la,{class:"menu-icon"}),u("span",ua,I(l(e).sidebarMenuLabel||"Menu"),1)],8,ca)):b("",!0),m(Zo,{headers:l(o),navHeight:i.value},null,8,["headers","navHeight"])])],2)):b("",!0)}}),dt=k(da,[["__scopeId","data-v-b979e4d9"]]);function va(){const s=S(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const r=le();return G(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const pa={},ha={class:"VPSwitch",type:"button",role:"switch"},fa={class:"check"},_a={key:0,class:"icon"};function ma(s,e){return a(),c("button",ha,[u("span",fa,[s.$slots.default?(a(),c("span",_a,[v(s.$slots,"default",{},void 0,!0)])):b("",!0)])])}const ga=k(pa,[["render",ma],["__scopeId","data-v-1c29e291"]]),ba={},$a={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ka=u("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),ya=[ka];function wa(s,e){return a(),c("svg",$a,ya)}const Pa=k(ba,[["render",wa]]),Sa={},Va={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},La=Bt(' ',9),Ma=[La];function Ca(s,e){return a(),c("svg",Va,Ma)}const Ta=k(Sa,[["render",Ca]]),Na=$({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=T(),n=Z("toggle-appearance",()=>{e.value=!e.value}),o=w(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(r,i)=>(a(),P(ga,{title:o.value,class:"VPSwitchAppearance","aria-checked":l(e),onClick:l(n)},{default:h(()=>[m(Ta,{class:"sun"}),m(Pa,{class:"moon"})]),_:1},8,["title","aria-checked","onClick"]))}}),Be=k(Na,[["__scopeId","data-v-d80abb8e"]]),Ia={key:0,class:"VPNavBarAppearance"},Ba=$({__name:"VPNavBarAppearance",setup(s){const{site:e}=T();return(t,n)=>l(e).appearance&&l(e).appearance!=="force-dark"?(a(),c("div",Ia,[m(Be)])):b("",!0)}}),Ha=k(Ba,[["__scopeId","data-v-283b26e9"]]),He=S();let vt=!1,$e=0;function Aa(s){const e=S(!1);if(ne){!vt&&za(),$e++;const t=G(He,n=>{var o,r,i;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(i=s.onBlur)==null||i.call(s))});Me(()=>{t(),$e--,$e||Ea()})}return Ht(e)}function za(){document.addEventListener("focusin",pt),vt=!0,He.value=document.activeElement}function Ea(){document.removeEventListener("focusin",pt)}function pt(){He.value=document.activeElement}const Da={},Oa={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},xa=u("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Fa=[xa];function Ra(s,e){return a(),c("svg",Oa,Fa)}const ht=k(Da,[["render",Ra]]),Ua={},Ga={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ja=u("circle",{cx:"12",cy:"12",r:"2"},null,-1),Wa=u("circle",{cx:"19",cy:"12",r:"2"},null,-1),Ka=u("circle",{cx:"5",cy:"12",r:"2"},null,-1),qa=[ja,Wa,Ka];function Xa(s,e){return a(),c("svg",Ga,qa)}const Ya=k(Ua,[["render",Xa]]),Ja={class:"VPMenuLink"},Za=$({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=T();return(t,n)=>(a(),c("div",Ja,[m(q,{class:B({active:l(te)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:h(()=>[x(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ge=k(Za,[["__scopeId","data-v-f51f088d"]]),Qa={class:"VPMenuGroup"},er={key:0,class:"title"},tr=$({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),c("div",Qa,[e.text?(a(),c("p",er,I(e.text),1)):b("",!0),(a(!0),c(H,null,D(e.items,n=>(a(),c(H,null,["link"in n?(a(),P(ge,{key:0,item:n},null,8,["item"])):b("",!0)],64))),256))]))}}),sr=k(tr,[["__scopeId","data-v-a6b0397c"]]),nr={class:"VPMenu"},or={key:0,class:"items"},ar=$({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),c("div",nr,[e.items?(a(),c("div",or,[(a(!0),c(H,null,D(e.items,n=>(a(),c(H,{key:n.text},["link"in n?(a(),P(ge,{key:0,item:n},null,8,["item"])):(a(),P(sr,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):b("",!0),v(e.$slots,"default",{},void 0,!0)]))}}),rr=k(ar,[["__scopeId","data-v-e42ed9b3"]]),lr=["aria-expanded","aria-label"],ir={key:0,class:"text"},cr=["innerHTML"],ur={class:"menu"},dr=$({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=S(!1),t=S();Aa({el:t,onBlur:n});function n(){e.value=!1}return(o,r)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=i=>e.value=!0),onMouseleave:r[2]||(r[2]=i=>e.value=!1)},[u("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:r[0]||(r[0]=i=>e.value=!e.value)},[o.button||o.icon?(a(),c("span",ir,[o.icon?(a(),P(Y(o.icon),{key:0,class:"option-icon"})):b("",!0),o.button?(a(),c("span",{key:1,innerHTML:o.button},null,8,cr)):b("",!0),m(ht,{class:"text-icon"})])):(a(),P(Ya,{key:1,class:"icon"}))],8,lr),u("div",ur,[m(rr,{items:o.items},{default:h(()=>[v(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),Ae=k(dr,[["__scopeId","data-v-aa8de344"]]),vr={discord:'Discord ',facebook:'Facebook ',github:'GitHub ',instagram:'Instagram ',linkedin:'LinkedIn ',mastodon:'Mastodon ',npm:'npm ',slack:'Slack ',twitter:'Twitter ',x:'X ',youtube:'YouTube '},pr=["href","aria-label","innerHTML"],hr=$({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=w(()=>typeof e.icon=="object"?e.icon.svg:vr[e.icon]);return(n,o)=>(a(),c("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,pr))}}),fr=k(hr,[["__scopeId","data-v-16cf740a"]]),_r={class:"VPSocialLinks"},mr=$({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),c("div",_r,[(a(!0),c(H,null,D(e.links,({link:n,icon:o,ariaLabel:r})=>(a(),P(fr,{key:n,icon:o,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ze=k(mr,[["__scopeId","data-v-e71e869c"]]),gr={key:0,class:"group translations"},br={class:"trans-title"},$r={key:1,class:"group"},kr={class:"item appearance"},yr={class:"label"},wr={class:"appearance-action"},Pr={key:2,class:"group"},Sr={class:"item social-links"},Vr=$({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=T(),{localeLinks:n,currentLang:o}=ie({correspondingLink:!0}),r=w(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(i,d)=>r.value?(a(),P(Ae,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:h(()=>[l(n).length&&l(o).label?(a(),c("div",gr,[u("p",br,I(l(o).label),1),(a(!0),c(H,null,D(l(n),p=>(a(),P(ge,{key:p.link,item:p},null,8,["item"]))),128))])):b("",!0),l(e).appearance&&l(e).appearance!=="force-dark"?(a(),c("div",$r,[u("div",kr,[u("p",yr,I(l(t).darkModeSwitchLabel||"Appearance"),1),u("div",wr,[m(Be)])])])):b("",!0),l(t).socialLinks?(a(),c("div",Pr,[u("div",Sr,[m(ze,{class:"social-links-list",links:l(t).socialLinks},null,8,["links"])])])):b("",!0)]),_:1})):b("",!0)}}),Lr=k(Vr,[["__scopeId","data-v-8e87c032"]]),Mr=s=>(j("data-v-6bee1efd"),s=s(),W(),s),Cr=["aria-expanded"],Tr=Mr(()=>u("span",{class:"container"},[u("span",{class:"top"}),u("span",{class:"middle"}),u("span",{class:"bottom"})],-1)),Nr=[Tr],Ir=$({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),c("button",{type:"button",class:B(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},Nr,10,Cr))}}),Br=k(Ir,[["__scopeId","data-v-6bee1efd"]]),Hr=["innerHTML"],Ar=$({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=T();return(t,n)=>(a(),P(q,{class:B({VPNavBarMenuLink:!0,active:l(te)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:h(()=>[u("span",{innerHTML:t.item.text},null,8,Hr)]),_:1},8,["class","href","target","rel"]))}}),zr=k(Ar,[["__scopeId","data-v-cb318fec"]]),Er=$({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=T(),n=r=>"link"in r?te(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(n),o=w(()=>n(e.item));return(r,i)=>(a(),P(Ae,{class:B({VPNavBarMenuGroup:!0,active:l(te)(l(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||o.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),Dr=s=>(j("data-v-f732b5d0"),s=s(),W(),s),Or={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},xr=Dr(()=>u("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Fr=$({__name:"VPNavBarMenu",setup(s){const{theme:e}=T();return(t,n)=>l(e).nav?(a(),c("nav",Or,[xr,(a(!0),c(H,null,D(l(e).nav,o=>(a(),c(H,{key:o.text},["link"in o?(a(),P(zr,{key:0,item:o},null,8,["item"])):(a(),P(Er,{key:1,item:o},null,8,["item"]))],64))),128))])):b("",!0)}}),Rr=k(Fr,[["__scopeId","data-v-f732b5d0"]]);function Ur(s){const{localeIndex:e,theme:t}=T();function n(o){var g,V,L;const r=o.split("."),i=(g=t.value.search)==null?void 0:g.options,d=i&&typeof i=="object",p=d&&((L=(V=i.locales)==null?void 0:V[e.value])==null?void 0:L.translations)||null,_=d&&i.translations||null;let y=p,f=_,N=s;const C=r.pop();for(const z of r){let A=null;const F=N==null?void 0:N[z];F&&(A=N=F);const U=f==null?void 0:f[z];U&&(A=f=U);const J=y==null?void 0:y[z];J&&(A=y=J),F||(N=A),U||(f=A),J||(y=A)}return(y==null?void 0:y[C])??(f==null?void 0:f[C])??(N==null?void 0:N[C])??""}return n}const Gr=["aria-label"],jr={class:"DocSearch-Button-Container"},Wr=u("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[u("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Kr={class:"DocSearch-Button-Placeholder"},qr=u("span",{class:"DocSearch-Button-Keys"},[u("kbd",{class:"DocSearch-Button-Key"}),u("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Fe=$({__name:"VPNavBarSearchButton",setup(s){const t=Ur({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,o)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":l(t)("button.buttonAriaLabel")},[u("span",jr,[Wr,u("span",Kr,I(l(t)("button.buttonText")),1)]),qr],8,Gr))}}),Xr={class:"VPNavBarSearch"},Yr={id:"local-search"},Jr={key:1,id:"docsearch"},Zr=$({__name:"VPNavBarSearch",setup(s){const e=()=>null,t=()=>null,{theme:n}=T(),o=S(!1),r=S(!1);X(()=>{});function i(){o.value||(o.value=!0,setTimeout(d,16))}function d(){const y=new Event("keydown");y.key="k",y.metaKey=!0,window.dispatchEvent(y),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}const p=S(!1),_="";return(y,f)=>{var N;return a(),c("div",Xr,[l(_)==="local"?(a(),c(H,{key:0},[p.value?(a(),P(l(e),{key:0,onClose:f[0]||(f[0]=C=>p.value=!1)})):b("",!0),u("div",Yr,[m(Fe,{onClick:f[1]||(f[1]=C=>p.value=!0)})])],64)):l(_)==="algolia"?(a(),c(H,{key:1},[o.value?(a(),P(l(t),{key:0,algolia:((N=l(n).search)==null?void 0:N.options)??l(n).algolia,onVnodeBeforeMount:f[2]||(f[2]=C=>r.value=!0)},null,8,["algolia"])):b("",!0),r.value?b("",!0):(a(),c("div",Jr,[m(Fe,{onClick:i})]))],64)):b("",!0)])}}}),Qr=$({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=T();return(t,n)=>l(e).socialLinks?(a(),P(ze,{key:0,class:"VPNavBarSocialLinks",links:l(e).socialLinks},null,8,["links"])):b("",!0)}}),el=k(Qr,[["__scopeId","data-v-ef6192dc"]]),tl=["href"],sl=$({__name:"navbar-title",setup(s){const{site:e,theme:t,localeIndex:n,page:o}=T(),{hasSidebar:r}=K(),{currentLang:i}=ie(),d=w(()=>{const y=o.value.filePath.slice(n.value.length);for(const f in t.value.mixins||{})if(y.startsWith(f))return f}),p=w(()=>d.value?`/${n.value}${d.value}/`:t.value.logoLink??Te(i.value.link)),_=w(()=>d.value?t.value.mixins[d.value].title:t.value.siteTitle||e.value.title);return(y,f)=>(a(),c("div",{class:B(["VPNavBarTitle",{"has-sidebar":l(r)}])},[u("a",{class:"title",href:p.value},[v(y.$slots,"nav-bar-title-before",{},void 0,!0),!d.value&&l(t).logo?(a(),P(he,{key:0,class:"logo",image:l(t).logo},null,8,["image"])):b("",!0),x(" "+I(_.value)+" ",1),v(y.$slots,"nav-bar-title-after",{},void 0,!0)],8,tl)],2))}}),nl=k(sl,[["__scopeId","data-v-da535f8d"]]),ol={},al={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},rl=u("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),ll=u("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),il=[rl,ll];function cl(s,e){return a(),c("svg",al,il)}const ft=k(ol,[["render",cl]]),ul={class:"items"},dl={class:"title"},vl=$({__name:"VPNavBarTranslations",setup(s){const{theme:e}=T(),{localeLinks:t,currentLang:n}=ie({correspondingLink:!0});return(o,r)=>l(t).length&&l(n).label?(a(),P(Ae,{key:0,class:"VPNavBarTranslations",icon:ft,label:l(e).langMenuLabel||"Change language"},{default:h(()=>[u("div",ul,[u("p",dl,I(l(n).label),1),(a(!0),c(H,null,D(l(t),i=>(a(),P(ge,{key:i.link,item:i},null,8,["item"]))),128))])]),_:1},8,["label"])):b("",!0)}}),pl=k(vl,[["__scopeId","data-v-ff4524ae"]]),hl=s=>(j("data-v-3efcd581"),s=s(),W(),s),fl={class:"wrapper"},_l={class:"container"},ml={class:"title"},gl={class:"content"},bl={class:"content-body"},$l=hl(()=>u("div",{class:"divider"},[u("div",{class:"divider-line"})],-1)),kl=$({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Je(),{hasSidebar:t}=K(),{hasLocalNav:n}=ct(),{frontmatter:o}=T(),r=S({});return Ce(()=>{r.value={"has-sidebar":t.value,"has-local-nav":n.value,top:o.value.layout==="home"&&e.value===0}}),(i,d)=>(a(),c("div",{class:B(["VPNavBar",r.value])},[u("div",fl,[u("div",_l,[u("div",ml,[m(nl,null,{"nav-bar-title-before":h(()=>[v(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[v(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),u("div",gl,[u("div",bl,[v(i.$slots,"nav-bar-content-before",{},void 0,!0),m(Zr,{class:"search"}),m(Rr,{class:"menu"}),m(pl,{class:"translations"}),m(Ha,{class:"appearance"}),m(el,{class:"social-links"}),m(Lr,{class:"extra"}),v(i.$slots,"nav-bar-content-after",{},void 0,!0),m(Br,{class:"hamburger",active:i.isScreenOpen,onClick:d[0]||(d[0]=p=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),$l],2))}}),yl=k(kl,[["__scopeId","data-v-3efcd581"]]),wl={key:0,class:"VPNavScreenAppearance"},Pl={class:"text"},Sl=$({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=T();return(n,o)=>l(e).appearance&&l(e).appearance!=="force-dark"?(a(),c("div",wl,[u("p",Pl,I(l(t).darkModeSwitchLabel||"Appearance"),1),m(Be)])):b("",!0)}}),Vl=k(Sl,[["__scopeId","data-v-338d9b48"]]),Ll=$({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=Z("close-screen");return(t,n)=>(a(),P(q,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:h(()=>[x(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ml=k(Ll,[["__scopeId","data-v-fe523e3d"]]),Cl={},Tl={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Nl=u("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),Il=[Nl];function Bl(s,e){return a(),c("svg",Tl,Il)}const Hl=k(Cl,[["render",Bl]]),Al=$({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=Z("close-screen");return(t,n)=>(a(),P(q,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:h(()=>[x(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),_t=k(Al,[["__scopeId","data-v-aea78dd1"]]),zl={class:"VPNavScreenMenuGroupSection"},El={key:0,class:"title"},Dl=$({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),c("div",zl,[e.text?(a(),c("p",El,I(e.text),1)):b("",!0),(a(!0),c(H,null,D(e.items,n=>(a(),P(_t,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Ol=k(Dl,[["__scopeId","data-v-f60dbfa7"]]),xl=["aria-controls","aria-expanded"],Fl=["innerHTML"],Rl=["id"],Ul={key:1,class:"group"},Gl=$({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=S(!1),n=w(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(r,i)=>(a(),c("div",{class:B(["VPNavScreenMenuGroup",{open:t.value}])},[u("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[u("span",{class:"button-text",innerHTML:r.text},null,8,Fl),m(Hl,{class:"button-icon"})],8,xl),u("div",{id:n.value,class:"items"},[(a(!0),c(H,null,D(r.items,d=>(a(),c(H,{key:d.text},["link"in d?(a(),c("div",{key:d.text,class:"item"},[m(_t,{item:d},null,8,["item"])])):(a(),c("div",Ul,[m(Ol,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,Rl)],2))}}),jl=k(Gl,[["__scopeId","data-v-32e4a89c"]]),Wl={key:0,class:"VPNavScreenMenu"},Kl=$({__name:"VPNavScreenMenu",setup(s){const{theme:e}=T();return(t,n)=>l(e).nav?(a(),c("nav",Wl,[(a(!0),c(H,null,D(l(e).nav,o=>(a(),c(H,{key:o.text},["link"in o?(a(),P(Ml,{key:0,item:o},null,8,["item"])):(a(),P(jl,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):b("",!0)}}),ql=$({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=T();return(t,n)=>l(e).socialLinks?(a(),P(ze,{key:0,class:"VPNavScreenSocialLinks",links:l(e).socialLinks},null,8,["links"])):b("",!0)}}),Xl={class:"list"},Yl=$({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=ie({correspondingLink:!0}),n=S(!1);function o(){n.value=!n.value}return(r,i)=>l(e).length&&l(t).label?(a(),c("div",{key:0,class:B(["VPNavScreenTranslations",{open:n.value}])},[u("button",{class:"title",onClick:o},[m(ft,{class:"icon lang"}),x(" "+I(l(t).label)+" ",1),m(ht,{class:"icon chevron"})]),u("ul",Xl,[(a(!0),c(H,null,D(l(e),d=>(a(),c("li",{key:d.link,class:"item"},[m(q,{class:"link",href:d.link},{default:h(()=>[x(I(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):b("",!0)}}),Jl=k(Yl,[["__scopeId","data-v-41505286"]]),Zl={class:"container"},Ql=$({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=S(null),t=Ze(ne?document.body:null);return(n,o)=>(a(),P(fe,{name:"fade",onEnter:o[0]||(o[0]=r=>t.value=!0),onAfterLeave:o[1]||(o[1]=r=>t.value=!1)},{default:h(()=>[n.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[u("div",Zl,[v(n.$slots,"nav-screen-content-before",{},void 0,!0),m(Kl,{class:"menu"}),m(Jl,{class:"translations"}),m(Vl,{class:"appearance"}),m(ql,{class:"social-links"}),v(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):b("",!0)]),_:3}))}}),ei=k(Ql,[["__scopeId","data-v-57cce842"]]),ti={key:0,class:"VPNav"},si=$({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=va(),{frontmatter:o}=T(),r=w(()=>o.value.navbar!==!1);return re("close-screen",t),_e(()=>{ne&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(i,d)=>r.value?(a(),c("header",ti,[m(yl,{"is-screen-open":l(e),onToggleScreen:l(n)},{"nav-bar-title-before":h(()=>[v(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[v(i.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[v(i.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[v(i.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(ei,{open:l(e)},{"nav-screen-content-before":h(()=>[v(i.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[v(i.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):b("",!0)}}),mt=k(si,[["__scopeId","data-v-7ad780c2"]]),ni=s=>(j("data-v-bd01e0d5"),s=s(),W(),s),oi=["role","tabindex"],ai=ni(()=>u("div",{class:"indicator"},null,-1)),ri={key:1,class:"items"},li=$({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:i,hasChildren:d,toggle:p}=as(w(()=>e.item)),_=w(()=>d.value?"section":"div"),y=w(()=>o.value?"a":"div"),f=w(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),N=w(()=>o.value?void 0:"button"),C=w(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":r.value},{"has-active":i.value}]);function g(L){"key"in L&&L.key!=="Enter"||!e.item.link&&p()}function V(){e.item.link&&p()}return(L,z)=>{const A=Q("VPSidebarItem",!0);return a(),P(Y(_.value),{class:B(["VPSidebarItem",C.value])},{default:h(()=>[L.item.text?(a(),c("div",de({key:0,class:"item",role:N.value},At(L.item.items?{click:g,keydown:g}:{},!0),{tabindex:L.item.items&&0}),[ai,L.item.link?(a(),P(q,{key:0,tag:y.value,class:"link",href:L.item.link,rel:L.item.rel,target:L.item.target},{default:h(()=>[(a(),P(Y(f.value),{class:"text",innerHTML:L.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),P(Y(f.value),{key:1,class:"text",innerHTML:L.item.text},null,8,["innerHTML"])),L.item.collapsed!=null?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:V,onKeydown:zt(V,["enter"]),tabindex:"0"},[m(ut,{class:"caret-icon"})],32)):b("",!0)],16,oi)):b("",!0),L.item.items&&L.item.items.length?(a(),c("div",ri,[L.depth<5?(a(!0),c(H,{key:0},D(L.item.items,F=>(a(),P(A,{key:F.text,item:F,depth:L.depth+1},null,8,["item","depth"]))),128)):b("",!0)])):b("",!0)]),_:1},8,["class"])}}}),gt=k(li,[["__scopeId","data-v-bd01e0d5"]]),bt=s=>(j("data-v-4871f9f5"),s=s(),W(),s),ii=bt(()=>u("div",{class:"curtain"},null,-1)),ci={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ui=bt(()=>u("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),di=$({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=K(),n=s,o=S(null),r=Ze(ne?document.body:null);return G([n,o],()=>{var i;n.open?(r.value=!0,(i=o.value)==null||i.focus()):r.value=!1},{immediate:!0,flush:"post"}),(i,d)=>l(t)?(a(),c("aside",{key:0,class:B(["VPSidebar",{open:i.open}]),ref_key:"navEl",ref:o,onClick:d[0]||(d[0]=Qe(()=>{},["stop"]))},[ii,u("nav",ci,[ui,v(i.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(H,null,D(l(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(gt,{item:p,depth:0},null,8,["item"])]))),128)),v(i.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):b("",!0)}}),vi=k(di,[["__scopeId","data-v-4871f9f5"]]),pi=$({__name:"VPSkipLink",setup(s){const e=le(),t=S();G(()=>e.path,()=>t.value.focus());function n({target:o}){const r=document.getElementById(decodeURIComponent(o.hash).slice(1));if(r){const i=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",i)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",i),r.focus(),window.scrollTo(0,0)}}return(o,r)=>(a(),c(H,null,[u("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),u("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),$t=k(pi,[["__scopeId","data-v-c8291ffa"]]),hi=$({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=K(),o=le();G(()=>o.path,n),nt(e,n);const{frontmatter:r}=T(),i=Ye(),d=w(()=>!!i["home-hero-image"]);return re("hero-image-slot-exists",d),(p,_)=>{const y=Q("Content");return l(r).layout!==!1?(a(),c("div",{key:0,class:B(["Layout",l(r).pageClass])},[v(p.$slots,"layout-top",{},void 0,!0),m($t),m(lt,{class:"backdrop",show:l(e),onClick:l(n)},null,8,["show","onClick"]),m(mt,null,{"nav-bar-title-before":h(()=>[v(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":h(()=>[v(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":h(()=>[v(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":h(()=>[v(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":h(()=>[v(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":h(()=>[v(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(dt,{open:l(e),onOpenMenu:l(t)},null,8,["open","onOpenMenu"]),m(vi,{open:l(e)},{"sidebar-nav-before":h(()=>[v(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[v(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(Oo,null,{"page-top":h(()=>[v(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":h(()=>[v(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":h(()=>[v(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":h(()=>[v(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":h(()=>[v(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":h(()=>[v(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":h(()=>[v(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":h(()=>[v(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":h(()=>[v(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":h(()=>[v(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":h(()=>[v(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":h(()=>[v(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":h(()=>[v(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":h(()=>[v(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":h(()=>[v(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":h(()=>[v(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":h(()=>[v(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":h(()=>[v(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":h(()=>[v(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":h(()=>[v(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(it),v(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),P(y,{key:1}))}}}),fi=k(hi,[["__scopeId","data-v-9d8abc1e"]]),Re={Layout:fi,enhanceApp:({app:s})=>{s.component("Badge",Nn)}},_i=u("div",{class:"curtain"},null,-1),mi={class:"vp-sidebar-nav"},gi={class:"group"},bi=$({__name:"sidebar",props:{open:{type:Boolean}},setup(s){const{hasSidebar:e,sidebarGroups:t}=K(),n=s,o=S(null);return Ce(async()=>{var r;n.open&&(await pe(),(r=o.value)==null||r.wrapRef.focus())}),(r,i)=>{const d=Q("ElScrollbar");return l(e)?(a(),P(d,{key:0,tag:"aside",class:B(["VPSidebar",{open:r.open}]),"view-class":"vp-sidebar-view",ref_key:"navEl",ref:o,onClick:i[0]||(i[0]=Qe(()=>{},["stop"]))},{default:h(()=>[_i,u("nav",mi,[v(r.$slots,"sidebar-nav-before"),(a(!0),c(H,null,D(l(t),p=>(a(),c("div",gi,[m(gt,{item:p,depth:0},null,8,["item"])]))),256)),v(r.$slots,"sidebar-nav-after")])]),_:3},8,["class"])):b("",!0)}}}),$i=$({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n,hasSidebar:o}=K(),r=le();G(()=>r.path,n),nt(e,n),re("close-sidebar",n),re("is-sidebar-open",e);const{frontmatter:i}=Ve(),d=Z(kt),p=w(()=>{var f;return d.layouts[(f=i.value.layout)==null?void 0:f.toLowerCase()]||d.layouts.default}),_=w(()=>({"has-sidebar":o.value})),y=w(()=>({[`layout-${i.value.layout}`]:i.value.layout}));return(f,N)=>(a(),c("div",{class:B(["Layout",y.value])},[m($t),m(lt,{class:"backdrop",show:l(e),onClick:l(n)},null,8,["show","onClick"]),m(mt,null,{"nav-bar-title-before":h(()=>[]),"nav-bar-title-after":h(()=>[]),"nav-bar-content-before":h(()=>[]),"nav-bar-content-after":h(()=>[]),"nav-screen-content-before":h(()=>[]),"nav-screen-content-after":h(()=>[]),_:1}),m(dt,{open:l(e),onOpenMenu:l(t)},null,8,["open","onOpenMenu"]),m(bi,{open:l(e)},{"sidebar-nav-before":h(()=>[v(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":h(()=>[v(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),u("div",{class:B(["VPContent",_.value]),id:"VPContent"},[(a(),P(Y(p.value),null,{"doc-footer-before":h(()=>[]),"doc-before":h(()=>[]),"doc-after":h(()=>[]),"aside-top":h(()=>[]),"aside-bottom":h(()=>[]),"aside-outline-before":h(()=>[]),"aside-outline-after":h(()=>[]),"aside-ads-before":h(()=>[]),"aside-ads-after":h(()=>[]),_:1}))],2),m(it)],2))}}),ki=k($i,[["__scopeId","data-v-c1849dc6"]]),kt=Symbol.for("theme-config"),yt=Symbol.for("client-config");function yi(s){const e=Z(yt);return w({get:()=>{const t=Dt(s);return e.tabs.find(n=>t.includes(n))||t[0]},set:t=>{const n=e.tabs.indexOf(t);n>=0&&e.tabs.splice(n,1),e.tabs.unshift(t)}})}const Ue=1;function wi(s){const e=Et("koishi.docs.config",{});return e.value.version!==Ue?e.value={...s,version:Ue}:e.value={...s,...e.value},We(e.value)}const Pi=(s={})=>({...Re,Layout:ki,...s,enhanceApp(e){var n;Re.enhanceApp(e),e.app.component("ElScrollbar",ts),e.app.component("Spoiler",vn),e.app.component("ChatMessage",_n),e.app.component("ChatPanel",Vn),e.app.component("TabSelect",Tn);const t={default:rt};for(const o in s.layouts)t[o.toLowerCase()]=s.layouts[o];e.app.provide(kt,{layouts:t}),e.app.provide(yt,wi({tabs:[]})),(n=s.enhanceApp)==null||n.call(s,e)}}),Si=s=>(j("data-v-b7c0548e"),s=s(),W(),s),Vi={class:"home"},Li={class:"screen"},Mi=Si(()=>u("h1",null,"Satori",-1)),Ci={class:"desc"},Ti={class:"actions"},Ni=["href"],Ii={key:0,class:"footer",target:"_blank",rel:"noopener noreferrer",href:"https://beian.miit.gov.cn/"},Bi=$({__name:"VPHome",setup(s){const{frontmatter:e}=Ve(),t=S(!1);return X(()=>{window.location.href.includes("satori.chat")&&(t.value=!0)}),(n,o)=>(a(),c("div",Vi,[u("div",Li,[Mi,u("p",Ci,I(l(e).home.description),1),u("div",Ti,[u("a",{class:"action-button secondary",href:l(e).links.starter},I(l(e).home.primary),9,Ni)])]),t.value?(a(),c("a",Ii,"苏ICP备2022025524号-2")):b("",!0)]))}}),Hi=k(Bi,[["__scopeId","data-v-b7c0548e"]]),zi=Pi({layouts:{home:Hi}});export{zi as R};
diff --git a/assets/en-US_index.md.Bsz4tPbi.js b/assets/en-US_index.md.Bsz4tPbi.js
new file mode 100644
index 0000000..b4c6aec
--- /dev/null
+++ b/assets/en-US_index.md.Bsz4tPbi.js
@@ -0,0 +1 @@
+import{_ as e,l as t,a}from"./chunks/framework.CtqZpALn.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","links":{"starter":"/en-US/protocol/"},"home":{"primary":"Get Started","description":"THE UNIVERSAL MESSENGER PROTOCOL"}},"headers":[],"relativePath":"en-US/index.md","filePath":"en-US/index.md"}'),n={name:"en-US/index.md"};function r(o,s,i,c,d,p){return a(),t("div")}const _=e(n,[["render",r]]);export{l as __pageData,_ as default};
diff --git a/assets/en-US_index.md.Bsz4tPbi.lean.js b/assets/en-US_index.md.Bsz4tPbi.lean.js
new file mode 100644
index 0000000..b4c6aec
--- /dev/null
+++ b/assets/en-US_index.md.Bsz4tPbi.lean.js
@@ -0,0 +1 @@
+import{_ as e,l as t,a}from"./chunks/framework.CtqZpALn.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","links":{"starter":"/en-US/protocol/"},"home":{"primary":"Get Started","description":"THE UNIVERSAL MESSENGER PROTOCOL"}},"headers":[],"relativePath":"en-US/index.md","filePath":"en-US/index.md"}'),n={name:"en-US/index.md"};function r(o,s,i,c,d,p){return a(),t("div")}const _=e(n,[["render",r]]);export{l as __pageData,_ as default};
diff --git a/assets/en-US_introduction.md.COyc3duQ.js b/assets/en-US_introduction.md.COyc3duQ.js
new file mode 100644
index 0000000..21d2a8a
--- /dev/null
+++ b/assets/en-US_introduction.md.COyc3duQ.js
@@ -0,0 +1 @@
+import{_ as e,l as n,a as o,f as t,$ as a}from"./chunks/framework.CtqZpALn.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/introduction.md","filePath":"en-US/introduction.md"}'),r={name:"en-US/introduction.md"},i=t("h1",{id:"introduction",tabindex:"-1"},[a("Introduction "),t("a",{class:"header-anchor",href:"#introduction","aria-label":'Permalink to "Introduction"'},"")],-1),c=[i];function d(s,_,l,u,p,f){return o(),n("div",null,c)}const x=e(r,[["render",d]]);export{m as __pageData,x as default};
diff --git a/assets/en-US_introduction.md.COyc3duQ.lean.js b/assets/en-US_introduction.md.COyc3duQ.lean.js
new file mode 100644
index 0000000..21d2a8a
--- /dev/null
+++ b/assets/en-US_introduction.md.COyc3duQ.lean.js
@@ -0,0 +1 @@
+import{_ as e,l as n,a as o,f as t,$ as a}from"./chunks/framework.CtqZpALn.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/introduction.md","filePath":"en-US/introduction.md"}'),r={name:"en-US/introduction.md"},i=t("h1",{id:"introduction",tabindex:"-1"},[a("Introduction "),t("a",{class:"header-anchor",href:"#introduction","aria-label":'Permalink to "Introduction"'},"")],-1),c=[i];function d(s,_,l,u,p,f){return o(),n("div",null,c)}const x=e(r,[["render",d]]);export{m as __pageData,x as default};
diff --git a/assets/en-US_protocol_api.md.tjEvRPe9.js b/assets/en-US_protocol_api.md.tjEvRPe9.js
new file mode 100644
index 0000000..09d6ca6
--- /dev/null
+++ b/assets/en-US_protocol_api.md.tjEvRPe9.js
@@ -0,0 +1 @@
+import{_ as t,l as e,a,a6 as o}from"./chunks/framework.CtqZpALn.js";const P=JSON.parse('{"title":"HTTP API","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/api.md","filePath":"en-US/protocol/api.md"}'),n={name:"en-US/protocol/api.md"},r=o('HTTP API Some API may return a list of items. In this case, the response will be a List
object:
FIELD TYPE DESCRIPTION data
array list of items next
string token for the next page
You can use the next
token to get the next page of items. If next
is nullable, it means that there are no more items.
',5),i=[r];function d(s,c,h,p,l,_){return a(),e("div",null,i)}const f=t(n,[["render",d]]);export{P as __pageData,f as default};
diff --git a/assets/en-US_protocol_api.md.tjEvRPe9.lean.js b/assets/en-US_protocol_api.md.tjEvRPe9.lean.js
new file mode 100644
index 0000000..827ad71
--- /dev/null
+++ b/assets/en-US_protocol_api.md.tjEvRPe9.lean.js
@@ -0,0 +1 @@
+import{_ as t,l as e,a,a6 as o}from"./chunks/framework.CtqZpALn.js";const P=JSON.parse('{"title":"HTTP API","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/api.md","filePath":"en-US/protocol/api.md"}'),n={name:"en-US/protocol/api.md"},r=o("",5),i=[r];function d(s,c,h,p,l,_){return a(),e("div",null,i)}const f=t(n,[["render",d]]);export{P as __pageData,f as default};
diff --git a/assets/en-US_protocol_index.md.D7Gi7Bkr.js b/assets/en-US_protocol_index.md.D7Gi7Bkr.js
new file mode 100644
index 0000000..a5a3e1a
--- /dev/null
+++ b/assets/en-US_protocol_index.md.D7Gi7Bkr.js
@@ -0,0 +1 @@
+import{_ as o,l as t,a as r,f as e,$ as a}from"./chunks/framework.CtqZpALn.js";const b=JSON.parse('{"title":"Overview","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/index.md","filePath":"en-US/protocol/index.md"}'),s={name:"en-US/protocol/index.md"},n=e("h1",{id:"overview",tabindex:"-1"},[a("Overview "),e("a",{class:"header-anchor",href:"#overview","aria-label":'Permalink to "Overview"'},"")],-1),i=e("p",null,"The Satori protocol is designed to be simple and easy to use. It is based around three layers of communication:",-1),l=e("ul",null,[e("li",null,"an HTTP API for bots to communicate with the server"),e("li",null,"a WebSocket API for bots to receive events from the server"),e("li",null,"a WebHook API for the server to send events to bots")],-1),c=[n,i,l];function d(_,h,v,p,m,f){return r(),t("div",null,c)}const x=o(s,[["render",d]]);export{b as __pageData,x as default};
diff --git a/assets/en-US_protocol_index.md.D7Gi7Bkr.lean.js b/assets/en-US_protocol_index.md.D7Gi7Bkr.lean.js
new file mode 100644
index 0000000..a5a3e1a
--- /dev/null
+++ b/assets/en-US_protocol_index.md.D7Gi7Bkr.lean.js
@@ -0,0 +1 @@
+import{_ as o,l as t,a as r,f as e,$ as a}from"./chunks/framework.CtqZpALn.js";const b=JSON.parse('{"title":"Overview","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/index.md","filePath":"en-US/protocol/index.md"}'),s={name:"en-US/protocol/index.md"},n=e("h1",{id:"overview",tabindex:"-1"},[a("Overview "),e("a",{class:"header-anchor",href:"#overview","aria-label":'Permalink to "Overview"'},"")],-1),i=e("p",null,"The Satori protocol is designed to be simple and easy to use. It is based around three layers of communication:",-1),l=e("ul",null,[e("li",null,"an HTTP API for bots to communicate with the server"),e("li",null,"a WebSocket API for bots to receive events from the server"),e("li",null,"a WebHook API for the server to send events to bots")],-1),c=[n,i,l];function d(_,h,v,p,m,f){return r(),t("div",null,c)}const x=o(s,[["render",d]]);export{b as __pageData,x as default};
diff --git a/assets/en-US_protocol_message.md.C8I9M0t3.js b/assets/en-US_protocol_message.md.C8I9M0t3.js
new file mode 100644
index 0000000..4790d36
--- /dev/null
+++ b/assets/en-US_protocol_message.md.C8I9M0t3.js
@@ -0,0 +1 @@
+import{_ as a,l as s,a as t,f as e,$ as o}from"./chunks/framework.CtqZpALn.js";const h=JSON.parse('{"title":"Message","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/message.md","filePath":"en-US/protocol/message.md"}'),r={name:"en-US/protocol/message.md"},n=e("h1",{id:"message",tabindex:"-1"},[o("Message "),e("a",{class:"header-anchor",href:"#message","aria-label":'Permalink to "Message"'},"")],-1),c=[n];function d(l,i,m,_,p,f){return t(),s("div",null,c)}const u=a(r,[["render",d]]);export{h as __pageData,u as default};
diff --git a/assets/en-US_protocol_message.md.C8I9M0t3.lean.js b/assets/en-US_protocol_message.md.C8I9M0t3.lean.js
new file mode 100644
index 0000000..4790d36
--- /dev/null
+++ b/assets/en-US_protocol_message.md.C8I9M0t3.lean.js
@@ -0,0 +1 @@
+import{_ as a,l as s,a as t,f as e,$ as o}from"./chunks/framework.CtqZpALn.js";const h=JSON.parse('{"title":"Message","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/message.md","filePath":"en-US/protocol/message.md"}'),r={name:"en-US/protocol/message.md"},n=e("h1",{id:"message",tabindex:"-1"},[o("Message "),e("a",{class:"header-anchor",href:"#message","aria-label":'Permalink to "Message"'},"")],-1),c=[n];function d(l,i,m,_,p,f){return t(),s("div",null,c)}const u=a(r,[["render",d]]);export{h as __pageData,u as default};
diff --git a/assets/en-US_protocol_webhook.md.Dv45azH5.js b/assets/en-US_protocol_webhook.md.Dv45azH5.js
new file mode 100644
index 0000000..6a24579
--- /dev/null
+++ b/assets/en-US_protocol_webhook.md.Dv45azH5.js
@@ -0,0 +1 @@
+import{_ as o,l as t,a,f as e,$ as r}from"./chunks/framework.CtqZpALn.js";const f=JSON.parse('{"title":"Webhook","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/webhook.md","filePath":"en-US/protocol/webhook.md"}'),s={name:"en-US/protocol/webhook.md"},n=e("h1",{id:"webhook",tabindex:"-1"},[r("Webhook "),e("a",{class:"header-anchor",href:"#webhook","aria-label":'Permalink to "Webhook"'},"")],-1),c=[n];function h(d,l,i,_,p,k){return a(),t("div",null,c)}const m=o(s,[["render",h]]);export{f as __pageData,m as default};
diff --git a/assets/en-US_protocol_webhook.md.Dv45azH5.lean.js b/assets/en-US_protocol_webhook.md.Dv45azH5.lean.js
new file mode 100644
index 0000000..6a24579
--- /dev/null
+++ b/assets/en-US_protocol_webhook.md.Dv45azH5.lean.js
@@ -0,0 +1 @@
+import{_ as o,l as t,a,f as e,$ as r}from"./chunks/framework.CtqZpALn.js";const f=JSON.parse('{"title":"Webhook","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/webhook.md","filePath":"en-US/protocol/webhook.md"}'),s={name:"en-US/protocol/webhook.md"},n=e("h1",{id:"webhook",tabindex:"-1"},[r("Webhook "),e("a",{class:"header-anchor",href:"#webhook","aria-label":'Permalink to "Webhook"'},"")],-1),c=[n];function h(d,l,i,_,p,k){return a(),t("div",null,c)}const m=o(s,[["render",h]]);export{f as __pageData,m as default};
diff --git a/assets/en-US_protocol_websocket.md.BKw3x1oT.js b/assets/en-US_protocol_websocket.md.BKw3x1oT.js
new file mode 100644
index 0000000..ec5f6b5
--- /dev/null
+++ b/assets/en-US_protocol_websocket.md.BKw3x1oT.js
@@ -0,0 +1 @@
+import{_ as t,l as o,a,f as e,$ as c}from"./chunks/framework.CtqZpALn.js";const h=JSON.parse('{"title":"WebSocket","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/websocket.md","filePath":"en-US/protocol/websocket.md"}'),s={name:"en-US/protocol/websocket.md"},r=e("h1",{id:"websocket",tabindex:"-1"},[c("WebSocket "),e("a",{class:"header-anchor",href:"#websocket","aria-label":'Permalink to "WebSocket"'},"")],-1),n=[r];function d(l,i,_,p,k,b){return a(),o("div",null,n)}const m=t(s,[["render",d]]);export{h as __pageData,m as default};
diff --git a/assets/en-US_protocol_websocket.md.BKw3x1oT.lean.js b/assets/en-US_protocol_websocket.md.BKw3x1oT.lean.js
new file mode 100644
index 0000000..ec5f6b5
--- /dev/null
+++ b/assets/en-US_protocol_websocket.md.BKw3x1oT.lean.js
@@ -0,0 +1 @@
+import{_ as t,l as o,a,f as e,$ as c}from"./chunks/framework.CtqZpALn.js";const h=JSON.parse('{"title":"WebSocket","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/protocol/websocket.md","filePath":"en-US/protocol/websocket.md"}'),s={name:"en-US/protocol/websocket.md"},r=e("h1",{id:"websocket",tabindex:"-1"},[c("WebSocket "),e("a",{class:"header-anchor",href:"#websocket","aria-label":'Permalink to "WebSocket"'},"")],-1),n=[r];function d(l,i,_,p,k,b){return a(),o("div",null,n)}const m=t(s,[["render",d]]);export{h as __pageData,m as default};
diff --git a/assets/en-US_resources_channel.md.B49Loav5.js b/assets/en-US_resources_channel.md.B49Loav5.js
new file mode 100644
index 0000000..9b1cc6a
--- /dev/null
+++ b/assets/en-US_resources_channel.md.B49Loav5.js
@@ -0,0 +1 @@
+import{_ as d,R as o,l as r,f as t,m as l,w as h,$ as e,a6 as a,a as i}from"./chunks/framework.CtqZpALn.js";const D=JSON.parse('{"title":"Channel","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/channel.md","filePath":"en-US/resources/channel.md"}'),c={name:"en-US/resources/channel.md"},s=a('Channel Definition Channel FIELD TYPE DESCRIPTION id string channel ID name string channel name
API Get Channel ',6),_=t("code",null,"/v1/channel.get",-1),u=a('FIELD TYPE DESCRIPTION channel_id string channel ID
Get a channel by ID. Returns a channel object.
bot.getChannelList(guildId, next?) ',3),b=t("code",null,"/v1/channel.list",-1),T=a('FIELD TYPE DESCRIPTION guild_id string guild ID next string pagination token
Get channels in a guild. Returns a list of channel objects.
',2);function f(P,p,I,g,m,C){const n=o("badge");return i(),r("div",null,[s,t("ul",null,[t("li",null,[l(n,null,{default:h(()=>[e("POST")]),_:1}),e(),_])]),u,t("ul",null,[t("li",null,[l(n,null,{default:h(()=>[e("POST")]),_:1}),e(),b])]),T])}const x=d(c,[["render",f]]);export{D as __pageData,x as default};
diff --git a/assets/en-US_resources_channel.md.B49Loav5.lean.js b/assets/en-US_resources_channel.md.B49Loav5.lean.js
new file mode 100644
index 0000000..9650786
--- /dev/null
+++ b/assets/en-US_resources_channel.md.B49Loav5.lean.js
@@ -0,0 +1 @@
+import{_ as d,R as o,l as r,f as t,m as l,w as h,$ as e,a6 as a,a as i}from"./chunks/framework.CtqZpALn.js";const D=JSON.parse('{"title":"Channel","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/channel.md","filePath":"en-US/resources/channel.md"}'),c={name:"en-US/resources/channel.md"},s=a("",6),_=t("code",null,"/v1/channel.get",-1),u=a("",3),b=t("code",null,"/v1/channel.list",-1),T=a("",2);function f(P,p,I,g,m,C){const n=o("badge");return i(),r("div",null,[s,t("ul",null,[t("li",null,[l(n,null,{default:h(()=>[e("POST")]),_:1}),e(),_])]),u,t("ul",null,[t("li",null,[l(n,null,{default:h(()=>[e("POST")]),_:1}),e(),b])]),T])}const x=d(c,[["render",f]]);export{D as __pageData,x as default};
diff --git a/assets/en-US_resources_guild.md.B-DL93Yw.js b/assets/en-US_resources_guild.md.B-DL93Yw.js
new file mode 100644
index 0000000..2386094
--- /dev/null
+++ b/assets/en-US_resources_guild.md.B-DL93Yw.js
@@ -0,0 +1 @@
+import{_ as o,R as r,l as n,f as t,m as i,w as l,$ as e,a6 as a,a as s}from"./chunks/framework.CtqZpALn.js";const D=JSON.parse('{"title":"Guild","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/guild.md","filePath":"en-US/resources/guild.md"}'),u={name:"en-US/resources/guild.md"},h=a('Guild Definition Guild FIELD TYPE DESCRIPTION id string guild ID name string guild name
API bot.getGuild(guildId) ',6),_=t("code",null,"/v1/guild.get",-1),c=a('FIELD TYPE DESCRIPTION guild_id string guild ID
Get a guild by ID. Returns a guild object.
bot.getGuildList(next?) ',3),g=t("code",null,"/v1/guild.list",-1),b=a('FIELD TYPE DESCRIPTION next string pagination token
Get guilds where the current user is a member. Returns a list of partial guild objects.
bot.handleGuildRequest(messageId, approve, comment?) messageId: string
请求 IDapprove: boolean
是否通过请求comment: string
备注信息返回值: Promise<void>
处理来自群组的邀请。
',5);function m(p,T,f,I,P,S){const d=r("badge");return s(),n("div",null,[h,t("ul",null,[t("li",null,[i(d,null,{default:l(()=>[e("POST")]),_:1}),e(),_])]),c,t("ul",null,[t("li",null,[i(d,null,{default:l(()=>[e("POST")]),_:1}),e(),g])]),b])}const x=o(u,[["render",m]]);export{D as __pageData,x as default};
diff --git a/assets/en-US_resources_guild.md.B-DL93Yw.lean.js b/assets/en-US_resources_guild.md.B-DL93Yw.lean.js
new file mode 100644
index 0000000..496c17f
--- /dev/null
+++ b/assets/en-US_resources_guild.md.B-DL93Yw.lean.js
@@ -0,0 +1 @@
+import{_ as o,R as r,l as n,f as t,m as i,w as l,$ as e,a6 as a,a as s}from"./chunks/framework.CtqZpALn.js";const D=JSON.parse('{"title":"Guild","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/guild.md","filePath":"en-US/resources/guild.md"}'),u={name:"en-US/resources/guild.md"},h=a("",6),_=t("code",null,"/v1/guild.get",-1),c=a("",3),g=t("code",null,"/v1/guild.list",-1),b=a("",5);function m(p,T,f,I,P,S){const d=r("badge");return s(),n("div",null,[h,t("ul",null,[t("li",null,[i(d,null,{default:l(()=>[e("POST")]),_:1}),e(),_])]),c,t("ul",null,[t("li",null,[i(d,null,{default:l(()=>[e("POST")]),_:1}),e(),g])]),b])}const x=o(u,[["render",m]]);export{D as __pageData,x as default};
diff --git a/assets/en-US_resources_member.md.BJP15InX.js b/assets/en-US_resources_member.md.BJP15InX.js
new file mode 100644
index 0000000..306144e
--- /dev/null
+++ b/assets/en-US_resources_member.md.BJP15InX.js
@@ -0,0 +1,5 @@
+import{_ as e,l as i,a as s,a6 as t}from"./chunks/framework.CtqZpALn.js";const p=JSON.parse('{"title":"群组成员 (GuildMember)","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/member.md","filePath":"en-US/resources/member.md"}'),a={name:"en-US/resources/member.md"},l=t(`群组成员 (GuildMember) 类型定义 ts interface GuildMember {
+ user : User
+ nick ? : string
+ avatar ? : string
+}
API bot.getGuildMember(guildId, userId) guildId: string
群组 IDuserId: string
用户 ID返回值: Promise<GuildMember>
群成员信息 获取群成员信息。
bot.getGuildMemberList(guildId, next?) guildId: string
群组 IDnext: string
分页令牌返回值: Promise<List<GuildMember>>
群成员列表 获取群成员列表。
bot.kickGuildMember(guildId, userId, permanent?) guildId: string
群组 IDuserId: string
用户 IDpermanent: boolean
是否永久踢出 (用户无法再次加入群组)返回值: Promise<void>
将某个用户踢出群组。
bot.muteGuildMember(guildId, userId, duration?, reason?) guildId: string
群组 IDuserId: string
用户 IDduration: number
禁言时长 (毫秒)reason: string
禁言说明返回值: Promise<void>
将某个用户禁言。如果传入的禁言时长为 0
则表示解除禁言。
bot.handleGuildMemberRequest(messageId, approve, comment?) messageId: string
请求 IDapprove: boolean
是否通过请求comment: string
备注信息返回值: Promise<void>
处理加群请求。
`,19),r=[l];function o(d,n,g,h,c,u){return s(),i("div",null,r)}const b=e(a,[["render",o]]);export{p as __pageData,b as default};
diff --git a/assets/en-US_resources_member.md.BJP15InX.lean.js b/assets/en-US_resources_member.md.BJP15InX.lean.js
new file mode 100644
index 0000000..22acff4
--- /dev/null
+++ b/assets/en-US_resources_member.md.BJP15InX.lean.js
@@ -0,0 +1 @@
+import{_ as e,l as i,a as s,a6 as t}from"./chunks/framework.CtqZpALn.js";const p=JSON.parse('{"title":"群组成员 (GuildMember)","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/member.md","filePath":"en-US/resources/member.md"}'),a={name:"en-US/resources/member.md"},l=t("",19),r=[l];function o(d,n,g,h,c,u){return s(),i("div",null,r)}const b=e(a,[["render",o]]);export{p as __pageData,b as default};
diff --git a/assets/en-US_resources_message.md.BaNUWu1G.js b/assets/en-US_resources_message.md.BaNUWu1G.js
new file mode 100644
index 0000000..a684c6f
--- /dev/null
+++ b/assets/en-US_resources_message.md.BaNUWu1G.js
@@ -0,0 +1,8 @@
+import{_ as s,l as e,a,a6 as i}from"./chunks/framework.CtqZpALn.js";const m=JSON.parse('{"title":"消息 (Message)","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/message.md","filePath":"en-US/resources/message.md"}'),t={name:"en-US/resources/message.md"},n=i(`消息 (Message) 类型定义 ts interface Message {
+ isDirect : boolean
+ channelId : string
+ messageId : string
+ userId : string
+ content : string
+ timestamp ? : number
+}
API bot.sendMessage(channelId, content, guildId?) channelId: string
频道 IDcontent: Fragment
要发送的内容guildId: string
群组 ID返回值: Promise<string[]>
发送的消息 ID 向特定频道发送消息。
WARNING
只要你能够获取到会话对象,你就不应使用此 API,而应该使用 session.send()
。一些平台会将主动发送的消息同被动接收后回复的消息区分开来,甚至可能限制主动消息的发送,因此使用 session.send()
总是有更好的可靠性。
TIP
bot.sendMessage()
既可以发送群聊消息,也可以发送私聊消息。当发送私聊消息时,其与 bot.sendPrivateMessage()
的区别在于前者传入的是频道 ID,而后者传入的是用户 ID。
bot.sendPrivateMessage(userId, content) userId: string
对方 IDcontent: Fragment
要发送的内容返回值: Promise<string[]>
发送的消息 ID 向特定用户发送私聊消息。
bot.getMessage(channelId, messageId) channelId: string
频道 IDmessageId: string
消息 ID返回值: Promise<Message>
获取特定消息。
bot.deleteMessage(channelId, messageId) channelId: string
频道 IDmessageId: string
消息 ID返回值: Promise<void>
撤回特定消息。
bot.editMessage(channelId, messageId, content) channelId: string
频道 IDmessageId: string
消息 IDcontent: Fragment
要发送的内容返回值: Promise<void>
修改特定消息。
bot.getMessageList(channelId, next?) channelId: string
频道 IDnext: string
分页令牌返回值: Promise<List<Message>>
消息列表 获取频道消息列表。
`,24),l=[n];function o(d,r,c,g,h,p){return a(),e("div",null,l)}const u=s(t,[["render",o]]);export{m as __pageData,u as default};
diff --git a/assets/en-US_resources_message.md.BaNUWu1G.lean.js b/assets/en-US_resources_message.md.BaNUWu1G.lean.js
new file mode 100644
index 0000000..83e875d
--- /dev/null
+++ b/assets/en-US_resources_message.md.BaNUWu1G.lean.js
@@ -0,0 +1 @@
+import{_ as s,l as e,a,a6 as i}from"./chunks/framework.CtqZpALn.js";const m=JSON.parse('{"title":"消息 (Message)","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/message.md","filePath":"en-US/resources/message.md"}'),t={name:"en-US/resources/message.md"},n=i("",24),l=[n];function o(d,r,c,g,h,p){return a(),e("div",null,l)}const u=s(t,[["render",o]]);export{m as __pageData,u as default};
diff --git a/assets/en-US_resources_reaction.md.DViq2951.js b/assets/en-US_resources_reaction.md.DViq2951.js
new file mode 100644
index 0000000..d6d3b5b
--- /dev/null
+++ b/assets/en-US_resources_reaction.md.DViq2951.js
@@ -0,0 +1 @@
+import{_ as a,R as n,l as i,f as o,$ as e,m as r,w as s,a6 as c,a as d}from"./chunks/framework.CtqZpALn.js";const R=JSON.parse('{"title":"表态 (Reaction) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/reaction.md","filePath":"en-US/resources/reaction.md"}'),l={name:"en-US/resources/reaction.md"},g={id:"表态",tabindex:"-1"},h=o("a",{class:"header-anchor",href:"#表态","aria-label":'Permalink to "表态 (Reaction) 实验性 "'},"",-1),m=c('API bot.createReaction(channelId, messageId, emoji) channelId: string
频道 IDmessageId: string
消息 IDemoji: string
表态名称返回值: Promise<void>
向特定消息添加表态。
bot.deleteReaction(channelId, messageId, emoji, userId?) channelId: string
频道 IDmessageId: string
消息 IDemoji: string
表态名称userId: string
用户 ID返回值: Promise<void>
从特定消息删除某个用户添加的特定表态。如果没有传入用户 ID 则表示删除自己的表态。
bot.clearReaction(channelId, messageId, emoji?) channelId: string
频道 IDmessageId: string
消息 IDemoji: string
表态名称返回值: Promise<void>
从特定消息清除某个特定表态。如果没有传入表态名称则表示清除所有表态。
bot.getReactionList(channelId, messageId, emoji, next?) channelId: string
频道 IDmessageId: string
消息 IDemoji: string
表态名称next: string
分页令牌返回值: Promise<List<User>>
获取添加特定消息的特定表态的用户列表。
',13);function I(b,_,u,p,f,P){const t=n("badge");return d(),i("div",null,[o("h1",g,[e("表态 (Reaction) "),r(t,{type:"warning"},{default:s(()=>[e("实验性")]),_:1}),e(),h]),m])}const j=a(l,[["render",I]]);export{R as __pageData,j as default};
diff --git a/assets/en-US_resources_reaction.md.DViq2951.lean.js b/assets/en-US_resources_reaction.md.DViq2951.lean.js
new file mode 100644
index 0000000..0a13965
--- /dev/null
+++ b/assets/en-US_resources_reaction.md.DViq2951.lean.js
@@ -0,0 +1 @@
+import{_ as a,R as n,l as i,f as o,$ as e,m as r,w as s,a6 as c,a as d}from"./chunks/framework.CtqZpALn.js";const R=JSON.parse('{"title":"表态 (Reaction) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/reaction.md","filePath":"en-US/resources/reaction.md"}'),l={name:"en-US/resources/reaction.md"},g={id:"表态",tabindex:"-1"},h=o("a",{class:"header-anchor",href:"#表态","aria-label":'Permalink to "表态 (Reaction) 实验性 "'},"",-1),m=c("",13);function I(b,_,u,p,f,P){const t=n("badge");return d(),i("div",null,[o("h1",g,[e("表态 (Reaction) "),r(t,{type:"warning"},{default:s(()=>[e("实验性")]),_:1}),e(),h]),m])}const j=a(l,[["render",I]]);export{R as __pageData,j as default};
diff --git a/assets/en-US_resources_role.md.BlA2gUbW.js b/assets/en-US_resources_role.md.BlA2gUbW.js
new file mode 100644
index 0000000..ec96cd5
--- /dev/null
+++ b/assets/en-US_resources_role.md.BlA2gUbW.js
@@ -0,0 +1,6 @@
+import{_ as t,R as s,l as o,f as i,$ as e,m as a,w as d,a6 as r,a as n}from"./chunks/framework.CtqZpALn.js";const y=JSON.parse('{"title":"群组角色 (GuildRole) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/role.md","filePath":"en-US/resources/role.md"}'),g={name:"en-US/resources/role.md"},h={id:"群组角色",tabindex:"-1"},c=i("a",{class:"header-anchor",href:"#群组角色","aria-label":'Permalink to "群组角色 (GuildRole) 实验性 "'},"",-1),u=r(`类型定义 ts export interface GuildRole {
+ id : string
+ name : string
+ color : number
+ position : number
+}
API bot.setGuildMemberRole(guildId, userId, roleId) guildId: string
群组 IDuserId: string
用户 IDroleId: string
角色 ID返回值: Promise<void>
设置群组内用户的角色。
bot.unsetGuildMemberRole(guildId, userId, roleId) guildId: string
群组 IDuserId: string
用户 IDroleId: string
角色 ID返回值: Promise<void>
取消群组内用户的角色。
bot.getGuildRoleList(guildId, next?) guildId: string
群组 IDnext: string
分页令牌返回值: Promise<List<GuildRole>>
角色列表 获取群组角色列表。
bot.createGuildRole(guildId, data) guildId: string
群组 IDdata: Partial<GuildRole>
角色信息返回值: Promise<string>
角色 ID 创建群组角色。
bot.modifyGuildRole(guildId, roleId, data) guildId: string
群组 IDroleId: string
角色 IDdata: Partial<GuildRole>
角色信息返回值: Promise<void>
修改群组角色。
bot.deleteGuildRole(guildId, roleId) guildId: string
群组 IDroleId: string
角色 ID返回值: Promise<void>
删除群组角色。
`,21);function p(k,b,I,m,_,B){const l=s("badge");return n(),o("div",null,[i("h1",h,[e("群组角色 (GuildRole) "),a(l,{type:"warning"},{default:d(()=>[e("实验性")]),_:1}),e(),c]),u])}const D=t(g,[["render",p]]);export{y as __pageData,D as default};
diff --git a/assets/en-US_resources_role.md.BlA2gUbW.lean.js b/assets/en-US_resources_role.md.BlA2gUbW.lean.js
new file mode 100644
index 0000000..965d53e
--- /dev/null
+++ b/assets/en-US_resources_role.md.BlA2gUbW.lean.js
@@ -0,0 +1 @@
+import{_ as t,R as s,l as o,f as i,$ as e,m as a,w as d,a6 as r,a as n}from"./chunks/framework.CtqZpALn.js";const y=JSON.parse('{"title":"群组角色 (GuildRole) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/role.md","filePath":"en-US/resources/role.md"}'),g={name:"en-US/resources/role.md"},h={id:"群组角色",tabindex:"-1"},c=i("a",{class:"header-anchor",href:"#群组角色","aria-label":'Permalink to "群组角色 (GuildRole) 实验性 "'},"",-1),u=r("",21);function p(k,b,I,m,_,B){const l=s("badge");return n(),o("div",null,[i("h1",h,[e("群组角色 (GuildRole) "),a(l,{type:"warning"},{default:d(()=>[e("实验性")]),_:1}),e(),c]),u])}const D=t(g,[["render",p]]);export{y as __pageData,D as default};
diff --git a/assets/en-US_resources_user.md.d8k6TvvM.js b/assets/en-US_resources_user.md.d8k6TvvM.js
new file mode 100644
index 0000000..8f8a5e6
--- /dev/null
+++ b/assets/en-US_resources_user.md.d8k6TvvM.js
@@ -0,0 +1,5 @@
+import{_ as e,l as s,a,a6 as i}from"./chunks/framework.CtqZpALn.js";const u=JSON.parse('{"title":"用户 (User)","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/user.md","filePath":"en-US/resources/user.md"}'),t={name:"en-US/resources/user.md"},n=i(`用户 (User) 类型定义 ts export interface User {
+ id : string
+ name : string
+ avatar ? : string
+}
API bot.getSelf() 获取机器人自己的信息。
bot.getUser(userId) userId: string
用户 ID返回值: Promise<User>
用户信息 获取用户信息。
bot.getFriendList(next?) next: string
分页令牌返回值: Promise<List<User>>
好友列表 获取机器人的好友列表。
bot.handleFriendRequest(messageId, approve, comment?) messageId: string
请求 IDapprove: boolean
是否通过请求comment: string
备注信息返回值: Promise<void>
处理好友请求。
`,16),r=[n];function l(o,h,d,p,c,g){return a(),s("div",null,r)}const b=e(t,[["render",l]]);export{u as __pageData,b as default};
diff --git a/assets/en-US_resources_user.md.d8k6TvvM.lean.js b/assets/en-US_resources_user.md.d8k6TvvM.lean.js
new file mode 100644
index 0000000..38535c2
--- /dev/null
+++ b/assets/en-US_resources_user.md.d8k6TvvM.lean.js
@@ -0,0 +1 @@
+import{_ as e,l as s,a,a6 as i}from"./chunks/framework.CtqZpALn.js";const u=JSON.parse('{"title":"用户 (User)","description":"","frontmatter":{},"headers":[],"relativePath":"en-US/resources/user.md","filePath":"en-US/resources/user.md"}'),t={name:"en-US/resources/user.md"},n=i("",16),r=[n];function l(o,h,d,p,c,g){return a(),s("div",null,r)}const b=e(t,[["render",l]]);export{u as __pageData,b as default};
diff --git a/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 b/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2
new file mode 100644
index 0000000..2a68729
Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.5XJwZIOp.woff2 differ
diff --git a/assets/inter-italic-cyrillic.D6csxwjC.woff2 b/assets/inter-italic-cyrillic.D6csxwjC.woff2
new file mode 100644
index 0000000..f640351
Binary files /dev/null and b/assets/inter-italic-cyrillic.D6csxwjC.woff2 differ
diff --git a/assets/inter-italic-greek-ext.CHOfFY1k.woff2 b/assets/inter-italic-greek-ext.CHOfFY1k.woff2
new file mode 100644
index 0000000..0021896
Binary files /dev/null and b/assets/inter-italic-greek-ext.CHOfFY1k.woff2 differ
diff --git a/assets/inter-italic-greek.9J96vYpw.woff2 b/assets/inter-italic-greek.9J96vYpw.woff2
new file mode 100644
index 0000000..71c265f
Binary files /dev/null and b/assets/inter-italic-greek.9J96vYpw.woff2 differ
diff --git a/assets/inter-italic-latin-ext.BGcWXLrn.woff2 b/assets/inter-italic-latin-ext.BGcWXLrn.woff2
new file mode 100644
index 0000000..9c1b944
Binary files /dev/null and b/assets/inter-italic-latin-ext.BGcWXLrn.woff2 differ
diff --git a/assets/inter-italic-latin.DbsTr1gm.woff2 b/assets/inter-italic-latin.DbsTr1gm.woff2
new file mode 100644
index 0000000..01fcf20
Binary files /dev/null and b/assets/inter-italic-latin.DbsTr1gm.woff2 differ
diff --git a/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 b/assets/inter-italic-vietnamese.DHNAd7Wr.woff2
new file mode 100644
index 0000000..e4f788e
Binary files /dev/null and b/assets/inter-italic-vietnamese.DHNAd7Wr.woff2 differ
diff --git a/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 b/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2
new file mode 100644
index 0000000..28593cc
Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.DxP3Awbn.woff2 differ
diff --git a/assets/inter-roman-cyrillic.CMhn1ESj.woff2 b/assets/inter-roman-cyrillic.CMhn1ESj.woff2
new file mode 100644
index 0000000..a20adc1
Binary files /dev/null and b/assets/inter-roman-cyrillic.CMhn1ESj.woff2 differ
diff --git a/assets/inter-roman-greek-ext.D0mI3NpI.woff2 b/assets/inter-roman-greek-ext.D0mI3NpI.woff2
new file mode 100644
index 0000000..e3b0be7
Binary files /dev/null and b/assets/inter-roman-greek-ext.D0mI3NpI.woff2 differ
diff --git a/assets/inter-roman-greek.JvnBZ4YD.woff2 b/assets/inter-roman-greek.JvnBZ4YD.woff2
new file mode 100644
index 0000000..f790e04
Binary files /dev/null and b/assets/inter-roman-greek.JvnBZ4YD.woff2 differ
diff --git a/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 b/assets/inter-roman-latin-ext.ZlYT4o7i.woff2
new file mode 100644
index 0000000..715bd90
Binary files /dev/null and b/assets/inter-roman-latin-ext.ZlYT4o7i.woff2 differ
diff --git a/assets/inter-roman-latin.Bu8hRsVA.woff2 b/assets/inter-roman-latin.Bu8hRsVA.woff2
new file mode 100644
index 0000000..a540b7a
Binary files /dev/null and b/assets/inter-roman-latin.Bu8hRsVA.woff2 differ
diff --git a/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 b/assets/inter-roman-vietnamese.ClpjcLMQ.woff2
new file mode 100644
index 0000000..5a9f9cb
Binary files /dev/null and b/assets/inter-roman-vietnamese.ClpjcLMQ.woff2 differ
diff --git a/assets/style.BYMbA2WS.css b/assets/style.BYMbA2WS.css
new file mode 100644
index 0000000..fab4312
--- /dev/null
+++ b/assets/style.BYMbA2WS.css
@@ -0,0 +1 @@
+.adapter-table{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1rem 1rem}.adapter-table a.adapter{display:flex;align-items:center;justify-content:center;width:100%;height:4rem;border-radius:12px;background-color:var(--vp-c-bg-soft);transition:all .3s ease;text-decoration:none;color:var(--vp-c-text);cursor:pointer;-webkit-user-select:none;user-select:none}.adapter-table .adapter:hover{background-color:var(--vp-c-bg-alt)}.el-scrollbar{--el-text-color-secondary: #909399;--el-scrollbar-opacity: .3;--el-scrollbar-bg-color: var(--el-text-color-secondary);--el-scrollbar-hover-opacity: .5;--el-scrollbar-hover-bg-color: var(--el-text-color-secondary);--el-transition-duration: .3s}.el-scrollbar{overflow:hidden;position:relative;height:100%}.el-scrollbar__wrap{overflow:auto;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color, var(--el-text-color-secondary));transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity, .3)}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color, var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity, .5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{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-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-6b52fe58]{display:none}.VPDocAsideOutline.has-outline[data-v-6b52fe58]{display:block}.content[data-v-6b52fe58]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-6b52fe58]{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-6b52fe58]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-19a7ae4e]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-19a7ae4e]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-b4b63abf]{margin-top:64px}.edit-info[data-v-b4b63abf]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-b4b63abf]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-b4b63abf]{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-b4b63abf]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-b4b63abf]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-b4b63abf]{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-b4b63abf]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-b4b63abf]{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-b4b63abf]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-b4b63abf]{margin-left:auto;text-align:right}.desc[data-v-b4b63abf]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-b4b63abf]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{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-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{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-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.spoiler[data-v-4b7f368a]{border-radius:4px;padding:1px 3px;margin:0 3px;text-shadow:none;transition:color .2s linear;background-color:var(--vp-custom-block-tip-text)}.spoiler[data-v-4b7f368a]:hover{color:var(--vp-c-bg)}.chat-message{position:relative;margin:1rem 0;opacity:0;transform:translate(-20%);transition:transform .3s ease-out,opacity .3s ease}.chat-message.shown{opacity:1;transform:translate(0)}.chat-message .avatar{width:2.8rem;height:2.8rem;position:absolute;border-radius:100%;transform:translateY(-1px);-webkit-user-select:none;user-select:none;pointer-events:none;text-align:center;line-height:2.8rem;font-size:1.6rem;color:#fff;font-family:Comic Sans MS}.chat-message .nickname{-webkit-user-select:none;user-select:none;position:relative;margin:0 0 .4rem 4.2rem;font-weight:700;font-size:.9rem}.chat-message:not(.no-padding) .message-box{padding:.5rem .7rem}.chat-message .message-box{position:relative;margin-left:4.2rem;width:fit-content;border-radius:.5rem;background-color:var(--vp-c-bg);word-break:break-all;line-height:26px!important}.chat-message .message-box>img{border-radius:.5rem}.chat-message .message-box img{vertical-align:middle}.chat-message .message-box p>img{margin:.2rem 0}.chat-message .message-box:before{content:"";position:absolute;right:100%;top:0;width:12px;height:12px;border:0 solid transparent;border-bottom-width:8px;border-bottom-color:currentColor;border-radius:0 0 0 32px;color:var(--vp-c-bg)}.chat-message .message-box p{margin:0!important;line-height:26px!important}.chat-message .message-box p.indent-1{padding-left:1rem}.chat-message .message-box p.indent-2{padding-left:2rem}.chat-message .message-box blockquote{font-size:.9rem;margin:0 0 .2rem;background-color:#f3f6f9;border:none;border-radius:.5rem;padding:.2rem .6rem;background-color:var(--vp-c-bg-alt);color:var(--vp-c-text-2)}.panel-view{position:relative;border-radius:6px;margin:1rem 0;overflow:auto hidden;background-color:var(--vp-c-bg-alt)}.panel-view.manager,.panel-view.container{background-color:#032f62}.panel-view .controls{display:initial;position:absolute;top:.8rem;width:100%}.panel-view .circle{position:absolute;top:2px;width:12px;height:12px;border-radius:6px}.panel-view .circle.red{left:17px;background-color:#ff5f56}.panel-view .circle.yellow{left:36px;background-color:#ffbd2e}.panel-view .circle.green{left:55px;background-color:#27c93f}.panel-view .title{text-align:center;width:100%;font-size:.9rem;line-height:1rem}.panel-view .title .tab{color:gray;cursor:pointer;transition:.3s ease}.panel-view .title .tab.active{color:#fff;cursor:default}.panel-view .title .title-text:not(:last-child):after{color:gray;content:" - "}.panel-view .title .tab+.tab:before{cursor:default;content:" | ";color:gray}.panel-view .content{padding:.2rem 1.2rem}.panel-view .content>p{font-size:.8rem;color:#909399;text-align:center}.panel-view.mini .controls{display:none}.panel-view:not(.mini) .content{padding-top:2rem}.tab-select{margin-top:16px}.tab-select .header span{display:inline-block;padding:4px 16px;font-size:12px;font-weight:500;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--vp-c-text-2);background-color:var(--vp-code-block-bg);border-bottom:1px solid var(--vp-c-bg)}.tab-select .header span.active{color:var(--vp-c-text-1)}.tab-select .header span:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.tab-select .header span:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.tab-select .header span+span{border-left:1px solid var(--vp-c-bg)}@media (max-width: 639px){.tab-select.code .header{margin:0 -24px}}.tab-select.code .header span:first-child{border-bottom-left-radius:0}.tab-select.code .header span:last-child{border-bottom-right-radius:0}.tab-select.code .header+div{margin-top:0!important;border-top-left-radius:0!important}.tab-select.code .header+div span.lang{display:none}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic.CMhn1ESj.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-cyrillic-ext.DxP3Awbn.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 var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek.JvnBZ4YD.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-greek-ext.D0mI3NpI.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin.Bu8hRsVA.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,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 var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-latin-ext.ZlYT4o7i.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/assets/inter-roman-vietnamese.ClpjcLMQ.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic.D6csxwjC.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-cyrillic-ext.5XJwZIOp.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 var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek.9J96vYpw.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-greek-ext.CHOfFY1k.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin.DbsTr1gm.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,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 var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-latin-ext.BGcWXLrn.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/assets/inter-italic-vietnamese.DHNAd7Wr.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}: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: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}: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-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}: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{display:inline-block;margin:auto 2px -2px}mjx-container>svg{margin:auto}.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 .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}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);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{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-bottom:4px;text-align:center;letter-spacing:1px;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-54a304ca]{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-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-b9c0c15a]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-b9c0c15a]{padding:96px 32px 168px}}.code[data-v-b9c0c15a]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-b9c0c15a]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-b9c0c15a]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-b9c0c15a]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-b9c0c15a]{padding-top:20px}.link[data-v-b9c0c15a]{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-b9c0c15a]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.VPButton[data-v-1e76fe75]{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-1e76fe75]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-1e76fe75]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-1e76fe75]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-1e76fe75]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-1e76fe75]: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-1e76fe75]: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-1e76fe75]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-1e76fe75]: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-1e76fe75]: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-1e76fe75]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-1e76fe75]: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-1e76fe75]: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-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-5a3e9999]{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-5a3e9999]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-5a3e9999]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-5a3e9999]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-5a3e9999]{flex-direction:row}}.main[data-v-5a3e9999]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-5a3e9999]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-5a3e9999]{text-align:left}}@media (min-width: 960px){.main[data-v-5a3e9999]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-5a3e9999]{max-width:592px}}.name[data-v-5a3e9999],.text[data-v-5a3e9999]{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-5a3e9999],.VPHero.has-image .text[data-v-5a3e9999]{margin:0 auto}.name[data-v-5a3e9999]{color:var(--vp-home-hero-name-color)}.clip[data-v-5a3e9999]{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-5a3e9999],.text[data-v-5a3e9999]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-5a3e9999],.text[data-v-5a3e9999]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-5a3e9999],.VPHero.has-image .text[data-v-5a3e9999]{margin:0}}.tagline[data-v-5a3e9999]{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-5a3e9999]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-5a3e9999]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-5a3e9999]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-5a3e9999]{margin:0}}.actions[data-v-5a3e9999]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-5a3e9999]{justify-content:center}@media (min-width: 640px){.actions[data-v-5a3e9999]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-5a3e9999]{justify-content:flex-start}}.action[data-v-5a3e9999]{flex-shrink:0;padding:6px}.image[data-v-5a3e9999]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-5a3e9999]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-5a3e9999]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-5a3e9999]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-5a3e9999]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-5a3e9999]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-5a3e9999]{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-5a3e9999]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-5a3e9999]{width:320px;height:320px}}[data-v-5a3e9999] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-5a3e9999] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-5a3e9999] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-ee984185]{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-ee984185]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-ee984185]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-ee984185]>.VPImage{margin-bottom:20px}.icon[data-v-ee984185]{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-ee984185]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-ee984185]{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-ee984185]{padding-top:8px}.link-text-value[data-v-ee984185]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-ee984185]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.VPHome[data-v-20eabd3a]{padding-bottom:96px}.VPHome[data-v-20eabd3a] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-20eabd3a]{padding-bottom:128px}}.VPContent[data-v-3cf691b6]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-3cf691b6]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-3cf691b6]{margin:0}@media (min-width: 960px){.VPContent[data-v-3cf691b6]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-3cf691b6]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-3cf691b6]{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-566314d4]{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-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-2744f6e0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-2744f6e0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-2744f6e0]{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-2744f6e0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-2744f6e0]{color:var(--vp-c-text-1)}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-2744f6e0]{font-size:14px}}.icon[data-v-2744f6e0]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}.open>.icon[data-v-2744f6e0]{transform:rotate(90deg)}.items[data-v-2744f6e0]{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-2744f6e0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-2744f6e0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-2744f6e0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-2744f6e0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-2744f6e0]{transition:all .2s ease-out}.flyout-leave-active[data-v-2744f6e0]{transition:all .15s ease-in}.flyout-enter-from[data-v-2744f6e0],.flyout-leave-to[data-v-2744f6e0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-b979e4d9]{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-b979e4d9]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-b979e4d9]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-b979e4d9]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-b979e4d9]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-b979e4d9]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-b979e4d9]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-b979e4d9]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-b979e4d9]{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-b979e4d9]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-b979e4d9]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-b979e4d9]{display:none}}.menu-icon[data-v-b979e4d9]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-b979e4d9]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-b979e4d9]{padding:12px 32px 11px}}.VPSwitch[data-v-1c29e291]{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-1c29e291]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1c29e291]{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-1c29e291]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1c29e291] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-1c29e291] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-d80abb8e]{opacity:1}.moon[data-v-d80abb8e],.dark .sun[data-v-d80abb8e]{opacity:0}.dark .moon[data-v-d80abb8e]{opacity:1}.dark .VPSwitchAppearance[data-v-d80abb8e] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-283b26e9]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-283b26e9]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f51f088d]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f51f088d]{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-f51f088d]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f51f088d]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{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-e42ed9b3]{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-e42ed9b3] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e42ed9b3] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e42ed9b3] .group:last-child{padding-bottom:0}.VPMenu[data-v-e42ed9b3] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e42ed9b3] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e42ed9b3] .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-e42ed9b3] .action{padding-left:24px}.VPFlyout[data-v-aa8de344]{position:relative}.VPFlyout[data-v-aa8de344]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-aa8de344]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-aa8de344]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-aa8de344]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-aa8de344]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-aa8de344],.button[aria-expanded=true]+.menu[data-v-aa8de344]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-aa8de344]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-aa8de344]{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-aa8de344]{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-aa8de344]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-aa8de344]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-aa8de344]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-aa8de344]{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-16cf740a]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-16cf740a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-16cf740a]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-8e87c032]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-8e87c032]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-8e87c032]{display:none}}.trans-title[data-v-8e87c032]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-8e87c032],.item.social-links[data-v-8e87c032]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-8e87c032]{min-width:176px}.appearance-action[data-v-8e87c032]{margin-right:-2px}.social-links-list[data-v-8e87c032]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-cb318fec]{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-cb318fec],.VPNavBarMenuLink[data-v-cb318fec]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-f732b5d0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f732b5d0]{display:flex}}/*! @docsearch/css 3.6.0 | 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: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}.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-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-da535f8d]{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-da535f8d]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-da535f8d]{border-bottom-color:var(--vp-c-divider)}}[data-v-da535f8d] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-ff4524ae]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-ff4524ae]{display:flex;align-items:center}}.title[data-v-ff4524ae]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-3efcd581]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .5s}.VPNavBar.has-local-nav[data-v-3efcd581]{background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar.has-local-nav[data-v-3efcd581]{background-color:transparent}.VPNavBar[data-v-3efcd581]:not(.has-sidebar):not(.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-3efcd581]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-3efcd581]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-3efcd581]{padding:0}}.container[data-v-3efcd581]{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-3efcd581],.container>.content[data-v-3efcd581]{pointer-events:none}.container[data-v-3efcd581] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-3efcd581]{max-width:100%}}.title[data-v-3efcd581]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-3efcd581]{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-3efcd581]{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-3efcd581]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-3efcd581]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-3efcd581]{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-3efcd581]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-3efcd581]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.top) .content-body[data-v-3efcd581]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-3efcd581]{column-gap:.5rem}}.menu+.translations[data-v-3efcd581]:before,.menu+.appearance[data-v-3efcd581]:before,.menu+.social-links[data-v-3efcd581]:before,.translations+.appearance[data-v-3efcd581]:before,.appearance+.social-links[data-v-3efcd581]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-3efcd581]:before,.translations+.appearance[data-v-3efcd581]:before{margin-right:16px}.appearance+.social-links[data-v-3efcd581]:before{margin-left:16px}.social-links[data-v-3efcd581]{margin-right:-8px}.divider[data-v-3efcd581]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-3efcd581]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-3efcd581]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-3efcd581]{width:100%;height:1px;transition:background-color .5s}.VPNavBar.has-local-nav .divider-line[data-v-3efcd581]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.top) .divider-line[data-v-3efcd581]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.top) .divider[data-v-3efcd581]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-338d9b48]{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-338d9b48]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-fe523e3d]{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-fe523e3d]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-aea78dd1]{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-aea78dd1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-32e4a89c]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-32e4a89c]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-32e4a89c]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-32e4a89c]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-32e4a89c]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-32e4a89c]{transform:rotate(45deg)}.button[data-v-32e4a89c]{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-32e4a89c]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-32e4a89c]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-32e4a89c]:first-child{padding-top:0}.group+.group[data-v-32e4a89c],.group+.item[data-v-32e4a89c]{padding-top:4px}.VPNavScreenTranslations[data-v-41505286]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-41505286]{height:auto}.title[data-v-41505286]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-41505286]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-41505286]{margin-right:8px}.icon.chevron[data-v-41505286]{margin-left:4px}.list[data-v-41505286]{padding:4px 0 0 24px}.link[data-v-41505286]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-57cce842]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);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 .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-57cce842],.VPNavScreen.fade-leave-active[data-v-57cce842]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-57cce842],.VPNavScreen.fade-leave-active .container[data-v-57cce842]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-57cce842],.VPNavScreen.fade-leave-to[data-v-57cce842]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-57cce842],.VPNavScreen.fade-leave-to .container[data-v-57cce842]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-57cce842]{display:none}}.container[data-v-57cce842]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-57cce842],.menu+.appearance[data-v-57cce842],.translations+.appearance[data-v-57cce842]{margin-top:24px}.menu+.social-links[data-v-57cce842]{margin-top:16px}.appearance+.social-links[data-v-57cce842]{margin-top:16px}.VPNav[data-v-7ad780c2]{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-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-bd01e0d5]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-bd01e0d5]{padding-bottom:10px}.item[data-v-bd01e0d5]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-bd01e0d5]{cursor:pointer}.indicator[data-v-bd01e0d5]{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-bd01e0d5],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-bd01e0d5],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-bd01e0d5],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-bd01e0d5]{background-color:var(--vp-c-brand-1)}.link[data-v-bd01e0d5]{display:flex;align-items:center;flex-grow:1}.text[data-v-bd01e0d5]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-bd01e0d5]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-bd01e0d5],.VPSidebarItem.level-2 .text[data-v-bd01e0d5],.VPSidebarItem.level-3 .text[data-v-bd01e0d5],.VPSidebarItem.level-4 .text[data-v-bd01e0d5],.VPSidebarItem.level-5 .text[data-v-bd01e0d5]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-bd01e0d5]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-1.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-2.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-3.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-4.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-5.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-bd01e0d5]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-bd01e0d5]{color:var(--vp-c-brand-1)}.caret[data-v-bd01e0d5]{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-bd01e0d5]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-bd01e0d5]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-bd01e0d5]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-bd01e0d5]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-bd01e0d5],.VPSidebarItem.level-2 .items[data-v-bd01e0d5],.VPSidebarItem.level-3 .items[data-v-bd01e0d5],.VPSidebarItem.level-4 .items[data-v-bd01e0d5],.VPSidebarItem.level-5 .items[data-v-bd01e0d5]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-bd01e0d5]{display:none}.VPSidebar[data-v-4871f9f5]{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-4871f9f5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-4871f9f5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-4871f9f5]{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-4871f9f5]{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-4871f9f5]{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-4871f9f5]{outline:0}.group+.group[data-v-4871f9f5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-4871f9f5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c8291ffa]{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-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-9d8abc1e]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-843cc1b2]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-843cc1b2]{margin:0 auto;max-width:1152px}.love[data-v-843cc1b2]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-843cc1b2]{width:28px;height:28px;fill:currentColor}.message[data-v-843cc1b2]{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-843cc1b2]{padding-top:32px}.action[data-v-843cc1b2]{padding-top:40px;text-align:center}.VPTeamPage[data-v-b1cfd8dc]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-b1cfd8dc]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-b1cfd8dc-s],.VPTeamMembers+.VPTeamPageSection[data-v-b1cfd8dc-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-b1cfd8dc-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-b1cfd8dc-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-b1cfd8dc-s],.VPTeamMembers+.VPTeamPageSection[data-v-b1cfd8dc-s]{margin-top:96px}}.VPTeamMembers[data-v-b1cfd8dc-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-b1cfd8dc-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-b1cfd8dc-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{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-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{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-3bf2e850]{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-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-9d746f28]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-9d746f28]{padding:32px}.VPTeamMembersItem.small .data[data-v-9d746f28]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-9d746f28]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-9d746f28]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-9d746f28]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-9d746f28]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-9d746f28]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-9d746f28]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-9d746f28]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-9d746f28]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-9d746f28]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-9d746f28]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-9d746f28]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-9d746f28]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-9d746f28]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-9d746f28]{text-align:center}.avatar[data-v-9d746f28]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-9d746f28]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-9d746f28]{margin:0;font-weight:600}.affiliation[data-v-9d746f28]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-9d746f28]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-9d746f28]:hover{color:var(--vp-c-brand-1)}.desc[data-v-9d746f28]{margin:0 auto}.desc[data-v-9d746f28] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-9d746f28]{display:flex;justify-content:center;height:56px}.sp-link[data-v-9d746f28]{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-9d746f28]:hover,.sp .sp-link.link[data-v-9d746f28]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-9d746f28]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPSidebar{position:fixed!important;padding:0 32px;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-c-bg);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease}.vp-sidebar-view{padding:32px 0;overflow-x:hidden}.VPSidebar.open{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar{width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-c-bg-alt);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}.vp-sidebar-view{padding-top:var(--vp-nav-height);padding-bottom:32px}}@media (min-width: 1440px){.VPSidebar{padding-left:max(32px,(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{margin-top:calc(var(--vp-nav-height) * -1);height:var(--vp-nav-height)}.el-scrollbar .VPSidebar{height:calc(100% - 64px);top:64px}}.vp-sidebar-nav{outline:0}.vp-sidebar-nav>.group+.group{margin-top:16px}.group+.group{border-top:1px solid var(--vp-c-divider);padding-top:16px}@media (min-width: 960px){.group{padding-top:16px;width:calc(var(--vp-sidebar-width) - 64px)}}.group .VPSidebarItem.level-0{padding-bottom:0}.group .VPSidebarItem.level-0>.item>.text{padding:0;margin:4px 0}.Layout[data-v-c1849dc6]{display:flex;flex-direction:column;min-height:100vh}.VPContent[data-v-c1849dc6]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.has-sidebar[data-v-c1849dc6]{margin:0}@media (min-width: 960px){.VPContent[data-v-c1849dc6]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-c1849dc6]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-c1849dc6]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.px{padding-left:1rem;padding-right:1rem}.me{margin-inline-end:1rem}.block{display:block}.inline-block{display:inline-block}.hidden{display:none}.border{border-width:1px}.tab{-moz-tab-size:4;-o-tab-size:4;tab-size:4}.underline{text-decoration-line:underline}.text-shadow{--un-text-shadow:0 0 1px var(--un-text-shadow-color, rgb(0 0 0 / .2)),0 0 1px var(--un-text-shadow-color, rgb(1 0 5 / .1));text-shadow:var(--un-text-shadow)}.flex{display:flex}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.flex-wrap{flex-wrap:wrap}.grid{display:grid}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.h1{height:.25rem}.h2{height:.5rem}.h3{height:.75rem}.h4{height:1rem}.h5{height:1.25rem}.h6{height:1.5rem}.visible{visibility:visible}.resize{resize:both}.break-all{word-break:break-all}.outline{outline-style:solid}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.transform{transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.VPSidebarItem.is-link{margin:4px 0}.VPSidebarItem .items{overflow:hidden}.VPSidebarItem .items:first-child .VPSidebarItem.is-link:first-child{padding-top:4px;padding-bottom:4px;line-height:24px;font-size:14px;margin:0}.VPSidebarItem .items:first-child .VPSidebarItem.is-link:first-child p.text{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem .items:first-child .VPSidebarItem.is-link:first-child.is-active p.text{color:var(--vp-c-brand)}.VPSidebarItem .item p.text{padding:0}@media (min-width: 1440px){.VPNavBar.has-sidebar .container .content{padding-right:0}.VPNavBar.has-sidebar .container .content .content-body{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px)}}@media (min-width: 960px){.VPNavBar.has-sidebar .title{background-color:var(--vp-sidebar-bg-color)}}.VPDocAsideOutline .outline-link{line-height:28px;font-size:13px}.VPLocalNav.has-sidebar{--vp-c-gutter: var(--vp-c-border)}@media (min-width: 960px) and (max-width: 1280px){.VPLocalNav.has-sidebar{border-bottom:none;background:transparent;--vp-z-index-local-nav: 35}.VPLocalNav.has-sidebar .container{top:0;position:fixed;height:var(--vp-nav-height);z-index:var(--vp-z-index-local-nav)}.VPLocalNav.has-sidebar .VPLocalNavOutlineDropdown button{font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPLocalNav.has-sidebar .VPLocalNavOutlineDropdown .items{top:60px;left:20px}}@media (max-width: 960px){.VPNav .VPNavBar .divider-line{background-color:var(--vp-c-border)}}@media (min-width: 960px){.VPNavBar .divider-line{background-color:transparent!important}.VPNavBar .divider-line:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}.layout-home .divider-line{display:none}:root{--shiki-token-text: #000000;--shiki-token-constant: #005CC5;--shiki-token-number: #005CC5;--shiki-token-string: #22863A;--shiki-token-comment: #6A737D;--shiki-token-keyword: #D73A49;--shiki-token-parameter: #E36209;--shiki-token-function: #6F42C1;--shiki-token-operator: #D73A49;--shiki-token-punctuation: #032F62;--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-lang: var(--vp-c-text-light-3);--vp-code-line-highlight-color: #0000000A}html.dark{--shiki-token-text: #ABB2BF;--shiki-token-constant: #E5C07B;--shiki-token-number: #D19A66;--shiki-token-string: #98C379;--shiki-token-comment: #7F848E;--shiki-token-keyword: #C678DD;--shiki-token-parameter: #E06C75;--shiki-token-function: #61AFEF;--shiki-token-operator: #56B6C2;--shiki-token-punctuation: #ABB2BF;--vp-code-line-highlight-color: #000000A0}html.dark{--vp-code-lang: var(--vp-c-text-dark-3)}.vp-doc [class*=language-]>span.lang{color:var(--vp-code-lang)}.vp-doc ol,.vp-doc ul{line-height:1.75;padding-left:1.5rem}.vp-doc li+li{margin-top:0}.vp-doc th,.vp-doc td{padding:.6em 1em}.vp-doc li>ol,.vp-doc li>ul{margin-top:0}.vp-doc h3+h3{margin-top:1rem}.vp-doc div[class*=language-]+div[class*=language-]{margin-top:0}.vp-doc blockquote>p{font-size:15px;line-height:1.7}.vp-doc .custom-block{font-size:15px;padding:1px 1.5rem;border-width:0;border-radius:0;border-left-width:4px;border-left-style:solid;position:relative}.vp-doc .custom-block .custom-block-title{display:none}.vp-doc .custom-block p{margin:1rem 0;line-height:1.7}.vp-doc .custom-block div[class*=language-]{margin:1rem 0}.vp-doc .custom-block:before{content:"!";position:absolute;top:20px;left:-12px;color:#fff;width:20px;height:20px;border-radius:100%;text-align:center;line-height:21px;font-weight:700;font-family:Dosis,Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-size:14px}.vp-doc .custom-block.info:before{background-color:var(--vp-custom-block-info-border)}.vp-doc .custom-block.tip:before{background-color:var(--vp-custom-block-tip-border)}.vp-doc .custom-block.warning:before{background-color:var(--vp-custom-block-warning-border)}.vp-doc .custom-block.danger:before{background-color:var(--vp-custom-block-danger-border)}html:not(.dark) .dark-only{display:none}html.dark .light-only{display:none}mjx-container{font-size:.95em}p mjx-container,li mjx-container{display:inline-flex;vertical-align:middle}p mjx-container>svg,li mjx-container>svg{margin-top:-4px}:root{--vp-nav-height: 64px;--vp-custom-block-tip-text: var(--vp-c-brand-1);--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-success-text: var(--vp-c-green-1);--vp-custom-block-warning-text: var(--vp-c-yellow-1);--vp-custom-block-danger-text: var(--vp-c-red-1);--vp-custom-block-tip-border: var(--vp-c-brand-1);--vp-custom-block-info-border: var(--vp-c-gray-1);--vp-custom-block-success-border: var(--vp-c-green-1);--vp-custom-block-warning-border: var(--vp-c-yellow-1);--vp-custom-block-danger-border: var(--vp-c-red-1)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}.el-scrollbar__bar{z-index:50}.outline{outline-style:none}.home[data-v-b7c0548e]{position:absolute;width:100%;top:0;left:0;height:100vh;overflow-y:auto;display:grid;grid-template-rows:repeat(1,100vh)}.footer[data-v-b7c0548e]{position:absolute;bottom:0;left:0;width:100%;text-align:center;padding:1rem 0;font-size:.8rem;color:var(--vp-text-light);text-decoration:none;transition:color .3s ease}.footer[data-v-b7c0548e]:hover{color:var(--vp-text)}.screen[data-v-b7c0548e]{padding:6rem;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center}h1[data-v-b7c0548e]{font-size:3rem;line-height:1.5}.desc[data-v-b7c0548e]{color:var(--vp-text-light);text-transform:uppercase;text-align:center;line-height:2;margin:1rem 0}.actions[data-v-b7c0548e]{margin:1.5rem 0;display:flex;flex-wrap:wrap;gap:2.2rem;justify-content:center}@media (max-width: 600px){.actions[data-v-b7c0548e]{margin:4rem 0 0;flex-direction:column}}.actions .action-button[data-v-b7c0548e]{flex:1 0 auto;-webkit-user-select:none;user-select:none;display:inline-block;font-size:1.05rem;line-height:1.4;padding:.5rem 2.2rem;border-width:2px;border-style:solid;border-radius:2rem;transition:color .3s ease,background-color .3s ease,border-color .3s ease;box-sizing:border-box;cursor:pointer}@media (max-width: 600px){.actions .action-button[data-v-b7c0548e]{padding:.5rem 4rem}}.actions .action-button.secondary[data-v-b7c0548e]{color:var(--vp-button-brand-hover-bg);border-color:var(--vp-button-brand-bg)}.actions .action-button.secondary[data-v-b7c0548e]:hover{color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}blockquote.route .badge{border-top-right-radius:0;border-bottom-right-radius:0}blockquote.route code{display:inline-flex;align-items:center;vertical-align:middle;height:20px;border-top-left-radius:0;border-bottom-left-radius:0}
diff --git a/assets/zh-CN_advanced_admin.md.C9G_6R-7.js b/assets/zh-CN_advanced_admin.md.C9G_6R-7.js
new file mode 100644
index 0000000..e747a7f
--- /dev/null
+++ b/assets/zh-CN_advanced_admin.md.C9G_6R-7.js
@@ -0,0 +1 @@
+import{_ as n,R as s,l as c,f as t,$ as e,m as a,w as l,a6 as d,a as r}from"./chunks/framework.CtqZpALn.js";const V=JSON.parse('{"title":"管理接口 可选 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/advanced/admin.md","filePath":"zh-CN/advanced/admin.md"}'),i={name:"zh-CN/advanced/admin.md"},h={id:"管理接口",tabindex:"-1"},_=t("a",{class:"header-anchor",href:"#管理接口","aria-label":'Permalink to "管理接口 可选 实验性 "'},"",-1),u=d('管理 API 包含了与 SDK 状态相关、与具体的平台无关的操作,例如创建和移除 WebHook 等。
管理 API 通过 /{path}/{version}/admin/{method}
路由提供。通信方式与 HTTP API 类似,但不需要 X-Platform
和 X-Self-ID
请求头。
API 获取登录信息列表 ',6),b={class:"route"},p=t("code",null,"/admin/login.list",-1),m=t("p",null,[e("返回 "),t("a",{href:"./../resources/login.html"},"Login"),e(" 对象构成的数组。")],-1),k=t("h3",{id:"创建-webhook",tabindex:"-1"},[e("创建 WebHook "),t("a",{class:"header-anchor",href:"#创建-webhook","aria-label":'Permalink to "创建 WebHook"'},"")],-1),f={class:"route"},P=t("code",null,"/admin/webhook.create",-1),T=d('字段 类型 描述 url string WebHook 地址 token string? 鉴权令牌
移除 WebHook ',2),g={class:"route"},S=t("code",null,"/admin/webhook.delete",-1),A=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"描述")])]),t("tbody",null,[t("tr",null,[t("td",null,"url"),t("td",null,"string"),t("td",null,"WebHook 地址")])])],-1);function I(N,v,w,x,q,C){const o=s("badge");return r(),c("div",null,[t("h1",h,[e("管理接口 "),a(o,null,{default:l(()=>[e("可选")]),_:1}),e(),a(o,{type:"warning"},{default:l(()=>[e("实验性")]),_:1}),e(),_]),u,t("blockquote",b,[a(o,null,{default:l(()=>[e("POST")]),_:1}),p]),m,k,t("blockquote",f,[a(o,null,{default:l(()=>[e("POST")]),_:1}),P]),T,t("blockquote",g,[a(o,null,{default:l(()=>[e("POST")]),_:1}),S]),A])}const W=n(i,[["render",I]]);export{V as __pageData,W as default};
diff --git a/assets/zh-CN_advanced_admin.md.C9G_6R-7.lean.js b/assets/zh-CN_advanced_admin.md.C9G_6R-7.lean.js
new file mode 100644
index 0000000..c972c02
--- /dev/null
+++ b/assets/zh-CN_advanced_admin.md.C9G_6R-7.lean.js
@@ -0,0 +1 @@
+import{_ as n,R as s,l as c,f as t,$ as e,m as a,w as l,a6 as d,a as r}from"./chunks/framework.CtqZpALn.js";const V=JSON.parse('{"title":"管理接口 可选 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/advanced/admin.md","filePath":"zh-CN/advanced/admin.md"}'),i={name:"zh-CN/advanced/admin.md"},h={id:"管理接口",tabindex:"-1"},_=t("a",{class:"header-anchor",href:"#管理接口","aria-label":'Permalink to "管理接口 可选 实验性 "'},"",-1),u=d("",6),b={class:"route"},p=t("code",null,"/admin/login.list",-1),m=t("p",null,[e("返回 "),t("a",{href:"./../resources/login.html"},"Login"),e(" 对象构成的数组。")],-1),k=t("h3",{id:"创建-webhook",tabindex:"-1"},[e("创建 WebHook "),t("a",{class:"header-anchor",href:"#创建-webhook","aria-label":'Permalink to "创建 WebHook"'},"")],-1),f={class:"route"},P=t("code",null,"/admin/webhook.create",-1),T=d("",2),g={class:"route"},S=t("code",null,"/admin/webhook.delete",-1),A=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"描述")])]),t("tbody",null,[t("tr",null,[t("td",null,"url"),t("td",null,"string"),t("td",null,"WebHook 地址")])])],-1);function I(N,v,w,x,q,C){const o=s("badge");return r(),c("div",null,[t("h1",h,[e("管理接口 "),a(o,null,{default:l(()=>[e("可选")]),_:1}),e(),a(o,{type:"warning"},{default:l(()=>[e("实验性")]),_:1}),e(),_]),u,t("blockquote",b,[a(o,null,{default:l(()=>[e("POST")]),_:1}),p]),m,k,t("blockquote",f,[a(o,null,{default:l(()=>[e("POST")]),_:1}),P]),T,t("blockquote",g,[a(o,null,{default:l(()=>[e("POST")]),_:1}),S]),A])}const W=n(i,[["render",I]]);export{V as __pageData,W as default};
diff --git a/assets/zh-CN_advanced_internal.md.6ADIgZra.js b/assets/zh-CN_advanced_internal.md.6ADIgZra.js
new file mode 100644
index 0000000..f0de6c0
--- /dev/null
+++ b/assets/zh-CN_advanced_internal.md.6ADIgZra.js
@@ -0,0 +1,11 @@
+import{_ as i,R as e,l as d,f as a,$ as t,m as n,w as l,a6 as o,a as h}from"./chunks/framework.CtqZpALn.js";const v=JSON.parse('{"title":"内部接口 可选","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/advanced/internal.md","filePath":"zh-CN/advanced/internal.md"}'),p={name:"zh-CN/advanced/internal.md"},r={id:"内部接口",tabindex:"-1"},c=a("a",{class:"header-anchor",href:"#内部接口","aria-label":'Permalink to "内部接口 可选 "'},"",-1),k=o(`Satori 提供了访问任意平台原生接口的能力。这意味着,你可以大多数情况下编写通用代码,并在需要的时候使用原生接口来实现平台特定功能。
这些原生 API 和事件被统称为内部接口。你可以名为 internal
的路由或事件来访问它们。
API 扩展 SDK 可以通过 /{path}/{version}/internal/{method}
路由代理平台原生 API。通信方式与 HTTP API 类似。返回值与平台返回值一致。
一个合法的请求示例形如:
text POST /v1/internal/get_channel
+Content-Type: application/json
+Authorization: Bearer 1234567890
+X-Platform: discord
+X-Self-ID: 1234567890
+
+["1234567890"]
事件扩展 平台原生事件 SDK 可以通过 internal
事件的 _type
和 _data
属性代理平台原生事件。它的结构如下:
字段 类型 说明 id
number 事件 ID type
string 事件类型 (固定为 internal
) platform
string 接收者的平台名称 self_id
string 接收者的平台账号 timestamp
number 事件的时间戳 _type
string 原生事件类型 _data
object 原生事件数据
标准事件的扩展字段 标准事件的平台原生字段也可以通过上述 _type
和 _data
访问。它的结构如下:
字段 类型 说明 type
string 事件类型 (不应该是 internal
) _type
string 平台通用名称 _data
object 原生事件数据 其他字段 其他标准事件字段
TIP
有些平台原生事件可以直接对应到标准事件。当这些事件触发时,SDK 可以同时触发标准事件和平台原生事件。这两个事件都带有 _type
和 _data
字段,但这两个字段的值可能是不同的。
消息元素扩展 平台原生消息元素 平台可以提供原生消息元素,但需要加上平台通用名称作为前缀。下面是一个例子:
html < kook:card size = "lg" >
+ < kook:countdown end-time = "1608819168000" />
+</ kook:card >
标准元素的扩展属性 标准元素的平台原生属性也可以通过加上平台通用名称作为前缀的方式声明。下面是一个例子:
html <!-- src 是 audio 元素的标准属性。 -->
+<!-- 但 cover 并未标准化,所以需要加前缀。 -->
+< audio src = "url1" kook:cover = "url2" / >
TIP
平台原生消息元素的属性是否需要前缀由 SDK 实现自行决定。如果某个消息元素希望在未来标准化,那么加上前缀可以降低迁移成本。如果没有标准化需要,那么去掉前缀在书写上更方便。
`,23);function g(u,y,b,m,B,_){const s=e("badge");return h(),d("div",null,[a("h1",r,[t("内部接口 "),n(s,null,{default:l(()=>[t("可选")]),_:1}),t(),c]),k])}const A=i(p,[["render",g]]);export{v as __pageData,A as default};
diff --git a/assets/zh-CN_advanced_internal.md.6ADIgZra.lean.js b/assets/zh-CN_advanced_internal.md.6ADIgZra.lean.js
new file mode 100644
index 0000000..98b826a
--- /dev/null
+++ b/assets/zh-CN_advanced_internal.md.6ADIgZra.lean.js
@@ -0,0 +1 @@
+import{_ as i,R as e,l as d,f as a,$ as t,m as n,w as l,a6 as o,a as h}from"./chunks/framework.CtqZpALn.js";const v=JSON.parse('{"title":"内部接口 可选","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/advanced/internal.md","filePath":"zh-CN/advanced/internal.md"}'),p={name:"zh-CN/advanced/internal.md"},r={id:"内部接口",tabindex:"-1"},c=a("a",{class:"header-anchor",href:"#内部接口","aria-label":'Permalink to "内部接口 可选 "'},"",-1),k=o("",23);function g(u,y,b,m,B,_){const s=e("badge");return h(),d("div",null,[a("h1",r,[t("内部接口 "),n(s,null,{default:l(()=>[t("可选")]),_:1}),t(),c]),k])}const A=i(p,[["render",g]]);export{v as __pageData,A as default};
diff --git a/assets/zh-CN_advanced_resource.md.R7MZX5XF.js b/assets/zh-CN_advanced_resource.md.R7MZX5XF.js
new file mode 100644
index 0000000..12e432c
--- /dev/null
+++ b/assets/zh-CN_advanced_resource.md.R7MZX5XF.js
@@ -0,0 +1,20 @@
+import{_ as t,R as i,l as p,f as a,$ as e,m as o,w as n,a6 as l,a as c}from"./chunks/framework.CtqZpALn.js";const I=JSON.parse('{"title":"资源链接 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/advanced/resource.md","filePath":"zh-CN/advanced/resource.md"}'),d={name:"zh-CN/advanced/resource.md"},r={id:"资源链接",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#资源链接","aria-label":'Permalink to "资源链接 实验性 "'},"",-1),h=a("div",{class:"warning custom-block"},[a("p",{class:"custom-block-title"},"WARNING"),a("p",null,"这是一个实验性功能。")],-1),m=a("h2",{id:"api-upload-create",tabindex:"-1"},[e("文件上传 "),a("a",{class:"header-anchor",href:"#api-upload-create","aria-label":'Permalink to "文件上传 {#api-upload-create}"'},"")],-1),g={class:"route"},_=a("code",null,"/upload.create",-1),k=l(`如果要发送的消息中含有图片或其他媒体资源,可以使用此 API 将文件上传至 Satori 服务器并转换为 URL,以便在消息编码中使用。
与其他 API 不同,上传文件的请求体遵循 multipart/form-data
格式。下面是一个示例:
text POST /v1/upload.create
+Content-Type: multipart/form-data
+Authorization: Bearer 1234567890
+X-Platform: discord
+X-Self-ID: 1234567890
+
+--boundary
+Content-Disposition: form-data; name="foo"; filename="image1.png"
+Content-Type: image/png
+
+binary-data
+--boundary
+Content-Disposition: form-data; name="bar"; filename="image2.gif"
+Content-Type: image/gif
+
+binary-data
+--boundary--
其中,Content-Disposition
中的 name
字段表示文件标识符 (必需且不能重复),filename
字段表示文件名 (可选);Content-Type
表示文件类型 (必需)。
返回值是一个字典类型,其中的每个键分别对应于请求体中的文件标识符,值是一个 URL 字符串,可以在消息编码中使用。下面是一个示例的返回值:
json {
+ "foo" : "upload://temp/z0q9lgqb/3j6emd92-image1.png" ,
+ "bar" : "upload://temp/z0q9lgqb/reacpmeq-image2.gif"
+}
在实现此 API 时,如果平台已经支持了文件上传功能,可以直接使用平台提供的上传 API,返回平台的 URL 即可。如果平台不支持文件上传功能,应当回退到 SDK 提供的默认实现。
SDK 可以基于本地文件系统实现上传功能。上传到本地文件系统中的文件 URL 通过 upload://
协议进一步代理,且有一定的有效期。各实现可以根据自身情况调整有效期,推荐值为 5 分钟。
内部链接 upload://
称为内部链接协议,用于代理一些无法直接通过公网访问的资源。
适用场景 上一节中已经提到,在不支持文件上传的平台上调用 upload.create
,你将获得内部链接。除此以外,还有一些内部链接的适用场景。
TIP
场景:通过平台 API 请求资源
某些平台使用 ID 标识资源文件 (例如 Lark)。当你接收到来自平台的消息时,拿到的是资源 ID 而非链接。此时你需要调用平台 API,将资源 ID 转换为链接,才能构造合法的消息元素。
为了避免在不必要的场合损失性能,更推荐的方式是直接将资源 ID 封装进内部链接,并立即构造消息元素。等到真正需要请求资源时再调用平台的 API。
TIP
场景:资源链接不宜直接公开
对于另一些平台,尽管其提供的资源链接是可用的,但这个链接中会明文包含机器人令牌,并非可以公开使用的链接 (例如 Telegram)。因此,对于这些平台中的资源,我们也不能直接使用其链接,同样需要将其封装进内部链接。此时内部链接就是单纯的代理。
不同方案对比 与内部链接相比,另一些实践则是不推荐的。
WARNING
不推荐:data:
URL
一种不推荐的方案是直接下载资源,并转换为 data:
链接放入消息元素中。之所以不推荐使用,是因为这种方案有两大致命缺点:
这些图片本来可以按需加载,但现在却被强制下载到本地,造成额外的带宽消耗; 编码为 data:
会导致消息体积大幅增加,极大影响消息处理的性能。 WARNING
不推荐:本地代理
另一种方案是由 SDK 额外提供一个用于访问资源的路由 (比如下文介绍的代理路由),并将资源链接转换为能访问到该路由的 URL。这种方案在 Satori 引入内部链接之前是最佳实践,但现在已经不推荐使用了。相比内部链接,这种方案有两个缺点:
这样生成的链接与 Satori 服务器自身的地址耦合,一旦 Satori 服务器更换域名或者端口,过去的链接将全部失效,不利于迁移和跨接等复杂场景; 如果需要扩展其他需要用到资源的逻辑 (比如下载图片到本地),就会导致通过网络自己请求自己,而这些数据原本可以在内存或硬盘中传输,这显然引入了额外的性能损耗。 路由唯一性 SDK 本身和不同的平台适配器都可能实现内部链接,因此我们需要保证内部链接的唯一性。
通常,由适配器实现的内部链接需要以 upload://{platform}/{self_id}/
开头,确保各个登录号所使用的资源不会冲突。由 SDK 自身实现的内部链接相对没有那么严格,但通常还需要在链接中加入每个实例的唯一标识,以避免跨接过程中的混淆。
无论是适配器还是 SDK 实现的内部链接,都应当将所占用的路由写入 login.proxy_urls
。
`,22),b={id:"proxy-route",tabindex:"-1"},f=a("a",{class:"header-anchor",href:"#proxy-route","aria-label":'Permalink to "代理路由 可选 {#proxy-route}"'},"",-1),q=l('假设你在开发基于 Satori 的聊天平台客户端,你希望可以直接将 Satori 协议中给出的资源链接用于 HTML,但很多情况下你都难以如愿:
该资源链接由平台生成,且含有防盗链机制,无法在跨域请求中访问; 该资源链接是一个内部链接,无法在 HTML 中直接访问。 为此,SDK 需要额外提供一个代理路由 /{path}/{version}/proxy/{url}
,用于访问这些资源链接。这个路由下只接受 GET 请求,且不需要 X-Platform
和 X-Self-ID
请求头。
下面是一个典型的代理路由请求示例:
text GET /v1/proxy/upload://temp/z0q9lgqb/3j6emd92-image1.png
在具体的应用场景中,代理路由可根据需要添加 Access-Control-Allow-Origin
等响应头,以限制或允许跨域请求。
为了辨别需要代理的路径以防滥用,Satori 还引入了 login.proxy_urls
属性。这个属性标注了一个登录号所可能需要代理的资源链接前缀,应用侧可以根据这个属性来判断是否需要代理。
根据 url
的不同形式,SDK 提供的代理路由会有不同的行为:
如果 url
不是合法的 URL,会直接返回 400; 如果 url
不以任何一个 login.proxy_urls
中的前缀开头,会直接返回 403; 如果 url
是一个内部链接,会由该内部链接的实现决定如何提供此资源 (可能的方式包括返回数据、重定向以及资源无法访问的报错); 如果 url
是一个外部链接 (即不以 upload://
开头的链接),会在 SDK 侧下载该资源并返回 (通常使用流式传输)。 最佳实践 综上所述,我们总结出了一套关于资源链接的最佳实践:
对于 SDK 开发者,你需要:
提供 REGISTER_UPLOAD_ROUTE
方法用于注册内部链接路由,以便适配器实现; 提供 DOWNLOAD_URL
方法用于将一个链接下载为数据,无论其是否为内部链接; 基于本地文件系统实现内置的 upload.create
API; 基于上述 DOWNLOAD_URL
方法实现代理路由。 对于适配器开发者,你需要:
如果需要使用内部链接 (参见下一条):调用 REGISTER_UPLOAD_ROUTE
方法注册相应的路由; 接收事件推送时:如果收到的资源链接符合内部链接的适用场景,将它们转化为内部链接; 发送消息时:根据平台行为和资源链接的形式,合理选择下载和发送资源的方式; 如果平台支持文件上传:实现 upload.create
API,覆盖 SDK 的默认实现。 ',16);function v(y,P,S,C,T,A){const s=i("badge");return c(),p("div",null,[a("h1",r,[e("资源链接 "),o(s,{type:"warning"},{default:n(()=>[e("实验性")]),_:1}),e(),u]),h,m,a("blockquote",g,[o(s,null,{default:n(()=>[e("POST")]),_:1}),_]),k,a("h2",b,[e("代理路由 "),o(s,null,{default:n(()=>[e("可选")]),_:1}),e(),f]),q])}const x=t(d,[["render",v]]);export{I as __pageData,x as default};
diff --git a/assets/zh-CN_advanced_resource.md.R7MZX5XF.lean.js b/assets/zh-CN_advanced_resource.md.R7MZX5XF.lean.js
new file mode 100644
index 0000000..32f10d1
--- /dev/null
+++ b/assets/zh-CN_advanced_resource.md.R7MZX5XF.lean.js
@@ -0,0 +1 @@
+import{_ as t,R as i,l as p,f as a,$ as e,m as o,w as n,a6 as l,a as c}from"./chunks/framework.CtqZpALn.js";const I=JSON.parse('{"title":"资源链接 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/advanced/resource.md","filePath":"zh-CN/advanced/resource.md"}'),d={name:"zh-CN/advanced/resource.md"},r={id:"资源链接",tabindex:"-1"},u=a("a",{class:"header-anchor",href:"#资源链接","aria-label":'Permalink to "资源链接 实验性 "'},"",-1),h=a("div",{class:"warning custom-block"},[a("p",{class:"custom-block-title"},"WARNING"),a("p",null,"这是一个实验性功能。")],-1),m=a("h2",{id:"api-upload-create",tabindex:"-1"},[e("文件上传 "),a("a",{class:"header-anchor",href:"#api-upload-create","aria-label":'Permalink to "文件上传 {#api-upload-create}"'},"")],-1),g={class:"route"},_=a("code",null,"/upload.create",-1),k=l("",22),b={id:"proxy-route",tabindex:"-1"},f=a("a",{class:"header-anchor",href:"#proxy-route","aria-label":'Permalink to "代理路由 可选 {#proxy-route}"'},"",-1),q=l("",16);function v(y,P,S,C,T,A){const s=i("badge");return c(),p("div",null,[a("h1",r,[e("资源链接 "),o(s,{type:"warning"},{default:n(()=>[e("实验性")]),_:1}),e(),u]),h,m,a("blockquote",g,[o(s,null,{default:n(()=>[e("POST")]),_:1}),_]),k,a("h2",b,[e("代理路由 "),o(s,null,{default:n(()=>[e("可选")]),_:1}),e(),f]),q])}const x=t(d,[["render",v]]);export{I as __pageData,x as default};
diff --git a/assets/zh-CN_index.md.CdCe0MIX.js b/assets/zh-CN_index.md.CdCe0MIX.js
new file mode 100644
index 0000000..af78ccd
--- /dev/null
+++ b/assets/zh-CN_index.md.CdCe0MIX.js
@@ -0,0 +1 @@
+import{_ as e,l as t,a}from"./chunks/framework.CtqZpALn.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","links":{"starter":"/zh-CN/introduction.html"},"home":{"primary":"即刻起步","description":"THE UNIVERSAL MESSENGER PROTOCOL"}},"headers":[],"relativePath":"zh-CN/index.md","filePath":"zh-CN/index.md"}'),r={name:"zh-CN/index.md"};function n(o,i,s,c,d,m){return a(),t("div")}const l=e(r,[["render",n]]);export{h as __pageData,l as default};
diff --git a/assets/zh-CN_index.md.CdCe0MIX.lean.js b/assets/zh-CN_index.md.CdCe0MIX.lean.js
new file mode 100644
index 0000000..af78ccd
--- /dev/null
+++ b/assets/zh-CN_index.md.CdCe0MIX.lean.js
@@ -0,0 +1 @@
+import{_ as e,l as t,a}from"./chunks/framework.CtqZpALn.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","links":{"starter":"/zh-CN/introduction.html"},"home":{"primary":"即刻起步","description":"THE UNIVERSAL MESSENGER PROTOCOL"}},"headers":[],"relativePath":"zh-CN/index.md","filePath":"zh-CN/index.md"}'),r={name:"zh-CN/index.md"};function n(o,i,s,c,d,m){return a(),t("div")}const l=e(r,[["render",n]]);export{h as __pageData,l as default};
diff --git a/assets/zh-CN_introduction.md.k_naDUjk.js b/assets/zh-CN_introduction.md.k_naDUjk.js
new file mode 100644
index 0000000..1ece4a4
--- /dev/null
+++ b/assets/zh-CN_introduction.md.k_naDUjk.js
@@ -0,0 +1 @@
+import{_ as a,l as t,a as r,a6 as e}from"./chunks/framework.CtqZpALn.js";const u=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/introduction.md","filePath":"zh-CN/introduction.md"}'),s={name:"zh-CN/introduction.md"},o=e('介绍 Satori 是一个通用的聊天协议。我们希望 Satori 能够抹平不同聊天平台之间的差异,让开发者以更低的成本开发出跨平台、可扩展、高性能的聊天应用。
Satori 的名称来源于游戏东方 Project 中的角色 古明地觉 (Komeiji Satori) 。古明地觉能够以心灵感应的方式与各种动物交流,取这个名字是希望 Satori 能够成为各个聊天平台之间的桥梁。
Satori 的开发团队长期从事聊天机器人开发,熟悉各种聊天平台的通信方式。经过长达 4 年的发展,Satori 有了健全的设计和完善的实现。目前,Satori 官方提供了超过 15 个聊天平台的适配器,完全覆盖了世界上主流的聊天平台:
这些适配器不仅为你带来了开箱即用的体验,也从实际上证明了 Satori 协议的通用性和扩展性。
不必担心使用 Satori 后会失去对聊天平台的控制。得益于 Satori 的内部接口机制,你完全可以大多数情况下编写通用代码,并在需要的时候使用内部接口来实现平台特定功能。
此外,Satori 还为规模化的场景提供了全套的解决方案。小到个人电脑上的聊天机器人,大到分布式集群上的聊天平台后端,Satori 都能满足你的需求。
',8),i=[o];function c(p,d,l,n,_,h){return r(),t("div",null,i)}const m=a(s,[["render",c]]);export{u as __pageData,m as default};
diff --git a/assets/zh-CN_introduction.md.k_naDUjk.lean.js b/assets/zh-CN_introduction.md.k_naDUjk.lean.js
new file mode 100644
index 0000000..c1e92ea
--- /dev/null
+++ b/assets/zh-CN_introduction.md.k_naDUjk.lean.js
@@ -0,0 +1 @@
+import{_ as a,l as t,a as r,a6 as e}from"./chunks/framework.CtqZpALn.js";const u=JSON.parse('{"title":"介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/introduction.md","filePath":"zh-CN/introduction.md"}'),s={name:"zh-CN/introduction.md"},o=e("",8),i=[o];function c(p,d,l,n,_,h){return r(),t("div",null,i)}const m=a(s,[["render",c]]);export{u as __pageData,m as default};
diff --git a/assets/zh-CN_protocol_api.md.B6RT9T-b.js b/assets/zh-CN_protocol_api.md.B6RT9T-b.js
new file mode 100644
index 0000000..992d162
--- /dev/null
+++ b/assets/zh-CN_protocol_api.md.B6RT9T-b.js
@@ -0,0 +1,7 @@
+import{_ as o,R as c,l as r,f as t,$ as e,m as s,w as i,a6 as a,a as n}from"./chunks/framework.CtqZpALn.js";const v=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/api.md","filePath":"zh-CN/protocol/api.md"}'),l={name:"zh-CN/protocol/api.md"},p=a(`API Satori 协议规定了一套基于 HTTP 的 API 服务,用于发送消息和调用其他功能。
HTTP API 这是一套 HTTP RPC 风格的 API,所有 URL 的形式均为 /{path}/{version}/{resource}.{method}
。其中,path
为部署路径 (可以为空),version
为 API 的版本号,resource
是资源类型,method
为方法名。
目前 Satori 仅有 v1 一个版本。
几乎所有 API 的请求都使用 POST,参数通过 application/json
编码在请求体中。返回值也是 JSON 格式。作为特例,具有 文件上传 功能的 API 使用 multipart/form-data
编码。
请求头中需要包含 X-Platform
和 X-Self-ID
字段,分别表示平台名称和平台账号。
一个合法的请求示例形如:
text POST /v1/channel.get
+Content-Type: application/json
+Authorization: Bearer 1234567890
+X-Platform: discord
+X-Self-ID: 1234567890
+
+{"channel_id": "1234567890"}
鉴权 鉴权通过 HTTP API 中的 Authorization
请求头来实现。其中涉及的鉴权令牌由 SDK 分发,本协议不做任何限制。
如果 SDK 没有配置鉴权,则应用无需提供上述请求头。
状态码 状态码 描述 200 (OK) 请求成功 400 (BAD REQUEST) 请求格式错误 401 (UNAUTHORIZED) 缺失鉴权 403 (FORBIDDEN) 权限不足 404 (NOT FOUND) 资源不存在 405 (METHOD NOT ALLOWED) 请求方法不支持 5XX (SERVER ERROR) 服务器错误
TIP
如果某个标准 API 没有被某个平台支持,则应该返回 404 而非 501 (NOT IMPLEMENTED)。
`,15),h={id:"平台特性",tabindex:"-1"},u=t("a",{class:"header-anchor",href:"#平台特性","aria-label":'Permalink to "平台特性 实验性 "'},"",-1),P=a('Login
对象中的 features
字段是一个字符串数组,用于表示平台的特性。这些特性可以用于判断平台是否支持某些 API。合法的平台特性包括:
API 可用性,如特性 message.delete
表示支持使用 message.delete
撤回消息。 API 额外特性,如特性 message.list.from
表示使用 message.list
查询消息列表时支持将消息 ID 作为分页令牌。 平台额外特性,如特性 guild.plain
表示该平台的群组内只能存在一个消息频道。 目前仅有 API 名称本身是规范的用法。我们将在后续版本中提供更全面的标准特性列表。
分页列表 部分 API 可能会返回分页数据。这种情况下,响应会是一个 List
对象:
字段 类型 描述 data
array 数据 next
string? 下一页的令牌
你可以使用 next
令牌来获取下一页的数据。如果 next
为空,则表示没有更多数据了。
双向分页列表 极少数 API 返回可双向延伸的分页数据。这种情况下,响应会是一个 BidiList
对象:
字段 类型 描述 data
array 数据 prev
string? 上一页的令牌 next
string? 下一页的令牌
在对应的 API 中,你可以通过 direction
和 order
参数来指定方向和排序。
direction
参数有三种不同的取值:
before
:向前获取数据,此时 prev
和 next
相同,均表示上一页的令牌。after
:向后获取数据,此时 prev
和 next
相同,均表示下一页的令牌。around
:向两侧获取数据,此时 prev
表示上一页的令牌,next
表示下一页的令牌。如果 prev
或 next
缺失,则表示在该方向上没有更多数据了。
order
参数有两种不同的取值:
进阶 API 除了标准 API 外,Satori 还提供了一些进阶功能。
/{path}/{version}/proxy
的子路由用于代理平台资源,请参见 资源文件 。/{path}/{version}/admin
的子路由用于访问 SDK 相关接口,请参见 管理 API 。/{path}/{version}/internal
的子路由用于访问平台内部接口,请参见 内部 API 。 ',19);function m(_,b,A,I,f,T){const d=c("badge");return n(),r("div",null,[p,t("h3",h,[e("平台特性 "),s(d,{type:"warning"},{default:i(()=>[e("实验性")]),_:1}),e(),u]),P])}const x=o(l,[["render",m]]);export{v as __pageData,x as default};
diff --git a/assets/zh-CN_protocol_api.md.B6RT9T-b.lean.js b/assets/zh-CN_protocol_api.md.B6RT9T-b.lean.js
new file mode 100644
index 0000000..54c3e33
--- /dev/null
+++ b/assets/zh-CN_protocol_api.md.B6RT9T-b.lean.js
@@ -0,0 +1 @@
+import{_ as o,R as c,l as r,f as t,$ as e,m as s,w as i,a6 as a,a as n}from"./chunks/framework.CtqZpALn.js";const v=JSON.parse('{"title":"API","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/api.md","filePath":"zh-CN/protocol/api.md"}'),l={name:"zh-CN/protocol/api.md"},p=a("",15),h={id:"平台特性",tabindex:"-1"},u=t("a",{class:"header-anchor",href:"#平台特性","aria-label":'Permalink to "平台特性 实验性 "'},"",-1),P=a("",19);function m(_,b,A,I,f,T){const d=c("badge");return n(),r("div",null,[p,t("h3",h,[e("平台特性 "),s(d,{type:"warning"},{default:i(()=>[e("实验性")]),_:1}),e(),u]),P])}const x=o(l,[["render",m]]);export{v as __pageData,x as default};
diff --git a/assets/zh-CN_protocol_elements.md.d9OkxSqX.js b/assets/zh-CN_protocol_elements.md.d9OkxSqX.js
new file mode 100644
index 0000000..a1549a3
--- /dev/null
+++ b/assets/zh-CN_protocol_elements.md.d9OkxSqX.js
@@ -0,0 +1,17 @@
+import{_ as h,R as l,l as n,f as t,$ as i,m as s,w as e,a6 as d,a as r}from"./chunks/framework.CtqZpALn.js";const I=JSON.parse('{"title":"标准元素","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/elements.md","filePath":"zh-CN/protocol/elements.md"}'),o={name:"zh-CN/protocol/elements.md"},p=d('标准元素 基础元素 基本元素是最常见的消息元素,它们能够在大多数平台上正常显示,是组成消息的基本单位。
纯文本 一段纯文本。
提及用户 (at) 属性 类型 范围 描述 id string? 收发 目标用户的 ID name string? 收发 目标用户的名称 role string? 收发 目标角色 type string? 收发 特殊操作,例如 all 表示 @全体成员,here 表示 @在线成员
<at>
元素用于提及某个或某些用户。
提及频道 (sharp) 属性 类型 范围 描述 id string 收发 目标频道的 ID name string? 收发 目标频道的名称
<sharp>
元素用于提及某个频道。
链接 (a) 属性 类型 范围 描述 href string 收发 链接的 URL
<a>
元素用于显示一个链接。当平台不支持链接时,建议显示为 content (href)
的形式。
资源元素 资源消息元素表示文本中存在的资源文件。不同的平台对资源文件的支持存在较大的差异。发送时只需提供 src
。如果某个平台不支持特定的资源类型,适配器应该用 src
代替。如果某个平台不支持将资源消息元素和其他消息元素同时发送,适配器应该分多条发送,并返回最后一条消息的 ID。
',16),k=t("thead",null,[t("tr",null,[t("th",null,"属性"),t("th",null,"类型"),t("th",null,"范围"),t("th",null,"描述")])],-1),c=t("tr",null,[t("td",null,"src"),t("td",null,"string"),t("td",null,"收发"),t("td",null,"资源的 URL")],-1),g=t("tr",null,[t("td",null,"title"),t("td",null,"string?"),t("td",null,"收发"),t("td",null,"资源文件名称")],-1),u=t("td",null,"boolean?",-1),y=t("td",null,"发",-1),b=t("td",null,"是否使用已缓存的文件",-1),B=t("td",null,"string?",-1),m=t("td",null,"发",-1),f=t("td",null,"下载文件的最长时间 (毫秒)",-1),q=d(`图片 (img) 除了上述通用属性外,还支持下面的属性:
属性 类型 范围 描述 width number? 收 图片宽度 (像素) height number? 收 图片高度 (像素)
<img>
元素用于表示图片。
音频 (audio) 除了上述通用属性外,还支持下面的属性:
属性 类型 范围 描述 duration number? 收 音频长度 (秒) poster string? 收发 音频封面 URL
<audio>
元素用于表示语音。
视频 (video) 除了上述通用属性外,还支持下面的属性:
属性 类型 范围 描述 width number? 收 视频宽度 (像素) height number? 收 视频高度 (像素) duration number? 收 视频长度 (秒) poster string? 收发 视频封面 URL
<video>
元素用于表示视频。
文件 (file) 除了上述通用属性外,还支持下面的属性:
属性 类型 范围 描述 poster string? 收发 缩略图 URL
<file>
元素用于表示文件。
修饰元素 修饰元素用于修饰其中的内容。如果对应的平台不支持对应的元素,可以忽略这个元素本身,正常渲染其中的子元素。
粗体 (b, strong) <b>
或 <strong>
元素用于将其中的内容以粗体显示。
斜体 (i, em) <i>
或 <em>
元素用于将其中的内容以斜体显示。
下划线 (u, ins) <u>
或 <ins>
元素用于为其中的内容附加下划线。
删除线 (s, del) <s>
或 <del>
元素用于为其中的内容附加删除线。
剧透 (spl) <spl>
元素用于将其中的内容标记为剧透 (默认会被隐藏,点击后才显示)。
代码 (code) <code>
元素用于将其中的内容以等宽字体显示 (通常还会有特定的背景色)。
上标 (sup) <sup>
元素用于将其中的内容以上标显示。
下标 (sub) <sub>
元素用于将其中的内容以下标显示。
排版元素 换行 (br) <br>
元素表示一个独立的换行。
段落 (p) <p>
元素表示一个段落。在渲染时,它与相邻的元素之间会确保有一个换行。
消息 (message) 属性 类型 范围 描述 id string? 发 消息的 ID forward boolean? 发 是否为转发消息
<message>
元素的基本用法是表示一条消息。子元素对应于消息的内容。如果其没有子元素,则消息不会被发送。
当出现 <message>
元素时,之前的元素会被立即视为一条消息被发送。因此下面的两种写法是等价的:
html <!-- 第一种写法:发送两条消息 -->
+< message >hello</ message >
+< message >world</ message >
+
+<!-- 第二种写法:用一条空消息隔开两段文本,实际上仍然会发送两条消息 -->
+hello< message />world
部分平台允许你模拟其他用户发送消息:
html < message >
+ < author id = "123123123" name = "Alice" avatar = "url" />
+ hello world
+</ message >
在支持转发的平台上,你可以使用 forward
配合 id
属性来转发一条消息:
html < message id = "123456789" forward />
在支持合并转发的平台上,你可以使用带有 forward
属性的 <message>
元素嵌套其他 <message>
元素来实现合并转发:
html < message forward >
+ < message id = "123456789" />
+ < message id = "987654321" />
+ <!-- 合并转发里也可以嵌套模拟其他用户发送的消息 -->
+ < message >
+ < author id = "123123123" name = "Alice" avatar = "url" />
+ hello world
+ </ message >
+</ message >
元信息元素 元信息元素通常不会被渲染,但会影响到消息的发送行为。
引用 (quote) <quote>
元素用于表示对消息引用。它的子元素会被渲染为引用的内容。理论上所有 <message>
元素的特性也可以用于 <quote>
元素,包括子元素 (构造引用消息) 和 forward
属性 (引用合并转发)。然而目前似乎并没有平台提供了这样的支持。
作者 (author) 属性 类型 范围 描述 id string? 发 用户 ID name string? 发 昵称 avatar string? 发 头像 URL
<author>
元素用于表示消息的作者。它的子元素会被渲染为作者的名字。
交互元素 交互元素用于显然消息中的可交互性内容。如果平台不支持此类元素且难以提供回退,可以直接忽略整个元素。实现侧应当根据平台特性,针对性地返回带有交互和不带有交互的消息。
`,59),_={id:"button",tabindex:"-1"},A=t("a",{class:"header-anchor",href:"#button","aria-label":'Permalink to "按钮 (button) 实验性 {#button}"'},"",-1),E=d("属性 类型 范围 描述 id string? 发 按钮的 ID type string? 发 按钮的类型 href string? 发 按钮的链接 text string? 发 待输入文本 theme string? 发 按钮的样式
<button>
元素用于表示一个按钮。它的子元素会被渲染为按钮的文本。
按钮目前支持三种不同的类型:
点击 action
类型的按钮时会触发一个 interaction/button
事件,该事件的 button
资源会包含上述 id
点击 link
类型的按钮时会打开一个链接,该链接的地址为上述 href
点击 input
类型的按钮时会在用户的输入框中填充上述 text
theme
仅建议使用下列值:
primary secondary success warning danger info ",6);function F(C,D,x,P,v,w){const a=l("badge");return r(),n("div",null,[p,t("table",null,[k,t("tbody",null,[c,g,t("tr",null,[t("td",null,[i("cache "),s(a,{type:"warning"},{default:e(()=>[i("实验性")]),_:1})]),u,y,b]),t("tr",null,[t("td",null,[i("timeout "),s(a,{type:"warning"},{default:e(()=>[i("实验性")]),_:1})]),B,m,f])])]),q,t("h3",_,[i("按钮 (button) "),s(a,{type:"warning"},{default:e(()=>[i("实验性")]),_:1}),i(),A]),E])}const N=h(o,[["render",F]]);export{I as __pageData,N as default};
diff --git a/assets/zh-CN_protocol_elements.md.d9OkxSqX.lean.js b/assets/zh-CN_protocol_elements.md.d9OkxSqX.lean.js
new file mode 100644
index 0000000..2c0954e
--- /dev/null
+++ b/assets/zh-CN_protocol_elements.md.d9OkxSqX.lean.js
@@ -0,0 +1 @@
+import{_ as h,R as l,l as n,f as t,$ as i,m as s,w as e,a6 as d,a as r}from"./chunks/framework.CtqZpALn.js";const I=JSON.parse('{"title":"标准元素","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/elements.md","filePath":"zh-CN/protocol/elements.md"}'),o={name:"zh-CN/protocol/elements.md"},p=d("",16),k=t("thead",null,[t("tr",null,[t("th",null,"属性"),t("th",null,"类型"),t("th",null,"范围"),t("th",null,"描述")])],-1),c=t("tr",null,[t("td",null,"src"),t("td",null,"string"),t("td",null,"收发"),t("td",null,"资源的 URL")],-1),g=t("tr",null,[t("td",null,"title"),t("td",null,"string?"),t("td",null,"收发"),t("td",null,"资源文件名称")],-1),u=t("td",null,"boolean?",-1),y=t("td",null,"发",-1),b=t("td",null,"是否使用已缓存的文件",-1),B=t("td",null,"string?",-1),m=t("td",null,"发",-1),f=t("td",null,"下载文件的最长时间 (毫秒)",-1),q=d("",59),_={id:"button",tabindex:"-1"},A=t("a",{class:"header-anchor",href:"#button","aria-label":'Permalink to "按钮 (button) 实验性 {#button}"'},"",-1),E=d("",6);function F(C,D,x,P,v,w){const a=l("badge");return r(),n("div",null,[p,t("table",null,[k,t("tbody",null,[c,g,t("tr",null,[t("td",null,[i("cache "),s(a,{type:"warning"},{default:e(()=>[i("实验性")]),_:1})]),u,y,b]),t("tr",null,[t("td",null,[i("timeout "),s(a,{type:"warning"},{default:e(()=>[i("实验性")]),_:1})]),B,m,f])])]),q,t("h3",_,[i("按钮 (button) "),s(a,{type:"warning"},{default:e(()=>[i("实验性")]),_:1}),i(),A]),E])}const N=h(o,[["render",F]]);export{I as __pageData,N as default};
diff --git a/assets/zh-CN_protocol_events.md.DyRiGfhF.js b/assets/zh-CN_protocol_events.md.DyRiGfhF.js
new file mode 100644
index 0000000..f576b52
--- /dev/null
+++ b/assets/zh-CN_protocol_events.md.DyRiGfhF.js
@@ -0,0 +1 @@
+import{_ as a,R as r,l as c,f as e,$ as t,m as h,w as s,a6 as d,a as l}from"./chunks/framework.CtqZpALn.js";const D=JSON.parse('{"title":"事件","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/events.md","filePath":"zh-CN/protocol/events.md"}'),n={name:"zh-CN/protocol/events.md"},i=d('事件 Satori 协议规定了两套事件服务,分别基于 WebSocket 和 WebHook。你可以根据自己的需要进行选择。
类型定义 Event 事件中的各属性遵循 资源提升 规则。
WebSocket WebSocket 服务用于在 Satori SDK 与应用之间维护一个持久的、有状态的链接。通过这个链接,Satori 应用可以实时接收 SDK 推送的事件。
WebSocket 服务的地址为 /{path}/{version}/events
。其中,path
为部署路径 (可以为空),version
为 API 的版本号。
目前 Satori 仅有 v1 一个版本。
连接流程 总的来说,Satori 应用需要在连接后遵循以下步骤:
连接建立后,在 10s 内发送一个 IDENTIFY
信令,用于鉴权和恢复会话; SDK 收到后会回复一个 READY
信令,并开启事件推送; 连接建立后,每隔 10s 向 SDK 发送一次 PING
信令; SDK 收到后会回复一个 PONG
信令; 应用持续接收来自 SDK 的 EVENT
信令,用于接收事件。 信令的数据结构如下:
字段 类型 描述 op
number 信令类型 body
object? 信令数据
信令类型如下:
名称 值 方向 描述 EVENT 0 接收 事件 PING 1 发送 心跳 PONG 2 接收 心跳回复 IDENTIFY 3 发送 鉴权 READY 4 接收 鉴权回复
IDENTIFY
信令的 body
数据结构如下:
字段 类型 描述 token
string? 鉴权令牌 sequence
number? 序列号
READY
信令的 body
数据结构如下:
EVENT
信令的 body
数据结构参见 Event 。
鉴权 WebSocket 鉴权通过 IDENTIFY 信令的 token
字段来实现。其中涉及的鉴权令牌由 SDK 分发,本协议不做任何限制。
如果 SDK 没有配置鉴权,则应用无需提供上述字段。
会话恢复 当连接短暂中断时,Satori 应用可以通过 IDENTIFY
信令的 sequence
字段来恢复会话。sequence
字段的值为上一次连接中最后一个接收到的 EVENT
信令的 id
字段。会话恢复后,SDK 会向应用推送所有在断开连接期间发生的事件。
',27),b={id:"webhook",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#webhook","aria-label":'Permalink to "WebHook 可选 "'},"",-1),u=d('WebHook 服务是指,Satori SDK 在接收到平台事件时,向应用提供的 HTTP 地址推送事件。一个 SDK 应当可以配置多个 WebHook,并允许应用对发送者进行鉴权。这些 WebHook 的配置方式由 SDK 自身决定,本协议规范化了一组 管理接口 ,但不做强制要求。
事件推送以 POST 的形式进行,参数以 application/json
的形式编码在请求体中。数据结构参见 Event 。
应用收到 WebHook 请求时,如果能够顺利鉴权并处理请求,应当返回 2XX 的状态码。如果鉴权失败,应当返回 4XX 的状态码。如果处理失败,应当返回 5XX 的状态码。
反向鉴权 TIP
这里的鉴权与 API 与 WebSocket 中的鉴权逻辑类似,但方向相反。
Satori 应用可以要求 SDK 在发送 WebHook 请求时附带一个 Authorization
请求头,格式为 Bearer {token}
。其中,token
由应用进行分发。
',7);function m(_,k,S,f,g,v){const o=r("badge");return l(),c("div",null,[i,e("h2",b,[t("WebHook "),h(o,null,{default:s(()=>[t("可选")]),_:1}),t(),p]),u])}const P=a(n,[["render",m]]);export{D as __pageData,P as default};
diff --git a/assets/zh-CN_protocol_events.md.DyRiGfhF.lean.js b/assets/zh-CN_protocol_events.md.DyRiGfhF.lean.js
new file mode 100644
index 0000000..e01ef82
--- /dev/null
+++ b/assets/zh-CN_protocol_events.md.DyRiGfhF.lean.js
@@ -0,0 +1 @@
+import{_ as a,R as r,l as c,f as e,$ as t,m as h,w as s,a6 as d,a as l}from"./chunks/framework.CtqZpALn.js";const D=JSON.parse('{"title":"事件","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/events.md","filePath":"zh-CN/protocol/events.md"}'),n={name:"zh-CN/protocol/events.md"},i=d("",27),b={id:"webhook",tabindex:"-1"},p=e("a",{class:"header-anchor",href:"#webhook","aria-label":'Permalink to "WebHook 可选 "'},"",-1),u=d("",7);function m(_,k,S,f,g,v){const o=r("badge");return l(),c("div",null,[i,e("h2",b,[t("WebHook "),h(o,null,{default:s(()=>[t("可选")]),_:1}),t(),p]),u])}const P=a(n,[["render",m]]);export{D as __pageData,P as default};
diff --git a/assets/zh-CN_protocol_index.md.BCJ5lIZZ.js b/assets/zh-CN_protocol_index.md.BCJ5lIZZ.js
new file mode 100644
index 0000000..b7719e0
--- /dev/null
+++ b/assets/zh-CN_protocol_index.md.BCJ5lIZZ.js
@@ -0,0 +1 @@
+import{_ as e,l as o,a,a6 as r}from"./chunks/framework.CtqZpALn.js";const u=JSON.parse('{"title":"总览","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/index.md","filePath":"zh-CN/protocol/index.md"}'),t={name:"zh-CN/protocol/index.md"},s=r('总览 Satori 协议的通信方式分为两块:
一套基于 HTTP 的 API 服务,用于发送消息和调用其他功能; 一套基于 WebSocket 或者 WebHook 的事件服务,用于接收消息和其他事件。 核心概念 在我们开始之前,先来了解一些与 Satori 相关的核心概念。
SDK 是指实现了 Satori 协议的软件。应用 (Application) 是指接入了 Satori 协议的软件。应用通过与 SDK 通信,以实现聊天平台的功能。
平台 (Platform) 是指聊天平台,比如 Discord、Telegram 等。同一平台内的用户间具有相互发送消息的能力,而不同平台的用户间则没有。对于 Rocket Chat 这一类可自建的聊天平台而言,每个独立的自建服务器都视为不同的平台。
消息 (Message) 是字面意义上的消息。通常是文本或富文本格式的,有时也会包含图片、语音等媒体资源。在 Koishi 中,消息通过消息元素进行统一编码。
频道 (Channel) 是消息的集合。一个频道包含了具备时间、逻辑顺序的一系列消息。频道又分为私聊频道和群聊频道,其中私聊频道有且仅有两人参与,而群聊频道可以有任意多人参与。
群组 (Guild) 是平台用户的集合。一个群组通常会同时包含一组用户和频道,并通过权限机制让其中的部分用户进行管理。在部分平台中,群组和群聊频道的概念恰好是重合的 (例如 QQ):一个群组内有且仅有一个群聊频道。私聊频道不属于任何群组。
可选字段 由于不同平台实现的差异,Satori 协议中的大部分字段都是可选的。可选字段的类型后面会有一个 ?
标记。
对于任意可选字段,相关 API 调用的结果中可能不含该字段,也可能该字段的值为 null
。其中,前者表示该 API 并未提供这一字段,但可能由其他 API 提供;后者表示该 API 提供了这一字段,但其值为 null
。
资源 Satori 协议中的资源是指一类具有确定结构的对象。例如,用户 、频道 、消息 等都是资源。部分事件和 API 的返回值中会包含这些资源对象。
资源对象的某个字段可以是另一个资源对象,例如消息对象中的 user
字段就是一个用户对象。当资源对象出现多级嵌套时,内层的资源将会被统一提升到最外层。例如,当接收到消息事件时,事件体中可以访问到 message
, member
, user
, channel
等资源,但 message
中就不再存在 member
和 user
字段了。
',16),c=[s];function n(d,i,l,h,p,_){return a(),o("div",null,c)}const g=e(t,[["render",n]]);export{u as __pageData,g as default};
diff --git a/assets/zh-CN_protocol_index.md.BCJ5lIZZ.lean.js b/assets/zh-CN_protocol_index.md.BCJ5lIZZ.lean.js
new file mode 100644
index 0000000..30c5395
--- /dev/null
+++ b/assets/zh-CN_protocol_index.md.BCJ5lIZZ.lean.js
@@ -0,0 +1 @@
+import{_ as e,l as o,a,a6 as r}from"./chunks/framework.CtqZpALn.js";const u=JSON.parse('{"title":"总览","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/index.md","filePath":"zh-CN/protocol/index.md"}'),t={name:"zh-CN/protocol/index.md"},s=r("",16),c=[s];function n(d,i,l,h,p,_){return a(),o("div",null,c)}const g=e(t,[["render",n]]);export{u as __pageData,g as default};
diff --git a/assets/zh-CN_protocol_message.md.fglB_YNF.js b/assets/zh-CN_protocol_message.md.fglB_YNF.js
new file mode 100644
index 0000000..ff71789
--- /dev/null
+++ b/assets/zh-CN_protocol_message.md.fglB_YNF.js
@@ -0,0 +1,7 @@
+import{_ as t,l as i,a as s,a6 as a}from"./chunks/framework.CtqZpALn.js";const y=JSON.parse('{"title":"消息编码","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/message.md","filePath":"zh-CN/protocol/message.md"}'),e={name:"zh-CN/protocol/message.md"},l=a(`消息编码 Satori 中的消息使用消息元素 (Message Element) 进行编码。消息元素的语法与 XHTML 类似。
语法 消息元素的语法与 HTML 类似,但是不完全相同。
字符 你可以在消息元素内使用任何字符。不过部分特殊字符需要转义:
原始字符 转义写法 "
"
&
&
<
<
>
>
根据上下文的不同,有些字符可能不需要被转义或使用其他的转义方式。
除此以外,你可以使用十进制或十六进制转义任何字符。例如 '
也可以被书写成 '
或 '
。
标签 使用一对尖括号包裹元素名,加上可选的属性、闭合指示符,就构成了一个标签。
元素名由小写字母、数字和连字符组成,且必须以字母开头。在元素名前后添加 /
表示这是一个结束标签或自闭合标签,没有 /
符号时则表示这是一个起始标签:
<tag>
一个起始标签</tag>
一个结束标签<tag/>
一个自闭合标签属性 起始或自闭合标签的元素名后接受可选的属性列表。每个属性必须形如以下形式:
key
key="value"
(此时 value
中的 "
需要被转义)key='value'
(此时 value
中的 '
需要被转义)下面是一段示例:
元素 一个元素要么是自闭合标签,要么由一对同名的起始标签和结束标签构成。元素的内容指起始标签和结束标签中间的部分,可以包含文本内容或其他元素。对于自闭合标签,元素的内容为空。下面是一段示例:
html < parent >
+ text content
+ < child />
+</ parent >
当存在未配对的元素时,将自动视为文本内容的一部分。文本内容前后如果存在包含换行符的连续空白字符,则会被忽略。这意味着下面两段代码是等价的:
html < tag >
+ < foo > bar
+ <!-- comment -->
+</ tag >
html < tag > < foo > bar</ tag >
注释 使用成对的 <!--
和 -->
插入一段注释。注释中的部分不会被渲染。
标准元素 关于 Satori 内置的消息元素,请参考 标准元素 。
`,28),h=[l];function n(o,d,p,k,r,c){return s(),i("div",null,h)}const B=t(e,[["render",n]]);export{y as __pageData,B as default};
diff --git a/assets/zh-CN_protocol_message.md.fglB_YNF.lean.js b/assets/zh-CN_protocol_message.md.fglB_YNF.lean.js
new file mode 100644
index 0000000..97b32d4
--- /dev/null
+++ b/assets/zh-CN_protocol_message.md.fglB_YNF.lean.js
@@ -0,0 +1 @@
+import{_ as t,l as i,a as s,a6 as a}from"./chunks/framework.CtqZpALn.js";const y=JSON.parse('{"title":"消息编码","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/protocol/message.md","filePath":"zh-CN/protocol/message.md"}'),e={name:"zh-CN/protocol/message.md"},l=a("",28),h=[l];function n(o,d,p,k,r,c){return s(),i("div",null,h)}const B=t(e,[["render",n]]);export{y as __pageData,B as default};
diff --git a/assets/zh-CN_resources_channel.md.BrK2DrWx.js b/assets/zh-CN_resources_channel.md.BrK2DrWx.js
new file mode 100644
index 0000000..d7f1ad3
--- /dev/null
+++ b/assets/zh-CN_resources_channel.md.BrK2DrWx.js
@@ -0,0 +1 @@
+import{_ as l,R as r,l as o,f as t,m as d,w as h,$ as e,a6 as n,a as _}from"./chunks/framework.CtqZpALn.js";const j=JSON.parse('{"title":"频道 (Channel)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/channel.md","filePath":"zh-CN/resources/channel.md"}'),s={name:"zh-CN/resources/channel.md"},c=n('频道 (Channel) 类型定义 Channel 字段 类型 描述 id string 频道 ID type Channel.Type 频道类型 name string? 频道名称 parent_id string? 父频道 ID
Channel.Type 名称 值 描述 TEXT 0 文本频道 DIRECT 1 私聊频道 CATEGORY 2 分类频道 VOICE 3 语音频道
API 获取群组频道 ',8),i={class:"route"},u=t("code",null,"/channel.get",-1),b=n('字段 类型 描述 channel_id string 频道 ID
根据 ID 获取频道。返回一个 Channel 对象。
获取群组频道列表 ',3),T={class:"route"},p=t("code",null,"/channel.list",-1),f=n('字段 类型 描述 guild_id string 群组 ID next string? 分页令牌
获取群组中的全部频道。返回一个 Channel 的 分页列表 。
创建群组频道 ',3),P={class:"route"},C=t("code",null,"/channel.create",-1),S=n('字段 类型 描述 guild_id string 群组 ID data Channel 频道数据
创建群组频道。返回一个 Channel 对象。
修改群组频道 ',3),q={class:"route"},I=t("code",null,"/channel.update",-1),m=n('字段 类型 描述 channel_id string 频道 ID data Channel 频道数据
修改群组频道。
删除群组频道 ',3),y={class:"route"},A=t("code",null,"/channel.delete",-1),g=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"描述")])]),t("tbody",null,[t("tr",null,[t("td",null,"channel_id"),t("td",null,"string"),t("td",null,"频道 ID")])])],-1),k=t("p",null,"删除群组频道。",-1),D={id:"禁言群组频道",tabindex:"-1"},V=t("a",{class:"header-anchor",href:"#禁言群组频道","aria-label":'Permalink to "禁言群组频道 实验性 "'},"",-1),x={class:"route"},N=t("code",null,"/channel.mute",-1),E=n('字段 类型 描述 channel_id string 频道 ID duration number 禁言时长 (毫秒)
禁言群组频道。如果传入的禁言时长为 0
则表示解除禁言。
创建私聊频道 ',3),O={class:"route"},R=t("code",null,"/user.channel.create",-1),$=n('字段 类型 描述 user_id string 用户 ID guild_id string? 群组 ID
创建一个私聊频道。返回一个 Channel 对象。
',2);function w(v,z,B,G,J,X){const a=r("badge");return _(),o("div",null,[c,t("blockquote",i,[d(a,null,{default:h(()=>[e("POST")]),_:1}),u]),b,t("blockquote",T,[d(a,null,{default:h(()=>[e("POST")]),_:1}),p]),f,t("blockquote",P,[d(a,null,{default:h(()=>[e("POST")]),_:1}),C]),S,t("blockquote",q,[d(a,null,{default:h(()=>[e("POST")]),_:1}),I]),m,t("blockquote",y,[d(a,null,{default:h(()=>[e("POST")]),_:1}),A]),g,k,t("h3",D,[e("禁言群组频道 "),d(a,{type:"warning"},{default:h(()=>[e("实验性")]),_:1}),e(),V]),t("blockquote",x,[d(a,null,{default:h(()=>[e("POST")]),_:1}),N]),E,t("blockquote",O,[d(a,null,{default:h(()=>[e("POST")]),_:1}),R]),$])}const F=l(s,[["render",w]]);export{j as __pageData,F as default};
diff --git a/assets/zh-CN_resources_channel.md.BrK2DrWx.lean.js b/assets/zh-CN_resources_channel.md.BrK2DrWx.lean.js
new file mode 100644
index 0000000..bfe82de
--- /dev/null
+++ b/assets/zh-CN_resources_channel.md.BrK2DrWx.lean.js
@@ -0,0 +1 @@
+import{_ as l,R as r,l as o,f as t,m as d,w as h,$ as e,a6 as n,a as _}from"./chunks/framework.CtqZpALn.js";const j=JSON.parse('{"title":"频道 (Channel)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/channel.md","filePath":"zh-CN/resources/channel.md"}'),s={name:"zh-CN/resources/channel.md"},c=n("",8),i={class:"route"},u=t("code",null,"/channel.get",-1),b=n("",3),T={class:"route"},p=t("code",null,"/channel.list",-1),f=n("",3),P={class:"route"},C=t("code",null,"/channel.create",-1),S=n("",3),q={class:"route"},I=t("code",null,"/channel.update",-1),m=n("",3),y={class:"route"},A=t("code",null,"/channel.delete",-1),g=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"字段"),t("th",null,"类型"),t("th",null,"描述")])]),t("tbody",null,[t("tr",null,[t("td",null,"channel_id"),t("td",null,"string"),t("td",null,"频道 ID")])])],-1),k=t("p",null,"删除群组频道。",-1),D={id:"禁言群组频道",tabindex:"-1"},V=t("a",{class:"header-anchor",href:"#禁言群组频道","aria-label":'Permalink to "禁言群组频道 实验性 "'},"",-1),x={class:"route"},N=t("code",null,"/channel.mute",-1),E=n("",3),O={class:"route"},R=t("code",null,"/user.channel.create",-1),$=n("",2);function w(v,z,B,G,J,X){const a=r("badge");return _(),o("div",null,[c,t("blockquote",i,[d(a,null,{default:h(()=>[e("POST")]),_:1}),u]),b,t("blockquote",T,[d(a,null,{default:h(()=>[e("POST")]),_:1}),p]),f,t("blockquote",P,[d(a,null,{default:h(()=>[e("POST")]),_:1}),C]),S,t("blockquote",q,[d(a,null,{default:h(()=>[e("POST")]),_:1}),I]),m,t("blockquote",y,[d(a,null,{default:h(()=>[e("POST")]),_:1}),A]),g,k,t("h3",D,[e("禁言群组频道 "),d(a,{type:"warning"},{default:h(()=>[e("实验性")]),_:1}),e(),V]),t("blockquote",x,[d(a,null,{default:h(()=>[e("POST")]),_:1}),N]),E,t("blockquote",O,[d(a,null,{default:h(()=>[e("POST")]),_:1}),R]),$])}const F=l(s,[["render",w]]);export{j as __pageData,F as default};
diff --git a/assets/zh-CN_resources_guild.md.D4GWzdfJ.js b/assets/zh-CN_resources_guild.md.D4GWzdfJ.js
new file mode 100644
index 0000000..62711e5
--- /dev/null
+++ b/assets/zh-CN_resources_guild.md.D4GWzdfJ.js
@@ -0,0 +1 @@
+import{_ as l,R as i,l as h,f as t,m as a,w as r,a6 as d,a as s,$ as o}from"./chunks/framework.CtqZpALn.js";const V=JSON.parse('{"title":"群组 (Guild)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/guild.md","filePath":"zh-CN/resources/guild.md"}'),u={name:"zh-CN/resources/guild.md"},_=d('群组 (Guild) 类型定义 Guild 字段 类型 描述 id string 群组 ID name string? 群组名称 avatar string? 群组头像
API 获取群组 ',6),n={class:"route"},c=t("code",null,"/guild.get",-1),b=d('字段 类型 描述 guild_id string 群组 ID
根据 ID 获取。返回一个 Guild 对象。
获取群组列表 ',3),g={class:"route"},p=t("code",null,"/guild.list",-1),m=d('获取当前用户加入的全部群组。返回一个 Guild 的 分页列表 。
处理群组邀请 ',3),q={class:"route"},T=t("code",null,"/guild.approve",-1),f=d('字段 类型 描述 message_id string 请求 ID approve boolean 是否通过请求 comment string 备注信息
处理来自群组的邀请。
事件 guild-added 加入群组时触发。必需资源:guild
。
guild-updated 群组被修改时触发。必需资源:guild
。
guild-removed 退出群组时触发。必需资源:guild
。
guild-request 接收到新的入群邀请时触发。必需资源:guild
。
',11);function P(x,k,S,A,I,C){const e=i("badge");return s(),h("div",null,[_,t("blockquote",n,[a(e,null,{default:r(()=>[o("POST")]),_:1}),c]),b,t("blockquote",g,[a(e,null,{default:r(()=>[o("POST")]),_:1}),p]),m,t("blockquote",q,[a(e,null,{default:r(()=>[o("POST")]),_:1}),T]),f])}const v=l(u,[["render",P]]);export{V as __pageData,v as default};
diff --git a/assets/zh-CN_resources_guild.md.D4GWzdfJ.lean.js b/assets/zh-CN_resources_guild.md.D4GWzdfJ.lean.js
new file mode 100644
index 0000000..03cc9ba
--- /dev/null
+++ b/assets/zh-CN_resources_guild.md.D4GWzdfJ.lean.js
@@ -0,0 +1 @@
+import{_ as l,R as i,l as h,f as t,m as a,w as r,a6 as d,a as s,$ as o}from"./chunks/framework.CtqZpALn.js";const V=JSON.parse('{"title":"群组 (Guild)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/guild.md","filePath":"zh-CN/resources/guild.md"}'),u={name:"zh-CN/resources/guild.md"},_=d("",6),n={class:"route"},c=t("code",null,"/guild.get",-1),b=d("",3),g={class:"route"},p=t("code",null,"/guild.list",-1),m=d("",3),q={class:"route"},T=t("code",null,"/guild.approve",-1),f=d("",11);function P(x,k,S,A,I,C){const e=i("badge");return s(),h("div",null,[_,t("blockquote",n,[a(e,null,{default:r(()=>[o("POST")]),_:1}),c]),b,t("blockquote",g,[a(e,null,{default:r(()=>[o("POST")]),_:1}),p]),m,t("blockquote",q,[a(e,null,{default:r(()=>[o("POST")]),_:1}),T]),f])}const v=l(u,[["render",P]]);export{V as __pageData,v as default};
diff --git a/assets/zh-CN_resources_interaction.md.B4bO94AM.js b/assets/zh-CN_resources_interaction.md.B4bO94AM.js
new file mode 100644
index 0000000..08b263d
--- /dev/null
+++ b/assets/zh-CN_resources_interaction.md.B4bO94AM.js
@@ -0,0 +1 @@
+import{_ as o,R as r,l as n,f as a,$ as t,m as d,w as i,a6 as c,a as s}from"./chunks/framework.CtqZpALn.js";const v=JSON.parse('{"title":"交互 (Interaction) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/interaction.md","filePath":"zh-CN/resources/interaction.md"}'),h={name:"zh-CN/resources/interaction.md"},l={id:"交互",tabindex:"-1"},b=a("a",{class:"header-anchor",href:"#交互","aria-label":'Permalink to "交互 (Interaction) 实验性 "'},"",-1),u=c('TIP
交互功能主要通过机器人提供,并由用户在聊天应用中触发。如果你要实现或接入的聊天平台不支持机器人相关功能,那么可以直接忽略本节。
类型定义 Argv 字段 类型 描述 name string 指令名称 arguments any[] 参数 options object 选项
事件 类型为 action
的按钮被点击时触发。必需资源:button
。
interaction/command 调用斜线指令时触发。资源 argv
或 message
中至少包含其一。
TIP
许多平台都支持斜线指令,但它们的实现方式各不相同。如果平台的斜线指令仅仅提供在前端,机器人无法直接判断一个事件是否为斜线指令调用,那么直接实现为普通消息事件即可。
',12);function m(_,p,f,g,k,P){const e=r("badge");return s(),n("div",null,[a("h1",l,[t("交互 (Interaction) "),d(e,{type:"warning"},{default:i(()=>[t("实验性")]),_:1}),t(),b]),u])}const x=o(h,[["render",m]]);export{v as __pageData,x as default};
diff --git a/assets/zh-CN_resources_interaction.md.B4bO94AM.lean.js b/assets/zh-CN_resources_interaction.md.B4bO94AM.lean.js
new file mode 100644
index 0000000..0f0957c
--- /dev/null
+++ b/assets/zh-CN_resources_interaction.md.B4bO94AM.lean.js
@@ -0,0 +1 @@
+import{_ as o,R as r,l as n,f as a,$ as t,m as d,w as i,a6 as c,a as s}from"./chunks/framework.CtqZpALn.js";const v=JSON.parse('{"title":"交互 (Interaction) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/interaction.md","filePath":"zh-CN/resources/interaction.md"}'),h={name:"zh-CN/resources/interaction.md"},l={id:"交互",tabindex:"-1"},b=a("a",{class:"header-anchor",href:"#交互","aria-label":'Permalink to "交互 (Interaction) 实验性 "'},"",-1),u=c("",12);function m(_,p,f,g,k,P){const e=r("badge");return s(),n("div",null,[a("h1",l,[t("交互 (Interaction) "),d(e,{type:"warning"},{default:i(()=>[t("实验性")]),_:1}),t(),b]),u])}const x=o(h,[["render",m]]);export{v as __pageData,x as default};
diff --git a/assets/zh-CN_resources_login.md.BtKO-X7t.js b/assets/zh-CN_resources_login.md.BtKO-X7t.js
new file mode 100644
index 0000000..a940385
--- /dev/null
+++ b/assets/zh-CN_resources_login.md.BtKO-X7t.js
@@ -0,0 +1 @@
+import{_ as d,R as o,l as r,f as t,m as i,w as l,a6 as a,a as n,$ as h}from"./chunks/framework.CtqZpALn.js";const T=JSON.parse('{"title":"登录信息 (Login)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/login.md","filePath":"zh-CN/resources/login.md"}'),s={name:"zh-CN/resources/login.md"},c=a('登录信息 (Login) 类型定义 Login 字段 类型 描述 user User ?用户对象 self_id string? 平台账号 platform string? 平台名称 status Status 登录状态 features string[] 平台特性 列表proxy_urls string[] 代理路由 列表
Status 名称 值 描述 OFFLINE 0 离线 ONLINE 1 在线 CONNECT 2 连接中 DISCONNECT 3 断开连接 RECONNECT 4 重新连接
API 获取登录信息 ',8),u={class:"route"},_=t("code",null,"/login.get",-1),g=a('获取登录信息。返回一个 Login
对象。
事件 login-added 登录被创建时触发。必需资源:login
。
login-removed 登录被删除时触发。必需资源:login
。
login-updated 登录信息更新时触发。必需资源:login
。
',8);function p(b,m,f,q,N,P){const e=o("badge");return n(),r("div",null,[c,t("blockquote",u,[i(e,null,{default:l(()=>[h("POST")]),_:1}),_]),g])}const C=d(s,[["render",p]]);export{T as __pageData,C as default};
diff --git a/assets/zh-CN_resources_login.md.BtKO-X7t.lean.js b/assets/zh-CN_resources_login.md.BtKO-X7t.lean.js
new file mode 100644
index 0000000..940a848
--- /dev/null
+++ b/assets/zh-CN_resources_login.md.BtKO-X7t.lean.js
@@ -0,0 +1 @@
+import{_ as d,R as o,l as r,f as t,m as i,w as l,a6 as a,a as n,$ as h}from"./chunks/framework.CtqZpALn.js";const T=JSON.parse('{"title":"登录信息 (Login)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/login.md","filePath":"zh-CN/resources/login.md"}'),s={name:"zh-CN/resources/login.md"},c=a("",8),u={class:"route"},_=t("code",null,"/login.get",-1),g=a("",8);function p(b,m,f,q,N,P){const e=o("badge");return n(),r("div",null,[c,t("blockquote",u,[i(e,null,{default:l(()=>[h("POST")]),_:1}),_]),g])}const C=d(s,[["render",p]]);export{T as __pageData,C as default};
diff --git a/assets/zh-CN_resources_member.md.CXr0_r_0.js b/assets/zh-CN_resources_member.md.CXr0_r_0.js
new file mode 100644
index 0000000..aafa0d9
--- /dev/null
+++ b/assets/zh-CN_resources_member.md.CXr0_r_0.js
@@ -0,0 +1 @@
+import{_ as l,R as i,l as h,f as t,m as a,w as r,$ as e,a6 as o,a as s}from"./chunks/framework.CtqZpALn.js";const O=JSON.parse('{"title":"群组成员 (GuildMember)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/member.md","filePath":"zh-CN/resources/member.md"}'),_={name:"zh-CN/resources/member.md"},u=o('群组成员 (GuildMember) 类型定义 GuildMember 字段 类型 描述 user User ?用户对象 nick string? 用户在群组中的名称 avatar string? 用户在群组中的头像 joined_at number? 加入时间
API 获取群组成员 ',6),n={class:"route"},c=t("code",null,"/guild.member.get",-1),m=o('字段 类型 描述 guild_id string 群组 ID user_id string 用户 ID
获取群成员信息。返回一个 GuildMember 对象。
获取群组成员列表 ',3),b={class:"route"},g=t("code",null,"/guild.member.list",-1),p=o('字段 类型 描述 guild_id string 群组 ID next string? 分页令牌
获取群成员列表。返回一个 GuildMember 的 分页列表 。
踢出群组成员 ',3),T={class:"route"},q=t("code",null,"/guild.member.kick",-1),P=o("字段 类型 描述 guild_id string 群组 ID user_id string 用户 ID permanent boolean? 是否永久踢出 (无法再次加入群组)
将某个用户踢出群组。
",2),f={id:"禁言群组成员",tabindex:"-1"},S=t("a",{class:"header-anchor",href:"#禁言群组成员","aria-label":'Permalink to "禁言群组成员 实验性 "'},"",-1),k={class:"route"},I=t("code",null,"/guild.member.mute",-1),x=o('字段 类型 描述 guild_id string 群组 ID user_id string 用户 ID duration number 禁言时长 (毫秒)
将某个用户禁言。如果传入的禁言时长为 0
则表示解除禁言。
通过群组成员申请 ',3),A={class:"route"},C=t("code",null,"/guild.member.approve",-1),V=o('字段 类型 描述 message_id string 请求 ID approve boolean 是否通过请求 comment string? 备注信息
处理加群请求。
事件 guild-member-added 群组成员增加时触发。必需资源:guild
,member
,user
。
guild-member-updated 群组成员信息更新时触发。必需资源:guild
,member
,user
。
guild-member-removed 群组成员移除时触发。必需资源:guild
,member
,user
。
guild-member-request 接收到新的加群请求时触发。必需资源:guild
,member
,user
。
',11);function D(y,N,v,E,G,M){const d=i("badge");return s(),h("div",null,[u,t("blockquote",n,[a(d,null,{default:r(()=>[e("POST")]),_:1}),c]),m,t("blockquote",b,[a(d,null,{default:r(()=>[e("POST")]),_:1}),g]),p,t("blockquote",T,[a(d,null,{default:r(()=>[e("POST")]),_:1}),q]),P,t("h3",f,[e("禁言群组成员 "),a(d,{type:"warning"},{default:r(()=>[e("实验性")]),_:1}),e(),S]),t("blockquote",k,[a(d,null,{default:r(()=>[e("POST")]),_:1}),I]),x,t("blockquote",A,[a(d,null,{default:r(()=>[e("POST")]),_:1}),C]),V])}const $=l(_,[["render",D]]);export{O as __pageData,$ as default};
diff --git a/assets/zh-CN_resources_member.md.CXr0_r_0.lean.js b/assets/zh-CN_resources_member.md.CXr0_r_0.lean.js
new file mode 100644
index 0000000..d91ff1e
--- /dev/null
+++ b/assets/zh-CN_resources_member.md.CXr0_r_0.lean.js
@@ -0,0 +1 @@
+import{_ as l,R as i,l as h,f as t,m as a,w as r,$ as e,a6 as o,a as s}from"./chunks/framework.CtqZpALn.js";const O=JSON.parse('{"title":"群组成员 (GuildMember)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/member.md","filePath":"zh-CN/resources/member.md"}'),_={name:"zh-CN/resources/member.md"},u=o("",6),n={class:"route"},c=t("code",null,"/guild.member.get",-1),m=o("",3),b={class:"route"},g=t("code",null,"/guild.member.list",-1),p=o("",3),T={class:"route"},q=t("code",null,"/guild.member.kick",-1),P=o("",2),f={id:"禁言群组成员",tabindex:"-1"},S=t("a",{class:"header-anchor",href:"#禁言群组成员","aria-label":'Permalink to "禁言群组成员 实验性 "'},"",-1),k={class:"route"},I=t("code",null,"/guild.member.mute",-1),x=o("",3),A={class:"route"},C=t("code",null,"/guild.member.approve",-1),V=o("",11);function D(y,N,v,E,G,M){const d=i("badge");return s(),h("div",null,[u,t("blockquote",n,[a(d,null,{default:r(()=>[e("POST")]),_:1}),c]),m,t("blockquote",b,[a(d,null,{default:r(()=>[e("POST")]),_:1}),g]),p,t("blockquote",T,[a(d,null,{default:r(()=>[e("POST")]),_:1}),q]),P,t("h3",f,[e("禁言群组成员 "),a(d,{type:"warning"},{default:r(()=>[e("实验性")]),_:1}),e(),S]),t("blockquote",k,[a(d,null,{default:r(()=>[e("POST")]),_:1}),I]),x,t("blockquote",A,[a(d,null,{default:r(()=>[e("POST")]),_:1}),C]),V])}const $=l(_,[["render",D]]);export{O as __pageData,$ as default};
diff --git a/assets/zh-CN_resources_message.md.Cs5HE-st.js b/assets/zh-CN_resources_message.md.Cs5HE-st.js
new file mode 100644
index 0000000..53e92fa
--- /dev/null
+++ b/assets/zh-CN_resources_message.md.Cs5HE-st.js
@@ -0,0 +1 @@
+import{_ as o,R as h,l as c,f as t,m as a,w as s,a6 as e,a as l,$ as r}from"./chunks/framework.CtqZpALn.js";const R=JSON.parse('{"title":"消息 (Message)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/message.md","filePath":"zh-CN/resources/message.md"}'),i={name:"zh-CN/resources/message.md"},n=e('消息 (Message) 类型定义 Message 字段 类型 描述 id string 消息 ID content string 消息内容 channel Channel ?频道对象 guild Guild ?群组对象 member Member ?群组成员对象 user User ?用户对象 created_at number? 消息发送的时间戳 updated_at number? 消息修改的时间戳
API 发送消息 ',6),_={class:"route"},m=t("code",null,"/message.create",-1),u=e('字段 类型 描述 channel_id string 频道 ID content string 消息内容
发送消息。返回一个 Message
对象构成的数组。
获取消息 ',3),g={class:"route"},b=t("code",null,"/message.get",-1),p=e('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID
获取特定消息。返回一个 Message
对象。必需资源:channel
,user
。
撤回消息 ',3),T={class:"route"},f=t("code",null,"/message.delete",-1),P=e('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID
撤回特定消息。
编辑消息 ',3),q={class:"route"},S=t("code",null,"/message.update",-1),I=e('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID content string 消息内容
编辑特定消息。
获取消息列表 ',3),x={class:"route"},A=t("code",null,"/message.list",-1),k=e('字段 类型 描述 channel_id string 频道 ID next string? 分页令牌 direction Direction ?查询方向 limit number? 消息数量限制 order Order ?对结果排序
获取频道消息列表。返回一个 Message
的 双向分页列表 。必需资源:user
。
next
参数默认值为空,表示从最新消息开始查询。此时 direction
参数只能为 before
。direction
参数默认为 before
。order
参数默认为 asc
(无论查询方向)。limit
参数的默认值与平台默认值保持一致。如果平台 API 没有设定默认值,则可以自行设定,推荐值为 50。如果用户传入值超出平台要求的上限,则应当改为使用平台的上限值,而不是返回错误。开发者应当使用返回值中 prev
或 next
的存在性判断是否有更多数据,而非依赖于返回值中 data
的长度。事件 message-created 当消息被创建时触发。必需资源:channel
,message
,user
。
message-updated 当消息被编辑时触发。必需资源:channel
,message
,user
。
message-deleted 当消息被删除时触发。必需资源:channel
,message
,user
。
',10);function C(D,V,N,y,M,E){const d=h("badge");return l(),c("div",null,[n,t("blockquote",_,[a(d,null,{default:s(()=>[r("POST")]),_:1}),m]),u,t("blockquote",g,[a(d,null,{default:s(()=>[r("POST")]),_:1}),b]),p,t("blockquote",T,[a(d,null,{default:s(()=>[r("POST")]),_:1}),f]),P,t("blockquote",q,[a(d,null,{default:s(()=>[r("POST")]),_:1}),S]),I,t("blockquote",x,[a(d,null,{default:s(()=>[r("POST")]),_:1}),A]),k])}const $=o(i,[["render",C]]);export{R as __pageData,$ as default};
diff --git a/assets/zh-CN_resources_message.md.Cs5HE-st.lean.js b/assets/zh-CN_resources_message.md.Cs5HE-st.lean.js
new file mode 100644
index 0000000..9c7c71f
--- /dev/null
+++ b/assets/zh-CN_resources_message.md.Cs5HE-st.lean.js
@@ -0,0 +1 @@
+import{_ as o,R as h,l as c,f as t,m as a,w as s,a6 as e,a as l,$ as r}from"./chunks/framework.CtqZpALn.js";const R=JSON.parse('{"title":"消息 (Message)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/message.md","filePath":"zh-CN/resources/message.md"}'),i={name:"zh-CN/resources/message.md"},n=e("",6),_={class:"route"},m=t("code",null,"/message.create",-1),u=e("",3),g={class:"route"},b=t("code",null,"/message.get",-1),p=e("",3),T={class:"route"},f=t("code",null,"/message.delete",-1),P=e("",3),q={class:"route"},S=t("code",null,"/message.update",-1),I=e("",3),x={class:"route"},A=t("code",null,"/message.list",-1),k=e("",10);function C(D,V,N,y,M,E){const d=h("badge");return l(),c("div",null,[n,t("blockquote",_,[a(d,null,{default:s(()=>[r("POST")]),_:1}),m]),u,t("blockquote",g,[a(d,null,{default:s(()=>[r("POST")]),_:1}),b]),p,t("blockquote",T,[a(d,null,{default:s(()=>[r("POST")]),_:1}),f]),P,t("blockquote",q,[a(d,null,{default:s(()=>[r("POST")]),_:1}),S]),I,t("blockquote",x,[a(d,null,{default:s(()=>[r("POST")]),_:1}),A]),k])}const $=o(i,[["render",C]]);export{R as __pageData,$ as default};
diff --git a/assets/zh-CN_resources_reaction.md.MEG_PZJL.js b/assets/zh-CN_resources_reaction.md.MEG_PZJL.js
new file mode 100644
index 0000000..53718f1
--- /dev/null
+++ b/assets/zh-CN_resources_reaction.md.MEG_PZJL.js
@@ -0,0 +1 @@
+import{_ as n,R as i,l as s,f as t,$ as e,m as a,w as r,a6 as o,a as _}from"./chunks/framework.CtqZpALn.js";const O=JSON.parse('{"title":"表态 (Reaction) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/reaction.md","filePath":"zh-CN/resources/reaction.md"}'),h={name:"zh-CN/resources/reaction.md"},c={id:"表态",tabindex:"-1"},l=t("a",{class:"header-anchor",href:"#表态","aria-label":'Permalink to "表态 (Reaction) 实验性 "'},"",-1),u=t("h2",{id:"api",tabindex:"-1"},[e("API "),t("a",{class:"header-anchor",href:"#api","aria-label":'Permalink to "API"'},"")],-1),b=t("h3",{id:"添加表态",tabindex:"-1"},[e("添加表态 "),t("a",{class:"header-anchor",href:"#添加表态","aria-label":'Permalink to "添加表态"'},"")],-1),m={class:"route"},p=t("code",null,"/reaction.create",-1),T=o('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID emoji string 表态名称
向特定消息添加表态。
删除表态 ',3),f={class:"route"},g=t("code",null,"/reaction.delete",-1),P=o('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID emoji string 表态名称 user_id string? 用户 ID
从特定消息删除某个用户添加的特定表态。如果没有传入用户 ID 则表示删除自己的表态。
清除表态 ',3),I={class:"route"},S=t("code",null,"/reaction.clear",-1),q=o('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID emoji string? 表态名称
从特定消息清除某个特定表态。如果没有传入表态名称则表示清除所有表态。
获取表态列表 ',3),k={class:"route"},x=t("code",null,"/reaction.list",-1),D=o('字段 类型 描述 channel_id string 频道 ID message_id string 消息 ID emoji string 表态名称 next string? 分页令牌
获取添加特定消息的特定表态的用户列表。返回一个 User
的 分页列表 。
事件 reaction-added 当表态被添加时触发。
reaction-removed 当表态被移除时触发。
',7);function A(C,N,V,y,R,v){const d=i("badge");return _(),s("div",null,[t("h1",c,[e("表态 (Reaction) "),a(d,{type:"warning"},{default:r(()=>[e("实验性")]),_:1}),e(),l]),u,b,t("blockquote",m,[a(d,null,{default:r(()=>[e("POST")]),_:1}),p]),T,t("blockquote",f,[a(d,null,{default:r(()=>[e("POST")]),_:1}),g]),P,t("blockquote",I,[a(d,null,{default:r(()=>[e("POST")]),_:1}),S]),q,t("blockquote",k,[a(d,null,{default:r(()=>[e("POST")]),_:1}),x]),D])}const $=n(h,[["render",A]]);export{O as __pageData,$ as default};
diff --git a/assets/zh-CN_resources_reaction.md.MEG_PZJL.lean.js b/assets/zh-CN_resources_reaction.md.MEG_PZJL.lean.js
new file mode 100644
index 0000000..4a9de89
--- /dev/null
+++ b/assets/zh-CN_resources_reaction.md.MEG_PZJL.lean.js
@@ -0,0 +1 @@
+import{_ as n,R as i,l as s,f as t,$ as e,m as a,w as r,a6 as o,a as _}from"./chunks/framework.CtqZpALn.js";const O=JSON.parse('{"title":"表态 (Reaction) 实验性","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/reaction.md","filePath":"zh-CN/resources/reaction.md"}'),h={name:"zh-CN/resources/reaction.md"},c={id:"表态",tabindex:"-1"},l=t("a",{class:"header-anchor",href:"#表态","aria-label":'Permalink to "表态 (Reaction) 实验性 "'},"",-1),u=t("h2",{id:"api",tabindex:"-1"},[e("API "),t("a",{class:"header-anchor",href:"#api","aria-label":'Permalink to "API"'},"")],-1),b=t("h3",{id:"添加表态",tabindex:"-1"},[e("添加表态 "),t("a",{class:"header-anchor",href:"#添加表态","aria-label":'Permalink to "添加表态"'},"")],-1),m={class:"route"},p=t("code",null,"/reaction.create",-1),T=o("",3),f={class:"route"},g=t("code",null,"/reaction.delete",-1),P=o("",3),I={class:"route"},S=t("code",null,"/reaction.clear",-1),q=o("",3),k={class:"route"},x=t("code",null,"/reaction.list",-1),D=o("",7);function A(C,N,V,y,R,v){const d=i("badge");return _(),s("div",null,[t("h1",c,[e("表态 (Reaction) "),a(d,{type:"warning"},{default:r(()=>[e("实验性")]),_:1}),e(),l]),u,b,t("blockquote",m,[a(d,null,{default:r(()=>[e("POST")]),_:1}),p]),T,t("blockquote",f,[a(d,null,{default:r(()=>[e("POST")]),_:1}),g]),P,t("blockquote",I,[a(d,null,{default:r(()=>[e("POST")]),_:1}),S]),q,t("blockquote",k,[a(d,null,{default:r(()=>[e("POST")]),_:1}),x]),D])}const $=n(h,[["render",A]]);export{O as __pageData,$ as default};
diff --git a/assets/zh-CN_resources_role.md.DLTs0-kA.js b/assets/zh-CN_resources_role.md.DLTs0-kA.js
new file mode 100644
index 0000000..860772e
--- /dev/null
+++ b/assets/zh-CN_resources_role.md.DLTs0-kA.js
@@ -0,0 +1 @@
+import{_ as r,R as i,l as h,f as t,m as a,w as o,a6 as e,a as _,$ as l}from"./chunks/framework.CtqZpALn.js";const z=JSON.parse('{"title":"群组角色 (GuildRole)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/role.md","filePath":"zh-CN/resources/role.md"}'),s={name:"zh-CN/resources/role.md"},u=e('群组角色 (GuildRole) 类型定义 GuildRole 字段 类型 描述 id string 角色 ID name string? 角色名称
API 设置群组成员角色 ',6),n={class:"route"},c=t("code",null,"/guild.member.role.set",-1),b=e('字段 类型 描述 guild_id string 群组 ID user_id string 用户 ID role_id string 角色 ID
设置群组内用户的角色。
取消群组成员角色 ',3),g={class:"route"},T=t("code",null,"/guild.member.role.unset",-1),p=e('字段 类型 描述 guild_id string 群组 ID user_id string 用户 ID role_id string 角色 ID
取消群组内用户的角色。
获取群组角色列表 ',3),P={class:"route"},f=t("code",null,"/guild.role.list",-1),q=e('字段 类型 描述 guild_id string 群组 ID next string? 分页令牌
获取群组角色列表。返回一个 GuildRole 的 分页列表 。
创建群组角色 ',3),m={class:"route"},I=t("code",null,"/guild.role.create",-1),S=e('创建群组角色。返回一个 GuildRole 对象。
修改群组角色 ',3),A={class:"route"},k=t("code",null,"/guild.role.update",-1),D=e('字段 类型 描述 guild_id string 群组 ID role_id string 角色 ID role GuildRole 角色数据
修改群组角色。
删除群组角色 ',3),x={class:"route"},C=t("code",null,"/guild.role.delete",-1),V=e('字段 类型 描述 guild_id string 群组 ID role_id string 角色 ID
删除群组角色。
事件 guild-role-created 群组角色被创建时触发。必需资源:guild
,role
。
guild-role-updated 群组角色被修改时触发。必需资源:guild
,role
。
guild-role-deleted 群组角色被删除时触发。必需资源:guild
,role
。
',9);function R(N,y,G,E,O,$){const d=i("badge");return _(),h("div",null,[u,t("blockquote",n,[a(d,null,{default:o(()=>[l("POST")]),_:1}),c]),b,t("blockquote",g,[a(d,null,{default:o(()=>[l("POST")]),_:1}),T]),p,t("blockquote",P,[a(d,null,{default:o(()=>[l("POST")]),_:1}),f]),q,t("blockquote",m,[a(d,null,{default:o(()=>[l("POST")]),_:1}),I]),S,t("blockquote",A,[a(d,null,{default:o(()=>[l("POST")]),_:1}),k]),D,t("blockquote",x,[a(d,null,{default:o(()=>[l("POST")]),_:1}),C]),V])}const B=r(s,[["render",R]]);export{z as __pageData,B as default};
diff --git a/assets/zh-CN_resources_role.md.DLTs0-kA.lean.js b/assets/zh-CN_resources_role.md.DLTs0-kA.lean.js
new file mode 100644
index 0000000..d097f81
--- /dev/null
+++ b/assets/zh-CN_resources_role.md.DLTs0-kA.lean.js
@@ -0,0 +1 @@
+import{_ as r,R as i,l as h,f as t,m as a,w as o,a6 as e,a as _,$ as l}from"./chunks/framework.CtqZpALn.js";const z=JSON.parse('{"title":"群组角色 (GuildRole)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/role.md","filePath":"zh-CN/resources/role.md"}'),s={name:"zh-CN/resources/role.md"},u=e("",6),n={class:"route"},c=t("code",null,"/guild.member.role.set",-1),b=e("",3),g={class:"route"},T=t("code",null,"/guild.member.role.unset",-1),p=e("",3),P={class:"route"},f=t("code",null,"/guild.role.list",-1),q=e("",3),m={class:"route"},I=t("code",null,"/guild.role.create",-1),S=e("",3),A={class:"route"},k=t("code",null,"/guild.role.update",-1),D=e("",3),x={class:"route"},C=t("code",null,"/guild.role.delete",-1),V=e("",9);function R(N,y,G,E,O,$){const d=i("badge");return _(),h("div",null,[u,t("blockquote",n,[a(d,null,{default:o(()=>[l("POST")]),_:1}),c]),b,t("blockquote",g,[a(d,null,{default:o(()=>[l("POST")]),_:1}),T]),p,t("blockquote",P,[a(d,null,{default:o(()=>[l("POST")]),_:1}),f]),q,t("blockquote",m,[a(d,null,{default:o(()=>[l("POST")]),_:1}),I]),S,t("blockquote",A,[a(d,null,{default:o(()=>[l("POST")]),_:1}),k]),D,t("blockquote",x,[a(d,null,{default:o(()=>[l("POST")]),_:1}),C]),V])}const B=r(s,[["render",R]]);export{z as __pageData,B as default};
diff --git a/assets/zh-CN_resources_user.md.CIvScYtH.js b/assets/zh-CN_resources_user.md.CIvScYtH.js
new file mode 100644
index 0000000..e2f4f71
--- /dev/null
+++ b/assets/zh-CN_resources_user.md.CIvScYtH.js
@@ -0,0 +1 @@
+import{_ as s,R as h,l as _,f as t,m as d,w as r,a6 as e,a as n,$ as o}from"./chunks/framework.CtqZpALn.js";const V=JSON.parse('{"title":"用户 (User)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/user.md","filePath":"zh-CN/resources/user.md"}'),i={name:"zh-CN/resources/user.md"},l=e('用户 (User) 类型定义 User 字段 类型 描述 id string 用户 ID name string? 用户名称 nick string? 用户昵称 avatar string? 用户头像 is_bot boolean? 是否为机器人
API 获取用户信息 ',6),c={class:"route"},u=t("code",null,"/user.get",-1),b=e('获取用户信息。返回一个 User
对象。
获取好友列表 ',3),f={class:"route"},p=t("code",null,"/friend.list",-1),T=e('获取好友列表。返回一个 User
的 分页列表 。
处理好友申请 ',3),m={class:"route"},q=t("code",null,"/friend.approve",-1),P=e('字段 类型 描述 message_id string 请求 ID approve boolean 是否通过请求 comment string? 备注信息
处理好友申请。
事件 friend-request 接收到新的好友申请时触发。必需资源:user
。
',5);function S(k,x,A,g,C,I){const a=h("badge");return n(),_("div",null,[l,t("blockquote",c,[d(a,null,{default:r(()=>[o("POST")]),_:1}),u]),b,t("blockquote",f,[d(a,null,{default:r(()=>[o("POST")]),_:1}),p]),T,t("blockquote",m,[d(a,null,{default:r(()=>[o("POST")]),_:1}),q]),P])}const y=s(i,[["render",S]]);export{V as __pageData,y as default};
diff --git a/assets/zh-CN_resources_user.md.CIvScYtH.lean.js b/assets/zh-CN_resources_user.md.CIvScYtH.lean.js
new file mode 100644
index 0000000..79de1d1
--- /dev/null
+++ b/assets/zh-CN_resources_user.md.CIvScYtH.lean.js
@@ -0,0 +1 @@
+import{_ as s,R as h,l as _,f as t,m as d,w as r,a6 as e,a as n,$ as o}from"./chunks/framework.CtqZpALn.js";const V=JSON.parse('{"title":"用户 (User)","description":"","frontmatter":{},"headers":[],"relativePath":"zh-CN/resources/user.md","filePath":"zh-CN/resources/user.md"}'),i={name:"zh-CN/resources/user.md"},l=e("",6),c={class:"route"},u=t("code",null,"/user.get",-1),b=e("",3),f={class:"route"},p=t("code",null,"/friend.list",-1),T=e("",3),m={class:"route"},q=t("code",null,"/friend.approve",-1),P=e("",5);function S(k,x,A,g,C,I){const a=h("badge");return n(),_("div",null,[l,t("blockquote",c,[d(a,null,{default:r(()=>[o("POST")]),_:1}),u]),b,t("blockquote",f,[d(a,null,{default:r(()=>[o("POST")]),_:1}),p]),T,t("blockquote",m,[d(a,null,{default:r(()=>[o("POST")]),_:1}),q]),P])}const y=s(i,[["render",S]]);export{V as __pageData,y as default};
diff --git a/en-US/index.html b/en-US/index.html
new file mode 100644
index 0000000..a0fa36f
--- /dev/null
+++ b/en-US/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/introduction.html b/en-US/introduction.html
new file mode 100644
index 0000000..c5fda70
--- /dev/null
+++ b/en-US/introduction.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Introduction | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/protocol/api.html b/en-US/protocol/api.html
new file mode 100644
index 0000000..948fa2e
--- /dev/null
+++ b/en-US/protocol/api.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ HTTP API | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/protocol/index.html b/en-US/protocol/index.html
new file mode 100644
index 0000000..7f4304c
--- /dev/null
+++ b/en-US/protocol/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Overview | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/protocol/message.html b/en-US/protocol/message.html
new file mode 100644
index 0000000..ca8acdb
--- /dev/null
+++ b/en-US/protocol/message.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Message | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/protocol/webhook.html b/en-US/protocol/webhook.html
new file mode 100644
index 0000000..34d0f84
--- /dev/null
+++ b/en-US/protocol/webhook.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Webhook | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/protocol/websocket.html b/en-US/protocol/websocket.html
new file mode 100644
index 0000000..aee2584
--- /dev/null
+++ b/en-US/protocol/websocket.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ WebSocket | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/channel.html b/en-US/resources/channel.html
new file mode 100644
index 0000000..4afafbe
--- /dev/null
+++ b/en-US/resources/channel.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Channel | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/guild.html b/en-US/resources/guild.html
new file mode 100644
index 0000000..c214426
--- /dev/null
+++ b/en-US/resources/guild.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Guild | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/member.html b/en-US/resources/member.html
new file mode 100644
index 0000000..4899a3d
--- /dev/null
+++ b/en-US/resources/member.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ 群组成员 (GuildMember) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/message.html b/en-US/resources/message.html
new file mode 100644
index 0000000..c2d1d8e
--- /dev/null
+++ b/en-US/resources/message.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ 消息 (Message) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/reaction.html b/en-US/resources/reaction.html
new file mode 100644
index 0000000..eb64fb6
--- /dev/null
+++ b/en-US/resources/reaction.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 表态 (Reaction) 实验性 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/role.html b/en-US/resources/role.html
new file mode 100644
index 0000000..307b02c
--- /dev/null
+++ b/en-US/resources/role.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ 群组角色 (GuildRole) 实验性 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/en-US/resources/user.html b/en-US/resources/user.html
new file mode 100644
index 0000000..45b3c14
--- /dev/null
+++ b/en-US/resources/user.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ 用户 (User) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hashmap.json b/hashmap.json
new file mode 100644
index 0000000..4a1e3d2
--- /dev/null
+++ b/hashmap.json
@@ -0,0 +1 @@
+{"zh-cn_resources_reaction.md":"MEG_PZJL","en-us_protocol_api.md":"tjEvRPe9","en-us_resources_channel.md":"B49Loav5","en-us_protocol_webhook.md":"Dv45azH5","zh-cn_resources_guild.md":"D4GWzdfJ","zh-cn_protocol_api.md":"B6RT9T-b","en-us_resources_user.md":"d8k6TvvM","en-us_protocol_message.md":"C8I9M0t3","zh-cn_resources_interaction.md":"B4bO94AM","zh-cn_resources_channel.md":"BrK2DrWx","zh-cn_advanced_admin.md":"C9G_6R-7","zh-cn_protocol_elements.md":"d9OkxSqX","en-us_protocol_websocket.md":"BKw3x1oT","en-us_resources_role.md":"BlA2gUbW","zh-cn_resources_message.md":"Cs5HE-st","zh-cn_resources_login.md":"BtKO-X7t","zh-cn_resources_user.md":"CIvScYtH","en-us_resources_guild.md":"B-DL93Yw","en-us_resources_message.md":"BaNUWu1G","en-us_introduction.md":"COyc3duQ","zh-cn_index.md":"CdCe0MIX","en-us_resources_member.md":"BJP15InX","en-us_resources_reaction.md":"DViq2951","zh-cn_protocol_index.md":"BCJ5lIZZ","en-us_protocol_index.md":"D7Gi7Bkr","en-us_index.md":"Bsz4tPbi","zh-cn_advanced_internal.md":"6ADIgZra","zh-cn_resources_role.md":"DLTs0-kA","zh-cn_resources_member.md":"CXr0_r_0","zh-cn_protocol_message.md":"fglB_YNF","zh-cn_advanced_resource.md":"R7MZX5XF","zh-cn_protocol_events.md":"DyRiGfhF","zh-cn_introduction.md":"k_naDUjk"}
diff --git a/zh-CN/advanced/admin.html b/zh-CN/advanced/admin.html
new file mode 100644
index 0000000..423725d
--- /dev/null
+++ b/zh-CN/advanced/admin.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 管理接口 可选 实验性 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/advanced/internal.html b/zh-CN/advanced/internal.html
new file mode 100644
index 0000000..35d23fa
--- /dev/null
+++ b/zh-CN/advanced/internal.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ 内部接口 可选 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/advanced/resource.html b/zh-CN/advanced/resource.html
new file mode 100644
index 0000000..97bd056
--- /dev/null
+++ b/zh-CN/advanced/resource.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ 资源链接 实验性 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/index.html b/zh-CN/index.html
new file mode 100644
index 0000000..5926d0a
--- /dev/null
+++ b/zh-CN/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/introduction.html b/zh-CN/introduction.html
new file mode 100644
index 0000000..cc67e99
--- /dev/null
+++ b/zh-CN/introduction.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 介绍 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/protocol/api.html b/zh-CN/protocol/api.html
new file mode 100644
index 0000000..3a80072
--- /dev/null
+++ b/zh-CN/protocol/api.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ API | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/protocol/elements.html b/zh-CN/protocol/elements.html
new file mode 100644
index 0000000..30b12ad
--- /dev/null
+++ b/zh-CN/protocol/elements.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+ 标准元素 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/protocol/events.html b/zh-CN/protocol/events.html
new file mode 100644
index 0000000..ed923eb
--- /dev/null
+++ b/zh-CN/protocol/events.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 事件 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/protocol/index.html b/zh-CN/protocol/index.html
new file mode 100644
index 0000000..f6e58e5
--- /dev/null
+++ b/zh-CN/protocol/index.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 总览 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/protocol/message.html b/zh-CN/protocol/message.html
new file mode 100644
index 0000000..47d8617
--- /dev/null
+++ b/zh-CN/protocol/message.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+ 消息编码 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/channel.html b/zh-CN/resources/channel.html
new file mode 100644
index 0000000..31f23d7
--- /dev/null
+++ b/zh-CN/resources/channel.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 频道 (Channel) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/guild.html b/zh-CN/resources/guild.html
new file mode 100644
index 0000000..5efdd04
--- /dev/null
+++ b/zh-CN/resources/guild.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 群组 (Guild) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/interaction.html b/zh-CN/resources/interaction.html
new file mode 100644
index 0000000..7ba40b3
--- /dev/null
+++ b/zh-CN/resources/interaction.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 交互 (Interaction) 实验性 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/login.html b/zh-CN/resources/login.html
new file mode 100644
index 0000000..97142cc
--- /dev/null
+++ b/zh-CN/resources/login.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 登录信息 (Login) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/member.html b/zh-CN/resources/member.html
new file mode 100644
index 0000000..3dad1e1
--- /dev/null
+++ b/zh-CN/resources/member.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 群组成员 (GuildMember) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/message.html b/zh-CN/resources/message.html
new file mode 100644
index 0000000..c79912a
--- /dev/null
+++ b/zh-CN/resources/message.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 消息 (Message) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/reaction.html b/zh-CN/resources/reaction.html
new file mode 100644
index 0000000..dc9a623
--- /dev/null
+++ b/zh-CN/resources/reaction.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 表态 (Reaction) 实验性 | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/role.html b/zh-CN/resources/role.html
new file mode 100644
index 0000000..6f11dae
--- /dev/null
+++ b/zh-CN/resources/role.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 群组角色 (GuildRole) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/zh-CN/resources/user.html b/zh-CN/resources/user.html
new file mode 100644
index 0000000..e492875
--- /dev/null
+++ b/zh-CN/resources/user.html
@@ -0,0 +1,24 @@
+
+
+
+
+
+ 用户 (User) | Satori
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file