diff --git a/.forgejo/workflows/renovate.yaml b/.forgejo/workflows/renovate.yaml deleted file mode 100644 index 95fc966..0000000 --- a/.forgejo/workflows/renovate.yaml +++ /dev/null @@ -1,16 +0,0 @@ -on: - push: - branches: - - 'renovate/*' - -jobs: - test-dependencies: - runs-on: docker - steps: - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v4 - with: - run_install: | - - recursive: true - args: [--frozen-lockfile, --strict-peer-dependencies] - - run: pnpm build diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 9b1f245..0000000 --- a/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# editors -.idea/ -.vscode/ -*.swp -# direnv -.direnv -.envrc -# nodejs -node_modules/ -# nix -/result -# custom -.DS_Store -# vuepress -/docs/.vuepress/.cache -/docs/.vuepress/.temp -/docs/.vuepress/dist diff --git a/dist/404.html b/404.html similarity index 55% rename from dist/404.html rename to 404.html index d90ea40..ca6f76d 100644 --- a/dist/404.html +++ b/404.html @@ -3,7 +3,7 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> - <meta name="generator" content="VuePress 2.0.0-rc.18" /> + <meta name="generator" content="VuePress 2.0.0-rc.19" /> <style> :root { --vp-c-bg: #fff; @@ -32,12 +32,12 @@ } </script> <meta property="og:url" content="https://pleshevski.ru/404.html"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":""}</script><title>Дмитрий Плешевский</title><meta name="description" content=" "> - <link rel="preload" href="/assets/style-CyqMEKOR.css" as="style"><link rel="stylesheet" href="/assets/style-CyqMEKOR.css"> - <link rel="modulepreload" href="/assets/app-CvTe0YTg.js"><link rel="modulepreload" href="/assets/404.html-BGekuXRq.js"> - <link rel="prefetch" href="/assets/index.html-D7ve43IL.js" as="script"><link rel="prefetch" href="/assets/works.html-NBBFoiT7.js" as="script"><link rel="prefetch" href="/assets/index.html-B5LWGqHO.js" as="script"><link rel="prefetch" href="/assets/works.html-CihZ59B-.js" as="script"> + <link rel="preload" href="/assets/style-CynUSZ8x.css" as="style"><link rel="stylesheet" href="/assets/style-CynUSZ8x.css"> + <link rel="modulepreload" href="/assets/app-R2Ffa9VO.js"><link rel="modulepreload" href="/assets/404.html-Xq3T-2PH.js"> + <link rel="prefetch" href="/assets/index.html-DasZnaAo.js" as="script"><link rel="prefetch" href="/assets/works.html-DplNc40I.js" as="script"><link rel="prefetch" href="/assets/index.html-7-wjojn8.js" as="script"><link rel="prefetch" href="/assets/works.html-D4EgERwy.js" as="script"> </head> <body> - <div id="app"><!--[--><div class="vp-theme-container" vp-container data-v-9607bbd4><main class="page" data-v-9607bbd4><div class="theme-default-content" vp-content data-v-9607bbd4><h1 data-v-9607bbd4>404</h1><blockquote data-v-9607bbd4>Ошиблись в параллельной вселенной.</blockquote><a class="route-link" href="/" data-v-9607bbd4>Вернуться на главную</a></div></main></div><!--[--><!----><!--]--><!--]--></div> - <script type="module" src="/assets/app-CvTe0YTg.js" defer></script> + <div id="app"><!--[--><div class="vp-theme-container" vp-container data-v-f90f3f6a><main class="page" data-v-f90f3f6a><div vp-content data-v-f90f3f6a><h1 data-v-f90f3f6a>404</h1><blockquote data-v-f90f3f6a>Ошиблись в параллельной вселенной.</blockquote><a class="route-link" href="/" data-v-f90f3f6a>Вернуться на главную</a></div></main></div><!--[--><!----><!--]--><!--]--></div> + <script type="module" src="/assets/app-R2Ffa9VO.js" defer></script> </body> </html> diff --git a/Makefile b/Makefile deleted file mode 100644 index d6a4f4a..0000000 --- a/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -PREFIX ?= dist - -.PHONY: help -help: - cat Makefile - -.PHONY: build -build: - pnpm run build --dest $(PREFIX) - -.PHONY: install -install: build - -.PHONY: dev -dev: - pnpm run dev - -.PHONY: deps -deps: - pnpm install - -.PHONY: init-git-hooks -init-git-hooks: - ln -sf $(PWD)/scripts/pre-commit $(PWD)/.git/hooks/pre-commit diff --git a/dist/assets/404.html-BGekuXRq.js b/assets/404.html-Xq3T-2PH.js similarity index 91% rename from dist/assets/404.html-BGekuXRq.js rename to assets/404.html-Xq3T-2PH.js index e68d31c..30a9410 100644 --- a/dist/assets/404.html-BGekuXRq.js +++ b/assets/404.html-Xq3T-2PH.js @@ -1 +1 @@ -import{_ as e,c as o,a,o as n}from"./app-CvTe0YTg.js";const r={};function l(p,t){return n(),o("div",null,t[0]||(t[0]=[a("p",null,"404 Not Found",-1)]))}const c=e(r,[["render",l],["__file","404.html.vue"]]),m=JSON.parse('{"path":"/404.html","title":"","lang":"ru-RU","frontmatter":{"layout":"NotFound","head":[["meta",{"property":"og:url","content":"https://pleshevski.ru/404.html"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"\\"}"]]},"headers":[],"git":{},"filePathRelative":null}');export{c as comp,m as data}; +import{_ as e,c as o,a,o as n}from"./app-R2Ffa9VO.js";const r={};function l(p,t){return n(),o("div",null,t[0]||(t[0]=[a("p",null,"404 Not Found",-1)]))}const c=e(r,[["render",l],["__file","404.html.vue"]]),m=JSON.parse('{"path":"/404.html","title":"","lang":"ru-RU","frontmatter":{"layout":"NotFound","head":[["meta",{"property":"og:url","content":"https://pleshevski.ru/404.html"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"\\"}"]]},"headers":[],"git":{},"filePathRelative":null}');export{c as comp,m as data}; diff --git a/assets/app-R2Ffa9VO.js b/assets/app-R2Ffa9VO.js new file mode 100644 index 0000000..07b589c --- /dev/null +++ b/assets/app-R2Ffa9VO.js @@ -0,0 +1,31 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Ms(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Se={},Rn=[],Ot=()=>{},Df=()=>!1,Ir=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),Be=Object.assign,Bs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Rf=Object.prototype.hasOwnProperty,ve=(e,t)=>Rf.call(e,t),re=Array.isArray,In=e=>So(e)==="[object Map]",Xa=e=>So(e)==="[object Set]",oe=e=>typeof e=="function",Ne=e=>typeof e=="string",jt=e=>typeof e=="symbol",Oe=e=>e!==null&&typeof e=="object",Qa=e=>(Oe(e)||oe(e))&&oe(e.then)&&oe(e.catch),Za=Object.prototype.toString,So=e=>Za.call(e),If=e=>So(e).slice(8,-1),eu=e=>So(e)==="[object Object]",$s=e=>Ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ln=Ms(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ao=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Lf=/-(\w)/g,st=Ao(e=>e.replace(Lf,(t,n)=>n?n.toUpperCase():"")),Vf=/\B([A-Z])/g,on=Ao(e=>e.replace(Vf,"-$1").toLowerCase()),Lr=Ao(e=>e.charAt(0).toUpperCase()+e.slice(1)),$o=Ao(e=>e?`on${Lr(e)}`:""),en=(e,t)=>!Object.is(e,t),Ho=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},tu=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Nf=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Mf=e=>{const t=Ne(e)?Number(e):NaN;return isNaN(t)?e:t};let Li;const wo=()=>Li||(Li=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function zn(e){if(re(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],o=Ne(r)?Hf(r):zn(r);if(o)for(const s in o)t[s]=o[s]}return t}else if(Ne(e)||Oe(e))return e}const Ff=/;(?![^(]*\))/g,Bf=/:([^]+)/,$f=/\/\*[^]*?\*\//g;function Hf(e){const t={};return e.replace($f,"").split(Ff).forEach(n=>{if(n){const r=n.split(Bf);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function rt(e){let t="";if(Ne(e))t=e;else if(re(e))for(let n=0;n<e.length;n++){const r=rt(e[n]);r&&(t+=r+" ")}else if(Oe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function Uo(e){if(!e)return null;let{class:t,style:n}=e;return t&&!Ne(t)&&(e.class=rt(t)),n&&(e.style=zn(n)),e}const Uf="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",jf=Ms(Uf);function nu(e){return!!e||e===""}const ru=e=>!!(e&&e.__v_isRef===!0),ce=e=>Ne(e)?e:e==null?"":re(e)||Oe(e)&&(e.toString===Za||!oe(e.toString))?ru(e)?ce(e.value):JSON.stringify(e,ou,2):String(e),ou=(e,t)=>ru(t)?ou(e,t.value):In(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o],s)=>(n[jo(r,s)+" =>"]=o,n),{})}:Xa(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>jo(n))}:jt(t)?jo(t):Oe(t)&&!re(t)&&!eu(t)?String(t):t,jo=(e,t="")=>{var n;return jt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let et;class Wf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=et,!t&&et&&(this.index=(et.scopes||(et.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=et;try{return et=this,t()}finally{et=n}}}on(){et=this}off(){et=this.parent}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(this.effects.length=0,n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0}}}function Hs(){return et}function su(e,t=!1){et&&et.cleanups.push(e)}let Te;const Wo=new WeakSet;class iu{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,et&&et.active&&et.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Wo.has(this)&&(Wo.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||au(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Vi(this),uu(this);const t=Te,n=bt;Te=this,bt=!0;try{return this.fn()}finally{cu(this),Te=t,bt=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ws(t);this.deps=this.depsTail=void 0,Vi(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Wo.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){ds(this)&&this.run()}get dirty(){return ds(this)}}let lu=0,ur,cr;function au(e,t=!1){if(e.flags|=8,t){e.next=cr,cr=e;return}e.next=ur,ur=e}function Us(){lu++}function js(){if(--lu>0)return;if(cr){let t=cr;for(cr=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;ur;){let t=ur;for(ur=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function uu(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function cu(e){let t,n=e.depsTail,r=n;for(;r;){const o=r.prevDep;r.version===-1?(r===n&&(n=o),Ws(r),Kf(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=o}e.deps=t,e.depsTail=n}function ds(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(fu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function fu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===mr))return;e.globalVersion=mr;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!ds(e)){e.flags&=-3;return}const n=Te,r=bt;Te=e,bt=!0;try{uu(e);const o=e.fn(e._value);(t.version===0||en(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Te=n,bt=r,cu(e),e.flags&=-3}}function Ws(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Ws(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Kf(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let bt=!0;const du=[];function sn(){du.push(bt),bt=!1}function ln(){const e=du.pop();bt=e===void 0?!0:e}function Vi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Te;Te=void 0;try{t()}finally{Te=n}}}let mr=0;class zf{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Co{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Te||!bt||Te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Te)n=this.activeLink=new zf(Te,this),Te.deps?(n.prevDep=Te.depsTail,Te.depsTail.nextDep=n,Te.depsTail=n):Te.deps=Te.depsTail=n,pu(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Te.depsTail,n.nextDep=void 0,Te.depsTail.nextDep=n,Te.depsTail=n,Te.deps===n&&(Te.deps=r)}return n}trigger(t){this.version++,mr++,this.notify(t)}notify(t){Us();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{js()}}}function pu(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)pu(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const uo=new WeakMap,_n=Symbol(""),ps=Symbol(""),vr=Symbol("");function Ge(e,t,n){if(bt&&Te){let r=uo.get(e);r||uo.set(e,r=new Map);let o=r.get(n);o||(r.set(n,o=new Co),o.map=r,o.key=n),o.track()}}function Ft(e,t,n,r,o,s){const i=uo.get(e);if(!i){mr++;return}const l=a=>{a&&a.trigger()};if(Us(),t==="clear")i.forEach(l);else{const a=re(e),u=a&&$s(n);if(a&&n==="length"){const c=Number(r);i.forEach((f,p)=>{(p==="length"||p===vr||!jt(p)&&p>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(vr)),t){case"add":a?u&&l(i.get("length")):(l(i.get(_n)),In(e)&&l(i.get(ps)));break;case"delete":a||(l(i.get(_n)),In(e)&&l(i.get(ps)));break;case"set":In(e)&&l(i.get(_n));break}}js()}function Gf(e,t){const n=uo.get(e);return n&&n.get(t)}function Tn(e){const t=de(e);return t===e?t:(Ge(t,"iterate",vr),vt(e)?t:t.map(qe))}function To(e){return Ge(e=de(e),"iterate",vr),e}const qf={__proto__:null,[Symbol.iterator](){return Ko(this,Symbol.iterator,qe)},concat(...e){return Tn(this).concat(...e.map(t=>re(t)?Tn(t):t))},entries(){return Ko(this,"entries",e=>(e[1]=qe(e[1]),e))},every(e,t){return Rt(this,"every",e,t,void 0,arguments)},filter(e,t){return Rt(this,"filter",e,t,n=>n.map(qe),arguments)},find(e,t){return Rt(this,"find",e,t,qe,arguments)},findIndex(e,t){return Rt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Rt(this,"findLast",e,t,qe,arguments)},findLastIndex(e,t){return Rt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Rt(this,"forEach",e,t,void 0,arguments)},includes(...e){return zo(this,"includes",e)},indexOf(...e){return zo(this,"indexOf",e)},join(e){return Tn(this).join(e)},lastIndexOf(...e){return zo(this,"lastIndexOf",e)},map(e,t){return Rt(this,"map",e,t,void 0,arguments)},pop(){return Zn(this,"pop")},push(...e){return Zn(this,"push",e)},reduce(e,...t){return Ni(this,"reduce",e,t)},reduceRight(e,...t){return Ni(this,"reduceRight",e,t)},shift(){return Zn(this,"shift")},some(e,t){return Rt(this,"some",e,t,void 0,arguments)},splice(...e){return Zn(this,"splice",e)},toReversed(){return Tn(this).toReversed()},toSorted(e){return Tn(this).toSorted(e)},toSpliced(...e){return Tn(this).toSpliced(...e)},unshift(...e){return Zn(this,"unshift",e)},values(){return Ko(this,"values",qe)}};function Ko(e,t,n){const r=To(e),o=r[t]();return r!==e&&!vt(e)&&(o._next=o.next,o.next=()=>{const s=o._next();return s.value&&(s.value=n(s.value)),s}),o}const Yf=Array.prototype;function Rt(e,t,n,r,o,s){const i=To(e),l=i!==e&&!vt(e),a=i[t];if(a!==Yf[t]){const f=a.apply(e,s);return l?qe(f):f}let u=n;i!==e&&(l?u=function(f,p){return n.call(this,qe(f),p,e)}:n.length>2&&(u=function(f,p){return n.call(this,f,p,e)}));const c=a.call(i,u,r);return l&&o?o(c):c}function Ni(e,t,n,r){const o=To(e);let s=n;return o!==e&&(vt(e)?n.length>3&&(s=function(i,l,a){return n.call(this,i,l,a,e)}):s=function(i,l,a){return n.call(this,i,qe(l),a,e)}),o[t](s,...r)}function zo(e,t,n){const r=de(e);Ge(r,"iterate",vr);const o=r[t](...n);return(o===-1||o===!1)&&Gs(n[0])?(n[0]=de(n[0]),r[t](...n)):o}function Zn(e,t,n=[]){sn(),Us();const r=de(e)[t].apply(e,n);return js(),ln(),r}const Jf=Ms("__proto__,__v_isRef,__isVue"),hu=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(jt));function Xf(e){jt(e)||(e=String(e));const t=de(this);return Ge(t,"has",e),t.hasOwnProperty(e)}class gu{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(o?s?ld:yu:s?vu:mu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=re(t);if(!o){let a;if(i&&(a=qf[n]))return a;if(n==="hasOwnProperty")return Xf}const l=Reflect.get(t,n,Fe(t)?t:r);return(jt(n)?hu.has(n):Jf(n))||(o||Ge(t,"get",n),s)?l:Fe(l)?i&&$s(n)?l:l.value:Oe(l)?o?Vr(l):Sn(l):l}}class _u extends gu{constructor(t=!1){super(!1,t)}set(t,n,r,o){let s=t[n];if(!this._isShallow){const a=An(s);if(!vt(r)&&!An(r)&&(s=de(s),r=de(r)),!re(t)&&Fe(s)&&!Fe(r))return a?!1:(s.value=r,!0)}const i=re(t)&&$s(n)?Number(n)<t.length:ve(t,n),l=Reflect.set(t,n,r,Fe(t)?t:o);return t===de(o)&&(i?en(r,s)&&Ft(t,"set",n,r):Ft(t,"add",n,r)),l}deleteProperty(t,n){const r=ve(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&r&&Ft(t,"delete",n,void 0),o}has(t,n){const r=Reflect.has(t,n);return(!jt(n)||!hu.has(n))&&Ge(t,"has",n),r}ownKeys(t){return Ge(t,"iterate",re(t)?"length":_n),Reflect.ownKeys(t)}}class Qf extends gu{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Zf=new _u,ed=new Qf,td=new _u(!0);const hs=e=>e,jr=e=>Reflect.getPrototypeOf(e);function nd(e,t,n){return function(...r){const o=this.__v_raw,s=de(o),i=In(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...r),c=n?hs:t?gs:qe;return!t&&Ge(s,"iterate",a?ps:_n),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[c(f[0]),c(f[1])]:c(f),done:p}},[Symbol.iterator](){return this}}}}function Wr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function rd(e,t){const n={get(o){const s=this.__v_raw,i=de(s),l=de(o);e||(en(o,l)&&Ge(i,"get",o),Ge(i,"get",l));const{has:a}=jr(i),u=t?hs:e?gs:qe;if(a.call(i,o))return u(s.get(o));if(a.call(i,l))return u(s.get(l));s!==i&&s.get(o)},get size(){const o=this.__v_raw;return!e&&Ge(de(o),"iterate",_n),Reflect.get(o,"size",o)},has(o){const s=this.__v_raw,i=de(s),l=de(o);return e||(en(o,l)&&Ge(i,"has",o),Ge(i,"has",l)),o===l?s.has(o):s.has(o)||s.has(l)},forEach(o,s){const i=this,l=i.__v_raw,a=de(l),u=t?hs:e?gs:qe;return!e&&Ge(a,"iterate",_n),l.forEach((c,f)=>o.call(s,u(c),u(f),i))}};return Be(n,e?{add:Wr("add"),set:Wr("set"),delete:Wr("delete"),clear:Wr("clear")}:{add(o){!t&&!vt(o)&&!An(o)&&(o=de(o));const s=de(this);return jr(s).has.call(s,o)||(s.add(o),Ft(s,"add",o,o)),this},set(o,s){!t&&!vt(s)&&!An(s)&&(s=de(s));const i=de(this),{has:l,get:a}=jr(i);let u=l.call(i,o);u||(o=de(o),u=l.call(i,o));const c=a.call(i,o);return i.set(o,s),u?en(s,c)&&Ft(i,"set",o,s):Ft(i,"add",o,s),this},delete(o){const s=de(this),{has:i,get:l}=jr(s);let a=i.call(s,o);a||(o=de(o),a=i.call(s,o)),l&&l.call(s,o);const u=s.delete(o);return a&&Ft(s,"delete",o,void 0),u},clear(){const o=de(this),s=o.size!==0,i=o.clear();return s&&Ft(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=nd(o,e,t)}),n}function Ks(e,t){const n=rd(e,t);return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ve(n,o)&&o in r?n:r,o,s)}const od={get:Ks(!1,!1)},sd={get:Ks(!1,!0)},id={get:Ks(!0,!1)};const mu=new WeakMap,vu=new WeakMap,yu=new WeakMap,ld=new WeakMap;function ad(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ud(e){return e.__v_skip||!Object.isExtensible(e)?0:ad(If(e))}function Sn(e){return An(e)?e:zs(e,!1,Zf,od,mu)}function bu(e){return zs(e,!1,td,sd,vu)}function Vr(e){return zs(e,!0,ed,id,yu)}function zs(e,t,n,r,o){if(!Oe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=ud(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function mn(e){return An(e)?mn(e.__v_raw):!!(e&&e.__v_isReactive)}function An(e){return!!(e&&e.__v_isReadonly)}function vt(e){return!!(e&&e.__v_isShallow)}function Gs(e){return e?!!e.__v_raw:!1}function de(e){const t=e&&e.__v_raw;return t?de(t):e}function cd(e){return!ve(e,"__v_skip")&&Object.isExtensible(e)&&tu(e,"__v_skip",!0),e}const qe=e=>Oe(e)?Sn(e):e,gs=e=>Oe(e)?Vr(e):e;function Fe(e){return e?e.__v_isRef===!0:!1}function ye(e){return Eu(e,!1)}function dt(e){return Eu(e,!0)}function Eu(e,t){return Fe(e)?e:new fd(e,t)}class fd{constructor(t,n){this.dep=new Co,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:de(t),this._value=n?t:qe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||vt(t)||An(t);t=r?t:de(t),en(t,n)&&(this._rawValue=t,this._value=r?t:qe(t),this.dep.trigger())}}function $t(e){return Fe(e)?e.value:e}function Ve(e){return oe(e)?e():$t(e)}const dd={get:(e,t,n)=>t==="__v_raw"?e:$t(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Fe(o)&&!Fe(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Su(e){return mn(e)?e:new Proxy(e,dd)}class pd{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Co,{get:r,set:o}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(t){this._set(t)}}function hd(e){return new pd(e)}function Au(e){const t=re(e)?new Array(e.length):{};for(const n in e)t[n]=wu(e,n);return t}class gd{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Gf(de(this._object),this._key)}}class _d{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function md(e,t,n){return Fe(e)?e:oe(e)?new _d(e):Oe(e)&&arguments.length>1?wu(e,t,n):ye(e)}function wu(e,t,n){const r=e[t];return Fe(r)?r:new gd(e,t,n)}class vd{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Co(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=mr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Te!==this)return au(this,!0),!0}get value(){const t=this.dep.track();return fu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function yd(e,t,n=!1){let r,o;return oe(e)?r=e:(r=e.get,o=e.set),new vd(r,o,n)}const Kr={},co=new WeakMap;let pn;function bd(e,t=!1,n=pn){if(n){let r=co.get(n);r||co.set(n,r=[]),r.push(e)}}function Ed(e,t,n=Se){const{immediate:r,deep:o,once:s,scheduler:i,augmentJob:l,call:a}=n,u=E=>o?E:vt(E)||o===!1||o===0?Bt(E,1):Bt(E);let c,f,p,d,m=!1,v=!1;if(Fe(e)?(f=()=>e.value,m=vt(e)):mn(e)?(f=()=>u(e),m=!0):re(e)?(v=!0,m=e.some(E=>mn(E)||vt(E)),f=()=>e.map(E=>{if(Fe(E))return E.value;if(mn(E))return u(E);if(oe(E))return a?a(E,2):E()})):oe(e)?t?f=a?()=>a(e,2):e:f=()=>{if(p){sn();try{p()}finally{ln()}}const E=pn;pn=c;try{return a?a(e,3,[d]):e(d)}finally{pn=E}}:f=Ot,t&&o){const E=f,V=o===!0?1/0:o;f=()=>Bt(E(),V)}const b=Hs(),y=()=>{c.stop(),b&&b.active&&Bs(b.effects,c)};if(s&&t){const E=t;t=(...V)=>{E(...V),y()}}let S=v?new Array(e.length).fill(Kr):Kr;const g=E=>{if(!(!(c.flags&1)||!c.dirty&&!E))if(t){const V=c.run();if(o||m||(v?V.some((U,D)=>en(U,S[D])):en(V,S))){p&&p();const U=pn;pn=c;try{const D=[V,S===Kr?void 0:v&&S[0]===Kr?[]:S,d];a?a(t,3,D):t(...D),S=V}finally{pn=U}}}else c.run()};return l&&l(g),c=new iu(f),c.scheduler=i?()=>i(g,!1):g,d=E=>bd(E,!1,c),p=c.onStop=()=>{const E=co.get(c);if(E){if(a)a(E,4);else for(const V of E)V();co.delete(c)}},t?r?g(!0):S=c.run():i?i(g.bind(null,!0),!0):c.run(),y.pause=c.pause.bind(c),y.resume=c.resume.bind(c),y.stop=y,y}function Bt(e,t=1/0,n){if(t<=0||!Oe(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Fe(e))Bt(e.value,t,n);else if(re(e))for(let r=0;r<e.length;r++)Bt(e[r],t,n);else if(Xa(e)||In(e))e.forEach(r=>{Bt(r,t,n)});else if(eu(e)){for(const r in e)Bt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Bt(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Nr(e,t,n,r){try{return r?e(...r):e()}catch(o){Mr(o,t,n)}}function St(e,t,n,r){if(oe(e)){const o=Nr(e,t,n,r);return o&&Qa(o)&&o.catch(s=>{Mr(s,t,n)}),o}if(re(e)){const o=[];for(let s=0;s<e.length;s++)o.push(St(e[s],t,n,r));return o}}function Mr(e,t,n,r=!0){const o=t?t.vnode:null,{errorHandler:s,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||Se;if(t){let l=t.parent;const a=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;l;){const c=l.ec;if(c){for(let f=0;f<c.length;f++)if(c[f](e,a,u)===!1)return}l=l.parent}if(s){sn(),Nr(s,null,10,[e,a,u]),ln();return}}Sd(e,n,o,r,i)}function Sd(e,t,n,r=!0,o=!1){if(o)throw e;console.error(e)}const tt=[];let Tt=-1;const Vn=[];let Yt=null,On=0;const Cu=Promise.resolve();let fo=null;function an(e){const t=fo||Cu;return e?t.then(this?e.bind(this):e):t}function Ad(e){let t=Tt+1,n=tt.length;for(;t<n;){const r=t+n>>>1,o=tt[r],s=yr(o);s<e||s===e&&o.flags&2?t=r+1:n=r}return t}function qs(e){if(!(e.flags&1)){const t=yr(e),n=tt[tt.length-1];!n||!(e.flags&2)&&t>=yr(n)?tt.push(e):tt.splice(Ad(t),0,e),e.flags|=1,Tu()}}function Tu(){fo||(fo=Cu.then(ku))}function wd(e){re(e)?Vn.push(...e):Yt&&e.id===-1?Yt.splice(On+1,0,e):e.flags&1||(Vn.push(e),e.flags|=1),Tu()}function Mi(e,t,n=Tt+1){for(;n<tt.length;n++){const r=tt[n];if(r&&r.flags&2){if(e&&r.id!==e.uid)continue;tt.splice(n,1),n--,r.flags&4&&(r.flags&=-2),r(),r.flags&4||(r.flags&=-2)}}}function po(e){if(Vn.length){const t=[...new Set(Vn)].sort((n,r)=>yr(n)-yr(r));if(Vn.length=0,Yt){Yt.push(...t);return}for(Yt=t,On=0;On<Yt.length;On++){const n=Yt[On];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}Yt=null,On=0}}const yr=e=>e.id==null?e.flags&2?-1:1/0:e.id;function ku(e){try{for(Tt=0;Tt<tt.length;Tt++){const t=tt[Tt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Nr(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Tt<tt.length;Tt++){const t=tt[Tt];t&&(t.flags&=-2)}Tt=-1,tt.length=0,po(),fo=null,(tt.length||Vn.length)&&ku()}}let je=null,Ou=null;function ho(e){const t=je;return je=e,Ou=e&&e.type.__scopeId||null,t}function Re(e,t=je,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Ji(-1);const s=ho(t);let i;try{i=e(...o)}finally{ho(s),r._d&&Ji(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function go(e,t){if(je===null)return e;const n=xo(je),r=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[s,i,l,a=Se]=t[o];s&&(oe(s)&&(s={mounted:s,updated:s}),s.deep&&Bt(i),r.push({dir:s,instance:n,value:i,oldValue:void 0,arg:l,modifiers:a}))}return e}function kt(e,t,n,r){const o=e.dirs,s=t&&t.dirs;for(let i=0;i<o.length;i++){const l=o[i];s&&(l.oldValue=s[i].value);let a=l.dir[r];a&&(sn(),St(a,n,8,[e.el,l,e,t]),ln())}}const Cd=Symbol("_vte"),Pu=e=>e.__isTeleport,Jt=Symbol("_leaveCb"),zr=Symbol("_enterCb");function Td(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return ot(()=>{e.isMounted=!0}),Js(()=>{e.isUnmounting=!0}),e}const gt=[Function,Array],xu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:gt,onEnter:gt,onAfterEnter:gt,onEnterCancelled:gt,onBeforeLeave:gt,onLeave:gt,onAfterLeave:gt,onLeaveCancelled:gt,onBeforeAppear:gt,onAppear:gt,onAfterAppear:gt,onAppearCancelled:gt},Du=e=>{const t=e.subTree;return t.component?Du(t.component):t},kd={name:"BaseTransition",props:xu,setup(e,{slots:t}){const n=Cn(),r=Td();return()=>{const o=t.default&&Lu(t.default(),!0);if(!o||!o.length)return;const s=Ru(o),i=de(e),{mode:l}=i;if(r.isLeaving)return Go(s);const a=Fi(s);if(!a)return Go(s);let u=_s(a,i,r,n,f=>u=f);a.type!==Ye&&br(a,u);let c=n.subTree&&Fi(n.subTree);if(c&&c.type!==Ye&&!hn(a,c)&&Du(n).type!==Ye){let f=_s(c,i,r,n);if(br(c,f),l==="out-in"&&a.type!==Ye)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},Go(s);l==="in-out"&&a.type!==Ye?f.delayLeave=(p,d,m)=>{const v=Iu(r,c);v[String(c.key)]=c,p[Jt]=()=>{d(),p[Jt]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{m(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return s}}};function Ru(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ye){t=n;break}}return t}const Od=kd;function Iu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function _s(e,t,n,r,o){const{appear:s,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:p,onLeave:d,onAfterLeave:m,onLeaveCancelled:v,onBeforeAppear:b,onAppear:y,onAfterAppear:S,onAppearCancelled:g}=t,E=String(e.key),V=Iu(n,e),U=(I,k)=>{I&&St(I,r,9,k)},D=(I,k)=>{const P=k[1];U(I,k),re(I)?I.every(C=>C.length<=1)&&P():I.length<=1&&P()},Q={mode:i,persisted:l,beforeEnter(I){let k=a;if(!n.isMounted)if(s)k=b||a;else return;I[Jt]&&I[Jt](!0);const P=V[E];P&&hn(e,P)&&P.el[Jt]&&P.el[Jt](),U(k,[I])},enter(I){let k=u,P=c,C=f;if(!n.isMounted)if(s)k=y||u,P=S||c,C=g||f;else return;let $=!1;const le=I[zr]=he=>{$||($=!0,he?U(C,[I]):U(P,[I]),Q.delayedLeave&&Q.delayedLeave(),I[zr]=void 0)};k?D(k,[I,le]):le()},leave(I,k){const P=String(e.key);if(I[zr]&&I[zr](!0),n.isUnmounting)return k();U(p,[I]);let C=!1;const $=I[Jt]=le=>{C||(C=!0,k(),le?U(v,[I]):U(m,[I]),I[Jt]=void 0,V[P]===e&&delete V[P])};V[P]=e,d?D(d,[I,$]):$()},clone(I){const k=_s(I,t,n,r,o);return o&&o(k),k}};return Q}function Go(e){if(Fr(e))return e=tn(e),e.children=null,e}function Fi(e){if(!Fr(e))return Pu(e.type)&&e.children?Ru(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&oe(n.default))return n.default()}}function br(e,t){e.shapeFlag&6&&e.component?(e.transition=t,br(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Lu(e,t=!1,n){let r=[],o=0;for(let s=0;s<e.length;s++){let i=e[s];const l=n==null?i.key:String(n)+String(i.key!=null?i.key:s);i.type===Ae?(i.patchFlag&128&&o++,r=r.concat(Lu(i.children,t,l))):(t||i.type!==Ye)&&r.push(l!=null?tn(i,{key:l}):i)}if(o>1)for(let s=0;s<r.length;s++)r[s].patchFlag=-2;return r}/*! #__NO_SIDE_EFFECTS__ */function pe(e,t){return oe(e)?Be({name:e.name},t,{setup:e}):e}function Ys(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Bi(e){const t=Cn(),n=dt(null);if(t){const o=t.refs===Se?t.refs={}:t.refs;Object.defineProperty(o,e,{enumerable:!0,get:()=>n.value,set:s=>n.value=s})}return n}function Er(e,t,n,r,o=!1){if(re(e)){e.forEach((m,v)=>Er(m,t&&(re(t)?t[v]:t),n,r,o));return}if(vn(r)&&!o){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&Er(e,t,n,r.component.subTree);return}const s=r.shapeFlag&4?xo(r.component):r.el,i=o?null:s,{i:l,r:a}=e,u=t&&t.r,c=l.refs===Se?l.refs={}:l.refs,f=l.setupState,p=de(f),d=f===Se?()=>!1:m=>ve(p,m);if(u!=null&&u!==a&&(Ne(u)?(c[u]=null,d(u)&&(f[u]=null)):Fe(u)&&(u.value=null)),oe(a))Nr(a,l,12,[i,c]);else{const m=Ne(a),v=Fe(a);if(m||v){const b=()=>{if(e.f){const y=m?d(a)?f[a]:c[a]:a.value;o?re(y)&&Bs(y,s):re(y)?y.includes(s)||y.push(s):m?(c[a]=[s],d(a)&&(f[a]=c[a])):(a.value=[s],e.k&&(c[e.k]=a.value))}else m?(c[a]=i,d(a)&&(f[a]=i)):v&&(a.value=i,e.k&&(c[e.k]=i))};i?(b.id=-1,ut(b,n)):b()}}}let $i=!1;const kn=()=>{$i||(console.error("Hydration completed but contains mismatches."),$i=!0)},Pd=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",xd=e=>e.namespaceURI.includes("MathML"),Gr=e=>{if(e.nodeType===1){if(Pd(e))return"svg";if(xd(e))return"mathml"}},xn=e=>e.nodeType===8;function Dd(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:l,insert:a,createComment:u}}=e,c=(g,E)=>{if(!E.hasChildNodes()){n(null,g,E),po(),E._vnode=g;return}f(E.firstChild,g,null,null,null),po(),E._vnode=g},f=(g,E,V,U,D,Q=!1)=>{Q=Q||!!E.dynamicChildren;const I=xn(g)&&g.data==="[",k=()=>v(g,E,V,U,D,I),{type:P,ref:C,shapeFlag:$,patchFlag:le}=E;let he=g.nodeType;E.el=g,le===-2&&(Q=!1,E.dynamicChildren=null);let G=null;switch(P){case En:he!==3?E.children===""?(a(E.el=o(""),i(g),g),G=g):G=k():(g.data!==E.children&&(kn(),g.data=E.children),G=s(g));break;case Ye:S(g)?(G=s(g),y(E.el=g.content.firstChild,g,V)):he!==8||I?G=k():G=s(g);break;case dr:if(I&&(g=s(g),he=g.nodeType),he===1||he===3){G=g;const M=!E.children.length;for(let q=0;q<E.staticCount;q++)M&&(E.children+=G.nodeType===1?G.outerHTML:G.data),q===E.staticCount-1&&(E.anchor=G),G=s(G);return I?s(G):G}else k();break;case Ae:I?G=m(g,E,V,U,D,Q):G=k();break;default:if($&1)(he!==1||E.type.toLowerCase()!==g.tagName.toLowerCase())&&!S(g)?G=k():G=p(g,E,V,U,D,Q);else if($&6){E.slotScopeIds=D;const M=i(g);if(I?G=b(g):xn(g)&&g.data==="teleport start"?G=b(g,g.data,"teleport end"):G=s(g),t(E,M,null,V,U,Gr(M),Q),vn(E)&&!E.type.__asyncResolved){let q;I?(q=se(Ae),q.anchor=G?G.previousSibling:M.lastChild):q=g.nodeType===3?nn(""):se("div"),q.el=g,E.component.subTree=q}}else $&64?he!==8?G=k():G=E.type.hydrate(g,E,V,U,D,Q,e,d):$&128&&(G=E.type.hydrate(g,E,V,U,Gr(i(g)),D,Q,e,f))}return C!=null&&Er(C,null,U,E),G},p=(g,E,V,U,D,Q)=>{Q=Q||!!E.dynamicChildren;const{type:I,props:k,patchFlag:P,shapeFlag:C,dirs:$,transition:le}=E,he=I==="input"||I==="option";if(he||P!==-1){$&&kt(E,null,V,"created");let G=!1;if(S(g)){G=Yu(null,le)&&V&&V.vnode.props&&V.vnode.props.appear;const q=g.content.firstChild;G&&le.beforeEnter(q),y(q,g,V),E.el=g=q}if(C&16&&!(k&&(k.innerHTML||k.textContent))){let q=d(g.firstChild,E,g,V,U,D,Q);for(;q;){qr(g,1)||kn();const fe=q;q=q.nextSibling,l(fe)}}else if(C&8){let q=E.children;q[0]===` +`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(q=q.slice(1)),g.textContent!==q&&(qr(g,0)||kn(),g.textContent=E.children)}if(k){if(he||!Q||P&48){const q=g.tagName.includes("-");for(const fe in k)(he&&(fe.endsWith("value")||fe==="indeterminate")||Ir(fe)&&!Ln(fe)||fe[0]==="."||q)&&r(g,fe,null,k[fe],void 0,V)}else if(k.onClick)r(g,"onClick",null,k.onClick,void 0,V);else if(P&4&&mn(k.style))for(const q in k.style)k.style[q]}let M;(M=k&&k.onVnodeBeforeMount)&&_t(M,V,E),$&&kt(E,null,V,"beforeMount"),((M=k&&k.onVnodeMounted)||$||G)&&nc(()=>{M&&_t(M,V,E),G&&le.enter(g),$&&kt(E,null,V,"mounted")},U)}return g.nextSibling},d=(g,E,V,U,D,Q,I)=>{I=I||!!E.dynamicChildren;const k=E.children,P=k.length;for(let C=0;C<P;C++){const $=I?k[C]:k[C]=mt(k[C]),le=$.type===En;g?(le&&!I&&C+1<P&&mt(k[C+1]).type===En&&(a(o(g.data.slice($.children.length)),V,s(g)),g.data=$.children),g=f(g,$,U,D,Q,I)):le&&!$.children?a($.el=o(""),V):(qr(V,1)||kn(),n(null,$,V,null,U,D,Gr(V),Q))}return g},m=(g,E,V,U,D,Q)=>{const{slotScopeIds:I}=E;I&&(D=D?D.concat(I):I);const k=i(g),P=d(s(g),E,k,V,U,D,Q);return P&&xn(P)&&P.data==="]"?s(E.anchor=P):(kn(),a(E.anchor=u("]"),k,P),P)},v=(g,E,V,U,D,Q)=>{if(qr(g.parentElement,1)||kn(),E.el=null,Q){const P=b(g);for(;;){const C=s(g);if(C&&C!==P)l(C);else break}}const I=s(g),k=i(g);return l(g),n(null,E,k,I,V,U,Gr(k),D),V&&(V.vnode.el=E.el,ec(V,E.el)),I},b=(g,E="[",V="]")=>{let U=0;for(;g;)if(g=s(g),g&&xn(g)&&(g.data===E&&U++,g.data===V)){if(U===0)return s(g);U--}return g},y=(g,E,V)=>{const U=E.parentNode;U&&U.replaceChild(g,E);let D=V;for(;D;)D.vnode.el===E&&(D.vnode.el=D.subTree.el=g),D=D.parent},S=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[c,f]}const Hi="data-allow-mismatch",Rd={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function qr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Hi);)e=e.parentElement;const n=e&&e.getAttribute(Hi);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(Rd[t])}}wo().requestIdleCallback;wo().cancelIdleCallback;function Id(e,t){if(xn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(xn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const vn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Ld(e){oe(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,hydrate:s,timeout:i,suspensible:l=!0,onError:a}=e;let u=null,c,f=0;const p=()=>(f++,u=null,d()),d=()=>{let m;return u||(m=u=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),a)return new Promise((b,y)=>{a(v,()=>b(p()),()=>y(v),f+1)});throw v}).then(v=>m!==u&&u?u:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),c=v,v)))};return pe({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(m,v,b){const y=s?()=>{const S=s(b,g=>Id(m,g));S&&(v.bum||(v.bum=[])).push(S)}:b;c?y():d().then(()=>!v.isUnmounted&&y())},get __asyncResolved(){return c},setup(){const m=He;if(Ys(m),c)return()=>qo(c,m);const v=g=>{u=null,Mr(g,m,13,!r)};if(l&&m.suspense||Fn)return d().then(g=>()=>qo(g,m)).catch(g=>(v(g),()=>r?se(r,{error:g}):null));const b=ye(!1),y=ye(),S=ye(!!o);return o&&setTimeout(()=>{S.value=!1},o),i!=null&&setTimeout(()=>{if(!b.value&&!y.value){const g=new Error(`Async component timed out after ${i}ms.`);v(g),y.value=g}},i),d().then(()=>{b.value=!0,m.parent&&Fr(m.parent.vnode)&&m.parent.update()}).catch(g=>{v(g),y.value=g}),()=>{if(b.value&&c)return qo(c,m);if(y.value&&r)return se(r,{error:y.value});if(n&&!S.value)return se(n)}}})}function qo(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=se(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const Fr=e=>e.type.__isKeepAlive;function Vd(e,t){Vu(e,"a",t)}function Nd(e,t){Vu(e,"da",t)}function Vu(e,t,n=He){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(ko(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Fr(o.parent.vnode)&&Md(r,t,n,o),o=o.parent}}function Md(e,t,n,r){const o=ko(t,e,r,!0);Oo(()=>{Bs(r[t],o)},n)}function ko(e,t,n=He,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{sn();const l=Br(n),a=St(t,n,e,i);return l(),ln(),a});return r?o.unshift(s):o.push(s),s}}const Wt=e=>(t,n=He)=>{(!Fn||e==="sp")&&ko(e,(...r)=>t(...r),n)},Fd=Wt("bm"),ot=Wt("m"),Bd=Wt("bu"),$d=Wt("u"),Js=Wt("bum"),Oo=Wt("um"),Hd=Wt("sp"),Ud=Wt("rtg"),jd=Wt("rtc");function Wd(e,t=He){ko("ec",e,t)}const Kd="components";function Xs(e,t){return Gd(Kd,e,!0,t)||e}const zd=Symbol.for("v-ndc");function Gd(e,t,n=!0,r=!1){const o=je||He;if(o){const s=o.type;{const l=Rp(s,!1);if(l&&(l===t||l===st(t)||l===Lr(st(t))))return s}const i=Ui(o[e]||s[e],t)||Ui(o.appContext[e],t);return!i&&r?s:i}}function Ui(e,t){return e&&(e[t]||e[st(t)]||e[Lr(st(t))])}function Ht(e,t,n,r){let o;const s=n,i=re(e);if(i||Ne(e)){const l=i&&mn(e);let a=!1;l&&(a=!vt(e),e=To(e)),o=new Array(e.length);for(let u=0,c=e.length;u<c;u++)o[u]=t(a?qe(e[u]):e[u],u,void 0,s)}else if(typeof e=="number"){o=new Array(e);for(let l=0;l<e;l++)o[l]=t(l+1,l,void 0,s)}else if(Oe(e))if(e[Symbol.iterator])o=Array.from(e,(l,a)=>t(l,a,void 0,s));else{const l=Object.keys(e);o=new Array(l.length);for(let a=0,u=l.length;a<u;a++){const c=l[a];o[a]=t(e[c],c,a,s)}}else o=[];return o}function qd(e,t){for(let n=0;n<t.length;n++){const r=t[n];if(re(r))for(let o=0;o<r.length;o++)e[r[o].name]=r[o].fn;else r&&(e[r.name]=r.key?(...o)=>{const s=r.fn(...o);return s&&(s.key=r.key),s}:r.fn)}return e}function De(e,t,n={},r,o){if(je.ce||je.parent&&vn(je.parent)&&je.parent.ce)return t!=="default"&&(n.name=t),j(),Ie(Ae,null,[se("slot",n,r&&r())],64);let s=e[t];s&&s._c&&(s._d=!1),j();const i=s&&Nu(s(n)),l=n.key||i&&i.key,a=Ie(Ae,{key:(l&&!jt(l)?l:`_${t}`)+(!i&&r?"_fb":"")},i||(r?r():[]),i&&e._===1?64:-2);return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),s&&s._c&&(s._d=!0),a}function Nu(e){return e.some(t=>Ar(t)?!(t.type===Ye||t.type===Ae&&!Nu(t.children)):!0)?e:null}const ms=e=>e?sc(e)?xo(e):ms(e.parent):null,fr=Be(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ms(e.parent),$root:e=>ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Qs(e),$forceUpdate:e=>e.f||(e.f=()=>{qs(e.update)}),$nextTick:e=>e.n||(e.n=an.bind(e.proxy)),$watch:e=>gp.bind(e)}),Yo=(e,t)=>e!==Se&&!e.__isScriptSetup&&ve(e,t),Yd={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let u;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(Yo(r,t))return i[t]=1,r[t];if(o!==Se&&ve(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&ve(u,t))return i[t]=3,s[t];if(n!==Se&&ve(n,t))return i[t]=4,n[t];vs&&(i[t]=0)}}const c=fr[t];let f,p;if(c)return t==="$attrs"&&Ge(e.attrs,"get",""),c(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==Se&&ve(n,t))return i[t]=4,n[t];if(p=a.config.globalProperties,ve(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return Yo(o,t)?(o[t]=n,!0):r!==Se&&ve(r,t)?(r[t]=n,!0):ve(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==Se&&ve(e,i)||Yo(t,i)||(l=s[0])&&ve(l,i)||ve(r,i)||ve(fr,i)||ve(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ve(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ji(e){return re(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let vs=!0;function Jd(e){const t=Qs(e),n=e.proxy,r=e.ctx;vs=!1,t.beforeCreate&&Wi(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:d,updated:m,activated:v,deactivated:b,beforeDestroy:y,beforeUnmount:S,destroyed:g,unmounted:E,render:V,renderTracked:U,renderTriggered:D,errorCaptured:Q,serverPrefetch:I,expose:k,inheritAttrs:P,components:C,directives:$,filters:le}=t;if(u&&Xd(u,r,null),i)for(const M in i){const q=i[M];oe(q)&&(r[M]=q.bind(n))}if(o){const M=o.call(n,n);Oe(M)&&(e.data=Sn(M))}if(vs=!0,s)for(const M in s){const q=s[M],fe=oe(q)?q.bind(n,n):oe(q.get)?q.get.bind(n,n):Ot,Qe=!oe(q)&&oe(q.set)?q.set.bind(n):Ot,$e=N({get:fe,set:Qe});Object.defineProperty(r,M,{enumerable:!0,configurable:!0,get:()=>$e.value,set:we=>$e.value=we})}if(l)for(const M in l)Mu(l[M],r,n,M);if(a){const M=oe(a)?a.call(n):a;Reflect.ownKeys(M).forEach(q=>{bn(q,M[q])})}c&&Wi(c,e,"c");function G(M,q){re(q)?q.forEach(fe=>M(fe.bind(n))):q&&M(q.bind(n))}if(G(Fd,f),G(ot,p),G(Bd,d),G($d,m),G(Vd,v),G(Nd,b),G(Wd,Q),G(jd,U),G(Ud,D),G(Js,S),G(Oo,E),G(Hd,I),re(k))if(k.length){const M=e.exposed||(e.exposed={});k.forEach(q=>{Object.defineProperty(M,q,{get:()=>n[q],set:fe=>n[q]=fe})})}else e.exposed||(e.exposed={});V&&e.render===Ot&&(e.render=V),P!=null&&(e.inheritAttrs=P),C&&(e.components=C),$&&(e.directives=$),I&&Ys(e)}function Xd(e,t,n=Ot){re(e)&&(e=ys(e));for(const r in e){const o=e[r];let s;Oe(o)?"default"in o?s=Je(o.from||r,o.default,!0):s=Je(o.from||r):s=Je(o),Fe(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:i=>s.value=i}):t[r]=s}}function Wi(e,t,n){St(re(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Mu(e,t,n,r){let o=r.includes(".")?Qu(n,r):()=>n[r];if(Ne(e)){const s=t[e];oe(s)&&Ke(o,s)}else if(oe(e))Ke(o,e.bind(n));else if(Oe(e))if(re(e))e.forEach(s=>Mu(s,t,n,r));else{const s=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(s)&&Ke(o,s,e)}}function Qs(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(u=>_o(a,u,i,!0)),_o(a,t,i)),Oe(t)&&s.set(t,a),a}function _o(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&_o(e,s,n,!0),o&&o.forEach(i=>_o(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Qd[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Qd={data:Ki,props:zi,emits:zi,methods:ir,computed:ir,beforeCreate:Ze,created:Ze,beforeMount:Ze,mounted:Ze,beforeUpdate:Ze,updated:Ze,beforeDestroy:Ze,beforeUnmount:Ze,destroyed:Ze,unmounted:Ze,activated:Ze,deactivated:Ze,errorCaptured:Ze,serverPrefetch:Ze,components:ir,directives:ir,watch:ep,provide:Ki,inject:Zd};function Ki(e,t){return t?e?function(){return Be(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function Zd(e,t){return ir(ys(e),ys(t))}function ys(e){if(re(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Ze(e,t){return e?[...new Set([].concat(e,t))]:t}function ir(e,t){return e?Be(Object.create(null),e,t):t}function zi(e,t){return e?re(e)&&re(t)?[...new Set([...e,...t])]:Be(Object.create(null),ji(e),ji(t??{})):t}function ep(e,t){if(!e)return t;if(!t)return e;const n=Be(Object.create(null),e);for(const r in t)n[r]=Ze(e[r],t[r]);return n}function Fu(){return{app:null,config:{isNativeTag:Df,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let tp=0;function np(e,t){return function(r,o=null){oe(r)||(r=Be({},r)),o!=null&&!Oe(o)&&(o=null);const s=Fu(),i=new WeakSet,l=[];let a=!1;const u=s.app={_uid:tp++,_component:r,_props:o,_container:null,_context:s,_instance:null,version:Lp,get config(){return s.config},set config(c){},use(c,...f){return i.has(c)||(c&&oe(c.install)?(i.add(c),c.install(u,...f)):oe(c)&&(i.add(c),c(u,...f))),u},mixin(c){return s.mixins.includes(c)||s.mixins.push(c),u},component(c,f){return f?(s.components[c]=f,u):s.components[c]},directive(c,f){return f?(s.directives[c]=f,u):s.directives[c]},mount(c,f,p){if(!a){const d=u._ceVNode||se(r,o);return d.appContext=s,p===!0?p="svg":p===!1&&(p=void 0),f&&t?t(d,c):e(d,c,p),a=!0,u._container=c,c.__vue_app__=u,xo(d.component)}},onUnmount(c){l.push(c)},unmount(){a&&(St(l,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(c,f){return s.provides[c]=f,u},runWithContext(c){const f=yn;yn=u;try{return c()}finally{yn=f}}};return u}}let yn=null;function bn(e,t){if(He){let n=He.provides;const r=He.parent&&He.parent.provides;r===n&&(n=He.provides=Object.create(r)),n[e]=t}}function Je(e,t,n=!1){const r=He||je;if(r||yn){const o=yn?yn._context.provides:r?r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&oe(t)?t.call(r&&r.proxy):t}}function Bu(){return!!(He||je||yn)}const $u={},Hu=()=>Object.create($u),Uu=e=>Object.getPrototypeOf(e)===$u;function rp(e,t,n,r=!1){const o={},s=Hu();e.propsDefaults=Object.create(null),ju(e,t,o,s);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:bu(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function op(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:i}}=e,l=de(o),[a]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f<c.length;f++){let p=c[f];if(Po(e.emitsOptions,p))continue;const d=t[p];if(a)if(ve(s,p))d!==s[p]&&(s[p]=d,u=!0);else{const m=st(p);o[m]=bs(a,l,m,d,e,!1)}else d!==s[p]&&(s[p]=d,u=!0)}}}else{ju(e,t,o,s)&&(u=!0);let c;for(const f in l)(!t||!ve(t,f)&&((c=on(f))===f||!ve(t,c)))&&(a?n&&(n[f]!==void 0||n[c]!==void 0)&&(o[f]=bs(a,l,f,void 0,e,!0)):delete o[f]);if(s!==l)for(const f in s)(!t||!ve(t,f))&&(delete s[f],u=!0)}u&&Ft(e.attrs,"set","")}function ju(e,t,n,r){const[o,s]=e.propsOptions;let i=!1,l;if(t)for(let a in t){if(Ln(a))continue;const u=t[a];let c;o&&ve(o,c=st(a))?!s||!s.includes(c)?n[c]=u:(l||(l={}))[c]=u:Po(e.emitsOptions,a)||(!(a in r)||u!==r[a])&&(r[a]=u,i=!0)}if(s){const a=de(n),u=l||Se;for(let c=0;c<s.length;c++){const f=s[c];n[f]=bs(o,a,f,u[f],e,!ve(u,f))}}return i}function bs(e,t,n,r,o,s){const i=e[n];if(i!=null){const l=ve(i,"default");if(l&&r===void 0){const a=i.default;if(i.type!==Function&&!i.skipFactory&&oe(a)){const{propsDefaults:u}=o;if(n in u)r=u[n];else{const c=Br(o);r=u[n]=a.call(null,t),c()}}else r=a;o.ce&&o.ce._setProp(n,r)}i[0]&&(s&&!l?r=!1:i[1]&&(r===""||r===on(n))&&(r=!0))}return r}const sp=new WeakMap;function Wu(e,t,n=!1){const r=n?sp:t.propsCache,o=r.get(e);if(o)return o;const s=e.props,i={},l=[];let a=!1;if(!oe(e)){const c=f=>{a=!0;const[p,d]=Wu(f,t,!0);Be(i,p),d&&l.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!s&&!a)return Oe(e)&&r.set(e,Rn),Rn;if(re(s))for(let c=0;c<s.length;c++){const f=st(s[c]);Gi(f)&&(i[f]=Se)}else if(s)for(const c in s){const f=st(c);if(Gi(f)){const p=s[c],d=i[f]=re(p)||oe(p)?{type:p}:Be({},p),m=d.type;let v=!1,b=!0;if(re(m))for(let y=0;y<m.length;++y){const S=m[y],g=oe(S)&&S.name;if(g==="Boolean"){v=!0;break}else g==="String"&&(b=!1)}else v=oe(m)&&m.name==="Boolean";d[0]=v,d[1]=b,(v||ve(d,"default"))&&l.push(f)}}const u=[i,l];return Oe(e)&&r.set(e,u),u}function Gi(e){return e[0]!=="$"&&!Ln(e)}const Ku=e=>e[0]==="_"||e==="$stable",Zs=e=>re(e)?e.map(mt):[mt(e)],ip=(e,t,n)=>{if(t._n)return t;const r=Re((...o)=>Zs(t(...o)),n);return r._c=!1,r},zu=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Ku(o))continue;const s=e[o];if(oe(s))t[o]=ip(o,s,r);else if(s!=null){const i=Zs(s);t[o]=()=>i}}},Gu=(e,t)=>{const n=Zs(t);e.slots.default=()=>n},qu=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},lp=(e,t,n)=>{const r=e.slots=Hu();if(e.vnode.shapeFlag&32){const o=t._;o?(qu(r,t,n),n&&tu(r,"_",o,!0)):zu(t,r)}else t&&Gu(e,t)},ap=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Se;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:qu(o,t,n):(s=!t.$stable,zu(t,o)),i=t}else t&&(Gu(e,t),i={default:1});if(s)for(const l in o)!Ku(l)&&i[l]==null&&delete o[l]},ut=nc;function up(e){return cp(e,Dd)}function cp(e,t){const n=wo();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:p,setScopeId:d=Ot,insertStaticContent:m}=e,v=(h,_,A,x=null,w=null,R=null,W=void 0,H=null,B=!!_.dynamicChildren)=>{if(h===_)return;h&&!hn(h,_)&&(x=T(h),we(h,w,R,!0),h=null),_.patchFlag===-2&&(B=!1,_.dynamicChildren=null);const{type:L,ref:ne,shapeFlag:z}=_;switch(L){case En:b(h,_,A,x);break;case Ye:y(h,_,A,x);break;case dr:h==null&&S(_,A,x,W);break;case Ae:C(h,_,A,x,w,R,W,H,B);break;default:z&1?V(h,_,A,x,w,R,W,H,B):z&6?$(h,_,A,x,w,R,W,H,B):(z&64||z&128)&&L.process(h,_,A,x,w,R,W,H,B,Z)}ne!=null&&w&&Er(ne,h&&h.ref,R,_||h,!_)},b=(h,_,A,x)=>{if(h==null)r(_.el=l(_.children),A,x);else{const w=_.el=h.el;_.children!==h.children&&u(w,_.children)}},y=(h,_,A,x)=>{h==null?r(_.el=a(_.children||""),A,x):_.el=h.el},S=(h,_,A,x)=>{[h.el,h.anchor]=m(h.children,_,A,x,h.el,h.anchor)},g=({el:h,anchor:_},A,x)=>{let w;for(;h&&h!==_;)w=p(h),r(h,A,x),h=w;r(_,A,x)},E=({el:h,anchor:_})=>{let A;for(;h&&h!==_;)A=p(h),o(h),h=A;o(_)},V=(h,_,A,x,w,R,W,H,B)=>{_.type==="svg"?W="svg":_.type==="math"&&(W="mathml"),h==null?U(_,A,x,w,R,W,H,B):I(h,_,w,R,W,H,B)},U=(h,_,A,x,w,R,W,H)=>{let B,L;const{props:ne,shapeFlag:z,transition:ee,dirs:ie}=h;if(B=h.el=i(h.type,R,ne&&ne.is,ne),z&8?c(B,h.children):z&16&&Q(h.children,B,null,x,w,Jo(h,R),W,H),ie&&kt(h,null,x,"created"),D(B,h,h.scopeId,W,x),ne){for(const Ce in ne)Ce!=="value"&&!Ln(Ce)&&s(B,Ce,null,ne[Ce],R,x);"value"in ne&&s(B,"value",null,ne.value,R),(L=ne.onVnodeBeforeMount)&&_t(L,x,h)}ie&&kt(h,null,x,"beforeMount");const ue=Yu(w,ee);ue&&ee.beforeEnter(B),r(B,_,A),((L=ne&&ne.onVnodeMounted)||ue||ie)&&ut(()=>{L&&_t(L,x,h),ue&&ee.enter(B),ie&&kt(h,null,x,"mounted")},w)},D=(h,_,A,x,w)=>{if(A&&d(h,A),x)for(let R=0;R<x.length;R++)d(h,x[R]);if(w){let R=w.subTree;if(_===R||tc(R.type)&&(R.ssContent===_||R.ssFallback===_)){const W=w.vnode;D(h,W,W.scopeId,W.slotScopeIds,w.parent)}}},Q=(h,_,A,x,w,R,W,H,B=0)=>{for(let L=B;L<h.length;L++){const ne=h[L]=H?Xt(h[L]):mt(h[L]);v(null,ne,_,A,x,w,R,W,H)}},I=(h,_,A,x,w,R,W)=>{const H=_.el=h.el;let{patchFlag:B,dynamicChildren:L,dirs:ne}=_;B|=h.patchFlag&16;const z=h.props||Se,ee=_.props||Se;let ie;if(A&&un(A,!1),(ie=ee.onVnodeBeforeUpdate)&&_t(ie,A,_,h),ne&&kt(_,h,A,"beforeUpdate"),A&&un(A,!0),(z.innerHTML&&ee.innerHTML==null||z.textContent&&ee.textContent==null)&&c(H,""),L?k(h.dynamicChildren,L,H,A,x,Jo(_,w),R):W||q(h,_,H,null,A,x,Jo(_,w),R,!1),B>0){if(B&16)P(H,z,ee,A,w);else if(B&2&&z.class!==ee.class&&s(H,"class",null,ee.class,w),B&4&&s(H,"style",z.style,ee.style,w),B&8){const ue=_.dynamicProps;for(let Ce=0;Ce<ue.length;Ce++){const be=ue[Ce],it=z[be],ze=ee[be];(ze!==it||be==="value")&&s(H,be,it,ze,w,A)}}B&1&&h.children!==_.children&&c(H,_.children)}else!W&&L==null&&P(H,z,ee,A,w);((ie=ee.onVnodeUpdated)||ne)&&ut(()=>{ie&&_t(ie,A,_,h),ne&&kt(_,h,A,"updated")},x)},k=(h,_,A,x,w,R,W)=>{for(let H=0;H<_.length;H++){const B=h[H],L=_[H],ne=B.el&&(B.type===Ae||!hn(B,L)||B.shapeFlag&70)?f(B.el):A;v(B,L,ne,null,x,w,R,W,!0)}},P=(h,_,A,x,w)=>{if(_!==A){if(_!==Se)for(const R in _)!Ln(R)&&!(R in A)&&s(h,R,_[R],null,w,x);for(const R in A){if(Ln(R))continue;const W=A[R],H=_[R];W!==H&&R!=="value"&&s(h,R,H,W,w,x)}"value"in A&&s(h,"value",_.value,A.value,w)}},C=(h,_,A,x,w,R,W,H,B)=>{const L=_.el=h?h.el:l(""),ne=_.anchor=h?h.anchor:l("");let{patchFlag:z,dynamicChildren:ee,slotScopeIds:ie}=_;ie&&(H=H?H.concat(ie):ie),h==null?(r(L,A,x),r(ne,A,x),Q(_.children||[],A,ne,w,R,W,H,B)):z>0&&z&64&&ee&&h.dynamicChildren?(k(h.dynamicChildren,ee,A,w,R,W,H),(_.key!=null||w&&_===w.subTree)&&Ju(h,_,!0)):q(h,_,A,ne,w,R,W,H,B)},$=(h,_,A,x,w,R,W,H,B)=>{_.slotScopeIds=H,h==null?_.shapeFlag&512?w.ctx.activate(_,A,x,W,B):le(_,A,x,w,R,W,B):he(h,_,B)},le=(h,_,A,x,w,R,W)=>{const H=h.component=kp(h,x,w);if(Fr(h)&&(H.ctx.renderer=Z),Op(H,!1,W),H.asyncDep){if(w&&w.registerDep(H,G,W),!h.el){const B=H.subTree=se(Ye);y(null,B,_,A)}}else G(H,h,_,A,w,R,W)},he=(h,_,A)=>{const x=_.component=h.component;if(bp(h,_,A))if(x.asyncDep&&!x.asyncResolved){M(x,_,A);return}else x.next=_,x.update();else _.el=h.el,x.vnode=_},G=(h,_,A,x,w,R,W)=>{const H=()=>{if(h.isMounted){let{next:z,bu:ee,u:ie,parent:ue,vnode:Ce}=h;{const lt=Xu(h);if(lt){z&&(z.el=Ce.el,M(h,z,W)),lt.asyncDep.then(()=>{h.isUnmounted||H()});return}}let be=z,it;un(h,!1),z?(z.el=Ce.el,M(h,z,W)):z=Ce,ee&&Ho(ee),(it=z.props&&z.props.onVnodeBeforeUpdate)&&_t(it,ue,z,Ce),un(h,!0);const ze=Xo(h),yt=h.subTree;h.subTree=ze,v(yt,ze,f(yt.el),T(yt),h,w,R),z.el=ze.el,be===null&&ec(h,ze.el),ie&&ut(ie,w),(it=z.props&&z.props.onVnodeUpdated)&&ut(()=>_t(it,ue,z,Ce),w)}else{let z;const{el:ee,props:ie}=_,{bm:ue,m:Ce,parent:be,root:it,type:ze}=h,yt=vn(_);if(un(h,!1),ue&&Ho(ue),!yt&&(z=ie&&ie.onVnodeBeforeMount)&&_t(z,be,_),un(h,!0),ee&&xe){const lt=()=>{h.subTree=Xo(h),xe(ee,h.subTree,h,w,null)};yt&&ze.__asyncHydrate?ze.__asyncHydrate(ee,h,lt):lt()}else{it.ce&&it.ce._injectChildStyle(ze);const lt=h.subTree=Xo(h);v(null,lt,A,x,h,w,R),_.el=lt.el}if(Ce&&ut(Ce,w),!yt&&(z=ie&&ie.onVnodeMounted)){const lt=_;ut(()=>_t(z,be,lt),w)}(_.shapeFlag&256||be&&vn(be.vnode)&&be.vnode.shapeFlag&256)&&h.a&&ut(h.a,w),h.isMounted=!0,_=A=x=null}};h.scope.on();const B=h.effect=new iu(H);h.scope.off();const L=h.update=B.run.bind(B),ne=h.job=B.runIfDirty.bind(B);ne.i=h,ne.id=h.uid,B.scheduler=()=>qs(ne),un(h,!0),L()},M=(h,_,A)=>{_.component=h;const x=h.vnode.props;h.vnode=_,h.next=null,op(h,_.props,x,A),ap(h,_.children,A),sn(),Mi(h),ln()},q=(h,_,A,x,w,R,W,H,B=!1)=>{const L=h&&h.children,ne=h?h.shapeFlag:0,z=_.children,{patchFlag:ee,shapeFlag:ie}=_;if(ee>0){if(ee&128){Qe(L,z,A,x,w,R,W,H,B);return}else if(ee&256){fe(L,z,A,x,w,R,W,H,B);return}}ie&8?(ne&16&&ht(L,w,R),z!==L&&c(A,z)):ne&16?ie&16?Qe(L,z,A,x,w,R,W,H,B):ht(L,w,R,!0):(ne&8&&c(A,""),ie&16&&Q(z,A,x,w,R,W,H,B))},fe=(h,_,A,x,w,R,W,H,B)=>{h=h||Rn,_=_||Rn;const L=h.length,ne=_.length,z=Math.min(L,ne);let ee;for(ee=0;ee<z;ee++){const ie=_[ee]=B?Xt(_[ee]):mt(_[ee]);v(h[ee],ie,A,null,w,R,W,H,B)}L>ne?ht(h,w,R,!0,!1,z):Q(_,A,x,w,R,W,H,B,z)},Qe=(h,_,A,x,w,R,W,H,B)=>{let L=0;const ne=_.length;let z=h.length-1,ee=ne-1;for(;L<=z&&L<=ee;){const ie=h[L],ue=_[L]=B?Xt(_[L]):mt(_[L]);if(hn(ie,ue))v(ie,ue,A,null,w,R,W,H,B);else break;L++}for(;L<=z&&L<=ee;){const ie=h[z],ue=_[ee]=B?Xt(_[ee]):mt(_[ee]);if(hn(ie,ue))v(ie,ue,A,null,w,R,W,H,B);else break;z--,ee--}if(L>z){if(L<=ee){const ie=ee+1,ue=ie<ne?_[ie].el:x;for(;L<=ee;)v(null,_[L]=B?Xt(_[L]):mt(_[L]),A,ue,w,R,W,H,B),L++}}else if(L>ee)for(;L<=z;)we(h[L],w,R,!0),L++;else{const ie=L,ue=L,Ce=new Map;for(L=ue;L<=ee;L++){const at=_[L]=B?Xt(_[L]):mt(_[L]);at.key!=null&&Ce.set(at.key,L)}let be,it=0;const ze=ee-ue+1;let yt=!1,lt=0;const Qn=new Array(ze);for(L=0;L<ze;L++)Qn[L]=0;for(L=ie;L<=z;L++){const at=h[L];if(it>=ze){we(at,w,R,!0);continue}let wt;if(at.key!=null)wt=Ce.get(at.key);else for(be=ue;be<=ee;be++)if(Qn[be-ue]===0&&hn(at,_[be])){wt=be;break}wt===void 0?we(at,w,R,!0):(Qn[wt-ue]=L+1,wt>=lt?lt=wt:yt=!0,v(at,_[wt],A,null,w,R,W,H,B),it++)}const Ri=yt?fp(Qn):Rn;for(be=Ri.length-1,L=ze-1;L>=0;L--){const at=ue+L,wt=_[at],Ii=at+1<ne?_[at+1].el:x;Qn[L]===0?v(null,wt,A,Ii,w,R,W,H,B):yt&&(be<0||L!==Ri[be]?$e(wt,A,Ii,2):be--)}}},$e=(h,_,A,x,w=null)=>{const{el:R,type:W,transition:H,children:B,shapeFlag:L}=h;if(L&6){$e(h.component.subTree,_,A,x);return}if(L&128){h.suspense.move(_,A,x);return}if(L&64){W.move(h,_,A,Z);return}if(W===Ae){r(R,_,A);for(let z=0;z<B.length;z++)$e(B[z],_,A,x);r(h.anchor,_,A);return}if(W===dr){g(h,_,A);return}if(x!==2&&L&1&&H)if(x===0)H.beforeEnter(R),r(R,_,A),ut(()=>H.enter(R),w);else{const{leave:z,delayLeave:ee,afterLeave:ie}=H,ue=()=>r(R,_,A),Ce=()=>{z(R,()=>{ue(),ie&&ie()})};ee?ee(R,ue,Ce):Ce()}else r(R,_,A)},we=(h,_,A,x=!1,w=!1)=>{const{type:R,props:W,ref:H,children:B,dynamicChildren:L,shapeFlag:ne,patchFlag:z,dirs:ee,cacheIndex:ie}=h;if(z===-2&&(w=!1),H!=null&&Er(H,null,A,h,!0),ie!=null&&(_.renderCache[ie]=void 0),ne&256){_.ctx.deactivate(h);return}const ue=ne&1&&ee,Ce=!vn(h);let be;if(Ce&&(be=W&&W.onVnodeBeforeUnmount)&&_t(be,_,h),ne&6)Gt(h.component,A,x);else{if(ne&128){h.suspense.unmount(A,x);return}ue&&kt(h,null,_,"beforeUnmount"),ne&64?h.type.remove(h,_,A,Z,x):L&&!L.hasOnce&&(R!==Ae||z>0&&z&64)?ht(L,_,A,!1,!0):(R===Ae&&z&384||!w&&ne&16)&&ht(B,_,A),x&&pt(h)}(Ce&&(be=W&&W.onVnodeUnmounted)||ue)&&ut(()=>{be&&_t(be,_,h),ue&&kt(h,null,_,"unmounted")},A)},pt=h=>{const{type:_,el:A,anchor:x,transition:w}=h;if(_===Ae){Dt(A,x);return}if(_===dr){E(h);return}const R=()=>{o(A),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(h.shapeFlag&1&&w&&!w.persisted){const{leave:W,delayLeave:H}=w,B=()=>W(A,R);H?H(h.el,R,B):B()}else R()},Dt=(h,_)=>{let A;for(;h!==_;)A=p(h),o(h),h=A;o(_)},Gt=(h,_,A)=>{const{bum:x,scope:w,job:R,subTree:W,um:H,m:B,a:L}=h;qi(B),qi(L),x&&Ho(x),w.stop(),R&&(R.flags|=8,we(W,h,_,A)),H&&ut(H,_),ut(()=>{h.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},ht=(h,_,A,x=!1,w=!1,R=0)=>{for(let W=R;W<h.length;W++)we(h[W],_,A,x,w)},T=h=>{if(h.shapeFlag&6)return T(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const _=p(h.anchor||h.el),A=_&&_[Cd];return A?p(A):_};let Y=!1;const K=(h,_,A)=>{h==null?_._vnode&&we(_._vnode,null,null,!0):v(_._vnode||null,h,_,null,null,null,A),_._vnode=h,Y||(Y=!0,Mi(),po(),Y=!1)},Z={p:v,um:we,m:$e,r:pt,mt:le,mc:Q,pc:q,pbc:k,n:T,o:e};let _e,xe;return t&&([_e,xe]=t(Z)),{render:K,hydrate:_e,createApp:np(K,_e)}}function Jo({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 un({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Yu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ju(e,t,n=!1){const r=e.children,o=t.children;if(re(r)&&re(o))for(let s=0;s<r.length;s++){const i=r[s];let l=o[s];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=o[s]=Xt(o[s]),l.el=i.el),!n&&l.patchFlag!==-2&&Ju(i,l)),l.type===En&&(l.el=i.el)}}function fp(e){const t=e.slice(),n=[0];let r,o,s,i,l;const a=e.length;for(r=0;r<a;r++){const u=e[r];if(u!==0){if(o=n[n.length-1],e[o]<u){t[r]=o,n.push(r);continue}for(s=0,i=n.length-1;s<i;)l=s+i>>1,e[n[l]]<u?s=l+1:i=l;u<e[n[s]]&&(s>0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}function Xu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Xu(t)}function qi(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const dp=Symbol.for("v-scx"),pp=()=>Je(dp);function hp(e,t){return ei(e,null,t)}function Ke(e,t,n){return ei(e,t,n)}function ei(e,t,n=Se){const{immediate:r,deep:o,flush:s,once:i}=n,l=Be({},n),a=t&&r||!t&&s!=="post";let u;if(Fn){if(s==="sync"){const d=pp();u=d.__watcherHandles||(d.__watcherHandles=[])}else if(!a){const d=()=>{};return d.stop=Ot,d.resume=Ot,d.pause=Ot,d}}const c=He;l.call=(d,m,v)=>St(d,c,m,v);let f=!1;s==="post"?l.scheduler=d=>{ut(d,c&&c.suspense)}:s!=="sync"&&(f=!0,l.scheduler=(d,m)=>{m?d():qs(d)}),l.augmentJob=d=>{t&&(d.flags|=4),f&&(d.flags|=2,c&&(d.id=c.uid,d.i=c))};const p=Ed(e,t,l);return Fn&&(u?u.push(p):a&&p()),p}function gp(e,t,n){const r=this.proxy,o=Ne(e)?e.includes(".")?Qu(r,e):()=>r[e]:e.bind(r,r);let s;oe(t)?s=t:(s=t.handler,n=t);const i=Br(this),l=ei(o,s.bind(r),n);return i(),l}function Qu(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o<n.length&&r;o++)r=r[n[o]];return r}}const _p=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${st(t)}Modifiers`]||e[`${on(t)}Modifiers`];function mp(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Se;let o=n;const s=t.startsWith("update:"),i=s&&_p(r,t.slice(7));i&&(i.trim&&(o=n.map(c=>Ne(c)?c.trim():c)),i.number&&(o=n.map(Nf)));let l,a=r[l=$o(t)]||r[l=$o(st(t))];!a&&s&&(a=r[l=$o(on(t))]),a&&St(a,e,6,o);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,St(u,e,6,o)}}function Zu(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!oe(e)){const a=u=>{const c=Zu(u,t,!0);c&&(l=!0,Be(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(Oe(e)&&r.set(e,null),null):(re(s)?s.forEach(a=>i[a]=null):Be(i,s),Oe(e)&&r.set(e,i),i)}function Po(e,t){return!e||!Ir(t)?!1:(t=t.slice(2).replace(/Once$/,""),ve(e,t[0].toLowerCase()+t.slice(1))||ve(e,on(t))||ve(e,t))}function Xo(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[s],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:f,data:p,setupState:d,ctx:m,inheritAttrs:v}=e,b=ho(e);let y,S;try{if(n.shapeFlag&4){const E=o||r,V=E;y=mt(u.call(V,E,c,f,d,p,m)),S=l}else{const E=t;y=mt(E.length>1?E(f,{attrs:l,slots:i,emit:a}):E(f,null)),S=t.props?l:vp(l)}}catch(E){pr.length=0,Mr(E,e,1),y=se(Ye)}let g=y;if(S&&v!==!1){const E=Object.keys(S),{shapeFlag:V}=g;E.length&&V&7&&(s&&E.some(Fs)&&(S=yp(S,s)),g=tn(g,S,!1,!0))}return n.dirs&&(g=tn(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&br(g,n.transition),y=g,ho(b),y}const vp=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ir(n))&&((t||(t={}))[n]=e[n]);return t},yp=(e,t)=>{const n={};for(const r in e)(!Fs(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function bp(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Yi(r,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;f<c.length;f++){const p=c[f];if(i[p]!==r[p]&&!Po(u,p))return!0}}}else return(o||l)&&(!l||!l.$stable)?!0:r===i?!1:r?i?Yi(r,i,u):!0:!!i;return!1}function Yi(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;o<r.length;o++){const s=r[o];if(t[s]!==e[s]&&!Po(n,s))return!0}return!1}function ec({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r===e)(e=t.vnode).el=n,t=t.parent;else break}}const tc=e=>e.__isSuspense;function nc(e,t){t&&t.pendingBranch?re(e)?t.effects.push(...e):t.effects.push(e):wd(e)}const Ae=Symbol.for("v-fgt"),En=Symbol.for("v-txt"),Ye=Symbol.for("v-cmt"),dr=Symbol.for("v-stc"),pr=[];let ft=null;function j(e=!1){pr.push(ft=e?null:[])}function Ep(){pr.pop(),ft=pr[pr.length-1]||null}let Sr=1;function Ji(e,t=!1){Sr+=e,e<0&&ft&&t&&(ft.hasOnce=!0)}function rc(e){return e.dynamicChildren=Sr>0?ft||Rn:null,Ep(),Sr>0&&ft&&ft.push(e),e}function te(e,t,n,r,o,s){return rc(X(e,t,n,r,o,s,!0))}function Ie(e,t,n,r,o){return rc(se(e,t,n,r,o,!0))}function Ar(e){return e?e.__v_isVNode===!0:!1}function hn(e,t){return e.type===t.type&&e.key===t.key}const oc=({key:e})=>e??null,ro=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ne(e)||Fe(e)||oe(e)?{i:je,r:e,k:t,f:!!n}:e:null);function X(e,t=null,n=null,r=0,o=null,s=e===Ae?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&oc(t),ref:t&&ro(t),scopeId:Ou,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:je};return l?(ti(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=Ne(n)?8:16),Sr>0&&!i&&ft&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&ft.push(a),a}const se=Sp;function Sp(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===zd)&&(e=Ye),Ar(e)){const l=tn(e,t,!0);return n&&ti(l,n),Sr>0&&!s&&ft&&(l.shapeFlag&6?ft[ft.indexOf(e)]=l:ft.push(l)),l.patchFlag=-2,l}if(Ip(e)&&(e=e.__vccOpts),t){t=oo(t);let{class:l,style:a}=t;l&&!Ne(l)&&(t.class=rt(l)),Oe(a)&&(Gs(a)&&!re(a)&&(a=Be({},a)),t.style=zn(a))}const i=Ne(e)?1:tc(e)?128:Pu(e)?64:Oe(e)?4:oe(e)?2:0;return X(e,t,n,r,o,i,s,!0)}function oo(e){return e?Gs(e)||Uu(e)?Be({},e):e:null}function tn(e,t,n=!1,r=!1){const{props:o,ref:s,patchFlag:i,children:l,transition:a}=e,u=t?wp(o||{},t):o,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&oc(u),ref:t&&t.ref?n&&s?re(s)?s.concat(ro(t)):[s,ro(t)]:ro(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&tn(e.ssContent),ssFallback:e.ssFallback&&tn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&r&&br(c,a.clone(c)),c}function nn(e=" ",t=0){return se(En,null,e,t)}function Ap(e,t){const n=se(dr,null,e);return n.staticCount=t,n}function Me(e="",t=!1){return t?(j(),Ie(Ye,null,e)):se(Ye,null,e)}function mt(e){return e==null||typeof e=="boolean"?se(Ye):re(e)?se(Ae,null,e.slice()):Ar(e)?Xt(e):se(En,null,String(e))}function Xt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:tn(e)}function ti(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(re(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),ti(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Uu(t)?t._ctx=je:o===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else oe(t)?(t={default:t,_ctx:je},n=32):(t=String(t),r&64?(n=16,t=[nn(t)]):n=8);e.children=t,e.shapeFlag|=n}function wp(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const o in r)if(o==="class")t.class!==r.class&&(t.class=rt([t.class,r.class]));else if(o==="style")t.style=zn([t.style,r.style]);else if(Ir(o)){const s=t[o],i=r[o];i&&s!==i&&!(re(s)&&s.includes(i))&&(t[o]=s?[].concat(s,i):i)}else o!==""&&(t[o]=r[o])}return t}function _t(e,t,n,r=null){St(e,t,7,[n,r])}const Cp=Fu();let Tp=0;function kp(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||Cp,s={uid:Tp++,vnode:e,type:r,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Wf(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Wu(r,o),emitsOptions:Zu(r,o),emit:null,emitted:null,propsDefaults:Se,inheritAttrs:r.inheritAttrs,ctx:Se,data:Se,props:Se,attrs:Se,slots:Se,refs:Se,setupState:Se,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=mp.bind(null,s),e.ce&&e.ce(s),s}let He=null;const Cn=()=>He||je;let mo,Es;{const e=wo(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),s=>{o.length>1?o.forEach(i=>i(s)):o[0](s)}};mo=t("__VUE_INSTANCE_SETTERS__",n=>He=n),Es=t("__VUE_SSR_SETTERS__",n=>Fn=n)}const Br=e=>{const t=He;return mo(e),e.scope.on(),()=>{e.scope.off(),mo(t)}},Xi=()=>{He&&He.scope.off(),mo(null)};function sc(e){return e.vnode.shapeFlag&4}let Fn=!1;function Op(e,t=!1,n=!1){t&&Es(t);const{props:r,children:o}=e.vnode,s=sc(e);rp(e,r,s,t),lp(e,o,n);const i=s?Pp(e,t):void 0;return t&&Es(!1),i}function Pp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Yd);const{setup:r}=n;if(r){sn();const o=e.setupContext=r.length>1?Dp(e):null,s=Br(e),i=Nr(r,e,0,[e.props,o]),l=Qa(i);if(ln(),s(),(l||e.sp)&&!vn(e)&&Ys(e),l){if(i.then(Xi,Xi),t)return i.then(a=>{Qi(e,a,t)}).catch(a=>{Mr(a,e,0)});e.asyncDep=i}else Qi(e,i,t)}else ic(e,t)}function Qi(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Oe(t)&&(e.setupState=Su(t)),ic(e,n)}let Zi;function ic(e,t,n){const r=e.type;if(!e.render){if(!t&&Zi&&!r.render){const o=r.template||Qs(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,u=Be(Be({isCustomElement:s,delimiters:l},i),a);r.render=Zi(o,u)}}e.render=r.render||Ot}{const o=Br(e);sn();try{Jd(e)}finally{ln(),o()}}}const xp={get(e,t){return Ge(e,"get",""),e[t]}};function Dp(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,xp),slots:e.slots,emit:e.emit,expose:t}}function xo(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Su(cd(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in fr)return fr[n](e)},has(t,n){return n in t||n in fr}})):e.proxy}function Rp(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function Ip(e){return oe(e)&&"__vccOpts"in e}const N=(e,t)=>yd(e,t,Fn);function Ee(e,t,n){const r=arguments.length;return r===2?Oe(t)&&!re(t)?Ar(t)?se(e,null,[t]):se(e,t):se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ar(n)&&(n=[n]),se(e,t,n))}const Lp="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ss;const el=typeof window<"u"&&window.trustedTypes;if(el)try{Ss=el.createPolicy("vue",{createHTML:e=>e})}catch{}const lc=Ss?e=>Ss.createHTML(e):e=>e,Vp="http://www.w3.org/2000/svg",Np="http://www.w3.org/1998/Math/MathML",Mt=typeof document<"u"?document:null,tl=Mt&&Mt.createElement("template"),Mp={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?Mt.createElementNS(Vp,e):t==="mathml"?Mt.createElementNS(Np,e):n?Mt.createElement(e,{is:n}):Mt.createElement(e);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Mt.createTextNode(e),createComment:e=>Mt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Mt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{tl.innerHTML=lc(r==="svg"?`<svg>${e}</svg>`:r==="mathml"?`<math>${e}</math>`:e);const l=tl.content;if(r==="svg"||r==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},qt="transition",er="animation",wr=Symbol("_vtc"),ac={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},Fp=Be({},xu,ac),Bp=e=>(e.displayName="Transition",e.props=Fp,e),ni=Bp((e,{slots:t})=>Ee(Od,$p(e),t)),cn=(e,t=[])=>{re(e)?e.forEach(n=>n(...t)):e&&e(...t)},nl=e=>e?re(e)?e.some(t=>t.length>1):e.length>1:!1;function $p(e){const t={};for(const C in e)C in ac||(t[C]=e[C]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=Hp(o),v=m&&m[0],b=m&&m[1],{onBeforeEnter:y,onEnter:S,onEnterCancelled:g,onLeave:E,onLeaveCancelled:V,onBeforeAppear:U=y,onAppear:D=S,onAppearCancelled:Q=g}=t,I=(C,$,le,he)=>{C._enterCancelled=he,fn(C,$?c:l),fn(C,$?u:i),le&&le()},k=(C,$)=>{C._isLeaving=!1,fn(C,f),fn(C,d),fn(C,p),$&&$()},P=C=>($,le)=>{const he=C?D:S,G=()=>I($,C,le);cn(he,[$,G]),rl(()=>{fn($,C?a:s),It($,C?c:l),nl(he)||ol($,r,v,G)})};return Be(t,{onBeforeEnter(C){cn(y,[C]),It(C,s),It(C,i)},onBeforeAppear(C){cn(U,[C]),It(C,a),It(C,u)},onEnter:P(!1),onAppear:P(!0),onLeave(C,$){C._isLeaving=!0;const le=()=>k(C,$);It(C,f),C._enterCancelled?(It(C,p),ll()):(ll(),It(C,p)),rl(()=>{C._isLeaving&&(fn(C,f),It(C,d),nl(E)||ol(C,r,b,le))}),cn(E,[C,le])},onEnterCancelled(C){I(C,!1,void 0,!0),cn(g,[C])},onAppearCancelled(C){I(C,!0,void 0,!0),cn(Q,[C])},onLeaveCancelled(C){k(C),cn(V,[C])}})}function Hp(e){if(e==null)return null;if(Oe(e))return[Qo(e.enter),Qo(e.leave)];{const t=Qo(e);return[t,t]}}function Qo(e){return Mf(e)}function It(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[wr]||(e[wr]=new Set)).add(t)}function fn(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[wr];n&&(n.delete(t),n.size||(e[wr]=void 0))}function rl(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Up=0;function ol(e,t,n,r){const o=e._endId=++Up,s=()=>{o===e._endId&&r()};if(n!=null)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=jp(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,p),s()},p=d=>{d.target===e&&++c>=a&&f()};setTimeout(()=>{c<a&&f()},l+1),e.addEventListener(u,p)}function jp(e,t){const n=window.getComputedStyle(e),r=m=>(n[m]||"").split(", "),o=r(`${qt}Delay`),s=r(`${qt}Duration`),i=sl(o,s),l=r(`${er}Delay`),a=r(`${er}Duration`),u=sl(l,a);let c=null,f=0,p=0;t===qt?i>0&&(c=qt,f=i,p=s.length):t===er?u>0&&(c=er,f=u,p=a.length):(f=Math.max(i,u),c=f>0?i>u?qt:er:null,p=c?c===qt?s.length:a.length:0);const d=c===qt&&/\b(transform|all)(,|$)/.test(r(`${qt}Property`).toString());return{type:c,timeout:f,propCount:p,hasTransform:d}}function sl(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,r)=>il(n)+il(e[r])))}function il(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ll(){return document.body.offsetHeight}function Wp(e,t,n){const r=e[wr];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const vo=Symbol("_vod"),uc=Symbol("_vsh"),yo={beforeMount(e,{value:t},{transition:n}){e[vo]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):tr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),tr(e,!0),r.enter(e)):r.leave(e,()=>{tr(e,!1)}):tr(e,t))},beforeUnmount(e,{value:t}){tr(e,t)}};function tr(e,t){e.style.display=t?e[vo]:"none",e[uc]=!t}const Kp=Symbol(""),zp=/(^|;)\s*display\s*:/;function Gp(e,t,n){const r=e.style,o=Ne(n);let s=!1;if(n&&!o){if(t)if(Ne(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&so(r,l,"")}else for(const i in t)n[i]==null&&so(r,i,"");for(const i in n)i==="display"&&(s=!0),so(r,i,n[i])}else if(o){if(t!==n){const i=r[Kp];i&&(n+=";"+i),r.cssText=n,s=zp.test(n)}}else t&&e.removeAttribute("style");vo in e&&(e[vo]=s?r.display:"",e[uc]&&(r.display="none"))}const al=/\s*!important$/;function so(e,t,n){if(re(n))n.forEach(r=>so(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=qp(e,t);al.test(n)?e.setProperty(on(r),n.replace(al,""),"important"):e[r]=n}}const ul=["Webkit","Moz","ms"],Zo={};function qp(e,t){const n=Zo[t];if(n)return n;let r=st(t);if(r!=="filter"&&r in e)return Zo[t]=r;r=Lr(r);for(let o=0;o<ul.length;o++){const s=ul[o]+r;if(s in e)return Zo[t]=s}return t}const cl="http://www.w3.org/1999/xlink";function fl(e,t,n,r,o,s=jf(t)){r&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(cl,t.slice(6,t.length)):e.setAttributeNS(cl,t,n):n==null||s&&!nu(n)?e.removeAttribute(t):e.setAttribute(t,s?"":jt(n)?String(n):n)}function dl(e,t,n,r,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?lc(n):n);return}const s=e.tagName;if(t==="value"&&s!=="PROGRESS"&&!s.includes("-")){const l=s==="OPTION"?e.getAttribute("value")||"":e.value,a=n==null?e.type==="checkbox"?"on":"":String(n);(l!==a||!("_value"in e))&&(e.value=a),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const l=typeof e[t];l==="boolean"?n=nu(n):n==null&&l==="string"?(n="",i=!0):l==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(o||t)}function Yp(e,t,n,r){e.addEventListener(t,n,r)}function Jp(e,t,n,r){e.removeEventListener(t,n,r)}const pl=Symbol("_vei");function Xp(e,t,n,r,o=null){const s=e[pl]||(e[pl]={}),i=s[t];if(r&&i)i.value=r;else{const[l,a]=Qp(t);if(r){const u=s[t]=th(r,o);Yp(e,l,u,a)}else i&&(Jp(e,l,i,a),s[t]=void 0)}}const hl=/(?:Once|Passive|Capture)$/;function Qp(e){let t;if(hl.test(e)){t={};let r;for(;r=e.match(hl);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):on(e.slice(2)),t]}let es=0;const Zp=Promise.resolve(),eh=()=>es||(Zp.then(()=>es=0),es=Date.now());function th(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;St(nh(r,n.value),t,5,[r])};return n.value=e,n.attached=eh(),n}function nh(e,t){if(re(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const gl=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,rh=(e,t,n,r,o,s)=>{const i=o==="svg";t==="class"?Wp(e,r,i):t==="style"?Gp(e,n,r):Ir(t)?Fs(t)||Xp(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):oh(e,t,r,i))?(dl(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fl(e,t,r,i,s,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Ne(r))?dl(e,st(t),r,s,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),fl(e,t,r,i))};function oh(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&gl(t)&&oe(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 o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return gl(t)&&Ne(n)?!1:t in e}const sh={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},ih=(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=o=>{if(!("key"in o))return;const s=on(o.key);if(t.some(i=>i===s||sh[i]===s))return e(o)})},lh=Be({patchProp:rh},Mp);let ts,_l=!1;function ah(){return ts=_l?ts:up(lh),_l=!0,ts}const uh=(...e)=>{const t=ah().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=fh(r);if(o)return n(o,!0,ch(o))},t};function ch(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function fh(e){return Ne(e)?document.querySelector(e):e}var $r=e=>/^[a-z][a-z0-9+.-]*:/.test(e)||e.startsWith("//"),dh=/.md((\?|#).*)?$/,ph=(e,t="/")=>$r(e)||e.startsWith("/")&&!e.startsWith(t)&&!dh.test(e),Do=e=>/^(https?:)?\/\//.test(e),ml=e=>{if(!e||e.endsWith("/"))return e;let t=e.replace(/(^|\/)README.md$/i,"$1index.html");return t.endsWith(".md")?t=`${t.substring(0,t.length-3)}.html`:t.endsWith(".html")||(t=`${t}.html`),t.endsWith("/index.html")&&(t=t.substring(0,t.length-10)),t},hh="http://.",gh=(e,t)=>{if(!e.startsWith("/")&&t){const n=t.slice(0,t.lastIndexOf("/"));return ml(new URL(`${n}/${e}`,hh).pathname)}return ml(e)},_h=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},mh=/(#|\?)/,cc=e=>{const[t,...n]=e.split(mh);return{pathname:t,hashAndQueries:n.join("")}},vh=["link","meta","script","style","noscript","template"],yh=["title","base"],bh=([e,t,n])=>yh.includes(e)?e:vh.includes(e)?e==="meta"&&t.name?`${e}.${t.name}`:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map(([r,o])=>typeof o=="boolean"?o?[r,""]:null:[r,o]).filter(r=>r!=null).sort(([r],[o])=>r.localeCompare(o)),n]):null,Eh=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=bh(r);o&&!t.has(o)&&(t.add(o),n.push(r))}),n},Sh=e=>e.endsWith("/")||e.endsWith(".html")?e:`${e}/`,fc=e=>e.endsWith("/")?e.slice(0,-1):e,dc=e=>e.startsWith("/")?e.slice(1):e,ri=e=>Object.prototype.toString.call(e)==="[object Object]",Et=e=>typeof e=="string";const Ah="modulepreload",wh=function(e){return"/"+e},vl={},nr=function(t,n,r){let o=Promise.resolve();return n&&n.length>0&&(document.getElementsByTagName("link"),o=Promise.all(n.map(s=>{if(s=wh(s),s in vl)return;vl[s]=!0;const i=s.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${l}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":Ah,i||(a.as="script",a.crossOrigin=""),a.href=s,document.head.appendChild(a),i)return new Promise((u,c)=>{a.addEventListener("load",u),a.addEventListener("error",()=>c(new Error(`Unable to preload CSS for ${s}`)))})}))),o.then(()=>t()).catch(s=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=s,window.dispatchEvent(i),!i.defaultPrevented)throw s})},Ch=JSON.parse("{}"),Th=Object.fromEntries([["/",{loader:()=>nr(()=>import("./index.html-DasZnaAo.js"),__vite__mapDeps([])),meta:{title:"Резюме"}}],["/works.html",{loader:()=>nr(()=>import("./works.html-DplNc40I.js"),__vite__mapDeps([])),meta:{title:"Работы"}}],["/eng/",{loader:()=>nr(()=>import("./index.html-7-wjojn8.js"),__vite__mapDeps([])),meta:{title:"Resume"}}],["/eng/works.html",{loader:()=>nr(()=>import("./works.html-D4EgERwy.js"),__vite__mapDeps([])),meta:{title:"Works"}}],["/404.html",{loader:()=>nr(()=>import("./404.html-Xq3T-2PH.js"),__vite__mapDeps([])),meta:{title:""}}]]);/*! + * vue-router v4.5.0 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const Pn=typeof document<"u";function pc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function kh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&pc(e.default)}const me=Object.assign;function ns(e,t){const n={};for(const r in t){const o=t[r];n[r]=At(o)?o.map(e):e(o)}return n}const hr=()=>{},At=Array.isArray,hc=/#/g,Oh=/&/g,Ph=/\//g,xh=/=/g,Dh=/\?/g,gc=/\+/g,Rh=/%5B/g,Ih=/%5D/g,_c=/%5E/g,Lh=/%60/g,mc=/%7B/g,Vh=/%7C/g,vc=/%7D/g,Nh=/%20/g;function oi(e){return encodeURI(""+e).replace(Vh,"|").replace(Rh,"[").replace(Ih,"]")}function Mh(e){return oi(e).replace(mc,"{").replace(vc,"}").replace(_c,"^")}function As(e){return oi(e).replace(gc,"%2B").replace(Nh,"+").replace(hc,"%23").replace(Oh,"%26").replace(Lh,"`").replace(mc,"{").replace(vc,"}").replace(_c,"^")}function Fh(e){return As(e).replace(xh,"%3D")}function Bh(e){return oi(e).replace(hc,"%23").replace(Dh,"%3F")}function $h(e){return e==null?"":Bh(e).replace(Ph,"%2F")}function Cr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Hh=/\/$/,Uh=e=>e.replace(Hh,"");function rs(e,t,n="/"){let r,o={},s="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return l<a&&l>=0&&(a=-1),a>-1&&(r=t.slice(0,a),s=t.slice(a+1,l>-1?l:t.length),o=e(s)),l>-1&&(r=r||t.slice(0,l),i=t.slice(l,t.length)),r=zh(r??t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:Cr(i)}}function jh(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function yl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Wh(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&Bn(t.matched[r],n.matched[o])&&yc(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Bn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function yc(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Kh(e[n],t[n]))return!1;return!0}function Kh(e,t){return At(e)?bl(e,t):At(t)?bl(t,e):e===t}function bl(e,t){return At(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function zh(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,i,l;for(i=0;i<r.length;i++)if(l=r[i],l!==".")if(l==="..")s>1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(i).join("/")}const Nt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Tr;(function(e){e.pop="pop",e.push="push"})(Tr||(Tr={}));var gr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(gr||(gr={}));function Gh(e){if(!e)if(Pn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Uh(e)}const qh=/^[^#]+#/;function Yh(e,t){return e.replace(qh,"#")+t}function Jh(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Ro=()=>({left:window.scrollX,top:window.scrollY});function Xh(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Jh(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function El(e,t){return(history.state?history.state.position-t:-1)+e}const ws=new Map;function Qh(e,t){ws.set(e,t)}function Zh(e){const t=ws.get(e);return ws.delete(e),t}let eg=()=>location.protocol+"//"+location.host;function bc(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let l=o.includes(e.slice(s))?e.slice(s).length:1,a=o.slice(l);return a[0]!=="/"&&(a="/"+a),yl(a,"")}return yl(n,e)+r+o}function tg(e,t,n,r){let o=[],s=[],i=null;const l=({state:p})=>{const d=bc(e,location),m=n.value,v=t.value;let b=0;if(p){if(n.value=d,t.value=p,i&&i===m){i=null;return}b=v?p.position-v.position:0}else r(d);o.forEach(y=>{y(n.value,m,{delta:b,type:Tr.pop,direction:b?b>0?gr.forward:gr.back:gr.unknown})})};function a(){i=n.value}function u(p){o.push(p);const d=()=>{const m=o.indexOf(p);m>-1&&o.splice(m,1)};return s.push(d),d}function c(){const{history:p}=window;p.state&&p.replaceState(me({},p.state,{scroll:Ro()}),"")}function f(){for(const p of s)p();s=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",c,{passive:!0}),{pauseListeners:a,listen:u,destroy:f}}function Sl(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Ro():null}}function ng(e){const{history:t,location:n}=window,r={value:bc(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(a,u,c){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:eg()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),o.value=u}catch(d){console.error(d),n[c?"replace":"assign"](p)}}function i(a,u){const c=me({},t.state,Sl(o.value.back,a,o.value.forward,!0),u,{position:o.value.position});s(a,c,!0),r.value=a}function l(a,u){const c=me({},o.value,t.state,{forward:a,scroll:Ro()});s(c.current,c,!0);const f=me({},Sl(r.value,a,null),{position:c.position+1},u);s(a,f,!1),r.value=a}return{location:r,state:o,push:l,replace:i}}function rg(e){e=Gh(e);const t=ng(e),n=tg(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=me({location:"",base:e,go:r,createHref:Yh.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function og(e){return typeof e=="string"||e&&typeof e=="object"}function Ec(e){return typeof e=="string"||typeof e=="symbol"}const Sc=Symbol("");var Al;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Al||(Al={}));function $n(e,t){return me(new Error,{type:e,[Sc]:!0},t)}function Lt(e,t){return e instanceof Error&&Sc in e&&(t==null||!!(e.type&t))}const wl="[^/]+?",sg={sensitive:!1,strict:!1,start:!0,end:!0},ig=/[.+*?^${}()[\]/\\]/g;function lg(e,t){const n=me({},sg,t),r=[];let o=n.start?"^":"";const s=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let f=0;f<u.length;f++){const p=u[f];let d=40+(n.sensitive?.25:0);if(p.type===0)f||(o+="/"),o+=p.value.replace(ig,"\\$&"),d+=40;else if(p.type===1){const{value:m,repeatable:v,optional:b,regexp:y}=p;s.push({name:m,repeatable:v,optional:b});const S=y||wl;if(S!==wl){d+=10;try{new RegExp(`(${S})`)}catch(E){throw new Error(`Invalid custom RegExp for param "${m}" (${S}): `+E.message)}}let g=v?`((?:${S})(?:/(?:${S}))*)`:`(${S})`;f||(g=b&&u.length<2?`(?:/${g})`:"/"+g),b&&(g+="?"),o+=g,d+=20,b&&(d+=-8),v&&(d+=-20),S===".*"&&(d+=-50)}c.push(d)}r.push(c)}if(n.strict&&n.end){const u=r.length-1;r[u][r[u].length-1]+=.7000000000000001}n.strict||(o+="/?"),n.end?o+="$":n.strict&&!o.endsWith("/")&&(o+="(?:/|$)");const i=new RegExp(o,n.sensitive?"":"i");function l(u){const c=u.match(i),f={};if(!c)return null;for(let p=1;p<c.length;p++){const d=c[p]||"",m=s[p-1];f[m.name]=d&&m.repeatable?d.split("/"):d}return f}function a(u){let c="",f=!1;for(const p of e){(!f||!c.endsWith("/"))&&(c+="/"),f=!1;for(const d of p)if(d.type===0)c+=d.value;else if(d.type===1){const{value:m,repeatable:v,optional:b}=d,y=m in u?u[m]:"";if(At(y)&&!v)throw new Error(`Provided param "${m}" is an array but it is not repeatable (* or + modifiers)`);const S=At(y)?y.join("/"):y;if(!S)if(b)p.length<2&&(c.endsWith("/")?c=c.slice(0,-1):f=!0);else throw new Error(`Missing required param "${m}"`);c+=S}}return c||"/"}return{re:i,score:r,keys:s,parse:l,stringify:a}}function ag(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function Ac(e,t){let n=0;const r=e.score,o=t.score;for(;n<r.length&&n<o.length;){const s=ag(r[n],o[n]);if(s)return s;n++}if(Math.abs(o.length-r.length)===1){if(Cl(r))return 1;if(Cl(o))return-1}return o.length-r.length}function Cl(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const ug={type:0,value:""},cg=/[a-zA-Z0-9_]/;function fg(e){if(!e)return[[]];if(e==="/")return[[ug]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${n})/"${u}": ${d}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let l=0,a,u="",c="";function f(){u&&(n===0?s.push({type:0,value:u}):n===1||n===2||n===3?(s.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;l<e.length;){if(a=e[l++],a==="\\"&&n!==2){r=n,n=4;continue}switch(n){case 0:a==="/"?(u&&f(),i()):a===":"?(f(),n=1):p();break;case 4:p(),n=r;break;case 1:a==="("?n=2:cg.test(a)?p():(f(),n=0,a!=="*"&&a!=="?"&&a!=="+"&&l--);break;case 2:a===")"?c[c.length-1]=="\\"?c=c.slice(0,-1)+a:n=3:c+=a;break;case 3:f(),n=0,a!=="*"&&a!=="?"&&a!=="+"&&l--,c="";break;default:t("Unknown state");break}}return n===2&&t(`Unfinished custom RegExp for param "${u}"`),f(),i(),o}function dg(e,t,n){const r=lg(fg(e.path),n),o=me(r,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function pg(e,t){const n=[],r=new Map;t=Pl({strict:!1,end:!0,sensitive:!1},t);function o(f){return r.get(f)}function s(f,p,d){const m=!d,v=kl(f);v.aliasOf=d&&d.record;const b=Pl(t,f),y=[v];if("alias"in f){const E=typeof f.alias=="string"?[f.alias]:f.alias;for(const V of E)y.push(kl(me({},v,{components:d?d.record.components:v.components,path:V,aliasOf:d?d.record:v})))}let S,g;for(const E of y){const{path:V}=E;if(p&&V[0]!=="/"){const U=p.record.path,D=U[U.length-1]==="/"?"":"/";E.path=p.record.path+(V&&D+V)}if(S=dg(E,p,b),d?d.alias.push(S):(g=g||S,g!==S&&g.alias.push(S),m&&f.name&&!Ol(S)&&i(f.name)),wc(S)&&a(S),v.children){const U=v.children;for(let D=0;D<U.length;D++)s(U[D],S,d&&d.children[D])}d=d||S}return g?()=>{i(g)}:hr}function i(f){if(Ec(f)){const p=r.get(f);p&&(r.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const p=_g(f,n);n.splice(p,0,f),f.record.name&&!Ol(f)&&r.set(f.record.name,f)}function u(f,p){let d,m={},v,b;if("name"in f&&f.name){if(d=r.get(f.name),!d)throw $n(1,{location:f});b=d.record.name,m=me(Tl(p.params,d.keys.filter(g=>!g.optional).concat(d.parent?d.parent.keys.filter(g=>g.optional):[]).map(g=>g.name)),f.params&&Tl(f.params,d.keys.map(g=>g.name))),v=d.stringify(m)}else if(f.path!=null)v=f.path,d=n.find(g=>g.re.test(v)),d&&(m=d.parse(v),b=d.record.name);else{if(d=p.name?r.get(p.name):n.find(g=>g.re.test(p.path)),!d)throw $n(1,{location:f,currentLocation:p});b=d.record.name,m=me({},p.params,f.params),v=d.stringify(m)}const y=[];let S=d;for(;S;)y.unshift(S.record),S=S.parent;return{name:b,path:v,params:m,matched:y,meta:gg(y)}}e.forEach(f=>s(f));function c(){n.length=0,r.clear()}return{addRoute:s,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:l,getRecordMatcher:o}}function Tl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function kl(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:hg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function hg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ol(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function gg(e){return e.reduce((t,n)=>me(t,n.meta),{})}function Pl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function _g(e,t){let n=0,r=t.length;for(;n!==r;){const s=n+r>>1;Ac(e,t[s])<0?r=s:n=s+1}const o=mg(e);return o&&(r=t.lastIndexOf(o,r-1)),r}function mg(e){let t=e;for(;t=t.parent;)if(wc(t)&&Ac(e,t)===0)return t}function wc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function vg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;o<r.length;++o){const s=r[o].replace(gc," "),i=s.indexOf("="),l=Cr(i<0?s:s.slice(0,i)),a=i<0?null:Cr(s.slice(i+1));if(l in t){let u=t[l];At(u)||(u=t[l]=[u]),u.push(a)}else t[l]=a}return t}function xl(e){let t="";for(let n in e){const r=e[n];if(n=Fh(n),r==null){r!==void 0&&(t+=(t.length?"&":"")+n);continue}(At(r)?r.map(s=>s&&As(s)):[r&&As(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function yg(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=At(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const bg=Symbol(""),Dl=Symbol(""),Io=Symbol(""),si=Symbol(""),Cs=Symbol("");function rr(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Qt(e,t,n,r,o,s=i=>i()){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((l,a)=>{const u=p=>{p===!1?a($n(4,{from:n,to:t})):p instanceof Error?a(p):og(p)?a($n(2,{from:t,to:p})):(i&&r.enterCallbacks[o]===i&&typeof p=="function"&&i.push(p),l())},c=s(()=>e.call(r&&r.instances[o],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(p=>a(p))})}function os(e,t,n,r,o=s=>s()){const s=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(pc(a)){const c=(a.__vccOpts||a)[t];c&&s.push(Qt(c,n,r,i,l,o))}else{let u=a();s.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=kh(c)?c.default:c;i.mods[l]=c,i.components[l]=f;const d=(f.__vccOpts||f)[t];return d&&Qt(d,n,r,i,l,o)()}))}}return s}function Rl(e){const t=Je(Io),n=Je(si),r=N(()=>{const a=$t(e.to);return t.resolve(a)}),o=N(()=>{const{matched:a}=r.value,{length:u}=a,c=a[u-1],f=n.matched;if(!c||!f.length)return-1;const p=f.findIndex(Bn.bind(null,c));if(p>-1)return p;const d=Il(a[u-2]);return u>1&&Il(c)===d&&f[f.length-1].path!==d?f.findIndex(Bn.bind(null,a[u-2])):p}),s=N(()=>o.value>-1&&Cg(n.params,r.value.params)),i=N(()=>o.value>-1&&o.value===n.matched.length-1&&yc(n.params,r.value.params));function l(a={}){if(wg(a)){const u=t[$t(e.replace)?"replace":"push"]($t(e.to)).catch(hr);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:r,href:N(()=>r.value.href),isActive:s,isExactActive:i,navigate:l}}function Eg(e){return e.length===1?e[0]:e}const Sg=pe({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Rl,setup(e,{slots:t}){const n=Sn(Rl(e)),{options:r}=Je(Io),o=N(()=>({[Ll(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ll(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&Eg(t.default(n));return e.custom?s:Ee("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),Ag=Sg;function wg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Cg(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!At(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Il(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ll=(e,t,n)=>e??t??n,Tg=pe({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Je(Cs),o=N(()=>e.route||r.value),s=Je(Dl,0),i=N(()=>{let u=$t(s);const{matched:c}=o.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),l=N(()=>o.value.matched[i.value]);bn(Dl,N(()=>i.value+1)),bn(bg,l),bn(Cs,o);const a=ye();return Ke(()=>[a.value,l.value,e.name],([u,c,f],[p,d,m])=>{c&&(c.instances[f]=u,d&&d!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=d.leaveGuards),c.updateGuards.size||(c.updateGuards=d.updateGuards))),u&&c&&(!d||!Bn(c,d)||!p)&&(c.enterCallbacks[f]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=o.value,c=e.name,f=l.value,p=f&&f.components[c];if(!p)return Vl(n.default,{Component:p,route:u});const d=f.props[c],m=d?d===!0?u.params:typeof d=="function"?d(u):d:null,b=Ee(p,me({},m,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[c]=null)},ref:a}));return Vl(n.default,{Component:b,route:u})||b}}});function Vl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const kg=Tg;function Og(e){const t=pg(e.routes,e),n=e.parseQuery||vg,r=e.stringifyQuery||xl,o=e.history,s=rr(),i=rr(),l=rr(),a=dt(Nt);let u=Nt;Pn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=ns.bind(null,T=>""+T),f=ns.bind(null,$h),p=ns.bind(null,Cr);function d(T,Y){let K,Z;return Ec(T)?(K=t.getRecordMatcher(T),Z=Y):Z=T,t.addRoute(Z,K)}function m(T){const Y=t.getRecordMatcher(T);Y&&t.removeRoute(Y)}function v(){return t.getRoutes().map(T=>T.record)}function b(T){return!!t.getRecordMatcher(T)}function y(T,Y){if(Y=me({},Y||a.value),typeof T=="string"){const _=rs(n,T,Y.path),A=t.resolve({path:_.path},Y),x=o.createHref(_.fullPath);return me(_,A,{params:p(A.params),hash:Cr(_.hash),redirectedFrom:void 0,href:x})}let K;if(T.path!=null)K=me({},T,{path:rs(n,T.path,Y.path).path});else{const _=me({},T.params);for(const A in _)_[A]==null&&delete _[A];K=me({},T,{params:f(_)}),Y.params=f(Y.params)}const Z=t.resolve(K,Y),_e=T.hash||"";Z.params=c(p(Z.params));const xe=jh(r,me({},T,{hash:Mh(_e),path:Z.path})),h=o.createHref(xe);return me({fullPath:xe,hash:_e,query:r===xl?yg(T.query):T.query||{}},Z,{redirectedFrom:void 0,href:h})}function S(T){return typeof T=="string"?rs(n,T,a.value.path):me({},T)}function g(T,Y){if(u!==T)return $n(8,{from:Y,to:T})}function E(T){return D(T)}function V(T){return E(me(S(T),{replace:!0}))}function U(T){const Y=T.matched[T.matched.length-1];if(Y&&Y.redirect){const{redirect:K}=Y;let Z=typeof K=="function"?K(T):K;return typeof Z=="string"&&(Z=Z.includes("?")||Z.includes("#")?Z=S(Z):{path:Z},Z.params={}),me({query:T.query,hash:T.hash,params:Z.path!=null?{}:T.params},Z)}}function D(T,Y){const K=u=y(T),Z=a.value,_e=T.state,xe=T.force,h=T.replace===!0,_=U(K);if(_)return D(me(S(_),{state:typeof _=="object"?me({},_e,_.state):_e,force:xe,replace:h}),Y||K);const A=K;A.redirectedFrom=Y;let x;return!xe&&Wh(r,Z,K)&&(x=$n(16,{to:A,from:Z}),$e(Z,Z,!0,!1)),(x?Promise.resolve(x):k(A,Z)).catch(w=>Lt(w)?Lt(w,2)?w:Qe(w):q(w,A,Z)).then(w=>{if(w){if(Lt(w,2))return D(me({replace:h},S(w.to),{state:typeof w.to=="object"?me({},_e,w.to.state):_e,force:xe}),Y||A)}else w=C(A,Z,!0,h,_e);return P(A,Z,w),w})}function Q(T,Y){const K=g(T,Y);return K?Promise.reject(K):Promise.resolve()}function I(T){const Y=Dt.values().next().value;return Y&&typeof Y.runWithContext=="function"?Y.runWithContext(T):T()}function k(T,Y){let K;const[Z,_e,xe]=Pg(T,Y);K=os(Z.reverse(),"beforeRouteLeave",T,Y);for(const _ of Z)_.leaveGuards.forEach(A=>{K.push(Qt(A,T,Y))});const h=Q.bind(null,T,Y);return K.push(h),ht(K).then(()=>{K=[];for(const _ of s.list())K.push(Qt(_,T,Y));return K.push(h),ht(K)}).then(()=>{K=os(_e,"beforeRouteUpdate",T,Y);for(const _ of _e)_.updateGuards.forEach(A=>{K.push(Qt(A,T,Y))});return K.push(h),ht(K)}).then(()=>{K=[];for(const _ of xe)if(_.beforeEnter)if(At(_.beforeEnter))for(const A of _.beforeEnter)K.push(Qt(A,T,Y));else K.push(Qt(_.beforeEnter,T,Y));return K.push(h),ht(K)}).then(()=>(T.matched.forEach(_=>_.enterCallbacks={}),K=os(xe,"beforeRouteEnter",T,Y,I),K.push(h),ht(K))).then(()=>{K=[];for(const _ of i.list())K.push(Qt(_,T,Y));return K.push(h),ht(K)}).catch(_=>Lt(_,8)?_:Promise.reject(_))}function P(T,Y,K){l.list().forEach(Z=>I(()=>Z(T,Y,K)))}function C(T,Y,K,Z,_e){const xe=g(T,Y);if(xe)return xe;const h=Y===Nt,_=Pn?history.state:{};K&&(Z||h?o.replace(T.fullPath,me({scroll:h&&_&&_.scroll},_e)):o.push(T.fullPath,_e)),a.value=T,$e(T,Y,K,h),Qe()}let $;function le(){$||($=o.listen((T,Y,K)=>{if(!Gt.listening)return;const Z=y(T),_e=U(Z);if(_e){D(me(_e,{replace:!0,force:!0}),Z).catch(hr);return}u=Z;const xe=a.value;Pn&&Qh(El(xe.fullPath,K.delta),Ro()),k(Z,xe).catch(h=>Lt(h,12)?h:Lt(h,2)?(D(me(S(h.to),{force:!0}),Z).then(_=>{Lt(_,20)&&!K.delta&&K.type===Tr.pop&&o.go(-1,!1)}).catch(hr),Promise.reject()):(K.delta&&o.go(-K.delta,!1),q(h,Z,xe))).then(h=>{h=h||C(Z,xe,!1),h&&(K.delta&&!Lt(h,8)?o.go(-K.delta,!1):K.type===Tr.pop&&Lt(h,20)&&o.go(-1,!1)),P(Z,xe,h)}).catch(hr)}))}let he=rr(),G=rr(),M;function q(T,Y,K){Qe(T);const Z=G.list();return Z.length?Z.forEach(_e=>_e(T,Y,K)):console.error(T),Promise.reject(T)}function fe(){return M&&a.value!==Nt?Promise.resolve():new Promise((T,Y)=>{he.add([T,Y])})}function Qe(T){return M||(M=!T,le(),he.list().forEach(([Y,K])=>T?K(T):Y()),he.reset()),T}function $e(T,Y,K,Z){const{scrollBehavior:_e}=e;if(!Pn||!_e)return Promise.resolve();const xe=!K&&Zh(El(T.fullPath,0))||(Z||!K)&&history.state&&history.state.scroll||null;return an().then(()=>_e(T,Y,xe)).then(h=>h&&Xh(h)).catch(h=>q(h,T,Y))}const we=T=>o.go(T);let pt;const Dt=new Set,Gt={currentRoute:a,listening:!0,addRoute:d,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:b,getRoutes:v,resolve:y,options:e,push:E,replace:V,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:s.add,beforeResolve:i.add,afterEach:l.add,onError:G.add,isReady:fe,install(T){const Y=this;T.component("RouterLink",Ag),T.component("RouterView",kg),T.config.globalProperties.$router=Y,Object.defineProperty(T.config.globalProperties,"$route",{enumerable:!0,get:()=>$t(a)}),Pn&&!pt&&a.value===Nt&&(pt=!0,E(o.location).catch(_e=>{}));const K={};for(const _e in Nt)Object.defineProperty(K,_e,{get:()=>a.value[_e],enumerable:!0});T.provide(Io,Y),T.provide(si,bu(K)),T.provide(Cs,a);const Z=T.unmount;Dt.add(T),T.unmount=function(){Dt.delete(T),Dt.size<1&&(u=Nt,$&&$(),$=null,a.value=Nt,pt=!1,M=!1),Z()}}};function ht(T){return T.reduce((Y,K)=>Y.then(()=>I(K)),Promise.resolve())}return Gt}function Pg(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;i<s;i++){const l=t.matched[i];l&&(e.matched.find(u=>Bn(u,l))?r.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(u=>Bn(u,a))||o.push(a))}return[n,r,o]}function Gn(){return Je(Io)}function Kt(e){return Je(si)}var ii=Symbol(""),Pt=()=>{const e=Je(ii);if(!e)throw new Error("useClientData() is called without provider.");return e},xg=()=>Pt().pageComponent,qn=()=>Pt().pageData,xt=()=>Pt().pageFrontmatter,Dg=()=>Pt().pageHead,Rg=()=>Pt().pageLang,Ig=()=>Pt().pageLayout,Hr=()=>Pt().routeLocale,Lg=()=>Pt().routes,Cc=()=>Pt().siteData,li=()=>Pt().siteLocaleData,Vg=Symbol(""),Ts=dt(Ch),Nn=dt(Th),Tc=(e,t)=>{const n=gh(e,t);if(Nn.value[n])return n;const r=encodeURI(n);if(Nn.value[r])return r;const o=Ts.value[n]||Ts.value[r];return o||n},kr=(e,t)=>{const{pathname:n,hashAndQueries:r}=cc(e),o=Tc(n,t),s=o+r;return Nn.value[o]?{...Nn.value[o],path:s,notFound:!1}:{...Nn.value["/404.html"],path:s,notFound:!0}},Ng=(e,t)=>{const{pathname:n,hashAndQueries:r}=cc(e);return Tc(n,t)+r},Mg=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget){const t=e.currentTarget.getAttribute("target");if(t!=null&&t.match(/\b_blank\b/i))return}return e.preventDefault(),!0}},Lo=pe({name:"RouteLink",props:{to:{type:String,required:!0},active:Boolean,activeClass:{type:String,default:"route-link-active"}},slots:Object,setup(e,{slots:t}){const n=Gn(),r=Kt(),o=N(()=>e.to.startsWith("#")||e.to.startsWith("?")?e.to:`/${Ng(e.to,r.path).substring(1)}`);return()=>Ee("a",{class:["route-link",{[e.activeClass]:e.active}],href:o.value,onClick:(s={})=>{Mg(s)&&n.push(e.to).catch()}},t.default())}}),Fg=pe({name:"AutoLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=md(e,"config"),r=Kt(),o=Cc(),s=N(()=>$r(n.value.link)),i=N(()=>n.value.target||(s.value?"_blank":void 0)),l=N(()=>i.value==="_blank"),a=N(()=>!s.value&&!l.value),u=N(()=>n.value.rel||(l.value?"noopener noreferrer":null)),c=N(()=>n.value.ariaLabel??n.value.text),f=N(()=>{if(n.value.exact)return!1;const d=Object.keys(o.value.locales);return d.length?d.every(m=>m!==n.value.link):n.value.link!=="/"}),p=N(()=>a.value?n.value.activeMatch?(n.value.activeMatch instanceof RegExp?n.value.activeMatch:new RegExp(n.value.activeMatch,"u")).test(r.path):f.value?r.path.startsWith(n.value.link):r.path===n.value.link:!1);return()=>{const{before:d,after:m,default:v}=t,b=(v==null?void 0:v(n.value))??[d==null?void 0:d(n.value),n.value.text,m==null?void 0:m(n.value)];return a.value?Ee(Lo,{class:"auto-link",to:n.value.link,active:p.value,"aria-label":c.value},()=>b):Ee("a",{class:"auto-link external-link",href:n.value.link,"aria-label":c.value,rel:u.value,target:i.value},b)}}}),ai=pe({name:"ClientOnly",setup(e,t){const n=ye(!1);return ot(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),ui=pe({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=xg(),n=N(()=>{if(!e.path)return t.value;const r=kr(e.path);return Ld(async()=>r.loader().then(({comp:o})=>o))});return()=>Ee(n.value)}}),Bg="Layout",$g="en-US",dn=Sn({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageHead:(e,t,n)=>{const r=Et(t.description)?t.description:n.description,o=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return Eh(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||$g,resolvePageLayout:(e,t)=>{const n=Et(e.frontmatter.layout)?e.frontmatter.layout:Bg;if(!t[n])throw new Error(`[vuepress] Cannot resolve layout: ${n}`);return t[n]},resolveRouteLocale:(e,t)=>_h(e,decodeURI(t)),resolveSiteLocaleData:({base:e,locales:t,...n},r)=>{var o;return{...n,...t[r],head:[...((o=t[r])==null?void 0:o.head)??[],...n.head]}}}),zt=(e={})=>e,ci=e=>Do(e)?e:`/${dc(e)}`;function fi(e){return Hs()?(su(e),!0):!1}const ss=new WeakMap,Hg=(...e)=>{var t;const n=e[0],r=(t=Cn())==null?void 0:t.proxy;if(r==null&&!Bu())throw new Error("injectLocal must be called in setup");return r&&ss.has(r)&&n in ss.get(r)?ss.get(r)[n]:Je(...e)},di=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Ug=Object.prototype.toString,jg=e=>Ug.call(e)==="[object Object]",Hn=()=>{};function pi(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const kc=e=>e();function Wg(e,t={}){let n,r,o=Hn;const s=a=>{clearTimeout(a),o(),o=Hn};let i;return a=>{const u=Ve(e),c=Ve(t.maxWait);return n&&s(n),u<=0||c!==void 0&&c<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((f,p)=>{o=t.rejectOnCancel?p:f,i=a,c&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,f(i())},c)),n=setTimeout(()=>{r&&s(r),r=null,f(a())},u)})}}function Kg(...e){let t=0,n,r=!0,o=Hn,s,i,l,a,u;!Fe(e[0])&&typeof e[0]=="object"?{delay:i,trailing:l=!0,leading:a=!0,rejectOnCancel:u=!1}=e[0]:[i,l=!0,a=!0,u=!1]=e;const c=()=>{n&&(clearTimeout(n),n=void 0,o(),o=Hn)};return p=>{const d=Ve(i),m=Date.now()-t,v=()=>s=p();return c(),d<=0?(t=Date.now(),v()):(m>d&&(a||!r)?(t=Date.now(),v()):l&&(s=new Promise((b,y)=>{o=u?y:b,n=setTimeout(()=>{t=Date.now(),r=!0,b(v()),c()},Math.max(0,d-m))})),!a&&!n&&(n=setTimeout(()=>r=!0,d)),r=!1,s)}}function zg(e=kc){const t=ye(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Vr(t),pause:n,resume:r,eventFilter:o}}function Gg(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function Nl(e){return e.endsWith("rem")?Number.parseFloat(e)*16:Number.parseFloat(e)}function qg(e){return Cn()}function io(e){return Array.isArray(e)?e:[e]}function Oc(e,t=200,n={}){return pi(Wg(t,n),e)}function Yg(e,t=200,n=!1,r=!0,o=!1){return pi(Kg(t,n,r,o),e)}function Jg(e,t,n={}){const{eventFilter:r=kc,...o}=n;return Ke(e,pi(r,t),o)}function Xg(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:l,isActive:a}=zg(r);return{stop:Jg(e,t,{...o,eventFilter:s}),pause:i,resume:l,isActive:a}}function Vo(e,t=!0,n){qg()?ot(e,n):t?e():an(e)}function Qg(e,t,n={}){const{immediate:r=!0}=n,o=ye(!1);let s=null;function i(){s&&(clearTimeout(s),s=null)}function l(){o.value=!1,i()}function a(...u){i(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...u)},Ve(t))}return r&&(o.value=!0,di&&a()),fi(l),{isPending:Vr(o),start:a,stop:l}}function Pc(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Fe(e),s=ye(e);function i(l){if(arguments.length)return s.value=l,s.value;{const a=Ve(n);return s.value=s.value===a?Ve(r):a,s.value}}return o?i:[s,i]}function hi(e,t,n){return Ke(e,t,{...n,immediate:!0})}const Ut=di?window:void 0,xc=di?window.navigator:void 0;function Zt(e){var t;const n=Ve(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Xe(...e){const t=[],n=()=>{t.forEach(l=>l()),t.length=0},r=(l,a,u,c)=>(l.addEventListener(a,u,c),()=>l.removeEventListener(a,u,c)),o=N(()=>{const l=io(Ve(e[0])).filter(a=>a!=null);return l.every(a=>typeof a!="string")?l:void 0}),s=hi(()=>{var l,a;return[(a=(l=o.value)==null?void 0:l.map(u=>Zt(u)))!=null?a:[Ut].filter(u=>u!=null),io(Ve(o.value?e[1]:e[0])),io($t(o.value?e[2]:e[1])),Ve(o.value?e[3]:e[2])]},([l,a,u,c])=>{if(n(),!(l!=null&&l.length)||!(a!=null&&a.length)||!(u!=null&&u.length))return;const f=jg(c)?{...c}:c;t.push(...l.flatMap(p=>a.flatMap(d=>u.map(m=>r(p,d,m,f)))))},{flush:"post"}),i=()=>{s(),n()};return fi(n),i}function Zg(){const e=ye(!1),t=Cn();return t&&ot(()=>{e.value=!0},t),e}function No(e){const t=Zg();return N(()=>(t.value,!!e()))}const e_=Symbol("vueuse-ssr-width");function t_(){const e=Bu()?Hg(e_,null):null;return typeof e=="number"?e:void 0}function gi(e,t={}){const{window:n=Ut,ssrWidth:r=t_()}=t,o=No(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function"),s=ye(typeof r=="number"),i=dt(),l=ye(!1),a=u=>{l.value=u.matches};return hp(()=>{if(s.value){s.value=!o.value;const u=Ve(e).split(",");l.value=u.some(c=>{const f=c.includes("not all"),p=c.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/),d=c.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);let m=!!(p||d);return p&&m&&(m=r>=Nl(p[1])),d&&m&&(m=r<=Nl(d[1])),f?!m:m});return}o.value&&(i.value=n.matchMedia(Ve(e)),l.value=i.value.matches)}),Xe(i,"change",a,{passive:!0}),N(()=>l.value)}function Ml(e,t={}){const{controls:n=!1,navigator:r=xc}=t,o=No(()=>r&&"permissions"in r),s=dt(),i=typeof e=="string"?{name:e}:e,l=dt(),a=()=>{var c,f;l.value=(f=(c=s.value)==null?void 0:c.state)!=null?f:"prompt"};Xe(s,"change",a,{passive:!0});const u=Gg(async()=>{if(o.value){if(!s.value)try{s.value=await r.permissions.query(i)}catch{s.value=void 0}finally{a()}if(n)return de(s.value)}});return u(),n?{state:l,isSupported:o,query:u}:l}function n_(e={}){const{navigator:t=xc,read:n=!1,source:r,copiedDuring:o=1500,legacy:s=!1}=e,i=No(()=>t&&"clipboard"in t),l=Ml("clipboard-read"),a=Ml("clipboard-write"),u=N(()=>i.value||s),c=ye(""),f=ye(!1),p=Qg(()=>f.value=!1,o,{immediate:!1});function d(){let S=!(i.value&&y(l.value));if(!S)try{t.clipboard.readText().then(g=>{c.value=g})}catch{S=!0}S&&(c.value=b())}u.value&&n&&Xe(["copy","cut"],d,{passive:!0});async function m(S=Ve(r)){if(u.value&&S!=null){let g=!(i.value&&y(a.value));if(!g)try{await t.clipboard.writeText(S)}catch{g=!0}g&&v(S),c.value=S,f.value=!0,p.start()}}function v(S){const g=document.createElement("textarea");g.value=S??"",g.style.position="absolute",g.style.opacity="0",document.body.appendChild(g),g.select(),document.execCommand("copy"),g.remove()}function b(){var S,g,E;return(E=(g=(S=document==null?void 0:document.getSelection)==null?void 0:S.call(document))==null?void 0:g.toString())!=null?E:""}function y(S){return S==="granted"||S==="prompt"}return{isSupported:u,text:c,copied:f,copy:m}}const Yr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Jr="__vueuse_ssr_handlers__",r_=o_();function o_(){return Jr in Yr||(Yr[Jr]=Yr[Jr]||{}),Yr[Jr]}function s_(e,t){return r_[e]||t}function i_(e){return gi("(prefers-color-scheme: dark)",e)}function l_(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 a_={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()}},Fl="vueuse-storage";function _i(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:a=!0,mergeDefaults:u=!1,shallow:c,window:f=Ut,eventFilter:p,onError:d=P=>{console.error(P)},initOnMounted:m}=r,v=(c?dt:ye)(typeof t=="function"?t():t),b=N(()=>Ve(e));if(!n)try{n=s_("getDefaultStorage",()=>{var P;return(P=Ut)==null?void 0:P.localStorage})()}catch(P){d(P)}if(!n)return v;const y=Ve(t),S=l_(y),g=(o=r.serializer)!=null?o:a_[S],{pause:E,resume:V}=Xg(v,()=>D(v.value),{flush:s,deep:i,eventFilter:p});Ke(b,()=>I(),{flush:s}),f&&l&&Vo(()=>{n instanceof Storage?Xe(f,"storage",I,{passive:!0}):Xe(f,Fl,k),m&&I()}),m||I();function U(P,C){if(f){const $={key:b.value,oldValue:P,newValue:C,storageArea:n};f.dispatchEvent(n instanceof Storage?new StorageEvent("storage",$):new CustomEvent(Fl,{detail:$}))}}function D(P){try{const C=n.getItem(b.value);if(P==null)U(C,null),n.removeItem(b.value);else{const $=g.write(P);C!==$&&(n.setItem(b.value,$),U(C,$))}}catch(C){d(C)}}function Q(P){const C=P?P.newValue:n.getItem(b.value);if(C==null)return a&&y!=null&&n.setItem(b.value,g.write(y)),y;if(!P&&u){const $=g.read(C);return typeof u=="function"?u($,y):S==="object"&&!Array.isArray($)?{...y,...$}:$}else return typeof C!="string"?C:g.read(C)}function I(P){if(!(P&&P.storageArea!==n)){if(P&&P.key==null){v.value=y;return}if(!(P&&P.key!==b.value)){E();try{(P==null?void 0:P.newValue)!==g.write(v.value)&&(v.value=Q(P))}catch(C){d(C)}finally{P?an(V):V()}}}}function k(P){I(P.detail)}return v}function u_(e,t,n={}){const{window:r=Ut,...o}=n;let s;const i=No(()=>r&&"ResizeObserver"in r),l=()=>{s&&(s.disconnect(),s=void 0)},a=N(()=>{const f=Ve(e);return Array.isArray(f)?f.map(p=>Zt(p)):[Zt(f)]}),u=Ke(a,f=>{if(l(),i.value&&r){s=new ResizeObserver(t);for(const p of f)p&&s.observe(p,o)}},{immediate:!0,flush:"post"}),c=()=>{l(),u()};return fi(c),{isSupported:i,stop:c}}function c_(e,t={width:0,height:0},n={}){const{window:r=Ut,box:o="content-box"}=n,s=N(()=>{var f,p;return(p=(f=Zt(e))==null?void 0:f.namespaceURI)==null?void 0:p.includes("svg")}),i=ye(t.width),l=ye(t.height),{stop:a}=u_(e,([f])=>{const p=o==="border-box"?f.borderBoxSize:o==="content-box"?f.contentBoxSize:f.devicePixelContentBoxSize;if(r&&s.value){const d=Zt(e);if(d){const m=d.getBoundingClientRect();i.value=m.width,l.value=m.height}}else if(p){const d=io(p);i.value=d.reduce((m,{inlineSize:v})=>m+v,0),l.value=d.reduce((m,{blockSize:v})=>m+v,0)}else i.value=f.contentRect.width,l.value=f.contentRect.height},n);Vo(()=>{const f=Zt(e);f&&(i.value="offsetWidth"in f?f.offsetWidth:t.width,l.value="offsetHeight"in f?f.offsetHeight:t.height)});const u=Ke(()=>Zt(e),f=>{i.value=f?t.width:0,l.value=f?t.height:0});function c(){a(),u()}return{width:i,height:l,stop:c}}const Bl=1;function f_(e,t={}){const{throttle:n=0,idle:r=200,onStop:o=Hn,onScroll:s=Hn,offset:i={left:0,right:0,top:0,bottom:0},eventListenerOptions:l={capture:!1,passive:!0},behavior:a="auto",window:u=Ut,onError:c=D=>{console.error(D)}}=t,f=ye(0),p=ye(0),d=N({get(){return f.value},set(D){v(D,void 0)}}),m=N({get(){return p.value},set(D){v(void 0,D)}});function v(D,Q){var I,k,P,C;if(!u)return;const $=Ve(e);if(!$)return;(P=$ instanceof Document?u.document.body:$)==null||P.scrollTo({top:(I=Ve(Q))!=null?I:m.value,left:(k=Ve(D))!=null?k:d.value,behavior:Ve(a)});const le=((C=$==null?void 0:$.document)==null?void 0:C.documentElement)||($==null?void 0:$.documentElement)||$;d!=null&&(f.value=le.scrollLeft),m!=null&&(p.value=le.scrollTop)}const b=ye(!1),y=Sn({left:!0,right:!1,top:!0,bottom:!1}),S=Sn({left:!1,right:!1,top:!1,bottom:!1}),g=D=>{b.value&&(b.value=!1,S.left=!1,S.right=!1,S.top=!1,S.bottom=!1,o(D))},E=Oc(g,n+r),V=D=>{var Q;if(!u)return;const I=((Q=D==null?void 0:D.document)==null?void 0:Q.documentElement)||(D==null?void 0:D.documentElement)||Zt(D),{display:k,flexDirection:P,direction:C}=getComputedStyle(I),$=C==="rtl"?-1:1,le=I.scrollLeft;S.left=le<f.value,S.right=le>f.value;const he=le*$<=(i.left||0),G=le*$+I.clientWidth>=I.scrollWidth-(i.right||0)-Bl;k==="flex"&&P==="row-reverse"?(y.left=G,y.right=he):(y.left=he,y.right=G),f.value=le;let M=I.scrollTop;D===u.document&&!M&&(M=u.document.body.scrollTop),S.top=M<p.value,S.bottom=M>p.value;const q=M<=(i.top||0),fe=M+I.clientHeight>=I.scrollHeight-(i.bottom||0)-Bl;k==="flex"&&P==="column-reverse"?(y.top=fe,y.bottom=q):(y.top=q,y.bottom=fe),p.value=M},U=D=>{var Q;if(!u)return;const I=(Q=D.target.documentElement)!=null?Q:D.target;V(I),b.value=!0,E(D),s(D)};return Xe(e,"scroll",n?Yg(U,n,!0,!1):U,l),Vo(()=>{try{const D=Ve(e);if(!D)return;V(D)}catch(D){c(D)}}),Xe(e,"scrollend",g,l),{x:d,y:m,isScrolling:b,arrivedState:y,directions:S,measure(){const D=Ve(e);u&&D&&V(D)}}}function d_(e={}){const{window:t=Ut,...n}=e;return f_(t,n)}function p_(e={}){const{window:t=Ut,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:s=!0,type:i="inner"}=e,l=ye(n),a=ye(r),u=()=>{if(t)if(i==="outer")l.value=t.outerWidth,a.value=t.outerHeight;else if(i==="visual"&&t.visualViewport){const{width:f,height:p,scale:d}=t.visualViewport;l.value=Math.round(f*d),a.value=Math.round(p*d)}else s?(l.value=t.innerWidth,a.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,a.value=t.document.documentElement.clientHeight)};u(),Vo(u);const c={passive:!0};if(Xe("resize",u,c),t&&i==="visual"&&t.visualViewport&&Xe(t.visualViewport,"resize",u,c),o){const f=gi("(orientation: portrait)");Ke(f,()=>u())}return{width:l,height:a}}const $l=async(e,t)=>{const{path:n,query:r}=e.currentRoute.value,{scrollBehavior:o}=e.options;e.options.scrollBehavior=void 0,await e.replace({path:n,query:r,hash:t}),e.options.scrollBehavior=o},h_=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=Gn();Xe("scroll",Oc(()=>{var m,v;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)<r){$l(o,"");return}const a=window.innerHeight+i,u=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.abs(u-a)<r,f=Array.from(document.querySelectorAll(e)),d=Array.from(document.querySelectorAll(t)).filter(b=>f.some(y=>y.hash===b.hash));for(let b=0;b<d.length;b++){const y=d[b],S=d[b+1],g=i>=(((m=y.parentElement)==null?void 0:m.offsetTop)??0)-r,E=!S||i<(((v=S.parentElement)==null?void 0:v.offsetTop)??0)-r;if(!(g&&E))continue;const U=decodeURIComponent(o.currentRoute.value.hash),D=decodeURIComponent(y.hash);if(U===D)return;if(c){for(let Q=b+1;Q<d.length;Q++)if(U===decodeURIComponent(d[Q].hash))return}$l(o,D);return}},n))},g_="a.vp-sidebar-item",__=".header-anchor",m_=300,v_=5,y_=zt({setup(){h_({headerLinkSelector:g_,headerAnchorSelector:__,delay:m_,offset:v_})}}),b_=Object.freeze(Object.defineProperty({__proto__:null,default:y_},Symbol.toStringTag,{value:"Module"}));[...new Array(6)].map((e,t)=>`[vp-content] h${t+1}`).join(",");const Dc=(e,t)=>{var r;const n=(r=Cn())==null?void 0:r.appContext.components;return n?e in n||st(e)in n||Lr(st(e))in n:!1},E_=e=>new Promise(t=>{setTimeout(t,e)}),Rc=e=>{const t=Hr();return N(()=>e[t.value]??{})},S_=()=>{const e=Lg();return N(()=>Object.keys(e.value))},A_=e=>typeof e<"u",Ic=(e,t)=>Et(e)&&e.startsWith(t),{keys:w_}=Object,Lc=e=>Ic(e,"/")&&e[1]!=="/",Vc=e=>!ph(e)&&!$r(e);var C_={"/":{backToTop:"Вернуться к началу"},"/eng/":{backToTop:"Back to top"}};const T_=pe({name:"BackToTop",setup(){const e=xt(),t=Rc(C_),n=dt(),{height:r}=c_(n),{height:o}=p_(),{y:s}=d_(),i=N(()=>e.value.backToTop!==!1&&s.value>100),l=N(()=>s.value/(r.value-o.value)*100);return ot(()=>{n.value=document.body}),()=>Ee(ni,{name:"back-to-top"},()=>i.value?Ee("button",{type:"button",class:"vp-back-to-top-button","aria-label":t.value.backToTop,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[Ee("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":l.value},Ee("svg",Ee("circle",{cx:"26",cy:"26",r:"24",fill:"none",stroke:"currentColor","stroke-width":"4","stroke-dasharray":`${Math.PI*l.value*.48} ${Math.PI*(100-l.value)*.48}`}))),Ee("div",{class:"back-to-top-icon"})]):null)}}),k_=zt({rootComponents:[T_]}),O_=Object.freeze(Object.defineProperty({__proto__:null,default:k_},Symbol.toStringTag,{value:"Module"})),P_=/language-(shellscript|shell|bash|sh|zsh)/,x_=({delay:e=500,duration:t=2e3,locales:n,selector:r,showInMobile:o,ignoreSelector:s=[],transform:i})=>{const l=gi("(max-width: 419px)"),a=N(()=>!l.value||o),u=Rc(n),c=qn(),f=b=>{var S;if(b.hasAttribute("copy-code"))return;const y=document.createElement("button");y.type="button",y.classList.add("vp-copy-code-button"),y.setAttribute("aria-label",u.value.copy),y.setAttribute("data-copied",u.value.copied),(S=b.parentElement)==null||S.insertBefore(y,b),b.setAttribute("copy-code","")};hi(()=>[c.value.path,a.value],async()=>{document.body.classList.toggle("no-copy-code",!a.value),a.value&&(await an(),await E_(e),document.querySelectorAll(r.join(",")).forEach(f))});const{copy:d}=n_({legacy:!0}),m=new WeakMap,v=async(b,y,S)=>{const g=y.cloneNode(!0);s.length&&g.querySelectorAll(s.join(",")).forEach(U=>{U.remove()}),i&&i(g);let E=g.textContent||"";if(P_.test(b.className)&&(E=E.replace(/^ *(\$|>) /gm,"")),await d(E),t<=0)return;S.classList.add("copied"),clearTimeout(m.get(S));const V=setTimeout(()=>{S.classList.remove("copied"),S.blur(),m.delete(S)},t);m.set(S,V)};Xe("click",b=>{const y=b.target;if(a.value&&y.matches('div[class*="language-"] > button.vp-copy-code-button')){const S=y.parentElement,g=y.nextElementSibling;if(!S||!g)return;v(S,g,y)}})};var D_=[],R_={"/":{copy:"Скопировать код",copied:"Скопировано"},"/eng/":{copy:"Copy code",copied:"Copied"}},I_=['[vp-content] div[class*="language-"] pre'];const L_=zt({setup:()=>{x_({selector:I_,ignoreSelector:D_,locales:R_,duration:2e3,delay:500,showInMobile:!1})}}),V_=Object.freeze(Object.defineProperty({__proto__:null,default:L_},Symbol.toStringTag,{value:"Module"})),N_=zt({setup(){Xe("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})}}),M_=Object.freeze(Object.defineProperty({__proto__:null,default:N_},Symbol.toStringTag,{value:"Module"}));/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const Hl=(e,t)=>{e.classList.add(t)},Ul=(e,t)=>{e.classList.remove(t)},F_=e=>{var t;(t=e==null?void 0:e.parentNode)==null||t.removeChild(e)},is=(e,t,n)=>e<t?t:e>n?n:e,jl=e=>(-1+e)*100,B_=(()=>{const e=[],t=()=>{const n=e.shift();n&&n(t)};return n=>{e.push(n),e.length===1&&t()}})(),$_=e=>e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(t,n)=>n.toUpperCase()),Xr=(()=>{const e=["Webkit","O","Moz","ms"],t={},n=s=>{const{style:i}=document.body;if(s in i)return s;const l=s.charAt(0).toUpperCase()+s.slice(1);let a=e.length;for(;a--;){const u=`${e[a]}${l}`;if(u in i)return u}return s},r=s=>{const i=$_(s);return t[i]??(t[i]=n(i))},o=(s,i,l)=>{s.style[r(i)]=l};return(s,i)=>{for(const l in i){const a=i[l];Object.hasOwn(i,l)&&A_(a)&&o(s,l,a)}}})(),Vt={minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'<div class="bar" role="bar"></div>'},Le={percent:null,isRendered:()=>!!document.getElementById("nprogress"),set:e=>{const{speed:t,easing:n}=Vt,r=Le.isStarted(),o=is(e,Vt.minimum,1);Le.percent=o===1?null:o;const s=Le.render(!r),i=s.querySelector(Vt.barSelector);return s.offsetWidth,B_(l=>{Xr(i,{transform:`translate3d(${jl(o)}%,0,0)`,transition:`all ${t}ms ${n}`}),o===1?(Xr(s,{transition:"none",opacity:"1"}),s.offsetWidth,setTimeout(()=>{Xr(s,{transition:`all ${t}ms linear`,opacity:"0"}),setTimeout(()=>{Le.remove(),l()},t)},t)):setTimeout(()=>{l()},t)}),Le},isStarted:()=>typeof Le.percent=="number",start:()=>{Le.percent||Le.set(0);const e=()=>{setTimeout(()=>{Le.percent&&(Le.trickle(),e())},Vt.trickleSpeed)};return e(),Le},done:e=>!e&&!Le.percent?Le:Le.increase(.3+.5*Math.random()).set(1),increase:e=>{let{percent:t}=Le;return t?(t=is(t+(typeof e=="number"?e:(1-t)*is(Math.random()*t,.1,.95)),0,.994),Le.set(t)):Le.start()},trickle:()=>Le.increase(Math.random()*Vt.trickleRate),render:e=>{if(Le.isRendered())return document.getElementById("nprogress");Hl(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=Vt.template;const n=t.querySelector(Vt.barSelector),r=document.querySelector(Vt.parent),o=e?"-100":jl(Le.percent??0);return Xr(n,{transition:"all 0 linear",transform:`translate3d(${o}%,0,0)`}),r&&(r!==document.body&&Hl(r,"nprogress-custom-parent"),r.appendChild(t)),t},remove:()=>{Ul(document.documentElement,"nprogress-busy"),Ul(document.querySelector(Vt.parent),"nprogress-custom-parent"),F_(document.getElementById("nprogress"))}},H_=()=>{ot(()=>{const e=Gn(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Le.start()}),e.afterEach(n=>{t.add(n.path),Le.done()})})},U_=zt({setup(){H_()}}),j_=Object.freeze(Object.defineProperty({__proto__:null,default:U_},Symbol.toStringTag,{value:"Module"})),W_=({selector:e='div[class*="language-"].has-collapsed-lines > .collapsed-lines'}={})=>{Xe("click",t=>{const n=t.target;if(n.matches(e)){const r=n.parentElement;r!=null&&r.classList.toggle("collapsed")&&r.scrollIntoView({block:"center",behavior:"instant"})}})},K_={setup(){W_()}},z_=Object.freeze(Object.defineProperty({__proto__:null,default:K_},Symbol.toStringTag,{value:"Module"})),G_="VUEPRESS_CODE_TAB_STORE",Qr=_i(G_,{}),q_=pe({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:String},slots:Object,setup(e,{slots:t}){const n=ye(e.active),r=dt([]),o=()=>{e.tabId&&(Qr.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u<r.value.length-1?u+1:0,r.value[n.value].focus()},i=(u=n.value)=>{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},l=(u,c)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=c):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),e.tabId&&(Qr.value[e.tabId]=e.data[n.value].id)},a=()=>{if(e.tabId){const u=e.data.findIndex(({id:c})=>Qr.value[e.tabId]===c);if(u!==-1)return u}return e.active};return ot(()=>{n.value=a(),Ke(()=>e.tabId&&Qr.value[e.tabId],(u,c)=>{if(e.tabId&&u!==c){const f=e.data.findIndex(({id:p})=>p===u);f!==-1&&(n.value=f)}})}),()=>e.data.length?Ee("div",{class:"vp-code-tabs"},[Ee("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:u},c)=>{const f=c===n.value;return Ee("button",{type:"button",ref:p=>{p&&(r.value[c]=p)},class:["vp-code-tab-nav",{active:f}],role:"tab","aria-controls":`codetab-${e.id}-${c}`,"aria-selected":f,onClick:()=>{n.value=c,o()},onKeydown:p=>{l(p,c)}},t[`title${c}`]({value:u,isActive:f}))})),e.data.map(({id:u},c)=>{const f=c===n.value;return Ee("div",{class:["vp-code-tab",{active:f}],id:`codetab-${e.id}-${c}`,role:"tabpanel","aria-expanded":f},[Ee("div",{class:"vp-code-tab-title"},t[`title${c}`]({value:u,isActive:f})),t[`tab${c}`]({value:u,isActive:f})])})]):null}}),Y_="VUEPRESS_TAB_STORE",ls=_i(Y_,{}),J_=pe({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:String},slots:Object,setup(e,{slots:t}){const n=ye(e.active),r=dt([]),o=()=>{e.tabId&&(ls.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u<r.value.length-1?u+1:0,r.value[n.value].focus()},i=(u=n.value)=>{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},l=(u,c)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=c):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),o()},a=()=>{if(e.tabId){const u=e.data.findIndex(({id:c})=>ls.value[e.tabId]===c);if(u!==-1)return u}return e.active};return ot(()=>{n.value=a(),Ke(()=>e.tabId&&ls.value[e.tabId],(u,c)=>{if(e.tabId&&u!==c){const f=e.data.findIndex(({id:p})=>p===u);f!==-1&&(n.value=f)}})}),()=>e.data.length?Ee("div",{class:"vp-tabs"},[Ee("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:u},c)=>{const f=c===n.value;return Ee("button",{type:"button",ref:p=>{p&&(r.value[c]=p)},class:["vp-tab-nav",{active:f}],role:"tab","aria-controls":`tab-${e.id}-${c}`,"aria-selected":f,onClick:()=>{n.value=c,o()},onKeydown:p=>{l(p,c)}},t[`title${c}`]({value:u,isActive:f}))})),e.data.map(({id:u},c)=>{const f=c===n.value;return Ee("div",{class:["vp-tab",{active:f}],id:`tab-${e.id}-${c}`,role:"tabpanel","aria-expanded":f},[Ee("div",{class:"vp-tab-title"},t[`title${c}`]({value:u,isActive:f})),t[`tab${c}`]({value:u,isActive:f})])})]):null}}),X_={enhance:({app:e})=>{e.component("CodeTabs",q_),e.component("Tabs",J_)}},Q_=Object.freeze(Object.defineProperty({__proto__:null,default:X_},Symbol.toStringTag,{value:"Module"}));var Z_=Object.create,Nc=Object.defineProperty,em=Object.getOwnPropertyDescriptor,mi=Object.getOwnPropertyNames,tm=Object.getPrototypeOf,nm=Object.prototype.hasOwnProperty,rm=(e,t)=>function(){return e&&(t=(0,e[mi(e)[0]])(e=0)),t},om=(e,t)=>function(){return t||(0,e[mi(e)[0]])((t={exports:{}}).exports,t),t.exports},sm=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of mi(t))!nm.call(e,o)&&o!==n&&Nc(e,o,{get:()=>t[o],enumerable:!(r=em(t,o))||r.enumerable});return e},im=(e,t,n)=>(n=e!=null?Z_(tm(e)):{},sm(Nc(n,"default",{value:e,enumerable:!0}),e)),Ur=rm({"../../node_modules/.pnpm/tsup@8.3.5_@microsoft+api-extractor@7.48.1_@types+node@22.10.5__jiti@2.4.2_postcss@8.4.49_tsx_s7k37zks4wtn7x2grzma6lrsfa/node_modules/tsup/assets/esm_shims.js"(){}}),lm=om({"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js"(e,t){Ur(),t.exports=r;function n(s){return s instanceof Buffer?Buffer.from(s):new s.constructor(s.buffer.slice(),s.byteOffset,s.length)}function r(s){if(s=s||{},s.circles)return o(s);const i=new Map;if(i.set(Date,f=>new Date(f)),i.set(Map,(f,p)=>new Map(a(Array.from(f),p))),i.set(Set,(f,p)=>new Set(a(Array.from(f),p))),s.constructorHandlers)for(const f of s.constructorHandlers)i.set(f[0],f[1]);let l=null;return s.proto?c:u;function a(f,p){const d=Object.keys(f),m=new Array(d.length);for(let v=0;v<d.length;v++){const b=d[v],y=f[b];typeof y!="object"||y===null?m[b]=y:y.constructor!==Object&&(l=i.get(y.constructor))?m[b]=l(y,p):ArrayBuffer.isView(y)?m[b]=n(y):m[b]=p(y)}return m}function u(f){if(typeof f!="object"||f===null)return f;if(Array.isArray(f))return a(f,u);if(f.constructor!==Object&&(l=i.get(f.constructor)))return l(f,u);const p={};for(const d in f){if(Object.hasOwnProperty.call(f,d)===!1)continue;const m=f[d];typeof m!="object"||m===null?p[d]=m:m.constructor!==Object&&(l=i.get(m.constructor))?p[d]=l(m,u):ArrayBuffer.isView(m)?p[d]=n(m):p[d]=u(m)}return p}function c(f){if(typeof f!="object"||f===null)return f;if(Array.isArray(f))return a(f,c);if(f.constructor!==Object&&(l=i.get(f.constructor)))return l(f,c);const p={};for(const d in f){const m=f[d];typeof m!="object"||m===null?p[d]=m:m.constructor!==Object&&(l=i.get(m.constructor))?p[d]=l(m,c):ArrayBuffer.isView(m)?p[d]=n(m):p[d]=c(m)}return p}}function o(s){const i=[],l=[],a=new Map;if(a.set(Date,d=>new Date(d)),a.set(Map,(d,m)=>new Map(c(Array.from(d),m))),a.set(Set,(d,m)=>new Set(c(Array.from(d),m))),s.constructorHandlers)for(const d of s.constructorHandlers)a.set(d[0],d[1]);let u=null;return s.proto?p:f;function c(d,m){const v=Object.keys(d),b=new Array(v.length);for(let y=0;y<v.length;y++){const S=v[y],g=d[S];if(typeof g!="object"||g===null)b[S]=g;else if(g.constructor!==Object&&(u=a.get(g.constructor)))b[S]=u(g,m);else if(ArrayBuffer.isView(g))b[S]=n(g);else{const E=i.indexOf(g);E!==-1?b[S]=l[E]:b[S]=m(g)}}return b}function f(d){if(typeof d!="object"||d===null)return d;if(Array.isArray(d))return c(d,f);if(d.constructor!==Object&&(u=a.get(d.constructor)))return u(d,f);const m={};i.push(d),l.push(m);for(const v in d){if(Object.hasOwnProperty.call(d,v)===!1)continue;const b=d[v];if(typeof b!="object"||b===null)m[v]=b;else if(b.constructor!==Object&&(u=a.get(b.constructor)))m[v]=u(b,f);else if(ArrayBuffer.isView(b))m[v]=n(b);else{const y=i.indexOf(b);y!==-1?m[v]=l[y]:m[v]=f(b)}}return i.pop(),l.pop(),m}function p(d){if(typeof d!="object"||d===null)return d;if(Array.isArray(d))return c(d,p);if(d.constructor!==Object&&(u=a.get(d.constructor)))return u(d,p);const m={};i.push(d),l.push(m);for(const v in d){const b=d[v];if(typeof b!="object"||b===null)m[v]=b;else if(b.constructor!==Object&&(u=a.get(b.constructor)))m[v]=u(b,p);else if(ArrayBuffer.isView(b))m[v]=n(b);else{const y=i.indexOf(b);y!==-1?m[v]=l[y]:m[v]=p(b)}}return i.pop(),l.pop(),m}}}});Ur();Ur();Ur();var Mc=typeof navigator<"u",J=typeof window<"u"?window:typeof globalThis<"u"?globalThis:typeof global<"u"?global:{};typeof J.chrome<"u"&&J.chrome.devtools;Mc&&(J.self,J.top);var Wl;typeof navigator<"u"&&((Wl=navigator.userAgent)==null||Wl.toLowerCase().includes("electron"));Ur();var am=im(lm()),um=/(?:^|[-_/])(\w)/g;function cm(e,t){return t?t.toUpperCase():""}function fm(e){return e&&`${e}`.replace(um,cm)}function dm(e,t){let n=e.replace(/^[a-z]:/i,"").replace(/\\/g,"/");n.endsWith(`index${t}`)&&(n=n.replace(`/index${t}`,t));const r=n.lastIndexOf("/"),o=n.substring(r+1);{const s=o.lastIndexOf(t);return o.substring(0,s)}}var Kl=(0,am.default)({circles:!0});const pm={trailing:!0};function Un(e,t=25,n={}){if(n={...pm,...n},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let r,o,s=[],i,l;const a=(u,c)=>(i=hm(e,u,c),i.finally(()=>{if(i=null,n.trailing&&l&&!o){const f=a(u,l);return l=null,f}}),i);return function(...u){return i?(n.trailing&&(l=u),i):new Promise(c=>{const f=!o&&n.leading;clearTimeout(o),o=setTimeout(()=>{o=null;const p=n.leading?r:a(this,u);for(const d of s)d(p);s=[]},t),f?(r=a(this,u),c(r)):s.push(c)})}}async function hm(e,t,n){return await e.apply(t,n)}function ks(e,t={},n){for(const r in e){const o=e[r],s=n?`${n}:${r}`:r;typeof o=="object"&&o!==null?ks(o,t,s):typeof o=="function"&&(t[s]=o)}return t}const gm={run:e=>e()},_m=()=>gm,Fc=typeof console.createTask<"u"?console.createTask:_m;function mm(e,t){const n=t.shift(),r=Fc(n);return e.reduce((o,s)=>o.then(()=>r.run(()=>s(...t))),Promise.resolve())}function vm(e,t){const n=t.shift(),r=Fc(n);return Promise.all(e.map(o=>r.run(()=>o(...t))))}function as(e,t){for(const n of[...e])n(t)}class ym{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const o=t;let s;for(;this._deprecatedHooks[t];)s=this._deprecatedHooks[t],t=s.to;if(s&&!r.allowDeprecated){let i=s.message;i||(i=`${o} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,o=(...s)=>(typeof r=="function"&&r(),r=void 0,o=void 0,n(...s));return r=this.hook(t,o),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const o of r)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=ks(t),r=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of r.splice(0,r.length))o()}}removeHooks(t){const n=ks(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(mm,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(vm,t,...n)}callHookWith(t,n,...r){const o=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&as(this._before,o);const s=t(n in this._hooks?[...this._hooks[n]]:[],r);return s instanceof Promise?s.finally(()=>{this._after&&o&&as(this._after,o)}):(this._after&&o&&as(this._after,o),s)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function Bc(){return new ym}var bm=Object.create,$c=Object.defineProperty,Em=Object.getOwnPropertyDescriptor,vi=Object.getOwnPropertyNames,Sm=Object.getPrototypeOf,Am=Object.prototype.hasOwnProperty,wm=(e,t)=>function(){return e&&(t=(0,e[vi(e)[0]])(e=0)),t},Hc=(e,t)=>function(){return t||(0,e[vi(e)[0]])((t={exports:{}}).exports,t),t.exports},Cm=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of vi(t))!Am.call(e,o)&&o!==n&&$c(e,o,{get:()=>t[o],enumerable:!(r=Em(t,o))||r.enumerable});return e},Tm=(e,t,n)=>(n=e!=null?bm(Sm(e)):{},Cm($c(n,"default",{value:e,enumerable:!0}),e)),O=wm({"../../node_modules/.pnpm/tsup@8.3.5_@microsoft+api-extractor@7.48.1_@types+node@22.10.5__jiti@2.4.2_postcss@8.4.49_tsx_s7k37zks4wtn7x2grzma6lrsfa/node_modules/tsup/assets/esm_shims.js"(){}}),km=Hc({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(e,t){O(),function(n){var r={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"Ae",Å:"A",Æ:"AE",Ç:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"Oe",Ő:"O",Ø:"O",Ù:"U",Ú:"U",Û:"U",Ü:"Ue",Ű:"U",Ý:"Y",Þ:"TH",ß:"ss",à:"a",á:"a",â:"a",ã:"a",ä:"ae",å:"a",æ:"ae",ç:"c",è:"e",é:"e",ê:"e",ë:"e",ì:"i",í:"i",î:"i",ï:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"oe",ő:"o",ø:"o",ù:"u",ú:"u",û:"u",ü:"ue",ű:"u",ý:"y",þ:"th",ÿ:"y","ẞ":"SS",ا:"a",أ:"a",إ:"i",آ:"aa",ؤ:"u",ئ:"e",ء:"a",ب:"b",ت:"t",ث:"th",ج:"j",ح:"h",خ:"kh",د:"d",ذ:"th",ر:"r",ز:"z",س:"s",ش:"sh",ص:"s",ض:"dh",ط:"t",ظ:"z",ع:"a",غ:"gh",ف:"f",ق:"q",ك:"k",ل:"l",م:"m",ن:"n",ه:"h",و:"w",ي:"y",ى:"a",ة:"h",ﻻ:"la",ﻷ:"laa",ﻹ:"lai",ﻵ:"laa",گ:"g",چ:"ch",پ:"p",ژ:"zh",ک:"k",ی:"y","َ":"a","ً":"an","ِ":"e","ٍ":"en","ُ":"u","ٌ":"on","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9",က:"k",ခ:"kh",ဂ:"g",ဃ:"ga",င:"ng",စ:"s",ဆ:"sa",ဇ:"z","စျ":"za",ည:"ny",ဋ:"t",ဌ:"ta",ဍ:"d",ဎ:"da",ဏ:"na",တ:"t",ထ:"ta",ဒ:"d",ဓ:"da",န:"n",ပ:"p",ဖ:"pa",ဗ:"b",ဘ:"ba",မ:"m",ယ:"y",ရ:"ya",လ:"l",ဝ:"w",သ:"th",ဟ:"h",ဠ:"la",အ:"a","ြ":"y","ျ":"ya","ွ":"w","ြွ":"yw","ျွ":"ywa","ှ":"h",ဧ:"e","၏":"-e",ဣ:"i",ဤ:"-i",ဉ:"u",ဦ:"-u",ဩ:"aw","သြော":"aw",ဪ:"aw","၀":"0","၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","္":"","့":"","း":"",č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z",ހ:"h",ށ:"sh",ނ:"n",ރ:"r",ބ:"b",ޅ:"lh",ކ:"k",އ:"a",ވ:"v",މ:"m",ފ:"f",ދ:"dh",ތ:"th",ލ:"l",ގ:"g",ޏ:"gn",ސ:"s",ޑ:"d",ޒ:"z",ޓ:"t",ޔ:"y",ޕ:"p",ޖ:"j",ޗ:"ch",ޘ:"tt",ޙ:"hh",ޚ:"kh",ޛ:"th",ޜ:"z",ޝ:"sh",ޞ:"s",ޟ:"d",ޠ:"t",ޡ:"z",ޢ:"a",ޣ:"gh",ޤ:"q",ޥ:"w","ަ":"a","ާ":"aa","ި":"i","ީ":"ee","ު":"u","ޫ":"oo","ެ":"e","ޭ":"ey","ޮ":"o","ޯ":"oa","ް":"",ა:"a",ბ:"b",გ:"g",დ:"d",ე:"e",ვ:"v",ზ:"z",თ:"t",ი:"i",კ:"k",ლ:"l",მ:"m",ნ:"n",ო:"o",პ:"p",ჟ:"zh",რ:"r",ს:"s",ტ:"t",უ:"u",ფ:"p",ქ:"k",ღ:"gh",ყ:"q",შ:"sh",ჩ:"ch",ც:"ts",ძ:"dz",წ:"ts",ჭ:"ch",ხ:"kh",ჯ:"j",ჰ:"h",α:"a",β:"v",γ:"g",δ:"d",ε:"e",ζ:"z",η:"i",θ:"th",ι:"i",κ:"k",λ:"l",μ:"m",ν:"n",ξ:"ks",ο:"o",π:"p",ρ:"r",σ:"s",τ:"t",υ:"y",φ:"f",χ:"x",ψ:"ps",ω:"o",ά:"a",έ:"e",ί:"i",ό:"o",ύ:"y",ή:"i",ώ:"o",ς:"s",ϊ:"i",ΰ:"y",ϋ:"y",ΐ:"i",Α:"A",Β:"B",Γ:"G",Δ:"D",Ε:"E",Ζ:"Z",Η:"I",Θ:"TH",Ι:"I",Κ:"K",Λ:"L",Μ:"M",Ν:"N",Ξ:"KS",Ο:"O",Π:"P",Ρ:"R",Σ:"S",Τ:"T",Υ:"Y",Φ:"F",Χ:"X",Ψ:"PS",Ω:"O",Ά:"A",Έ:"E",Ί:"I",Ό:"O",Ύ:"Y",Ή:"I",Ώ:"O",Ϊ:"I",Ϋ:"Y",ā:"a",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",ū:"u",Ā:"A",Ē:"E",Ģ:"G",Ī:"I",Ķ:"k",Ļ:"L",Ņ:"N",Ū:"U",Ќ:"Kj",ќ:"kj",Љ:"Lj",љ:"lj",Њ:"Nj",њ:"nj",Тс:"Ts",тс:"ts",ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"E",Ł:"L",Ń:"N",Ś:"S",Ź:"Z",Ż:"Z",Є:"Ye",І:"I",Ї:"Yi",Ґ:"G",є:"ye",і:"i",ї:"yi",ґ:"g",ă:"a",Ă:"A",ș:"s",Ș:"S",ț:"t",Ț:"T",ţ:"t",Ţ:"T",а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"yo",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"c",ч:"ch",ш:"sh",щ:"sh",ъ:"",ы:"y",ь:"",э:"e",ю:"yu",я:"ya",А:"A",Б:"B",В:"V",Г:"G",Д:"D",Е:"E",Ё:"Yo",Ж:"Zh",З:"Z",И:"I",Й:"I",К:"K",Л:"L",М:"M",Н:"N",О:"O",П:"P",Р:"R",С:"S",Т:"T",У:"U",Ф:"F",Х:"Kh",Ц:"C",Ч:"Ch",Ш:"Sh",Щ:"Sh",Ъ:"",Ы:"Y",Ь:"",Э:"E",Ю:"Yu",Я:"Ya",ђ:"dj",ј:"j",ћ:"c",џ:"dz",Ђ:"Dj",Ј:"j",Ћ:"C",Џ:"Dz",ľ:"l",ĺ:"l",ŕ:"r",Ľ:"L",Ĺ:"L",Ŕ:"R",ş:"s",Ş:"S",ı:"i",İ:"I",ğ:"g",Ğ:"G",ả:"a",Ả:"A",ẳ:"a",Ẳ:"A",ẩ:"a",Ẩ:"A",đ:"d",Đ:"D",ẹ:"e",Ẹ:"E",ẽ:"e",Ẽ:"E",ẻ:"e",Ẻ:"E",ế:"e",Ế:"E",ề:"e",Ề:"E",ệ:"e",Ệ:"E",ễ:"e",Ễ:"E",ể:"e",Ể:"E",ỏ:"o",ọ:"o",Ọ:"o",ố:"o",Ố:"O",ồ:"o",Ồ:"O",ổ:"o",Ổ:"O",ộ:"o",Ộ:"O",ỗ:"o",Ỗ:"O",ơ:"o",Ơ:"O",ớ:"o",Ớ:"O",ờ:"o",Ờ:"O",ợ:"o",Ợ:"O",ỡ:"o",Ỡ:"O",Ở:"o",ở:"o",ị:"i",Ị:"I",ĩ:"i",Ĩ:"I",ỉ:"i",Ỉ:"i",ủ:"u",Ủ:"U",ụ:"u",Ụ:"U",ũ:"u",Ũ:"U",ư:"u",Ư:"U",ứ:"u",Ứ:"U",ừ:"u",Ừ:"U",ự:"u",Ự:"U",ữ:"u",Ữ:"U",ử:"u",Ử:"ư",ỷ:"y",Ỷ:"y",ỳ:"y",Ỳ:"Y",ỵ:"y",Ỵ:"Y",ỹ:"y",Ỹ:"Y",ạ:"a",Ạ:"A",ấ:"a",Ấ:"A",ầ:"a",Ầ:"A",ậ:"a",Ậ:"A",ẫ:"a",Ẫ:"A",ắ:"a",Ắ:"A",ằ:"a",Ằ:"A",ặ:"a",Ặ:"A",ẵ:"a",Ẵ:"A","⓪":"0","①":"1","②":"2","③":"3","④":"4","⑤":"5","⑥":"6","⑦":"7","⑧":"8","⑨":"9","⑩":"10","⑪":"11","⑫":"12","⑬":"13","⑭":"14","⑮":"15","⑯":"16","⑰":"17","⑱":"18","⑲":"18","⑳":"18","⓵":"1","⓶":"2","⓷":"3","⓸":"4","⓹":"5","⓺":"6","⓻":"7","⓼":"8","⓽":"9","⓾":"10","⓿":"0","⓫":"11","⓬":"12","⓭":"13","⓮":"14","⓯":"15","⓰":"16","⓱":"17","⓲":"18","⓳":"19","⓴":"20","Ⓐ":"A","Ⓑ":"B","Ⓒ":"C","Ⓓ":"D","Ⓔ":"E","Ⓕ":"F","Ⓖ":"G","Ⓗ":"H","Ⓘ":"I","Ⓙ":"J","Ⓚ":"K","Ⓛ":"L","Ⓜ":"M","Ⓝ":"N","Ⓞ":"O","Ⓟ":"P","Ⓠ":"Q","Ⓡ":"R","Ⓢ":"S","Ⓣ":"T","Ⓤ":"U","Ⓥ":"V","Ⓦ":"W","Ⓧ":"X","Ⓨ":"Y","Ⓩ":"Z","ⓐ":"a","ⓑ":"b","ⓒ":"c","ⓓ":"d","ⓔ":"e","ⓕ":"f","ⓖ":"g","ⓗ":"h","ⓘ":"i","ⓙ":"j","ⓚ":"k","ⓛ":"l","ⓜ":"m","ⓝ":"n","ⓞ":"o","ⓟ":"p","ⓠ":"q","ⓡ":"r","ⓢ":"s","ⓣ":"t","ⓤ":"u","ⓦ":"v","ⓥ":"w","ⓧ":"x","ⓨ":"y","ⓩ":"z","“":'"',"”":'"',"‘":"'","’":"'","∂":"d",ƒ:"f","™":"(TM)","©":"(C)",œ:"oe",Œ:"OE","®":"(R)","†":"+","℠":"(SM)","…":"...","˚":"o",º:"o",ª:"a","•":"*","၊":",","။":".",$:"USD","€":"EUR","₢":"BRN","₣":"FRF","£":"GBP","₤":"ITL","₦":"NGN","₧":"ESP","₩":"KRW","₪":"ILS","₫":"VND","₭":"LAK","₮":"MNT","₯":"GRD","₱":"ARS","₲":"PYG","₳":"ARA","₴":"UAH","₵":"GHS","¢":"cent","¥":"CNY",元:"CNY",円:"YEN","﷼":"IRR","₠":"EWE","฿":"THB","₨":"INR","₹":"INR","₰":"PF","₺":"TRY","؋":"AFN","₼":"AZN",лв:"BGN","៛":"KHR","₡":"CRC","₸":"KZT",ден:"MKD",zł:"PLN","₽":"RUB","₾":"GEL"},o=["်","ް"],s={"ာ":"a","ါ":"a","ေ":"e","ဲ":"e","ိ":"i","ီ":"i","ို":"o","ု":"u","ူ":"u","ေါင်":"aung","ော":"aw","ော်":"aw","ေါ":"aw","ေါ်":"aw","်":"်","က်":"et","ိုက်":"aik","ောက်":"auk","င်":"in","ိုင်":"aing","ောင်":"aung","စ်":"it","ည်":"i","တ်":"at","ိတ်":"eik","ုတ်":"ok","ွတ်":"ut","ေတ်":"it","ဒ်":"d","ိုဒ်":"ok","ုဒ်":"ait","န်":"an","ာန်":"an","ိန်":"ein","ုန်":"on","ွန်":"un","ပ်":"at","ိပ်":"eik","ုပ်":"ok","ွပ်":"ut","န်ုပ်":"nub","မ်":"an","ိမ်":"ein","ုမ်":"on","ွမ်":"un","ယ်":"e","ိုလ်":"ol","ဉ်":"in","ံ":"an","ိံ":"ein","ုံ":"on","ައް":"ah","ަށް":"ah"},i={en:{},az:{ç:"c",ə:"e",ğ:"g",ı:"i",ö:"o",ş:"s",ü:"u",Ç:"C",Ə:"E",Ğ:"G",İ:"I",Ö:"O",Ş:"S",Ü:"U"},cs:{č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z"},fi:{ä:"a",Ä:"A",ö:"o",Ö:"O"},hu:{ä:"a",Ä:"A",ö:"o",Ö:"O",ü:"u",Ü:"U",ű:"u",Ű:"U"},lt:{ą:"a",č:"c",ę:"e",ė:"e",į:"i",š:"s",ų:"u",ū:"u",ž:"z",Ą:"A",Č:"C",Ę:"E",Ė:"E",Į:"I",Š:"S",Ų:"U",Ū:"U"},lv:{ā:"a",č:"c",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",š:"s",ū:"u",ž:"z",Ā:"A",Č:"C",Ē:"E",Ģ:"G",Ī:"i",Ķ:"k",Ļ:"L",Ņ:"N",Š:"S",Ū:"u",Ž:"Z"},pl:{ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ó:"o",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"e",Ł:"L",Ń:"N",Ó:"O",Ś:"S",Ź:"Z",Ż:"Z"},sv:{ä:"a",Ä:"A",ö:"o",Ö:"O"},sk:{ä:"a",Ä:"A"},sr:{љ:"lj",њ:"nj",Љ:"Lj",Њ:"Nj",đ:"dj",Đ:"Dj"},tr:{Ü:"U",Ö:"O",ü:"u",ö:"o"}},l={ar:{"∆":"delta","∞":"la-nihaya","♥":"hob","&":"wa","|":"aw","<":"aqal-men",">":"akbar-men","∑":"majmou","¤":"omla"},az:{},ca:{"∆":"delta","∞":"infinit","♥":"amor","&":"i","|":"o","<":"menys que",">":"mes que","∑":"suma dels","¤":"moneda"},cs:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"nebo","<":"mensi nez",">":"vetsi nez","∑":"soucet","¤":"mena"},de:{"∆":"delta","∞":"unendlich","♥":"Liebe","&":"und","|":"oder","<":"kleiner als",">":"groesser als","∑":"Summe von","¤":"Waehrung"},dv:{"∆":"delta","∞":"kolunulaa","♥":"loabi","&":"aai","|":"noonee","<":"ah vure kuda",">":"ah vure bodu","∑":"jumula","¤":"faisaa"},en:{"∆":"delta","∞":"infinity","♥":"love","&":"and","|":"or","<":"less than",">":"greater than","∑":"sum","¤":"currency"},es:{"∆":"delta","∞":"infinito","♥":"amor","&":"y","|":"u","<":"menos que",">":"mas que","∑":"suma de los","¤":"moneda"},fa:{"∆":"delta","∞":"bi-nahayat","♥":"eshgh","&":"va","|":"ya","<":"kamtar-az",">":"bishtar-az","∑":"majmooe","¤":"vahed"},fi:{"∆":"delta","∞":"aarettomyys","♥":"rakkaus","&":"ja","|":"tai","<":"pienempi kuin",">":"suurempi kuin","∑":"summa","¤":"valuutta"},fr:{"∆":"delta","∞":"infiniment","♥":"Amour","&":"et","|":"ou","<":"moins que",">":"superieure a","∑":"somme des","¤":"monnaie"},ge:{"∆":"delta","∞":"usasruloba","♥":"siqvaruli","&":"da","|":"an","<":"naklebi",">":"meti","∑":"jami","¤":"valuta"},gr:{},hu:{"∆":"delta","∞":"vegtelen","♥":"szerelem","&":"es","|":"vagy","<":"kisebb mint",">":"nagyobb mint","∑":"szumma","¤":"penznem"},it:{"∆":"delta","∞":"infinito","♥":"amore","&":"e","|":"o","<":"minore di",">":"maggiore di","∑":"somma","¤":"moneta"},lt:{"∆":"delta","∞":"begalybe","♥":"meile","&":"ir","|":"ar","<":"maziau nei",">":"daugiau nei","∑":"suma","¤":"valiuta"},lv:{"∆":"delta","∞":"bezgaliba","♥":"milestiba","&":"un","|":"vai","<":"mazak neka",">":"lielaks neka","∑":"summa","¤":"valuta"},my:{"∆":"kwahkhyaet","∞":"asaonasme","♥":"akhyait","&":"nhin","|":"tho","<":"ngethaw",">":"kyithaw","∑":"paungld","¤":"ngwekye"},mk:{},nl:{"∆":"delta","∞":"oneindig","♥":"liefde","&":"en","|":"of","<":"kleiner dan",">":"groter dan","∑":"som","¤":"valuta"},pl:{"∆":"delta","∞":"nieskonczonosc","♥":"milosc","&":"i","|":"lub","<":"mniejsze niz",">":"wieksze niz","∑":"suma","¤":"waluta"},pt:{"∆":"delta","∞":"infinito","♥":"amor","&":"e","|":"ou","<":"menor que",">":"maior que","∑":"soma","¤":"moeda"},ro:{"∆":"delta","∞":"infinit","♥":"dragoste","&":"si","|":"sau","<":"mai mic ca",">":"mai mare ca","∑":"suma","¤":"valuta"},ru:{"∆":"delta","∞":"beskonechno","♥":"lubov","&":"i","|":"ili","<":"menshe",">":"bolshe","∑":"summa","¤":"valjuta"},sk:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"alebo","<":"menej ako",">":"viac ako","∑":"sucet","¤":"mena"},sr:{},tr:{"∆":"delta","∞":"sonsuzluk","♥":"ask","&":"ve","|":"veya","<":"kucuktur",">":"buyuktur","∑":"toplam","¤":"para birimi"},uk:{"∆":"delta","∞":"bezkinechnist","♥":"lubov","&":"i","|":"abo","<":"menshe",">":"bilshe","∑":"suma","¤":"valjuta"},vn:{"∆":"delta","∞":"vo cuc","♥":"yeu","&":"va","|":"hoac","<":"nho hon",">":"lon hon","∑":"tong","¤":"tien te"}},a=[";","?",":","@","&","=","+","$",",","/"].join(""),u=[";","?",":","@","&","=","+","$",","].join(""),c=[".","!","~","*","'","(",")"].join(""),f=function(b,y){var S="-",g="",E="",V=!0,U={},D,Q,I,k,P,C,$,le,he,G,M,q,fe,Qe,$e="";if(typeof b!="string")return"";if(typeof y=="string"&&(S=y),$=l.en,le=i.en,typeof y=="object"){D=y.maintainCase||!1,U=y.custom&&typeof y.custom=="object"?y.custom:U,I=+y.truncate>1&&y.truncate||!1,k=y.uric||!1,P=y.uricNoSlash||!1,C=y.mark||!1,V=!(y.symbols===!1||y.lang===!1),S=y.separator||S,k&&($e+=a),P&&($e+=u),C&&($e+=c),$=y.lang&&l[y.lang]&&V?l[y.lang]:V?l.en:{},le=y.lang&&i[y.lang]?i[y.lang]:y.lang===!1||y.lang===!0?{}:i.en,y.titleCase&&typeof y.titleCase.length=="number"&&Array.prototype.toString.call(y.titleCase)?(y.titleCase.forEach(function(we){U[we+""]=we+""}),Q=!0):Q=!!y.titleCase,y.custom&&typeof y.custom.length=="number"&&Array.prototype.toString.call(y.custom)&&y.custom.forEach(function(we){U[we+""]=we+""}),Object.keys(U).forEach(function(we){var pt;we.length>1?pt=new RegExp("\\b"+d(we)+"\\b","gi"):pt=new RegExp(d(we),"gi"),b=b.replace(pt,U[we])});for(M in U)$e+=M}for($e+=S,$e=d($e),b=b.replace(/(^\s+|\s+$)/g,""),fe=!1,Qe=!1,G=0,q=b.length;G<q;G++)M=b[G],m(M,U)?fe=!1:le[M]?(M=fe&&le[M].match(/[A-Za-z0-9]/)?" "+le[M]:le[M],fe=!1):M in r?(G+1<q&&o.indexOf(b[G+1])>=0?(E+=M,M=""):Qe===!0?(M=s[E]+r[M],E=""):M=fe&&r[M].match(/[A-Za-z0-9]/)?" "+r[M]:r[M],fe=!1,Qe=!1):M in s?(E+=M,M="",G===q-1&&(M=s[E]),Qe=!0):$[M]&&!(k&&a.indexOf(M)!==-1)&&!(P&&u.indexOf(M)!==-1)?(M=fe||g.substr(-1).match(/[A-Za-z0-9]/)?S+$[M]:$[M],M+=b[G+1]!==void 0&&b[G+1].match(/[A-Za-z0-9]/)?S:"",fe=!0):(Qe===!0?(M=s[E]+M,E="",Qe=!1):fe&&(/[A-Za-z0-9]/.test(M)||g.substr(-1).match(/A-Za-z0-9]/))&&(M=" "+M),fe=!1),g+=M.replace(new RegExp("[^\\w\\s"+$e+"_-]","g"),S);return Q&&(g=g.replace(/(\w)(\S*)/g,function(we,pt,Dt){var Gt=pt.toUpperCase()+(Dt!==null?Dt:"");return Object.keys(U).indexOf(Gt.toLowerCase())<0?Gt:Gt.toLowerCase()})),g=g.replace(/\s+/g,S).replace(new RegExp("\\"+S+"+","g"),S).replace(new RegExp("(^\\"+S+"+|\\"+S+"+$)","g"),""),I&&g.length>I&&(he=g.charAt(I)===S,g=g.slice(0,I),he||(g=g.slice(0,g.lastIndexOf(S)))),!D&&!Q&&(g=g.toLowerCase()),g},p=function(b){return function(S){return f(S,b)}},d=function(b){return b.replace(/[-\\^$*+?.()|[\]{}\/]/g,"\\$&")},m=function(v,b){for(var y in b)if(b[y]===v)return!0};if(typeof t<"u"&&t.exports)t.exports=f,t.exports.createSlug=p;else if(typeof define<"u"&&define.amd)define([],function(){return f});else try{if(n.getSlug||n.createSlug)throw"speakingurl: globals exists /(getSlug|createSlug)/";n.getSlug=f,n.createSlug=p}catch{}}(e)}}),Om=Hc({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(e,t){O(),t.exports=km()}});O();O();O();O();O();O();O();O();function Pm(e){var t;const n=e.name||e._componentTag||e.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__||e.__name;return n==="index"&&((t=e.__file)!=null&&t.endsWith("index.vue"))?"":n}function xm(e){const t=e.__file;if(t)return fm(dm(t,".vue"))}function zl(e,t){return e.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__=t,t}function yi(e){if(e.__VUE_DEVTOOLS_NEXT_APP_RECORD__)return e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(e.root)return e.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__}function Uc(e){var t,n;const r=(t=e.subTree)==null?void 0:t.type,o=yi(e);return o?((n=o==null?void 0:o.types)==null?void 0:n.Fragment)===r:!1}function Mo(e){var t,n,r;const o=Pm((e==null?void 0:e.type)||{});if(o)return o;if((e==null?void 0:e.root)===e)return"Root";for(const i in(n=(t=e.parent)==null?void 0:t.type)==null?void 0:n.components)if(e.parent.type.components[i]===(e==null?void 0:e.type))return zl(e,i);for(const i in(r=e.appContext)==null?void 0:r.components)if(e.appContext.components[i]===(e==null?void 0:e.type))return zl(e,i);const s=xm((e==null?void 0:e.type)||{});return s||"Anonymous Component"}function Dm(e){var t,n,r;const o=(r=(n=(t=e==null?void 0:e.appContext)==null?void 0:t.app)==null?void 0:n.__VUE_DEVTOOLS_NEXT_APP_RECORD_ID__)!=null?r:0,s=e===(e==null?void 0:e.root)?"root":e.uid;return`${o}:${s}`}function Os(e,t){return t=t||`${e.id}:root`,e.instanceMap.get(t)||e.instanceMap.get(":root")}function Rm(){const e={top:0,bottom:0,left:0,right:0,get width(){return e.right-e.left},get height(){return e.bottom-e.top}};return e}var Zr;function Im(e){return Zr||(Zr=document.createRange()),Zr.selectNode(e),Zr.getBoundingClientRect()}function Lm(e){const t=Rm();if(!e.children)return t;for(let n=0,r=e.children.length;n<r;n++){const o=e.children[n];let s;if(o.component)s=wn(o.component);else if(o.el){const i=o.el;i.nodeType===1||i.getBoundingClientRect?s=i.getBoundingClientRect():i.nodeType===3&&i.data.trim()&&(s=Im(i))}s&&Vm(t,s)}return t}function Vm(e,t){return(!e.top||t.top<e.top)&&(e.top=t.top),(!e.bottom||t.bottom>e.bottom)&&(e.bottom=t.bottom),(!e.left||t.left<e.left)&&(e.left=t.left),(!e.right||t.right>e.right)&&(e.right=t.right),e}var Gl={top:0,left:0,right:0,bottom:0,width:0,height:0};function wn(e){const t=e.subTree.el;return typeof window>"u"?Gl:Uc(e)?Lm(e.subTree):(t==null?void 0:t.nodeType)===1?t==null?void 0:t.getBoundingClientRect():e.subTree.component?wn(e.subTree.component):Gl}O();function bi(e){return Uc(e)?Nm(e.subTree):e.subTree?[e.subTree.el]:[]}function Nm(e){if(!e.children)return[];const t=[];return e.children.forEach(n=>{n.component?t.push(...bi(n.component)):n!=null&&n.el&&t.push(n.el)}),t}var jc="__vue-devtools-component-inspector__",Wc="__vue-devtools-component-inspector__card__",Kc="__vue-devtools-component-inspector__name__",zc="__vue-devtools-component-inspector__indicator__",Gc={display:"block",zIndex:2147483640,position:"fixed",backgroundColor:"#42b88325",border:"1px solid #42b88350",borderRadius:"5px",transition:"all 0.1s ease-in",pointerEvents:"none"},Mm={fontFamily:"Arial, Helvetica, sans-serif",padding:"5px 8px",borderRadius:"4px",textAlign:"left",position:"absolute",left:0,color:"#e9e9e9",fontSize:"14px",fontWeight:600,lineHeight:"24px",backgroundColor:"#42b883",boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)"},Fm={display:"inline-block",fontWeight:400,fontStyle:"normal",fontSize:"12px",opacity:.7};function Yn(){return document.getElementById(jc)}function Bm(){return document.getElementById(Wc)}function $m(){return document.getElementById(zc)}function Hm(){return document.getElementById(Kc)}function Ei(e){return{left:`${Math.round(e.left*100)/100}px`,top:`${Math.round(e.top*100)/100}px`,width:`${Math.round(e.width*100)/100}px`,height:`${Math.round(e.height*100)/100}px`}}function Si(e){var t;const n=document.createElement("div");n.id=(t=e.elementId)!=null?t:jc,Object.assign(n.style,{...Gc,...Ei(e.bounds),...e.style});const r=document.createElement("span");r.id=Wc,Object.assign(r.style,{...Mm,top:e.bounds.top<35?0:"-35px"});const o=document.createElement("span");o.id=Kc,o.innerHTML=`<${e.name}> `;const s=document.createElement("i");return s.id=zc,s.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`,Object.assign(s.style,Fm),r.appendChild(o),r.appendChild(s),n.appendChild(r),document.body.appendChild(n),n}function Ai(e){const t=Yn(),n=Bm(),r=Hm(),o=$m();t&&(Object.assign(t.style,{...Gc,...Ei(e.bounds)}),Object.assign(n.style,{top:e.bounds.top<35?0:"-35px"}),r.innerHTML=`<${e.name}> `,o.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`)}function Um(e){const t=wn(e);if(!t.width&&!t.height)return;const n=Mo(e);Yn()?Ai({bounds:t,name:n}):Si({bounds:t,name:n})}function qc(){const e=Yn();e&&(e.style.display="none")}var Ps=null;function xs(e){const t=e.target;if(t){const n=t.__vueParentComponent;if(n&&(Ps=n,n.vnode.el)){const o=wn(n),s=Mo(n);Yn()?Ai({bounds:o,name:s}):Si({bounds:o,name:s})}}}function jm(e,t){if(e.preventDefault(),e.stopPropagation(),Ps){const n=Dm(Ps);t(n)}}var bo=null;function Wm(){qc(),window.removeEventListener("mouseover",xs),window.removeEventListener("click",bo,!0),bo=null}function Km(){return window.addEventListener("mouseover",xs),new Promise(e=>{function t(n){n.preventDefault(),n.stopPropagation(),jm(n,r=>{window.removeEventListener("click",t,!0),bo=null,window.removeEventListener("mouseover",xs);const o=Yn();o&&(o.style.display="none"),e(JSON.stringify({id:r}))})}bo=t,window.addEventListener("click",t,!0)})}function zm(e){const t=Os(nt.value,e.id);if(t){const[n]=bi(t);if(typeof n.scrollIntoView=="function")n.scrollIntoView({behavior:"smooth"});else{const r=wn(t),o=document.createElement("div"),s={...Ei(r),position:"absolute"};Object.assign(o.style,s),document.body.appendChild(o),o.scrollIntoView({behavior:"smooth"}),setTimeout(()=>{document.body.removeChild(o)},2e3)}setTimeout(()=>{const r=wn(t);if(r.width||r.height){const o=Mo(t),s=Yn();s?Ai({...e,name:o,bounds:r}):Si({...e,name:o,bounds:r}),setTimeout(()=>{s&&(s.style.display="none")},1500)}},1200)}}O();var ql,Yl;(Yl=(ql=J).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__)!=null||(ql.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__=!0);function Gm(e){let t=0;const n=setInterval(()=>{J.__VUE_INSPECTOR__&&(clearInterval(n),t+=30,e()),t>=5e3&&clearInterval(n)},30)}function qm(){const e=J.__VUE_INSPECTOR__,t=e.openInEditor;e.openInEditor=async(...n)=>{e.disable(),t(...n)}}function Ym(){return new Promise(e=>{function t(){qm(),e(J.__VUE_INSPECTOR__)}J.__VUE_INSPECTOR__?t():Gm(()=>{t()})})}O();O();function Jm(e){return!!(e&&e.__v_isReadonly)}function Yc(e){return Jm(e)?Yc(e.__v_raw):!!(e&&e.__v_isReactive)}function us(e){return!!(e&&e.__v_isRef===!0)}function lr(e){const t=e&&e.__v_raw;return t?lr(t):e}var Xm=class{constructor(){this.refEditor=new Qm}set(e,t,n,r){const o=Array.isArray(t)?t:t.split(".");for(;o.length>1;){const l=o.shift();e instanceof Map&&(e=e.get(l)),e instanceof Set?e=Array.from(e.values())[l]:e=e[l],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}const s=o[0],i=this.refEditor.get(e)[s];r?r(e,s,n):this.refEditor.isRef(i)?this.refEditor.set(i,n):e[s]=n}get(e,t){const n=Array.isArray(t)?t:t.split(".");for(let r=0;r<n.length;r++)if(e instanceof Map?e=e.get(n[r]):e=e[n[r]],this.refEditor.isRef(e)&&(e=this.refEditor.get(e)),!e)return;return e}has(e,t,n=!1){if(typeof e>"u")return!1;const r=Array.isArray(t)?t.slice():t.split("."),o=n?2:1;for(;e&&r.length>o;){const s=r.shift();e=e[s],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}return e!=null&&Object.prototype.hasOwnProperty.call(e,r[0])}createDefaultSetCallback(e){return(t,n,r)=>{if((e.remove||e.newKey)&&(Array.isArray(t)?t.splice(n,1):lr(t)instanceof Map?t.delete(n):lr(t)instanceof Set?t.delete(Array.from(t.values())[n]):Reflect.deleteProperty(t,n)),!e.remove){const o=t[e.newKey||n];this.refEditor.isRef(o)?this.refEditor.set(o,r):lr(t)instanceof Map?t.set(e.newKey||n,r):lr(t)instanceof Set?t.add(r):t[e.newKey||n]=r}}}},Qm=class{set(e,t){if(us(e))e.value=t;else{if(e instanceof Set&&Array.isArray(t)){e.clear(),t.forEach(o=>e.add(o));return}const n=Object.keys(t);if(e instanceof Map){const o=new Set(e.keys());n.forEach(s=>{e.set(s,Reflect.get(t,s)),o.delete(s)}),o.forEach(s=>e.delete(s));return}const r=new Set(Object.keys(e));n.forEach(o=>{Reflect.set(e,o,Reflect.get(t,o)),r.delete(o)}),r.forEach(o=>Reflect.deleteProperty(e,o))}}get(e){return us(e)?e.value:e}isRef(e){return us(e)||Yc(e)}};O();O();O();var Zm="__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS_STATE__";function e0(){if(!Mc||typeof localStorage>"u"||localStorage===null)return{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:""};const e=localStorage.getItem(Zm);return e?JSON.parse(e):{recordingState:!1,mouseEventEnabled:!1,keyboardEventEnabled:!1,componentEventEnabled:!1,performanceEventEnabled:!1,selected:""}}O();O();O();var Jl,Xl;(Xl=(Jl=J).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS)!=null||(Jl.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS=[]);var t0=new Proxy(J.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS,{get(e,t,n){return Reflect.get(e,t,n)}});function n0(e,t){Ue.timelineLayersState[t.id]=!1,t0.push({...e,descriptorId:t.id,appRecord:yi(t.app)})}var Ql,Zl;(Zl=(Ql=J).__VUE_DEVTOOLS_KIT_INSPECTOR__)!=null||(Ql.__VUE_DEVTOOLS_KIT_INSPECTOR__=[]);var wi=new Proxy(J.__VUE_DEVTOOLS_KIT_INSPECTOR__,{get(e,t,n){return Reflect.get(e,t,n)}}),Jc=Un(()=>{Jn.hooks.callHook("sendInspectorToClient",Xc())});function r0(e,t){var n,r;wi.push({options:e,descriptor:t,treeFilterPlaceholder:(n=e.treeFilterPlaceholder)!=null?n:"Search tree...",stateFilterPlaceholder:(r=e.stateFilterPlaceholder)!=null?r:"Search state...",treeFilter:"",selectedNodeId:"",appRecord:yi(t.app)}),Jc()}function Xc(){return wi.filter(e=>e.descriptor.app===nt.value.app).filter(e=>e.descriptor.id!=="components").map(e=>{var t;const n=e.descriptor,r=e.options;return{id:r.id,label:r.label,logo:n.logo,icon:`custom-ic-baseline-${(t=r==null?void 0:r.icon)==null?void 0:t.replace(/_/g,"-")}`,packageName:n.packageName,homepage:n.homepage,pluginId:n.id}})}function lo(e,t){return wi.find(n=>n.options.id===e&&(t?n.descriptor.app===t:!0))}function o0(){const e=Bc();e.hook("addInspector",({inspector:r,plugin:o})=>{r0(r,o.descriptor)});const t=Un(async({inspectorId:r,plugin:o})=>{var s;if(!r||!((s=o==null?void 0:o.descriptor)!=null&&s.app)||Ue.highPerfModeEnabled)return;const i=lo(r,o.descriptor.app),l={app:o.descriptor.app,inspectorId:r,filter:(i==null?void 0:i.treeFilter)||"",rootNodes:[]};await new Promise(a=>{e.callHookWith(async u=>{await Promise.all(u.map(c=>c(l))),a()},"getInspectorTree")}),e.callHookWith(async a=>{await Promise.all(a.map(u=>u({inspectorId:r,rootNodes:l.rootNodes})))},"sendInspectorTreeToClient")},120);e.hook("sendInspectorTree",t);const n=Un(async({inspectorId:r,plugin:o})=>{var s;if(!r||!((s=o==null?void 0:o.descriptor)!=null&&s.app)||Ue.highPerfModeEnabled)return;const i=lo(r,o.descriptor.app),l={app:o.descriptor.app,inspectorId:r,nodeId:(i==null?void 0:i.selectedNodeId)||"",state:null},a={currentTab:`custom-inspector:${r}`};l.nodeId&&await new Promise(u=>{e.callHookWith(async c=>{await Promise.all(c.map(f=>f(l,a))),u()},"getInspectorState")}),e.callHookWith(async u=>{await Promise.all(u.map(c=>c({inspectorId:r,nodeId:l.nodeId,state:l.state})))},"sendInspectorStateToClient")},120);return e.hook("sendInspectorState",n),e.hook("customInspectorSelectNode",({inspectorId:r,nodeId:o,plugin:s})=>{const i=lo(r,s.descriptor.app);i&&(i.selectedNodeId=o)}),e.hook("timelineLayerAdded",({options:r,plugin:o})=>{n0(r,o.descriptor)}),e.hook("timelineEventAdded",({options:r,plugin:o})=>{var s;const i=["performance","component-event","keyboard","mouse"];Ue.highPerfModeEnabled||!((s=Ue.timelineLayersState)!=null&&s[o.descriptor.id])&&!i.includes(r.layerId)||e.callHookWith(async l=>{await Promise.all(l.map(a=>a(r)))},"sendTimelineEventToClient")}),e.hook("getComponentInstances",async({app:r})=>{const o=r.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(!o)return null;const s=o.id.toString();return[...o.instanceMap].filter(([l])=>l.split(":")[0]===s).map(([,l])=>l)}),e.hook("getComponentBounds",async({instance:r})=>wn(r)),e.hook("getComponentName",({instance:r})=>Mo(r)),e.hook("componentHighlight",({uid:r})=>{const o=nt.value.instanceMap.get(r);o&&Um(o)}),e.hook("componentUnhighlight",()=>{qc()}),e}var ea,ta;(ta=(ea=J).__VUE_DEVTOOLS_KIT_APP_RECORDS__)!=null||(ea.__VUE_DEVTOOLS_KIT_APP_RECORDS__=[]);var na,ra;(ra=(na=J).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__)!=null||(na.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__={});var oa,sa;(sa=(oa=J).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__)!=null||(oa.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__="");var ia,la;(la=(ia=J).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__)!=null||(ia.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__=[]);var aa,ua;(ua=(aa=J).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__)!=null||(aa.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__=[]);var gn="__VUE_DEVTOOLS_KIT_GLOBAL_STATE__";function s0(){return{connected:!1,clientConnected:!1,vitePluginDetected:!0,appRecords:[],activeAppRecordId:"",tabs:[],commands:[],highPerfModeEnabled:!0,devtoolsClientDetected:{},perfUniqueGroupId:0,timelineLayersState:e0()}}var ca,fa;(fa=(ca=J)[gn])!=null||(ca[gn]=s0());var i0=Un(e=>{Jn.hooks.callHook("devtoolsStateUpdated",{state:e})});Un((e,t)=>{Jn.hooks.callHook("devtoolsConnectedUpdated",{state:e,oldState:t})});var Fo=new Proxy(J.__VUE_DEVTOOLS_KIT_APP_RECORDS__,{get(e,t,n){return t==="value"?J.__VUE_DEVTOOLS_KIT_APP_RECORDS__:J.__VUE_DEVTOOLS_KIT_APP_RECORDS__[t]}}),nt=new Proxy(J.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__,{get(e,t,n){return t==="value"?J.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__:t==="id"?J.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__:J.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[t]}});function Qc(){i0({...J[gn],appRecords:Fo.value,activeAppRecordId:nt.id,tabs:J.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,commands:J.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__})}function l0(e){J.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__=e,Qc()}function a0(e){J.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=e,Qc()}var Ue=new Proxy(J[gn],{get(e,t){return t==="appRecords"?Fo:t==="activeAppRecordId"?nt.id:t==="tabs"?J.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__:t==="commands"?J.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__:J[gn][t]},deleteProperty(e,t){return delete e[t],!0},set(e,t,n){return{...J[gn]},e[t]=n,J[gn][t]=n,!0}});function u0(e={}){var t,n,r;const{file:o,host:s,baseUrl:i=window.location.origin,line:l=0,column:a=0}=e;if(o){if(s==="chrome-extension"){const u=o.replace(/\\/g,"\\\\"),c=(n=(t=window.VUE_DEVTOOLS_CONFIG)==null?void 0:t.openInEditorHost)!=null?n:"/";fetch(`${c}__open-in-editor?file=${encodeURI(o)}`).then(f=>{if(!f.ok){const p=`Opening component ${u} failed`;console.log(`%c${p}`,"color:red")}})}else if(Ue.vitePluginDetected){const u=(r=J.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__)!=null?r:i;J.__VUE_INSPECTOR__.openInEditor(u,o,l,a)}}}O();O();O();O();O();var da,pa;(pa=(da=J).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__)!=null||(da.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__=[]);var Ci=new Proxy(J.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__,{get(e,t,n){return Reflect.get(e,t,n)}});function Ds(e){const t={};return Object.keys(e).forEach(n=>{t[n]=e[n].defaultValue}),t}function Ti(e){return`__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${e}__`}function c0(e){var t,n,r;const o=(n=(t=Ci.find(s=>{var i;return s[0].id===e&&!!((i=s[0])!=null&&i.settings)}))==null?void 0:t[0])!=null?n:null;return(r=o==null?void 0:o.settings)!=null?r:null}function Zc(e,t){var n,r,o;const s=Ti(e);if(s){const i=localStorage.getItem(s);if(i)return JSON.parse(i)}if(e){const i=(r=(n=Ci.find(l=>l[0].id===e))==null?void 0:n[0])!=null?r:null;return Ds((o=i==null?void 0:i.settings)!=null?o:{})}return Ds(t)}function f0(e,t){const n=Ti(e);localStorage.getItem(n)||localStorage.setItem(n,JSON.stringify(Ds(t)))}function d0(e,t,n){const r=Ti(e),o=localStorage.getItem(r),s=JSON.parse(o||"{}"),i={...s,[t]:n};localStorage.setItem(r,JSON.stringify(i)),Jn.hooks.callHookWith(l=>{l.forEach(a=>a({pluginId:e,key:t,oldValue:s[t],newValue:n,settings:i}))},"setPluginSettings")}O();O();O();O();O();O();O();O();O();O();O();var ha,ga,ct=(ga=(ha=J).__VUE_DEVTOOLS_HOOK)!=null?ga:ha.__VUE_DEVTOOLS_HOOK=Bc(),p0={vueAppInit(e){ct.hook("app:init",e)},vueAppUnmount(e){ct.hook("app:unmount",e)},vueAppConnected(e){ct.hook("app:connected",e)},componentAdded(e){return ct.hook("component:added",e)},componentEmit(e){return ct.hook("component:emit",e)},componentUpdated(e){return ct.hook("component:updated",e)},componentRemoved(e){return ct.hook("component:removed",e)},setupDevtoolsPlugin(e){ct.hook("devtools-plugin:setup",e)},perfStart(e){return ct.hook("perf:start",e)},perfEnd(e){return ct.hook("perf:end",e)}},h0={on:p0,setupDevToolsPlugin(e,t){return ct.callHook("devtools-plugin:setup",e,t)}},g0=class{constructor({plugin:e,ctx:t}){this.hooks=t.hooks,this.plugin=e}get on(){return{visitComponentTree:e=>{this.hooks.hook("visitComponentTree",e)},inspectComponent:e=>{this.hooks.hook("inspectComponent",e)},editComponentState:e=>{this.hooks.hook("editComponentState",e)},getInspectorTree:e=>{this.hooks.hook("getInspectorTree",e)},getInspectorState:e=>{this.hooks.hook("getInspectorState",e)},editInspectorState:e=>{this.hooks.hook("editInspectorState",e)},inspectTimelineEvent:e=>{this.hooks.hook("inspectTimelineEvent",e)},timelineCleared:e=>{this.hooks.hook("timelineCleared",e)},setPluginSettings:e=>{this.hooks.hook("setPluginSettings",e)}}}notifyComponentUpdate(e){var t;if(Ue.highPerfModeEnabled)return;const n=Xc().find(r=>r.packageName===this.plugin.descriptor.packageName);if(n!=null&&n.id){if(e){const r=[e.appContext.app,e.uid,(t=e.parent)==null?void 0:t.uid,e];ct.callHook("component:updated",...r)}else ct.callHook("component:updated");this.hooks.callHook("sendInspectorState",{inspectorId:n.id,plugin:this.plugin})}}addInspector(e){this.hooks.callHook("addInspector",{inspector:e,plugin:this.plugin}),this.plugin.descriptor.settings&&f0(e.id,this.plugin.descriptor.settings)}sendInspectorTree(e){Ue.highPerfModeEnabled||this.hooks.callHook("sendInspectorTree",{inspectorId:e,plugin:this.plugin})}sendInspectorState(e){Ue.highPerfModeEnabled||this.hooks.callHook("sendInspectorState",{inspectorId:e,plugin:this.plugin})}selectInspectorNode(e,t){this.hooks.callHook("customInspectorSelectNode",{inspectorId:e,nodeId:t,plugin:this.plugin})}visitComponentTree(e){return this.hooks.callHook("visitComponentTree",e)}now(){return Ue.highPerfModeEnabled?0:Date.now()}addTimelineLayer(e){this.hooks.callHook("timelineLayerAdded",{options:e,plugin:this.plugin})}addTimelineEvent(e){Ue.highPerfModeEnabled||this.hooks.callHook("timelineEventAdded",{options:e,plugin:this.plugin})}getSettings(e){return Zc(e??this.plugin.descriptor.id,this.plugin.descriptor.settings)}getComponentInstances(e){return this.hooks.callHook("getComponentInstances",{app:e})}getComponentBounds(e){return this.hooks.callHook("getComponentBounds",{instance:e})}getComponentName(e){return this.hooks.callHook("getComponentName",{instance:e})}highlightElement(e){const t=e.__VUE_DEVTOOLS_NEXT_UID__;return this.hooks.callHook("componentHighlight",{uid:t})}unhighlightElement(){return this.hooks.callHook("componentUnhighlight")}},_0=g0;O();O();O();O();var m0="__vue_devtool_undefined__",v0="__vue_devtool_infinity__",y0="__vue_devtool_negative_infinity__",b0="__vue_devtool_nan__";O();O();var E0={[m0]:"undefined",[b0]:"NaN",[v0]:"Infinity",[y0]:"-Infinity"};Object.entries(E0).reduce((e,[t,n])=>(e[n]=t,e),{});O();O();O();O();O();var _a,ma;(ma=(_a=J).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__)!=null||(_a.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__=new Set);function S0(e,t){const[n,r]=e;if(n.app!==t)return;const o=new _0({plugin:{setupFn:r,descriptor:n},ctx:Jn});n.packageName==="vuex"&&o.on.editInspectorState(s=>{o.sendInspectorState(s.inspectorId)}),r(o)}function ef(e,t){J.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(e)||Ue.highPerfModeEnabled&&!(t!=null&&t.inspectingComponent)||(J.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(e),Ci.forEach(n=>{S0(n,e)}))}O();O();var Or="__VUE_DEVTOOLS_ROUTER__",jn="__VUE_DEVTOOLS_ROUTER_INFO__",va,ya;(ya=(va=J)[jn])!=null||(va[jn]={currentRoute:null,routes:[]});var ba,Ea;(Ea=(ba=J)[Or])!=null||(ba[Or]={});new Proxy(J[jn],{get(e,t){return J[jn][t]}});new Proxy(J[Or],{get(e,t){if(t==="value")return J[Or]}});function A0(e){const t=new Map;return((e==null?void 0:e.getRoutes())||[]).filter(n=>!t.has(n.path)&&t.set(n.path,1))}function ki(e){return e.map(t=>{let{path:n,name:r,children:o,meta:s}=t;return o!=null&&o.length&&(o=ki(o)),{path:n,name:r,children:o,meta:s}})}function w0(e){if(e){const{fullPath:t,hash:n,href:r,path:o,name:s,matched:i,params:l,query:a}=e;return{fullPath:t,hash:n,href:r,path:o,name:s,params:l,query:a,matched:ki(i)}}return e}function C0(e,t){function n(){var r;const o=(r=e.app)==null?void 0:r.config.globalProperties.$router,s=w0(o==null?void 0:o.currentRoute.value),i=ki(A0(o)),l=console.warn;console.warn=()=>{},J[jn]={currentRoute:s?Kl(s):{},routes:Kl(i)},J[Or]=o,console.warn=l}n(),h0.on.componentUpdated(Un(()=>{var r;((r=t.value)==null?void 0:r.app)===e.app&&(n(),!Ue.highPerfModeEnabled&&Jn.hooks.callHook("routerInfoUpdated",{state:J[jn]}))},200))}function T0(e){return{async getInspectorTree(t){const n={...t,app:nt.value.app,rootNodes:[]};return await new Promise(r=>{e.callHookWith(async o=>{await Promise.all(o.map(s=>s(n))),r()},"getInspectorTree")}),n.rootNodes},async getInspectorState(t){const n={...t,app:nt.value.app,state:null},r={currentTab:`custom-inspector:${t.inspectorId}`};return await new Promise(o=>{e.callHookWith(async s=>{await Promise.all(s.map(i=>i(n,r))),o()},"getInspectorState")}),n.state},editInspectorState(t){const n=new Xm,r={...t,app:nt.value.app,set:(o,s=t.path,i=t.state.value,l)=>{n.set(o,s,i,l||n.createDefaultSetCallback(t.state))}};e.callHookWith(o=>{o.forEach(s=>s(r))},"editInspectorState")},sendInspectorState(t){const n=lo(t);e.callHook("sendInspectorState",{inspectorId:t,plugin:{descriptor:n.descriptor,setupFn:()=>({})}})},inspectComponentInspector(){return Km()},cancelInspectComponentInspector(){return Wm()},getComponentRenderCode(t){const n=Os(nt.value,t);if(n)return(n==null?void 0:n.type)instanceof Function?n.type.toString():n.render.toString()},scrollToComponent(t){return zm({id:t})},openInEditor:u0,getVueInspector:Ym,toggleApp(t,n){const r=Fo.value.find(o=>o.id===t);r&&(a0(t),l0(r),C0(r,nt),Jc(),ef(r.app,n))},inspectDOM(t){const n=Os(nt.value,t);if(n){const[r]=bi(n);r&&(J.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__=r)}},updatePluginSettings(t,n,r){d0(t,n,r)},getPluginSettings(t){return{options:c0(t),values:Zc(t)}}}}O();var Sa,Aa;(Aa=(Sa=J).__VUE_DEVTOOLS_ENV__)!=null||(Sa.__VUE_DEVTOOLS_ENV__={vitePluginDetected:!1});var wa=o0(),Ca,Ta;(Ta=(Ca=J).__VUE_DEVTOOLS_KIT_CONTEXT__)!=null||(Ca.__VUE_DEVTOOLS_KIT_CONTEXT__={hooks:wa,get state(){return{...Ue,activeAppRecordId:nt.id,activeAppRecord:nt.value,appRecords:Fo.value}},api:T0(wa)});var Jn=J.__VUE_DEVTOOLS_KIT_CONTEXT__;O();Tm(Om());var ka,Oa;(Oa=(ka=J).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__)!=null||(ka.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__={id:0,appIds:new Set});O();function k0(e){Ue.highPerfModeEnabled=e??!Ue.highPerfModeEnabled,!e&&nt.value&&ef(nt.value.app)}O();O();O();function O0(e){Ue.devtoolsClientDetected={...Ue.devtoolsClientDetected,...e};const t=Object.values(Ue.devtoolsClientDetected).some(Boolean);k0(!t)}var Pa,xa;(xa=(Pa=J).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__)!=null||(Pa.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__=O0);O();O();O();O();O();O();O();var P0=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},tf=class{constructor(e){this.generateIdentifier=e,this.kv=new P0}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},x0=class extends tf{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t=="object"?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};O();O();function D0(e){if("values"in Object)return Object.values(e);const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function R0(e,t){const n=D0(e);if("find"in n)return n.find(t);const r=n;for(let o=0;o<r.length;o++){const s=r[o];if(t(s))return s}}function Wn(e,t){Object.entries(e).forEach(([n,r])=>t(r,n))}function ao(e,t){return e.indexOf(t)!==-1}function Da(e,t){for(let n=0;n<e.length;n++){const r=e[n];if(t(r))return r}}var I0=class{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return R0(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}};O();O();var L0=e=>Object.prototype.toString.call(e).slice(8,-1),nf=e=>typeof e>"u",V0=e=>e===null,Pr=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,Rs=e=>Pr(e)&&Object.keys(e).length===0,rn=e=>Array.isArray(e),N0=e=>typeof e=="string",M0=e=>typeof e=="number"&&!isNaN(e),F0=e=>typeof e=="boolean",B0=e=>e instanceof RegExp,xr=e=>e instanceof Map,Dr=e=>e instanceof Set,rf=e=>L0(e)==="Symbol",$0=e=>e instanceof Date&&!isNaN(e.valueOf()),H0=e=>e instanceof Error,Ra=e=>typeof e=="number"&&isNaN(e),U0=e=>F0(e)||V0(e)||nf(e)||M0(e)||N0(e)||rf(e),j0=e=>typeof e=="bigint",W0=e=>e===1/0||e===-1/0,K0=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),z0=e=>e instanceof URL;O();var of=e=>e.replace(/\./g,"\\."),cs=e=>e.map(String).map(of).join("."),_r=e=>{const t=[];let n="";for(let o=0;o<e.length;o++){let s=e.charAt(o);if(s==="\\"&&e.charAt(o+1)==="."){n+=".",o++;continue}if(s==="."){t.push(n),n="";continue}n+=s}const r=n;return t.push(r),t};O();function Ct(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var sf=[Ct(nf,"undefined",()=>null,()=>{}),Ct(j0,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),Ct($0,"Date",e=>e.toISOString(),e=>new Date(e)),Ct(H0,"Error",(e,t)=>{const n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n},(e,t)=>{const n=new Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n}),Ct(B0,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),n=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,n)}),Ct(Dr,"set",e=>[...e.values()],e=>new Set(e)),Ct(xr,"map",e=>[...e.entries()],e=>new Map(e)),Ct(e=>Ra(e)||W0(e),"number",e=>Ra(e)?"NaN":e>0?"Infinity":"-Infinity",Number),Ct(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),Ct(z0,"URL",e=>e.toString(),e=>new URL(e))];function Bo(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var lf=Bo((e,t)=>rf(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{const r=n.symbolRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),G0=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),af=Bo(K0,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const n=G0[t[1]];if(!n)throw new Error("Trying to deserialize unknown typed array");return new n(e)});function uf(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var cf=Bo(uf,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};const r={};return n.forEach(o=>{r[o]=e[o]}),r},(e,t,n)=>{const r=n.classRegistry.getValue(t[1]);if(!r)throw new Error(`Trying to deserialize unknown class '${t[1]}' - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564`);return Object.assign(Object.create(r.prototype),e)}),ff=Bo((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{const r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),q0=[cf,lf,ff,af],Ia=(e,t)=>{const n=Da(q0,o=>o.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};const r=Da(sf,o=>o.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},df={};sf.forEach(e=>{df[e.annotation]=e});var Y0=(e,t,n)=>{if(rn(t))switch(t[0]){case"symbol":return lf.untransform(e,t,n);case"class":return cf.untransform(e,t,n);case"custom":return ff.untransform(e,t,n);case"typed-array":return af.untransform(e,t,n);default:throw new Error("Unknown transformation: "+t)}else{const r=df[t];if(!r)throw new Error("Unknown transformation: "+t);return r.untransform(e,n)}};O();var Dn=(e,t)=>{if(t>e.size)throw new Error("index out of bounds");const n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function pf(e){if(ao(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(ao(e,"prototype"))throw new Error("prototype is not allowed as a property");if(ao(e,"constructor"))throw new Error("constructor is not allowed as a property")}var J0=(e,t)=>{pf(t);for(let n=0;n<t.length;n++){const r=t[n];if(Dr(e))e=Dn(e,+r);else if(xr(e)){const o=+r,s=+t[++n]==0?"key":"value",i=Dn(e,o);switch(s){case"key":e=i;break;case"value":e=e.get(i);break}}else e=e[r]}return e},Is=(e,t,n)=>{if(pf(t),t.length===0)return n(e);let r=e;for(let s=0;s<t.length-1;s++){const i=t[s];if(rn(r)){const l=+i;r=r[l]}else if(Pr(r))r=r[i];else if(Dr(r)){const l=+i;r=Dn(r,l)}else if(xr(r)){if(s===t.length-2)break;const a=+i,u=+t[++s]==0?"key":"value",c=Dn(r,a);switch(u){case"key":r=c;break;case"value":r=r.get(c);break}}}const o=t[t.length-1];if(rn(r)?r[+o]=n(r[+o]):Pr(r)&&(r[o]=n(r[o])),Dr(r)){const s=Dn(r,+o),i=n(s);s!==i&&(r.delete(s),r.add(i))}if(xr(r)){const s=+t[t.length-2],i=Dn(r,s);switch(+o==0?"key":"value"){case"key":{const a=n(i);r.set(a,r.get(i)),a!==i&&r.delete(i);break}case"value":{r.set(i,n(r.get(i)));break}}}return e};function Ls(e,t,n=[]){if(!e)return;if(!rn(e)){Wn(e,(s,i)=>Ls(s,t,[...n,..._r(i)]));return}const[r,o]=e;o&&Wn(o,(s,i)=>{Ls(s,t,[...n,..._r(i)])}),t(r,n)}function X0(e,t,n){return Ls(t,(r,o)=>{e=Is(e,o,s=>Y0(s,r,n))}),e}function Q0(e,t){function n(r,o){const s=J0(e,_r(o));r.map(_r).forEach(i=>{e=Is(e,i,()=>s)})}if(rn(t)){const[r,o]=t;r.forEach(s=>{e=Is(e,_r(s),()=>e)}),o&&Wn(o,n)}else Wn(t,n);return e}var Z0=(e,t)=>Pr(e)||rn(e)||xr(e)||Dr(e)||uf(e,t);function ev(e,t,n){const r=n.get(e);r?r.push(t):n.set(e,[t])}function tv(e,t){const n={};let r;return e.forEach(o=>{if(o.length<=1)return;t||(o=o.map(l=>l.map(String)).sort((l,a)=>l.length-a.length));const[s,...i]=o;s.length===0?r=i.map(cs):n[cs(s)]=i.map(cs)}),r?Rs(n)?[r]:[r,n]:Rs(n)?void 0:n}var hf=(e,t,n,r,o=[],s=[],i=new Map)=>{var l;const a=U0(e);if(!a){ev(e,o,t);const m=i.get(e);if(m)return r?{transformedValue:null}:m}if(!Z0(e,n)){const m=Ia(e,n),v=m?{transformedValue:m.value,annotations:[m.type]}:{transformedValue:e};return a||i.set(e,v),v}if(ao(s,e))return{transformedValue:null};const u=Ia(e,n),c=(l=u==null?void 0:u.value)!=null?l:e,f=rn(c)?[]:{},p={};Wn(c,(m,v)=>{if(v==="__proto__"||v==="constructor"||v==="prototype")throw new Error(`Detected property ${v}. This is a prototype pollution risk, please remove it from your object.`);const b=hf(m,t,n,r,[...o,v],[...s,e],i);f[v]=b.transformedValue,rn(b.annotations)?p[v]=b.annotations:Pr(b.annotations)&&Wn(b.annotations,(y,S)=>{p[of(v)+"."+S]=y})});const d=Rs(p)?{transformedValue:f,annotations:u?[u.type]:void 0}:{transformedValue:f,annotations:u?[u.type,p]:p};return a||i.set(e,d),d};O();O();function gf(e){return Object.prototype.toString.call(e).slice(8,-1)}function La(e){return gf(e)==="Array"}function nv(e){if(gf(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function rv(e,t,n,r,o){const s={}.propertyIsEnumerable.call(r,t)?"enumerable":"nonenumerable";s==="enumerable"&&(e[t]=n),o&&s==="nonenumerable"&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function Vs(e,t={}){if(La(e))return e.map(o=>Vs(o,t));if(!nv(e))return e;const n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((o,s)=>{if(La(t.props)&&!t.props.includes(s))return o;const i=e[s],l=Vs(i,t);return rv(o,s,l,e,t.nonenumerable),o},{})}var ke=class{constructor({dedupe:e=!1}={}){this.classRegistry=new x0,this.symbolRegistry=new tf(t=>{var n;return(n=t.description)!=null?n:""}),this.customTransformerRegistry=new I0,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,n=hf(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});const o=tv(t,this.dedupe);return o&&(r.meta={...r.meta,referentialEqualities:o}),r}deserialize(e){const{json:t,meta:n}=e;let r=Vs(t);return n!=null&&n.values&&(r=X0(r,n.values,this)),n!=null&&n.referentialEqualities&&(r=Q0(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};ke.defaultInstance=new ke;ke.serialize=ke.defaultInstance.serialize.bind(ke.defaultInstance);ke.deserialize=ke.defaultInstance.deserialize.bind(ke.defaultInstance);ke.stringify=ke.defaultInstance.stringify.bind(ke.defaultInstance);ke.parse=ke.defaultInstance.parse.bind(ke.defaultInstance);ke.registerClass=ke.defaultInstance.registerClass.bind(ke.defaultInstance);ke.registerSymbol=ke.defaultInstance.registerSymbol.bind(ke.defaultInstance);ke.registerCustom=ke.defaultInstance.registerCustom.bind(ke.defaultInstance);ke.allowErrorProps=ke.defaultInstance.allowErrorProps.bind(ke.defaultInstance);O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();O();var Va,Na;(Na=(Va=J).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__)!=null||(Va.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__=[]);var Ma,Fa;(Fa=(Ma=J).__VUE_DEVTOOLS_KIT_RPC_CLIENT__)!=null||(Ma.__VUE_DEVTOOLS_KIT_RPC_CLIENT__=null);var Ba,$a;($a=(Ba=J).__VUE_DEVTOOLS_KIT_RPC_SERVER__)!=null||(Ba.__VUE_DEVTOOLS_KIT_RPC_SERVER__=null);var Ha,Ua;(Ua=(Ha=J).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__)!=null||(Ha.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__=null);var ja,Wa;(Wa=(ja=J).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__)!=null||(ja.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__=null);var Ka,za;(za=(Ka=J).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__)!=null||(Ka.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__=null);O();O();O();O();O();O();O();const ov=JSON.parse(`{"repo":"https://git.pleshevski.ru/pleshevskiy/pleshevski.ru","locales":{"/":{"selectLanguageName":"Русский","navbar":["/","/works"],"notFound":["Верните страницу!","Мы потеряли страницу...","Вы заблокированы в лабиринте.","Искали кота?","Страница украдена.","Ошиблись в параллельной вселенной."],"backToHome":"Вернуться на главную","worksTable":{"name":"Название","description":"Описание","role":"Роль","technologies":"Технологии","status":"Статус","dates":"Даты"}},"/eng/":{"selectLanguageName":"English","navbar":["/eng/","/eng/works"],"notFound":["Return the page!","We lost a page...","You're blocked in a labyrinth.","Looking for a cat?","The page has been stolen.","Wrong turn in parallel universe."],"backToHome":"Back to home","worksTable":{"name":"Name","description":"Description","role":"Role","technologies":"Technologies","status":"Status","dates":"Dates"}}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"logo":null,"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"heading","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),sv=ye(ov),_f=()=>sv,mf=Symbol(""),iv=()=>{const e=Je(mf);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},lv=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},av=zt({enhance({app:e}){const t=_f(),n=e._context.provides[ii],r=N(()=>lv(t.value,n.routeLocale.value));e.provide(mf,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),uv=Object.freeze(Object.defineProperty({__proto__:null,default:av},Symbol.toStringTag,{value:"Module"})),cv=()=>_f(),We=()=>iv(),vf=Symbol(""),fv=e=>{const t=(n=e.value)=>{const r=window.document.documentElement;r.dataset.theme=n?"dark":"light"};ot(()=>{hi(e,t)}),Oo(()=>{t()})},Oi=()=>{const e=Je(vf);if(!e)throw new Error("useDarkMode() is called without provider.");return e},dv=()=>{const e=We(),t=i_(),n=_i("vuepress-color-scheme",e.value.colorMode),r=N({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});bn(vf,r),fv(r)};let fs=null,or=null;const pv={wait:()=>fs,pending:()=>{fs=new Promise(e=>{or=e})},resolve:()=>{or==null||or(),fs=null,or=null}},yf=()=>pv,Kn=(e,t)=>{const{notFound:n,meta:r,path:o}=kr(e,t);return n?{text:o,link:o}:{text:r.title||o,link:o}},Mn=(e="",t="")=>Lc(t)||$r(t)?t:`${Sh(e)}${t}`,hv=e=>({text:e.title,link:e.link,children:Pi(e.children)}),Pi=e=>e?e.map(t=>hv(t)):[],bf=(e,t)=>[{text:e.title,children:Pi(t)}],Ef=(e,t,n,r="")=>{const o=(s,i)=>{var a;const l=Et(s)?Kn(Mn(i,s)):Et(s.link)?{...s,link:Vc(s.link)?Kn(Mn(i,s.link)).link:s.link}:s;if("children"in l)return{...l,children:l.children.map(u=>o(u,Mn(i,l.prefix)))};if(l.link===n){const u=((a=t[0])==null?void 0:a.level)===1?t[0].children:t;return{...l,children:Pi(u)}}return l};return e.map(s=>o(s,r))},gv=(e,t,n,r)=>{const o=w_(e).sort((s,i)=>i.length-s.length);for(const s of o)if(Ic(decodeURI(r),s)){const i=e[s];return i?i==="heading"?bf(t,n):Ef(i,n,r,s):[]}return console.warn(`${decodeURI(r)} is missing sidebar config.`),[]},Sf=Symbol("sidebarItems"),xi=()=>{const e=Je(Sf);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},_v=(e,t,n,r,o)=>e===!1?[]:e==="heading"?bf(t,o):Array.isArray(e)?Ef(e,o,n,r):ri(e)?gv(e,t,o,n):[],mv=()=>{const e=We(),t=xt(),n=qn(),r=Kt(),o=Hr(),s=N(()=>t.value.home?!1:t.value.sidebar??e.value.sidebar??"heading"),i=N(()=>_v(s.value,n.value,r.path,o.value,n.value.headers));bn(Sf,i)},vv=pe({__name:"Badge",props:{type:{default:"tip"},text:{default:""},vertical:{default:void 0}},setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Pe=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};function yv(e,t,n,r,o,s){return j(),te("span",{class:rt(["vp-badge",n.type]),style:zn({verticalAlign:n.vertical})},[De(e.$slots,"default",{},()=>[nn(ce(n.text),1)])],6)}const bv=Pe(vv,[["render",yv],["__file","Badge.vue"]]),Ev=pe({__name:"VPHomeFeatures",setup(e,{expose:t}){t();const n=xt(),r=N(()=>n.value.features??[]),o={frontmatter:n,features:r};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),Sv={key:0,class:"vp-features"};function Av(e,t,n,r,o,s){return r.features.length?(j(),te("div",Sv,[(j(!0),te(Ae,null,Ht(r.features,i=>(j(),te("div",{key:i.title,class:"vp-feature"},[X("h2",null,ce(i.title),1),X("p",null,ce(i.details),1)]))),128))])):Me("",!0)}const wv=Pe(Ev,[["render",Av],["__file","VPHomeFeatures.vue"]]),Cv=pe({__name:"VPHomeFooter",setup(e,{expose:t}){t();const n=xt(),r=N(()=>n.value.footer),o=N(()=>n.value.footerHtml),s={frontmatter:n,footer:r,footerHtml:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),Tv=["innerHTML"],kv=["textContent"];function Ov(e,t,n,r,o,s){return r.footer?(j(),te(Ae,{key:0},[r.footerHtml?(j(),te("div",{key:0,class:"vp-footer","vp-footer":"",innerHTML:r.footer},null,8,Tv)):(j(),te("div",{key:1,class:"vp-footer","vp-footer":"",textContent:ce(r.footer)},null,8,kv))],64)):Me("",!0)}const Pv=Pe(Cv,[["render",Ov],["__file","VPHomeFooter.vue"]]),xv=pe({__name:"VPAutoLink",props:{config:{}},setup(e,{expose:t}){t();const n={get AutoLink(){return Fg}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function Dv(e,t,n,r,o,s){return j(),Ie(r.AutoLink,{config:n.config},qd({before:Re(()=>[De(e.$slots,"before",Uo(oo(n.config)))]),after:Re(()=>[De(e.$slots,"after",Uo(oo(n.config)))]),_:2},[e.$slots.default?{name:"default",fn:Re(()=>[De(e.$slots,"default",Uo(oo(n.config)))]),key:"0"}:void 0]),1032,["config"])}const Xn=Pe(xv,[["render",Dv],["__file","VPAutoLink.vue"]]),Rv=pe({__name:"VPHomeHero",setup(e,{expose:t}){t();const n=xt(),r=li(),o=Oi(),s=N(()=>n.value.heroText===null?null:n.value.heroText||r.value.title||"Hello"),i=N(()=>n.value.tagline===null?null:n.value.tagline||r.value.description||"Welcome to your VuePress site"),l=N(()=>o.value&&n.value.heroImageDark!==void 0?n.value.heroImageDark:n.value.heroImage),a=N(()=>n.value.heroAlt||s.value||"hero"),u=N(()=>n.value.heroHeight??280),c=N(()=>Array.isArray(n.value.actions)?n.value.actions.map(({type:d="primary",...m})=>({type:d,...m})):[]),p={frontmatter:n,siteLocale:r,isDarkMode:o,heroText:s,tagline:i,heroImage:l,heroAlt:a,heroHeight:u,actions:c,HomeHeroImage:()=>{if(!l.value)return null;const d=Ee("img",{class:"vp-hero-image",src:ci(l.value),alt:a.value,height:u.value});return n.value.heroImageDark===void 0?d:Ee(ai,()=>d)},VPAutoLink:Xn};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Iv={class:"vp-hero"},Lv={key:0,id:"main-title"},Vv={key:1,class:"vp-hero-description"},Nv={key:2,class:"vp-hero-actions"};function Mv(e,t,n,r,o,s){return j(),te("header",Iv,[se(r.HomeHeroImage),r.heroText?(j(),te("h1",Lv,ce(r.heroText),1)):Me("",!0),r.tagline?(j(),te("p",Vv,ce(r.tagline),1)):Me("",!0),r.actions.length?(j(),te("p",Nv,[(j(!0),te(Ae,null,Ht(r.actions,i=>(j(),Ie(r.VPAutoLink,{key:i.text,class:rt(["vp-hero-action-button",[i.type]]),config:i},null,8,["class","config"]))),128))])):Me("",!0)])}const Fv=Pe(Rv,[["render",Mv],["__file","VPHomeHero.vue"]]),Bv=pe({__name:"VPHome",setup(e,{expose:t}){t();const n={VPHomeFeatures:wv,VPHomeFooter:Pv,VPHomeHero:Fv,get Content(){return ui}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),$v={class:"vp-home"},Hv={"vp-content":""};function Uv(e,t,n,r,o,s){return j(),te("main",$v,[se(r.VPHomeHero),se(r.VPHomeFeatures),X("div",Hv,[se(r.Content)]),se(r.VPHomeFooter)])}const jv=Pe(Bv,[["render",Uv],["__file","VPHome.vue"]]),Wv=pe({__name:"VPNavbarBrand",setup(e,{expose:t}){t();const n=Hr(),r=li(),o=We(),s=Oi(),i=N(()=>o.value.home||n.value),l=N(()=>r.value.title),a=N(()=>s.value&&o.value.logoDark!==void 0?o.value.logoDark:o.value.logo),u=N(()=>o.value.logoAlt??l.value),c=N(()=>l.value.toLocaleUpperCase().trim()===u.value.toLocaleUpperCase().trim()),p={routeLocale:n,siteLocale:r,themeLocale:o,isDarkMode:s,navbarBrandLink:i,navbarBrandTitle:l,navbarBrandLogo:a,navbarBrandLogoAlt:u,navBarLogoAltMatchesTitle:c,NavbarBrandLogo:()=>{if(!a.value)return null;const d=Ee("img",{class:"vp-site-logo",src:ci(a.value),alt:u.value});return o.value.logoDark===void 0?d:Ee(ai,()=>d)},get RouteLink(){return Lo}};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Kv=["aria-hidden"];function zv(e,t,n,r,o,s){return j(),Ie(r.RouteLink,{to:r.navbarBrandLink},{default:Re(()=>[se(r.NavbarBrandLogo),r.navbarBrandTitle?(j(),te("span",{key:0,class:rt(["vp-site-name",{"vp-hide-mobile":r.navbarBrandLogo}]),"aria-hidden":r.navBarLogoAltMatchesTitle},ce(r.navbarBrandTitle),11,Kv)):Me("",!0)]),_:1},8,["to"])}const Gv=Pe(Wv,[["render",zv],["__file","VPNavbarBrand.vue"]]),qv=pe({__name:"VPDropdownTransition",setup(e,{expose:t}){t();const o={setHeight:s=>{s.style.height=`${s.scrollHeight}px`},unsetHeight:s=>{s.style.height=""}};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function Yv(e,t,n,r,o,s){return j(),Ie(ni,{name:"vp-dropdown",onEnter:r.setHeight,onAfterEnter:r.unsetHeight,onBeforeLeave:r.setHeight},{default:Re(()=>[De(e.$slots,"default")]),_:3})}const Af=Pe(qv,[["render",Yv],["__file","VPDropdownTransition.vue"]]),Jv=pe({__name:"VPNavbarDropdown",props:{config:{}},setup(e,{expose:t}){t();const n=e,{config:r}=Au(n),o=Kt(),[s,i]=Pc(!1),l=N(()=>r.value.ariaLabel||r.value.text),a=(f,p)=>p[p.length-1]===f,u=f=>{f.detail===0?i():i(!1)};Ke(()=>o.path,()=>{i(!1)});const c={props:n,config:r,route:o,open:s,toggleOpen:i,dropdownAriaLabel:l,isLastItemOfArray:a,handleDropdown:u,VPAutoLink:Xn,VPDropdownTransition:Af};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}),Xv=["aria-label"],Qv={class:"title"},Zv=["aria-label"],e1={class:"title"},t1={class:"vp-navbar-dropdown"},n1={class:"vp-navbar-dropdown-subtitle"},r1={key:1},o1={class:"vp-navbar-dropdown-subitem-wrapper"};function s1(e,t,n,r,o,s){return j(),te("div",{class:rt(["vp-navbar-dropdown-wrapper",{open:r.open}])},[X("button",{class:"vp-navbar-dropdown-title",type:"button","aria-label":r.dropdownAriaLabel,onClick:r.handleDropdown},[X("span",Qv,ce(r.config.text),1),t[1]||(t[1]=X("span",{class:"arrow down"},null,-1))],8,Xv),X("button",{class:"vp-navbar-dropdown-title-mobile",type:"button","aria-label":r.dropdownAriaLabel,onClick:t[0]||(t[0]=()=>r.toggleOpen())},[X("span",e1,ce(r.config.text),1),X("span",{class:rt(["arrow",r.open?"down":"right"])},null,2)],8,Zv),se(r.VPDropdownTransition,null,{default:Re(()=>[go(X("ul",t1,[(j(!0),te(Ae,null,Ht(r.config.children,i=>(j(),te("li",{key:i.text,class:"vp-navbar-dropdown-item"},["children"in i?(j(),te(Ae,{key:0},[X("h4",n1,[i.link?(j(),Ie(r.VPAutoLink,{key:0,config:i,onFocusout:()=>{r.isLastItemOfArray(i,r.config.children)&&i.children.length===0&&(r.open=!1)}},null,8,["config","onFocusout"])):(j(),te("span",r1,ce(i.text),1))]),X("ul",o1,[(j(!0),te(Ae,null,Ht(i.children,l=>(j(),te("li",{key:l.link,class:"vp-navbar-dropdown-subitem"},[se(r.VPAutoLink,{config:l,onFocusout:()=>{r.isLastItemOfArray(l,i.children)&&r.isLastItemOfArray(i,r.config.children)&&r.toggleOpen(!1)}},null,8,["config","onFocusout"])]))),128))])],64)):(j(),Ie(r.VPAutoLink,{key:1,config:i,onFocusout:()=>{r.isLastItemOfArray(i,r.config.children)&&r.toggleOpen(!1)}},null,8,["config","onFocusout"]))]))),128))],512),[[yo,r.open]])]),_:1})],2)}const i1=Pe(Jv,[["render",s1],["__file","VPNavbarDropdown.vue"]]),wf=(e,t="")=>Et(e)?Kn(Mn(t,e)):"children"in e?{...e,children:e.children.map(n=>wf(n,Mn(t,e.prefix)))}:{...e,link:Vc(e.link)?Kn(Mn(t,e.link)).link:e.link},l1=()=>{const e=We();return N(()=>(e.value.navbar||[]).map(t=>wf(t)))},Cf=e=>!Do(e)||e.includes("github.com")?"GitHub":e.includes("bitbucket.org")?"Bitbucket":e.includes("gitlab.com")?"GitLab":e.includes("gitee.com")?"Gitee":null,a1=()=>{const e=We(),t=N(()=>e.value.repo),n=N(()=>t.value?Cf(t.value):null),r=N(()=>t.value&&!Do(t.value)?`https://github.com/${t.value}`:t.value),o=N(()=>r.value?e.value.repoLabel?e.value.repoLabel:n.value===null?"Source":n.value:null);return N(()=>!r.value||!o.value?[]:[{text:o.value,link:r.value}])},u1=()=>{const e=Kt(),t=S_(),n=Hr(),r=Cc(),o=li(),s=cv(),i=We();return N(()=>{const l=Object.keys(r.value.locales);if(l.length<2)return[];const a=e.path,u=e.fullPath;return[{text:`${i.value.selectLanguageText}`,ariaLabel:`${i.value.selectLanguageAriaLabel??i.value.selectLanguageText}`,children:l.map(f=>{var y,S;const p=((y=r.value.locales)==null?void 0:y[f])??{},d=((S=s.value.locales)==null?void 0:S[f])??{},m=`${p.lang}`,v=d.selectLanguageName??m;if(m===o.value.lang)return{text:v,activeMatch:".",link:e.fullPath};const b=a.replace(n.value,f);return{text:v,link:t.value.some(g=>g===b)?u.replace(a,b):d.home??f}})}]})},c1="719px",f1={mobile:c1};var Rr;(function(e){e.Mobile="mobile"})(Rr||(Rr={}));const d1={[Rr.Mobile]:Number.parseInt(f1.mobile.replace("px",""),10)},Tf=(e,t)=>{const n=d1[e];Number.isInteger(n)&&(Xe("orientationchange",()=>{t(n)},!1),Xe("resize",()=>{t(n)},!1),ot(()=>{t(n)}))},p1=pe({__name:"VPNavbarItems",setup(e,{expose:t}){t();const n=l1(),r=u1(),o=a1(),s=ye(!1),i=N(()=>We().value.navbarLabel??"site navigation"),l=N(()=>[...n.value,...r.value,...o.value]);Tf(Rr.Mobile,u=>{s.value=window.innerWidth<u});const a={navbarConfig:n,navbarSelectLanguage:r,navbarRepo:o,isMobile:s,navbarLabel:i,navbarLinks:l,VPAutoLink:Xn,VPNavbarDropdown:i1};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),h1=["aria-label"];function g1(e,t,n,r,o,s){return r.navbarLinks.length?(j(),te("nav",{key:0,class:"vp-navbar-items","aria-label":r.navbarLabel},[(j(!0),te(Ae,null,Ht(r.navbarLinks,i=>(j(),te("div",{key:i.text,class:"vp-navbar-item"},["children"in i?(j(),Ie(r.VPNavbarDropdown,{key:0,class:rt({mobile:r.isMobile}),config:i},null,8,["class","config"])):(j(),Ie(r.VPAutoLink,{key:1,config:i},null,8,["config"]))]))),128))],8,h1)):Me("",!0)}const kf=Pe(p1,[["render",g1],["__file","VPNavbarItems.vue"]]),_1={},m1={class:"dark-icon",viewBox:"0 0 32 32"};function v1(e,t){return j(),te("svg",m1,t[0]||(t[0]=[X("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1)]))}const y1=Pe(_1,[["render",v1],["__file","VPDarkIcon.vue"]]),b1={},E1={class:"light-icon",viewBox:"0 0 32 32"};function S1(e,t){return j(),te("svg",E1,t[0]||(t[0]=[Ap('<path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path>',9)]))}const A1=Pe(b1,[["render",S1],["__file","VPLightIcon.vue"]]),w1=pe({__name:"VPToggleColorModeButton",setup(e,{expose:t}){t();const n=We(),r=Oi(),s={themeLocale:n,isDarkMode:r,toggleColorMode:()=>{r.value=!r.value},VPDarkIcon:y1,VPLightIcon:A1};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),C1=["title"];function T1(e,t,n,r,o,s){return j(),te("button",{type:"button",class:"vp-toggle-color-mode-button",title:r.themeLocale.toggleColorMode,onClick:r.toggleColorMode},[go(se(r.VPLightIcon,null,null,512),[[yo,!r.isDarkMode]]),go(se(r.VPDarkIcon,null,null,512),[[yo,r.isDarkMode]])],8,C1)}const k1=Pe(w1,[["render",T1],["__file","VPToggleColorModeButton.vue"]]),O1=pe({__name:"VPToggleSidebarButton",emits:["toggle"],setup(e,{expose:t}){t();const r={themeLocale:We()};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),P1=["title"];function x1(e,t,n,r,o,s){return j(),te("div",{class:"vp-toggle-sidebar-button",title:r.themeLocale.toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},t[1]||(t[1]=[X("div",{class:"icon","aria-hidden":"true"},[X("span"),X("span"),X("span")],-1)]),8,P1)}const D1=Pe(O1,[["render",x1],["__file","VPToggleSidebarButton.vue"]]),R1=pe({__name:"VPNavbar",emits:["toggleSidebar"],setup(e,{expose:t}){t();const n=Dc("SearchBox")?Xs("SearchBox"):()=>null,r=We(),o=Bi("navbar"),s=Bi("navbar-brand"),i=ye(0),l=N(()=>i.value?{maxWidth:`${i.value}px`}:{}),a=(c,f)=>{var m;const p=(m=c==null?void 0:c.ownerDocument.defaultView)==null?void 0:m.getComputedStyle(c,null)[f],d=Number.parseInt(p,10);return Number.isNaN(d)?0:d};Tf(Rr.Mobile,c=>{var p;const f=a(o.value,"paddingLeft")+a(o.value,"paddingRight");window.innerWidth<c?i.value=0:i.value=o.value.offsetWidth-f-(((p=s.value)==null?void 0:p.offsetWidth)??0)});const u={SearchBox:n,themeLocale:r,navbar:o,navbarBrand:s,linksWrapperMaxWidth:i,linksWrapperStyle:l,getCssValue:a,VPNavbarBrand:Gv,VPNavbarItems:kf,VPToggleColorModeButton:k1,VPToggleSidebarButton:D1};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),I1={ref:"navbar",class:"vp-navbar","vp-navbar":""},L1={ref:"navbar-brand"};function V1(e,t,n,r,o,s){return j(),te("header",I1,[se(r.VPToggleSidebarButton,{onToggle:t[0]||(t[0]=i=>e.$emit("toggleSidebar"))}),X("span",L1,[se(r.VPNavbarBrand)],512),X("div",{class:"vp-navbar-items-wrapper",style:zn(r.linksWrapperStyle)},[De(e.$slots,"before"),se(r.VPNavbarItems,{class:"vp-hide-mobile"}),De(e.$slots,"after"),r.themeLocale.colorModeSwitch?(j(),Ie(r.VPToggleColorModeButton,{key:0})):Me("",!0),se(r.SearchBox)],4)],512)}const N1=Pe(R1,[["render",V1],["__file","VPNavbar.vue"]]),M1={},F1={class:"edit-icon",viewBox:"0 0 1024 1024"};function B1(e,t){return j(),te("svg",F1,t[0]||(t[0]=[X("g",{fill:"currentColor"},[X("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),X("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})],-1)]))}const $1=Pe(M1,[["render",B1],["__file","VPEditIcon.vue"]]),H1=()=>{const e=We(),t=qn(),n=xt();return N(()=>{var o;return n.value.contributors??e.value.contributors??!0?((o=t.value.git)==null?void 0:o.contributors)??null:null})},U1={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},j1=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=Cf(e);return n!==null?U1[n]:null},W1=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const s=j1({docsRepo:e,editLinkPattern:o});return s?s.replace(/:repo/,Do(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,dc(`${fc(n)}/${r}`)):null},K1=()=>{const e=We(),t=qn(),n=xt();return N(()=>{if(!(n.value.editLink??e.value.editLink??!0))return null;const{repo:o,docsRepo:s=o,docsBranch:i="main",docsDir:l="",editLinkText:a}=e.value;if(!s)return null;const u=W1({docsRepo:s,docsBranch:i,docsDir:l,filePathRelative:t.value.filePathRelative,editLinkPattern:n.value.editLinkPattern??e.value.editLinkPattern});return u?{text:a??"Edit this page",link:u}:null})},z1=()=>{const e=We(),t=qn(),n=xt();return N(()=>{var s;return!(n.value.lastUpdated??e.value.lastUpdated??!0)||!((s=t.value.git)!=null&&s.updatedTime)?null:new Date(t.value.git.updatedTime).toLocaleString()})},G1=pe({__name:"VPPageMeta",setup(e,{expose:t}){t();const n=We(),r=K1(),o=z1(),s=H1(),i={themeLocale:n,editLink:r,lastUpdated:o,contributors:s,VPAutoLink:Xn,VPEditIcon:$1};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),q1={class:"vp-page-meta"},Y1={key:0,class:"vp-meta-item edit-link"},J1={class:"vp-meta-item git-info"},X1={key:0,class:"vp-meta-item last-updated"},Q1={class:"meta-item-label"},Z1={class:"meta-item-info"},ey={key:1,class:"vp-meta-item contributors"},ty={class:"meta-item-label"},ny={class:"meta-item-info"},ry=["title"];function oy(e,t,n,r,o,s){const i=Xs("ClientOnly");return j(),te("footer",q1,[r.editLink?(j(),te("div",Y1,[se(r.VPAutoLink,{class:"label",config:r.editLink},{before:Re(()=>[se(r.VPEditIcon)]),_:1},8,["config"])])):Me("",!0),X("div",J1,[r.lastUpdated?(j(),te("div",X1,[X("span",Q1,ce(r.themeLocale.lastUpdatedText)+": ",1),se(i,null,{default:Re(()=>[X("span",Z1,ce(r.lastUpdated),1)]),_:1})])):Me("",!0),r.contributors&&r.contributors.length?(j(),te("div",ey,[X("span",ty,ce(r.themeLocale.contributorsText)+": ",1),X("span",ny,[(j(!0),te(Ae,null,Ht(r.contributors,(l,a)=>(j(),te(Ae,{key:a},[X("span",{class:"contributor",title:`email: ${l.email}`},ce(l.name),9,ry),a!==r.contributors.length-1?(j(),te(Ae,{key:0},[nn(", ")],64)):Me("",!0)],64))),128))])])):Me("",!0)])])}const sy=Pe(G1,[["render",oy],["__file","VPPageMeta.vue"]]),iy=()=>{const e=Gn(),t=Kt();return n=>{n&&(Lc(n)?t.path!==n&&e.push(n):$r(n)?window.open(n):e.push(encodeURI(n)))}},Ga=(e,t)=>e===!1?!1:Et(e)?Kn(e,t):ri(e)?{...e,link:Kn(e.link,t).link}:null,Ns=(e,t,n)=>{const r=e.findIndex(s=>s.link===t);if(r!==-1){const s=e[r+n];return s?s.link?s:"prefix"in s&&!kr(s.prefix).notFound?{...s,link:s.prefix}:null:null}for(const s of e)if("children"in s){const i=Ns(s.children,t,n);if(i)return i}const o=e.findIndex(s=>"prefix"in s&&s.prefix===t);if(o!==-1){const s=e[o+n];return s?s.link?s:"prefix"in s&&!kr(s.prefix).notFound?{...s,link:s.prefix}:null:null}return null},ly=()=>{const e=xt(),t=We(),n=xi(),r=Kt(),o=N(()=>{const i=Ga(e.value.prev,r.path);return i===!1?null:i??(t.value.prev===!1?null:Ns(n.value,r.path,-1))}),s=N(()=>{const i=Ga(e.value.next,r.path);return i===!1?null:i??(t.value.next===!1?null:Ns(n.value,r.path,1))});return{prevLink:o,nextLink:s}},ay=pe({__name:"VPPageNav",setup(e,{expose:t}){t();const n=We(),r=iy(),{prevLink:o,nextLink:s}=ly(),i=N(()=>n.value.pageNavbarLabel??"page navigation");Xe("keydown",a=>{a.altKey&&(a.key==="ArrowRight"?s.value&&(r(s.value.link),a.preventDefault()):a.key==="ArrowLeft"&&o.value&&(r(o.value.link),a.preventDefault()))});const l={themeLocale:n,navigate:r,prevLink:o,nextLink:s,navbarLabel:i,VPAutoLink:Xn};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),uy=["aria-label"],cy={class:"hint"},fy={class:"link"},dy={class:"hint"},py={class:"link"};function hy(e,t,n,r,o,s){return r.prevLink||r.nextLink?(j(),te("nav",{key:0,class:"vp-page-nav","aria-label":r.navbarLabel},[r.prevLink?(j(),Ie(r.VPAutoLink,{key:0,class:"prev",config:r.prevLink},{default:Re(()=>[X("div",cy,[t[0]||(t[0]=X("span",{class:"arrow left"},null,-1)),nn(" "+ce(r.themeLocale.prev??"Prev"),1)]),X("div",fy,[X("span",null,ce(r.prevLink.text),1)])]),_:1},8,["config"])):Me("",!0),r.nextLink?(j(),Ie(r.VPAutoLink,{key:1,class:"next",config:r.nextLink},{default:Re(()=>[X("div",dy,[nn(ce(r.themeLocale.next??"Next")+" ",1),t[1]||(t[1]=X("span",{class:"arrow right"},null,-1))]),X("div",py,[X("span",null,ce(r.nextLink.text),1)])]),_:1},8,["config"])):Me("",!0)],8,uy)):Me("",!0)}const gy=Pe(ay,[["render",hy],["__file","VPPageNav.vue"]]),_y=pe({__name:"VPPage",setup(e,{expose:t}){t();const n={VPPageMeta:sy,VPPageNav:gy,get Content(){return ui}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),my={class:"vp-page"},vy={"vp-content":""};function yy(e,t,n,r,o,s){return j(),te("main",my,[De(e.$slots,"top"),X("div",vy,[De(e.$slots,"content-top"),se(r.Content),De(e.$slots,"content-bottom")]),se(r.VPPageMeta),se(r.VPPageNav),De(e.$slots,"bottom")])}const by=Pe(_y,[["render",yy],["__file","VPPage.vue"]]),qa=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Ey=(e,t)=>{if(t.hash===e)return!0;const n=qa(t.path),r=qa(e);return n===r},Of=(e,t)=>e.link&&Ey(e.link,t)?!0:"children"in e?e.children.some(n=>Of(n,t)):!1,Sy=pe({__name:"VPSidebarItem",props:{item:{},depth:{default:0}},setup(e,{expose:t}){t();const n=e,{item:r,depth:o}=Au(n),s=Kt(),i=Gn(),l=N(()=>"collapsible"in r.value&&r.value.collapsible),a=N(()=>Of(r.value,s)),u=N(()=>({"vp-sidebar-item":!0,"vp-sidebar-heading":o.value===0,active:a.value,collapsible:l.value})),c=N(()=>l.value?a.value:!0),[f,p]=Pc(c.value),d=b=>{l.value&&(b.preventDefault(),p())},m=i.afterEach(()=>{an(()=>{f.value=c.value})});Js(()=>{m()});const v={props:n,item:r,depth:o,route:s,router:i,collapsible:l,isActive:a,itemClass:u,isOpenDefault:c,isOpen:f,toggleIsOpen:p,onClick:d,unregisterRouterHook:m,VPAutoLink:Xn,VPDropdownTransition:Af};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),Ay={class:"vp-sidebar-children"};function wy(e,t,n,r,o,s){const i=Xs("VPSidebarItem",!0);return j(),te("li",null,[r.item.link?(j(),Ie(r.VPAutoLink,{key:0,class:rt(r.itemClass),config:r.item},null,8,["class","config"])):(j(),te("p",{key:1,tabindex:"0",class:rt(r.itemClass),onClick:r.onClick,onKeydown:ih(r.onClick,["enter"])},[nn(ce(r.item.text)+" ",1),r.collapsible?(j(),te("span",{key:0,class:rt(["arrow",r.isOpen?"down":"right"])},null,2)):Me("",!0)],34)),"children"in r.item&&r.item.children.length?(j(),Ie(r.VPDropdownTransition,{key:2},{default:Re(()=>[go(X("ul",Ay,[(j(!0),te(Ae,null,Ht(r.item.children,l=>(j(),Ie(i,{key:`${r.depth}${l.text}${l.link}`,item:l,depth:r.depth+1},null,8,["item","depth"]))),128))],512),[[yo,r.isOpen]])]),_:1})):Me("",!0)])}const Cy=Pe(Sy,[["render",wy],["__file","VPSidebarItem.vue"]]),Ty=pe({__name:"VPSidebarItems",setup(e,{expose:t}){t();const n=Kt(),r=xi();ot(()=>{Ke(()=>n.hash,s=>{const i=document.querySelector(".vp-sidebar");if(!i)return;const l=document.querySelector(`.vp-sidebar .vp-sidebar-item.auto-link[href="${n.path}${s}"]`);if(!l)return;const{top:a,height:u}=i.getBoundingClientRect(),{top:c,height:f}=l.getBoundingClientRect();c<a?l.scrollIntoView(!0):c+f>a+u&&l.scrollIntoView(!1)})});const o={route:n,sidebarItems:r,VPSidebarItem:Cy};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),ky={key:0,class:"vp-sidebar-items"};function Oy(e,t,n,r,o,s){return r.sidebarItems.length?(j(),te("ul",ky,[(j(!0),te(Ae,null,Ht(r.sidebarItems,i=>(j(),Ie(r.VPSidebarItem,{key:`${i.text}${i.link}`,item:i},null,8,["item"]))),128))])):Me("",!0)}const Py=Pe(Ty,[["render",Oy],["__file","VPSidebarItems.vue"]]),xy=pe({__name:"VPSidebar",setup(e,{expose:t}){t();const n={VPNavbarItems:kf,VPSidebarItems:Py};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),Dy={class:"vp-sidebar","vp-sidebar":""};function Ry(e,t,n,r,o,s){return j(),te("aside",Dy,[se(r.VPNavbarItems),De(e.$slots,"top"),se(r.VPSidebarItems),De(e.$slots,"bottom")])}const Iy=Pe(xy,[["render",Ry],["__file","VPSidebar.vue"]]),Ly=pe({__name:"Layout",setup(e,{expose:t}){t();const n=qn(),r=xt(),o=We(),s=N(()=>r.value.navbar!==!1&&o.value.navbar!==!1),i=xi(),l=ye(!1),a=g=>{l.value=typeof g=="boolean"?g:!l.value},u={x:0,y:0},c=g=>{u.x=g.changedTouches[0].clientX,u.y=g.changedTouches[0].clientY},f=g=>{const E=g.changedTouches[0].clientX-u.x,V=g.changedTouches[0].clientY-u.y;Math.abs(E)>Math.abs(V)&&Math.abs(E)>40&&(E>0&&u.x<=80?a(!0):a(!1))},p=N(()=>r.value.externalLinkIcon??o.value.externalLinkIcon??!0),d=N(()=>[{"no-navbar":!s.value,"no-sidebar":!i.value.length,"sidebar-open":l.value,"external-link-icon":p.value},r.value.pageClass]);let m;ot(()=>{m=Gn().afterEach(()=>{a(!1)})}),Oo(()=>{m()});const v=yf(),b=v.resolve,y=v.pending,S={page:n,frontmatter:r,themeLocale:o,shouldShowNavbar:s,sidebarItems:i,isSidebarOpen:l,toggleSidebar:a,touchStart:u,onTouchStart:c,onTouchEnd:f,enableExternalLinkIcon:p,containerClass:d,get unregisterRouterHook(){return m},set unregisterRouterHook(g){m=g},scrollPromise:v,onBeforeEnter:b,onBeforeLeave:y,VPHome:jv,VPNavbar:N1,VPPage:by,VPSidebar:Iy};return Object.defineProperty(S,"__isScriptSetup",{enumerable:!1,value:!0}),S}});function Vy(e,t,n,r,o,s){return j(),te("div",{class:rt(["vp-theme-container",r.containerClass]),"vp-container":"",onTouchstart:r.onTouchStart,onTouchend:r.onTouchEnd},[De(e.$slots,"navbar",{},()=>[r.shouldShowNavbar?(j(),Ie(r.VPNavbar,{key:0,onToggleSidebar:r.toggleSidebar},{before:Re(()=>[De(e.$slots,"navbar-before")]),after:Re(()=>[De(e.$slots,"navbar-after")]),_:3})):Me("",!0)]),X("div",{class:"vp-sidebar-mask",onClick:t[0]||(t[0]=i=>r.toggleSidebar(!1))}),De(e.$slots,"sidebar",{},()=>[se(r.VPSidebar,null,{top:Re(()=>[De(e.$slots,"sidebar-top")]),bottom:Re(()=>[De(e.$slots,"sidebar-bottom")]),_:3})]),De(e.$slots,"page",{},()=>[r.frontmatter.home?(j(),Ie(r.VPHome,{key:0})):(j(),Ie(ni,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:r.onBeforeEnter,onBeforeLeave:r.onBeforeLeave},{default:Re(()=>[(j(),Ie(r.VPPage,{key:r.page.path},{top:Re(()=>[De(e.$slots,"page-top")]),"content-top":Re(()=>[De(e.$slots,"page-content-top")]),"content-bottom":Re(()=>[De(e.$slots,"page-content-bottom")]),bottom:Re(()=>[De(e.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34)}const Pf=Pe(Ly,[["render",Vy],["__file","Layout.vue"]]),Ny=pe({__name:"NotFound",setup(e,{expose:t}){t();const n=Hr(),r=We(),o=r.value.notFound??["Not Found"],s=()=>o[Math.floor(Math.random()*o.length)],i=r.value.home??n.value,l=r.value.backToHome??"Back to home",a={routeLocale:n,themeLocale:r,messages:o,getMsg:s,homeLink:i,homeText:l,get RouteLink(){return Lo}};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),My={class:"vp-theme-container","vp-container":""},Fy={class:"page"},By={"vp-content":""};function $y(e,t,n,r,o,s){return j(),te("div",My,[X("main",Fy,[X("div",By,[t[0]||(t[0]=X("h1",null,"404",-1)),X("blockquote",null,ce(r.getMsg()),1),se(r.RouteLink,{to:r.homeLink},{default:Re(()=>[nn(ce(r.homeText),1)]),_:1},8,["to"])])])])}const Hy=Pe(Ny,[["render",$y],["__scopeId","data-v-f90f3f6a"],["__file","NotFound.vue"]]),Uy=zt({enhance({app:e,router:t}){Dc("Badge")||e.component("Badge",bv);const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await yf().wait(),n(...r))},setup(){dv(),mv()},layouts:{Layout:Pf,NotFound:Hy}}),jy=Object.freeze(Object.defineProperty({__proto__:null,default:Uy},Symbol.toStringTag,{value:"Module"}));function Wy(e){return Hs()?(su(e),!0):!1}function Di(e){return typeof e=="function"?e():$t(e)}const Ky=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const zy=Object.prototype.toString,Gy=e=>zy.call(e)==="[object Object]",qy=()=>{};function Yy(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const xf=e=>e();function Jy(e=xf){const t=ye(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Vr(t),pause:n,resume:r,eventFilter:o}}function Xy(e){return Cn()}function Qy(e,t,n={}){const{eventFilter:r=xf,...o}=n;return Ke(e,Yy(r,t),o)}function Zy(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:l,isActive:a}=Jy(r);return{stop:Qy(e,t,{...o,eventFilter:s}),pause:i,resume:l,isActive:a}}function eb(e,t=!0,n){Xy()?ot(e,n):t?e():an(e)}function tb(e){var t;const n=Di(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Eo=Ky?window:void 0;function Ya(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=Eo):[t,n,r,o]=e,!t)return qy;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(c=>c()),s.length=0},l=(c,f,p,d)=>(c.addEventListener(f,p,d),()=>c.removeEventListener(f,p,d)),a=Ke(()=>[tb(t),Di(o)],([c,f])=>{if(i(),!c)return;const p=Gy(f)?{...f}:f;s.push(...n.flatMap(d=>r.map(m=>l(c,d,m,p))))},{immediate:!0,flush:"post"}),u=()=>{a(),i()};return Wy(u),u}const eo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},to="__vueuse_ssr_handlers__",nb=rb();function rb(){return to in eo||(eo[to]=eo[to]||{}),eo[to]}function ob(e,t){return nb[e]||t}function sb(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 ib={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()}},Ja="vueuse-storage";function lb(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:a=!0,mergeDefaults:u=!1,shallow:c,window:f=Eo,eventFilter:p,onError:d=k=>{console.error(k)},initOnMounted:m}=r,v=(c?dt:ye)(typeof t=="function"?t():t);if(!n)try{n=ob("getDefaultStorage",()=>{var k;return(k=Eo)==null?void 0:k.localStorage})()}catch(k){d(k)}if(!n)return v;const b=Di(t),y=sb(b),S=(o=r.serializer)!=null?o:ib[y],{pause:g,resume:E}=Zy(v,()=>U(v.value),{flush:s,deep:i,eventFilter:p});f&&l&&eb(()=>{Ya(f,"storage",Q),Ya(f,Ja,I),m&&Q()}),m||Q();function V(k,P){f&&f.dispatchEvent(new CustomEvent(Ja,{detail:{key:e,oldValue:k,newValue:P,storageArea:n}}))}function U(k){try{const P=n.getItem(e);if(k==null)V(P,null),n.removeItem(e);else{const C=S.write(k);P!==C&&(n.setItem(e,C),V(P,C))}}catch(P){d(P)}}function D(k){const P=k?k.newValue:n.getItem(e);if(P==null)return a&&b!=null&&n.setItem(e,S.write(b)),b;if(!k&&u){const C=S.read(P);return typeof u=="function"?u(C,b):y==="object"&&!Array.isArray(C)?{...b,...C}:C}else return typeof P!="string"?P:S.read(P)}function Q(k){if(!(k&&k.storageArea!==n)){if(k&&k.key==null){v.value=b;return}if(!(k&&k.key!==e)){g();try{(k==null?void 0:k.newValue)!==S.write(v.value)&&(v.value=D(k))}catch(P){d(P)}finally{k?an(E):E()}}}}function I(k){Q(k.detail)}return v}function ab(e,t,n={}){const{window:r=Eo}=n;return lb(e,t,r==null?void 0:r.sessionStorage,n)}const ub=Object.entries;var cb={autoLocale:!1,switchLocale:!1,localeConfig:{"/eng/":["en-US"]},defaultLocale:"/eng/",localeFallback:!0,defaultBehavior:"defaultLocale"};const fb=cb;ub(fb.localeConfig);ab("VUEPRESS_REDIRECT_LOCALES",{});const db=zt({setup(){},rootComponents:[]}),pb=Object.freeze(Object.defineProperty({__proto__:null,default:db},Symbol.toStringTag,{value:"Module"}));var ae=(e=>(e.Collaborator="collaborator",e.Author="author",e.TechLead="tech lead",e.TeamLead="team lead",e.Developer="developer",e))(ae||{}),ge=(e=>(e.ActiveDeveloped="actively-developed",e.PassivelyMaintained="passively-maintained",e.AsIs="as-is",e.Experimental="experimental",e.LookingForMaintainer="looking-for-maintainer",e.Deprecated="deprecated",e))(ge||{}),F=(e=>(e.C="C",e.Go="Go",e.JavaScript="JS",e.TypeScript="TS",e.Rust="Rust",e.Python="Python",e.Php="PHP",e.Deno="Deno",e.NodeJS="NodeJS",e.Flask="Flask",e.React="React",e.Antd="Antd",e.Postgresql="PostgreSQL",e.Docker="Docker",e.Drone="Drone CI",e.Woodpecker="Woodpecker CI",e.Bash="Bash",e.TreeSitter="TreeSitter",e.Nix="Nix",e.Lua="Lua",e.Sqlite="Sqlite",e.Vue="Vue",e.Vuepress="Vuepress",e.Godot="Godot",e.Haskell="Haskell",e))(F||{});const hb=[{name:"nixeovim",url:"/pleshevskiy/nixeovim",description:"Configure and build neovim editor using nix",roles:[ae.Author],technologies:[F.Nix],startDate:new Date("2024-04-24"),status:ge.ActiveDeveloped},{name:"picsg",url:"/pleshevskiy/picsg",description:"A tool for steganographing information in a picture encoded using the Vernam cipher.",roles:[ae.Author],technologies:[F.Haskell],startDate:new Date("2024-04-13"),endDate:new Date("2024-07-25"),status:ge.AsIs},{name:"Mindustry tools",url:"/pleshevskiy/mindustry-tools",description:"Tools for the Mindustry game",roles:[ae.Author],technologies:[F.Nix,F.Godot],startDate:new Date("2024-01-07"),status:ge.PassivelyMaintained},{name:"Master Progress Rosmintrud tools",url:"https://rosmintrud.masterprogress.ru",description:"Internal service to prepare documents for the rosmintrud (SPA)",roles:[ae.TechLead],technologies:[F.Deno,F.Sqlite,F.TypeScript,F.Vue,F.Docker,F.Woodpecker,F.Nix],startDate:new Date("2023-07-03"),status:ge.PassivelyMaintained},{name:"yandexgpt_tg_bot",url:"/pleshevskiy/yandexgpt_tg_bot",description:"The Telegram bot to describe article with link by YandexGPT.",roles:[ae.Author],technologies:[F.JavaScript,F.NodeJS,F.Nix],startDate:new Date("2023-06-27"),endDate:new Date("2024-07-25"),status:ge.AsIs},{name:"tree-sitter-plpgsql",url:"/pleshevskiy/tree-sitter-plpgsql",description:"plpgsql grammar for tree-sitter",roles:[ae.Author],technologies:[F.C,F.JavaScript,F.TreeSitter,F.Nix],startDate:new Date("2023-01-05"),status:ge.PassivelyMaintained},{name:"wd2",url:"/pleshevskiy/wd2",description:"A wrapper over d2 which allows to use additional configs from d2 file",roles:[ae.Author],technologies:[F.Bash,F.Nix],startDate:new Date("2022-12-12"),endDate:new Date("2023-07-31"),status:ge.AsIs},{name:"tree-sitter-d2",url:"/pleshevskiy/tree-sitter-d2",description:"d2 grammar for tree-sitter",roles:[ae.Author],technologies:[F.C,F.JavaScript,F.TreeSitter,F.Nix],startDate:new Date("2022-12-04"),status:ge.ActiveDeveloped},{name:"nix2lua",url:"/mynix/nix2lua",description:"This is a small but functional library that converts your nix configurations into lua format.",roles:[ae.Author],technologies:[F.Nix,F.Lua],startDate:new Date("2022-11-22"),status:ge.PassivelyMaintained},{name:"vnetod",url:"/pleshevskiy/vnetod",description:"Dotenv section switcher",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2022-07-29"),status:ge.PassivelyMaintained},{name:"estring",url:"/pleshevskiy/estring",description:"A simple way to parse a string using type annotations.",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2022-07-23"),endDate:new Date("2024-07-25"),status:ge.AsIs},{name:"enve",url:"/pleshevskiy/enve",description:"It helps you work with environment variables and convert it to any type using only type annotations",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2022-07-18"),endDate:new Date("2024-07-25"),status:ge.AsIs},{name:"docker stack drone plugin",url:"/pleshevskiy/docker_stack",description:"Deploy to production using `docker stack deploy`",roles:[ae.Author],technologies:[F.Docker,F.Drone,F.Woodpecker],startDate:new Date("2022-06-06"),endDate:new Date("2024-07-25"),status:ge.AsIs},{name:"dexios",url:"/github/dexios",description:"Dexios is a fast, secure, and open source command-line encryption tool.",roles:[ae.Collaborator],technologies:[F.Rust],startDate:new Date("2022-06-01"),endDate:new Date("2023-02-28")},{name:"recipes",url:"/pleshevskiy/recipes",description:"Site with recipes which cares about privacy",roles:[ae.Author],technologies:[F.TypeScript,F.Deno,F.Rust],startDate:new Date("2022-05-04"),status:ge.PassivelyMaintained},{name:"pleshevski.ru",url:"/pleshevskiy/pleshevski.ru",description:"Source code of my personal site",roles:[ae.Author],technologies:[F.TypeScript,F.Vue,F.Vuepress,F.Nix],startDate:new Date("2022-03-16"),status:ge.PassivelyMaintained},{name:"paren",url:"/pleshevskiy/paren",description:"Library for parsing and rendering information.",roles:[ae.Author],technologies:[F.TypeScript,F.Deno],startDate:new Date("2022-03-14"),endDate:new Date("2024-07-25"),status:ge.Experimental},{name:"hwt",url:"/pleshevskiy/hwt",description:"healthy workaholic timer – A tool that keeps you from breaking your health by working all day.",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2022-02-04"),endDate:new Date("2024-07-25"),status:ge.AsIs},{name:"ood_persistence",url:"/pleshevskiy/ood_persistence",description:"Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture ",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2021-10-12"),endDate:new Date("2021-10-21"),status:ge.Deprecated},{name:"migra",url:"/pleshevskiy/migra",description:"Simple SQL migration manager for your project.",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2021-01-31"),endDate:new Date("2022-03-17"),status:ge.AsIs},{name:"espruino-starter",url:"/pleshevskiy/espruino-starter",description:"Quickly start creating your new project on the espruino board or a board based on it.",roles:[ae.Author],technologies:[F.JavaScript],startDate:new Date("2021-08-23"),status:ge.AsIs},{name:"react-rest-request",url:"/pleshevskiy/react-rest-request",description:"Minimalistic REST API client for React inspired by Apollo.",roles:[ae.Author],technologies:[F.TypeScript,F.React],startDate:new Date("2020-10-04"),endDate:new Date("2023-03-02"),status:ge.Deprecated},{name:"sonic-channel",url:"/pleshevskiy/sonic-channel",description:"Rust client for sonic search backend.",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2020-07-18"),status:ge.PassivelyMaintained},{name:"itconfig",url:"/pleshevskiy/itconfig",description:"Easy build a configs from environment variables and use it in globally.",roles:[ae.Author],technologies:[F.Rust],startDate:new Date("2019-12-22"),endDate:new Date("2022-07-24"),status:ge.Deprecated},{name:"it-fsm",url:"/pleshevskiy/it-fsm",description:"Simple full-featured finite state machine for your project",roles:[ae.Author],technologies:[F.TypeScript,F.NodeJS,F.Deno],startDate:new Date("2019-10-11"),status:ge.PassivelyMaintained},{name:"Cabinet Master Progress",url:"https://cabinet.masterprogress.ru",description:"Student's cabinet of the educational center Master Progress (SSR + SPA)",roles:[ae.TechLead],technologies:[F.Python,F.Flask,F.Postgresql,F.TypeScript,F.React,F.Docker,F.Woodpecker,F.Nix],startDate:new Date("2019-09-22"),status:ge.PassivelyMaintained},{name:"genrss",url:"/pleshevskiy/genrss",description:"RSS generator for python",roles:[ae.Author],technologies:[F.Python],startDate:new Date("2019-07-23"),status:ge.AsIs},{name:"marshmallow_pageinfo",url:"/pleshevskiy/marshmallow_pageinfo",description:"Page info marshmallow schema for api",roles:[ae.Author],technologies:[F.Python],startDate:new Date("2019-10-05"),endDate:new Date("2023-03-02"),status:ge.AsIs},{name:"Binary Management",url:"https://www.binarymanagement.com",description:"Project management tool for interior designers",roles:[ae.Developer,ae.TechLead,ae.TeamLead],technologies:[F.TypeScript,F.NodeJS,F.React,F.Antd,F.Docker,F.Drone,F.Rust,F.Nix],startDate:new Date("2018-09-15"),status:ge.ActiveDeveloped},{name:"Core Spirit",url:"https://corespirit.com",description:"Social platform focusing on human and planetary enhancement",roles:[ae.Developer],technologies:[F.TypeScript,F.NodeJS,F.Go,F.Python,F.React,F.Docker,F.Drone],startDate:new Date("2018-09-05"),endDate:new Date("2019-12-31")},{name:"Master Progress",url:"https://masterprogress.ru",description:"Main website of the educational center Master Progress (SSR + Forms)",roles:[ae.TechLead],technologies:[F.Python,F.Flask,F.JavaScript,F.Nix],startDate:new Date("2018-04-10"),status:ge.PassivelyMaintained},{name:"ictmpl",url:"/pleshevskiy/ictmpl",description:"Generate projects from templates",roles:[ae.Author],technologies:[F.Python],startDate:new Date("2018-06-30"),endDate:new Date("2023-03-02"),status:ge.AsIs}];function gb(e){return e.toLocaleDateString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"})}const _b=e=>e.url.startsWith("https://")?e.url:new URL(e.url,"https://git.pleshevski.ru").toString(),mb=Object.freeze(Object.defineProperty({__proto__:null,getExternalLink:_b},Symbol.toStringTag,{value:"Module"}));function sr(e){return(e==null?void 0:e.valueOf())??1/0}const vb={name:"WorksPage",computed:{tableTheme(){return this.$themeLocale.worksTable??{}}}},yb=pe({...vb,setup(e,{expose:t}){t();const n=N(()=>hb.concat().sort((o,s)=>sr(s.endDate)-sr(o.endDate)||sr(s.startDate)-sr(o.startDate))),r={date2num:sr,works:n,get renderDate(){return gb},get w(){return mb}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),bb=["href"],Eb=["innerHTML"],Sb={key:0};function Ab(e,t,n,r,o,s){return j(),te("table",null,[X("thead",null,[X("tr",null,[X("th",null,ce(s.tableTheme.name),1),X("th",null,ce(s.tableTheme.description),1),X("th",null,ce(s.tableTheme.role),1),X("th",null,ce(s.tableTheme.technologies),1),X("th",null,ce(s.tableTheme.status),1),X("th",null,ce(s.tableTheme.dates),1)])]),X("tbody",null,[(j(!0),te(Ae,null,Ht(r.works,i=>(j(),te("tr",null,[X("td",null,[X("a",{rel:"nofollow noopener",href:r.w.getExternalLink(i)},ce(i.name),9,bb)]),X("td",null,ce(i.description),1),X("td",{innerHTML:i.roles.join(", ")},null,8,Eb),X("td",null,ce(i.technologies.join(", ")),1),X("td",null,ce(i.status),1),X("td",null,[X("div",null,[X("small",{class:rt({grey:i.endDate})},ce(r.renderDate(i.startDate)),3)]),i.endDate?(j(),te("div",Sb,[X("small",null,ce(r.renderDate(i.endDate)),1)])):Me("",!0)])]))),256))])])}const wb=Pe(yb,[["render",Ab],["__file","ChronologicalWorksTable.vue"]]),Cb={__name:"WorksPage",setup(e,{expose:t}){t();const n={ParentLayout:Pf,get ChronologicalWorksTable(){return wb}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},Tb={class:"works-table-wrapper"};function kb(e,t,n,r,o,s){return j(),Ie(r.ParentLayout,null,{"page-bottom":Re(()=>[X("div",Tb,[se(r.ChronologicalWorksTable)])]),_:1})}const Ob=Pe(Cb,[["render",kb],["__scopeId","data-v-765855fb"],["__file","WorksPage.vue"]]),Pb=zt({layouts:{WorksPage:Ob}}),xb=Object.freeze(Object.defineProperty({__proto__:null,default:Pb},Symbol.toStringTag,{value:"Module"})),no=[b_,O_,V_,M_,j_,z_,Q_,uv,jy,pb,xb].map(e=>e.default).filter(Boolean),Db=JSON.parse('{"base":"/","lang":"ru-RU","title":"Дмитрий Плешевский","description":" ","head":[],"locales":{"/":{"lang":"ru-RU","title":"Дмитрий Плешевский"},"/eng/":{"lang":"en-US","title":"Dmitriy Pleshevskiy"}}}');var ar=dt(Db),Rb=rg,Ib=()=>{const e=Og({history:Rb(fc("/")),routes:[{name:"vuepress-route",path:"/:catchAll(.*)",components:{}}],scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{if(t.path!==n.path||n===Nt){const r=kr(t.fullPath);if(r.path!==t.fullPath)return r.path;const o=await r.loader();t.meta={...r.meta,_pageChunk:o}}else t.path===n.path&&(t.meta=n.meta)}),e},Lb=e=>{e.component("ClientOnly",ai),e.component("Content",ui),e.component("RouteLink",Lo)},Vb=(e,t,n)=>{const r=N(()=>t.currentRoute.value.path),o=hd((b,y)=>({get(){return b(),t.currentRoute.value.meta._pageChunk},set(S){t.currentRoute.value.meta._pageChunk=S,y()}})),s=N(()=>dn.resolveLayouts(n)),i=N(()=>dn.resolveRouteLocale(ar.value.locales,r.value)),l=N(()=>dn.resolveSiteLocaleData(ar.value,i.value)),a=N(()=>o.value.comp),u=N(()=>o.value.data),c=N(()=>u.value.frontmatter),f=N(()=>dn.resolvePageHeadTitle(u.value,l.value)),p=N(()=>dn.resolvePageHead(f.value,c.value,l.value)),d=N(()=>dn.resolvePageLang(u.value,l.value)),m=N(()=>dn.resolvePageLayout(u.value,s.value)),v={layouts:s,pageData:u,pageComponent:a,pageFrontmatter:c,pageHead:p,pageHeadTitle:f,pageLang:d,pageLayout:m,redirects:Ts,routeLocale:i,routePath:r,routes:Nn,siteData:ar,siteLocaleData:l};return e.provide(ii,v),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>c.value},$head:{get:()=>p.value},$headTitle:{get:()=>f.value},$lang:{get:()=>d.value},$page:{get:()=>u.value},$routeLocale:{get:()=>i.value},$site:{get:()=>ar.value},$siteLocale:{get:()=>l.value},$withBase:{get:()=>ci}}),v},Nb=([e,t,n=""])=>{const r=Object.entries(t).map(([l,a])=>Et(a)?`[${l}=${JSON.stringify(a)}]`:a?`[${l}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(l=>l.innerText===n)??null},Mb=([e,t,n])=>{if(!Et(e))return null;const r=document.createElement(e);return ri(t)&&Object.entries(t).forEach(([o,s])=>{Et(s)?r.setAttribute(o,s):s&&r.setAttribute(o,"")}),Et(n)&&r.appendChild(document.createTextNode(n)),r},Fb=()=>{const e=Dg(),t=Rg();let n=[];const r=()=>{e.value.forEach(i=>{const l=Nb(i);l&&n.push(l)})},o=()=>{const i=[];return e.value.forEach(l=>{const a=Mb(l);a&&i.push(a)}),i},s=()=>{document.documentElement.lang=t.value;const i=o();n.forEach((l,a)=>{const u=i.findIndex(c=>l.isEqualNode(c));u===-1?(l.remove(),delete n[a]):i.splice(u,1)}),i.forEach(l=>document.head.appendChild(l)),n=[...n.filter(l=>!!l),...i]};bn(Vg,s),ot(()=>{r(),Ke(e,s,{immediate:!1})})},Bb=uh,$b=async()=>{var n;const e=Bb({name:"Vuepress",setup(){var s;Fb();for(const i of no)(s=i.setup)==null||s.call(i);const r=no.flatMap(({rootComponents:i=[]})=>i.map(l=>Ee(l))),o=Ig();return()=>[Ee(o.value),r]}}),t=Ib();Lb(e),Vb(e,t,no);for(const r of no)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:ar}));return e.use(t),{app:e,router:t}};$b().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{Pe as _,X as a,nn as b,te as c,$b as createVueApp,se as d,Ap as e,j as o,Xs as r,Re as w}; +function __vite__mapDeps(indexes) { + if (!__vite__mapDeps.viteFileDeps) { + __vite__mapDeps.viteFileDeps = [] + } + return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) +} diff --git a/dist/assets/index.html-B5LWGqHO.js b/assets/index.html-7-wjojn8.js similarity index 90% rename from dist/assets/index.html-B5LWGqHO.js rename to assets/index.html-7-wjojn8.js index 96e3ef4..8f19102 100644 --- a/dist/assets/index.html-B5LWGqHO.js +++ b/assets/index.html-7-wjojn8.js @@ -1 +1 @@ -import{_ as a,c as r,a as o,b as i,d as s,w as t,e as n,r as d,o as p}from"./app-CvTe0YTg.js";const c={};function h(m,e){const l=d("RouteLink");return p(),r("div",null,[o("p",null,[e[1]||(e[1]=i("Always up-to-date link to ")),s(l,{to:"/eng/"},{default:t(()=>e[0]||(e[0]=[i("resume")])),_:1}),e[2]||(e[2]=i("."))]),e[3]||(e[3]=n('<h2 id="overview" tabindex="-1"><a class="header-anchor" href="#overview"><span>Overview</span></a></h2><p>My name is Dmitriy Pleshevskiy.</p><p>I'm an open source software enthusiast, a lead software developer, architect, team leader and also mentor.</p><h2 id="skills" tabindex="-1"><a class="header-anchor" href="#skills"><span>Skills</span></a></h2><h4 id="programming-languages" tabindex="-1"><a class="header-anchor" href="#programming-languages"><span>Programming Languages:</span></a></h4><ul><li>TypeScript (prefer, solid 9-year exp)</li><li>SQL (prefer, solid 8-year exp)</li><li>Rust (prefer, solid 5-year exp)</li><li>Python (solid 9-year exp)</li><li>Haskell</li><li>Bash (8-year exp)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="repositories" tabindex="-1"><a class="header-anchor" href="#repositories"><span>Repositories:</span></a></h4><ul><li>PostgreSQL (prefer, solid 8-year exp)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (prefer, solid 5-year exp)</li></ul><hr><p>I also have extensive experience in creating the following applications:</p><ul><li>Traditional (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Dynamic (SPA)</li><li>Hybrid (SSR + SPA)</li><li>Console</li><li>Cross-platform</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (prefer, solid 2-year exp)</li><li><code>async-graphql</code> (prefer, solid 2-year exp)</li><li><code>shaku</code> (prefer, solid 2-year exp)</li><li><code>bb8</code> + <code>postgres-types</code> (prefer, solid 5-year exp)</li><li><code>diesel</code> (2-year exp)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (solid 5-year exp)</li><li><code>Express</code> (solid 9-year exp)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (solid 5-year exp)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (solid 8-year exp)</li><li><code>VueJS</code> (prefer, solid 3-year exp)</li><li><code>Cypress</code> (prefer, solid 3-year exp)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (prefer, solid 5-year exp)</li><li><code>Sass</code> (prefer, solid 8-year exp)</li><li><code>Less</code> (weak 4-year exp)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (prefer, solid 3-year exp)</li><li><code>Docker Swarm</code> (solid 6-year exp)</li><li><code>Kubernetes</code> (weak 5-year exp)</li><li><code>Woodpecker CI</code> (prefer, solid 4-year exp)</li><li><code>Drone CI</code> (solid 3-year exp)</li><li><code>Gitlab CI</code> (solid 7-year exp)</li><li><code>GitHub Actions</code> (4-year exp)</li></ul><h2 id="interests" tabindex="-1"><a class="header-anchor" href="#interests"><span>Interests</span></a></h2><p>Open-source projects are my passion! I develop, maintain and improve projects in my spare time.</p><p>Besides programming, I love to cook and spend time with my beloved family!</p><h2 id="contacts" tabindex="-1"><a class="header-anchor" href="#contacts"><span>Contacts</span></a></h2><p>Simplex (Prefer): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="links" tabindex="-1"><a class="header-anchor" href="#links"><span>Links</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Suspended)</a></li></ul>',30))])}const y=a(c,[["render",h],["__file","index.html.vue"]]),x=JSON.parse('{"path":"/eng/","title":"Resume","lang":"en-US","frontmatter":{"home":true,"title":"Resume","heroText":null,"head":[["link",{"rel":"alternate","hreflang":"ru-ru","href":"https://pleshevski.ru/"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/eng/"}],["meta",{"property":"og:site_name","content":"Dmitriy Pleshevskiy"}],["meta",{"property":"og:title","content":"Resume"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"ru-RU"}],["meta",{"property":"og:updated_time","content":"2024-09-05T22:11:51.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-05T22:11:51.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Resume\\"}"]]},"headers":[{"level":2,"title":"Overview","slug":"overview","link":"#overview","children":[]},{"level":2,"title":"Skills","slug":"skills","link":"#skills","children":[]},{"level":2,"title":"Stack","slug":"stack","link":"#stack","children":[]},{"level":2,"title":"Interests","slug":"interests","link":"#interests","children":[]},{"level":2,"title":"Contacts","slug":"contacts","link":"#contacts","children":[]},{"level":2,"title":"Links","slug":"links","link":"#links","children":[]}],"git":{"updatedTime":1725574311000,"contributors":[{"name":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":6}]},"filePathRelative":"eng/index.md"}');export{y as comp,x as data}; +import{_ as a,c as r,a as s,b as i,d as o,w as t,e as n,r as d,o as p}from"./app-R2Ffa9VO.js";const c={};function h(m,e){const l=d("RouteLink");return p(),r("div",null,[s("p",null,[e[1]||(e[1]=i("Always up-to-date link to ")),o(l,{to:"/eng/"},{default:t(()=>e[0]||(e[0]=[i("resume")])),_:1}),e[2]||(e[2]=i("."))]),e[3]||(e[3]=n('<h2 id="overview" tabindex="-1"><a class="header-anchor" href="#overview"><span>Overview</span></a></h2><p>My name is Dmitriy Pleshevskiy.</p><p>I'm an open source software enthusiast, a lead software developer, architect, team leader and also mentor.</p><h2 id="skills" tabindex="-1"><a class="header-anchor" href="#skills"><span>Skills</span></a></h2><h4 id="programming-languages" tabindex="-1"><a class="header-anchor" href="#programming-languages"><span>Programming Languages:</span></a></h4><ul><li>TypeScript (prefer, solid 9-year exp)</li><li>SQL (prefer, solid 8-year exp)</li><li>Rust (prefer, solid 5-year exp)</li><li>Python (solid 9-year exp)</li><li>Haskell</li><li>Bash (8-year exp)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="repositories" tabindex="-1"><a class="header-anchor" href="#repositories"><span>Repositories:</span></a></h4><ul><li>PostgreSQL (prefer, solid 8-year exp)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (prefer, solid 5-year exp)</li></ul><hr><p>I also have extensive experience in creating the following applications:</p><ul><li>Traditional (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Dynamic (SPA)</li><li>Hybrid (SSR + SPA)</li><li>Console</li><li>Cross-platform</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (prefer, solid 2-year exp)</li><li><code>async-graphql</code> (prefer, solid 2-year exp)</li><li><code>shaku</code> (prefer, solid 2-year exp)</li><li><code>bb8</code> + <code>postgres-types</code> (prefer, solid 5-year exp)</li><li><code>diesel</code> (2-year exp)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (solid 5-year exp)</li><li><code>Express</code> (solid 9-year exp)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (solid 5-year exp)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (solid 8-year exp)</li><li><code>VueJS</code> (prefer, solid 3-year exp)</li><li><code>Cypress</code> (prefer, solid 3-year exp)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (prefer, solid 5-year exp)</li><li><code>Sass</code> (prefer, solid 8-year exp)</li><li><code>Less</code> (weak 4-year exp)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (prefer, solid 3-year exp)</li><li><code>Docker Swarm</code> (solid 6-year exp)</li><li><code>Kubernetes</code> (weak 5-year exp)</li><li><code>Woodpecker CI</code> (prefer, solid 4-year exp)</li><li><code>Drone CI</code> (solid 3-year exp)</li><li><code>Gitlab CI</code> (solid 7-year exp)</li><li><code>GitHub Actions</code> (4-year exp)</li></ul><h2 id="interests" tabindex="-1"><a class="header-anchor" href="#interests"><span>Interests</span></a></h2><p>Open-source projects are my passion! I develop, maintain and improve projects in my spare time.</p><p>Besides programming, I love to cook and spend time with my beloved family!</p><h2 id="contacts" tabindex="-1"><a class="header-anchor" href="#contacts"><span>Contacts</span></a></h2><p>Simplex (Prefer): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="links" tabindex="-1"><a class="header-anchor" href="#links"><span>Links</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Suspended)</a></li></ul>',30))])}const y=a(c,[["render",h],["__file","index.html.vue"]]),x=JSON.parse('{"path":"/eng/","title":"Resume","lang":"en-US","frontmatter":{"home":true,"title":"Resume","heroText":null,"head":[["link",{"rel":"alternate","hreflang":"ru-ru","href":"https://pleshevski.ru/"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/eng/"}],["meta",{"property":"og:site_name","content":"Dmitriy Pleshevskiy"}],["meta",{"property":"og:title","content":"Resume"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"ru-RU"}],["meta",{"property":"og:updated_time","content":"2024-09-05T22:11:51.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-05T22:11:51.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Resume\\"}"]]},"headers":[{"level":2,"title":"Overview","slug":"overview","link":"#overview","children":[]},{"level":2,"title":"Skills","slug":"skills","link":"#skills","children":[]},{"level":2,"title":"Stack","slug":"stack","link":"#stack","children":[]},{"level":2,"title":"Interests","slug":"interests","link":"#interests","children":[]},{"level":2,"title":"Contacts","slug":"contacts","link":"#contacts","children":[]},{"level":2,"title":"Links","slug":"links","link":"#links","children":[]}],"git":{"updatedTime":1725574311000,"contributors":[{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@ideascup.me","commits":8},{"name":"janabhumi","username":"janabhumi","email":"dmitriy@ideascup.me","commits":1},{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":13}]},"filePathRelative":"eng/index.md"}');export{y as comp,x as data}; diff --git a/dist/assets/index.html-D7ve43IL.js b/assets/index.html-DasZnaAo.js similarity index 91% rename from dist/assets/index.html-D7ve43IL.js rename to assets/index.html-DasZnaAo.js index d5f46b5..778d66e 100644 --- a/dist/assets/index.html-D7ve43IL.js +++ b/assets/index.html-DasZnaAo.js @@ -1 +1 @@ -import{_ as a,c as t,a as o,b as l,d as r,w as n,e as s,r as d,o as c}from"./app-CvTe0YTg.js";const p={};function h(u,e){const i=d("RouteLink");return c(),t("div",null,[o("p",null,[e[1]||(e[1]=l("Всегда актуальная ссылка на ")),r(i,{to:"/"},{default:n(()=>e[0]||(e[0]=[l("резюме")])),_:1}),e[2]||(e[2]=l("."))]),e[3]||(e[3]=s('<h2 id="общие-сведения" tabindex="-1"><a class="header-anchor" href="#общие-сведения"><span>Общие сведения</span></a></h2><p>Меня зовут Дмитрий Плешевский.</p><p>Я энтузиаст программного обеспечения с открытым исходным кодом, ведущий разработчик програмного обеспечения, архитектор, руководитель команды, а так же ментор.</p><h2 id="умения" tabindex="-1"><a class="header-anchor" href="#умения"><span>Умения</span></a></h2><h4 id="языки-программирования" tabindex="-1"><a class="header-anchor" href="#языки-программирования"><span>Языки программирования:</span></a></h4><ul><li>TypeScript (предпочитаю, твёрдый 9-летний опыт)</li><li>SQL (предпочитаю, твёрдый 8-летний опыт)</li><li>Rust (предпочитаю, 5-летний опыт)</li><li>Python (твёрдый 9-летний опыт)</li><li>Haskell</li><li>Bash (8-летний опыт)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="хранилища-данных" tabindex="-1"><a class="header-anchor" href="#хранилища-данных"><span>Хранилища данных:</span></a></h4><ul><li>PostgreSQL (предпочитаю, твёрдый 8-летний опыт)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (предпочитаю, твердый 5-летний опыт)</li></ul><hr><p>Я так же имею большой опыт в создании следующих типов приложений:</p><ul><li>Традиционные (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Динамическое (SPA)</li><li>Гибридное (SSR + SPA)</li><li>Консольные</li><li>Кроссплатформенные</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>async-graphql</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>shaku</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>bb8</code> + <code>postgres-types</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>diesel</code> (2-летний опыт)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (твёрдый 5-летний опыт)</li><li><code>Express</code> (твёрдый 9-летний опыт)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (твёрдый 5-летний опыт)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (твёрдый 8-летний опыт)</li><li><code>VueJS</code> (предпочитаю, твёрдый 4-летний опыт)</li><li><code>Cypress</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>Sass</code> (предпочитаю, твёрдый 8-летний опыт)</li><li><code>Less</code> (слабый 4-летний опыт)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>Docker Swarm</code> (твёрдый 6-летний опыт)</li><li><code>Kubernetes</code> (слабый 5-летний опыт)</li><li><code>Woodpecker CI</code> (твёрдый 4-летний опыт)</li><li><code>Drone CI</code> (твёрдый 3-летний опыт)</li><li><code>Gitlab CI</code> (твёрдый 7-летний опыт)</li><li><code>GitHub Actions</code> (4-летний опыт)</li></ul><h2 id="интересы" tabindex="-1"><a class="header-anchor" href="#интересы"><span>Интересы</span></a></h2><p>Open-source проекты - моя страсть! Разрабатываю, поддерживаю и улучшаю проекты в своё свободное время.</p><p>Помимо программирования я люблю готовить и проводить время со своей любимой семьей!</p><h2 id="контакты" tabindex="-1"><a class="header-anchor" href="#контакты"><span>Контакты</span></a></h2><p>Simplex (Предпочтительно): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="ссылки" tabindex="-1"><a class="header-anchor" href="#ссылки"><span>Ссылки</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Приостановлен)</a></li></ul>',30))])}const k=a(p,[["render",h],["__file","index.html.vue"]]),f=JSON.parse('{"path":"/","title":"Резюме","lang":"ru-RU","frontmatter":{"home":true,"title":"Резюме","heroText":null,"head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://pleshevski.ru/eng/"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:title","content":"Резюме"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-09-05T22:11:51.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-05T22:11:51.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Резюме\\"}"]]},"headers":[{"level":2,"title":"Общие сведения","slug":"общие-сведения","link":"#общие-сведения","children":[]},{"level":2,"title":"Умения","slug":"умения","link":"#умения","children":[]},{"level":2,"title":"Stack","slug":"stack","link":"#stack","children":[]},{"level":2,"title":"Интересы","slug":"интересы","link":"#интересы","children":[]},{"level":2,"title":"Контакты","slug":"контакты","link":"#контакты","children":[]},{"level":2,"title":"Ссылки","slug":"ссылки","link":"#ссылки","children":[]}],"git":{"updatedTime":1725574311000,"contributors":[{"name":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":6}]},"filePathRelative":"index.md"}');export{k as comp,f as data}; +import{_ as a,c as t,a as o,b as i,d as r,w as s,e as n,r as d,o as c}from"./app-R2Ffa9VO.js";const p={};function h(m,e){const l=d("RouteLink");return c(),t("div",null,[o("p",null,[e[1]||(e[1]=i("Всегда актуальная ссылка на ")),r(l,{to:"/"},{default:s(()=>e[0]||(e[0]=[i("резюме")])),_:1}),e[2]||(e[2]=i("."))]),e[3]||(e[3]=n('<h2 id="общие-сведения" tabindex="-1"><a class="header-anchor" href="#общие-сведения"><span>Общие сведения</span></a></h2><p>Меня зовут Дмитрий Плешевский.</p><p>Я энтузиаст программного обеспечения с открытым исходным кодом, ведущий разработчик програмного обеспечения, архитектор, руководитель команды, а так же ментор.</p><h2 id="умения" tabindex="-1"><a class="header-anchor" href="#умения"><span>Умения</span></a></h2><h4 id="языки-программирования" tabindex="-1"><a class="header-anchor" href="#языки-программирования"><span>Языки программирования:</span></a></h4><ul><li>TypeScript (предпочитаю, твёрдый 9-летний опыт)</li><li>SQL (предпочитаю, твёрдый 8-летний опыт)</li><li>Rust (предпочитаю, 5-летний опыт)</li><li>Python (твёрдый 9-летний опыт)</li><li>Haskell</li><li>Bash (8-летний опыт)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="хранилища-данных" tabindex="-1"><a class="header-anchor" href="#хранилища-данных"><span>Хранилища данных:</span></a></h4><ul><li>PostgreSQL (предпочитаю, твёрдый 8-летний опыт)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (предпочитаю, твердый 5-летний опыт)</li></ul><hr><p>Я так же имею большой опыт в создании следующих типов приложений:</p><ul><li>Традиционные (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Динамическое (SPA)</li><li>Гибридное (SSR + SPA)</li><li>Консольные</li><li>Кроссплатформенные</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>async-graphql</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>shaku</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>bb8</code> + <code>postgres-types</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>diesel</code> (2-летний опыт)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (твёрдый 5-летний опыт)</li><li><code>Express</code> (твёрдый 9-летний опыт)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (твёрдый 5-летний опыт)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (твёрдый 8-летний опыт)</li><li><code>VueJS</code> (предпочитаю, твёрдый 4-летний опыт)</li><li><code>Cypress</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>Sass</code> (предпочитаю, твёрдый 8-летний опыт)</li><li><code>Less</code> (слабый 4-летний опыт)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>Docker Swarm</code> (твёрдый 6-летний опыт)</li><li><code>Kubernetes</code> (слабый 5-летний опыт)</li><li><code>Woodpecker CI</code> (твёрдый 4-летний опыт)</li><li><code>Drone CI</code> (твёрдый 3-летний опыт)</li><li><code>Gitlab CI</code> (твёрдый 7-летний опыт)</li><li><code>GitHub Actions</code> (4-летний опыт)</li></ul><h2 id="интересы" tabindex="-1"><a class="header-anchor" href="#интересы"><span>Интересы</span></a></h2><p>Open-source проекты - моя страсть! Разрабатываю, поддерживаю и улучшаю проекты в своё свободное время.</p><p>Помимо программирования я люблю готовить и проводить время со своей любимой семьей!</p><h2 id="контакты" tabindex="-1"><a class="header-anchor" href="#контакты"><span>Контакты</span></a></h2><p>Simplex (Предпочтительно): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="ссылки" tabindex="-1"><a class="header-anchor" href="#ссылки"><span>Ссылки</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Приостановлен)</a></li></ul>',30))])}const k=a(p,[["render",h],["__file","index.html.vue"]]),y=JSON.parse('{"path":"/","title":"Резюме","lang":"ru-RU","frontmatter":{"home":true,"title":"Резюме","heroText":null,"head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://pleshevski.ru/eng/"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:title","content":"Резюме"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-09-05T22:11:51.000Z"}],["meta",{"property":"article:modified_time","content":"2024-09-05T22:11:51.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Резюме\\"}"]]},"headers":[{"level":2,"title":"Общие сведения","slug":"общие-сведения","link":"#общие-сведения","children":[]},{"level":2,"title":"Умения","slug":"умения","link":"#умения","children":[]},{"level":2,"title":"Stack","slug":"stack","link":"#stack","children":[]},{"level":2,"title":"Интересы","slug":"интересы","link":"#интересы","children":[]},{"level":2,"title":"Контакты","slug":"контакты","link":"#контакты","children":[]},{"level":2,"title":"Ссылки","slug":"ссылки","link":"#ссылки","children":[]}],"git":{"updatedTime":1725574311000,"contributors":[{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@ideascup.me","commits":8},{"name":"janabhumi","username":"janabhumi","email":"dmitriy@ideascup.me","commits":1},{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":13}]},"filePathRelative":"index.md"}');export{k as comp,y as data}; diff --git a/assets/style-CynUSZ8x.css b/assets/style-CynUSZ8x.css new file mode 100644 index 0000000..21b1bc1 --- /dev/null +++ b/assets/style-CynUSZ8x.css @@ -0,0 +1 @@ +.vp-back-to-top-button{position:fixed!important;inset-inline-end:1rem;bottom:4rem;z-index:100;width:48px;height:48px;padding:12px;border-width:0;border-radius:50%;background:var(--back-to-top-c-bg);color:var(--back-to-top-c-accent-bg);box-shadow:2px 2px 10px 4px var(--back-to-top-c-shadow);cursor:pointer}@media (max-width: 959px){.vp-back-to-top-button{transform:scale(.8);transform-origin:100% 100%}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--back-to-top-c-accent-hover)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:24px;height:24px;margin:0 auto;background:var(--back-to-top-c-icon);-webkit-mask-image:var(--back-to-top-icon);mask-image:var(--back-to-top-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:cover;mask-size:cover}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;transform:rotate(-90deg);transform-origin:50% 50%}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0}:root{--back-to-top-z-index: 5;--back-to-top-icon: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2048%2048'%3e%3cpath%20fill='none'%20stroke='currentColor'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='4'%20d='M24.008%2014.1V42M12%2026l12-12l12%2012M12%206h24'%20/%3e%3c/svg%3e");--back-to-top-c-bg: var(--vp-c-bg);--back-to-top-c-accent-bg: var(--vp-c-accent-bg);--back-to-top-c-accent-hover: var(--vp-c-accent-hover);--back-to-top-c-shadow: var(--vp-c-shadow);--back-to-top-c-icon: currentcolor}.vp-copy-code-button{position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-width:0;border-radius:.5rem;background:#0000;outline:none;opacity:0;cursor:pointer;transition:opacity .4s}@media print{.vp-copy-code-button{display:none}}.vp-copy-code-button:before{content:"";display:inline-block;width:1.25rem;height:1.25rem;padding:.625rem;background:currentcolor;color:var(--copy-code-c-text);font-size:1.25rem;-webkit-mask-image:var(--code-copy-icon);mask-image:var(--code-copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.vp-copy-code-button:focus,.vp-copy-code-button.copied{opacity:1}.vp-copy-code-button:hover,.vp-copy-code-button.copied{background:var(--copy-code-c-hover)}.vp-copy-code-button.copied:before{-webkit-mask-image:var(--code-copied-icon);mask-image:var(--code-copied-icon)}.vp-copy-code-button.copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--copy-code-c-hover);color:var(--copy-code-c-text);font-weight:500;line-height:1.25rem;white-space:nowrap}.no-copy-code .vp-copy-code-button{display:none}body:not(.no-copy-code) div[class*=language-]:hover:before{display:none}body:not(.no-copy-code) div[class*=language-]:hover .vp-copy-code-button{opacity:1}:root{--code-copy-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2'%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");--code-copied-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2'%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");--copy-code-c-text: var(--code-c-line-number);--copy-code-c-hover: var(--code-c-highlight-bg)}.hint-container{position:relative;background:var(--hint-c-soft);transition:background var(--vp-t-color),color var(--vp-t-color)}@media print{.hint-container{page-break-inside:avoid}}.hint-container>.hint-container-title{color:var(--hint-c-title)}.hint-container :not(pre)>code{background:var(--hint-c-soft)}.hint-container .hint-container-title{position:relative;margin-block:.75em;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-block:.75rem;padding:.25em 1em;border-radius:.5em;color:inherit;font-size:var(--hint-font-size)}@media print{.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{border-inline-start-width:.25em;border-inline-start-style:solid}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75em}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;inset-inline-start:0;top:calc(50% - .6125em);width:1.25em;height:1.25em;font-size:1.25em}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-c-accent)}.hint-container.important{--hint-c-accent: var(--important-c-accent);--hint-c-title: var(--important-c-text);--hint-c-soft: var(--important-c-soft)}.hint-container.important>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.info{--hint-c-accent: var(--info-c-accent);--hint-c-title: var(--info-c-text);--hint-c-soft: var(--info-c-soft)}.hint-container.info>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.note{--hint-c-accent: var(--note-c-accent);--hint-c-title: var(--note-c-text);--hint-c-soft: var(--note-c-soft)}.hint-container.note>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.tip{--hint-c-accent: var(--tip-c-accent);--hint-c-title: var(--tip-c-text);--hint-c-soft: var(--tip-c-soft)}.hint-container.tip>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.warning{--hint-c-accent: var(--warning-c-accent);--hint-c-title: var(--warning-c-text);--hint-c-soft: var(--warning-c-soft)}.hint-container.warning>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.caution{--hint-c-accent: var(--caution-c-accent);--hint-c-title: var(--caution-c-text);--hint-c-soft: var(--caution-c-soft)}.hint-container.caution>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.details{position:relative;display:block;margin-block:.75rem;padding:1.25rem 1rem;border-radius:.5rem;background:var(--detail-c-bg);transition:background var(--vp-t-transform),color var(--vp-t-transform)}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-c-accent)}.hint-container.details :not(pre)>code{background:var(--detail-c-soft)}.hint-container.details summary{position:relative;margin:-1rem;padding-block:1em;padding-inline:3em 1.5em;list-style:none;font-size:var(--hint-font-size);cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:#0000;font-size:0}.hint-container.details summary:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:" ";position:absolute;inset-inline-start:.8em;top:calc(50% - .5em);width:1em;height:1em;font-size:1.25rem;line-height:normal;transition:color,var(--vp-t-color),transform var(--vp-t-transform);transform:rotate(90deg)}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:before{transform:rotate(180deg)}:root{--hint-font-size: .92rem;--important-c-accent: var(--vp-c-purple-bg);--important-c-text: var(--vp-c-purple-text);--important-c-soft: var(--vp-c-purple-soft);--info-c-accent: var(--vp-c-blue-bg);--info-c-text: var(--vp-c-blue-text);--info-c-soft: var(--vp-c-blue-soft);--note-c-accent: var(--vp-c-grey-bg);--note-c-text: var(--vp-c-grey-text);--note-c-soft: var(--vp-c-grey-soft);--tip-c-accent: var(--vp-c-green-bg);--tip-c-text: var(--vp-c-green-text);--tip-c-soft: var(--vp-c-green-soft);--warning-c-accent: var(--vp-c-yellow-bg);--warning-c-text: var(--vp-c-yellow-text);--warning-c-soft: var(--vp-c-yellow-soft);--caution-c-accent: var(--vp-c-red-bg);--caution-c-text: var(--vp-c-red-text);--caution-c-soft: var(--vp-c-red-soft);--detail-c-bg: var(--vp-c-control);--detail-c-icon: var(--vp-c-border);--detail-c-soft: var(--vp-c-grey-soft)}:root{--nprogress-c: var(--vp-c-accent);--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:var(--nprogress-z-index);width:100%;height:2px;background:var(--nprogress-c)}:root{--code-padding-x: 1.25rem;--code-padding-y: 1rem;--code-border-radius: 6px;--code-line-height: 1.6;--code-font-size: 14px;--code-font-family: consolas, monaco, "Andale Mono", "Ubuntu Mono", monospace}div[class*=language-]{position:relative;border-radius:var(--code-border-radius);background-color:var(--code-c-bg)}div[class*=language-]:before{content:attr(data-title);position:absolute;top:.8em;right:1em;z-index:3;color:var(--code-c-text);font-size:.75rem}div[class*=language-] pre{position:relative;z-index:1;overflow-x:auto;margin:0;border-radius:var(--code-border-radius);font-size:var(--code-font-size);font-family:var(--code-font-family);line-height:var(--code-line-height)}div[class*=language-] pre code{display:block;box-sizing:border-box;width:-moz-fit-content;width:fit-content;min-width:100%;padding:var(--code-padding-y) var(--code-padding-x);background-color:#0000!important;color:var(--code-c-text);overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}:root{--code-c-text: #f8f8f2;--code-c-bg: #2e3440;--code-c-highlight-bg: rgb(51.6454545455, 60.5484848485, 78.3545454545);--code-c-line-number: rgba(248, 248, 242, .67)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a3be8c}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#81a1c1}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,.token.important{color:#ebcb8b}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}:root{--code-line-number-width: 3rem}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;width:var(--code-line-number-width);height:100%;border-right:1px solid var(--code-c-highlight-bg, var(--code-c-text));border-radius:var(--code-border-radius) 0 0 var(--code-border-radius);transition:border var(--vp-t-color)}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--code-line-number-width)}div[class*=language-].line-numbers-mode code{padding-left:1rem}div[class*=language-].line-numbers-mode .line-numbers{counter-reset:line-number;position:absolute;top:0;width:var(--code-line-number-width);padding-top:var(--code-padding-y);color:var(--code-c-line-number, var(--code-c-text));font-size:var(--code-font-size);line-height:var(--code-line-height);text-align:center}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:3;font-family:var(--code-font-family);-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);counter-increment:line-number}div[class*=language-] .line.highlighted{display:inline-block;width:100%;margin:0 calc(-1*var(--code-padding-x));padding:0 var(--code-padding-x);background-color:var(--code-c-highlight-bg)}@property --vp-collapsed-lines-bg{inherits:false;initial-value:#fff;syntax:"<color>"}@keyframes code-collapsed-lines{0%{opacity:.3;transform:translateY(-2px) rotate(var(--vp-collapsed-lines-rotate))}to{opacity:1;transform:translateY(2px) rotate(var(--vp-collapsed-lines-rotate))}}div[class*=language-].has-collapsed-lines .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg);--vp-collapsed-lines-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='m18 12l-6 6l-6-6m12-6l-6 6l-6-6'/%3E%3C/svg%3E");--vp-collapsed-lines-rotate: 0deg;position:absolute;right:0;bottom:0;left:0;z-index:4;display:flex;align-items:center;justify-content:center;height:28px;background:linear-gradient(to bottom,transparent 0%,var(--vp-collapsed-lines-bg) 55%,var(--vp-collapsed-lines-bg) 100%);cursor:pointer;transition:--vp-collapsed-lines-bg var(--vp-t-color)}div[class*=language-].has-collapsed-lines .collapsed-lines:hover{--vp-collapsed-lines-bg: var(--code-c-highlight-bg)}div[class*=language-].has-collapsed-lines .collapsed-lines:before{content:"";display:inline-block;width:24px;height:24px;background-color:var(--code-c-text);-webkit-mask-image:var(--vp-collapsed-lines-icon);mask-image:var(--vp-collapsed-lines-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none;animation:code-collapsed-lines 1.2s infinite alternate-reverse ease-in-out}div[class*=language-].has-collapsed-lines[data-highlighter=shiki] .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg, var(--shiki-light-bg))}[data-theme=dark] div[class*=language-].has-collapsed-lines[data-highlighter=shiki] .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg, var(--shiki-dark-bg))}div[class*=language-].has-collapsed-lines.collapsed{overflow-y:hidden;height:calc(var(--vp-collapsed-lines)*var(--code-line-height)*var(--code-font-size) + var(--code-padding-y) + 28px)}div[class*=language-].has-collapsed-lines:not(.collapsed) code{padding-bottom:max(var(--code-padding-y),28px)}div[class*=language-].has-collapsed-lines:not(.collapsed) .collapsed-lines{--vp-collapsed-lines-rotate: 180deg}.vp-code-tabs-nav{overflow-x:auto;margin:.75rem 0 -.75rem;padding:0;border-radius:6px 6px 0 0;background:var(--code-tabs-c-bg);list-style:none;white-space:nowrap;transition:background var(--vp-t-color)}@media print{.vp-code-tabs-nav{display:none}}@media (max-width: 419px){.vp-code-tabs-nav{margin-inline:-1.5rem;border-radius:0}}.vp-code-tab-nav{position:relative;min-width:3rem;margin:0;padding:6px 12px;border-width:0;border-radius:6px 6px 0 0;background:#0000;color:var(--code-tabs-c-text);font-weight:600;font-size:.875em;line-height:1.4;cursor:pointer;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-code-tab-nav:hover{background:var(--code-tabs-c-hover)}.vp-code-tab-nav:before,.vp-code-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:6px;height:6px}.vp-code-tab-nav:before{right:100%}.vp-code-tab-nav:after{left:100%}.vp-code-tab-nav.active{background:var(--code-c-bg, var(--vp-c-bg-alt))}.vp-code-tab-nav.active:before{background:radial-gradient(12px at left top,transparent 50%,var(--code-c-bg) 50%)}.vp-code-tab-nav.active:after{background:radial-gradient(12px at right top,transparent 50%,var(--code-c-bg) 50%)}.vp-code-tab-nav:first-child:before{display:none}[dir=rtl] .vp-code-tab-nav:first-child:before{display:block}[dir=rtl] .vp-code-tab-nav:first-child:after{display:none}.vp-code-tab{display:none}@media print{.vp-code-tab{display:block}}.vp-code-tab.active{display:block}.vp-code-tab div[class*=language-]{border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-code-tab div[class*=language-]{margin:.75rem -1.5rem;border-radius:0}}.vp-code-tab div[class*=language-].line-numbers-mode:after{border-top-left-radius:0}.vp-code-tab div[class*=language-] pre{border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-code-tab div[class*=language-] pre{border-radius:0}}@media print{.vp-code-tab div[class*=language-] code{white-space:pre-wrap}}.vp-code-tab-title{display:none;font-weight:500}@media print{.vp-code-tab-title{display:block}}.vp-tabs{margin:1.5rem 0;border:1px solid var(--vp-c-border);border-radius:8px}@media (max-width: 419px){[vp-content]>.vp-tabs{margin-inline:-1.5rem;border:none;border-bottom:1px solid var(--vp-c-border);border-radius:0}}.vp-tabs-nav{overflow-x:auto;margin:0;padding:0;border-radius:.5rem .5rem 0 0;background:var(--tab-c-bg-nav);list-style:none;white-space:nowrap;transition:background var(--vp-t-color)}@media print{.vp-tabs-nav{display:none}}@media (max-width: 419px){.vp-tabs-nav{border-radius:0}}.vp-tab-nav{position:relative;min-width:4rem;margin:0;padding:.5em 1em;border:none;border-radius:.5rem .5rem 0 0;background:#0000;color:var(--tab-c-nav);font-weight:600;font-size:.875em;line-height:1.75;cursor:pointer;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-tab-nav:hover{background:var(--tab-c-bg-nav-hover)}.vp-tab-nav:before,.vp-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:8px;height:8px}.vp-tab-nav:before{right:100%}.vp-tab-nav:after{left:100%}.vp-tab-nav.active{background:var(--tab-c-bg)}.vp-tab-nav.active:before{background:radial-gradient(16px at left top,transparent 50%,var(--tab-c-bg) 50%)}.vp-tab-nav.active:after{background:radial-gradient(16px at right top,transparent 50%,var(--tab-c-bg) 50%)}.vp-tab-nav:first-child:before{display:none}.vp-tab{display:none;padding:1rem .75rem;border-radius:0 0 .5rem .5rem;background:var(--tab-c-bg);transition:background var(--vp-t-color)}@media print{.vp-tab{display:block;padding:.5rem}}.vp-tab.active{display:block}.vp-tab:nth-child(n+2) .vp-tab-title{border-top:none}.vp-tab-title{display:none;padding:.25rem 0;border-top:1px solid var(--vp-c-border);font-weight:500}@media print{.vp-tab-title{display:block}}:root{--code-tabs-c-text: var(--code-c-text);--code-tabs-c-bg: var(--code-c-highlight-bg);--code-tabs-c-hover: var(--code-c-bg, var(--vp-c-bg-alt));--tab-c-bg: var(--vp-c-bg);--tab-c-nav: var(--vp-c-text);--tab-c-bg-nav: var(--vp-c-grey-bg);--tab-c-bg-nav-hover: var(--vp-c-control-hover)}.vp-badge{display:inline-block;vertical-align:top;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-c-accent-soft);color:var(--vp-c-accent);font-size:14px;line-height:18px;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-badge+.vp-badge{margin-inline-start:5px}.vp-badge.tip{background:var(--badge-c-tip-bg);color:var(--badge-c-tip-text)}.vp-badge.warning{background:var(--badge-c-warning-bg);color:var(--badge-c-warning-text)}.vp-badge.danger{background:var(--badge-c-danger-bg);color:var(--badge-c-danger-text)}.vp-badge.important{background:var(--badge-c-important-bg);color:var(--badge-c-important-text)}.vp-badge.info{background:var(--badge-c-info-bg);color:var(--badge-c-info-text)}.vp-badge.note{background:var(--badge-c-note-bg);color:var(--badge-c-note-text)}.vp-features{display:flex;flex-wrap:wrap;place-content:stretch space-between;align-items:flex-start;margin-top:2.5rem;padding:1.2rem 0;border-top:1px solid var(--vp-c-gutter);transition:border-color var(--vp-t-color)}@media (max-width: 719px){.vp-features{flex-direction:column}}.vp-feature{flex-grow:1;flex-basis:30%;max-width:30%}@media (max-width: 719px){.vp-feature{max-width:100%;padding:0 2.5rem}}.vp-feature h2{padding-bottom:0;border-bottom:none;font-weight:500;font-size:1.4rem}@media (max-width: 419px){.vp-feature h2{font-size:1.25rem}}.vp-feature p{color:var(--vp-c-text-mute)}.vp-footer{padding:2.5rem;border-top:1px solid var(--vp-c-border);color:var(--vp-c-text-mute);text-align:center;transition:border-color var(--vp-t-color)}.vp-hero{text-align:center}.vp-hero-image{display:block;max-width:100%;max-height:280px;margin:3rem auto 1.5rem}@media (max-width: 419px){.vp-hero-image{max-height:210px;margin:2rem auto 1.2rem}}#main-title{font-size:3rem}@media (max-width: 419px){#main-title{font-size:2rem}}#main-title,.vp-hero-description,.vp-hero-actions{margin:1.8rem auto}@media (max-width: 419px){#main-title,.vp-hero-description,.vp-hero-actions{margin:1.2rem auto}}.vp-hero-actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.vp-hero-description{max-width:35rem;color:var(--vp-c-text-mute);font-size:1.6rem;line-height:1.3}@media (max-width: 419px){.vp-hero-description{font-size:1.2rem}}.vp-hero-action-button{display:inline-block;box-sizing:border-box;padding:.8rem 1.6rem;border:2px solid var(--vp-c-accent-bg);border-radius:4px;background-color:var(--vp-c-bg);color:var(--vp-c-accent);font-size:1.2rem;transition:background-color border-color color var(--vp-t-color)}@media (max-width: 419px){.vp-hero-action-button{padding:.6rem 1.2rem;font-size:1rem}}.vp-hero-action-button:hover{color:var(--vp-c-accent-text)}.vp-hero-action-button.primary{background-color:var(--vp-c-accent-bg);color:var(--vp-c-accent-text)}.vp-hero-action-button.primary:hover{border-color:var(--vp-c-accent-hover);background-color:var(--vp-c-accent-hover)}.vp-home{display:block;max-width:var(--homepage-width);margin:0 auto;padding:var(--navbar-height) 2rem 0}@media (max-width: 419px){.vp-home{padding-right:1.5rem;padding-left:1.5rem}}.vp-home [vp-content]{margin:0;padding:0}.vp-site-logo{vertical-align:top;height:var(--navbar-line-height);margin-right:var(--navbar-padding-v)}.vp-site-name{position:relative;color:var(--vp-c-text);font-weight:600;font-size:1.3rem}@media screen and (max-width: 719px){.vp-site-name{display:block;overflow:hidden;width:calc(100vw - 11rem);text-overflow:ellipsis;white-space:nowrap}}.vp-dropdown-enter-from,.vp-dropdown-leave-to{height:0!important}.vp-navbar-dropdown-wrapper{cursor:pointer}.vp-navbar-dropdown-wrapper:not(.mobile){height:1.8rem}.vp-navbar-dropdown-wrapper:not(.mobile):hover .vp-navbar-dropdown,.vp-navbar-dropdown-wrapper:not(.mobile).open .vp-navbar-dropdown{display:block!important}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown{overflow:hidden;transition:height .1s ease-out;padding-top:.5rem}.vp-navbar-dropdown-wrapper:not(.mobile) .vp-navbar-dropdown{position:absolute;top:100%;right:0;display:none;overflow-y:auto;box-sizing:border-box;height:auto!important;max-height:calc(100vh - 2.7rem);margin:0;padding:.6rem 0;border:1px solid var(--vp-c-gutter);border-radius:.5rem;background-color:var(--vp-c-bg-elv);text-align:left;white-space:nowrap}.vp-navbar-dropdown-title{display:block;padding:inherit;border:none;background:transparent;color:var(--vp-c-text);font-weight:500;font-size:.9rem;font-family:inherit;line-height:1.4rem;cursor:inherit}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-title{display:none}.vp-navbar-dropdown-title:hover{border-color:transparent}.vp-navbar-dropdown-title-mobile{display:none;padding:inherit;border:none;background:transparent;color:var(--vp-c-text);font-weight:600;font-size:inherit;font-family:inherit;line-height:1.4rem;cursor:inherit}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-title-mobile{display:block}.vp-navbar-dropdown-title-mobile:hover{color:var(--vp-c-accent)}.vp-navbar-dropdown-item{color:inherit;line-height:1.7rem}.vp-navbar-dropdown-item .auto-link{position:relative;display:block;margin-bottom:0;padding:0 1.25rem;border-bottom:none;font-weight:400;line-height:1.7rem}.vp-navbar-dropdown-item .auto-link:hover,.vp-navbar-dropdown-item .auto-link.auto-link-active{color:var(--vp-c-accent)}.vp-navbar-dropdown-item .auto-link.auto-link-active:after{content:"";position:absolute;top:calc(50% - 2px);left:9px;width:0;height:0;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:5px solid var(--vp-c-accent)}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-item>a{font-size:15px;line-height:2rem}.vp-navbar-dropdown-subtitle{margin:.45rem 0 0;padding:1rem 0 .45rem;border-top:1px solid var(--vp-c-gutter);font-size:.9rem}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-subtitle{margin-top:0;padding-top:0;padding-bottom:0;border-top:0;font-size:15px;line-height:2rem}.vp-navbar-dropdown-item:first-child .vp-navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}.vp-navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.vp-navbar-dropdown-subtitle>.auto-link{font-weight:inherit}.vp-navbar-dropdown-subtitle>.auto-link.auto-link-active:after{display:none}.vp-navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.vp-navbar-dropdown-subitem{font-size:.9em}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-subitem{padding-left:1rem;font-size:14px}.vp-navbar-items{display:inline-block}@media print{.vp-navbar-items{display:none}}.vp-navbar-items .auto-link{color:inherit;line-height:1.4rem}.vp-navbar-items .auto-link:hover,.vp-navbar-items .auto-link.auto-link-active{color:var(--vp-c-text)}.vp-navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}@media (max-width: 719px){.vp-navbar-item{margin-left:0}}.vp-navbar-item:first-child{margin-left:0}.vp-navbar-item .auto-link:hover,.vp-navbar-item .auto-link.auto-link-active{color:var(--vp-c-accent)}.vp-navbar-item>.auto-link{display:inline-block}.vp-navbar-item>.auto-link:hover,.vp-navbar-item>.auto-link.auto-link-active{margin-bottom:-2px;border-bottom:2px solid var(--vp-c-accent)}@media (max-width: 719px){.vp-navbar-item>.auto-link:hover,.vp-navbar-item>.auto-link.auto-link-active{margin-bottom:0;border-bottom:none}}.vp-toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:none;color:var(--vp-c-text);opacity:.8;cursor:pointer}@media print{.vp-toggle-color-mode-button{display:none}}.vp-toggle-color-mode-button:hover{opacity:1}.vp-toggle-color-mode-button .light-icon,.vp-toggle-color-mode-button .dark-icon{width:1.25rem;height:1.25rem}.vp-toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block}}.vp-toggle-sidebar-button .icon{display:flex;flex-direction:column;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;cursor:inherit}.vp-toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--vp-c-text);transition:transform var(--vp-t-transform)}.vp-toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(1),.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );position:fixed;top:0;right:0;left:0;z-index:20;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-padding-v) var(--navbar-padding-h);border-bottom:1px solid var(--vp-c-border);background-color:var(--vp-navbar-c-bg);line-height:var(--navbar-line-height);transition:background-color var(--vp-t-color),border-color var(--vp-t-color)}@media screen and (max-width: 719px){.vp-navbar{padding-left:4rem}}.vp-navbar-items-wrapper{position:absolute;top:var(--navbar-padding-v);right:var(--navbar-padding-h);display:flex;box-sizing:border-box;height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);font-size:.9rem;white-space:nowrap}.vp-page-meta{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-page-meta{padding:2rem}}@media (max-width: 419px){.vp-page-meta{padding:1.5rem}}.vp-page-meta{display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto;padding-top:.75rem;padding-bottom:.75rem}@media print{.vp-page-meta{margin:0!important;padding-right:0!important;padding-left:0!important}}@media (max-width: 719px){.vp-page-meta{display:block}}.vp-page-meta .vp-meta-item{flex-grow:1}.vp-page-meta .vp-meta-item .vp-meta-label{font-weight:500}.vp-page-meta .vp-meta-item .vp-meta-label:not(a){color:var(--vp-c-text-mute)}.vp-page-meta .vp-meta-item .vp-meta-info{color:var(--vp-c-text-mute);font-weight:400}.vp-page-meta .git-info{text-align:end}.vp-page-meta .edit-link{margin-top:.25rem;margin-right:.5rem;margin-bottom:.25rem;font-size:14px}@media print{.vp-page-meta .edit-link{display:none}}.vp-page-meta .edit-link .edit-icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-right:.25em}.vp-page-meta .last-updated,.vp-page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.vp-page-meta .last-updated,.vp-page-meta .contributors{font-size:13px;text-align:start}}.vp-page-nav{display:flex;flex-wrap:wrap;max-width:var(--content-width, 740px);min-height:2rem;margin-top:0;margin-right:auto;margin-left:auto;padding:1rem 2rem 0;border-top:1px solid var(--vp-c-gutter);transition:border-top var(--vp-t-color)}@media (max-width: 959px){.vp-page-nav{padding-right:1rem;padding-left:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .auto-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--vp-c-gutter);border-radius:.25rem}.vp-page-nav .auto-link:hover{background:var(--vp-c-control)}.vp-page-nav .auto-link .hint{color:var(--vp-c-text-mute);font-size:.875rem;line-height:2}.vp-page-nav .prev{text-align:start}.vp-page-nav .next{text-align:end}.vp-page{display:block;padding-top:var(--navbar-height);padding-bottom:2rem;padding-left:var(--sidebar-width)}@media (max-width: 959px){.vp-page{padding-left:var(--sidebar-width-mobile)}}@media (max-width: 719px){.vp-page{padding-left:0}}.vp-page [vp-content]{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-page [vp-content]{padding:2rem}}@media (max-width: 419px){.vp-page [vp-content]{padding:1.5rem}}.vp-page [vp-content]{padding-top:0}.vp-sidebar-item{border-left:.25rem solid transparent;color:var(--vp-c-text);cursor:default}.vp-sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.vp-sidebar-item.vp-sidebar-heading{box-sizing:border-box;width:100%;margin:0;padding:.35rem 1.5rem .35rem 1.25rem;font-weight:700;font-size:1.1em;transition:color .15s ease}.vp-sidebar-item.vp-sidebar-heading+.vp-sidebar-children{overflow:hidden;transition:height .1s ease-out;margin-bottom:.75rem}.vp-sidebar-item.collapsible{cursor:pointer}.vp-sidebar-item:not(.vp-sidebar-heading){display:inline-block;box-sizing:border-box;width:100%;margin:0;padding:.35rem 1rem .35rem 2rem;font-weight:400;font-size:1em;line-height:1.4}.vp-sidebar-item:not(.vp-sidebar-heading)+.vp-sidebar-children{padding-left:1rem;font-size:.95em}.vp-sidebar-children .vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.vp-sidebar-children .vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading).active{border-left-color:transparent;font-weight:500}a.vp-sidebar-heading+.vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading).active{border-left-color:transparent}.vp-sidebar-item.active:not(p.vp-sidebar-heading){border-left-color:var(--vp-c-accent);color:var(--vp-c-accent);font-weight:600}.vp-sidebar-item .auto-link{display:block}.vp-sidebar-item.auto-link{display:block;cursor:pointer}.vp-sidebar-item.auto-link:hover{color:var(--vp-c-accent)}.vp-sidebar-items{margin:0;padding:1.5rem 0;list-style-type:none}@media (max-width: 719px){.vp-sidebar-items{padding:1rem 0}}.vp-sidebar-items ul{margin:0;padding:0;list-style-type:none}.vp-sidebar{position:fixed;top:var(--navbar-height);bottom:0;left:0;z-index:10;overflow-y:auto;box-sizing:border-box;width:var(--sidebar-width);margin:0;border-right:1px solid var(--vp-c-border);background-color:var(--vp-sidebar-c-bg);font-size:16px;transition:transform var(--vp-t-transform),background-color var(--vp-t-color),border-color var(--vp-t-color);scrollbar-color:var(--vp-c-accent-bg) var(--vp-c-gutter);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{width:var(--sidebar-width-mobile);font-size:15px}}@media (max-width: 719px){.vp-sidebar{top:0;padding-top:var(--navbar-height);transform:translate(-100%)}}.vp-sidebar::-webkit-scrollbar{width:7px}.vp-sidebar::-webkit-scrollbar-track{background-color:var(--vp-c-gutter)}.vp-sidebar::-webkit-scrollbar-thumb{background-color:var(--vp-c-accent-bg)}.vp-sidebar .vp-navbar-items{display:none;padding:.5rem 0 .75rem;border-bottom:1px solid var(--vp-c-gutter);transition:border-color var(--vp-t-color)}@media (max-width: 719px){.vp-sidebar .vp-navbar-items{display:block}.vp-sidebar .vp-navbar-items .vp-navbar-dropdown-item .route-link-active:after{top:calc(1rem - 2px)}}.vp-sidebar .vp-navbar-items ul{margin:0;padding:0;list-style-type:none}.vp-sidebar .vp-navbar-items .auto-link{font-weight:600}.vp-sidebar .vp-navbar-item{display:block;padding:.5rem 0 .5rem 1.5rem;font-size:1.1em;line-height:1.25rem}.vp-sidebar-mask{position:fixed;top:0;left:0;z-index:9;display:none;width:100vw;height:100vh}.vp-theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.vp-theme-container.no-navbar .vp-sidebar{padding-top:0}}.vp-theme-container.no-navbar .vp-page{padding-top:0}.vp-theme-container.no-navbar [vp-content] h1,.vp-theme-container.no-navbar [vp-content] h2,.vp-theme-container.no-navbar [vp-content] h3,.vp-theme-container.no-navbar [vp-content] h4,.vp-theme-container.no-navbar [vp-content] h5,.vp-theme-container.no-navbar [vp-content] h6{margin-top:1.5rem;padding-top:0}.vp-theme-container.no-sidebar .vp-sidebar{display:none}@media (max-width: 719px){.vp-theme-container.no-sidebar .vp-sidebar{display:block}}.vp-theme-container.no-sidebar .vp-page{padding-left:0}@media (max-width: 719px){.vp-theme-container.sidebar-open .vp-sidebar{transform:translate(0)}.vp-theme-container.sidebar-open .vp-sidebar-mask{display:block}}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-theme-container[data-v-f90f3f6a]{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-theme-container[data-v-f90f3f6a]{padding:2rem}}:root{--vp-c-white: #fff;--vp-c-black: #000;--vp-c-grey-text: #656869;--vp-c-grey-hover: #e4e4e9;--vp-c-grey-bg: #ebebef;--vp-c-grey-soft: rgb(142 150 170 / 14%);--vp-c-indigo-text: #3451b2;--vp-c-indigo-hover: #3a5ccc;--vp-c-indigo-bg: #5672cd;--vp-c-indigo-soft: rgb(100 108 255 / 14%);--vp-c-purple-text: #6f42c1;--vp-c-purple-hover: #7e4cc9;--vp-c-purple-bg: #8e5cd9;--vp-c-purple-soft: rgb(159 122 234 / 14%);--vp-c-blue-text: #2888a7;--vp-c-blue-hover: #2d98ba;--vp-c-blue-bg: #2fa1c5;--vp-c-blue-soft: rgb(27 178 229 / 14%);--vp-c-green-text: #18794e;--vp-c-green-hover: #299764;--vp-c-green-bg: #30a46c;--vp-c-green-soft: rgb(16 185 129 / 14%);--vp-c-yellow-text: #915930;--vp-c-yellow-hover: #946300;--vp-c-yellow-bg: #c28100;--vp-c-yellow-soft: rgb(234 179 8 / 14%);--vp-c-red-text: #b8272c;--vp-c-red-hover: #d5393e;--vp-c-red-bg: #e0575b;--vp-c-red-soft: rgb(244 63 94 / 14%)}[data-theme=dark]{--vp-c-white: #000;--vp-c-black: #fff;--vp-c-grey-text: #939499;--vp-c-grey-hover: #414853;--vp-c-grey-bg: #32363f;--vp-c-grey-soft: rgb(101 117 133 / 16%);--vp-c-indigo-text: #a8b1ff;--vp-c-indigo-hover: #5c73e7;--vp-c-indigo-bg: #3e63dd;--vp-c-indigo-soft: rgb(100 108 255 / 16%);--vp-c-blue-text: #c9e8f2;--vp-c-blue-hover: #a6d9ea;--vp-c-blue-bg: #2785a3;--vp-c-blue-soft: rgb(27 178 229 / 16%);--vp-c-purple-text: #c8abfa;--vp-c-purple-hover: #a879e6;--vp-c-purple-bg: #8e5cd9;--vp-c-purple-soft: rgb(159 122 234 / 16%);--vp-c-green-text: #3dd68c;--vp-c-green-hover: #30a46c;--vp-c-green-bg: #298459;--vp-c-green-soft: rgb(16 185 129 / 16%);--vp-c-yellow-text: #f9b44e;--vp-c-yellow-hover: #da8b17;--vp-c-yellow-bg: #a46a0a;--vp-c-yellow-soft: rgb(234 179 8 / 16%);--vp-c-red-text: #f66f81;--vp-c-red-hover: #f14158;--vp-c-red-bg: #b62a3c;--vp-c-red-soft: rgb(244 63 94 / 16%)}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}html,body{background:var(--vp-c-bg, #fff);accent-color:var(--vp-c-accent, #299764);transition:background-color var(--vp-t-color)}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}@media print{html{font-size:12pt}}html[data-theme=dark]{color-scheme:dark}body{min-height:100vh;margin:0;padding:0;color:var(--vp-c-text, rgb(60, 60, 67));font-size:1rem;font-synthesis:style}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;overflow-wrap:break-word}h1:focus-visible,h2:focus-visible,h3:focus-visible,h4:focus-visible,h5:focus-visible,h6:focus-visible{outline:none}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid var(--vp-c-gutter, #e2e2e3);font-size:1.65rem;transition:border-color var(--vp-t-color)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}a{color:var(--vp-c-accent, #299764);font-weight:500;text-decoration:none;overflow-wrap:break-word}a.header-anchor{position:relative;color:inherit;text-decoration:none}a.header-anchor:before{content:"¶";position:absolute;top:.4167em;left:-.75em;display:none;color:var(--vp-c-accent, #299764);font-size:.75em}[dir=rtl] a.header-anchor:before{right:-.75em}a.header-anchor:hover:before{display:block}a.header-anchor:focus-visible{outline:none}a.header-anchor:focus-visible:before{display:block;outline:auto}strong{font-weight:600}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid var(--vp-c-border-hard, #b8b8ba);color:var(--vp-c-text-mute, rgba(60, 60, 67, .78));font-size:1rem;overflow-wrap:break-word;transition:border-color var(--vp-t-color),color var(--vp-t-color)}blockquote>p{margin:0}hr{border:0;border-bottom:1px solid var(--vp-c-gutter, #e2e2e3);transition:border-color var(--vp-t-color)}:not(pre)>code{margin:0;padding:3px 6px;border-radius:4px;background:var(--vp-c-grey-soft, rgba(142, 150, 170, .14));font-size:.875em;overflow-wrap:break-word;transition:background-color var(--vp-t-color),color var(--vp-t-color)}p a code{color:var(--vp-c-accent, #299764);font-weight:400}table code{padding:.1rem .4rem}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid var(--vp-c-border, #c2c2c4);border-radius:.25em;box-shadow:1px 1px 4px 0 var(--vp-c-shadow, rgba(0, 0, 0, .15));line-height:1;letter-spacing:-.1em;text-align:center}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tbody tr:nth-child(odd){background:var(--vp-c-bg-alt, #f6f8fa);transition:background-color var(--vp-t-color)}th,td{padding:.6em 1em;border:1px solid var(--vp-c-border-hard, #d1d4d7);transition:border-color var(--vp-t-color)}pre{text-align:left;direction:ltr;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}@media print{pre{white-space:pre-wrap}}pre code{padding:0;border-radius:0}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a.header-anchor{text-decoration:none}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@media (prefers-reduced-motion: reduce){*,:before,:after{background-attachment:initial!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important}}:root{--vp-c-accent: #299764;--vp-c-accent-bg: #3eaf7c;--vp-c-accent-hover: #4abf8a;--vp-c-accent-text: var(--vp-c-white);--vp-c-accent-soft: rgb(16 185 129 / 14%);--vp-c-bg: #fff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #fff;--vp-c-text: rgb(60 60 67);--vp-c-text-mute: rgb(60 60 67 / 78%);--vp-c-text-subtle: rgb(60 60 67 / 56%);--vp-c-gutter: #e2e2e3;--vp-c-border: #c2c2c4;--vp-c-border-hard: #b8b8ba;--vp-c-shadow: rgb(0 0 0 / 15%);--vp-c-control: rgb(142 150 170 / 10%);--vp-c-control-hover: rgb(142 150 170 / 16%);--vp-c-control-disabled: #eaeaea;--vp-navbar-c-bg: var(--vp-c-bg);--vp-sidebar-c-bg: var(--vp-c-bg);--vp-c-code-tab-title: var(--code-c-text, rgb(255 255 255 / 90%));--vp-c-code-tab-bg: var(--code-bg-color, var(--code-c-bg));--vp-c-code-tab-active: var(--vp-c-accent);--badge-c-tip-text: var(--vp-c-green-text);--badge-c-tip-bg: var(--vp-c-green-soft);--badge-c-warning-text: var(--vp-c-yellow-text);--badge-c-warning-bg: var(--vp-c-yellow-soft);--badge-c-danger-text: var(--vp-c-red-text);--badge-c-danger-bg: var(--vp-c-red-soft);--badge-c-important-text: var(--vp-c-purple-text);--badge-c-important-bg: var(--vp-c-purple-soft);--badge-c-info-text: var(--vp-c-indigo-text);--badge-c-info-bg: var(--vp-c-indigo-soft);--badge-c-note-text: var(--vp-c-grey-text);--badge-c-note-bg: var(--vp-c-grey-soft);--font-family: -apple-system, "BlinkMacSystemFont", "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--navbar-height: 3.6rem;--navbar-padding-v: .7rem;--navbar-padding-h: 1.5rem;--sidebar-width: 20rem;--sidebar-width-mobile: calc(var(--sidebar-width) * .82);--content-width: 740px;--homepage-width: 960px;--header-offset: var(--navbar-height);--vp-t-color: .3s ease;--vp-t-transform: .3s ease;--external-link-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");--external-link-c-icon: var(--vp-c-text-mute)}[data-theme=dark]{--vp-c-accent: #3dd68c;--vp-c-accent-bg: #3aa675;--vp-c-accent-hover: #349469;--vp-c-accent-soft: rgb(16 185 129 / 16%);--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-text: rgb(235 235 245 / 86%);--vp-c-text-mute: rgb(235 235 245 / 60%);--vp-c-text-subtle: rgb(235 235 245 / 38%);--vp-c-gutter: #000;--vp-c-border: #3c3f44;--vp-c-border-hard: #45484e;--vp-c-shadow: rgb(0 0 0 / 30%);--vp-c-control: rgb(101 117 133 / 12%);--vp-c-control-hover: rgb(101 117 133 / 18%);--vp-c-control-disabled: #363636}body{font-family:var(--font-family)}code{font-family:var(--code-font-family)}[vp-content] h1,[vp-content] h2,[vp-content] h3,[vp-content] h4,[vp-content] h5,[vp-content] h6{margin-top:calc(.5rem - var(--header-offset));margin-bottom:0;padding-top:calc(1rem + var(--header-offset))}[vp-content] h1:first-child,[vp-content] h2:first-child,[vp-content] h3:first-child,[vp-content] h4:first-child,[vp-content] h5:first-child,[vp-content] h6:first-child{margin-bottom:1rem}[vp-content] h1:first-child+p,[vp-content] h1:first-child+pre,[vp-content] h1:first-child+.custom-container,[vp-content] h2:first-child+p,[vp-content] h2:first-child+pre,[vp-content] h2:first-child+.custom-container,[vp-content] h3:first-child+p,[vp-content] h3:first-child+pre,[vp-content] h3:first-child+.custom-container,[vp-content] h4:first-child+p,[vp-content] h4:first-child+pre,[vp-content] h4:first-child+.custom-container,[vp-content] h5:first-child+p,[vp-content] h5:first-child+pre,[vp-content] h5:first-child+.custom-container,[vp-content] h6:first-child+p,[vp-content] h6:first-child+pre,[vp-content] h6:first-child+.custom-container{margin-top:2rem}@media (max-width: 419px){[vp-content] h1{font-size:1.9rem}}[vp-content] a:not(.header-anchor){text-decoration:underline}[vp-content] img{max-width:100%}div[class*=language-]{margin:.75rem 0;transition:background-color var(--vp-t-color),color var(--vp-t-color)}@media (max-width: 419px){div[class*=language-]{--code-border-radius: 0;margin:.75rem -1.5rem}}div[class*=language-] .line.diff,div[class*=language-] .line.highlighted{transition:background-color var(--vp-t-color)}.table-of-contents .vp-badge{vertical-align:middle}.arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}[data-theme=dark] .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.arrow.down{transform:rotate(180deg)}.arrow.right{transform:rotate(90deg)}.arrow.left{transform:rotate(-90deg)}.vp-external-link-icon:after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .external-link:after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon [vp-content] a[href*="://"]:not(.no-external-link-icon):after,.external-link-icon [vp-content] a[target=_blank]:not(.no-external-link-icon):after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}@media screen and (max-width: 719px){.vp-hide-mobile{display:none}}.vp-comment{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-comment{padding:2rem}}@media (max-width: 419px){.vp-comment{padding:1.5rem}}.vp-navbar .DocSearch{transition:background-color var(--vp-t-color)}.vp-navbar .search-box{vertical-align:top;flex:0 0 auto}@media screen and (max-width: 719px){.hint-container{margin-inline:-.75rem}}.lang-modal-fade-enter-active,.lang-modal-fade-leave-active{transition:opacity .5s}.lang-modal-fade-enter,.lang-modal-fade-leave-to{opacity:0}.lang-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1499;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@media print{.lang-modal-mask{display:none}}.lang-modal-wrapper{position:relative;z-index:1500;overflow:hidden;max-width:80vw;padding:1rem 2rem;border-radius:8px;background:var(--vp-bg);box-shadow:0 2px 6px 0 var(--card-shadow)}.lang-modal-action{display:block;width:100%;margin:1rem 0;padding:.5rem .75rem;border:none;border-radius:8px;background-color:var(--vp-bglt);color:var(--vp-c);cursor:pointer}.lang-modal-action:hover{background-color:var(--vp-bgl)}.lang-modal-action.primary{background-color:var(--vp-tc);color:var(--white)}.lang-modal-action.primary:hover{background-color:var(--vp-tcl)}.grey{color:#0006}.works-table-wrapper[data-v-765855fb]{margin:0 auto;padding:0 2rem;max-width:1224px;box-sizing:border-box}.works-table-wrapper[data-v-765855fb] table{width:100%}:root{--content-width: 960px}.vp-page .theme-default-content{padding-bottom:0!important}.vp-page-meta{display:none} diff --git a/assets/works.html-D4EgERwy.js b/assets/works.html-D4EgERwy.js new file mode 100644 index 0000000..857f043 --- /dev/null +++ b/assets/works.html-D4EgERwy.js @@ -0,0 +1 @@ +import{_ as t,c as r,e as a,o as i}from"./app-R2Ffa9VO.js";const o={};function n(l,e){return i(),r("div",null,e[0]||(e[0]=[a('<h2 id="highlighted-working-experience" tabindex="-1"><a class="header-anchor" href="#highlighted-working-experience"><span>Highlighted working experience</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Dates: August 2018 – currently</li><li>Roles: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Development of a Project Management Tool for Interior Designers</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Stack: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Migrated database triggers into business logic. Code became easier to read and maintain, and the system became more reliable.</li><li>Introduced unit testing and integration testing practices. I wrote over 70% of all tests myself.</li><li>Added GraphQL subscriptions for dynamic updates.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Stack: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Formed a UIKit and general components, optimized complex and loaded components.</li><li>Changed API work on the frontend.</li><li>Introduced integration testing practice using Cypress.</li><li>Migrated the entire project to TypeScript. Created isolated system modules.</li></ul><h5 id="leadership-of-the-team" tabindex="-1"><a class="header-anchor" href="#leadership-of-the-team"><span>Leadership of the Team</span></a></h5><ul><li>Introduced TDD (Test-Driven Development) practices.</li><li>Brought the "Critical Chain Method", the "Buffer Method", and the "Backward Planning" method into the project. Helped the team get in sync, releasing small batches every week.</li><li>Created individual development plans for team members.</li></ul><h5 id="architecture" tabindex="-1"><a class="header-anchor" href="#architecture"><span>Architecture</span></a></h5><ul><li>Broke down the entire codebase into modules by feature.</li><li>Optimized <code>PostgreSQL</code> database, splitting company data into separate schemas and applying partitioning tables.</li><li>Added query caching with Redis.</li><li>Reduced infrastructure costs by 5 times, migrating the project from Kubernetes to NixOS.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - currently</li><li>Роль: Lead Fullstack Developer</li></ul><p>Development of the Back Office for Core Spirit social platform.</p><ul><li>Integrated <code>Dependabot</code>, which helped update all outdated dependencies. Replaced webpack with <code>vite</code>.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Dates: May 2018 - currently (Passively maintained)</li><li>Role: Tech Lead</li></ul><p>Development web infrastructure of the educational center Master Progress</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">The main site</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Student's cabinet</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">A tool for rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>A complete infrastructure was created on <code>NixOS</code>. Before that, I had created an infrastructure using <code>Drone CI</code> / <code>Woodpecker CI</code> and <code>Docker swarm</code>, which has been running for over 5 years.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Dates: August 2018 - May 2020, August 2024 - currently</li><li>Role: Lead Fullstack Developer</li></ul><p>Development of Social platform focusing on human and planetary enhancement.</p><ul><li>A REST API (using <code>Node.JS</code>, <code>Express</code>, and <code>PostgreSQL</code>) for the main website and back office. I also got to work with a new version of the REST API using <code>Go</code> and <code>PostgreSQL</code>.</li><li>Auto poster to various social networks and messengers (Facebook, LinkedIn, Twitter, Telegram).</li><li>Neural network for automatic categorization of articles.</li></ul><hr><h4 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h4><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>In this company there were 6 considerable projects I have successfully completed:</p><ul><li>optimize the creation of promotional pages (PHP, JavaScript)</li><li>support main traditional site <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>development of parsing to monitor products for changes in price, quantity/availability in stock, rating and other fields based on data from 55 websites (Node.JS, Express)</li><li>work with neural networks for matching of goods</li><li>development face recognition apps for Android (Java)</li></ul><hr><h2 id="chronology" tabindex="-1"><a class="header-anchor" href="#chronology"><span>Chronology</span></a></h2><p>Public projects only.</p>',37)]))}const c=t(o,[["render",n],["__file","works.html.vue"]]),d=JSON.parse('{"path":"/eng/works.html","title":"Works","lang":"en-US","frontmatter":{"title":"Works","layout":"WorksPage","sidebar":false,"head":[["link",{"rel":"alternate","hreflang":"ru-ru","href":"https://pleshevski.ru/works.html"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/eng/works.html"}],["meta",{"property":"og:site_name","content":"Dmitriy Pleshevskiy"}],["meta",{"property":"og:title","content":"Works"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"ru-RU"}],["meta",{"property":"og:updated_time","content":"2024-08-07T08:48:54.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-07T08:48:54.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Works\\"}"]]},"headers":[{"level":2,"title":"Highlighted working experience","slug":"highlighted-working-experience","link":"#highlighted-working-experience","children":[{"level":3,"title":"Binary Management","slug":"binary-management","link":"#binary-management","children":[]},{"level":3,"title":"Core Spirit (Back Office)","slug":"core-spirit-back-office","link":"#core-spirit-back-office","children":[]},{"level":3,"title":"Master Progress","slug":"master-progress","link":"#master-progress","children":[]},{"level":3,"title":"Core Spirit","slug":"core-spirit","link":"#core-spirit","children":[]}]},{"level":2,"title":"Chronology","slug":"chronology","link":"#chronology","children":[]}],"git":{"updatedTime":1723020534000,"contributors":[{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@ideascup.me","commits":1},{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":6}]},"filePathRelative":"eng/works.md"}');export{c as comp,d as data}; diff --git a/assets/works.html-DplNc40I.js b/assets/works.html-DplNc40I.js new file mode 100644 index 0000000..e05e279 --- /dev/null +++ b/assets/works.html-DplNc40I.js @@ -0,0 +1 @@ +import{_ as r,c as i,e as l,o as a}from"./app-R2Ffa9VO.js";const t={};function o(n,e){return a(),i("div",null,e[0]||(e[0]=[l('<h2 id="выделенныи-опыт-работы" tabindex="-1"><a class="header-anchor" href="#выделенныи-опыт-работы"><span>Выделенный опыт работы</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Даты: Август 2018 – по настоящее время</li><li>Роли: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Разработка инструмента управления проектами для дизайнеров интерьера.</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Стек: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Перенес триггеры базы данных в бизнес-логику. Проще стало читать код, вносить изменение и система стала надежнее.</li><li>Ввёл практику написания unit тестов и интеграционных тестов. Самолично написал более 70% всех тестов.</li><li>Добавил GraphQL подписки для динамичного обновления.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Стек: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Сформировал UIKit и общие компоненты, оптимизировал сложные и нагруженные компоненты.</li><li>Изменил работу с API на фронтенде.</li><li>Внедрил практику написания интеграционных тестов с помощью cypress.</li><li>Полностью перенес проект на TypeScript. Сформировал изолированные модули системы.</li></ul><h5 id="руководство-командои" tabindex="-1"><a class="header-anchor" href="#руководство-командои"><span>Руководство командой</span></a></h5><ul><li>Ввёл практику TDD (Test-Driven Development).</li><li>Я привнес в проект "метод критической цепи", "метод буфера" и "метод планирования с конца". Помог команде войти в ритм, чтобы выпускать релизы каждую неделю небольшими партиями.</li><li>Составлял индивидуальный план развития для членов команды.</li></ul><h5 id="архитектура" tabindex="-1"><a class="header-anchor" href="#архитектура"><span>Архитектура</span></a></h5><ul><li>Разбил всю кодовую базу на модули по фичам.</li><li>Ускорил базу данных <code>PostgreSQL</code>, разбив данные компаний по отдельным схемам и применив партиципирование таблиц.</li><li>Добавил кеширование запросов с <code>Redis</code>.</li><li>Уменьшил затраты на инфраструткуру в 5 раз, перенес весь проект с kubernetes на <code>NixOS</code>.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка бэк-офиса для социальной платформы Core Spirit.</p><ul><li>Интегрировал Dependabot, который помог обновить все устаревшие зависимости. Заменил webpack на vite.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Даты: Май 2018 - по настоящее время (Пассивная поддержка)</li><li>Роль: Tech Lead</li></ul><p>Разработка веб-инфраструктуры образовательного центра Мастер Прогресс.</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">Главного сайта</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Кабинета студента</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">Инструмента для работы с rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>Создана полная инфраструктура на <code>NixOS</code>. До этого создал инфраструктуру используя <code>Drone CI</code> / <code>Woodpecker CI</code> и <code>Docker swarm</code>, которая проработала более 5 лет.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Даты: Август 2018 - May 2020, Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка социальной платформы, сфокусированной на улучшении человека и планеты.</p><ul><li>REST API (<code>Node.JS</code>, <code>Express</code>, <code>PostgreSQL</code>) для основного сайта и бэк-офиса. Успел поработать с новой версией REST API на <code>Go</code>, <code>PostgreSQL</code></li><li>Автопостер в различные социальные сети и мессенджеры (Facebook, LinkedIn, Twitter, Telegram).</li><li>Создал нейронную сеть для автоматической категоризации статей.</li></ul><hr><h3 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h3><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>В этой компании было 6 значительных проектов, которые я успешно завершил:</p><ul><li>Оптимизация создания рекламных страниц (PHP, JavaScript)</li><li>Поддержка основного традиционного сайта <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>Разработка парсинга для мониторинга товаров на предмет изменения цены, количества/наличия на складе, рейтинга и других полей на основе данных с 55+ сайтов (Node.js, Express)</li><li>Работа с нейронными сетями для подбора товаров</li><li>Разработка приложений для распознавания лиц для Android (Java)</li></ul><hr><h2 id="хронология" tabindex="-1"><a class="header-anchor" href="#хронология"><span>Хронология</span></a></h2><p>В списке перечислены только публичные проекты.</p>',37)]))}const c=r(t,[["render",o],["__file","works.html.vue"]]),d=JSON.parse('{"path":"/works.html","title":"Работы","lang":"ru-RU","frontmatter":{"title":"Работы","layout":"WorksPage","sidebar":false,"head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://pleshevski.ru/eng/works.html"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/works.html"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:title","content":"Работы"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-10-15T14:10:49.000Z"}],["meta",{"property":"article:modified_time","content":"2024-10-15T14:10:49.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Работы\\"}"]]},"headers":[{"level":2,"title":"Выделенный опыт работы","slug":"выделенныи-опыт-работы","link":"#выделенныи-опыт-работы","children":[{"level":3,"title":"Binary Management","slug":"binary-management","link":"#binary-management","children":[]},{"level":3,"title":"Core Spirit (Back Office)","slug":"core-spirit-back-office","link":"#core-spirit-back-office","children":[]},{"level":3,"title":"Master Progress","slug":"master-progress","link":"#master-progress","children":[]},{"level":3,"title":"Core Spirit","slug":"core-spirit","link":"#core-spirit","children":[]},{"level":3,"title":"MERLION","slug":"merlion","link":"#merlion","children":[]}]},{"level":2,"title":"Хронология","slug":"хронология","link":"#хронология","children":[]}],"git":{"updatedTime":1729001449000,"contributors":[{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@ideascup.me","commits":1},{"name":"Dmitriy Pleshevskiy","username":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":8}]},"filePathRelative":"works.md"}');export{c as comp,d as data}; diff --git a/dist/assets/app-CvTe0YTg.js b/dist/assets/app-CvTe0YTg.js deleted file mode 100644 index 9e8b658..0000000 --- a/dist/assets/app-CvTe0YTg.js +++ /dev/null @@ -1,31 +0,0 @@ -/** -* @vue/shared v3.5.12 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function Ls(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Se={},Dn=[],Ot=()=>{},_f=()=>!1,kr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ns=e=>e.startsWith("onUpdate:"),Me=Object.assign,Vs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},mf=Object.prototype.hasOwnProperty,me=(e,t)=>mf.call(e,t),re=Array.isArray,Pn=e=>yo(e)==="[object Map]",Hl=e=>yo(e)==="[object Set]",ie=e=>typeof e=="function",Le=e=>typeof e=="string",Bt=e=>typeof e=="symbol",Oe=e=>e!==null&&typeof e=="object",Ul=e=>(Oe(e)||ie(e))&&ie(e.then)&&ie(e.catch),jl=Object.prototype.toString,yo=e=>jl.call(e),vf=e=>yo(e).slice(8,-1),Kl=e=>yo(e)==="[object Object]",Ms=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Rn=Ls(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),bo=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},yf=/-(\w)/g,nt=bo(e=>e.replace(yf,(t,n)=>n?n.toUpperCase():"")),bf=/\B([A-Z])/g,nn=bo(e=>e.replace(bf,"-$1").toLowerCase()),Or=bo(e=>e.charAt(0).toUpperCase()+e.slice(1)),Fo=bo(e=>e?`on${Or(e)}`:""),Jt=(e,t)=>!Object.is(e,t),Bo=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Wl=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Ef=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Sf=e=>{const t=Le(e)?Number(e):NaN;return isNaN(t)?e:t};let xi;const Eo=()=>xi||(xi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function xr(e){if(re(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],o=Le(r)?Tf(r):xr(r);if(o)for(const s in o)t[s]=o[s]}return t}else if(Le(e)||Oe(e))return e}const Af=/;(?![^(]*\))/g,wf=/:([^]+)/,Cf=/\/\*[^]*?\*\//g;function Tf(e){const t={};return e.replace(Cf,"").split(Af).forEach(n=>{if(n){const r=n.split(wf);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function tt(e){let t="";if(Le(e))t=e;else if(re(e))for(let n=0;n<e.length;n++){const r=tt(e[n]);r&&(t+=r+" ")}else if(Oe(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const kf="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Of=Ls(kf);function zl(e){return!!e||e===""}const ql=e=>!!(e&&e.__v_isRef===!0),ce=e=>Le(e)?e:e==null?"":re(e)||Oe(e)&&(e.toString===jl||!ie(e.toString))?ql(e)?ce(e.value):JSON.stringify(e,Gl,2):String(e),Gl=(e,t)=>ql(t)?Gl(e,t.value):Pn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o],s)=>(n[$o(r,s)+" =>"]=o,n),{})}:Hl(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>$o(n))}:Bt(t)?$o(t):Oe(t)&&!re(t)&&!Kl(t)?String(t):t,$o=(e,t="")=>{var n;return Bt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.12 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Xe;class xf{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Xe,!t&&Xe&&(this.index=(Xe.scopes||(Xe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Xe;try{return Xe=this,t()}finally{Xe=n}}}on(){Xe=this}off(){Xe=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.scopes)for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const o=this.parent.scopes.pop();o&&o!==this&&(this.parent.scopes[this.index]=o,o.index=this.index)}this.parent=void 0,this._active=!1}}}function Fs(){return Xe}function Yl(e,t=!1){Xe&&Xe.cleanups.push(e)}let Te;const Ho=new WeakSet;class Jl{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Xe&&Xe.active&&Xe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Ho.has(this)&&(Ho.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ql(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Di(this),Zl(this);const t=Te,n=_t;Te=this,_t=!0;try{return this.fn()}finally{eu(this),Te=t,_t=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Hs(t);this.deps=this.depsTail=void 0,Di(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Ho.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){ls(this)&&this.run()}get dirty(){return ls(this)}}let Xl=0,or,sr;function Ql(e,t=!1){if(e.flags|=8,t){e.next=sr,sr=e;return}e.next=or,or=e}function Bs(){Xl++}function $s(){if(--Xl>0)return;if(sr){let t=sr;for(sr=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;or;){let t=or;for(or=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Zl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function eu(e){let t,n=e.depsTail,r=n;for(;r;){const o=r.prevDep;r.version===-1?(r===n&&(n=o),Hs(r),Df(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=o}e.deps=t,e.depsTail=n}function ls(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(tu(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function tu(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===dr))return;e.globalVersion=dr;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!ls(e)){e.flags&=-3;return}const n=Te,r=_t;Te=e,_t=!0;try{Zl(e);const o=e.fn(e._value);(t.version===0||Jt(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{Te=n,_t=r,eu(e),e.flags&=-3}}function Hs(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Hs(s,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Df(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let _t=!0;const nu=[];function rn(){nu.push(_t),_t=!1}function on(){const e=nu.pop();_t=e===void 0?!0:e}function Di(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Te;Te=void 0;try{t()}finally{Te=n}}}let dr=0;class Pf{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class So{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Te||!_t||Te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Te)n=this.activeLink=new Pf(Te,this),Te.deps?(n.prevDep=Te.depsTail,Te.depsTail.nextDep=n,Te.depsTail=n):Te.deps=Te.depsTail=n,ru(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Te.depsTail,n.nextDep=void 0,Te.depsTail.nextDep=n,Te.depsTail=n,Te.deps===n&&(Te.deps=r)}return n}trigger(t){this.version++,dr++,this.notify(t)}notify(t){Bs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{$s()}}}function ru(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)ru(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const so=new WeakMap,gn=Symbol(""),us=Symbol(""),pr=Symbol("");function We(e,t,n){if(_t&&Te){let r=so.get(e);r||so.set(e,r=new Map);let o=r.get(n);o||(r.set(n,o=new So),o.map=r,o.key=n),o.track()}}function Vt(e,t,n,r,o,s){const i=so.get(e);if(!i){dr++;return}const a=l=>{l&&l.trigger()};if(Bs(),t==="clear")i.forEach(a);else{const l=re(e),u=l&&Ms(n);if(l&&n==="length"){const f=Number(r);i.forEach((c,p)=>{(p==="length"||p===pr||!Bt(p)&&p>=f)&&a(c)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),u&&a(i.get(pr)),t){case"add":l?u&&a(i.get("length")):(a(i.get(gn)),Pn(e)&&a(i.get(us)));break;case"delete":l||(a(i.get(gn)),Pn(e)&&a(i.get(us)));break;case"set":Pn(e)&&a(i.get(gn));break}}$s()}function Rf(e,t){const n=so.get(e);return n&&n.get(t)}function wn(e){const t=de(e);return t===e?t:(We(t,"iterate",pr),ht(e)?t:t.map(ze))}function Ao(e){return We(e=de(e),"iterate",pr),e}const If={__proto__:null,[Symbol.iterator](){return Uo(this,Symbol.iterator,ze)},concat(...e){return wn(this).concat(...e.map(t=>re(t)?wn(t):t))},entries(){return Uo(this,"entries",e=>(e[1]=ze(e[1]),e))},every(e,t){return Pt(this,"every",e,t,void 0,arguments)},filter(e,t){return Pt(this,"filter",e,t,n=>n.map(ze),arguments)},find(e,t){return Pt(this,"find",e,t,ze,arguments)},findIndex(e,t){return Pt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Pt(this,"findLast",e,t,ze,arguments)},findLastIndex(e,t){return Pt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Pt(this,"forEach",e,t,void 0,arguments)},includes(...e){return jo(this,"includes",e)},indexOf(...e){return jo(this,"indexOf",e)},join(e){return wn(this).join(e)},lastIndexOf(...e){return jo(this,"lastIndexOf",e)},map(e,t){return Pt(this,"map",e,t,void 0,arguments)},pop(){return Gn(this,"pop")},push(...e){return Gn(this,"push",e)},reduce(e,...t){return Pi(this,"reduce",e,t)},reduceRight(e,...t){return Pi(this,"reduceRight",e,t)},shift(){return Gn(this,"shift")},some(e,t){return Pt(this,"some",e,t,void 0,arguments)},splice(...e){return Gn(this,"splice",e)},toReversed(){return wn(this).toReversed()},toSorted(e){return wn(this).toSorted(e)},toSpliced(...e){return wn(this).toSpliced(...e)},unshift(...e){return Gn(this,"unshift",e)},values(){return Uo(this,"values",ze)}};function Uo(e,t,n){const r=Ao(e),o=r[t]();return r!==e&&!ht(e)&&(o._next=o.next,o.next=()=>{const s=o._next();return s.value&&(s.value=n(s.value)),s}),o}const Lf=Array.prototype;function Pt(e,t,n,r,o,s){const i=Ao(e),a=i!==e&&!ht(e),l=i[t];if(l!==Lf[t]){const c=l.apply(e,s);return a?ze(c):c}let u=n;i!==e&&(a?u=function(c,p){return n.call(this,ze(c),p,e)}:n.length>2&&(u=function(c,p){return n.call(this,c,p,e)}));const f=l.call(i,u,r);return a&&o?o(f):f}function Pi(e,t,n,r){const o=Ao(e);let s=n;return o!==e&&(ht(e)?n.length>3&&(s=function(i,a,l){return n.call(this,i,a,l,e)}):s=function(i,a,l){return n.call(this,i,ze(a),l,e)}),o[t](s,...r)}function jo(e,t,n){const r=de(e);We(r,"iterate",pr);const o=r[t](...n);return(o===-1||o===!1)&&Ks(n[0])?(n[0]=de(n[0]),r[t](...n)):o}function Gn(e,t,n=[]){rn(),Bs();const r=de(e)[t].apply(e,n);return $s(),on(),r}const Nf=Ls("__proto__,__v_isRef,__isVue"),ou=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Bt));function Vf(e){Bt(e)||(e=String(e));const t=de(this);return We(t,"has",e),t.hasOwnProperty(e)}class su{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const o=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(o?s?zf:uu:s?lu:au).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=re(t);if(!o){let l;if(i&&(l=If[n]))return l;if(n==="hasOwnProperty")return Vf}const a=Reflect.get(t,n,Be(t)?t:r);return(Bt(n)?ou.has(n):Nf(n))||(o||We(t,"get",n),s)?a:Be(a)?i&&Ms(n)?a:a.value:Oe(a)?o?Pr(a):Dr(a):a}}class iu extends su{constructor(t=!1){super(!1,t)}set(t,n,r,o){let s=t[n];if(!this._isShallow){const l=En(s);if(!ht(r)&&!En(r)&&(s=de(s),r=de(r)),!re(t)&&Be(s)&&!Be(r))return l?!1:(s.value=r,!0)}const i=re(t)&&Ms(n)?Number(n)<t.length:me(t,n),a=Reflect.set(t,n,r,Be(t)?t:o);return t===de(o)&&(i?Jt(r,s)&&Vt(t,"set",n,r):Vt(t,"add",n,r)),a}deleteProperty(t,n){const r=me(t,n);t[n];const o=Reflect.deleteProperty(t,n);return o&&r&&Vt(t,"delete",n,void 0),o}has(t,n){const r=Reflect.has(t,n);return(!Bt(n)||!ou.has(n))&&We(t,"has",n),r}ownKeys(t){return We(t,"iterate",re(t)?"length":gn),Reflect.ownKeys(t)}}class Mf extends su{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ff=new iu,Bf=new Mf,$f=new iu(!0);const cs=e=>e,$r=e=>Reflect.getPrototypeOf(e);function Hf(e,t,n){return function(...r){const o=this.__v_raw,s=de(o),i=Pn(s),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,u=o[e](...r),f=n?cs:t?fs:ze;return!t&&We(s,"iterate",l?us:gn),{next(){const{value:c,done:p}=u.next();return p?{value:c,done:p}:{value:a?[f(c[0]),f(c[1])]:f(c),done:p}},[Symbol.iterator](){return this}}}}function Hr(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Uf(e,t){const n={get(o){const s=this.__v_raw,i=de(s),a=de(o);e||(Jt(o,a)&&We(i,"get",o),We(i,"get",a));const{has:l}=$r(i),u=t?cs:e?fs:ze;if(l.call(i,o))return u(s.get(o));if(l.call(i,a))return u(s.get(a));s!==i&&s.get(o)},get size(){const o=this.__v_raw;return!e&&We(de(o),"iterate",gn),Reflect.get(o,"size",o)},has(o){const s=this.__v_raw,i=de(s),a=de(o);return e||(Jt(o,a)&&We(i,"has",o),We(i,"has",a)),o===a?s.has(o):s.has(o)||s.has(a)},forEach(o,s){const i=this,a=i.__v_raw,l=de(a),u=t?cs:e?fs:ze;return!e&&We(l,"iterate",gn),a.forEach((f,c)=>o.call(s,u(f),u(c),i))}};return Me(n,e?{add:Hr("add"),set:Hr("set"),delete:Hr("delete"),clear:Hr("clear")}:{add(o){!t&&!ht(o)&&!En(o)&&(o=de(o));const s=de(this);return $r(s).has.call(s,o)||(s.add(o),Vt(s,"add",o,o)),this},set(o,s){!t&&!ht(s)&&!En(s)&&(s=de(s));const i=de(this),{has:a,get:l}=$r(i);let u=a.call(i,o);u||(o=de(o),u=a.call(i,o));const f=l.call(i,o);return i.set(o,s),u?Jt(s,f)&&Vt(i,"set",o,s):Vt(i,"add",o,s),this},delete(o){const s=de(this),{has:i,get:a}=$r(s);let l=i.call(s,o);l||(o=de(o),l=i.call(s,o)),a&&a.call(s,o);const u=s.delete(o);return l&&Vt(s,"delete",o,void 0),u},clear(){const o=de(this),s=o.size!==0,i=o.clear();return s&&Vt(o,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=Hf(o,e,t)}),n}function Us(e,t){const n=Uf(e,t);return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(me(n,o)&&o in r?n:r,o,s)}const jf={get:Us(!1,!1)},Kf={get:Us(!1,!0)},Wf={get:Us(!0,!1)};const au=new WeakMap,lu=new WeakMap,uu=new WeakMap,zf=new WeakMap;function qf(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Gf(e){return e.__v_skip||!Object.isExtensible(e)?0:qf(vf(e))}function Dr(e){return En(e)?e:js(e,!1,Ff,jf,au)}function cu(e){return js(e,!1,$f,Kf,lu)}function Pr(e){return js(e,!0,Bf,Wf,uu)}function js(e,t,n,r,o){if(!Oe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=Gf(e);if(i===0)return e;const a=new Proxy(e,i===2?r:n);return o.set(e,a),a}function _n(e){return En(e)?_n(e.__v_raw):!!(e&&e.__v_isReactive)}function En(e){return!!(e&&e.__v_isReadonly)}function ht(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function de(e){const t=e&&e.__v_raw;return t?de(t):e}function Yf(e){return!me(e,"__v_skip")&&Object.isExtensible(e)&&Wl(e,"__v_skip",!0),e}const ze=e=>Oe(e)?Dr(e):e,fs=e=>Oe(e)?Pr(e):e;function Be(e){return e?e.__v_isRef===!0:!1}function fe(e){return fu(e,!1)}function vt(e){return fu(e,!0)}function fu(e,t){return Be(e)?e:new Jf(e,t)}class Jf{constructor(t,n){this.dep=new So,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:de(t),this._value=n?t:ze(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||ht(t)||En(t);t=r?t:de(t),Jt(t,n)&&(this._rawValue=t,this._value=r?t:ze(t),this.dep.trigger())}}function Xt(e){return Be(e)?e.value:e}const Xf={get:(e,t,n)=>t==="__v_raw"?e:Xt(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Be(o)&&!Be(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function du(e){return _n(e)?e:new Proxy(e,Xf)}class Qf{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new So,{get:r,set:o}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Zf(e){return new Qf(e)}function pu(e){const t=re(e)?new Array(e.length):{};for(const n in e)t[n]=hu(e,n);return t}class ed{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Rf(de(this._object),this._key)}}class td{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function nd(e,t,n){return Be(e)?e:ie(e)?new td(e):Oe(e)&&arguments.length>1?hu(e,t,n):fe(e)}function hu(e,t,n){const r=e[t];return Be(r)?r:new ed(e,t,n)}class rd{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new So(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=dr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Te!==this)return Ql(this,!0),!0}get value(){const t=this.dep.track();return tu(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function od(e,t,n=!1){let r,o;return ie(e)?r=e:(r=e.get,o=e.set),new rd(r,o,n)}const Ur={},io=new WeakMap;let fn;function sd(e,t=!1,n=fn){if(n){let r=io.get(n);r||io.set(n,r=[]),r.push(e)}}function id(e,t,n=Se){const{immediate:r,deep:o,once:s,scheduler:i,augmentJob:a,call:l}=n,u=E=>o?E:ht(E)||o===!1||o===0?Mt(E,1):Mt(E);let f,c,p,d,m=!1,v=!1;if(Be(e)?(c=()=>e.value,m=ht(e)):_n(e)?(c=()=>u(e),m=!0):re(e)?(v=!0,m=e.some(E=>_n(E)||ht(E)),c=()=>e.map(E=>{if(Be(E))return E.value;if(_n(E))return u(E);if(ie(E))return l?l(E,2):E()})):ie(e)?t?c=l?()=>l(e,2):e:c=()=>{if(p){rn();try{p()}finally{on()}}const E=fn;fn=f;try{return l?l(e,3,[d]):e(d)}finally{fn=E}}:c=Ot,t&&o){const E=c,L=o===!0?1/0:o;c=()=>Mt(E(),L)}const y=Fs(),b=()=>{f.stop(),y&&Vs(y.effects,f)};if(s&&t){const E=t;t=(...L)=>{E(...L),b()}}let S=v?new Array(e.length).fill(Ur):Ur;const g=E=>{if(!(!(f.flags&1)||!f.dirty&&!E))if(t){const L=f.run();if(o||m||(v?L.some((j,Y)=>Jt(j,S[Y])):Jt(L,S))){p&&p();const j=fn;fn=f;try{const Y=[L,S===Ur?void 0:v&&S[0]===Ur?[]:S,d];l?l(t,3,Y):t(...Y),S=L}finally{fn=j}}}else f.run()};return a&&a(g),f=new Jl(c),f.scheduler=i?()=>i(g,!1):g,d=E=>sd(E,!1,f),p=f.onStop=()=>{const E=io.get(f);if(E){if(l)l(E,4);else for(const L of E)L();io.delete(f)}},t?r?g(!0):S=f.run():i?i(g.bind(null,!0),!0):f.run(),b.pause=f.pause.bind(f),b.resume=f.resume.bind(f),b.stop=b,b}function Mt(e,t=1/0,n){if(t<=0||!Oe(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Be(e))Mt(e.value,t,n);else if(re(e))for(let r=0;r<e.length;r++)Mt(e[r],t,n);else if(Hl(e)||Pn(e))e.forEach(r=>{Mt(r,t,n)});else if(Kl(e)){for(const r in e)Mt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Mt(e[r],t,n)}return e}/** -* @vue/runtime-core v3.5.12 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Rr(e,t,n,r){try{return r?e(...r):e()}catch(o){Ir(o,t,n)}}function yt(e,t,n,r){if(ie(e)){const o=Rr(e,t,n,r);return o&&Ul(o)&&o.catch(s=>{Ir(s,t,n)}),o}if(re(e)){const o=[];for(let s=0;s<e.length;s++)o.push(yt(e[s],t,n,r));return o}}function Ir(e,t,n,r=!0){const o=t?t.vnode:null,{errorHandler:s,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||Se;if(t){let a=t.parent;const l=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;a;){const f=a.ec;if(f){for(let c=0;c<f.length;c++)if(f[c](e,l,u)===!1)return}a=a.parent}if(s){rn(),Rr(s,null,10,[e,l,u]),on();return}}ad(e,n,o,r,i)}function ad(e,t,n,r=!0,o=!1){if(o)throw e;console.error(e)}const Qe=[];let Ct=-1;const In=[];let zt=null,Tn=0;const gu=Promise.resolve();let ao=null;function sn(e){const t=ao||gu;return e?t.then(this?e.bind(this):e):t}function ld(e){let t=Ct+1,n=Qe.length;for(;t<n;){const r=t+n>>>1,o=Qe[r],s=hr(o);s<e||s===e&&o.flags&2?t=r+1:n=r}return t}function Ws(e){if(!(e.flags&1)){const t=hr(e),n=Qe[Qe.length-1];!n||!(e.flags&2)&&t>=hr(n)?Qe.push(e):Qe.splice(ld(t),0,e),e.flags|=1,_u()}}function _u(){ao||(ao=gu.then(mu))}function ud(e){re(e)?In.push(...e):zt&&e.id===-1?zt.splice(Tn+1,0,e):e.flags&1||(In.push(e),e.flags|=1),_u()}function Ri(e,t,n=Ct+1){for(;n<Qe.length;n++){const r=Qe[n];if(r&&r.flags&2){if(e&&r.id!==e.uid)continue;Qe.splice(n,1),n--,r.flags&4&&(r.flags&=-2),r(),r.flags&4||(r.flags&=-2)}}}function lo(e){if(In.length){const t=[...new Set(In)].sort((n,r)=>hr(n)-hr(r));if(In.length=0,zt){zt.push(...t);return}for(zt=t,Tn=0;Tn<zt.length;Tn++){const n=zt[Tn];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}zt=null,Tn=0}}const hr=e=>e.id==null?e.flags&2?-1:1/0:e.id;function mu(e){try{for(Ct=0;Ct<Qe.length;Ct++){const t=Qe[Ct];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Rr(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ct<Qe.length;Ct++){const t=Qe[Ct];t&&(t.flags&=-2)}Ct=-1,Qe.length=0,lo(),ao=null,(Qe.length||In.length)&&mu()}}let je=null,vu=null;function uo(e){const t=je;return je=e,vu=e&&e.type.__scopeId||null,t}function Ne(e,t=je,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Ki(-1);const s=uo(t);let i;try{i=e(...o)}finally{uo(s),r._d&&Ki(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function co(e,t){if(je===null)return e;const n=ko(je),r=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[s,i,a,l=Se]=t[o];s&&(ie(s)&&(s={mounted:s,updated:s}),s.deep&&Mt(i),r.push({dir:s,instance:n,value:i,oldValue:void 0,arg:a,modifiers:l}))}return e}function Tt(e,t,n,r){const o=e.dirs,s=t&&t.dirs;for(let i=0;i<o.length;i++){const a=o[i];s&&(a.oldValue=s[i].value);let l=a.dir[r];l&&(rn(),yt(l,n,8,[e.el,a,e,t]),on())}}const cd=Symbol("_vte"),yu=e=>e.__isTeleport,qt=Symbol("_leaveCb"),jr=Symbol("_enterCb");function fd(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ge(()=>{e.isMounted=!0}),qs(()=>{e.isUnmounting=!0}),e}const ft=[Function,Array],bu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ft,onEnter:ft,onAfterEnter:ft,onEnterCancelled:ft,onBeforeLeave:ft,onLeave:ft,onAfterLeave:ft,onLeaveCancelled:ft,onBeforeAppear:ft,onAppear:ft,onAfterAppear:ft,onAppearCancelled:ft},Eu=e=>{const t=e.subTree;return t.component?Eu(t.component):t},dd={name:"BaseTransition",props:bu,setup(e,{slots:t}){const n=Nr(),r=fd();return()=>{const o=t.default&&wu(t.default(),!0);if(!o||!o.length)return;const s=Su(o),i=de(e),{mode:a}=i;if(r.isLeaving)return Ko(s);const l=Ii(s);if(!l)return Ko(s);let u=ds(l,i,r,n,p=>u=p);l.type!==qe&&gr(l,u);const f=n.subTree,c=f&&Ii(f);if(c&&c.type!==qe&&!dn(l,c)&&Eu(n).type!==qe){const p=ds(c,i,r,n);if(gr(c,p),a==="out-in"&&l.type!==qe)return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete p.afterLeave},Ko(s);a==="in-out"&&l.type!==qe&&(p.delayLeave=(d,m,v)=>{const y=Au(r,c);y[String(c.key)]=c,d[qt]=()=>{m(),d[qt]=void 0,delete u.delayedLeave},u.delayedLeave=v})}return s}}};function Su(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==qe){t=n;break}}return t}const pd=dd;function Au(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ds(e,t,n,r,o){const{appear:s,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:f,onEnterCancelled:c,onBeforeLeave:p,onLeave:d,onAfterLeave:m,onLeaveCancelled:v,onBeforeAppear:y,onAppear:b,onAfterAppear:S,onAppearCancelled:g}=t,E=String(e.key),L=Au(n,e),j=(B,w)=>{B&&yt(B,r,9,w)},Y=(B,w)=>{const N=w[1];j(B,w),re(B)?B.every(k=>k.length<=1)&&N():B.length<=1&&N()},Q={mode:i,persisted:a,beforeEnter(B){let w=l;if(!n.isMounted)if(s)w=y||l;else return;B[qt]&&B[qt](!0);const N=L[E];N&&dn(e,N)&&N.el[qt]&&N.el[qt](),j(w,[B])},enter(B){let w=u,N=f,k=c;if(!n.isMounted)if(s)w=b||u,N=S||f,k=g||c;else return;let ee=!1;const le=B[jr]=Ae=>{ee||(ee=!0,Ae?j(k,[B]):j(N,[B]),Q.delayedLeave&&Q.delayedLeave(),B[jr]=void 0)};w?Y(w,[B,le]):le()},leave(B,w){const N=String(e.key);if(B[jr]&&B[jr](!0),n.isUnmounting)return w();j(p,[B]);let k=!1;const ee=B[qt]=le=>{k||(k=!0,w(),le?j(v,[B]):j(m,[B]),B[qt]=void 0,L[N]===e&&delete L[N])};L[N]=e,d?Y(d,[B,ee]):ee()},clone(B){const w=ds(B,t,n,r,o);return o&&o(w),w}};return Q}function Ko(e){if(Lr(e))return e=Qt(e),e.children=null,e}function Ii(e){if(!Lr(e))return yu(e.type)&&e.children?Su(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&ie(n.default))return n.default()}}function gr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,gr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function wu(e,t=!1,n){let r=[],o=0;for(let s=0;s<e.length;s++){let i=e[s];const a=n==null?i.key:String(n)+String(i.key!=null?i.key:s);i.type===Ee?(i.patchFlag&128&&o++,r=r.concat(wu(i.children,t,a))):(t||i.type!==qe)&&r.push(a!=null?Qt(i,{key:a}):i)}if(o>1)for(let s=0;s<r.length;s++)r[s].patchFlag=-2;return r}/*! #__NO_SIDE_EFFECTS__ */function he(e,t){return ie(e)?Me({name:e.name},t,{setup:e}):e}function zs(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function fo(e,t,n,r,o=!1){if(re(e)){e.forEach((m,v)=>fo(m,t&&(re(t)?t[v]:t),n,r,o));return}if(mn(r)&&!o)return;const s=r.shapeFlag&4?ko(r.component):r.el,i=o?null:s,{i:a,r:l}=e,u=t&&t.r,f=a.refs===Se?a.refs={}:a.refs,c=a.setupState,p=de(c),d=c===Se?()=>!1:m=>me(p,m);if(u!=null&&u!==l&&(Le(u)?(f[u]=null,d(u)&&(c[u]=null)):Be(u)&&(u.value=null)),ie(l))Rr(l,a,12,[i,f]);else{const m=Le(l),v=Be(l);if(m||v){const y=()=>{if(e.f){const b=m?d(l)?c[l]:f[l]:l.value;o?re(b)&&Vs(b,s):re(b)?b.includes(s)||b.push(s):m?(f[l]=[s],d(l)&&(c[l]=f[l])):(l.value=[s],e.k&&(f[e.k]=l.value))}else m?(f[l]=i,d(l)&&(c[l]=i)):v&&(l.value=i,e.k&&(f[e.k]=i))};i?(y.id=-1,it(y,n)):y()}}}let Li=!1;const Cn=()=>{Li||(console.error("Hydration completed but contains mismatches."),Li=!0)},hd=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",gd=e=>e.namespaceURI.includes("MathML"),Kr=e=>{if(e.nodeType===1){if(hd(e))return"svg";if(gd(e))return"mathml"}},On=e=>e.nodeType===8;function _d(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:a,insert:l,createComment:u}}=e,f=(g,E)=>{if(!E.hasChildNodes()){n(null,g,E),lo(),E._vnode=g;return}c(E.firstChild,g,null,null,null),lo(),E._vnode=g},c=(g,E,L,j,Y,Q=!1)=>{Q=Q||!!E.dynamicChildren;const B=On(g)&&g.data==="[",w=()=>v(g,E,L,j,Y,B),{type:N,ref:k,shapeFlag:ee,patchFlag:le}=E;let Ae=g.nodeType;E.el=g,le===-2&&(Q=!1,E.dynamicChildren=null);let q=null;switch(N){case yn:Ae!==3?E.children===""?(l(E.el=o(""),i(g),g),q=g):q=w():(g.data!==E.children&&(Cn(),g.data=E.children),q=s(g));break;case qe:S(g)?(q=s(g),b(E.el=g.content.firstChild,g,L)):Ae!==8||B?q=w():q=s(g);break;case ar:if(B&&(g=s(g),Ae=g.nodeType),Ae===1||Ae===3){q=g;const F=!E.children.length;for(let J=0;J<E.staticCount;J++)F&&(E.children+=q.nodeType===1?q.outerHTML:q.data),J===E.staticCount-1&&(E.anchor=q),q=s(q);return B?s(q):q}else w();break;case Ee:B?q=m(g,E,L,j,Y,Q):q=w();break;default:if(ee&1)(Ae!==1||E.type.toLowerCase()!==g.tagName.toLowerCase())&&!S(g)?q=w():q=p(g,E,L,j,Y,Q);else if(ee&6){E.slotScopeIds=Y;const F=i(g);if(B?q=y(g):On(g)&&g.data==="teleport start"?q=y(g,g.data,"teleport end"):q=s(g),t(E,F,null,L,j,Kr(F),Q),mn(E)){let J;B?(J=oe(Ee),J.anchor=q?q.previousSibling:F.lastChild):J=g.nodeType===3?Zt(""):oe("div"),J.el=g,E.component.subTree=J}}else ee&64?Ae!==8?q=w():q=E.type.hydrate(g,E,L,j,Y,Q,e,d):ee&128&&(q=E.type.hydrate(g,E,L,j,Kr(i(g)),Y,Q,e,c))}return k!=null&&fo(k,null,j,E),q},p=(g,E,L,j,Y,Q)=>{Q=Q||!!E.dynamicChildren;const{type:B,props:w,patchFlag:N,shapeFlag:k,dirs:ee,transition:le}=E,Ae=B==="input"||B==="option";if(Ae||N!==-1){ee&&Tt(E,null,L,"created");let q=!1;if(S(g)){q=Fu(null,le)&&L&&L.vnode.props&&L.vnode.props.appear;const J=g.content.firstChild;q&&le.beforeEnter(J),b(J,g,L),E.el=g=J}if(k&16&&!(w&&(w.innerHTML||w.textContent))){let J=d(g.firstChild,E,g,L,j,Y,Q);for(;J;){Wr(g,1)||Cn();const ge=J;J=J.nextSibling,a(ge)}}else if(k&8){let J=E.children;J[0]===` -`&&(g.tagName==="PRE"||g.tagName==="TEXTAREA")&&(J=J.slice(1)),g.textContent!==J&&(Wr(g,0)||Cn(),g.textContent=E.children)}if(w){if(Ae||!Q||N&48){const J=g.tagName.includes("-");for(const ge in w)(Ae&&(ge.endsWith("value")||ge==="indeterminate")||kr(ge)&&!Rn(ge)||ge[0]==="."||J)&&r(g,ge,null,w[ge],void 0,L)}else if(w.onClick)r(g,"onClick",null,w.onClick,void 0,L);else if(N&4&&_n(w.style))for(const J in w.style)w.style[J]}let F;(F=w&&w.onVnodeBeforeMount)&&dt(F,L,E),ee&&Tt(E,null,L,"beforeMount"),((F=w&&w.onVnodeMounted)||ee||q)&&Ku(()=>{F&&dt(F,L,E),q&&le.enter(g),ee&&Tt(E,null,L,"mounted")},j)}return g.nextSibling},d=(g,E,L,j,Y,Q,B)=>{B=B||!!E.dynamicChildren;const w=E.children,N=w.length;for(let k=0;k<N;k++){const ee=B?w[k]:w[k]=pt(w[k]),le=ee.type===yn;g?(le&&!B&&k+1<N&&pt(w[k+1]).type===yn&&(l(o(g.data.slice(ee.children.length)),L,s(g)),g.data=ee.children),g=c(g,ee,j,Y,Q,B)):le&&!ee.children?l(ee.el=o(""),L):(Wr(L,1)||Cn(),n(null,ee,L,null,j,Y,Kr(L),Q))}return g},m=(g,E,L,j,Y,Q)=>{const{slotScopeIds:B}=E;B&&(Y=Y?Y.concat(B):B);const w=i(g),N=d(s(g),E,w,L,j,Y,Q);return N&&On(N)&&N.data==="]"?s(E.anchor=N):(Cn(),l(E.anchor=u("]"),w,N),N)},v=(g,E,L,j,Y,Q)=>{if(Wr(g.parentElement,1)||Cn(),E.el=null,Q){const N=y(g);for(;;){const k=s(g);if(k&&k!==N)a(k);else break}}const B=s(g),w=i(g);return a(g),n(null,E,w,B,L,j,Kr(w),Y),B},y=(g,E="[",L="]")=>{let j=0;for(;g;)if(g=s(g),g&&On(g)&&(g.data===E&&j++,g.data===L)){if(j===0)return s(g);j--}return g},b=(g,E,L)=>{const j=E.parentNode;j&&j.replaceChild(g,E);let Y=L;for(;Y;)Y.vnode.el===E&&(Y.vnode.el=Y.subTree.el=g),Y=Y.parent},S=g=>g.nodeType===1&&g.tagName==="TEMPLATE";return[f,c]}const Ni="data-allow-mismatch",md={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function Wr(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(Ni);)e=e.parentElement;const n=e&&e.getAttribute(Ni);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(md[t])}}Eo().requestIdleCallback;Eo().cancelIdleCallback;function vd(e,t){if(On(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(On(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const mn=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function yd(e){ie(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,hydrate:s,timeout:i,suspensible:a=!0,onError:l}=e;let u=null,f,c=0;const p=()=>(c++,u=null,d()),d=()=>{let m;return u||(m=u=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),l)return new Promise((y,b)=>{l(v,()=>y(p()),()=>b(v),c+1)});throw v}).then(v=>m!==u&&u?u:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),f=v,v)))};return he({name:"AsyncComponentWrapper",__asyncLoader:d,__asyncHydrate(m,v,y){const b=s?()=>{const S=s(y,g=>vd(m,g));S&&(v.bum||(v.bum=[])).push(S)}:y;f?b():d().then(()=>!v.isUnmounted&&b())},get __asyncResolved(){return f},setup(){const m=Ue;if(zs(m),f)return()=>Wo(f,m);const v=g=>{u=null,Ir(g,m,13,!r)};if(a&&m.suspense||Mn)return d().then(g=>()=>Wo(g,m)).catch(g=>(v(g),()=>r?oe(r,{error:g}):null));const y=fe(!1),b=fe(),S=fe(!!o);return o&&setTimeout(()=>{S.value=!1},o),i!=null&&setTimeout(()=>{if(!y.value&&!b.value){const g=new Error(`Async component timed out after ${i}ms.`);v(g),b.value=g}},i),d().then(()=>{y.value=!0,m.parent&&Lr(m.parent.vnode)&&m.parent.update()}).catch(g=>{v(g),b.value=g}),()=>{if(y.value&&f)return Wo(f,m);if(b.value&&r)return oe(r,{error:b.value});if(n&&!S.value)return oe(n)}}})}function Wo(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=oe(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const Lr=e=>e.type.__isKeepAlive;function bd(e,t){Cu(e,"a",t)}function Ed(e,t){Cu(e,"da",t)}function Cu(e,t,n=Ue){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(wo(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Lr(o.parent.vnode)&&Sd(r,t,n,o),o=o.parent}}function Sd(e,t,n,r){const o=wo(t,e,r,!0);Co(()=>{Vs(r[t],o)},n)}function wo(e,t,n=Ue,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{rn();const a=Vr(n),l=yt(t,n,e,i);return a(),on(),l});return r?o.unshift(s):o.push(s),s}}const $t=e=>(t,n=Ue)=>{(!Mn||e==="sp")&&wo(e,(...r)=>t(...r),n)},Ad=$t("bm"),Ge=$t("m"),wd=$t("bu"),Cd=$t("u"),qs=$t("bum"),Co=$t("um"),Td=$t("sp"),kd=$t("rtg"),Od=$t("rtc");function xd(e,t=Ue){wo("ec",e,t)}const Dd="components";function Gs(e,t){return Rd(Dd,e,!0,t)||e}const Pd=Symbol.for("v-ndc");function Rd(e,t,n=!0,r=!1){const o=je||Ue;if(o){const s=o.type;{const a=vp(s,!1);if(a&&(a===t||a===nt(t)||a===Or(nt(t))))return s}const i=Vi(o[e]||s[e],t)||Vi(o.appContext[e],t);return!i&&r?s:i}}function Vi(e,t){return e&&(e[t]||e[nt(t)]||e[Or(nt(t))])}function Ft(e,t,n,r){let o;const s=n,i=re(e);if(i||Le(e)){const a=i&&_n(e);let l=!1;a&&(l=!ht(e),e=Ao(e)),o=new Array(e.length);for(let u=0,f=e.length;u<f;u++)o[u]=t(l?ze(e[u]):e[u],u,void 0,s)}else if(typeof e=="number"){o=new Array(e);for(let a=0;a<e;a++)o[a]=t(a+1,a,void 0,s)}else if(Oe(e))if(e[Symbol.iterator])o=Array.from(e,(a,l)=>t(a,l,void 0,s));else{const a=Object.keys(e);o=new Array(a.length);for(let l=0,u=a.length;l<u;l++){const f=a[l];o[l]=t(e[f],f,l,s)}}else o=[];return o}function Ie(e,t,n={},r,o){if(je.ce||je.parent&&mn(je.parent)&&je.parent.ce)return t!=="default"&&(n.name=t),$(),Re(Ee,null,[oe("slot",n,r&&r())],64);let s=e[t];s&&s._c&&(s._d=!1),$();const i=s&&Tu(s(n)),a=n.key||i&&i.key,l=Re(Ee,{key:(a&&!Bt(a)?a:`_${t}`)+(!i&&r?"_fb":"")},i||(r?r():[]),i&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),s&&s._c&&(s._d=!0),l}function Tu(e){return e.some(t=>mr(t)?!(t.type===qe||t.type===Ee&&!Tu(t.children)):!0)?e:null}const ps=e=>e?qu(e)?ko(e):ps(e.parent):null,ir=Me(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ps(e.parent),$root:e=>ps(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ys(e),$forceUpdate:e=>e.f||(e.f=()=>{Ws(e.update)}),$nextTick:e=>e.n||(e.n=sn.bind(e.proxy)),$watch:e=>Zd.bind(e)}),zo=(e,t)=>e!==Se&&!e.__isScriptSetup&&me(e,t),Id={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:a,appContext:l}=e;let u;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(zo(r,t))return i[t]=1,r[t];if(o!==Se&&me(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&me(u,t))return i[t]=3,s[t];if(n!==Se&&me(n,t))return i[t]=4,n[t];hs&&(i[t]=0)}}const f=ir[t];let c,p;if(f)return t==="$attrs"&&We(e.attrs,"get",""),f(e);if((c=a.__cssModules)&&(c=c[t]))return c;if(n!==Se&&me(n,t))return i[t]=4,n[t];if(p=l.config.globalProperties,me(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return zo(o,t)?(o[t]=n,!0):r!==Se&&me(r,t)?(r[t]=n,!0):me(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let a;return!!n[i]||e!==Se&&me(e,i)||zo(t,i)||(a=s[0])&&me(a,i)||me(r,i)||me(ir,i)||me(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:me(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Mi(e){return re(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let hs=!0;function Ld(e){const t=Ys(e),n=e.proxy,r=e.ctx;hs=!1,t.beforeCreate&&Fi(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:a,provide:l,inject:u,created:f,beforeMount:c,mounted:p,beforeUpdate:d,updated:m,activated:v,deactivated:y,beforeDestroy:b,beforeUnmount:S,destroyed:g,unmounted:E,render:L,renderTracked:j,renderTriggered:Y,errorCaptured:Q,serverPrefetch:B,expose:w,inheritAttrs:N,components:k,directives:ee,filters:le}=t;if(u&&Nd(u,r,null),i)for(const F in i){const J=i[F];ie(J)&&(r[F]=J.bind(n))}if(o){const F=o.call(n,n);Oe(F)&&(e.data=Dr(F))}if(hs=!0,s)for(const F in s){const J=s[F],ge=ie(J)?J.bind(n,n):ie(J.get)?J.get.bind(n,n):Ot,Ye=!ie(J)&&ie(J.set)?J.set.bind(n):Ot,Fe=R({get:ge,set:Ye});Object.defineProperty(r,F,{enumerable:!0,configurable:!0,get:()=>Fe.value,set:we=>Fe.value=we})}if(a)for(const F in a)ku(a[F],r,n,F);if(l){const F=ie(l)?l.call(n):l;Reflect.ownKeys(F).forEach(J=>{vn(J,F[J])})}f&&Fi(f,e,"c");function q(F,J){re(J)?J.forEach(ge=>F(ge.bind(n))):J&&F(J.bind(n))}if(q(Ad,c),q(Ge,p),q(wd,d),q(Cd,m),q(bd,v),q(Ed,y),q(xd,Q),q(Od,j),q(kd,Y),q(qs,S),q(Co,E),q(Td,B),re(w))if(w.length){const F=e.exposed||(e.exposed={});w.forEach(J=>{Object.defineProperty(F,J,{get:()=>n[J],set:ge=>n[J]=ge})})}else e.exposed||(e.exposed={});L&&e.render===Ot&&(e.render=L),N!=null&&(e.inheritAttrs=N),k&&(e.components=k),ee&&(e.directives=ee),B&&zs(e)}function Nd(e,t,n=Ot){re(e)&&(e=gs(e));for(const r in e){const o=e[r];let s;Oe(o)?"default"in o?s=Ze(o.from||r,o.default,!0):s=Ze(o.from||r):s=Ze(o),Be(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:i=>s.value=i}):t[r]=s}}function Fi(e,t,n){yt(re(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ku(e,t,n,r){let o=r.includes(".")?Hu(n,r):()=>n[r];if(Le(e)){const s=t[e];ie(s)&&$e(o,s)}else if(ie(e))$e(o,e.bind(n));else if(Oe(e))if(re(e))e.forEach(s=>ku(s,t,n,r));else{const s=ie(e.handler)?e.handler.bind(n):t[e.handler];ie(s)&&$e(o,s,e)}}function Ys(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let l;return a?l=a:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(u=>po(l,u,i,!0)),po(l,t,i)),Oe(t)&&s.set(t,l),l}function po(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&po(e,s,n,!0),o&&o.forEach(i=>po(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=Vd[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const Vd={data:Bi,props:$i,emits:$i,methods:tr,computed:tr,beforeCreate:Je,created:Je,beforeMount:Je,mounted:Je,beforeUpdate:Je,updated:Je,beforeDestroy:Je,beforeUnmount:Je,destroyed:Je,unmounted:Je,activated:Je,deactivated:Je,errorCaptured:Je,serverPrefetch:Je,components:tr,directives:tr,watch:Fd,provide:Bi,inject:Md};function Bi(e,t){return t?e?function(){return Me(ie(e)?e.call(this,this):e,ie(t)?t.call(this,this):t)}:t:e}function Md(e,t){return tr(gs(e),gs(t))}function gs(e){if(re(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Je(e,t){return e?[...new Set([].concat(e,t))]:t}function tr(e,t){return e?Me(Object.create(null),e,t):t}function $i(e,t){return e?re(e)&&re(t)?[...new Set([...e,...t])]:Me(Object.create(null),Mi(e),Mi(t??{})):t}function Fd(e,t){if(!e)return t;if(!t)return e;const n=Me(Object.create(null),e);for(const r in t)n[r]=Je(e[r],t[r]);return n}function Ou(){return{app:null,config:{isNativeTag:_f,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Bd=0;function $d(e,t){return function(r,o=null){ie(r)||(r=Me({},r)),o!=null&&!Oe(o)&&(o=null);const s=Ou(),i=new WeakSet,a=[];let l=!1;const u=s.app={_uid:Bd++,_component:r,_props:o,_container:null,_context:s,_instance:null,version:bp,get config(){return s.config},set config(f){},use(f,...c){return i.has(f)||(f&&ie(f.install)?(i.add(f),f.install(u,...c)):ie(f)&&(i.add(f),f(u,...c))),u},mixin(f){return s.mixins.includes(f)||s.mixins.push(f),u},component(f,c){return c?(s.components[f]=c,u):s.components[f]},directive(f,c){return c?(s.directives[f]=c,u):s.directives[f]},mount(f,c,p){if(!l){const d=u._ceVNode||oe(r,o);return d.appContext=s,p===!0?p="svg":p===!1&&(p=void 0),c&&t?t(d,f):e(d,f,p),l=!0,u._container=f,f.__vue_app__=u,ko(d.component)}},onUnmount(f){a.push(f)},unmount(){l&&(yt(a,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(f,c){return s.provides[f]=c,u},runWithContext(f){const c=Ln;Ln=u;try{return f()}finally{Ln=c}}};return u}}let Ln=null;function vn(e,t){if(Ue){let n=Ue.provides;const r=Ue.parent&&Ue.parent.provides;r===n&&(n=Ue.provides=Object.create(r)),n[e]=t}}function Ze(e,t,n=!1){const r=Ue||je;if(r||Ln){const o=Ln?Ln._context.provides:r?r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(o&&e in o)return o[e];if(arguments.length>1)return n&&ie(t)?t.call(r&&r.proxy):t}}const xu={},Du=()=>Object.create(xu),Pu=e=>Object.getPrototypeOf(e)===xu;function Hd(e,t,n,r=!1){const o={},s=Du();e.propsDefaults=Object.create(null),Ru(e,t,o,s);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:cu(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function Ud(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:i}}=e,a=de(o),[l]=e.propsOptions;let u=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let c=0;c<f.length;c++){let p=f[c];if(To(e.emitsOptions,p))continue;const d=t[p];if(l)if(me(s,p))d!==s[p]&&(s[p]=d,u=!0);else{const m=nt(p);o[m]=_s(l,a,m,d,e,!1)}else d!==s[p]&&(s[p]=d,u=!0)}}}else{Ru(e,t,o,s)&&(u=!0);let f;for(const c in a)(!t||!me(t,c)&&((f=nn(c))===c||!me(t,f)))&&(l?n&&(n[c]!==void 0||n[f]!==void 0)&&(o[c]=_s(l,a,c,void 0,e,!0)):delete o[c]);if(s!==a)for(const c in s)(!t||!me(t,c))&&(delete s[c],u=!0)}u&&Vt(e.attrs,"set","")}function Ru(e,t,n,r){const[o,s]=e.propsOptions;let i=!1,a;if(t)for(let l in t){if(Rn(l))continue;const u=t[l];let f;o&&me(o,f=nt(l))?!s||!s.includes(f)?n[f]=u:(a||(a={}))[f]=u:To(e.emitsOptions,l)||(!(l in r)||u!==r[l])&&(r[l]=u,i=!0)}if(s){const l=de(n),u=a||Se;for(let f=0;f<s.length;f++){const c=s[f];n[c]=_s(o,l,c,u[c],e,!me(u,c))}}return i}function _s(e,t,n,r,o,s){const i=e[n];if(i!=null){const a=me(i,"default");if(a&&r===void 0){const l=i.default;if(i.type!==Function&&!i.skipFactory&&ie(l)){const{propsDefaults:u}=o;if(n in u)r=u[n];else{const f=Vr(o);r=u[n]=l.call(null,t),f()}}else r=l;o.ce&&o.ce._setProp(n,r)}i[0]&&(s&&!a?r=!1:i[1]&&(r===""||r===nn(n))&&(r=!0))}return r}const jd=new WeakMap;function Iu(e,t,n=!1){const r=n?jd:t.propsCache,o=r.get(e);if(o)return o;const s=e.props,i={},a=[];let l=!1;if(!ie(e)){const f=c=>{l=!0;const[p,d]=Iu(c,t,!0);Me(i,p),d&&a.push(...d)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!s&&!l)return Oe(e)&&r.set(e,Dn),Dn;if(re(s))for(let f=0;f<s.length;f++){const c=nt(s[f]);Hi(c)&&(i[c]=Se)}else if(s)for(const f in s){const c=nt(f);if(Hi(c)){const p=s[f],d=i[c]=re(p)||ie(p)?{type:p}:Me({},p),m=d.type;let v=!1,y=!0;if(re(m))for(let b=0;b<m.length;++b){const S=m[b],g=ie(S)&&S.name;if(g==="Boolean"){v=!0;break}else g==="String"&&(y=!1)}else v=ie(m)&&m.name==="Boolean";d[0]=v,d[1]=y,(v||me(d,"default"))&&a.push(c)}}const u=[i,a];return Oe(e)&&r.set(e,u),u}function Hi(e){return e[0]!=="$"&&!Rn(e)}const Lu=e=>e[0]==="_"||e==="$stable",Js=e=>re(e)?e.map(pt):[pt(e)],Kd=(e,t,n)=>{if(t._n)return t;const r=Ne((...o)=>Js(t(...o)),n);return r._c=!1,r},Nu=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Lu(o))continue;const s=e[o];if(ie(s))t[o]=Kd(o,s,r);else if(s!=null){const i=Js(s);t[o]=()=>i}}},Vu=(e,t)=>{const n=Js(t);e.slots.default=()=>n},Mu=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},Wd=(e,t,n)=>{const r=e.slots=Du();if(e.vnode.shapeFlag&32){const o=t._;o?(Mu(r,t,n),n&&Wl(r,"_",o,!0)):Nu(t,r)}else t&&Vu(e,t)},zd=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Se;if(r.shapeFlag&32){const a=t._;a?n&&a===1?s=!1:Mu(o,t,n):(s=!t.$stable,Nu(t,o)),i=t}else t&&(Vu(e,t),i={default:1});if(s)for(const a in o)!Lu(a)&&i[a]==null&&delete o[a]},it=Ku;function qd(e){return Gd(e,_d)}function Gd(e,t){const n=Eo();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:a,createComment:l,setText:u,setElementText:f,parentNode:c,nextSibling:p,setScopeId:d=Ot,insertStaticContent:m}=e,v=(h,_,A,O=null,C=null,D=null,H=void 0,M=null,V=!!_.dynamicChildren)=>{if(h===_)return;h&&!dn(h,_)&&(O=T(h),we(h,C,D,!0),h=null),_.patchFlag===-2&&(V=!1,_.dynamicChildren=null);const{type:P,ref:ne,shapeFlag:K}=_;switch(P){case yn:y(h,_,A,O);break;case qe:b(h,_,A,O);break;case ar:h==null&&S(_,A,O,H);break;case Ee:k(h,_,A,O,C,D,H,M,V);break;default:K&1?L(h,_,A,O,C,D,H,M,V):K&6?ee(h,_,A,O,C,D,H,M,V):(K&64||K&128)&&P.process(h,_,A,O,C,D,H,M,V,X)}ne!=null&&C&&fo(ne,h&&h.ref,D,_||h,!_)},y=(h,_,A,O)=>{if(h==null)r(_.el=a(_.children),A,O);else{const C=_.el=h.el;_.children!==h.children&&u(C,_.children)}},b=(h,_,A,O)=>{h==null?r(_.el=l(_.children||""),A,O):_.el=h.el},S=(h,_,A,O)=>{[h.el,h.anchor]=m(h.children,_,A,O,h.el,h.anchor)},g=({el:h,anchor:_},A,O)=>{let C;for(;h&&h!==_;)C=p(h),r(h,A,O),h=C;r(_,A,O)},E=({el:h,anchor:_})=>{let A;for(;h&&h!==_;)A=p(h),o(h),h=A;o(_)},L=(h,_,A,O,C,D,H,M,V)=>{_.type==="svg"?H="svg":_.type==="math"&&(H="mathml"),h==null?j(_,A,O,C,D,H,M,V):B(h,_,C,D,H,M,V)},j=(h,_,A,O,C,D,H,M)=>{let V,P;const{props:ne,shapeFlag:K,transition:Z,dirs:se}=h;if(V=h.el=i(h.type,D,ne&&ne.is,ne),K&8?f(V,h.children):K&16&&Q(h.children,V,null,O,C,qo(h,D),H,M),se&&Tt(h,null,O,"created"),Y(V,h,h.scopeId,H,O),ne){for(const Ce in ne)Ce!=="value"&&!Rn(Ce)&&s(V,Ce,null,ne[Ce],D,O);"value"in ne&&s(V,"value",null,ne.value,D),(P=ne.onVnodeBeforeMount)&&dt(P,O,h)}se&&Tt(h,null,O,"beforeMount");const ue=Fu(C,Z);ue&&Z.beforeEnter(V),r(V,_,A),((P=ne&&ne.onVnodeMounted)||ue||se)&&it(()=>{P&&dt(P,O,h),ue&&Z.enter(V),se&&Tt(h,null,O,"mounted")},C)},Y=(h,_,A,O,C)=>{if(A&&d(h,A),O)for(let D=0;D<O.length;D++)d(h,O[D]);if(C){let D=C.subTree;if(_===D||ju(D.type)&&(D.ssContent===_||D.ssFallback===_)){const H=C.vnode;Y(h,H,H.scopeId,H.slotScopeIds,C.parent)}}},Q=(h,_,A,O,C,D,H,M,V=0)=>{for(let P=V;P<h.length;P++){const ne=h[P]=M?Gt(h[P]):pt(h[P]);v(null,ne,_,A,O,C,D,H,M)}},B=(h,_,A,O,C,D,H)=>{const M=_.el=h.el;let{patchFlag:V,dynamicChildren:P,dirs:ne}=_;V|=h.patchFlag&16;const K=h.props||Se,Z=_.props||Se;let se;if(A&&an(A,!1),(se=Z.onVnodeBeforeUpdate)&&dt(se,A,_,h),ne&&Tt(_,h,A,"beforeUpdate"),A&&an(A,!0),(K.innerHTML&&Z.innerHTML==null||K.textContent&&Z.textContent==null)&&f(M,""),P?w(h.dynamicChildren,P,M,A,O,qo(_,C),D):H||J(h,_,M,null,A,O,qo(_,C),D,!1),V>0){if(V&16)N(M,K,Z,A,C);else if(V&2&&K.class!==Z.class&&s(M,"class",null,Z.class,C),V&4&&s(M,"style",K.style,Z.style,C),V&8){const ue=_.dynamicProps;for(let Ce=0;Ce<ue.length;Ce++){const ve=ue[Ce],rt=K[ve],Ke=Z[ve];(Ke!==rt||ve==="value")&&s(M,ve,rt,Ke,C,A)}}V&1&&h.children!==_.children&&f(M,_.children)}else!H&&P==null&&N(M,K,Z,A,C);((se=Z.onVnodeUpdated)||ne)&&it(()=>{se&&dt(se,A,_,h),ne&&Tt(_,h,A,"updated")},O)},w=(h,_,A,O,C,D,H)=>{for(let M=0;M<_.length;M++){const V=h[M],P=_[M],ne=V.el&&(V.type===Ee||!dn(V,P)||V.shapeFlag&70)?c(V.el):A;v(V,P,ne,null,O,C,D,H,!0)}},N=(h,_,A,O,C)=>{if(_!==A){if(_!==Se)for(const D in _)!Rn(D)&&!(D in A)&&s(h,D,_[D],null,C,O);for(const D in A){if(Rn(D))continue;const H=A[D],M=_[D];H!==M&&D!=="value"&&s(h,D,M,H,C,O)}"value"in A&&s(h,"value",_.value,A.value,C)}},k=(h,_,A,O,C,D,H,M,V)=>{const P=_.el=h?h.el:a(""),ne=_.anchor=h?h.anchor:a("");let{patchFlag:K,dynamicChildren:Z,slotScopeIds:se}=_;se&&(M=M?M.concat(se):se),h==null?(r(P,A,O),r(ne,A,O),Q(_.children||[],A,ne,C,D,H,M,V)):K>0&&K&64&&Z&&h.dynamicChildren?(w(h.dynamicChildren,Z,A,C,D,H,M),(_.key!=null||C&&_===C.subTree)&&Bu(h,_,!0)):J(h,_,A,ne,C,D,H,M,V)},ee=(h,_,A,O,C,D,H,M,V)=>{_.slotScopeIds=M,h==null?_.shapeFlag&512?C.ctx.activate(_,A,O,H,V):le(_,A,O,C,D,H,V):Ae(h,_,V)},le=(h,_,A,O,C,D,H)=>{const M=h.component=pp(h,O,C);if(Lr(h)&&(M.ctx.renderer=X),hp(M,!1,H),M.asyncDep){if(C&&C.registerDep(M,q,H),!h.el){const V=M.subTree=oe(qe);b(null,V,_,A)}}else q(M,h,_,A,C,D,H)},Ae=(h,_,A)=>{const O=_.component=h.component;if(op(h,_,A))if(O.asyncDep&&!O.asyncResolved){F(O,_,A);return}else O.next=_,O.update();else _.el=h.el,O.vnode=_},q=(h,_,A,O,C,D,H)=>{const M=()=>{if(h.isMounted){let{next:K,bu:Z,u:se,parent:ue,vnode:Ce}=h;{const ot=$u(h);if(ot){K&&(K.el=Ce.el,F(h,K,H)),ot.asyncDep.then(()=>{h.isUnmounted||M()});return}}let ve=K,rt;an(h,!1),K?(K.el=Ce.el,F(h,K,H)):K=Ce,Z&&Bo(Z),(rt=K.props&&K.props.onVnodeBeforeUpdate)&&dt(rt,ue,K,Ce),an(h,!0);const Ke=Go(h),gt=h.subTree;h.subTree=Ke,v(gt,Ke,c(gt.el),T(gt),h,C,D),K.el=Ke.el,ve===null&&sp(h,Ke.el),se&&it(se,C),(rt=K.props&&K.props.onVnodeUpdated)&&it(()=>dt(rt,ue,K,Ce),C)}else{let K;const{el:Z,props:se}=_,{bm:ue,m:Ce,parent:ve,root:rt,type:Ke}=h,gt=mn(_);if(an(h,!1),ue&&Bo(ue),!gt&&(K=se&&se.onVnodeBeforeMount)&&dt(K,ve,_),an(h,!0),Z&&De){const ot=()=>{h.subTree=Go(h),De(Z,h.subTree,h,C,null)};gt&&Ke.__asyncHydrate?Ke.__asyncHydrate(Z,h,ot):ot()}else{rt.ce&&rt.ce._injectChildStyle(Ke);const ot=h.subTree=Go(h);v(null,ot,A,O,h,C,D),_.el=ot.el}if(Ce&&it(Ce,C),!gt&&(K=se&&se.onVnodeMounted)){const ot=_;it(()=>dt(K,ve,ot),C)}(_.shapeFlag&256||ve&&mn(ve.vnode)&&ve.vnode.shapeFlag&256)&&h.a&&it(h.a,C),h.isMounted=!0,_=A=O=null}};h.scope.on();const V=h.effect=new Jl(M);h.scope.off();const P=h.update=V.run.bind(V),ne=h.job=V.runIfDirty.bind(V);ne.i=h,ne.id=h.uid,V.scheduler=()=>Ws(ne),an(h,!0),P()},F=(h,_,A)=>{_.component=h;const O=h.vnode.props;h.vnode=_,h.next=null,Ud(h,_.props,O,A),zd(h,_.children,A),rn(),Ri(h),on()},J=(h,_,A,O,C,D,H,M,V=!1)=>{const P=h&&h.children,ne=h?h.shapeFlag:0,K=_.children,{patchFlag:Z,shapeFlag:se}=_;if(Z>0){if(Z&128){Ye(P,K,A,O,C,D,H,M,V);return}else if(Z&256){ge(P,K,A,O,C,D,H,M,V);return}}se&8?(ne&16&&ct(P,C,D),K!==P&&f(A,K)):ne&16?se&16?Ye(P,K,A,O,C,D,H,M,V):ct(P,C,D,!0):(ne&8&&f(A,""),se&16&&Q(K,A,O,C,D,H,M,V))},ge=(h,_,A,O,C,D,H,M,V)=>{h=h||Dn,_=_||Dn;const P=h.length,ne=_.length,K=Math.min(P,ne);let Z;for(Z=0;Z<K;Z++){const se=_[Z]=V?Gt(_[Z]):pt(_[Z]);v(h[Z],se,A,null,C,D,H,M,V)}P>ne?ct(h,C,D,!0,!1,K):Q(_,A,O,C,D,H,M,V,K)},Ye=(h,_,A,O,C,D,H,M,V)=>{let P=0;const ne=_.length;let K=h.length-1,Z=ne-1;for(;P<=K&&P<=Z;){const se=h[P],ue=_[P]=V?Gt(_[P]):pt(_[P]);if(dn(se,ue))v(se,ue,A,null,C,D,H,M,V);else break;P++}for(;P<=K&&P<=Z;){const se=h[K],ue=_[Z]=V?Gt(_[Z]):pt(_[Z]);if(dn(se,ue))v(se,ue,A,null,C,D,H,M,V);else break;K--,Z--}if(P>K){if(P<=Z){const se=Z+1,ue=se<ne?_[se].el:O;for(;P<=Z;)v(null,_[P]=V?Gt(_[P]):pt(_[P]),A,ue,C,D,H,M,V),P++}}else if(P>Z)for(;P<=K;)we(h[P],C,D,!0),P++;else{const se=P,ue=P,Ce=new Map;for(P=ue;P<=Z;P++){const st=_[P]=V?Gt(_[P]):pt(_[P]);st.key!=null&&Ce.set(st.key,P)}let ve,rt=0;const Ke=Z-ue+1;let gt=!1,ot=0;const qn=new Array(Ke);for(P=0;P<Ke;P++)qn[P]=0;for(P=se;P<=K;P++){const st=h[P];if(rt>=Ke){we(st,C,D,!0);continue}let At;if(st.key!=null)At=Ce.get(st.key);else for(ve=ue;ve<=Z;ve++)if(qn[ve-ue]===0&&dn(st,_[ve])){At=ve;break}At===void 0?we(st,C,D,!0):(qn[At-ue]=P+1,At>=ot?ot=At:gt=!0,v(st,_[At],A,null,C,D,H,M,V),rt++)}const ki=gt?Yd(qn):Dn;for(ve=ki.length-1,P=Ke-1;P>=0;P--){const st=ue+P,At=_[st],Oi=st+1<ne?_[st+1].el:O;qn[P]===0?v(null,At,A,Oi,C,D,H,M,V):gt&&(ve<0||P!==ki[ve]?Fe(At,A,Oi,2):ve--)}}},Fe=(h,_,A,O,C=null)=>{const{el:D,type:H,transition:M,children:V,shapeFlag:P}=h;if(P&6){Fe(h.component.subTree,_,A,O);return}if(P&128){h.suspense.move(_,A,O);return}if(P&64){H.move(h,_,A,X);return}if(H===Ee){r(D,_,A);for(let K=0;K<V.length;K++)Fe(V[K],_,A,O);r(h.anchor,_,A);return}if(H===ar){g(h,_,A);return}if(O!==2&&P&1&&M)if(O===0)M.beforeEnter(D),r(D,_,A),it(()=>M.enter(D),C);else{const{leave:K,delayLeave:Z,afterLeave:se}=M,ue=()=>r(D,_,A),Ce=()=>{K(D,()=>{ue(),se&&se()})};Z?Z(D,ue,Ce):Ce()}else r(D,_,A)},we=(h,_,A,O=!1,C=!1)=>{const{type:D,props:H,ref:M,children:V,dynamicChildren:P,shapeFlag:ne,patchFlag:K,dirs:Z,cacheIndex:se}=h;if(K===-2&&(C=!1),M!=null&&fo(M,null,A,h,!0),se!=null&&(_.renderCache[se]=void 0),ne&256){_.ctx.deactivate(h);return}const ue=ne&1&&Z,Ce=!mn(h);let ve;if(Ce&&(ve=H&&H.onVnodeBeforeUnmount)&&dt(ve,_,h),ne&6)jt(h.component,A,O);else{if(ne&128){h.suspense.unmount(A,O);return}ue&&Tt(h,null,_,"beforeUnmount"),ne&64?h.type.remove(h,_,A,X,O):P&&!P.hasOnce&&(D!==Ee||K>0&&K&64)?ct(P,_,A,!1,!0):(D===Ee&&K&384||!C&&ne&16)&&ct(V,_,A),O&&ut(h)}(Ce&&(ve=H&&H.onVnodeUnmounted)||ue)&&it(()=>{ve&&dt(ve,_,h),ue&&Tt(h,null,_,"unmounted")},A)},ut=h=>{const{type:_,el:A,anchor:O,transition:C}=h;if(_===Ee){Dt(A,O);return}if(_===ar){E(h);return}const D=()=>{o(A),C&&!C.persisted&&C.afterLeave&&C.afterLeave()};if(h.shapeFlag&1&&C&&!C.persisted){const{leave:H,delayLeave:M}=C,V=()=>H(A,D);M?M(h.el,D,V):V()}else D()},Dt=(h,_)=>{let A;for(;h!==_;)A=p(h),o(h),h=A;o(_)},jt=(h,_,A)=>{const{bum:O,scope:C,job:D,subTree:H,um:M,m:V,a:P}=h;Ui(V),Ui(P),O&&Bo(O),C.stop(),D&&(D.flags|=8,we(H,h,_,A)),M&&it(M,_),it(()=>{h.isUnmounted=!0},_),_&&_.pendingBranch&&!_.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===_.pendingId&&(_.deps--,_.deps===0&&_.resolve())},ct=(h,_,A,O=!1,C=!1,D=0)=>{for(let H=D;H<h.length;H++)we(h[H],_,A,O,C)},T=h=>{if(h.shapeFlag&6)return T(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const _=p(h.anchor||h.el),A=_&&_[cd];return A?p(A):_};let W=!1;const U=(h,_,A)=>{h==null?_._vnode&&we(_._vnode,null,null,!0):v(_._vnode||null,h,_,null,null,null,A),_._vnode=h,W||(W=!0,Ri(),lo(),W=!1)},X={p:v,um:we,m:Fe,r:ut,mt:le,mc:Q,pc:J,pbc:w,n:T,o:e};let _e,De;return t&&([_e,De]=t(X)),{render:U,hydrate:_e,createApp:$d(U,_e)}}function qo({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 an({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Fu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Bu(e,t,n=!1){const r=e.children,o=t.children;if(re(r)&&re(o))for(let s=0;s<r.length;s++){const i=r[s];let a=o[s];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=o[s]=Gt(o[s]),a.el=i.el),!n&&a.patchFlag!==-2&&Bu(i,a)),a.type===yn&&(a.el=i.el)}}function Yd(e){const t=e.slice(),n=[0];let r,o,s,i,a;const l=e.length;for(r=0;r<l;r++){const u=e[r];if(u!==0){if(o=n[n.length-1],e[o]<u){t[r]=o,n.push(r);continue}for(s=0,i=n.length-1;s<i;)a=s+i>>1,e[n[a]]<u?s=a+1:i=a;u<e[n[s]]&&(s>0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}function $u(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$u(t)}function Ui(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Jd=Symbol.for("v-scx"),Xd=()=>Ze(Jd);function Qd(e,t){return Xs(e,null,t)}function $e(e,t,n){return Xs(e,t,n)}function Xs(e,t,n=Se){const{immediate:r,deep:o,flush:s,once:i}=n,a=Me({},n),l=t&&r||!t&&s!=="post";let u;if(Mn){if(s==="sync"){const d=Xd();u=d.__watcherHandles||(d.__watcherHandles=[])}else if(!l){const d=()=>{};return d.stop=Ot,d.resume=Ot,d.pause=Ot,d}}const f=Ue;a.call=(d,m,v)=>yt(d,f,m,v);let c=!1;s==="post"?a.scheduler=d=>{it(d,f&&f.suspense)}:s!=="sync"&&(c=!0,a.scheduler=(d,m)=>{m?d():Ws(d)}),a.augmentJob=d=>{t&&(d.flags|=4),c&&(d.flags|=2,f&&(d.id=f.uid,d.i=f))};const p=id(e,t,a);return Mn&&(u?u.push(p):l&&p()),p}function Zd(e,t,n){const r=this.proxy,o=Le(e)?e.includes(".")?Hu(r,e):()=>r[e]:e.bind(r,r);let s;ie(t)?s=t:(s=t.handler,n=t);const i=Vr(this),a=Xs(o,s.bind(r),n);return i(),a}function Hu(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o<n.length&&r;o++)r=r[n[o]];return r}}const ep=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${nt(t)}Modifiers`]||e[`${nn(t)}Modifiers`];function tp(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Se;let o=n;const s=t.startsWith("update:"),i=s&&ep(r,t.slice(7));i&&(i.trim&&(o=n.map(f=>Le(f)?f.trim():f)),i.number&&(o=n.map(Ef)));let a,l=r[a=Fo(t)]||r[a=Fo(nt(t))];!l&&s&&(l=r[a=Fo(nn(t))]),l&&yt(l,e,6,o);const u=r[a+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,yt(u,e,6,o)}}function Uu(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},a=!1;if(!ie(e)){const l=u=>{const f=Uu(u,t,!0);f&&(a=!0,Me(i,f))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!s&&!a?(Oe(e)&&r.set(e,null),null):(re(s)?s.forEach(l=>i[l]=null):Me(i,s),Oe(e)&&r.set(e,i),i)}function To(e,t){return!e||!kr(t)?!1:(t=t.slice(2).replace(/Once$/,""),me(e,t[0].toLowerCase()+t.slice(1))||me(e,nn(t))||me(e,t))}function Go(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[s],slots:i,attrs:a,emit:l,render:u,renderCache:f,props:c,data:p,setupState:d,ctx:m,inheritAttrs:v}=e,y=uo(e);let b,S;try{if(n.shapeFlag&4){const E=o||r,L=E;b=pt(u.call(L,E,f,c,d,p,m)),S=a}else{const E=t;b=pt(E.length>1?E(c,{attrs:a,slots:i,emit:l}):E(c,null)),S=t.props?a:np(a)}}catch(E){lr.length=0,Ir(E,e,1),b=oe(qe)}let g=b;if(S&&v!==!1){const E=Object.keys(S),{shapeFlag:L}=g;E.length&&L&7&&(s&&E.some(Ns)&&(S=rp(S,s)),g=Qt(g,S,!1,!0))}return n.dirs&&(g=Qt(g,null,!1,!0),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&gr(g,n.transition),b=g,uo(y),b}const np=e=>{let t;for(const n in e)(n==="class"||n==="style"||kr(n))&&((t||(t={}))[n]=e[n]);return t},rp=(e,t)=>{const n={};for(const r in e)(!Ns(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function op(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:a,patchFlag:l}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?ji(r,i,u):!!i;if(l&8){const f=t.dynamicProps;for(let c=0;c<f.length;c++){const p=f[c];if(i[p]!==r[p]&&!To(u,p))return!0}}}else return(o||a)&&(!a||!a.$stable)?!0:r===i?!1:r?i?ji(r,i,u):!0:!!i;return!1}function ji(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let o=0;o<r.length;o++){const s=r[o];if(t[s]!==e[s]&&!To(n,s))return!0}return!1}function sp({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r===e)(e=t.vnode).el=n,t=t.parent;else break}}const ju=e=>e.__isSuspense;function Ku(e,t){t&&t.pendingBranch?re(e)?t.effects.push(...e):t.effects.push(e):ud(e)}const Ee=Symbol.for("v-fgt"),yn=Symbol.for("v-txt"),qe=Symbol.for("v-cmt"),ar=Symbol.for("v-stc"),lr=[];let at=null;function $(e=!1){lr.push(at=e?null:[])}function ip(){lr.pop(),at=lr[lr.length-1]||null}let _r=1;function Ki(e){_r+=e,e<0&&at&&(at.hasOnce=!0)}function Wu(e){return e.dynamicChildren=_r>0?at||Dn:null,ip(),_r>0&&at&&at.push(e),e}function te(e,t,n,r,o,s){return Wu(G(e,t,n,r,o,s,!0))}function Re(e,t,n,r,o){return Wu(oe(e,t,n,r,o,!0))}function mr(e){return e?e.__v_isVNode===!0:!1}function dn(e,t){return e.type===t.type&&e.key===t.key}const zu=({key:e})=>e??null,eo=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||Be(e)||ie(e)?{i:je,r:e,k:t,f:!!n}:e:null);function G(e,t=null,n=null,r=0,o=null,s=e===Ee?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zu(t),ref:t&&eo(t),scopeId:vu,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:je};return a?(Qs(l,n),s&128&&e.normalize(l)):n&&(l.shapeFlag|=Le(n)?8:16),_r>0&&!i&&at&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&&at.push(l),l}const oe=ap;function ap(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===Pd)&&(e=qe),mr(e)){const a=Qt(e,t,!0);return n&&Qs(a,n),_r>0&&!s&&at&&(a.shapeFlag&6?at[at.indexOf(e)]=a:at.push(a)),a.patchFlag=-2,a}if(yp(e)&&(e=e.__vccOpts),t){t=lp(t);let{class:a,style:l}=t;a&&!Le(a)&&(t.class=tt(a)),Oe(l)&&(Ks(l)&&!re(l)&&(l=Me({},l)),t.style=xr(l))}const i=Le(e)?1:ju(e)?128:yu(e)?64:Oe(e)?4:ie(e)?2:0;return G(e,t,n,r,o,i,s,!0)}function lp(e){return e?Ks(e)||Pu(e)?Me({},e):e:null}function Qt(e,t,n=!1,r=!1){const{props:o,ref:s,patchFlag:i,children:a,transition:l}=e,u=t?cp(o||{},t):o,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&zu(u),ref:t&&t.ref?n&&s?re(s)?s.concat(eo(t)):[s,eo(t)]:eo(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ee?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qt(e.ssContent),ssFallback:e.ssFallback&&Qt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&gr(f,l.clone(f)),f}function Zt(e=" ",t=0){return oe(yn,null,e,t)}function up(e,t){const n=oe(ar,null,e);return n.staticCount=t,n}function Ve(e="",t=!1){return t?($(),Re(qe,null,e)):oe(qe,null,e)}function pt(e){return e==null||typeof e=="boolean"?oe(qe):re(e)?oe(Ee,null,e.slice()):mr(e)?Gt(e):oe(yn,null,String(e))}function Gt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qt(e)}function Qs(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(re(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Qs(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Pu(t)?t._ctx=je:o===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else ie(t)?(t={default:t,_ctx:je},n=32):(t=String(t),r&64?(n=16,t=[Zt(t)]):n=8);e.children=t,e.shapeFlag|=n}function cp(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const o in r)if(o==="class")t.class!==r.class&&(t.class=tt([t.class,r.class]));else if(o==="style")t.style=xr([t.style,r.style]);else if(kr(o)){const s=t[o],i=r[o];i&&s!==i&&!(re(s)&&s.includes(i))&&(t[o]=s?[].concat(s,i):i)}else o!==""&&(t[o]=r[o])}return t}function dt(e,t,n,r=null){yt(e,t,7,[n,r])}const fp=Ou();let dp=0;function pp(e,t,n){const r=e.type,o=(t?t.appContext:e.appContext)||fp,s={uid:dp++,vnode:e,type:r,parent:t,appContext:o,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new xf(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(o.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Iu(r,o),emitsOptions:Uu(r,o),emit:null,emitted:null,propsDefaults:Se,inheritAttrs:r.inheritAttrs,ctx:Se,data:Se,props:Se,attrs:Se,slots:Se,refs:Se,setupState:Se,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return s.ctx={_:s},s.root=t?t.root:s,s.emit=tp.bind(null,s),e.ce&&e.ce(s),s}let Ue=null;const Nr=()=>Ue||je;let ho,ms;{const e=Eo(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),s=>{o.length>1?o.forEach(i=>i(s)):o[0](s)}};ho=t("__VUE_INSTANCE_SETTERS__",n=>Ue=n),ms=t("__VUE_SSR_SETTERS__",n=>Mn=n)}const Vr=e=>{const t=Ue;return ho(e),e.scope.on(),()=>{e.scope.off(),ho(t)}},Wi=()=>{Ue&&Ue.scope.off(),ho(null)};function qu(e){return e.vnode.shapeFlag&4}let Mn=!1;function hp(e,t=!1,n=!1){t&&ms(t);const{props:r,children:o}=e.vnode,s=qu(e);Hd(e,r,s,t),Wd(e,o,n);const i=s?gp(e,t):void 0;return t&&ms(!1),i}function gp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Id);const{setup:r}=n;if(r){rn();const o=e.setupContext=r.length>1?mp(e):null,s=Vr(e),i=Rr(r,e,0,[e.props,o]),a=Ul(i);if(on(),s(),(a||e.sp)&&!mn(e)&&zs(e),a){if(i.then(Wi,Wi),t)return i.then(l=>{zi(e,l,t)}).catch(l=>{Ir(l,e,0)});e.asyncDep=i}else zi(e,i,t)}else Gu(e,t)}function zi(e,t,n){ie(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Oe(t)&&(e.setupState=du(t)),Gu(e,n)}let qi;function Gu(e,t,n){const r=e.type;if(!e.render){if(!t&&qi&&!r.render){const o=r.template||Ys(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,u=Me(Me({isCustomElement:s,delimiters:a},i),l);r.render=qi(o,u)}}e.render=r.render||Ot}{const o=Vr(e);rn();try{Ld(e)}finally{on(),o()}}}const _p={get(e,t){return We(e,"get",""),e[t]}};function mp(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,_p),slots:e.slots,emit:e.emit,expose:t}}function ko(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(du(Yf(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in ir)return ir[n](e)},has(t,n){return n in t||n in ir}})):e.proxy}function vp(e,t=!0){return ie(e)?e.displayName||e.name:e.name||t&&e.__name}function yp(e){return ie(e)&&"__vccOpts"in e}const R=(e,t)=>od(e,t,Mn);function be(e,t,n){const r=arguments.length;return r===2?Oe(t)&&!re(t)?mr(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&mr(n)&&(n=[n]),oe(e,t,n))}const bp="3.5.12";/** -* @vue/runtime-dom v3.5.12 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let vs;const Gi=typeof window<"u"&&window.trustedTypes;if(Gi)try{vs=Gi.createPolicy("vue",{createHTML:e=>e})}catch{}const Yu=vs?e=>vs.createHTML(e):e=>e,Ep="http://www.w3.org/2000/svg",Sp="http://www.w3.org/1998/Math/MathML",Nt=typeof document<"u"?document:null,Yi=Nt&&Nt.createElement("template"),Ap={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?Nt.createElementNS(Ep,e):t==="mathml"?Nt.createElementNS(Sp,e):n?Nt.createElement(e,{is:n}):Nt.createElement(e);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Nt.createTextNode(e),createComment:e=>Nt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Nt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{Yi.innerHTML=Yu(r==="svg"?`<svg>${e}</svg>`:r==="mathml"?`<math>${e}</math>`:e);const a=Yi.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Kt="transition",Yn="animation",vr=Symbol("_vtc"),Ju={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},wp=Me({},bu,Ju),Cp=e=>(e.displayName="Transition",e.props=wp,e),Zs=Cp((e,{slots:t})=>be(pd,Tp(e),t)),ln=(e,t=[])=>{re(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ji=e=>e?re(e)?e.some(t=>t.length>1):e.length>1:!1;function Tp(e){const t={};for(const k in e)k in Ju||(t[k]=e[k]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:u=i,appearToClass:f=a,leaveFromClass:c=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:d=`${n}-leave-to`}=e,m=kp(o),v=m&&m[0],y=m&&m[1],{onBeforeEnter:b,onEnter:S,onEnterCancelled:g,onLeave:E,onLeaveCancelled:L,onBeforeAppear:j=b,onAppear:Y=S,onAppearCancelled:Q=g}=t,B=(k,ee,le)=>{un(k,ee?f:a),un(k,ee?u:i),le&&le()},w=(k,ee)=>{k._isLeaving=!1,un(k,c),un(k,d),un(k,p),ee&&ee()},N=k=>(ee,le)=>{const Ae=k?Y:S,q=()=>B(ee,k,le);ln(Ae,[ee,q]),Xi(()=>{un(ee,k?l:s),Wt(ee,k?f:a),Ji(Ae)||Qi(ee,r,v,q)})};return Me(t,{onBeforeEnter(k){ln(b,[k]),Wt(k,s),Wt(k,i)},onBeforeAppear(k){ln(j,[k]),Wt(k,l),Wt(k,u)},onEnter:N(!1),onAppear:N(!0),onLeave(k,ee){k._isLeaving=!0;const le=()=>w(k,ee);Wt(k,c),Wt(k,p),Dp(),Xi(()=>{k._isLeaving&&(un(k,c),Wt(k,d),Ji(E)||Qi(k,r,y,le))}),ln(E,[k,le])},onEnterCancelled(k){B(k,!1),ln(g,[k])},onAppearCancelled(k){B(k,!0),ln(Q,[k])},onLeaveCancelled(k){w(k),ln(L,[k])}})}function kp(e){if(e==null)return null;if(Oe(e))return[Yo(e.enter),Yo(e.leave)];{const t=Yo(e);return[t,t]}}function Yo(e){return Sf(e)}function Wt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[vr]||(e[vr]=new Set)).add(t)}function un(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[vr];n&&(n.delete(t),n.size||(e[vr]=void 0))}function Xi(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Op=0;function Qi(e,t,n,r){const o=e._endId=++Op,s=()=>{o===e._endId&&r()};if(n!=null)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=xp(e,t);if(!i)return r();const u=i+"end";let f=0;const c=()=>{e.removeEventListener(u,p),s()},p=d=>{d.target===e&&++f>=l&&c()};setTimeout(()=>{f<l&&c()},a+1),e.addEventListener(u,p)}function xp(e,t){const n=window.getComputedStyle(e),r=m=>(n[m]||"").split(", "),o=r(`${Kt}Delay`),s=r(`${Kt}Duration`),i=Zi(o,s),a=r(`${Yn}Delay`),l=r(`${Yn}Duration`),u=Zi(a,l);let f=null,c=0,p=0;t===Kt?i>0&&(f=Kt,c=i,p=s.length):t===Yn?u>0&&(f=Yn,c=u,p=l.length):(c=Math.max(i,u),f=c>0?i>u?Kt:Yn:null,p=f?f===Kt?s.length:l.length:0);const d=f===Kt&&/\b(transform|all)(,|$)/.test(r(`${Kt}Property`).toString());return{type:f,timeout:c,propCount:p,hasTransform:d}}function Zi(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,r)=>ea(n)+ea(e[r])))}function ea(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Dp(){return document.body.offsetHeight}function Pp(e,t,n){const r=e[vr];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const go=Symbol("_vod"),Xu=Symbol("_vsh"),_o={beforeMount(e,{value:t},{transition:n}){e[go]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Jn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Jn(e,!0),r.enter(e)):r.leave(e,()=>{Jn(e,!1)}):Jn(e,t))},beforeUnmount(e,{value:t}){Jn(e,t)}};function Jn(e,t){e.style.display=t?e[go]:"none",e[Xu]=!t}const Rp=Symbol(""),Ip=/(^|;)\s*display\s*:/;function Lp(e,t,n){const r=e.style,o=Le(n);let s=!1;if(n&&!o){if(t)if(Le(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&to(r,a,"")}else for(const i in t)n[i]==null&&to(r,i,"");for(const i in n)i==="display"&&(s=!0),to(r,i,n[i])}else if(o){if(t!==n){const i=r[Rp];i&&(n+=";"+i),r.cssText=n,s=Ip.test(n)}}else t&&e.removeAttribute("style");go in e&&(e[go]=s?r.display:"",e[Xu]&&(r.display="none"))}const ta=/\s*!important$/;function to(e,t,n){if(re(n))n.forEach(r=>to(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Np(e,t);ta.test(n)?e.setProperty(nn(r),n.replace(ta,""),"important"):e[r]=n}}const na=["Webkit","Moz","ms"],Jo={};function Np(e,t){const n=Jo[t];if(n)return n;let r=nt(t);if(r!=="filter"&&r in e)return Jo[t]=r;r=Or(r);for(let o=0;o<na.length;o++){const s=na[o]+r;if(s in e)return Jo[t]=s}return t}const ra="http://www.w3.org/1999/xlink";function oa(e,t,n,r,o,s=Of(t)){r&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(ra,t.slice(6,t.length)):e.setAttributeNS(ra,t,n):n==null||s&&!zl(n)?e.removeAttribute(t):e.setAttribute(t,s?"":Bt(n)?String(n):n)}function sa(e,t,n,r,o){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Yu(n):n);return}const s=e.tagName;if(t==="value"&&s!=="PROGRESS"&&!s.includes("-")){const a=s==="OPTION"?e.getAttribute("value")||"":e.value,l=n==null?e.type==="checkbox"?"on":"":String(n);(a!==l||!("_value"in e))&&(e.value=l),n==null&&e.removeAttribute(t),e._value=n;return}let i=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=zl(n):n==null&&a==="string"?(n="",i=!0):a==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(o||t)}function Vp(e,t,n,r){e.addEventListener(t,n,r)}function Mp(e,t,n,r){e.removeEventListener(t,n,r)}const ia=Symbol("_vei");function Fp(e,t,n,r,o=null){const s=e[ia]||(e[ia]={}),i=s[t];if(r&&i)i.value=r;else{const[a,l]=Bp(t);if(r){const u=s[t]=Up(r,o);Vp(e,a,u,l)}else i&&(Mp(e,a,i,l),s[t]=void 0)}}const aa=/(?:Once|Passive|Capture)$/;function Bp(e){let t;if(aa.test(e)){t={};let r;for(;r=e.match(aa);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):nn(e.slice(2)),t]}let Xo=0;const $p=Promise.resolve(),Hp=()=>Xo||($p.then(()=>Xo=0),Xo=Date.now());function Up(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;yt(jp(r,n.value),t,5,[r])};return n.value=e,n.attached=Hp(),n}function jp(e,t){if(re(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const la=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Kp=(e,t,n,r,o,s)=>{const i=o==="svg";t==="class"?Pp(e,r,i):t==="style"?Lp(e,n,r):kr(t)?Ns(t)||Fp(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Wp(e,t,r,i))?(sa(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&oa(e,t,r,i,s,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Le(r))?sa(e,nt(t),r,s,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),oa(e,t,r,i))};function Wp(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&la(t)&&ie(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 o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return la(t)&&Le(n)?!1:t in e}const zp={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},qp=(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=o=>{if(!("key"in o))return;const s=nn(o.key);if(t.some(i=>i===s||zp[i]===s))return e(o)})},Gp=Me({patchProp:Kp},Ap);let Qo,ua=!1;function Yp(){return Qo=ua?Qo:qd(Gp),ua=!0,Qo}const Jp=(...e)=>{const t=Yp().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Qp(r);if(o)return n(o,!0,Xp(o))},t};function Xp(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Qp(e){return Le(e)?document.querySelector(e):e}var Mr=e=>/^[a-z][a-z0-9+.-]*:/.test(e)||e.startsWith("//"),Zp=/.md((\?|#).*)?$/,eh=(e,t="/")=>Mr(e)||e.startsWith("/")&&!e.startsWith(t)&&!Zp.test(e),Oo=e=>/^(https?:)?\/\//.test(e),ca=e=>{if(!e||e.endsWith("/"))return e;let t=e.replace(/(^|\/)README.md$/i,"$1index.html");return t.endsWith(".md")?t=`${t.substring(0,t.length-3)}.html`:t.endsWith(".html")||(t=`${t}.html`),t.endsWith("/index.html")&&(t=t.substring(0,t.length-10)),t},th="http://.",nh=(e,t)=>{if(!e.startsWith("/")&&t){const n=t.slice(0,t.lastIndexOf("/"));return ca(new URL(`${n}/${e}`,th).pathname)}return ca(e)},rh=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},oh=/(#|\?)/,Qu=e=>{const[t,...n]=e.split(oh);return{pathname:t,hashAndQueries:n.join("")}},sh=["link","meta","script","style","noscript","template"],ih=["title","base"],ah=([e,t,n])=>ih.includes(e)?e:sh.includes(e)?e==="meta"&&t.name?`${e}.${t.name}`:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map(([r,o])=>typeof o=="boolean"?o?[r,""]:null:[r,o]).filter(r=>r!=null).sort(([r],[o])=>r.localeCompare(o)),n]):null,lh=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=ah(r);o&&!t.has(o)&&(t.add(o),n.push(r))}),n},uh=e=>e.endsWith("/")||e.endsWith(".html")?e:`${e}/`,Zu=e=>e.endsWith("/")?e.slice(0,-1):e,ec=e=>e.startsWith("/")?e.slice(1):e,ei=e=>Object.prototype.toString.call(e)==="[object Object]",mt=e=>typeof e=="string";const ch="modulepreload",fh=function(e){return"/"+e},fa={},Xn=function(t,n,r){let o=Promise.resolve();return n&&n.length>0&&(document.getElementsByTagName("link"),o=Promise.all(n.map(s=>{if(s=fh(s),s in fa)return;fa[s]=!0;const i=s.endsWith(".css"),a=i?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${s}"]${a}`))return;const l=document.createElement("link");if(l.rel=i?"stylesheet":ch,i||(l.as="script",l.crossOrigin=""),l.href=s,document.head.appendChild(l),i)return new Promise((u,f)=>{l.addEventListener("load",u),l.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${s}`)))})}))),o.then(()=>t()).catch(s=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=s,window.dispatchEvent(i),!i.defaultPrevented)throw s})},dh=JSON.parse("{}"),ph=Object.fromEntries([["/",{loader:()=>Xn(()=>import("./index.html-D7ve43IL.js"),__vite__mapDeps([])),meta:{title:"Резюме"}}],["/works.html",{loader:()=>Xn(()=>import("./works.html-NBBFoiT7.js"),__vite__mapDeps([])),meta:{title:"Работы"}}],["/eng/",{loader:()=>Xn(()=>import("./index.html-B5LWGqHO.js"),__vite__mapDeps([])),meta:{title:"Resume"}}],["/eng/works.html",{loader:()=>Xn(()=>import("./works.html-CihZ59B-.js"),__vite__mapDeps([])),meta:{title:"Works"}}],["/404.html",{loader:()=>Xn(()=>import("./404.html-BGekuXRq.js"),__vite__mapDeps([])),meta:{title:""}}]]);/*! - * vue-router v4.4.5 - * (c) 2024 Eduardo San Martin Morote - * @license MIT - */const kn=typeof document<"u";function tc(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function hh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&tc(e.default)}const ye=Object.assign;function Zo(e,t){const n={};for(const r in t){const o=t[r];n[r]=bt(o)?o.map(e):e(o)}return n}const ur=()=>{},bt=Array.isArray,nc=/#/g,gh=/&/g,_h=/\//g,mh=/=/g,vh=/\?/g,rc=/\+/g,yh=/%5B/g,bh=/%5D/g,oc=/%5E/g,Eh=/%60/g,sc=/%7B/g,Sh=/%7C/g,ic=/%7D/g,Ah=/%20/g;function ti(e){return encodeURI(""+e).replace(Sh,"|").replace(yh,"[").replace(bh,"]")}function wh(e){return ti(e).replace(sc,"{").replace(ic,"}").replace(oc,"^")}function ys(e){return ti(e).replace(rc,"%2B").replace(Ah,"+").replace(nc,"%23").replace(gh,"%26").replace(Eh,"`").replace(sc,"{").replace(ic,"}").replace(oc,"^")}function Ch(e){return ys(e).replace(mh,"%3D")}function Th(e){return ti(e).replace(nc,"%23").replace(vh,"%3F")}function kh(e){return e==null?"":Th(e).replace(_h,"%2F")}function yr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Oh=/\/$/,xh=e=>e.replace(Oh,"");function es(e,t,n="/"){let r,o={},s="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a<l&&a>=0&&(l=-1),l>-1&&(r=t.slice(0,l),s=t.slice(l+1,a>-1?a:t.length),o=e(s)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=Ih(r??t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:yr(i)}}function Dh(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function da(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Ph(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&Fn(t.matched[r],n.matched[o])&&ac(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Fn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ac(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Rh(e[n],t[n]))return!1;return!0}function Rh(e,t){return bt(e)?pa(e,t):bt(t)?pa(t,e):e===t}function pa(e,t){return bt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function Ih(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,i,a;for(i=0;i<r.length;i++)if(a=r[i],a!==".")if(a==="..")s>1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(i).join("/")}const Lt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var br;(function(e){e.pop="pop",e.push="push"})(br||(br={}));var cr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(cr||(cr={}));function Lh(e){if(!e)if(kn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xh(e)}const Nh=/^[^#]+#/;function Vh(e,t){return e.replace(Nh,"#")+t}function Mh(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const xo=()=>({left:window.scrollX,top:window.scrollY});function Fh(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Mh(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function ha(e,t){return(history.state?history.state.position-t:-1)+e}const bs=new Map;function Bh(e,t){bs.set(e,t)}function $h(e){const t=bs.get(e);return bs.delete(e),t}let Hh=()=>location.protocol+"//"+location.host;function lc(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let a=o.includes(e.slice(s))?e.slice(s).length:1,l=o.slice(a);return l[0]!=="/"&&(l="/"+l),da(l,"")}return da(n,e)+r+o}function Uh(e,t,n,r){let o=[],s=[],i=null;const a=({state:p})=>{const d=lc(e,location),m=n.value,v=t.value;let y=0;if(p){if(n.value=d,t.value=p,i&&i===m){i=null;return}y=v?p.position-v.position:0}else r(d);o.forEach(b=>{b(n.value,m,{delta:y,type:br.pop,direction:y?y>0?cr.forward:cr.back:cr.unknown})})};function l(){i=n.value}function u(p){o.push(p);const d=()=>{const m=o.indexOf(p);m>-1&&o.splice(m,1)};return s.push(d),d}function f(){const{history:p}=window;p.state&&p.replaceState(ye({},p.state,{scroll:xo()}),"")}function c(){for(const p of s)p();s=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:c}}function ga(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?xo():null}}function jh(e){const{history:t,location:n}=window,r={value:lc(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(l,u,f){const c=e.indexOf("#"),p=c>-1?(n.host&&document.querySelector("base")?e:e.slice(c))+l:Hh()+e+l;try{t[f?"replaceState":"pushState"](u,"",p),o.value=u}catch(d){console.error(d),n[f?"replace":"assign"](p)}}function i(l,u){const f=ye({},t.state,ga(o.value.back,l,o.value.forward,!0),u,{position:o.value.position});s(l,f,!0),r.value=l}function a(l,u){const f=ye({},o.value,t.state,{forward:l,scroll:xo()});s(f.current,f,!0);const c=ye({},ga(r.value,l,null),{position:f.position+1},u);s(l,c,!1),r.value=l}return{location:r,state:o,push:a,replace:i}}function Kh(e){e=Lh(e);const t=jh(e),n=Uh(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=ye({location:"",base:e,go:r,createHref:Vh.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function Wh(e){return typeof e=="string"||e&&typeof e=="object"}function uc(e){return typeof e=="string"||typeof e=="symbol"}const cc=Symbol("");var _a;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(_a||(_a={}));function Bn(e,t){return ye(new Error,{type:e,[cc]:!0},t)}function Rt(e,t){return e instanceof Error&&cc in e&&(t==null||!!(e.type&t))}const ma="[^/]+?",zh={sensitive:!1,strict:!1,start:!0,end:!0},qh=/[.+*?^${}()[\]/\\]/g;function Gh(e,t){const n=ye({},zh,t),r=[];let o=n.start?"^":"";const s=[];for(const u of e){const f=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let c=0;c<u.length;c++){const p=u[c];let d=40+(n.sensitive?.25:0);if(p.type===0)c||(o+="/"),o+=p.value.replace(qh,"\\$&"),d+=40;else if(p.type===1){const{value:m,repeatable:v,optional:y,regexp:b}=p;s.push({name:m,repeatable:v,optional:y});const S=b||ma;if(S!==ma){d+=10;try{new RegExp(`(${S})`)}catch(E){throw new Error(`Invalid custom RegExp for param "${m}" (${S}): `+E.message)}}let g=v?`((?:${S})(?:/(?:${S}))*)`:`(${S})`;c||(g=y&&u.length<2?`(?:/${g})`:"/"+g),y&&(g+="?"),o+=g,d+=20,y&&(d+=-8),v&&(d+=-20),S===".*"&&(d+=-50)}f.push(d)}r.push(f)}if(n.strict&&n.end){const u=r.length-1;r[u][r[u].length-1]+=.7000000000000001}n.strict||(o+="/?"),n.end?o+="$":n.strict&&(o+="(?:/|$)");const i=new RegExp(o,n.sensitive?"":"i");function a(u){const f=u.match(i),c={};if(!f)return null;for(let p=1;p<f.length;p++){const d=f[p]||"",m=s[p-1];c[m.name]=d&&m.repeatable?d.split("/"):d}return c}function l(u){let f="",c=!1;for(const p of e){(!c||!f.endsWith("/"))&&(f+="/"),c=!1;for(const d of p)if(d.type===0)f+=d.value;else if(d.type===1){const{value:m,repeatable:v,optional:y}=d,b=m in u?u[m]:"";if(bt(b)&&!v)throw new Error(`Provided param "${m}" is an array but it is not repeatable (* or + modifiers)`);const S=bt(b)?b.join("/"):b;if(!S)if(y)p.length<2&&(f.endsWith("/")?f=f.slice(0,-1):c=!0);else throw new Error(`Missing required param "${m}"`);f+=S}}return f||"/"}return{re:i,score:r,keys:s,parse:a,stringify:l}}function Yh(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function fc(e,t){let n=0;const r=e.score,o=t.score;for(;n<r.length&&n<o.length;){const s=Yh(r[n],o[n]);if(s)return s;n++}if(Math.abs(o.length-r.length)===1){if(va(r))return 1;if(va(o))return-1}return o.length-r.length}function va(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const Jh={type:0,value:""},Xh=/[a-zA-Z0-9_]/;function Qh(e){if(!e)return[[]];if(e==="/")return[[Jh]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${n})/"${u}": ${d}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let a=0,l,u="",f="";function c(){u&&(n===0?s.push({type:0,value:u}):n===1||n===2||n===3?(s.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:f,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=l}for(;a<e.length;){if(l=e[a++],l==="\\"&&n!==2){r=n,n=4;continue}switch(n){case 0:l==="/"?(u&&c(),i()):l===":"?(c(),n=1):p();break;case 4:p(),n=r;break;case 1:l==="("?n=2:Xh.test(l)?p():(c(),n=0,l!=="*"&&l!=="?"&&l!=="+"&&a--);break;case 2:l===")"?f[f.length-1]=="\\"?f=f.slice(0,-1)+l:n=3:f+=l;break;case 3:c(),n=0,l!=="*"&&l!=="?"&&l!=="+"&&a--,f="";break;default:t("Unknown state");break}}return n===2&&t(`Unfinished custom RegExp for param "${u}"`),c(),i(),o}function Zh(e,t,n){const r=Gh(Qh(e.path),n),o=ye(r,{record:e,parent:t,children:[],alias:[]});return t&&!o.record.aliasOf==!t.record.aliasOf&&t.children.push(o),o}function eg(e,t){const n=[],r=new Map;t=Sa({strict:!1,end:!0,sensitive:!1},t);function o(c){return r.get(c)}function s(c,p,d){const m=!d,v=ba(c);v.aliasOf=d&&d.record;const y=Sa(t,c),b=[v];if("alias"in c){const E=typeof c.alias=="string"?[c.alias]:c.alias;for(const L of E)b.push(ba(ye({},v,{components:d?d.record.components:v.components,path:L,aliasOf:d?d.record:v})))}let S,g;for(const E of b){const{path:L}=E;if(p&&L[0]!=="/"){const j=p.record.path,Y=j[j.length-1]==="/"?"":"/";E.path=p.record.path+(L&&Y+L)}if(S=Zh(E,p,y),d?d.alias.push(S):(g=g||S,g!==S&&g.alias.push(S),m&&c.name&&!Ea(S)&&i(c.name)),dc(S)&&l(S),v.children){const j=v.children;for(let Y=0;Y<j.length;Y++)s(j[Y],S,d&&d.children[Y])}d=d||S}return g?()=>{i(g)}:ur}function i(c){if(uc(c)){const p=r.get(c);p&&(r.delete(c),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(c);p>-1&&(n.splice(p,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function a(){return n}function l(c){const p=rg(c,n);n.splice(p,0,c),c.record.name&&!Ea(c)&&r.set(c.record.name,c)}function u(c,p){let d,m={},v,y;if("name"in c&&c.name){if(d=r.get(c.name),!d)throw Bn(1,{location:c});y=d.record.name,m=ye(ya(p.params,d.keys.filter(g=>!g.optional).concat(d.parent?d.parent.keys.filter(g=>g.optional):[]).map(g=>g.name)),c.params&&ya(c.params,d.keys.map(g=>g.name))),v=d.stringify(m)}else if(c.path!=null)v=c.path,d=n.find(g=>g.re.test(v)),d&&(m=d.parse(v),y=d.record.name);else{if(d=p.name?r.get(p.name):n.find(g=>g.re.test(p.path)),!d)throw Bn(1,{location:c,currentLocation:p});y=d.record.name,m=ye({},p.params,c.params),v=d.stringify(m)}const b=[];let S=d;for(;S;)b.unshift(S.record),S=S.parent;return{name:y,path:v,params:m,matched:b,meta:ng(b)}}e.forEach(c=>s(c));function f(){n.length=0,r.clear()}return{addRoute:s,resolve:u,removeRoute:i,clearRoutes:f,getRoutes:a,getRecordMatcher:o}}function ya(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function ba(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:tg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function tg(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function Ea(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function ng(e){return e.reduce((t,n)=>ye(t,n.meta),{})}function Sa(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function rg(e,t){let n=0,r=t.length;for(;n!==r;){const s=n+r>>1;fc(e,t[s])<0?r=s:n=s+1}const o=og(e);return o&&(r=t.lastIndexOf(o,r-1)),r}function og(e){let t=e;for(;t=t.parent;)if(dc(t)&&fc(e,t)===0)return t}function dc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function sg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;o<r.length;++o){const s=r[o].replace(rc," "),i=s.indexOf("="),a=yr(i<0?s:s.slice(0,i)),l=i<0?null:yr(s.slice(i+1));if(a in t){let u=t[a];bt(u)||(u=t[a]=[u]),u.push(l)}else t[a]=l}return t}function Aa(e){let t="";for(let n in e){const r=e[n];if(n=Ch(n),r==null){r!==void 0&&(t+=(t.length?"&":"")+n);continue}(bt(r)?r.map(s=>s&&ys(s)):[r&&ys(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function ig(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=bt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const ag=Symbol(""),wa=Symbol(""),Do=Symbol(""),ni=Symbol(""),Es=Symbol("");function Qn(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Yt(e,t,n,r,o,s=i=>i()){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((a,l)=>{const u=p=>{p===!1?l(Bn(4,{from:n,to:t})):p instanceof Error?l(p):Wh(p)?l(Bn(2,{from:t,to:p})):(i&&r.enterCallbacks[o]===i&&typeof p=="function"&&i.push(p),a())},f=s(()=>e.call(r&&r.instances[o],t,n,u));let c=Promise.resolve(f);e.length<3&&(c=c.then(u)),c.catch(p=>l(p))})}function ts(e,t,n,r,o=s=>s()){const s=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(tc(l)){const f=(l.__vccOpts||l)[t];f&&s.push(Yt(f,n,r,i,a,o))}else{let u=l();s.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const c=hh(f)?f.default:f;i.mods[a]=f,i.components[a]=c;const d=(c.__vccOpts||c)[t];return d&&Yt(d,n,r,i,a,o)()}))}}return s}function Ca(e){const t=Ze(Do),n=Ze(ni),r=R(()=>{const l=Xt(e.to);return t.resolve(l)}),o=R(()=>{const{matched:l}=r.value,{length:u}=l,f=l[u-1],c=n.matched;if(!f||!c.length)return-1;const p=c.findIndex(Fn.bind(null,f));if(p>-1)return p;const d=Ta(l[u-2]);return u>1&&Ta(f)===d&&c[c.length-1].path!==d?c.findIndex(Fn.bind(null,l[u-2])):p}),s=R(()=>o.value>-1&&fg(n.params,r.value.params)),i=R(()=>o.value>-1&&o.value===n.matched.length-1&&ac(n.params,r.value.params));function a(l={}){return cg(l)?t[Xt(e.replace)?"replace":"push"](Xt(e.to)).catch(ur):Promise.resolve()}return{route:r,href:R(()=>r.value.href),isActive:s,isExactActive:i,navigate:a}}const lg=he({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ca,setup(e,{slots:t}){const n=Dr(Ca(e)),{options:r}=Ze(Do),o=R(()=>({[ka(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[ka(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:be("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),ug=lg;function cg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function fg(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!bt(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Ta(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ka=(e,t,n)=>e??t??n,dg=he({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ze(Es),o=R(()=>e.route||r.value),s=Ze(wa,0),i=R(()=>{let u=Xt(s);const{matched:f}=o.value;let c;for(;(c=f[u])&&!c.components;)u++;return u}),a=R(()=>o.value.matched[i.value]);vn(wa,R(()=>i.value+1)),vn(ag,a),vn(Es,o);const l=fe();return $e(()=>[l.value,a.value,e.name],([u,f,c],[p,d,m])=>{f&&(f.instances[c]=u,d&&d!==f&&u&&u===p&&(f.leaveGuards.size||(f.leaveGuards=d.leaveGuards),f.updateGuards.size||(f.updateGuards=d.updateGuards))),u&&f&&(!d||!Fn(f,d)||!p)&&(f.enterCallbacks[c]||[]).forEach(v=>v(u))},{flush:"post"}),()=>{const u=o.value,f=e.name,c=a.value,p=c&&c.components[f];if(!p)return Oa(n.default,{Component:p,route:u});const d=c.props[f],m=d?d===!0?u.params:typeof d=="function"?d(u):d:null,y=be(p,ye({},m,t,{onVnodeUnmounted:b=>{b.component.isUnmounted&&(c.instances[f]=null)},ref:l}));return Oa(n.default,{Component:y,route:u})||y}}});function Oa(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const pg=dg;function hg(e){const t=eg(e.routes,e),n=e.parseQuery||sg,r=e.stringifyQuery||Aa,o=e.history,s=Qn(),i=Qn(),a=Qn(),l=vt(Lt);let u=Lt;kn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Zo.bind(null,T=>""+T),c=Zo.bind(null,kh),p=Zo.bind(null,yr);function d(T,W){let U,X;return uc(T)?(U=t.getRecordMatcher(T),X=W):X=T,t.addRoute(X,U)}function m(T){const W=t.getRecordMatcher(T);W&&t.removeRoute(W)}function v(){return t.getRoutes().map(T=>T.record)}function y(T){return!!t.getRecordMatcher(T)}function b(T,W){if(W=ye({},W||l.value),typeof T=="string"){const _=es(n,T,W.path),A=t.resolve({path:_.path},W),O=o.createHref(_.fullPath);return ye(_,A,{params:p(A.params),hash:yr(_.hash),redirectedFrom:void 0,href:O})}let U;if(T.path!=null)U=ye({},T,{path:es(n,T.path,W.path).path});else{const _=ye({},T.params);for(const A in _)_[A]==null&&delete _[A];U=ye({},T,{params:c(_)}),W.params=c(W.params)}const X=t.resolve(U,W),_e=T.hash||"";X.params=f(p(X.params));const De=Dh(r,ye({},T,{hash:wh(_e),path:X.path})),h=o.createHref(De);return ye({fullPath:De,hash:_e,query:r===Aa?ig(T.query):T.query||{}},X,{redirectedFrom:void 0,href:h})}function S(T){return typeof T=="string"?es(n,T,l.value.path):ye({},T)}function g(T,W){if(u!==T)return Bn(8,{from:W,to:T})}function E(T){return Y(T)}function L(T){return E(ye(S(T),{replace:!0}))}function j(T){const W=T.matched[T.matched.length-1];if(W&&W.redirect){const{redirect:U}=W;let X=typeof U=="function"?U(T):U;return typeof X=="string"&&(X=X.includes("?")||X.includes("#")?X=S(X):{path:X},X.params={}),ye({query:T.query,hash:T.hash,params:X.path!=null?{}:T.params},X)}}function Y(T,W){const U=u=b(T),X=l.value,_e=T.state,De=T.force,h=T.replace===!0,_=j(U);if(_)return Y(ye(S(_),{state:typeof _=="object"?ye({},_e,_.state):_e,force:De,replace:h}),W||U);const A=U;A.redirectedFrom=W;let O;return!De&&Ph(r,X,U)&&(O=Bn(16,{to:A,from:X}),Fe(X,X,!0,!1)),(O?Promise.resolve(O):w(A,X)).catch(C=>Rt(C)?Rt(C,2)?C:Ye(C):J(C,A,X)).then(C=>{if(C){if(Rt(C,2))return Y(ye({replace:h},S(C.to),{state:typeof C.to=="object"?ye({},_e,C.to.state):_e,force:De}),W||A)}else C=k(A,X,!0,h,_e);return N(A,X,C),C})}function Q(T,W){const U=g(T,W);return U?Promise.reject(U):Promise.resolve()}function B(T){const W=Dt.values().next().value;return W&&typeof W.runWithContext=="function"?W.runWithContext(T):T()}function w(T,W){let U;const[X,_e,De]=gg(T,W);U=ts(X.reverse(),"beforeRouteLeave",T,W);for(const _ of X)_.leaveGuards.forEach(A=>{U.push(Yt(A,T,W))});const h=Q.bind(null,T,W);return U.push(h),ct(U).then(()=>{U=[];for(const _ of s.list())U.push(Yt(_,T,W));return U.push(h),ct(U)}).then(()=>{U=ts(_e,"beforeRouteUpdate",T,W);for(const _ of _e)_.updateGuards.forEach(A=>{U.push(Yt(A,T,W))});return U.push(h),ct(U)}).then(()=>{U=[];for(const _ of De)if(_.beforeEnter)if(bt(_.beforeEnter))for(const A of _.beforeEnter)U.push(Yt(A,T,W));else U.push(Yt(_.beforeEnter,T,W));return U.push(h),ct(U)}).then(()=>(T.matched.forEach(_=>_.enterCallbacks={}),U=ts(De,"beforeRouteEnter",T,W,B),U.push(h),ct(U))).then(()=>{U=[];for(const _ of i.list())U.push(Yt(_,T,W));return U.push(h),ct(U)}).catch(_=>Rt(_,8)?_:Promise.reject(_))}function N(T,W,U){a.list().forEach(X=>B(()=>X(T,W,U)))}function k(T,W,U,X,_e){const De=g(T,W);if(De)return De;const h=W===Lt,_=kn?history.state:{};U&&(X||h?o.replace(T.fullPath,ye({scroll:h&&_&&_.scroll},_e)):o.push(T.fullPath,_e)),l.value=T,Fe(T,W,U,h),Ye()}let ee;function le(){ee||(ee=o.listen((T,W,U)=>{if(!jt.listening)return;const X=b(T),_e=j(X);if(_e){Y(ye(_e,{replace:!0}),X).catch(ur);return}u=X;const De=l.value;kn&&Bh(ha(De.fullPath,U.delta),xo()),w(X,De).catch(h=>Rt(h,12)?h:Rt(h,2)?(Y(h.to,X).then(_=>{Rt(_,20)&&!U.delta&&U.type===br.pop&&o.go(-1,!1)}).catch(ur),Promise.reject()):(U.delta&&o.go(-U.delta,!1),J(h,X,De))).then(h=>{h=h||k(X,De,!1),h&&(U.delta&&!Rt(h,8)?o.go(-U.delta,!1):U.type===br.pop&&Rt(h,20)&&o.go(-1,!1)),N(X,De,h)}).catch(ur)}))}let Ae=Qn(),q=Qn(),F;function J(T,W,U){Ye(T);const X=q.list();return X.length?X.forEach(_e=>_e(T,W,U)):console.error(T),Promise.reject(T)}function ge(){return F&&l.value!==Lt?Promise.resolve():new Promise((T,W)=>{Ae.add([T,W])})}function Ye(T){return F||(F=!T,le(),Ae.list().forEach(([W,U])=>T?U(T):W()),Ae.reset()),T}function Fe(T,W,U,X){const{scrollBehavior:_e}=e;if(!kn||!_e)return Promise.resolve();const De=!U&&$h(ha(T.fullPath,0))||(X||!U)&&history.state&&history.state.scroll||null;return sn().then(()=>_e(T,W,De)).then(h=>h&&Fh(h)).catch(h=>J(h,T,W))}const we=T=>o.go(T);let ut;const Dt=new Set,jt={currentRoute:l,listening:!0,addRoute:d,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:y,getRoutes:v,resolve:b,options:e,push:E,replace:L,go:we,back:()=>we(-1),forward:()=>we(1),beforeEach:s.add,beforeResolve:i.add,afterEach:a.add,onError:q.add,isReady:ge,install(T){const W=this;T.component("RouterLink",ug),T.component("RouterView",pg),T.config.globalProperties.$router=W,Object.defineProperty(T.config.globalProperties,"$route",{enumerable:!0,get:()=>Xt(l)}),kn&&!ut&&l.value===Lt&&(ut=!0,E(o.location).catch(_e=>{}));const U={};for(const _e in Lt)Object.defineProperty(U,_e,{get:()=>l.value[_e],enumerable:!0});T.provide(Do,W),T.provide(ni,cu(U)),T.provide(Es,l);const X=T.unmount;Dt.add(T),T.unmount=function(){Dt.delete(T),Dt.size<1&&(u=Lt,ee&&ee(),ee=null,l.value=Lt,ut=!1,F=!1),X()}}};function ct(T){return T.reduce((W,U)=>W.then(()=>B(U)),Promise.resolve())}return jt}function gg(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;i<s;i++){const a=t.matched[i];a&&(e.matched.find(u=>Fn(u,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(u=>Fn(u,l))||o.push(l))}return[n,r,o]}function An(){return Ze(Do)}function Ht(e){return Ze(ni)}var ri=Symbol(""),xt=()=>{const e=Ze(ri);if(!e)throw new Error("useClientData() is called without provider.");return e},_g=()=>xt().pageComponent,jn=()=>xt().pageData,St=()=>xt().pageFrontmatter,mg=()=>xt().pageHead,vg=()=>xt().pageLang,yg=()=>xt().pageLayout,Fr=()=>xt().routeLocale,bg=()=>xt().routes,pc=()=>xt().siteData,oi=()=>xt().siteLocaleData,Eg=Symbol(""),Ss=vt(dh),Nn=vt(ph),hc=(e,t)=>{const n=nh(e,t);if(Nn.value[n])return n;const r=encodeURI(n);if(Nn.value[r])return r;const o=Ss.value[n]||Ss.value[r];return o||n},Er=(e,t)=>{const{pathname:n,hashAndQueries:r}=Qu(e),o=hc(n,t),s=o+r;return Nn.value[o]?{...Nn.value[o],path:s,notFound:!1}:{...Nn.value["/404.html"],path:s,notFound:!0}},Sg=(e,t)=>{const{pathname:n,hashAndQueries:r}=Qu(e);return hc(n,t)+r},Ag=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget){const t=e.currentTarget.getAttribute("target");if(t!=null&&t.match(/\b_blank\b/i))return}return e.preventDefault(),!0}},Po=he({name:"RouteLink",props:{to:{type:String,required:!0},active:Boolean,activeClass:{type:String,default:"route-link-active"}},slots:Object,setup(e,{slots:t}){const n=An(),r=Ht(),o=R(()=>e.to.startsWith("#")||e.to.startsWith("?")?e.to:`/${Sg(e.to,r.path).substring(1)}`);return()=>be("a",{class:["route-link",{[e.activeClass]:e.active}],href:o.value,onClick:(s={})=>{Ag(s)&&n.push(e.to).catch()}},t.default())}}),Kn=he({name:"AutoLink",props:{config:{type:Object,required:!0}},slots:Object,setup(e,{slots:t}){const n=nd(e,"config"),r=Ht(),o=pc(),s=R(()=>Mr(n.value.link)),i=R(()=>n.value.target||(s.value?"_blank":void 0)),a=R(()=>i.value==="_blank"),l=R(()=>!s.value&&!a.value),u=R(()=>n.value.rel||(a.value?"noopener noreferrer":null)),f=R(()=>n.value.ariaLabel??n.value.text),c=R(()=>{if(n.value.exact)return!1;const d=Object.keys(o.value.locales);return d.length?d.every(m=>m!==n.value.link):n.value.link!=="/"}),p=R(()=>l.value?n.value.activeMatch?(n.value.activeMatch instanceof RegExp?n.value.activeMatch:new RegExp(n.value.activeMatch,"u")).test(r.path):c.value?r.path.startsWith(n.value.link):r.path===n.value.link:!1);return()=>{const{before:d,after:m,default:v}=t,y=(v==null?void 0:v(n.value))??[d==null?void 0:d(n.value),n.value.text,m==null?void 0:m(n.value)];return l.value?be(Po,{class:"auto-link",to:n.value.link,active:p.value,"aria-label":f.value},()=>y):be("a",{class:"auto-link external-link",href:n.value.link,"aria-label":f.value,rel:u.value,target:i.value},y)}}}),si=he({name:"ClientOnly",setup(e,t){const n=fe(!1);return Ge(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),ii=he({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=_g(),n=R(()=>{if(!e.path)return t.value;const r=Er(e.path);return yd(async()=>r.loader().then(({comp:o})=>o))});return()=>be(n.value)}}),wg="Layout",Cg="en-US",cn=Dr({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageHead:(e,t,n)=>{const r=mt(t.description)?t.description:n.description,o=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return lh(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||Cg,resolvePageLayout:(e,t)=>{const n=mt(e.frontmatter.layout)?e.frontmatter.layout:wg;if(!t[n])throw new Error(`[vuepress] Cannot resolve layout: ${n}`);return t[n]},resolveRouteLocale:(e,t)=>rh(e,decodeURI(t)),resolveSiteLocaleData:({base:e,locales:t,...n},r)=>{var o;return{...n,...t[r],head:[...((o=t[r])==null?void 0:o.head)??[],...n.head]}}}),Ut=(e={})=>e,ai=e=>Oo(e)?e:`/${ec(e)}`;function Ro(e){return Fs()?(Yl(e),!0):!1}function Et(e){return typeof e=="function"?e():Xt(e)}const li=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Tg=Object.prototype.toString,kg=e=>Tg.call(e)==="[object Object]",As=()=>{};function gc(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const _c=e=>e();function Og(e,t={}){let n,r,o=As;const s=a=>{clearTimeout(a),o(),o=As};return a=>{const l=Et(e),u=Et(t.maxWait);return n&&s(n),l<=0||u!==void 0&&u<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((f,c)=>{o=t.rejectOnCancel?c:f,u&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,f(a())},u)),n=setTimeout(()=>{r&&s(r),r=null,f(a())},l)})}}function xg(e=_c){const t=fe(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Pr(t),pause:n,resume:r,eventFilter:o}}function Dg(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function Pg(e){return Nr()}function Rg(e,t=200,n={}){return gc(Og(t,n),e)}function Ig(e,t,n={}){const{eventFilter:r=_c,...o}=n;return $e(e,gc(r,t),o)}function Lg(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:a,isActive:l}=xg(r);return{stop:Ig(e,t,{...o,eventFilter:s}),pause:i,resume:a,isActive:l}}function ui(e,t=!0,n){Pg()?Ge(e,n):t?e():sn(e)}function Ng(e,t,n={}){const{immediate:r=!0}=n,o=fe(!1);let s=null;function i(){s&&(clearTimeout(s),s=null)}function a(){o.value=!1,i()}function l(...u){i(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...u)},Et(t))}return r&&(o.value=!0,li&&l()),Ro(a),{isPending:Pr(o),start:l,stop:a}}function Vg(e=!1,t={}){const{truthyValue:n=!0,falsyValue:r=!1}=t,o=Be(e),s=fe(e);function i(a){if(arguments.length)return s.value=a,s.value;{const l=Et(n);return s.value=s.value===l?Et(r):l,s.value}}return o?i:[s,i]}const en=li?window:void 0,mc=li?window.navigator:void 0;function pn(e){var t;const n=Et(e);return(t=n==null?void 0:n.$el)!=null?t:n}function lt(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=en):[t,n,r,o]=e,!t)return As;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(f=>f()),s.length=0},a=(f,c,p,d)=>(f.addEventListener(c,p,d),()=>f.removeEventListener(c,p,d)),l=$e(()=>[pn(t),Et(o)],([f,c])=>{if(i(),!f)return;const p=kg(c)?{...c}:c;s.push(...n.flatMap(d=>r.map(m=>a(f,d,m,p))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return Ro(u),u}function Mg(){const e=fe(!1),t=Nr();return t&&Ge(()=>{e.value=!0},t),e}function Io(e){const t=Mg();return R(()=>(t.value,!!e()))}function ci(e,t={}){const{window:n=en}=t,r=Io(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const s=fe(!1),i=u=>{s.value=u.matches},a=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",i):o.removeListener(i))},l=Qd(()=>{r.value&&(a(),o=n.matchMedia(Et(e)),"addEventListener"in o?o.addEventListener("change",i):o.addListener(i),s.value=o.matches)});return Ro(()=>{l(),a(),o=void 0}),s}function xa(e,t={}){const{controls:n=!1,navigator:r=mc}=t,o=Io(()=>r&&"permissions"in r),s=vt(),i=typeof e=="string"?{name:e}:e,a=vt(),l=()=>{var f,c;a.value=(c=(f=s.value)==null?void 0:f.state)!=null?c:"prompt"};lt(s,"change",l);const u=Dg(async()=>{if(o.value){if(!s.value)try{s.value=await r.permissions.query(i)}catch{s.value=void 0}finally{l()}if(n)return de(s.value)}});return u(),n?{state:a,isSupported:o,query:u}:a}function Fg(e={}){const{navigator:t=mc,read:n=!1,source:r,copiedDuring:o=1500,legacy:s=!1}=e,i=Io(()=>t&&"clipboard"in t),a=xa("clipboard-read"),l=xa("clipboard-write"),u=R(()=>i.value||s),f=fe(""),c=fe(!1),p=Ng(()=>c.value=!1,o);function d(){i.value&&b(a.value)?t.clipboard.readText().then(S=>{f.value=S}):f.value=y()}u.value&&n&<(["copy","cut"],d);async function m(S=Et(r)){u.value&&S!=null&&(i.value&&b(l.value)?await t.clipboard.writeText(S):v(S),f.value=S,c.value=!0,p.start())}function v(S){const g=document.createElement("textarea");g.value=S??"",g.style.position="absolute",g.style.opacity="0",document.body.appendChild(g),g.select(),document.execCommand("copy"),g.remove()}function y(){var S,g,E;return(E=(g=(S=document==null?void 0:document.getSelection)==null?void 0:S.call(document))==null?void 0:g.toString())!=null?E:""}function b(S){return S==="granted"||S==="prompt"}return{isSupported:u,text:f,copied:c,copy:m}}const zr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},qr="__vueuse_ssr_handlers__",Bg=$g();function $g(){return qr in zr||(zr[qr]=zr[qr]||{}),zr[qr]}function Hg(e,t){return Bg[e]||t}function Ug(e){return ci("(prefers-color-scheme: dark)",e)}function jg(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 Kg={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()}},Da="vueuse-storage";function fi(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=en,eventFilter:p,onError:d=w=>{console.error(w)},initOnMounted:m}=r,v=(f?vt:fe)(typeof t=="function"?t():t);if(!n)try{n=Hg("getDefaultStorage",()=>{var w;return(w=en)==null?void 0:w.localStorage})()}catch(w){d(w)}if(!n)return v;const y=Et(t),b=jg(y),S=(o=r.serializer)!=null?o:Kg[b],{pause:g,resume:E}=Lg(v,()=>j(v.value),{flush:s,deep:i,eventFilter:p});c&&a&&ui(()=>{n instanceof Storage?lt(c,"storage",Q):lt(c,Da,B),m&&Q()}),m||Q();function L(w,N){if(c){const k={key:e,oldValue:w,newValue:N,storageArea:n};c.dispatchEvent(n instanceof Storage?new StorageEvent("storage",k):new CustomEvent(Da,{detail:k}))}}function j(w){try{const N=n.getItem(e);if(w==null)L(N,null),n.removeItem(e);else{const k=S.write(w);N!==k&&(n.setItem(e,k),L(N,k))}}catch(N){d(N)}}function Y(w){const N=w?w.newValue:n.getItem(e);if(N==null)return l&&y!=null&&n.setItem(e,S.write(y)),y;if(!w&&u){const k=S.read(N);return typeof u=="function"?u(k,y):b==="object"&&!Array.isArray(k)?{...y,...k}:k}else return typeof N!="string"?N:S.read(N)}function Q(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){v.value=y;return}if(!(w&&w.key!==e)){g();try{(w==null?void 0:w.newValue)!==S.write(v.value)&&(v.value=Y(w))}catch(N){d(N)}finally{w?sn(E):E()}}}}function B(w){Q(w.detail)}return v}function Wg(e,t,n={}){const{window:r=en,...o}=n;let s;const i=Io(()=>r&&"ResizeObserver"in r),a=()=>{s&&(s.disconnect(),s=void 0)},l=R(()=>{const c=Et(e);return Array.isArray(c)?c.map(p=>pn(p)):[pn(c)]}),u=$e(l,c=>{if(a(),i.value&&r){s=new ResizeObserver(t);for(const p of c)p&&s.observe(p,o)}},{immediate:!0,flush:"post"}),f=()=>{a(),u()};return Ro(f),{isSupported:i,stop:f}}function zg(e,t={width:0,height:0},n={}){const{window:r=en,box:o="content-box"}=n,s=R(()=>{var c,p;return(p=(c=pn(e))==null?void 0:c.namespaceURI)==null?void 0:p.includes("svg")}),i=fe(t.width),a=fe(t.height),{stop:l}=Wg(e,([c])=>{const p=o==="border-box"?c.borderBoxSize:o==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(r&&s.value){const d=pn(e);if(d){const m=d.getBoundingClientRect();i.value=m.width,a.value=m.height}}else if(p){const d=Array.isArray(p)?p:[p];i.value=d.reduce((m,{inlineSize:v})=>m+v,0),a.value=d.reduce((m,{blockSize:v})=>m+v,0)}else i.value=c.contentRect.width,a.value=c.contentRect.height},n);ui(()=>{const c=pn(e);c&&(i.value="offsetWidth"in c?c.offsetWidth:t.width,a.value="offsetHeight"in c?c.offsetHeight:t.height)});const u=$e(()=>pn(e),c=>{i.value=c?t.width:0,a.value=c?t.height:0});function f(){l(),u()}return{width:i,height:a,stop:f}}function qg(e={}){const{window:t=en,behavior:n="auto"}=e;if(!t)return{x:fe(0),y:fe(0)};const r=fe(t.scrollX),o=fe(t.scrollY),s=R({get(){return r.value},set(a){scrollTo({left:a,behavior:n})}}),i=R({get(){return o.value},set(a){scrollTo({top:a,behavior:n})}});return lt(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:s,y:i}}function Gg(e={}){const{window:t=en,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:s=!0,type:i="inner"}=e,a=fe(n),l=fe(r),u=()=>{t&&(i==="outer"?(a.value=t.outerWidth,l.value=t.outerHeight):s?(a.value=t.innerWidth,l.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(u(),ui(u),lt("resize",u,{passive:!0}),o){const f=ci("(orientation: portrait)");$e(f,()=>u())}return{width:a,height:l}}const Pa=async(e,t)=>{const{path:n,query:r}=e.currentRoute.value,{scrollBehavior:o}=e.options;e.options.scrollBehavior=void 0,await e.replace({path:n,query:r,hash:t}),e.options.scrollBehavior=o},Yg=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=An();lt("scroll",Rg(()=>{var m,v;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)<r){Pa(o,"");return}const l=window.innerHeight+i,u=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),f=Math.abs(u-l)<r,c=Array.from(document.querySelectorAll(e)),d=Array.from(document.querySelectorAll(t)).filter(y=>c.some(b=>b.hash===y.hash));for(let y=0;y<d.length;y++){const b=d[y],S=d[y+1],g=i>=(((m=b.parentElement)==null?void 0:m.offsetTop)??0)-r,E=!S||i<(((v=S.parentElement)==null?void 0:v.offsetTop)??0)-r;if(!(g&&E))continue;const j=decodeURIComponent(o.currentRoute.value.hash),Y=decodeURIComponent(b.hash);if(j===Y)return;if(f){for(let Q=y+1;Q<d.length;Q++)if(j===decodeURIComponent(d[Q].hash))return}Pa(o,Y);return}},n))},Jg="a.vp-sidebar-item",Xg=".header-anchor",Qg=300,Zg=5,e_=Ut({setup(){Yg({headerLinkSelector:Jg,headerAnchorSelector:Xg,delay:Qg,offset:Zg})}}),t_=Object.freeze(Object.defineProperty({__proto__:null,default:e_},Symbol.toStringTag,{value:"Module"})),n_=(e,t=2)=>{if(t===!1)return[];const[n,r]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t,o=e.filter(i=>i.level>=n&&i.level<=r),s=[];e:for(let i=0;i<o.length;i++){const a=o[i];if(i===0)s.push(a);else{for(let l=i-1;l>=0;l--){const u=o[l];if(u.level<a.level){(u.children??(u.children=[])).push(a);continue e}}s.push(a)}}return s},r_=(e,t=[])=>{let n;if(t.length){const r=e.cloneNode(!0);r.querySelectorAll(t.join(",")).forEach(o=>{o.remove()}),n=r.textContent||""}else n=e.textContent||"";return n.trim()},o_=({selector:e=[...new Array(6)].map((r,o)=>`[vp-content] h${o+1}`).join(","),levels:t=2,ignore:n=[]}={})=>{const r=Array.from(document.querySelectorAll(e)).filter(o=>o.id&&o.hasChildNodes()).map(o=>{const s=Number(o.tagName[1]);return{element:o,title:r_(o,n),link:`#${o.id}`,slug:o.id,level:s}});return n_(r,t)},vc=(e,t)=>{var r;const n=(r=Nr())==null?void 0:r.appContext.components;return n?e in n||nt(e)in n||Or(nt(e))in n:!1},s_=e=>new Promise(t=>{setTimeout(t,e)}),yc=e=>{const t=Fr();return R(()=>e[t.value]??{})},i_=()=>{const e=bg();return R(()=>Object.keys(e.value))},a_=e=>typeof e<"u",bc=(e,t)=>mt(e)&&e.startsWith(t),{keys:l_}=Object,Ec=e=>bc(e,"/");var u_={"/eng/":{backToTop:"Back to top"},"/":{backToTop:"Вернуться к началу"}};const c_=he({name:"BackToTop",setup(){const e=St(),t=yc(u_),n=vt(),{height:r}=zg(n),{height:o}=Gg(),{y:s}=qg(),i=R(()=>e.value.backToTop!==!1&&s.value>100),a=R(()=>s.value/(r.value-o.value)*100);return Ge(()=>{n.value=document.body}),()=>be(Zs,{name:"back-to-top"},()=>i.value?be("button",{type:"button",class:"vp-back-to-top-button","aria-label":t.value.backToTop,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})}},[be("span",{class:"vp-scroll-progress",role:"progressbar","aria-labelledby":"loadinglabel","aria-valuenow":a.value},be("svg",be("circle",{cx:"26",cy:"26",r:"24",fill:"none",stroke:"currentColor","stroke-width":"4","stroke-dasharray":`${Math.PI*a.value*.48} ${Math.PI*(100-a.value)*.48}`}))),be("div",{class:"back-to-top-icon"})]):null)}}),f_=Ut({rootComponents:[c_]}),d_=Object.freeze(Object.defineProperty({__proto__:null,default:f_},Symbol.toStringTag,{value:"Module"})),p_=/language-(shellscript|shell|bash|sh|zsh)/,h_=({delay:e=500,duration:t=2e3,locales:n,selector:r,showInMobile:o,ignoreSelector:s=[],transform:i})=>{const a=ci("(max-width: 419px)"),l=R(()=>!a.value||o),u=yc(n),f=jn(),c=y=>{var S;if(y.hasAttribute("copy-code"))return;const b=document.createElement("button");b.type="button",b.classList.add("vp-copy-code-button"),b.setAttribute("aria-label",u.value.copy),b.setAttribute("data-copied",u.value.copied),(S=y.parentElement)==null||S.insertBefore(b,y),y.setAttribute("copy-code","")};$e(()=>[f.value.path,l.value],async()=>{document.body.classList.toggle("no-copy-code",!l.value),l.value&&(await sn(),await s_(e),document.querySelectorAll(r.join(",")).forEach(c))},{immediate:!0});const{copy:d}=Fg({legacy:!0}),m=new WeakMap,v=async(y,b,S)=>{const g=b.cloneNode(!0);s.length&&g.querySelectorAll(s.join(",")).forEach(j=>{j.remove()}),i&&i(g);let E=g.textContent||"";if(p_.test(y.className)&&(E=E.replace(/^ *(\$|>) /gm,"")),await d(E),t<=0)return;S.classList.add("copied"),clearTimeout(m.get(S));const L=setTimeout(()=>{S.classList.remove("copied"),S.blur(),m.delete(S)},t);m.set(S,L)};lt("click",y=>{const b=y.target;if(l.value&&b.matches('div[class*="language-"] > button.vp-copy-code-button')){const S=b.parentElement,g=b.nextElementSibling;if(!S||!g)return;v(S,g,b)}})};var g_=[],__={"/eng/":{copy:"Copy code",copied:"Copied"},"/":{copy:"Скопировать код",copied:"Скопировано"}},m_=['[vp-content] div[class*="language-"] pre'];const v_=Ut({setup:()=>{h_({selector:m_,ignoreSelector:g_,locales:__,duration:2e3,delay:500,showInMobile:!1})}}),y_=Object.freeze(Object.defineProperty({__proto__:null,default:v_},Symbol.toStringTag,{value:"Module"})),b_=Ut({setup(){lt("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})}}),E_=Object.freeze(Object.defineProperty({__proto__:null,default:b_},Symbol.toStringTag,{value:"Module"}));/** - * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress - * @license MIT - */const Ra=(e,t)=>{e.classList.add(t)},Ia=(e,t)=>{e.classList.remove(t)},S_=e=>{var t;(t=e==null?void 0:e.parentNode)==null||t.removeChild(e)},ns=(e,t,n)=>e<t?t:e>n?n:e,La=e=>(-1+e)*100,A_=(()=>{const e=[],t=()=>{const n=e.shift();n&&n(t)};return n=>{e.push(n),e.length===1&&t()}})(),w_=e=>e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(t,n)=>n.toUpperCase()),Gr=(()=>{const e=["Webkit","O","Moz","ms"],t={},n=s=>{const{style:i}=document.body;if(s in i)return s;const a=s.charAt(0).toUpperCase()+s.slice(1);let l=e.length;for(;l--;){const u=`${e[l]}${a}`;if(u in i)return u}return s},r=s=>{const i=w_(s);return t[i]??(t[i]=n(i))},o=(s,i,a)=>{s.style[r(i)]=a};return(s,i)=>{for(const a in i){const l=i[a];Object.hasOwn(i,a)&&a_(l)&&o(s,a,l)}}})(),It={minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'<div class="bar" role="bar"></div>'},Pe={percent:null,isRendered:()=>!!document.getElementById("nprogress"),set:e=>{const{speed:t,easing:n}=It,r=Pe.isStarted(),o=ns(e,It.minimum,1);Pe.percent=o===1?null:o;const s=Pe.render(!r),i=s.querySelector(It.barSelector);return s.offsetWidth,A_(a=>{Gr(i,{transform:`translate3d(${La(o)}%,0,0)`,transition:`all ${t}ms ${n}`}),o===1?(Gr(s,{transition:"none",opacity:"1"}),s.offsetWidth,setTimeout(()=>{Gr(s,{transition:`all ${t}ms linear`,opacity:"0"}),setTimeout(()=>{Pe.remove(),a()},t)},t)):setTimeout(()=>{a()},t)}),Pe},isStarted:()=>typeof Pe.percent=="number",start:()=>{Pe.percent||Pe.set(0);const e=()=>{setTimeout(()=>{Pe.percent&&(Pe.trickle(),e())},It.trickleSpeed)};return e(),Pe},done:e=>!e&&!Pe.percent?Pe:Pe.increase(.3+.5*Math.random()).set(1),increase:e=>{let{percent:t}=Pe;return t?(t=ns(t+(typeof e=="number"?e:(1-t)*ns(Math.random()*t,.1,.95)),0,.994),Pe.set(t)):Pe.start()},trickle:()=>Pe.increase(Math.random()*It.trickleRate),render:e=>{if(Pe.isRendered())return document.getElementById("nprogress");Ra(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=It.template;const n=t.querySelector(It.barSelector),r=document.querySelector(It.parent),o=e?"-100":La(Pe.percent??0);return Gr(n,{transition:"all 0 linear",transform:`translate3d(${o}%,0,0)`}),r&&(r!==document.body&&Ra(r,"nprogress-custom-parent"),r.appendChild(t)),t},remove:()=>{Ia(document.documentElement,"nprogress-busy"),Ia(document.querySelector(It.parent),"nprogress-custom-parent"),S_(document.getElementById("nprogress"))}},C_=()=>{Ge(()=>{const e=An(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Pe.start()}),e.afterEach(n=>{t.add(n.path),Pe.done()})})},T_=Ut({setup(){C_()}}),k_=Object.freeze(Object.defineProperty({__proto__:null,default:T_},Symbol.toStringTag,{value:"Module"})),O_=({selector:e='div[class*="language-"].has-collapsed-lines > .collapsed-lines'}={})=>{lt("click",t=>{const n=t.target;if(n.matches(e)){const r=n.parentElement;r!=null&&r.classList.toggle("collapsed")&&r.scrollIntoView({block:"center",behavior:"instant"})}})},x_={setup(){O_()}},D_=Object.freeze(Object.defineProperty({__proto__:null,default:x_},Symbol.toStringTag,{value:"Module"})),P_="VUEPRESS_CODE_TAB_STORE",Yr=fi(P_,{}),R_=he({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=fe(e.active),r=vt([]),o=()=>{e.tabId&&(Yr.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u<r.value.length-1?u+1:0,r.value[n.value].focus()},i=(u=n.value)=>{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},a=(u,f)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=f):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),e.tabId&&(Yr.value[e.tabId]=e.data[n.value].id)},l=()=>{if(e.tabId){const u=e.data.findIndex(({id:f})=>Yr.value[e.tabId]===f);if(u!==-1)return u}return e.active};return Ge(()=>{n.value=l(),$e(()=>Yr.value[e.tabId],(u,f)=>{if(e.tabId&&u!==f){const c=e.data.findIndex(({id:p})=>p===u);c!==-1&&(n.value=c)}})}),()=>e.data.length?be("div",{class:"vp-code-tabs"},[be("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:u},f)=>{const c=f===n.value;return be("button",{type:"button",ref:p=>{p&&(r.value[f]=p)},class:["vp-code-tab-nav",{active:c}],role:"tab","aria-controls":`codetab-${e.id}-${f}`,"aria-selected":c,onClick:()=>{n.value=f,o()},onKeydown:p=>{a(p,f)}},t[`title${f}`]({value:u,isActive:c}))})),e.data.map(({id:u},f)=>{const c=f===n.value;return be("div",{class:["vp-code-tab",{active:c}],id:`codetab-${e.id}-${f}`,role:"tabpanel","aria-expanded":c},[be("div",{class:"vp-code-tab-title"},t[`title${f}`]({value:u,isActive:c})),t[`tab${f}`]({value:u,isActive:c})])})]):null}}),I_="VUEPRESS_TAB_STORE",rs=fi(I_,{}),L_=he({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=fe(e.active),r=vt([]),o=()=>{e.tabId&&(rs.value[e.tabId]=e.data[n.value].id)},s=(u=n.value)=>{n.value=u<r.value.length-1?u+1:0,r.value[n.value].focus()},i=(u=n.value)=>{n.value=u>0?u-1:r.value.length-1,r.value[n.value].focus()},a=(u,f)=>{u.key===" "||u.key==="Enter"?(u.preventDefault(),n.value=f):u.key==="ArrowRight"?(u.preventDefault(),s()):u.key==="ArrowLeft"&&(u.preventDefault(),i()),o()},l=()=>{if(e.tabId){const u=e.data.findIndex(({id:f})=>rs.value[e.tabId]===f);if(u!==-1)return u}return e.active};return Ge(()=>{n.value=l(),$e(()=>rs.value[e.tabId],(u,f)=>{if(e.tabId&&u!==f){const c=e.data.findIndex(({id:p})=>p===u);c!==-1&&(n.value=c)}})}),()=>e.data.length?be("div",{class:"vp-tabs"},[be("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:u},f)=>{const c=f===n.value;return be("button",{type:"button",ref:p=>{p&&(r.value[f]=p)},class:["vp-tab-nav",{active:c}],role:"tab","aria-controls":`tab-${e.id}-${f}`,"aria-selected":c,onClick:()=>{n.value=f,o()},onKeydown:p=>{a(p,f)}},t[`title${f}`]({value:u,isActive:c}))})),e.data.map(({id:u},f)=>{const c=f===n.value;return be("div",{class:["vp-tab",{active:c}],id:`tab-${e.id}-${f}`,role:"tabpanel","aria-expanded":c},[be("div",{class:"vp-tab-title"},t[`title${f}`]({value:u,isActive:c})),t[`tab${f}`]({value:u,isActive:c})])})]):null}}),N_={enhance:({app:e})=>{e.component("CodeTabs",R_),e.component("Tabs",L_)}},V_=Object.freeze(Object.defineProperty({__proto__:null,default:N_},Symbol.toStringTag,{value:"Module"}));var M_=Object.create,Sc=Object.defineProperty,F_=Object.getOwnPropertyDescriptor,di=Object.getOwnPropertyNames,B_=Object.getPrototypeOf,$_=Object.prototype.hasOwnProperty,H_=(e,t)=>function(){return e&&(t=(0,e[di(e)[0]])(e=0)),t},U_=(e,t)=>function(){return t||(0,e[di(e)[0]])((t={exports:{}}).exports,t),t.exports},j_=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of di(t))!$_.call(e,o)&&o!==n&&Sc(e,o,{get:()=>t[o],enumerable:!(r=F_(t,o))||r.enumerable});return e},K_=(e,t,n)=>(n=e!=null?M_(B_(e)):{},j_(Sc(n,"default",{value:e,enumerable:!0}),e)),Br=H_({"../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.5__@swc+core@1.5.29_jiti@1.21.6__ldnw4a7r4ccknnz6q542psuydy/node_modules/tsup/assets/esm_shims.js"(){}}),W_=U_({"../../node_modules/.pnpm/rfdc@1.4.1/node_modules/rfdc/index.js"(e,t){Br(),t.exports=r;function n(s){return s instanceof Buffer?Buffer.from(s):new s.constructor(s.buffer.slice(),s.byteOffset,s.length)}function r(s){if(s=s||{},s.circles)return o(s);const i=new Map;if(i.set(Date,c=>new Date(c)),i.set(Map,(c,p)=>new Map(l(Array.from(c),p))),i.set(Set,(c,p)=>new Set(l(Array.from(c),p))),s.constructorHandlers)for(const c of s.constructorHandlers)i.set(c[0],c[1]);let a=null;return s.proto?f:u;function l(c,p){const d=Object.keys(c),m=new Array(d.length);for(let v=0;v<d.length;v++){const y=d[v],b=c[y];typeof b!="object"||b===null?m[y]=b:b.constructor!==Object&&(a=i.get(b.constructor))?m[y]=a(b,p):ArrayBuffer.isView(b)?m[y]=n(b):m[y]=p(b)}return m}function u(c){if(typeof c!="object"||c===null)return c;if(Array.isArray(c))return l(c,u);if(c.constructor!==Object&&(a=i.get(c.constructor)))return a(c,u);const p={};for(const d in c){if(Object.hasOwnProperty.call(c,d)===!1)continue;const m=c[d];typeof m!="object"||m===null?p[d]=m:m.constructor!==Object&&(a=i.get(m.constructor))?p[d]=a(m,u):ArrayBuffer.isView(m)?p[d]=n(m):p[d]=u(m)}return p}function f(c){if(typeof c!="object"||c===null)return c;if(Array.isArray(c))return l(c,f);if(c.constructor!==Object&&(a=i.get(c.constructor)))return a(c,f);const p={};for(const d in c){const m=c[d];typeof m!="object"||m===null?p[d]=m:m.constructor!==Object&&(a=i.get(m.constructor))?p[d]=a(m,f):ArrayBuffer.isView(m)?p[d]=n(m):p[d]=f(m)}return p}}function o(s){const i=[],a=[],l=new Map;if(l.set(Date,d=>new Date(d)),l.set(Map,(d,m)=>new Map(f(Array.from(d),m))),l.set(Set,(d,m)=>new Set(f(Array.from(d),m))),s.constructorHandlers)for(const d of s.constructorHandlers)l.set(d[0],d[1]);let u=null;return s.proto?p:c;function f(d,m){const v=Object.keys(d),y=new Array(v.length);for(let b=0;b<v.length;b++){const S=v[b],g=d[S];if(typeof g!="object"||g===null)y[S]=g;else if(g.constructor!==Object&&(u=l.get(g.constructor)))y[S]=u(g,m);else if(ArrayBuffer.isView(g))y[S]=n(g);else{const E=i.indexOf(g);E!==-1?y[S]=a[E]:y[S]=m(g)}}return y}function c(d){if(typeof d!="object"||d===null)return d;if(Array.isArray(d))return f(d,c);if(d.constructor!==Object&&(u=l.get(d.constructor)))return u(d,c);const m={};i.push(d),a.push(m);for(const v in d){if(Object.hasOwnProperty.call(d,v)===!1)continue;const y=d[v];if(typeof y!="object"||y===null)m[v]=y;else if(y.constructor!==Object&&(u=l.get(y.constructor)))m[v]=u(y,c);else if(ArrayBuffer.isView(y))m[v]=n(y);else{const b=i.indexOf(y);b!==-1?m[v]=a[b]:m[v]=c(y)}}return i.pop(),a.pop(),m}function p(d){if(typeof d!="object"||d===null)return d;if(Array.isArray(d))return f(d,p);if(d.constructor!==Object&&(u=l.get(d.constructor)))return u(d,p);const m={};i.push(d),a.push(m);for(const v in d){const y=d[v];if(typeof y!="object"||y===null)m[v]=y;else if(y.constructor!==Object&&(u=l.get(y.constructor)))m[v]=u(y,p);else if(ArrayBuffer.isView(y))m[v]=n(y);else{const b=i.indexOf(y);b!==-1?m[v]=a[b]:m[v]=p(y)}}return i.pop(),a.pop(),m}}}});Br();Br();Br();var z_=typeof navigator<"u",z=typeof window<"u"?window:typeof globalThis<"u"?globalThis:typeof global<"u"?global:{};typeof z.chrome<"u"&&z.chrome.devtools;z_&&(z.self,z.top);typeof navigator<"u"&&navigator.userAgent.toLowerCase().includes("electron");Br();var q_=K_(W_()),G_=/(?:^|[-_/])(\w)/g;function Y_(e,t){return t?t.toUpperCase():""}function J_(e){return e&&`${e}`.replace(G_,Y_)}function X_(e,t){const n=e.replace(/^[a-z]:/i,"").replace(/\\/g,"/"),r=n.lastIndexOf("/"),o=n.substring(r+1);{const s=o.lastIndexOf(t);return o.substring(0,s)}}var Na=(0,q_.default)({circles:!0});const Q_={trailing:!0};function Lo(e,t=25,n={}){if(n={...Q_,...n},!Number.isFinite(t))throw new TypeError("Expected `wait` to be a finite number");let r,o,s=[],i,a;const l=(u,f)=>(i=Z_(e,u,f),i.finally(()=>{if(i=null,n.trailing&&a&&!o){const c=l(u,a);return a=null,c}}),i);return function(...u){return i?(n.trailing&&(a=u),i):new Promise(f=>{const c=!o&&n.leading;clearTimeout(o),o=setTimeout(()=>{o=null;const p=n.leading?r:l(this,u);for(const d of s)d(p);s=[]},t),c?(r=l(this,u),f(r)):s.push(f)})}}async function Z_(e,t,n){return await e.apply(t,n)}function ws(e,t={},n){for(const r in e){const o=e[r],s=n?`${n}:${r}`:r;typeof o=="object"&&o!==null?ws(o,t,s):typeof o=="function"&&(t[s]=o)}return t}const em={run:e=>e()},tm=()=>em,Ac=typeof console.createTask<"u"?console.createTask:tm;function nm(e,t){const n=t.shift(),r=Ac(n);return e.reduce((o,s)=>o.then(()=>r.run(()=>s(...t))),Promise.resolve())}function rm(e,t){const n=t.shift(),r=Ac(n);return Promise.all(e.map(o=>r.run(()=>o(...t))))}function os(e,t){for(const n of[...e])n(t)}class om{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const o=t;let s;for(;this._deprecatedHooks[t];)s=this._deprecatedHooks[t],t=s.to;if(s&&!r.allowDeprecated){let i=s.message;i||(i=`${o} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,o=(...s)=>(typeof r=="function"&&r(),r=void 0,o=void 0,n(...s));return r=this.hook(t,o),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const o of r)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=ws(t),r=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{for(const o of r.splice(0,r.length))o()}}removeHooks(t){const n=ws(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(nm,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(rm,t,...n)}callHookWith(t,n,...r){const o=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&os(this._before,o);const s=t(n in this._hooks?[...this._hooks[n]]:[],r);return s instanceof Promise?s.finally(()=>{this._after&&o&&os(this._after,o)}):(this._after&&o&&os(this._after,o),s)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function wc(){return new om}var sm=Object.create,Cc=Object.defineProperty,im=Object.getOwnPropertyDescriptor,pi=Object.getOwnPropertyNames,am=Object.getPrototypeOf,lm=Object.prototype.hasOwnProperty,um=(e,t)=>function(){return e&&(t=(0,e[pi(e)[0]])(e=0)),t},Tc=(e,t)=>function(){return t||(0,e[pi(e)[0]])((t={exports:{}}).exports,t),t.exports},cm=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of pi(t))!lm.call(e,o)&&o!==n&&Cc(e,o,{get:()=>t[o],enumerable:!(r=im(t,o))||r.enumerable});return e},fm=(e,t,n)=>(n=e!=null?sm(am(e)):{},cm(Cc(n,"default",{value:e,enumerable:!0}),e)),x=um({"../../node_modules/.pnpm/tsup@8.3.0_@microsoft+api-extractor@7.43.0_@types+node@20.16.5__@swc+core@1.5.29_jiti@1.21.6__ldnw4a7r4ccknnz6q542psuydy/node_modules/tsup/assets/esm_shims.js"(){}}),dm=Tc({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/lib/speakingurl.js"(e,t){x(),function(n){var r={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"Ae",Å:"A",Æ:"AE",Ç:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"Oe",Ő:"O",Ø:"O",Ù:"U",Ú:"U",Û:"U",Ü:"Ue",Ű:"U",Ý:"Y",Þ:"TH",ß:"ss",à:"a",á:"a",â:"a",ã:"a",ä:"ae",å:"a",æ:"ae",ç:"c",è:"e",é:"e",ê:"e",ë:"e",ì:"i",í:"i",î:"i",ï:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"oe",ő:"o",ø:"o",ù:"u",ú:"u",û:"u",ü:"ue",ű:"u",ý:"y",þ:"th",ÿ:"y","ẞ":"SS",ا:"a",أ:"a",إ:"i",آ:"aa",ؤ:"u",ئ:"e",ء:"a",ب:"b",ت:"t",ث:"th",ج:"j",ح:"h",خ:"kh",د:"d",ذ:"th",ر:"r",ز:"z",س:"s",ش:"sh",ص:"s",ض:"dh",ط:"t",ظ:"z",ع:"a",غ:"gh",ف:"f",ق:"q",ك:"k",ل:"l",م:"m",ن:"n",ه:"h",و:"w",ي:"y",ى:"a",ة:"h",ﻻ:"la",ﻷ:"laa",ﻹ:"lai",ﻵ:"laa",گ:"g",چ:"ch",پ:"p",ژ:"zh",ک:"k",ی:"y","َ":"a","ً":"an","ِ":"e","ٍ":"en","ُ":"u","ٌ":"on","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9",က:"k",ခ:"kh",ဂ:"g",ဃ:"ga",င:"ng",စ:"s",ဆ:"sa",ဇ:"z","စျ":"za",ည:"ny",ဋ:"t",ဌ:"ta",ဍ:"d",ဎ:"da",ဏ:"na",တ:"t",ထ:"ta",ဒ:"d",ဓ:"da",န:"n",ပ:"p",ဖ:"pa",ဗ:"b",ဘ:"ba",မ:"m",ယ:"y",ရ:"ya",လ:"l",ဝ:"w",သ:"th",ဟ:"h",ဠ:"la",အ:"a","ြ":"y","ျ":"ya","ွ":"w","ြွ":"yw","ျွ":"ywa","ှ":"h",ဧ:"e","၏":"-e",ဣ:"i",ဤ:"-i",ဉ:"u",ဦ:"-u",ဩ:"aw","သြော":"aw",ဪ:"aw","၀":"0","၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","္":"","့":"","း":"",č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z",ހ:"h",ށ:"sh",ނ:"n",ރ:"r",ބ:"b",ޅ:"lh",ކ:"k",އ:"a",ވ:"v",މ:"m",ފ:"f",ދ:"dh",ތ:"th",ލ:"l",ގ:"g",ޏ:"gn",ސ:"s",ޑ:"d",ޒ:"z",ޓ:"t",ޔ:"y",ޕ:"p",ޖ:"j",ޗ:"ch",ޘ:"tt",ޙ:"hh",ޚ:"kh",ޛ:"th",ޜ:"z",ޝ:"sh",ޞ:"s",ޟ:"d",ޠ:"t",ޡ:"z",ޢ:"a",ޣ:"gh",ޤ:"q",ޥ:"w","ަ":"a","ާ":"aa","ި":"i","ީ":"ee","ު":"u","ޫ":"oo","ެ":"e","ޭ":"ey","ޮ":"o","ޯ":"oa","ް":"",ა:"a",ბ:"b",გ:"g",დ:"d",ე:"e",ვ:"v",ზ:"z",თ:"t",ი:"i",კ:"k",ლ:"l",მ:"m",ნ:"n",ო:"o",პ:"p",ჟ:"zh",რ:"r",ს:"s",ტ:"t",უ:"u",ფ:"p",ქ:"k",ღ:"gh",ყ:"q",შ:"sh",ჩ:"ch",ც:"ts",ძ:"dz",წ:"ts",ჭ:"ch",ხ:"kh",ჯ:"j",ჰ:"h",α:"a",β:"v",γ:"g",δ:"d",ε:"e",ζ:"z",η:"i",θ:"th",ι:"i",κ:"k",λ:"l",μ:"m",ν:"n",ξ:"ks",ο:"o",π:"p",ρ:"r",σ:"s",τ:"t",υ:"y",φ:"f",χ:"x",ψ:"ps",ω:"o",ά:"a",έ:"e",ί:"i",ό:"o",ύ:"y",ή:"i",ώ:"o",ς:"s",ϊ:"i",ΰ:"y",ϋ:"y",ΐ:"i",Α:"A",Β:"B",Γ:"G",Δ:"D",Ε:"E",Ζ:"Z",Η:"I",Θ:"TH",Ι:"I",Κ:"K",Λ:"L",Μ:"M",Ν:"N",Ξ:"KS",Ο:"O",Π:"P",Ρ:"R",Σ:"S",Τ:"T",Υ:"Y",Φ:"F",Χ:"X",Ψ:"PS",Ω:"O",Ά:"A",Έ:"E",Ί:"I",Ό:"O",Ύ:"Y",Ή:"I",Ώ:"O",Ϊ:"I",Ϋ:"Y",ā:"a",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",ū:"u",Ā:"A",Ē:"E",Ģ:"G",Ī:"I",Ķ:"k",Ļ:"L",Ņ:"N",Ū:"U",Ќ:"Kj",ќ:"kj",Љ:"Lj",љ:"lj",Њ:"Nj",њ:"nj",Тс:"Ts",тс:"ts",ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"E",Ł:"L",Ń:"N",Ś:"S",Ź:"Z",Ż:"Z",Є:"Ye",І:"I",Ї:"Yi",Ґ:"G",є:"ye",і:"i",ї:"yi",ґ:"g",ă:"a",Ă:"A",ș:"s",Ș:"S",ț:"t",Ț:"T",ţ:"t",Ţ:"T",а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"yo",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"c",ч:"ch",ш:"sh",щ:"sh",ъ:"",ы:"y",ь:"",э:"e",ю:"yu",я:"ya",А:"A",Б:"B",В:"V",Г:"G",Д:"D",Е:"E",Ё:"Yo",Ж:"Zh",З:"Z",И:"I",Й:"I",К:"K",Л:"L",М:"M",Н:"N",О:"O",П:"P",Р:"R",С:"S",Т:"T",У:"U",Ф:"F",Х:"Kh",Ц:"C",Ч:"Ch",Ш:"Sh",Щ:"Sh",Ъ:"",Ы:"Y",Ь:"",Э:"E",Ю:"Yu",Я:"Ya",ђ:"dj",ј:"j",ћ:"c",џ:"dz",Ђ:"Dj",Ј:"j",Ћ:"C",Џ:"Dz",ľ:"l",ĺ:"l",ŕ:"r",Ľ:"L",Ĺ:"L",Ŕ:"R",ş:"s",Ş:"S",ı:"i",İ:"I",ğ:"g",Ğ:"G",ả:"a",Ả:"A",ẳ:"a",Ẳ:"A",ẩ:"a",Ẩ:"A",đ:"d",Đ:"D",ẹ:"e",Ẹ:"E",ẽ:"e",Ẽ:"E",ẻ:"e",Ẻ:"E",ế:"e",Ế:"E",ề:"e",Ề:"E",ệ:"e",Ệ:"E",ễ:"e",Ễ:"E",ể:"e",Ể:"E",ỏ:"o",ọ:"o",Ọ:"o",ố:"o",Ố:"O",ồ:"o",Ồ:"O",ổ:"o",Ổ:"O",ộ:"o",Ộ:"O",ỗ:"o",Ỗ:"O",ơ:"o",Ơ:"O",ớ:"o",Ớ:"O",ờ:"o",Ờ:"O",ợ:"o",Ợ:"O",ỡ:"o",Ỡ:"O",Ở:"o",ở:"o",ị:"i",Ị:"I",ĩ:"i",Ĩ:"I",ỉ:"i",Ỉ:"i",ủ:"u",Ủ:"U",ụ:"u",Ụ:"U",ũ:"u",Ũ:"U",ư:"u",Ư:"U",ứ:"u",Ứ:"U",ừ:"u",Ừ:"U",ự:"u",Ự:"U",ữ:"u",Ữ:"U",ử:"u",Ử:"ư",ỷ:"y",Ỷ:"y",ỳ:"y",Ỳ:"Y",ỵ:"y",Ỵ:"Y",ỹ:"y",Ỹ:"Y",ạ:"a",Ạ:"A",ấ:"a",Ấ:"A",ầ:"a",Ầ:"A",ậ:"a",Ậ:"A",ẫ:"a",Ẫ:"A",ắ:"a",Ắ:"A",ằ:"a",Ằ:"A",ặ:"a",Ặ:"A",ẵ:"a",Ẵ:"A","⓪":"0","①":"1","②":"2","③":"3","④":"4","⑤":"5","⑥":"6","⑦":"7","⑧":"8","⑨":"9","⑩":"10","⑪":"11","⑫":"12","⑬":"13","⑭":"14","⑮":"15","⑯":"16","⑰":"17","⑱":"18","⑲":"18","⑳":"18","⓵":"1","⓶":"2","⓷":"3","⓸":"4","⓹":"5","⓺":"6","⓻":"7","⓼":"8","⓽":"9","⓾":"10","⓿":"0","⓫":"11","⓬":"12","⓭":"13","⓮":"14","⓯":"15","⓰":"16","⓱":"17","⓲":"18","⓳":"19","⓴":"20","Ⓐ":"A","Ⓑ":"B","Ⓒ":"C","Ⓓ":"D","Ⓔ":"E","Ⓕ":"F","Ⓖ":"G","Ⓗ":"H","Ⓘ":"I","Ⓙ":"J","Ⓚ":"K","Ⓛ":"L","Ⓜ":"M","Ⓝ":"N","Ⓞ":"O","Ⓟ":"P","Ⓠ":"Q","Ⓡ":"R","Ⓢ":"S","Ⓣ":"T","Ⓤ":"U","Ⓥ":"V","Ⓦ":"W","Ⓧ":"X","Ⓨ":"Y","Ⓩ":"Z","ⓐ":"a","ⓑ":"b","ⓒ":"c","ⓓ":"d","ⓔ":"e","ⓕ":"f","ⓖ":"g","ⓗ":"h","ⓘ":"i","ⓙ":"j","ⓚ":"k","ⓛ":"l","ⓜ":"m","ⓝ":"n","ⓞ":"o","ⓟ":"p","ⓠ":"q","ⓡ":"r","ⓢ":"s","ⓣ":"t","ⓤ":"u","ⓦ":"v","ⓥ":"w","ⓧ":"x","ⓨ":"y","ⓩ":"z","“":'"',"”":'"',"‘":"'","’":"'","∂":"d",ƒ:"f","™":"(TM)","©":"(C)",œ:"oe",Œ:"OE","®":"(R)","†":"+","℠":"(SM)","…":"...","˚":"o",º:"o",ª:"a","•":"*","၊":",","။":".",$:"USD","€":"EUR","₢":"BRN","₣":"FRF","£":"GBP","₤":"ITL","₦":"NGN","₧":"ESP","₩":"KRW","₪":"ILS","₫":"VND","₭":"LAK","₮":"MNT","₯":"GRD","₱":"ARS","₲":"PYG","₳":"ARA","₴":"UAH","₵":"GHS","¢":"cent","¥":"CNY",元:"CNY",円:"YEN","﷼":"IRR","₠":"EWE","฿":"THB","₨":"INR","₹":"INR","₰":"PF","₺":"TRY","؋":"AFN","₼":"AZN",лв:"BGN","៛":"KHR","₡":"CRC","₸":"KZT",ден:"MKD",zł:"PLN","₽":"RUB","₾":"GEL"},o=["်","ް"],s={"ာ":"a","ါ":"a","ေ":"e","ဲ":"e","ိ":"i","ီ":"i","ို":"o","ု":"u","ူ":"u","ေါင်":"aung","ော":"aw","ော်":"aw","ေါ":"aw","ေါ်":"aw","်":"်","က်":"et","ိုက်":"aik","ောက်":"auk","င်":"in","ိုင်":"aing","ောင်":"aung","စ်":"it","ည်":"i","တ်":"at","ိတ်":"eik","ုတ်":"ok","ွတ်":"ut","ေတ်":"it","ဒ်":"d","ိုဒ်":"ok","ုဒ်":"ait","န်":"an","ာန်":"an","ိန်":"ein","ုန်":"on","ွန်":"un","ပ်":"at","ိပ်":"eik","ုပ်":"ok","ွပ်":"ut","န်ုပ်":"nub","မ်":"an","ိမ်":"ein","ုမ်":"on","ွမ်":"un","ယ်":"e","ိုလ်":"ol","ဉ်":"in","ံ":"an","ိံ":"ein","ုံ":"on","ައް":"ah","ަށް":"ah"},i={en:{},az:{ç:"c",ə:"e",ğ:"g",ı:"i",ö:"o",ş:"s",ü:"u",Ç:"C",Ə:"E",Ğ:"G",İ:"I",Ö:"O",Ş:"S",Ü:"U"},cs:{č:"c",ď:"d",ě:"e",ň:"n",ř:"r",š:"s",ť:"t",ů:"u",ž:"z",Č:"C",Ď:"D",Ě:"E",Ň:"N",Ř:"R",Š:"S",Ť:"T",Ů:"U",Ž:"Z"},fi:{ä:"a",Ä:"A",ö:"o",Ö:"O"},hu:{ä:"a",Ä:"A",ö:"o",Ö:"O",ü:"u",Ü:"U",ű:"u",Ű:"U"},lt:{ą:"a",č:"c",ę:"e",ė:"e",į:"i",š:"s",ų:"u",ū:"u",ž:"z",Ą:"A",Č:"C",Ę:"E",Ė:"E",Į:"I",Š:"S",Ų:"U",Ū:"U"},lv:{ā:"a",č:"c",ē:"e",ģ:"g",ī:"i",ķ:"k",ļ:"l",ņ:"n",š:"s",ū:"u",ž:"z",Ā:"A",Č:"C",Ē:"E",Ģ:"G",Ī:"i",Ķ:"k",Ļ:"L",Ņ:"N",Š:"S",Ū:"u",Ž:"Z"},pl:{ą:"a",ć:"c",ę:"e",ł:"l",ń:"n",ó:"o",ś:"s",ź:"z",ż:"z",Ą:"A",Ć:"C",Ę:"e",Ł:"L",Ń:"N",Ó:"O",Ś:"S",Ź:"Z",Ż:"Z"},sv:{ä:"a",Ä:"A",ö:"o",Ö:"O"},sk:{ä:"a",Ä:"A"},sr:{љ:"lj",њ:"nj",Љ:"Lj",Њ:"Nj",đ:"dj",Đ:"Dj"},tr:{Ü:"U",Ö:"O",ü:"u",ö:"o"}},a={ar:{"∆":"delta","∞":"la-nihaya","♥":"hob","&":"wa","|":"aw","<":"aqal-men",">":"akbar-men","∑":"majmou","¤":"omla"},az:{},ca:{"∆":"delta","∞":"infinit","♥":"amor","&":"i","|":"o","<":"menys que",">":"mes que","∑":"suma dels","¤":"moneda"},cs:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"nebo","<":"mensi nez",">":"vetsi nez","∑":"soucet","¤":"mena"},de:{"∆":"delta","∞":"unendlich","♥":"Liebe","&":"und","|":"oder","<":"kleiner als",">":"groesser als","∑":"Summe von","¤":"Waehrung"},dv:{"∆":"delta","∞":"kolunulaa","♥":"loabi","&":"aai","|":"noonee","<":"ah vure kuda",">":"ah vure bodu","∑":"jumula","¤":"faisaa"},en:{"∆":"delta","∞":"infinity","♥":"love","&":"and","|":"or","<":"less than",">":"greater than","∑":"sum","¤":"currency"},es:{"∆":"delta","∞":"infinito","♥":"amor","&":"y","|":"u","<":"menos que",">":"mas que","∑":"suma de los","¤":"moneda"},fa:{"∆":"delta","∞":"bi-nahayat","♥":"eshgh","&":"va","|":"ya","<":"kamtar-az",">":"bishtar-az","∑":"majmooe","¤":"vahed"},fi:{"∆":"delta","∞":"aarettomyys","♥":"rakkaus","&":"ja","|":"tai","<":"pienempi kuin",">":"suurempi kuin","∑":"summa","¤":"valuutta"},fr:{"∆":"delta","∞":"infiniment","♥":"Amour","&":"et","|":"ou","<":"moins que",">":"superieure a","∑":"somme des","¤":"monnaie"},ge:{"∆":"delta","∞":"usasruloba","♥":"siqvaruli","&":"da","|":"an","<":"naklebi",">":"meti","∑":"jami","¤":"valuta"},gr:{},hu:{"∆":"delta","∞":"vegtelen","♥":"szerelem","&":"es","|":"vagy","<":"kisebb mint",">":"nagyobb mint","∑":"szumma","¤":"penznem"},it:{"∆":"delta","∞":"infinito","♥":"amore","&":"e","|":"o","<":"minore di",">":"maggiore di","∑":"somma","¤":"moneta"},lt:{"∆":"delta","∞":"begalybe","♥":"meile","&":"ir","|":"ar","<":"maziau nei",">":"daugiau nei","∑":"suma","¤":"valiuta"},lv:{"∆":"delta","∞":"bezgaliba","♥":"milestiba","&":"un","|":"vai","<":"mazak neka",">":"lielaks neka","∑":"summa","¤":"valuta"},my:{"∆":"kwahkhyaet","∞":"asaonasme","♥":"akhyait","&":"nhin","|":"tho","<":"ngethaw",">":"kyithaw","∑":"paungld","¤":"ngwekye"},mk:{},nl:{"∆":"delta","∞":"oneindig","♥":"liefde","&":"en","|":"of","<":"kleiner dan",">":"groter dan","∑":"som","¤":"valuta"},pl:{"∆":"delta","∞":"nieskonczonosc","♥":"milosc","&":"i","|":"lub","<":"mniejsze niz",">":"wieksze niz","∑":"suma","¤":"waluta"},pt:{"∆":"delta","∞":"infinito","♥":"amor","&":"e","|":"ou","<":"menor que",">":"maior que","∑":"soma","¤":"moeda"},ro:{"∆":"delta","∞":"infinit","♥":"dragoste","&":"si","|":"sau","<":"mai mic ca",">":"mai mare ca","∑":"suma","¤":"valuta"},ru:{"∆":"delta","∞":"beskonechno","♥":"lubov","&":"i","|":"ili","<":"menshe",">":"bolshe","∑":"summa","¤":"valjuta"},sk:{"∆":"delta","∞":"nekonecno","♥":"laska","&":"a","|":"alebo","<":"menej ako",">":"viac ako","∑":"sucet","¤":"mena"},sr:{},tr:{"∆":"delta","∞":"sonsuzluk","♥":"ask","&":"ve","|":"veya","<":"kucuktur",">":"buyuktur","∑":"toplam","¤":"para birimi"},uk:{"∆":"delta","∞":"bezkinechnist","♥":"lubov","&":"i","|":"abo","<":"menshe",">":"bilshe","∑":"suma","¤":"valjuta"},vn:{"∆":"delta","∞":"vo cuc","♥":"yeu","&":"va","|":"hoac","<":"nho hon",">":"lon hon","∑":"tong","¤":"tien te"}},l=[";","?",":","@","&","=","+","$",",","/"].join(""),u=[";","?",":","@","&","=","+","$",","].join(""),f=[".","!","~","*","'","(",")"].join(""),c=function(y,b){var S="-",g="",E="",L=!0,j={},Y,Q,B,w,N,k,ee,le,Ae,q,F,J,ge,Ye,Fe="";if(typeof y!="string")return"";if(typeof b=="string"&&(S=b),ee=a.en,le=i.en,typeof b=="object"){Y=b.maintainCase||!1,j=b.custom&&typeof b.custom=="object"?b.custom:j,B=+b.truncate>1&&b.truncate||!1,w=b.uric||!1,N=b.uricNoSlash||!1,k=b.mark||!1,L=!(b.symbols===!1||b.lang===!1),S=b.separator||S,w&&(Fe+=l),N&&(Fe+=u),k&&(Fe+=f),ee=b.lang&&a[b.lang]&&L?a[b.lang]:L?a.en:{},le=b.lang&&i[b.lang]?i[b.lang]:b.lang===!1||b.lang===!0?{}:i.en,b.titleCase&&typeof b.titleCase.length=="number"&&Array.prototype.toString.call(b.titleCase)?(b.titleCase.forEach(function(we){j[we+""]=we+""}),Q=!0):Q=!!b.titleCase,b.custom&&typeof b.custom.length=="number"&&Array.prototype.toString.call(b.custom)&&b.custom.forEach(function(we){j[we+""]=we+""}),Object.keys(j).forEach(function(we){var ut;we.length>1?ut=new RegExp("\\b"+d(we)+"\\b","gi"):ut=new RegExp(d(we),"gi"),y=y.replace(ut,j[we])});for(F in j)Fe+=F}for(Fe+=S,Fe=d(Fe),y=y.replace(/(^\s+|\s+$)/g,""),ge=!1,Ye=!1,q=0,J=y.length;q<J;q++)F=y[q],m(F,j)?ge=!1:le[F]?(F=ge&&le[F].match(/[A-Za-z0-9]/)?" "+le[F]:le[F],ge=!1):F in r?(q+1<J&&o.indexOf(y[q+1])>=0?(E+=F,F=""):Ye===!0?(F=s[E]+r[F],E=""):F=ge&&r[F].match(/[A-Za-z0-9]/)?" "+r[F]:r[F],ge=!1,Ye=!1):F in s?(E+=F,F="",q===J-1&&(F=s[E]),Ye=!0):ee[F]&&!(w&&l.indexOf(F)!==-1)&&!(N&&u.indexOf(F)!==-1)?(F=ge||g.substr(-1).match(/[A-Za-z0-9]/)?S+ee[F]:ee[F],F+=y[q+1]!==void 0&&y[q+1].match(/[A-Za-z0-9]/)?S:"",ge=!0):(Ye===!0?(F=s[E]+F,E="",Ye=!1):ge&&(/[A-Za-z0-9]/.test(F)||g.substr(-1).match(/A-Za-z0-9]/))&&(F=" "+F),ge=!1),g+=F.replace(new RegExp("[^\\w\\s"+Fe+"_-]","g"),S);return Q&&(g=g.replace(/(\w)(\S*)/g,function(we,ut,Dt){var jt=ut.toUpperCase()+(Dt!==null?Dt:"");return Object.keys(j).indexOf(jt.toLowerCase())<0?jt:jt.toLowerCase()})),g=g.replace(/\s+/g,S).replace(new RegExp("\\"+S+"+","g"),S).replace(new RegExp("(^\\"+S+"+|\\"+S+"+$)","g"),""),B&&g.length>B&&(Ae=g.charAt(B)===S,g=g.slice(0,B),Ae||(g=g.slice(0,g.lastIndexOf(S)))),!Y&&!Q&&(g=g.toLowerCase()),g},p=function(y){return function(S){return c(S,y)}},d=function(y){return y.replace(/[-\\^$*+?.()|[\]{}\/]/g,"\\$&")},m=function(v,y){for(var b in y)if(y[b]===v)return!0};if(typeof t<"u"&&t.exports)t.exports=c,t.exports.createSlug=p;else if(typeof define<"u"&&define.amd)define([],function(){return c});else try{if(n.getSlug||n.createSlug)throw"speakingurl: globals exists /(getSlug|createSlug)/";n.getSlug=c,n.createSlug=p}catch{}}(e)}}),pm=Tc({"../../node_modules/.pnpm/speakingurl@14.0.1/node_modules/speakingurl/index.js"(e,t){x(),t.exports=dm()}});x();x();x();x();x();x();x();function hm(e){return!!(e&&e.__v_isReadonly)}function kc(e){return hm(e)?kc(e.__v_raw):!!(e&&e.__v_isReactive)}function ss(e){return!!(e&&e.__v_isRef===!0)}function nr(e){const t=e&&e.__v_raw;return t?nr(t):e}var gm=Symbol.for("v-fgt");x();function _m(e){return e.name||e._componentTag||e.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__||e.__name}function mm(e){const t=e.__file;if(t)return J_(X_(t,".vue"))}function Va(e,t){return e.type.__VUE_DEVTOOLS_COMPONENT_GUSSED_NAME__=t,t}function hi(e){if(e.__VUE_DEVTOOLS_NEXT_APP_RECORD__)return e.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(e.root)return e.appContext.app.__VUE_DEVTOOLS_NEXT_APP_RECORD__}async function vm(e){const{app:t,uid:n,instance:r}=e;try{if(r.__VUE_DEVTOOLS_NEXT_UID__)return r.__VUE_DEVTOOLS_NEXT_UID__;const o=await hi(t);if(!o)return null;const s=o.rootInstance===r;return`${o.id}:${s?"root":n}`}catch{}}function Oc(e){var t;return((t=e.subTree)==null?void 0:t.type)===gm}function No(e){var t,n,r;const o=_m((e==null?void 0:e.type)||{});if(o)return o;if((e==null?void 0:e.root)===e)return"Root";for(const i in(n=(t=e.parent)==null?void 0:t.type)==null?void 0:n.components)if(e.parent.type.components[i]===(e==null?void 0:e.type))return Va(e,i);for(const i in(r=e.appContext)==null?void 0:r.components)if(e.appContext.components[i]===(e==null?void 0:e.type))return Va(e,i);const s=mm((e==null?void 0:e.type)||{});return s||"Anonymous Component"}function Cs(e,t){return t=t||`${e.id}:root`,e.instanceMap.get(t)||e.instanceMap.get(":root")}var ym=class{constructor(){this.refEditor=new bm}set(e,t,n,r){const o=Array.isArray(t)?t:t.split(".");for(;o.length>1;){const a=o.shift();e instanceof Map&&(e=e.get(a)),e instanceof Set?e=Array.from(e.values())[a]:e=e[a],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}const s=o[0],i=this.refEditor.get(e)[s];r?r(e,s,n):this.refEditor.isRef(i)?this.refEditor.set(i,n):e[s]=n}get(e,t){const n=Array.isArray(t)?t:t.split(".");for(let r=0;r<n.length;r++)if(e instanceof Map?e=e.get(n[r]):e=e[n[r]],this.refEditor.isRef(e)&&(e=this.refEditor.get(e)),!e)return;return e}has(e,t,n=!1){if(typeof e>"u")return!1;const r=Array.isArray(t)?t.slice():t.split("."),o=n?2:1;for(;e&&r.length>o;){const s=r.shift();e=e[s],this.refEditor.isRef(e)&&(e=this.refEditor.get(e))}return e!=null&&Object.prototype.hasOwnProperty.call(e,r[0])}createDefaultSetCallback(e){return(t,n,r)=>{if((e.remove||e.newKey)&&(Array.isArray(t)?t.splice(n,1):nr(t)instanceof Map?t.delete(n):nr(t)instanceof Set?t.delete(Array.from(t.values())[n]):Reflect.deleteProperty(t,n)),!e.remove){const o=t[e.newKey||n];this.refEditor.isRef(o)?this.refEditor.set(o,r):nr(t)instanceof Map?t.set(e.newKey||n,r):nr(t)instanceof Set?t.add(r):t[e.newKey||n]=r}}}},bm=class{set(e,t){if(ss(e))e.value=t;else{if(e instanceof Set&&Array.isArray(t)){e.clear(),t.forEach(o=>e.add(o));return}const n=Object.keys(t);if(e instanceof Map){const o=new Set(e.keys());n.forEach(s=>{e.set(s,Reflect.get(t,s)),o.delete(s)}),o.forEach(s=>e.delete(s));return}const r=new Set(Object.keys(e));n.forEach(o=>{Reflect.set(e,o,Reflect.get(t,o)),r.delete(o)}),r.forEach(o=>Reflect.deleteProperty(e,o))}}get(e){return ss(e)?e.value:e}isRef(e){return ss(e)||kc(e)}};x();function gi(e){return Oc(e)?Em(e.subTree):e.subTree?[e.subTree.el]:[]}function Em(e){if(!e.children)return[];const t=[];return e.children.forEach(n=>{n.component?t.push(...gi(n.component)):n!=null&&n.el&&t.push(n.el)}),t}x();x();function Sm(){const e={top:0,bottom:0,left:0,right:0,get width(){return e.right-e.left},get height(){return e.bottom-e.top}};return e}var Jr;function Am(e){return Jr||(Jr=document.createRange()),Jr.selectNode(e),Jr.getBoundingClientRect()}function wm(e){const t=Sm();if(!e.children)return t;for(let n=0,r=e.children.length;n<r;n++){const o=e.children[n];let s;if(o.component)s=Sn(o.component);else if(o.el){const i=o.el;i.nodeType===1||i.getBoundingClientRect?s=i.getBoundingClientRect():i.nodeType===3&&i.data.trim()&&(s=Am(i))}s&&Cm(t,s)}return t}function Cm(e,t){return(!e.top||t.top<e.top)&&(e.top=t.top),(!e.bottom||t.bottom>e.bottom)&&(e.bottom=t.bottom),(!e.left||t.left<e.left)&&(e.left=t.left),(!e.right||t.right>e.right)&&(e.right=t.right),e}var Ma={top:0,left:0,right:0,bottom:0,width:0,height:0};function Sn(e){const t=e.subTree.el;return typeof window>"u"?Ma:Oc(e)?wm(e.subTree):(t==null?void 0:t.nodeType)===1?t==null?void 0:t.getBoundingClientRect():e.subTree.component?Sn(e.subTree.component):Ma}var xc="__vue-devtools-component-inspector__",Dc="__vue-devtools-component-inspector__card__",Pc="__vue-devtools-component-inspector__name__",Rc="__vue-devtools-component-inspector__indicator__",Ic={display:"block",zIndex:2147483640,position:"fixed",backgroundColor:"#42b88325",border:"1px solid #42b88350",borderRadius:"5px",transition:"all 0.1s ease-in",pointerEvents:"none"},Tm={fontFamily:"Arial, Helvetica, sans-serif",padding:"5px 8px",borderRadius:"4px",textAlign:"left",position:"absolute",left:0,color:"#e9e9e9",fontSize:"14px",fontWeight:600,lineHeight:"24px",backgroundColor:"#42b883",boxShadow:"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)"},km={display:"inline-block",fontWeight:400,fontStyle:"normal",fontSize:"12px",opacity:.7};function Wn(){return document.getElementById(xc)}function Om(){return document.getElementById(Dc)}function xm(){return document.getElementById(Rc)}function Dm(){return document.getElementById(Pc)}function _i(e){return{left:`${Math.round(e.left*100)/100}px`,top:`${Math.round(e.top*100)/100}px`,width:`${Math.round(e.width*100)/100}px`,height:`${Math.round(e.height*100)/100}px`}}function mi(e){var t;const n=document.createElement("div");n.id=(t=e.elementId)!=null?t:xc,Object.assign(n.style,{...Ic,..._i(e.bounds),...e.style});const r=document.createElement("span");r.id=Dc,Object.assign(r.style,{...Tm,top:e.bounds.top<35?0:"-35px"});const o=document.createElement("span");o.id=Pc,o.innerHTML=`<${e.name}> `;const s=document.createElement("i");return s.id=Rc,s.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`,Object.assign(s.style,km),r.appendChild(o),r.appendChild(s),n.appendChild(r),document.body.appendChild(n),n}function vi(e){const t=Wn(),n=Om(),r=Dm(),o=xm();t&&(Object.assign(t.style,{...Ic,..._i(e.bounds)}),Object.assign(n.style,{top:e.bounds.top<35?0:"-35px"}),r.innerHTML=`<${e.name}> `,o.innerHTML=`${Math.round(e.bounds.width*100)/100} x ${Math.round(e.bounds.height*100)/100}`)}function Pm(e){const t=Sn(e),n=No(e);Wn()?vi({bounds:t,name:n}):mi({bounds:t,name:n})}function Lc(){const e=Wn();e&&(e.style.display="none")}var Ts=null;function ks(e){const t=e.target;if(t){const n=t.__vueParentComponent;if(n&&(Ts=n,n.vnode.el)){const o=Sn(n),s=No(n);Wn()?vi({bounds:o,name:s}):mi({bounds:o,name:s})}}}function Rm(e,t){var n;if(e.preventDefault(),e.stopPropagation(),Ts){const r=(n=et.value)==null?void 0:n.app;vm({app:r,uid:r.uid,instance:Ts}).then(o=>{t(o)})}}var mo=null;function Im(){Lc(),window.removeEventListener("mouseover",ks),window.removeEventListener("click",mo,!0),mo=null}function Lm(){return window.addEventListener("mouseover",ks),new Promise(e=>{function t(n){n.preventDefault(),n.stopPropagation(),Rm(n,r=>{window.removeEventListener("click",t,!0),mo=null,window.removeEventListener("mouseover",ks);const o=Wn();o&&(o.style.display="none"),e(JSON.stringify({id:r}))})}mo=t,window.addEventListener("click",t,!0)})}function Nm(e){const t=Cs(et.value,e.id);if(t){const[n]=gi(t);if(typeof n.scrollIntoView=="function")n.scrollIntoView({behavior:"smooth"});else{const r=Sn(t),o=document.createElement("div"),s={..._i(r),position:"absolute"};Object.assign(o.style,s),document.body.appendChild(o),o.scrollIntoView({behavior:"smooth"}),setTimeout(()=>{document.body.removeChild(o)},2e3)}setTimeout(()=>{const r=Sn(t);if(r.width||r.height){const o=No(t),s=Wn();s?vi({...e,name:o,bounds:r}):mi({...e,name:o,bounds:r}),setTimeout(()=>{s&&(s.style.display="none")},1500)}},1200)}}x();var Fa,Ba;(Ba=(Fa=z).__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__)!=null||(Fa.__VUE_DEVTOOLS_COMPONENT_INSPECTOR_ENABLED__=!0);function Vm(e){let t=0;const n=setInterval(()=>{z.__VUE_INSPECTOR__&&(clearInterval(n),t+=30,e()),t>=5e3&&clearInterval(n)},30)}function Mm(){const e=z.__VUE_INSPECTOR__,t=e.openInEditor;e.openInEditor=async(...n)=>{e.disable(),t(...n)}}function Fm(){return new Promise(e=>{function t(){Mm(),e(z.__VUE_INSPECTOR__)}z.__VUE_INSPECTOR__?t():Vm(()=>{t()})})}x();x();x();x();x();var $a,Ha;(Ha=($a=z).__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS)!=null||($a.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS=[]);var Bm=new Proxy(z.__VUE_DEVTOOLS_KIT_TIMELINE_LAYERS,{get(e,t,n){return Reflect.get(e,t,n)}});function $m(e,t){Bm.push({...e,descriptorId:t.id,appRecord:hi(t.app)})}var Ua,ja;(ja=(Ua=z).__VUE_DEVTOOLS_KIT_INSPECTOR__)!=null||(Ua.__VUE_DEVTOOLS_KIT_INSPECTOR__=[]);var yi=new Proxy(z.__VUE_DEVTOOLS_KIT_INSPECTOR__,{get(e,t,n){return Reflect.get(e,t,n)}}),Nc=Lo(()=>{zn.hooks.callHook("sendInspectorToClient",Vc())});function Hm(e,t){yi.push({options:e,descriptor:t,treeFilter:"",selectedNodeId:"",appRecord:hi(t.app)}),Nc()}function Vc(){return yi.filter(e=>e.descriptor.app===et.value.app).filter(e=>e.descriptor.id!=="components").map(e=>{var t;const n=e.descriptor,r=e.options;return{id:r.id,label:r.label,logo:n.logo,icon:`custom-ic-baseline-${(t=r==null?void 0:r.icon)==null?void 0:t.replace(/_/g,"-")}`,packageName:n.packageName,homepage:n.homepage,pluginId:n.id}})}function no(e,t){return yi.find(n=>n.options.id===e&&(t?n.descriptor.app===t:!0))}function Um(){const e=wc();return e.hook("addInspector",({inspector:t,plugin:n})=>{Hm(t,n.descriptor)}),e.hook("sendInspectorTree",async({inspectorId:t,plugin:n})=>{var r;if(!t||!((r=n==null?void 0:n.descriptor)!=null&&r.app))return;const o=no(t,n.descriptor.app),s={app:n.descriptor.app,inspectorId:t,filter:(o==null?void 0:o.treeFilter)||"",rootNodes:[]};await new Promise(i=>{e.callHookWith(async a=>{await Promise.all(a.map(l=>l(s))),i()},"getInspectorTree")}),e.callHookWith(async i=>{await Promise.all(i.map(a=>a({inspectorId:t,rootNodes:s.rootNodes})))},"sendInspectorTreeToClient")}),e.hook("sendInspectorState",async({inspectorId:t,plugin:n})=>{var r;if(!t||!((r=n==null?void 0:n.descriptor)!=null&&r.app))return;const o=no(t,n.descriptor.app),s={app:n.descriptor.app,inspectorId:t,nodeId:(o==null?void 0:o.selectedNodeId)||"",state:null},i={currentTab:`custom-inspector:${t}`};s.nodeId&&await new Promise(a=>{e.callHookWith(async l=>{await Promise.all(l.map(u=>u(s,i))),a()},"getInspectorState")}),e.callHookWith(async a=>{await Promise.all(a.map(l=>l({inspectorId:t,nodeId:s.nodeId,state:s.state})))},"sendInspectorStateToClient")}),e.hook("customInspectorSelectNode",({inspectorId:t,nodeId:n,plugin:r})=>{const o=no(t,r.descriptor.app);o&&(o.selectedNodeId=n)}),e.hook("timelineLayerAdded",({options:t,plugin:n})=>{$m(t,n.descriptor)}),e.hook("timelineEventAdded",({options:t,plugin:n})=>{e.callHookWith(async r=>{await Promise.all(r.map(o=>o(t)))},"sendTimelineEventToClient")}),e.hook("getComponentInstances",async({app:t})=>{const n=t.__VUE_DEVTOOLS_NEXT_APP_RECORD__;if(!n)return null;const r=n.id.toString();return[...n.instanceMap].filter(([s])=>s.split(":")[0]===r).map(([,s])=>s)}),e.hook("getComponentBounds",async({instance:t})=>Sn(t)),e.hook("getComponentName",({instance:t})=>No(t)),e.hook("componentHighlight",({uid:t})=>{const n=et.value.instanceMap.get(t);n&&Pm(n)}),e.hook("componentUnhighlight",()=>{Lc()}),e}var Ka,Wa;(Wa=(Ka=z).__VUE_DEVTOOLS_KIT_APP_RECORDS__)!=null||(Ka.__VUE_DEVTOOLS_KIT_APP_RECORDS__=[]);var za,qa;(qa=(za=z).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__)!=null||(za.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__={});var Ga,Ya;(Ya=(Ga=z).__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__)!=null||(Ga.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__="");var Ja,Xa;(Xa=(Ja=z).__VUE_DEVTOOLS_KIT_CUSTOM_TABS__)!=null||(Ja.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__=[]);var Qa,Za;(Za=(Qa=z).__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__)!=null||(Qa.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__=[]);var hn="__VUE_DEVTOOLS_KIT_GLOBAL_STATE__";function jm(){return{connected:!1,clientConnected:!1,vitePluginDetected:!0,appRecords:[],activeAppRecordId:"",tabs:[],commands:[],highPerfModeEnabled:!0,devtoolsClientDetected:{}}}var el,tl;(tl=(el=z)[hn])!=null||(el[hn]=jm());var Km=Lo(e=>{zn.hooks.callHook("devtoolsStateUpdated",{state:e})});Lo((e,t)=>{zn.hooks.callHook("devtoolsConnectedUpdated",{state:e,oldState:t})});var Vo=new Proxy(z.__VUE_DEVTOOLS_KIT_APP_RECORDS__,{get(e,t,n){return t==="value"?z.__VUE_DEVTOOLS_KIT_APP_RECORDS__:z.__VUE_DEVTOOLS_KIT_APP_RECORDS__[t]}}),et=new Proxy(z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__,{get(e,t,n){return t==="value"?z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__:t==="id"?z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__:z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__[t]}});function Mc(){Km({...z[hn],appRecords:Vo.value,activeAppRecordId:et.id,tabs:z.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__,commands:z.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__})}function Wm(e){z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD__=e,Mc()}function zm(e){z.__VUE_DEVTOOLS_KIT_ACTIVE_APP_RECORD_ID__=e,Mc()}var bn=new Proxy(z[hn],{get(e,t){return t==="appRecords"?Vo:t==="activeAppRecordId"?et.id:t==="tabs"?z.__VUE_DEVTOOLS_KIT_CUSTOM_TABS__:t==="commands"?z.__VUE_DEVTOOLS_KIT_CUSTOM_COMMANDS__:z[hn][t]},deleteProperty(e,t){return delete e[t],!0},set(e,t,n){return{...z[hn]},e[t]=n,z[hn][t]=n,!0}});function qm(e={}){var t,n,r;const{file:o,host:s,baseUrl:i=window.location.origin,line:a=0,column:l=0}=e;if(o){if(s==="chrome-extension"){const u=o.replace(/\\/g,"\\\\"),f=(n=(t=window.VUE_DEVTOOLS_CONFIG)==null?void 0:t.openInEditorHost)!=null?n:"/";fetch(`${f}__open-in-editor?file=${encodeURI(o)}`).then(c=>{if(!c.ok){const p=`Opening component ${u} failed`;console.log(`%c${p}`,"color:red")}})}else if(bn.vitePluginDetected){const u=(r=z.__VUE_DEVTOOLS_OPEN_IN_EDITOR_BASE_URL__)!=null?r:i;z.__VUE_INSPECTOR__.openInEditor(u,o,a,l)}}}x();x();x();x();x();var nl,rl;(rl=(nl=z).__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__)!=null||(nl.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__=[]);var bi=new Proxy(z.__VUE_DEVTOOLS_KIT_PLUGIN_BUFFER__,{get(e,t,n){return Reflect.get(e,t,n)}});function Os(e){const t={};return Object.keys(e).forEach(n=>{t[n]=e[n].defaultValue}),t}function Ei(e){return`__VUE_DEVTOOLS_NEXT_PLUGIN_SETTINGS__${e}__`}function Gm(e){var t,n,r;const o=(n=(t=bi.find(s=>{var i;return s[0].id===e&&!!((i=s[0])!=null&&i.settings)}))==null?void 0:t[0])!=null?n:null;return(r=o==null?void 0:o.settings)!=null?r:null}function Fc(e,t){var n,r,o;const s=Ei(e);if(s){const i=localStorage.getItem(s);if(i)return JSON.parse(i)}if(e){const i=(r=(n=bi.find(a=>a[0].id===e))==null?void 0:n[0])!=null?r:null;return Os((o=i==null?void 0:i.settings)!=null?o:{})}return Os(t)}function Ym(e,t){const n=Ei(e);localStorage.getItem(n)||localStorage.setItem(n,JSON.stringify(Os(t)))}function Jm(e,t,n){const r=Ei(e),o=localStorage.getItem(r),s=JSON.parse(o||"{}"),i={...s,[t]:n};localStorage.setItem(r,JSON.stringify(i)),zn.hooks.callHookWith(a=>{a.forEach(l=>l({pluginId:e,key:t,oldValue:s[t],newValue:n,settings:i}))},"setPluginSettings")}x();x();x();x();x();x();x();x();x();x();x();var ol,sl,kt=(sl=(ol=z).__VUE_DEVTOOLS_HOOK)!=null?sl:ol.__VUE_DEVTOOLS_HOOK=wc(),Xm={vueAppInit(e){kt.hook("app:init",e)},vueAppUnmount(e){kt.hook("app:unmount",e)},vueAppConnected(e){kt.hook("app:connected",e)},componentAdded(e){return kt.hook("component:added",e)},componentUpdated(e){return kt.hook("component:updated",e)},componentRemoved(e){return kt.hook("component:removed",e)},setupDevtoolsPlugin(e){kt.hook("devtools-plugin:setup",e)}},Qm={on:Xm,setupDevToolsPlugin(e,t){return kt.callHook("devtools-plugin:setup",e,t)}},Zm=class{constructor({plugin:e,ctx:t}){this.hooks=t.hooks,this.plugin=e}get on(){return{visitComponentTree:e=>{this.hooks.hook("visitComponentTree",e)},inspectComponent:e=>{this.hooks.hook("inspectComponent",e)},editComponentState:e=>{this.hooks.hook("editComponentState",e)},getInspectorTree:e=>{this.hooks.hook("getInspectorTree",e)},getInspectorState:e=>{this.hooks.hook("getInspectorState",e)},editInspectorState:e=>{this.hooks.hook("editInspectorState",e)},inspectTimelineEvent:e=>{this.hooks.hook("inspectTimelineEvent",e)},timelineCleared:e=>{this.hooks.hook("timelineCleared",e)},setPluginSettings:e=>{this.hooks.hook("setPluginSettings",e)}}}notifyComponentUpdate(e){var t;const n=Vc().find(r=>r.packageName===this.plugin.descriptor.packageName);if(n!=null&&n.id){if(e){const r=[e.appContext.app,e.uid,(t=e.parent)==null?void 0:t.uid,e];kt.callHook("component:updated",...r)}else kt.callHook("component:updated");this.hooks.callHook("sendInspectorState",{inspectorId:n.id,plugin:this.plugin})}}addInspector(e){this.hooks.callHook("addInspector",{inspector:e,plugin:this.plugin}),this.plugin.descriptor.settings&&Ym(e.id,this.plugin.descriptor.settings)}sendInspectorTree(e){this.hooks.callHook("sendInspectorTree",{inspectorId:e,plugin:this.plugin})}sendInspectorState(e){this.hooks.callHook("sendInspectorState",{inspectorId:e,plugin:this.plugin})}selectInspectorNode(e,t){this.hooks.callHook("customInspectorSelectNode",{inspectorId:e,nodeId:t,plugin:this.plugin})}now(){return Date.now()}addTimelineLayer(e){this.hooks.callHook("timelineLayerAdded",{options:e,plugin:this.plugin})}addTimelineEvent(e){this.hooks.callHook("timelineEventAdded",{options:e,plugin:this.plugin})}getSettings(e){return Fc(e??this.plugin.descriptor.id,this.plugin.descriptor.settings)}getComponentInstances(e){return this.hooks.callHook("getComponentInstances",{app:e})}getComponentBounds(e){return this.hooks.callHook("getComponentBounds",{instance:e})}getComponentName(e){return this.hooks.callHook("getComponentName",{instance:e})}highlightElement(e){const t=e.__VUE_DEVTOOLS_NEXT_UID__;return this.hooks.callHook("componentHighlight",{uid:t})}unhighlightElement(){return this.hooks.callHook("componentUnhighlight")}},e0=Zm;x();x();x();x();var t0="__vue_devtool_undefined__",n0="__vue_devtool_infinity__",r0="__vue_devtool_negative_infinity__",o0="__vue_devtool_nan__";x();x();var s0={[t0]:"undefined",[o0]:"NaN",[n0]:"Infinity",[r0]:"-Infinity"};Object.entries(s0).reduce((e,[t,n])=>(e[n]=t,e),{});x();x();x();var il,al;(al=(il=z).__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__)!=null||(il.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__=new Set);function i0(e,t){const[n,r]=e;if(n.app!==t)return;const o=new e0({plugin:{setupFn:r,descriptor:n},ctx:zn});n.packageName==="vuex"&&o.on.editInspectorState(s=>{o.sendInspectorState(s.inspectorId)}),r(o)}function a0(e){z.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.has(e)||(z.__VUE_DEVTOOLS_KIT__REGISTERED_PLUGIN_APPS__.add(e),bi.forEach(t=>{i0(t,e)}))}x();x();var Sr="__VUE_DEVTOOLS_ROUTER__",$n="__VUE_DEVTOOLS_ROUTER_INFO__",ll,ul;(ul=(ll=z)[$n])!=null||(ll[$n]={currentRoute:null,routes:[]});var cl,fl;(fl=(cl=z)[Sr])!=null||(cl[Sr]={});new Proxy(z[$n],{get(e,t){return z[$n][t]}});new Proxy(z[Sr],{get(e,t){if(t==="value")return z[Sr]}});function l0(e){const t=new Map;return((e==null?void 0:e.getRoutes())||[]).filter(n=>!t.has(n.path)&&t.set(n.path,1))}function Si(e){return e.map(t=>{let{path:n,name:r,children:o,meta:s}=t;return o!=null&&o.length&&(o=Si(o)),{path:n,name:r,children:o,meta:s}})}function u0(e){if(e){const{fullPath:t,hash:n,href:r,path:o,name:s,matched:i,params:a,query:l}=e;return{fullPath:t,hash:n,href:r,path:o,name:s,params:a,query:l,matched:Si(i)}}return e}function c0(e,t){function n(){var r;const o=(r=e.app)==null?void 0:r.config.globalProperties.$router,s=u0(o==null?void 0:o.currentRoute.value),i=Si(l0(o)),a=console.warn;console.warn=()=>{},z[$n]={currentRoute:s?Na(s):{},routes:Na(i)},z[Sr]=o,console.warn=a}n(),Qm.on.componentUpdated(Lo(()=>{var r;((r=t.value)==null?void 0:r.app)===e.app&&(n(),zn.hooks.callHook("routerInfoUpdated",{state:z[$n]}))},200))}function f0(e){return{async getInspectorTree(t){const n={...t,app:et.value.app,rootNodes:[]};return await new Promise(r=>{e.callHookWith(async o=>{await Promise.all(o.map(s=>s(n))),r()},"getInspectorTree")}),n.rootNodes},async getInspectorState(t){const n={...t,app:et.value.app,state:null},r={currentTab:`custom-inspector:${t.inspectorId}`};return await new Promise(o=>{e.callHookWith(async s=>{await Promise.all(s.map(i=>i(n,r))),o()},"getInspectorState")}),n.state},editInspectorState(t){const n=new ym,r={...t,app:et.value.app,set:(o,s=t.path,i=t.state.value,a)=>{n.set(o,s,i,a||n.createDefaultSetCallback(t.state))}};e.callHookWith(o=>{o.forEach(s=>s(r))},"editInspectorState")},sendInspectorState(t){const n=no(t);e.callHook("sendInspectorState",{inspectorId:t,plugin:{descriptor:n.descriptor,setupFn:()=>({})}})},inspectComponentInspector(){return Lm()},cancelInspectComponentInspector(){return Im()},getComponentRenderCode(t){const n=Cs(et.value,t);if(n)return(n==null?void 0:n.type)instanceof Function?n.type.toString():n.render.toString()},scrollToComponent(t){return Nm({id:t})},openInEditor:qm,getVueInspector:Fm,toggleApp(t){const n=Vo.value.find(r=>r.id===t);n&&(zm(t),Wm(n),c0(n,et),Nc(),a0(n.app))},inspectDOM(t){const n=Cs(et.value,t);if(n){const[r]=gi(n);r&&(z.__VUE_DEVTOOLS_INSPECT_DOM_TARGET__=r)}},updatePluginSettings(t,n,r){Jm(t,n,r)},getPluginSettings(t){return{options:Gm(t),values:Fc(t)}}}}x();var dl,pl;(pl=(dl=z).__VUE_DEVTOOLS_ENV__)!=null||(dl.__VUE_DEVTOOLS_ENV__={vitePluginDetected:!1});var hl=Um(),gl,_l;(_l=(gl=z).__VUE_DEVTOOLS_KIT_CONTEXT__)!=null||(gl.__VUE_DEVTOOLS_KIT_CONTEXT__={hooks:hl,get state(){return{...bn,activeAppRecordId:et.id,activeAppRecord:et.value,appRecords:Vo.value}},api:f0(hl)});var zn=z.__VUE_DEVTOOLS_KIT_CONTEXT__;x();fm(pm());var ml,vl;(vl=(ml=z).__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__)!=null||(ml.__VUE_DEVTOOLS_NEXT_APP_RECORD_INFO__={id:0,appIds:new Set});x();function d0(e){bn.highPerfModeEnabled=e??!bn.highPerfModeEnabled}x();x();x();function p0(e){bn.devtoolsClientDetected={...bn.devtoolsClientDetected,...e};const t=Object.values(bn.devtoolsClientDetected).some(Boolean);d0(!t)}var yl,bl;(bl=(yl=z).__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__)!=null||(yl.__VUE_DEVTOOLS_UPDATE_CLIENT_DETECTED__=p0);x();x();x();x();x();x();x();var h0=class{constructor(){this.keyToValue=new Map,this.valueToKey=new Map}set(e,t){this.keyToValue.set(e,t),this.valueToKey.set(t,e)}getByKey(e){return this.keyToValue.get(e)}getByValue(e){return this.valueToKey.get(e)}clear(){this.keyToValue.clear(),this.valueToKey.clear()}},Bc=class{constructor(e){this.generateIdentifier=e,this.kv=new h0}register(e,t){this.kv.getByValue(e)||(t||(t=this.generateIdentifier(e)),this.kv.set(t,e))}clear(){this.kv.clear()}getIdentifier(e){return this.kv.getByValue(e)}getValue(e){return this.kv.getByKey(e)}},g0=class extends Bc{constructor(){super(e=>e.name),this.classToAllowedProps=new Map}register(e,t){typeof t=="object"?(t.allowProps&&this.classToAllowedProps.set(e,t.allowProps),super.register(e,t.identifier)):super.register(e,t)}getAllowedProps(e){return this.classToAllowedProps.get(e)}};x();x();function _0(e){if("values"in Object)return Object.values(e);const t=[];for(const n in e)e.hasOwnProperty(n)&&t.push(e[n]);return t}function m0(e,t){const n=_0(e);if("find"in n)return n.find(t);const r=n;for(let o=0;o<r.length;o++){const s=r[o];if(t(s))return s}}function Hn(e,t){Object.entries(e).forEach(([n,r])=>t(r,n))}function ro(e,t){return e.indexOf(t)!==-1}function El(e,t){for(let n=0;n<e.length;n++){const r=e[n];if(t(r))return r}}var v0=class{constructor(){this.transfomers={}}register(e){this.transfomers[e.name]=e}findApplicable(e){return m0(this.transfomers,t=>t.isApplicable(e))}findByName(e){return this.transfomers[e]}};x();x();var y0=e=>Object.prototype.toString.call(e).slice(8,-1),$c=e=>typeof e>"u",b0=e=>e===null,Ar=e=>typeof e!="object"||e===null||e===Object.prototype?!1:Object.getPrototypeOf(e)===null?!0:Object.getPrototypeOf(e)===Object.prototype,xs=e=>Ar(e)&&Object.keys(e).length===0,tn=e=>Array.isArray(e),E0=e=>typeof e=="string",S0=e=>typeof e=="number"&&!isNaN(e),A0=e=>typeof e=="boolean",w0=e=>e instanceof RegExp,wr=e=>e instanceof Map,Cr=e=>e instanceof Set,Hc=e=>y0(e)==="Symbol",C0=e=>e instanceof Date&&!isNaN(e.valueOf()),T0=e=>e instanceof Error,Sl=e=>typeof e=="number"&&isNaN(e),k0=e=>A0(e)||b0(e)||$c(e)||S0(e)||E0(e)||Hc(e),O0=e=>typeof e=="bigint",x0=e=>e===1/0||e===-1/0,D0=e=>ArrayBuffer.isView(e)&&!(e instanceof DataView),P0=e=>e instanceof URL;x();var Uc=e=>e.replace(/\./g,"\\."),is=e=>e.map(String).map(Uc).join("."),fr=e=>{const t=[];let n="";for(let o=0;o<e.length;o++){let s=e.charAt(o);if(s==="\\"&&e.charAt(o+1)==="."){n+=".",o++;continue}if(s==="."){t.push(n),n="";continue}n+=s}const r=n;return t.push(r),t};x();function wt(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var jc=[wt($c,"undefined",()=>null,()=>{}),wt(O0,"bigint",e=>e.toString(),e=>typeof BigInt<"u"?BigInt(e):(console.error("Please add a BigInt polyfill."),e)),wt(C0,"Date",e=>e.toISOString(),e=>new Date(e)),wt(T0,"Error",(e,t)=>{const n={name:e.name,message:e.message};return t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n},(e,t)=>{const n=new Error(e.message);return n.name=e.name,n.stack=e.stack,t.allowedErrorProps.forEach(r=>{n[r]=e[r]}),n}),wt(w0,"regexp",e=>""+e,e=>{const t=e.slice(1,e.lastIndexOf("/")),n=e.slice(e.lastIndexOf("/")+1);return new RegExp(t,n)}),wt(Cr,"set",e=>[...e.values()],e=>new Set(e)),wt(wr,"map",e=>[...e.entries()],e=>new Map(e)),wt(e=>Sl(e)||x0(e),"number",e=>Sl(e)?"NaN":e>0?"Infinity":"-Infinity",Number),wt(e=>e===0&&1/e===-1/0,"number",()=>"-0",Number),wt(P0,"URL",e=>e.toString(),e=>new URL(e))];function Mo(e,t,n,r){return{isApplicable:e,annotation:t,transform:n,untransform:r}}var Kc=Mo((e,t)=>Hc(e)?!!t.symbolRegistry.getIdentifier(e):!1,(e,t)=>["symbol",t.symbolRegistry.getIdentifier(e)],e=>e.description,(e,t,n)=>{const r=n.symbolRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown symbol");return r}),R0=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,Uint8ClampedArray].reduce((e,t)=>(e[t.name]=t,e),{}),Wc=Mo(D0,e=>["typed-array",e.constructor.name],e=>[...e],(e,t)=>{const n=R0[t[1]];if(!n)throw new Error("Trying to deserialize unknown typed array");return new n(e)});function zc(e,t){return e!=null&&e.constructor?!!t.classRegistry.getIdentifier(e.constructor):!1}var qc=Mo(zc,(e,t)=>["class",t.classRegistry.getIdentifier(e.constructor)],(e,t)=>{const n=t.classRegistry.getAllowedProps(e.constructor);if(!n)return{...e};const r={};return n.forEach(o=>{r[o]=e[o]}),r},(e,t,n)=>{const r=n.classRegistry.getValue(t[1]);if(!r)throw new Error("Trying to deserialize unknown class - check https://github.com/blitz-js/superjson/issues/116#issuecomment-773996564");return Object.assign(Object.create(r.prototype),e)}),Gc=Mo((e,t)=>!!t.customTransformerRegistry.findApplicable(e),(e,t)=>["custom",t.customTransformerRegistry.findApplicable(e).name],(e,t)=>t.customTransformerRegistry.findApplicable(e).serialize(e),(e,t,n)=>{const r=n.customTransformerRegistry.findByName(t[1]);if(!r)throw new Error("Trying to deserialize unknown custom value");return r.deserialize(e)}),I0=[qc,Kc,Gc,Wc],Al=(e,t)=>{const n=El(I0,o=>o.isApplicable(e,t));if(n)return{value:n.transform(e,t),type:n.annotation(e,t)};const r=El(jc,o=>o.isApplicable(e,t));if(r)return{value:r.transform(e,t),type:r.annotation}},Yc={};jc.forEach(e=>{Yc[e.annotation]=e});var L0=(e,t,n)=>{if(tn(t))switch(t[0]){case"symbol":return Kc.untransform(e,t,n);case"class":return qc.untransform(e,t,n);case"custom":return Gc.untransform(e,t,n);case"typed-array":return Wc.untransform(e,t,n);default:throw new Error("Unknown transformation: "+t)}else{const r=Yc[t];if(!r)throw new Error("Unknown transformation: "+t);return r.untransform(e,n)}};x();var xn=(e,t)=>{const n=e.keys();for(;t>0;)n.next(),t--;return n.next().value};function Jc(e){if(ro(e,"__proto__"))throw new Error("__proto__ is not allowed as a property");if(ro(e,"prototype"))throw new Error("prototype is not allowed as a property");if(ro(e,"constructor"))throw new Error("constructor is not allowed as a property")}var N0=(e,t)=>{Jc(t);for(let n=0;n<t.length;n++){const r=t[n];if(Cr(e))e=xn(e,+r);else if(wr(e)){const o=+r,s=+t[++n]==0?"key":"value",i=xn(e,o);switch(s){case"key":e=i;break;case"value":e=e.get(i);break}}else e=e[r]}return e},Ds=(e,t,n)=>{if(Jc(t),t.length===0)return n(e);let r=e;for(let s=0;s<t.length-1;s++){const i=t[s];if(tn(r)){const a=+i;r=r[a]}else if(Ar(r))r=r[i];else if(Cr(r)){const a=+i;r=xn(r,a)}else if(wr(r)){if(s===t.length-2)break;const l=+i,u=+t[++s]==0?"key":"value",f=xn(r,l);switch(u){case"key":r=f;break;case"value":r=r.get(f);break}}}const o=t[t.length-1];if(tn(r)?r[+o]=n(r[+o]):Ar(r)&&(r[o]=n(r[o])),Cr(r)){const s=xn(r,+o),i=n(s);s!==i&&(r.delete(s),r.add(i))}if(wr(r)){const s=+t[t.length-2],i=xn(r,s);switch(+o==0?"key":"value"){case"key":{const l=n(i);r.set(l,r.get(i)),l!==i&&r.delete(i);break}case"value":{r.set(i,n(r.get(i)));break}}}return e};function Ps(e,t,n=[]){if(!e)return;if(!tn(e)){Hn(e,(s,i)=>Ps(s,t,[...n,...fr(i)]));return}const[r,o]=e;o&&Hn(o,(s,i)=>{Ps(s,t,[...n,...fr(i)])}),t(r,n)}function V0(e,t,n){return Ps(t,(r,o)=>{e=Ds(e,o,s=>L0(s,r,n))}),e}function M0(e,t){function n(r,o){const s=N0(e,fr(o));r.map(fr).forEach(i=>{e=Ds(e,i,()=>s)})}if(tn(t)){const[r,o]=t;r.forEach(s=>{e=Ds(e,fr(s),()=>e)}),o&&Hn(o,n)}else Hn(t,n);return e}var F0=(e,t)=>Ar(e)||tn(e)||wr(e)||Cr(e)||zc(e,t);function B0(e,t,n){const r=n.get(e);r?r.push(t):n.set(e,[t])}function $0(e,t){const n={};let r;return e.forEach(o=>{if(o.length<=1)return;t||(o=o.map(a=>a.map(String)).sort((a,l)=>a.length-l.length));const[s,...i]=o;s.length===0?r=i.map(is):n[is(s)]=i.map(is)}),r?xs(n)?[r]:[r,n]:xs(n)?void 0:n}var Xc=(e,t,n,r,o=[],s=[],i=new Map)=>{var a;const l=k0(e);if(!l){B0(e,o,t);const m=i.get(e);if(m)return r?{transformedValue:null}:m}if(!F0(e,n)){const m=Al(e,n),v=m?{transformedValue:m.value,annotations:[m.type]}:{transformedValue:e};return l||i.set(e,v),v}if(ro(s,e))return{transformedValue:null};const u=Al(e,n),f=(a=u==null?void 0:u.value)!=null?a:e,c=tn(f)?[]:{},p={};Hn(f,(m,v)=>{if(v==="__proto__"||v==="constructor"||v==="prototype")throw new Error(`Detected property ${v}. This is a prototype pollution risk, please remove it from your object.`);const y=Xc(m,t,n,r,[...o,v],[...s,e],i);c[v]=y.transformedValue,tn(y.annotations)?p[v]=y.annotations:Ar(y.annotations)&&Hn(y.annotations,(b,S)=>{p[Uc(v)+"."+S]=b})});const d=xs(p)?{transformedValue:c,annotations:u?[u.type]:void 0}:{transformedValue:c,annotations:u?[u.type,p]:p};return l||i.set(e,d),d};x();x();function Qc(e){return Object.prototype.toString.call(e).slice(8,-1)}function wl(e){return Qc(e)==="Array"}function H0(e){if(Qc(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return!!t&&t.constructor===Object&&t===Object.prototype}function U0(e,t,n,r,o){const s={}.propertyIsEnumerable.call(r,t)?"enumerable":"nonenumerable";s==="enumerable"&&(e[t]=n),o&&s==="nonenumerable"&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}function Rs(e,t={}){if(wl(e))return e.map(o=>Rs(o,t));if(!H0(e))return e;const n=Object.getOwnPropertyNames(e),r=Object.getOwnPropertySymbols(e);return[...n,...r].reduce((o,s)=>{if(wl(t.props)&&!t.props.includes(s))return o;const i=e[s],a=Rs(i,t);return U0(o,s,a,e,t.nonenumerable),o},{})}var ke=class{constructor({dedupe:e=!1}={}){this.classRegistry=new g0,this.symbolRegistry=new Bc(t=>{var n;return(n=t.description)!=null?n:""}),this.customTransformerRegistry=new v0,this.allowedErrorProps=[],this.dedupe=e}serialize(e){const t=new Map,n=Xc(e,t,this,this.dedupe),r={json:n.transformedValue};n.annotations&&(r.meta={...r.meta,values:n.annotations});const o=$0(t,this.dedupe);return o&&(r.meta={...r.meta,referentialEqualities:o}),r}deserialize(e){const{json:t,meta:n}=e;let r=Rs(t);return n!=null&&n.values&&(r=V0(r,n.values,this)),n!=null&&n.referentialEqualities&&(r=M0(r,n.referentialEqualities)),r}stringify(e){return JSON.stringify(this.serialize(e))}parse(e){return this.deserialize(JSON.parse(e))}registerClass(e,t){this.classRegistry.register(e,t)}registerSymbol(e,t){this.symbolRegistry.register(e,t)}registerCustom(e,t){this.customTransformerRegistry.register({name:t,...e})}allowErrorProps(...e){this.allowedErrorProps.push(...e)}};ke.defaultInstance=new ke;ke.serialize=ke.defaultInstance.serialize.bind(ke.defaultInstance);ke.deserialize=ke.defaultInstance.deserialize.bind(ke.defaultInstance);ke.stringify=ke.defaultInstance.stringify.bind(ke.defaultInstance);ke.parse=ke.defaultInstance.parse.bind(ke.defaultInstance);ke.registerClass=ke.defaultInstance.registerClass.bind(ke.defaultInstance);ke.registerSymbol=ke.defaultInstance.registerSymbol.bind(ke.defaultInstance);ke.registerCustom=ke.defaultInstance.registerCustom.bind(ke.defaultInstance);ke.allowErrorProps=ke.defaultInstance.allowErrorProps.bind(ke.defaultInstance);x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();x();var Cl,Tl;(Tl=(Cl=z).__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__)!=null||(Cl.__VUE_DEVTOOLS_KIT_MESSAGE_CHANNELS__=[]);var kl,Ol;(Ol=(kl=z).__VUE_DEVTOOLS_KIT_RPC_CLIENT__)!=null||(kl.__VUE_DEVTOOLS_KIT_RPC_CLIENT__=null);var xl,Dl;(Dl=(xl=z).__VUE_DEVTOOLS_KIT_RPC_SERVER__)!=null||(xl.__VUE_DEVTOOLS_KIT_RPC_SERVER__=null);var Pl,Rl;(Rl=(Pl=z).__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__)!=null||(Pl.__VUE_DEVTOOLS_KIT_VITE_RPC_CLIENT__=null);var Il,Ll;(Ll=(Il=z).__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__)!=null||(Il.__VUE_DEVTOOLS_KIT_VITE_RPC_SERVER__=null);var Nl,Vl;(Vl=(Nl=z).__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__)!=null||(Nl.__VUE_DEVTOOLS_KIT_BROADCAST_RPC_SERVER__=null);x();x();x();x();x();x();x();const j0=JSON.parse(`{"repo":"https://git.pleshevski.ru/pleshevskiy/pleshevski.ru","locales":{"/":{"selectLanguageName":"Русский","navbar":["/","/works"],"notFound":["Верните страницу!","Мы потеряли страницу...","Вы заблокированы в лабиринте.","Искали кота?","Страница украдена.","Ошиблись в параллельной вселенной."],"backToHome":"Вернуться на главную","worksTable":{"name":"Название","description":"Описание","role":"Роль","technologies":"Технологии","status":"Статус","dates":"Даты"}},"/eng/":{"selectLanguageName":"English","navbar":["/eng/","/eng/works"],"notFound":["Return the page!","We lost a page...","You're blocked in a labyrinth.","Looking for a cat?","The page has been stolen.","Wrong turn in parallel universe."],"backToHome":"Back to home","worksTable":{"name":"Name","description":"Description","role":"Role","technologies":"Technologies","status":"Status","dates":"Dates"}}},"colorMode":"auto","colorModeSwitch":true,"navbar":[],"logo":null,"selectLanguageText":"Languages","selectLanguageAriaLabel":"Select language","sidebar":"heading","sidebarDepth":2,"editLink":true,"editLinkText":"Edit this page","lastUpdated":true,"lastUpdatedText":"Last Updated","contributors":true,"contributorsText":"Contributors","notFound":["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],"backToHome":"Take me home","openInNewWindow":"open in new window","toggleColorMode":"toggle color mode","toggleSidebar":"toggle sidebar"}`),K0=fe(j0),Zc=()=>K0,ef=Symbol(""),W0=()=>{const e=Ze(ef);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e},z0=(e,t)=>{const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}},q0=Ut({enhance({app:e}){const t=Zc(),n=e._context.provides[ri],r=R(()=>z0(t.value,n.routeLocale.value));e.provide(ef,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}}),G0=Object.freeze(Object.defineProperty({__proto__:null,default:q0},Symbol.toStringTag,{value:"Module"})),Y0=()=>Zc(),He=()=>W0(),tf=Symbol(""),J0=e=>{const t=(n=e.value)=>{const r=window.document.documentElement;r.dataset.theme=n?"dark":"light"};Ge(()=>{$e(e,t,{immediate:!0})}),Co(()=>{t()})},Ai=()=>{const e=Ze(tf);if(!e)throw new Error("useDarkMode() is called without provider.");return e},X0=()=>{const e=He(),t=Ug(),n=fi("vuepress-color-scheme",e.value.colorMode),r=R({get(){return e.value.colorModeSwitch?n.value==="auto"?t.value:n.value==="dark":e.value.colorMode==="dark"},set(o){o===t.value?n.value="auto":n.value=o?"dark":"light"}});vn(tf,r),J0(r)};let as=null,Zn=null;const Q0={wait:()=>as,pending:()=>{as=new Promise(e=>{Zn=e})},resolve:()=>{Zn==null||Zn(),as=null,Zn=null}},nf=()=>Q0,Un=(e,t)=>{const{notFound:n,meta:r,path:o}=Er(e,t);return n?{text:o,link:o}:{text:r.title||o,link:o}},Ml=e=>decodeURI(e).replace(/#.*$/,"").replace(/(index)?\.(md|html)$/,""),Z0=(e,t)=>{if(t.hash===e)return!0;const n=Ml(t.path),r=Ml(e);return n===r},rf=(e,t)=>e.link&&Z0(e.link,t)?!0:"children"in e?e.children.some(n=>rf(n,t)):!1,of=e=>!eh(e)&&!Mr(e),sf=e=>!Oo(e)||e.includes("github.com")?"GitHub":e.includes("bitbucket.org")?"Bitbucket":e.includes("gitlab.com")?"GitLab":e.includes("gitee.com")?"Gitee":null,ev={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"},tv=({docsRepo:e,editLinkPattern:t})=>{if(t)return t;const n=sf(e);return n!==null?ev[n]:null},nv=({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o})=>{if(!r)return null;const s=tv({docsRepo:e,editLinkPattern:o});return s?s.replace(/:repo/,Oo(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,ec(`${Zu(n)}/${r}`)):null},Vn=(e="",t="")=>Ec(t)||Mr(t)?t:`${uh(e)}${t}`,oo=fe([]),rv=()=>{const e=An(),t=He(),n=St(),r=R(()=>n.value.sidebarDepth??t.value.sidebarDepth??2);e.beforeEach((s,i)=>{s.path!==i.path&&(oo.value=[])});const o=()=>{if(r.value<=0){oo.value=[];return}oo.value=o_({levels:[2,r.value+1],ignore:[".vp-badge"]})};$e(r,o),Ge(o)},ov=()=>oo,sv=e=>({text:e.title,link:e.link,children:wi(e.children)}),wi=e=>e?e.map(t=>sv(t)):[],af=(e,t)=>[{text:e.title,children:wi(t)}],lf=(e,t,n,r="")=>{const o=(s,i)=>{var l;const a=mt(s)?Un(Vn(i,s)):mt(s.link)?{...s,link:of(s.link)?Un(Vn(i,s.link)).link:s.link}:s;if("children"in a)return{...a,children:a.children.map(u=>o(u,Vn(i,a.prefix)))};if(a.link===n){const u=((l=t[0])==null?void 0:l.level)===1?t[0].children:t;return{...a,children:wi(u)}}return a};return e.map(s=>o(s,r))},iv=(e,t,n,r)=>{const o=l_(e).sort((s,i)=>i.length-s.length);for(const s of o)if(bc(decodeURI(r),s)){const i=e[s];return i?i==="heading"?af(t,n):lf(i,n,r,s):[]}return console.warn(`${decodeURI(r)} is missing sidebar config.`),[]},uf=Symbol("sidebarItems"),Ci=()=>{const e=Ze(uf);if(!e)throw new Error("useSidebarItems() is called without provider.");return e},av=(e,t,n,r,o)=>e===!1?[]:e==="heading"?af(t,o):Array.isArray(e)?lf(e,o,n,r):ei(e)?iv(e,t,o,n):[],lv=()=>{const e=He(),t=St(),n=jn(),r=Ht(),o=Fr(),s=ov(),i=R(()=>t.value.home?!1:t.value.sidebar??e.value.sidebar??"heading"),a=R(()=>av(i.value,n.value,r.path,o.value,s.value));vn(uf,a)},uv=he({__name:"Badge",props:{type:{default:"tip"},text:{default:""},vertical:{default:void 0}},setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),xe=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n};function cv(e,t,n,r,o,s){return $(),te("span",{class:tt(["vp-badge",n.type]),style:xr({verticalAlign:n.vertical})},[Ie(e.$slots,"default",{},()=>[Zt(ce(n.text),1)])],6)}const fv=xe(uv,[["render",cv],["__file","Badge.vue"]]),dv=he({__name:"VPHomeFeatures",setup(e,{expose:t}){t();const n=St(),r=R(()=>n.value.features??[]),o={frontmatter:n,features:r};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),pv={key:0,class:"vp-features"};function hv(e,t,n,r,o,s){return r.features.length?($(),te("div",pv,[($(!0),te(Ee,null,Ft(r.features,i=>($(),te("div",{key:i.title,class:"vp-feature"},[G("h2",null,ce(i.title),1),G("p",null,ce(i.details),1)]))),128))])):Ve("",!0)}const gv=xe(dv,[["render",hv],["__file","VPHomeFeatures.vue"]]),_v=he({__name:"VPHomeFooter",setup(e,{expose:t}){t();const n=St(),r=R(()=>n.value.footer),o=R(()=>n.value.footerHtml),s={frontmatter:n,footer:r,footerHtml:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),mv=["innerHTML"],vv=["textContent"];function yv(e,t,n,r,o,s){return r.footer?($(),te(Ee,{key:0},[r.footerHtml?($(),te("div",{key:0,class:"vp-footer","vp-footer":"",innerHTML:r.footer},null,8,mv)):($(),te("div",{key:1,class:"vp-footer","vp-footer":"",textContent:ce(r.footer)},null,8,vv))],64)):Ve("",!0)}const bv=xe(_v,[["render",yv],["__file","VPHomeFooter.vue"]]),Ev=he({__name:"VPHomeHero",setup(e,{expose:t}){t();const n=St(),r=oi(),o=Ai(),s=R(()=>n.value.heroText===null?null:n.value.heroText||r.value.title||"Hello"),i=R(()=>n.value.tagline===null?null:n.value.tagline||r.value.description||"Welcome to your VuePress site"),a=R(()=>o.value&&n.value.heroImageDark!==void 0?n.value.heroImageDark:n.value.heroImage),l=R(()=>n.value.heroAlt||s.value||"hero"),u=R(()=>n.value.heroHeight??280),f=R(()=>Array.isArray(n.value.actions)?n.value.actions.map(({text:d,link:m,type:v="primary"})=>({text:d,link:m,type:v})):[]),p={frontmatter:n,siteLocale:r,isDarkMode:o,heroText:s,tagline:i,heroImage:a,heroAlt:l,heroHeight:u,actions:f,HomeHeroImage:()=>{if(!a.value)return null;const d=be("img",{class:"vp-hero-image",src:ai(a.value),alt:l.value,height:u.value});return n.value.heroImageDark===void 0?d:be(si,()=>d)},get AutoLink(){return Kn}};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Sv={class:"vp-hero"},Av={key:0,id:"main-title"},wv={key:1,class:"vp-hero-description"},Cv={key:2,class:"vp-hero-actions"};function Tv(e,t,n,r,o,s){return $(),te("header",Sv,[oe(r.HomeHeroImage),r.heroText?($(),te("h1",Av,ce(r.heroText),1)):Ve("",!0),r.tagline?($(),te("p",wv,ce(r.tagline),1)):Ve("",!0),r.actions.length?($(),te("p",Cv,[($(!0),te(Ee,null,Ft(r.actions,i=>($(),Re(r.AutoLink,{key:i.text,class:tt(["vp-hero-action-button",[i.type]]),config:i},null,8,["class","config"]))),128))])):Ve("",!0)])}const kv=xe(Ev,[["render",Tv],["__file","VPHomeHero.vue"]]),Ov=he({__name:"VPHome",setup(e,{expose:t}){t();const n={VPHomeFeatures:gv,VPHomeFooter:bv,VPHomeHero:kv,get Content(){return ii}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),xv={class:"vp-home"},Dv={class:"theme-default-content","vp-content":""};function Pv(e,t,n,r,o,s){return $(),te("main",xv,[oe(r.VPHomeHero),oe(r.VPHomeFeatures),G("div",Dv,[oe(r.Content)]),oe(r.VPHomeFooter)])}const Rv=xe(Ov,[["render",Pv],["__file","VPHome.vue"]]),Iv=he({__name:"VPNavbarBrand",setup(e,{expose:t}){t();const n=Fr(),r=oi(),o=He(),s=Ai(),i=R(()=>o.value.home||n.value),a=R(()=>r.value.title),l=R(()=>s.value&&o.value.logoDark!==void 0?o.value.logoDark:o.value.logo),u=R(()=>o.value.logoAlt??a.value),f=R(()=>a.value.toLocaleUpperCase().trim()===u.value.toLocaleUpperCase().trim()),p={routeLocale:n,siteLocale:r,themeLocale:o,isDarkMode:s,navbarBrandLink:i,navbarBrandTitle:a,navbarBrandLogo:l,navbarBrandLogoAlt:u,navBarLogoAltMatchesTitle:f,NavbarBrandLogo:()=>{if(!l.value)return null;const d=be("img",{class:"vp-site-logo",src:ai(l.value),alt:u.value});return o.value.logoDark===void 0?d:be(si,()=>d)},get RouteLink(){return Po}};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),Lv=["aria-hidden"];function Nv(e,t,n,r,o,s){return $(),Re(r.RouteLink,{to:r.navbarBrandLink},{default:Ne(()=>[oe(r.NavbarBrandLogo),r.navbarBrandTitle?($(),te("span",{key:0,class:tt(["vp-site-name",{"vp-hide-mobile":r.navbarBrandLogo}]),"aria-hidden":r.navBarLogoAltMatchesTitle},ce(r.navbarBrandTitle),11,Lv)):Ve("",!0)]),_:1},8,["to"])}const Vv=xe(Iv,[["render",Nv],["__file","VPNavbarBrand.vue"]]),Mv=he({__name:"VPDropdownTransition",setup(e,{expose:t}){t();const o={setHeight:s=>{s.style.height=`${s.scrollHeight}px`},unsetHeight:s=>{s.style.height=""}};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function Fv(e,t,n,r,o,s){return $(),Re(Zs,{name:"vp-dropdown",onEnter:r.setHeight,onAfterEnter:r.unsetHeight,onBeforeLeave:r.setHeight},{default:Ne(()=>[Ie(e.$slots,"default")]),_:3})}const cf=xe(Mv,[["render",Fv],["__file","VPDropdownTransition.vue"]]),Bv=he({__name:"VPNavbarDropdown",props:{item:{}},setup(e,{expose:t}){t();const n=e,{item:r}=pu(n),o=Ht(),s=fe(!1),i=R(()=>r.value.ariaLabel||r.value.text),a=(f,c)=>c[c.length-1]===f,l=f=>{const c=f.detail===0;s.value=c?!s.value:!1};$e(()=>o.path,()=>{s.value=!1});const u={props:n,item:r,route:o,open:s,dropdownAriaLabel:i,isLastItemOfArray:a,handleDropdown:l,VPDropdownTransition:cf,get AutoLink(){return Kn}};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),$v=["aria-label"],Hv={class:"title"},Uv=["aria-label"],jv={class:"title"},Kv={class:"vp-navbar-dropdown"},Wv={class:"vp-navbar-dropdown-subtitle"},zv={key:1},qv={class:"vp-navbar-dropdown-subitem-wrapper"};function Gv(e,t,n,r,o,s){return $(),te("div",{class:tt(["vp-navbar-dropdown-wrapper",{open:r.open}])},[G("button",{class:"vp-navbar-dropdown-title",type:"button","aria-label":r.dropdownAriaLabel,onClick:r.handleDropdown},[G("span",Hv,ce(r.item.text),1),t[1]||(t[1]=G("span",{class:"arrow down"},null,-1))],8,$v),G("button",{class:"vp-navbar-dropdown-title-mobile",type:"button","aria-label":r.dropdownAriaLabel,onClick:t[0]||(t[0]=i=>r.open=!r.open)},[G("span",jv,ce(r.item.text),1),G("span",{class:tt(["arrow",r.open?"down":"right"])},null,2)],8,Uv),oe(r.VPDropdownTransition,null,{default:Ne(()=>[co(G("ul",Kv,[($(!0),te(Ee,null,Ft(r.item.children,i=>($(),te("li",{key:i.text,class:"vp-navbar-dropdown-item"},["children"in i?($(),te(Ee,{key:0},[G("h4",Wv,[i.link?($(),Re(r.AutoLink,{key:0,config:i,onFocusout:a=>r.isLastItemOfArray(i,r.item.children)&&i.children.length===0&&(r.open=!1)},null,8,["config","onFocusout"])):($(),te("span",zv,ce(i.text),1))]),G("ul",qv,[($(!0),te(Ee,null,Ft(i.children,a=>($(),te("li",{key:a.link,class:"vp-navbar-dropdown-subitem"},[oe(r.AutoLink,{config:a,onFocusout:l=>r.isLastItemOfArray(a,i.children)&&r.isLastItemOfArray(i,r.item.children)&&(r.open=!1)},null,8,["config","onFocusout"])]))),128))])],64)):($(),Re(r.AutoLink,{key:1,config:i,onFocusout:a=>r.isLastItemOfArray(i,r.item.children)&&(r.open=!1)},null,8,["config","onFocusout"]))]))),128))],512),[[_o,r.open]])]),_:1})],2)}const Yv=xe(Bv,[["render",Gv],["__file","VPNavbarDropdown.vue"]]),ff=(e,t="")=>mt(e)?Un(Vn(t,e)):"children"in e?{...e,children:e.children.map(n=>ff(n,Vn(t,e.prefix)))}:{...e,link:of(e.link)?Un(Vn(t,e.link)).link:e.link},Jv=()=>{const e=He();return R(()=>(e.value.navbar||[]).map(t=>ff(t)))},Xv=()=>{const e=He(),t=R(()=>e.value.repo),n=R(()=>t.value?sf(t.value):null),r=R(()=>t.value&&!Oo(t.value)?`https://github.com/${t.value}`:t.value),o=R(()=>r.value?e.value.repoLabel?e.value.repoLabel:n.value===null?"Source":n.value:null);return R(()=>!r.value||!o.value?[]:[{text:o.value,link:r.value}])},Qv=()=>{const e=Ht(),t=i_(),n=Fr(),r=pc(),o=oi(),s=Y0(),i=He();return R(()=>{const a=Object.keys(r.value.locales);if(a.length<2)return[];const l=e.path,u=e.fullPath;return[{text:`${i.value.selectLanguageText}`,ariaLabel:`${i.value.selectLanguageAriaLabel??i.value.selectLanguageText}`,children:a.map(c=>{var b,S;const p=((b=r.value.locales)==null?void 0:b[c])??{},d=((S=s.value.locales)==null?void 0:S[c])??{},m=`${p.lang}`,v=d.selectLanguageName??m;if(m===o.value.lang)return{text:v,activeMatch:".",link:e.fullPath};const y=l.replace(n.value,c);return{text:v,link:t.value.some(g=>g===y)?u.replace(l,y):d.home??c}})}]})},Zv="719px",e1={mobile:Zv};var Tr;(function(e){e.Mobile="mobile"})(Tr||(Tr={}));const t1={[Tr.Mobile]:Number.parseInt(e1.mobile.replace("px",""),10)},df=(e,t)=>{const n=t1[e];Number.isInteger(n)&&(lt("orientationchange",()=>{t(n)},!1),lt("resize",()=>{t(n)},!1),Ge(()=>{t(n)}))},n1=he({__name:"VPNavbarItems",setup(e,{expose:t}){t();const n=Jv(),r=Qv(),o=Xv(),s=fe(!1),i=R(()=>He().value.navbarLabel??"site navigation"),a=R(()=>[...n.value,...r.value,...o.value]);df(Tr.Mobile,u=>{s.value=window.innerWidth<u});const l={navbarConfig:n,navbarSelectLanguage:r,navbarRepo:o,isMobile:s,navbarLabel:i,navbarLinks:a,VPNavbarDropdown:Yv,get AutoLink(){return Kn}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),r1=["aria-label"];function o1(e,t,n,r,o,s){return r.navbarLinks.length?($(),te("nav",{key:0,class:"vp-navbar-items","aria-label":r.navbarLabel},[($(!0),te(Ee,null,Ft(r.navbarLinks,i=>($(),te("div",{key:i.text,class:"vp-navbar-item"},["children"in i?($(),Re(r.VPNavbarDropdown,{key:0,class:tt({mobile:r.isMobile}),item:i},null,8,["class","item"])):($(),Re(r.AutoLink,{key:1,config:i},null,8,["config"]))]))),128))],8,r1)):Ve("",!0)}const pf=xe(n1,[["render",o1],["__file","VPNavbarItems.vue"]]),s1={},i1={class:"dark-icon",viewBox:"0 0 32 32"};function a1(e,t){return $(),te("svg",i1,t[0]||(t[0]=[G("path",{d:"M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z",fill:"currentColor"},null,-1)]))}const l1=xe(s1,[["render",a1],["__file","VPDarkIcon.vue"]]),u1={},c1={class:"light-icon",viewBox:"0 0 32 32"};function f1(e,t){return $(),te("svg",c1,t[0]||(t[0]=[up('<path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path>',9)]))}const d1=xe(u1,[["render",f1],["__file","VPLightIcon.vue"]]),p1=he({__name:"VPToggleColorModeButton",setup(e,{expose:t}){t();const n=He(),r=Ai(),s={themeLocale:n,isDarkMode:r,toggleColorMode:()=>{r.value=!r.value},VPDarkIcon:l1,VPLightIcon:d1};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),h1=["title"];function g1(e,t,n,r,o,s){return $(),te("button",{type:"button",class:"vp-toggle-color-mode-button",title:r.themeLocale.toggleColorMode,onClick:r.toggleColorMode},[co(oe(r.VPLightIcon,null,null,512),[[_o,!r.isDarkMode]]),co(oe(r.VPDarkIcon,null,null,512),[[_o,r.isDarkMode]])],8,h1)}const _1=xe(p1,[["render",g1],["__file","VPToggleColorModeButton.vue"]]),m1=he({__name:"VPToggleSidebarButton",emits:["toggle"],setup(e,{expose:t}){t();const r={themeLocale:He()};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),v1=["title"];function y1(e,t,n,r,o,s){return $(),te("div",{class:"vp-toggle-sidebar-button",title:r.themeLocale.toggleSidebar,"aria-expanded":"false",role:"button",tabindex:"0",onClick:t[0]||(t[0]=i=>e.$emit("toggle"))},t[1]||(t[1]=[G("div",{class:"icon","aria-hidden":"true"},[G("span"),G("span"),G("span")],-1)]),8,v1)}const b1=xe(m1,[["render",y1],["__file","VPToggleSidebarButton.vue"]]),E1=he({__name:"VPNavbar",emits:["toggleSidebar"],setup(e,{expose:t}){t();const n=vc("SearchBox")?Gs("SearchBox"):()=>null,r=He(),o=fe(null),s=fe(null),i=fe(0),a=R(()=>i.value?{maxWidth:`${i.value}px`}:{}),l=(f,c)=>{var m;const p=(m=f==null?void 0:f.ownerDocument.defaultView)==null?void 0:m.getComputedStyle(f,null)[c],d=Number.parseInt(p,10);return Number.isNaN(d)?0:d};df(Tr.Mobile,f=>{var p;const c=l(o.value,"paddingLeft")+l(o.value,"paddingRight");window.innerWidth<f?i.value=0:i.value=o.value.offsetWidth-c-(((p=s.value)==null?void 0:p.offsetWidth)??0)});const u={SearchBox:n,themeLocale:r,navbar:o,navbarBrand:s,linksWrapperMaxWidth:i,linksWrapperStyle:a,getCssValue:l,VPNavbarBrand:Vv,VPNavbarItems:pf,VPToggleColorModeButton:_1,VPToggleSidebarButton:b1};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),S1={ref:"navbar",class:"vp-navbar","vp-navbar":""},A1={ref:"navbarBrand"};function w1(e,t,n,r,o,s){return $(),te("header",S1,[oe(r.VPToggleSidebarButton,{onToggle:t[0]||(t[0]=i=>e.$emit("toggleSidebar"))}),G("span",A1,[oe(r.VPNavbarBrand)],512),G("div",{class:"vp-navbar-items-wrapper",style:xr(r.linksWrapperStyle)},[Ie(e.$slots,"before"),oe(r.VPNavbarItems,{class:"vp-hide-mobile"}),Ie(e.$slots,"after"),r.themeLocale.colorModeSwitch?($(),Re(r.VPToggleColorModeButton,{key:0})):Ve("",!0),oe(r.SearchBox)],4)],512)}const C1=xe(E1,[["render",w1],["__file","VPNavbar.vue"]]),T1={},k1={class:"edit-icon",viewBox:"0 0 1024 1024"};function O1(e,t){return $(),te("svg",k1,t[0]||(t[0]=[G("g",{fill:"currentColor"},[G("path",{d:"M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"}),G("path",{d:"M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"})],-1)]))}const x1=xe(T1,[["render",O1],["__file","VPEditIcon.vue"]]),D1=()=>{const e=He(),t=jn(),n=St();return R(()=>{var o;return n.value.contributors??e.value.contributors??!0?((o=t.value.git)==null?void 0:o.contributors)??null:null})},P1=()=>{const e=He(),t=jn(),n=St();return R(()=>{if(!(n.value.editLink??e.value.editLink??!0))return null;const{repo:o,docsRepo:s=o,docsBranch:i="main",docsDir:a="",editLinkText:l}=e.value;if(!s)return null;const u=nv({docsRepo:s,docsBranch:i,docsDir:a,filePathRelative:t.value.filePathRelative,editLinkPattern:n.value.editLinkPattern??e.value.editLinkPattern});return u?{text:l??"Edit this page",link:u}:null})},R1=()=>{const e=He(),t=jn(),n=St();return R(()=>{var s;return!(n.value.lastUpdated??e.value.lastUpdated??!0)||!((s=t.value.git)!=null&&s.updatedTime)?null:new Date(t.value.git.updatedTime).toLocaleString()})},I1=he({__name:"VPPageMeta",setup(e,{expose:t}){t();const n=He(),r=P1(),o=R1(),s=D1(),i={themeLocale:n,editLink:r,lastUpdated:o,contributors:s,VPEditIcon:x1,get AutoLink(){return Kn}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),L1={class:"vp-page-meta"},N1={key:0,class:"vp-meta-item edit-link"},V1={class:"vp-meta-item git-info"},M1={key:0,class:"vp-meta-item last-updated"},F1={class:"meta-item-label"},B1={class:"meta-item-info"},$1={key:1,class:"vp-meta-item contributors"},H1={class:"meta-item-label"},U1={class:"meta-item-info"},j1=["title"];function K1(e,t,n,r,o,s){const i=Gs("ClientOnly");return $(),te("footer",L1,[r.editLink?($(),te("div",N1,[oe(r.AutoLink,{class:"label",config:r.editLink},{before:Ne(()=>[oe(r.VPEditIcon)]),_:1},8,["config"])])):Ve("",!0),G("div",V1,[r.lastUpdated?($(),te("div",M1,[G("span",F1,ce(r.themeLocale.lastUpdatedText)+": ",1),oe(i,null,{default:Ne(()=>[G("span",B1,ce(r.lastUpdated),1)]),_:1})])):Ve("",!0),r.contributors&&r.contributors.length?($(),te("div",$1,[G("span",H1,ce(r.themeLocale.contributorsText)+": ",1),G("span",U1,[($(!0),te(Ee,null,Ft(r.contributors,(a,l)=>($(),te(Ee,{key:l},[G("span",{class:"contributor",title:`email: ${a.email}`},ce(a.name),9,j1),l!==r.contributors.length-1?($(),te(Ee,{key:0},[Zt(", ")],64)):Ve("",!0)],64))),128))])])):Ve("",!0)])])}const W1=xe(I1,[["render",K1],["__file","VPPageMeta.vue"]]),z1=()=>{const e=An(),t=Ht();return n=>{n&&(Ec(n)?t.path!==n&&e.push(n):Mr(n)?window.open(n):e.push(encodeURI(n)))}},Fl=(e,t)=>e===!1?!1:mt(e)?Un(e,t):ei(e)?{...e,link:Un(e.link,t).link}:null,Is=(e,t,n)=>{const r=e.findIndex(s=>s.link===t);if(r!==-1){const s=e[r+n];return s?s.link?s:"prefix"in s&&!Er(s.prefix).notFound?{...s,link:s.prefix}:null:null}for(const s of e)if("children"in s){const i=Is(s.children,t,n);if(i)return i}const o=e.findIndex(s=>"prefix"in s&&s.prefix===t);if(o!==-1){const s=e[o+n];return s?s.link?s:"prefix"in s&&!Er(s.prefix).notFound?{...s,link:s.prefix}:null:null}return null},q1=()=>{const e=St(),t=He(),n=Ci(),r=Ht(),o=R(()=>{const i=Fl(e.value.prev,r.path);return i===!1?null:i??(t.value.prev===!1?null:Is(n.value,r.path,-1))}),s=R(()=>{const i=Fl(e.value.next,r.path);return i===!1?null:i??(t.value.next===!1?null:Is(n.value,r.path,1))});return{prevLink:o,nextLink:s}},G1=he({__name:"VPPageNav",setup(e,{expose:t}){t();const n=He(),r=z1(),{prevLink:o,nextLink:s}=q1(),i=R(()=>n.value.pageNavbarLabel??"page navigation");lt("keydown",l=>{l.altKey&&(l.key==="ArrowRight"?s.value&&(r(s.value.link),l.preventDefault()):l.key==="ArrowLeft"&&o.value&&(r(o.value.link),l.preventDefault()))});const a={themeLocale:n,navigate:r,prevLink:o,nextLink:s,navbarLabel:i,get AutoLink(){return Kn}};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),Y1=["aria-label"],J1={class:"hint"},X1={class:"link"},Q1={class:"hint"},Z1={class:"link"};function ey(e,t,n,r,o,s){return r.prevLink||r.nextLink?($(),te("nav",{key:0,class:"vp-page-nav","aria-label":r.navbarLabel},[r.prevLink?($(),Re(r.AutoLink,{key:0,class:"prev",config:r.prevLink},{default:Ne(()=>[G("div",J1,[t[0]||(t[0]=G("span",{class:"arrow left"},null,-1)),Zt(" "+ce(r.themeLocale.prev??"Prev"),1)]),G("div",X1,[G("span",null,ce(r.prevLink.text),1)])]),_:1},8,["config"])):Ve("",!0),r.nextLink?($(),Re(r.AutoLink,{key:1,class:"next",config:r.nextLink},{default:Ne(()=>[G("div",Q1,[Zt(ce(r.themeLocale.next??"Next")+" ",1),t[1]||(t[1]=G("span",{class:"arrow right"},null,-1))]),G("div",Z1,[G("span",null,ce(r.nextLink.text),1)])]),_:1},8,["config"])):Ve("",!0)],8,Y1)):Ve("",!0)}const ty=xe(G1,[["render",ey],["__file","VPPageNav.vue"]]),ny=he({__name:"VPPage",setup(e,{expose:t}){t(),rv();const n={VPPageMeta:W1,VPPageNav:ty,get Content(){return ii}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),ry={class:"vp-page"},oy={class:"theme-default-content","vp-content":""};function sy(e,t,n,r,o,s){return $(),te("main",ry,[Ie(e.$slots,"top"),G("div",oy,[Ie(e.$slots,"content-top"),oe(r.Content),Ie(e.$slots,"content-bottom")]),oe(r.VPPageMeta),oe(r.VPPageNav),Ie(e.$slots,"bottom")])}const iy=xe(ny,[["render",sy],["__file","VPPage.vue"]]),ay=he({__name:"VPSidebarItem",props:{item:{},depth:{default:0}},setup(e,{expose:t}){t();const n=e,{item:r,depth:o}=pu(n),s=Ht(),i=An(),a=R(()=>"collapsible"in r.value&&r.value.collapsible),l=R(()=>rf(r.value,s)),u=R(()=>({"vp-sidebar-item":!0,"vp-sidebar-heading":o.value===0,active:l.value,collapsible:a.value})),f=R(()=>a.value?l.value:!0),[c,p]=Vg(f.value),d=y=>{a.value&&(y.preventDefault(),p())},m=i.afterEach(()=>{sn(()=>{c.value=f.value})});qs(()=>{m()});const v={props:n,item:r,depth:o,route:s,router:i,collapsible:a,isActive:l,itemClass:u,isOpenDefault:f,isOpen:c,toggleIsOpen:p,onClick:d,unregisterRouterHook:m,VPDropdownTransition:cf,get AutoLink(){return Kn}};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),ly={class:"vp-sidebar-children"};function uy(e,t,n,r,o,s){const i=Gs("VPSidebarItem",!0);return $(),te("li",null,[r.item.link?($(),Re(r.AutoLink,{key:0,class:tt(r.itemClass),config:r.item},null,8,["class","config"])):($(),te("p",{key:1,tabindex:"0",class:tt(r.itemClass),onClick:r.onClick,onKeydown:qp(r.onClick,["enter"])},[Zt(ce(r.item.text)+" ",1),r.collapsible?($(),te("span",{key:0,class:tt(["arrow",r.isOpen?"down":"right"])},null,2)):Ve("",!0)],34)),"children"in r.item&&r.item.children.length?($(),Re(r.VPDropdownTransition,{key:2},{default:Ne(()=>[co(G("ul",ly,[($(!0),te(Ee,null,Ft(r.item.children,a=>($(),Re(i,{key:`${r.depth}${a.text}${a.link}`,item:a,depth:r.depth+1},null,8,["item","depth"]))),128))],512),[[_o,r.isOpen]])]),_:1})):Ve("",!0)])}const cy=xe(ay,[["render",uy],["__file","VPSidebarItem.vue"]]),fy=he({__name:"VPSidebarItems",setup(e,{expose:t}){t();const n=Ht(),r=Ci();Ge(()=>{$e(()=>n.hash,s=>{const i=document.querySelector(".vp-sidebar");if(!i)return;const a=document.querySelector(`.vp-sidebar a.vp-sidebar-item[href="${n.path}${s}"]`);if(!a)return;const{top:l,height:u}=i.getBoundingClientRect(),{top:f,height:c}=a.getBoundingClientRect();f<l?a.scrollIntoView(!0):f+c>l+u&&a.scrollIntoView(!1)})});const o={route:n,sidebarItems:r,VPSidebarItem:cy};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),dy={key:0,class:"vp-sidebar-items"};function py(e,t,n,r,o,s){return r.sidebarItems.length?($(),te("ul",dy,[($(!0),te(Ee,null,Ft(r.sidebarItems,i=>($(),Re(r.VPSidebarItem,{key:`${i.text}${i.link}`,item:i},null,8,["item"]))),128))])):Ve("",!0)}const hy=xe(fy,[["render",py],["__file","VPSidebarItems.vue"]]),gy=he({__name:"VPSidebar",setup(e,{expose:t}){t();const n={VPNavbarItems:pf,VPSidebarItems:hy};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),_y={class:"vp-sidebar","vp-sidebar":""};function my(e,t,n,r,o,s){return $(),te("aside",_y,[oe(r.VPNavbarItems),Ie(e.$slots,"top"),oe(r.VPSidebarItems),Ie(e.$slots,"bottom")])}const vy=xe(gy,[["render",my],["__file","VPSidebar.vue"]]),yy=he({__name:"Layout",setup(e,{expose:t}){t();const n=jn(),r=St(),o=He(),s=R(()=>r.value.navbar!==!1&&o.value.navbar!==!1),i=Ci(),a=fe(!1),l=g=>{a.value=typeof g=="boolean"?g:!a.value},u={x:0,y:0},f=g=>{u.x=g.changedTouches[0].clientX,u.y=g.changedTouches[0].clientY},c=g=>{const E=g.changedTouches[0].clientX-u.x,L=g.changedTouches[0].clientY-u.y;Math.abs(E)>Math.abs(L)&&Math.abs(E)>40&&(E>0&&u.x<=80?l(!0):l(!1))},p=R(()=>r.value.externalLinkIcon??o.value.externalLinkIcon??!0),d=R(()=>[{"no-navbar":!s.value,"no-sidebar":!i.value.length,"sidebar-open":a.value,"external-link-icon":p.value},r.value.pageClass]);let m;Ge(()=>{m=An().afterEach(()=>{l(!1)})}),Co(()=>{m()});const v=nf(),y=v.resolve,b=v.pending,S={page:n,frontmatter:r,themeLocale:o,shouldShowNavbar:s,sidebarItems:i,isSidebarOpen:a,toggleSidebar:l,touchStart:u,onTouchStart:f,onTouchEnd:c,enableExternalLinkIcon:p,containerClass:d,get unregisterRouterHook(){return m},set unregisterRouterHook(g){m=g},scrollPromise:v,onBeforeEnter:y,onBeforeLeave:b,VPHome:Rv,VPNavbar:C1,VPPage:iy,VPSidebar:vy};return Object.defineProperty(S,"__isScriptSetup",{enumerable:!1,value:!0}),S}});function by(e,t,n,r,o,s){return $(),te("div",{class:tt(["vp-theme-container",r.containerClass]),"vp-container":"",onTouchstart:r.onTouchStart,onTouchend:r.onTouchEnd},[Ie(e.$slots,"navbar",{},()=>[r.shouldShowNavbar?($(),Re(r.VPNavbar,{key:0,onToggleSidebar:r.toggleSidebar},{before:Ne(()=>[Ie(e.$slots,"navbar-before")]),after:Ne(()=>[Ie(e.$slots,"navbar-after")]),_:3})):Ve("",!0)]),G("div",{class:"vp-sidebar-mask",onClick:t[0]||(t[0]=i=>r.toggleSidebar(!1))}),Ie(e.$slots,"sidebar",{},()=>[oe(r.VPSidebar,null,{top:Ne(()=>[Ie(e.$slots,"sidebar-top")]),bottom:Ne(()=>[Ie(e.$slots,"sidebar-bottom")]),_:3})]),Ie(e.$slots,"page",{},()=>[r.frontmatter.home?($(),Re(r.VPHome,{key:0})):($(),Re(Zs,{key:1,name:"fade-slide-y",mode:"out-in",onBeforeEnter:r.onBeforeEnter,onBeforeLeave:r.onBeforeLeave},{default:Ne(()=>[($(),Re(r.VPPage,{key:r.page.path},{top:Ne(()=>[Ie(e.$slots,"page-top")]),"content-top":Ne(()=>[Ie(e.$slots,"page-content-top")]),"content-bottom":Ne(()=>[Ie(e.$slots,"page-content-bottom")]),bottom:Ne(()=>[Ie(e.$slots,"page-bottom")]),_:3}))]),_:3},8,["onBeforeEnter","onBeforeLeave"]))])],34)}const hf=xe(yy,[["render",by],["__file","Layout.vue"]]),Ey=he({__name:"NotFound",setup(e,{expose:t}){t();const n=Fr(),r=He(),o=r.value.notFound??["Not Found"],s=()=>o[Math.floor(Math.random()*o.length)],i=r.value.home??n.value,a=r.value.backToHome??"Back to home",l={routeLocale:n,themeLocale:r,messages:o,getMsg:s,homeLink:i,homeText:a,get RouteLink(){return Po}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Sy={class:"vp-theme-container","vp-container":""},Ay={class:"page"},wy={class:"theme-default-content","vp-content":""};function Cy(e,t,n,r,o,s){return $(),te("div",Sy,[G("main",Ay,[G("div",wy,[t[0]||(t[0]=G("h1",null,"404",-1)),G("blockquote",null,ce(r.getMsg()),1),oe(r.RouteLink,{to:r.homeLink},{default:Ne(()=>[Zt(ce(r.homeText),1)]),_:1},8,["to"])])])])}const Ty=xe(Ey,[["render",Cy],["__scopeId","data-v-9607bbd4"],["__file","NotFound.vue"]]),ky=Ut({enhance({app:e,router:t}){vc("Badge")||e.component("Badge",fv);const n=t.options.scrollBehavior;t.options.scrollBehavior=async(...r)=>(await nf().wait(),n(...r))},setup(){X0(),lv()},layouts:{Layout:hf,NotFound:Ty}}),Oy=Object.freeze(Object.defineProperty({__proto__:null,default:ky},Symbol.toStringTag,{value:"Module"}));function xy(e){return Fs()?(Yl(e),!0):!1}function Ti(e){return typeof e=="function"?e():Xt(e)}const Dy=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Py=Object.prototype.toString,Ry=e=>Py.call(e)==="[object Object]",Iy=()=>{};function Ly(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const gf=e=>e();function Ny(e=gf){const t=fe(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Pr(t),pause:n,resume:r,eventFilter:o}}function Vy(e){return Nr()}function My(e,t,n={}){const{eventFilter:r=gf,...o}=n;return $e(e,Ly(r,t),o)}function Fy(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:a,isActive:l}=Ny(r);return{stop:My(e,t,{...o,eventFilter:s}),pause:i,resume:a,isActive:l}}function By(e,t=!0,n){Vy()?Ge(e,n):t?e():sn(e)}function $y(e){var t;const n=Ti(e);return(t=n==null?void 0:n.$el)!=null?t:n}const vo=Dy?window:void 0;function Bl(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=vo):[t,n,r,o]=e,!t)return Iy;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(f=>f()),s.length=0},a=(f,c,p,d)=>(f.addEventListener(c,p,d),()=>f.removeEventListener(c,p,d)),l=$e(()=>[$y(t),Ti(o)],([f,c])=>{if(i(),!f)return;const p=Ry(c)?{...c}:c;s.push(...n.flatMap(d=>r.map(m=>a(f,d,m,p))))},{immediate:!0,flush:"post"}),u=()=>{l(),i()};return xy(u),u}const Xr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Qr="__vueuse_ssr_handlers__",Hy=Uy();function Uy(){return Qr in Xr||(Xr[Qr]=Xr[Qr]||{}),Xr[Qr]}function jy(e,t){return Hy[e]||t}function Ky(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 Wy={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()}},$l="vueuse-storage";function zy(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=vo,eventFilter:p,onError:d=w=>{console.error(w)},initOnMounted:m}=r,v=(f?vt:fe)(typeof t=="function"?t():t);if(!n)try{n=jy("getDefaultStorage",()=>{var w;return(w=vo)==null?void 0:w.localStorage})()}catch(w){d(w)}if(!n)return v;const y=Ti(t),b=Ky(y),S=(o=r.serializer)!=null?o:Wy[b],{pause:g,resume:E}=Fy(v,()=>j(v.value),{flush:s,deep:i,eventFilter:p});c&&a&&By(()=>{Bl(c,"storage",Q),Bl(c,$l,B),m&&Q()}),m||Q();function L(w,N){c&&c.dispatchEvent(new CustomEvent($l,{detail:{key:e,oldValue:w,newValue:N,storageArea:n}}))}function j(w){try{const N=n.getItem(e);if(w==null)L(N,null),n.removeItem(e);else{const k=S.write(w);N!==k&&(n.setItem(e,k),L(N,k))}}catch(N){d(N)}}function Y(w){const N=w?w.newValue:n.getItem(e);if(N==null)return l&&y!=null&&n.setItem(e,S.write(y)),y;if(!w&&u){const k=S.read(N);return typeof u=="function"?u(k,y):b==="object"&&!Array.isArray(k)?{...y,...k}:k}else return typeof N!="string"?N:S.read(N)}function Q(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){v.value=y;return}if(!(w&&w.key!==e)){g();try{(w==null?void 0:w.newValue)!==S.write(v.value)&&(v.value=Y(w))}catch(N){d(N)}finally{w?sn(E):E()}}}}function B(w){Q(w.detail)}return v}function qy(e,t,n={}){const{window:r=vo}=n;return zy(e,t,r==null?void 0:r.sessionStorage,n)}const Gy=Object.entries;var Yy={autoLocale:!1,switchLocale:!1,localeConfig:{"/eng/":["en-US"]},defaultLocale:"/eng/",localeFallback:!0,defaultBehavior:"defaultLocale"};const Jy=Yy;Gy(Jy.localeConfig);qy("VUEPRESS_REDIRECT_LOCALES",{});const Xy=Ut({setup(){},rootComponents:[]}),Qy=Object.freeze(Object.defineProperty({__proto__:null,default:Xy},Symbol.toStringTag,{value:"Module"}));var ae=(e=>(e.Collaborator="collaborator",e.Author="author",e.TechLead="tech lead",e.TeamLead="team lead",e.Developer="developer",e))(ae||{}),pe=(e=>(e.ActiveDeveloped="actively-developed",e.PassivelyMaintained="passively-maintained",e.AsIs="as-is",e.Experimental="experimental",e.LookingForMaintainer="looking-for-maintainer",e.Deprecated="deprecated",e))(pe||{}),I=(e=>(e.C="C",e.Go="Go",e.JavaScript="JS",e.TypeScript="TS",e.Rust="Rust",e.Python="Python",e.Php="PHP",e.Deno="Deno",e.NodeJS="NodeJS",e.Flask="Flask",e.React="React",e.Antd="Antd",e.Postgresql="PostgreSQL",e.Docker="Docker",e.Drone="Drone CI",e.Woodpecker="Woodpecker CI",e.Bash="Bash",e.TreeSitter="TreeSitter",e.Nix="Nix",e.Lua="Lua",e.Sqlite="Sqlite",e.Vue="Vue",e.Vuepress="Vuepress",e.Godot="Godot",e.Haskell="Haskell",e))(I||{});const Zy=[{name:"nixeovim",url:"/pleshevskiy/nixeovim",description:"Configure and build neovim editor using nix",roles:[ae.Author],technologies:[I.Nix],startDate:new Date("2024-04-24"),status:pe.ActiveDeveloped},{name:"picsg",url:"/pleshevskiy/picsg",description:"A tool for steganographing information in a picture encoded using the Vernam cipher.",roles:[ae.Author],technologies:[I.Haskell],startDate:new Date("2024-04-13"),endDate:new Date("2024-07-25"),status:pe.AsIs},{name:"Mindustry tools",url:"/pleshevskiy/mindustry-tools",description:"Tools for the Mindustry game",roles:[ae.Author],technologies:[I.Nix,I.Godot],startDate:new Date("2024-01-07"),status:pe.PassivelyMaintained},{name:"Master Progress Rosmintrud tools",url:"https://rosmintrud.masterprogress.ru",description:"Internal service to prepare documents for the rosmintrud (SPA)",roles:[ae.TechLead],technologies:[I.Deno,I.Sqlite,I.TypeScript,I.Vue,I.Docker,I.Woodpecker,I.Nix],startDate:new Date("2023-07-03"),status:pe.PassivelyMaintained},{name:"yandexgpt_tg_bot",url:"/pleshevskiy/yandexgpt_tg_bot",description:"The Telegram bot to describe article with link by YandexGPT.",roles:[ae.Author],technologies:[I.JavaScript,I.NodeJS,I.Nix],startDate:new Date("2023-06-27"),endDate:new Date("2024-07-25"),status:pe.AsIs},{name:"tree-sitter-plpgsql",url:"/pleshevskiy/tree-sitter-plpgsql",description:"plpgsql grammar for tree-sitter",roles:[ae.Author],technologies:[I.C,I.JavaScript,I.TreeSitter,I.Nix],startDate:new Date("2023-01-05"),status:pe.PassivelyMaintained},{name:"wd2",url:"/pleshevskiy/wd2",description:"A wrapper over d2 which allows to use additional configs from d2 file",roles:[ae.Author],technologies:[I.Bash,I.Nix],startDate:new Date("2022-12-12"),endDate:new Date("2023-07-31"),status:pe.AsIs},{name:"tree-sitter-d2",url:"/pleshevskiy/tree-sitter-d2",description:"d2 grammar for tree-sitter",roles:[ae.Author],technologies:[I.C,I.JavaScript,I.TreeSitter,I.Nix],startDate:new Date("2022-12-04"),status:pe.ActiveDeveloped},{name:"nix2lua",url:"/mynix/nix2lua",description:"This is a small but functional library that converts your nix configurations into lua format.",roles:[ae.Author],technologies:[I.Nix,I.Lua],startDate:new Date("2022-11-22"),status:pe.PassivelyMaintained},{name:"vnetod",url:"/pleshevskiy/vnetod",description:"Dotenv section switcher",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2022-07-29"),status:pe.PassivelyMaintained},{name:"estring",url:"/pleshevskiy/estring",description:"A simple way to parse a string using type annotations.",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2022-07-23"),endDate:new Date("2024-07-25"),status:pe.AsIs},{name:"enve",url:"/pleshevskiy/enve",description:"It helps you work with environment variables and convert it to any type using only type annotations",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2022-07-18"),endDate:new Date("2024-07-25"),status:pe.AsIs},{name:"docker stack drone plugin",url:"/pleshevskiy/docker_stack",description:"Deploy to production using `docker stack deploy`",roles:[ae.Author],technologies:[I.Docker,I.Drone,I.Woodpecker],startDate:new Date("2022-06-06"),endDate:new Date("2024-07-25"),status:pe.AsIs},{name:"dexios",url:"/github/dexios",description:"Dexios is a fast, secure, and open source command-line encryption tool.",roles:[ae.Collaborator],technologies:[I.Rust],startDate:new Date("2022-06-01"),endDate:new Date("2023-02-28")},{name:"recipes",url:"/pleshevskiy/recipes",description:"Site with recipes which cares about privacy",roles:[ae.Author],technologies:[I.TypeScript,I.Deno,I.Rust],startDate:new Date("2022-05-04"),status:pe.PassivelyMaintained},{name:"pleshevski.ru",url:"/pleshevskiy/pleshevski.ru",description:"Source code of my personal site",roles:[ae.Author],technologies:[I.TypeScript,I.Vue,I.Vuepress,I.Nix],startDate:new Date("2022-03-16"),status:pe.PassivelyMaintained},{name:"paren",url:"/pleshevskiy/paren",description:"Library for parsing and rendering information.",roles:[ae.Author],technologies:[I.TypeScript,I.Deno],startDate:new Date("2022-03-14"),endDate:new Date("2024-07-25"),status:pe.Experimental},{name:"hwt",url:"/pleshevskiy/hwt",description:"healthy workaholic timer – A tool that keeps you from breaking your health by working all day.",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2022-02-04"),endDate:new Date("2024-07-25"),status:pe.AsIs},{name:"ood_persistence",url:"/pleshevskiy/ood_persistence",description:"Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture ",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2021-10-12"),endDate:new Date("2021-10-21"),status:pe.Deprecated},{name:"migra",url:"/pleshevskiy/migra",description:"Simple SQL migration manager for your project.",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2021-01-31"),endDate:new Date("2022-03-17"),status:pe.AsIs},{name:"espruino-starter",url:"/pleshevskiy/espruino-starter",description:"Quickly start creating your new project on the espruino board or a board based on it.",roles:[ae.Author],technologies:[I.JavaScript],startDate:new Date("2021-08-23"),status:pe.AsIs},{name:"react-rest-request",url:"/pleshevskiy/react-rest-request",description:"Minimalistic REST API client for React inspired by Apollo.",roles:[ae.Author],technologies:[I.TypeScript,I.React],startDate:new Date("2020-10-04"),endDate:new Date("2023-03-02"),status:pe.Deprecated},{name:"sonic-channel",url:"/pleshevskiy/sonic-channel",description:"Rust client for sonic search backend.",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2020-07-18"),status:pe.PassivelyMaintained},{name:"itconfig",url:"/pleshevskiy/itconfig",description:"Easy build a configs from environment variables and use it in globally.",roles:[ae.Author],technologies:[I.Rust],startDate:new Date("2019-12-22"),endDate:new Date("2022-07-24"),status:pe.Deprecated},{name:"it-fsm",url:"/pleshevskiy/it-fsm",description:"Simple full-featured finite state machine for your project",roles:[ae.Author],technologies:[I.TypeScript,I.NodeJS,I.Deno],startDate:new Date("2019-10-11"),status:pe.PassivelyMaintained},{name:"Cabinet Master Progress",url:"https://cabinet.masterprogress.ru",description:"Student's cabinet of the educational center Master Progress (SSR + SPA)",roles:[ae.TechLead],technologies:[I.Python,I.Flask,I.Postgresql,I.TypeScript,I.React,I.Docker,I.Woodpecker,I.Nix],startDate:new Date("2019-09-22"),status:pe.PassivelyMaintained},{name:"genrss",url:"/pleshevskiy/genrss",description:"RSS generator for python",roles:[ae.Author],technologies:[I.Python],startDate:new Date("2019-07-23"),status:pe.AsIs},{name:"marshmallow_pageinfo",url:"/pleshevskiy/marshmallow_pageinfo",description:"Page info marshmallow schema for api",roles:[ae.Author],technologies:[I.Python],startDate:new Date("2019-10-05"),endDate:new Date("2023-03-02"),status:pe.AsIs},{name:"Binary Management",url:"https://www.binarymanagement.com",description:"Project management tool for interior designers",roles:[ae.Developer,ae.TechLead,ae.TeamLead],technologies:[I.TypeScript,I.NodeJS,I.React,I.Antd,I.Docker,I.Drone,I.Rust,I.Nix],startDate:new Date("2018-09-15"),status:pe.ActiveDeveloped},{name:"Core Spirit",url:"https://corespirit.com",description:"Social platform focusing on human and planetary enhancement",roles:[ae.Developer],technologies:[I.TypeScript,I.NodeJS,I.Go,I.Python,I.React,I.Docker,I.Drone],startDate:new Date("2018-09-05"),endDate:new Date("2019-12-31")},{name:"Master Progress",url:"https://masterprogress.ru",description:"Main website of the educational center Master Progress (SSR + Forms)",roles:[ae.TechLead],technologies:[I.Python,I.Flask,I.JavaScript,I.Nix],startDate:new Date("2018-04-10"),status:pe.PassivelyMaintained},{name:"ictmpl",url:"/pleshevskiy/ictmpl",description:"Generate projects from templates",roles:[ae.Author],technologies:[I.Python],startDate:new Date("2018-06-30"),endDate:new Date("2023-03-02"),status:pe.AsIs},{name:"jjcrypto",url:"/pleshevskiy/jjcrypto",description:"Javascript encoder and decoder",roles:[ae.Author],technologies:[I.Php],startDate:new Date("2015-11-01"),endDate:new Date("2015-11-01"),status:pe.AsIs}];function eb(e){return e.toLocaleDateString(void 0,{year:"numeric",month:"2-digit",day:"2-digit"})}const tb=e=>e.url.startsWith("https://")?e.url:new URL(e.url,"https://git.pleshevski.ru").toString(),nb=Object.freeze(Object.defineProperty({__proto__:null,getExternalLink:tb},Symbol.toStringTag,{value:"Module"}));function er(e){return(e==null?void 0:e.valueOf())??1/0}const rb={name:"WorksPage",computed:{tableTheme(){return this.$themeLocale.worksTable??{}}}},ob=he({...rb,setup(e,{expose:t}){t();const n=R(()=>Zy.concat().sort((o,s)=>er(s.endDate)-er(o.endDate)||er(s.startDate)-er(o.startDate))),r={date2num:er,works:n,get renderDate(){return eb},get w(){return nb}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),sb=["href"],ib=["innerHTML"],ab={key:0};function lb(e,t,n,r,o,s){return $(),te("table",null,[G("thead",null,[G("tr",null,[G("th",null,ce(s.tableTheme.name),1),G("th",null,ce(s.tableTheme.description),1),G("th",null,ce(s.tableTheme.role),1),G("th",null,ce(s.tableTheme.technologies),1),G("th",null,ce(s.tableTheme.status),1),G("th",null,ce(s.tableTheme.dates),1)])]),G("tbody",null,[($(!0),te(Ee,null,Ft(r.works,i=>($(),te("tr",null,[G("td",null,[G("a",{rel:"nofollow noopener",href:r.w.getExternalLink(i)},ce(i.name),9,sb)]),G("td",null,ce(i.description),1),G("td",{innerHTML:i.roles.join(", ")},null,8,ib),G("td",null,ce(i.technologies.join(", ")),1),G("td",null,ce(i.status),1),G("td",null,[G("div",null,[G("small",{class:tt({grey:i.endDate})},ce(r.renderDate(i.startDate)),3)]),i.endDate?($(),te("div",ab,[G("small",null,ce(r.renderDate(i.endDate)),1)])):Ve("",!0)])]))),256))])])}const ub=xe(ob,[["render",lb],["__file","ChronologicalWorksTable.vue"]]),cb={__name:"WorksPage",setup(e,{expose:t}){t();const n={ParentLayout:hf,get ChronologicalWorksTable(){return ub}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},fb={class:"works-table-wrapper"};function db(e,t,n,r,o,s){return $(),Re(r.ParentLayout,null,{"page-bottom":Ne(()=>[G("div",fb,[oe(r.ChronologicalWorksTable)])]),_:1})}const pb=xe(cb,[["render",db],["__scopeId","data-v-765855fb"],["__file","WorksPage.vue"]]),hb=Ut({layouts:{WorksPage:pb}}),gb=Object.freeze(Object.defineProperty({__proto__:null,default:hb},Symbol.toStringTag,{value:"Module"})),Zr=[t_,d_,y_,E_,k_,D_,V_,G0,Oy,Qy,gb].map(e=>e.default).filter(Boolean),_b=JSON.parse('{"base":"/","lang":"ru-RU","title":"Дмитрий Плешевский","description":" ","head":[],"locales":{"/":{"lang":"ru-RU","title":"Дмитрий Плешевский"},"/eng/":{"lang":"en-US","title":"Dmitriy Pleshevskiy"}}}');var rr=vt(_b),mb=Kh,vb=()=>{const e=hg({history:mb(Zu("/")),routes:[{name:"vuepress-route",path:"/:catchAll(.*)",components:{}}],scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{if(t.path!==n.path||n===Lt){const r=Er(t.fullPath);if(r.path!==t.fullPath)return r.path;const o=await r.loader();t.meta={...r.meta,_pageChunk:o}}else t.path===n.path&&(t.meta=n.meta)}),e},yb=e=>{e.component("ClientOnly",si),e.component("Content",ii),e.component("RouteLink",Po)},bb=(e,t,n)=>{const r=R(()=>t.currentRoute.value.path),o=Zf((y,b)=>({get(){return y(),t.currentRoute.value.meta._pageChunk},set(S){t.currentRoute.value.meta._pageChunk=S,b()}})),s=R(()=>cn.resolveLayouts(n)),i=R(()=>cn.resolveRouteLocale(rr.value.locales,r.value)),a=R(()=>cn.resolveSiteLocaleData(rr.value,i.value)),l=R(()=>o.value.comp),u=R(()=>o.value.data),f=R(()=>u.value.frontmatter),c=R(()=>cn.resolvePageHeadTitle(u.value,a.value)),p=R(()=>cn.resolvePageHead(c.value,f.value,a.value)),d=R(()=>cn.resolvePageLang(u.value,a.value)),m=R(()=>cn.resolvePageLayout(u.value,s.value)),v={layouts:s,pageData:u,pageComponent:l,pageFrontmatter:f,pageHead:p,pageHeadTitle:c,pageLang:d,pageLayout:m,redirects:Ss,routeLocale:i,routePath:r,routes:Nn,siteData:rr,siteLocaleData:a};return e.provide(ri,v),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>f.value},$head:{get:()=>p.value},$headTitle:{get:()=>c.value},$lang:{get:()=>d.value},$page:{get:()=>u.value},$routeLocale:{get:()=>i.value},$site:{get:()=>rr.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>ai}}),v},Eb=([e,t,n=""])=>{const r=Object.entries(t).map(([a,l])=>mt(l)?`[${a}=${JSON.stringify(l)}]`:l?`[${a}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(a=>a.innerText===n)??null},Sb=([e,t,n])=>{if(!mt(e))return null;const r=document.createElement(e);return ei(t)&&Object.entries(t).forEach(([o,s])=>{mt(s)?r.setAttribute(o,s):s&&r.setAttribute(o,"")}),mt(n)&&r.appendChild(document.createTextNode(n)),r},Ab=()=>{const e=mg(),t=vg();let n=[];const r=()=>{e.value.forEach(i=>{const a=Eb(i);a&&n.push(a)})},o=()=>{const i=[];return e.value.forEach(a=>{const l=Sb(a);l&&i.push(l)}),i},s=()=>{document.documentElement.lang=t.value;const i=o();n.forEach((a,l)=>{const u=i.findIndex(f=>a.isEqualNode(f));u===-1?(a.remove(),delete n[l]):i.splice(u,1)}),i.forEach(a=>document.head.appendChild(a)),n=[...n.filter(a=>!!a),...i]};vn(Eg,s),Ge(()=>{r(),$e(e,s,{immediate:!1})})},wb=Jp,Cb=async()=>{var n;const e=wb({name:"Vuepress",setup(){var s;Ab();for(const i of Zr)(s=i.setup)==null||s.call(i);const r=Zr.flatMap(({rootComponents:i=[]})=>i.map(a=>be(a))),o=yg();return()=>[be(o.value),r]}}),t=vb();yb(e),bb(e,t,Zr);for(const r of Zr)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:rr}));return e.use(t),{app:e,router:t}};Cb().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{xe as _,G as a,Zt as b,te as c,Cb as createVueApp,oe as d,up as e,$ as o,Gs as r,Ne as w}; -function __vite__mapDeps(indexes) { - if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = [] - } - return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) -} diff --git a/dist/assets/style-CyqMEKOR.css b/dist/assets/style-CyqMEKOR.css deleted file mode 100644 index 097a950..0000000 --- a/dist/assets/style-CyqMEKOR.css +++ /dev/null @@ -1 +0,0 @@ -.vp-back-to-top-button{position:fixed!important;inset-inline-end:1rem;bottom:4rem;z-index:100;width:48px;height:48px;padding:12px;border-width:0;border-radius:50%;background:var(--back-to-top-c-bg);color:var(--back-to-top-c-accent-bg);box-shadow:2px 2px 10px 4px var(--back-to-top-c-shadow);cursor:pointer}@media (max-width: 959px){.vp-back-to-top-button{transform:scale(.8);transform-origin:100% 100%}}@media print{.vp-back-to-top-button{display:none}}.vp-back-to-top-button:hover{color:var(--back-to-top-c-accent-hover)}.vp-back-to-top-button .back-to-top-icon{overflow:hidden;width:24px;height:24px;margin:0 auto;background:var(--back-to-top-c-icon);-webkit-mask-image:var(--back-to-top-icon);mask-image:var(--back-to-top-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:cover;mask-size:cover}.vp-scroll-progress{position:absolute;right:-2px;bottom:-2px;width:52px;height:52px}.vp-scroll-progress svg{width:100%;height:100%}.vp-scroll-progress circle{opacity:.9;transform:rotate(-90deg);transform-origin:50% 50%}.back-to-top-enter-active,.back-to-top-leave-active{transition:opacity .3s}.back-to-top-enter-from,.back-to-top-leave-to{opacity:0}:root{--back-to-top-z-index: 5;--back-to-top-icon: url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2048%2048'%3e%3cpath%20fill='none'%20stroke='currentColor'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='4'%20d='M24.008%2014.1V42M12%2026l12-12l12%2012M12%206h24'%20/%3e%3c/svg%3e");--back-to-top-c-bg: var(--vp-c-bg);--back-to-top-c-accent-bg: var(--vp-c-accent-bg);--back-to-top-c-accent-hover: var(--vp-c-accent-hover);--back-to-top-c-shadow: var(--vp-c-shadow);--back-to-top-c-icon: currentcolor}.vp-copy-code-button{position:absolute;top:.5em;right:.5em;z-index:5;width:2.5rem;height:2.5rem;padding:0;border-width:0;border-radius:.5rem;background:#0000;outline:none;opacity:0;cursor:pointer;transition:opacity .4s}@media print{.vp-copy-code-button{display:none}}.vp-copy-code-button:before{content:"";display:inline-block;width:1.25rem;height:1.25rem;padding:.625rem;background:currentcolor;color:var(--copy-code-c-text);font-size:1.25rem;-webkit-mask-image:var(--code-copy-icon);mask-image:var(--code-copy-icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.vp-copy-code-button:focus,.vp-copy-code-button.copied{opacity:1}.vp-copy-code-button:hover,.vp-copy-code-button.copied{background:var(--copy-code-c-hover)}.vp-copy-code-button.copied:before{-webkit-mask-image:var(--code-copied-icon);mask-image:var(--code-copied-icon)}.vp-copy-code-button.copied:after{content:attr(data-copied);position:absolute;top:0;right:calc(100% + .25rem);display:block;height:1.25rem;padding:.625rem;border-radius:.5rem;background:var(--copy-code-c-hover);color:var(--copy-code-c-text);font-weight:500;line-height:1.25rem;white-space:nowrap}.no-copy-code .vp-copy-code-button{display:none}body:not(.no-copy-code) div[class*=language-]:hover:before{display:none}body:not(.no-copy-code) div[class*=language-]:hover .vp-copy-code-button{opacity:1}:root{--code-copy-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2'%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");--code-copied-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2'%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");--copy-code-c-text: var(--code-c-line-number);--copy-code-c-hover: var(--code-c-highlight-bg)}.hint-container{position:relative;border-color:var(--hint-c-accent);background:var(--hint-c-soft);transition:background var(--vp-t-color),color var(--vp-t-color)}@media print{.hint-container{page-break-inside:avoid}}.hint-container>.hint-container-title{color:var(--hint-c-title)}.hint-container :not(pre)>code{background:var(--hint-c-soft)}.hint-container .hint-container-title{position:relative;margin-block:.75em;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-block:.75rem;padding:.25em 1em;border-radius:.5em;color:inherit;font-size:var(--hint-font-size)}@media print{.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{border-inline-start-width:.25em;border-inline-start-style:solid}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75em}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;inset-inline-start:0;top:calc(50% - .6125em);width:1.25em;height:1.25em;font-size:1.25em}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-c-accent)}.hint-container.important{--hint-c-accent: var(--important-c-accent);--hint-c-title: var(--important-c-text);--hint-c-soft: var(--important-c-soft)}.hint-container.important>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.info{--hint-c-accent: var(--info-c-accent);--hint-c-title: var(--info-c-text);--hint-c-soft: var(--info-c-soft)}.hint-container.info>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.note{--hint-c-accent: var(--note-c-accent);--hint-c-title: var(--note-c-text);--hint-c-soft: var(--note-c-soft)}.hint-container.note>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.tip{--hint-c-accent: var(--tip-c-accent);--hint-c-title: var(--tip-c-text);--hint-c-soft: var(--tip-c-soft)}.hint-container.tip>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.warning{--hint-c-accent: var(--warning-c-accent);--hint-c-title: var(--warning-c-text);--hint-c-soft: var(--warning-c-soft)}.hint-container.warning>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.caution{--hint-c-accent: var(--caution-c-accent);--hint-c-title: var(--caution-c-text);--hint-c-soft: var(--caution-c-soft)}.hint-container.caution>.hint-container-title:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.hint-container.details{position:relative;display:block;margin-block:.75rem;padding:1.25rem 1rem;border-radius:.5rem;background:var(--detail-c-bg);transition:background var(--vp-t-transform),color var(--vp-t-transform)}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-c-accent)}.hint-container.details :not(pre)>code{background:var(--detail-c-soft)}.hint-container.details summary{position:relative;margin:-1rem;padding-block:1em;padding-inline:3em 1.5em;list-style:none;font-size:var(--hint-font-size);cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:#0000;font-size:0}.hint-container.details summary:before{background-color:currentColor;-webkit-mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:1em;mask-size:1em;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:" ";position:absolute;inset-inline-start:.8em;top:calc(50% - .5em);width:1em;height:1em;font-size:1.25rem;line-height:normal;transition:color,var(--vp-t-color),transform var(--vp-t-transform);transform:rotate(90deg)}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:before{transform:rotate(180deg)}:root{--hint-font-size: .9rem;--important-c-accent: var(--vp-c-purple-bg);--important-c-text: var(--vp-c-purple-text);--important-c-soft: var(--vp-c-purple-soft);--info-c-accent: var(--vp-c-blue-bg);--info-c-text: var(--vp-c-blue-text);--info-c-soft: var(--vp-c-blue-soft);--note-c-accent: var(--vp-c-grey-bg);--note-c-text: var(--vp-c-grey-text);--note-c-soft: var(--vp-c-grey-soft);--tip-c-accent: var(--vp-c-green-bg);--tip-c-text: var(--vp-c-green-text);--tip-c-soft: var(--vp-c-green-soft);--warning-c-accent: var(--vp-c-yellow-bg);--warning-c-text: var(--vp-c-yellow-text);--warning-c-soft: var(--vp-c-yellow-soft);--caution-c-accent: var(--vp-c-red-bg);--caution-c-text: var(--vp-c-red-text);--caution-c-soft: var(--vp-c-red-soft);--detail-c-bg: var(--vp-c-control);--detail-c-icon: var(--vp-c-border);--detail-c-soft: var(--vp-c-grey-soft)}:root{--nprogress-c: var(--vp-c-accent);--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:var(--nprogress-z-index);width:100%;height:2px;background:var(--nprogress-c)}:root{--code-padding-x: 1.25rem;--code-padding-y: 1rem;--code-border-radius: 6px;--code-line-height: 1.6;--code-font-size: 14px;--code-font-family: consolas, monaco, "Andale Mono", "Ubuntu Mono", monospace}div[class*=language-]{position:relative;border-radius:var(--code-border-radius);background-color:var(--code-c-bg)}div[class*=language-]:before{content:attr(data-title);position:absolute;top:.8em;right:1em;z-index:3;color:var(--code-c-text);font-size:.75rem}div[class*=language-] pre{position:relative;z-index:1;overflow-x:auto;margin:0;border-radius:var(--code-border-radius);font-size:var(--code-font-size);font-family:var(--code-font-family);line-height:var(--code-line-height)}div[class*=language-] pre code{display:block;box-sizing:border-box;width:-moz-fit-content;width:fit-content;min-width:100%;padding:var(--code-padding-y) var(--code-padding-x);background-color:#0000!important;color:var(--code-c-text);overflow-wrap:unset;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}:root{--code-c-text: #f8f8f2;--code-c-bg: #2e3440;--code-c-highlight-bg: rgb(51.6454545455, 60.5484848485, 78.3545454545);--code-c-line-number: rgba(248, 248, 242, .67)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#636f88}.token.punctuation{color:#81a1c1}.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#81a1c1}.token.number{color:#b48ead}.token.boolean{color:#81a1c1}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a3be8c}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#81a1c1}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#88c0d0}.token.keyword{color:#81a1c1}.token.regex,.token.important{color:#ebcb8b}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}:root{--code-line-number-width: 3rem}div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;top:0;left:0;width:var(--code-line-number-width);height:100%;border-right:1px solid var(--code-c-highlight-bg, var(--code-c-text));border-radius:var(--code-border-radius) 0 0 var(--code-border-radius);transition:border var(--vp-t-color)}div[class*=language-].line-numbers-mode pre{vertical-align:middle;margin-left:var(--code-line-number-width)}div[class*=language-].line-numbers-mode code{padding-left:1rem}div[class*=language-].line-numbers-mode .line-numbers{counter-reset:line-number;position:absolute;top:0;width:var(--code-line-number-width);padding-top:var(--code-padding-y);color:var(--code-c-line-number, var(--code-c-text));font-size:var(--code-font-size);line-height:var(--code-line-height);text-align:center}div[class*=language-].line-numbers-mode .line-number{position:relative;z-index:3;font-family:var(--code-font-family);-webkit-user-select:none;-moz-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-number:before{content:counter(line-number);counter-increment:line-number}div[class*=language-] .line.highlighted{display:inline-block;width:100%;margin:0 calc(-1*var(--code-padding-x));padding:0 var(--code-padding-x);background-color:var(--code-c-highlight-bg)}div[class*=language-].has-collapsed-lines.collapsed{overflow-y:hidden;height:calc(var(--vp-collapsed-lines)*var(--code-line-height)*var(--code-font-size) + var(--code-padding-y) + 28px)}div[class*=language-].has-collapsed-lines .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg);position:absolute;right:0;bottom:0;left:0;z-index:4;display:flex;align-items:center;justify-content:center;height:28px;background:linear-gradient(to bottom,transparent 0%,var(--vp-collapsed-lines-bg) 55%,var(--vp-collapsed-lines-bg) 100%);cursor:pointer;transition:--vp-collapsed-lines-bg var(--vp-t-color)}div[class*=language-].has-collapsed-lines .collapsed-lines:hover{--vp-collapsed-lines-bg: rgb(0 0 0 / 10%) !important}div[class*=language-].has-collapsed-lines[data-highlighter=shiki] .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg, var(--shiki-light-bg))}[data-theme=dark] div[class*=language-].has-collapsed-lines[data-highlighter=shiki] .collapsed-lines{--vp-collapsed-lines-bg: var(--code-c-bg, var(--shiki-dark-bg))}div[class*=language-].has-collapsed-lines .collapsed-lines:before{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='m18 12l-6 6l-6-6m12-6l-6 6l-6-6'/%3E%3C/svg%3E");--vp-collapsed-lines-rotate: 0deg;content:"";display:inline-block;width:24px;height:24px;background-color:var(--code-c-text);-webkit-mask-image:var(--icon);mask-image:var(--icon);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none;animation:code-collapsed-lines 1.2s infinite alternate-reverse ease-in-out}div[class*=language-].has-collapsed-lines:not(.collapsed) code{padding-bottom:max(var(--code-padding-y),28px)}div[class*=language-].has-collapsed-lines:not(.collapsed) .collapsed-lines:hover{--vp-collapsed-lines-bg: transparent !important}div[class*=language-].has-collapsed-lines:not(.collapsed) .collapsed-lines:before{--vp-collapsed-lines-rotate: 180deg}@property --vp-collapsed-lines-bg{inherits:false;initial-value:#fff;syntax:"<color>"}@keyframes code-collapsed-lines{0%{opacity:.3;transform:translateY(-2px) rotate(var(--vp-collapsed-lines-rotate))}to{opacity:1;transform:translateY(2px) rotate(var(--vp-collapsed-lines-rotate))}}.vp-code-tabs-nav{overflow-x:auto;margin:.75rem 0 -.75rem;padding:0;border-radius:6px 6px 0 0;background:var(--code-tabs-c-bg);list-style:none;white-space:nowrap;transition:background var(--vp-t-color)}@media print{.vp-code-tabs-nav{display:none}}@media (max-width: 419px){.vp-code-tabs-nav{margin-inline:-1.5rem;border-radius:0}}.vp-code-tab-nav{position:relative;min-width:3rem;margin:0;padding:6px 12px;border-width:0;border-radius:6px 6px 0 0;background:#0000;color:var(--code-tabs-c-text);font-weight:600;font-size:.875em;line-height:1.4;cursor:pointer;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-code-tab-nav:hover{background:var(--code-tabs-c-hover)}.vp-code-tab-nav:before,.vp-code-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:6px;height:6px}.vp-code-tab-nav:before{right:100%}.vp-code-tab-nav:after{left:100%}.vp-code-tab-nav.active{background:var(--code-c-bg)}.vp-code-tab-nav.active:before{background:radial-gradient(12px at left top,transparent 50%,var(--code-c-bg) 50%)}.vp-code-tab-nav.active:after{background:radial-gradient(12px at right top,transparent 50%,var(--code-c-bg) 50%)}.vp-code-tab-nav:first-child:before{display:none}[dir=rtl] .vp-code-tab-nav:first-child:before{display:block}[dir=rtl] .vp-code-tab-nav:first-child:after{display:none}.vp-code-tab{display:none}@media print{.vp-code-tab{display:block}}.vp-code-tab.active{display:block}.vp-code-tab div[class*=language-]{border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-code-tab div[class*=language-]{margin:.75rem -1.5rem;border-radius:0}}.vp-code-tab div[class*=language-].line-numbers-mode:after{border-top-left-radius:0}.vp-code-tab div[class*=language-] pre{border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-code-tab div[class*=language-] pre{border-radius:0}}@media print{.vp-code-tab div[class*=language-] code{white-space:pre-wrap}}.vp-code-tab-title{display:none;font-weight:500}@media print{.vp-code-tab-title{display:block}}.vp-tabs{margin:1.5rem 0;border:1px solid var(--vp-c-border);border-radius:8px}@media (max-width: 419px){[vp-content]>.vp-tabs{margin-inline:-1.5rem;border:none;border-bottom:1px solid var(--vp-c-border);border-radius:0}}.vp-tabs-nav{overflow-x:auto;margin:0;padding:0;border-radius:.5rem .5rem 0 0;background:var(--tab-c-bg-nav);list-style:none;white-space:nowrap;transition:background var(--vp-t-color)}@media print{.vp-tabs-nav{display:none}}@media (max-width: 419px){.vp-tabs-nav{border-radius:0}}.vp-tab-nav{position:relative;min-width:4rem;margin:0;padding:.5em 1em;border:none;border-radius:.5rem .5rem 0 0;background:#0000;color:var(--tab-c-nav);font-weight:600;font-size:.875em;line-height:1.75;cursor:pointer;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-tab-nav:hover{background:var(--tab-c-bg-nav-hover)}.vp-tab-nav:before,.vp-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:8px;height:8px}.vp-tab-nav:before{right:100%}.vp-tab-nav:after{left:100%}.vp-tab-nav.active{background:var(--tab-c-bg)}.vp-tab-nav.active:before{background:radial-gradient(16px at left top,transparent 50%,var(--tab-c-bg) 50%)}.vp-tab-nav.active:after{background:radial-gradient(16px at right top,transparent 50%,var(--tab-c-bg) 50%)}.vp-tab-nav:first-child:before{display:none}.vp-tab{display:none;padding:1rem .75rem;border-radius:0 0 .5rem .5rem;background:var(--tab-c-bg);transition:background var(--vp-t-color)}@media print{.vp-tab{display:block;padding:.5rem}}.vp-tab.active{display:block}.vp-tab:nth-child(n+2) .vp-tab-title{border-top:none}.vp-tab-title{display:none;padding:.25rem 0;border-top:1px solid var(--vp-c-border);font-weight:500}@media print{.vp-tab-title{display:block}}:root{--code-tabs-c-text: var(--code-c-text);--code-tabs-c-bg: var(--code-c-highlight-bg);--code-tabs-c-hover: var(--code-c-bg);--tab-c-bg: var(--vp-c-bg);--tab-c-nav: var(--vp-c-text);--tab-c-bg-nav: var(--vp-c-grey-bg);--tab-c-bg-nav-hover: var(--vp-c-control-hover)}.vp-badge{display:inline-block;vertical-align:top;height:18px;padding:0 6px;border-radius:3px;background:var(--vp-c-accent-soft);color:var(--vp-c-accent);font-size:14px;line-height:18px;transition:background var(--vp-t-color),color var(--vp-t-color)}.vp-badge+.vp-badge{margin-inline-start:5px}.vp-badge.tip{background:var(--badge-c-tip-bg);color:var(--badge-c-tip-text)}.vp-badge.warning{background:var(--badge-c-warning-bg);color:var(--badge-c-warning-text)}.vp-badge.danger{background:var(--badge-c-danger-bg);color:var(--badge-c-danger-text)}.vp-badge.important{background:var(--badge-c-important-bg);color:var(--badge-c-important-text)}.vp-badge.info{background:var(--badge-c-info-bg);color:var(--badge-c-info-text)}.vp-badge.note{background:var(--badge-c-note-bg);color:var(--badge-c-note-text)}.vp-features{display:flex;flex-wrap:wrap;place-content:stretch space-between;align-items:flex-start;margin-top:2.5rem;padding:1.2rem 0;border-top:1px solid var(--vp-c-gutter);transition:border-color var(--vp-t-color)}@media (max-width: 719px){.vp-features{flex-direction:column}}.vp-feature{flex-grow:1;flex-basis:30%;max-width:30%}@media (max-width: 719px){.vp-feature{max-width:100%;padding:0 2.5rem}}.vp-feature h2{padding-bottom:0;border-bottom:none;font-weight:500;font-size:1.4rem}@media (max-width: 419px){.vp-feature h2{font-size:1.25rem}}.vp-feature p{color:var(--vp-c-text-mute)}.vp-footer{padding:2.5rem;border-top:1px solid var(--vp-c-border);color:var(--vp-c-text-mute);text-align:center;transition:border-color var(--vp-t-color)}.vp-hero{text-align:center}.vp-hero-image{display:block;max-width:100%;max-height:280px;margin:3rem auto 1.5rem}@media (max-width: 419px){.vp-hero-image{max-height:210px;margin:2rem auto 1.2rem}}#main-title{font-size:3rem}@media (max-width: 419px){#main-title{font-size:2rem}}#main-title,.vp-hero-description,.vp-hero-actions{margin:1.8rem auto}@media (max-width: 419px){#main-title,.vp-hero-description,.vp-hero-actions{margin:1.2rem auto}}.vp-hero-actions{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.vp-hero-description{max-width:35rem;color:var(--vp-c-text-mute);font-size:1.6rem;line-height:1.3}@media (max-width: 419px){.vp-hero-description{font-size:1.2rem}}.vp-hero-action-button{display:inline-block;box-sizing:border-box;padding:.8rem 1.6rem;border:2px solid var(--vp-c-accent-bg);border-radius:4px;background-color:var(--vp-c-bg);color:var(--vp-c-accent);font-size:1.2rem;transition:background-color border-color color var(--vp-t-color)}@media (max-width: 419px){.vp-hero-action-button{padding:.6rem 1.2rem;font-size:1rem}}.vp-hero-action-button:hover{color:var(--vp-c-accent-text)}.vp-hero-action-button.primary{background-color:var(--vp-c-accent-bg);color:var(--vp-c-accent-text)}.vp-hero-action-button.primary:hover{border-color:var(--vp-c-accent-hover);background-color:var(--vp-c-accent-hover)}.vp-home{display:block;max-width:var(--homepage-width);margin:0 auto;padding:var(--navbar-height) 2rem 0}@media (max-width: 419px){.vp-home{padding-right:1.5rem;padding-left:1.5rem}}.vp-home .theme-default-content{margin:0;padding:0}.vp-site-logo{vertical-align:top;height:var(--navbar-line-height);margin-right:var(--navbar-padding-v)}.vp-site-name{position:relative;color:var(--vp-c-text);font-weight:600;font-size:1.3rem}@media screen and (max-width: 719px){.vp-site-name{display:block;overflow:hidden;width:calc(100vw - 11rem);text-overflow:ellipsis;white-space:nowrap}}.vp-dropdown-enter-from,.vp-dropdown-leave-to{height:0!important}.vp-navbar-dropdown-wrapper{cursor:pointer}.vp-navbar-dropdown-wrapper:not(.mobile){height:1.8rem}.vp-navbar-dropdown-wrapper:not(.mobile):hover .vp-navbar-dropdown,.vp-navbar-dropdown-wrapper:not(.mobile).open .vp-navbar-dropdown{display:block!important}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown{overflow:hidden;transition:height .1s ease-out;padding-top:.5rem}.vp-navbar-dropdown-wrapper:not(.mobile) .vp-navbar-dropdown{position:absolute;top:100%;right:0;display:none;overflow-y:auto;box-sizing:border-box;height:auto!important;max-height:calc(100vh - 2.7rem);margin:0;padding:.6rem 0;border:1px solid var(--vp-c-gutter);border-radius:.5rem;background-color:var(--vp-c-bg-elv);text-align:left;white-space:nowrap}.vp-navbar-dropdown-title{display:block;padding:inherit;border:none;background:transparent;color:var(--vp-c-text);font-weight:500;font-size:.9rem;font-family:inherit;line-height:1.4rem;cursor:inherit}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-title{display:none}.vp-navbar-dropdown-title:hover{border-color:transparent}.vp-navbar-dropdown-title-mobile{display:none;padding:inherit;border:none;background:transparent;color:var(--vp-c-text);font-weight:600;font-size:inherit;font-family:inherit;line-height:1.4rem;cursor:inherit}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-title-mobile{display:block}.vp-navbar-dropdown-title-mobile:hover{color:var(--vp-c-accent)}.vp-navbar-dropdown-item{color:inherit;line-height:1.7rem}.vp-navbar-dropdown-item a{position:relative;display:block;margin-bottom:0;padding:0 1.5rem 0 1.25rem;border-bottom:none;font-weight:400;line-height:1.7rem}.vp-navbar-dropdown-item a:hover,.vp-navbar-dropdown-item a.route-link-active{color:var(--vp-c-accent)}.vp-navbar-dropdown-item a.route-link-active:after{content:"";position:absolute;top:calc(50% - 2px);left:9px;width:0;height:0;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:5px solid var(--vp-c-accent)}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-item>a{font-size:15px;line-height:2rem}.vp-navbar-dropdown-subtitle{margin:.45rem 0 0;padding:1rem 0 .45rem;border-top:1px solid var(--vp-c-gutter);font-size:.9rem}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-subtitle{margin-top:0;padding-top:0;padding-bottom:0;border-top:0;font-size:15px;line-height:2rem}.vp-navbar-dropdown-item:first-child .vp-navbar-dropdown-subtitle{margin-top:0;padding-top:0;border-top:0}.vp-navbar-dropdown-subtitle>span{padding:0 1.5rem 0 1.25rem}.vp-navbar-dropdown-subtitle>a{font-weight:inherit}.vp-navbar-dropdown-subtitle>a.route-link-active:after{display:none}.vp-navbar-dropdown-subitem-wrapper{padding:0;list-style:none}.vp-navbar-dropdown-subitem{font-size:.9em}.vp-navbar-dropdown-wrapper.mobile .vp-navbar-dropdown-subitem{padding-left:1rem;font-size:14px}.vp-navbar-items{display:inline-block}@media print{.vp-navbar-items{display:none}}.vp-navbar-items a{display:inline-block;color:inherit;line-height:1.4rem}.vp-navbar-items a:hover,.vp-navbar-items a.route-link-active{color:var(--vp-c-text)}.vp-navbar-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:var(--navbar-line-height)}@media (max-width: 719px){.vp-navbar-item{margin-left:0}}.vp-navbar-item:first-child{margin-left:0}.vp-navbar-item a:hover,.vp-navbar-item a.route-link-active{color:var(--vp-c-accent)}.vp-navbar-item>a:hover,.vp-navbar-item>a.route-link-active{margin-bottom:-2px;border-bottom:2px solid var(--vp-c-accent)}@media (max-width: 719px){.vp-navbar-item>a:hover,.vp-navbar-item>a.route-link-active{margin-bottom:0;border-bottom:none}}.vp-toggle-color-mode-button{display:flex;margin:auto;margin-left:1rem;border:0;background:none;color:var(--vp-c-text);opacity:.8;cursor:pointer}@media print{.vp-toggle-color-mode-button{display:none}}.vp-toggle-color-mode-button:hover{opacity:1}.vp-toggle-color-mode-button .light-icon,.vp-toggle-color-mode-button .dark-icon{width:1.25rem;height:1.25rem}.vp-toggle-sidebar-button{position:absolute;top:.6rem;left:1rem;display:none;padding:.6rem;cursor:pointer}@media screen and (max-width: 719px){.vp-toggle-sidebar-button{display:block}}.vp-toggle-sidebar-button .icon{display:flex;flex-direction:column;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;cursor:inherit}.vp-toggle-sidebar-button .icon span{display:inline-block;width:100%;height:2px;border-radius:2px;background-color:var(--vp-c-text);transition:transform var(--vp-t-transform)}.vp-toggle-sidebar-button .icon span:nth-child(2){margin:6px 0}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(1){transform:rotate(45deg) translate3d(5.5px,5.5px,0)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(2){transform:scale3d(0,1,1)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(3){transform:rotate(-45deg) translate3d(6px,-6px,0)}.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(1),.vp-theme-container.sidebar-open .vp-toggle-sidebar-button .icon span:nth-child(3){transform-origin:center}.vp-navbar{--navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) );position:fixed;top:0;right:0;left:0;z-index:20;box-sizing:border-box;height:var(--navbar-height);padding:var(--navbar-padding-v) var(--navbar-padding-h);border-bottom:1px solid var(--vp-c-border);background-color:var(--vp-navbar-c-bg);line-height:var(--navbar-line-height);transition:background-color var(--vp-t-color),border-color var(--vp-t-color)}@media screen and (max-width: 719px){.vp-navbar{padding-left:4rem}}.vp-navbar-items-wrapper{position:absolute;top:var(--navbar-padding-v);right:var(--navbar-padding-h);display:flex;box-sizing:border-box;height:var(--navbar-line-height);padding-left:var(--navbar-padding-h);font-size:.9rem;white-space:nowrap}.vp-page-meta{max-width:var(--content-width);margin:0 auto;padding:.75rem 2.5rem;display:flex;flex-wrap:wrap;justify-content:space-between;overflow:auto}@media (max-width: 959px){.vp-page-meta{padding:2rem}}@media (max-width: 419px){.vp-page-meta{padding:1.5rem}}@media print{.vp-page-meta{margin:0!important;padding-right:0!important;padding-left:0!important}}@media (max-width: 719px){.vp-page-meta{display:block}}.vp-page-meta .vp-meta-item{flex-grow:1}.vp-page-meta .vp-meta-item .vp-meta-label{font-weight:500}.vp-page-meta .vp-meta-item .vp-meta-label:not(a){color:var(--vp-c-text-mute)}.vp-page-meta .vp-meta-item .vp-meta-info{color:var(--vp-c-text-mute);font-weight:400}.vp-page-meta .git-info{text-align:end}.vp-page-meta .edit-link{margin-top:.25rem;margin-right:.5rem;margin-bottom:.25rem;font-size:14px}@media print{.vp-page-meta .edit-link{display:none}}.vp-page-meta .edit-link .edit-icon{position:relative;bottom:-.125em;width:1em;height:1em;margin-right:.25em}.vp-page-meta .last-updated,.vp-page-meta .contributors{margin-top:.25rem;margin-bottom:.25rem;font-size:14px}@media (max-width: 719px){.vp-page-meta .last-updated,.vp-page-meta .contributors{font-size:13px;text-align:start}}.vp-page-nav{display:flex;flex-wrap:wrap;max-width:var(--content-width, 740px);min-height:2rem;margin-top:0;margin-right:auto;margin-left:auto;padding:1rem 2rem 0;border-top:1px solid var(--vp-c-gutter);transition:border-top var(--vp-t-color)}@media (max-width: 959px){.vp-page-nav{padding-right:1rem;padding-left:1rem}}@media print{.vp-page-nav{display:none}}.vp-page-nav .route-link{display:inline-block;flex-grow:1;margin:.25rem;padding:.25rem .5rem;border:1px solid var(--vp-c-gutter);border-radius:.25rem}.vp-page-nav .route-link:hover{background:var(--vp-c-control)}.vp-page-nav .route-link .hint{color:var(--vp-c-text-mute);font-size:.875rem;line-height:2}.vp-page-nav .prev{text-align:start}.vp-page-nav .next{text-align:end}.vp-page{display:block;padding-top:var(--navbar-height);padding-bottom:2rem;padding-left:var(--sidebar-width)}@media (max-width: 959px){.vp-page{padding-left:var(--sidebar-width-mobile)}}@media (max-width: 719px){.vp-page{padding-left:0}}.vp-page .theme-default-content{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem;padding-top:0}@media (max-width: 959px){.vp-page .theme-default-content{padding:2rem}}@media (max-width: 419px){.vp-page .theme-default-content{padding:1.5rem}}.vp-sidebar-item{border-left:.25rem solid transparent;color:var(--vp-c-text);cursor:default}.vp-sidebar-item:focus-visible{outline-width:1px;outline-offset:-1px}.vp-sidebar-item.vp-sidebar-heading{box-sizing:border-box;width:100%;margin:0;padding:.35rem 1.5rem .35rem 1.25rem;font-weight:700;font-size:1.1em;transition:color .15s ease}.vp-sidebar-item.vp-sidebar-heading+.vp-sidebar-children{overflow:hidden;transition:height .1s ease-out;margin-bottom:.75rem}.vp-sidebar-item.collapsible{cursor:pointer}.vp-sidebar-item:not(.vp-sidebar-heading){display:inline-block;box-sizing:border-box;width:100%;margin:0;padding:.35rem 1rem .35rem 2rem;font-weight:400;font-size:1em;line-height:1.4}.vp-sidebar-item:not(.vp-sidebar-heading)+.vp-sidebar-children{padding-left:1rem;font-size:.95em}.vp-sidebar-children .vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading){padding:.25rem 1rem .25rem 1.75rem}.vp-sidebar-children .vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading).active{border-left-color:transparent;font-weight:500}a.vp-sidebar-heading+.vp-sidebar-children .vp-sidebar-item:not(.vp-sidebar-heading).active{border-left-color:transparent}.vp-sidebar-item.active:not(p.vp-sidebar-heading){border-left-color:var(--vp-c-accent);color:var(--vp-c-accent);font-weight:600}a.vp-sidebar-item{cursor:pointer}a.vp-sidebar-item:hover{color:var(--vp-c-accent)}.vp-sidebar-items{margin:0;padding:1.5rem 0;list-style-type:none}@media (max-width: 719px){.vp-sidebar-items{padding:1rem 0}}.vp-sidebar-items ul{margin:0;padding:0;list-style-type:none}.vp-sidebar-items a{display:inline-block}.vp-sidebar{position:fixed;top:var(--navbar-height);bottom:0;left:0;z-index:10;overflow-y:auto;box-sizing:border-box;width:var(--sidebar-width);margin:0;border-right:1px solid var(--vp-c-border);background-color:var(--vp-sidebar-c-bg);font-size:16px;transition:transform var(--vp-t-transform),background-color var(--vp-t-color),border-color var(--vp-t-color);scrollbar-color:var(--vp-c-accent-bg) var(--vp-c-gutter);scrollbar-width:thin}@media (max-width: 959px){.vp-sidebar{width:var(--sidebar-width-mobile);font-size:15px}}@media (max-width: 719px){.vp-sidebar{top:0;padding-top:var(--navbar-height);transform:translate(-100%)}}.vp-sidebar::-webkit-scrollbar{width:7px}.vp-sidebar::-webkit-scrollbar-track{background-color:var(--vp-c-gutter)}.vp-sidebar::-webkit-scrollbar-thumb{background-color:var(--vp-c-accent-bg)}.vp-sidebar .vp-navbar-items{display:none;padding:.5rem 0 .75rem;border-bottom:1px solid var(--vp-c-gutter);transition:border-color var(--vp-t-color)}@media (max-width: 719px){.vp-sidebar .vp-navbar-items{display:block}.vp-sidebar .vp-navbar-items .vp-navbar-dropdown-item a.route-link-active:after{top:calc(1rem - 2px)}}.vp-sidebar .vp-navbar-items ul{margin:0;padding:0;list-style-type:none}.vp-sidebar .vp-navbar-items a{font-weight:600}.vp-sidebar .vp-navbar-item{display:block;padding:.5rem 0 .5rem 1.5rem;font-size:1.1em;line-height:1.25rem}.vp-sidebar-mask{position:fixed;top:0;left:0;z-index:9;display:none;width:100vw;height:100vh}.vp-theme-container.no-navbar .vp-sidebar{top:0}@media (max-width: 719px){.vp-theme-container.no-navbar .vp-sidebar{padding-top:0}}.vp-theme-container.no-navbar .vp-page{padding-top:0}.vp-theme-container.no-navbar .theme-default-content h1,.vp-theme-container.no-navbar .theme-default-content h2,.vp-theme-container.no-navbar .theme-default-content h3,.vp-theme-container.no-navbar .theme-default-content h4,.vp-theme-container.no-navbar .theme-default-content h5,.vp-theme-container.no-navbar .theme-default-content h6{margin-top:1.5rem;padding-top:0}.vp-theme-container.no-sidebar .vp-sidebar{display:none}@media (max-width: 719px){.vp-theme-container.no-sidebar .vp-sidebar{display:block}}.vp-theme-container.no-sidebar .vp-page{padding-left:0}@media (max-width: 719px){.vp-theme-container.sidebar-open .vp-sidebar{transform:translate(0)}.vp-theme-container.sidebar-open .vp-sidebar-mask{display:block}}.fade-slide-y-enter-active{transition:all .2s ease}.fade-slide-y-leave-active{transition:all .2s cubic-bezier(1,.5,.8,1)}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.vp-theme-container[data-v-9607bbd4]{max-width:740px;margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-theme-container[data-v-9607bbd4]{padding:2rem}}:root{--vp-c-white: #fff;--vp-c-black: #000;--vp-c-grey-text: #656869;--vp-c-grey-hover: #e4e4e9;--vp-c-grey-bg: #ebebef;--vp-c-grey-soft: rgb(142 150 170 / 14%);--vp-c-indigo-text: #3451b2;--vp-c-indigo-hover: #3a5ccc;--vp-c-indigo-bg: #5672cd;--vp-c-indigo-soft: rgb(100 108 255 / 14%);--vp-c-purple-text: #6f42c1;--vp-c-purple-hover: #7e4cc9;--vp-c-purple-bg: #8e5cd9;--vp-c-purple-soft: rgb(159 122 234 / 14%);--vp-c-blue-text: #2888a7;--vp-c-blue-hover: #2d98ba;--vp-c-blue-bg: #2fa1c5;--vp-c-blue-soft: rgb(27 178 229 / 14%);--vp-c-green-text: #18794e;--vp-c-green-hover: #299764;--vp-c-green-bg: #30a46c;--vp-c-green-soft: rgb(16 185 129 / 14%);--vp-c-yellow-text: #915930;--vp-c-yellow-hover: #946300;--vp-c-yellow-bg: #c28100;--vp-c-yellow-soft: rgb(234 179 8 / 14%);--vp-c-red-text: #b8272c;--vp-c-red-hover: #d5393e;--vp-c-red-bg: #e0575b;--vp-c-red-soft: rgb(244 63 94 / 14%)}[data-theme=dark]{--vp-c-white: #000;--vp-c-black: #fff;--vp-c-grey-text: #939499;--vp-c-grey-hover: #414853;--vp-c-grey-bg: #32363f;--vp-c-grey-soft: rgb(101 117 133 / 16%);--vp-c-indigo-text: #a8b1ff;--vp-c-indigo-hover: #5c73e7;--vp-c-indigo-bg: #3e63dd;--vp-c-indigo-soft: rgb(100 108 255 / 16%);--vp-c-blue-text: #c9e8f2;--vp-c-blue-hover: #a6d9ea;--vp-c-blue-bg: #2785a3;--vp-c-blue-soft: rgb(27 178 229 / 16%);--vp-c-purple-text: #c8abfa;--vp-c-purple-hover: #a879e6;--vp-c-purple-bg: #8e5cd9;--vp-c-purple-soft: rgb(159 122 234 / 16%);--vp-c-green-text: #3dd68c;--vp-c-green-hover: #30a46c;--vp-c-green-bg: #298459;--vp-c-green-soft: rgb(16 185 129 / 16%);--vp-c-yellow-text: #f9b44e;--vp-c-yellow-hover: #da8b17;--vp-c-yellow-bg: #a46a0a;--vp-c-yellow-soft: rgb(234 179 8 / 16%);--vp-c-red-text: #f66f81;--vp-c-red-hover: #f14158;--vp-c-red-bg: #b62a3c;--vp-c-red-soft: rgb(244 63 94 / 16%)}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}html,body{background:var(--vp-c-bg, #fff);accent-color:var(--vp-c-accent, #299764);transition:background-color var(--vp-t-color)}html{font-size:16px;font-display:optional;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}@media print{html{font-size:12pt}}html[data-theme=dark]{color-scheme:dark}body{min-height:100vh;margin:0;padding:0;color:var(--vp-c-text, rgb(60, 60, 67));font-size:1rem;font-synthesis:style}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;overflow-wrap:break-word}h1:focus-visible,h2:focus-visible,h3:focus-visible,h4:focus-visible,h5:focus-visible,h6:focus-visible{outline:none}h1{font-size:2rem}h2{padding-bottom:.3rem;border-bottom:1px solid var(--vp-c-gutter, #e2e2e3);font-size:1.65rem;transition:border-color var(--vp-t-color)}h3{font-size:1.35rem}h4{font-size:1.15rem}h5{font-size:1.05rem}h6{font-size:1rem}p,ul,ol{line-height:1.6;overflow-wrap:break-word}@media print{p,ul,ol{line-height:1.5}}ul,ol{padding-inline-start:1.2em}a{color:var(--vp-c-accent, #299764);font-weight:500;text-decoration:none;overflow-wrap:break-word}a.header-anchor{position:relative;color:inherit;text-decoration:none}a.header-anchor:before{content:"¶";position:absolute;top:.4167em;left:-.75em;display:none;color:var(--vp-c-accent, #299764);font-size:.75em}[dir=rtl] a.header-anchor:before{right:-.75em}a.header-anchor:hover:before{display:block}a.header-anchor:focus-visible{outline:none}a.header-anchor:focus-visible:before{display:block;outline:auto}strong{font-weight:600}blockquote{margin:1rem 0;padding:.25rem 0 .25rem 1rem;border-inline-start:.2rem solid var(--vp-c-border-hard, #b8b8ba);color:var(--vp-c-text-mute, rgba(60, 60, 67, .78));font-size:1rem;overflow-wrap:break-word;transition:border-color var(--vp-t-color),color var(--vp-t-color)}blockquote>p{margin:0}hr{border:0;border-bottom:1px solid var(--vp-c-gutter, #e2e2e3);transition:border-color var(--vp-t-color)}:not(pre)>code{margin:0;padding:3px 6px;border-radius:4px;background:var(--vp-c-grey-soft, rgba(142, 150, 170, .14));font-size:.875em;overflow-wrap:break-word;transition:background-color var(--vp-t-color),color var(--vp-t-color)}p a code{color:var(--vp-c-accent, #299764);font-weight:400}table code{padding:.1rem .4rem}kbd{display:inline-block;min-width:1em;margin-inline:.125rem;padding:.25em;border:1px solid var(--vp-c-border, #c2c2c4);border-radius:.25em;box-shadow:1px 1px 4px 0 var(--vp-c-shadow, rgba(0, 0, 0, .15));line-height:1;letter-spacing:-.1em;text-align:center}table{display:block;overflow-x:auto;margin:1rem 0;border-collapse:collapse}tbody tr:nth-child(odd){background:var(--vp-c-bg-alt, #f6f8fa);transition:background-color var(--vp-t-color)}th,td{padding:.6em 1em;border:1px solid var(--vp-c-border-hard, #d1d4d7);transition:border-color var(--vp-t-color)}pre{text-align:left;direction:ltr;white-space:pre;word-spacing:normal;word-wrap:normal;word-break:normal;overflow-wrap:unset;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}@media print{pre{white-space:pre-wrap}}pre code{padding:0;border-radius:0}@page{margin:2cm;font-size:12pt;size:a4}@media print{*,:after,:before{box-shadow:none!important;text-shadow:none!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}a{color:inherit;font-weight:inherit!important;font-size:inherit!important;text-decoration:underline}a.header-anchor{text-decoration:none}abbr[title]:after{content:" (" attr(title) ")"}pre{border:1px solid #eee;white-space:pre-wrap!important}pre>code{white-space:pre-wrap!important}blockquote{border-inline-start:.2rem solid #ddd;color:inherit}blockquote,pre{orphans:5;widows:5}img,tr,canvas{page-break-inside:avoid}}@media (prefers-reduced-motion: reduce){*,:before,:after{background-attachment:initial!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important}}:root{--vp-c-accent: #299764;--vp-c-accent-bg: #3eaf7c;--vp-c-accent-hover: #4abf8a;--vp-c-accent-text: var(--vp-c-white);--vp-c-accent-soft: rgb(16 185 129 / 14%);--vp-c-bg: #fff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #fff;--vp-c-text: rgb(60 60 67);--vp-c-text-mute: rgb(60 60 67 / 78%);--vp-c-text-subtle: rgb(60 60 67 / 56%);--vp-c-gutter: #e2e2e3;--vp-c-border: #c2c2c4;--vp-c-border-hard: #b8b8ba;--vp-c-shadow: rgb(0 0 0 / 15%);--vp-c-control: rgb(142 150 170 / 10%);--vp-c-control-hover: rgb(142 150 170 / 16%);--vp-c-control-disabled: #eaeaea;--vp-navbar-c-bg: var(--vp-c-bg);--vp-sidebar-c-bg: var(--vp-c-bg);--vp-c-code-tab-title: var(--code-c-text, rgb(255 255 255 / 90%));--vp-c-code-tab-bg: var(--code-bg-color, var(--code-c-bg));--vp-c-code-tab-active: var(--vp-c-accent);--badge-c-tip-text: var(--vp-c-green-text);--badge-c-tip-bg: var(--vp-c-green-soft);--badge-c-warning-text: var(--vp-c-yellow-text);--badge-c-warning-bg: var(--vp-c-yellow-soft);--badge-c-danger-text: var(--vp-c-red-text);--badge-c-danger-bg: var(--vp-c-red-soft);--badge-c-important-text: var(--vp-c-purple-text);--badge-c-important-bg: var(--vp-c-purple-soft);--badge-c-info-text: var(--vp-c-indigo-text);--badge-c-info-bg: var(--vp-c-indigo-soft);--badge-c-note-text: var(--vp-c-grey-text);--badge-c-note-bg: var(--vp-c-grey-soft);--font-family: -apple-system, "BlinkMacSystemFont", "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--navbar-height: 3.6rem;--navbar-padding-v: .7rem;--navbar-padding-h: 1.5rem;--sidebar-width: 20rem;--sidebar-width-mobile: calc(var(--sidebar-width) * .82);--content-width: 740px;--homepage-width: 960px;--header-offset: var(--navbar-height);--vp-t-color: .3s ease;--vp-t-transform: .3s ease;--external-link-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");--external-link-c-icon: var(--vp-c-text-mute)}[data-theme=dark]{--vp-c-accent: #3dd68c;--vp-c-accent-bg: #3aa675;--vp-c-accent-hover: #349469;--vp-c-accent-soft: rgb(16 185 129 / 16%);--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-text: rgb(235 235 245 / 86%);--vp-c-text-mute: rgb(235 235 245 / 60%);--vp-c-text-subtle: rgb(235 235 245 / 38%);--vp-c-gutter: #000;--vp-c-border: #3c3f44;--vp-c-border-hard: #45484e;--vp-c-shadow: rgb(0 0 0 / 30%);--vp-c-control: rgb(101 117 133 / 12%);--vp-c-control-hover: rgb(101 117 133 / 18%);--vp-c-control-disabled: #363636}body{font-family:var(--font-family)}code{font-family:var(--code-font-family)}.theme-default-content h1,.theme-default-content h2,.theme-default-content h3,.theme-default-content h4,.theme-default-content h5,.theme-default-content h6{margin-top:calc(.5rem - var(--header-offset));margin-bottom:0;padding-top:calc(1rem + var(--header-offset))}.theme-default-content h1:first-child,.theme-default-content h2:first-child,.theme-default-content h3:first-child,.theme-default-content h4:first-child,.theme-default-content h5:first-child,.theme-default-content h6:first-child{margin-bottom:1rem}.theme-default-content h1:first-child+p,.theme-default-content h1:first-child+pre,.theme-default-content h1:first-child+.custom-container,.theme-default-content h2:first-child+p,.theme-default-content h2:first-child+pre,.theme-default-content h2:first-child+.custom-container,.theme-default-content h3:first-child+p,.theme-default-content h3:first-child+pre,.theme-default-content h3:first-child+.custom-container,.theme-default-content h4:first-child+p,.theme-default-content h4:first-child+pre,.theme-default-content h4:first-child+.custom-container,.theme-default-content h5:first-child+p,.theme-default-content h5:first-child+pre,.theme-default-content h5:first-child+.custom-container,.theme-default-content h6:first-child+p,.theme-default-content h6:first-child+pre,.theme-default-content h6:first-child+.custom-container{margin-top:2rem}@media (max-width: 419px){.theme-default-content h1{font-size:1.9rem}}.theme-default-content a:not(.header-anchor){text-decoration:underline}.theme-default-content img{max-width:100%}div[class*=language-]{margin:.75rem 0;transition:background-color var(--vp-t-color),color var(--vp-t-color)}@media (max-width: 419px){div[class*=language-]{--code-border-radius: 0;margin:.75rem -1.5rem}}div[class*=language-] .line.diff,div[class*=language-] .line.highlighted{transition:background-color var(--vp-t-color)}.table-of-contents .vp-badge{vertical-align:middle}.arrow{display:inline-block;vertical-align:middle;width:1em;height:1em;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat;line-height:normal;transition:all .3s}[data-theme=dark] .arrow{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.arrow.down{transform:rotate(180deg)}.arrow.right{transform:rotate(90deg)}.arrow.left{transform:rotate(-90deg)}.vp-external-link-icon:after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .external-link:after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}.external-link-icon .theme-default-content a[href*="://"]:not(.no-external-link-icon):after,.external-link-icon .theme-default-content a[target=_blank]:not(.no-external-link-icon):after{content:"";display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;background:var(--external-link-c-icon);-webkit-mask-image:var(--external-link-icon);mask-image:var(--external-link-icon)}@media screen and (max-width: 719px){.vp-hide-mobile{display:none}}.vp-comment{max-width:var(--content-width);margin:0 auto;padding:2rem 2.5rem}@media (max-width: 959px){.vp-comment{padding:2rem}}@media (max-width: 419px){.vp-comment{padding:1.5rem}}.vp-navbar .DocSearch{transition:background-color var(--vp-t-color)}.vp-navbar .search-box{vertical-align:top;flex:0 0 auto}@media screen and (max-width: 719px){.hint-container{margin-inline:-.75rem}}.lang-modal-fade-enter-active,.lang-modal-fade-leave-active{transition:opacity .5s}.lang-modal-fade-enter,.lang-modal-fade-leave-to{opacity:0}.lang-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1499;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}@media print{.lang-modal-mask{display:none}}.lang-modal-wrapper{position:relative;z-index:1500;overflow:hidden;max-width:80vw;padding:1rem 2rem;border-radius:8px;background:var(--vp-bg);box-shadow:0 2px 6px 0 var(--card-shadow)}.lang-modal-action{display:block;width:100%;margin:1rem 0;padding:.5rem .75rem;border:none;border-radius:8px;background-color:var(--vp-bglt);color:var(--vp-c);cursor:pointer}.lang-modal-action:hover{background-color:var(--vp-bgl)}.lang-modal-action.primary{background-color:var(--vp-tc);color:var(--white)}.lang-modal-action.primary:hover{background-color:var(--vp-tcl)}.grey{color:#0006}.works-table-wrapper[data-v-765855fb]{margin:0 auto;padding:0 2rem;max-width:1224px;box-sizing:border-box}.works-table-wrapper[data-v-765855fb] table{width:100%}:root{--content-width: 960px}.vp-page .theme-default-content{padding-bottom:0!important}.vp-page-meta{display:none} diff --git a/dist/assets/works.html-CihZ59B-.js b/dist/assets/works.html-CihZ59B-.js deleted file mode 100644 index bd522cd..0000000 --- a/dist/assets/works.html-CihZ59B-.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as r,e as a,o}from"./app-CvTe0YTg.js";const i={};function n(l,e){return o(),r("div",null,e[0]||(e[0]=[a('<h2 id="highlighted-working-experience" tabindex="-1"><a class="header-anchor" href="#highlighted-working-experience"><span>Highlighted working experience</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Dates: August 2018 – currently</li><li>Roles: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Development of a Project Management Tool for Interior Designers</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Stack: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Migrated database triggers into business logic. Code became easier to read and maintain, and the system became more reliable.</li><li>Introduced unit testing and integration testing practices. I wrote over 70% of all tests myself.</li><li>Added GraphQL subscriptions for dynamic updates.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Stack: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Formed a UIKit and general components, optimized complex and loaded components.</li><li>Changed API work on the frontend.</li><li>Introduced integration testing practice using Cypress.</li><li>Migrated the entire project to TypeScript. Created isolated system modules.</li></ul><h5 id="leadership-of-the-team" tabindex="-1"><a class="header-anchor" href="#leadership-of-the-team"><span>Leadership of the Team</span></a></h5><ul><li>Introduced TDD (Test-Driven Development) practices.</li><li>Brought the "Critical Chain Method", the "Buffer Method", and the "Backward Planning" method into the project. Helped the team get in sync, releasing small batches every week.</li><li>Created individual development plans for team members.</li></ul><h5 id="architecture" tabindex="-1"><a class="header-anchor" href="#architecture"><span>Architecture</span></a></h5><ul><li>Broke down the entire codebase into modules by feature.</li><li>Optimized <code>PostgreSQL</code> database, splitting company data into separate schemas and applying partitioning tables.</li><li>Added query caching with Redis.</li><li>Reduced infrastructure costs by 5 times, migrating the project from Kubernetes to NixOS.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - currently</li><li>Роль: Lead Fullstack Developer</li></ul><p>Development of the Back Office for Core Spirit social platform.</p><ul><li>Integrated <code>Dependabot</code>, which helped update all outdated dependencies. Replaced webpack with <code>vite</code>.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Dates: May 2018 - currently (Passively maintained)</li><li>Role: Tech Lead</li></ul><p>Development web infrastructure of the educational center Master Progress</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">The main site</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Student's cabinet</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">A tool for rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>A complete infrastructure was created on <code>NixOS</code>. Before that, I had created an infrastructure using <code>Drone CI</code> / <code>Woodpecker CI</code> and <code>Docker swarm</code>, which has been running for over 5 years.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Dates: August 2018 - May 2020, August 2024 - currently</li><li>Role: Lead Fullstack Developer</li></ul><p>Development of Social platform focusing on human and planetary enhancement.</p><ul><li>A REST API (using <code>Node.JS</code>, <code>Express</code>, and <code>PostgreSQL</code>) for the main website and back office. I also got to work with a new version of the REST API using <code>Go</code> and <code>PostgreSQL</code>.</li><li>Auto poster to various social networks and messengers (Facebook, LinkedIn, Twitter, Telegram).</li><li>Neural network for automatic categorization of articles.</li></ul><hr><h4 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h4><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>In this company there were 6 considerable projects I have successfully completed:</p><ul><li>optimize the creation of promotional pages (PHP, JavaScript)</li><li>support main traditional site <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>development of parsing to monitor products for changes in price, quantity/availability in stock, rating and other fields based on data from 55 websites (Node.JS, Express)</li><li>work with neural networks for matching of goods</li><li>development face recognition apps for Android (Java)</li></ul><hr><h2 id="chronology" tabindex="-1"><a class="header-anchor" href="#chronology"><span>Chronology</span></a></h2><p>Public projects only.</p>',37)]))}const c=t(i,[["render",n],["__file","works.html.vue"]]),d=JSON.parse('{"path":"/eng/works.html","title":"Works","lang":"en-US","frontmatter":{"title":"Works","layout":"WorksPage","sidebar":false,"head":[["link",{"rel":"alternate","hreflang":"ru-ru","href":"https://pleshevski.ru/works.html"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/eng/works.html"}],["meta",{"property":"og:site_name","content":"Dmitriy Pleshevskiy"}],["meta",{"property":"og:title","content":"Works"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"ru-RU"}],["meta",{"property":"og:updated_time","content":"2024-08-07T08:48:54.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-07T08:48:54.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Works\\"}"]]},"headers":[{"level":2,"title":"Highlighted working experience","slug":"highlighted-working-experience","link":"#highlighted-working-experience","children":[{"level":3,"title":"Binary Management","slug":"binary-management","link":"#binary-management","children":[]},{"level":3,"title":"Core Spirit (Back Office)","slug":"core-spirit-back-office","link":"#core-spirit-back-office","children":[]},{"level":3,"title":"Master Progress","slug":"master-progress","link":"#master-progress","children":[]},{"level":3,"title":"Core Spirit","slug":"core-spirit","link":"#core-spirit","children":[]}]},{"level":2,"title":"Chronology","slug":"chronology","link":"#chronology","children":[]}],"git":{"updatedTime":1723020534000,"contributors":[{"name":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":4}]},"filePathRelative":"eng/works.md"}');export{c as comp,d as data}; diff --git a/dist/assets/works.html-NBBFoiT7.js b/dist/assets/works.html-NBBFoiT7.js deleted file mode 100644 index 5877806..0000000 --- a/dist/assets/works.html-NBBFoiT7.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,c as l,e as a,o as i}from"./app-CvTe0YTg.js";const o={};function t(n,e){return i(),l("div",null,e[0]||(e[0]=[a('<h2 id="выделенныи-опыт-работы" tabindex="-1"><a class="header-anchor" href="#выделенныи-опыт-работы"><span>Выделенный опыт работы</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Даты: Август 2018 – по настоящее время</li><li>Роли: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Разработка инструмента управления проектами для дизайнеров интерьера.</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Стек: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Перенес триггеры базы данных в бизнес-логику. Проще стало читать код, вносить изменение и система стала надежнее.</li><li>Ввёл практику написания unit тестов и интеграционных тестов. Самолично написал более 70% тестов всех тестов.</li><li>Добавил GraphQL подписки для динамичного обновления.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Стек: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Сформировал UIKit и общие компоненты, оптимизировал сложные и нагруженные компоненты.</li><li>Изменил работу с API на фронтенде.</li><li>Внедрил практику написания интеграционных тестов с помощью cypress.</li><li>Полностью перенес проект на TypeScript. Сформировал изолированные модули системы.</li></ul><h5 id="руководство-командои" tabindex="-1"><a class="header-anchor" href="#руководство-командои"><span>Руководство командой</span></a></h5><ul><li>Ввёл практику TDD (Test-Driven Development).</li><li>Я привнес в проект "метод критической цепи", "метод буфера" и "метод планирования с конца". Помог команде войти в ритм, чтобы выпускать релизы каждую неделю небольшими партиями.</li><li>Составлял индивидуальный план развития для членов команды.</li></ul><h5 id="архитектура" tabindex="-1"><a class="header-anchor" href="#архитектура"><span>Архитектура</span></a></h5><ul><li>Разбил всю кодовую базу на модули по фичам.</li><li>Ускорил базу данных <code>PostgreSQL</code>, разбив данные компаний по отдельным схемам и применив партиципирование таблиц.</li><li>Добавил кеширование запросов с <code>Redis</code>.</li><li>Уменьшил затраты на инфраструткуру в 5 раз, перенес весь проект с kubernetes на <code>NixOS</code>.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка бэк-офиса для социальной платформы Core Spirit.</p><ul><li>Интегрировал Dependabot, который помог обновить все устаревшие зависимости. Заменил webpack на vite.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Даты: Май 2018 - по настоящее время (Пассивная поддержка)</li><li>Роль: Tech Lead</li></ul><p>Разработка веб-инфраструктуры образовательного центра Мастер Прогресс.</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">Главного сайта</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Кабинета студента</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">Инструмента для работы с rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>Создана полная инфраструктура на <code>NixOS</code>. До этого создал инфраструктуру используя <code>Drone CI</code> / <code>Woodpecker CI</code> и <code>Docker swarm</code>, которая проработала более 5 лет.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Даты: Август 2018 - May 2020, Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка социальной платформы, сфокусированной на улучшении человека и планеты.</p><ul><li>REST API (<code>Node.JS</code>, <code>Express</code>, <code>PostgreSQL</code>) для основного сайта и бэк-офиса. Успел поработать с новой версией REST API на <code>Go</code>, <code>PostgreSQL</code></li><li>Автопостер в различные социальные сети и мессенджеры (Facebook, LinkedIn, Twitter, Telegram).</li><li>Создал нейронную сеть для автоматической категоризации статей.</li></ul><hr><h3 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h3><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>В этой компании было 6 значительных проектов, которые я успешно завершил:</p><ul><li>Оптимизация создания рекламных страниц (PHP, JavaScript)</li><li>Поддержка основного традиционного сайта <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>Разработка парсинга для мониторинга товаров на предмет изменения цены, количества/наличия на складе, рейтинга и других полей на основе данных с 55+ сайтов (Node.js, Express)</li><li>Работа с нейронными сетями для подбора товаров</li><li>Разработка приложений для распознавания лиц для Android (Java)</li></ul><hr><h2 id="хронология" tabindex="-1"><a class="header-anchor" href="#хронология"><span>Хронология</span></a></h2><p>В списке перечислены только публичные проекты.</p>',37)]))}const s=r(o,[["render",t],["__file","works.html.vue"]]),d=JSON.parse('{"path":"/works.html","title":"Работы","lang":"ru-RU","frontmatter":{"title":"Работы","layout":"WorksPage","sidebar":false,"head":[["link",{"rel":"alternate","hreflang":"en-us","href":"https://pleshevski.ru/eng/works.html"}],["meta",{"property":"og:url","content":"https://pleshevski.ru/works.html"}],["meta",{"property":"og:site_name","content":"Дмитрий Плешевский"}],["meta",{"property":"og:title","content":"Работы"}],["meta",{"property":"og:type","content":"website"}],["meta",{"property":"og:locale","content":"ru-RU"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2024-08-07T08:48:54.000Z"}],["meta",{"property":"article:modified_time","content":"2024-08-07T08:48:54.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"WebPage\\",\\"name\\":\\"Работы\\"}"]]},"headers":[{"level":2,"title":"Выделенный опыт работы","slug":"выделенныи-опыт-работы","link":"#выделенныи-опыт-работы","children":[{"level":3,"title":"Binary Management","slug":"binary-management","link":"#binary-management","children":[]},{"level":3,"title":"Core Spirit (Back Office)","slug":"core-spirit-back-office","link":"#core-spirit-back-office","children":[]},{"level":3,"title":"Master Progress","slug":"master-progress","link":"#master-progress","children":[]},{"level":3,"title":"Core Spirit","slug":"core-spirit","link":"#core-spirit","children":[]},{"level":3,"title":"MERLION","slug":"merlion","link":"#merlion","children":[]}]},{"level":2,"title":"Хронология","slug":"хронология","link":"#хронология","children":[]}],"git":{"updatedTime":1723020534000,"contributors":[{"name":"Dmitriy Pleshevskiy","email":"dmitriy@pleshevski.ru","commits":5}]},"filePathRelative":"works.md"}');export{s as comp,d as data}; diff --git a/dist/eng/index.html b/dist/eng/index.html deleted file mode 100644 index 6cc4932..0000000 --- a/dist/eng/index.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html lang="en-US"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1" /> - <meta name="generator" content="VuePress 2.0.0-rc.18" /> - <style> - :root { - --vp-c-bg: #fff; - } - - [data-theme='dark'] { - --vp-c-bg: #1b1b1f; - } - - html, - body { - background-color: var(--vp-c-bg); - } - </style> - <script> - const userMode = localStorage.getItem('vuepress-color-scheme') - const systemDarkMode = - 'matchMedia' in window - ? window.matchMedia('(prefers-color-scheme: dark)').matches - : false - - if (userMode === 'light') { - document.documentElement.dataset.theme = 'light' - } else if (userMode === 'dark' || systemDarkMode) { - document.documentElement.dataset.theme = 'dark' - } - </script> - <link rel="alternate" hreflang="ru-ru" href="https://pleshevski.ru/"><meta property="og:url" content="https://pleshevski.ru/eng/"><meta property="og:site_name" content="Dmitriy Pleshevskiy"><meta property="og:title" content="Resume"><meta property="og:type" content="website"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="ru-RU"><meta property="og:updated_time" content="2024-09-05T22:11:51.000Z"><meta property="article:modified_time" content="2024-09-05T22:11:51.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Resume"}</script><title>Resume | Dmitriy Pleshevskiy</title><meta name="description" content=" "> - <link rel="preload" href="/assets/style-CyqMEKOR.css" as="style"><link rel="stylesheet" href="/assets/style-CyqMEKOR.css"> - <link rel="modulepreload" href="/assets/app-CvTe0YTg.js"><link rel="modulepreload" href="/assets/index.html-B5LWGqHO.js"> - <link rel="prefetch" href="/assets/index.html-D7ve43IL.js" as="script"><link rel="prefetch" href="/assets/works.html-NBBFoiT7.js" as="script"><link rel="prefetch" href="/assets/works.html-CihZ59B-.js" as="script"><link rel="prefetch" href="/assets/404.html-BGekuXRq.js" as="script"> - </head> - <body> - <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/eng/"><!----><span class="vp-site-name" aria-hidden="true">Dmitriy Pleshevskiy</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="Resume"><!---->Resume<!----></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="Works"><!---->Works<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="Resume"><!---->Resume<!----></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="Works"><!---->Works<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-home"><header class="vp-hero"><!----><!----><p class="vp-hero-description"> </p><!----></header><!----><div class="theme-default-content" vp-content><div><p>Always up-to-date link to <a class="route-link" href="/eng/">resume</a>.</p><h2 id="overview" tabindex="-1"><a class="header-anchor" href="#overview"><span>Overview</span></a></h2><p>My name is Dmitriy Pleshevskiy.</p><p>I'm an open source software enthusiast, a lead software developer, architect, team leader and also mentor.</p><h2 id="skills" tabindex="-1"><a class="header-anchor" href="#skills"><span>Skills</span></a></h2><h4 id="programming-languages" tabindex="-1"><a class="header-anchor" href="#programming-languages"><span>Programming Languages:</span></a></h4><ul><li>TypeScript (prefer, solid 9-year exp)</li><li>SQL (prefer, solid 8-year exp)</li><li>Rust (prefer, solid 5-year exp)</li><li>Python (solid 9-year exp)</li><li>Haskell</li><li>Bash (8-year exp)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="repositories" tabindex="-1"><a class="header-anchor" href="#repositories"><span>Repositories:</span></a></h4><ul><li>PostgreSQL (prefer, solid 8-year exp)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (prefer, solid 5-year exp)</li></ul><hr><p>I also have extensive experience in creating the following applications:</p><ul><li>Traditional (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Dynamic (SPA)</li><li>Hybrid (SSR + SPA)</li><li>Console</li><li>Cross-platform</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (prefer, solid 2-year exp)</li><li><code>async-graphql</code> (prefer, solid 2-year exp)</li><li><code>shaku</code> (prefer, solid 2-year exp)</li><li><code>bb8</code> + <code>postgres-types</code> (prefer, solid 5-year exp)</li><li><code>diesel</code> (2-year exp)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (solid 5-year exp)</li><li><code>Express</code> (solid 9-year exp)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (solid 5-year exp)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (solid 8-year exp)</li><li><code>VueJS</code> (prefer, solid 3-year exp)</li><li><code>Cypress</code> (prefer, solid 3-year exp)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (prefer, solid 5-year exp)</li><li><code>Sass</code> (prefer, solid 8-year exp)</li><li><code>Less</code> (weak 4-year exp)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (prefer, solid 3-year exp)</li><li><code>Docker Swarm</code> (solid 6-year exp)</li><li><code>Kubernetes</code> (weak 5-year exp)</li><li><code>Woodpecker CI</code> (prefer, solid 4-year exp)</li><li><code>Drone CI</code> (solid 3-year exp)</li><li><code>Gitlab CI</code> (solid 7-year exp)</li><li><code>GitHub Actions</code> (4-year exp)</li></ul><h2 id="interests" tabindex="-1"><a class="header-anchor" href="#interests"><span>Interests</span></a></h2><p>Open-source projects are my passion! I develop, maintain and improve projects in my spare time.</p><p>Besides programming, I love to cook and spend time with my beloved family!</p><h2 id="contacts" tabindex="-1"><a class="header-anchor" href="#contacts"><span>Contacts</span></a></h2><p>Simplex (Prefer): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="links" tabindex="-1"><a class="header-anchor" href="#links"><span>Links</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Suspended)</a></li></ul></div></div><!----></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> - <script type="module" src="/assets/app-CvTe0YTg.js" defer></script> - </body> -</html> diff --git a/dist/eng/works.html b/dist/eng/works.html deleted file mode 100644 index 0d01f71..0000000 --- a/dist/eng/works.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html lang="en-US"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1" /> - <meta name="generator" content="VuePress 2.0.0-rc.18" /> - <style> - :root { - --vp-c-bg: #fff; - } - - [data-theme='dark'] { - --vp-c-bg: #1b1b1f; - } - - html, - body { - background-color: var(--vp-c-bg); - } - </style> - <script> - const userMode = localStorage.getItem('vuepress-color-scheme') - const systemDarkMode = - 'matchMedia' in window - ? window.matchMedia('(prefers-color-scheme: dark)').matches - : false - - if (userMode === 'light') { - document.documentElement.dataset.theme = 'light' - } else if (userMode === 'dark' || systemDarkMode) { - document.documentElement.dataset.theme = 'dark' - } - </script> - <link rel="alternate" hreflang="ru-ru" href="https://pleshevski.ru/works.html"><meta property="og:url" content="https://pleshevski.ru/eng/works.html"><meta property="og:site_name" content="Dmitriy Pleshevskiy"><meta property="og:title" content="Works"><meta property="og:type" content="website"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="ru-RU"><meta property="og:updated_time" content="2024-08-07T08:48:54.000Z"><meta property="article:modified_time" content="2024-08-07T08:48:54.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Works"}</script><title>Works | Dmitriy Pleshevskiy</title><meta name="description" content=" "> - <link rel="preload" href="/assets/style-CyqMEKOR.css" as="style"><link rel="stylesheet" href="/assets/style-CyqMEKOR.css"> - <link rel="modulepreload" href="/assets/app-CvTe0YTg.js"><link rel="modulepreload" href="/assets/works.html-CihZ59B-.js"> - <link rel="prefetch" href="/assets/index.html-D7ve43IL.js" as="script"><link rel="prefetch" href="/assets/works.html-NBBFoiT7.js" as="script"><link rel="prefetch" href="/assets/index.html-B5LWGqHO.js" as="script"><link rel="prefetch" href="/assets/404.html-BGekuXRq.js" as="script"> - </head> - <body> - <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container data-v-765855fb><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/eng/"><!----><span class="vp-site-name" aria-hidden="true">Dmitriy Pleshevskiy</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/" aria-label="Resume"><!---->Resume<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="Works"><!---->Works<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/" aria-label="Resume"><!---->Resume<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="Works"><!---->Works<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div class="theme-default-content" vp-content><!--[--><!--]--><div><h2 id="highlighted-working-experience" tabindex="-1"><a class="header-anchor" href="#highlighted-working-experience"><span>Highlighted working experience</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Dates: August 2018 – currently</li><li>Roles: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Development of a Project Management Tool for Interior Designers</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Stack: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Migrated database triggers into business logic. Code became easier to read and maintain, and the system became more reliable.</li><li>Introduced unit testing and integration testing practices. I wrote over 70% of all tests myself.</li><li>Added GraphQL subscriptions for dynamic updates.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Stack: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Formed a UIKit and general components, optimized complex and loaded components.</li><li>Changed API work on the frontend.</li><li>Introduced integration testing practice using Cypress.</li><li>Migrated the entire project to TypeScript. Created isolated system modules.</li></ul><h5 id="leadership-of-the-team" tabindex="-1"><a class="header-anchor" href="#leadership-of-the-team"><span>Leadership of the Team</span></a></h5><ul><li>Introduced TDD (Test-Driven Development) practices.</li><li>Brought the "Critical Chain Method", the "Buffer Method", and the "Backward Planning" method into the project. Helped the team get in sync, releasing small batches every week.</li><li>Created individual development plans for team members.</li></ul><h5 id="architecture" tabindex="-1"><a class="header-anchor" href="#architecture"><span>Architecture</span></a></h5><ul><li>Broke down the entire codebase into modules by feature.</li><li>Optimized <code>PostgreSQL</code> database, splitting company data into separate schemas and applying partitioning tables.</li><li>Added query caching with Redis.</li><li>Reduced infrastructure costs by 5 times, migrating the project from Kubernetes to NixOS.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - currently</li><li>Роль: Lead Fullstack Developer</li></ul><p>Development of the Back Office for Core Spirit social platform.</p><ul><li>Integrated <code>Dependabot</code>, which helped update all outdated dependencies. Replaced webpack with <code>vite</code>.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Dates: May 2018 - currently (Passively maintained)</li><li>Role: Tech Lead</li></ul><p>Development web infrastructure of the educational center Master Progress</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">The main site</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Student's cabinet</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">A tool for rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>A complete infrastructure was created on <code>NixOS</code>. Before that, I had created an infrastructure using <code>Drone CI</code> / <code>Woodpecker CI</code> and <code>Docker swarm</code>, which has been running for over 5 years.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Dates: August 2018 - May 2020, August 2024 - currently</li><li>Role: Lead Fullstack Developer</li></ul><p>Development of Social platform focusing on human and planetary enhancement.</p><ul><li>A REST API (using <code>Node.JS</code>, <code>Express</code>, and <code>PostgreSQL</code>) for the main website and back office. I also got to work with a new version of the REST API using <code>Go</code> and <code>PostgreSQL</code>.</li><li>Auto poster to various social networks and messengers (Facebook, LinkedIn, Twitter, Telegram).</li><li>Neural network for automatic categorization of articles.</li></ul><hr><h4 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h4><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>In this company there were 6 considerable projects I have successfully completed:</p><ul><li>optimize the creation of promotional pages (PHP, JavaScript)</li><li>support main traditional site <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>development of parsing to monitor products for changes in price, quantity/availability in stock, rating and other fields based on data from 55 websites (Node.JS, Express)</li><li>work with neural networks for matching of goods</li><li>development face recognition apps for Android (Java)</li></ul><hr><h2 id="chronology" tabindex="-1"><a class="header-anchor" href="#chronology"><span>Chronology</span></a></h2><p>Public projects only.</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: dmitriy@pleshevski.ru">Dmitriy Pleshevskiy</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><div class="works-table-wrapper" data-v-765855fb><table data-v-765855fb><thead><tr><th>Name</th><th>Description</th><th>Role</th><th>Technologies</th><th>Status</th><th>Dates</th></tr></thead><tbody><!--[--><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/nixeovim">nixeovim</a></td><td>Configure and build neovim editor using nix</td><td>author</td><td>Nix</td><td>actively-developed</td><td><div><small class="">04/24/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/mindustry-tools">Mindustry tools</a></td><td>Tools for the Mindustry game</td><td>author</td><td>Nix, Godot</td><td>passively-maintained</td><td><div><small class="">01/07/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://rosmintrud.masterprogress.ru">Master Progress Rosmintrud tools</a></td><td>Internal service to prepare documents for the rosmintrud (SPA)</td><td>tech lead</td><td>Deno, Sqlite, TS, Vue, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">07/03/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-plpgsql">tree-sitter-plpgsql</a></td><td>plpgsql grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>passively-maintained</td><td><div><small class="">01/05/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2">tree-sitter-d2</a></td><td>d2 grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>actively-developed</td><td><div><small class="">12/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/mynix/nix2lua">nix2lua</a></td><td>This is a small but functional library that converts your nix configurations into lua format.</td><td>author</td><td>Nix, Lua</td><td>passively-maintained</td><td><div><small class="">11/22/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/vnetod">vnetod</a></td><td>Dotenv section switcher</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/29/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/recipes">recipes</a></td><td>Site with recipes which cares about privacy</td><td>author</td><td>TS, Deno, Rust</td><td>passively-maintained</td><td><div><small class="">05/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru">pleshevski.ru</a></td><td>Source code of my personal site</td><td>author</td><td>TS, Vue, Vuepress, Nix</td><td>passively-maintained</td><td><div><small class="">03/16/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/espruino-starter">espruino-starter</a></td><td>Quickly start creating your new project on the espruino board or a board based on it.</td><td>author</td><td>JS</td><td>as-is</td><td><div><small class="">08/23/2021</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/sonic-channel">sonic-channel</a></td><td>Rust client for sonic search backend.</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/18/2020</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/it-fsm">it-fsm</a></td><td>Simple full-featured finite state machine for your project</td><td>author</td><td>TS, NodeJS, Deno</td><td>passively-maintained</td><td><div><small class="">10/11/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://cabinet.masterprogress.ru">Cabinet Master Progress</a></td><td>Student's cabinet of the educational center Master Progress (SSR + SPA)</td><td>tech lead</td><td>Python, Flask, PostgreSQL, TS, React, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">09/22/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/genrss">genrss</a></td><td>RSS generator for python</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="">07/23/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://www.binarymanagement.com">Binary Management</a></td><td>Project management tool for interior designers</td><td>developer, tech lead, team lead</td><td>TS, NodeJS, React, Antd, Docker, Drone CI, Rust, Nix</td><td>actively-developed</td><td><div><small class="">09/15/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://masterprogress.ru">Master Progress</a></td><td>Main website of the educational center Master Progress (SSR + Forms)</td><td>tech lead</td><td>Python, Flask, JS, Nix</td><td>passively-maintained</td><td><div><small class="">04/10/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/picsg">picsg</a></td><td>A tool for steganographing information in a picture encoded using the Vernam cipher.</td><td>author</td><td>Haskell</td><td>as-is</td><td><div><small class="grey">04/13/2024</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot">yandexgpt_tg_bot</a></td><td>The Telegram bot to describe article with link by YandexGPT.</td><td>author</td><td>JS, NodeJS, Nix</td><td>as-is</td><td><div><small class="grey">06/27/2023</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/estring">estring</a></td><td>A simple way to parse a string using type annotations.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/23/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/enve">enve</a></td><td>It helps you work with environment variables and convert it to any type using only type annotations</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/18/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/docker_stack">docker stack drone plugin</a></td><td>Deploy to production using `docker stack deploy`</td><td>author</td><td>Docker, Drone CI, Woodpecker CI</td><td>as-is</td><td><div><small class="grey">06/06/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/paren">paren</a></td><td>Library for parsing and rendering information.</td><td>author</td><td>TS, Deno</td><td>experimental</td><td><div><small class="grey">03/14/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/hwt">hwt</a></td><td>healthy workaholic timer – A tool that keeps you from breaking your health by working all day.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">02/04/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/wd2">wd2</a></td><td>A wrapper over d2 which allows to use additional configs from d2 file</td><td>author</td><td>Bash, Nix</td><td>as-is</td><td><div><small class="grey">12/12/2022</small></div><div><small>07/31/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/react-rest-request">react-rest-request</a></td><td>Minimalistic REST API client for React inspired by Apollo.</td><td>author</td><td>TS, React</td><td>deprecated</td><td><div><small class="grey">10/04/2020</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/marshmallow_pageinfo">marshmallow_pageinfo</a></td><td>Page info marshmallow schema for api</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">10/05/2019</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ictmpl">ictmpl</a></td><td>Generate projects from templates</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">06/30/2018</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/github/dexios">dexios</a></td><td>Dexios is a fast, secure, and open source command-line encryption tool.</td><td>collaborator</td><td>Rust</td><td></td><td><div><small class="grey">06/01/2022</small></div><div><small>02/28/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/itconfig">itconfig</a></td><td>Easy build a configs from environment variables and use it in globally.</td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">12/22/2019</small></div><div><small>07/24/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/migra">migra</a></td><td>Simple SQL migration manager for your project.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">01/31/2021</small></div><div><small>03/17/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ood_persistence">ood_persistence</a></td><td>Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture </td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">10/12/2021</small></div><div><small>10/21/2021</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://corespirit.com">Core Spirit</a></td><td>Social platform focusing on human and planetary enhancement</td><td>developer</td><td>TS, NodeJS, Go, Python, React, Docker, Drone CI</td><td></td><td><div><small class="grey">09/05/2018</small></div><div><small>12/31/2019</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/jjcrypto">jjcrypto</a></td><td>Javascript encoder and decoder</td><td>author</td><td>PHP</td><td>as-is</td><td><div><small class="grey">11/01/2015</small></div><div><small>11/01/2015</small></div></td></tr><!--]--></tbody></table></div><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> - <script type="module" src="/assets/app-CvTe0YTg.js" defer></script> - </body> -</html> diff --git a/dist/index.html b/dist/index.html deleted file mode 100644 index 27feac2..0000000 --- a/dist/index.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html lang="ru-RU"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1" /> - <meta name="generator" content="VuePress 2.0.0-rc.18" /> - <style> - :root { - --vp-c-bg: #fff; - } - - [data-theme='dark'] { - --vp-c-bg: #1b1b1f; - } - - html, - body { - background-color: var(--vp-c-bg); - } - </style> - <script> - const userMode = localStorage.getItem('vuepress-color-scheme') - const systemDarkMode = - 'matchMedia' in window - ? window.matchMedia('(prefers-color-scheme: dark)').matches - : false - - if (userMode === 'light') { - document.documentElement.dataset.theme = 'light' - } else if (userMode === 'dark' || systemDarkMode) { - document.documentElement.dataset.theme = 'dark' - } - </script> - <link rel="alternate" hreflang="en-us" href="https://pleshevski.ru/eng/"><meta property="og:url" content="https://pleshevski.ru/"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:title" content="Резюме"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2024-09-05T22:11:51.000Z"><meta property="article:modified_time" content="2024-09-05T22:11:51.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Резюме"}</script><title>Резюме | Дмитрий Плешевский</title><meta name="description" content=" "> - <link rel="preload" href="/assets/style-CyqMEKOR.css" as="style"><link rel="stylesheet" href="/assets/style-CyqMEKOR.css"> - <link rel="modulepreload" href="/assets/app-CvTe0YTg.js"><link rel="modulepreload" href="/assets/index.html-D7ve43IL.js"> - <link rel="prefetch" href="/assets/works.html-NBBFoiT7.js" as="script"><link rel="prefetch" href="/assets/index.html-B5LWGqHO.js" as="script"><link rel="prefetch" href="/assets/works.html-CihZ59B-.js" as="script"><link rel="prefetch" href="/assets/404.html-BGekuXRq.js" as="script"> - </head> - <body> - <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><!----><span class="vp-site-name" aria-hidden="true">Дмитрий Плешевский</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Резюме"><!---->Резюме<!----></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/works.html" aria-label="Работы"><!---->Работы<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Резюме"><!---->Резюме<!----></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/works.html" aria-label="Работы"><!---->Работы<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-home"><header class="vp-hero"><!----><!----><p class="vp-hero-description"> </p><!----></header><!----><div class="theme-default-content" vp-content><div><p>Всегда актуальная ссылка на <a class="route-link" href="/">резюме</a>.</p><h2 id="общие-сведения" tabindex="-1"><a class="header-anchor" href="#общие-сведения"><span>Общие сведения</span></a></h2><p>Меня зовут Дмитрий Плешевский.</p><p>Я энтузиаст программного обеспечения с открытым исходным кодом, ведущий разработчик програмного обеспечения, архитектор, руководитель команды, а так же ментор.</p><h2 id="умения" tabindex="-1"><a class="header-anchor" href="#умения"><span>Умения</span></a></h2><h4 id="языки-программирования" tabindex="-1"><a class="header-anchor" href="#языки-программирования"><span>Языки программирования:</span></a></h4><ul><li>TypeScript (предпочитаю, твёрдый 9-летний опыт)</li><li>SQL (предпочитаю, твёрдый 8-летний опыт)</li><li>Rust (предпочитаю, 5-летний опыт)</li><li>Python (твёрдый 9-летний опыт)</li><li>Haskell</li><li>Bash (8-летний опыт)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="хранилища-данных" tabindex="-1"><a class="header-anchor" href="#хранилища-данных"><span>Хранилища данных:</span></a></h4><ul><li>PostgreSQL (предпочитаю, твёрдый 8-летний опыт)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (предпочитаю, твердый 5-летний опыт)</li></ul><hr><p>Я так же имею большой опыт в создании следующих типов приложений:</p><ul><li>Традиционные (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Динамическое (SPA)</li><li>Гибридное (SSR + SPA)</li><li>Консольные</li><li>Кроссплатформенные</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>async-graphql</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>shaku</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>bb8</code> + <code>postgres-types</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>diesel</code> (2-летний опыт)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (твёрдый 5-летний опыт)</li><li><code>Express</code> (твёрдый 9-летний опыт)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (твёрдый 5-летний опыт)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (твёрдый 8-летний опыт)</li><li><code>VueJS</code> (предпочитаю, твёрдый 4-летний опыт)</li><li><code>Cypress</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>Sass</code> (предпочитаю, твёрдый 8-летний опыт)</li><li><code>Less</code> (слабый 4-летний опыт)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>Docker Swarm</code> (твёрдый 6-летний опыт)</li><li><code>Kubernetes</code> (слабый 5-летний опыт)</li><li><code>Woodpecker CI</code> (твёрдый 4-летний опыт)</li><li><code>Drone CI</code> (твёрдый 3-летний опыт)</li><li><code>Gitlab CI</code> (твёрдый 7-летний опыт)</li><li><code>GitHub Actions</code> (4-летний опыт)</li></ul><h2 id="интересы" tabindex="-1"><a class="header-anchor" href="#интересы"><span>Интересы</span></a></h2><p>Open-source проекты - моя страсть! Разрабатываю, поддерживаю и улучшаю проекты в своё свободное время.</p><p>Помимо программирования я люблю готовить и проводить время со своей любимой семьей!</p><h2 id="контакты" tabindex="-1"><a class="header-anchor" href="#контакты"><span>Контакты</span></a></h2><p>Simplex (Предпочтительно): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="ссылки" tabindex="-1"><a class="header-anchor" href="#ссылки"><span>Ссылки</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Приостановлен)</a></li></ul></div></div><!----></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> - <script type="module" src="/assets/app-CvTe0YTg.js" defer></script> - </body> -</html> diff --git a/dist/works.html b/dist/works.html deleted file mode 100644 index 729069a..0000000 --- a/dist/works.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html lang="ru-RU"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width,initial-scale=1" /> - <meta name="generator" content="VuePress 2.0.0-rc.18" /> - <style> - :root { - --vp-c-bg: #fff; - } - - [data-theme='dark'] { - --vp-c-bg: #1b1b1f; - } - - html, - body { - background-color: var(--vp-c-bg); - } - </style> - <script> - const userMode = localStorage.getItem('vuepress-color-scheme') - const systemDarkMode = - 'matchMedia' in window - ? window.matchMedia('(prefers-color-scheme: dark)').matches - : false - - if (userMode === 'light') { - document.documentElement.dataset.theme = 'light' - } else if (userMode === 'dark' || systemDarkMode) { - document.documentElement.dataset.theme = 'dark' - } - </script> - <link rel="alternate" hreflang="en-us" href="https://pleshevski.ru/eng/works.html"><meta property="og:url" content="https://pleshevski.ru/works.html"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:title" content="Работы"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2024-08-07T08:48:54.000Z"><meta property="article:modified_time" content="2024-08-07T08:48:54.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Работы"}</script><title>Работы | Дмитрий Плешевский</title><meta name="description" content=" "> - <link rel="preload" href="/assets/style-CyqMEKOR.css" as="style"><link rel="stylesheet" href="/assets/style-CyqMEKOR.css"> - <link rel="modulepreload" href="/assets/app-CvTe0YTg.js"><link rel="modulepreload" href="/assets/works.html-NBBFoiT7.js"> - <link rel="prefetch" href="/assets/index.html-D7ve43IL.js" as="script"><link rel="prefetch" href="/assets/index.html-B5LWGqHO.js" as="script"><link rel="prefetch" href="/assets/works.html-CihZ59B-.js" as="script"><link rel="prefetch" href="/assets/404.html-BGekuXRq.js" as="script"> - </head> - <body> - <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container data-v-765855fb><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><!----><span class="vp-site-name" aria-hidden="true">Дмитрий Плешевский</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="Резюме"><!---->Резюме<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Работы"><!---->Работы<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="Резюме"><!---->Резюме<!----></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Работы"><!---->Работы<!----></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Русский"><!---->Русский<!----></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="English"><!---->English<!----></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!---->Source<!----></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div class="theme-default-content" vp-content><!--[--><!--]--><div><h2 id="выделенныи-опыт-работы" tabindex="-1"><a class="header-anchor" href="#выделенныи-опыт-работы"><span>Выделенный опыт работы</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Даты: Август 2018 – по настоящее время</li><li>Роли: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Разработка инструмента управления проектами для дизайнеров интерьера.</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Стек: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Перенес триггеры базы данных в бизнес-логику. Проще стало читать код, вносить изменение и система стала надежнее.</li><li>Ввёл практику написания unit тестов и интеграционных тестов. Самолично написал более 70% тестов всех тестов.</li><li>Добавил GraphQL подписки для динамичного обновления.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Стек: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Сформировал UIKit и общие компоненты, оптимизировал сложные и нагруженные компоненты.</li><li>Изменил работу с API на фронтенде.</li><li>Внедрил практику написания интеграционных тестов с помощью cypress.</li><li>Полностью перенес проект на TypeScript. Сформировал изолированные модули системы.</li></ul><h5 id="руководство-командои" tabindex="-1"><a class="header-anchor" href="#руководство-командои"><span>Руководство командой</span></a></h5><ul><li>Ввёл практику TDD (Test-Driven Development).</li><li>Я привнес в проект "метод критической цепи", "метод буфера" и "метод планирования с конца". Помог команде войти в ритм, чтобы выпускать релизы каждую неделю небольшими партиями.</li><li>Составлял индивидуальный план развития для членов команды.</li></ul><h5 id="архитектура" tabindex="-1"><a class="header-anchor" href="#архитектура"><span>Архитектура</span></a></h5><ul><li>Разбил всю кодовую базу на модули по фичам.</li><li>Ускорил базу данных <code>PostgreSQL</code>, разбив данные компаний по отдельным схемам и применив партиципирование таблиц.</li><li>Добавил кеширование запросов с <code>Redis</code>.</li><li>Уменьшил затраты на инфраструткуру в 5 раз, перенес весь проект с kubernetes на <code>NixOS</code>.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка бэк-офиса для социальной платформы Core Spirit.</p><ul><li>Интегрировал Dependabot, который помог обновить все устаревшие зависимости. Заменил webpack на vite.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Даты: Май 2018 - по настоящее время (Пассивная поддержка)</li><li>Роль: Tech Lead</li></ul><p>Разработка веб-инфраструктуры образовательного центра Мастер Прогресс.</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">Главного сайта</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Кабинета студента</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">Инструмента для работы с rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>Создана полная инфраструктура на <code>NixOS</code>. До этого создал инфраструктуру используя <code>Drone CI</code> / <code>Woodpecker CI</code> и <code>Docker swarm</code>, которая проработала более 5 лет.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Даты: Август 2018 - May 2020, Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка социальной платформы, сфокусированной на улучшении человека и планеты.</p><ul><li>REST API (<code>Node.JS</code>, <code>Express</code>, <code>PostgreSQL</code>) для основного сайта и бэк-офиса. Успел поработать с новой версией REST API на <code>Go</code>, <code>PostgreSQL</code></li><li>Автопостер в различные социальные сети и мессенджеры (Facebook, LinkedIn, Twitter, Telegram).</li><li>Создал нейронную сеть для автоматической категоризации статей.</li></ul><hr><h3 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h3><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>В этой компании было 6 значительных проектов, которые я успешно завершил:</p><ul><li>Оптимизация создания рекламных страниц (PHP, JavaScript)</li><li>Поддержка основного традиционного сайта <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>Разработка парсинга для мониторинга товаров на предмет изменения цены, количества/наличия на складе, рейтинга и других полей на основе данных с 55+ сайтов (Node.js, Express)</li><li>Работа с нейронными сетями для подбора товаров</li><li>Разработка приложений для распознавания лиц для Android (Java)</li></ul><hr><h2 id="хронология" tabindex="-1"><a class="header-anchor" href="#хронология"><span>Хронология</span></a></h2><p>В списке перечислены только публичные проекты.</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: dmitriy@pleshevski.ru">Dmitriy Pleshevskiy</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><div class="works-table-wrapper" data-v-765855fb><table data-v-765855fb><thead><tr><th>Название</th><th>Описание</th><th>Роль</th><th>Технологии</th><th>Статус</th><th>Даты</th></tr></thead><tbody><!--[--><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/nixeovim">nixeovim</a></td><td>Configure and build neovim editor using nix</td><td>author</td><td>Nix</td><td>actively-developed</td><td><div><small class="">04/24/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/mindustry-tools">Mindustry tools</a></td><td>Tools for the Mindustry game</td><td>author</td><td>Nix, Godot</td><td>passively-maintained</td><td><div><small class="">01/07/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://rosmintrud.masterprogress.ru">Master Progress Rosmintrud tools</a></td><td>Internal service to prepare documents for the rosmintrud (SPA)</td><td>tech lead</td><td>Deno, Sqlite, TS, Vue, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">07/03/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-plpgsql">tree-sitter-plpgsql</a></td><td>plpgsql grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>passively-maintained</td><td><div><small class="">01/05/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2">tree-sitter-d2</a></td><td>d2 grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>actively-developed</td><td><div><small class="">12/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/mynix/nix2lua">nix2lua</a></td><td>This is a small but functional library that converts your nix configurations into lua format.</td><td>author</td><td>Nix, Lua</td><td>passively-maintained</td><td><div><small class="">11/22/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/vnetod">vnetod</a></td><td>Dotenv section switcher</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/29/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/recipes">recipes</a></td><td>Site with recipes which cares about privacy</td><td>author</td><td>TS, Deno, Rust</td><td>passively-maintained</td><td><div><small class="">05/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru">pleshevski.ru</a></td><td>Source code of my personal site</td><td>author</td><td>TS, Vue, Vuepress, Nix</td><td>passively-maintained</td><td><div><small class="">03/16/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/espruino-starter">espruino-starter</a></td><td>Quickly start creating your new project on the espruino board or a board based on it.</td><td>author</td><td>JS</td><td>as-is</td><td><div><small class="">08/23/2021</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/sonic-channel">sonic-channel</a></td><td>Rust client for sonic search backend.</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/18/2020</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/it-fsm">it-fsm</a></td><td>Simple full-featured finite state machine for your project</td><td>author</td><td>TS, NodeJS, Deno</td><td>passively-maintained</td><td><div><small class="">10/11/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://cabinet.masterprogress.ru">Cabinet Master Progress</a></td><td>Student's cabinet of the educational center Master Progress (SSR + SPA)</td><td>tech lead</td><td>Python, Flask, PostgreSQL, TS, React, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">09/22/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/genrss">genrss</a></td><td>RSS generator for python</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="">07/23/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://www.binarymanagement.com">Binary Management</a></td><td>Project management tool for interior designers</td><td>developer, tech lead, team lead</td><td>TS, NodeJS, React, Antd, Docker, Drone CI, Rust, Nix</td><td>actively-developed</td><td><div><small class="">09/15/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://masterprogress.ru">Master Progress</a></td><td>Main website of the educational center Master Progress (SSR + Forms)</td><td>tech lead</td><td>Python, Flask, JS, Nix</td><td>passively-maintained</td><td><div><small class="">04/10/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/picsg">picsg</a></td><td>A tool for steganographing information in a picture encoded using the Vernam cipher.</td><td>author</td><td>Haskell</td><td>as-is</td><td><div><small class="grey">04/13/2024</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot">yandexgpt_tg_bot</a></td><td>The Telegram bot to describe article with link by YandexGPT.</td><td>author</td><td>JS, NodeJS, Nix</td><td>as-is</td><td><div><small class="grey">06/27/2023</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/estring">estring</a></td><td>A simple way to parse a string using type annotations.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/23/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/enve">enve</a></td><td>It helps you work with environment variables and convert it to any type using only type annotations</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/18/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/docker_stack">docker stack drone plugin</a></td><td>Deploy to production using `docker stack deploy`</td><td>author</td><td>Docker, Drone CI, Woodpecker CI</td><td>as-is</td><td><div><small class="grey">06/06/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/paren">paren</a></td><td>Library for parsing and rendering information.</td><td>author</td><td>TS, Deno</td><td>experimental</td><td><div><small class="grey">03/14/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/hwt">hwt</a></td><td>healthy workaholic timer – A tool that keeps you from breaking your health by working all day.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">02/04/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/wd2">wd2</a></td><td>A wrapper over d2 which allows to use additional configs from d2 file</td><td>author</td><td>Bash, Nix</td><td>as-is</td><td><div><small class="grey">12/12/2022</small></div><div><small>07/31/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/react-rest-request">react-rest-request</a></td><td>Minimalistic REST API client for React inspired by Apollo.</td><td>author</td><td>TS, React</td><td>deprecated</td><td><div><small class="grey">10/04/2020</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/marshmallow_pageinfo">marshmallow_pageinfo</a></td><td>Page info marshmallow schema for api</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">10/05/2019</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ictmpl">ictmpl</a></td><td>Generate projects from templates</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">06/30/2018</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/github/dexios">dexios</a></td><td>Dexios is a fast, secure, and open source command-line encryption tool.</td><td>collaborator</td><td>Rust</td><td></td><td><div><small class="grey">06/01/2022</small></div><div><small>02/28/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/itconfig">itconfig</a></td><td>Easy build a configs from environment variables and use it in globally.</td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">12/22/2019</small></div><div><small>07/24/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/migra">migra</a></td><td>Simple SQL migration manager for your project.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">01/31/2021</small></div><div><small>03/17/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ood_persistence">ood_persistence</a></td><td>Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture </td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">10/12/2021</small></div><div><small>10/21/2021</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://corespirit.com">Core Spirit</a></td><td>Social platform focusing on human and planetary enhancement</td><td>developer</td><td>TS, NodeJS, Go, Python, React, Docker, Drone CI</td><td></td><td><div><small class="grey">09/05/2018</small></div><div><small>12/31/2019</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/jjcrypto">jjcrypto</a></td><td>Javascript encoder and decoder</td><td>author</td><td>PHP</td><td>as-is</td><td><div><small class="grey">11/01/2015</small></div><div><small>11/01/2015</small></div></td></tr><!--]--></tbody></table></div><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> - <script type="module" src="/assets/app-CvTe0YTg.js" defer></script> - </body> -</html> diff --git a/docs/.vuepress/client.ts b/docs/.vuepress/client.ts deleted file mode 100644 index bfb63b7..0000000 --- a/docs/.vuepress/client.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineClientConfig } from "vuepress/client"; -import WorksPage from "./pages/WorksPage.vue"; - -export default defineClientConfig({ - layouts: { WorksPage }, -}); diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts deleted file mode 100644 index b728ea5..0000000 --- a/docs/.vuepress/config.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { defineUserConfig } from "vuepress"; -import { viteBundler } from "@vuepress/bundler-vite"; -import { mkMyTheme } from "./theme.js"; -import { redirectPlugin } from "@vuepress/plugin-redirect"; - -export default defineUserConfig({ - lang: "ru-RU", - - title: "Дмитрий Плешевский", - description: " ", - - locales: { - "/": { - lang: "ru-RU", - title: "Дмитрий Плешевский", - }, - "/eng/": { - lang: "en-US", - title: "Dmitriy Pleshevskiy", - }, - }, - - theme: mkMyTheme({ - hostname: "https://pleshevski.ru", - - repo: "https://git.pleshevski.ru/pleshevskiy/pleshevski.ru", - - locales: { - "/": { - selectLanguageName: "Русский", - navbar: ["/", "/works"], - notFound: [ - "Верните страницу!", - "Мы потеряли страницу...", - "Вы заблокированы в лабиринте.", - "Искали кота?", - "Страница украдена.", - "Ошиблись в параллельной вселенной.", - ], - backToHome: "Вернуться на главную", - worksTable: { - name: "Название", - description: "Описание", - role: "Роль", - technologies: "Технологии", - status: "Статус", - dates: "Даты", - }, - }, - "/eng/": { - selectLanguageName: "English", - navbar: ["/eng/", "/eng/works"], - notFound: [ - "Return the page!", - "We lost a page...", - "You're blocked in a labyrinth.", - "Looking for a cat?", - "The page has been stolen.", - "Wrong turn in parallel universe.", - ], - backToHome: "Back to home", - worksTable: { - name: "Name", - description: "Description", - role: "Role", - technologies: "Technologies", - status: "Status", - dates: "Dates", - }, - }, - }, - - themePlugins: { - seo: { - autoDescription: false, - isArticle: () => false, - }, - linksCheck: { - build: "error", - }, - mediumZoom: false, - sitemap: { - changefreq: "monthly", - }, - }, - }), - - plugins: [ - redirectPlugin({ - config: { - "/rus/": "/", - "/rus/works.html": "/works.html", - }, - }), - ], - - bundler: viteBundler(), -}); diff --git a/docs/.vuepress/global.ts b/docs/.vuepress/global.ts deleted file mode 100644 index 885378f..0000000 --- a/docs/.vuepress/global.ts +++ /dev/null @@ -1,9 +0,0 @@ -export type NonEmptyArray<T> = [T, ...T[]]; - -export function renderDate(date: Date): string { - return date.toLocaleDateString(undefined, { - year: "numeric", - month: "2-digit", - day: "2-digit", - }); -} diff --git a/docs/.vuepress/modules/work/ChronologicalWorksTable/ChronologicalWorksTable.vue b/docs/.vuepress/modules/work/ChronologicalWorksTable/ChronologicalWorksTable.vue deleted file mode 100644 index 6794c8c..0000000 --- a/docs/.vuepress/modules/work/ChronologicalWorksTable/ChronologicalWorksTable.vue +++ /dev/null @@ -1,73 +0,0 @@ -<script lang="ts"> -function date2num(date: Date | undefined): number { - return date?.valueOf() ?? Infinity; -} - -export default { - name: "WorksPage", - computed: { - tableTheme() { - return this.$themeLocale.worksTable ?? {}; - }, - }, -}; -</script> - -<script lang="ts" setup> -import { CHRONOLOGICAL_WORKS } from "../data.ts"; -import { renderDate } from "../../../global.ts"; -import { work as w } from "../domain"; -import { computed } from "vue"; - -const works = computed(() => - CHRONOLOGICAL_WORKS.concat().sort( - (a, b) => - date2num(b.endDate) - date2num(a.endDate) || - date2num(b.startDate) - date2num(a.startDate), - ), -); -</script> - -<template> - <table> - <thead> - <tr> - <th>{{ tableTheme.name }}</th> - <th>{{ tableTheme.description }}</th> - <th>{{ tableTheme.role }}</th> - <th>{{ tableTheme.technologies }}</th> - <th>{{ tableTheme.status }}</th> - <th>{{ tableTheme.dates }}</th> - </tr> - </thead> - <tbody> - <tr v-for="work in works"> - <td> - <a rel="nofollow noopener" :href="w.getExternalLink(work)"> - {{ work.name }} - </a> - </td> - <td>{{ work.description }}</td> - <td v-html="work.roles.join(', ')"></td> - <td>{{ work.technologies.join(", ") }}</td> - <td>{{ work.status }}</td> - <td> - <div> - <small :class="{ grey: work.endDate }"> - {{ renderDate(work.startDate) }} - </small> - </div> - <div v-if="work.endDate"> - <small>{{ renderDate(work.endDate) }}</small> - </div> - </td> - </tr> - </tbody> - </table> -</template> - -<style lang="css"> -.grey { - color: rgba(0, 0, 0, 0.4); -} -</style> diff --git a/docs/.vuepress/modules/work/ChronologicalWorksTable/index.ts b/docs/.vuepress/modules/work/ChronologicalWorksTable/index.ts deleted file mode 100644 index 2373401..0000000 --- a/docs/.vuepress/modules/work/ChronologicalWorksTable/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as ChronologicalWorksTable } from "./ChronologicalWorksTable.vue"; diff --git a/docs/.vuepress/modules/work/data.ts b/docs/.vuepress/modules/work/data.ts deleted file mode 100644 index 13ecf2c..0000000 --- a/docs/.vuepress/modules/work/data.ts +++ /dev/null @@ -1,375 +0,0 @@ -import { Role } from "./domain/Role.ts"; -import { Status } from "./domain/Status.ts"; -import { Technology } from "./domain/Technology.ts"; -import type { Work } from "./domain/Work.ts"; - -export const CHRONOLOGICAL_WORKS: Work[] = [ - { - name: "nixeovim", - url: "/pleshevskiy/nixeovim", - description: "Configure and build neovim editor using nix", - roles: [Role.Author], - technologies: [Technology.Nix], - startDate: new Date("2024-04-24"), - status: Status.ActiveDeveloped, - }, - { - name: "picsg", - url: "/pleshevskiy/picsg", - description: - "A tool for steganographing information in a picture encoded using the Vernam cipher.", - roles: [Role.Author], - technologies: [Technology.Haskell], - startDate: new Date("2024-04-13"), - endDate: new Date("2024-07-25"), - status: Status.AsIs, - }, - { - name: "Mindustry tools", - url: "/pleshevskiy/mindustry-tools", - description: "Tools for the Mindustry game", - roles: [Role.Author], - technologies: [Technology.Nix, Technology.Godot], - startDate: new Date("2024-01-07"), - status: Status.PassivelyMaintained, - }, - { - name: "Master Progress Rosmintrud tools", - url: "https://rosmintrud.masterprogress.ru", - description: - "Internal service to prepare documents for the rosmintrud (SPA)", - roles: [Role.TechLead], - technologies: [ - Technology.Deno, - Technology.Sqlite, - Technology.TypeScript, - Technology.Vue, - Technology.Docker, - Technology.Woodpecker, - Technology.Nix, - ], - startDate: new Date("2023-07-03"), - status: Status.PassivelyMaintained, - }, - { - name: "yandexgpt_tg_bot", - url: "/pleshevskiy/yandexgpt_tg_bot", - description: "The Telegram bot to describe article with link by YandexGPT.", - roles: [Role.Author], - technologies: [Technology.JavaScript, Technology.NodeJS, Technology.Nix], - startDate: new Date("2023-06-27"), - endDate: new Date("2024-07-25"), - status: Status.AsIs, - }, - { - name: "tree-sitter-plpgsql", - url: "/pleshevskiy/tree-sitter-plpgsql", - description: "plpgsql grammar for tree-sitter", - roles: [Role.Author], - technologies: [ - Technology.C, - Technology.JavaScript, - Technology.TreeSitter, - Technology.Nix, - ], - startDate: new Date("2023-01-05"), - status: Status.PassivelyMaintained, - }, - { - name: "wd2", - url: "/pleshevskiy/wd2", - description: - "A wrapper over d2 which allows to use additional configs from d2 file", - roles: [Role.Author], - technologies: [Technology.Bash, Technology.Nix], - startDate: new Date("2022-12-12"), - endDate: new Date("2023-07-31"), - status: Status.AsIs, - }, - { - name: "tree-sitter-d2", - url: "/pleshevskiy/tree-sitter-d2", - description: "d2 grammar for tree-sitter", - roles: [Role.Author], - technologies: [ - Technology.C, - Technology.JavaScript, - Technology.TreeSitter, - Technology.Nix, - ], - startDate: new Date("2022-12-04"), - status: Status.ActiveDeveloped, - }, - { - name: "nix2lua", - url: "/mynix/nix2lua", - description: - "This is a small but functional library that converts your nix configurations into lua format.", - roles: [Role.Author], - technologies: [Technology.Nix, Technology.Lua], - startDate: new Date("2022-11-22"), - status: Status.PassivelyMaintained, - }, - { - name: "vnetod", - url: "/pleshevskiy/vnetod", - description: "Dotenv section switcher", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2022-07-29"), - status: Status.PassivelyMaintained, - }, - { - name: "estring", - url: "/pleshevskiy/estring", - description: "A simple way to parse a string using type annotations.", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2022-07-23"), - endDate: new Date("2024-07-25"), - status: Status.AsIs, - }, - { - name: "enve", - url: "/pleshevskiy/enve", - description: - "It helps you work with environment variables and convert it to any type using only type annotations", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2022-07-18"), - endDate: new Date("2024-07-25"), - status: Status.AsIs, - }, - { - name: "docker stack drone plugin", - url: "/pleshevskiy/docker_stack", - description: "Deploy to production using `docker stack deploy`", - roles: [Role.Author], - technologies: [Technology.Docker, Technology.Drone, Technology.Woodpecker], - startDate: new Date("2022-06-06"), - endDate: new Date("2024-07-25"), - status: Status.AsIs, - }, - { - name: "dexios", - url: "/github/dexios", - description: - "Dexios is a fast, secure, and open source command-line encryption tool.", - roles: [Role.Collaborator], - technologies: [Technology.Rust], - startDate: new Date("2022-06-01"), - endDate: new Date("2023-02-28"), - }, - { - name: "recipes", - url: "/pleshevskiy/recipes", - description: "Site with recipes which cares about privacy", - roles: [Role.Author], - technologies: [Technology.TypeScript, Technology.Deno, Technology.Rust], - startDate: new Date("2022-05-04"), - status: Status.PassivelyMaintained, - }, - { - name: "pleshevski.ru", - url: "/pleshevskiy/pleshevski.ru", - description: "Source code of my personal site", - roles: [Role.Author], - technologies: [ - Technology.TypeScript, - Technology.Vue, - Technology.Vuepress, - Technology.Nix, - ], - startDate: new Date("2022-03-16"), - status: Status.PassivelyMaintained, - }, - { - name: "paren", - url: "/pleshevskiy/paren", - description: "Library for parsing and rendering information.", - roles: [Role.Author], - technologies: [Technology.TypeScript, Technology.Deno], - startDate: new Date("2022-03-14"), - endDate: new Date("2024-07-25"), - status: Status.Experimental, - }, - { - name: "hwt", - url: "/pleshevskiy/hwt", - description: - "healthy workaholic timer – A tool that keeps you from breaking your health by working all day.", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2022-02-04"), - endDate: new Date("2024-07-25"), - status: Status.AsIs, - }, - { - name: "ood_persistence", - url: "/pleshevskiy/ood_persistence", - description: - "Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture ", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2021-10-12"), - endDate: new Date("2021-10-21"), - status: Status.Deprecated, - }, - { - name: "migra", - url: "/pleshevskiy/migra", - description: "Simple SQL migration manager for your project.", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2021-01-31"), - endDate: new Date("2022-03-17"), - status: Status.AsIs, - }, - { - name: "espruino-starter", - url: "/pleshevskiy/espruino-starter", - description: - "Quickly start creating your new project on the espruino board or a board based on it.", - roles: [Role.Author], - technologies: [Technology.JavaScript], - startDate: new Date("2021-08-23"), - status: Status.AsIs, - }, - { - name: "react-rest-request", - url: "/pleshevskiy/react-rest-request", - description: "Minimalistic REST API client for React inspired by Apollo.", - roles: [Role.Author], - technologies: [Technology.TypeScript, Technology.React], - startDate: new Date("2020-10-04"), - endDate: new Date("2023-03-02"), - status: Status.Deprecated, - }, - { - name: "sonic-channel", - url: "/pleshevskiy/sonic-channel", - description: "Rust client for sonic search backend.", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2020-07-18"), - status: Status.PassivelyMaintained, - }, - { - name: "itconfig", - url: "/pleshevskiy/itconfig", - description: - "Easy build a configs from environment variables and use it in globally.", - roles: [Role.Author], - technologies: [Technology.Rust], - startDate: new Date("2019-12-22"), - endDate: new Date("2022-07-24"), - status: Status.Deprecated, - }, - { - name: "it-fsm", - url: "/pleshevskiy/it-fsm", - description: "Simple full-featured finite state machine for your project", - roles: [Role.Author], - technologies: [Technology.TypeScript, Technology.NodeJS, Technology.Deno], - startDate: new Date("2019-10-11"), - status: Status.PassivelyMaintained, - }, - { - name: "Cabinet Master Progress", - url: "https://cabinet.masterprogress.ru", - description: - "Student's cabinet of the educational center Master Progress (SSR + SPA)", - roles: [Role.TechLead], - technologies: [ - Technology.Python, - Technology.Flask, - Technology.Postgresql, - Technology.TypeScript, - Technology.React, - Technology.Docker, - Technology.Woodpecker, - Technology.Nix, - ], - startDate: new Date("2019-09-22"), - status: Status.PassivelyMaintained, - }, - { - name: "genrss", - url: "/pleshevskiy/genrss", - description: "RSS generator for python", - roles: [Role.Author], - technologies: [Technology.Python], - startDate: new Date("2019-07-23"), - status: Status.AsIs, - }, - { - name: "marshmallow_pageinfo", - url: "/pleshevskiy/marshmallow_pageinfo", - description: "Page info marshmallow schema for api", - roles: [Role.Author], - technologies: [Technology.Python], - startDate: new Date("2019-10-05"), - endDate: new Date("2023-03-02"), - status: Status.AsIs, - }, - { - name: "Binary Management", - url: "https://www.binarymanagement.com", - description: "Project management tool for interior designers", - roles: [Role.Developer, Role.TechLead, Role.TeamLead], - technologies: [ - Technology.TypeScript, - Technology.NodeJS, - Technology.React, - Technology.Antd, - Technology.Docker, - Technology.Drone, - Technology.Rust, - Technology.Nix, - ], - startDate: new Date("2018-09-15"), - status: Status.ActiveDeveloped, - }, - { - name: "Core Spirit", - url: "https://corespirit.com", - description: "Social platform focusing on human and planetary enhancement", - roles: [Role.Developer], - technologies: [ - Technology.TypeScript, - Technology.NodeJS, - Technology.Go, - Technology.Python, - Technology.React, - Technology.Docker, - Technology.Drone, - ], - startDate: new Date("2018-09-05"), - endDate: new Date("2019-12-31"), - }, - { - name: "Master Progress", - url: "https://masterprogress.ru", - description: - "Main website of the educational center Master Progress (SSR + Forms)", - roles: [Role.TechLead], - technologies: [ - Technology.Python, - Technology.Flask, - Technology.JavaScript, - Technology.Nix, - ], - startDate: new Date("2018-04-10"), - status: Status.PassivelyMaintained, - }, - { - name: "ictmpl", - url: "/pleshevskiy/ictmpl", - description: "Generate projects from templates", - roles: [Role.Author], - technologies: [Technology.Python], - startDate: new Date("2018-06-30"), - endDate: new Date("2023-03-02"), - status: Status.AsIs, - }, -]; diff --git a/docs/.vuepress/modules/work/domain/Role.ts b/docs/.vuepress/modules/work/domain/Role.ts deleted file mode 100644 index f124a40..0000000 --- a/docs/.vuepress/modules/work/domain/Role.ts +++ /dev/null @@ -1,7 +0,0 @@ -export enum Role { - Collaborator = "collaborator", - Author = "author", - TechLead = "tech lead", - TeamLead = "team lead", - Developer = "developer", -} diff --git a/docs/.vuepress/modules/work/domain/Status.ts b/docs/.vuepress/modules/work/domain/Status.ts deleted file mode 100644 index 3e3dc64..0000000 --- a/docs/.vuepress/modules/work/domain/Status.ts +++ /dev/null @@ -1,25 +0,0 @@ -export enum Status { - // New features are being added and bugs are being fixed. - ActiveDeveloped = "actively-developed", - - // There are no plans for new features, but the maintainer intends to respond - // to issues that get filed. - PassivelyMaintained = "passively-maintained", - - // The package is feature complete, the maintainer does not intend to continue - // working on it or providing support, but it works for the purposes it was - // designed for. - AsIs = "as-is", - - // The author wants to share it with the community but is not intending to - // meet anyone's particular use case. - Experimental = "experimental", - - // The current maintainer would like to transfer the package to someone else. - LookingForMaintainer = "looking-for-maintainer", - - // The maintainer does not recommend using this package (the description of the - // package can describe why, there could be a better solution available or - // there could be problems with the package that the author does not want to fix). - Deprecated = "deprecated", -} diff --git a/docs/.vuepress/modules/work/domain/Technology.ts b/docs/.vuepress/modules/work/domain/Technology.ts deleted file mode 100644 index 935a6a6..0000000 --- a/docs/.vuepress/modules/work/domain/Technology.ts +++ /dev/null @@ -1,27 +0,0 @@ -export enum Technology { - C = "C", - Go = "Go", - JavaScript = "JS", - TypeScript = "TS", - Rust = "Rust", - Python = "Python", - Php = "PHP", - Deno = "Deno", - NodeJS = "NodeJS", - Flask = "Flask", - React = "React", - Antd = "Antd", - Postgresql = "PostgreSQL", - Docker = "Docker", - Drone = "Drone CI", - Woodpecker = "Woodpecker CI", - Bash = "Bash", - TreeSitter = "TreeSitter", - Nix = "Nix", - Lua = "Lua", - Sqlite = "Sqlite", - Vue = "Vue", - Vuepress = "Vuepress", - Godot = "Godot", - Haskell = "Haskell", -} diff --git a/docs/.vuepress/modules/work/domain/Work.ts b/docs/.vuepress/modules/work/domain/Work.ts deleted file mode 100644 index 77fe656..0000000 --- a/docs/.vuepress/modules/work/domain/Work.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { NonEmptyArray } from "../../../global.ts"; -import { Role } from "./Role.ts"; -import { Status } from "./Status.ts"; -import { Technology } from "./Technology.ts"; - -export interface Work { - name: string; - url: string; - description: string; - roles: NonEmptyArray<Role>; - technologies: NonEmptyArray<Technology>; - startDate: Date; - endDate?: Date; - status?: Status; -} - -export const getExternalLink: (work: Pick<Work, "url">) => string = (work) => - work.url.startsWith("https://") - ? work.url - : new URL(work.url, "https://git.pleshevski.ru").toString(); diff --git a/docs/.vuepress/modules/work/domain/index.ts b/docs/.vuepress/modules/work/domain/index.ts deleted file mode 100644 index cf8937a..0000000 --- a/docs/.vuepress/modules/work/domain/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { Role } from "./Role.ts"; -export { Status } from "./Status.ts"; -export { Technology } from "./Technology.ts"; -export type { Work } from "./Work.ts"; -export * as work from "./Work.ts"; diff --git a/docs/.vuepress/modules/work/index.ts b/docs/.vuepress/modules/work/index.ts deleted file mode 100644 index b836ebf..0000000 --- a/docs/.vuepress/modules/work/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./ChronologicalWorksTable"; diff --git a/docs/.vuepress/pages/WorksPage.vue b/docs/.vuepress/pages/WorksPage.vue deleted file mode 100644 index 5c043a3..0000000 --- a/docs/.vuepress/pages/WorksPage.vue +++ /dev/null @@ -1,42 +0,0 @@ -<script setup> -// See: https://github.com/vuejs/vuepress/blob/master/packages/%40vuepress/theme-default/layouts/Layout.vue -import ParentLayout from '@vuepress/theme-default/layouts/Layout.vue' -import { ChronologicalWorksTable } from "../modules/work"; -</script> - -<template> - <ParentLayout> - <template #page-bottom> - <div class="works-table-wrapper"> - <ChronologicalWorksTable /> - </div> - </template> - </ParentLayout> -</template> - -<style lang="css" scoped> -.works-table-wrapper { - margin: 0 auto; - padding: 0 2rem; - max-width: 1224px; - box-sizing: border-box -} - -.works-table-wrapper :deep(table) { - width: 100%; -} -</style> - -<style lang="css"> -:root { - --content-width: 960px; -} - -.vp-page .theme-default-content { - padding-bottom: 0 !important; -} - -.vp-page-meta { - display: none; -} -</style> diff --git a/docs/.vuepress/theme.ts b/docs/.vuepress/theme.ts deleted file mode 100644 index 797ffa6..0000000 --- a/docs/.vuepress/theme.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DefaultThemeOptions, defaultTheme } from "@vuepress/theme-default"; - -export const mkMyTheme = (options: DefaultThemeOptions) => { - // returns a theme object - return { - name: "my-theme", - - extends: defaultTheme(options), - }; -}; diff --git a/docs/eng/index.md b/docs/eng/index.md deleted file mode 100644 index 743ced3..0000000 --- a/docs/eng/index.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -home: true -title: Resume -heroText: null ---- - -Always up-to-date link to [resume](/eng/). - -## Overview - -My name is Dmitriy Pleshevskiy. - -I'm an open source software enthusiast, a lead software developer, architect, -team leader and also mentor. - -## Skills - -#### Programming Languages: - -- TypeScript (prefer, solid 9-year exp) -- SQL (prefer, solid 8-year exp) -- Rust (prefer, solid 5-year exp) -- Python (solid 9-year exp) -- Haskell -- Bash (8-year exp) -- Java -- C# -- C++ - -#### Repositories: - -- PostgreSQL (prefer, solid 8-year exp) -- MySQL -- Sqlite -- MsSQL -- MongoDB -- Reddis -- Minio (prefer, solid 5-year exp) - ---- - -I also have extensive experience in creating the following applications: - -- Traditional (SSR + Forms) -- API (REST/GraphQL/WebSocket/EventSource) -- Dynamic (SPA) -- Hybrid (SSR + SPA) -- Console -- Cross-platform - -## Stack - -#### Backend (Rust) - -- `axum` (prefer, solid 2-year exp) -- `async-graphql` (prefer, solid 2-year exp) -- `shaku` (prefer, solid 2-year exp) -- `bb8` + `postgres-types` (prefer, solid 5-year exp) -- `diesel` (2-year exp) - -#### Backend (Node.JS) - -- `Apollo` (solid 5-year exp) -- `Express` (solid 9-year exp) -- `Nest.JS` -- `Knex.js` / `Objection.js` (solid 5-year exp) -- `Sequelize` - -#### Frontend - -- `React` (solid 8-year exp) -- `VueJS` (prefer, solid 3-year exp) -- `Cypress` (prefer, solid 3-year exp) -- `JQuery` -- `Antd` / `Antdv` -- `PostCSS` (prefer, solid 5-year exp) -- `Sass` (prefer, solid 8-year exp) -- `Less` (weak 4-year exp) - -#### DevOps - -- `NixOS` / `NixOps` / `Nix dev shell` (prefer, solid 3-year exp) -- `Docker Swarm` (solid 6-year exp) -- `Kubernetes` (weak 5-year exp) -- `Woodpecker CI` (prefer, solid 4-year exp) -- `Drone CI` (solid 3-year exp) -- `Gitlab CI` (solid 7-year exp) -- `GitHub Actions` (4-year exp) - -## Interests - -Open-source projects are my passion! I develop, maintain and improve projects in -my spare time. - -Besides programming, I love to cook and spend time with my beloved family! - -## Contacts - -Simplex (Prefer): [Dmitriy -Pleshevskiy](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion) - - -Telegram: [Dmitriy Pleshevskiy](https://telegram.me/da_pranaya) - -Matrix: `@pleshevskiy:matrix.org` - -Email: `dmitriy[at]pleshevski[dot]ru` - -## Links - -- [Forgejo](https://git.pleshevski.ru/) -- [Github (Suspended)](https://github.com/pleshevskiy) diff --git a/docs/eng/works.md b/docs/eng/works.md deleted file mode 100644 index ab2c3d3..0000000 --- a/docs/eng/works.md +++ /dev/null @@ -1,121 +0,0 @@ ---- -title: Works -layout: WorksPage -sidebar: false ---- - -## Highlighted working experience - -### Binary Management - -- Dates: August 2018 – currently -- Roles: Lead Fullstack Developer, Team Lead, Architect - -Development of a Project Management Tool for Interior Designers - -##### Backend GraphQL API - -Stack: `Node.JS`, `Apollo`, `PostgreSQL`, `Redis`, `BullMQ` - -- Migrated database triggers into business logic. Code became easier to read and -maintain, and the system became more reliable. -- Introduced unit testing and integration testing practices. I wrote over 70% of -all tests myself. -- Added GraphQL subscriptions for dynamic updates. - -##### Frontend - -Stack: `React`, `Apollo`, `Antd` - -- Formed a UIKit and general components, optimized complex and loaded -components. -- Changed API work on the frontend. -- Introduced integration testing practice using Cypress. -- Migrated the entire project to TypeScript. Created isolated system modules. - -##### Leadership of the Team - -- Introduced TDD (Test-Driven Development) practices. -- Brought the "Critical Chain Method", the "Buffer Method", and the "Backward -Planning" method into the project. Helped the team get in sync, -releasing small batches every week. -- Created individual development plans for team members. - -##### Architecture - -- Broke down the entire codebase into modules by feature. -- Optimized `PostgreSQL` database, splitting company data into separate schemas -and applying partitioning tables. -- Added query caching with Redis. -- Reduced infrastructure costs by 5 times, migrating the project from Kubernetes -to NixOS. - ---- - -### Core Spirit (Back Office) - -- Даты: Август 2024 - currently -- Роль: Lead Fullstack Developer - -Development of the Back Office for Core Spirit social platform. - -- Integrated `Dependabot`, which helped update all outdated -dependencies. Replaced webpack with `vite`. - ---- - -### Master Progress - -- Dates: May 2018 - currently (Passively maintained) -- Role: Tech Lead - -Development web infrastructure of the educational center Master Progress - -- [The main site](https://masterprogress.ru) (`Python`, `Flask`). -- [Student's cabinet](https://cabinet.masterprogress.ru) (`Python`, -`Flask`, `TypeScript`, `React`, `PostgreSQL`). -- [A tool for rosmintrud](https://rosmintrud.masterprogress.ru) -(`Deno`, `Vue`, `Typescript`) -- A complete infrastructure was created on `NixOS`. Before that, I had created -an infrastructure using `Drone CI` / `Woodpecker CI` and `Docker -swarm`, which has been running for over 5 years. - ---- - -### Core Spirit - -- Dates: August 2018 - May 2020, August 2024 - currently -- Role: Lead Fullstack Developer - -Development of Social platform focusing on human and planetary enhancement. - -- A REST API (using `Node.JS`, `Express`, and `PostgreSQL`) for the main website -and back office. I also got to work with a new version of the REST -API using `Go` and `PostgreSQL`. -- Auto poster to various social networks and messengers -(Facebook, LinkedIn, Twitter, Telegram). -- Neural network for automatic categorization of articles. - ---- - -#### MERLION - -- Dates: March 2016 – May 2018 -- Role: Senior Fullstack developer - -In this company there were 6 considerable projects I have successfully -completed: - -- optimize the creation of promotional pages (PHP, JavaScript) -- support main traditional site <https://citilink.ru> (PHP, JavaScript) -- development of parsing to monitor products for changes in price, -quantity/availability in stock, rating and other fields based on data from 55 -websites (Node.JS, Express) -- work with neural networks for matching of goods -- development face recognition apps for Android (Java) - ---- - -## Chronology - -Public projects only. diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 9235f70..0000000 --- a/docs/index.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -home: true -title: Резюме -heroText: null ---- - -Всегда актуальная ссылка на [резюме](/). - -## Общие сведения - -Меня зовут Дмитрий Плешевский. - -Я энтузиаст программного обеспечения с открытым исходным кодом, ведущий -разработчик програмного обеспечения, архитектор, руководитель команды, а так же -ментор. - -## Умения - -#### Языки программирования: - -- TypeScript (предпочитаю, твёрдый 9-летний опыт) -- SQL (предпочитаю, твёрдый 8-летний опыт) -- Rust (предпочитаю, 5-летний опыт) -- Python (твёрдый 9-летний опыт) -- Haskell -- Bash (8-летний опыт) -- Java -- C# -- C++ - -#### Хранилища данных: - -- PostgreSQL (предпочитаю, твёрдый 8-летний опыт) -- MySQL -- Sqlite -- MsSQL -- MongoDB -- Reddis -- Minio (предпочитаю, твердый 5-летний опыт) - ---- - -Я так же имею большой опыт в создании следующих типов приложений: - -- Традиционные (SSR + Forms) -- API (REST/GraphQL/WebSocket/EventSource) -- Динамическое (SPA) -- Гибридное (SSR + SPA) -- Консольные -- Кроссплатформенные - -## Stack - -#### Backend (Rust) - -- `axum` (предпочитаю, твёрдый 2-летний опыт) -- `async-graphql` (предпочитаю, твёрдый 2-летний опыт) -- `shaku` (предпочитаю, твёрдый 2-летний опыт) -- `bb8` + `postgres-types` (предпочитаю, твёрдый 5-летний опыт) -- `diesel` (2-летний опыт) - -#### Backend (Node.JS) - -- `Apollo` (твёрдый 5-летний опыт) -- `Express` (твёрдый 9-летний опыт) -- `Nest.JS` -- `Knex.js` / `Objection.js` (твёрдый 5-летний опыт) -- `Sequelize` - -#### Frontend - -- `React` (твёрдый 8-летний опыт) -- `VueJS` (предпочитаю, твёрдый 4-летний опыт) -- `Cypress` (предпочитаю, твёрдый 3-летний опыт) -- `JQuery` -- `Antd` / `Antdv` -- `PostCSS` (предпочитаю, твёрдый 5-летний опыт) -- `Sass` (предпочитаю, твёрдый 8-летний опыт) -- `Less` (слабый 4-летний опыт) - -#### DevOps - -- `NixOS` / `NixOps` / `Nix dev shell` (предпочитаю, твёрдый 3-летний опыт) -- `Docker Swarm` (твёрдый 6-летний опыт) -- `Kubernetes` (слабый 5-летний опыт) -- `Woodpecker CI` (твёрдый 4-летний опыт) -- `Drone CI` (твёрдый 3-летний опыт) -- `Gitlab CI` (твёрдый 7-летний опыт) -- `GitHub Actions` (4-летний опыт) - -## Интересы - -Open-source проекты - моя страсть! Разрабатываю, поддерживаю и улучшаю проекты в -своё свободное время. - -Помимо программирования я люблю готовить и проводить время со своей любимой -семьей! - -## Контакты - -Simplex (Предпочтительно): [Dmitriy -Pleshevskiy](https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion) - -Telegram: [Dmitriy Pleshevskiy](https://telegram.me/da_pranaya) - -Matrix: `@pleshevskiy:matrix.org` - -Email: `dmitriy[at]pleshevski[dot]ru` - -## Ссылки - -- [Forgejo](https://git.pleshevski.ru/) -- [Github (Приостановлен)](https://github.com/pleshevskiy) diff --git a/docs/works.md b/docs/works.md deleted file mode 100644 index a2bec15..0000000 --- a/docs/works.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Работы -layout: WorksPage -sidebar: false ---- - -## Выделенный опыт работы - -### Binary Management - -- Даты: Август 2018 – по настоящее время -- Роли: Lead Fullstack Developer, Team Lead, Architect - -Разработка инструмента управления проектами для дизайнеров интерьера. - -##### Backend GraphQL API - -Стек: `Node.JS`, `Apollo`, `PostgreSQL`, `Redis`, `BullMQ` - -- Перенес триггеры базы данных в бизнес-логику. Проще стало читать код, вносить -изменение и система стала надежнее. -- Ввёл практику написания unit тестов и интеграционных тестов. Самолично написал -более 70% всех тестов. -- Добавил GraphQL подписки для динамичного обновления. - -##### Frontend - -Стек: `React`, `Apollo`, `Antd` - -- Сформировал UIKit и общие компоненты, оптимизировал сложные и нагруженные -компоненты. -- Изменил работу с API на фронтенде. -- Внедрил практику написания интеграционных тестов с помощью cypress. -- Полностью перенес проект на TypeScript. Сформировал изолированные модули -системы. - -##### Руководство командой - -- Ввёл практику TDD (Test-Driven Development). -- Я привнес в проект "метод критической цепи", "метод буфера" и "метод -планирования с конца". Помог команде войти в ритм, чтобы выпускать релизы каждую -неделю небольшими партиями. -- Составлял индивидуальный план развития для членов команды. - -##### Архитектура - -- Разбил всю кодовую базу на модули по фичам. -- Ускорил базу данных `PostgreSQL`, разбив данные компаний по отдельным схемам и -применив партиципирование таблиц. -- Добавил кеширование запросов с `Redis`. -- Уменьшил затраты на инфраструткуру в 5 раз, перенес весь проект с kubernetes -на `NixOS`. - ---- - -### Core Spirit (Back Office) - -- Даты: Август 2024 - по настоящее время -- Роль: Lead Fullstack Developer - -Разработка бэк-офиса для социальной платформы Core Spirit. - -- Интегрировал Dependabot, который помог обновить все устаревшие -зависимости. Заменил webpack на vite. - ---- - -### Master Progress - -- Даты: Май 2018 - по настоящее время (Пассивная поддержка) -- Роль: Tech Lead - -Разработка веб-инфраструктуры образовательного центра Мастер Прогресс. - -- [Главного сайта](https://masterprogress.ru) (`Python`, `Flask`). -- [Кабинета студента](https://cabinet.masterprogress.ru) (`Python`, `Flask`, -`TypeScript`, `React`, `PostgreSQL`). -- [Инструмента для работы с rosmintrud](https://rosmintrud.masterprogress.ru) -(`Deno`, `Vue`, `Typescript`) -- Создана полная инфраструктура на `NixOS`. До этого создал инфраструктуру -используя `Drone CI` / `Woodpecker CI` и `Docker swarm`, которая проработала -более 5 лет. - ---- - -### Core Spirit - -- Даты: Август 2018 - May 2020, Август 2024 - по настоящее время -- Роль: Lead Fullstack Developer - -Разработка социальной платформы, сфокусированной на улучшении человека и -планеты. - -- REST API (`Node.JS`, `Express`, `PostgreSQL`) для основного сайта и -бэк-офиса. Успел поработать с новой версией REST API на `Go`, `PostgreSQL` -- Автопостер в различные социальные сети и мессенджеры (Facebook, -LinkedIn, Twitter, Telegram). -- Создал нейронную сеть для автоматической категоризации статей. - ---- - -### MERLION - -- Dates: March 2016 – May 2018 -- Role: Senior Fullstack developer - -В этой компании было 6 значительных проектов, которые я успешно завершил: - -- Оптимизация создания рекламных страниц (PHP, JavaScript) -- Поддержка основного традиционного сайта <https://citilink.ru> (PHP, -JavaScript) -- Разработка парсинга для мониторинга товаров на предмет изменения цены, -количества/наличия на складе, рейтинга и других полей на основе данных с 55+ -сайтов (Node.js, Express) -- Работа с нейронными сетями для подбора товаров -- Разработка приложений для распознавания лиц для Android (Java) - ---- - -## Хронология - -В списке перечислены только публичные проекты. diff --git a/eng/index.html b/eng/index.html new file mode 100644 index 0000000..c7454af --- /dev/null +++ b/eng/index.html @@ -0,0 +1,43 @@ +<!doctype html> +<html lang="en-US"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <meta name="generator" content="VuePress 2.0.0-rc.19" /> + <style> + :root { + --vp-c-bg: #fff; + } + + [data-theme='dark'] { + --vp-c-bg: #1b1b1f; + } + + html, + body { + background-color: var(--vp-c-bg); + } + </style> + <script> + const userMode = localStorage.getItem('vuepress-color-scheme') + const systemDarkMode = + 'matchMedia' in window + ? window.matchMedia('(prefers-color-scheme: dark)').matches + : false + + if (userMode === 'light') { + document.documentElement.dataset.theme = 'light' + } else if (userMode === 'dark' || systemDarkMode) { + document.documentElement.dataset.theme = 'dark' + } + </script> + <link rel="alternate" hreflang="ru-ru" href="https://pleshevski.ru/"><meta property="og:url" content="https://pleshevski.ru/eng/"><meta property="og:site_name" content="Dmitriy Pleshevskiy"><meta property="og:title" content="Resume"><meta property="og:type" content="website"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="ru-RU"><meta property="og:updated_time" content="2024-09-05T22:11:51.000Z"><meta property="article:modified_time" content="2024-09-05T22:11:51.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Resume"}</script><title>Resume | Dmitriy Pleshevskiy</title><meta name="description" content=" "> + <link rel="preload" href="/assets/style-CynUSZ8x.css" as="style"><link rel="stylesheet" href="/assets/style-CynUSZ8x.css"> + <link rel="modulepreload" href="/assets/app-R2Ffa9VO.js"><link rel="modulepreload" href="/assets/index.html-7-wjojn8.js"> + <link rel="prefetch" href="/assets/index.html-DasZnaAo.js" as="script"><link rel="prefetch" href="/assets/works.html-DplNc40I.js" as="script"><link rel="prefetch" href="/assets/works.html-D4EgERwy.js" as="script"><link rel="prefetch" href="/assets/404.html-Xq3T-2PH.js" as="script"> + </head> + <body> + <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/eng/"><!----><span class="vp-site-name" aria-hidden="true">Dmitriy Pleshevskiy</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="Resume"><!--[--><!--[--><!--]--><!--]-->Resume<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="Works"><!--[--><!--[--><!--]--><!--]-->Works<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="Resume"><!--[--><!--[--><!--]--><!--]-->Resume<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="Works"><!--[--><!--[--><!--]--><!--]-->Works<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-home"><header class="vp-hero"><!----><!----><p class="vp-hero-description"> </p><!----></header><!----><div vp-content><div><p>Always up-to-date link to <a class="route-link" href="/eng/">resume</a>.</p><h2 id="overview" tabindex="-1"><a class="header-anchor" href="#overview"><span>Overview</span></a></h2><p>My name is Dmitriy Pleshevskiy.</p><p>I'm an open source software enthusiast, a lead software developer, architect, team leader and also mentor.</p><h2 id="skills" tabindex="-1"><a class="header-anchor" href="#skills"><span>Skills</span></a></h2><h4 id="programming-languages" tabindex="-1"><a class="header-anchor" href="#programming-languages"><span>Programming Languages:</span></a></h4><ul><li>TypeScript (prefer, solid 9-year exp)</li><li>SQL (prefer, solid 8-year exp)</li><li>Rust (prefer, solid 5-year exp)</li><li>Python (solid 9-year exp)</li><li>Haskell</li><li>Bash (8-year exp)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="repositories" tabindex="-1"><a class="header-anchor" href="#repositories"><span>Repositories:</span></a></h4><ul><li>PostgreSQL (prefer, solid 8-year exp)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (prefer, solid 5-year exp)</li></ul><hr><p>I also have extensive experience in creating the following applications:</p><ul><li>Traditional (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Dynamic (SPA)</li><li>Hybrid (SSR + SPA)</li><li>Console</li><li>Cross-platform</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (prefer, solid 2-year exp)</li><li><code>async-graphql</code> (prefer, solid 2-year exp)</li><li><code>shaku</code> (prefer, solid 2-year exp)</li><li><code>bb8</code> + <code>postgres-types</code> (prefer, solid 5-year exp)</li><li><code>diesel</code> (2-year exp)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (solid 5-year exp)</li><li><code>Express</code> (solid 9-year exp)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (solid 5-year exp)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (solid 8-year exp)</li><li><code>VueJS</code> (prefer, solid 3-year exp)</li><li><code>Cypress</code> (prefer, solid 3-year exp)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (prefer, solid 5-year exp)</li><li><code>Sass</code> (prefer, solid 8-year exp)</li><li><code>Less</code> (weak 4-year exp)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (prefer, solid 3-year exp)</li><li><code>Docker Swarm</code> (solid 6-year exp)</li><li><code>Kubernetes</code> (weak 5-year exp)</li><li><code>Woodpecker CI</code> (prefer, solid 4-year exp)</li><li><code>Drone CI</code> (solid 3-year exp)</li><li><code>Gitlab CI</code> (solid 7-year exp)</li><li><code>GitHub Actions</code> (4-year exp)</li></ul><h2 id="interests" tabindex="-1"><a class="header-anchor" href="#interests"><span>Interests</span></a></h2><p>Open-source projects are my passion! I develop, maintain and improve projects in my spare time.</p><p>Besides programming, I love to cook and spend time with my beloved family!</p><h2 id="contacts" tabindex="-1"><a class="header-anchor" href="#contacts"><span>Contacts</span></a></h2><p>Simplex (Prefer): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="links" tabindex="-1"><a class="header-anchor" href="#links"><span>Links</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Suspended)</a></li></ul></div></div><!----></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> + <script type="module" src="/assets/app-R2Ffa9VO.js" defer></script> + </body> +</html> diff --git a/eng/works.html b/eng/works.html new file mode 100644 index 0000000..26a843f --- /dev/null +++ b/eng/works.html @@ -0,0 +1,43 @@ +<!doctype html> +<html lang="en-US"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <meta name="generator" content="VuePress 2.0.0-rc.19" /> + <style> + :root { + --vp-c-bg: #fff; + } + + [data-theme='dark'] { + --vp-c-bg: #1b1b1f; + } + + html, + body { + background-color: var(--vp-c-bg); + } + </style> + <script> + const userMode = localStorage.getItem('vuepress-color-scheme') + const systemDarkMode = + 'matchMedia' in window + ? window.matchMedia('(prefers-color-scheme: dark)').matches + : false + + if (userMode === 'light') { + document.documentElement.dataset.theme = 'light' + } else if (userMode === 'dark' || systemDarkMode) { + document.documentElement.dataset.theme = 'dark' + } + </script> + <link rel="alternate" hreflang="ru-ru" href="https://pleshevski.ru/works.html"><meta property="og:url" content="https://pleshevski.ru/eng/works.html"><meta property="og:site_name" content="Dmitriy Pleshevskiy"><meta property="og:title" content="Works"><meta property="og:type" content="website"><meta property="og:locale" content="en-US"><meta property="og:locale:alternate" content="ru-RU"><meta property="og:updated_time" content="2024-08-07T08:48:54.000Z"><meta property="article:modified_time" content="2024-08-07T08:48:54.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Works"}</script><title>Works | Dmitriy Pleshevskiy</title><meta name="description" content=" "> + <link rel="preload" href="/assets/style-CynUSZ8x.css" as="style"><link rel="stylesheet" href="/assets/style-CynUSZ8x.css"> + <link rel="modulepreload" href="/assets/app-R2Ffa9VO.js"><link rel="modulepreload" href="/assets/works.html-D4EgERwy.js"> + <link rel="prefetch" href="/assets/index.html-DasZnaAo.js" as="script"><link rel="prefetch" href="/assets/works.html-DplNc40I.js" as="script"><link rel="prefetch" href="/assets/index.html-7-wjojn8.js" as="script"><link rel="prefetch" href="/assets/404.html-Xq3T-2PH.js" as="script"> + </head> + <body> + <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container data-v-765855fb><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/eng/"><!----><span class="vp-site-name" aria-hidden="true">Dmitriy Pleshevskiy</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/" aria-label="Resume"><!--[--><!--[--><!--]--><!--]-->Resume<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="Works"><!--[--><!--[--><!--]--><!--]-->Works<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/works.html" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/eng/" aria-label="Resume"><!--[--><!--[--><!--]--><!--]-->Resume<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="Works"><!--[--><!--[--><!--]--><!--]-->Works<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/works.html" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/eng/works.html" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div><h2 id="highlighted-working-experience" tabindex="-1"><a class="header-anchor" href="#highlighted-working-experience"><span>Highlighted working experience</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Dates: August 2018 – currently</li><li>Roles: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Development of a Project Management Tool for Interior Designers</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Stack: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Migrated database triggers into business logic. Code became easier to read and maintain, and the system became more reliable.</li><li>Introduced unit testing and integration testing practices. I wrote over 70% of all tests myself.</li><li>Added GraphQL subscriptions for dynamic updates.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Stack: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Formed a UIKit and general components, optimized complex and loaded components.</li><li>Changed API work on the frontend.</li><li>Introduced integration testing practice using Cypress.</li><li>Migrated the entire project to TypeScript. Created isolated system modules.</li></ul><h5 id="leadership-of-the-team" tabindex="-1"><a class="header-anchor" href="#leadership-of-the-team"><span>Leadership of the Team</span></a></h5><ul><li>Introduced TDD (Test-Driven Development) practices.</li><li>Brought the "Critical Chain Method", the "Buffer Method", and the "Backward Planning" method into the project. Helped the team get in sync, releasing small batches every week.</li><li>Created individual development plans for team members.</li></ul><h5 id="architecture" tabindex="-1"><a class="header-anchor" href="#architecture"><span>Architecture</span></a></h5><ul><li>Broke down the entire codebase into modules by feature.</li><li>Optimized <code>PostgreSQL</code> database, splitting company data into separate schemas and applying partitioning tables.</li><li>Added query caching with Redis.</li><li>Reduced infrastructure costs by 5 times, migrating the project from Kubernetes to NixOS.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - currently</li><li>Роль: Lead Fullstack Developer</li></ul><p>Development of the Back Office for Core Spirit social platform.</p><ul><li>Integrated <code>Dependabot</code>, which helped update all outdated dependencies. Replaced webpack with <code>vite</code>.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Dates: May 2018 - currently (Passively maintained)</li><li>Role: Tech Lead</li></ul><p>Development web infrastructure of the educational center Master Progress</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">The main site</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Student's cabinet</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">A tool for rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>A complete infrastructure was created on <code>NixOS</code>. Before that, I had created an infrastructure using <code>Drone CI</code> / <code>Woodpecker CI</code> and <code>Docker swarm</code>, which has been running for over 5 years.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Dates: August 2018 - May 2020, August 2024 - currently</li><li>Role: Lead Fullstack Developer</li></ul><p>Development of Social platform focusing on human and planetary enhancement.</p><ul><li>A REST API (using <code>Node.JS</code>, <code>Express</code>, and <code>PostgreSQL</code>) for the main website and back office. I also got to work with a new version of the REST API using <code>Go</code> and <code>PostgreSQL</code>.</li><li>Auto poster to various social networks and messengers (Facebook, LinkedIn, Twitter, Telegram).</li><li>Neural network for automatic categorization of articles.</li></ul><hr><h4 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h4><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>In this company there were 6 considerable projects I have successfully completed:</p><ul><li>optimize the creation of promotional pages (PHP, JavaScript)</li><li>support main traditional site <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>development of parsing to monitor products for changes in price, quantity/availability in stock, rating and other fields based on data from 55 websites (Node.JS, Express)</li><li>work with neural networks for matching of goods</li><li>development face recognition apps for Android (Java)</li></ul><hr><h2 id="chronology" tabindex="-1"><a class="header-anchor" href="#chronology"><span>Chronology</span></a></h2><p>Public projects only.</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: dmitriy@ideascup.me">Dmitriy Pleshevskiy</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: dmitriy@pleshevski.ru">Dmitriy Pleshevskiy</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><div class="works-table-wrapper" data-v-765855fb><table data-v-765855fb><thead><tr><th>Name</th><th>Description</th><th>Role</th><th>Technologies</th><th>Status</th><th>Dates</th></tr></thead><tbody><!--[--><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/nixeovim">nixeovim</a></td><td>Configure and build neovim editor using nix</td><td>author</td><td>Nix</td><td>actively-developed</td><td><div><small class="">04/24/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/mindustry-tools">Mindustry tools</a></td><td>Tools for the Mindustry game</td><td>author</td><td>Nix, Godot</td><td>passively-maintained</td><td><div><small class="">01/07/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://rosmintrud.masterprogress.ru">Master Progress Rosmintrud tools</a></td><td>Internal service to prepare documents for the rosmintrud (SPA)</td><td>tech lead</td><td>Deno, Sqlite, TS, Vue, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">07/03/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-plpgsql">tree-sitter-plpgsql</a></td><td>plpgsql grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>passively-maintained</td><td><div><small class="">01/05/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2">tree-sitter-d2</a></td><td>d2 grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>actively-developed</td><td><div><small class="">12/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/mynix/nix2lua">nix2lua</a></td><td>This is a small but functional library that converts your nix configurations into lua format.</td><td>author</td><td>Nix, Lua</td><td>passively-maintained</td><td><div><small class="">11/22/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/vnetod">vnetod</a></td><td>Dotenv section switcher</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/29/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/recipes">recipes</a></td><td>Site with recipes which cares about privacy</td><td>author</td><td>TS, Deno, Rust</td><td>passively-maintained</td><td><div><small class="">05/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru">pleshevski.ru</a></td><td>Source code of my personal site</td><td>author</td><td>TS, Vue, Vuepress, Nix</td><td>passively-maintained</td><td><div><small class="">03/16/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/espruino-starter">espruino-starter</a></td><td>Quickly start creating your new project on the espruino board or a board based on it.</td><td>author</td><td>JS</td><td>as-is</td><td><div><small class="">08/23/2021</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/sonic-channel">sonic-channel</a></td><td>Rust client for sonic search backend.</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/18/2020</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/it-fsm">it-fsm</a></td><td>Simple full-featured finite state machine for your project</td><td>author</td><td>TS, NodeJS, Deno</td><td>passively-maintained</td><td><div><small class="">10/11/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://cabinet.masterprogress.ru">Cabinet Master Progress</a></td><td>Student's cabinet of the educational center Master Progress (SSR + SPA)</td><td>tech lead</td><td>Python, Flask, PostgreSQL, TS, React, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">09/22/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/genrss">genrss</a></td><td>RSS generator for python</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="">07/23/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://www.binarymanagement.com">Binary Management</a></td><td>Project management tool for interior designers</td><td>developer, tech lead, team lead</td><td>TS, NodeJS, React, Antd, Docker, Drone CI, Rust, Nix</td><td>actively-developed</td><td><div><small class="">09/15/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://masterprogress.ru">Master Progress</a></td><td>Main website of the educational center Master Progress (SSR + Forms)</td><td>tech lead</td><td>Python, Flask, JS, Nix</td><td>passively-maintained</td><td><div><small class="">04/10/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/picsg">picsg</a></td><td>A tool for steganographing information in a picture encoded using the Vernam cipher.</td><td>author</td><td>Haskell</td><td>as-is</td><td><div><small class="grey">04/13/2024</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot">yandexgpt_tg_bot</a></td><td>The Telegram bot to describe article with link by YandexGPT.</td><td>author</td><td>JS, NodeJS, Nix</td><td>as-is</td><td><div><small class="grey">06/27/2023</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/estring">estring</a></td><td>A simple way to parse a string using type annotations.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/23/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/enve">enve</a></td><td>It helps you work with environment variables and convert it to any type using only type annotations</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/18/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/docker_stack">docker stack drone plugin</a></td><td>Deploy to production using `docker stack deploy`</td><td>author</td><td>Docker, Drone CI, Woodpecker CI</td><td>as-is</td><td><div><small class="grey">06/06/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/paren">paren</a></td><td>Library for parsing and rendering information.</td><td>author</td><td>TS, Deno</td><td>experimental</td><td><div><small class="grey">03/14/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/hwt">hwt</a></td><td>healthy workaholic timer – A tool that keeps you from breaking your health by working all day.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">02/04/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/wd2">wd2</a></td><td>A wrapper over d2 which allows to use additional configs from d2 file</td><td>author</td><td>Bash, Nix</td><td>as-is</td><td><div><small class="grey">12/12/2022</small></div><div><small>07/31/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/react-rest-request">react-rest-request</a></td><td>Minimalistic REST API client for React inspired by Apollo.</td><td>author</td><td>TS, React</td><td>deprecated</td><td><div><small class="grey">10/04/2020</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/marshmallow_pageinfo">marshmallow_pageinfo</a></td><td>Page info marshmallow schema for api</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">10/05/2019</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ictmpl">ictmpl</a></td><td>Generate projects from templates</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">06/30/2018</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/github/dexios">dexios</a></td><td>Dexios is a fast, secure, and open source command-line encryption tool.</td><td>collaborator</td><td>Rust</td><td></td><td><div><small class="grey">06/01/2022</small></div><div><small>02/28/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/itconfig">itconfig</a></td><td>Easy build a configs from environment variables and use it in globally.</td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">12/22/2019</small></div><div><small>07/24/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/migra">migra</a></td><td>Simple SQL migration manager for your project.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">01/31/2021</small></div><div><small>03/17/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ood_persistence">ood_persistence</a></td><td>Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture </td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">10/12/2021</small></div><div><small>10/21/2021</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://corespirit.com">Core Spirit</a></td><td>Social platform focusing on human and planetary enhancement</td><td>developer</td><td>TS, NodeJS, Go, Python, React, Docker, Drone CI</td><td></td><td><div><small class="grey">09/05/2018</small></div><div><small>12/31/2019</small></div></td></tr><!--]--></tbody></table></div><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> + <script type="module" src="/assets/app-R2Ffa9VO.js" defer></script> + </body> +</html> diff --git a/flake.lock b/flake.lock deleted file mode 100644 index b4230ee..0000000 --- a/flake.lock +++ /dev/null @@ -1,61 +0,0 @@ -{ - "nodes": { - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1721562059, - "narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - } - }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix deleted file mode 100644 index e5f675f..0000000 --- a/flake.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - description = "Pleshevski personal site"; - - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - }; - - outputs = { self, nixpkgs, flake-utils }: - let - out = system: - let - inherit (builtins) substring; - - pkgs = import nixpkgs { inherit system; }; - version = "0.0.1+${substring 0 8 self.lastModifiedDate}_${self.shortRev or "dirty"}"; - in - { - packages.default = with pkgs; stdenv.mkDerivation (finalAttrs: { - pname = "pleshevski_site"; - inherit version; - - src = ./.; - - dontBuild = true; - - installPhase = '' - mkdir -p $out - cp -r dist/* $out - ''; - }); - - devShells.default = pkgs.mkShell { - buildInputs = with pkgs; [ - pre-commit - nodejs_22 - gnumake - pnpm - nodePackages.typescript-language-server # typescript - nodePackages.vscode-langservers-extracted # html, css, json, eslint - ]; - }; - }; - in - flake-utils.lib.eachDefaultSystem out; - -} diff --git a/index.html b/index.html new file mode 100644 index 0000000..f102e50 --- /dev/null +++ b/index.html @@ -0,0 +1,43 @@ +<!doctype html> +<html lang="ru-RU"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <meta name="generator" content="VuePress 2.0.0-rc.19" /> + <style> + :root { + --vp-c-bg: #fff; + } + + [data-theme='dark'] { + --vp-c-bg: #1b1b1f; + } + + html, + body { + background-color: var(--vp-c-bg); + } + </style> + <script> + const userMode = localStorage.getItem('vuepress-color-scheme') + const systemDarkMode = + 'matchMedia' in window + ? window.matchMedia('(prefers-color-scheme: dark)').matches + : false + + if (userMode === 'light') { + document.documentElement.dataset.theme = 'light' + } else if (userMode === 'dark' || systemDarkMode) { + document.documentElement.dataset.theme = 'dark' + } + </script> + <link rel="alternate" hreflang="en-us" href="https://pleshevski.ru/eng/"><meta property="og:url" content="https://pleshevski.ru/"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:title" content="Резюме"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2024-09-05T22:11:51.000Z"><meta property="article:modified_time" content="2024-09-05T22:11:51.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Резюме"}</script><title>Резюме | Дмитрий Плешевский</title><meta name="description" content=" "> + <link rel="preload" href="/assets/style-CynUSZ8x.css" as="style"><link rel="stylesheet" href="/assets/style-CynUSZ8x.css"> + <link rel="modulepreload" href="/assets/app-R2Ffa9VO.js"><link rel="modulepreload" href="/assets/index.html-DasZnaAo.js"> + <link rel="prefetch" href="/assets/works.html-DplNc40I.js" as="script"><link rel="prefetch" href="/assets/index.html-7-wjojn8.js" as="script"><link rel="prefetch" href="/assets/works.html-D4EgERwy.js" as="script"><link rel="prefetch" href="/assets/404.html-Xq3T-2PH.js" as="script"> + </head> + <body> + <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><!----><span class="vp-site-name" aria-hidden="true">Дмитрий Плешевский</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Резюме"><!--[--><!--[--><!--]--><!--]-->Резюме<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/works.html" aria-label="Работы"><!--[--><!--[--><!--]--><!--]-->Работы<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Резюме"><!--[--><!--[--><!--]--><!--]-->Резюме<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/works.html" aria-label="Работы"><!--[--><!--[--><!--]--><!--]-->Работы<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-home"><header class="vp-hero"><!----><!----><p class="vp-hero-description"> </p><!----></header><!----><div vp-content><div><p>Всегда актуальная ссылка на <a class="route-link" href="/">резюме</a>.</p><h2 id="общие-сведения" tabindex="-1"><a class="header-anchor" href="#общие-сведения"><span>Общие сведения</span></a></h2><p>Меня зовут Дмитрий Плешевский.</p><p>Я энтузиаст программного обеспечения с открытым исходным кодом, ведущий разработчик програмного обеспечения, архитектор, руководитель команды, а так же ментор.</p><h2 id="умения" tabindex="-1"><a class="header-anchor" href="#умения"><span>Умения</span></a></h2><h4 id="языки-программирования" tabindex="-1"><a class="header-anchor" href="#языки-программирования"><span>Языки программирования:</span></a></h4><ul><li>TypeScript (предпочитаю, твёрдый 9-летний опыт)</li><li>SQL (предпочитаю, твёрдый 8-летний опыт)</li><li>Rust (предпочитаю, 5-летний опыт)</li><li>Python (твёрдый 9-летний опыт)</li><li>Haskell</li><li>Bash (8-летний опыт)</li><li>Java</li><li>C#</li><li>C++</li></ul><h4 id="хранилища-данных" tabindex="-1"><a class="header-anchor" href="#хранилища-данных"><span>Хранилища данных:</span></a></h4><ul><li>PostgreSQL (предпочитаю, твёрдый 8-летний опыт)</li><li>MySQL</li><li>Sqlite</li><li>MsSQL</li><li>MongoDB</li><li>Reddis</li><li>Minio (предпочитаю, твердый 5-летний опыт)</li></ul><hr><p>Я так же имею большой опыт в создании следующих типов приложений:</p><ul><li>Традиционные (SSR + Forms)</li><li>API (REST/GraphQL/WebSocket/EventSource)</li><li>Динамическое (SPA)</li><li>Гибридное (SSR + SPA)</li><li>Консольные</li><li>Кроссплатформенные</li></ul><h2 id="stack" tabindex="-1"><a class="header-anchor" href="#stack"><span>Stack</span></a></h2><h4 id="backend-rust" tabindex="-1"><a class="header-anchor" href="#backend-rust"><span>Backend (Rust)</span></a></h4><ul><li><code>axum</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>async-graphql</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>shaku</code> (предпочитаю, твёрдый 2-летний опыт)</li><li><code>bb8</code> + <code>postgres-types</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>diesel</code> (2-летний опыт)</li></ul><h4 id="backend-node-js" tabindex="-1"><a class="header-anchor" href="#backend-node-js"><span>Backend (Node.JS)</span></a></h4><ul><li><code>Apollo</code> (твёрдый 5-летний опыт)</li><li><code>Express</code> (твёрдый 9-летний опыт)</li><li><code>Nest.JS</code></li><li><code>Knex.js</code> / <code>Objection.js</code> (твёрдый 5-летний опыт)</li><li><code>Sequelize</code></li></ul><h4 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h4><ul><li><code>React</code> (твёрдый 8-летний опыт)</li><li><code>VueJS</code> (предпочитаю, твёрдый 4-летний опыт)</li><li><code>Cypress</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>JQuery</code></li><li><code>Antd</code> / <code>Antdv</code></li><li><code>PostCSS</code> (предпочитаю, твёрдый 5-летний опыт)</li><li><code>Sass</code> (предпочитаю, твёрдый 8-летний опыт)</li><li><code>Less</code> (слабый 4-летний опыт)</li></ul><h4 id="devops" tabindex="-1"><a class="header-anchor" href="#devops"><span>DevOps</span></a></h4><ul><li><code>NixOS</code> / <code>NixOps</code> / <code>Nix dev shell</code> (предпочитаю, твёрдый 3-летний опыт)</li><li><code>Docker Swarm</code> (твёрдый 6-летний опыт)</li><li><code>Kubernetes</code> (слабый 5-летний опыт)</li><li><code>Woodpecker CI</code> (твёрдый 4-летний опыт)</li><li><code>Drone CI</code> (твёрдый 3-летний опыт)</li><li><code>Gitlab CI</code> (твёрдый 7-летний опыт)</li><li><code>GitHub Actions</code> (4-летний опыт)</li></ul><h2 id="интересы" tabindex="-1"><a class="header-anchor" href="#интересы"><span>Интересы</span></a></h2><p>Open-source проекты - моя страсть! Разрабатываю, поддерживаю и улучшаю проекты в своё свободное время.</p><p>Помимо программирования я люблю готовить и проводить время со своей любимой семьей!</p><h2 id="контакты" tabindex="-1"><a class="header-anchor" href="#контакты"><span>Контакты</span></a></h2><p>Simplex (Предпочтительно): <a href="https://simplex.chat/contact#/?v=2-7&smp=smp%3A%2F%2FZKe4uxF4Z_aLJJOEsC-Y6hSkXgQS5-oc442JQGkyP8M%3D%40smp17.simplex.im%2F8JE7lkP68DZG-1DP8U8_njTlIz9fzRzf%23%2F%3Fv%3D1-3%26dh%3DMCowBQYDK2VuAyEAxdWiN9so1FqPVTsKhS4Y2OK80zzUvsIZ1Yo77kYV6Co%253D%26srv%3Dogtwfxyi3h2h5weftjjpjmxclhb5ugufa5rcyrmg7j4xlch7qsr5nuqd.onion" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Telegram: <a href="https://telegram.me/da_pranaya" target="_blank" rel="noopener noreferrer">Dmitriy Pleshevskiy</a></p><p>Matrix: <code>@pleshevskiy:matrix.org</code></p><p>Email: <code>dmitriy[at]pleshevski[dot]ru</code></p><h2 id="ссылки" tabindex="-1"><a class="header-anchor" href="#ссылки"><span>Ссылки</span></a></h2><ul><li><a href="https://git.pleshevski.ru/" target="_blank" rel="noopener noreferrer">Forgejo</a></li><li><a href="https://github.com/pleshevskiy" target="_blank" rel="noopener noreferrer">Github (Приостановлен)</a></li></ul></div></div><!----></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> + <script type="module" src="/assets/app-R2Ffa9VO.js" defer></script> + </body> +</html> diff --git a/package.json b/package.json deleted file mode 100644 index 600ae27..0000000 --- a/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/package.json", - "name": "pleshevskiy", - "description": "Dmitriy Pleshevskiy", - "version": "0.0.1", - "type": "module", - "private": true, - "packageManager": "pnpm@9.15.4", - "scripts": { - "build": "vuepress build docs", - "dev": "vuepress dev docs" - }, - "devDependencies": { - "@rushstack/eslint-patch": "^1.1.4", - "@types/node": "^22.1.0", - "@vitejs/plugin-vue": "^5.0.0", - "@vue/eslint-config-prettier": "^10.0.0", - "@vue/eslint-config-typescript": "^14.0.0", - "@vue/language-server": "^2.0.19", - "@vue/tsconfig": "^0.7.0", - "@vue/typescript-plugin": "^2.0.19", - "@vuepress/bundler-vite": "^2.0.0-rc.7", - "@vuepress/plugin-blog": "^2.0.0-rc.11", - "@vuepress/plugin-redirect": "2.0.0-rc.8", - "@vuepress/theme-default": "^2.0.0-rc.11", - "eslint": "<10.0.0", - "eslint-plugin-vue": "^9.14.1", - "prettier": ">=3.0.0", - "sass": "^1.79.5", - "typescript": "~5.7.0", - "vue": "^3.4.0", - "vue-tsc": "^2.0.0", - "vuepress": "^2.0.0-rc.7" - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 8d4ec36..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,4815 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@rushstack/eslint-patch': - specifier: ^1.1.4 - version: 1.10.5 - '@types/node': - specifier: ^22.1.0 - version: 22.12.0 - '@vitejs/plugin-vue': - specifier: ^5.0.0 - version: 5.2.1(vite@5.0.13(@types/node@22.12.0)(sass@1.83.4))(vue@3.5.13(typescript@5.7.3)) - '@vue/eslint-config-prettier': - specifier: ^10.0.0 - version: 10.2.0(eslint@9.19.0)(prettier@3.4.2) - '@vue/eslint-config-typescript': - specifier: ^14.0.0 - version: 14.3.0(eslint-plugin-vue@9.32.0(eslint@9.19.0))(eslint@9.19.0)(typescript@5.7.3) - '@vue/language-server': - specifier: ^2.0.19 - version: 2.2.0(typescript@5.7.3) - '@vue/tsconfig': - specifier: ^0.7.0 - version: 0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - '@vue/typescript-plugin': - specifier: ^2.0.19 - version: 2.2.0(typescript@5.7.3) - '@vuepress/bundler-vite': - specifier: ^2.0.0-rc.7 - version: 2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3) - '@vuepress/plugin-blog': - specifier: ^2.0.0-rc.11 - version: 2.0.0-rc.73(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-redirect': - specifier: 2.0.0-rc.8 - version: 2.0.0-rc.8(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/theme-default': - specifier: ^2.0.0-rc.11 - version: 2.0.0-rc.74(markdown-it@14.1.0)(sass@1.83.4)(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - eslint: - specifier: <10.0.0 - version: 9.19.0 - eslint-plugin-vue: - specifier: ^9.14.1 - version: 9.32.0(eslint@9.19.0) - prettier: - specifier: '>=3.0.0' - version: 3.4.2 - sass: - specifier: ^1.79.5 - version: 1.83.4 - typescript: - specifier: ~5.7.0 - version: 5.7.3 - vue: - specifier: ^3.4.0 - version: 3.5.13(typescript@5.7.3) - vue-tsc: - specifier: ^2.0.0 - version: 2.2.0(typescript@5.7.3) - vuepress: - specifier: ^2.0.0-rc.7 - version: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - -packages: - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/types@7.26.0': - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} - engines: {node: '>=6.9.0'} - - '@emmetio/abbreviation@2.3.3': - resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} - - '@emmetio/css-abbreviation@2.1.8': - resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} - - '@emmetio/css-parser@0.4.0': - resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==} - - '@emmetio/html-matcher@1.3.0': - resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} - - '@emmetio/scanner@1.0.4': - resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} - - '@emmetio/stream-reader-utils@0.1.0': - resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} - - '@emmetio/stream-reader@2.2.0': - resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} - - '@esbuild/aix-ppc64@0.19.12': - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.19.12': - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.19.12': - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.19.12': - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.19.12': - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.19.12': - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.19.12': - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.19.12': - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.19.12': - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.19.12': - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.19.12': - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.19.12': - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.19.12': - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.19.12': - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.19.12': - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.19.12': - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.19.12': - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-x64@0.19.12': - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.19.12': - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.19.12': - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.19.12': - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.19.12': - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.19.1': - resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.2.0': - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.19.0': - resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.5': - resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.5': - resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.1': - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} - engines: {node: '>=18.18'} - - '@johnsoncodehk/pug-beautify@0.2.2': - resolution: {integrity: sha512-qqNS/YD0Nck5wtQLCPHAfGVgWbbGafxSPjNh0ekYPFSNNqnDH2kamnduzYly8IiADmeVx/MfAE1njMEjVeHTMA==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@mdit-vue/plugin-component@2.1.3': - resolution: {integrity: sha512-9AG17beCgpEw/4ldo/M6Y/1Rh4E1bqMmr/rCkWKmCAxy9tJz3lzY7HQJanyHMJufwsb3WL5Lp7Om/aPcQTZ9SA==} - - '@mdit-vue/plugin-frontmatter@2.1.3': - resolution: {integrity: sha512-KxsSCUVBEmn6sJcchSTiI5v9bWaoRxe68RBYRDGcSEY1GTnfQ5gQPMIsM48P4q1luLEIWurVGGrRu7u93//LDQ==} - - '@mdit-vue/plugin-headers@2.1.3': - resolution: {integrity: sha512-AcL7a7LHQR3ISINhfjGJNE/bHyM0dcl6MYm1Sr//zF7ZgokPGwD/HhD7TzwmrKA9YNYCcO9P3QmF/RN9XyA6CA==} - - '@mdit-vue/plugin-sfc@2.1.3': - resolution: {integrity: sha512-Ezl0dNvQNS639Yl4siXm+cnWtQvlqHrg+u+lnau/OHpj9Xh3LVap/BSQVugKIV37eR13jXXYf3VaAOP1fXPN+w==} - - '@mdit-vue/plugin-title@2.1.3': - resolution: {integrity: sha512-XWVOQoZqczoN97xCDrnQicmXKoqwOjIymIm9HQnRXhHnYKOgJPW1CxSGhkcOGzvDU1v0mD/adojVyyj/s6ggWw==} - - '@mdit-vue/plugin-toc@2.1.3': - resolution: {integrity: sha512-41Q+iXpLHZt0zJdApVwoVt7WF6za/xUjtjEPf90Z3KLzQO01TXsv48Xp9BsrFHPcPcm8tiZ0+O1/ICJO80V/MQ==} - - '@mdit-vue/shared@2.1.3': - resolution: {integrity: sha512-27YI8b0VVZsAlNwaWoaOCWbr4eL8B04HxiYk/y2ktblO/nMcOEOLt4p0RjuobvdyUyjHvGOS09RKhq7qHm1CHQ==} - - '@mdit-vue/types@2.1.0': - resolution: {integrity: sha512-TMBB/BQWVvwtpBdWD75rkZx4ZphQ6MN0O4QB2Bc0oI5PC2uE57QerhNxdRZ7cvBHE2iY2C+BUNUziCfJbjIRRA==} - - '@mdit/helper@0.16.0': - resolution: {integrity: sha512-vUmLSZp+7UXJIYxOya9BkD0OgjgQ+6gpX+htEnc4SKaDPx4S1E7h5TE6Wy4E9Gm/JhkMHoD6TdeoQwrN/I9cLQ==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-alert@0.16.0': - resolution: {integrity: sha512-T+0BUVhKjp+Azp6sNdDbiZwydDIcZP6/NAg9uivPvcsDnI9u4lMRCdXI090xNJOdhHO3l/lOsoO//s+++MJNtA==} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-container@0.16.0': - resolution: {integrity: sha512-NCsyEiOmoJvXSEVJSY6vaEcvbE11sciRSx5qXBvQQZxUYGYsB+ObYSFVZDFPezsEN35X3b07rurLx8P2Mi9DgQ==} - engines: {node: '>= 18'} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@mdit/plugin-tab@0.16.0': - resolution: {integrity: sha512-c+/oT319DIWaMHyx5chueW8cy4pjC7E09QOg3qp86abTCdG2ljGLOlMAQbst5i/iH684QG/i8EJpB4oUeQdhkw==} - peerDependencies: - markdown-it: ^14.1.0 - peerDependenciesMeta: - markdown-it: - optional: true - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@parcel/watcher-android-arm64@2.5.0': - resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.0': - resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.0': - resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.0': - resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.0': - resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm-musl@2.5.0': - resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.5.0': - resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.5.0': - resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.5.0': - resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.5.0': - resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-win32-arm64@2.5.0': - resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.0': - resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.0': - resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.0': - resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} - engines: {node: '>= 10.0.0'} - - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@rollup/rollup-android-arm-eabi@4.20.0': - resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.20.0': - resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.20.0': - resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.20.0': - resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': - resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.20.0': - resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.20.0': - resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.20.0': - resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': - resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.20.0': - resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.20.0': - resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.20.0': - resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.20.0': - resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.20.0': - resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.20.0': - resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.20.0': - resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} - cpu: [x64] - os: [win32] - - '@rushstack/eslint-patch@1.10.5': - resolution: {integrity: sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==} - - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - - '@types/hash-sum@1.0.2': - resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/jsonfile@6.1.4': - resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} - - '@types/linkify-it@3.0.5': - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} - - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - - '@types/markdown-it-emoji@2.0.5': - resolution: {integrity: sha512-iJLsmCNpSWKtV6Ia3mLSjcXJPEt7ubGG342z+hGvYx++TpM19oTUrJcI7XjbOqRQ+W2UQ323E7B0eCLwlgT/9g==} - - '@types/markdown-it-emoji@3.0.1': - resolution: {integrity: sha512-cz1j8R35XivBqq9mwnsrP2fsz2yicLhB8+PDtuVkKOExwEdsVBNI+ROL3sbhtR5occRZ66vT0QnwFZCqdjf3pA==} - - '@types/markdown-it@13.0.9': - resolution: {integrity: sha512-1XPwR0+MgXLWfTn9gCsZ55AHOKW1WN+P9vr0PaQh5aerR9LLQXUbjfEAFhjmEmyoYFWAyuN2Mqkn40MZ4ukjBw==} - - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - - '@types/mdurl@1.0.5': - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} - - '@types/mdurl@2.0.0': - resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} - - '@types/node@22.12.0': - resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==} - - '@types/sax@1.2.7': - resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} - - '@types/web-bluetooth@0.0.20': - resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - - '@typescript-eslint/eslint-plugin@8.20.0': - resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/parser@8.20.0': - resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/scope-manager@8.20.0': - resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.20.0': - resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/types@8.20.0': - resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.20.0': - resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/utils@8.20.0': - resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/visitor-keys@8.20.0': - resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@vitejs/plugin-vue@5.2.1': - resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - vite: ^5.0.0 || ^6.0.0 - vue: ^3.2.25 - - '@volar/language-core@2.4.11': - resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} - - '@volar/language-server@2.4.11': - resolution: {integrity: sha512-W9P8glH1M8LGREJ7yHRCANI5vOvTrRO15EMLdmh5WNF9sZYSEbQxiHKckZhvGIkbeR1WAlTl3ORTrJXUghjk7g==} - - '@volar/language-service@2.4.11': - resolution: {integrity: sha512-KIb6g8gjUkS2LzAJ9bJCLIjfsJjeRtmXlu7b2pDFGD3fNqdbC53cCAKzgWDs64xtQVKYBU13DLWbtSNFtGuMLQ==} - - '@volar/source-map@2.4.11': - resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} - - '@volar/test-utils@2.4.11': - resolution: {integrity: sha512-ogkLldPqFa/j9302Ns+nWeyTCQv8d4c7iN4t8ziq7j0XeMKWYsTAjLsx/9z0MTNrecBAcocgzEvCricASSq+Hw==} - - '@volar/typescript@2.4.11': - resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - - '@vscode/emmet-helper@2.11.0': - resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} - - '@vscode/l10n@0.0.18': - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} - - '@vue/compiler-vue2@2.7.16': - resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} - - '@vue/devtools-api@6.6.4': - resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - - '@vue/devtools-api@7.7.1': - resolution: {integrity: sha512-Cexc8GimowoDkJ6eNelOPdYIzsu2mgNyp0scOQ3tiaYSb9iok6LOESSsJvHaI+ib3joRfqRJNLkHFjhNuWA5dg==} - - '@vue/devtools-kit@7.7.1': - resolution: {integrity: sha512-yhZ4NPnK/tmxGtLNQxmll90jIIXdb2jAhPF76anvn5M/UkZCiLJy28bYgPIACKZ7FCosyKoaope89/RsFJll1w==} - - '@vue/devtools-shared@7.7.1': - resolution: {integrity: sha512-BtgF7kHq4BHG23Lezc/3W2UhK2ga7a8ohAIAGJMBr4BkxUFzhqntQtCiuL1ijo2ztWnmusymkirgqUrXoQKumA==} - - '@vue/eslint-config-prettier@10.2.0': - resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} - peerDependencies: - eslint: '>= 8.21.0' - prettier: '>= 3.0.0' - - '@vue/eslint-config-typescript@14.3.0': - resolution: {integrity: sha512-bOreIxlSC/xsUdhDdKIHb1grwJah+IokNeJ50LqA1StdOHeSPUxSIPNxyKgRx4YdjhyzC6TKtrCf6yYK99x3Uw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.10.0 - eslint-plugin-vue: ^9.28.0 - typescript: '>=4.8.4' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@2.2.0': - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-server@2.2.0': - resolution: {integrity: sha512-vj8PnPUF7cJ5vjE3pPmUUgVI4zdZZPn8kqTM1w8EJVVIgnlzNFHBmebcI9G0IN1CWKMOEqSBnE3vn/lup31K9Q==} - hasBin: true - - '@vue/language-service@2.2.0': - resolution: {integrity: sha512-2SioOuCyocrVYSMOosHS2Lc4MeV1kwzEgPnd7A8lFUDNby8sjDd7UL1FCgiolygeletZh5Us7o8gvG9khiPygQ==} - - '@vue/reactivity@3.5.13': - resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} - - '@vue/runtime-core@3.5.13': - resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} - - '@vue/runtime-dom@3.5.13': - resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} - - '@vue/server-renderer@3.5.13': - resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} - peerDependencies: - vue: 3.5.13 - - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - - '@vue/tsconfig@0.7.0': - resolution: {integrity: sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==} - peerDependencies: - typescript: 5.x - vue: ^3.4.0 - peerDependenciesMeta: - typescript: - optional: true - vue: - optional: true - - '@vue/typescript-plugin@2.2.0': - resolution: {integrity: sha512-7okpTvJ8blQApgUtfPvkO1tOkxxWt8oScXwsjQRB46QAgZ/0LwWpWG0yB8mvBLkw4mZpSXsp6e3ntnUwRagURA==} - - '@vuepress/bundler-vite@2.0.0-rc.7': - resolution: {integrity: sha512-2jNnU3sgHJuUCPfE0DvGRsAxo/A/Locguvnv4Q6QwJYdB1fuAqE6x5p8RDzq8Lv/GsyeexDWiV/PFER5EtVP3w==} - - '@vuepress/cli@2.0.0-rc.19': - resolution: {integrity: sha512-QFicPNIj3RZAJbHoLbeYlPJsPchnQLGuw0n8xv0eeUi9ejEXO1huWA8sLoPbTGdiDW+PHr1MHnaVMkyUfwaKcQ==} - hasBin: true - - '@vuepress/client@2.0.0-rc.19': - resolution: {integrity: sha512-vUAU6n4qmtXqthxkb4LHq0D+VWSDenwBDf0jUs7RaBLuOVrbPtmH/hs4k1vLIlGdwC3Zs/G6tlB4UmuZiiwR8Q==} - - '@vuepress/client@2.0.0-rc.7': - resolution: {integrity: sha512-T8jf9h8dfP1ln/7uOIiTAJrdyKRTyq1x+RHXuc7GoRxTfOw+bIYgGvh63Z7m1e3K/yh1nO9aM1WcXbDN1Swp4w==} - - '@vuepress/core@2.0.0-rc.19': - resolution: {integrity: sha512-rvmBPMIWS2dey/2QjxZoO0OcrUU46NE3mSLk3oU7JOP0cG7xvRxf6U1OXiwYLC3fPO4g6XbHiKe6gihkmL6VDA==} - - '@vuepress/core@2.0.0-rc.7': - resolution: {integrity: sha512-SPd2C9MIwHLe4mEWJfbcTHT5caS/vW+oeP79wAW0otSGgn2uY3Mmu5qcYPzl+17o8EYv7vDvPiO+uitp/Cek+A==} - - '@vuepress/helper@2.0.0-rc.7': - resolution: {integrity: sha512-O4kaFjNqICs4IKxwmyMPGcaDENod7vTqHgMBcR77fKhnGI8YDNOh+x1QA8+ajChqoUQhc96ULwqrpQI/IxBphA==} - peerDependencies: - vuepress: 2.0.0-rc.2 - - '@vuepress/helper@2.0.0-rc.73': - resolution: {integrity: sha512-Jvj5Deg59M8wZXRk6Ax4PLV8mNPK2k9XlPfPUAvb8/PQjYa270CJAdH2CIeXkh9ujPcVlO0Ie9eBXRPaGwfszw==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/helper@2.0.0-rc.74': - resolution: {integrity: sha512-k0FjkM9TKggcWkyZwXj4cLUIF3FBJ5iZGnC+Ln4OJVGD7k3SvT7TL7IaCZoFBIXTlepZwytsIN7K5Lbmpx0GfQ==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/highlighter-helper@2.0.0-rc.71': - resolution: {integrity: sha512-Hi9ira4VmX1MuRcagbSIZ/hHtwB4Fduz/NfiFGmOYX68zWIsQ1e90Ntku8GeI2MEDWlFxGU8PY/7VcXwINjoXQ==} - peerDependencies: - '@vueuse/core': ^12.2.0 - vuepress: 2.0.0-rc.19 - peerDependenciesMeta: - '@vueuse/core': - optional: true - - '@vuepress/markdown@2.0.0-rc.19': - resolution: {integrity: sha512-6jgUXhpEK55PEEGtPhz7Hq/JqTbLU8n9w2D7emXiK2FYcbeKpjoRIbVRzmzB/dXeK3NzHChANu2IIqpOT6Ba1w==} - - '@vuepress/markdown@2.0.0-rc.7': - resolution: {integrity: sha512-mczvo7MZxxXXj5htDXK22r0a7JjTP5sTlcywtVOTJurzCKp8SNSbr3HdmsAnr9S838Hn9+dkvhs57rqgPG3UHA==} - - '@vuepress/plugin-active-header-links@2.0.0-rc.74': - resolution: {integrity: sha512-ErXPpq52hKS0AubppT8HOqST5BBr2ibMK8LF2ctmoS7fZr8VlRysVn6jpLRGdDG+hBIHqbHsitBwMp5y1k99ag==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-back-to-top@2.0.0-rc.74': - resolution: {integrity: sha512-/r7pUarK67s3ZedfoUQ7JxcOcrSTxcSMiu6ozQW5vfe7s3d2WzIeaW/dsXPlmAdCEU0MZcb5RXRCNHBdZ9Zo2Q==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-blog@2.0.0-rc.73': - resolution: {integrity: sha512-o68MiuTXsfyq5zALc3rZs4dcyshRkHVfr9efUjcgSx09y7S5ATSxOnhqj2zzvEijztEHWeq80Y7m/yssek8C0w==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-copy-code@2.0.0-rc.74': - resolution: {integrity: sha512-flyUj8Xwj0G2jKMTtTrdJGpMS4By90kJGgEbxDTobV4t/98hpBBvEiL1AQ8oGIcQFHH6U+eNRPytde6/7NxKlw==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-git@2.0.0-rc.68': - resolution: {integrity: sha512-k/tXBSIyQM26UrmDK/mN1/q6gw8PmF2uLyIaso+B39qCOFQKUBq4uJF2a0oYTq9tpjM5AHwwBpytPE5cdV/BPQ==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-links-check@2.0.0-rc.74': - resolution: {integrity: sha512-/g+mosEv2iqbTVD7QpPIP0f0OGC8cQEO6VZgwxj25Swcnq0ndsuq0NOO+SIRasdYZe2xTZ94eNXcZEcKlCA9uw==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-markdown-hint@2.0.0-rc.74': - resolution: {integrity: sha512-1vC11eie+85XoIxQNWFgevpkYCcnc3DMi+x7WAc89+7yk0gP7zJVolWaPH1lLNfmoMxmpfms5ssEnUpr3vHMEQ==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-markdown-tab@2.0.0-rc.74': - resolution: {integrity: sha512-LhsOEVDfOLpyjBKwx9ZsMbWD8NVQkHgjT+AbZMd2f+fnOaTw7cvWtJxTsg6yQZt2c0Wc3268WtaqxeuqaHTZ6w==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-medium-zoom@2.0.0-rc.74': - resolution: {integrity: sha512-wKJnG28JcxacZLoM1AiGs2BWPjTR0NOI9m1d9WlzdU6Y9aZ2HrGQ/ajYptux5zfFU1NqVjA0QiqOO2D4z0i/hw==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-nprogress@2.0.0-rc.74': - resolution: {integrity: sha512-tgbMm2+MwJaUzqTBioeXYs8gaPXS9gYbvTg6HpFU0B4dJJ3CBq62CZEuord6T3Q6m/PnZz1H98bb3BmosKg1OA==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-palette@2.0.0-rc.74': - resolution: {integrity: sha512-O23Fek1Q0IppBhdCfJrdwHIvzwlEChacx/y6VzNpkGA5cMx2mjruBYCpbF1ZaVIRjFHzNEu++W1LNBWNGdQSyA==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-prismjs@2.0.0-rc.74': - resolution: {integrity: sha512-Kkz+raZxKP92Ktn6/SG4JVauyJTJaEKQX6AVJPBb1IrHg5n1m9h7xv/j+74XfdSHaE6za6pW7l99eZmvfxUQFg==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-redirect@2.0.0-rc.8': - resolution: {integrity: sha512-DF7SPBCsSwCrxE+PU+1gQbOSw49OaBZSB18MqfnKBgQ7CiUhufKQ6TNwkSC5aDsoWDa8cdhcEEvul2AxB2eruw==} - hasBin: true - peerDependencies: - vuepress: 2.0.0-rc.2 - - '@vuepress/plugin-seo@2.0.0-rc.74': - resolution: {integrity: sha512-Z5Q35Y3TALhfhOs8DocBtQcyRCp0/Btjec7DfnDih5p5rhRI7dHI7DIdf9aJHTuz1VxpzCfru6sApqSdbPlc5g==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-sitemap@2.0.0-rc.74': - resolution: {integrity: sha512-Kbr9u3fryw34s9ZdxY4fKsCQcN74aFal34CJ4xPxx5E6liE9Rp+gOWevOl89qYXfXgPfyHHJlW5KYfonaZe9Sw==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/plugin-theme-data@2.0.0-rc.74': - resolution: {integrity: sha512-6uQPv4kRakqcEPWmL3ZYKqjXqzOVycAdlr7oQlxs23E8CO59/QyIcrkloHPsdI+VhAA3v46NdiVD2TIrESRm6A==} - peerDependencies: - vuepress: 2.0.0-rc.19 - - '@vuepress/shared@2.0.0-rc.19': - resolution: {integrity: sha512-xaDeZxX0Qetc2Y6/lrzO6M/40i3LmMm7Fk85bOftBBOaNehZ24RdsmIHBJDDv+bTUv+DBF++1/mOtbt6DBRzEA==} - - '@vuepress/shared@2.0.0-rc.7': - resolution: {integrity: sha512-zNsYzAW5tuENb4vML0pK/61W3EscyOcn5JVPC+c6AwvsYWyAigZaMSu9ycGAptjDwzdYSi3gd33N9Q9T7pG77Q==} - - '@vuepress/theme-default@2.0.0-rc.74': - resolution: {integrity: sha512-bNm7Ey7u2dWe+8Mi2s6jvT2ccREqLQfzVjgfWPDpvGWXPXTCXLf/fBk7vKJ+YdFWq++SnMhqKyrsDMqdu2C7jg==} - peerDependencies: - sass: ^1.80.3 - sass-embedded: ^1.80.3 - sass-loader: ^16.0.2 - vuepress: 2.0.0-rc.19 - peerDependenciesMeta: - sass: - optional: true - sass-embedded: - optional: true - sass-loader: - optional: true - - '@vuepress/utils@2.0.0-rc.19': - resolution: {integrity: sha512-cgzk8/aJquZKgFMNTuqdjbU5NrCzrPmdTyhYBcmliL/6N/He1OTWn3PD9QWUGJNODb1sPRJpklZnCpU07waLmg==} - - '@vuepress/utils@2.0.0-rc.7': - resolution: {integrity: sha512-47c7T72JwOWH1EgG7f/KwWNpIknd9IC5JmrizGI5IVUM4G16Vyj5oPQuXqLobV47m8JOxPW4dLpsglZGVaKQeg==} - - '@vueuse/core@10.11.1': - resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} - - '@vueuse/core@12.5.0': - resolution: {integrity: sha512-GVyH1iYqNANwcahAx8JBm6awaNgvR/SwZ1fjr10b8l1HIgDp82ngNbfzJUgOgWEoxjL+URAggnlilAEXwCOZtg==} - - '@vueuse/metadata@10.11.1': - resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} - - '@vueuse/metadata@12.5.0': - resolution: {integrity: sha512-Ui7Lo2a7AxrMAXRF+fAp9QsXuwTeeZ8fIB9wsLHqzq9MQk+2gMYE2IGJW48VMJ8ecvCB3z3GsGLKLbSasQ5Qlg==} - - '@vueuse/shared@10.11.1': - resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - - '@vueuse/shared@12.5.0': - resolution: {integrity: sha512-vMpcL1lStUU6O+kdj6YdHDixh0odjPAUM15uJ9f7MY781jcYkIwFA4iv2EfoIPO6vBmvutI1HxxAwmf0cx5ISQ==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - alien-signals@0.4.11: - resolution: {integrity: sha512-79GUbcQM5K2zb+HyUMODTgJdVjZWwybDNQRduqP9ks7XZvJylm9uWesOjVcu6/veWsa+XNGVE4xVQ8+RGu8HaA==} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - arg@5.0.2: - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - birpc@0.2.19: - resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} - engines: {node: '>= 0.4'} - - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - caniuse-lite@1.0.30001649: - resolution: {integrity: sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - character-parser@2.2.0: - resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} - - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0: - resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} - engines: {node: '>=18.17'} - - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} - engines: {node: '>=18'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - connect-history-api-fallback@2.0.0: - resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} - engines: {node: '>=0.8'} - - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - de-indent@1.0.2: - resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - electron-to-chromium@1.5.4: - resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} - - emmet@2.4.11: - resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} - - emoji-regex@10.4.0: - resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - - encoding-sniffer@0.2.0: - resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - envinfo@7.14.0: - resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} - engines: {node: '>=4'} - hasBin: true - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} - hasBin: true - - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-config-prettier@10.0.1: - resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-prettier@5.2.3: - resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-vue@9.32.0: - resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.19.0: - resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - execa@9.5.2: - resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} - engines: {node: ^18.19.0 || >=20.5.0} - - extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} - engines: {node: '>=14.14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-east-asian-width@1.3.0: - resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} - engines: {node: '>=18'} - - get-intrinsic@1.2.6: - resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} - engines: {node: '>= 0.4'} - - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globby@14.0.2: - resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} - engines: {node: '>=18'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - gray-matter@4.0.3: - resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} - engines: {node: '>=6.0'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - - htmlparser2@9.1.0: - resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - - human-signals@8.0.0: - resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} - engines: {node: '>=18.18.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - immutable@5.0.3: - resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-expression@4.0.0: - resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} - - is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} - engines: {node: '>=12'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} - - is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} - engines: {node: '>=12'} - - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - jsonc-parser@2.3.1: - resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} - - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} - engines: {node: '>=14'} - - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} - engines: {node: '>=18'} - - magic-string@0.30.13: - resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} - - markdown-it-anchor@8.6.7: - resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} - peerDependencies: - '@types/markdown-it': '*' - markdown-it: '*' - - markdown-it-anchor@9.2.0: - resolution: {integrity: sha512-sa2ErMQ6kKOA4l31gLGYliFQrMKkqSO0ZJgGhDHKijPf0pNFM9vghjAh3gn26pS4JDRs7Iwa9S36gxm3vgZTzg==} - peerDependencies: - '@types/markdown-it': '*' - markdown-it: '*' - - markdown-it-emoji@3.0.0: - resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==} - - markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} - hasBin: true - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - - medium-zoom@1.1.0: - resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} - engines: {node: '>=18'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - muggle-string@0.4.1: - resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - npm-run-path@6.0.0: - resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} - engines: {node: '>=18'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} - engines: {node: '>=18'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@8.1.1: - resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} - engines: {node: '>=18'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - - parse5-htmlparser2-tree-adapter@7.1.0: - resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} - - parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - - path-type@5.0.0: - resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} - engines: {node: '>=12'} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - postcss-load-config@5.1.0: - resolution: {integrity: sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@3.4.2: - resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} - engines: {node: '>=14'} - hasBin: true - - pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} - engines: {node: '>=18'} - - prismjs@1.29.0: - resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} - engines: {node: '>=6'} - - pug-error@2.1.0: - resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==} - - pug-lexer@5.0.1: - resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} - - pug-parser@6.0.0: - resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} - - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.1: - resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} - engines: {node: '>= 14.18.0'} - - request-light@0.7.0: - resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} - engines: {node: '>=18'} - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rollup@4.20.0: - resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sass@1.83.4: - resolution: {integrity: sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==} - engines: {node: '>=14.0.0'} - hasBin: true - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - section-matter@1.0.0: - resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} - engines: {node: '>=4'} - - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - sitemap@8.0.0: - resolution: {integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==} - engines: {node: '>=14.0.0', npm: '>=6.0.0'} - hasBin: true - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} - engines: {node: '>=18'} - - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom-string@1.0.0: - resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} - engines: {node: '>=0.10.0'} - - strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} - engines: {node: '>=18'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - superjson@2.2.2: - resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} - engines: {node: '>=16'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} - engines: {node: ^14.18.0 || >=16.0.0} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - token-stream@1.0.0: - resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} - - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - typescript-auto-import-cache@0.3.5: - resolution: {integrity: sha512-fAIveQKsoYj55CozUiBoj4b/7WpN0i4o74wiGY5JVUEoD0XiqDk1tJqTEjgzL2/AizKQrXxyRosSebyDzBZKjw==} - - typescript-eslint@8.20.0: - resolution: {integrity: sha512-Kxz2QRFsgbWj6Xcftlw3Dd154b3cEPFqQC+qMZrMypSijPd4UanKKvoKDrJ4o8AIfZFKAF+7sMaEIR8mTElozA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} - engines: {node: '>=14.17'} - hasBin: true - - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - undici@6.21.1: - resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==} - engines: {node: '>=18.17'} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - upath@2.0.1: - resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} - engines: {node: '>=4'} - - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - vite@5.0.13: - resolution: {integrity: sha512-/9ovhv2M2dGTuA+dY93B9trfyWMDRQw2jdVBhHNP6wr0oF34wG2i/N55801iZIpgUpnHDm4F/FabGQLyc+eOgg==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - - volar-service-css@0.0.62: - resolution: {integrity: sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-emmet@0.0.62: - resolution: {integrity: sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-html@0.0.62: - resolution: {integrity: sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-json@0.0.62: - resolution: {integrity: sha512-Ot+jP+/LzKcaGF7nzrn+gwpzAleb4ej5buO05M8KxfwfODte7o1blARKRoJ3Nv7ls0DBM38Dd5vjzvA9c/9Jtg==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-pug-beautify@0.0.62: - resolution: {integrity: sha512-dAFNuNEwTnnVthYoNJhoStwhf/PojzglwCrdhOb2nBegTG3xXMWRFmQzb0JfIlt2wq2wfUq5j+JJswgSD3KluQ==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-pug@0.0.62: - resolution: {integrity: sha512-C0/O8uGnRfijWKE0zFXxJ/o7BbLebzretsEaiMkvBDIxm5oe7HRDzQr6CgknV/WVgiohZ74v+0CwBPl2YmcPUQ==} - - volar-service-typescript-twoslash-queries@0.0.62: - resolution: {integrity: sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - volar-service-typescript@0.0.62: - resolution: {integrity: sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==} - peerDependencies: - '@volar/language-service': ~2.4.0 - peerDependenciesMeta: - '@volar/language-service': - optional: true - - vscode-css-languageservice@6.3.2: - resolution: {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} - - vscode-html-languageservice@5.3.1: - resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==} - - vscode-json-languageservice@5.4.2: - resolution: {integrity: sha512-2qujUseKRbLEwLXvEOFAxaz3y1ssdNCXXi95LRdG8AFchJHSnmI2qCg9ixoYxbJtSehIrXOmkhV87Y9lIivOgQ==} - - vscode-jsonrpc@8.2.0: - resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} - engines: {node: '>=14.0.0'} - - vscode-languageserver-protocol@3.17.5: - resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} - - vscode-languageserver@9.0.1: - resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} - hasBin: true - - vscode-nls@5.2.0: - resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - - vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - - vue-eslint-parser@9.4.3: - resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - vue-router@4.5.0: - resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} - peerDependencies: - vue: ^3.2.0 - - vue-tsc@2.2.0: - resolution: {integrity: sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==} - hasBin: true - peerDependencies: - typescript: '>=5.0.0' - - vue@3.5.13: - resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - vuepress@2.0.0-rc.19: - resolution: {integrity: sha512-JDeuPTu14Kprdqx2geAryjFJvUzVaMnOLewlAgwVuZTygDWb8cgXhu9/p6rqzzdHETtIrvjbASBhH7JPyqmxmA==} - engines: {node: ^18.19.0 || >=20.4.0} - hasBin: true - peerDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.19 - '@vuepress/bundler-webpack': 2.0.0-rc.19 - vue: ^3.5.0 - peerDependenciesMeta: - '@vuepress/bundler-vite': - optional: true - '@vuepress/bundler-webpack': - optional: true - - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} - engines: {node: '>= 14'} - hasBin: true - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} - engines: {node: '>=18'} - -snapshots: - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/parser@7.26.2': - dependencies: - '@babel/types': 7.26.0 - - '@babel/types@7.26.0': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@emmetio/abbreviation@2.3.3': - dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/css-abbreviation@2.1.8': - dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/css-parser@0.4.0': - dependencies: - '@emmetio/stream-reader': 2.2.0 - '@emmetio/stream-reader-utils': 0.1.0 - - '@emmetio/html-matcher@1.3.0': - dependencies: - '@emmetio/scanner': 1.0.4 - - '@emmetio/scanner@1.0.4': {} - - '@emmetio/stream-reader-utils@0.1.0': {} - - '@emmetio/stream-reader@2.2.0': {} - - '@esbuild/aix-ppc64@0.19.12': - optional: true - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.19.12': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm@0.19.12': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-x64@0.19.12': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.19.12': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.19.12': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.19.12': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.19.12': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.19.12': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm@0.19.12': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.19.12': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.19.12': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.19.12': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.19.12': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.19.12': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.19.12': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-x64@0.19.12': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.19.12': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.19.12': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.19.12': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.19.12': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.19.12': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-x64@0.19.12': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@eslint-community/eslint-utils@4.4.1(eslint@9.19.0)': - dependencies: - eslint: 9.19.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.19.1': - dependencies: - '@eslint/object-schema': 2.1.5 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.10.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.2.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.19.0': {} - - '@eslint/object-schema@2.1.5': {} - - '@eslint/plugin-kit@0.2.5': - dependencies: - '@eslint/core': 0.10.0 - levn: 0.4.1 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.1': {} - - '@johnsoncodehk/pug-beautify@0.2.2': {} - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@mdit-vue/plugin-component@2.1.3': - dependencies: - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-frontmatter@2.1.3': - dependencies: - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - gray-matter: 4.0.3 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-headers@2.1.3': - dependencies: - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-sfc@2.1.3': - dependencies: - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-title@2.1.3': - dependencies: - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - '@mdit-vue/plugin-toc@2.1.3': - dependencies: - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - '@mdit-vue/shared@2.1.3': - dependencies: - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - '@mdit-vue/types@2.1.0': {} - - '@mdit/helper@0.16.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - - '@mdit/plugin-alert@0.16.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - - '@mdit/plugin-container@0.16.0(markdown-it@14.1.0)': - dependencies: - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - - '@mdit/plugin-tab@0.16.0(markdown-it@14.1.0)': - dependencies: - '@mdit/helper': 0.16.0(markdown-it@14.1.0) - '@types/markdown-it': 14.1.2 - optionalDependencies: - markdown-it: 14.1.0 - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 - - '@parcel/watcher-android-arm64@2.5.0': - optional: true - - '@parcel/watcher-darwin-arm64@2.5.0': - optional: true - - '@parcel/watcher-darwin-x64@2.5.0': - optional: true - - '@parcel/watcher-freebsd-x64@2.5.0': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.5.0': - optional: true - - '@parcel/watcher-linux-arm-musl@2.5.0': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.5.0': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.5.0': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.5.0': - optional: true - - '@parcel/watcher-linux-x64-musl@2.5.0': - optional: true - - '@parcel/watcher-win32-arm64@2.5.0': - optional: true - - '@parcel/watcher-win32-ia32@2.5.0': - optional: true - - '@parcel/watcher-win32-x64@2.5.0': - optional: true - - '@parcel/watcher@2.5.0': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.0 - '@parcel/watcher-darwin-arm64': 2.5.0 - '@parcel/watcher-darwin-x64': 2.5.0 - '@parcel/watcher-freebsd-x64': 2.5.0 - '@parcel/watcher-linux-arm-glibc': 2.5.0 - '@parcel/watcher-linux-arm-musl': 2.5.0 - '@parcel/watcher-linux-arm64-glibc': 2.5.0 - '@parcel/watcher-linux-arm64-musl': 2.5.0 - '@parcel/watcher-linux-x64-glibc': 2.5.0 - '@parcel/watcher-linux-x64-musl': 2.5.0 - '@parcel/watcher-win32-arm64': 2.5.0 - '@parcel/watcher-win32-ia32': 2.5.0 - '@parcel/watcher-win32-x64': 2.5.0 - optional: true - - '@pkgr/core@0.1.1': {} - - '@rollup/rollup-android-arm-eabi@4.20.0': - optional: true - - '@rollup/rollup-android-arm64@4.20.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.20.0': - optional: true - - '@rollup/rollup-darwin-x64@4.20.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.20.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.20.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.20.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.20.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.20.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.20.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.20.0': - optional: true - - '@rollup/rollup-linux-x64-musl@4.20.0': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.20.0': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.20.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.20.0': - optional: true - - '@rushstack/eslint-patch@1.10.5': {} - - '@sec-ant/readable-stream@0.4.1': {} - - '@sindresorhus/merge-streams@2.3.0': {} - - '@sindresorhus/merge-streams@4.0.0': {} - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 0.7.34 - - '@types/estree@1.0.5': {} - - '@types/estree@1.0.6': {} - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.4 - '@types/node': 22.12.0 - - '@types/hash-sum@1.0.2': {} - - '@types/json-schema@7.0.15': {} - - '@types/jsonfile@6.1.4': - dependencies: - '@types/node': 22.12.0 - - '@types/linkify-it@3.0.5': {} - - '@types/linkify-it@5.0.0': {} - - '@types/markdown-it-emoji@2.0.5': - dependencies: - '@types/markdown-it': 14.1.2 - - '@types/markdown-it-emoji@3.0.1': - dependencies: - '@types/markdown-it': 14.1.2 - - '@types/markdown-it@13.0.9': - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 - - '@types/markdown-it@14.1.2': - dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 - - '@types/mdurl@1.0.5': {} - - '@types/mdurl@2.0.0': {} - - '@types/ms@0.7.34': {} - - '@types/node@17.0.45': {} - - '@types/node@22.12.0': - dependencies: - undici-types: 6.20.0 - - '@types/sax@1.2.7': - dependencies: - '@types/node': 22.12.0 - - '@types/web-bluetooth@0.0.20': {} - - '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/type-utils': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.20.0 - eslint: 9.19.0 - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.20.0(eslint@9.19.0)(typescript@5.7.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.20.0 - debug: 4.4.0 - eslint: 9.19.0 - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.20.0': - dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 - - '@typescript-eslint/type-utils@8.20.0(eslint@9.19.0)(typescript@5.7.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - debug: 4.4.0 - eslint: 9.19.0 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.20.0': {} - - '@typescript-eslint/typescript-estree@8.20.0(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.20.0(eslint@9.19.0)(typescript@5.7.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) - eslint: 9.19.0 - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.20.0': - dependencies: - '@typescript-eslint/types': 8.20.0 - eslint-visitor-keys: 4.2.0 - - '@vitejs/plugin-vue@5.2.1(vite@5.0.13(@types/node@22.12.0)(sass@1.83.4))(vue@3.5.13(typescript@5.7.3))': - dependencies: - vite: 5.0.13(@types/node@22.12.0)(sass@1.83.4) - vue: 3.5.13(typescript@5.7.3) - - '@volar/language-core@2.4.11': - dependencies: - '@volar/source-map': 2.4.11 - - '@volar/language-server@2.4.11': - dependencies: - '@volar/language-core': 2.4.11 - '@volar/language-service': 2.4.11 - '@volar/typescript': 2.4.11 - path-browserify: 1.0.1 - request-light: 0.7.0 - vscode-languageserver: 9.0.1 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - - '@volar/language-service@2.4.11': - dependencies: - '@volar/language-core': 2.4.11 - vscode-languageserver-protocol: 3.17.5 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - - '@volar/source-map@2.4.11': {} - - '@volar/test-utils@2.4.11': - dependencies: - '@volar/language-core': 2.4.11 - '@volar/language-server': 2.4.11 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - - '@volar/typescript@2.4.11': - dependencies: - '@volar/language-core': 2.4.11 - path-browserify: 1.0.1 - vscode-uri: 3.0.8 - - '@vscode/emmet-helper@2.11.0': - dependencies: - emmet: 2.4.11 - jsonc-parser: 2.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - '@vscode/l10n@0.0.18': {} - - '@vue/compiler-core@3.5.13': - dependencies: - '@babel/parser': 7.26.2 - '@vue/shared': 3.5.13 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.13': - dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/compiler-sfc@3.5.13': - dependencies: - '@babel/parser': 7.26.2 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - estree-walker: 2.0.2 - magic-string: 0.30.13 - postcss: 8.4.49 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.13': - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/compiler-vue2@2.7.16': - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - - '@vue/devtools-api@6.6.4': {} - - '@vue/devtools-api@7.7.1': - dependencies: - '@vue/devtools-kit': 7.7.1 - - '@vue/devtools-kit@7.7.1': - dependencies: - '@vue/devtools-shared': 7.7.1 - birpc: 0.2.19 - hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 1.0.0 - speakingurl: 14.0.1 - superjson: 2.2.2 - - '@vue/devtools-shared@7.7.1': - dependencies: - rfdc: 1.4.1 - - '@vue/eslint-config-prettier@10.2.0(eslint@9.19.0)(prettier@3.4.2)': - dependencies: - eslint: 9.19.0 - eslint-config-prettier: 10.0.1(eslint@9.19.0) - eslint-plugin-prettier: 5.2.3(eslint-config-prettier@10.0.1(eslint@9.19.0))(eslint@9.19.0)(prettier@3.4.2) - prettier: 3.4.2 - transitivePeerDependencies: - - '@types/eslint' - - '@vue/eslint-config-typescript@14.3.0(eslint-plugin-vue@9.32.0(eslint@9.19.0))(eslint@9.19.0)(typescript@5.7.3)': - dependencies: - '@typescript-eslint/utils': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - eslint: 9.19.0 - eslint-plugin-vue: 9.32.0(eslint@9.19.0) - fast-glob: 3.3.3 - typescript-eslint: 8.20.0(eslint@9.19.0)(typescript@5.7.3) - vue-eslint-parser: 9.4.3(eslint@9.19.0) - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@vue/language-core@2.2.0(typescript@5.7.3)': - dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.13 - alien-signals: 0.4.11 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.7.3 - - '@vue/language-server@2.2.0(typescript@5.7.3)': - dependencies: - '@volar/language-core': 2.4.11 - '@volar/language-server': 2.4.11 - '@volar/test-utils': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.7.3) - '@vue/language-service': 2.2.0(typescript@5.7.3) - '@vue/typescript-plugin': 2.2.0(typescript@5.7.3) - vscode-languageserver-protocol: 3.17.5 - vscode-uri: 3.0.8 - transitivePeerDependencies: - - typescript - - '@vue/language-service@2.2.0(typescript@5.7.3)': - dependencies: - '@volar/language-core': 2.4.11 - '@volar/language-service': 2.4.11 - '@volar/typescript': 2.4.11 - '@vue/compiler-dom': 3.5.13 - '@vue/language-core': 2.2.0(typescript@5.7.3) - '@vue/shared': 3.5.13 - '@vue/typescript-plugin': 2.2.0(typescript@5.7.3) - alien-signals: 0.4.11 - path-browserify: 1.0.1 - volar-service-css: 0.0.62(@volar/language-service@2.4.11) - volar-service-emmet: 0.0.62(@volar/language-service@2.4.11) - volar-service-html: 0.0.62(@volar/language-service@2.4.11) - volar-service-json: 0.0.62(@volar/language-service@2.4.11) - volar-service-pug: 0.0.62 - volar-service-pug-beautify: 0.0.62(@volar/language-service@2.4.11) - volar-service-typescript: 0.0.62(@volar/language-service@2.4.11) - volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.11) - vscode-html-languageservice: 5.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - transitivePeerDependencies: - - typescript - - '@vue/reactivity@3.5.13': - dependencies: - '@vue/shared': 3.5.13 - - '@vue/runtime-core@3.5.13': - dependencies: - '@vue/reactivity': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/runtime-dom@3.5.13': - dependencies: - '@vue/reactivity': 3.5.13 - '@vue/runtime-core': 3.5.13 - '@vue/shared': 3.5.13 - csstype: 3.1.3 - - '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - vue: 3.5.13(typescript@5.7.3) - - '@vue/shared@3.5.13': {} - - '@vue/tsconfig@0.7.0(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))': - optionalDependencies: - typescript: 5.7.3 - vue: 3.5.13(typescript@5.7.3) - - '@vue/typescript-plugin@2.2.0(typescript@5.7.3)': - dependencies: - '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.7.3) - '@vue/shared': 3.5.13 - transitivePeerDependencies: - - typescript - - '@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3)': - dependencies: - '@vitejs/plugin-vue': 5.2.1(vite@5.0.13(@types/node@22.12.0)(sass@1.83.4))(vue@3.5.13(typescript@5.7.3)) - '@vuepress/client': 2.0.0-rc.7(typescript@5.7.3) - '@vuepress/core': 2.0.0-rc.7(typescript@5.7.3) - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - autoprefixer: 10.4.20(postcss@8.4.49) - connect-history-api-fallback: 2.0.0 - postcss: 8.4.49 - postcss-load-config: 5.1.0(postcss@8.4.49) - rollup: 4.20.0 - vite: 5.0.13(@types/node@22.12.0)(sass@1.83.4) - vue: 3.5.13(typescript@5.7.3) - vue-router: 4.5.0(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@types/node' - - '@vue/composition-api' - - jiti - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - '@vuepress/cli@2.0.0-rc.19(typescript@5.7.3)': - dependencies: - '@vuepress/core': 2.0.0-rc.19(typescript@5.7.3) - '@vuepress/shared': 2.0.0-rc.19 - '@vuepress/utils': 2.0.0-rc.19 - cac: 6.7.14 - chokidar: 3.6.0 - envinfo: 7.14.0 - esbuild: 0.21.5 - transitivePeerDependencies: - - supports-color - - typescript - - '@vuepress/client@2.0.0-rc.19(typescript@5.7.3)': - dependencies: - '@vue/devtools-api': 7.7.1 - '@vuepress/shared': 2.0.0-rc.19 - vue: 3.5.13(typescript@5.7.3) - vue-router: 4.5.0(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/client@2.0.0-rc.7(typescript@5.7.3)': - dependencies: - '@vue/devtools-api': 6.6.4 - '@vuepress/shared': 2.0.0-rc.7 - '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.3)) - vue: 3.5.13(typescript@5.7.3) - vue-router: 4.5.0(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/core@2.0.0-rc.19(typescript@5.7.3)': - dependencies: - '@vuepress/client': 2.0.0-rc.19(typescript@5.7.3) - '@vuepress/markdown': 2.0.0-rc.19 - '@vuepress/shared': 2.0.0-rc.19 - '@vuepress/utils': 2.0.0-rc.19 - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - supports-color - - typescript - - '@vuepress/core@2.0.0-rc.7(typescript@5.7.3)': - dependencies: - '@vuepress/client': 2.0.0-rc.7(typescript@5.7.3) - '@vuepress/markdown': 2.0.0-rc.7 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - '@vue/composition-api' - - supports-color - - typescript - - '@vuepress/helper@2.0.0-rc.7(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vue/shared': 3.5.13 - cheerio: 1.0.0-rc.12 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/helper@2.0.0-rc.73(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vue/shared': 3.5.13 - '@vueuse/core': 12.5.0(typescript@5.7.3) - cheerio: 1.0.0 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/helper@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vue/shared': 3.5.13 - '@vueuse/core': 12.5.0(typescript@5.7.3) - cheerio: 1.0.0 - fflate: 0.8.2 - gray-matter: 4.0.3 - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/highlighter-helper@2.0.0-rc.71(@vueuse/core@12.5.0(typescript@5.7.3))(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - optionalDependencies: - '@vueuse/core': 12.5.0(typescript@5.7.3) - - '@vuepress/markdown@2.0.0-rc.19': - dependencies: - '@mdit-vue/plugin-component': 2.1.3 - '@mdit-vue/plugin-frontmatter': 2.1.3 - '@mdit-vue/plugin-headers': 2.1.3 - '@mdit-vue/plugin-sfc': 2.1.3 - '@mdit-vue/plugin-title': 2.1.3 - '@mdit-vue/plugin-toc': 2.1.3 - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 14.1.2 - '@types/markdown-it-emoji': 3.0.1 - '@vuepress/shared': 2.0.0-rc.19 - '@vuepress/utils': 2.0.0-rc.19 - markdown-it: 14.1.0 - markdown-it-anchor: 9.2.0(@types/markdown-it@14.1.2)(markdown-it@14.1.0) - markdown-it-emoji: 3.0.0 - mdurl: 2.0.0 - transitivePeerDependencies: - - supports-color - - '@vuepress/markdown@2.0.0-rc.7': - dependencies: - '@mdit-vue/plugin-component': 2.1.3 - '@mdit-vue/plugin-frontmatter': 2.1.3 - '@mdit-vue/plugin-headers': 2.1.3 - '@mdit-vue/plugin-sfc': 2.1.3 - '@mdit-vue/plugin-title': 2.1.3 - '@mdit-vue/plugin-toc': 2.1.3 - '@mdit-vue/shared': 2.1.3 - '@mdit-vue/types': 2.1.0 - '@types/markdown-it': 13.0.9 - '@types/markdown-it-emoji': 2.0.5 - '@vuepress/shared': 2.0.0-rc.7 - '@vuepress/utils': 2.0.0-rc.7 - markdown-it: 14.1.0 - markdown-it-anchor: 8.6.7(@types/markdown-it@13.0.9)(markdown-it@14.1.0) - markdown-it-emoji: 3.0.0 - mdurl: 2.0.0 - transitivePeerDependencies: - - supports-color - - '@vuepress/plugin-active-header-links@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vueuse/core': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-back-to-top@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vueuse/core': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-blog@2.0.0-rc.73(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.73(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - chokidar: 3.6.0 - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-copy-code@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vueuse/core': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-git@2.0.0-rc.68(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - execa: 9.5.2 - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - - '@vuepress/plugin-links-check@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-markdown-hint@2.0.0-rc.74(markdown-it@14.1.0)(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@mdit/plugin-alert': 0.16.0(markdown-it@14.1.0) - '@mdit/plugin-container': 0.16.0(markdown-it@14.1.0) - '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vueuse/core': 12.5.0(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - markdown-it - - typescript - - '@vuepress/plugin-markdown-tab@2.0.0-rc.74(markdown-it@14.1.0)(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@mdit/plugin-tab': 0.16.0(markdown-it@14.1.0) - '@types/markdown-it': 14.1.2 - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vueuse/core': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - markdown-it - - typescript - - '@vuepress/plugin-medium-zoom@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - medium-zoom: 1.1.0 - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-nprogress@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-palette@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - chokidar: 3.6.0 - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-prismjs@2.0.0-rc.74(@vueuse/core@12.5.0(typescript@5.7.3))(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/highlighter-helper': 2.0.0-rc.71(@vueuse/core@12.5.0(typescript@5.7.3))(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - prismjs: 1.29.0 - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vueuse/core' - - typescript - - '@vuepress/plugin-redirect@2.0.0-rc.8(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.7(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.3)) - cac: 6.7.14 - vue: 3.5.13(typescript@5.7.3) - vue-router: 4.5.0(vue@3.5.13(typescript@5.7.3)) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - typescript - - '@vuepress/plugin-seo@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-sitemap@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - sitemap: 8.0.0 - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/plugin-theme-data@2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vue/devtools-api': 7.7.1 - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - typescript - - '@vuepress/shared@2.0.0-rc.19': - dependencies: - '@mdit-vue/types': 2.1.0 - - '@vuepress/shared@2.0.0-rc.7': - dependencies: - '@mdit-vue/types': 2.1.0 - - '@vuepress/theme-default@2.0.0-rc.74(markdown-it@14.1.0)(sass@1.83.4)(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)))': - dependencies: - '@vuepress/helper': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-active-header-links': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-back-to-top': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-copy-code': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-git': 2.0.0-rc.68(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-links-check': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-markdown-hint': 2.0.0-rc.74(markdown-it@14.1.0)(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-markdown-tab': 2.0.0-rc.74(markdown-it@14.1.0)(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-medium-zoom': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-nprogress': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-palette': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-prismjs': 2.0.0-rc.74(@vueuse/core@12.5.0(typescript@5.7.3))(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-seo': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-sitemap': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vuepress/plugin-theme-data': 2.0.0-rc.74(typescript@5.7.3)(vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3))) - '@vueuse/core': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - vuepress: 2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) - optionalDependencies: - sass: 1.83.4 - transitivePeerDependencies: - - markdown-it - - typescript - - '@vuepress/utils@2.0.0-rc.19': - dependencies: - '@types/debug': 4.1.12 - '@types/fs-extra': 11.0.4 - '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.19 - debug: 4.4.0 - fs-extra: 11.2.0 - globby: 14.0.2 - hash-sum: 2.0.0 - ora: 8.1.1 - picocolors: 1.1.1 - upath: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@vuepress/utils@2.0.0-rc.7': - dependencies: - '@types/debug': 4.1.12 - '@types/fs-extra': 11.0.4 - '@types/hash-sum': 1.0.2 - '@vuepress/shared': 2.0.0-rc.7 - debug: 4.4.0 - fs-extra: 11.2.0 - globby: 14.0.2 - hash-sum: 2.0.0 - ora: 8.1.1 - picocolors: 1.1.1 - upath: 2.0.1 - transitivePeerDependencies: - - supports-color - - '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.7.3)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/core@12.5.0(typescript@5.7.3)': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.5.0 - '@vueuse/shared': 12.5.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript - - '@vueuse/metadata@10.11.1': {} - - '@vueuse/metadata@12.5.0': {} - - '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.7.3))': - dependencies: - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/shared@12.5.0(typescript@5.7.3)': - dependencies: - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript - - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn@7.4.1: {} - - acorn@8.14.0: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - alien-signals@0.4.11: {} - - ansi-regex@6.1.0: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - arg@5.0.2: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - autoprefixer@10.4.20(postcss@8.4.49): - dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001649 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-value-parser: 4.2.0 - - balanced-match@1.0.2: {} - - binary-extensions@2.3.0: {} - - birpc@0.2.19: {} - - boolbase@1.0.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.23.3: - dependencies: - caniuse-lite: 1.0.30001649 - electron-to-chromium: 1.5.4 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) - - cac@6.7.14: {} - - call-bind-apply-helpers@1.0.1: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.6 - - callsites@3.1.0: {} - - caniuse-lite@1.0.30001649: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - character-parser@2.2.0: - dependencies: - is-regex: 1.2.1 - - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - - cheerio@1.0.0: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - encoding-sniffer: 0.2.0 - htmlparser2: 9.1.0 - parse5: 7.2.1 - parse5-htmlparser2-tree-adapter: 7.1.0 - parse5-parser-stream: 7.1.2 - undici: 6.21.1 - whatwg-mimetype: 4.0.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.2.2 - htmlparser2: 8.0.2 - parse5: 7.2.1 - parse5-htmlparser2-tree-adapter: 7.1.0 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.1 - - cli-cursor@5.0.0: - dependencies: - restore-cursor: 5.1.0 - - cli-spinners@2.9.2: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - concat-map@0.0.1: {} - - connect-history-api-fallback@2.0.0: {} - - copy-anything@3.0.5: - dependencies: - is-what: 4.1.16 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-what@6.1.0: {} - - cssesc@3.0.0: {} - - csstype@3.1.3: {} - - de-indent@1.0.2: {} - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - deep-is@0.1.4: {} - - detect-libc@1.0.3: - optional: true - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - electron-to-chromium@1.5.4: {} - - emmet@2.4.11: - dependencies: - '@emmetio/abbreviation': 2.3.3 - '@emmetio/css-abbreviation': 2.1.8 - - emoji-regex@10.4.0: {} - - encoding-sniffer@0.2.0: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 - - entities@4.5.0: {} - - envinfo@7.14.0: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.0.0: - dependencies: - es-errors: 1.3.0 - - esbuild@0.19.12: - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - escalade@3.1.2: {} - - escape-string-regexp@4.0.0: {} - - eslint-config-prettier@10.0.1(eslint@9.19.0): - dependencies: - eslint: 9.19.0 - - eslint-plugin-prettier@5.2.3(eslint-config-prettier@10.0.1(eslint@9.19.0))(eslint@9.19.0)(prettier@3.4.2): - dependencies: - eslint: 9.19.0 - prettier: 3.4.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 - optionalDependencies: - eslint-config-prettier: 10.0.1(eslint@9.19.0) - - eslint-plugin-vue@9.32.0(eslint@9.19.0): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0) - eslint: 9.19.0 - globals: 13.24.0 - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 6.1.2 - semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.19.0) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - supports-color - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@9.19.0: - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.1 - '@eslint/core': 0.10.0 - '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.19.0 - '@eslint/plugin-kit': 0.2.5 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.1 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - - espree@9.6.1: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-walker@2.0.2: {} - - esutils@2.0.3: {} - - execa@9.5.2: - dependencies: - '@sindresorhus/merge-streams': 4.0.0 - cross-spawn: 7.0.6 - figures: 6.1.0 - get-stream: 9.0.1 - human-signals: 8.0.0 - is-plain-obj: 4.1.0 - is-stream: 4.0.1 - npm-run-path: 6.0.0 - pretty-ms: 9.2.0 - signal-exit: 4.1.0 - strip-final-newline: 4.0.0 - yoctocolors: 2.1.1 - - extend-shallow@2.0.1: - dependencies: - is-extendable: 0.1.1 - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.18.0: - dependencies: - reusify: 1.0.4 - - fflate@0.8.2: {} - - figures@6.1.0: - dependencies: - is-unicode-supported: 2.1.0 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.2 - keyv: 4.5.4 - - flatted@3.3.2: {} - - fraction.js@4.3.7: {} - - fs-extra@11.2.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-east-asian-width@1.3.0: {} - - get-intrinsic@1.2.6: - dependencies: - call-bind-apply-helpers: 1.0.1 - dunder-proto: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - function-bind: 1.1.2 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-stream@9.0.1: - dependencies: - '@sec-ant/readable-stream': 0.4.1 - is-stream: 4.0.1 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@14.0.0: {} - - globby@14.0.2: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 5.3.2 - path-type: 5.0.0 - slash: 5.1.0 - unicorn-magic: 0.1.0 - - gopd@1.2.0: {} - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - gray-matter@4.0.3: - dependencies: - js-yaml: 3.14.1 - kind-of: 6.0.3 - section-matter: 1.0.0 - strip-bom-string: 1.0.0 - - has-flag@4.0.0: {} - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hash-sum@2.0.0: {} - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - he@1.2.0: {} - - hookable@5.5.3: {} - - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - - htmlparser2@9.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 4.5.0 - - human-signals@8.0.0: {} - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - ignore@5.3.2: {} - - immutable@5.0.3: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - imurmurhash@0.1.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-expression@4.0.0: - dependencies: - acorn: 7.4.1 - object-assign: 4.1.1 - - is-extendable@0.1.1: {} - - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@2.0.0: {} - - is-number@7.0.0: {} - - is-plain-obj@4.1.0: {} - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-stream@4.0.1: {} - - is-unicode-supported@1.3.0: {} - - is-unicode-supported@2.1.0: {} - - is-what@4.1.16: {} - - isexe@2.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - jsonc-parser@2.3.1: {} - - jsonc-parser@3.3.1: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kind-of@6.0.3: {} - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@3.1.2: {} - - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash.merge@4.6.2: {} - - lodash@4.17.21: {} - - log-symbols@6.0.0: - dependencies: - chalk: 5.4.1 - is-unicode-supported: 1.3.0 - - magic-string@0.30.13: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - markdown-it-anchor@8.6.7(@types/markdown-it@13.0.9)(markdown-it@14.1.0): - dependencies: - '@types/markdown-it': 13.0.9 - markdown-it: 14.1.0 - - markdown-it-anchor@9.2.0(@types/markdown-it@14.1.2)(markdown-it@14.1.0): - dependencies: - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.0 - - markdown-it-emoji@3.0.0: {} - - markdown-it@14.1.0: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - math-intrinsics@1.1.0: {} - - mdurl@2.0.0: {} - - medium-zoom@1.1.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mimic-function@5.0.1: {} - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - mitt@3.0.1: {} - - ms@2.1.3: {} - - muggle-string@0.4.1: {} - - nanoid@3.3.7: {} - - natural-compare@1.4.0: {} - - node-addon-api@7.1.1: - optional: true - - node-releases@2.0.18: {} - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - npm-run-path@6.0.0: - dependencies: - path-key: 4.0.0 - unicorn-magic: 0.3.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - object-assign@4.1.1: {} - - onetime@7.0.0: - dependencies: - mimic-function: 5.0.1 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - ora@8.1.1: - dependencies: - chalk: 5.4.1 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.1.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-ms@4.0.0: {} - - parse5-htmlparser2-tree-adapter@7.1.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.2.1 - - parse5-parser-stream@7.1.2: - dependencies: - parse5: 7.2.1 - - parse5@7.2.1: - dependencies: - entities: 4.5.0 - - path-browserify@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-key@4.0.0: {} - - path-type@5.0.0: {} - - perfect-debounce@1.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - postcss-load-config@5.1.0(postcss@8.4.49): - dependencies: - lilconfig: 3.1.2 - yaml: 2.5.0 - optionalDependencies: - postcss: 8.4.49 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@3.4.2: {} - - pretty-ms@9.2.0: - dependencies: - parse-ms: 4.0.0 - - prismjs@1.29.0: {} - - pug-error@2.1.0: {} - - pug-lexer@5.0.1: - dependencies: - character-parser: 2.2.0 - is-expression: 4.0.0 - pug-error: 2.1.0 - - pug-parser@6.0.0: - dependencies: - pug-error: 2.1.0 - token-stream: 1.0.0 - - punycode.js@2.3.1: {} - - punycode@2.3.1: {} - - queue-microtask@1.2.3: {} - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.1.1: {} - - request-light@0.7.0: {} - - resolve-from@4.0.0: {} - - restore-cursor@5.1.0: - dependencies: - onetime: 7.0.0 - signal-exit: 4.1.0 - - reusify@1.0.4: {} - - rfdc@1.4.1: {} - - rollup@4.20.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.20.0 - '@rollup/rollup-android-arm64': 4.20.0 - '@rollup/rollup-darwin-arm64': 4.20.0 - '@rollup/rollup-darwin-x64': 4.20.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 - '@rollup/rollup-linux-arm-musleabihf': 4.20.0 - '@rollup/rollup-linux-arm64-gnu': 4.20.0 - '@rollup/rollup-linux-arm64-musl': 4.20.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 - '@rollup/rollup-linux-riscv64-gnu': 4.20.0 - '@rollup/rollup-linux-s390x-gnu': 4.20.0 - '@rollup/rollup-linux-x64-gnu': 4.20.0 - '@rollup/rollup-linux-x64-musl': 4.20.0 - '@rollup/rollup-win32-arm64-msvc': 4.20.0 - '@rollup/rollup-win32-ia32-msvc': 4.20.0 - '@rollup/rollup-win32-x64-msvc': 4.20.0 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safer-buffer@2.1.2: {} - - sass@1.83.4: - dependencies: - chokidar: 4.0.3 - immutable: 5.0.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.0 - - sax@1.4.1: {} - - section-matter@1.0.0: - dependencies: - extend-shallow: 2.0.1 - kind-of: 6.0.3 - - semver@7.6.3: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - signal-exit@4.1.0: {} - - sitemap@8.0.0: - dependencies: - '@types/node': 17.0.45 - '@types/sax': 1.2.7 - arg: 5.0.2 - sax: 1.4.1 - - slash@5.1.0: {} - - source-map-js@1.2.1: {} - - speakingurl@14.0.1: {} - - sprintf-js@1.0.3: {} - - stdin-discarder@0.2.2: {} - - string-width@7.2.0: - dependencies: - emoji-regex: 10.4.0 - get-east-asian-width: 1.3.0 - strip-ansi: 7.1.0 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-bom-string@1.0.0: {} - - strip-final-newline@4.0.0: {} - - strip-json-comments@3.1.1: {} - - superjson@2.2.2: - dependencies: - copy-anything: 3.0.5 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - synckit@0.9.2: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.8.1 - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - token-stream@1.0.0: {} - - ts-api-utils@2.0.0(typescript@5.7.3): - dependencies: - typescript: 5.7.3 - - tslib@2.8.1: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-fest@0.20.2: {} - - typescript-auto-import-cache@0.3.5: - dependencies: - semver: 7.6.3 - - typescript-eslint@8.20.0(eslint@9.19.0)(typescript@5.7.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/parser': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.20.0(eslint@9.19.0)(typescript@5.7.3) - eslint: 9.19.0 - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - typescript@5.7.3: {} - - uc.micro@2.1.0: {} - - undici-types@6.20.0: {} - - undici@6.21.1: {} - - unicorn-magic@0.1.0: {} - - unicorn-magic@0.3.0: {} - - universalify@2.0.1: {} - - upath@2.0.1: {} - - update-browserslist-db@1.1.0(browserslist@4.23.3): - dependencies: - browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - util-deprecate@1.0.2: {} - - vite@5.0.13(@types/node@22.12.0)(sass@1.83.4): - dependencies: - esbuild: 0.19.12 - postcss: 8.4.49 - rollup: 4.20.0 - optionalDependencies: - '@types/node': 22.12.0 - fsevents: 2.3.3 - sass: 1.83.4 - - volar-service-css@0.0.62(@volar/language-service@2.4.11): - dependencies: - vscode-css-languageservice: 6.3.2 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-emmet@0.0.62(@volar/language-service@2.4.11): - dependencies: - '@emmetio/css-parser': 0.4.0 - '@emmetio/html-matcher': 1.3.0 - '@vscode/emmet-helper': 2.11.0 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-html@0.0.62(@volar/language-service@2.4.11): - dependencies: - vscode-html-languageservice: 5.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-json@0.0.62(@volar/language-service@2.4.11): - dependencies: - vscode-json-languageservice: 5.4.2 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-pug-beautify@0.0.62(@volar/language-service@2.4.11): - dependencies: - '@johnsoncodehk/pug-beautify': 0.2.2 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-pug@0.0.62: - dependencies: - '@volar/language-service': 2.4.11 - muggle-string: 0.4.1 - pug-lexer: 5.0.1 - pug-parser: 6.0.0 - volar-service-html: 0.0.62(@volar/language-service@2.4.11) - vscode-html-languageservice: 5.3.1 - vscode-languageserver-textdocument: 1.0.12 - - volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.11): - dependencies: - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.4.11 - - volar-service-typescript@0.0.62(@volar/language-service@2.4.11): - dependencies: - path-browserify: 1.0.1 - semver: 7.6.3 - typescript-auto-import-cache: 0.3.5 - vscode-languageserver-textdocument: 1.0.12 - vscode-nls: 5.2.0 - vscode-uri: 3.0.8 - optionalDependencies: - '@volar/language-service': 2.4.11 - - vscode-css-languageservice@6.3.2: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-html-languageservice@5.3.1: - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-json-languageservice@5.4.2: - dependencies: - '@vscode/l10n': 0.0.18 - jsonc-parser: 3.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.17.5 - vscode-uri: 3.0.8 - - vscode-jsonrpc@8.2.0: {} - - vscode-languageserver-protocol@3.17.5: - dependencies: - vscode-jsonrpc: 8.2.0 - vscode-languageserver-types: 3.17.5 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.17.5: {} - - vscode-languageserver@9.0.1: - dependencies: - vscode-languageserver-protocol: 3.17.5 - - vscode-nls@5.2.0: {} - - vscode-uri@3.0.8: {} - - vue-demi@0.14.10(vue@3.5.13(typescript@5.7.3)): - dependencies: - vue: 3.5.13(typescript@5.7.3) - - vue-eslint-parser@9.4.3(eslint@9.19.0): - dependencies: - debug: 4.4.0 - eslint: 9.19.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - lodash: 4.17.21 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)): - dependencies: - '@vue/devtools-api': 6.6.4 - vue: 3.5.13(typescript@5.7.3) - - vue-tsc@2.2.0(typescript@5.7.3): - dependencies: - '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.7.3) - typescript: 5.7.3 - - vue@3.5.13(typescript@5.7.3): - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-sfc': 3.5.13 - '@vue/runtime-dom': 3.5.13 - '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.7.3)) - '@vue/shared': 3.5.13 - optionalDependencies: - typescript: 5.7.3 - - vuepress@2.0.0-rc.19(@vuepress/bundler-vite@2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3))(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)): - dependencies: - '@vuepress/cli': 2.0.0-rc.19(typescript@5.7.3) - '@vuepress/client': 2.0.0-rc.19(typescript@5.7.3) - '@vuepress/core': 2.0.0-rc.19(typescript@5.7.3) - '@vuepress/markdown': 2.0.0-rc.19 - '@vuepress/shared': 2.0.0-rc.19 - '@vuepress/utils': 2.0.0-rc.19 - vue: 3.5.13(typescript@5.7.3) - optionalDependencies: - '@vuepress/bundler-vite': 2.0.0-rc.7(@types/node@22.12.0)(sass@1.83.4)(typescript@5.7.3) - transitivePeerDependencies: - - supports-color - - typescript - - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - - whatwg-mimetype@4.0.0: {} - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - xml-name-validator@4.0.0: {} - - yaml@2.5.0: {} - - yocto-queue@0.1.0: {} - - yoctocolors@2.1.1: {} diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 1ba9f73..0000000 --- a/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "configMigration": true, - "extends": ["config:recommended"], - "postUpdateOptions": ["pnpmDedupe"] -} diff --git a/dist/robots.txt b/robots.txt similarity index 100% rename from dist/robots.txt rename to robots.txt diff --git a/dist/rus/index.html b/rus/index.html similarity index 100% rename from dist/rus/index.html rename to rus/index.html diff --git a/dist/rus/works.html b/rus/works.html similarity index 100% rename from dist/rus/works.html rename to rus/works.html diff --git a/scripts/pre-commit b/scripts/pre-commit deleted file mode 100755 index 90d642e..0000000 --- a/scripts/pre-commit +++ /dev/null @@ -1,13 +0,0 @@ -#! /usr/bin/env bash - -# Can be used as a pre-commit hook -# Just symlink this file to .git/hooks/pre-commit - -set -xe - -if [ ! -z "$(git diff --cached --name-only | grep "^docs/")" ] -then - make build - git add dist -fi - diff --git a/dist/sitemap.xml b/sitemap.xml similarity index 95% rename from dist/sitemap.xml rename to sitemap.xml index bb699aa..5c2fdcc 100644 --- a/dist/sitemap.xml +++ b/sitemap.xml @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="/sitemap.xsl"?> -<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://pleshevski.ru/</loc><lastmod>2024-09-05T22:11:51.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/"/></url><url><loc>https://pleshevski.ru/works.html</loc><lastmod>2024-08-07T08:48:54.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/works.html"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/works.html"/></url><url><loc>https://pleshevski.ru/eng/</loc><lastmod>2024-09-05T22:11:51.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/"/></url><url><loc>https://pleshevski.ru/eng/works.html</loc><lastmod>2024-08-07T08:48:54.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/works.html"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/works.html"/></url></urlset> \ No newline at end of file +<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://pleshevski.ru/</loc><lastmod>2024-09-05T22:11:51.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/"/></url><url><loc>https://pleshevski.ru/works.html</loc><lastmod>2024-10-15T14:10:49.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/works.html"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/works.html"/></url><url><loc>https://pleshevski.ru/eng/</loc><lastmod>2024-09-05T22:11:51.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/"/></url><url><loc>https://pleshevski.ru/eng/works.html</loc><lastmod>2024-08-07T08:48:54.000Z</lastmod><changefreq>monthly</changefreq><xhtml:link rel="alternate" hreflang="ru-RU" href="https://pleshevski.ru/works.html"/><xhtml:link rel="alternate" hreflang="en-US" href="https://pleshevski.ru/eng/works.html"/></url></urlset> \ No newline at end of file diff --git a/dist/sitemap.xsl b/sitemap.xsl similarity index 100% rename from dist/sitemap.xsl rename to sitemap.xsl diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 05272de..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "baseUrl": ".", - "composite": true, - "paths": { - "@/*": ["./docs/*"] - } - }, - "extends": "@vue/tsconfig/tsconfig.dom.json", - "include": ["env.d.ts", "docs/**/*", "docs/**/*.vue"] -} diff --git a/works.html b/works.html new file mode 100644 index 0000000..d78e744 --- /dev/null +++ b/works.html @@ -0,0 +1,43 @@ +<!doctype html> +<html lang="ru-RU"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width,initial-scale=1" /> + <meta name="generator" content="VuePress 2.0.0-rc.19" /> + <style> + :root { + --vp-c-bg: #fff; + } + + [data-theme='dark'] { + --vp-c-bg: #1b1b1f; + } + + html, + body { + background-color: var(--vp-c-bg); + } + </style> + <script> + const userMode = localStorage.getItem('vuepress-color-scheme') + const systemDarkMode = + 'matchMedia' in window + ? window.matchMedia('(prefers-color-scheme: dark)').matches + : false + + if (userMode === 'light') { + document.documentElement.dataset.theme = 'light' + } else if (userMode === 'dark' || systemDarkMode) { + document.documentElement.dataset.theme = 'dark' + } + </script> + <link rel="alternate" hreflang="en-us" href="https://pleshevski.ru/eng/works.html"><meta property="og:url" content="https://pleshevski.ru/works.html"><meta property="og:site_name" content="Дмитрий Плешевский"><meta property="og:title" content="Работы"><meta property="og:type" content="website"><meta property="og:locale" content="ru-RU"><meta property="og:locale:alternate" content="en-US"><meta property="og:updated_time" content="2024-10-15T14:10:49.000Z"><meta property="article:modified_time" content="2024-10-15T14:10:49.000Z"><script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","name":"Работы"}</script><title>Работы | Дмитрий Плешевский</title><meta name="description" content=" "> + <link rel="preload" href="/assets/style-CynUSZ8x.css" as="style"><link rel="stylesheet" href="/assets/style-CynUSZ8x.css"> + <link rel="modulepreload" href="/assets/app-R2Ffa9VO.js"><link rel="modulepreload" href="/assets/works.html-DplNc40I.js"> + <link rel="prefetch" href="/assets/index.html-DasZnaAo.js" as="script"><link rel="prefetch" href="/assets/index.html-7-wjojn8.js" as="script"><link rel="prefetch" href="/assets/works.html-D4EgERwy.js" as="script"><link rel="prefetch" href="/assets/404.html-Xq3T-2PH.js" as="script"> + </head> + <body> + <div id="app"><!--[--><div class="vp-theme-container no-sidebar external-link-icon" vp-container data-v-765855fb><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><!----><span class="vp-site-name" aria-hidden="true">Дмитрий Плешевский</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="Резюме"><!--[--><!--[--><!--]--><!--]-->Резюме<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Работы"><!--[--><!--[--><!--]--><!--]-->Работы<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="Резюме"><!--[--><!--[--><!--]--><!--]-->Резюме<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Работы"><!--[--><!--[--><!--]--><!--]-->Работы<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/works.html" aria-label="Русский"><!--[--><!--[--><!--]--><!--]-->Русский<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/eng/works.html" aria-label="English"><!--[--><!--[--><!--]--><!--]-->English<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru" aria-label="Source" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Source<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><!----><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div><h2 id="выделенныи-опыт-работы" tabindex="-1"><a class="header-anchor" href="#выделенныи-опыт-работы"><span>Выделенный опыт работы</span></a></h2><h3 id="binary-management" tabindex="-1"><a class="header-anchor" href="#binary-management"><span>Binary Management</span></a></h3><ul><li>Даты: Август 2018 – по настоящее время</li><li>Роли: Lead Fullstack Developer, Team Lead, Architect</li></ul><p>Разработка инструмента управления проектами для дизайнеров интерьера.</p><h5 id="backend-graphql-api" tabindex="-1"><a class="header-anchor" href="#backend-graphql-api"><span>Backend GraphQL API</span></a></h5><p>Стек: <code>Node.JS</code>, <code>Apollo</code>, <code>PostgreSQL</code>, <code>Redis</code>, <code>BullMQ</code></p><ul><li>Перенес триггеры базы данных в бизнес-логику. Проще стало читать код, вносить изменение и система стала надежнее.</li><li>Ввёл практику написания unit тестов и интеграционных тестов. Самолично написал более 70% всех тестов.</li><li>Добавил GraphQL подписки для динамичного обновления.</li></ul><h5 id="frontend" tabindex="-1"><a class="header-anchor" href="#frontend"><span>Frontend</span></a></h5><p>Стек: <code>React</code>, <code>Apollo</code>, <code>Antd</code></p><ul><li>Сформировал UIKit и общие компоненты, оптимизировал сложные и нагруженные компоненты.</li><li>Изменил работу с API на фронтенде.</li><li>Внедрил практику написания интеграционных тестов с помощью cypress.</li><li>Полностью перенес проект на TypeScript. Сформировал изолированные модули системы.</li></ul><h5 id="руководство-командои" tabindex="-1"><a class="header-anchor" href="#руководство-командои"><span>Руководство командой</span></a></h5><ul><li>Ввёл практику TDD (Test-Driven Development).</li><li>Я привнес в проект "метод критической цепи", "метод буфера" и "метод планирования с конца". Помог команде войти в ритм, чтобы выпускать релизы каждую неделю небольшими партиями.</li><li>Составлял индивидуальный план развития для членов команды.</li></ul><h5 id="архитектура" tabindex="-1"><a class="header-anchor" href="#архитектура"><span>Архитектура</span></a></h5><ul><li>Разбил всю кодовую базу на модули по фичам.</li><li>Ускорил базу данных <code>PostgreSQL</code>, разбив данные компаний по отдельным схемам и применив партиципирование таблиц.</li><li>Добавил кеширование запросов с <code>Redis</code>.</li><li>Уменьшил затраты на инфраструткуру в 5 раз, перенес весь проект с kubernetes на <code>NixOS</code>.</li></ul><hr><h3 id="core-spirit-back-office" tabindex="-1"><a class="header-anchor" href="#core-spirit-back-office"><span>Core Spirit (Back Office)</span></a></h3><ul><li>Даты: Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка бэк-офиса для социальной платформы Core Spirit.</p><ul><li>Интегрировал Dependabot, который помог обновить все устаревшие зависимости. Заменил webpack на vite.</li></ul><hr><h3 id="master-progress" tabindex="-1"><a class="header-anchor" href="#master-progress"><span>Master Progress</span></a></h3><ul><li>Даты: Май 2018 - по настоящее время (Пассивная поддержка)</li><li>Роль: Tech Lead</li></ul><p>Разработка веб-инфраструктуры образовательного центра Мастер Прогресс.</p><ul><li><a href="https://masterprogress.ru" target="_blank" rel="noopener noreferrer">Главного сайта</a> (<code>Python</code>, <code>Flask</code>).</li><li><a href="https://cabinet.masterprogress.ru" target="_blank" rel="noopener noreferrer">Кабинета студента</a> (<code>Python</code>, <code>Flask</code>, <code>TypeScript</code>, <code>React</code>, <code>PostgreSQL</code>).</li><li><a href="https://rosmintrud.masterprogress.ru" target="_blank" rel="noopener noreferrer">Инструмента для работы с rosmintrud</a> (<code>Deno</code>, <code>Vue</code>, <code>Typescript</code>)</li><li>Создана полная инфраструктура на <code>NixOS</code>. До этого создал инфраструктуру используя <code>Drone CI</code> / <code>Woodpecker CI</code> и <code>Docker swarm</code>, которая проработала более 5 лет.</li></ul><hr><h3 id="core-spirit" tabindex="-1"><a class="header-anchor" href="#core-spirit"><span>Core Spirit</span></a></h3><ul><li>Даты: Август 2018 - May 2020, Август 2024 - по настоящее время</li><li>Роль: Lead Fullstack Developer</li></ul><p>Разработка социальной платформы, сфокусированной на улучшении человека и планеты.</p><ul><li>REST API (<code>Node.JS</code>, <code>Express</code>, <code>PostgreSQL</code>) для основного сайта и бэк-офиса. Успел поработать с новой версией REST API на <code>Go</code>, <code>PostgreSQL</code></li><li>Автопостер в различные социальные сети и мессенджеры (Facebook, LinkedIn, Twitter, Telegram).</li><li>Создал нейронную сеть для автоматической категоризации статей.</li></ul><hr><h3 id="merlion" tabindex="-1"><a class="header-anchor" href="#merlion"><span>MERLION</span></a></h3><ul><li>Dates: March 2016 – May 2018</li><li>Role: Senior Fullstack developer</li></ul><p>В этой компании было 6 значительных проектов, которые я успешно завершил:</p><ul><li>Оптимизация создания рекламных страниц (PHP, JavaScript)</li><li>Поддержка основного традиционного сайта <a href="https://citilink.ru" target="_blank" rel="noopener noreferrer">https://citilink.ru</a> (PHP, JavaScript)</li><li>Разработка парсинга для мониторинга товаров на предмет изменения цены, количества/наличия на складе, рейтинга и других полей на основе данных с 55+ сайтов (Node.js, Express)</li><li>Работа с нейронными сетями для подбора товаров</li><li>Разработка приложений для распознавания лиц для Android (Java)</li></ul><hr><h2 id="хронология" tabindex="-1"><a class="header-anchor" href="#хронология"><span>Хронология</span></a></h2><p>В списке перечислены только публичные проекты.</p></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: dmitriy@ideascup.me">Dmitriy Pleshevskiy</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: dmitriy@pleshevski.ru">Dmitriy Pleshevskiy</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><div class="works-table-wrapper" data-v-765855fb><table data-v-765855fb><thead><tr><th>Название</th><th>Описание</th><th>Роль</th><th>Технологии</th><th>Статус</th><th>Даты</th></tr></thead><tbody><!--[--><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/nixeovim">nixeovim</a></td><td>Configure and build neovim editor using nix</td><td>author</td><td>Nix</td><td>actively-developed</td><td><div><small class="">04/24/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/mindustry-tools">Mindustry tools</a></td><td>Tools for the Mindustry game</td><td>author</td><td>Nix, Godot</td><td>passively-maintained</td><td><div><small class="">01/07/2024</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://rosmintrud.masterprogress.ru">Master Progress Rosmintrud tools</a></td><td>Internal service to prepare documents for the rosmintrud (SPA)</td><td>tech lead</td><td>Deno, Sqlite, TS, Vue, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">07/03/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-plpgsql">tree-sitter-plpgsql</a></td><td>plpgsql grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>passively-maintained</td><td><div><small class="">01/05/2023</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/tree-sitter-d2">tree-sitter-d2</a></td><td>d2 grammar for tree-sitter</td><td>author</td><td>C, JS, TreeSitter, Nix</td><td>actively-developed</td><td><div><small class="">12/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/mynix/nix2lua">nix2lua</a></td><td>This is a small but functional library that converts your nix configurations into lua format.</td><td>author</td><td>Nix, Lua</td><td>passively-maintained</td><td><div><small class="">11/22/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/vnetod">vnetod</a></td><td>Dotenv section switcher</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/29/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/recipes">recipes</a></td><td>Site with recipes which cares about privacy</td><td>author</td><td>TS, Deno, Rust</td><td>passively-maintained</td><td><div><small class="">05/04/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/pleshevski.ru">pleshevski.ru</a></td><td>Source code of my personal site</td><td>author</td><td>TS, Vue, Vuepress, Nix</td><td>passively-maintained</td><td><div><small class="">03/16/2022</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/espruino-starter">espruino-starter</a></td><td>Quickly start creating your new project on the espruino board or a board based on it.</td><td>author</td><td>JS</td><td>as-is</td><td><div><small class="">08/23/2021</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/sonic-channel">sonic-channel</a></td><td>Rust client for sonic search backend.</td><td>author</td><td>Rust</td><td>passively-maintained</td><td><div><small class="">07/18/2020</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/it-fsm">it-fsm</a></td><td>Simple full-featured finite state machine for your project</td><td>author</td><td>TS, NodeJS, Deno</td><td>passively-maintained</td><td><div><small class="">10/11/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://cabinet.masterprogress.ru">Cabinet Master Progress</a></td><td>Student's cabinet of the educational center Master Progress (SSR + SPA)</td><td>tech lead</td><td>Python, Flask, PostgreSQL, TS, React, Docker, Woodpecker CI, Nix</td><td>passively-maintained</td><td><div><small class="">09/22/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/genrss">genrss</a></td><td>RSS generator for python</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="">07/23/2019</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://www.binarymanagement.com">Binary Management</a></td><td>Project management tool for interior designers</td><td>developer, tech lead, team lead</td><td>TS, NodeJS, React, Antd, Docker, Drone CI, Rust, Nix</td><td>actively-developed</td><td><div><small class="">09/15/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://masterprogress.ru">Master Progress</a></td><td>Main website of the educational center Master Progress (SSR + Forms)</td><td>tech lead</td><td>Python, Flask, JS, Nix</td><td>passively-maintained</td><td><div><small class="">04/10/2018</small></div><!----></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/picsg">picsg</a></td><td>A tool for steganographing information in a picture encoded using the Vernam cipher.</td><td>author</td><td>Haskell</td><td>as-is</td><td><div><small class="grey">04/13/2024</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/yandexgpt_tg_bot">yandexgpt_tg_bot</a></td><td>The Telegram bot to describe article with link by YandexGPT.</td><td>author</td><td>JS, NodeJS, Nix</td><td>as-is</td><td><div><small class="grey">06/27/2023</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/estring">estring</a></td><td>A simple way to parse a string using type annotations.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/23/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/enve">enve</a></td><td>It helps you work with environment variables and convert it to any type using only type annotations</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">07/18/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/docker_stack">docker stack drone plugin</a></td><td>Deploy to production using `docker stack deploy`</td><td>author</td><td>Docker, Drone CI, Woodpecker CI</td><td>as-is</td><td><div><small class="grey">06/06/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/paren">paren</a></td><td>Library for parsing and rendering information.</td><td>author</td><td>TS, Deno</td><td>experimental</td><td><div><small class="grey">03/14/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/hwt">hwt</a></td><td>healthy workaholic timer – A tool that keeps you from breaking your health by working all day.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">02/04/2022</small></div><div><small>07/25/2024</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/wd2">wd2</a></td><td>A wrapper over d2 which allows to use additional configs from d2 file</td><td>author</td><td>Bash, Nix</td><td>as-is</td><td><div><small class="grey">12/12/2022</small></div><div><small>07/31/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/react-rest-request">react-rest-request</a></td><td>Minimalistic REST API client for React inspired by Apollo.</td><td>author</td><td>TS, React</td><td>deprecated</td><td><div><small class="grey">10/04/2020</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/marshmallow_pageinfo">marshmallow_pageinfo</a></td><td>Page info marshmallow schema for api</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">10/05/2019</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ictmpl">ictmpl</a></td><td>Generate projects from templates</td><td>author</td><td>Python</td><td>as-is</td><td><div><small class="grey">06/30/2018</small></div><div><small>03/02/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/github/dexios">dexios</a></td><td>Dexios is a fast, secure, and open source command-line encryption tool.</td><td>collaborator</td><td>Rust</td><td></td><td><div><small class="grey">06/01/2022</small></div><div><small>02/28/2023</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/itconfig">itconfig</a></td><td>Easy build a configs from environment variables and use it in globally.</td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">12/22/2019</small></div><div><small>07/24/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/migra">migra</a></td><td>Simple SQL migration manager for your project.</td><td>author</td><td>Rust</td><td>as-is</td><td><div><small class="grey">01/31/2021</small></div><div><small>03/17/2022</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://git.pleshevski.ru/pleshevskiy/ood_persistence">ood_persistence</a></td><td>Asynchronous and synchronous interfaces and persistence implementations for your OOD architecture </td><td>author</td><td>Rust</td><td>deprecated</td><td><div><small class="grey">10/12/2021</small></div><div><small>10/21/2021</small></div></td></tr><tr><td><a rel="nofollow noopener" href="https://corespirit.com">Core Spirit</a></td><td>Social platform focusing on human and planetary enhancement</td><td>developer</td><td>TS, NodeJS, Go, Python, React, Docker, Drone CI</td><td></td><td><div><small class="grey">09/05/2018</small></div><div><small>12/31/2019</small></div></td></tr><!--]--></tbody></table></div><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div> + <script type="module" src="/assets/app-R2Ffa9VO.js" defer></script> + </body> +</html>