PageSourceSearch

https://sensemaker-frontend.pages.dev/assets/index-c0NKlNcN.js

js sensemaker-frontend.pages.dev collected 2026-10-03 05:32:19 UTC 371,474 bytes, 88 lines download raw bytes

vendor: 6,145 bytes, lines 1-2
1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrivacyView-uB_A5Ekw.js","assets/PrivacyView-DyI_nF3P.css","assets/SelfHostView-BmGQQkoH.js","assets/SelfHostView-m7dnH9vX.css","assets/PolisGuideView-3LddHktY.js","assets/IconArrowNext-DUMjAS9K.js","assets/PolisGuideView-tn0RQdqM.css","assets/OpenRouterGuideView-C57piGgm.js","assets/IconArrowPrev-CnXjCgiF.js","assets/SenseMakerGuideView-BodYyV-t.js"])))=>i.map(i=>d[i]);
2var Qc=Object.defineProperty;var Jc=(e,t,n)=>t in e?Qc(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var he=(e,t,n)=>Jc(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();function uo(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ye={},An=[],Dt=()=>{},Oa=()=>!1,nr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),po=e=>e.startsWith("onUpdate:"),ze=Object.assign,fo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Zc=Object.prototype.hasOwnProperty,fe=(e,t)=>Zc.call(e,t),J=Array.isArray,In=e=>bs(e)==="[object Map]",$n=e=>bs(e)==="[object Set]",Jo=e=>bs(e)==="[object Date]",te=e=>typeof e=="function",Ne=e=>typeof e=="string",Mt=e=>typeof e=="symbol",ke=e=>e!==null&&typeof e=="object",Da=e=>(ke(e)||te(e))&&te(e.then)&&te(e.catch),Na=Object.prototype.toString,bs=e=>Na.call(e),eu=e=>bs(e).slice(8,-1),Ma=e=>bs(e)==="[object Object]",mo=e=>Ne(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Zn=uo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),sr=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},tu=/-\w/g,gt=sr(e=>e.replace(tu,t=>t.slice(1).toUpperCase())),nu=/\B([A-Z])/g,Tn=sr(e=>e.replace(nu,"-$1").toLowerCase()),rr=sr(e=>e.charAt(0).toUpperCase()+e.slice(1)),wr=sr(e=>e?`on${rr(e)}`:""),sn=(e,t)=>!Object.is(e,t),As=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},Fa=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},or=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Zo;const ir=()=>Zo||(Zo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ho(e){if(J(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=Ne(s)?iu(s):ho(s);if(r)for(const o in r)t[o]=r[o]}return t}else if(Ne(e)||ke(e))return e}const su=/;(?![^(]*\))/g,ru=/:([^]+)/,ou=/\/\*[^]*?\*\//g;function iu(e){const t={};return e.replace(ou,"").split(su).forEach(n=>{if(n){const s=n.split(ru);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(Ne(e))t=e;else if(J(e))for(let n=0;n<e.length;n++){const s=Be(e[n]);s&&(t+=s+" ")}else if(ke(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const au="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",lu=uo(au);function Va(e){return!!e||e===""}function cu(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=_n(e[s],t[s]);return n}function _n(e,t){if(e===t)return!0;let n=Jo(e),s=Jo(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=Mt(e),s=Mt(t),n||s)return e===t;if(n=J(e),s=J(t),n||s)return n&&s?cu(e,t):!1;if(n=ke(e),s=ke(t),n||s){if(!n||!s)return!1;const r=Object.keys(e).length,o=Object.keys(t).length;if(r!==o)return!1;for(const i in e){const a=e.hasOwnProperty(i),l=t.hasOwnProperty(i);if(a&&!l||!a&&l||!_n(e[i],t[i]))return!1}}return String(e)===String(t)}function go(e,t){return e.findIndex(n=>_n(n,t))}const Ua=e=>!!(e&&e.__v_isRef===!0),H=e=>Ne(e)?e:e==null?"":J(e)||ke(e)&&(e.toString===Na||!te(e.toString))?Ua(e)?H(e.value):JSON.stringify(e,$a,2):String(e),$a=(e,t)=>Ua(t)?$a(e,t.value):In(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Tr(s,o)+" =>"]=r,n),{})}:$n(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Tr(n))}:Mt(t)?Tr(t):ke(t)&&!J(t)&&!Ma(t)?String(t):t,Tr=(e,t="")=>{var n;return Mt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let rt;class ja{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=rt,!t&&rt&&(this.index=(rt.scopes||(rt.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=rt;try{return rt=this,t()}finally{rt=n}}}on(){++this._on===1&&(this.prevScope=rt,rt=this)}off(){this._on>0&&--this._on===0&&(rt=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function uu(e){return new ja(e)}function du(){return rt}let _e;const Sr=new WeakSet;class Ka{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
vendor: 4,603 bytes, line 2
2=void 0,rt&&rt.active&&rt.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Sr.has(this)&&(Sr.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ba(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ei(this),Wa(this);const t=_e,n=St;_e=this,St=!0;try{return this.fn()}finally{qa(this),_e=t,St=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)yo(t);this.deps=this.depsTail=void 0,ei(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Sr.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Vr(this)&&this.run()}get dirty(){return Vr(this)}}let Ha=0,es,ts;function Ba(e,t=!1){if(e.flags|=8,t){e.next=ts,ts=e;return}e.next=es,es=e}function bo(){Ha++}function vo(){if(--Ha>0)return;if(ts){let t=ts;for(ts=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;es;){let t=es;for(es=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function Wa(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function qa(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),yo(s),pu(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Vr(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(za(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function za(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===cs)||(e.globalVersion=cs,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Vr(e))))return;e.flags|=2;const t=e.dep,n=_e,s=St;_e=e,St=!0;try{Wa(e);const r=e.fn(e._value);(t.version===0||sn(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{_e=n,St=s,qa(e),e.flags&=-3}}function yo(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)yo(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function pu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let St=!0;const Ga=[];function Gt(){Ga.push(St),St=!1}function Yt(){const e=Ga.pop();St=e===void 0?!0:e}function ei(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=_e;_e=void 0;try{t()}finally{_e=n}}}let cs=0;class fu{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 ko{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,this.__v_skip=!0}track(t){if(!_e||!St||_e===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==_e)n=this.activeLink=new fu(_e,this),_e.deps?(n.prevDep=_e.depsTail,_e.depsTail.nextDep=n,_e.depsTail=n):_e.deps=_e.depsTail=n,Ya(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=_e.depsTail,n.nextDep=void 0,_e.depsTail.nextDep=n,_e.depsTail=n,_e.deps===n&&(_e.deps=s)}return n}trigger(t){this.version++,cs++,this.notify(t)}notify(t){bo();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{vo()}}}function Ya(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ya(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Ur=new WeakMap,kn=Symbol(""),$r=Symbol(""),us=Symbol("");function We(e,t,n){if(St&&_e){let s=Ur.get(e);s||Ur.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new ko),r.map=s,r.key=n),r.track()}}function Ht(e,t,n,s,r,o){const i=Ur.get(e);if(!i){cs++;return}const a=l=>{l&&l.trigger()};if(bo(),t==="clear")i.forEach(a);else{const l=J(e),c=l&&mo(n);if(l&&n==="length"){const u=Number(s);i.forEach((d,m)=>{(m==="length"||m===us||!Mt(m)&&m>=u)&&a(d)})}else switch((n!==void 0||i.has(void 0))&&a(i.get(n)),c&&a(i.get(us)),t){case"add":l?c&&a(i.get("length")):(a(i.get(kn)),In(e)&&a(i.get($r)));break;case"delete":l||(a(i.get(kn)),In(e)&&a(i.get($r)));break;case"set":In(e)&&a(i.get(kn));break}}vo()}function Pn(e){const t=pe(e);return t===e?t:(We(t,"iterate",us),ft(e)?t:t.map(je))}function ar(e){return We(e=pe(e),"iterate",us),e}const mu={__proto__:null,[Symbol.iterator](){return Pr(this,Symbol.iterator,je)},concat(...e){return Pn(this).concat(...e.map(t=>J(t)?Pn(t):t))}
vendor: 4,616 bytes, line 2
2,entries(){return Pr(this,"entries",e=>(e[1]=je(e[1]),e))},every(e,t){return Vt(this,"every",e,t,void 0,arguments)},filter(e,t){return Vt(this,"filter",e,t,n=>n.map(je),arguments)},find(e,t){return Vt(this,"find",e,t,je,arguments)},findIndex(e,t){return Vt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Vt(this,"findLast",e,t,je,arguments)},findLastIndex(e,t){return Vt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Vt(this,"forEach",e,t,void 0,arguments)},includes(...e){return xr(this,"includes",e)},indexOf(...e){return xr(this,"indexOf",e)},join(e){return Pn(this).join(e)},lastIndexOf(...e){return xr(this,"lastIndexOf",e)},map(e,t){return Vt(this,"map",e,t,void 0,arguments)},pop(){return Bn(this,"pop")},push(...e){return Bn(this,"push",e)},reduce(e,...t){return ti(this,"reduce",e,t)},reduceRight(e,...t){return ti(this,"reduceRight",e,t)},shift(){return Bn(this,"shift")},some(e,t){return Vt(this,"some",e,t,void 0,arguments)},splice(...e){return Bn(this,"splice",e)},toReversed(){return Pn(this).toReversed()},toSorted(e){return Pn(this).toSorted(e)},toSpliced(...e){return Pn(this).toSpliced(...e)},unshift(...e){return Bn(this,"unshift",e)},values(){return Pr(this,"values",je)}};function Pr(e,t,n){const s=ar(e),r=s[t]();return s!==e&&!ft(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const hu=Array.prototype;function Vt(e,t,n,s,r,o){const i=ar(e),a=i!==e&&!ft(e),l=i[t];if(l!==hu[t]){const d=l.apply(e,o);return a?je(d):d}let c=n;i!==e&&(a?c=function(d,m){return n.call(this,je(d),m,e)}:n.length>2&&(c=function(d,m){return n.call(this,d,m,e)}));const u=l.call(i,c,s);return a&&r?r(u):u}function ti(e,t,n,s){const r=ar(e);let o=n;return r!==e&&(ft(e)?n.length>3&&(o=function(i,a,l){return n.call(this,i,a,l,e)}):o=function(i,a,l){return n.call(this,i,je(a),l,e)}),r[t](o,...s)}function xr(e,t,n){const s=pe(e);We(s,"iterate",us);const r=s[t](...n);return(r===-1||r===!1)&&To(n[0])?(n[0]=pe(n[0]),s[t](...n)):r}function Bn(e,t,n=[]){Gt(),bo();const s=pe(e)[t].apply(e,n);return vo(),Yt(),s}const gu=uo("__proto__,__v_isRef,__isVue"),Xa=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Mt));function bu(e){Mt(e)||(e=String(e));const t=pe(this);return We(t,"has",e),t.hasOwnProperty(e)}class Qa{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?Cu:tl:o?el:Za).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=J(t);if(!r){let l;if(i&&(l=mu[n]))return l;if(n==="hasOwnProperty")return bu}const a=Reflect.get(t,n,Ke(t)?t:s);if((Mt(n)?Xa.has(n):gu(n))||(r||We(t,"get",n),o))return a;if(Ke(a)){const l=i&&mo(n)?a:a.value;return r&&ke(l)?Kr(l):l}return ke(a)?r?Kr(a):lr(a):a}}class Ja extends Qa{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const l=rn(o);if(!ft(s)&&!rn(s)&&(o=pe(o),s=pe(s)),!J(t)&&Ke(o)&&!Ke(s))return l||(o.value=s),!0}const i=J(t)&&mo(n)?Number(n)<t.length:fe(t,n),a=Reflect.set(t,n,s,Ke(t)?t:r);return t===pe(r)&&(i?sn(s,o)&&Ht(t,"set",n,s):Ht(t,"add",n,s)),a}deleteProperty(t,n){const s=fe(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&Ht(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!Mt(n)||!Xa.has(n))&&We(t,"has",n),s}ownKeys(t){return We(t,"iterate",J(t)?"length":kn),Reflect.ownKeys(t)}}class vu extends Qa{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const yu=new Ja,ku=new vu,_u=new Ja(!0);const jr=e=>e,ws=e=>Reflect.getPrototypeOf(e);function wu(e,t,n){return function(...s){const r=this.__v_raw,o=pe(r),i=In(o),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,c=r[e](...s),u=n?jr:t?Vs:je;return!t&&We(o,"iterate",l?$r:kn),{next(){const{value:d,done:m}=c.next();return m?{value:d,done:m}:{value:a?[u(d[0]),u(d[1])]:u(d),done:m}},[Symbol.iterator](){return this}}}}function Ts(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Tu(e,t){const n={get(r){const o=this.__v_raw,i=pe(o),a=pe(r);e||(sn(r,a)&&We(i,"get",r),We(i,"get",a));const{has:l}=ws(i),c=t?jr:e?Vs:je;if(l.call(i,r))return c(o.get(r));if(l.call(i,a))return c(o.get(a));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&We(pe(r),"iterate",kn),r.size},has(r){const o=this.__v_raw,i=pe(o),a=pe(r);return e||(sn(r,a)&&We(i,"has",r),We(i,"has",a)),r===a?o.has(r):o.has(r)||o.has(a)}
vendor: 4,345 bytes, line 2
2,forEach(r,o){const i=this,a=i.__v_raw,l=pe(a),c=t?jr:e?Vs:je;return!e&&We(l,"iterate",kn),a.forEach((u,d)=>r.call(o,c(u),c(d),i))}};return ze(n,e?{add:Ts("add"),set:Ts("set"),delete:Ts("delete"),clear:Ts("clear")}:{add(r){!t&&!ft(r)&&!rn(r)&&(r=pe(r));const o=pe(this);return ws(o).has.call(o,r)||(o.add(r),Ht(o,"add",r,r)),this},set(r,o){!t&&!ft(o)&&!rn(o)&&(o=pe(o));const i=pe(this),{has:a,get:l}=ws(i);let c=a.call(i,r);c||(r=pe(r),c=a.call(i,r));const u=l.call(i,r);return i.set(r,o),c?sn(o,u)&&Ht(i,"set",r,o):Ht(i,"add",r,o),this},delete(r){const o=pe(this),{has:i,get:a}=ws(o);let l=i.call(o,r);l||(r=pe(r),l=i.call(o,r)),a&&a.call(o,r);const c=o.delete(r);return l&&Ht(o,"delete",r,void 0),c},clear(){const r=pe(this),o=r.size!==0,i=r.clear();return o&&Ht(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=wu(r,e,t)}),n}function _o(e,t){const n=Tu(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(fe(n,r)&&r in s?n:s,r,o)}const Su={get:_o(!1,!1)},Pu={get:_o(!1,!0)},xu={get:_o(!0,!1)};const Za=new WeakMap,el=new WeakMap,tl=new WeakMap,Cu=new WeakMap;function Eu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ru(e){return e.__v_skip||!Object.isExtensible(e)?0:Eu(eu(e))}function lr(e){return rn(e)?e:wo(e,!1,yu,Su,Za)}function nl(e){return wo(e,!1,_u,Pu,el)}function Kr(e){return wo(e,!0,ku,xu,tl)}function wo(e,t,n,s,r){if(!ke(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Ru(e);if(o===0)return e;const i=r.get(e);if(i)return i;const a=new Proxy(e,o===2?s:n);return r.set(e,a),a}function Ln(e){return rn(e)?Ln(e.__v_raw):!!(e&&e.__v_isReactive)}function rn(e){return!!(e&&e.__v_isReadonly)}function ft(e){return!!(e&&e.__v_isShallow)}function To(e){return e?!!e.__v_raw:!1}function pe(e){const t=e&&e.__v_raw;return t?pe(t):e}function Au(e){return!fe(e,"__v_skip")&&Object.isExtensible(e)&&Fa(e,"__v_skip",!0),e}const je=e=>ke(e)?lr(e):e,Vs=e=>ke(e)?Kr(e):e;function Ke(e){return e?e.__v_isRef===!0:!1}function ve(e){return rl(e,!1)}function sl(e){return rl(e,!0)}function rl(e,t){return Ke(e)?e:new Iu(e,t)}class Iu{constructor(t,n){this.dep=new ko,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:pe(t),this._value=n?t:je(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||ft(t)||rn(t);t=s?t:pe(t),sn(t,n)&&(this._rawValue=t,this._value=s?t:je(t),this.dep.trigger())}}function j(e){return Ke(e)?e.value:e}const Lu={get:(e,t,n)=>t==="__v_raw"?e:j(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Ke(r)&&!Ke(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ol(e){return Ln(e)?e:new Proxy(e,Lu)}class Ou{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ko(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=cs-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&_e!==this)return Ba(this,!0),!0}get value(){const t=this.dep.track();return za(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Du(e,t,n=!1){let s,r;return te(e)?s=e:(s=e.get,r=e.set),new Ou(s,r,n)}const Ss={},Us=new WeakMap;let bn;function Nu(e,t=!1,n=bn){if(n){let s=Us.get(n);s||Us.set(n,s=[]),s.push(e)}}function Mu(e,t,n=ye){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:a,call:l}=n,c=_=>r?_:ft(_)||r===!1||r===0?Bt(_,1):Bt(_);let u,d,m,b,P=!1,x=!1;if(Ke(e)?(d=()=>e.value,P=ft(e)):Ln(e)?(d=()=>c(e),P=!0):J(e)?(x=!0,P=e.some(_=>Ln(_)||ft(_)),d=()=>e.map(_=>{if(Ke(_))return _.value;if(Ln(_))return c(_);if(te(_))return l?l(_,2):_()})):te(e)?t?d=l?()=>l(e,2):e:d=()=>{if(m){Gt();try{m()}finally{Yt()}}const _=bn;bn=u;try{return l?l(e,3,[b]):e(b)}finally{bn=_}}:d=Dt,t&&r){const _=d,I=r===!0?1/0:r;d=()=>Bt(_(),I)}const F=du(),A=()=>{u.stop(),F&&F.active&&fo(F.effects,u)};if(o&&t){const _=t;t=(...I)=>{_(...I),A()}}let $=x?new Array(e.length).fill(Ss):Ss;const k=_=>{if(!(!(u.flags&1)||!u.dirty&&!_))if(t){const I=u.run();if(r||P||(x?I.some((L,U)=>sn(L,$[U])):sn(I,$))){m&&m();const L=bn;bn=u;try{const U=[I,$===Ss?void 0:x&&$[0]===Ss?[]:$,b];$=I,l?l(t,3,U):t(...U)}finally{bn=L}}}else u.run()};
vendor: 10,427 bytes, line 2
2return a&&a(k),u=new Ka(d),u.scheduler=i?()=>i(k,!1):k,b=_=>Nu(_,!1,u),m=u.onStop=()=>{const _=Us.get(u);if(_){if(l)l(_,4);else for(const I of _)I();Us.delete(u)}},t?s?k(!0):$=u.run():i?i(k.bind(null,!0),!0):u.run(),A.pause=u.pause.bind(u),A.resume=u.resume.bind(u),A.stop=A,A}function Bt(e,t=1/0,n){if(t<=0||!ke(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ke(e))Bt(e.value,t,n);else if(J(e))for(let s=0;s<e.length;s++)Bt(e[s],t,n);else if($n(e)||In(e))e.forEach(s=>{Bt(s,t,n)});else if(Ma(e)){for(const s in e)Bt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Bt(e[s],t,n)}return e}function vs(e,t,n,s){try{return s?e(...s):e()}catch(r){cr(r,t,n)}}function Ft(e,t,n,s){if(te(e)){const r=vs(e,t,n,s);return r&&Da(r)&&r.catch(o=>{cr(o,t,n)}),r}if(J(e)){const r=[];for(let o=0;o<e.length;o++)r.push(Ft(e[o],t,n,s));return r}}function cr(e,t,n,s=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:i}=t&&t.appContext.config||ye;if(t){let a=t.parent;const l=t.proxy,c=`https://vuejs.org/error-reference/#runtime-${n}`;for(;a;){const u=a.ec;if(u){for(let d=0;d<u.length;d++)if(u[d](e,l,c)===!1)return}a=a.parent}if(o){Gt(),vs(o,null,10,[e,l,c]),Yt();return}}Fu(e,n,r,s,i)}function Fu(e,t,n,s=!0,r=!1){if(r)throw e;console.error(e)}const Ze=[];let It=-1;const On=[];let en=null,xn=0;const il=Promise.resolve();let $s=null;function So(e){const t=$s||il;return e?t.then(this?e.bind(this):e):t}function Vu(e){let t=It+1,n=Ze.length;for(;t<n;){const s=t+n>>>1,r=Ze[s],o=ds(r);o<e||o===e&&r.flags&2?t=s+1:n=s}return t}function Po(e){if(!(e.flags&1)){const t=ds(e),n=Ze[Ze.length-1];!n||!(e.flags&2)&&t>=ds(n)?Ze.push(e):Ze.splice(Vu(t),0,e),e.flags|=1,al()}}function al(){$s||($s=il.then(cl))}function Uu(e){J(e)?On.push(...e):en&&e.id===-1?en.splice(xn+1,0,e):e.flags&1||(On.push(e),e.flags|=1),al()}function ni(e,t,n=It+1){for(;n<Ze.length;n++){const s=Ze[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;Ze.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function ll(e){if(On.length){const t=[...new Set(On)].sort((n,s)=>ds(n)-ds(s));if(On.length=0,en){en.push(...t);return}for(en=t,xn=0;xn<en.length;xn++){const n=en[xn];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}en=null,xn=0}}const ds=e=>e.id==null?e.flags&2?-1:1/0:e.id;function cl(e){try{for(It=0;It<Ze.length;It++){const t=Ze[It];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),vs(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;It<Ze.length;It++){const t=Ze[It];t&&(t.flags&=-2)}It=-1,Ze.length=0,ll(),$s=null,(Ze.length||On.length)&&cl()}}let ct=null,ul=null;function js(e){const t=ct;return ct=e,ul=e&&e.type.__scopeId||null,t}function $e(e,t=ct,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Bs(-1);const o=js(t);let i;try{i=e(...r)}finally{js(o),s._d&&Bs(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function Rt(e,t){if(ct===null)return e;const n=fr(ct),s=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,i,a,l=ye]=t[r];o&&(te(o)&&(o={mounted:o,updated:o}),o.deep&&Bt(i),s.push({dir:o,instance:n,value:i,oldValue:void 0,arg:a,modifiers:l}))}return e}function pn(e,t,n,s){const r=e.dirs,o=t&&t.dirs;for(let i=0;i<r.length;i++){const a=r[i];o&&(a.oldValue=o[i].value);let l=a.dir[s];l&&(Gt(),Ft(l,n,8,[e.el,a,e,t]),Yt())}}const $u=Symbol("_vte"),ju=e=>e.__isTeleport,Ku=Symbol("_leaveCb");function xo(e,t){e.shapeFlag&6&&e.component?(e.transition=t,xo(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 Xt(e,t){return te(e)?ze({name:e.name},t,{setup:e}):e}function dl(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Ks=new WeakMap;function ns(e,t,n,s,r=!1){if(J(e)){e.forEach((P,x)=>ns(P,t&&(J(t)?t[x]:t),n,s,r));return}if(ss(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&ns(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?fr(s.component):s.el,i=r?null:o,{i:a,r:l}=e,c=t&&t.r,u=a.refs===ye?a.refs={}:a.refs,d=a.setupState,m=pe(d),b=d===ye?Oa:P=>fe(m,P);if(c!=null&&c!==l){if(si(t),Ne(c))u[c]=null,b(c)&&(d[c]=null);else if(Ke(c)){c.value=null;const P=t;P.k&&(u[P.k]=null)}}if(te(l))vs(l,a,12,[i,u]);else{const P=Ne(l),x=Ke(l);if(P||x){const F=()=>{if(e.f){const A=P?b(l)?d[l]:u[l]:l.value;if(r)J(A)&&fo(A,o);else if(J(A))A.includes(o)||A.push(o);else if(P)u[l]=[o],b(l)&&(d[l]=u[l]);else{const $=[o];l.value=$,e.k&&(u[e.k]=$)}}else P?(u[l]=i,b(l)&&(d[l]=i)):x&&(l.value=i,e.k&&(u[e.k]=i))};if(i){const A=()=>{F(),Ks.delete(e)};A.id=-1,Ks.set(e,A),lt(A,n)}else si(e),F()}}}function si(e){const t=Ks.get(e);t&&(t.flags|=8,Ks.delete(e))}ir().requestIdleCallback;ir().cancelIdleCallback;const ss=e=>!!e.type.__asyncLoader,pl=e=>e.type.__isKeepAlive;function fl(e,t){hl(e,"a",t)}function ml(e,t){hl(e,"da",t)}function hl(e,t,n=qe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ur(t,s,n),n){let r=n.parent;for(;r&&r.parent;)pl(r.parent.vnode)&&Hu(s,t,n,r),r=r.parent}}function Hu(e,t,n,s){const r=ur(t,e,s,!0);jn(()=>{fo(s[t],r)},n)}function ur(e,t,n=qe,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Gt();const a=ks(n),l=Ft(t,n,e,i);return a(),Yt(),l});return s?r.unshift(o):r.push(o),o}}const Qt=e=>(t,n=qe)=>{(!fs||e==="sp")&&ur(e,(...s)=>t(...s),n)},Bu=Qt("bm"),dr=Qt("m"),Wu=Qt("bu"),qu=Qt("u"),zu=Qt("bum"),jn=Qt("um"),Gu=Qt("sp"),Yu=Qt("rtg"),Xu=Qt("rtc");function Qu(e,t=qe){ur("ec",e,t)}const Ju="components";function gl(e,t){return ed(Ju,e,!0,t)||e}const Zu=Symbol.for("v-ndc");function ed(e,t,n=!0,s=!1){const r=ct||qe;if(r){const o=r.type;{const a=Hd(o,!1);if(a&&(a===t||a===gt(t)||a===rr(gt(t))))return o}const i=ri(r[e]||o[e],t)||ri(r.appContext[e],t);return!i&&s?o:i}}function ri(e,t){return e&&(e[t]||e[gt(t)]||e[rr(gt(t))])}function bl(e,t,n,s){let r;const o=n,i=J(e);if(i||Ne(e)){const a=i&&Ln(e);let l=!1,c=!1;a&&(l=!ft(e),c=rn(e),e=ar(e)),r=new Array(e.length);for(let u=0,d=e.length;u<d;u++)r[u]=t(l?c?Vs(je(e[u])):je(e[u]):e[u],u,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let a=0;a<e;a++)r[a]=t(a+1,a,void 0,o)}else if(ke(e))if(e[Symbol.iterator])r=Array.from(e,(a,l)=>t(a,l,void 0,o));else{const a=Object.keys(e);r=new Array(a.length);for(let l=0,c=a.length;l<c;l++){const u=a[l];r[l]=t(e[u],u,l,o)}}else r=[];return r}const Hr=e=>e?Fl(e)?fr(e):Hr(e.parent):null,rs=ze(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=>Hr(e.parent),$root:e=>Hr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>yl(e),$forceUpdate:e=>e.f||(e.f=()=>{Po(e.update)}),$nextTick:e=>e.n||(e.n=So.bind(e.proxy)),$watch:e=>_d.bind(e)}),Cr=(e,t)=>e!==ye&&!e.__isScriptSetup&&fe(e,t),td={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:a,appContext:l}=e;let c;if(t[0]!=="$"){const b=i[t];if(b!==void 0)switch(b){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Cr(s,t))return i[t]=1,s[t];if(r!==ye&&fe(r,t))return i[t]=2,r[t];if((c=e.propsOptions[0])&&fe(c,t))return i[t]=3,o[t];if(n!==ye&&fe(n,t))return i[t]=4,n[t];Br&&(i[t]=0)}}const u=rs[t];let d,m;if(u)return t==="$attrs"&&We(e.attrs,"get",""),u(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==ye&&fe(n,t))return i[t]=4,n[t];if(m=l.config.globalProperties,fe(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Cr(r,t)?(r[t]=n,!0):s!==ye&&fe(s,t)?(s[t]=n,!0):fe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o,type:i}},a){let l,c;return!!(n[a]||e!==ye&&a[0]!=="$"&&fe(e,a)||Cr(t,a)||(l=o[0])&&fe(l,a)||fe(s,a)||fe(rs,a)||fe(r.config.globalProperties,a)||(c=i.__cssModules)&&c[a])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:fe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function oi(e){return J(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Br=!0;function nd(e){const t=yl(e),n=e.proxy,s=e.ctx;Br=!1,t.beforeCreate&&ii(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:a,provide:l,inject:c,created:u,beforeMount:d,mounted:m,beforeUpdate:b,updated:P,activated:x,deactivated:F,beforeDestroy:A,beforeUnmount:$,destroyed:k,unmounted:_,render:I,renderTracked:L,renderTriggered:U,errorCaptured:G,serverPrefetch:z,expose:ae,inheritAttrs:Re,components:ee,directives:we,filters:vt}=t;if(c&&sd(c,s,null),i)for(const re in i){const ne=i[re];te(ne)&&(s[re]=ne.bind(n))}if(r){const re=r.call(n,n);ke(re)&&(e.data=lr(re))}if(Br=!0,o)for(const re in o){const ne=o[re],Ge=te(ne)?ne.bind(n,n):te(ne.get)?ne.get.bind(n,n):Dt,ue=!te(ne)&&te(ne.set)?ne.set.bind(n):Dt,xe=Oe({get:Ge,set:ue});Object.defineProperty(s,re,{enumerable:!0,configurable:!0,get:()=>xe.value,set:Se=>xe.value=Se})}if(a)for(const re in a)vl(a[re],s,n,re);if(l){const re=te(l)?l.call(n):l;Reflect.ownKeys(re).forEach(ne=>{Is(ne,re[ne])})}u&&ii(u,e,"c");function be(re,ne){J(ne)?ne.forEach(Ge=>re(Ge.bind(n))):ne&&re(ne.bind(n))}if(be(Bu,d),be(dr,m),be(Wu,b),be(qu,P),be(fl,x),be(ml,F),be(Qu,G),be(Xu,L),be(Yu,U),be(zu,$),be(jn,_),be(Gu,z),J(ae))if(ae.length){const re=e.exposed||(e.exposed={});ae.forEach(ne=>{Object.defineProperty(re,ne,{get:()=>n[ne],set:Ge=>n[ne]=Ge,enumerable:!0})})}else e.exposed||(e.exposed={});I&&e.render===Dt&&(e.render=I),Re!=null&&(e.inheritAttrs=Re),ee&&(e.components=ee),we&&(e.directives=we),z&&dl(e)}function sd(e,t,n=Dt){J(e)&&(e=Wr(e));for(const s in e){const r=e[s];let o;ke(r)?"default"in r?o=mt(r.from||s,r.default,!0):o=mt(r.from||s):o=mt(r),Ke(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function ii(e,t,n){Ft(J(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function vl(e,t,n,s){let r=s.includes(".")?Ll(n,s):()=>n[s];if(Ne(e)){const o=t[e];te(o)&&qt(r,o)}else if(te(e))qt(r,e.bind(n));else if(ke(e))if(J(e))e.forEach(o=>vl(o,t,n,s));else{const o=te(e.handler)?e.handler.bind(n):t[e.handler];te(o)&&qt(r,o,e)}}function yl(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,a=o.get(t);let l;return a?l=a:!r.length&&!n&&!s?l=t:(l={},r.length&&r.forEach(c=>Hs(l,c,i,!0)),Hs(l,t,i)),ke(t)&&o.set(t,l),l}function Hs(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Hs(e,o,n,!0),r&&r.forEach(i=>
vendor: 4,927 bytes, line 2
2Hs(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const a=rd[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const rd={data:ai,props:li,emits:li,methods:Qn,computed:Qn,beforeCreate:Xe,created:Xe,beforeMount:Xe,mounted:Xe,beforeUpdate:Xe,updated:Xe,beforeDestroy:Xe,beforeUnmount:Xe,destroyed:Xe,unmounted:Xe,activated:Xe,deactivated:Xe,errorCaptured:Xe,serverPrefetch:Xe,components:Qn,directives:Qn,watch:id,provide:ai,inject:od};function ai(e,t){return t?e?function(){return ze(te(e)?e.call(this,this):e,te(t)?t.call(this,this):t)}:t:e}function od(e,t){return Qn(Wr(e),Wr(t))}function Wr(e){if(J(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Xe(e,t){return e?[...new Set([].concat(e,t))]:t}function Qn(e,t){return e?ze(Object.create(null),e,t):t}function li(e,t){return e?J(e)&&J(t)?[...new Set([...e,...t])]:ze(Object.create(null),oi(e),oi(t??{})):t}function id(e,t){if(!e)return t;if(!t)return e;const n=ze(Object.create(null),e);for(const s in t)n[s]=Xe(e[s],t[s]);return n}function kl(){return{app:null,config:{isNativeTag:Oa,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 ad=0;function ld(e,t){return function(s,r=null){te(s)||(s=ze({},s)),r!=null&&!ke(r)&&(r=null);const o=kl(),i=new WeakSet,a=[];let l=!1;const c=o.app={_uid:ad++,_component:s,_props:r,_container:null,_context:o,_instance:null,version:Wd,get config(){return o.config},set config(u){},use(u,...d){return i.has(u)||(u&&te(u.install)?(i.add(u),u.install(c,...d)):te(u)&&(i.add(u),u(c,...d))),c},mixin(u){return o.mixins.includes(u)||o.mixins.push(u),c},component(u,d){return d?(o.components[u]=d,c):o.components[u]},directive(u,d){return d?(o.directives[u]=d,c):o.directives[u]},mount(u,d,m){if(!l){const b=c._ceVNode||oe(s,r);return b.appContext=o,m===!0?m="svg":m===!1&&(m=void 0),e(b,u,m),l=!0,c._container=u,u.__vue_app__=c,fr(b.component)}},onUnmount(u){a.push(u)},unmount(){l&&(Ft(a,c._instance,16),e(null,c._container),delete c._container.__vue_app__)},provide(u,d){return o.provides[u]=d,c},runWithContext(u){const d=Dn;Dn=c;try{return u()}finally{Dn=d}}};return c}}let Dn=null;function Is(e,t){if(qe){let n=qe.provides;const s=qe.parent&&qe.parent.provides;s===n&&(n=qe.provides=Object.create(s)),n[e]=t}}function mt(e,t,n=!1){const s=Ao();if(s||Dn){let r=Dn?Dn._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&te(t)?t.call(s&&s.proxy):t}}const _l={},wl=()=>Object.create(_l),Tl=e=>Object.getPrototypeOf(e)===_l;function cd(e,t,n,s=!1){const r={},o=wl();e.propsDefaults=Object.create(null),Sl(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:nl(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function ud(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,a=pe(r),[l]=e.propsOptions;let c=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let d=0;d<u.length;d++){let m=u[d];if(pr(e.emitsOptions,m))continue;const b=t[m];if(l)if(fe(o,m))b!==o[m]&&(o[m]=b,c=!0);else{const P=gt(m);r[P]=qr(l,a,P,b,e,!1)}else b!==o[m]&&(o[m]=b,c=!0)}}}else{Sl(e,t,r,o)&&(c=!0);let u;for(const d in a)(!t||!fe(t,d)&&((u=Tn(d))===d||!fe(t,u)))&&(l?n&&(n[d]!==void 0||n[u]!==void 0)&&(r[d]=qr(l,a,d,void 0,e,!0)):delete r[d]);if(o!==a)for(const d in o)(!t||!fe(t,d))&&(delete o[d],c=!0)}c&&Ht(e.attrs,"set","")}function Sl(e,t,n,s){const[r,o]=e.propsOptions;let i=!1,a;if(t)for(let l in t){if(Zn(l))continue;const c=t[l];let u;r&&fe(r,u=gt(l))?!o||!o.includes(u)?n[u]=c:(a||(a={}))[u]=c:pr(e.emitsOptions,l)||(!(l in s)||c!==s[l])&&(s[l]=c,i=!0)}if(o){const l=pe(n),c=a||ye;for(let u=0;u<o.length;u++){const d=o[u];n[d]=qr(r,l,d,c[d],e,!fe(c,d))}}return i}function qr(e,t,n,s,r,o){const i=e[n];if(i!=null){const a=fe(i,"default");if(a&&s===void 0){const l=i.default;if(i.type!==Function&&!i.skipFactory&&te(l)){const{propsDefaults:c}=r;if(n in c)s=c[n];else{const u=ks(r);s=c[n]=l.call(null,t),u()}}else s=l;r.ce&&r.ce._setProp(n,s)}i[0]&&(o&&!a?s=!1:i[1]&&(s===""||s===Tn(n))&&(s=!0))}return s}const dd=new WeakMap;function Pl(e,t,n=!1){const s=n?dd:t.propsCache,r=s.get(e);if(r)return r;const o=e.props,i={},a=[];let l=!1;if(!te(e)){const u=d=>{l=!0;const[m,b]=Pl(d,t,!0);ze(i,m),b&&a.push(...b)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!l)return ke(e)&&s.set(e,An),An;if(J(o))for(let u=0;u<o.length;u++){const d=gt(o[u]);ci(d)&&(i[d]=ye)}else if(o)for(const u in o){const d=gt(u);if(ci(d)){const m=o[u],b=i[d]=J(m)||te(m)?{type:m}:ze({},m),P=b.type;let x=!1,F=!0;if(J(P))for(let A=0;A<P.length;++A){const $=P[A],k=te($)&&$.name;if(k==="Boolean"){x=!0;break}else k==="String"&&(F=!1)}
vendor: 4,369 bytes, line 2
2else x=te(P)&&P.name==="Boolean";b[0]=x,b[1]=F,(x||fe(b,"default"))&&a.push(d)}}const c=[i,a];return ke(e)&&s.set(e,c),c}function ci(e){return e[0]!=="$"&&!Zn(e)}const Co=e=>e==="_"||e==="_ctx"||e==="$stable",Eo=e=>J(e)?e.map(Lt):[Lt(e)],pd=(e,t,n)=>{if(t._n)return t;const s=$e((...r)=>Eo(t(...r)),n);return s._c=!1,s},xl=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Co(r))continue;const o=e[r];if(te(o))t[r]=pd(r,o,s);else if(o!=null){const i=Eo(o);t[r]=()=>i}}},Cl=(e,t)=>{const n=Eo(t);e.slots.default=()=>n},El=(e,t,n)=>{for(const s in t)(n||!Co(s))&&(e[s]=t[s])},fd=(e,t,n)=>{const s=e.slots=wl();if(e.vnode.shapeFlag&32){const r=t._;r?(El(s,t,n),n&&Fa(s,"_",r,!0)):xl(t,s)}else t&&Cl(e,t)},md=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ye;if(s.shapeFlag&32){const a=t._;a?n&&a===1?o=!1:El(r,t,n):(o=!t.$stable,xl(t,r)),i=t}else t&&(Cl(e,t),i={default:1});if(o)for(const a in r)!Co(a)&&i[a]==null&&delete r[a]},lt=Rd;function hd(e){return gd(e)}function gd(e,t){const n=ir();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:a,createComment:l,setText:c,setElementText:u,parentNode:d,nextSibling:m,setScopeId:b=Dt,insertStaticContent:P}=e,x=(h,g,w,M=null,V=null,O=null,W=void 0,B=null,p=!!g.dynamicChildren)=>{if(h===g)return;h&&!Wn(h,g)&&(M=y(h),Se(h,V,O,!0),h=null),g.patchFlag===-2&&(p=!1,g.dynamicChildren=null);const{type:f,ref:S,shapeFlag:E}=g;switch(f){case ys:F(h,g,w,M);break;case on:A(h,g,w,M);break;case Ls:h==null&&$(g,w,M,W);break;case et:ee(h,g,w,M,V,O,W,B,p);break;default:E&1?I(h,g,w,M,V,O,W,B,p):E&6?we(h,g,w,M,V,O,W,B,p):(E&64||E&128)&&f.process(h,g,w,M,V,O,W,B,p,N)}S!=null&&V?ns(S,h&&h.ref,O,g||h,!g):S==null&&h&&h.ref!=null&&ns(h.ref,null,O,h,!0)},F=(h,g,w,M)=>{if(h==null)s(g.el=a(g.children),w,M);else{const V=g.el=h.el;g.children!==h.children&&c(V,g.children)}},A=(h,g,w,M)=>{h==null?s(g.el=l(g.children||""),w,M):g.el=h.el},$=(h,g,w,M)=>{[h.el,h.anchor]=P(h.children,g,w,M,h.el,h.anchor)},k=({el:h,anchor:g},w,M)=>{let V;for(;h&&h!==g;)V=m(h),s(h,w,M),h=V;s(g,w,M)},_=({el:h,anchor:g})=>{let w;for(;h&&h!==g;)w=m(h),r(h),h=w;r(g)},I=(h,g,w,M,V,O,W,B,p)=>{if(g.type==="svg"?W="svg":g.type==="math"&&(W="mathml"),h==null)L(g,w,M,V,O,W,B,p);else{const f=h.el&&h.el._isVueCE?h.el:null;try{f&&f._beginPatch(),z(h,g,V,O,W,B,p)}finally{f&&f._endPatch()}}},L=(h,g,w,M,V,O,W,B)=>{let p,f;const{props:S,shapeFlag:E,transition:q,dirs:K}=h;if(p=h.el=i(h.type,O,S&&S.is,S),E&8?u(p,h.children):E&16&&G(h.children,p,null,M,V,Er(h,O),W,B),K&&pn(h,null,M,"created"),U(p,h,h.scopeId,W,M),S){for(const R in S)R!=="value"&&!Zn(R)&&o(p,R,null,S[R],O,M);"value"in S&&o(p,"value",null,S.value,O),(f=S.onVnodeBeforeMount)&&Et(f,M,h)}K&&pn(h,null,M,"beforeMount");const T=bd(V,q);T&&q.beforeEnter(p),s(p,g,w),((f=S&&S.onVnodeMounted)||T||K)&&lt(()=>{f&&Et(f,M,h),T&&q.enter(p),K&&pn(h,null,M,"mounted")},V)},U=(h,g,w,M,V)=>{if(w&&b(h,w),M)for(let O=0;O<M.length;O++)b(h,M[O]);if(V){let O=V.subTree;if(g===O||Dl(O.type)&&(O.ssContent===g||O.ssFallback===g)){const W=V.vnode;U(h,W,W.scopeId,W.slotScopeIds,V.parent)}}},G=(h,g,w,M,V,O,W,B,p=0)=>{for(let f=p;f<h.length;f++){const S=h[f]=B?tn(h[f]):Lt(h[f]);x(null,S,g,w,M,V,O,W,B)}},z=(h,g,w,M,V,O,W)=>{const B=g.el=h.el;let{patchFlag:p,dynamicChildren:f,dirs:S}=g;p|=h.patchFlag&16;const E=h.props||ye,q=g.props||ye;let K;if(w&&fn(w,!1),(K=q.onVnodeBeforeUpdate)&&Et(K,w,g,h),S&&pn(g,h,w,"beforeUpdate"),w&&fn(w,!0),(E.innerHTML&&q.innerHTML==null||E.textContent&&q.textContent==null)&&u(B,""),f?ae(h.dynamicChildren,f,B,w,M,Er(g,V),O):W||ne(h,g,B,null,w,M,Er(g,V),O,!1),p>0){if(p&16)Re(B,E,q,w,V);else if(p&2&&E.class!==q.class&&o(B,"class",null,q.class,V),p&4&&o(B,"style",E.style,q.style,V),p&8){const T=g.dynamicProps;for(let R=0;R<T.length;R++){const Q=T[R],se=E[Q],Pe=q[Q];(Pe!==se||Q==="value")&&o(B,Q,se,Pe,V,w)}}p&1&&h.children!==g.children&&u(B,g.children)}else!W&&f==null&&Re(B,E,q,w,V);((K=q.onVnodeUpdated)||S)&&lt(()=>{K&&Et(K,w,g,h),S&&pn(g,h,w,"updated")},M)},ae=(h,g,w,M,V,O,W)=>{for(let B=0;B<g.length;B++){const p=h[B],f=g[B],S=p.el&&(p.type===et||!Wn(p,f)||p.shapeFlag&198)?d(p.el):w;x(p,f,S,null,M,V,O,W,!0)}},Re=(h,g,w,M,V)=>{if(g!==w){if(g!==ye)for(const O in g)!Zn(O)&&!(O in w)&&o(h,O,g[O],null,V,M);for(const O in w){if(Zn(O))continue;const W=w[O],B=g[O];W!==B&&O!=="value"&&o(h,O,B,W,V,M)}"value"in w&&o(h,"value",g.value,w.value,V)}},ee=(h,g,w,M,V,O,W,B,p)=>
vendor: 14,084 bytes, line 2
2{const f=g.el=h?h.el:a(""),S=g.anchor=h?h.anchor:a("");let{patchFlag:E,dynamicChildren:q,slotScopeIds:K}=g;K&&(B=B?B.concat(K):K),h==null?(s(f,w,M),s(S,w,M),G(g.children||[],w,S,V,O,W,B,p)):E>0&&E&64&&q&&h.dynamicChildren?(ae(h.dynamicChildren,q,w,V,O,W,B),(g.key!=null||V&&g===V.subTree)&&Rl(h,g,!0)):ne(h,g,w,S,V,O,W,B,p)},we=(h,g,w,M,V,O,W,B,p)=>{g.slotScopeIds=B,h==null?g.shapeFlag&512?V.ctx.activate(g,w,M,W,p):vt(g,w,M,V,O,W,p):He(h,g,p)},vt=(h,g,w,M,V,O,W)=>{const B=h.component=Vd(h,M,V);if(pl(h)&&(B.ctx.renderer=N),Ud(B,!1,W),B.asyncDep){if(V&&V.registerDep(B,be,W),!h.el){const p=B.subTree=oe(on);A(null,p,g,w),h.placeholder=p.el}}else be(B,h,g,w,V,O,W)},He=(h,g,w)=>{const M=g.component=h.component;if(Cd(h,g,w))if(M.asyncDep&&!M.asyncResolved){re(M,g,w);return}else M.next=g,M.update();else g.el=h.el,M.vnode=g},be=(h,g,w,M,V,O,W)=>{const B=()=>{if(h.isMounted){let{next:E,bu:q,u:K,parent:T,vnode:R}=h;{const Ue=Al(h);if(Ue){E&&(E.el=R.el,re(h,E,W)),Ue.asyncDep.then(()=>{h.isUnmounted||B()});return}}let Q=E,se;fn(h,!1),E?(E.el=R.el,re(h,E,W)):E=R,q&&As(q),(se=E.props&&E.props.onVnodeBeforeUpdate)&&Et(se,T,E,R),fn(h,!0);const Pe=di(h),Ye=h.subTree;h.subTree=Pe,x(Ye,Pe,d(Ye.el),y(Ye),h,V,O),E.el=Pe.el,Q===null&&Ed(h,Pe.el),K&&lt(K,V),(se=E.props&&E.props.onVnodeUpdated)&&lt(()=>Et(se,T,E,R),V)}else{let E;const{el:q,props:K}=g,{bm:T,m:R,parent:Q,root:se,type:Pe}=h,Ye=ss(g);fn(h,!1),T&&As(T),!Ye&&(E=K&&K.onVnodeBeforeMount)&&Et(E,Q,g),fn(h,!0);{se.ce&&se.ce._def.shadowRoot!==!1&&se.ce._injectChildStyle(Pe);const Ue=h.subTree=di(h);x(null,Ue,w,M,h,V,O),g.el=Ue.el}if(R&&lt(R,V),!Ye&&(E=K&&K.onVnodeMounted)){const Ue=g;lt(()=>Et(E,Q,Ue),V)}(g.shapeFlag&256||Q&&ss(Q.vnode)&&Q.vnode.shapeFlag&256)&&h.a&&lt(h.a,V),h.isMounted=!0,g=w=M=null}};h.scope.on();const p=h.effect=new Ka(B);h.scope.off();const f=h.update=p.run.bind(p),S=h.job=p.runIfDirty.bind(p);S.i=h,S.id=h.uid,p.scheduler=()=>Po(S),fn(h,!0),f()},re=(h,g,w)=>{g.component=h;const M=h.vnode.props;h.vnode=g,h.next=null,ud(h,g.props,M,w),md(h,g.children,w),Gt(),ni(h),Yt()},ne=(h,g,w,M,V,O,W,B,p=!1)=>{const f=h&&h.children,S=h?h.shapeFlag:0,E=g.children,{patchFlag:q,shapeFlag:K}=g;if(q>0){if(q&128){ue(f,E,w,M,V,O,W,B,p);return}else if(q&256){Ge(f,E,w,M,V,O,W,B,p);return}}K&8?(S&16&&Ie(f,V,O),E!==f&&u(w,E)):S&16?K&16?ue(f,E,w,M,V,O,W,B,p):Ie(f,V,O,!0):(S&8&&u(w,""),K&16&&G(E,w,M,V,O,W,B,p))},Ge=(h,g,w,M,V,O,W,B,p)=>{h=h||An,g=g||An;const f=h.length,S=g.length,E=Math.min(f,S);let q;for(q=0;q<E;q++){const K=g[q]=p?tn(g[q]):Lt(g[q]);x(h[q],K,w,null,V,O,W,B,p)}f>S?Ie(h,V,O,!0,!1,E):G(g,w,M,V,O,W,B,p,E)},ue=(h,g,w,M,V,O,W,B,p)=>{let f=0;const S=g.length;let E=h.length-1,q=S-1;for(;f<=E&&f<=q;){const K=h[f],T=g[f]=p?tn(g[f]):Lt(g[f]);if(Wn(K,T))x(K,T,w,null,V,O,W,B,p);else break;f++}for(;f<=E&&f<=q;){const K=h[E],T=g[q]=p?tn(g[q]):Lt(g[q]);if(Wn(K,T))x(K,T,w,null,V,O,W,B,p);else break;E--,q--}if(f>E){if(f<=q){const K=q+1,T=K<S?g[K].el:M;for(;f<=q;)x(null,g[f]=p?tn(g[f]):Lt(g[f]),w,T,V,O,W,B,p),f++}}else if(f>q)for(;f<=E;)Se(h[f],V,O,!0),f++;else{const K=f,T=f,R=new Map;for(f=T;f<=q;f++){const at=g[f]=p?tn(g[f]):Lt(g[f]);at.key!=null&&R.set(at.key,f)}let Q,se=0;const Pe=q-T+1;let Ye=!1,Ue=0;const dn=new Array(Pe);for(f=0;f<Pe;f++)dn[f]=0;for(f=K;f<=E;f++){const at=h[f];if(se>=Pe){Se(at,V,O,!0);continue}let Ct;if(at.key!=null)Ct=R.get(at.key);else for(Q=T;Q<=q;Q++)if(dn[Q-T]===0&&Wn(at,g[Q])){Ct=Q;break}Ct===void 0?Se(at,V,O,!0):(dn[Ct-T]=f+1,Ct>=Ue?Ue=Ct:Ye=!0,x(at,g[Ct],w,null,V,O,W,B,p),se++)}const _r=Ye?vd(dn):An;for(Q=_r.length-1,f=Pe-1;f>=0;f--){const at=T+f,Ct=g[at],Xo=g[at+1],Qo=at+1<S?Xo.el||Xo.placeholder:M;dn[f]===0?x(null,Ct,w,Qo,V,O,W,B,p):Ye&&(Q<0||f!==_r[Q]?xe(Ct,w,Qo,2):Q--)}}},xe=(h,g,w,M,V=null)=>{const{el:O,type:W,transition:B,children:p,shapeFlag:f}=h;if(f&6){xe(h.component.subTree,g,w,M);return}if(f&128){h.suspense.move(g,w,M);return}if(f&64){W.move(h,g,w,N);return}if(W===et){s(O,g,w);for(let E=0;E<p.length;E++)xe(p[E],g,w,M);s(h.anchor,g,w);return}if(W===Ls){k(h,g,w);return}if(M!==2&&f&1&&B)if(M===0)B.beforeEnter(O),s(O,g,w),lt(()=>B.enter(O),V);else{const{leave:E,delayLeave:q,afterLeave:K}=B,T=()=>{h.ctx.isUnmounted?r(O):s(O,g,w)},R=()=>{O._isLeaving&&O[Ku](!0),E(O,()=>{T(),K&&K()})};q?q(O,T,R):R()}else s(O,g,w)},Se=(h,g,w,M=!1,V=!1)=>{const{type:O,props:W,ref:B,children:p,dynamicChildren:f,shapeFlag:S,patchFlag:E,dirs:q,cacheIndex:K}=h;if(E===-2&&(V=!1),B!=null&&(Gt(),ns(B,null,w,h,!0),Yt()),K!=null&&(g.renderCache[K]=void 0),S&256){g.ctx.deactivate(h);return}const T=S&1&&q,R=!ss(h);let Q;if(R&&(Q=W&&W.onVnodeBeforeUnmount)&&Et(Q,g,h),S&6)it(h.component,w,M);else{if(S&128){h.suspense.unmount(w,M);return}T&&pn(h,null,g,"beforeUnmount"),S&64?h.type.remove(h,g,w,N,M):f&&!f.hasOnce&&(O!==et||E>0&&E&64)?Ie(f,g,w,!1,!0):(O===et&&E&384||!V&&S&16)&&Ie(p,g,w),M&&dt(h)}(R&&(Q=W&&W.onVnodeUnmounted)||T)&&lt(()=>{Q&&Et(Q,g,h),T&&pn(h,null,g,"unmounted")},w)},dt=h=>{const{type:g,el:w,anchor:M,transition:V}=h;if(g===et){ot(w,M);return}if(g===Ls){_(h);return}const O=()=>{r(w),V&&!V.persisted&&V.afterLeave&&V.afterLeave()};if(h.shapeFlag&1&&V&&!V.persisted){const{leave:W,delayLeave:B}=V,p=()=>W(w,O);B?B(h.el,O,p):p()}else O()},ot=(h,g)=>{let w;for(;h!==g;)w=m(h),r(h),h=w;r(g)},it=(h,g,w)=>{const{bum:M,scope:V,job:O,subTree:W,um:B,m:p,a:f}=h;ui(p),ui(f),M&&As(M),V.stop(),O&&(O.flags|=8,Se(W,h,g,w)),B&&lt(B,g),lt(()=>{h.isUnmounted=!0},g)},Ie=(h,g,w,M=!1,V=!1,O=0)=>{for(let W=O;W<h.length;W++)Se(h[W],g,w,M,V)},y=h=>{if(h.shapeFlag&6)return y(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const g=m(h.anchor||h.el),w=g&&g[$u];return w?m(w):g};let C=!1;const D=(h,g,w)=>{h==null?g._vnode&&Se(g._vnode,null,null,!0):x(g._vnode||null,h,g,null,null,null,w),g._vnode=h,C||(C=!0,ni(),ll(),C=!1)},N={p:x,um:Se,m:xe,r:dt,mt:vt,mc:G,pc:ne,pbc:ae,n:y,o:e};return{render:D,hydrate:void 0,createApp:ld(D)}}function Er({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 fn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function bd(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Rl(e,t,n=!1){const s=e.children,r=t.children;if(J(s)&&J(r))for(let o=0;o<s.length;o++){const i=s[o];let a=r[o];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=r[o]=tn(r[o]),a.el=i.el),!n&&a.patchFlag!==-2&&Rl(i,a)),a.type===ys&&a.patchFlag!==-1&&(a.el=i.el),a.type===on&&!a.el&&(a.el=i.el)}}function vd(e){const t=e.slice(),n=[0];let s,r,o,i,a;const l=e.length;for(s=0;s<l;s++){const c=e[s];if(c!==0){if(r=n[n.length-1],e[r]<c){t[s]=r,n.push(s);continue}for(o=0,i=n.length-1;o<i;)a=o+i>>1,e[n[a]]<c?o=a+1:i=a;c<e[n[o]]&&(o>0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Al(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Al(t)}function ui(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const yd=Symbol.for("v-scx"),kd=()=>mt(yd);function qt(e,t,n){return Il(e,t,n)}function Il(e,t,n=ye){const{immediate:s,deep:r,flush:o,once:i}=n,a=ze({},n),l=t&&s||!t&&o!=="post";let c;if(fs){if(o==="sync"){const b=kd();c=b.__watcherHandles||(b.__watcherHandles=[])}else if(!l){const b=()=>{};return b.stop=Dt,b.resume=Dt,b.pause=Dt,b}}const u=qe;a.call=(b,P,x)=>Ft(b,u,P,x);let d=!1;o==="post"?a.scheduler=b=>{lt(b,u&&u.suspense)}:o!=="sync"&&(d=!0,a.scheduler=(b,P)=>{P?b():Po(b)}),a.augmentJob=b=>{t&&(b.flags|=4),d&&(b.flags|=2,u&&(b.id=u.uid,b.i=u))};const m=Mu(e,t,a);return fs&&(c?c.push(m):l&&m()),m}function _d(e,t,n){const s=this.proxy,r=Ne(e)?e.includes(".")?Ll(s,e):()=>s[e]:e.bind(s,s);let o;te(t)?o=t:(o=t.handler,n=t);const i=ks(this),a=Il(r,o.bind(s),n);return i(),a}function Ll(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}const wd=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${gt(t)}Modifiers`]||e[`${Tn(t)}Modifiers`];function Td(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ye;let r=n;const o=t.startsWith("update:"),i=o&&wd(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>Ne(u)?u.trim():u)),i.number&&(r=n.map(or)));let a,l=s[a=wr(t)]||s[a=wr(gt(t))];!l&&o&&(l=s[a=wr(Tn(t))]),l&&Ft(l,e,6,r);const c=s[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Ft(c,e,6,r)}}const Sd=new WeakMap;function Ol(e,t,n=!1){const s=n?Sd:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},a=!1;if(!te(e)){const l=c=>{const u=Ol(c,t,!0);u&&(a=!0,ze(i,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!a?(ke(e)&&s.set(e,null),null):(J(o)?o.forEach(l=>i[l]=null):ze(i,o),ke(e)&&s.set(e,i),i)}function pr(e,t){return!e||!nr(t)?!1:(t=t.slice(2).replace(/Once$/,""),fe(e,t[0].toLowerCase()+t.slice(1))||fe(e,Tn(t))||fe(e,t))}function di(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:a,emit:l,render:c,renderCache:u,props:d,data:m,setupState:b,ctx:P,inheritAttrs:x}=e,F=js(e);let A,$;try{if(n.shapeFlag&4){const _=r||s,I=_;A=Lt(c.call(I,_,u,d,b,m,P)),$=a}else{const _=t;A=Lt(_.length>1?_(d,{attrs:a,slots:i,emit:l}):_(d,null)),$=t.props?a:Pd(a)}}catch(_){os.length=0,cr(_,e,1),A=oe(on)}let k=A;if($&&x!==!1){const _=Object.keys($),{shapeFlag:I}=k;_.length&&I&7&&(o&&_.some(po)&&($=xd($,o)),k=Nn(k,$,!1,!0))}return n.dirs&&(k=Nn(k,null,!1,!0),k.dirs=k.dirs?k.dirs.concat(n.dirs):n.dirs),n.transition&&xo(k,n.transition),A=k,js(F),A}const Pd=e=>{let t;for(const n in e)(n==="class"||n==="style"||nr(n))&&((t||(t={}))[n]=e[n]);return t},xd=(e,t)=>{const n={};for(const s in e)(!po(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Cd(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:a,patchFlag:l}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return s?pi(s,i,c):!!i;if(l&8){const u=t.dynamicProps;for(let d=0;d<u.length;d++){const m=u[d];if(i[m]!==s[m]&&!pr(c,m))return!0}}}else return(r||a)&&(!a||!a.$stable)?!0:s===i?!1:s?i?pi(s,i,c):!0:!!i;return!1}function pi(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const o=s[r];if(t[o]!==e[o]&&!pr(n,o))return!0}return!1}function Ed({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const Dl=e=>e.__isSuspense;function Rd(e,t){t&&t.pendingBranch?J(e)?t.effects.push(...e):t.effects.push(e):Uu(e)}const et=Symbol.for("v-fgt"),ys=Symbol.for("v-txt"),on=Symbol.for("v-cmt"),Ls=Symbol.for("v-stc"),os=[];let ut=null;function Ae(e=!1){os.push(ut=e?null:[])}function Ad(){os.pop(),ut=os[os.length-1]||null}let ps=1;function Bs(e,t=!1){ps+=e,e<0&&ut&&t&&(ut.hasOnce=!0)}function Nl(e){return e.dynamicChildren=ps>0?ut||An:null,Ad(),ps>0&&ut&&ut.push(e),e}function Le(e,t,n,s,r,o){return Nl(v(e,t,n,s,r,o,!0))}function Id(e,t,n,s,r){return Nl(oe(e,t,n,s,r,!0))}function Ws(e){return e?e.__v_isVNode===!0:!1}function Wn(e,t){return e.type===t.type&&e.key===t.key}const Ml=({key:e})=>e??null,Os=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ne(e)||Ke(e)||te(e)?{i:ct,r:e,k:t,f:!!n}:e:null);function v(e,t=null,n=null,s=0,r=null,o=e===et?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ml(t),ref:t&&Os(t),scopeId:ul,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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ct};return a?(Ro(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=Ne(n)?8:16),ps>0&&!i&&ut&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&ut.push(l),l}const oe=Ld;function Ld(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Zu)&&(e=on),Ws(e)){const a=Nn(e,t,!0);return n&&Ro(a,n),ps>0&&!o&&ut&&(a.shapeFlag&6?ut[ut.indexOf(e)]=a:ut.push(a)),a.patchFlag=-2,a}if(Bd(e)&&(e=e.__vccOpts),t){t=Od(t);let{class:a,style:l}=t;a&&!Ne(a)&&(t.class=Be(a)),ke(l)&&(To(l)&&!J(l)&&(l=ze({},l)),t.style=ho(l))}const i=Ne(e)?1:Dl(e)?128:ju(e)?64:ke(e)?4:te(e)?2:0;return v(e,t,n,s,r,i,o,!0)}function Od(e){return e?To(e)||Tl(e)?ze({},e):e:null}function Nn(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:a,transition:l}=e,c=t?Nd(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Ml(c),ref:t&&t.ref?n&&o?J(o)?o.concat(Os(t)):[o,Os(t)]:Os(t):o,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!==et?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&&Nn(e.ssContent),ssFallback:e.ssFallback&&Nn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&xo(u,l.clone(u)),u}function Ve(e=" ",t=0){return oe(ys,null,e,t)}function Dd(e,t){const n=oe(Ls,null,e);return n.staticCount=t,n}function vn(e="",t=!1){return t?(Ae(),Id(on,null,e)):oe(on,null,e)}function Lt(e){return e==null||typeof e=="boolean"?oe(on):J(e)?oe(et,null,e.slice()):Ws(e)?tn(e):oe(ys,null,String(e))}function tn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Nn(e)}function Ro(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(J(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ro(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Tl(t)?t._ctx=ct:r===3&&ct&&(ct.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else te(t)?(t={default:t,_ctx:ct},n=32):(t=String(t),s&64?(n=16,t=[Ve(t)]):n=8);e.children=t,e.shapeFlag|=n}function Nd(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=Be([t.class,s.class]));else if(r==="style")t.style=ho([t.style,s.style]);else if(nr(r)){const o=t[r],i=s[r];
vendor: 5,293 bytes, line 2
2i&&o!==i&&!(J(o)&&o.includes(i))&&(t[r]=o?[].concat(o,i):i)}else r!==""&&(t[r]=s[r])}return t}function Et(e,t,n,s=null){Ft(e,t,7,[n,s])}const Md=kl();let Fd=0;function Vd(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||Md,o={uid:Fd++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new ja(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Pl(s,r),emitsOptions:Ol(s,r),emit:null,emitted:null,propsDefaults:ye,inheritAttrs:s.inheritAttrs,ctx:ye,data:ye,props:ye,attrs:ye,slots:ye,refs:ye,setupState:ye,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 o.ctx={_:o},o.root=t?t.root:o,o.emit=Td.bind(null,o),e.ce&&e.ce(o),o}let qe=null;const Ao=()=>qe||ct;let qs,zr;{const e=ir(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};qs=t("__VUE_INSTANCE_SETTERS__",n=>qe=n),zr=t("__VUE_SSR_SETTERS__",n=>fs=n)}const ks=e=>{const t=qe;return qs(e),e.scope.on(),()=>{e.scope.off(),qs(t)}},fi=()=>{qe&&qe.scope.off(),qs(null)};function Fl(e){return e.vnode.shapeFlag&4}let fs=!1;function Ud(e,t=!1,n=!1){t&&zr(t);const{props:s,children:r}=e.vnode,o=Fl(e);cd(e,s,o,t),fd(e,r,n||t);const i=o?$d(e,t):void 0;return t&&zr(!1),i}function $d(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,td);const{setup:s}=n;if(s){Gt();const r=e.setupContext=s.length>1?Kd(e):null,o=ks(e),i=vs(s,e,0,[e.props,r]),a=Da(i);if(Yt(),o(),(a||e.sp)&&!ss(e)&&dl(e),a){if(i.then(fi,fi),t)return i.then(l=>{mi(e,l)}).catch(l=>{cr(l,e,0)});e.asyncDep=i}else mi(e,i)}else Vl(e)}function mi(e,t,n){te(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ke(t)&&(e.setupState=ol(t)),Vl(e)}function Vl(e,t,n){const s=e.type;e.render||(e.render=s.render||Dt);{const r=ks(e);Gt();try{nd(e)}finally{Yt(),r()}}}const jd={get(e,t){return We(e,"get",""),e[t]}};function Kd(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,jd),slots:e.slots,emit:e.emit,expose:t}}function fr(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ol(Au(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in rs)return rs[n](e)},has(t,n){return n in t||n in rs}})):e.proxy}function Hd(e,t=!0){return te(e)?e.displayName||e.name:e.name||t&&e.__name}function Bd(e){return te(e)&&"__vccOpts"in e}const Oe=(e,t)=>Du(e,t,fs);function mr(e,t,n){try{Bs(-1);const s=arguments.length;return s===2?ke(t)&&!J(t)?Ws(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Ws(n)&&(n=[n]),oe(e,t,n))}finally{Bs(1)}}const Wd="3.5.24";let Gr;const hi=typeof window<"u"&&window.trustedTypes;if(hi)try{Gr=hi.createPolicy("vue",{createHTML:e=>e})}catch{}const Ul=Gr?e=>Gr.createHTML(e):e=>e,qd="http://www.w3.org/2000/svg",zd="http://www.w3.org/1998/Math/MathML",Kt=typeof document<"u"?document:null,gi=Kt&&Kt.createElement("template"),Gd={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Kt.createElementNS(qd,e):t==="mathml"?Kt.createElementNS(zd,e):n?Kt.createElement(e,{is:n}):Kt.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Kt.createTextNode(e),createComment:e=>Kt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Kt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{gi.innerHTML=Ul(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const a=gi.content;if(s==="svg"||s==="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]}},Yd=Symbol("_vtc");function Xd(e,t,n){const s=e[Yd];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const zs=Symbol("_vod"),$l=Symbol("_vsh"),Qd={name:"show",beforeMount(e,{value:t},{transition:n}){e[zs]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):qn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),qn(e,!0),s.enter(e)):s.leave(e,()=>{qn(e,!1)}):qn(e,t))},beforeUnmount(e,{value:t}){qn(e,t)}};function qn(e,t){e.style.display=t?e[zs]:"none",e[$l]=!t}const Jd=Symbol(""),Zd=/(?:^|;)\s*display\s*:/;function ep(e,t,n){const s=e.style,r=Ne(n);let o=!1;if(n&&!r){if(t)if(Ne(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&Ds(s,a,"")}else for(const i in t)n[i]==null&&Ds(s,i,"");for(const i in n)i==="display"&&(o=!0),Ds(s,i,n[i])}else if(r){if(t!==n){const i=s[Jd];i&&(n+=";
2"+i),s.cssText=n,o=Zd.test(n)}}else t&&e.removeAttribute("style");zs in e&&(e[zs]=o?s.display:"",e[$l]&&(s.display="none"))}const bi=/\s*!important$/;function Ds(e,t,n){if(J(n))n.forEach(s=>Ds(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=tp(e,t);bi.test(n)?e.setProperty(Tn(s),n.replace(bi,""),"important"):e[s]=n}}const vi=["Webkit","Moz","ms"],Rr={};function tp(e,t){const n=Rr[t];if(n)return n;let s=gt(t);if(s!=="filter"&&s in e)return Rr[t]=s;s=rr(s);for(let r=0;r<vi.length;r++){const o=vi[r]+s;if(o in e)return Rr[t]=o}return t}const yi="http://www.w3.org/1999/xlink";function ki(e,t,n,s,r,o=lu(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(yi,t.slice(6,t.length)):e.setAttributeNS(yi,t,n):n==null||o&&!Va(n)?e.removeAttribute(t):e.setAttribute(t,o?"":Mt(n)?String(n):n)}function _i(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Ul(n):n);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const a=o==="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=Va(n):n==null&&a==="string"?(n="",i=!0):a==="number"&&(n=0,i=!0)}try{e[t]=n}catch{}i&&e.removeAttribute(r||t)}function Wt(e,t,n,s){e.addEventListener(t,n,s)}function np(e,t,n,s){e.removeEventListener(t,n,s)}const wi=Symbol("_vei");function sp(e,t,n,s,r=null){const o=e[wi]||(e[wi]={}),i=o[t];if(s&&i)i.value=s;else{const[a,l]=rp(t);if(s){const c=o[t]=ap(s,r);Wt(e,a,c,l)}else i&&(np(e,a,i,l),o[t]=void 0)}}const Ti=/(?:Once|Passive|Capture)$/;function rp(e){let t;if(Ti.test(e)){t={};let s;for(;s=e.match(Ti);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Tn(e.slice(2)),t]}let Ar=0;const op=Promise.resolve(),ip=()=>Ar||(op.then(()=>Ar=0),Ar=Date.now());function ap(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ft(lp(s,n.value),t,5,[s])};return n.value=e,n.attached=ip(),n}function lp(e,t){if(J(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Si=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,cp=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Xd(e,s,i):t==="style"?ep(e,n,s):nr(t)?po(t)||sp(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):up(e,t,s,i))?(_i(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ki(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Ne(s))?_i(e,gt(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ki(e,t,s,i))};function up(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Si(t)&&te(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Si(t)&&Ne(n)?!1:t in e}const an=e=>{const t=e.props["onUpdate:modelValue"]||!1;return J(t)?n=>As(t,n):t};function dp(e){e.target.composing=!0}function Pi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const ht=Symbol("_assign");function xi(e,t,n){return t&&(e=e.trim()),n&&(e=or(e)),e}const is={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[ht]=an(r);const o=s||r.props&&r.props.type==="number";Wt(e,t?"change":"input",i=>{i.target.composing||e[ht](xi(e.value,n,o))}),(n||o)&&Wt(e,"change",()=>{e.value=xi(e.value,n,o)}),t||(Wt(e,"compositionstart",dp),Wt(e,"compositionend",Pi),Wt(e,"change",Pi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[ht]=an(i),e.composing)return;const a=(o||e.type==="number")&&!/^0\d/.test(e.value)?or(e.value):e.value,l=t??"";a!==l&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===l)||(e.value=l))}},jl={deep:!0,created(e,t,n){e[ht]=an(n),Wt(e,"change",()=>{const s=e._modelValue,r=Mn(e),o=e.checked,i=e[ht];if(J(s)){const a=go(s,r),l=a!==-1;if(o&&!l)i(s.concat(r));else if(!o&&l){const c=[...s];c.splice(a,1),i(c)}}else if($n(s)){const a=new Set(s);o?a.add(r):a.delete(r),i(a)}else i(Hl(e,o))})},mounted:Ci,beforeUpdate(e,t,n){e[ht]=an(n),Ci(e,t,n)}};function Ci(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(J(t))r=go(t,s.props.value)>-1;else if($n(t))r=t.has(s.props.value);else{if(t===n)return;r=_n(t,Hl(e,!0))}e.checked!==r&&(e.checked=r)}const Ns={created(e,{value:t},n){e.checked=_n(t,n.props.value),e[ht]=an(n),Wt(e,"change",()=>{e[ht](Mn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[ht]=an(s),t!==n&&(e.checked=_n(t,s.props.value))}},Kl={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=$n(t);Wt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?or(Mn(i)):Mn(i));e[ht](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,So(()=>{e._assigning=!1})}),e[ht]=an(s)},mounted(e,{value:t}){Ei(e,t)},beforeUpdate(e,t,n){e[ht]=an(n)},updated(e,{value:t}){e._assigning||Ei(e,t)}};function Ei(e,t){const n=e.multiple,s=J(t);if(!(n&&!s&&!$n(t))){for(let r=0,o=e.options.length;r<o;r++){const i=e.options[r],a=Mn(i);if(n)if(s){const l=typeof a;l==="string"||l==="number"?i.selected=t.some(c=>
vendor: 23,806 bytes, line 2
2String(c)===String(a)):i.selected=go(t,a)>-1}else i.selected=t.has(a);else if(_n(Mn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Mn(e){return"_value"in e?e._value:e.value}function Hl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const pp={created(e,t,n){Ps(e,t,n,null,"created")},mounted(e,t,n){Ps(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Ps(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Ps(e,t,n,s,"updated")}};function fp(e,t){switch(e){case"SELECT":return Kl;case"TEXTAREA":return is;default:switch(t){case"checkbox":return jl;case"radio":return Ns;default:return is}}}function Ps(e,t,n,s,r){const i=fp(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,s)}const mp=["ctrl","shift","alt","meta"],hp={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>mp.some(n=>e[`${n}Key`]&&!t.includes(n))},Ri=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...o)=>{for(let i=0;i<t.length;i++){const a=hp[t[i]];if(a&&a(r,t))return}return e(r,...o)}))},gp=ze({patchProp:cp},Gd);let Ai;function bp(){return Ai||(Ai=hd(gp))}const vp=((...e)=>{const t=bp().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=kp(s);if(!r)return;const o=t._component;!te(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,yp(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function yp(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function kp(e){return Ne(e)?document.querySelector(e):e}const Cn=typeof document<"u";function Bl(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function _p(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Bl(e.default)}const de=Object.assign;function Ir(e,t){const n={};for(const s in t){const r=t[s];n[s]=Pt(r)?r.map(e):e(r)}return n}const as=()=>{},Pt=Array.isArray;function Ii(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const Wl=/#/g,wp=/&/g,Tp=/\//g,Sp=/=/g,Pp=/\?/g,ql=/\+/g,xp=/%5B/g,Cp=/%5D/g,zl=/%5E/g,Ep=/%60/g,Gl=/%7B/g,Rp=/%7C/g,Yl=/%7D/g,Ap=/%20/g;function Io(e){return e==null?"":encodeURI(""+e).replace(Rp,"|").replace(xp,"[").replace(Cp,"]")}function Ip(e){return Io(e).replace(Gl,"{").replace(Yl,"}").replace(zl,"^")}function Yr(e){return Io(e).replace(ql,"%2B").replace(Ap,"+").replace(Wl,"%23").replace(wp,"%26").replace(Ep,"`").replace(Gl,"{").replace(Yl,"}").replace(zl,"^")}function Lp(e){return Yr(e).replace(Sp,"%3D")}function Op(e){return Io(e).replace(Wl,"%23").replace(Pp,"%3F")}function Dp(e){return Op(e).replace(Tp,"%2F")}function ms(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const Np=/\/$/,Mp=e=>e.replace(Np,"");function Lr(e,t,n="/"){let s,r={},o="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return l=a>=0&&l>a?-1:l,l>=0&&(s=t.slice(0,l),o=t.slice(l,a>0?a:t.length),r=e(o.slice(1))),a>=0&&(s=s||t.slice(0,a),i=t.slice(a,t.length)),s=$p(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:ms(i)}}function Fp(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Li(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Vp(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Fn(t.matched[s],n.matched[r])&&Xl(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 Xl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Up(e[n],t[n]))return!1;return!0}function Up(e,t){return Pt(e)?Oi(e,t):Pt(t)?Oi(t,e):e===t}function Oi(e,t){return Pt(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function $p(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,a;for(i=0;i<s.length;i++)if(a=s[i],a!==".")if(a==="..")o>1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const Jt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Xr=(function(e){return e.pop="pop",e.push="push",e})({}),Or=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function jp(e){if(!e)if(Cn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Mp(e)}const Kp=/^[^#]+#/;function Hp(e,t){return e.replace(Kp,"#")+t}function Bp(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const hr=()=>({left:window.scrollX,top:window.scrollY});function Wp(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Bp(r,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 Di(e,t){return(history.state?history.state.position-t:-1)+e}const Qr=new Map;function qp(e,t){Qr.set(e,t)}function zp(e){const t=Qr.get(e);return Qr.delete(e),t}function Gp(e){return typeof e=="string"||e&&typeof e=="object"}function Ql(e){return typeof e=="string"||typeof e=="symbol"}let Ce=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const Jl=Symbol("");Ce.MATCHER_NOT_FOUND+"",Ce.NAVIGATION_GUARD_REDIRECT+"",Ce.NAVIGATION_ABORTED+"",Ce.NAVIGATION_CANCELLED+"",Ce.NAVIGATION_DUPLICATED+"";function Vn(e,t){return de(new Error,{type:e,[Jl]:!0},t)}function Ut(e,t){return e instanceof Error&&Jl in e&&(t==null||!!(e.type&t))}const Yp=["params","query","hash"];function Xp(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of Yp)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function Qp(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;s<n.length;++s){const r=n[s].replace(ql," "),o=r.indexOf("="),i=ms(o<0?r:r.slice(0,o)),a=o<0?null:ms(r.slice(o+1));if(i in t){let l=t[i];Pt(l)||(l=t[i]=[l]),l.push(a)}else t[i]=a}return t}function Ni(e){let t="";for(let n in e){const s=e[n];if(n=Lp(n),s==null){s!==void 0&&(t+=(t.length?"&":"")+n);continue}(Pt(s)?s.map(r=>r&&Yr(r)):[s&&Yr(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function Jp(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Pt(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Zl=Symbol(""),Mi=Symbol(""),Lo=Symbol(""),Oo=Symbol(""),Jr=Symbol("");function zn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Zp(e,t,n){const s=()=>{e[t].delete(n)};jn(s),ml(s),fl(()=>{e[t].add(n)}),e[t].add(n)}function ef(e){const t=mt(Zl,{}).value;t&&Zp(t,"leaveGuards",e)}function nn(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((a,l)=>{const c=m=>{m===!1?l(Vn(Ce.NAVIGATION_ABORTED,{from:n,to:t})):m instanceof Error?l(m):Gp(m)?l(Vn(Ce.NAVIGATION_GUARD_REDIRECT,{from:t,to:m})):(i&&s.enterCallbacks[r]===i&&typeof m=="function"&&i.push(m),a())},u=o(()=>e.call(s&&s.instances[r],t,n,c));let d=Promise.resolve(u);e.length<3&&(d=d.then(c)),d.catch(m=>l(m))})}function Dr(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(Bl(l)){const c=(l.__vccOpts||l)[t];c&&o.push(nn(c,n,s,i,a,r))}else{let c=l();o.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const d=_p(u)?u.default:u;i.mods[a]=u,i.components[a]=d;const m=(d.__vccOpts||d)[t];return m&&nn(m,n,s,i,a,r)()}))}}return o}function tf(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;i<o;i++){const a=t.matched[i];a&&(e.matched.find(c=>Fn(c,a))?s.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(c=>Fn(c,l))||r.push(l))}return[n,s,r]}let nf=()=>location.protocol+"//"+location.host;function ec(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,a=r.slice(i);return a[0]!=="/"&&(a="/"+a),Li(a,"")}return Li(n,e)+s+r}function sf(e,t,n,s){let r=[],o=[],i=null;const a=({state:m})=>{const b=ec(e,location),P=n.value,x=t.value;let F=0;if(m){if(n.value=b,t.value=m,i&&i===P){i=null;return}F=x?m.position-x.position:0}else s(b);r.forEach(A=>{A(n.value,P,{delta:F,type:Xr.pop,direction:F?F>0?Or.forward:Or.back:Or.unknown})})};function l(){i=n.value}function c(m){r.push(m);const b=()=>{const P=r.indexOf(m);P>-1&&r.splice(P,1)};return o.push(b),b}function u(){if(document.visibilityState==="hidden"){const{history:m}=window;if(!m.state)return;m.replaceState(de({},m.state,{scroll:hr()}),"")}}function d(){for(const m of o)m();o=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:l,listen:c,destroy:d}}function Fi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?hr():null}}function rf(e){const{history:t,location:n}=window,s={value:ec(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,c,u){const d=e.indexOf("#"),m=d>-1?(n.host&&document.querySelector("base")?e:e.slice(d))+l:nf()+e+l;try{t[u?"replaceState":"pushState"](c,"",m),r.value=c}catch(b){console.error(b),n[u?"replace":"assign"](m)}}function i(l,c){o(l,de({},t.state,Fi(r.value.back,l,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=l}function a(l,c){const u=de({},r.value,t.state,{forward:l,scroll:hr()});o(u.current,u,!0),o(l,de({},Fi(s.value,l,null),{position:u.position+1},c),!1),s.value=l}return{location:s,state:r,push:a,replace:i}}function of(e){e=jp(e);const t=rf(e),n=sf(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=de({location:"",base:e,go:s,createHref:Hp.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let yn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Me=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(Me||{});const af={type:yn.Static,value:""},lf=/[a-zA-Z0-9_]/;function cf(e){if(!e)return[[]];if(e==="/")return[[af]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(b){throw new Error(`ERR (${n})/"${c}": ${b}`)}let n=Me.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let a=0,l,c="",u="";function d(){c&&(n===Me.Static?o.push({type:yn.Static,value:c}):n===Me.Param||n===Me.ParamRegExp||n===Me.ParamRegExpEnd?(o.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:yn.Param,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),c="")}function m(){c+=l}for(;a<e.length;){if(l=e[a++],l==="\\"&&n!==Me.ParamRegExp){s=n,n=Me.EscapeNext;continue}switch(n){case Me.Static:l==="/"?(c&&d(),i()):l===":"?(d(),n=Me.Param):m();break;case Me.EscapeNext:m(),n=s;break;case Me.Param:l==="("?n=Me.ParamRegExp:lf.test(l)?m():(d(),n=Me.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--);break;case Me.ParamRegExp:l===")"?u[u.length-1]=="\\"?u=u.slice(0,-1)+l:n=Me.ParamRegExpEnd:u+=l;break;case Me.ParamRegExpEnd:d(),n=Me.Static,l!=="*"&&l!=="?"&&l!=="+"&&a--,u="";break;default:t("Unknown state");break}}return n===Me.ParamRegExp&&t(`Unfinished custom RegExp for param "${c}"`),d(),i(),r}const Vi="[^/]+?",uf={sensitive:!1,strict:!1,start:!0,end:!0};var Je=(function(e){return e[e._multiplier=10]="_multiplier",e[e.Root=90]="Root",e[e.Segment=40]="Segment",e[e.SubSegment=30]="SubSegment",e[e.Static=40]="Static",e[e.Dynamic=20]="Dynamic",e[e.BonusCustomRegExp=10]="BonusCustomRegExp",e[e.BonusWildcard=-50]="BonusWildcard",e[e.BonusRepeatable=-20]="BonusRepeatable",e[e.BonusOptional=-8]="BonusOptional",e[e.BonusStrict=.7000000000000001]="BonusStrict",e[e.BonusCaseSensitive=.25]="BonusCaseSensitive",e})(Je||{});const df=/[.+*?^${}()[\]/\\]/g;function pf(e,t){const n=de({},uf,t),s=[];let r=n.start?"^":"";const o=[];for(const c of e){const u=c.length?[]:[Je.Root];n.strict&&!c.length&&(r+="/");for(let d=0;d<c.length;d++){const m=c[d];let b=Je.Segment+(n.sensitive?Je.BonusCaseSensitive:0);if(m.type===yn.Static)d||(r+="/"),r+=m.value.replace(df,"\\$&"),b+=Je.Static;else if(m.type===yn.Param){const{value:P,repeatable:x,optional:F,regexp:A}=m;o.push({name:P,repeatable:x,optional:F});const $=A||Vi;if($!==Vi){b+=Je.BonusCustomRegExp;try{`${$}`}catch(_){throw new Error(`Invalid custom RegExp for param "${P}" (${$}): `+_.message)}}let k=x?`((?:${$})(?:/(?:${$}))*)`:`(${$})`;d||(k=F&&c.length<2?`(?:/${k})`:"/"+k),F&&(k+="?"),r+=k,b+=Je.Dynamic,F&&(b+=Je.BonusOptional),x&&(b+=Je.BonusRepeatable),$===".*"&&(b+=Je.BonusWildcard)}u.push(b)}s.push(u)}if(n.strict&&n.end){const c=s.length-1;s[c][s[c].length-1]+=Je.BonusStrict}n.strict||(r+="/?"),n.end?r+="$":n.strict&&!r.endsWith("/")&&(r+="(?:/|$)");const i=new RegExp(r,n.sensitive?"":"i");function a(c){const u=c.match(i),d={};if(!u)return null;for(let m=1;m<u.length;m++){const b=u[m]||"",P=o[m-1];d[P.name]=b&&P.repeatable?b.split("/"):b}return d}function l(c){let u="",d=!1;for(const m of e){(!d||!u.endsWith("/"))&&(u+="/"),d=!1;for(const b of m)if(b.type===yn.Static)u+=b.value;else if(b.type===yn.Param){const{value:P,repeatable:x,optional:F}=b,A=P in c?c[P]:"";if(Pt(A)&&!x)throw new Error(`Provided param "${P}" is an array but it is not repeatable (* or + modifiers)`);const $=Pt(A)?A.join("/"):A;if(!$)if(F)m.length<2&&(u.endsWith("/")?u=u.slice(0,-1):d=!0);else throw new Error(`Missing required param "${P}"`);u+=$}}return u||"/"}return{re:i,score:s,keys:o,parse:a,stringify:l}}function ff(e,t){let n=0;for(;n<e.length&&n<t.length;){const s=t[n]-e[n];if(s)return s;n++}return e.length<t.length?e.length===1&&e[0]===Je.Static+Je.Segment?-1:1:e.length>t.length?t.length===1&&t[0]===Je.Static+Je.Segment?1:-1:0}function tc(e,t){let n=0;const s=e.score,r=t.score;for(;n<s.length&&n<r.length;){const o=ff(s[n],r[n]);if(o)return o;n++}if(Math.abs(r.length-s.length)===1){if(Ui(s))return 1;if(Ui(r))return-1}return r.length-s.length}function Ui(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const mf={strict:!1,end:!0,sensitive:!1};function hf(e,t,n){const s=pf(cf(e.path),n),r=de(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function gf(e,t){const n=[],s=new Map;t=Ii(mf,t);function r(d){return s.get(d)}function o(d,m,b){const P=!b,x=ji(d);x.aliasOf=b&&b.record;const F=Ii(t,d),A=[x];if("alias"in d){const _=typeof d.alias=="string"?[d.alias]:d.alias;for(const I of _)A.push(ji(de({},x,{components:b?b.record.components:x.components,path:I,aliasOf:b?b.record:x})))}let $,k;for(const _ of A){const{path:I}=_;if(m&&I[0]!=="/"){const L=m.record.path,U=L[L.length-1]==="/"?"":"/";_.path=m.record.path+(I&&U+I)}if($=hf(_,m,F),b?b.alias.push($):(k=k||$,k!==$&&k.alias.push($),P&&d.name&&!Ki($)&&i(d.name)),nc($)&&l($),x.children){const L=x.children;for(let U=0;U<L.length;U++)o(L[U],$,b&&b.children[U])}b=b||$}return k?()=>{i(k)}:as}function i(d){if(Ql(d)){const m=s.get(d);m&&(s.delete(d),n.splice(n.indexOf(m),1),m.children.forEach(i),m.alias.forEach(i))}else{const m=n.indexOf(d);m>-1&&(n.splice(m,1),d.record.name&&s.delete(d.record.name),d.children.forEach(i),d.alias.forEach(i))}}function a(){return n}function l(d){const m=yf(d,n);n.splice(m,0,d),d.record.name&&!Ki(d)&&s.set(d.record.name,d)}function c(d,m){let b,P={},x,F;if("name"in d&&d.name){if(b=s.get(d.name),!b)throw Vn(Ce.MATCHER_NOT_FOUND,{location:d});F=b.record.name,P=de($i(m.params,b.keys.filter(k=>!k.optional).concat(b.parent?b.parent.keys.filter(k=>k.optional):[]).map(k=>k.name)),d.params&&$i(d.params,b.keys.map(k=>k.name))),x=b.stringify(P)}else if(d.path!=null)x=d.path,b=n.find(k=>k.re.test(x)),b&&(P=b.parse(x),F=b.record.name);else{if(b=m.name?s.get(m.name):n.find(k=>k.re.test(m.path)),!b)throw Vn(Ce.MATCHER_NOT_FOUND,{location:d,currentLocation:m});F=b.record.name,P=de({},m.params,d.params),x=b.stringify(P)}const A=[];let $=b;for(;$;)A.unshift($.record),$=$.parent;return{name:F,path:x,params:P,matched:A,meta:vf(A)}}e.forEach(d=>o(d));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:a,getRecordMatcher:r}}function $i(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function ji(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:bf(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 bf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Ki(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function vf(e){return e.reduce((t,n)=>de(t,n.meta),{})}function yf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;tc(e,t[o])<0?s=o:n=o+1}const r=kf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function kf(e){let t=e;for(;t=t.parent;)if(nc(t)&&tc(e,t)===0)return t}function nc({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Hi(e){const t=mt(Lo),n=mt(Oo),s=Oe(()=>{const l=j(e.to);return t.resolve(l)}),r=Oe(()=>{const{matched:l}=s.value,{length:c}=l,u=l[c-1],d=n.matched;if(!u||!d.length)return-1;const m=d.findIndex(Fn.bind(null,u));if(m>-1)return m;const b=Bi(l[c-2]);return c>1&&Bi(u)===b&&d[d.length-1].path!==b?d.findIndex(Fn.bind(null,l[c-2])):m}),o=Oe(()=>r.value>-1&&Sf(n.params,s.value.params)),i=Oe(()=>r.value>-1&&r.value===n.matched.length-1&&Xl(n.params,s.value.params));function a(l={}){if(Tf(l)){const c=t[j(e.replace)?"replace":"push"](j(e.to)).catch(as);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:Oe(()=>s.value.href),isActive:o,isExactActive:i,navigate:a}}function _f(e){return e.length===1?e[0]:e}const wf=Xt({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"},viewTransition:Boolean},useLink:Hi,setup(e,{slots:t}){const n=lr(Hi(e)),{options:s}=mt(Lo),r=Oe(()=>({[Wi(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Wi(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&_f(t.default(n));return e.custom?o:mr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),pt=wf;function Tf(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 Sf(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Pt(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function Bi(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Wi=(e,t,n)=>e??t??n,Pf=Xt({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=mt(Jr),r=Oe(()=>e.route||s.value),o=mt(Mi,0),i=Oe(()=>{let c=j(o);const{matched:u}=r.value;let d;for(;(d=u[c])&&!d.components;)c++;return c}),a=Oe(()=>r.value.matched[i.value]);Is(Mi,Oe(()=>i.value+1)),Is(Zl,a),Is(Jr,r);const l=ve();return qt(()=>[l.value,a.value,e.name],([c,u,d],[m,b,P])=>{u&&(u.instances[d]=c,b&&b!==u&&c&&c===m&&(u.leaveGuards.size||(u.leaveGuards=b.leaveGuards),u.updateGuards.size||(u.updateGuards=b.updateGuards))),c&&u&&(!b||!Fn(u,b)||!m)&&(u.enterCallbacks[d]||[]).forEach(x=>x(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,d=a.value,m=d&&d.components[u];if(!m)return qi(n.default,{Component:m,route:c});const b=d.props[u],P=b?b===!0?c.params:typeof b=="function"?b(c):b:null,F=mr(m,de({},P,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(d.instances[u]=null)},ref:l}));return qi(n.default,{Component:F,route:c})||F}}});function qi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const sc=Pf;function xf(e){const t=gf(e.routes,e),n=e.parseQuery||Qp,s=e.stringifyQuery||Ni,r=e.history,o=zn(),i=zn(),a=zn(),l=sl(Jt);let c=Jt;Cn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Ir.bind(null,y=>""+y),d=Ir.bind(null,Dp),m=Ir.bind(null,ms);function b(y,C){let D,N;return Ql(y)?(D=t.getRecordMatcher(y),N=C):N=y,t.addRoute(N,D)}function P(y){const C=t.getRecordMatcher(y);C&&t.removeRoute(C)}function x(){return t.getRoutes().map(y=>y.record)}function F(y){return!!t.getRecordMatcher(y)}function A(y,C){if(C=de({},C||l.value),typeof y=="string"){const w=Lr(n,y,C.path),M=t.resolve({path:w.path},C),V=r.createHref(w.fullPath);return de(w,M,{params:m(M.params),hash:ms(w.hash),redirectedFrom:void 0,href:V})}let D;if(y.path!=null)D=de({},y,{path:Lr(n,y.path,C.path).path});else{const w=de({},y.params);for(const M in w)w[M]==null&&delete w[M];D=de({},y,{params:d(w)}),C.params=d(C.params)}const N=t.resolve(D,C),Y=y.hash||"";N.params=u(m(N.params));const h=Fp(s,de({},y,{hash:Ip(Y),path:N.path})),g=r.createHref(h);return de({fullPath:h,hash:Y,query:s===Ni?Jp(y.query):y.query||{}},N,{redirectedFrom:void 0,href:g})}function $(y){return typeof y=="string"?Lr(n,y,l.value.path):de({},y)}function k(y,C){if(c!==y)return Vn(Ce.NAVIGATION_CANCELLED,{from:C,to:y})}function _(y){return U(y)}function I(y){return _(de($(y),{replace:!0}))}function L(y,C){const D=y.matched[y.matched.length-1];if(D&&D.redirect){const{redirect:N}=D;let Y=typeof N=="function"?N(y,C):N;return typeof Y=="string"&&(Y=Y.includes("?")||Y.includes("#")?Y=$(Y):{path:Y},Y.params={}),de({query:y.query,hash:y.hash,params:Y.path!=null?{}:y.params},Y)}}function U(y,C){const D=c=A(y),N=l.value,Y=y.state,h=y.force,g=y.replace===!0,w=L(D,N);if(w)return U(de($(w),{state:typeof w=="object"?de({},Y,w.state):Y,force:h,replace:g}),C||D);const M=D;M.redirectedFrom=C;let V;return!h&&Vp(s,N,D)&&(V=Vn(Ce.NAVIGATION_DUPLICATED,{to:M,from:N}),xe(N,N,!0,!1)),(V?Promise.resolve(V):ae(M,N)).catch(O=>
2Ut(O)?Ut(O,Ce.NAVIGATION_GUARD_REDIRECT)?O:ue(O):ne(O,M,N)).then(O=>{if(O){if(Ut(O,Ce.NAVIGATION_GUARD_REDIRECT))return U(de({replace:g},$(O.to),{state:typeof O.to=="object"?de({},Y,O.to.state):Y,force:h}),C||M)}else O=ee(M,N,!0,g,Y);return Re(M,N,O),O})}function G(y,C){const D=k(y,C);return D?Promise.reject(D):Promise.resolve()}function z(y){const C=ot.values().next().value;return C&&typeof C.runWithContext=="function"?C.runWithContext(y):y()}function ae(y,C){let D;const[N,Y,h]=tf(y,C);D=Dr(N.reverse(),"beforeRouteLeave",y,C);for(const w of N)w.leaveGuards.forEach(M=>{D.push(nn(M,y,C))});const g=G.bind(null,y,C);return D.push(g),Ie(D).then(()=>{D=[];for(const w of o.list())D.push(nn(w,y,C));return D.push(g),Ie(D)}).then(()=>{D=Dr(Y,"beforeRouteUpdate",y,C);for(const w of Y)w.updateGuards.forEach(M=>{D.push(nn(M,y,C))});return D.push(g),Ie(D)}).then(()=>{D=[];for(const w of h)if(w.beforeEnter)if(Pt(w.beforeEnter))for(const M of w.beforeEnter)D.push(nn(M,y,C));else D.push(nn(w.beforeEnter,y,C));return D.push(g),Ie(D)}).then(()=>(y.matched.forEach(w=>w.enterCallbacks={}),D=Dr(h,"beforeRouteEnter",y,C,z),D.push(g),Ie(D))).then(()=>{D=[];for(const w of i.list())D.push(nn(w,y,C));return D.push(g),Ie(D)}).catch(w=>Ut(w,Ce.NAVIGATION_CANCELLED)?w:Promise.reject(w))}function Re(y,C,D){a.list().forEach(N=>z(()=>N(y,C,D)))}function ee(y,C,D,N,Y){const h=k(y,C);if(h)return h;const g=C===Jt,w=Cn?history.state:{};D&&(N||g?r.replace(y.fullPath,de({scroll:g&&w&&w.scroll},Y)):r.push(y.fullPath,Y)),l.value=y,xe(y,C,D,g),ue()}let we;function vt(){we||(we=r.listen((y,C,D)=>{if(!it.listening)return;const N=A(y),Y=L(N,it.currentRoute.value);if(Y){U(de(Y,{replace:!0,force:!0}),N).catch(as);return}c=N;const h=l.value;Cn&&qp(Di(h.fullPath,D.delta),hr()),ae(N,h).catch(g=>Ut(g,Ce.NAVIGATION_ABORTED|Ce.NAVIGATION_CANCELLED)?g:Ut(g,Ce.NAVIGATION_GUARD_REDIRECT)?(U(de($(g.to),{force:!0}),N).then(w=>{Ut(w,Ce.NAVIGATION_ABORTED|Ce.NAVIGATION_DUPLICATED)&&!D.delta&&D.type===Xr.pop&&r.go(-1,!1)}).catch(as),Promise.reject()):(D.delta&&r.go(-D.delta,!1),ne(g,N,h))).then(g=>{g=g||ee(N,h,!1),g&&(D.delta&&!Ut(g,Ce.NAVIGATION_CANCELLED)?r.go(-D.delta,!1):D.type===Xr.pop&&Ut(g,Ce.NAVIGATION_ABORTED|Ce.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),Re(N,h,g)}).catch(as)}))}let He=zn(),be=zn(),re;function ne(y,C,D){ue(y);const N=be.list();return N.length?N.forEach(Y=>Y(y,C,D)):console.error(y),Promise.reject(y)}function Ge(){return re&&l.value!==Jt?Promise.resolve():new Promise((y,C)=>{He.add([y,C])})}function ue(y){return re||(re=!y,vt(),He.list().forEach(([C,D])=>y?D(y):C()),He.reset()),y}function xe(y,C,D,N){const{scrollBehavior:Y}=e;if(!Cn||!Y)return Promise.resolve();const h=!D&&zp(Di(y.fullPath,0))||(N||!D)&&history.state&&history.state.scroll||null;return So().then(()=>Y(y,C,h)).then(g=>g&&Wp(g)).catch(g=>ne(g,y,C))}const Se=y=>r.go(y);let dt;const ot=new Set,it={currentRoute:l,listening:!0,addRoute:b,removeRoute:P,clearRoutes:t.clearRoutes,hasRoute:F,getRoutes:x,resolve:A,options:e,push:_,replace:I,go:Se,back:()=>Se(-1),forward:()=>Se(1),beforeEach:o.add,beforeResolve:i.add,afterEach:a.add,onError:be.add,isReady:Ge,install(y){y.component("RouterLink",pt),y.component("RouterView",sc),y.config.globalProperties.$router=it,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>j(l)}),Cn&&!dt&&l.value===Jt&&(dt=!0,_(r.location).catch(N=>{}));const C={};for(const N in Jt)Object.defineProperty(C,N,{get:()=>l.value[N],enumerable:!0});y.provide(Lo,it),y.provide(Oo,nl(C)),y.provide(Jr,l);const D=y.unmount;ot.add(y),y.unmount=function(){ot.delete(y),ot.size<1&&(c=Jt,we&&we(),we=null,l.value=Jt,dt=!1,re=!1),D()}}};function Ie(y){return y.reduce((C,D)=>C.then(()=>z(D)),Promise.resolve())}return it}function Cf(e){return mt(Oo)}function Ef(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Gs=typeof window<"u",ln=(e,t=!1)=>t?Symbol.for(e):Symbol(e),Rf=(e,t,n)=>Af({l:e,k:t,s:n}),Af=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),De=e=>typeof e=="number"&&isFinite(e),If=e=>oc(e)==="[object Date]",Ys=e=>oc(e)==="[object RegExp]",gr=e=>ie(e)&&Object.keys(e).length===0,nt=Object.assign,Lf=Object.create,ge=(e=null)=>Lf(e);let zi;const Xs=()=>zi||(zi=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:ge());function Gi(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/\//g,"&#x2F;").replace(/=/g,"&#x3D;")}function Yi(e){return e.replace(/&(?![a-zA-Z0-9#]{2,6};)/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Of(e){return e=e.replace(/(\w+)\s*=\s*"([^"]*)"/g,(s,r,o)=>`${r}="${Yi(o)}"`),e=e.replace(/(\w+)\s*=\s*'([^']*)'/g,(s,r,o)=>`${r}='${Yi(o)}'`),/\s*on\w+\s*=\s*["']?[^"'>]+["']?/gi.test(e)&&(e=e.replace(/(\s+)(on)(\w+\s*=)/gi,"$1&#111;n$3")),[/(\s+(?:href|src|action|formaction)\s*=\s*["']?)\s*javascript:/gi,/(style\s*=\s*["'][^"']*url\s*\(\s*)javascript:/gi].forEac
2h(s=>{e=e.replace(s,"$1javascript&#58;")}),e}const Df=Object.prototype.hasOwnProperty;function wt(e,t){return Df.call(e,t)}const Fe=Array.isArray,Ee=e=>typeof e=="function",X=e=>typeof e=="string",Te=e=>typeof e=="boolean",le=e=>e!==null&&typeof e=="object",Nf=e=>le(e)&&Ee(e.then)&&Ee(e.catch),rc=Object.prototype.toString,oc=e=>rc.call(e),ie=e=>{if(!le(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},Mf=e=>e==null?"":Fe(e)||ie(e)&&e.toString===rc?JSON.stringify(e,null,2):String(e);function Ff(e,t=""){return e.reduce((n,s,r)=>r===0?n+s:n+t+s,"")}function br(e){let t=e;return()=>++t}const xs=e=>!le(e)||Fe(e);function Ms(e,t){if(xs(e)||xs(t))throw new Error("Invalid value");const n=[{src:e,des:t}];for(;n.length;){const{src:s,des:r}=n.pop();Object.keys(s).forEach(o=>{o!=="__proto__"&&(le(s[o])&&!le(r[o])&&(r[o]=Array.isArray(s[o])?[]:ge()),xs(r[o])||xs(s[o])?r[o]=s[o]:n.push({src:s[o],des:r[o]}))})}}function Vf(e,t,n){return{line:e,column:t,offset:n}}function Qs(e,t,n){return{start:e,end:t}}const Uf=/\{([0-9a-zA-Z]+)\}/g;function ic(e,...t){return t.length===1&&$f(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(Uf,(n,s)=>t.hasOwnProperty(s)?t[s]:"")}const ac=Object.assign,Xi=e=>typeof e=="string",$f=e=>e!==null&&typeof e=="object";function lc(e,t=""){return e.reduce((n,s,r)=>r===0?n+s:n+t+s,"")}const Do={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},jf={[Do.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function Kf(e,t,...n){const s=ic(jf[e],...n||[]),r={message:String(s),code:e};return t&&(r.location=t),r}const Z={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},Hf={[Z.EXPECTED_TOKEN]:"Expected token: '{0}'",[Z.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[Z.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[Z.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[Z.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[Z.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[Z.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[Z.EMPTY_PLACEHOLDER]:"Empty placeholder",[Z.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[Z.INVALID_LINKED_FORMAT]:"Invalid linked format",[Z.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[Z.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[Z.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[Z.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[Z.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[Z.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function Kn(e,t,n={}){const{domain:s,messages:r,args:o}=n,i=ic((r||Hf)[e]||"",...o||[]),a=new SyntaxError(String(i));return a.code=e,t&&(a.location=t),a.domain=s,a}function Bf(e){throw e}const $t=" ",Wf="\r",Qe=`
3`,qf="\u2028",zf="\u2029";function Gf(e){const t=e;let n=0,s=1,r=1,o=0;const i=U=>t[U]===Wf&&t[U+1]===Qe,a=U=>t[U]===Qe,l=U=>t[U]===zf,c=U=>t[U]===qf,u=U=>i(U)||a(U)||l(U)||c(U),d=()=>n,m=()=>s,b=()=>r,P=()=>o,x=U=>i(U)||l(U)||c(U)?Qe:t[U],F=()=>x(n),A=()=>x(n+o);function $(){return o=0,u(n)&&(s++,r=0),i(n)&&n++,n++,r++,t[n]}function k(){return i(n+o)&&o++,o++,t[n+o]}function _(){n=0,s=1,r=1,o=0}function I(U=0){o=U}function L(){const U=n+o;for(;U!==n;)$();o=0}return{index:d,line:m,column:b,peekOffset:P,charAt:x,currentChar:F,currentPeek:A,next:$,peek:k,reset:_,resetPeek:I,skipToPeek:L}}const Zt=void 0,Yf=".",Qi="'",Xf="tokenizer";function Qf(e,t={}){const n=t.location!==!1,s=Gf(e),r=()=>s.index(),o=()=>Vf(s.line(),s.column(),s.index()),i=o(),a=r(),l={currentType:14,offset:a,startLoc:i,endLoc:i,lastType:14,lastOffset:a,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},c=()=>l,{onError:u}=t;function d(p,f,S,...E){const q=c();if(f.column+=S,f.offset+=S,u){const K=n?Qs(q.startLoc,f):null,T=Kn(p,K,{domain:Xf,args:E});u(T)}}function m(p,f,S){p.endLoc=o(),p.currentType=f;const E={type:f};return n&&(E.loc=Qs(p.startLoc,p.endLoc)),S!=null&&(E.value=S),E}const b=p=>m(p,14);function P(p,f){return p.currentChar()===f?(p.next(),f):(d(Z.EXPECTED_TOKEN,o(),0,f),"")}function x(p){let f="";for(;p.currentPeek()===$t||p.currentPeek()===Qe;)f+=p.currentPeek(),p.peek();return f}function F(p){const f=x(p);return p.skipToPeek(),f}function A(p){if(p===Zt)return!1;
3const f=p.charCodeAt(0);return f>=97&&f<=122||f>=65&&f<=90||f===95}function $(p){if(p===Zt)return!1;const f=p.charCodeAt(0);return f>=48&&f<=57}function k(p,f){const{currentType:S}=f;if(S!==2)return!1;x(p);const E=A(p.currentPeek());return p.resetPeek(),E}function _(p,f){const{currentType:S}=f;if(S!==2)return!1;x(p);const E=p.currentPeek()==="-"?p.peek():p.currentPeek(),q=$(E);return p.resetPeek(),q}function I(p,f){const{currentType:S}=f;if(S!==2)return!1;x(p);const E=p.currentPeek()===Qi;return p.resetPeek(),E}function L(p,f){const{currentType:S}=f;if(S!==8)return!1;x(p);const E=p.currentPeek()===".";return p.resetPeek(),E}function U(p,f){const{currentType:S}=f;if(S!==9)return!1;x(p);const E=A(p.currentPeek());return p.resetPeek(),E}function G(p,f){const{currentType:S}=f;if(!(S===8||S===12))return!1;x(p);const E=p.currentPeek()===":";return p.resetPeek(),E}function z(p,f){const{currentType:S}=f;if(S!==10)return!1;const E=()=>{const K=p.currentPeek();return K==="{"?A(p.peek()):K==="@"||K==="%"||K==="|"||K===":"||K==="."||K===$t||!K?!1:K===Qe?(p.peek(),E()):ee(p,!1)},q=E();return p.resetPeek(),q}function ae(p){x(p);const f=p.currentPeek()==="|";return p.resetPeek(),f}function Re(p){const f=x(p),S=p.currentPeek()==="%"&&p.peek()==="{";return p.resetPeek(),{isModulo:S,hasSpace:f.length>0}}function ee(p,f=!0){const S=(q=!1,K="",T=!1)=>{const R=p.currentPeek();return R==="{"?K==="%"?!1:q:R==="@"||!R?K==="%"?!0:q:R==="%"?(p.peek(),S(q,"%",!0)):R==="|"?K==="%"||T?!0:!(K===$t||K===Qe):R===$t?(p.peek(),S(!0,$t,T)):R===Qe?(p.peek(),S(!0,Qe,T)):!0},E=S();return f&&p.resetPeek(),E}function we(p,f){const S=p.currentChar();return S===Zt?Zt:f(S)?(p.next(),S):null}function vt(p){const f=p.charCodeAt(0);return f>=97&&f<=122||f>=65&&f<=90||f>=48&&f<=57||f===95||f===36}function He(p){return we(p,vt)}function be(p){const f=p.charCodeAt(0);return f>=97&&f<=122||f>=65&&f<=90||f>=48&&f<=57||f===95||f===36||f===45}function re(p){return we(p,be)}function ne(p){const f=p.charCodeAt(0);return f>=48&&f<=57}function Ge(p){return we(p,ne)}function ue(p){const f=p.charCodeAt(0);return f>=48&&f<=57||f>=65&&f<=70||f>=97&&f<=102}function xe(p){return we(p,ue)}function Se(p){let f="",S="";for(;f=Ge(p);)S+=f;return S}function dt(p){F(p);const f=p.currentChar();return f!=="%"&&d(Z.EXPECTED_TOKEN,o(),0,f),p.next(),"%"}function ot(p){let f="";for(;;){const S=p.currentChar();if(S==="{"||S==="}"||S==="@"||S==="|"||!S)break;if(S==="%")if(ee(p))f+=S,p.next();else break;else if(S===$t||S===Qe)if(ee(p))f+=S,p.next();else{if(ae(p))break;f+=S,p.next()}else f+=S,p.next()}return f}function it(p){F(p);let f="",S="";for(;f=re(p);)S+=f;return p.currentChar()===Zt&&d(Z.UNTERMINATED_CLOSING_BRACE,o(),0),S}function Ie(p){F(p);let f="";return p.currentChar()==="-"?(p.next(),f+=`-${Se(p)}`):f+=Se(p),p.currentChar()===Zt&&d(Z.UNTERMINATED_CLOSING_BRACE,o(),0),f}function y(p){return p!==Qi&&p!==Qe}function C(p){F(p),P(p,"'");let f="",S="";for(;f=we(p,y);)f==="\\"?S+=D(p):S+=f;const E=p.currentChar();return E===Qe||E===Zt?(d(Z.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,o(),0),E===Qe&&(p.next(),P(p,"'")),S):(P(p,"'"),S)}function D(p){const f=p.currentChar();switch(f){case"\\":case"'":return p.next(),`\\${f}`;case"u":return N(p,f,4);case"U":return N(p,f,6);default:return d(Z.UNKNOWN_ESCAPE_SEQUENCE,o(),0,f),""}}function N(p,f,S){P(p,f);let E="";for(let q=0;q<S;q++){const K=xe(p);if(!K){d(Z.INVALID_UNICODE_ESCAPE_SEQUENCE,o(),0,`\\${f}${E}${p.currentChar()}`);break}E+=K}return`\\${f}${E}`}function Y(p){return p!=="{"&&p!=="}"&&p!==$t&&p!==Qe}function h(p){F(p);let f="",S="";for(;f=we(p,Y);)S+=f;return S}function g(p){let f="",S="";for(;f=He(p);)S+=f;return S}function w(p){const f=S=>{const E=p.currentChar();return E==="{"||E==="%"||E==="@"||E==="|"||E==="("||E===")"||!E||E===$t?S:(S+=E,p.next(),f(S))};return f("")}function M(p){F(p);const f=P(p,"|");return F(p),f}function V(p,f){let S=null;switch(p.currentChar()){case"{":return f.braceNest>=1&&d(Z.NOT_ALLOW_NEST_PLACEHOLDER,o(),0),p.next(),S=m(f,2,"{"),F(p),f.braceNest++,S;case"}":return f.braceNest>0&&f.currentType===2&&d(Z.EMPTY_PLACEHOLDER,o(),0),p.next(),S=m(f,3,"}"),f.braceNest--,f.braceNest>0&&F(p),f.inLinked&&f.braceNest===0&&(f.inLinked=!1),S;case"@":return f.braceNest>0&&d(Z.UNTERMINATED_CLOSING_BRACE,o(),0),S=O(p,f)||b(f),f.braceNest=0,S;default:{let q=!0,K=!0,T=!0;if(ae(p))return f.braceNest>0&&d(Z.UNTERMINATED_CLOSING_BRACE,o(),0),S=m(f,1,M(p)),f.braceNest=0,f.inLinked=!1,S;if(f.braceNest>0&&(f.currentType===5||f.currentType===6||f.currentType===7))return d(Z.UNTERMINATED_CLOSING_BRACE,o(),0),f.braceNest=0,W(p,f);if(q=k(p,f))return S=m(f,5,it(p)),F(p),S;if(K=_(p,f))return S=m(f,6,Ie(p)),F(p),S;if(T=I(p,f))return S=m(f,7,C(p)),F(p),S;
3if(!q&&!K&&!T)return S=m(f,13,h(p)),d(Z.INVALID_TOKEN_IN_PLACEHOLDER,o(),0,S.value),F(p),S;break}}return S}function O(p,f){const{currentType:S}=f;let E=null;const q=p.currentChar();switch((S===8||S===9||S===12||S===10)&&(q===Qe||q===$t)&&d(Z.INVALID_LINKED_FORMAT,o(),0),q){case"@":return p.next(),E=m(f,8,"@"),f.inLinked=!0,E;case".":return F(p),p.next(),m(f,9,".");case":":return F(p),p.next(),m(f,10,":");default:return ae(p)?(E=m(f,1,M(p)),f.braceNest=0,f.inLinked=!1,E):L(p,f)||G(p,f)?(F(p),O(p,f)):U(p,f)?(F(p),m(f,12,g(p))):z(p,f)?(F(p),q==="{"?V(p,f)||E:m(f,11,w(p))):(S===8&&d(Z.INVALID_LINKED_FORMAT,o(),0),f.braceNest=0,f.inLinked=!1,W(p,f))}}function W(p,f){let S={type:14};if(f.braceNest>0)return V(p,f)||b(f);if(f.inLinked)return O(p,f)||b(f);switch(p.currentChar()){case"{":return V(p,f)||b(f);case"}":return d(Z.UNBALANCED_CLOSING_BRACE,o(),0),p.next(),m(f,3,"}");case"@":return O(p,f)||b(f);default:{if(ae(p))return S=m(f,1,M(p)),f.braceNest=0,f.inLinked=!1,S;const{isModulo:q,hasSpace:K}=Re(p);if(q)return K?m(f,0,ot(p)):m(f,4,dt(p));if(ee(p))return m(f,0,ot(p));break}}return S}function B(){const{currentType:p,offset:f,startLoc:S,endLoc:E}=l;return l.lastType=p,l.lastOffset=f,l.lastStartLoc=S,l.lastEndLoc=E,l.offset=r(),l.startLoc=o(),s.currentChar()===Zt?m(l,14):W(s,l)}return{nextToken:B,currentOffset:r,currentPosition:o,context:c}}const Jf="parser",Zf=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function em(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const s=parseInt(t||n,16);return s<=55295||s>=57344?String.fromCodePoint(s):"�"}}}function tm(e={}){const t=e.location!==!1,{onError:n,onWarn:s}=e;function r(k,_,I,L,...U){const G=k.currentPosition();if(G.offset+=L,G.column+=L,n){const z=t?Qs(I,G):null,ae=Kn(_,z,{domain:Jf,args:U});n(ae)}}function o(k,_,I,L,...U){const G=k.currentPosition();if(G.offset+=L,G.column+=L,s){const z=t?Qs(I,G):null;s(Kf(_,z,U))}}function i(k,_,I){const L={type:k};return t&&(L.start=_,L.end=_,L.loc={start:I,end:I}),L}function a(k,_,I,L){t&&(k.end=_,k.loc&&(k.loc.end=I))}function l(k,_){const I=k.context(),L=i(3,I.offset,I.startLoc);return L.value=_,a(L,k.currentOffset(),k.currentPosition()),L}function c(k,_){const I=k.context(),{lastOffset:L,lastStartLoc:U}=I,G=i(5,L,U);return G.index=parseInt(_,10),k.nextToken(),a(G,k.currentOffset(),k.currentPosition()),G}function u(k,_,I){const L=k.context(),{lastOffset:U,lastStartLoc:G}=L,z=i(4,U,G);return z.key=_,I===!0&&(z.modulo=!0),k.nextToken(),a(z,k.currentOffset(),k.currentPosition()),z}function d(k,_){const I=k.context(),{lastOffset:L,lastStartLoc:U}=I,G=i(9,L,U);return G.value=_.replace(Zf,em),k.nextToken(),a(G,k.currentOffset(),k.currentPosition()),G}function m(k){const _=k.nextToken(),I=k.context(),{lastOffset:L,lastStartLoc:U}=I,G=i(8,L,U);return _.type!==12?(r(k,Z.UNEXPECTED_EMPTY_LINKED_MODIFIER,I.lastStartLoc,0),G.value="",a(G,L,U),{nextConsumeToken:_,node:G}):(_.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,yt(_)),G.value=_.value||"",a(G,k.currentOffset(),k.currentPosition()),{node:G})}function b(k,_){const I=k.context(),L=i(7,I.offset,I.startLoc);return L.value=_,a(L,k.currentOffset(),k.currentPosition()),L}function P(k){const _=k.context(),I=i(6,_.offset,_.startLoc);let L=k.nextToken();if(L.type===9){const U=m(k);I.modifier=U.node,L=U.nextConsumeToken||k.nextToken()}switch(L.type!==10&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(L)),L=k.nextToken(),L.type===2&&(L=k.nextToken()),L.type){case 11:L.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(L)),I.key=b(k,L.value||"");break;case 5:L.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(L)),I.key=u(k,L.value||"");break;case 6:L.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(L)),I.key=c(k,L.value||"");break;case 7:L.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(L)),I.key=d(k,L.value||"");break;default:{r(k,Z.UNEXPECTED_EMPTY_LINKED_KEY,_.lastStartLoc,0);const U=k.context(),G=i(7,U.offset,U.startLoc);return G.value="",a(G,U.offset,U.startLoc),I.key=G,a(I,U.offset,U.startLoc),{nextConsumeToken:L,node:I}}}return a(I,k.currentOffset(),k.currentPosition()),{node:I}}function x(k){const _=k.context(),I=_.currentType===1?k.currentOffset():_.offset,L=_.currentType===1?_.endLoc:_.startLoc,U=i(2,I,L);U.items=[];let G=null,z=null;do{const ee=G||k.nextToken();switch(G=null,ee.type){case 0:ee.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(ee)),U.items.push(l(k,ee.value||""));break;case 6:ee.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(ee)),U.items.push(c(k,ee.value||""));break;case 4:z=!0;break;case 5:ee.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(ee)),U.items.push(u(k,ee.value||"",!!z)),z&&(o(k,Do.USE_MODULO_SYNTAX,_.lastStartLoc,0,yt(ee)),z=null);break;case 7:ee.value==null&&r(k,Z.UNEXPECTED_LEXICAL_ANALYSIS,_.lastStartLoc,0,yt(ee)),U.items.push(d(k,ee.value||""));break;case 8:{const we=P(k);U.items.push(we.node),G=we.nextConsumeToken||null;break}}}while(_.currentType!==14&&_.currentType!==1);const ae=_.currentType===1?_.lastOffset:k.currentOffset(),Re=_.currentType===1?_.lastEndLoc:k.currentPosition();return a(U,ae,Re),U}function F(k,_,I,L){const U=k.context();let G=L.items.length===0;const z=i(1,_,I);z.cases=[],z.cases.push(L);do{const ae=x(k);G||(G=ae.items.length===0),z.cases.push(ae)}while(U.currentType!==14);
3return G&&r(k,Z.MUST_HAVE_MESSAGES_IN_PLURAL,I,0),a(z,k.currentOffset(),k.currentPosition()),z}function A(k){const _=k.context(),{offset:I,startLoc:L}=_,U=x(k);return _.currentType===14?U:F(k,I,L,U)}function $(k){const _=Qf(k,ac({},e)),I=_.context(),L=i(0,I.offset,I.startLoc);return t&&L.loc&&(L.loc.source=k),L.body=A(_),e.onCacheKey&&(L.cacheKey=e.onCacheKey(k)),I.currentType!==14&&r(_,Z.UNEXPECTED_LEXICAL_ANALYSIS,I.lastStartLoc,0,k[I.offset]||""),a(L,_.currentOffset(),_.currentPosition()),L}return{parse:$}}function yt(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function nm(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:o=>(n.helpers.add(o),o)}}function Ji(e,t){for(let n=0;n<e.length;n++)No(e[n],t)}function No(e,t){switch(e.type){case 1:Ji(e.cases,t),t.helper("plural");break;case 2:Ji(e.items,t);break;case 6:{No(e.key,t),t.helper("linked"),t.helper("type");break}case 5:t.helper("interpolate"),t.helper("list");break;case 4:t.helper("interpolate"),t.helper("named");break}}function sm(e,t={}){const n=nm(e);n.helper("normalize"),e.body&&No(e.body,n);const s=n.context();e.helpers=Array.from(s.helpers)}function rm(e){const t=e.body;return t.type===2?Zi(t):t.cases.forEach(n=>Zi(n)),e}function Zi(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n<e.items.length;n++){const s=e.items[n];if(!(s.type===3||s.type===9)||s.value==null)break;t.push(s.value)}if(t.length===e.items.length){e.static=lc(t);for(let n=0;n<e.items.length;n++){const s=e.items[n];(s.type===3||s.type===9)&&delete s.value}}}}const om="minifier";function En(e){switch(e.t=e.type,e.type){case 0:{const t=e;En(t.body),t.b=t.body,delete t.body;break}case 1:{const t=e,n=t.cases;for(let s=0;s<n.length;s++)En(n[s]);t.c=n,delete t.cases;break}case 2:{const t=e,n=t.items;for(let s=0;s<n.length;s++)En(n[s]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{const t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{const t=e;En(t.key),t.k=t.key,delete t.key,t.modifier&&(En(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{const t=e;t.i=t.index,delete t.index;break}case 4:{const t=e;t.k=t.key,delete t.key;break}default:throw Kn(Z.UNHANDLED_MINIFIER_NODE_TYPE,null,{domain:om,args:[e.type]})}delete e.type}const im="parser";function am(e,t){const{filename:n,breakLineCode:s,needIndent:r}=t,o=t.location!==!1,i={filename:n,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:s,needIndent:r,indentLevel:0};o&&e.loc&&(i.source=e.loc.source);const a=()=>i;function l(x,F){i.code+=x}function c(x,F=!0){const A=F?s:"";l(r?A+"  ".repeat(x):A)}function u(x=!0){const F=++i.indentLevel;x&&c(F)}function d(x=!0){const F=--i.indentLevel;x&&c(F)}function m(){c(i.indentLevel)}return{context:a,push:l,indent:u,deindent:d,newline:m,helper:x=>`_${x}`,needIndent:()=>i.needIndent}}function lm(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),Un(e,t.key),t.modifier?(e.push(", "),Un(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function cm(e,t){const{helper:n,needIndent:s}=e;e.push(`${n("normalize")}([`),e.indent(s());const r=t.items.length;for(let o=0;o<r&&(Un(e,t.items[o]),o!==r-1);o++)e.push(", ");e.deindent(s()),e.push("])")}function um(e,t){const{helper:n,needIndent:s}=e;if(t.cases.length>1){e.push(`${n("plural")}([`),e.indent(s());const r=t.cases.length;for(let o=0;o<r&&(Un(e,t.cases[o]),o!==r-1);o++)e.push(", ");e.deindent(s()),e.push("])")}}function dm(e,t){t.body?Un(e,t.body):e.push("null")}function Un(e,t){const{helper:n}=e;switch(t.type){case 0:dm(e,t);break;case 1:um(e,t);break;case 2:cm(e,t);break;case 6:lm(e,t);break;case 8:e.push(JSON.stringify(t.value),t);break;case 7:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n("interpolate")}(${n("list")}(${t.index}))`,t);break;case 4:e.push(`${n("interpolate")}(${n("named")}(${JSON.stringify(t.key)}))`,t);break;case 9:e.push(JSON.stringify(t.value),t);break;case 3:e.push(JSON.stringify(t.value),t);break;default:throw Kn(Z.UNHANDLED_CODEGEN_NODE_TYPE,null,{domain:im,args:[t.type]})}}const pm=(e,t={})=>{const n=Xi(t.mode)?t.mode:"normal",s=Xi(t.filename)?t.filename:"message.intl";t.sourceMap;const r=t.breakLineCode!=null?t.breakLineCode:n==="arrow"?";":`
4`,o=t.needIndent?t.needIndent:n!=="arrow",i=e.helpers||[],a=am(e,{filename:s,breakLineCode:r,needIndent:o});a.push(n==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),a.indent(o),i.length>0&&(a.push(`const { ${lc(i.map(u=>`${u}: _${u}`),", ")} } = ctx`),a.newline()),a.push("return "),Un(a,e),a.deindent(o),a.push("}"),delete e.helpers;const{code:l,map:c}=a.context();return{ast:e,code:l,map:c?c.toJSON():void 0}};function fm(e,t={}){const n=ac({},t),s=!!n.jit,r=!!n.minify,o=n.optimize==null?!0:n.optimize,a=tm(n).parse(e);return s?(o&&rm(a),r&&En(a),{ast:a,code:""}):(sm(a,n),pm(a,n))}function mm(){typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Xs().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Xs().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Nt(e){return le(e)&&Mo(e)===0&&(wt(e,"b")||wt(e,"body"))}const cc=["b","body"];function hm(e){return cn(e,cc)}const uc=["c","cases"];function gm(e){return cn(e,uc,[])}const dc=["s","static"];function bm(e){return cn(e,dc)}const pc=["i","items"];function vm(e){return cn(e,pc,[])}const fc=["t","type"];function Mo(e){return cn(e,fc)}const mc=["v","value"];function Cs(e,t){const n=cn(e,mc);if(n!=null)return n;throw hs(t)}const hc=["m","modifier"];function ym(e){return cn(e,hc)}const gc=["k","key"];function km(e){const t=cn(e,gc);if(t)return t;throw hs(6)}function cn(e,t,n){for(let s=0;s<t.length;s++){const r=t[s];if(wt(e,r)&&e[r]!=null)return e[r]}return n}const bc=[...cc,...uc,...dc,...pc,...gc,...hc,...mc,...fc];function hs(e){return new Error(`unhandled node type: ${e}`)}const un=[];un[0]={w:[0],i:[3,0],"[":[4],o:[7]};un[1]={w:[1],".":[2],"[":[4],o:[7]};un[2]={w:[2],i:[3,0],0:[3,0]};un[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]};un[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]};un[5]={"'":[4,0],o:8,l:[5,0]};un[6]={'"':[4,0],o:8,l:[6,0]};const _m=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function wm(e){return _m.test(e)}function Tm(e){const t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===n&&(t===34||t===39)?e.slice(1,-1):e}function Sm(e){if(e==null)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function Pm(e){const t=e.trim();return e.charAt(0)==="0"&&isNaN(parseInt(e))?!1:wm(t)?Tm(t):"*"+t}function xm(e){const t=[];let n=-1,s=0,r=0,o,i,a,l,c,u,d;const m=[];m[0]=()=>{i===void 0?i=a:i+=a},m[1]=()=>{i!==void 0&&(t.push(i),i=void 0)},m[2]=()=>{m[0](),r++},m[3]=()=>
4{if(r>0)r--,s=4,m[0]();else{if(r=0,i===void 0||(i=Pm(i),i===!1))return!1;m[1]()}};function b(){const P=e[n+1];if(s===5&&P==="'"||s===6&&P==='"')return n++,a="\\"+P,m[0](),!0}for(;s!==null;)if(n++,o=e[n],!(o==="\\"&&b())){if(l=Sm(o),d=un[s],c=d[l]||d.l||8,c===8||(s=c[0],c[1]!==void 0&&(u=m[c[1]],u&&(a=o,u()===!1))))return;if(s===7)return t}}const ea=new Map;function Cm(e,t){return le(e)?e[t]:null}function Em(e,t){if(!le(e))return null;let n=ea.get(t);if(n||(n=xm(t),n&&ea.set(t,n)),!n)return null;const s=n.length;let r=e,o=0;for(;o<s;){const i=n[o];if(bc.includes(i)&&Nt(r))return null;const a=r[i];if(a===void 0||Ee(r))return null;r=a,o++}return r}const Rm=e=>e,Am=e=>"",Im="text",Lm=e=>e.length===0?"":Ff(e),Om=Mf;function ta(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Dm(e){const t=De(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(De(e.named.count)||De(e.named.n))?De(e.named.count)?e.named.count:De(e.named.n)?e.named.n:t:t}function Nm(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Mm(e={}){const t=e.locale,n=Dm(e),s=le(e.pluralRules)&&X(t)&&Ee(e.pluralRules[t])?e.pluralRules[t]:ta,r=le(e.pluralRules)&&X(t)&&Ee(e.pluralRules[t])?ta:void 0,o=A=>A[s(n,A.length,r)],i=e.list||[],a=A=>i[A],l=e.named||ge();De(e.pluralIndex)&&Nm(n,l);const c=A=>l[A];function u(A){const $=Ee(e.messages)?e.messages(A):le(e.messages)?e.messages[A]:!1;return $||(e.parent?e.parent.message(A):Am)}const d=A=>e.modifiers?e.modifiers[A]:Rm,m=ie(e.processor)&&Ee(e.processor.normalize)?e.processor.normalize:Lm,b=ie(e.processor)&&Ee(e.processor.interpolate)?e.processor.interpolate:Om,P=ie(e.processor)&&X(e.processor.type)?e.processor.type:Im,F={list:a,named:c,plural:o,linked:(A,...$)=>{const[k,_]=$;let I="text",L="";$.length===1?le(k)?(L=k.modifier||L,I=k.type||I):X(k)&&(L=k||L):$.length===2&&(X(k)&&(L=k||L),X(_)&&(I=_||I));const U=u(A)(F),G=I==="vnode"&&Fe(U)&&L?U[0]:U;return L?d(L)(G,I):G},message:u,type:P,interpolate:b,normalize:m,values:nt(ge(),i,l)};return F}const Fm=Do.__EXTEND_POINT__,mn=br(Fm),Vm={FALLBACK_TO_TRANSLATE:mn(),CANNOT_FORMAT_NUMBER:mn(),FALLBACK_TO_NUMBER_FORMAT:mn(),CANNOT_FORMAT_DATE:mn(),FALLBACK_TO_DATE_FORMAT:mn(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:mn(),__EXTEND_POINT__:mn()},vc=Z.__EXTEND_POINT__,hn=br(vc),Tt={INVALID_ARGUMENT:vc,INVALID_DATE_ARGUMENT:hn(),INVALID_ISO_DATE_ARGUMENT:hn(),NOT_SUPPORT_NON_STRING_MESSAGE:hn(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:hn(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:hn(),NOT_SUPPORT_LOCALE_TYPE:hn(),__EXTEND_POINT__:hn()};function Ot(e){return Kn(e,null,void 0)}function Fo(e,t){return t.locale!=null?na(t.locale):na(e.locale)}let Nr;function na(e){if(X(e))return e;if(Ee(e)){if(e.resolvedOnce&&Nr!=null)return Nr;if(e.constructor.name==="Function"){const t=e();if(Nf(t))throw Ot(Tt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Nr=t}else throw Ot(Tt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw Ot(Tt.NOT_SUPPORT_LOCALE_TYPE)}function Um(e,t,n){return[...new Set([n,...Fe(t)?t:le(t)?Object.keys(t):X(t)?[t]:[n]])]}function yc(e,t,n){const s=X(n)?n:Js,r=e;r.__localeChainCache||(r.__localeChainCache=new Map);let o=r.__localeChainCache.get(s);if(!o){o=[];let i=[n];for(;Fe(i);)i=sa(o,i,t);const a=Fe(t)||!ie(t)?t:t.default?t.default:null;i=X(a)?[a]:a,Fe(i)&&sa(o,i,!1),r.__localeChainCache.set(s,o)}return o}function sa(e,t,n){let s=!0;for(let r=0;r<t.length&&Te(s);r++){const o=t[r];X(o)&&(s=$m(e,t[r],n))}return s}function $m(e,t,n){let s;const r=t.split("-");do{const o=r.join("-");s=jm(e,o,n),r.splice(-1,1)}while(r.length&&s===!0);return s}function jm(e,t,n){let s=!1;if(!e.includes(t)&&(s=!0,t)){s=t[t.length-1]!=="!";const r=t.replace(/!/g,"");e.push(r),(Fe(n)||ie(n))&&n[r]&&(s=n[r])}return s}const Km="9.14.5",vr=-1,Js="en-US",ra="",oa=e=>`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Hm(){return{upper:(e,t)=>t==="text"&&X(e)?e.toUpperCase():t==="vnode"&&le(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&X(e)?e.toLowerCase():t==="vnode"&&le(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&X(e)?oa(e):t==="vnode"&&le(e)&&"__v_isVNode"in e?oa(e.children):e}}let kc;function ia(e){kc=e}let _c;function Bm(e){_c=e}let wc;function Wm(e){wc=e}let Tc=null;const aa=e=>{Tc=e},qm=()=>Tc;let la=0;function zm(e={}){const t=Ee(e.onWarn)?e.onWarn:Ef,n=X(e.version)?e.version:Km,s=X(e.locale)||Ee(e.locale)?e.locale:Js,r=Ee(s)?Js:s,o=Fe(e.fallbackLocale)||ie(e.fallbackLocale)||X(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:r,i=ie(e.messages)?e.messages:Mr(r),a=ie(e.datetimeFormats)?e.datetimeFormats:Mr(r),l=ie(e.numberFormats)?e.numberFormats:Mr(r),c=nt(ge(),e.modifiers,Hm()),u=e.pluralRules||ge(),d=Ee(e.missing)?e.missing:null,m=Te(e.missingWarn)||Ys(e.missingWarn)?e.missingWarn:!0,b=Te(e.fallbackWarn)||Ys(e.fallbackWarn)?e.fallbackWarn:!0,P=!!e.fallbackFormat,x=!!e.unresolving,F=Ee(e.postTranslation)?e.postTranslation:null,A=ie(e.processor)?e.processor:null,$=Te(e.warnHtmlMessage)?e.warnHtmlMessage:!0,k=!!e.escapeParameter,_=Ee(e.messageCompiler)?e.messageCompiler:kc,I=Ee(e.messageResolver)?e.messageResolver:_c||Cm,L=Ee(e.localeFallbacker)?e.localeFallbacker:wc||Um,U=le(e.fallbackContext)?e.fallbackContext:void 0,G=e,z=le(G.__datetimeFormatters)?G.__datetimeFormatters:new Map,ae=le(G.__numberFormatters)?G.__numberFormatters:new Map,Re=le(G.__meta)?G.__meta:{};la++;
4const ee={version:n,cid:la,locale:s,fallbackLocale:o,messages:i,modifiers:c,pluralRules:u,missing:d,missingWarn:m,fallbackWarn:b,fallbackFormat:P,unresolving:x,postTranslation:F,processor:A,warnHtmlMessage:$,escapeParameter:k,messageCompiler:_,messageResolver:I,localeFallbacker:L,fallbackContext:U,onWarn:t,__meta:Re};return ee.datetimeFormats=a,ee.numberFormats=l,ee.__datetimeFormatters=z,ee.__numberFormatters=ae,ee}const Mr=e=>({[e]:ge()});function Vo(e,t,n,s,r){const{missing:o,onWarn:i}=e;if(o!==null){const a=o(e,n,t,r);return X(a)?a:t}else return t}function Gn(e,t,n){const s=e;s.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function Gm(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Ym(e,t){const n=t.indexOf(e);if(n===-1)return!1;for(let s=n+1;s<t.length;s++)if(Gm(e,t[s]))return!0;return!1}function Fr(e){return n=>Xm(n,e)}function Xm(e,t){const n=hm(t);if(n==null)throw hs(0);if(Mo(n)===1){const o=gm(n);return e.plural(o.reduce((i,a)=>[...i,ca(e,a)],[]))}else return ca(e,n)}function ca(e,t){const n=bm(t);if(n!=null)return e.type==="text"?n:e.normalize([n]);{const s=vm(t).reduce((r,o)=>[...r,Zr(e,o)],[]);return e.normalize(s)}}function Zr(e,t){const n=Mo(t);switch(n){case 3:return Cs(t,n);case 9:return Cs(t,n);case 4:{const s=t;if(wt(s,"k")&&s.k)return e.interpolate(e.named(s.k));if(wt(s,"key")&&s.key)return e.interpolate(e.named(s.key));throw hs(n)}case 5:{const s=t;if(wt(s,"i")&&De(s.i))return e.interpolate(e.list(s.i));if(wt(s,"index")&&De(s.index))return e.interpolate(e.list(s.index));throw hs(n)}case 6:{const s=t,r=ym(s),o=km(s);return e.linked(Zr(e,o),r?Zr(e,r):void 0,e.type)}case 7:return Cs(t,n);case 8:return Cs(t,n);default:throw new Error(`unhandled node on format message part: ${n}`)}}const Sc=e=>e;let Rn=ge();function Pc(e,t={}){let n=!1;const s=t.onError||Bf;return t.onError=r=>{n=!0,s(r)},{...fm(e,t),detectError:n}}const Qm=(e,t)=>{if(!X(e))throw Ot(Tt.NOT_SUPPORT_NON_STRING_MESSAGE);{Te(t.warnHtmlMessage)&&t.warnHtmlMessage;const s=(t.onCacheKey||Sc)(e),r=Rn[s];if(r)return r;const{code:o,detectError:i}=Pc(e,t),a=new Function(`return ${o}`)();return i?a:Rn[s]=a}};function Jm(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&X(e)){Te(t.warnHtmlMessage)&&t.warnHtmlMessage;const s=(t.onCacheKey||Sc)(e),r=Rn[s];if(r)return r;const{ast:o,detectError:i}=Pc(e,{...t,location:!1,jit:!0}),a=Fr(o);return i?a:Rn[s]=a}else{const n=e.cacheKey;if(n){const s=Rn[n];return s||(Rn[n]=Fr(e))}else return Fr(e)}}const ua=()=>"",zt=e=>Ee(e);function da(e,...t){const{fallbackFormat:n,postTranslation:s,unresolving:r,messageCompiler:o,fallbackLocale:i,messages:a}=e,[l,c]=eo(...t),u=Te(c.missingWarn)?c.missingWarn:e.missingWarn,d=Te(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,m=Te(c.escapeParameter)?c.escapeParameter:e.escapeParameter,b=!!c.resolvedMessage,P=X(c.default)||Te(c.default)?Te(c.default)?o?l:()=>l:c.default:n?o?l:()=>l:"",x=n||P!=="",F=Fo(e,c);m&&Zm(c);let[A,$,k]=b?[l,F,a[F]||ge()]:xc(e,l,F,i,d,u),_=A,I=l;if(!b&&!(X(_)||Nt(_)||zt(_))&&x&&(_=P,I=_),!b&&(!(X(_)||Nt(_)||zt(_))||!X($)))return r?vr:l;let L=!1;const U=()=>{L=!0},G=zt(_)?_:Cc(e,l,$,_,I,U);if(L)return _;const z=nh(e,$,k,c),ae=Mm(z),Re=eh(e,G,ae);let ee=s?s(Re,l):Re;return m&&X(ee)&&(ee=Of(ee)),ee}function Zm(e){Fe(e.list)?e.list=e.list.map(t=>X(t)?Gi(t):t):le(e.named)&&Object.keys(e.named).forEach(t=>{X(e.named[t])&&(e.named[t]=Gi(e.named[t]))})}function xc(e,t,n,s,r,o){const{messages:i,onWarn:a,messageResolver:l,localeFallbacker:c}=e,u=c(e,s,n);let d=ge(),m,b=null;const P="translate";for(let x=0;x<u.length&&(m=u[x],d=i[m]||ge(),(b=l(d,t))===null&&(b=d[t]),!(X(b)||Nt(b)||zt(b)));x++)if(!Ym(m,u)){const F=Vo(e,t,m,o,P);F!==t&&(b=F)}return[b,m,d]}function Cc(e,t,n,s,r,o){const{messageCompiler:i,warnHtmlMessage:a}=e;if(zt(s)){const c=s;return c.locale=c.locale||n,c.key=c.key||t,c}if(i==null){const c=(()=>s);return c.locale=n,c.key=t,c}const l=i(s,th(e,n,r,s,a,o));return l.locale=n,l.key=t,l.source=s,l}function eh(e,t,n){return t(n)}function eo(...e){const[t,n,s]=e,r=ge();
4if(!X(t)&&!De(t)&&!zt(t)&&!Nt(t))throw Ot(Tt.INVALID_ARGUMENT);const o=De(t)?String(t):(zt(t),t);return De(n)?r.plural=n:X(n)?r.default=n:ie(n)&&!gr(n)?r.named=n:Fe(n)&&(r.list=n),De(s)?r.plural=s:X(s)?r.default=s:ie(s)&&nt(r,s),[o,r]}function th(e,t,n,s,r,o){return{locale:t,key:n,warnHtmlMessage:r,onError:i=>{throw o&&o(i),i},onCacheKey:i=>Rf(t,n,i)}}function nh(e,t,n,s){const{modifiers:r,pluralRules:o,messageResolver:i,fallbackLocale:a,fallbackWarn:l,missingWarn:c,fallbackContext:u}=e,m={locale:t,modifiers:r,pluralRules:o,messages:b=>{let P=i(n,b);if(P==null&&u){const[,,x]=xc(u,b,t,a,l,c);P=i(x,b)}if(X(P)||Nt(P)){let x=!1;const A=Cc(e,b,t,P,b,()=>{x=!0});return x?ua:A}else return zt(P)?P:ua}};return e.processor&&(m.processor=e.processor),s.list&&(m.list=s.list),s.named&&(m.named=s.named),De(s.plural)&&(m.pluralIndex=s.plural),m}function pa(e,...t){const{datetimeFormats:n,unresolving:s,fallbackLocale:r,onWarn:o,localeFallbacker:i}=e,{__datetimeFormatters:a}=e,[l,c,u,d]=to(...t),m=Te(u.missingWarn)?u.missingWarn:e.missingWarn;Te(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const b=!!u.part,P=Fo(e,u),x=i(e,r,P);if(!X(l)||l==="")return new Intl.DateTimeFormat(P,d).format(c);let F={},A,$=null;const k="datetime format";for(let L=0;L<x.length&&(A=x[L],F=n[A]||{},$=F[l],!ie($));L++)Vo(e,l,A,m,k);if(!ie($)||!X(A))return s?vr:l;let _=`${A}__${l}`;gr(d)||(_=`${_}__${JSON.stringify(d)}`);let I=a.get(_);return I||(I=new Intl.DateTimeFormat(A,nt({},$,d)),a.set(_,I)),b?I.formatToParts(c):I.format(c)}const Ec=["localeMatcher","weekday","era","year","month","day","hour","minute","second","timeZoneName","formatMatcher","hour12","timeZone","dateStyle","timeStyle","calendar","dayPeriod","numberingSystem","hourCycle","fractionalSecondDigits"];function to(...e){const[t,n,s,r]=e,o=ge();let i=ge(),a;if(X(t)){const l=t.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);if(!l)throw Ot(Tt.INVALID_ISO_DATE_ARGUMENT);const c=l[3]?l[3].trim().startsWith("T")?`${l[1].trim()}${l[3].trim()}`:`${l[1].trim()}T${l[3].trim()}`:l[1].trim();a=new Date(c);try{a.toISOString()}catch{throw Ot(Tt.INVALID_ISO_DATE_ARGUMENT)}}else if(If(t)){if(isNaN(t.getTime()))throw Ot(Tt.INVALID_DATE_ARGUMENT);a=t}else if(De(t))a=t;else throw Ot(Tt.INVALID_ARGUMENT);return X(n)?o.key=n:ie(n)&&Object.keys(n).forEach(l=>{Ec.includes(l)?i[l]=n[l]:o[l]=n[l]}),X(s)?o.locale=s:ie(s)&&(i=s),ie(r)&&(i=r),[o.key||"",a,o,i]}function fa(e,t,n){const s=e;for(const r in n){const o=`${t}__${r}`;s.__datetimeFormatters.has(o)&&s.__datetimeFormatters.delete(o)}}function ma(e,...t){const{numberFormats:n,unresolving:s,fallbackLocale:r,onWarn:o,localeFallbacker:i}=e,{__numberFormatters:a}=e,[l,c,u,d]=no(...t),m=Te(u.missingWarn)?u.missingWarn:e.missingWarn;Te(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const b=!!u.part,P=Fo(e,u),x=i(e,r,P);if(!X(l)||l==="")return new Intl.NumberFormat(P,d).format(c);let F={},A,$=null;const k="number format";for(let L=0;L<x.length&&(A=x[L],F=n[A]||{},$=F[l],!ie($));L++)Vo(e,l,A,m,k);if(!ie($)||!X(A))return s?vr:l;let _=`${A}__${l}`;gr(d)||(_=`${_}__${JSON.stringify(d)}`);let I=a.get(_);return I||(I=new Intl.NumberFormat(A,nt({},$,d)),a.set(_,I)),b?I.formatToParts(c):I.format(c)}const Rc=["localeMatcher","style","currency","currencyDisplay","currencySign","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","compactDisplay","notation","signDisplay","unit","unitDisplay","roundingMode","roundingPriority","roundingIncrement","trailingZeroDisplay"];function no(...e){const[t,n,s,r]=e,o=ge();let i=ge();if(!De(t))throw Ot(Tt.INVALID_ARGUMENT);const a=t;return X(n)?o.key=n:ie(n)&&Object.keys(n).forEach(l=>{Rc.includes(l)?i[l]=n[l]:o[l]=n[l]}),X(s)?o.locale=s:ie(s)&&(i=s),ie(r)&&(i=r),[o.key||"",a,o,i]}function ha(e,t,n){const s=e;for(const r in n){const o=`${t}__${r}`;s.__numberFormatters.has(o)&&s.__numberFormatters.delete(o)}}mm();const sh="9.14.5";function rh(){typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(Xs().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(Xs().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}const oh=Vm.__EXTEND_POINT__,jt=br(oh);jt(),jt(),jt(),jt(),jt(),jt(),jt(),jt(),jt();const Ac=Tt.__EXTEND_POINT__,st=br(Ac),bt={UNEXPECTED_RETURN_TYPE:Ac,INVALID_ARGUMENT:st(),MUST_BE_CALL_SETUP_TOP:st(),NOT_INSTALLED:st(
4),NOT_AVAILABLE_IN_LEGACY_MODE:st(),REQUIRED_VALUE:st(),INVALID_VALUE:st(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:st(),NOT_INSTALLED_WITH_PROVIDE:st(),UNEXPECTED_ERROR:st(),NOT_COMPATIBLE_LEGACY_VUE_I18N:st(),BRIDGE_SUPPORT_VUE_2_ONLY:st(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:st(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:st(),__EXTEND_POINT__:st()};function xt(e,...t){return Kn(e,null,void 0)}const so=ln("__translateVNode"),ro=ln("__datetimeParts"),oo=ln("__numberParts"),ih=ln("__setPluralRules"),ah=ln("__injectWithOption"),io=ln("__dispose");function gs(e){if(!le(e)||Nt(e))return e;for(const t in e)if(wt(e,t))if(!t.includes("."))le(e[t])&&gs(e[t]);else{const n=t.split("."),s=n.length-1;let r=e,o=!1;for(let i=0;i<s;i++){if(n[i]==="__proto__")throw new Error(`unsafe key: ${n[i]}`);if(n[i]in r||(r[n[i]]=ge()),!le(r[n[i]])){o=!0;break}r=r[n[i]]}if(o||(Nt(r)?bc.includes(n[s])||delete e[t]:(r[n[s]]=e[t],delete e[t])),!Nt(r)){const i=r[n[s]];le(i)&&gs(i)}}return e}function Ic(e,t){const{messages:n,__i18n:s,messageResolver:r,flatJson:o}=t,i=ie(n)?n:Fe(s)?ge():{[e]:ge()};if(Fe(s)&&s.forEach(a=>{if("locale"in a&&"resource"in a){const{locale:l,resource:c}=a;l?(i[l]=i[l]||ge(),Ms(c,i[l])):Ms(c,i)}else X(a)&&Ms(JSON.parse(a),i)}),r==null&&o)for(const a in i)wt(i,a)&&gs(i[a]);return i}function lh(e){return e.type}function ch(e,t,n){let s=le(t.messages)?t.messages:ge();"__i18nGlobal"in n&&(s=Ic(e.locale.value,{messages:s,__i18n:n.__i18nGlobal}));const r=Object.keys(s);r.length&&r.forEach(o=>{e.mergeLocaleMessage(o,s[o])});{if(le(t.datetimeFormats)){const o=Object.keys(t.datetimeFormats);o.length&&o.forEach(i=>{e.mergeDateTimeFormat(i,t.datetimeFormats[i])})}if(le(t.numberFormats)){const o=Object.keys(t.numberFormats);o.length&&o.forEach(i=>{e.mergeNumberFormat(i,t.numberFormats[i])})}}}function ga(e){return oe(ys,null,e,0)}const ba=()=>[],uh=()=>!1;let va=0;function ya(e){return((t,n,s,r)=>e(n,s,Ao()||void 0,r))}function Lc(e={},t){const{__root:n,__injectWithOption:s}=e,r=n===void 0,o=e.flatJson,i=Gs?ve:sl,a=!!e.translateExistCompatible;let l=Te(e.inheritLocale)?e.inheritLocale:!0;const c=i(n&&l?n.locale.value:X(e.locale)?e.locale:Js),u=i(n&&l?n.fallbackLocale.value:X(e.fallbackLocale)||Fe(e.fallbackLocale)||ie(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),d=i(Ic(c.value,e)),m=i(ie(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),b=i(ie(e.numberFormats)?e.numberFormats:{[c.value]:{}});let P=n?n.missingWarn:Te(e.missingWarn)||Ys(e.missingWarn)?e.missingWarn:!0,x=n?n.fallbackWarn:Te(e.fallbackWarn)||Ys(e.fallbackWarn)?e.fallbackWarn:!0,F=n?n.fallbackRoot:Te(e.fallbackRoot)?e.fallbackRoot:!0,A=!!e.fallbackFormat,$=Ee(e.missing)?e.missing:null,k=Ee(e.missing)?ya(e.missing):null,_=Ee(e.postTranslation)?e.postTranslation:null,I=n?n.warnHtmlMessage:Te(e.warnHtmlMessage)?e.warnHtmlMessage:!0,L=!!e.escapeParameter;const U=n?n.modifiers:ie(e.modifiers)?e.modifiers:{};let G=e.pluralRules||n&&n.pluralRules,z;z=(()=>{r&&aa(null);const T={version:sh,locale:c.value,fallbackLocale:u.value,messages:d.value,modifiers:U,pluralRules:G,missing:k===null?void 0:k,missingWarn:P,fallbackWarn:x,fallbackFormat:A,unresolving:!0,postTranslation:_===null?void 0:_,warnHtmlMessage:I,escapeParameter:L,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};T.datetimeFormats=m.value,T.numberFormats=b.value,T.__datetimeFormatters=ie(z)?z.__datetimeFormatters:void 0,T.__numberFormatters=ie(z)?z.__numberFormatters:void 0;const R=zm(T);return r&&aa(R),R})(),Gn(z,c.value,u.value);function Re(){return[c.value,u.value,d.value,m.value,b.value]}const ee=Oe({get:()=>c.value,set:T=>{c.value=T,z.locale=c.value}}),we=Oe({get:()=>u.value,set:T=>{u.value=T,z.fallbackLocale=u.value,Gn(z,c.value,T)}}),vt=Oe(()=>d.value),He=Oe(()=>m.value),be=Oe(()=>b.value);function re(){return Ee(_)?_:null}function ne(T){_=T,z.postTranslation=T}function Ge(){return $}function ue(T){T!==null&&(k=ya(T)),$=T,z.missing=k}const xe=(T,R,Q,se,Pe,Ye)=>{Re();let Ue;try{r||(z.fallbackContext=n?qm():void 0),Ue=T(z)}finally{r||(z.fallbackContext=void 0)}if(Q!=="translate exists"&&De(Ue)&&Ue===vr||Q==="translate exists"&&!Ue){const[dn,_r]=R();return n&&F?se(n):Pe(dn)}else{if(Ye(Ue))return Ue;throw xt(bt.UNEXPECTED_RETURN_TYPE)}};function Se(...T){return xe(R=>Reflect.apply(da,null,[R,...T]),()=>eo(...T),"translate",R=>Reflect.apply(R.t,R,[...T]),R=>R,R=>X(R))}function dt(...T){const[R,Q,se]=T;if(se&&!le(se))throw xt(bt.INVALID_ARGUMENT);return Se(R,Q,nt({resolvedMessage:!0},se||{}))}function ot(...T){return xe(R=>Reflect.apply(pa,null,[R,...T]),()=>to(...T),"datetime format",R=>Reflect.apply(R.d,R,[...T]),()=>ra,R=>X(R))}function it(...T){return xe(R=>Reflect.apply(ma,null,[R,...T]),()=>no(...T),"number format",R=>Reflect.apply(R.n,R,[...T]),()=>ra,R=>X(R))}function Ie(T){return T.map(R=>X(R)||De(R)||Te(R)?ga(String(R)):R)}const C={normalize:Ie,interpolate:T=>T,type:"vnode"};function D(...T){return xe(R=>{let Q;const se=R;try{se.processor=C,Q=Reflect.apply(da,null,[se,...T])}finally{se.processor=null}return Q},()=>eo(...T),"translate",R=>R[so](...T),R=>[ga(R)],R=>Fe(R))}function N(...T){return xe(R=>Reflect.apply(ma,null,[R,...T]),()=>no(...T),"number format",R=>R[oo](...T),ba,R=>X(R)||Fe(R))}function Y(...T){return xe(R=>Reflect.apply(pa,null,[R,...T]),()=>to(...T),"datetime format",R=>R[ro](...T),ba,R=>X(R)||Fe(R))}function h(T){G=T,z.pluralRules=G}function g(T,R){return xe(()=>{if(!T)return!1;const Q=X(R)?R:c.value,se=V(Q),Pe=z.messageResolver(se,T);return a?Pe!=null:Nt(Pe)||zt(Pe)||X(Pe)},()=>[T],"translate exists",Q=>Reflect.apply(Q.te,Q,[T,R]),uh,Q=>Te(Q))}function w(T){let R=null;const Q=yc(z,u.value,c.value);for(let se=0;se<Q.length;se++){const Pe=d.value[Q[se]]||{},Ye=z.messageResolver(Pe,T);if(Ye!=null){R=Ye;break}}return R}function M(T){const R=w(T);return R??(n?n.tm(T)||{}:{})}function V(T){return d.value[T]||{}}function O(T,R){if(o){const Q={[T]:R};for(const se in Q)wt(Q,se)&&gs(Q[se]);R=Q[T]}d.value[T]=R,z.messages=d.value}function W(T,R){d.value[T]=d.value[T]||{};const Q={[T]:R};if(o)for(const se in Q)wt(Q,se)&&gs(Q[se]);R=Q[T],Ms(R,d.value[T]),z.messages=d.value}function B(T){return m.value[T]||{}}function p(T,R){m.value[T]=R,z.datetimeFormats=m.value,fa(z,T,R)}function f(T,R){m.value[T]=nt(m.value[T]||{},R),z.datetimeFormats=m.value,fa(z,T,R)}function S(T){return b.value[T]||{}}function E(T,R){b.value[T]=R,z.numberFormats=b.value,ha(z,T,R)}function q(T,R){b.value[T]=nt(b.value[T]||{},R),z.numberFormats=b.value,ha(z,T,R)}va++,n&&Gs&&(qt(n.locale,T=>{l&&(c.value=T,z.locale=T,Gn(z,c.value,u.value))}),qt(n.fallbackLocale,T=>{l&&(u.value=T,z.fallbackLocale=T,Gn(z,c.value,u.value))}));const K={id:va,locale:ee,fallbackLocale:we,get inheritLocale(){return l},set inheritLocale(T){l=T,T&&n&&(c.value=n.locale.value,u.value=n.fallbackLocale.value,Gn(z,c.value,u.value))},get availableLocales(){return Object.keys(d.value).sort()},messages:vt,get modifiers(){return U},get pluralRules(){return G||{}},get isGlobal(){return r},get missingWarn(){return P},set missingWarn(T){P=T,z.missingWarn=P},get fallbackWarn(){return x},set fallbackWarn(T){x=T,z.fallbackWarn=x},get fallbackRoot(){return F},set fallbackRoot(T){F=T},get fallbackFormat(){return A},set fallbackFormat(T){A=T,z.fallbackFormat=A},get warnHtmlMessage(){return I},set warnHtmlMessage(T){I=T,z.warnHtmlMessage=T},get escapeParameter(){return L},set escapeParameter(T){L=T,z.escapeParameter=T},t:Se,getLocaleMessage:V,setLocaleMessage:O,mergeLocaleMessage:W,getPostTranslationHandler:re,setPostTranslationHandler:ne,getMissingHandler:Ge,setMissingHandler:ue,[ih]:h};return K.datetimeFormats=He,K.numberFormats=be,K.rt=dt,K.te=g,K.tm=M,K.d=ot,K.n=it,K.getDateTimeFormat=B,K.setDateTimeFormat=p,K.mergeDateTimeFormat=f,K.getNumberFormat=S,K.setNumberFormat=E,K.mergeNumberFormat=q,K[ah]=s,K[so]=D,K[ro]=Y,K[oo]=N,K}const Uo={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function dh({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((s,r)=>[...s,...r.type===et?r.children:[r]],[]):t.reduce((n,s)=>{const r=e[s];return r&&(n[s]=r()),n},ge())}function Oc(e){return et}const ph=Xt({name:"i18n-t",props:nt({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>De(e)||!isNaN(e)}},Uo),setup(e,t){const{slots:n,attrs:s}=t,r=e.i18n||Hn({useScope:e.scope,__useComponent:!0});return()=>{const o=Object.keys(n).filter(d=>d!=="_"),i=ge();e.locale&&(i.locale=e.locale),e.plural!==void 0&&(i.plural=X(e.plural)?+e.plural:e.plural);const a=dh(t,o),l=r[so](e.keypath,a,i),c=nt(ge(),s),u=X(e.tag)||le(e.tag)?e.tag:Oc();return mr(u,c,l)}}}),ka=ph;function fh(e){return Fe(e)&&!X(e[0])}function Dc(e,t,n,s){const{slots:r,attrs:o}=t;return()=>{const i={part:!0};let a=ge();e.locale&&(i.locale=e.locale),X(e.format)?i.key=e.format:le(e.format)&&(X(e.format.key)&&(i.key=e.format.key),a=Object.keys(e.format).reduce((m,b)=>n.includes(b)?nt(ge(),m,{[b]:e.format[b]}
4):m,ge()));const l=s(e.value,i,a);let c=[i.key];Fe(l)?c=l.map((m,b)=>{const P=r[m.type],x=P?P({[m.type]:m.value,index:b,parts:l}):[m.value];return fh(x)&&(x[0].key=`${m.type}-${b}`),x}):X(l)&&(c=[l]);const u=nt(ge(),o),d=X(e.tag)||le(e.tag)?e.tag:Oc();return mr(d,u,c)}}const mh=Xt({name:"i18n-n",props:nt({value:{type:Number,required:!0},format:{type:[String,Object]}},Uo),setup(e,t){const n=e.i18n||Hn({useScope:e.scope,__useComponent:!0});return Dc(e,t,Rc,(...s)=>n[oo](...s))}}),_a=mh,hh=Xt({name:"i18n-d",props:nt({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Uo),setup(e,t){const n=e.i18n||Hn({useScope:e.scope,__useComponent:!0});return Dc(e,t,Ec,(...s)=>n[ro](...s))}}),wa=hh;function gh(e,t){const n=e;if(e.mode==="composition")return n.__getInstance(t)||e.global;{const s=n.__getInstance(t);return s!=null?s.__composer:e.global.__composer}}function bh(e){const t=i=>{const{instance:a,modifiers:l,value:c}=i;if(!a||!a.$)throw xt(bt.UNEXPECTED_ERROR);const u=gh(e,a.$),d=Ta(c);return[Reflect.apply(u.t,u,[...Sa(d)]),u]};return{created:(i,a)=>{const[l,c]=t(a);Gs&&e.global===c&&(i.__i18nWatcher=qt(c.locale,()=>{a.instance&&a.instance.$forceUpdate()})),i.__composer=c,i.textContent=l},unmounted:i=>{Gs&&i.__i18nWatcher&&(i.__i18nWatcher(),i.__i18nWatcher=void 0,delete i.__i18nWatcher),i.__composer&&(i.__composer=void 0,delete i.__composer)},beforeUpdate:(i,{value:a})=>{if(i.__composer){const l=i.__composer,c=Ta(a);i.textContent=Reflect.apply(l.t,l,[...Sa(c)])}},getSSRProps:i=>{const[a]=t(i);return{textContent:a}}}}function Ta(e){if(X(e))return{path:e};if(ie(e)){if(!("path"in e))throw xt(bt.REQUIRED_VALUE,"path");return e}else throw xt(bt.INVALID_VALUE)}function Sa(e){const{path:t,locale:n,args:s,choice:r,plural:o}=e,i={},a=s||{};return X(n)&&(i.locale=n),De(r)&&(i.plural=r),De(o)&&(i.plural=o),[t,a,i]}function vh(e,t,...n){const s=ie(n[0])?n[0]:{},r=!!s.useI18nComponentName;(!Te(s.globalInstall)||s.globalInstall)&&([r?"i18n":ka.name,"I18nT"].forEach(i=>e.component(i,ka)),[_a.name,"I18nN"].forEach(i=>e.component(i,_a)),[wa.name,"I18nD"].forEach(i=>e.component(i,wa))),e.directive("t",bh(t))}const yh=ln("global-vue-i18n");function kh(e={},t){const n=Te(e.globalInjection)?e.globalInjection:!0,s=!0,r=new Map,[o,i]=_h(e),a=ln("");function l(d){return r.get(d)||null}function c(d,m){r.set(d,m)}function u(d){r.delete(d)}{const d={get mode(){return"composition"},get allowComposition(){return s},async install(m,...b){if(m.__VUE_I18N_SYMBOL__=a,m.provide(m.__VUE_I18N_SYMBOL__,d),ie(b[0])){const F=b[0];d.__composerExtend=F.__composerExtend,d.__vueI18nExtend=F.__vueI18nExtend}let P=null;n&&(P=Rh(m,d.global)),vh(m,d,...b);const x=m.unmount;m.unmount=()=>{P&&P(),d.dispose(),x()}},get global(){return i},dispose(){o.stop()},__instances:r,__getInstance:l,__setInstance:c,__deleteInstance:u};return d}}function Hn(e={}){const t=Ao();if(t==null)throw xt(bt.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw xt(bt.NOT_INSTALLED);const n=wh(t),s=Sh(n),r=lh(t),o=Th(e,r);if(o==="global")return ch(s,e,r),s;if(o==="parent"){let l=Ph(n,t,e.__useComponent);return l==null&&(l=s),l}const i=n;let a=i.__getInstance(t);if(a==null){const l=nt({},e);"__i18n"in r&&(l.__i18n=r.__i18n),s&&(l.__root=s),a=Lc(l),i.__composerExtend&&(a[io]=i.__composerExtend(a)),Ch(i,t,a),i.__setInstance(t,a)}return a}function _h(e,t,n){const s=uu();{const r=s.run(()=>Lc(e));if(r==null)throw xt(bt.UNEXPECTED_ERROR);return[s,r]}}function wh(e){{const t=mt(e.isCE?yh:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw xt(e.isCE?bt.NOT_INSTALLED_WITH_PROVIDE:bt.UNEXPECTED_ERROR);return t}}function Th(e,t){return gr(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function Sh(e){return e.mode==="composition"?e.global:e.global.__composer}function Ph(e,t,n=!1){let s=null;const r=t.root;let o=xh(t,n);for(;o!=null;){const i=e;if(e.mode==="composition"&&(s=i.__getInstance(o)),s!=null||r===o)break;o=o.parent}return s}function xh(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function Ch(e,t,n){dr(()=>{},t),jn(()=>{const s=n;e.__deleteInstance(t);const r=s[io];r&&(r(),delete s[io])},t)}const Eh=["locale","fallbackLocale","availableLocales"],Pa=["t","rt","d","n","tm","te"];function Rh(e,t){const n=Object.create(null);
4return Eh.forEach(r=>{const o=Object.getOwnPropertyDescriptor(t,r);if(!o)throw xt(bt.UNEXPECTED_ERROR);const i=Ke(o.value)?{get(){return o.value.value},set(a){o.value.value=a}}:{get(){return o.get&&o.get()}};Object.defineProperty(n,r,i)}),e.config.globalProperties.$i18n=n,Pa.forEach(r=>{const o=Object.getOwnPropertyDescriptor(t,r);if(!o||!o.value)throw xt(bt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${r}`,o)}),()=>{delete e.config.globalProperties.$i18n,Pa.forEach(r=>{delete e.config.globalProperties[`$${r}`]})}}rh();__INTLIFY_JIT_COMPILATION__?ia(Jm):ia(Qm);Bm(Em);Wm(yc);const Ah={class:"bg-black text-white py-12"},Ih={class:"container mx-auto px-4"},Lh={class:"grid md:grid-cols-3 gap-8"},Oh={class:"text-gray-300"},Dh={class:"font-bold mb-4"},Nh={class:"space-y-2"},Mh={href:"https://github.com/Jigsaw-Code/sensemaking-tools/",target:"_blank",rel:"noopener noreferrer",class:"text-gray-300 hover:text-white transition flex items-center gap-1"},Fh={href:"https://jigsaw-code.github.io/sensemaking-tools/",target:"_blank",rel:"noopener noreferrer",class:"text-gray-300 hover:text-white transition flex items-center gap-1"},Vh={href:"https://github.com/bestian/sensemaking-tools/",target:"_blank",rel:"noopener noreferrer",class:"text-gray-300 hover:text-white transition flex items-center gap-1"},Uh={class:"font-bold mb-4"},$h={class:"border-t border-gray-800 mt-8 pt-8 text-center text-gray-400"},jh={class:"mt-2"},Kh={href:"https://github.com/g0v/sensemaker-frontend",class:"hover:text-white transition inline-flex items-center gap-1"},Hh=Xt({name:"AppFooter",__name:"Footer",setup(e){const{t}=Hn(),n=Oe(()=>new Date().getFullYear());return(s,r)=>{const o=gl("router-link");return Ae(),Le("footer",Ah,[v("div",Ih,[v("div",Lh,[v("div",null,[r[0]||(r[0]=v("h3",{class:"text-xl font-bold mb-4 border-b border-democratic-red pb-2 inline-block"},"Sensemaker",-1)),v("p",Oh,H(j(t)("footer.description")),1)]),v("div",null,[v("h4",Dh,H(j(t)("footer.communityLinks")),1),v("ul",Nh,[v("li",null,[v("a",Mh,[r[1]||(r[1]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},[v("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 4.624-5.479 4.862.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})],-1)),v("span",null,H(j(t)("footer.jigsawOriginalProject")),1)])]),v("li",null,[v("a",Fh,[r[2]||(r[2]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},[v("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"})],-1)),v("span",null,H(j(t)("footer.officialDocs")),1)])]),v("li",null,[v("a",Vh,[r[3]||(r[3]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},[v("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 4.624-5.479 4.862.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})],-1)),v("span",null,H(j(t)("footer.experimentalVersion")),1)])])])]),v("div",null,[v("h4",Uh,H(j(t)("footer.contactInfo")),1),r[4]||(r[4]=v("p",{class:"text-gray-300 flex items-center gap-2 mb-2"},[v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"
4currentColor",viewBox:"0 0 24 24"},[v("path",{d:"M0 3v18h24V3H0zm21.518 2L12 12.713 2.482 5h19.036zM2 19V7.183l10 8.104 10-8.104V19H2z"})]),v("a",{href:"mailto:[email protected]",class:"hover:text-democratic-red transition"},"[email protected]")],-1))])]),v("div",$h,[v("p",null,[Ve(" © "+H(n.value)+" ",1),r[5]||(r[5]=v("a",{class:"hover:text-white transition",href:"https://www.vtaiwan.tw/",target:"_blank"},"vTaiwan",-1)),Ve(" "+H(j(t)("footer.license")),1)]),v("p",jh,[v("a",Kh,[r[6]||(r[6]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"currentColor",viewBox:"0 0 24 24"},[v("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 4.624-5.479 4.862.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})],-1)),Ve(" "+H(j(t)("footer.sourceCode")),1)]),r[9]||(r[9]=Ve(" | ",-1)),oe(o,{to:"/privacy",class:"hover:text-white transition inline-flex items-center gap-1"},{default:$e(()=>[r[7]||(r[7]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"})],-1)),Ve(" "+H(j(t)("footer.privacyPolicy")),1)]),_:1}),r[10]||(r[10]=Ve(" | ",-1)),oe(o,{to:"/self-host",class:"hover:text-white transition inline-flex items-center gap-1"},{default:$e(()=>[r[8]||(r[8]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"})],-1)),Ve(" "+H(j(t)("footer.selfHost")),1)]),_:1})])])])])}}}),Bh={common:{home:"首頁",about:"關於",privacy:"隱私權",maintain:"維護測試",selfHost:"自行架站",backToHome:"返回首頁",loading:"載入中...",error:"錯誤",success:"成功",warning:"警告",info:"資訊",download:"下載",upload:"上傳",submit:"提交",cancel:"取消",save:"儲存",edit:"編輯",delete:"刪除",close:"關閉",confirm:"確認",yes:"是",no:"否",required:"必填",optional:"可選"},home:{title:"🚀 意見綜整器",subtitle:"About Sensemaker Opinion Integration Tool",apiKeyLabel:"🔑 OpenRouter API Key",apiKeyPlaceholder:"請輸入您的 OpenRouter API Key",showApiKey:"顯示 API 金鑰",hideApiKey:"隱藏 API 金鑰",getApiKeyLink:"申請 API Key",apiKeyRequired:"此欄位為必填,用於連接到 AI 模型服務",invalidApiKey:"無效的 API Key或模型",privacyNote:"🔒 隱私保護:根據隱私權政策,本站不會將您的API KEY儲存在任何地方。如有疑慮,歡迎自行架站後端與前端服務。",modelLabel:"🤖 模型名稱:",modelPlaceholder:"openai/gpt-oss-120b",additionalContextLabel:"📝 額外上下文:",additionalContextNote:"幫助AI理解對話背景、增進主題識別的準確性。本項為選填項目。",additionalContextPlaceholder:"描述對話的背景和環境。可留空。",outputLangLabel:"🌐 輸出語言:",fileLabel:"📁 上傳文件 (polis.tw 導出的 JSON 或 pol.is 導出的 CSV)",startAnalysis:"🚀 開始分析",riskWarning:"⚠️ 警告:由於意見綜整器目前還在開發測試中,LLM的回應有其不穩定性,單次報告約有1/6的機率會生成失敗,您可以透過重新機制的設定來增加成功率。",processing:"⏳ 處理中...",selectFileFirst:"請選擇要上傳的文件",taskId:"任務 ID",status:"狀態",estimatedTime:"預計完成時間",requestFailed:"❌ 請求失敗",requestError:"❌ 請求錯誤",taskStatus:"📊 任務狀態",commentsCount:"評論數量",model:"使用模型",pollingResults:"正在輪詢結果...",taskInQueue:"任務已加入隊列,將在3分鐘後開始檢查結果...",taskProcessing:"任務仍在處理中...",taskCompleted:"✅ 分析完成!",commentsProcessed:"處理了 {count} 條評論",completedAt:"完成時間",summary:"摘要",downloadMarkdown:"⬇️ 下載 Markdown",noMark
4downContent:"❌ 沒有可下載的 Markdown 內容",downloadFailed:"❌ 下載失敗",testLLM:"🔄 正在測試 LLM 連接...",testLLMSuccess:"✅ LLM 測試成功!",testLLMFailed:"❌ LLM 測試失敗",testLLMError:"❌ LLM 測試請求錯誤",testCSV:"❌ 請先選擇 CSV 文件",testCSVSuccess:"✅ CSV 解析成功!",testCSVFailed:"❌ CSV 解析失敗",testR2:"🔄 正在測試 R2 讀寫...",testR2Success:"✅ R2 測試成功!",testR2Failed:"❌ R2 測試失敗",testR2Error:"❌ R2 測試請求錯誤",taskFailed:"❌ 任務處理失敗",failedAt:"失敗時間",errorDetails:"錯誤詳情",errorMessage:"錯誤訊息",detailedError:"詳細錯誤",unknownError:"未知錯誤",noDetailedError:"無詳細錯誤資訊",modelNote:"建議使用gpt-oss-120b模型,若要選用其他推理模型,請參考 OpenRouter 模型列表的說明,以比較各模型的性能與計費標準",modelLinkText:"📋 查看 OpenRouter 模型列表",costNote:"💰 費用估算:使用 gpt-oss-120b 執行分析,依資料量大小,約需花費 $0.05-0.20 美金不等。",timeNote:"⏱️ 時間估算:使用 gpt-oss-120b 執行分析,依資料量大小,約需花費3分鐘~30分鐘不等。",retryModeLabel:"🔄 重試模式",retryModeStrict:"只跑一次 (嚴格模式)",retryModeNormal:"自動重試3次 (正常模式)",retryModeCustom:"自定義重試次數",customRetryCountLabel:"重試次數",customRetryCountNote:"請輸入 1-10 之間的重試次數",retryingRequest:"🔄 正在重試請求",retrySuccess:"✅ 重試成功",retryFailed:"❌ 重試失敗",retryError:"❌ 重試錯誤",allRetriesFailed:"❌ 所有重試都失敗了",outputLangOptions:{en:"English","zh-TW":"繁體中文","zh-CN":"简体中文",ja:"日本語",fr:"Français",es:"Español"}},about:{title:"🚀 關於 Sensemaker 意見綜整器",subtitle:"About Sensemaker Opinion Integration Tool",whatIsTitle:"📖 什麼是 Sensemaker 意見綜整器?",whatIsDescription:"Sensemaker 意見綜整器 是一個強大的 AI 驅動工具,專門用於分析大量意見數據並產生有意義的洞察。它能夠識別主要共同點和意見分歧,幫助您從海量數據中提取有價值的資訊。",whatIsDescription2:"這個工具特別適用於審議民主場景,當您使用 Polis 城邦 等非同步意見徵集工具時,可以幫助處理大量相似或重複的意見,自動生成結構化的分析報告。本站為它部份功能的一個前端實現。",resourcesTitle:"🔗 相關資源",resourcesSubtitle:"Related Resources",officialDocs:"官方說明文:",openSourceLib:"開源程式庫:",experimentalLib:"實驗版程式庫(本站相容):",experimentalBranch:"請使用 new-feature-open-router 分支",supportedDataTitle:"📊 支持的數據來源",supportedDataSubtitle:"Supported Data Sources: This tool supports report data exported from the following platforms",supportedDataDescription:"本工具支持從以下平台導出的報告數據:",polisTWTitle:"🇹🇼 Polis.tw",polisTWDescription:"從 Polis.tw 的報告頁面獲取數據,需要通過開發者模式提取 API 回應的 JSON 數據。請參考這篇教學中的相關說明。",polisTitle:"🌐 Pol.is",polisDescription:"從 Pol.is 報告頁面導出 comments 相關的 CSV 文件,可直接上傳使用。",dataFormatTitle:"📋 數據格式要求",dataFormatSubtitle:"Data Format Requirements",polisTWFormatTitle:"🇹🇼 Polis.tw 數據格式",polisTWFormatDescription:"請注意,polis.tw 的數據格式與 Pol.is 不同,polis.tw導出的json格式可以直接使用。",polisFormatTitle:"🌐 Pol.is 數據格式",polisFormatDescription:"pol.is的數據格式,亦可直接上傳使用。",useCasesTitle:"🎯 使用場景",useCasesSubtitle:"Use Cases",useCasesDescription:"Sensemaker 特別適用於以下場景:",deliberativeDemocracy:"審議民主:處理大量公民意見,識別共識和分歧點",policyMaking:"政策制定:分析公眾對特定政策的意見分布",productDevelopment:"產品開發:整理用戶反饋,識別主要需求和改進點",academicResearch:"學術研究:分析問卷調查或訪談數據",communityManagement:"社群管理:理解社群成員的意見和需求",usageTipsTitle:"
4💡 使用建議",usageTipsSubtitle:"Usage Tips",ensureDataQuality:"確保數據質量,移除重複或無效的意見",provideContext:"提供清晰的上下文描述,幫助 AI 更好地理解數據背景",chooseFormat:"根據分析目的選擇合適的輸出格式(推薦使用 Markdown 格式)",regularCheck:"定期檢查和更新數據,確保分析結果的時效性",getStartedTitle:"🚀 開始使用",getStartedSubtitle:"Get Started",readyToStart:"準備好您的數據了嗎?前往首頁開始上傳和分析您的意見數據!"},privacy:{title:"隱私權政策",privacyPolicy:"隱私權政策",privacyDescription:"這款應用程式不會蒐集任何個人資料。生成的報告會暫時存儲於 R2 儲存服務中供您下載,並以唯一的 taskID 識別,其他使用者無法取得或存取您的資料。",privacyPolicyEn:"Privacy Policy",privacyDescriptionEn:"This application does not collect any private data whatsoever. Generated reports are temporarily stored in R2 storage service for your download and cannot be accessed by other users.",dataProcessingTitle:"關於資料處理",backendProcessing:"後端運算:資料會傳送到後端進行運算處理,但後端不會儲存任何使用者的個人資料和敏感資訊,特別是API KEY不會被儲存。",noCookies:"無cookies:我們不使用任何 cookies。",openSource:"開源透明:我們的程式碼完全開源,您可以檢視所有功能以確保隱私安全。",frontendProject:"前端專案",backendProject:"後端專案",openSourceNote:"Open Source Transparency: Our code is completely open source, and you can review all functionality to ensure privacy. Check our frontend and backend repositories on GitHub."},selfHost:{title:"🏗️ 自行架站指南",overviewTitle:"📋 概述",overviewDescription:"如果您對隱私和資料安全有疑慮,歡迎 fork 我們的專案並自行架設服務。這樣您可以完全控制自己的資料和 API 金鑰。",paidPlanTitle:"付費方案需求",paidPlanDescription:"後端服務使用 Cloudflare Queues 功能,需要 Worker 付費方案。免費方案不支援此功能。",backendTitle:"🔧 後端架設 (Cloudflare Worker)",backendSubtitle:"Backend Setup (Cloudflare Worker)",step1Backend:"步驟 1: Fork 後端專案",step1BackendDesc:"前往 sensemaker-backend 專案並 fork 到您的 GitHub 帳號",viewBackendProject:"查看後端專案",step2Backend:"步驟 2: 設定 Cloudflare Worker",step2BackendDesc:"在 Cloudflare Dashboard 中創建新的 Worker,並部署您的後端程式碼",importantNote:"⚠️ 重要提醒:後端會用到 Cloudflare Queues 功能,需要租用 Worker 付費方案。免費方案不支援 Queues。",cloudflareLogin:"登入 Cloudflare Dashboard",createWorker:"創建新的 Worker",uploadCode:"上傳您的後端程式碼",setEnvVars:"設定必要的環境變數",upgradePlan:"升級到付費方案以啟用 Queues 功能",frontendTitle:"🎨 前端架設 (Vue.js)",frontendSubtitle:"Frontend Setup (Vue.js)",step1Frontend:"步驟 1: Fork 前端專案",step1FrontendDesc:"前往 sensemaker-frontend 專案並 fork 到您的 GitHub 帳號",viewFrontendProject:"查看前端專案",step2Frontend:"步驟 2: 修改 API 端點",step2FrontendDesc:"在 src/views/HomeView.vue 中,將 API URL 改為您的 Worker 網址:",originalURL:"原本的 URL",yourURL:"改為您的 URL",step3Frontend:"步驟 3: 部署前端",step3FrontendDesc:"您可以選擇多種部署方式,建議使用Cloudflare Pages:",cloudflarePages:"Cloudflare Pages: 免費、與 Worker 整合良好",advantagesTitle:"✅ 自行架站的優勢",fullControl:"完全控制",fullControlDesc:"您的資料完全由您掌控,不會經過第三方伺服器",apiKeyProtection:"API 金鑰完全保障",apiKeyProtectionDesc:"您的 API 金鑰只存在於您的環境中,不經過第三方伺服器處理",customizable:"客製化",customizableDesc:"可以根據需求修改功能和介面",learning:"學習機會",learningDesc:"深入了解現代 Web 開發技術",needHelpTitle:"🆘 需要幫助?",needHelpSubtitle:"Need Help?",needHelpDesc:"如果在架設過程中遇到問題,歡迎:",openIssue:"在 GitHub 專案中開啟 Issue",checkReadme:"查看專案的 README 和 Wiki",joinCommunity:"加入我們的社群討論"},maintain:{title:"維護測試與報修說明",pageTitle:"維護測試與報修說明",testTitle:"🧪 如何測試流程",testIntro:"本站提供一筆簡易測試資料,可用來驗證上傳、分析與產出摘要的完整流ç¨
4‹æ˜¯å¦æ­£å¸¸ã€‚",testDataLabel:"測試資料",testDataPathBefore:"測試用 CSV 位於:data/comments_test.csv(部署後對應網址為",testDataPathAfter:")。",testDataDesc:"該檔案為 Polis 匯出的留言格式,內含一筆範例留言,可直接用於「上傳 CSV」流程。",testStepsLabel:"測試步驟",step1:"前往",step1Suffix:"。",step2:"在「Open Router API KEY」欄位輸入您自己的 Open Router API Key(測試時請使用自己的 Key,本站不會儲存)。",step3:"使用預設的 openai/gpt-oss-120b 即可測試。",step4:"點選「選擇檔案」並上傳 data/comments_test.csv(可從上述網址下載後上傳)。",step5:"按下「開始分析」,等待處理完成後應會產出摘要;若流程正常即代表測試通過。",apiKeyTitle:"🔑 關於 Open Router API Key",apiKeyDescBefore:"測試時請務必使用您自己的 Open Router API Key。取得方式可參考 ",apiKeyDescAfter:"。本站不會儲存或上傳您的 API Key 到任何伺服器,僅在瀏覽器端用於呼叫後端轉發至 Open Router。",openRouterGuideLink:"Open Router 使用指南",reportTitle:"🐛 若發生故障,如何報修(貼 Issue)",reportIntro:"若測試過程中出現錯誤、畫面異常或結果不如預期,歡迎到專案 GitHub 回報問題,以利維護者排查與修復。",reportStepsLabel:"報修步驟",reportStep1:"前往前端專案的 Issues 頁面:",reportStep2:"點選「New issue」建立新 Issue。",reportStep3:"標題簡要描述問題(例如:「上傳 comments_test.csv 後分析失敗」)。",reportStep4:"內文請盡量包含:",reportStep4Bullet1:"操作步驟(例如:用了測試 CSV、選了哪個模型)。",reportStep4Bullet2:"預期結果 vs 實際結果(例如:預期出現摘要,實際出現錯誤訊息)。",reportStep4Bullet3:"畫面上的錯誤訊息或截圖(若方便)。",reportStep4Bullet4:"瀏覽器與作業系統(例如 Chrome 120 / macOS)。",reportStep5:"若問題與後端 API 有關,可同時到後端專案回報:",reportStep5Backend:"sensemaker-backend Issues",reportStep5Suffix:"。",frontendIssuesUrl:"https://github.com/g0v/sensemaker-frontend/issues",backendIssuesUrl:"https://github.com/bestian/sensemaker-backend/issues"},guideModal:{title:"歡迎使用 Sensemaker 意見綜整器",description:"Sensemaker 意見綜整器是一個強大的意見調查報告分析工具,可以幫助您從大量意見調查報告中提取有價值的洞察。",sensemakingToolsLink:"2026最新版: 可用OpenRouter 或地端 LM Studio產生完整的互動式 HTML 網頁報告",uberReportExample:"報告實例:「UberX 自用車載客」",polisTitle:"1. Polis意見調查報告導出",polisDescription:"本工具支援 Polis 平台導出的意見調查報告。請確保您的文件符合 Polis 的數據結構。",polisLink:"查看說明 →",openRouterTitle:"2. OpenRouter API 連接",openRouterDescription:"本工具使用 OpenRouter 來連接各種大型語言模型。您需要提供 OpenRouter API Key 才能使用。",openRouterLink:"查看說明 →",sensemakerTitle:"3. Sensemaker 分析",sensemakerDescription:"本工具使用 Sensemaker 進行分析。請參考以下操作說明,進行分析。",sensemakerLink:"了解更多 →",tip:"提示: 如果您是第一次使用,建議先閱讀上述說明文件,以確保正確使用本工具。",dontShowAgain:"不再顯示此提示",iKnow:"我知道了"},openRouterGuide:{title:"OpenRouter 使用指南",step1Title:"進入 OpenRouter 首頁",step1Description:"首先,請前往 OpenRouter 官方網站。OpenRouter 是一個統一的 LLM 介面,提供多種 AI 模型供您選擇。本工具主要使用高品質、深思、平價的<b>GPT-OSS-120B</b>模型。",step1Link:"前往 OpenRouter 首頁:https://openrouter.ai/",step1Tip:"提示:註冊帳號並登入後,請點擊首頁右上的個人頭像,展開下拉選單,以進行後續步驟(儲值 Credits 和申請 API Key)。",step2Title:"儲值 Credits",step2Description:"在使用 OpenRouter 的服務之前,您需要先購買信用點數(Credits)。Credits 可以用於任何模型或提供者,讓您靈活使用不同的 AI 服務。",step2Link:"前往儲值頁面:https://openrouter.ai/settings/credits",step3Title:"申請 API Key",step3Description:"最後,您需要建立一個 API Key 才能開始使用 OpenRouter 的服務。API Key 完全相容於 OpenAI 的格式,可以直接使用。",step3Link:"前往 API Key 設定頁面:https://openrouter.ai/settings/keys",tipsTitle:"重要提示",tip1:"• 請妥善保管您的 API Key,不要分享給他人",tip2:"• API Key 建立後即可立即使用,無需等待審核",tip3:"• 建議定期檢查您的 Credits 餘額,確保服務正常運作",tip4:"• OpenRouter 支援å
4¤šç¨®ä»˜æ¬¾æ–¹å¼ï¼ŒåŒ…括信用卡等",backToHome:"回首頁"},polisGuide:{title:"Polis 使用指南",step1Title:"前往 Polis 首頁",step1Description:"首先,請前往 Polis 官方網站。Polis 是一個用於收集和分析群眾意見的平台,可以幫助您了解不同觀點並進行有意義的意見徵集。",step1Link:"前往 Polis 首頁:https://pol.is/home",step2Title:"註冊帳號與登入",step2Description:"如果您還沒有 Polis 帳號,請先註冊一個新帳號。如果已有帳號,請直接登入。登入後您就可以開始創建和管理對話了。",step2Link:"前往登入/註冊頁面:https://pol.is/signin",step3Title:"在 Polis Dashboard 創建與管理對話",step3Description:"登入後,您會進入 Polis Dashboard。在這裡您可以創建新的對話(Conversation),並管理現有的對話。點擊「Create New Conversation」按鈕即可開始創建新的對話。",step3Link:"前往 Polis Dashboard:https://pol.is/",step4Title:"釋出意見徵集的網址,收集回應",step4Description:"創建對話後,您可以取得意見徵集的網址並分享給參與者。參與者可以透過這個網址進入對話並提供他們的意見。您也可以使用 embed 功能將對話嵌入到您的網站中,讓參與者直接在您的網站上參與意見徵集。",step5Title:"切換到 Reports Tab,創建 Report URL",step5Description:"在對話頁面中,切換到「Reports」標籤頁。在這裡您可以創建報告 URL,用於查看對話的分析結果和統計資料。",step6Title:"進入 Report 頁",step6Description:"在 Reports 標籤頁中,點擊您想要查看的 Report 項目。點擊後會出現連結,再點擊該連結即可進入 Report 頁面,查看詳細的分析結果。",step7Title:"下載 Comments CSV",step7Description:"在 Report 頁面中,向下滾動找到下載選項。您會看到一個下載按鈕,點擊即可下載包含所有評論的 CSV 檔案(檔名格式為 conversation-id-comments.csv)。這個 CSV 檔案包含了對話中的所有評論資料,可以用於進一步的分析。",tipsTitle:"重要提示",tip1:"• 下載的 CSV 檔案包含對話中的所有評論資料",tip2:"• CSV 檔案可以用於匯入到本系統進行進一步的分析",tip3:"• 確保您有權限訪問該對話的 Report 頁面",tip4:"• 如果找不到下載按鈕,請確認您已切換到正確的 Report 頁面",backToHome:"回首頁"},sensemakerGuide:{title:"Sensemaker 使用指南",step1Title:"上傳 Polis 導出的原始檔",step1Description:"首先,請上傳從 Polis 下載的 CSV 檔案。這個檔案包含了所有參與者的評論資料,是進行分析的基礎資料。請確保檔案格式正確,且包含必要的欄位資訊。",step2Title:"輸入 OpenRouter API Key",step2Description:"在對應的欄位中輸入您的 OpenRouter API Key。這個 API Key 用於連接 OpenRouter 服務,讓系統能夠使用 AI 模型進行分析。請確保 API Key 正確且有效。",step3Title:"模型名稱保留 openai/gpt-oss-120b",step3Description:"系統預設使用 <b>openai/gpt-oss-120b</b> 模型進行分析。這是一個高品質、深思且平價的模型,非常適合用於意見分析。建議保持此設定,除非您有特殊需求。",step3Tip:"提示:模型名稱欄位已預設為",step3TipCode:"openai/gpt-oss-120b",step3TipEnd:",通常不需要修改。",step4Title:"輸入額外上下文,優化語言模型的分析脈絡",step4Description:"您可以選擇性地輸入額外的上下文資訊,例如對話的主題背景、相關政策說明、或特定的分析重點。這些資訊可以幫助 AI 模型更準確地理解評論的脈絡,提供更深入的分析結果。",step5Title:"選擇輸出語言",step5Description:"選擇您希望報告使用的語言。例如選擇「中文」後,分析報告將以中文呈現,讓您更容易閱讀和理解分析結果。",step6Title:"開始分析",step6Description:"確認所有設定無誤後,點擊「開始分析」按鈕。系統會開始處理您的資料,這個過程可能需要幾分鐘的時間,請耐心等待。您可以在頁面上看到分析進度的相關資訊。",step7Title:"檢閱並下載 Markdown 報告",step7Description:"分析完成後,系統會生成一份 Markdown 格式的分析報告。您可以在頁面上預覽報告內容,確認無誤後點擊下載按鈕,將報告儲存到您的電腦。報告包含詳細的分析結果、統計資料和洞察建議。",tipsTitle:"重要提示",tip1:"• 確保上傳的 CSV 檔案格式正確,且包含必要的欄位",tip2:"• API Key 請妥善保管,不要分享給他人",tip3:"• 分析過程可能需要幾分鐘,請耐心等待,不要關閉頁面",tip4:"• 下載的 Markdown 報告可以用任何支援 Markdown 的編輯器開啟",tip5:"• 如果分析失敗,請檢查 API Key 是否有效,以及 Credits 餘額是否充足",backToHome:"回首頁"},footer:{description:"強大的 AI 驅動意見綜整工具,專門用於分析大量意見數據並產生有意義的洞察。",communityLinks:"社群連結",jigsawOriginalProject:"Jigsaw原專案",officialDocs:"官方文檔",experimentalVersion:"實驗版本",contactInfo:"聯絡資訊",license:"CC-BY-SA。",sourceCode:"本站原始碼",privacyPolicy:"隱私政策",selfHost:"自行架站",termsOfService:"使用條款"}},Wh={common:{home:"首页",about:"关于",privacy:"隐私权",maintain:"维护测试",selfHost:"自行架站",backToHome:"返回首页",loading:"加载中...",error:"错误",success:"成功",warning:"警告",info:"信息",download:"下载",upload:"上传",submit:"提交",cancel:"取消",save:"保存",edit:"编辑",delete:"删除",close:"关闭",confirm:"确认",yes:"是",no:"否",required:"必填",optional:"可选"}
4,home:{title:"🚀 意见综整器",apiKeyLabel:"🔑 OpenRouter API Key",apiKeyPlaceholder:"请输入您的 OpenRouter API Key",showApiKey:"显示 API 密钥",hideApiKey:"隐藏 API 密钥",getApiKeyLink:"申请 API Key",apiKeyRequired:"此字段为必填,用于连接到 AI 模型服务",invalidApiKey:"无效的 API Key 或模型",privacyNote:"🔒 隐私保护:根据隐私权政策,本站不会将您的API KEY储存在任何地方。如有疑虑,欢迎自行架站后端与前端服务。",modelLabel:"🤖 模型名称:",modelPlaceholder:"openai/gpt-oss-120b",additionalContextLabel:"📝 额外上下文:",additionalContextNote:"帮助AI理解对话背景、增进主题识别的准确性。本项为选填项目。",additionalContextPlaceholder:"描述对话的背景和环境。可留空。",outputLangLabel:"🌐 输出语言:",fileLabel:"📁 上传文件 (polis.tw 导出的 JSON 或 pol.is 导出的 CSV)",startAnalysis:"🚀 开始分析",riskWarning:"⚠️ 警告:由于意见综整器目前还在开发测试中,LLM的回应有其不稳定性,单次报告约有1/6的机率会生成失败,您可以通过重新机制的设定来增加成功率。",processing:"⏳ 处理中...",selectFileFirst:"请选择要上传的文件",taskId:"任务 ID",status:"状态",estimatedTime:"预计完成时间",requestFailed:"❌ 请求失败",requestError:"❌ 请求错误",taskStatus:"📊 任务状态",commentsCount:"评论数量",model:"使用模型",pollingResults:"正在轮询结果...",taskInQueue:"任务已加入队列,将在3分钟后开始检查结果...",taskProcessing:"任务仍在处理中...",taskCompleted:"✅ 分析完成!",commentsProcessed:"处理了 {count} 条评论",completedAt:"完成时间",summary:"摘要",downloadMarkdown:"⬇️ 下载 Markdown",noMarkdownContent:"❌ 没有可下载的 Markdown 内容",downloadFailed:"❌ 下载失败",testLLM:"🔄 正在测试 LLM 连接...",testLLMSuccess:"✅ LLM 测试成功!",testLLMFailed:"❌ LLM 测试失败",testLLMError:"❌ LLM 测试请求错误",testCSV:"❌ 请先选择 CSV 文件",testCSVSuccess:"✅ CSV 解析成功!",testCSVFailed:"❌ CSV 解析失败",testR2:"🔄 正在测试 R2 读写...",testR2Success:"✅ R2 测试成功!",testR2Failed:"❌ R2 测试失败",testR2Error:"❌ R2 测试请求错误",taskFailed:"❌ 任务处理失败",failedAt:"失败时间",errorDetails:"错误详情",errorMessage:"错误信息",detailedError:"详细错误",unknownError:"未知错误",noDetailedError:"无详细错误信息",modelNote:"建议使用gpt-oss-120b模型,若要选用其他推理模型,请参考 OpenRouter 模型列表的说明,以比较各模型的性能与计费标准",modelLinkText:"📋 查看 OpenRouter 模型列表",costNote:"💰 费用估算:使用 gpt-oss-120b 执行分析,依资料量大小,约需花费 $0.05-0.20 美金不等。",timeNote:"⏱️ 时间估算:使用 gpt-oss-120b 执行分析,依资料量大小,约需花费3分钟~30分钟不等。",retryModeLabel:"🔄 重试模式",retryModeStrict:"只跑一次 (严格模式)",retryModeNormal:"自动重试3次 (正常模式)",retryModeCustom:"自定义重试次数",customRetryCountLabel:"重试次数",customRetryCountNote:"请输入 1-10 之间的重试次数",retryingRequest:"🔄 正在重试请求",retrySuccess:"✅ 重试成功",retryFailed:"❌ 重试失败",retryError:"❌ 重试错误",allRetriesFailed:"❌ 所有重试都失败了",outputLangOptions:{en:"English","zh-TW":"繁體中文","zh-CN":"简体中文",ja:"日本語",fr:"Français",es:"Español"}},about:{title:"🚀 关于 Sensemaker 意见综整器",whatIsTitle:"📖 什么是 Sensemaker 意见综整器?",whatIsDescription:"Sensemaker 意见综整器 是一个强大的 AI 驱动工具,专门用于分析大量意见数据并产生有意义的洞察。它能够识别主要共同点和意见分歧,帮助您从海量数据中提取有价值的信息。",
4whatIsDescription2:"这个工具特别适用于审议民主场景,当您使用 Polis 城邦 等异步意见征集工具时,可以帮助处理大量相似或重复的意见,自动生成结构化的分析报告。本站为它部份功能的一个前端实现。",resourcesTitle:"🔗 相关资源",officialDocs:"官方说明文:",openSourceLib:"开源程序库:",experimentalLib:"实验版程序库(本站相容):",experimentalBranch:"请使用 new-feature-open-router 分支",supportedDataTitle:"📊 支持的数据来源",supportedDataDescription:"本工具支持从以下平台导出的报告数据:",polisTWTitle:"🇹🇼 Polis.tw",polisTWDescription:"从 Polis.tw 的报告页面获取数据,需要通过开发者模式提取 API 回应的 JSON 数据。请参考这篇教学中的相关说明。",polisTitle:"🌐 Pol.is",polisDescription:"从 Pol.is 报告页面导出 comments 相关的 CSV 文件,可直接上传使用。",dataFormatTitle:"📋 数据格式要求",polisTWFormatTitle:"🇹🇼 Polis.tw 数据格式",polisTWFormatDescription:"请注意,polis.tw 的数据格式与 Pol.is 不同,polis.tw导出的json格式可以直接使用。",polisFormatTitle:"🌐 Pol.is 数据格式",polisFormatDescription:"pol.is的数据格式,亦可直接上传使用。",useCasesTitle:"🎯 使用场景",useCasesDescription:"Sensemaker 特别适用于以下场景:",deliberativeDemocracy:"审议民主:处理大量公民意见,识别共识和分歧点",policyMaking:"政策制定:分析公众对特定政策的意见分布",productDevelopment:"产品开发:整理用户反馈,识别主要需求和改进点",academicResearch:"学术研究:分析问卷调查或访谈数据",communityManagement:"社群管理:理解社群成员的意见和需求",usageTipsTitle:"💡 使用建议",ensureDataQuality:"确保数据质量,移除重复或无效的意见",provideContext:"提供清晰的上下文描述,帮助 AI 更好地理解数据背景",chooseFormat:"根据分析目的选择合适的输出格式(推荐使用 Markdown 格式)",regularCheck:"定期检查和更新数据,确保分析结果的时效性",getStartedTitle:"🚀 开始使用",readyToStart:"准备好您的数据了吗?前往首页开始上传和分析您的意见数据!"},privacy:{title:"隐私权政策",privacyPolicy:"隐私权政策",privacyDescription:"这款应用程序不会搜集任何个人资料。生成的报告会暂时存储于 R2 存储服务中供您下载,并以唯一的 taskID 识别,其他使用者无法取得或存取您的资料。",dataProcessingTitle:"关于资料处理",backendProcessing:"后端运算:资料会传送到后端进行运算处理,但后端不会储存任何使用者的个人资料和敏感信息,特别是API KEY不会被储存。",noCookies:"无cookies:我们不使用任何 cookies。",openSource:"开源透明:我们的代码完全开源,您可以检视所有功能以确保隐私安全。",frontendProject:"前端项目",backendProject:"后端项目",openSourceNote:"Open Source Transparency: Our code is completely open source, and you can review all functionality to ensure privacy. Check our frontend and backend repositories on GitHub."},selfHost:{title:"🏗️ 自行架站指南",overviewTitle:"📋 概述",overviewDescription:"如果您对隐私和资料安全有疑虑,欢迎 fork 我们的项目并自行架设服务。这样您可以完全控制自己的资料和 API 密钥。",paidPlanTitle:"付费方案需求",paidPlanDescription:"后端服务使用 Cloudflare Queues 功能,需要 Worker 付费方案。免费方案不支持此功能。",backendTitle:"🔧 后端架设 (Cloudflare Worker)",step1Backend:"步骤 1: Fork 后端项目",step1BackendDesc:"前往 sensemaker-backend 项目并 fork 到您的 GitHub 账号",viewBackendProject:"查看后端项目",step2Backend:"步骤 2: 设定 Cloudflare Worker",step2BackendDesc:"在 Cloudflare Dashboard 中创建新的 Worker,并部署您的后端代码",importantNote:"⚠️ 重要提醒:后端会用到 Cloudflare Queues 功能,需要租用 Worker 付费方案。免费方案不支持 Queues。",cloudflareLogin:"登录 Cloudflare Dashboard",createWorker:"创建新的 Worker",uploadCode:"上传您的后端代码",setEnvVars:"设定必要的环境变量",upgradePlan:"升级到付费方案以启用 Queues 功能",frontendTitle:"🎨 前端架设 (Vue.js)",step1Frontend:"步骤 1: Fork 前端项目",step1FrontendDesc:"前往 sensemaker-frontend 项目并 fork 到您的 GitHub 账号",viewFrontendProject:"查看前端项目",step2Frontend:"步骤 2: 修改 API 端点",step2FrontendDesc:"在 src/views/HomeView.vue 中,将 API URL 改为您的 Worker 网址:",originalURL:"原本的 URL",yourURL:"改为您的 URL",
4step3Frontend:"步骤 3: 部署前端",step3FrontendDesc:"您可以选择多种部署方式,建议使用Cloudflare Pages:",cloudflarePages:"Cloudflare Pages: 免费、与 Worker 整合良好",advantagesTitle:"✅ 自行架站的优势",fullControl:"完全控制",fullControlDesc:"您的资料完全由您掌控,不会经过第三方服务器",apiKeyProtection:"API 密钥完全保障",apiKeyProtectionDesc:"您的 API 密钥只存在于您的环境中,不经过第三方服务器处理",customizable:"客制化",customizableDesc:"可以根据需求修改功能和界面",learning:"学习机会",learningDesc:"深入了解现代 Web 开发技术",needHelpTitle:"🆘 需要帮助?",needHelpDesc:"如果在架设过程中遇到问题,欢迎:",openIssue:"在 GitHub 项目中开启 Issue",checkReadme:"查看项目的 README 和 Wiki",joinCommunity:"加入我们的社群讨论"},maintain:{title:"维护测试与报修说明",pageTitle:"维护测试与报修说明",testTitle:"🧪 如何测试流程",testIntro:"本站提供一笔简易测试资料,可用来验证上传、分析与产出摘要的完整流程是否正常。",testDataLabel:"测试资料",testDataPathBefore:"测试用 CSV 位于:data/comments_test.csv(部署后对应网址为",testDataPathAfter:")。",testDataDesc:"该档案为 Polis 汇出的留言格式,内含一笔范例留言,可直接用于「上传 CSV」流程。",testStepsLabel:"测试步骤",step1:"前往",step1Suffix:"。",step2:"在「Open Router API KEY」栏位输入您自己的 Open Router API Key(测试时请使用自己的 Key,本站不会储存)。",step3:"使用预设的 openai/gpt-oss-120b 即可测试。",step4:"点选「选择档案」并上传 data/comments_test.csv(可从上述网址下载后上传)。",step5:"按下「开始分析」,等待处理完成后应会产出摘要;若流程正常即代表测试通过。",apiKeyTitle:"🔑 关于 Open Router API Key",apiKeyDescBefore:"测试时请务必使用您自己的 Open Router API Key。取得方式可参考 ",apiKeyDescAfter:"。本站不会储存或上传您的 API Key 到任何伺服器,仅在浏览器端用于呼叫后端转发至 Open Router。",openRouterGuideLink:"Open Router 使用指南",reportTitle:"🐛 若发生故障,如何报修(贴 Issue)",reportIntro:"若测试过程中出现错误、画面异常或结果不如预期,欢迎到专案 GitHub 回报问题,以利维护者排查与修复。",reportStepsLabel:"报修步骤",reportStep1:"前往前端专案的 Issues 页面:",reportStep2:"点选「New issue」建立新 Issue。",reportStep3:"标题简要描述问题(例如:「上传 comments_test.csv 后分析失败」)。",reportStep4:"内文请尽量包含:",reportStep4Bullet1:"操作步骤(例如:用了测试 CSV、选了哪个模型)。",reportStep4Bullet2:"预期结果 vs 实际结果(例如:预期出现摘要,实际出现错误讯息)。",reportStep4Bullet3:"画面上的错误讯息或截图(若方便)。",reportStep4Bullet4:"浏览器与作业系统(例如 Chrome 120 / macOS)。",reportStep5:"若问题与å
4Žç«¯ API 有关,可同时到后端专案回报:",reportStep5Backend:"sensemaker-backend Issues",reportStep5Suffix:"。",frontendIssuesUrl:"https://github.com/g0v/sensemaker-frontend/issues",backendIssuesUrl:"https://github.com/bestian/sensemaker-backend/issues"},guideModal:{title:"欢迎使用 Sensemaker意见综整器",description:"Sensemaker 意见综整器是一个强大的意见调查报告分析工具,可以帮助您从大量意见调查报告中提取有价值的洞察。",sensemakingToolsLink:"2026最新版: 可用OpenRouter 或本地 LM Studio生成完整的互动式 HTML 网页报告",uberReportExample:"报告实例:「UberX 自用车载客」",polisTitle:"1. Polis意见调查报告导出",polisDescription:"本工具支持 Polis 平台导出的意见调查报告。请确保您的文件符合 Polis 的数据结构。",polisLink:"查看说明 →",openRouterTitle:"2. OpenRouter API 连接",openRouterDescription:"本工具使用 OpenRouter 来连接各种大型语言模型。您需要提供 OpenRouter API Key 才能使用。",openRouterLink:"查看说明 →",sensemakerTitle:"3. Sensemaker 分析",sensemakerDescription:"本工具使用 Sensemaker 进行分析。请参考以下操作说明,进行分析。",sensemakerLink:"了解更多 →",tip:"提示: 如果您是第一次使用,建议先阅读上述说明文件,以确保正确使用本工具。",dontShowAgain:"不再显示此提示",iKnow:"我知道了"},openRouterGuide:{title:"OpenRouter 使用指南",step1Title:"进入 OpenRouter 首页",step1Description:"首先,请前往 OpenRouter 官方网站。OpenRouter 是一个统一的 LLM 界面,提供多种 AI 模型供您选择。本工具主要使用高品质、深思、平价的<b>GPT-OSS-120B</b>模型。",step1Link:"前往 OpenRouter 首页:https://openrouter.ai/",step1Tip:"提示:注册账号并登录后,请点击首页右上的个人头像,展开下拉菜单,以进行后续步骤(储值 Credits 和申请 API Key)。",step2Title:"储值 Credits",step2Description:"在使用 OpenRouter 的服务之前,您需要先购买信用点数(Credits)。Credits 可以用于任何模型或提供者,让您灵活使用不同的 AI 服务。",step2Link:"前往储值页面:https://openrouter.ai/settings/credits",step3Title:"申请 API Key",step3Description:"最后,您需要建立一个 API Key 才能开始使用 OpenRouter 的服务。API Key 完全兼容于 OpenAI 的格式,可以直接使用。",step3Link:"前往 API Key 设置页面:https://openrouter.ai/settings/keys",tipsTitle:"重要提示",tip1:"• 请妥善保管您的 API Key,不要分享给他人",tip2:"• API Key 建立后即可立即使用,无需等待审核",tip3:"• 建议定期检查您的 Credits 余额,确保服务正常运作",tip4:"• OpenRouter 支持多种付款方式,包括信用卡等",backToHome:"返回首页"},polisGuide:{title:"Polis 使用指南",step1Title:"前往 Polis 首页",step1Description:"首先,请前往 Polis 官方网站。Polis 是一个用于收集和分析群众意见的平台,可以帮助您了解不同观点并进行有意义的意见征集。",step1Link:"前往 Polis 首页:https://pol.is/home",step2Title:"注册账号与登录",step2Description:"如果您还没有 Polis 账号,请先注册一个新账号。如果已有账号,请直接登录。登录后您就可以开始创建和管理对话了。",step2Link:"前往登录/注册页面:https://pol.is/signin",step3Title:"在 Polis Dashboard 创建与管理对话",step3Description:"登录后,您会进入 Polis Dashboard。在这里您可以创建新的对话(Conversation),并管理现有的对话。点击「Create New Conversation」按钮即可开始创建新的对话。",step3Link:"前往 Polis Dashboard:https://pol.is/",step4Title:"发布意见征集的网址,收集回应",step4Description:"创建对话后,您可以取得意见征集的网址并分享给参与者。参与者可以通过这个网址进入对话并提供他们的意见。您也可以使用 embed 功能将对话嵌入到您的网站中,让参与者直接在您的网站上参与意见征集。",step5Title:"切换到 Reports Tab,创建 Report URL",step5Description:"在对话页面中,切换到「Reports」标签页。在这里您可以创建报告 URL,用于查看对话的分析结果和统计资料。",step6Title:"进入 Report 页",step6Description:"在 Reports 标签页中,点击您想要查看的 Report 项目。点击后会出现链接ï¼
4Œå†ç‚¹å‡»è¯¥é“¾æŽ¥å³å¯è¿›å…¥ Report 页面,查看详细的分析结果。",step7Title:"下载 Comments CSV",step7Description:"在 Report 页面中,向下滚动找到下载选项。您会看到一个下载按钮,点击即可下载包含所有评论的 CSV 文件(文件名格式为 conversation-id-comments.csv)。这个 CSV 文件包含了对话中的所有评论资料,可以用于进一步的分析。",tipsTitle:"重要提示",tip1:"• 下载的 CSV 文件包含对话中的所有评论资料",tip2:"• CSV 文件可以用于导入到本系统进行进一步的分析",tip3:"• 确保您有权限访问该对话的 Report 页面",tip4:"• 如果找不到下载按钮,请确认您已切换到正确的 Report 页面",backToHome:"返回首页"},sensemakerGuide:{title:"Sensemaker 使用指南",step1Title:"上传 Polis 导出的原始档",step1Description:"首先,请上传从 Polis 下载的 CSV 文件。这个文件包含了所有参与者的评论资料,是进行分析的基础资料。请确保文件格式正确,且包含必要的字段信息。",step2Title:"输入 OpenRouter API Key",step2Description:"在对应的字段中输入您的 OpenRouter API Key。这个 API Key 用于连接 OpenRouter 服务,让系统能够使用 AI 模型进行分析。请确保 API Key 正确且有效。",step3Title:"模型名称保留 openai/gpt-oss-120b",step3Description:"系统预设使用 <b>openai/gpt-oss-120b</b> 模型进行分析。这是一个高品质、深思且平价的模型,非常适合用于意见分析。建议保持此设置,除非您有特殊需求。",step3Tip:"提示:模型名称字段已预设为",step3TipCode:"openai/gpt-oss-120b",step3TipEnd:",通常不需要修改。",step4Title:"输入额外上下文,优化语言模型的分析脉络",step4Description:"您可以选择性地输入额外的上下文信息,例如对话的主题背景、相关政策说明、或特定的分析重点。这些信息可以帮助 AI 模型更准确地理解评论的脉络,提供更深入的分析结果。",step5Title:"选择输出语言",step5Description:"选择您希望报告使用的语言。例如选择「中文」后,分析报告将以中文呈现,让您更容易阅读和理解分析结果。",step6Title:"开始分析",step6Description:"确认所有设置无误后,点击「开始分析」按钮。系统会开始处理您的资料,这个过程可能需要几分钟的时间,请耐心等待。您可以在页面上看到分析进度的相关信息。",step7Title:"检阅并下载 Markdown 报告",step7Description:"分析完成后,系统会生成一份 Markdown 格式的分析报告。您可以在页面上预览报告内容,确认无误后点击下载按钮,将报告保存到您的电脑。报告包含详细的分析结果、统计资料和洞察建议。",tipsTitle:"重要提示",tip1:"• 确保上传的 CSV 文件格式正确,且包含必要的字段",tip2:"• API Key 请妥善保管,不要分享给他人",tip3:"• 分析过程可能需要几分钟,请耐心等待,不要关闭页面",tip4:"• 下载的 Markdown 报告可以用任何支持 Markdown 的编辑器打开",tip5:"• 如果分析失败,请检查 API Key 是否有效,以及 Credits 余额是否充足",backToHome:"返回首页"},footer:{description:"强大的 AI 驱动意见综整工具,专门用于分析大量意见数据并产生有意义的洞察。",communityLinks:"社群链接",jigsawOriginalProject:"Jigsaw原项目",officialDocs:"官方文档",experimentalVersion:"实验版本",contactInfo:"联络信息",license:"CC-BY-SA。",sourceCode:"本站源代码",privacyPolicy:"隐私政策",selfHost:"自行架站",termsOfService:"使用条款"}},qh={common:{home:"Home",about:"About",privacy:"Privacy",maintain:"Maintain & Test",selfHost:"Self-Host",backToHome:"Back to Home",loading:"Loading...",error:"Error",success:"Success",warning:"Warning",info:"Info",download:"Download",upload:"Upload",submit:"Submit",cancel:"Cancel",save:"Save",edit:"Edit",delete:"Delete",close:"Close",confirm:"Confirm",yes:"Yes",no:"No",required:"Required",optional:"Optional"}
4,home:{title:"🚀 Sensemaker",subtitle:"About Sensemaker Opinion Integration Tool",apiKeyLabel:"🔑 OpenRouter API Key",apiKeyPlaceholder:"Please enter your OpenRouter API Key",showApiKey:"Show API key",hideApiKey:"Hide API key",getApiKeyLink:"Get API Key",apiKeyRequired:"This field is required to connect to AI model services",invalidApiKey:"Invalid API Key or model",privacyNote:"🔒 Privacy Protection: According to our privacy policy, this site will not store your API KEY anywhere. If you have concerns, you are welcome to self-host both backend and frontend services.",modelLabel:"🤖 Model Name:",modelPlaceholder:"openai/gpt-oss-120b",additionalContextLabel:"📝 Additional Context:",additionalContextNote:"Help AI understand conversation background and improve topic identification accuracy. This field is optional.",additionalContextPlaceholder:"Describe the background and environment of the conversation. Can be left empty.",outputLangLabel:"🌐 Output Language:",fileLabel:"📁 Upload File (JSON exported from polis.tw or CSV exported from pol.is)",startAnalysis:"🚀 Start Analysis",riskWarning:"⚠️ Warning: Since the opinion integration tool is currently still in development and testing, LLM responses have inherent instability, and there is approximately a 1/6 chance that a single report will fail to generate. You can increase the success rate through retry mechanism settings.",processing:"⏳ Processing...",selectFileFirst:"Please select a file to upload",taskId:"Task ID",status:"Status",estimatedTime:"Estimated Time",requestFailed:"❌ Request failed",requestError:"❌ Request error",taskStatus:"📊 Task Status",commentsCount:"Comments Count",model:"Model Used",pollingResults:"Polling results...",taskInQueue:"Task added to queue, will start checking results in 3 minutes...",taskProcessing:"Task still processing...",taskCompleted:"✅ Analysis completed!",commentsProcessed:"Processed {count} comments",completedAt:"Completed at",summary:"Summary",downloadMarkdown:"⬇️ Download Markdown",noMarkdownContent:"❌ No Markdown content to download",downloadFailed:"❌ Download failed",testLLM:"🔄 Testing LLM connection...",testLLMSuccess:"✅ LLM test successful!",testLLMFailed:"❌ LLM test failed",testLLMError:"❌ LLM test request error",testCSV:"❌ Please select a CSV file first",testCSVSuccess:"✅ CSV parsing successful!",testCSVFailed:"❌ CSV parsing failed",testR2:"🔄 Testing R2 read/write...",testR2Success:"✅ R2 test successful!",testR2Failed:"❌ R2 test failed",testR2Error:"❌ R2 test request error",taskFailed:"❌ Task processing failed",failedAt:"Failed at",errorDetails:"Error Details",errorMessage:"Error Message",detailedError:"Detailed Error",unknownError:"Unknown Error",noDetailedError:"No detailed error information",outputLangOptions:{en:"English","zh-TW":"繁體中文","zh-CN":"简体中文",ja:"日本語",fr:"Français",es:"Español"},modelNote:"We recommend using the gpt-oss-120b model. If you want to use other inference models, please refer to the OpenRouter model list for information to compare the performance and pricing standards of various models",modelLinkText:"📋 View OpenRouter Models",costNote:"💰 Cost Estimate: Using gpt-oss-120b for analysis, depending on data volume, costs approximately $0.05-0.20 USD.",timeNote:"⏱️ Time Estimate: Using gpt-oss-120b for analysis, depending on data volume, takes approximately 3-30 minutes.",retryModeLabel:"🔄 Retry Mode",retryModeStrict:"Run once only (Strict mode)",retryModeNormal:"Auto retry 3 times (Normal mode)",retryModeCustom:"Custom retry count",customRetryCountLabel:"Retry Count",customRetryCountNote:"Please enter a retry count between 1-10",retryingRequest:"🔄 Retrying request",retrySuccess:"✅ Retry successful",retryFailed:"❌ Retry failed",retryError:"❌ Retry error",allRetriesFailed:"❌ All retries failed"},about:{title:"🚀 About Sensemaker Opinion Integration Tool",subtitle:"About Sensemaker Opinion Integration Tool",whatIsTitle:"📖 What is Sensemaker Opinion Integration Tool?",whatIsDescription:"Sensemaker Opinion Integration Tool is a powerful AI-driven tool specifically designed for analyzing large volumes of opinion data and generating meaningful insights. It c
4an identify major commonalities and opinion divergences, helping you extract valuable information from massive datasets.",whatIsDescription2:"This tool is particularly suitable for deliberative democracy scenarios. When you use asynchronous opinion collection tools like Polis, it can help process large amounts of similar or repetitive opinions and automatically generate structured analysis reports. This is a front-end implementation of some of its features.",resourcesTitle:"🔗 Related Resources",resourcesSubtitle:"Related Resources",officialDocs:"Official Documentation:",openSourceLib:"Open Source Library:",experimentalLib:"Experimental Library (compatible with this site):",experimentalBranch:"Please use the new-feature-open-router branch",supportedDataTitle:"📊 Supported Data Sources",supportedDataSubtitle:"Supported Data Sources: This tool supports report data exported from the following platforms",supportedDataDescription:"This tool supports report data exported from the following platforms:",polisTWTitle:"🇹🇼 Polis.tw",polisTWDescription:"Get data from Polis.tw report pages, requires extracting JSON data from API responses through developer mode. Please refer to the relevant instructions in this tutorial.",polisTitle:"🌐 Pol.is",polisDescription:"Export comments-related CSV files from Pol.is report pages, can be uploaded directly.",dataFormatTitle:"📋 Data Format Requirements",dataFormatSubtitle:"Data Format Requirements",polisTWFormatTitle:"🇹🇼 Polis.tw Data Format",polisTWFormatDescription:"Note: Polis.tw data format is different from Pol.is. Currently, the JSON format exported by polis.tw can be used directly.",polisFormatTitle:"🌐 Pol.is Data Format",polisFormatDescription:"For pol.is data format, can be uploaded directly.",useCasesTitle:"🎯 Use Cases",useCasesSubtitle:"Use Cases",useCasesDescription:"Sensemaker is particularly suitable for the following scenarios:",deliberativeDemocracy:"Deliberative Democracy: Process large volumes of citizen opinions, identify consensus and divergence points",policyMaking:"Policy Making: Analyze public opinion distribution on specific policies",productDevelopment:"Product Development: Organize user feedback, identify main needs and improvement points",academicResearch:"Academic Research: Analyze questionnaire surveys or interview data",communityManagement:"Community Management: Understand community members' opinions and needs",usageTipsTitle:"💡 Usage Tips",usageTipsSubtitle:"Usage Tips",ensureDataQuality:"Ensure data quality, remove duplicate or invalid opinions",provideContext:"Provide clear context descriptions to help AI better understand data background",chooseFormat:"Cho
4ose appropriate output format based on analysis purpose (recommended: Markdown format)",regularCheck:"Regularly check and update data to ensure analysis results are timely",getStartedTitle:"🚀 Get Started",getStartedSubtitle:"Get Started",readyToStart:"Ready with your data? Go to the Homepage to start uploading and analyzing your opinion data!"},privacy:{title:"Privacy Policy",privacyPolicy:"Privacy Policy",privacyDescription:"This application does not collect any private data whatsoever. Generated reports are temporarily stored in R2 storage service for your download and cannot be accessed by other users.",privacyPolicyEn:"Privacy Policy",privacyDescriptionEn:"This application does not collect any private data whatsoever. Generated reports are temporarily stored in R2 storage service for your download and cannot be accessed by other users.",dataProcessingTitle:"About Data Processing",backendProcessing:"Backend Processing: Data is sent to our backend for computation, but no user data is stored on our servers, especially API keys are never stored.",noCookies:"No Cookies: We do not use any cookies.",openSource:"Open Source Transparency: Our code is completely open source, and you can review all functionality to ensure privacy.",frontendProject:"Frontend Project",backendProject:"Backend Project",openSourceNote:"Open Source Transparency: Our code is completely open source, and you can review all functionality to ensure privacy. Check our frontend and backend repositories on GitHub."},selfHost:{title:"🏗️ Self-Hosting Guide",overviewTitle:"📋 Overview",overviewDescription:"If you have concerns about privacy and data security, you're welcome to fork our project and self-host the service. This way you have complete control over your data and API keys.",paidPlanTitle:"Paid Plan Requirements",paidPlanDescription:"The backend service uses Cloudflare Queues which requires a paid Worker plan. Free plans do not support this feature.",backendTitle:"🔧 Backend Setup (Cloudflare Worker)",backendSubtitle:"Backend Setup (Cloudflare Worker)",step1Backend:"Step 1: Fork Backend Project",step1BackendDesc:"Go to the sensemaker-backend project and fork it to your GitHub account",viewBackendProject:"View Backend Project",step2Backend:"Step 2: Set up Cloudflare Worker",step2BackendDesc:"Create a new Worker in Cloudflare Dashboard and deploy your backend code",importantNote:"⚠️ Important Note: The backend uses Cloudflare Queues which requires a paid Worker plan. Free plans do not support Queues.",frontendTitle:"🎨 Frontend Setup (Vue.js)",frontendSubtitle:"Frontend Setup (Vue.js)",step1Frontend:"Step 1: Fork Frontend Project",step1FrontendDesc:"Go to the sensemaker-frontend project and fork it to your GitHub account",viewFrontendProject:"View Frontend Project",step2Frontend:"Step 2: Modify API Endpoint",step2FrontendDesc:"In src/views/HomeView.vue, change the API URL to your Worker URL:",originalURL:"Original URL",yourURL:"Your URL",step3Frontend:"Step 3: Deploy Frontend",step3FrontendDesc:"You can choose from multiple deployment methods, we recommend using Cloudflare Pages:",cloudflarePages:"Cloudflare Pages: Free, integrates well with Workers",advantagesTitle:"✅ Advantages of Self-Hosting",fullControl:"Full Control",fullControlDesc:"Your data is completely under your control and will not pass through a third-party server",apiKeyProtection:"Full API Key Protection",apiKeyProtectionDesc:"Your API keys are kept completely within your environment and never passed through a third-party server",customizable:"Customizable",customizableDesc:"You can modify the functionality and interface according to your needs",learning:"Learning Opportunity",learningDesc:"Learn more about modern web development technology",needHelpTitle:"🆘 Need Help?",needHelpSubtitle:"Need Help?",needHelpDesc:"If you encounter problems during setup, you're welcome to:",openIssue:"Open an Issue in the GitHub project",checkReadme:"Check the project's README and Wiki",joinCommunity:"Join our community discussions"},maintain:{title:"Maintain, Test & Report",pageTitle:"Maintain, Test & Report",testTitle:"🧪 How to test",testIntro:"This site provides a simple test dataset to verify that the upload, analysis, and summary pipeline works correctly.",testDataLabel:"Test data",testDataPathBefore:"The test CSV is at data/comments_test.csv (when deployed, the URL is",testDataPathAfter:").",testDataDesc:'The file is in Polis export comment format with one sample comment, and can be used directly in the "Upload CSV" flow.',testStepsLabel:"Test steps",step1:"Go to",step1Suffix:".",step2:'Enter your own Open Router API Key in the "Open Router API KEY" field (use your own key for testing; this site does not store it).',step3:"Use the default openai/gpt-oss-120b to test.",step4:'Click "Choose file" and upload data/comments_test.csv (you can download from the URL above and upload).',step5:'Click "Start analysis" and wait for completion; you should get a summary. If the flow completes, the test passed.',apiKeyTitle:"🔑 About Open Router API Key",apiKeyDescBefore:"You must use your own Open Router API Key when testing. See ",apiKeyDescAfter:" for how to get one. This site does not store or send your API Key to any server; it is only used in the browser to call the backend, which forwards to Open Router.",openRouterGuideLink:"Open Router usage guide",reportTitle:"🐛 How to report issues",reportIntro:"If you see errors, broken UI, or unex
4pected results during testing, please report them on the project GitHub so maintainers can investigate and fix.",reportStepsLabel:"Reporting steps",reportStep1:"Go to the frontend project Issues page:",reportStep2:'Click "New issue" to create a new issue.',reportStep3:'Use a clear title (e.g. "Analysis fails after uploading comments_test.csv").',reportStep4:"In the body, please include when possible:",reportStep4Bullet1:"Steps to reproduce (e.g. used test CSV, which model).",reportStep4Bullet2:"Expected vs actual result (e.g. expected summary, got an error message).",reportStep4Bullet3:"Error message or screenshot from the page.",reportStep4Bullet4:"Browser and OS (e.g. Chrome 120 / macOS).",reportStep5:"If the issue is with the backend API, you can also report to the backend project:",reportStep5Backend:"sensemaker-backend Issues",reportStep5Suffix:".",frontendIssuesUrl:"https://github.com/g0v/sensemaker-frontend/issues",backendIssuesUrl:"https://github.com/bestian/sensemaker-backend/issues"},guideModal:{title:"Welcome to Sensemaker Opinion Integration Tool",description:"Sensemaker Opinion Integration Tool is a powerful opinion survey report analysis tool that can help you extract valuable insights from large volumes of opinion survey reports.",sensemakingToolsLink:"2026 latest: Use OpenRouter or local LM Studio to generate a complete interactive HTML web report",uberReportExample:'Example report: "UberX Private Car Ride-hailing"',polisTitle:"1. Polis Opinion Survey Report Export",polisDescription:"This tool supports opinion survey reports exported from the Polis platform. Please ensure your files conform to Polis data structure.",polisLink:"View Guide →",openRouterTitle:"2. OpenRouter API Connection",openRouterDescription:"This tool uses OpenRouter to connect to various large language models. You need to provide an OpenRouter API Key to use it.",openRouterLink:"View Guide →",sensemakerTitle:"3. Sensemaker Analysis",sensemakerDescription:"This tool uses Sensemaker for analysis. Please refer to the following instructions for analysis.",sensemakerLink:"Learn More →",tip:"Tip: If this is your first time using this tool, we recommend reading the above guide documents first to ensure proper use.",dontShowAgain:"Don't show this tip again",iKnow:"I Understand"},openRouterGuide:{title:"OpenRouter Usage Guide",step1Title:"Go to OpenRouter Homepage",step1Description:"First, please visit the OpenRouter official website. OpenRouter is a unified LLM interface that provides various AI models for you to choose from. This tool mainly uses the high-quality, thoughtful, and affordable <b>GPT-OSS-120B</b> model.",step1Link:"Go to OpenRouter Homepage: https://openrouter.ai/",step1Tip:"Tip: After registering and logging in, please click on the personal avatar in the top right corner of the homepage to expand the dropdown menu for subsequent steps (purchasing Credits and applying for API Key).",step2Title:"Purchase Credits",step2Description:"Before using OpenRouter services, you need to purchase credits first. Credits can be used with any model or provider, allowing you to flexibly use different AI services.",step2Link:"Go to Credits Purchase Page: https://openrouter.ai/settings/credits",step3Title:"Apply for API Key",step3Description:"Finally, you need to create an API Key to start using OpenRouter services. The API Key is fully compatible with OpenAI format and can be used directly.",step3Link:"Go to API Key Settings Page: https://openrouter.ai/settings/keys",tipsTitle:"Important Tips",tip1:"• Please keep your API Key safe and do not share it with others",tip2:"• API Key can be used immediately after creation, no approval needed",tip3:"• It is recommended to regularly check your Credits balance to ensure normal service operation",tip4:"• OpenRouter supports various payment methods, including credit cards",backToHome:"Back to Home"},polisGuide:{title:"Polis Usage Guide",step1Title:"Go to Polis Homepage",step1Description:"First, please visit the Polis official website. Polis is a platform for collecting and analyzing public opinions, helping you understand different perspectives and conduct meaningful opinion collection.",step1Link:"Go to Polis Homepage: https://pol.is/home",step2Title:"Register Account and Login",step2Description:"If you don't have a Polis account yet, please register a new account first. If you already have an account, please log in directly. After logging in, you can start creating and managing conversations.",step2Link:"Go to Login/Registration Page: https://pol.is/signin",step3Title:"Create and Manage Conversations in Polis Dashboard",step3Description:'After logging in, you will enter the Polis Dashboard. Here you can create new conversations and manage existing ones. Click the "Create New Conversation" button to start creating a new conversation.',step3Link:"Go to Polis Dashboard: https://pol.is/",step4Title:"Publish Opinion Collection URL and Collect Responses",step4Description:"After creating a conversation, you can obtain the opinion collection URL and share it with participants. Participants can access the conversation through this URL and provide their opinions. You can also use the embed feature to embed the conversation into your website, allowing participants to participate directly on your website.",step5Title:"Switch to Reports Tab and Create Report URL",step5Description:'In the conversation page, switch to the "Reports" tab. Here you can create report URLs to view anal
4ysis results and statistics of the conversation.',step6Title:"Enter Report Page",step6Description:"In the Reports tab, click on the Report item you want to view. After clicking, a link will appear, then click that link to enter the Report page and view detailed analysis results.",step7Title:"Download Comments CSV",step7Description:"In the Report page, scroll down to find the download option. You will see a download button, click it to download a CSV file containing all comments (filename format: conversation-id-comments.csv). This CSV file contains all comment data from the conversation and can be used for further analysis.",tipsTitle:"Important Tips",tip1:"• The downloaded CSV file contains all comment data from the conversation",tip2:"• CSV files can be imported into this system for further analysis",tip3:"• Ensure you have permission to access the Report page of that conversation",tip4:"• If you cannot find the download button, please confirm you have switched to the correct Report page",backToHome:"Back to Home"},sensemakerGuide:{title:"Sensemaker Usage Guide",step1Title:"Upload Polis Exported Original File",step1Description:"First, please upload the CSV file downloaded from Polis. This file contains all participant comment data and is the foundation for analysis. Please ensure the file format is correct and contains necessary field information.",step2Title:"Enter OpenRouter API Key",step2Description:"Enter your OpenRouter API Key in the corresponding field. This API Key is used to connect to OpenRouter services, allowing the system to use AI models for analysis. Please ensure the API Key is correct and valid.",step3Title:"Keep Model Name as openai/gpt-oss-120b",step3Description:"The system uses the <b>openai/gpt-oss-120b</b> model by default for analysis. This is a high-quality, thoughtful, and affordable model, very suitable for opinion analysis. It is recommended to keep this setting unless you have special requirements.",step3Tip:"Tip: The model name field is preset to",step3TipCode:"openai/gpt-oss-120b",step3TipEnd:", usually no modification is needed.",step4Title:"Enter Additional Context to Optimize Language Model Analysis Context",step4Description:"You can optionally enter additional context information, such as conversation topic background, related policy descriptions, or specific analysis focus points. This information can help AI models more accurately understand comment context and provide deeper analysis results.",step5Title:"Select Output Language",step5Description:'Select the language you want the report to use. For example, after selecting "Chinese", the analysis report will be presented in Chinese, making it easier for you to read and understand the analysis results.',step6Title:"Start Analysis",step6Description:'After confirming all settings are correct, click the "Start Analysis" button. The system will start processing your data. This process may take a few minutes, please wait patiently. You can see analysis progress information on the page.',step7Title:"Review and Download Markdown Report",step7Description:"After analysis is complete, the system will generate a Markdown format analysis report. You can preview the report content on the page, and after confirming it is correct, click the download button to save the report to your computer. The report contains detailed analysis results, statistics, and insight recommendations.",tipsTitle:"Important Tips",tip1:"• Ensure the uploaded CSV file format is correct and contains necessary fields",tip2:"• Please keep your API Key safe and do not share it with others",tip3:"• The analysis process may take a few minutes, please wait patiently and do not close the page",tip4:"• Downloaded Markdown reports can be opened with any Markdown-supporting editor",tip5:"• If analysis fails, please check if the API Key is valid and if Credits balance is sufficient",backToHome:"Back to Home"},footer:{description:"A powerful AI-driven opinion integration tool, specifically designed for analyzing large volumes of opinion data and generating meaningful insights.",communityLinks:"Community Links",jigsawOriginalProject:"Jigsaw Original Project",officialDocs:"Official Documentation",experimentalVersion:"Experimental Version",contactInfo:"Contact Information",license:"CC-BY-SA.",sourceCode:"Source Code",privacyPolicy:"Privacy Policy",selfHost:"Self
4-Host",termsOfService:"Terms of Service"}},zh={common:{home:"ホーム",about:"概要",privacy:"プライバシー",maintain:"保守・テスト",selfHost:"セルフホスト",backToHome:"ホームに戻る",loading:"読み込み中...",error:"エラー",success:"成功",warning:"警告",info:"情報",download:"ダウンロード",upload:"アップロード",submit:"送信",cancel:"キャンセル",save:"保存",edit:"編集",delete:"削除",close:"閉じる",confirm:"確認",yes:"はい",no:"いいえ",required:"必須",optional:"任意"},home:{title:"🚀 Sensemaker",apiKeyLabel:"🔑 OpenRouter API Key",apiKeyPlaceholder:"OpenRouter API Keyを入力してください",showApiKey:"APIキーを表示",hideApiKey:"APIキーを非表示",getApiKeyLink:"API Key を取得",apiKeyRequired:"このフィールドは必須で、AIモデルサービスに接続するために使用されます",invalidApiKey:"無効なAPIキー または モデル",privacyNote:"🔒 プライバシー保護:プライバシーポリシーに従い、このサイトはあなたのAPI KEYをどこにも保存しません。懸念がある場合は、バックエンドとフロントエンドサービスをセルフホストすることをお勧めします。",modelLabel:"🤖 モデル名:",modelPlaceholder:"openai/gpt-oss-120b",additionalContextLabel:"📝 追加コンテキスト:",additionalContextNote:"AIが会話の背景を理解し、トピック識別の精度を向上させるのに役立ちます。本項は任意項目です。",additionalContextPlaceholder:"会話の背景と環境を説明してください。空欄でも構いません。",outputLangLabel:"🌐 出力言語:",fileLabel:"📁 ファイルをアップロード (polis.twからエクスポートされたJSONまたはpol.isからエクスポートされたCSV)",startAnalysis:"🚀 分析を開始",riskWarning:"⚠️ 警告:意見統合ツールは現在まだ開発・テスト段階にあるため、LLMの応答には固有の不安定性があり、単一レポートが生成に失敗する確率は約1/6です。リトライ機能の設定により成功率を向上させることができます。",processing:"⏳ 処理中...",selectFileFirst:"アップロードするファイルを選択してください",taskId:"タスクID",status:"ステータス",estimatedTime:"推定時間",requestFailed:"❌ リクエストが失敗しました",requestError:"❌ リクエストエラー",taskStatus:"📊 タスクステータス",commentsCount:"コメント数",model:"使用モデル",pollingResults:"結果をポーリング中...",taskInQueue:"タスクがキューに追加されました。3分後に結果の確認を開始します...",taskProcessing:"タスクはまだ処理中...",taskCompleted:"✅ 分析が完了しました!",commentsProcessed:"{count}件のコメントを処理しました",completedAt:"完了時刻",summary:"要約",downloadMarkdown:"⬇️ Markdownをダウンロード",noMarkdownContent:"❌ ダウンロード可能なMarkdownコンテンツがありません",downloadFailed:"❌ ダウンロードに失敗しました",testLLM:"🔄 LLM接続をテスト中...",testLLMSuccess:"✅ LLMテストが成功しました!",testLLMFailed:"❌ LLMテストが失敗しました",testLLMError:"❌ LLMテストリクエストエラー",testCSV:"❌ まずCSVファイルを選択してください",testCSVSuccess:"✅ CSV解析が成功しました!",testCSVFailed:"❌ CSV解析が失敗しました",testR2:"🔄 R2読み書きをテスト中...",testR2Success:"✅ R2テストが成功しました!",testR2Failed:"❌ R2テストが失敗しました",testR2Error:"❌ R2テストリクエストエラー",taskFailed:"❌ タスク処理が失敗しました",failedAt:"失敗時刻",errorDetails:"エラー詳細",errorMessage:"エラーメッセージ",detailedError:"詳細エラー",unknownError:"不明なエラー",noDetailedError:"詳細なエラー情報がありません",modelNote:"gpt-oss-120bモデルの使用を推奨します。他の推論モデルを使用したい場合は、OpenRouterモデルリストを参照して、各種モデルの性能と価格設定基準を比較してください",modelLinkText:"📋 OpenRouterモデルを表示",costNote:"💰 費用見積もり:gpt-oss-120bを使用した分析では、データ量に応じて約$0.05-0.20 USDの費用がかかります。",timeNote:"⏱️ 時間見積もり:gpt-oss-120bを使用した分析では、データ量に応じて約3-30分かかります。",retryModeLabel:"🔄 リトライモード",retryModeStrict:"一度だけ実行 (厳格モード)",retryModeNormal:"自動リトライ3回 (通常モード)",retryModeCustom:"カスタムリトライ回数",customRetryCountLabel:"リトライ回数",customRetryCountNote:"1-10の間のリトライ回数を入力してください",retryingRequest:"🔄 リクエストをリトライ中",retrySuccess:"✅ リトライ成功",retryFailed:"❌ リトライ失敗",retryError:"❌ リトライエラー",allRetriesFailed:"❌ すべてのリトライが失敗しました",outputLangOptions:{en:"English","zh-TW":"繁體中文","zh-CN":"简体中文",ja:"日本語",fr:"Français",es:"Español"}}
4,about:{title:"🚀 Sensemaker意見統合ツールについて",whatIsTitle:"📖 Sensemaker意見統合ツールとは?",whatIsDescription:"Sensemaker意見統合ツールは、大量の意見データを分析し、意味のある洞察を生成するために特別に設計された強力なAI駆動ツールです。主要な共通点と意見の相違点を識別し、大量のデータから価値のある情報を抽出するのに役立ちます。",whatIsDescription2:"このツールは特に審議民主主義のシナリオに適しており、Polisなどの非同期意見収集ツールを使用する際に、大量の類似または繰り返しの意見を処理し、構造化された分析レポートを自動生成するのに役立ちます。これはその機能の一部のフロントエンド実装です。",resourcesTitle:"🔗 関連リソース",officialDocs:"公式ドキュメント:",openSourceLib:"オープンソースライブラリ:",experimentalLib:"実験版ライブラリ(このサイトと互換性あり):",experimentalBranch:"new-feature-open-routerブランチを使用してください",supportedDataTitle:"📊 サポートされているデータソース",supportedDataDescription:"このツールは以下のプラットフォームからエクスポートされたレポートデータをサポートしています:",polisTWTitle:"🇹🇼 Polis.tw",polisTWDescription:"Polis.twのレポートページからデータを取得し、開発者モードを通じてAPIレスポンスからJSONデータを抽出する必要があります。このチュートリアルの関連説明を参照してください。",polisTitle:"🌐 Pol.is",polisDescription:"Pol.isレポートページからコメント関連のCSVファイルをエクスポートし、直接アップロードできます。",dataFormatTitle:"📋 データ形式要件",polisTWFormatTitle:"🇹🇼 Polis.twデータ形式",polisTWFormatDescription:"注意:polis.twのデータ形式はPol.isとは異なります。現在、polis.twからエクスポートされたJSON形式は直接使用できます。",polisFormatTitle:"🌐 Pol.isデータ形式",polisFormatDescription:"pol.isのデータ形式も直接アップロードできます。",useCasesTitle:"🎯 使用例",useCasesDescription:"Sensemakerは以下のシナリオに特に適しています:",deliberativeDemocracy:"審議民主主義:大量の市民意見を処理し、コンセンサスと相違点を識別",policyMaking:"政策立案:特定の政策に対する世論の分布を分析",productDevelopment:"製品開発:ユーザーフィードバックを整理し、主要なニーズと改善点を識別",academicResearch:"学術研究:アンケート調査やインタビューデータを分析",communityManagement:"コミュニティ管理:コミュニティメンバーの意見とニーズを理解",usageTipsTitle:"💡 使用のヒント",ensureDataQuality:"データ品質を確保し、重複または無効な意見を削除",provideContext:"明確なコンテキスト説明を提供し、AIがデータの背景をよりよく理解できるようにする",chooseFormat:"分析目的に応じて適切な出力形式を選択(Markdown形式を推奨)",regularCheck:"データを定期的にチェックして更新し、分析結果のタイムリー性を確保",getStartedTitle:"🚀 始めましょう",readyToStart:"データの準備はできていますか?ホームページに移動して意見データのアップロードと分析を開始しましょう!"},privacy:{title:"プライバシーポリシー",privacyPolicy:"プライバシーポリシー",privacyDescription:"このアプリケーションは個人データを一切収集しません。生成されたレポートは一時的にR2ストレージサービスに保存され、あなたがダウンロードできるようになっており、他のユーザーがアクセスすることはできません。",dataProcessingTitle:"データ処理について",backendProcessing:"バックエンド処理:データはバックエンドに送信されて計算されますが、ユーザーデータはサーバーに保存さã
4‚Œã¾ã›ã‚“。特にAPIキーは決して保存されません。",noCookies:"Cookieなし:Cookieは使用しません。",openSource:"オープンソースによる透明性:私たちのコードは完全にオープンソースで、プライバシーを確保するためにすべての機能を確認できます。",frontendProject:"フロントエンドプロジェクト",backendProject:"バックエンドプロジェクト",openSourceNote:"オープンソースによる透明性:私たちのコードは完全にオープンソースで、プライバシーを確保するためにすべての機能を確認できます。GitHubでフロントエンドとバックエンドのリポジトリを確認してください。"},selfHost:{title:"🏗️ セルフホストガイド",overviewTitle:"📋 概要",overviewDescription:"プライバシーとデータセキュリティに懸念がある場合は、私たちのプロジェクトをフォークしてサービスをセルフホストすることを歓迎します。これにより、データとAPIキーを完全に制御できます。",paidPlanTitle:"有料プラン要件",paidPlanDescription:"バックエンドサービスはCloudflare Queuesを使用し、Worker有料プランが必要です。無料プランはこの機能をサポートしていません。",backendTitle:"🔧 バックエンドセットアップ (Cloudflare Worker)",step1Backend:"ステップ1: バックエンドプロジェクトをフォーク",step1BackendDesc:"sensemaker-backendプロジェクトに移動し、GitHubアカウントにフォーク",viewBackendProject:"バックエンドプロジェクトを表示",step2Backend:"ステップ2: Cloudflare Workerを設定",step2BackendDesc:"Cloudflare Dashboardで新しいWorkerを作成し、バックエンドコードをデプロイ",importantNote:"⚠️ 重要な注意:バックエンドはCloudflare Queuesを使用し、Worker有料プランが必要です。無料プランはQueuesをサポートしていません。",frontendTitle:"🎨 フロントエンドセットアップ (Vue.js)",step1Frontend:"ステップ1: フロントエンドプロジェクトをフォーク",step1FrontendDesc:"sensemaker-frontendプロジェクトに移動し、GitHubアカウントにフォーク",viewFrontendProject:"フロントエンドプロジェクトを表示",step2Frontend:"ステップ2: APIエンドポイントを変更",step2FrontendDesc:"src/views/HomeView.vueで、API URLをWorker URLに変更:",originalURL:"元のURL",yourURL:"あなたのURL",step3Frontend:"ステップ3: フロントエンドをデプロイ",step3FrontendDesc:"複数のデプロイ方法から選択でき、Cloudflare Pagesの使用を推奨:",cloudflarePages:"Cloudflare Pages: 無料、Workerと統合良好",advantagesTitle:"✅ セルフホストの利点",fullControl:"完全制御",fullControlDesc:"データは完全にあなたの制御下にあり、サードパーティサーバーを経由しません",apiKeyProtection:"APIキー完全保護",apiKeyProtectionDesc:"APIキーは環境内に完全に保持され、サードパーティサーバーを経由しません",customizable:"カスタマイズ可能",customizableDesc:"ニーズに応じて機能とインターフェースを変更できます",learning:"学習機会",learningDesc:"現代のWeb開発技術についてより深く学ぶ",needHelpTitle:"🆘 ヘルプが必要ですか?",needHelpDesc:"セットアップ中に問題が発生した場合は、以下を歓迎します:",openIssue:"GitHubプロジェクトでIssueを開く",checkReadme:"プロジェクトのREADMEとWikiを確認",joinCommunity:"コミュニティディスカッションに参加"},maintain:{title:"保守・テストと不具合報告",pageTitle:"保守・テストと不具合報告",testTitle:"🧪 テスト方法",testIntro:"このサイトでは、アップロード・分析・要約の一連の流れが正しく動作するかを確認するための簡単なテストデータを提供しています。",testDataLabel:"テストデータ",testDataPathBefore:"テスト用CSVは data/comments_test.csv にあります(デプロイ後ã
4®URLは",testDataPathAfter:")。",testDataDesc:"Polisエクスポートのコメント形式でサンプルコメント1件を含み、「CSVアップロード」フローでそのまま利用できます。",testStepsLabel:"テスト手順",step1:"まず",step1Suffix:"へ。",step2:"「Open Router API KEY」欄にご自身の Open Router API Key を入力(テストではご自身のKeyを使用してください。当サイトでは保存しません)。",step3:"既定の openai/gpt-oss-120b でテストできます。",step4:"「ファイルを選択」をクリックし、data/comments_test.csv をアップロード(上記URLからダウンロードしてアップロード可能)。",step5:"「分析開始」をクリックし、完了まで待つ。要約が表示されればテスト成功です。",apiKeyTitle:"🔑 Open Router API Key について",apiKeyDescBefore:"テスト時は必ずご自身の Open Router API Key を使用してください。取得方法は ",apiKeyDescAfter:" を参照してください。当サイトはAPI Keyをサーバーに保存・送信せず、ブラウザ内でバックエンドを呼び出し、Open Router に転送するのみです。",openRouterGuideLink:"Open Router 使用ガイド",reportTitle:"🐛 不具合の報告方法",reportIntro:"テスト中にエラー、表示崩れ、想定外の結果があった場合は、GitHub のプロジェクトで報告していただけると保守担当が調査・修正できます。",reportStepsLabel:"報告手順",reportStep1:"フロントエンドプロジェクトの Issues ページへ:",reportStep2:"「New issue」をクリックして新規 Issue を作成。",reportStep3:"タイトルで内容を簡潔に(例:「comments_test.csv アップロード後に分析が失敗」)。",reportStep4:"本文に可能な範囲で含めてください:",reportStep4Bullet1:"再現手順(例:テストCSV使用、使用モデル)。",reportStep4Bullet2:"期待結果 vs 実際の結果(例:要約を期待、エラーメッセージが表示)。",reportStep4Bullet3:"画面のエラーメッセージまたはスクリーンショット。",reportStep4Bullet4:"ブラウザとOS(例:Chrome 120 / macOS)。",reportStep5:"バックエンドAPIに関する問題の場合は、バックエンドプロジェクトでも報告できます:",reportStep5Backend:"sensemaker-backend Issues",reportStep5Suffix:"。",frontendIssuesUrl:"https://github.com/g0v/sensemaker-frontend/issues",backendIssuesUrl:"https://github.com/bestian/sensemaker-backend/issues"},guideModal:{title:"Sensemaker意見統合ツールへようこそ",description:"Sensemaker意見統合ツールは、大量の意見調査レポートから価値のある洞察を抽出するのに役立つ強力な意見調査レポート分析ツールです。",sensemakingToolsLink:"2026年最新版: OpenRouterまたはローカルのLM Studioで完全なインタラクティブHTMLウェブレポートを生成できます",uberReportExample:"レポート実例:「UberX 自家用車による旅客運送」",polisTitle:"1. Polis意見調査レポートのエクスポート",polisDescription:"このツールは、Polisプラットフォームからエクスポートされた意見調査レポートをサポートしています。ファイルがPolisのデータ構造に準拠していることを確認してください。",polisLink:"ガイドを表示 →",openRouterTitle:"2. OpenRouter API接続",openRouterDescription:"このツールは、OpenRouterを使用してさまざまな大規模言語モデルに接続します。使用するには、OpenRouter API Keyを提供する必要があります。",openRouterLink:"ガイドを表示 →",sensemakerTitle:"3. Sensemaker分析",sensemakerDescription:"このツールは、分析にSensemakerを使用します。以下の操作手順を参照して分析を実行してください。",sensemakerLink:"詳細を見る →",tip:"ヒント:初めてこのツールを使用する場合は、まず上記のガイドドキュメントを読むことをお勧めします。",dontShowAgain:"このヒントを再度表示しない",iKnow:"了解しました"},openRouterGuide:{title:"OpenRouter使用ガイド",step1Title:"OpenRouterホームページにアクセス",step1Description:"まず、OpenRouter公式ウェブサイトにアクセスしてください。OpenRouterは、選択できるさまざまなAIモデルを提供する統一LLMインターフェースです。このツールは主に高品質で思慮深く、手頃な価格の<b>GPT-OSS-120B</b>モデルを使用します。",step1Link:"OpenRouterホームページへ:https://openrouter.ai/",step1Tip:"ヒント:アカウントを登録してログインした後、ホームページ右上の個人アバターをクリックしてドロップダウンメニューを展開し、次のステップ(Creditsの購入とAPI Keyの申請)を実行してください。",step2Title:"Creditsを購入",step2Description:"OpenRouterサービスを使用する前に、まずクレジット(Credits)を購入する必要があります。Creditsは任意のモデルまたはプロバイダーで使用でき、さまざまなAIサービスを柔軟に使用できます。",step2Link:"Credits購入ページへ:https://openrouter.ai/settings/credits",step3Title:"API Keyを申請",step3Description:"最後に、OpenRouterサービスを使用開始するには、API Keyを作成する必要があります。API KeyはOpenAI形式と完å
4…¨ã«äº’換性があり、直接使用できます。",step3Link:"API Key設定ページへ:https://openrouter.ai/settings/keys",tipsTitle:"重要なヒント",tip1:"• API Keyを適切に保管し、他人と共有しないでください",tip2:"• API Keyは作成後すぐに使用でき、承認を待つ必要はありません",tip3:"• サービスが正常に動作するように、Creditsの残高を定期的に確認することをお勧めします",tip4:"• OpenRouterはクレジットカードなど、さまざまな支払い方法をサポートしています",backToHome:"ホームに戻る"},polisGuide:{title:"Polis使用ガイド",step1Title:"Polisホームページにアクセス",step1Description:"まず、Polis公式ウェブサイトにアクセスしてください。Polisは、一般の意見を収集および分析するためのプラットフォームで、異なる視点を理解し、意味のある意見収集を行うのに役立ちます。",step1Link:"Polisホームページへ:https://pol.is/home",step2Title:"アカウント登録とログイン",step2Description:"まだPolisアカウントをお持ちでない場合は、まず新しいアカウントを登録してください。既にアカウントをお持ちの場合は、直接ログインしてください。ログイン後、会話の作成と管理を開始できます。",step2Link:"ログイン/登録ページへ:https://pol.is/signin",step3Title:"Polisダッシュボードで会話を作成および管理",step3Description:"ログイン後、Polisダッシュボードに入ります。ここで新しい会話(Conversation)を作成し、既存の会話を管理できます。「Create New Conversation」ボタンをクリックして、新しい会話の作成を開始します。",step3Link:"Polisダッシュボードへ:https://pol.is/",step4Title:"意見収集URLを公開し、回答を収集",step4Description:"会話を作成した後、意見収集URLを取得して参加者と共有できます。参加者はこのURLを通じて会話にアクセスし、意見を提供できます。embed機能を使用して、会話をウェブサイトに埋め込むこともでき、参加者が直接ウェブサイト上で意見収集に参加できるようにします。",step5Title:"Reportsタブに切り替えてReport URLを作成",step5Description:"会話ページで「Reports」タブに切り替えます。ここでレポートURLを作成し、会話の分析結果と統計を表示できます。",step6Title:"Reportページに入る",step6Description:"Reportsタブで、表示したいReport項目をクリックします。クリックするとリンクが表示され、そのリンクをクリックしてReportページに入り、詳細な分析結果を表示できます。",step7Title:"Comments CSVをダウンロード",step7Description:"Reportページで、下にスクロールしてダウンロードオプションを見つけます。ダウンロードボタンが表示されます。クリックすると、すべてのコメントを含むCSVファイルをダウンロードできます(ファイル名形式:conversation-id-comments.csv)。このCSVファイルには、会話内のすべてのコメントデータが含まれており、さらなる分析に使用できます。",tipsTitle:"重要なヒント",tip1:"• ダウンロードしたCSVファイルには、会話内のすべてのコメントデータが含まれています",tip2:"• CSVファイルは、このシステムにインポートしてさらなる分析に使用できます",tip3:"• その会話のReportページにアクセスする権限があることを確認してください",tip4:"• ダウンロードボタンが見つからない場合は、正しいReportページに切り替えたことを確認してください",backToHome:"ホームに戻る"},sensemakerGuide:{title:"Sensemaker使用ガイド",step1Title:"Polisからエクスポートされた元のファイルをアップロード",step1Description:"まず、PolisからダウンロードしたCSVファイルをアップロードしてください。このファイルには、すべての参加者のコメントデータが含まれており、分析の基礎データです。ファイル形式が正しく、必要なフィールド情報が含まれていることを確認してください。",step2Title:"OpenRouter API Keyを入力",step2Description:"対応するフィールドにOpenRouter API Keyを入力してください。このAPI Keyは、OpenRouterサービスに接続するために使用され、システムがAIモデルを使用して分析できるようにします。API Keyが正しく有効であることを確認してください。",step3Title:"モデル名をopenai/gpt-oss-120bのままにする",step3Description:"システムは、分析に<b>openai/gpt-oss-120b</b>モデルをデフォルトで使用します。これは高品質で思慮深く、手頃な価格のモデルで、意見分析に非常に適しています。特別な要件がない限り、この設定を維持することをお勧めします。",step3Tip:"ヒント:モデル名フィールドは",step3TipCode:"openai/gpt-oss-120b",step3TipEnd:"に事前設定されており、通常は変更する必要はありません。",step4Title:"追加のコンテキストを入力して、言語モデルの分析コンテキストを最適化",step4Description:"オプションで、会話のトピック背景、関連するポリシー説明、または特定の分析焦点などの追加のコンテキスト情報を入力できます。この情報は、AIモデルがコメントのコンテキストをより正確に理解し、より深い分析結果を提供するのに役立ちます。",step5Title:"出力言語を選択",step5Description:"レポートに使用する言語を選択してください。たとえば、「中文」を選択すると、分析レポートは中文で表示され、分析結果を読みやすく理解しやすくなります。",step6Title:"分析を開始",step6Description:"すべての設定が正しいことを確認したら、「分析を開始」ボタンをクリックしてください。システムはデータの処理を開始します。このプロセスには数分かかる場合があるため、しばらくお待ちください。ページで分析の進行状況情報を確認できます。",step7Title:"Markdownレポートを確認してダウンロード",step7Description:"分析が完了すると、システムはMarkdown形式の分析レポートを生成します。ページでレポート内容をプレビューし、正しいことを確認したら、ダウンロードボタンをクリックしてレポートをコンピューターに保存します。レポートには、詳細な分析結果、統計、洞察の推奨事項が含まれています。",tipsTitle:"重要なヒント",tip1:"• アップロードしたCSVファイルの形式が正しく、必要なフィールドが含まれていることを確認してください",tip2:"• API Keyを適切に保管し、他人と共有しないでください",tip3:"• 分析プロセスには数分かかる場合があるため、しばらくお待ちください。ページを閉じないでください",tip4:"• ダウンロードしたMarkdownレポートは、Markdownをサポートする任意のエディタで開くことができます",tip5:"• 分析が失敗した場合は、API Keyが有効かどうか、およびCreditsの残高が十分かどうかを確認してください",backToHome:"ホームに戻る"},footer:{description:"大量の意見データを分析し、意味のある洞察を生成するために特別に設計された強力なAI駆動の意見統合ツール。",communityLinks:"コミュニティリンク",jigsawOriginalProject:"Jigsawオリジナルプロジェクト",officialDocs:"公式ドキュメント",experimentalVersion:"実験版",contactInfo:"連絡先情報",license:"CC-BY-SA。",sourceCode:"ソースコード",privacyPolicy:"プライバシーポリシー",selfHost:"セルフホスト",termsOfService:"利用規約"}},Gh={common:{home:"Accueil",about:"À propos",privacy:"Confidentialité",maintain:"Maintenance et test",selfHost:"Auto-hébergement",backToHome:"Retour à l'accueil",loading:"Chargement...",error:"Erreur",success:"Succès",warning:"Avertissement",info:"Information",download:"Télécharger",upload:"Téléverser",submit:"Soumettre",cancel:"Annuler",save:"Sauvegarder",edit:"Modifier",delete:"Supprimer",close:"Fermer",confirm:"Confirmer",yes:"Oui",no:"Non",required:"Requis",optional:"Optionnel"}
4,home:{title:"🚀 Sensemaker",apiKeyLabel:"🔑 Clé API OpenRouter",apiKeyPlaceholder:"Veuillez entrer votre clé API OpenRouter",showApiKey:"Afficher la clé API",hideApiKey:"Masquer la clé API",getApiKeyLink:"Obtenir la clé API",apiKeyRequired:"Ce champ est requis pour se connecter aux services de modèles IA",invalidApiKey:"Cle API invalide ou modèle",privacyNote:"🔒 Protection de la vie privée : Selon notre politique de confidentialité, ce site ne stockera votre clé API nulle part. Si vous avez des préoccupations, vous êtes invités à auto-héberger les services backend et frontend.",modelLabel:"🤖 Nom du modèle :",modelPlaceholder:"openai/gpt-oss-120b",additionalContextLabel:"📝 Contexte supplémentaire :",additionalContextNote:"Aide l'IA à comprendre le contexte de la conversation et améliore la précision de l'identification des sujets. Ce champ est optionnel.",additionalContextPlaceholder:"Décrivez le contexte et l'environnement de la conversation. Peut être laissé vide.",outputLangLabel:"🌐 Langue de sortie :",fileLabel:"📁 Téléverser un fichier (JSON exporté depuis polis.tw ou CSV exporté depuis pol.is)",startAnalysis:"🚀 Commencer l'analyse",riskWarning:"⚠️ Avertissement : Étant donné que l'outil d'intégration d'opinions est actuellement encore en développement et en test, les réponses LLM ont une instabilité inhérente, et il y a approximativement une chance sur 6 qu'un rapport unique échoue à se générer. Vous pouvez augmenter le taux de succès grâce aux paramètres du mécanisme de nouvelle tentative.",processing:"⏳ Traitement...",selectFileFirst:"Veuillez sélectionner un fichier à téléverser",taskId:"ID de tâche",status:"Statut",estimatedTime:"Temps estimé",requestFailed:"❌ Échec de la requête",requestError:"❌ Erreur de requête",taskStatus:"📊 Statut de la tâche",commentsCount:"Nombre de commentaires",model:"Modèle utilisé",pollingResults:"Interrogation des résultats...",taskInQueue:"Tâche ajoutée à la file d'attente, début de la vérification des résultats dans 3 minutes...",taskProcessing:"Tâche encore en cours de traitement...",taskCompleted:"✅ Analyse terminée !",commentsProcessed:"Traité {count} commentaires",completedAt:"Terminé à",summary:"Résumé",downloadMarkdown:"⬇️ Télécharger Markdown",noMarkdownContent:"❌ Aucun contenu Markdown à télécharger",downloadFailed:"❌ Échec du téléchargement",testLLM:"🔄 Test de connexion LLM...",testLLMSuccess:"✅ Test LLM réussi !",testLLMFailed:"❌ Échec du test LLM",testLLMError:"❌ Erreur de requête de test LLM",testCSV:"❌ Veuillez d'abord sélectionner un fichier CSV",testCSVSuccess:"✅ Analyse CSV réussie !",testCSVFailed:"❌ Échec de l'analyse CSV",testR2:"🔄 Test de lecture/écriture R2...",testR2Success:"✅ Test R2 réussi !",testR2Failed:"❌ Échec du test R2",testR2Error:"❌ Erreur de requête de test R2",taskFailed:"❌ Échec du traitement de la tâche",failedAt:"Échoué à",errorDetails:"Détails de l'erreur",errorMessage:"Message d'erreur",detailedError:"Erreur détaillée",unknownError:"Erreur inconnue",noDetailedError:"Aucune information d'erreur détaillée",modelNote:"Nous recommandons d'utiliser le modèle gpt-oss-120b. Si vous souhaitez utiliser d'autres modèles d'inférence, veuillez consulter la liste des modèles OpenRouter pour obtenir des informations afin de comparer les performances et les standards de tarification de divers modèles",modelLinkText:"📋 Voir les modèles OpenRouter",costNote:"💰 Estimation des coûts : Utilisation de gpt-oss-120b pour l'analyse, selon le volume de données, coûte environ 0,05-0,20 USD.",timeNote:"⏱️ Estimation du temps : Utilisation de gpt-oss-120b pour l'analyse, selon le volume de données, prend environ 3-30 minutes.",retryModeLabel:"🔄 Mode de nouvelle tentative",retryModeStrict:"Exécuter une seule fois (Mode strict)",retryModeNormal:"Nouvelle tentative automatique 3 fois (Mode normal)",retryModeCustom:"Nombre de nouvelles tentatives personnalisé",customRetryCountLabel:"Nombre de nouvelles tentatives",customRetryCountNote:"Veuillez entrer un nombre de nouvelles tentatives entre 1-10",retryingRequest:"🔄 Nouvelle tentative de requête",retrySuccess:"✅ Nouvelle tentative réussie",retryFailed:"❌ Nouvelle tentative échouée",retryError:"❌ Erreur de nouvelle tentative",allRetriesFailed:"❌ Toutes les n
4ouvelles tentatives ont échoué",outputLangOptions:{en:"English","zh-TW":"繁體中文","zh-CN":"简体中文",ja:"日本語",fr:"Français",es:"Español"}},about:{title:"🚀 À propos de l'outil d'intégration d'opinions Sensemaker",whatIsTitle:"📖 Qu'est-ce que l'outil d'intégration d'opinions Sensemaker ?",whatIsDescription:"L'outil d'intégration d'opinions Sensemaker est un outil puissant alimenté par l'IA, spécialement conçu pour analyser de gros volumes de données d'opinion et générer des insights significatifs. Il peut identifier les points communs majeurs et les divergences d'opinion, vous aidant à extraire des informations précieuses de datasets massifs.",whatIsDescription2:"Cet outil est particulièrement adapté aux scénarios de démocratie délibérative. Lorsque vous utilisez des outils de collecte d'opinions asynchrones comme Polis, il peut aider à traiter de grandes quantités d'opinions similaires ou répétitives et générer automatiquement des rapports d'analyse structurés. Ceci est une implémentation frontend de certaines de ses fonctionnalités.",resourcesTitle:"🔗 Ressources connexes",officialDocs:"Documentation officielle :",openSourceLib:"Bibliothèque open source :",experimentalLib:"Bibliothèque expérimentale (compatible avec ce site) :",experimentalBranch:"Veuillez utiliser la branche new-feature-open-router",supportedDataTitle:"📊 Sources de données prises en charge",supportedDataDescription:"Cet outil prend en charge les données de rapport exportées depuis les plateformes suivantes :",polisTWTitle:"🇹🇼 Polis.tw",polisTWDescription:"Obtenir des données depuis les pages de rapport Polis.tw, nécessite l'extraction de données JSON depuis les réponses API via le mode développeur. Veuillez vous référer aux instructions pertinentes dans ce tutoriel.",polisTitle:"🌐 Pol.is",polisDescription:"Exporter des fichiers CSV liés aux commentaires depuis les pages de rapport Pol.is, peut être téléversé directement.",dataFormatTitle:"📋 Exigences de format de données",polisTWFormatTitle:"🇹🇼 Format de données Polis.tw",polisTWFormatDescription:"Note : Le format de données polis.tw est différent de Pol.is. Actuellement, le format JSON exporté par polis.tw peut être utilisé directement.",polisFormatTitle:"🌐 Format de données Pol.is",polisFormatDescription:"Pour le format de données pol.is, peut être téléversé directement.",useCasesTitle:"🎯 Cas d'usage",useCasesDescription:"Sensemaker est particulièrement adapté aux scénarios suivants :",deliberativeDemocracy:"Démocratie délibérative : Traiter de gros volumes d'opinions citoyennes, identifier les consensus et points de divergence",policyMaking:"Élaboration de politiques : Analyser la distribution de l'opinion publique sur des politiques spécifiques",productDevelopment:"Développement de produits : Organiser les retours utilisateurs, identifier les besoins principaux et points d'amélioration",academicResearch:"Recherche académique : Analyser les enquêtes ou données d'entretien",communityManagement:"Gestion de communauté : Comprendre les opinions et besoins des membres de la communauté",usageTipsTitle:"💡 Conseils d'utilisation",ensureDataQuality:"Assurer la qualité des données, supprimer les opinions en double ou invalides",provideContext:"Fournir des descriptions de contexte claires pour aider l'IA à mieux comprendre l'arrière-plan des données",chooseFormat:"Choisir le format de sortie approprié selon le but de l'analyse (recommandé : format Markdown)",regularCheck:"Vérifier et mettre à jour régulièrement les données pour assurer la pertinence des résultats d'analyse",getStartedTitle:"🚀 Commencer",readyToStart:"Prêt avec vos données ? Allez à la page d'accueil pour commencer à téléverser et analyser vos données d'opinion !"},privacy:{title:"Politique de confidentialité",privacyPolicy:"Politique de confidentialité",privacyDescription:"Cette application ne collecte aucune donnée personnelle. Les rapports générés sont temporairement stockés dans le service de stockage R2 pour votre téléchargement et ne peuvent pas être c
4onsultés par d'autres utilisateurs.",dataProcessingTitle:"À propos du traitement des données",backendProcessing:"Traitement backend : Les données sont envoyées à notre backend pour calcul, mais aucune donnée utilisateur n'est stockée sur nos serveurs, surtout les clés API ne sont jamais stockées.",noCookies:"Pas de cookies : Nous n'utilisons aucun cookie.",openSource:"Transparence open source : Notre code est complètement open source, et vous pouvez examiner toutes les fonctionnalités pour assurer la confidentialité.",frontendProject:"Projet frontend",backendProject:"Projet backend",openSourceNote:"Transparence open source : Notre code est complètement open source, et vous pouvez examiner toutes les fonctionnalités pour assurer la confidentialité. Consultez nos dépôts frontend et backend sur GitHub."},selfHost:{title:"🏗️ Guide d'auto-hébergement",overviewTitle:"📋 Aperçu",overviewDescription:"Si vous avez des préoccupations concernant la confidentialité et la sécurité des données, vous êtes invités à forker notre projet et auto-héberger le service. De cette façon, vous avez un contrôle complet sur vos données et clés API.",paidPlanTitle:"Exigences de plan payant",paidPlanDescription:"Le service backend utilise Cloudflare Queues qui nécessite un plan Worker payant. Les plans gratuits ne prennent pas en charge cette fonctionnalité.",backendTitle:"🔧 Configuration backend (Cloudflare Worker)",step1Backend:"Étape 1 : Forker le projet backend",step1BackendDesc:"Aller au projet sensemaker-backend et le forker vers votre compte GitHub",viewBackendProject:"Voir le projet backend",step2Backend:"Étape 2 : Configurer Cloudflare Worker",step2BackendDesc:"Créer un nouveau Worker dans Cloudflare Dashboard et déployer votre code backend",importantNote:"⚠️ Note importante : Le backend utilise Cloudflare Queues qui nécessite un plan Worker payant. Les plans gratuits ne prennent pas en charge Queues.",frontendTitle:"🎨 Configuration frontend (Vue.js)",step1Frontend:"Étape 1 : Forker le projet frontend",step1FrontendDesc:"Aller au projet sensemaker-frontend et le forker vers votre compte GitHub",viewFrontendProject:"Voir le projet frontend",step2Frontend:"Étape 2 : Modifier le point de terminaison API",step2FrontendDesc:"Dans src/views/HomeView.vue, changer l'URL API vers votre URL Worker :",originalURL:"URL originale",yourURL:"Votre URL",step3Frontend:"Étape 3 : Déployer le frontend",step3FrontendDesc:"Vous pouvez choisir parmi plusieurs méthodes de déploiement, nous recommandons d'utiliser Cloudflare Pages :",cloudflarePages:"Cloudflare Pages : Gratuit, s'intègre bien avec Workers",advantagesTitle:"✅ Avantages de l'auto-hébergement",fullControl:"Contrôle complet",fullControlDesc:"Vos données sont complètement sous votre contrôle et ne passeront pas par un serveur tiers",apiKeyProtection:"Protection complète des clés API",apiKeyProtectionDesc:"Vos clés API sont gardées complètement dans votre environnement et ne passent jamais par un serveur tiers",customizable:"Personnalisable",customizableDesc:"Vous pouvez modifier les fonctionnalités et l'interface selon vos besoins",learning:"Opportunité d'apprentissage",learningDesc:"En savoir plus sur la technologie de développement web moderne",needHelpTitle:"🆘 Besoin d'aide ?",needHelpDesc:"Si vous rencontrez des problèmes lors de la configuration, vous êtes invités à :",openIssue:"Ouvrir un Issue dans le projet GitHub",checkReadme:"Vérifier le README et Wiki du projet",joinCommunity:"Rejoindre nos discussions communautaires"},maintain:{title:"Maintenance, test et signalement",pageTitle:"Maintenance, test et signalement",testTitle:"🧪 Comment tester",testIntro:"Ce site fournit un jeu de données de test simple pour vérifier que le flux d'upload, d'analyse et de résumé fonctionne correctement.",testDataLabel:"Données de test",testDataPathBefore:"Le CSV de test est dans data/comments_test.csv (une fois déployé, l'URL est",testDataPathAfter:").",testDataDesc:"Le fichier est au format d'export de commentaires Polis avec un commentaire exemple, et peut être utilisé directement dans le flux « Upload CSV ».",testStepsLabel:"Étapes de test",step1:"Aller à",step1Suffix:".",step2:"Saisissez votre propre clé API Open Router dans le champ « Open Router API KEY » (utilisez votre propre clé pour les tests ; ce site ne la stocke pas).",step3:"Utilisez le modèle par défaut openai/gpt-oss-120b pour tester.",step4:"Cliquez sur « Choisir un fichier » et uploadez data/comments_test.csv (vous pouvez télécharger depuis l'URL ci-dessus puis uploadez).",step5:"Cliquez sur « Démarrer l'analyse » et attendez la fin ;
4 vous devriez obtenir un résumé. Si le flux se termine, le test est réussi.",apiKeyTitle:"🔑 À propos de la clé API Open Router",apiKeyDescBefore:"Vous devez utiliser votre propre clé API Open Router lors des tests. Consultez ",apiKeyDescAfter:" pour en obtenir une. Ce site ne stocke ni n'envoie votre clé API à aucun serveur ; elle est uniquement utilisée dans le navigateur pour appeler le backend, qui relaie vers Open Router.",openRouterGuideLink:"Guide d'utilisation Open Router",reportTitle:"🐛 Comment signaler un problème",reportIntro:"Si vous constatez des erreurs, une interface cassée ou des résultats inattendus pendant les tests, merci de les signaler sur le GitHub du projet pour que les mainteneurs puissent enquêter et corriger.",reportStepsLabel:"Étapes pour signaler",reportStep1:"Aller sur la page Issues du projet frontend :",reportStep2:"Cliquez sur « New issue » pour créer une nouvelle issue.",reportStep3:"Utilisez un titre clair (ex. « L'analyse échoue après upload de comments_test.csv »).",reportStep4:"Dans le corps, indiquez si possible :",reportStep4Bullet1:"Les étapes pour reproduire (ex. CSV de test, quel modèle).",reportStep4Bullet2:"Résultat attendu vs réel (ex. attendu un résumé, obtenu un message d'erreur).",reportStep4Bullet3:"Le message d'erreur ou une capture d'écran de la page.",reportStep4Bullet4:"Navigateur et OS (ex. Chrome 120 / macOS).",reportStep5:"Si le problème concerne l'API backend, vous pouvez aussi signaler au projet backend :",reportStep5Backend:"Issues sensemaker-backend",reportStep5Suffix:".",frontendIssuesUrl:"https://github.com/g0v/sensemaker-frontend/issues",backendIssuesUrl:"https://github.com/bestian/sensemaker-backend/issues"},guideModal:{title:"Bienvenue dans l'outil d'intégration d'opinions Sensemaker",description:"L'outil d'intégration d'opinions Sensemaker est un outil puissant d'analyse de rapports d'enquêtes d'opinion qui peut vous aider à extraire des insights précieux de grandes quantités de rapports d'enquêtes d'opinion.",sensemakingToolsLink:"Version 2026: utilisez OpenRouter ou LM Studio en local pour generer un rapport web HTML interactif complet",uberReportExample:"Rapport exemple : « UberX, transport de passagers en voiture personnelle »",polisTitle:"1. Export de rapport d'enquête d'opinion Polis",polisDescription:"Cet outil prend en charge les rapports d'enquêtes d'opinion exportés depuis la plateforme Polis. Veuillez vous assurer que vos fichiers sont conformes à la structure de données Polis.",polisLink:"Voir le guide →",openRouterTitle:"2. Connexion API OpenRouter",openRouterDescription:"Cet outil utilise OpenRouter pour se connecter à divers modèles de langage volumineux. Vous devez fournir une clé API OpenRouter pour l'utiliser.",openRouterLink:"Voir le guide →",sensemakerTitle:"3. Analyse Sensemaker",sensemakerDescription:"Cet outil utilise Sensemaker pour l'analyse. Veuillez vous référer aux instructions suivantes pour l'analyse.",sensemakerLink:"En savoir plus →",tip:"Astuce : Si c'est votre première utilisation de cet outil, nous recommandons de lire d'abord les documents de guide ci-dessus pour assurer une utilisation correcte.",dontShowAgain:"Ne plus afficher cette astuce",iKnow:"J'ai compris"},openRouterGuide:{title:"Guide d'utilisation OpenRouter",step1Title:"Aller à la page d'accueil OpenRouter",step1Description:"Tout d'abord, veuillez visiter le site Web officiel d'OpenRouter. OpenRouter est une interface LLM unifiée qui fournit divers modèles IA parmi lesquels choisir. Cet outil utilise principalement le modèle <b>GPT-OSS-120B</b> de haute qualité, réfléchi et abordable.",step1Link:"Aller à la page d'accueil OpenRouter : https://openrouter.ai/",step1Tip:"Astuce : Après vous être inscrit et connecté, veuillez cliquer sur l'avatar personnel dans le coin supérieur droit de la page d'accueil pour développer le menu déroulant pour les étapes suivantes (achat de Credits et demande de clé API).",step2Title:"Acheter des Credits",step2Description:"Avant d'utiliser les services OpenRouter, vous devez d'abord acheter des crédits. Les crédits peuvent être utilisés avec n'importe quel modèle ou fournisseur, vous permettant d'utiliser flexibly différents services IA.",step2Link:"Aller à la page d'achat de crédits : https://openrouter.ai/settings/credits",step3Title:"Demander une clé API",step3Description:"Enfin, vous devez créer une clé API pour commencer à utiliser les services OpenRouter. La clé API est entièrement compatible avec le format OpenAI et peut être utilisée directement.",step3Link:"Aller à la page des paramètres de clé API : https://openrouter.ai/settings/keys",tipsTitle:"Conseils importants",tip1:"• Veuillez garder votre clé API en sécurité et ne pas la partager avec d'autres",tip2:"• La clé API peut être utilisée immédiatement après sa création, aucune approbation n'est nécessaire",tip3:"• Il est recommandé de vérifier régulièrement votre solde de crédits pour assurer le fonctionnement normal du service",tip4:"• OpenRouter prend en charge divers modes de paiement, y compris les cartes de crédit",backToHome:"Retour à l'accueil"}
4,polisGuide:{title:"Guide d'utilisation Polis",step1Title:"Aller à la page d'accueil Polis",step1Description:"Tout d'abord, veuillez visiter le site Web officiel de Polis. Polis est une plateforme pour collecter et analyser les opinions publiques, vous aidant à comprendre différents points de vue et à mener une collecte d'opinions significative.",step1Link:"Aller à la page d'accueil Polis : https://pol.is/home",step2Title:"Créer un compte et se connecter",step2Description:"Si vous n'avez pas encore de compte Polis, veuillez d'abord créer un nouveau compte. Si vous avez déjà un compte, veuillez vous connecter directement. Après vous être connecté, vous pouvez commencer à créer et gérer des conversations.",step2Link:"Aller à la page de connexion/inscription : https://pol.is/signin",step3Title:"Créer et gérer des conversations dans le tableau de bord Polis",step3Description:'Après vous être connecté, vous entrerez dans le tableau de bord Polis. Ici, vous pouvez créer de nouvelles conversations et gérer les conversations existantes. Cliquez sur le bouton "Create New Conversation" pour commencer à créer une nouvelle conversation.',step3Link:"Aller au tableau de bord Polis : https://pol.is/",step4Title:"Publier l'URL de collecte d'opinions et collecter les réponses",step4Description:"Après avoir créé une conversation, vous pouvez obtenir l'URL de collecte d'opinions et la partager avec les participants. Les participants peuvent accéder à la conversation via cette URL et fournir leurs opinions. Vous pouvez également utiliser la fonctionnalité embed pour intégrer la conversation dans votre site Web, permettant aux participants de participer directement sur votre site Web.",step5Title:"Passer à l'onglet Reports et créer l'URL du rapport",step5Description:`Dans la page de conversation, passez à l'onglet "Reports". Ici, vous pouvez créer des URLs de rapport pour afficher les résultats d'analyse et les statistiques de la conversation.`,step6Title:"Entrer dans la page Rapport",step6Description:"Dans l'onglet Reports, cliquez sur l'élément Rapport que vous souhaitez consulter. Après avoir cliqué, un lien apparaîtra, puis cliquez sur ce lien pour entrer dans la page Rapport et afficher les résultats d'analyse détaillés.",step7Title:"Télécharger le CSV des commentaires",step7Description:"Dans la page Rapport, faites défiler vers le bas pour trouver l'option de téléchargement. Vous verrez un bouton de téléchargement, cliquez dessus pour télécharger un fichier CSV contenant tous les commentaires (format de nom de fichier : conversation-id-comments.csv). Ce fichier CSV contient toutes les données de commentaires de la conversation et peut être utilisé pour une analyse plus approfondie.",tipsTitle:"Conseils importants",tip1:"• Le fichier CSV téléchargé contient toutes les données de commentaires de la conversation",tip2:"• Les fichiers CSV peuvent être importés dans ce système pour une analyse plus approfondie",tip3:"• Assurez-vous d'avoir la permission d'accéder à la page Rapport de cette conversation",tip4:"• Si vous ne trouvez pas le bouton de téléchargement, veuillez confirmer que vous avez basculé vers la page Rapport correcte",backToHome:"Retour à l'accueil"},sensemakerGuide:{title:"Guide d'utilisation Sensemaker",step1Title:"Téléverser le fichier original exporté depuis Polis",step1Description:"Tout d'abord, veuillez téléverser le fichier CSV téléchargé depuis Polis. Ce fichier contient toutes les données de commentaires des participants et constitue la base de l'analyse. Veuillez vous assurer que le format du fichier est correct et contient les informations de champ nécessaires.",step2Title:"Entrer la clé API OpenRouter",step2Description:"Entrez votre clé API OpenRouter dans le champ correspondant. Cette clé API est utilisée pour se connecter aux services OpenRouter, permettant au système d'utiliser des modèles IA pour l'analyse. Veuillez vous assurer que la clé API est correcte et valide.",step3Title:"Garder le nom du modèle comme openai/gpt-oss-120b",step3Description:"Le système utilise par défaut le modèle <b>openai/gpt-oss-120b</b> pour l'analyse. C'est un modèle de haute qualité, réfléchi et abordable, très adapté à l'anal
4yse d'opinions. Il est recommandé de conserver ce paramètre sauf si vous avez des besoins spéciaux.",step3Tip:"Astuce : Le champ du nom du modèle est prédéfini à",step3TipCode:"openai/gpt-oss-120b",step3TipEnd:", généralement aucune modification n'est nécessaire.",step4Title:"Entrer un contexte supplémentaire pour optimiser le contexte d'analyse du modèle de langage",step4Description:"Vous pouvez optionnellement entrer des informations de contexte supplémentaires, telles que le contexte du sujet de conversation, les descriptions de politiques connexes ou les points d'analyse spécifiques. Ces informations peuvent aider les modèles IA à mieux comprendre le contexte des commentaires et fournir des résultats d'analyse plus approfondis.",step5Title:"Sélectionner la langue de sortie",step5Description:`Sélectionnez la langue que vous souhaitez utiliser pour le rapport. Par exemple, après avoir sélectionné "Chinois", le rapport d'analyse sera présenté en chinois, vous permettant de lire et comprendre plus facilement les résultats d'analyse.`,step6Title:"Commencer l'analyse",step6Description:`Après avoir confirmé que tous les paramètres sont corrects, cliquez sur le bouton "Commencer l'analyse". Le système commencera à traiter vos données. Ce processus peut prendre quelques minutes, veuillez patienter. Vous pouvez voir les informations de progression de l'analyse sur la page.`,step7Title:"Examiner et télécharger le rapport Markdown",step7Description:"Une fois l'analyse terminée, le système générera un rapport d'analyse au format Markdown. Vous pouvez prévisualiser le contenu du rapport sur la page, et après avoir confirmé qu'il est correct, cliquez sur le bouton de téléchargement pour enregistrer le rapport sur votre ordinateur. Le rapport contient des résultats d'analyse détaillés, des statistiques et des recommandations d'insights.",tipsTitle:"Conseils importants",tip1:"• Assurez-vous que le format du fichier CSV téléversé est correct et contient les champs nécessaires",tip2:"• Veuillez garder votre clé API en sécurité et ne pas la partager avec d'autres",tip3:"• Le processus d'analyse peut prendre quelques minutes, veuillez patienter et ne pas fermer la page",tip4:"• Les rapports Markdown téléchargés peuvent être ouverts avec n'importe quel éditeur prenant en charge Markdown",tip5:"• Si l'analyse échoue, veuillez vérifier si la clé API est valide et si le solde de crédits est suffisant",backToHome:"Retour à l'accueil"},footer:{description:"Un outil puissant d'intégration d'opinions alimenté par l'IA, spécialement conçu pour analyser de gros volumes de données d'opinion et générer des insights significatifs.",communityLinks:"Liens communautaires",jigsawOriginalProject:"Projet original Jigsaw",officialDocs:"Documentation officielle",experimentalVersion:"Version expérimentale",contactInfo:"Informations de contact",license:"CC-BY-SA.",sourceCode:"Code source",privacyPolicy:"Politique de confidentialité",selfHost:"Auto-hébergement",termsOfService:"Conditions d'utilisation"}},Yh={common:{home:"Inicio",about:"Acerca de",privacy:"Privacidad",maintain:"Mantenimiento y prueba",selfHost:"Auto-alojamiento",backToHome:"Volver al inicio",loading:"Cargando...",error:"Error",success:"Éxito",warning:"Advertencia",info:"Información",download:"Descargar",upload:"Subir",submit:"Enviar",cancel:"Cancelar",save:"Guardar",edit:"Editar",delete:"Eliminar",close:"Cerrar",confirm:"Confirmar",yes:"Sí",no:"No",required:"Requerido",optional:"Opcional"},home:{title:"🚀 Sensemaker",apiKeyLabel:"🔑 Clave API OpenRouter",apiKeyPlaceholder:"Por favor ingrese su clave API OpenRouter",showApiKey:"Mostrar clave API",hideApiKey:"Ocultar clave API",getApiKeyLink:"Obtener clave API",apiKeyRequired:"Este campo es requerido para conectarse a los servicios de modelos de IA",invalidApiKey:"Clave API inválida o modelo",privacyNote:"🔒 Protección de privacidad: Según nuestra política de privacidad, este sitio no almacenará su clave API en ningún lugar. Si tiene inquietudes, le invitamos a auto-alojar los servicios backend y frontend.",modelLabel:"
4🤖 Nombre del modelo:",modelPlaceholder:"openai/gpt-oss-120b",modelNote:"Se recomienda usar el modelo gpt-oss-120b. Si desea usar otros modelos de inferencia, consulte la lista de modelos de OpenRouter para obtener información y comparar el rendimiento y los estándares de precios de varios modelos",modelLinkText:"📋 Ver modelos de OpenRouter",costNote:"💰 Estimación de costo: Usando gpt-oss-120b para análisis, dependiendo del volumen de datos, cuesta aproximadamente $0.05-0.20 USD.",timeNote:"⏱️ Estimación de tiempo: Usando gpt-oss-120b para análisis, dependiendo del volumen de datos, toma aproximadamente 3-30 minutos.",retryModeLabel:"🔄 Modo de reintento",retryModeStrict:"Ejecutar una sola vez (Modo estricto)",retryModeNormal:"Reintento automático 3 veces (Modo normal)",retryModeCustom:"Número de reintentos personalizado",customRetryCountLabel:"Número de reintentos",customRetryCountNote:"Por favor ingrese un número de reintentos entre 1-10",retryingRequest:"🔄 Reintentando solicitud",retrySuccess:"✅ Reintento exitoso",retryFailed:"❌ Reintento fallido",retryError:"❌ Error de reintento",allRetriesFailed:"❌ Todos los reintentos fallaron",additionalContextLabel:"📝 Contexto adicional:",additionalContextNote:"Ayuda a la IA a entender el contexto de la conversación y mejorar la precisión de identificación de temas. Este campo es opcional.",additionalContextPlaceholder:"Describa el contexto y entorno de la conversación. Puede dejarse vacío.",outputLangLabel:"🌐 Idioma de salida:",fileLabel:"📁 Subir archivo (JSON exportado desde polis.tw o CSV exportado desde pol.is)",startAnalysis:"🚀 Iniciar análisis",riskWarning:"⚠️ Advertencia: Dado que la herramienta de integración de opiniones está actualmente aún en desarrollo y pruebas, las respuestas LLM tienen una inestabilidad inherente, y hay aproximadamente una probabilidad de 1/6 de que un reporte único falle en generarse. Puede aumentar la tasa de éxito a través de la configuración del mecanismo de reintento.",processing:"⏳ Procesando...",selectFileFirst:"Por favor seleccione un archivo para subir",taskId:"ID de tarea",status:"Estado",estimatedTime:"Tiempo estimado",requestFailed:"❌ Solicitud fallida",requestError:"❌ Error de solicitud",taskStatus:"📊 Estado de la tarea",commentsCount:"Cantidad de comentarios",model:"Modelo utilizado",pollingResults:"Consultando resultados...",taskInQueue:"Tarea agregada a la cola, comenzará a verificar resultados en 3 minutos...",taskProcessing:"Tarea aún procesándose...",taskCompleted:"✅ ¡Análisis completado!",commentsProcessed:"Procesados {count} comentarios",completedAt:"Completado en",summary:"Resumen",downloadMarkdown:"⬇️ Descargar Markdown",noMarkdownContent:"❌ No hay contenido Markdown para descargar",downloadFailed:"❌ Descarga fallida",testLLM:"🔄 Probando conexión LLM...",testLLMSuccess:"✅ ¡Prueba LLM exitosa!",testLLMFailed:"❌ Prueba LLM fallida",testLLMError:"❌ Error de solicitud de prueba LLM",testCSV:"❌ Por favor seleccione un archivo CSV primero",testCSVSuccess:"✅ ¡Análisis CSV exitoso!",testCSVFailed:"❌ Análisis CSV fallido",testR2:"🔄 Probando lectura/escritura R2...",testR2Success:"✅ ¡Prueba R2 exitosa!",testR2Failed:"❌ Prueba R2 fallida",testR2Error:"❌ Error de solicitud de prueba R2",taskFailed:"❌ Procesamiento de tarea fallido",failedAt:"Falló en",errorDetails:"Detalles del error",errorMessage:"Mensaje de error",detailedError:"Error detallado",unknownError:"Error desconocido",noDetailedError:"No hay información detallada del error",outputLangOptions:{en:"English","zh-TW":"繁體中文","zh-CN":"简体中文",ja:"日本語",fr:"Français",es:"Español"}},about:{title:"🚀 Acerca de la herramienta de integración de opiniones Sensemaker",whatIsTitle:"📖 ¿Qué es la herramienta de integración de opiniones Sensemaker?",whatIsDescription:"La herramienta de integración de opiniones Sensemaker es una herramienta poderosa impulsada por IA, específicamente diseñada para analizar grandes volúmenes de datos de opinión y generar insights significativos. Puede identificar puntos comunes principales y divergencias de opinión, ayudándole a extraer información valiosa de datasets masivos.",whatIsDescription2:"Esta herramienta es particularmente adecuada para escenarios de democracia deliberativa. Cuando usa herramientas de recolección de opiniones asíncronas como Polis, puede ayudar a procesar grandes cantidades de opiniones similares o repetitivas y generar automáticamente reportes de análisis estructurados. Esta es una implementación frontend de algunas de sus funcionalidades.",resourcesTitle:"🔗 Recursos relacionados",officialDocs:"Documentación oficial:",openSourceLib:"Biblioteca de código abierto:",experimentalLib:"Biblioteca experimental (compatible con este sitio):",experimentalBranch:"Por favor use la rama new-feature-open-router",supportedDataTitle:"
4📊 Fuentes de datos soportadas",supportedDataDescription:"Esta herramienta soporta datos de reporte exportados desde las siguientes plataformas:",polisTWTitle:"🇹🇼 Polis.tw",polisTWDescription:"Obtener datos desde las páginas de reporte Polis.tw, requiere extraer datos JSON desde las respuestas API a través del modo desarrollador. Por favor refiérase a las instrucciones relevantes en este tutorial.",polisTitle:"🌐 Pol.is",polisDescription:"Exportar archivos CSV relacionados con comentarios desde las páginas de reporte Pol.is, puede ser subido directamente.",dataFormatTitle:"📋 Requisitos de formato de datos",polisTWFormatTitle:"🇹🇼 Formato de datos Polis.tw",polisTWFormatDescription:"Nota: El formato de datos polis.tw es diferente de Pol.is. Actualmente, el formato JSON exportado por polis.tw puede ser usado directamente.",polisFormatTitle:"🌐 Formato de datos Pol.is",polisFormatDescription:"Para el formato de datos pol.is, puede ser subido directamente.",useCasesTitle:"🎯 Casos de uso",useCasesDescription:"Sensemaker es particularmente adecuado para los siguientes escenarios:",deliberativeDemocracy:"Democracia deliberativa: Procesar grandes volúmenes de opiniones ciudadanas, identificar consensos y puntos de divergencia",policyMaking:"Formulación de políticas: Analizar la distribución de opinión pública sobre políticas específicas",productDevelopment:"Desarrollo de productos: Organizar retroalimentación de usuarios, identificar necesidades principales y puntos de mejora",academicResearch:"Investigación académica: Analizar encuestas o datos de entrevistas",communityManagement:"Gestión de comunidad: Entender opiniones y necesidades de miembros de la comunidad",usageTipsTitle:"💡 Consejos de uso",ensureDataQuality:"Asegurar calidad de datos, remover opiniones duplicadas o inválidas",provideContext:"Proporcionar descripciones de contexto claras para ayudar a la IA a entender mejor el fondo de los datos",chooseFormat:"Elegir formato de salida apropiado según el propósito del análisis (recomendado: formato Markdown)",regularCheck:"Revisar y actualizar datos regularmente para asegurar la relevancia de los resultados del análisis",getStartedTitle:"🚀 Comenzar",readyToStart:"¿Listo con sus datos? ¡Vaya a la página de inicio para comenzar a subir y analizar sus datos de opinión!"},privacy:{title:"Política de privacidad",privacyPolicy:"Política de privacidad",privacyDescription:"Esta aplicación no recolecta ningún dato personal. Los reportes generados se almacenan temporalmente en el servicio de almacenamiento R2 para su descarga y no pueden ser accedidos por otros usuarios.",dataProcessingTitle:"Acerca del procesamiento de datos",backendProcessing:"Procesamiento backend: Los datos se envían a nuestro backend para cálculo, pero ningún dato de usuario se almacena en nuestros servidores, especialmente las claves API nunca se almacenan.",noCookies:"Sin cookies: No usamos ninguna cookie.",openSource:"Transparencia de código abierto: Nuestro código es completamente de código abierto, y puede revisar toda la funcionalidad para asegurar la privacidad.",frontendProject:"Proyecto frontend",backendProject:"Proyecto backend",openSourceNote:"Transparencia de código abierto: Nuestro código es completamente de código abierto, y puede revisar toda la funcionalidad para asegurar la privacidad. Revise nuestros repositorios frontend y backend en GitHub."},selfHost:{title:"🏗️ Guía de auto-alojamiento",overviewTitle:"📋 Resumen",overviewDescription:"Si tiene inquietudes sobre privacidad y seguridad de datos, le invitamos a hacer fork de nuestro proyecto y auto-alojar el servicio. De esta manera tiene control completo sobre sus datos y claves API.",paidPlanTitle:"Requisitos de plan pagado",paidPlanDescription:"El servicio backend usa Cloudflare Queues que requiere un plan Worker pagado. Los planes gratuitos no soportan esta funcionalidad.",backendTitle:"🔧 Configuración backend (Cloudflare Worker)",step1Backend:"Paso 1: Hacer fork del proyecto backend",step1BackendDesc:"Ir al proyecto sensemaker-backend y hacer fork a su cuenta GitHub",viewBackendProject:"Ver proyecto backend",step2Backend:"Paso 2: Configurar Cloudflare Worker",step2BackendDesc:"Crear un nuevo Worker en Cloudflare Dashboard y desplegar su código backend",importantNote:"⚠️ Nota importante: El backend usa Cloudflare Queues que requiere un plan Worker pagado. Los planes gratuitos no soportan Queues.",frontendTitle:"🎨 Configuración frontend (Vue.js)",step1Frontend:"Paso 1: Hacer fork del proyecto frontend",step1FrontendDesc:"Ir al proyecto sensemaker-frontend y hacer fork a su cuenta GitHub",viewFrontendProject:"Ver proyecto frontend",step2Frontend:"Paso 2: Modificar endpoint API",step2FrontendDesc:"En src/views/HomeView.vue, cambiar la URL API a su URL Worker:",originalURL:"URL original",yourURL:"Su URL",step3Frontend:"Paso 3: Desplegar frontend",step3FrontendDesc:"Puede elegir entre múltiples métodos de despliegue, recomendamos usar Cloudflare Pages:",cloudflarePages:"Cloudflare Pages: Gratuito, se integra bien con Workers",advantagesTitle:"✅ Ventajas del auto-alojamiento",fullControl:"Control completo",fullControlDesc:"Sus datos están completamente bajo su control y no pasarán por un servidor de terceros",apiKeyProtection:"Protección completa de claves API",apiKeyProtectionDesc:"Sus claves API se mantienen completamente en su entorno y nunca pasan por un servidor de terceros",customizable:"Personalizable",customizableDesc:"Puede modificar la funcionalidad e interfaz según sus necesidades",learning:"Oportunidad de aprendizaje",learningDesc:"Aprender más sobre tecnología de desarrollo web moderna",needHelpTitle:"
4🆘 ¿Necesita ayuda?",needHelpDesc:"Si encuentra problemas durante la configuración, le invitamos a:",openIssue:"Abrir un Issue en el proyecto GitHub",checkReadme:"Revisar el README y Wiki del proyecto",joinCommunity:"Unirse a nuestras discusiones comunitarias"},maintain:{title:"Mantenimiento, prueba e informes",pageTitle:"Mantenimiento, prueba e informes",testTitle:"🧪 Cómo probar",testIntro:"Este sitio ofrece un conjunto de datos de prueba sencillo para comprobar que el flujo de subida, análisis y resumen funciona correctamente.",testDataLabel:"Datos de prueba",testDataPathBefore:"El CSV de prueba está en data/comments_test.csv (desplegado, la URL es",testDataPathAfter:").",testDataDesc:'El archivo está en formato de comentarios exportado de Polis con un comentario de ejemplo y puede usarse directamente en el flujo "Subir CSV".',testStepsLabel:"Pasos de prueba",step1:"Ir a",step1Suffix:".",step2:'Introduzca su propia Open Router API Key en el campo "Open Router API KEY" (use su propia clave para las pruebas; este sitio no la almacena).',step3:"Use el modelo predeterminado openai/gpt-oss-120b para probar.",step4:'Haga clic en "Elegir archivo" y suba data/comments_test.csv (puede descargar desde la URL anterior y subir).',step5:'Haga clic en "Iniciar análisis" y espere a que termine; debería obtener un resumen. Si el flujo termina, la prueba ha pasado.',apiKeyTitle:"🔑 Sobre la Open Router API Key",apiKeyDescBefore:"Debe usar su propia Open Router API Key al probar. Consulte ",apiKeyDescAfter:" para obtenerla. Este sitio no almacena ni envía su API Key a ningún servidor; solo se usa en el navegador para llamar al backend, que reenvía a Open Router.",openRouterGuideLink:"Guía de uso de Open Router",reportTitle:"🐛 Cómo reportar problemas",reportIntro:"Si ve errores, interfaz rota o resultados inesperados durante las pruebas, puede reportarlos en el GitHub del proyecto para que los mantenedores investiguen y corrijan.",reportStepsLabel:"Pasos para reportar",reportStep1:"Ir a la página de Issues del proyecto frontend:",reportStep2:'Haga clic en "New issue" para crear un nuevo issue.',reportStep3:'Use un título claro (p. ej. "El análisis falla tras subir comments_test.csv").',reportStep4:"En el cuerpo, incluya cuando sea posible:",reportStep4Bullet1:"Pasos para reproducir (p. ej. CSV de prueba, qué modelo).",reportStep4Bullet2:"Resultado esperado vs real (p. ej. esperaba resumen, obtuvo mensaje de error).",reportStep4Bullet3:"Mensaje de error o captura de pantalla de la página.",reportStep4Bullet4:"Navegador y SO (p. ej. Chrome 120 / macOS).",reportStep5:"Si el problema es con la API del backend, también puede reportar en el proyecto backend:",reportStep5Backend:"Issues de sensemaker-backend",reportStep5Suffix:".",frontendIssuesUrl:"https://github.com/g0v/sensemaker-frontend/issues",backendIssuesUrl:"https://github.com/bestian/sensemaker-backend/issues"},guideModal:{title:"Bienvenido a la herramienta de integración de opiniones Sensemaker",description:"La herramienta de integración de opiniones Sensemaker es una poderosa herramienta de análisis de informes de encuestas de opinión que puede ayudarle a extraer insights valiosos de grandes volúmenes de informes de encuestas de opinión.",sensemakingToolsLink:"Version 2026: use OpenRouter o LM Studio local para generar un informe web HTML interactivo completo",uberReportExample:"Informe de ejemplo: «UberX, transporte de pasajeros en vehiculo privado»",polisTitle:"1. Exportación de informe de encuesta de opinión Polis",polisDescription:"Esta herramienta soporta informes de encuestas de opinión exportados desde la plataforma Polis. Por favor asegúrese de que sus archivos cumplan con la estructura de datos de Polis.",polisLink:"Ver guía →",openRouterTitle:"2. Conexión API OpenRouter",openRouterDescription:"Esta herramienta usa OpenRouter para conectarse a varios modelos de lenguaje grandes. Necesita proporcionar una clave API OpenRouter para usarla.",openRouterLink:"Ver guía →",sensemakerTitle:"3. Análisis Sensemaker",sensemakerDescription:"Esta herramienta usa Sensemaker para el análisis. Por favor consulte las siguientes instrucciones para el análisis.",sensemakerLink:"Aprender más →",tip:"Consejo: Si es la primera vez que usa esta herramienta, recomendamos leer primero los documentos de guía anteriores para asegurar el uso correcto.",dontShowAgain:"No mostrar este consejo nuevamente",iKnow:"Entiendo"},openRouterGuide:{title:"Guía de uso de OpenRouter",step1Title:"Ir a la página de inicio de OpenRouter",step1Description:"Primero, por favor visite el sitio web oficial de OpenRouter. OpenRouter es una interfaz LLM unificada que proporciona varios modelos de IA para elegir. Esta herramienta usa principalmente el modelo <b>GPT-OSS-120B</b> de alta calidad, reflexivo y asequible.",step1Link:"Ir a la página de inicio de OpenRouter: https://openrouter.ai/",step1Tip:"
4Consejo: Después de registrarse e iniciar sesión, por favor haga clic en el avatar personal en la esquina superior derecha de la página de inicio para expandir el menú desplegable para los pasos siguientes (comprar Credits y solicitar clave API).",step2Title:"Comprar Credits",step2Description:"Antes de usar los servicios de OpenRouter, necesita comprar créditos primero. Los créditos se pueden usar con cualquier modelo o proveedor, permitiéndole usar flexiblemente diferentes servicios de IA.",step2Link:"Ir a la página de compra de créditos: https://openrouter.ai/settings/credits",step3Title:"Solicitar clave API",step3Description:"Finalmente, necesita crear una clave API para comenzar a usar los servicios de OpenRouter. La clave API es totalmente compatible con el formato OpenAI y se puede usar directamente.",step3Link:"Ir a la página de configuración de clave API: https://openrouter.ai/settings/keys",tipsTitle:"Consejos importantes",tip1:"• Por favor mantenga su clave API segura y no la comparta con otros",tip2:"• La clave API se puede usar inmediatamente después de su creación, no se necesita aprobación",tip3:"• Se recomienda verificar regularmente su saldo de créditos para asegurar el funcionamiento normal del servicio",tip4:"• OpenRouter soporta varios métodos de pago, incluyendo tarjetas de crédito",backToHome:"Volver al inicio"},polisGuide:{title:"Guía de uso de Polis",step1Title:"Ir a la página de inicio de Polis",step1Description:"Primero, por favor visite el sitio web oficial de Polis. Polis es una plataforma para recolectar y analizar opiniones públicas, ayudándole a entender diferentes perspectivas y realizar recolección de opiniones significativa.",step1Link:"Ir a la página de inicio de Polis: https://pol.is/home",step2Title:"Registrar cuenta e iniciar sesión",step2Description:"Si aún no tiene una cuenta de Polis, por favor regístrese primero para una nueva cuenta. Si ya tiene una cuenta, por favor inicie sesión directamente. Después de iniciar sesión, puede comenzar a crear y gestionar conversaciones.",step2Link:"Ir a la página de inicio de sesión/registro: https://pol.is/signin",step3Title:"Crear y gestionar conversaciones en el panel de Polis",step3Description:'Después de iniciar sesión, entrará al panel de Polis. Aquí puede crear nuevas conversaciones y gestionar las existentes. Haga clic en el botón "Create New Conversation" para comenzar a crear una nueva conversación.',step3Link:"Ir al panel de Polis: https://pol.is/",step4Title:"Publicar URL de recolección de opiniones y recolectar respuestas",step4Description:"Después de crear una conversación, puede obtener la URL de recolección de opiniones y compartirla con los participantes. Los participantes pueden acceder a la conversación a través de esta URL y proporcionar sus opiniones. También puede usar la función embed para incrustar la conversación en su sitio web, permitiendo que los participantes participen directamente en su sitio web.",step5Title:"Cambiar a la pestaña Reports y crear URL de informe",step5Description:'En la página de conversación, cambie a la pestaña "Reports". Aquí puede crear URLs de informe para ver los resultados de análisis y estadísticas de la conversación.',step6Title:"Entrar a la página de Informe",step6Description:"En la pestaña Reports, haga clic en el elemento Informe que desea ver. Después de hacer clic, aparecerá un enlace, luego haga clic en ese enlace para entrar a la página de Informe y ver los resultados de análisis detallados.",step7Title:"Descargar CSV de comentarios",step7Description:"En la página de Informe, desplácese hacia abajo para encontrar la opción de descarga. Verá un botón de descarga, haga clic en él para descargar un archivo CSV que contiene todos los comentarios (formato de nombre de archivo: conversation-id-comments.csv). Este archivo CSV contiene todos los datos de comentarios de la conversación y se puede usar para análisis adicional.",tipsTitle:"Consejos importantes",tip1:"• El archivo CSV descargado contiene todos los datos de comentarios de la conversación",tip2:"• Los archivos CSV se pueden importar a este sistema para análisis adicional",tip3:"• Asegúrese de tener permiso para acceder a la página de Informe de esa conversación",tip4:"• Si no puede encontrar el botón de descarga, por favor confirme que ha cambiado a la página de Informe correcta",backToHome:"Volver al inicio"},sensemakerGuide:{title:"Guía de uso de Sensemaker",step1Title:"Subir archivo original exportado desde Polis",step1Description:"Primero, por favor suba el archivo CSV descargado desde Polis. Este archivo contiene todos los datos de comentarios de los participantes y es la base para el análisis. Por favor asegúrese de que el formato del archivo sea correcto y contenga la información de campo necesaria.",step2Title:"Ingresar clave API OpenRouter",step2Description:"Ingrese su clave API OpenRouter en el campo correspondiente. Esta clave API se usa para conectarse a los servicios OpenRouter, permitiendo que el sistema use modelos de IA para el análisis. Por favor asegúrese de que la clave API sea correcta y válida.",step3Title:"Mantener el nombre del modelo como openai/gpt-oss-120b",step3Description:"El sistema usa el modelo <b>openai/gpt-oss-120b</b> por defecto para el análisis. Este es un modelo de alta calidad, reflexivo y asequible, muy adecuado para el análisis de opiniones. Se recomienda mantener esta configuración a menos que tenga requisitos especiales.",step3Tip:"Consejo: El campo del nombre del modelo está preestablecido en",step3TipCode:"openai/gpt-oss-120b",step3TipEnd:", generalmente no se necesita modificación.",step4Title:"Ingresar contexto adicional para optimizar el contexto de análisis del modelo de lenguaje",step4Description:"Opcionalmente puede ingresar información de contexto adicional, como el contexto del tema de conversación, descripciones de políticas relacionadas o puntos de análisis específicos. Esta información puede ayudar a los modelos de IA a entender más precisamente el contexto de los comentarios y proporcionar resultados de análisis más profundos.",step5Title:"Seleccionar idioma de salida",step5Description:'Seleccione el idioma que desea usar para el informe. Por ejemplo, después de seleccionar "Chino", el informe de análisis se presentará en chino, facilitándole leer y entender los resultados del análisis.',step6Title:"Iniciar análisis",step6Description:'Después de confirmar que todas las configuraciones son correctas, haga clic en el botón "Iniciar análisis". El sistema comenzará a procesar sus datos. Este proceso puede tomar unos minutos, por favor sea paciente. Puede ver información del progreso del análisis en la página.',step7Title:"Revisar y descargar informe Markdown",step7Description:"Una vez completado el análisis, el sistema generará un informe de análisis en formato Markdown. Puede previsualizar el contenido del informe en la página, y después de confirmar que es correcto, haga clic en el botón de descarga para guardar el informe en su computadora. El informe contiene resultados de análisis detallados, estadísticas y recomendaciones de insights.",tipsTitle:"Consejos importantes",tip1:"• Asegúrese de que el formato del archivo CSV sub
4ido sea correcto y contenga los campos necesarios",tip2:"• Por favor mantenga su clave API segura y no la comparta con otros",tip3:"• El proceso de análisis puede tomar unos minutos, por favor sea paciente y no cierre la página",tip4:"• Los informes Markdown descargados se pueden abrir con cualquier editor que soporte Markdown",tip5:"• Si el análisis falla, por favor verifique si la clave API es válida y si el saldo de créditos es suficiente",backToHome:"Volver al inicio"},footer:{description:"Una herramienta poderosa de integración de opiniones impulsada por IA, específicamente diseñada para analizar grandes volúmenes de datos de opinión y generar insights significativos.",communityLinks:"Enlaces de la comunidad",jigsawOriginalProject:"Proyecto original Jigsaw",officialDocs:"Documentación oficial",experimentalVersion:"Versión experimental",contactInfo:"Información de contacto",license:"CC-BY-SA.",sourceCode:"Código fuente",privacyPolicy:"Política de privacidad",selfHost:"Auto-alojamiento",termsOfService:"Términos de servicio"}},Fs=[{code:"zh-TW",name:"繁體中文",flag:"🇹🇼"},{code:"zh-CN",name:"简体中文",flag:"🇨🇳"},{code:"en",name:"English",flag:"🇺🇸"},{code:"ja",name:"日本語",flag:"🇯🇵"},{code:"fr",name:"Français",flag:"🇫🇷"},{code:"es",name:"Español",flag:"🇪🇸"}],Xh=e=>{localStorage.setItem("locale",e),window.location.reload()},Nc=()=>{const e=localStorage.getItem("locale");if(e&&Fs.some(n=>n.code===e))return e;const t=navigator.languages||[navigator.language];for(const n of t){const s=n.toLowerCase();if(s.startsWith("zh"))return["zh","zh-cn","zh-sg","zh-my","zh-hans"].includes(s)?"zh-CN":"zh-TW";if(s.startsWith("en"))return"en";if(s.startsWith("ja"))return"ja";if(s.startsWith("fr"))return"fr";if(s.startsWith("es"))return"es"}return"zh-TW"},Qh={"zh-TW":Bh,"zh-CN":Wh,en:qh,ja:zh,fr:Gh,es:Yh},Mc=kh({locale:Nc(),fallbackLocale:"en",messages:Qh,globalInjection:!0,missingWarn:!1,fallbackWarn:!1}),Jh={class:"relative"},Zh={class:"text-lg"},eg={class:"text-sm font-medium"},tg={key:0,class:"absolute right-0 mt-2 w-48 bg-white border border-gray-300 rounded-lg shadow-lg z-50"},ng={class:"py-1"},sg=["onClick"],rg={class:"text-lg"},og={class:"text-sm"},Fc=Xt({__name:"LanguageSwitcher",setup(e){const t=ve(!1),n=Oe(()=>Nc()),s=Oe(()=>{const a=Fs.find(l=>l.code===n.value);return a?a.flag:"🌐"}),r=Oe(()=>{const a=Fs.find(l=>l.code===n.value);return a?a.name:"Unknown"}),o=a=>{Xh(a),t.value=!1},i=a=>{a.target.closest(".relative")||(t.value=!1)};return dr(()=>{document.addEventListener("click",i)}),jn(()=>{document.removeEventListener("click",i)}),(a,l)=>(Ae(),Le("div",Jh,[v("button",{onClick:l[0]||(l[0]=c=>t.value=!t.value),class:"flex items-center space-x-2 px-3 py-2 rounded-lg border bg-black focus:outline-none focus:ring-2 focus:ring-democratic-red transition-colors text-white border-white hover:border-gray-300"},[v("span",Zh,H(s.value),1),v("span",eg,H(r.value),1),(Ae(),Le("svg",{class:Be(["w-4 h-4 transition-transform",{"rotate-180":t.value}]),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[...l[1]||(l[1]=[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 9l-7 7-7-7"},null,-1)])],2))]),t.value?(Ae(),Le("div",tg,[v("div",ng,[(Ae(!0),Le(et,null,bl(j(Fs),c=>(Ae(),Le("button",{key:c.code,onClick:u=>o(c.code),class:Be(["w-full flex items-center space-x-3 px-4 py-2 text-left hover:bg-gray-100 transition-colors",{"bg-blue-50 text-blue-600":n.value===c.code,"text-gray-700":n.value!==c.code}])},[v("span",rg,H(c.flag),1),v("span",og,H(c.name),1)],10,sg))),128))])])):vn("",!0)]))}}),ig={id:"navbar",class:"bg-black text-white sticky top-0 z-10"},ag={class:"w-full px-4 md:mx-auto"},lg={class:"flex justify-between items-center h-16"},cg={class:"ml-2 text-xl font-bold"},ug={class:"hidden lg:flex items-center space-x-1 md:space-x-2 lg:space-x-6 xl:space-x-10"},dg={class:"flex items-center space-x-2"},pg={class:"lg:hidden bg-black border-t border-gray-700"},fg={class:"w-full px-4 py-3"},mg={class:"min-h-screen"},hg=Xt({__name:"App",setup(e){const t=ve(!1),n=Cf(),{t:s}=Hn(),r=()=>{t.value=!t.value};return qt(()=>n.path,()=>{window.scrollTo(0,0),t.value=!1}),(o,i)=>(Ae(),Le(et,null,[v("header",ig,[v("div",ag,[v("div",lg,[oe(j(pt),{to:"/",class:"flex items-center"},{default:$e(()=>[v("span",cg,H(j(s)("home.title")),1)]),_:1}),v("div",ug,[oe(j(pt),{to:"/",class:Be(["hover:text-democratic-red transition flex items-center gap-1",{"text-democratic-red":o.$route.path==="/"}])},{default:$e(()=>[i[5]||(i[5]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{d:"M6.643 7.74195L11.578 5.22295C12.1571 4.92568 12.8439 4.92568 13.423 5.22295L18.358 7.74195C19.136 8.21167 19.57 9.0907 19.47 9.99395L19.5 14.9999C19.5 17.2091 17.7091 18.9999 15.5 18.9999H9.5C7.29086 18.9999 5.5 17.2091 5.5 14.9999L5.531 9.99995C5.42854 9.09464 5.86291 8.21262 6.643 7.74195Z","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),v("path",{d:"M10.168 18.9999V16.6659C10.168 15.3769 11.213 14.3319 12.502 14.3319C13.7911 14.3319 14.836 15.3769 14.836 16.6659V18.9999","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),v("span",null,H(j(s)("common.home")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/about",class:Be(["hover:text-democratic-red transition flex items-center gap-1",{"text-democratic-red":o.$route.path==="/about"}])},{default:$e(()=>[i[6]||(i[6]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),v("span",null,H(j(s)("common.about")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/privacy",class:Be(["hover:text-democratic-red transition flex items-center gap-1",{"text-democratic-red":o.$route.path==="/privacy"}])},{default:$e(()=>[i[7]||(i[7]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"}
4)],-1)),v("span",null,H(j(s)("common.privacy")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/maintain",class:Be(["hover:text-democratic-red transition flex items-center gap-1",{"text-democratic-red":o.$route.path==="/maintain"}])},{default:$e(()=>[i[8]||(i[8]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"})],-1)),v("span",null,H(j(s)("common.maintain")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/self-host",class:Be(["hover:text-democratic-red transition flex items-center gap-1",{"text-democratic-red":o.$route.path==="/self-host"}])},{default:$e(()=>[i[9]||(i[9]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"})],-1)),v("span",null,H(j(s)("common.selfHost")),1)]),_:1},8,["class"])]),v("div",dg,[oe(Fc),v("button",{onClick:r,class:"lg:hidden text-white hover:text-democratic-red transition",title:"Menu",name:"Menu"},[...i[10]||(i[10]=[v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-6 h-6",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M4 6h16M4 12h16M4 18h16"})],-1)])])])])]),Rt(v("div",pg,[v("div",fg,[oe(j(pt),{to:"/",class:Be(["flex items-center gap-2 py-2 hover:text-democratic-red transition",{"text-democratic-red":o.$route.path==="/"}]),onClick:i[0]||(i[0]=a=>t.value=!1)},{default:$e(()=>[i[11]||(i[11]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2H5a2 2 0 00-2-2z"}),v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M8 5a2 2 0 012-2h4a2 2 0 012 2v6H8V5z"})],-1)),v("span",null,H(j(s)("common.home")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/about",class:Be(["flex items-center gap-2 py-2 hover:text-democratic-red transition",{"text-democratic-red":o.$route.path==="/about"}]),onClick:i[1]||(i[1]=a=>t.value=!1)},{default:$e(()=>[i[12]||(i[12]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})],-1)),v("span",null,H(j(s)("common.about")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/privacy",class:Be(["flex items-center gap-2 py-2 hover:text-democratic-red transition",{"text-democratic-red":o.$route.path==="/privacy"}]),onClick:i[2]||(i[2]=a=>t.value=!1)},{default:$e(()=>[i[13]||(i[13]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"})],-1)),v("span",null,H(j(s)("common.privacy")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/maintain",class:Be(["flex items-center gap-2 py-2 hover:text-democratic-red transition",{"text-democratic-red":o.$route.path==="/maintain"}]),onClick:i[3]||(i[3]=a=>t.value=!1)},{default:$e(()=>[i[14]||(i[14]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"}),v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M15 12a3 3 0 11-6 0 3 3 0 016 0z"}
4)],-1)),v("span",null,H(j(s)("common.maintain")),1)]),_:1},8,["class"]),oe(j(pt),{to:"/self-host",class:Be(["flex items-center gap-2 py-2 hover:text-democratic-red transition",{"text-democratic-red":o.$route.path==="/self-host"}]),onClick:i[4]||(i[4]=a=>t.value=!1)},{default:$e(()=>[i[15]||(i[15]=v("svg",{xmlns:"http://www.w3.org/2000/svg",class:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"})],-1)),v("span",null,H(j(s)("common.selfHost")),1)]),_:1},8,["class"])])],512),[[Qd,t.value]])]),v("main",mg,[oe(j(sc))]),oe(Hh)],64))}}),Vc=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},gg=Vc(hg,[["__scopeId","data-v-90cd2040"]]),bg="modulepreload",vg=function(e){return"/"+e},xa={},gn=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){let l=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=i?.nonce||i?.getAttribute("nonce");r=l(n.map(c=>{if(c=vg(c),c in xa)return;xa[c]=!0;const u=c.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${d}`))return;const m=document.createElement("link");if(m.rel=u?"stylesheet":bg,u||(m.as="script"),m.crossOrigin="",m.href=c,a&&m.setAttribute("nonce",a),document.head.appendChild(m),u)return new Promise((b,P)=>{m.addEventListener("load",b),m.addEventListener("error",()=>P(new Error(`Unable to preload CSS for ${c}`)))})}))}function o(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return r.then(i=>{for(const a of i||[])a.status==="rejected"&&o(a.reason);return t().catch(o)})};function $o(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Sn=$o();function Uc(e){Sn=e}var ls={exec:()=>null};function ce(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(r,o)=>{let i=typeof o=="string"?o:o.source;return i=i.replace(tt.caret,"$1"),n=n.replace(r,i),s},getRegex:()=>new RegExp(n,t)};return s}var yg=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),tt={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[	 ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ 	][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},kg=/^(?:[ \t]*(?:\n|$))+/,_g=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,wg=/^ {0,3}(`{3,}
vendor: 5,241 bytes, lines 4-5
4(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,_s=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Tg=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,jo=/(?:[*+-]|\d{1,9}[.)])/,$c=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,jc=ce($c).replace(/bull/g,jo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Sg=ce($c).replace(/bull/g,jo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ko=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Pg=/^[^\n]+/,Ho=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,xg=ce(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ho).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Cg=ce(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,jo).getRegex(),yr="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Bo=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Eg=ce("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ 	]*)+\\n|$))","i").replace("comment",Bo).replace("tag",yr).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Kc=ce(Ko).replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",yr).getRegex(),Rg=ce(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Kc).getRegex(),Wo={blockquote:Rg,code:_g,def:xg,fences:wg,heading:Tg,hr:_s,html:Eg,lheading:jc,list:Cg,newline:kg,paragraph:Kc,table:ls,text:Pg},Ca=ce("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}	)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",yr).getRegex(),Ag={...Wo,lheading:Sg,table:Ca,paragraph:ce(Ko).replace("hr",_s).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ca).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",yr).getRegex()},Ig={...Wo,html:ce(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Bo).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:ls,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ce(Ko).replace("hr",_s).replace("heading",` *#{1,6} *[^
5]`).replace("lheading",jc).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Lg=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Og=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Hc=/^( {2,}|\\)\n(?!\s*$)/,Dg=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,kr=/[\p{P}\p{S}]/u,qo=/[\s\p{P}\p{S}]/u,Bc=/[^\s\p{P}\p{S}]/u,Ng=ce(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,qo).getRegex(),Wc=/(?!~)[\p{P}\p{S}]/u,Mg=/(?!~)[\s\p{P}\p{S}]/u,Fg=/(?:[^\s\p{P}\p{S}]|~)/u,Vg=ce(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("prec
vendor: 11,971 bytes, lines 5-29
5ode-",yg?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),qc=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Ug=ce(qc,"u").replace(/punct/g,kr).getRegex(),$g=ce(qc,"u").replace(/punct/g,Wc).getRegex(),zc="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",jg=ce(zc,"gu").replace(/notPunctSpace/g,Bc).replace(/punctSpace/g,qo).replace(/punct/g,kr).getRegex(),Kg=ce(zc,"gu").replace(/notPunctSpace/g,Fg).replace(/punctSpace/g,Mg).replace(/punct/g,Wc).getRegex(),Hg=ce("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Bc).replace(/punctSpace/g,qo).replace(/punct/g,kr).getRegex(),Bg=ce(/\\(punct)/,"gu").replace(/punct/g,kr).getRegex(),Wg=ce(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),qg=ce(Bo).replace("(?:-->|$)","-->").getRegex(),zg=ce("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",qg).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Zs=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Gg=ce(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Zs).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Gc=ce(/^!?\[(label)\]\[(ref)\]/).replace("label",Zs).replace("ref",Ho).getRegex(),Yc=ce(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ho).getRegex(),Yg=ce("reflink|nolink(?!\\()","g").replace("reflink",Gc).replace("nolink",Yc).getRegex(),Ea=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,zo={_backpedal:ls,anyPunctuation:Bg,autolink:Wg,blockSkip:Vg,br:Hc,code:Og,del:ls,emStrongLDelim:Ug,emStrongRDelimAst:jg,emStrongRDelimUnd:Hg,escape:Lg,link:Gg,nolink:Yc,punctuation:Ng,reflink:Gc,reflinkSearch:Yg,tag:zg,text:Dg,url:ls},Xg={...zo,link:ce(/^!?\[(label)\]\((.*?)\)/).replace("label",Zs).getRegex(),reflink:ce(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Zs).getRegex()},ao={...zo,emStrongRDelimAst:Kg,emStrongLDelim:$g,url:ce(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Ea).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:ce(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Ea).getRegex()},Qg={...ao,br:ce(Hc).replace("{2,}","*").getRegex(),text:ce(ao.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Es={normal:Wo,gfm:Ag,pedantic:Ig},Yn={normal:zo,gfm:ao,breaks:Qg,pedantic:Xg},Jg={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Ra=e=>Jg[e];function At(e,t){if(t){if(tt.escapeTest.test(e))return e.replace(tt.escapeReplace,Ra)}else if(tt.escapeTestNoEncode.test(e))return e.replace(tt.escapeReplaceNoEncode,Ra);return e}function Aa(e){try{e=encodeURI(e).replace(tt.percentDecode,"%")}catch{return null}return e}function Ia(e,t){let n=e.replace(tt.findPipe,(o,i,a)=>{let l=!1,c=i;for(;--c>=0&&a[c]==="\\";)l=!l;return l?"|":" |"}),s=n.split(tt.splitPipe),r=0;if(s[0].trim()||s.shift(),s.length>0&&!s.at(-1)?.trim()&&s.pop(),t)if(s.length>t)s.splice(t);else for(;s.length<t;)s.push("");for(;r<s.length;r++)s[r]=s[r].trim().replace(tt.slashPipe,"|");return s}function Xn(e,t,n){let s=e.length;if(s===0)return"";let r=0;for(;r<s&&e.charAt(s-r-1)===t;)r++;return e.slice(0,s-r)}function Zg(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let s=0;s<e.length;s++)if(e[s]==="\\")s++;else if(e[s]===t[0])n++;else if(e[s]===t[1]&&(n--,n<0))return s;return n>0?-2:-1}function La(e,t,n,s,r){let o=t.href,i=t.title||null,a=e[1].replace(r.other.outputLinkReplace,"$1");s.state.inLink=!0;let l={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:o,title:i,text:a,tokens:s.inlineTokens(a)};return s.state.inLink=!1,l}function eb(e,t,n){let s=e.match(n.other.indentCodeCompensation);if(s===null)return t;let r=s[1];return t.split(`
6`).map(o=>{let i=o.match(n.other.beginningSpace);if(i===null)return o;let[a]=i;return a.length>=r.length?o.slice(r.length):o}).join(`
7`)}var er=class{constructor(e){he(this,"options");he(this,"rules");he(this,"lexer");this.options=e||Sn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Xn(n,`
8`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=eb(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:s}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let s=Xn(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Xn(t[0],`
9`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Xn(t[0],`
10`).split(`
11`),s="",r="",o=[];for(;n.length>0;){let i=!1,a=[],l;for(l=0;l<n.length;l++)if(this.rules.other.blockquoteStart.test(n[l]))a.push(n[l]),i=!0;else if(!i)a.push(n[l]);else break;n=n.slice(l);let c=a.join(`
12`),u=c.replace(this.rules.other.blockquoteSetextReplace,`
13    $1`).replace(this.rules.other.blockquoteSetextReplace2,"");s=s?`${s}
14${c}`:c,r=r?`${r}
15${u}`:u;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,o,!0),this.lexer.state.top=d,n.length===0)break;let m=o.at(-1);if(m?.type==="code")break;if(m?.type==="blockquote"){let b=m,P=b.raw+`
16`+n.join(`
17`),x=this.blockquote(P);o[o.length-1]=x,s=s.substring(0,s.length-b.raw.length)+x.raw,r=r.substring(0,r.length-b.text.length)+x.text;break}else if(m?.type==="list"){let b=m,P=b.raw+`
18`+n.join(`
19`),x=this.list(P);o[o.length-1]=x,s=s.substring(0,s.length-m.raw.length)+x.raw,r=r.substring(0,r.length-b.raw.length)+x.raw,n=P.substring(o.at(-1).raw.length).split(`
20`);continue}}return{type:"blockquote",raw:s,tokens:o,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),s=n.length>1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");let o=this.rules.other.listItemRegex(n),i=!1;for(;e;){let l=!1,c="",u="";if(!(t=o.exec(e))||this.rules.block.hr.test(e))break;c=t[0],e=e.substring(c.length);let d=t[2].split(`
21`,1)[0].replace(this.rules.other.listReplaceTabs,A=>" ".repeat(3*A.length)),m=e.split(`
22`,1)[0],b=!d.trim(),P=0;if(this.options.pedantic?(P=2,u=d.trimStart()):b?P=t[1].length+1:(P=t[2].search(this.rules.other.nonSpaceChar),P=P>4?1:P,u=d.slice(P),P+=t[1].length),b&&this.rules.other.blankLine.test(m)&&(c+=m+`
23`,e=e.substring(m.length+1),l=!0),!l){let A=this.rules.other.nextBulletRegex(P),$=this.rules.other.hrRegex(P),k=this.rules.other.fencesBeginRegex(P),_=this.rules.other.headingBeginRegex(P),I=this.rules.other.htmlBeginRegex(P);for(;e;){let L=e.split(`
24`,1)[0],U;if(m=L,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting,"  "),U=m):U=m.replace(this.rules.other.tabCharGlobal,"    "),k.test(m)||_.test(m)||I.test(m)||A.test(m)||$.test(m))break;if(U.search(this.rules.other.nonSpaceChar)>=P||!m.trim())u+=`
25`+U.slice(P);else{if(b||d.replace(this.rules.other.tabCharGlobal,"    ").search(this.rules.other.nonSpaceChar)>=4||k.test(d)||_.test(d)||$.test(d))break;u+=`
26`+m}!b&&!m.trim()&&(b=!0),c+=L+`
27`,e=e.substring(L.length+1),d=U.slice(P)}}r.loose||(i?r.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(i=!0));let x=null,F;this.options.gfm&&(x=this.rules.other.listIsTask.exec(u),x&&(F=x[0]!=="[ ] ",u=u.replace(this.rules.other.listReplaceTask,""))),r.items.push({type:"list_item",raw:c,task:!!x,checked:F,loose:!1,text:u,tokens:[]}),r.raw+=c}let a=r.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let l=0;l<r.items.length;l++)if(this.lexer.state.top=!1,r.items[l].tokens=this.lexer.blockTokens(r.items[l].text,[]),!r.loose){let c=r.items[l].tokens.filter(d=>d.type==="space"),u=c.length>0&&c.some(d=>this.rules.other.anyLine.test(d.raw));r.loose=u}if(r.loose)for(let l=0;l<r.items.length;l++)r.items[l].loose=!0;return r}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:t[0],href:s,title:r}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Ia(t[1]),s=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
28`):[],o={type:"table",raw:t[0],header:[],align:[],rows:[]};if(n.length===s.length){for(let i of s)this.rules.other.tableAlignRight.test(i)?o.align.push("right"):this.rules.other.tableAlignCenter.test(i)?o.align.push("center"):this.rules.other.tableAlignLeft.test(i)?o.align.push("left"):o.align.push(null);for(let i=0;i<n.length;i++)o.header.push({text:n[i],tokens:this.lexer.inline(n[i]),header:!0,align:o.align[i]});for(let i of r)o.rows.push(Ia(i,o.header.length).map((a,l)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:o.align[l]})));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[2].charAt(0)==="="?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
29`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if
vendor: 8,692 bytes, lines 29-43
29(!this.rules.other.endAngleBracket.test(n))return;let o=Xn(n.slice(0,-1),"\\");if((n.length-o.length)%2===0)return}else{let o=Zg(t[2],"()");if(o===-2)return;if(o>-1){let i=(t[0].indexOf("!")===0?5:4)+t[1].length+o;t[2]=t[2].substring(0,o),t[0]=t[0].substring(0,i).trim(),t[3]=""}}let s=t[2],r="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(s);o&&(s=o[1],r=o[3])}else r=t[3]?t[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),La(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[s.toLowerCase()];if(!r){let o=n[0].charAt(0);return{type:"text",raw:o,text:o}}return La(n,r,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!(!s||s[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[2])||!n||this.rules.inline.punctuation.exec(n))){let r=[...s[0]].length-1,o,i,a=r,l=0,c=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+r);(s=c.exec(t))!=null;){if(o=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!o)continue;if(i=[...o].length,s[3]||s[4]){a+=i;continue}else if((s[5]||s[6])&&r%3&&!((r+i)%3)){l+=i;continue}if(a-=i,a>0)continue;i=Math.min(i,i+a+l);let u=[...s[0]][0].length,d=e.slice(0,r+s.index+u+i);if(Math.min(r,i)%2){let b=d.slice(1,-1);return{type:"em",raw:d,text:b,tokens:this.lexer.inlineTokens(b)}}let m=d.slice(2,-2);return{type:"strong",raw:d,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]==="@"?(n=t[1],s="mailto:"+n):(n=t[1],s=n),{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,s;if(t[2]==="@")n=t[0],s="mailto:"+n;else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(r!==t[0]);n=t[0],t[1]==="www."?s="http://"+t[0]:s=t[0]}return{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},kt=class lo{constructor(t){he(this,"tokens");he(this,"options");he(this,"state");he(this,"tokenizer");he(this,"inlineQueue");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Sn,this.options.tokenizer=this.options.tokenizer||new er,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:tt,block:Es.normal,inline:Yn.normal};this.options.pedantic?(n.block=Es.pedantic,n.inline=Yn.pedantic):this.options.gfm&&(n.block=Es.gfm,this.options.breaks?n.inline=Yn.breaks:n.inline=Yn.gfm),this.tokenizer.rules=n}static get rules(){return{block:Es,inline:Yn}}static lex(t,n){return new lo(n).lex(t)}static lexInline(t,n){return new lo(n).inlineTokens(t)}lex(t){t=t.replace(tt.carriageReturn,`
30`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let s=this.inlineQueue[n];this.inlineTokens(s.src,s.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],s=!1){for(this.options.pedantic&&(t=t.replace(tt.tabCharGlobal,"    ").replace(tt.spaceLine,""));t;){let r;if(this.options.extensions?.block?.some(i=>(r=i.call({lexer:this},t,n))?(t=t.substring(r.raw.length),n.push(r),!0):!1))continue;if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length);let i=n.at(-1);r.raw.length===1&&i!==void 0?i.raw+=`
31`:n.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length);let i=n.at(-1);i?.type==="paragraph"||i?.type==="text"?(i.raw+=(i.raw.endsWith(`
32`)?"":`
33`)+r.raw,i.text+=`
34`+r.text,this.inlineQueue.at(-1).src=i.text):n.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length);let i=n.at(-1);i?.type==="paragraph"||i?.type==="text"?(i.raw+=(i.raw.endsWith(`
35`)?"":`
36`)+r.raw,i.text+=`
37`+r.raw,this.inlineQueue.at(-1).src=i.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},n.push(r));continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),n.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),n.push(r);continue}let o=t;if(this.options.extensions?.startBlock){let i=1/0,a=t.slice(1),l;this.options.extensions.startBlock.forEach(c=>{l=c.call({lexer:this},a),typeof l=="number"&&l>=0&&(i=Math.min(i,l))}),i<1/0&&i>=0&&(o=t.substring(0,i+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o))){let i=n.at(-1);s&&i?.type==="paragraph"?(i.raw+=(i.raw.endsWith(`
38`)?"":`
39`)+r.raw,i.text+=`
40`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):n.push(r),s=o.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length);let i=n.at(-1);i?.type==="text"?(i.raw+=(i.raw.endsWith(`
41`)?"":`
42`)+r.raw,i.text+=`
43`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=i.text):n.push(r);continue}if(t){let i="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(i);break}else throw new Error(i)}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){let s=t,r=null;if(this.tokens.links){let l=Object.keys(this.tokens.links);if(l.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)l.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,r.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let o;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)o=r[2]?r[2].length:0,s=s.slice(0,r.index+o)+"["+"a".repeat(r[0].length-o-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=this.options.hooks?.emStrongMask?.call({lexer:this},s)??s;let i=!1,a="";for(;t;){i||(a=""),i=!1;let l;if(this.options.extensions?.inline?.some(u=>(l=u.call({lexer:this},t,n))?(t=t.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let u=n.at(-1);l.type==="text"&&u?.type==="text"?(u.raw+=l.raw,u.text+=l.text):n.push(l);continue}if(l=this.tokenizer.emStrong(t,s,a)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),n.push(l);continue}let c=t;if(this.options.extensions?.startInline){let u=1/0,d=t.slice(1),m;this.options.extensions.startInline.forEach(b=>{m=b.call({lexer:this},d),typeof m=="number"&&m>=0&&(u=Math.min(u,m))}),u<1/0&&u>=0&&(c=t.substring(0,u+1))}if(l=this.tokenizer.inlineText(c)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(a=l.raw.slice(-1)),i=!0;let u=n.at(-1);
vendor: 5,305 bytes, lines 43-62
43u?.type==="text"?(u.raw+=l.raw,u.text+=l.text):n.push(l);continue}if(t){let u="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return n}},tr=class{constructor(e){he(this,"options");he(this,"parser");this.options=e||Sn}space(e){return""}code({text:e,lang:t,escaped:n}){let s=(t||"").match(tt.notSpaceStart)?.[0],r=e.replace(tt.endingNewline,"")+`
44`;return s?'<pre><code class="language-'+At(s)+'">'+(n?r:At(r,!0))+`</code></pre>
45`:"<pre><code>"+(n?r:At(r,!0))+`</code></pre>
46`}blockquote({tokens:e}){return`<blockquote>
47${this.parser.parse(e)}</blockquote>
48`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>
49`}hr(e){return`<hr>
50`}list(e){let t=e.ordered,n=e.start,s="";for(let i=0;i<e.items.length;i++){let a=e.items[i];s+=this.listitem(a)}let r=t?"ol":"ul",o=t&&n!==1?' start="'+n+'"':"";return"<"+r+o+`>
51`+s+"</"+r+`>
52`}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+At(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>
53`}checkbox({checked:e}){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>
54`}table(e){let t="",n="";for(let r=0;r<e.header.length;r++)n+=this.tablecell(e.header[r]);t+=this.tablerow({text:n});let s="";for(let r=0;r<e.rows.length;r++){let o=e.rows[r];n="";for(let i=0;i<o.length;i++)n+=this.tablecell(o[i]);s+=this.tablerow({text:n})}return s&&(s=`<tbody>${s}</tbody>`),`<table>
55<thead>
56`+t+`</thead>
57`+s+`</table>
58`}tablerow({text:e}){return`<tr>
59${e}</tr>
60`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
61`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${At(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let s=this.parser.parseInline(n),r=Aa(e);if(r===null)return s;e=r;let o='<a href="'+e+'"';return t&&(o+=' title="'+At(t)+'"'),o+=">"+s+"</a>",o}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=Aa(e);if(r===null)return At(n);e=r;let o=`<img src="${e}" alt="${n}"`;return t&&(o+=` title="${At(t)}"`),o+=">",o}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:At(e.text)}},Go=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},_t=class co{constructor(t){he(this,"options");he(this,"renderer");he(this,"textRenderer");this.options=t||Sn,this.options.renderer=this.options.renderer||new tr,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Go}static parse(t,n){return new co(n).parse(t)}static parseInline(t,n){return new co(n).parseInline(t)}parse(t,n=!0){let s="";for(let r=0;r<t.length;r++){let o=t[r];if(this.options.extensions?.renderers?.[o.type]){let a=o,l=this.options.extensions.renderers[a.type].call({parser:this},a);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(a.type)){s+=l||"";continue}}let i=o;switch(i.type){case"space":{s+=this.renderer.space(i);continue}case"hr":{s+=this.renderer.hr(i);continue}case"heading":{s+=this.renderer.heading(i);continue}case"code":{s+=this.renderer.code(i);continue}case"table":{s+=this.renderer.table(i);continue}case"blockquote":{s+=this.renderer.blockquote(i);continue}case"list":{s+=this.renderer.list(i);continue}case"html":{s+=this.renderer.html(i);continue}case"def":{s+=this.renderer.def(i);continue}case"paragraph":{s+=this.renderer.paragraph(i);continue}case"text":{let a=i,l=this.renderer.text(a);for(;r+1<t.length&&t[r+1].type==="text";)a=t[++r],l+=`
62`+this.renderer.text(a);n?s+=this.renderer.paragraph({type:"paragraph",raw:l,text:l,tokens:[{type:"text",raw:l,text:l,escaped:!0}]}):s+=l;continue}default:{let a='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return s}parseInline(t,n=this.renderer){let s="";for(let r=0;r<t.length;r++){let o=t[r];if(this.options.extensions?.renderers?.[o.type]){let a=this.options.extensions.renderers[o.type].call({parser:this},o);if(a!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(o.type)){s+=a||"";continue}}let i=o;switch(i.type){case"escape":{s+=n.text(i);break}case"html":{s+=n.html(i);break}case"link":{s+=n.link(i);break}case"image":{s+=n.image(i);break}case"strong":{s+=n.strong(i);break}case"em":{s+=n.em(i);break}case"codespan":{s+=n.codespan(i);break}
vendor: 8,367 bytes, lines 62-63
62case"br":{s+=n.br(i);break}case"del":{s+=n.del(i);break}case"text":{s+=n.text(i);break}default:{let a='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return s}},Rs,Jn=(Rs=class{constructor(e){he(this,"options");he(this,"block");this.options=e||Sn}preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(){return this.block?kt.lex:kt.lexInline}provideParser(){return this.block?_t.parse:_t.parseInline}},he(Rs,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),he(Rs,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Rs),tb=class{constructor(...e){he(this,"defaults",$o());he(this,"options",this.setOptions);he(this,"parse",this.parseMarkdown(!0));he(this,"parseInline",this.parseMarkdown(!1));he(this,"Parser",_t);he(this,"Renderer",tr);he(this,"TextRenderer",Go);he(this,"Lexer",kt);he(this,"Tokenizer",er);he(this,"Hooks",Jn);this.use(...e)}walkTokens(e,t){let n=[];for(let s of e)switch(n=n.concat(t.call(this,s)),s.type){case"table":{let r=s;for(let o of r.header)n=n.concat(this.walkTokens(o.tokens,t));for(let o of r.rows)for(let i of o)n=n.concat(this.walkTokens(i.tokens,t));break}case"list":{let r=s;n=n.concat(this.walkTokens(r.items,t));break}default:{let r=s;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(o=>{let i=r[o].flat(1/0);n=n.concat(this.walkTokens(i,t))}):r.tokens&&(n=n.concat(this.walkTokens(r.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let o=t.renderers[r.name];o?t.renderers[r.name]=function(...i){let a=r.renderer.apply(this,i);return a===!1&&(a=o.apply(this,i)),a}:t.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=t[r.level];o?o.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level==="block"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level==="inline"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),s.extensions=t),n.renderer){let r=this.defaults.renderer||new tr(this.defaults);for(let o in n.renderer){if(!(o in r))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let i=o,a=n.renderer[i],l=r[i];r[i]=(...c)=>{let u=a.apply(r,c);return u===!1&&(u=l.apply(r,c)),u||""}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new er(this.defaults);for(let o in n.tokenizer){if(!(o in r))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let i=o,a=n.tokenizer[i],l=r[i];r[i]=(...c)=>{let u=a.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Jn;for(let o in n.hooks){if(!(o in r))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let i=o,a=n.hooks[i],l=r[i];Jn.passThroughHooks.has(o)?r[i]=c=>{if(this.defaults.async&&Jn.passThroughHooksRespectAsync.has(o))return(async()=>{let d=await a.call(r,c);return l.call(r,d)})();let u=a.call(r,c);return l.call(r,u)}:r[i]=(...c)=>{if(this.defaults.async)return(async()=>{let d=await a.apply(r,c);return d===!1&&(d=await l.apply(r,c)),d})();let u=a.apply(r,c);return u===!1&&(u=l.apply(r,c)),u}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,o=n.walkTokens;s.walkTokens=function(i){let a=[];return a.push(o.call(this,i)),r&&(a=a.concat(r.call(this,i))),a}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return kt.lex(e,t??this.defaults)}parser(e,t){return _t.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let s={...n},r={...this.defaults,...s},o=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&s.async===!1)return o(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=e),r.async)return(async()=>{let i=r.hooks?await r.hooks.preprocess(t):t,a=await(r.hooks?await r.hooks.provideLexer():e?kt.lex:kt.lexInline)(i,r),l=r.hooks?await r.hooks.processAllTokens(a):a;r.walkTokens&&await Promise.all(this.walkTokens(l,r.walkTokens));let c=await(r.hooks?await r.hooks.provideParser():e?_t.parse:_t.parseInline)(l,r);return r.hooks?await r.hooks.postprocess(c):c})().catch(o);try{r.hooks&&(t=r.hooks.preprocess(t));let i=(r.hooks?r.hooks.provideLexer():e?kt.lex:kt.lexInline)(t,r);r.hooks&&(i=r.hooks.processAllTokens(i)),r.walkTokens&&this.walkTokens(i,r.walkTokens);let a=(r.hooks?r.hooks.provideParser():e?_t.parse:_t.parseInline)(i,r);return r.hooks&&(a=r.hooks.postprocess(a)),a}catch(i){return o(i)}}}onError(e,t){return n=>{if(n.message+=`
63Please report this to https://github.com/markedjs/marked.`,e){let s="<p>An error occurred:</p><pre>"+At(n.message+"",!0)+"</pre>";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},wn=new tb;function me(e,t){return wn.parse(e,t)}me.options=me.setOptions=function(e){return wn.setOptions(e),me.defaults=wn.defaults,Uc(me.defaults),me};me.getDefaults=$o;me.defaults=Sn;me.use=function(...e){return wn.use(...e),me.defaults=wn.defaults,Uc(me.defaults),me};me.walkTokens=function(e,t){return wn.walkTokens(e,t)};me.parseInline=wn.parseInline;me.Parser=_t;me.parser=_t.parse;me.Renderer=tr;me.TextRenderer=Go;me.Lexer=kt;me.lexer=kt.lex;me.Tokenizer=er;me.Hooks=Jn;me.parse=me;me.options;me.setOptions;me.use;me.walkTokens;me.parseInline;_t.parse;kt.lex;const nb={class:"relative bg-white rounded-lg shadow-2xl max-w-4xl w-full mx-4 max-h-[90vh] overflow-y-auto"},sb={class:"p-8"},rb={class:"text-2xl font-bold text-gray-900 mb-6 text-center"},ob={class:"text-gray-700 mb-3 text-sm text-center"},ib={href:"https://github.com/bestian/sensemaking-tools",target:"_blank",rel:"noopener noreferrer",class:"text-blue-600 hover:text-blue-800 hover:underline"},ab={href:"https://www.vtaiwan.tw/uber-x-report",target:"_blank",rel:"noopener noreferrer",class:"text-blue-600 hover:text-blue-800 hover:underline"},lb={class:"w-fit ml-auto mb-6"},cb={class:"flex flex-col md:flex-row gap-6 mb-6"},ub={class:"flex-1 bg-gray-50 rounded-lg p-6 hover:shadow-md transition-shadow"},db={class:"text-lg font-semibold text-gray-900 mb-2 text-center"},pb={class:"text-gray-700 mb-3 text-sm text-left"},fb={class:"text-center"},mb={class:"flex-1 bg-gray-50 rounded-lg p-6 hover:shadow-md transition-shadow"},hb={class:"text-lg font-semibold text-gray-900 mb-2 text-center"},gb={class:"text-gray-700 mb-3 text-sm text-left"},bb={class:"text-center"},vb={class:"flex-1 bg-gray-50 rounded-lg p-6 hover:shadow-md transition-shadow"},yb={class:"text-lg font-semibold text-gray-900 mb-2 text-center"},kb={class:"text-gray-700 mb-3 text-sm text-left"},_b={class:"text-center"},wb={class:"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-6"},Tb={class:"text-sm text-blue-800 text-center"},Sb={class:"flex flex-col sm:flex-row justify-between items-center gap-4 pt-6 border-t border-gray-200"},Pb={class:"flex items-center cursor-pointer"},xb={class:"text-sm text-gray-700"},Cb={class:"min-h-screen bg-gray-50 py-8"},Eb={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},Rb={class:"bg-white rounded-lg shadow-lg p-8 mb-6"},Ab={class:"text-3xl font-bold text-center text-gray-900 mb-8"},Ib={class:"space-y-2"},Lb={for:"file",class:"block text-sm font-medium text-gray-700"},Ob={class:"space-y-2"},Db={for:"apiKey",class:"block text-sm font-medium text-gray-700"},Nb={href:"https://openrouter.ai/keys",target:"_blank",rel:"noopener noreferrer",class:"ml-2 text-blue-600 hover:text-blue-800 hover:underline text-xs font-normal"},Mb={class:"relative"}
63,Fb=["type","placeholder"],Vb=["aria-label","title"],Ub={key:0,class:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},$b={key:1,class:"h-5 w-5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","aria-hidden":"true"},jb={class:"text-xs text-gray-600 space-y-1"},Kb={class:"italic"},Hb={class:"text-blue-600"},Bb={class:"font-medium"},Wb={class:"space-y-2"},qb={for:"model",class:"block text-sm font-medium text-gray-700"},zb=["placeholder"],Gb={class:"text-xs text-gray-600 space-y-1"},Yb={class:"italic"},Xb={class:"text-orange-600 font-medium"},Qb={class:"text-blue-600 font-medium"},Jb={class:"text-blue-600"},Zb={href:"https://openrouter.ai/models",target:"_blank",rel:"noopener noreferrer",class:"hover:underline"},ev={class:"space-y-2"},tv={for:"additionalContext",class:"block text-sm font-medium text-gray-700"},nv={class:"text-gray-500 text-sm italic"},sv=["placeholder"],rv={class:"space-y-2"},ov={for:"outputLang",class:"block text-sm font-medium text-gray-700"},iv={value:"en"},av={value:"zh-TW"},lv={value:"zh-CN"},cv={value:"ja"},uv={value:"fr"},dv={value:"es"},pv={class:"bg-yellow-50 border border-yellow-200 rounded-lg p-4 mb-4"},fv={class:"flex items-start gap-2"},mv={class:"text-yellow-800 text-sm leading-relaxed"},hv={class:"space-y-3"},gv={class:"block text-sm font-medium text-gray-700"},bv={class:"space-y-2"},vv={class:"flex items-center"},yv={class:"text-sm text-gray-700"},kv={class:"flex items-center"},_v={class:"text-sm text-gray-700"},wv={class:"flex items-center"},Tv={class:"text-sm text-gray-700"},Sv={key:0,class:"ml-6 space-y-2"},Pv={for:"customRetryCount",class:"block text-sm font-medium text-gray-700"},xv={class:"text-xs text-gray-600"},Cv=["disabled"],Ev={key:0,class:"bg-blue-50 border border-blue-200 rounded-lg p-6 mb-6"},Rv={class:"text-lg font-semibold text-blue-900 mb-4"},Av={class:"grid grid-cols-1 md:grid-cols-2 gap-4 text-blue-800 mb-4"},Iv={class:"bg-blue-100 p-3 rounded-md"},Lv={class:"font-medium text-blue-800"},Ov={class:"bg-blue-100 p-3 rounded-md"},Dv={class:"font-medium text-blue-800"},Nv={class:"bg-blue-100 p-3 rounded-md"},Mv={class:"font-medium text-blue-800"},Fv={class:"bg-blue-100 p-3 rounded-md"},Vv={class:"font-medium text-blue-800"},Uv={class:"flex justify-center items-center p-3 bg-blue-100 rounded-md"},$v={class:"text-blue-800"},jv={key:0,class:"text-center p-3 bg-orange-100 rounded-md mt-3"},Kv={class:"text-orange-800"},Hv={key:1,class:"flex flex-col gap-4"},Bv=["innerHTML"],Wv={key:1},qv={class:"flex flex-wrap gap-3 mt-6"},zv=Xt({__name:"HomeView",setup(e){const{t}=Hn(),n=ve(!1),s=ve(!1);qt(n,()=>{document.body.style.overflow=n.value?"hidden":""}),ef(()=>{n.value=!1});const r=ve(""),o=ve(!1),i=ve("openai/gpt-oss-120b"),a=ve(""),l=ve("zh-TW"),c=ve(null),u=ve(!1),d=ve([]),m=ve("normal"),b=ve(3),P=ve(0),x=ve(3),F=ve(null),A=ve(null),$=ve(null),k=ve(null),_=ve(!1),I=ve({taskId:"",status:"",estimatedTime:"",commentsCount:0,model:""}),L=ve(""),U=ve(""),G=new Set,z=ve(!1),ae=()=>{switch(m.value){case"strict":x.value=1;break;case"normal":x.value=3;break;case"custom":x.value=Math.max(1,b.value);break}},Re=()=>{c.value&&(F.value={apiKey:r.value,model:i.value,file:c.value,additionalContext:a.value,outputLang:l.value})},ee=async()=>{if(!F.value)return console.error("沒有儲存的重試數據"),null;console.log(`🔄 重試第 ${P.value} 次 (最大 ${x.value} 次)`);try{const y=new FormData;y.append("file",F.value.file);const C="https://sensemaker-backend.bestian123.workers.dev/api/sensemake";y.append("openRouterModel",F.value.model),F.value.apiKey.trim()&&y.append("openRouterApiKey",F.value.apiKey.trim()),F.value.additionalContext.trim()&&y.append("additionalContext",F.value.additionalContext.trim()),F.value.outputLang!=="en"&&y.append("outputLang",F.value.outputLang);const D=await fetch(C,{method:"POST",body:y}
63),N=await D.json();if(D.status===401){const Y=N.message||t("home.invalidApiKey")||"Invalid API Key";return ue(Y,"error"),null}return D.ok&&N.success?N.taskId:(ue(`${t("home.retryFailed")} (${D.status}):
64${JSON.stringify(N,null,2)}`,"error"),null)}catch(y){const C=y instanceof Error?y.message:String(y);return ue(`${t("home.retryError")}:
65${C}`,"error"),null}},we=y=>{const C=y.target;C.files&&C.files[0]&&(c.value=C.files[0])},vt=async()=>{if(be(),A.value=null,d.value.length=0,!c.value){ue(t("home.selectFileFirst"),"error");return}P.value=0,Re(),u.value=!0,U.value="",Se(!1);try{const y=new FormData;y.append("file",c.value);const C="https://sensemaker-backend.bestian123.workers.dev/api/sensemake";y.append("openRouterModel",i.value),r.value.trim()&&y.append("openRouterApiKey",r.value.trim()),a.value.trim()&&y.append("additionalContext",a.value.trim()),l.value!=="en"&&y.append("outputLang",l.value);const D=await fetch(C,{method:"POST",body:y}),N=await D.json();if(D.status===401){console.log(N.message);const Y=t("home.invalidApiKey");ue(Y,"error"),_.value=!1;return}if(D.ok&&N.success)A.value=N.taskId,I.value={taskId:N.taskId,status:N.status,estimatedTime:N.estimatedTime,commentsCount:N.commentsCount||0,model:N.model||i.value},_.value=!0,He(N.taskId);else if(D.status===500&&m.value!=="strict"){console.log("❌ 500 錯誤,開始重試機制");let Y=null,h=0;for(;h<x.value&&!Y;)h++,P.value=h,console.log(`🔄 重試第 ${h} 次 (最大 ${x.value} 次)`),Y=await ee(),!Y&&h<x.value&&await new Promise(g=>setTimeout(g,2e3));Y?(A.value=Y,I.value={taskId:Y,status:"processing",estimatedTime:"N/A",commentsCount:0,model:i.value},_.value=!0,He(Y)):ue(`${t("home.allRetriesFailed")}`,"error")}else ue(`${t("home.requestFailed")} (${D.status}):
66${JSON.stringify(N,null,2)}`,"error")}catch(y){const C=y instanceof Error?y.message:String(y);if(m.value!=="strict"){console.log("❌ 請求錯誤,開始重試機制");let D=null,N=0;for(;N<x.value&&!D;)N++,P.value=N,console.log(`🔄 重試第 ${N} 次 (最大 ${x.value} 次)`),D=await ee(),!D&&N<x.value&&await new Promise(Y=>setTimeout(Y,2e3));D?(A.value=D,I.value={taskId:D,status:"processing",estimatedTime:"N/A",commentsCount:0,model:i.value},_.value=!0,He(D)):ue(`${t("home.allRetriesFailed")}`,"error")}else ue(`${t("home.requestError")}:
67${C}`,"error")}finally{u.value=!1}},He=y=>{be(),k.value=window.setTimeout(()=>{k.value=null,A.value===y&&(console.log("開始輪詢任務結果..."),$.value=setInterval(async()=>{await re(y)},60*1e3),re(y))},180*1e3),ne(t("home.taskInQueue"))},be=()=>{k.value!==null&&(clearTimeout(k.value),k.value=null),$.value!==null&&(clearInterval($.value),$.value=null)},re=async y=>{if(A.value===y){console.log("checkTaskResult",y);try{const C=await fetch(`https://sensemaker-backend.bestian123.workers.dev/api/sensemake/result/${y}`),D=await C.json();if(A.value!==y)return;if(C.ok&&D.success)D.status==="completed"?(be(),_.value=!1,G.has(y)||(G.add(y),Ge(D))):ne(`${t("home.taskProcessing")} (${new Date().toLocaleTimeString()})`);else if(C.status===404)ne(`${t("home.taskProcessing")} (${new Date().toLocaleTimeString()})`);else if(C.status===500){if(console.error("❌ 任務處理失敗 (500):",D),ue(xe({taskId:D.taskId,failedAt:D.failedAt,message:D.message,error:D.error}),"error",!0),$.value&&(clearInterval($.value),$.value=null),_.value=!1,m.value!=="strict"&&F.value&&P.value<x.value){console.log("❌ 輪詢遇到 500 錯誤,開始重試機制");let N=!1,Y=P.value;for(;Y<x.value&&!N;){Y++,P.value=Y,console.log(`🔄 重試第 ${Y} 次 (最大 ${x.value} 次)`);const h=await ee();h?(A.value=h,I.value={taskId:h,status:"processing",estimatedTime:"N/A",commentsCount:0,model:F.value.model},_.value=!0,He(h),N=!0):Y<x.value&&await new Promise(g=>setTimeout(g,2e3))}N||ue(t("home.allRetriesFailed"),"error")}}else $.value&&(clearInterval($.value),$.value=null),ue(`${t("home.requestFailed")}:
68${JSON.stringify(D,null,2)}`,"error"),_.value=!1}catch(C){const D=C instanceof Error?C.message:String(C);if(console.error("❌ 輪詢請求錯誤:",D),m.value!=="strict"&&F.value&&P.value<x.value){console.log("❌ 輪詢遇到網絡錯誤,開始重試機制"),ue(`${t("home.requestError")} - ${t("home.retryingRequest")}`,"info");let N=!1,Y=P.value;for(;Y<x.value&&!N;){Y++,P.value=Y,console.log(`🔄 重試第 ${Y} 次 (最大 ${x.value} 次)`);const h=await ee();h?(A.value=h,I.value={taskId:h,status:"processing",estimatedTime:"N/A",commentsCount:0,model:F.value.model},_.value=!0,He(h),N=!0):Y<x.value&&await new Promise(g=>setTimeout(g,2e3))}N||ue(`${t("home.allRetriesFailed")}`,"error")}else ne(`${t("home.requestError")}: ${D} (${new Date().toLocaleTimeString()})`)}}},ne=y=>{L.value=y},Ge=y=>{U.value=y.summary||"",Se(y.summary?.trim().length>0);const C=me.parse(y.summary||""),D=`
69    <h2>${t("home.taskCompleted")}</h2>
70    <div style="margin-bottom: 1em;">
71      <p><strong>📊 ${t("home.commentsProcessed",{count:y.commentsProcessed||"N/A"})}</strong></p>
72      <p><strong>🤖 ${t("home.model")}:</strong> ${y.model||"N/A"}</p>
73      <p><strong>⏰ ${t("home.completedAt")}:</strong>
73 ${new Date(y.completedAt).toLocaleString("zh-TW")}</p>
74    </div>
75    <hr style="margin: 1.5em 0; border: none; border-top: 1px solid #ddd;">
76    <h3>📝 ${t("home.summary")}:</h3>
77    <div class="markdown-content">
78      ${C}
79    </div>
80  `;ue(D,"success",!0)},ue=(y,C,D=!1)=>{d.value.push({type:C,isHtml:D,content:y})};function xe({taskId:y,failedAt:C,message:D,error:N}){return`
81    <h2>${t("home.taskFailed")}</h2>
82    <div>
83      <p><strong>${t("home.taskId")}:</strong> ${y}</p>
84      <p><strong>${t("home.failedAt")}:</strong> ${new Date(C).toLocaleString("zh-TW")}</p>
85      <p><strong>${t("home.errorMessage")}:</strong> ${D}</p>
86      <p><strong>${t("home.detailedError")}:</strong> ${N}</p>
87    </div>
88  `}const Se=y=>{z.value=y},dt=async()=>{try{if(!U.value||U.value.trim().length===0){ue(t("home.noMarkdownContent"),"error");return}const y=A.value||"result",C=new Date().toISOString().replace(/[:.]/g,"-"),D=`sensemake-summary-${y}-${C}.md`,N=new Blob([U.value],{type:"text/markdown;charset=utf-8"}),Y=URL.createObjectURL(N),h=document.createElement("a");h.href=Y,h.download=D,document.body.appendChild(h),h.click(),h.remove(),URL.revokeObjectURL(Y),await ot(y)}catch(y){const C=y instanceof Error?y.message:String(y);ue(`${t("home.downloadFailed")}: ${C}`,"error")}},ot=async y=>{try{console.log(`🗑️ 刪除任務報告: ${y}`);const C=await fetch(`https://sensemaker-backend.bestian123.workers.dev/api/sensemake/delete/${y}`,{method:"DELETE"});C.ok?console.log(`✅ 任務報告 ${y} 已成功刪除`):console.warn(`⚠️ 刪除任務報告 ${y} 失敗: ${C.status}`)}catch(C){console.error(`❌ 刪除任務報告 ${y} 時發生錯誤:`,C)}},it=async()=>{try{(await fetch("https://sensemaker-backend.bestian123.workers.dev/api/test")).ok?console.log("✅ 後端服務運行正常"):console.log("❌ 後端服務異常")}catch(y){console.log("❌ 無法連接到後端服務:",y)}};me.setOptions({breaks:!0,gfm:!0});const Ie=()=>{n.value=!1,s.value&&localStorage.setItem("dontShowGuide","true")};return dr(()=>{it(),localStorage.getItem("dontShowGuide")||(n.value=!0)}),jn(()=>{be()}),(y,C)=>{const D=gl("router-link");return Ae(),Le(et,null,[n.value?(Ae(),Le("div",{key:0,class:"fixed inset-0 z-[1000] flex items-center justify-center",onClick:Ri(Ie,["self"])},[C[16]||(C[16]=v("div",{class:"absolute inset-0 bg-black bg-opacity-50"},null,-1)),v("div",nb,[v("button",{onClick:Ie,class:"absolute top-4 right-4 text-gray-400 hover:text-gray-600 transition-colors z-10","aria-label":"關閉"},[...C[10]||(C[10]=[v("svg",{class:"w-6 h-6",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M6 18L18 6M6 6l12 12"})],-1)])]),v("div",sb,[v("h2",rb,H(j(t)("guideModal.title")),1),v("p",ob,[Ve(H(j(t)("guideModal.description"))+" ",1),C[11]||(C[11]=v("br",null,null,-1)),v("a",ib,H(j(t)("guideModal.sensemakingToolsLink")),1),C[12]||(C[12]=v("br",null,null,-1)),v("a",ab,H(j(t)("guideModal.uberReportExample")),1)]),v("div",lb,[oe(Fc)]),v("div",cb,[v("div",ub,[C[13]||(C[13]=Dd('<div class="mb-4 flex justify-center" data-v-1cd07606><div class="w-32 h-32 bg-blue-50 rounded-lg flex items-center justify-center" data-v-1cd07606><svg class="w-20 h-20 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-v-1cd07606><path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z" data-v-1cd07606></path><circle cx="8" cy="10" r="1" fill="currentColor" data-v-1cd07606></circle><circle cx="12" cy="10" r="1" fill="currentColor" data-v-1cd07606></circle><circle cx="16" cy="10" r="1" fill="currentColor" data-v-1cd07606></circle></svg></div></div>',1)),v("h3",db,H(j(t)("guideModal.polisTitle")),1),v("p",pb,H(j(t)("guideModal.polisDescription")),1),v("div",fb,[oe(D,{to:"/guide/polis",class:"text-blue-600 hover:text-blue-800 hover:underline text-sm"},{default:$e(()=>[Ve(H(j(t)("guideModal.polisLink")),1)]),_:1})])]),v("div",mb,[C[14]||(C[14]=v("div",{class:"mb-4 flex justify-center"},[v("div",{class:"w-32 h-32 bg-purple-50 rounded-lg flex items-center justify-center"},[v("svg",{class:"w-20 h-20 text-purple-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"})])])],-1)),v("h3",hb,H(j(t)("guideModal.openRouterTitle")),1),v("p",gb,H(j(t)("guideModal.openRouterDescription")),1),v("div",bb,[oe(D,{to:"/guide/openrouter",class:"text-blue-600 hover:text-blue-800 hover:underline text-sm"},{default:$e(()=>[Ve(H(j(t)("guideModal.openRouterLink")),1)]),_:1})])]),v("div",vb,[C[15]||(C[15]=v("div",{class:"mb-4 flex justify-center"},[v("div",{class:"w-32 h-32 bg-green-50 rounded-lg flex items-center justify-center"},[v("svg",{class:"w-20 h-20 text-green-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"1.5",d:"M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"})])])],-1)),v("h3",yb,H(j(t)("guideModal.sensemakerTitle")),1),v("p",kb,H(j(t)("guideModal.sensemakerDescription")),1),v("div",_b,[oe(D,{to:"/guide/sensemaker",class:"text-blue-600 hover:text-blue-800 hover:underline text-sm"},{default:$e(()=>[Ve(H(j(t)("guideModal.sensemakerLink")),1)]),_:1})])])]),v("div",wb,[v("p",Tb,H(j(t)("guideModal.tip")),1)]),v("div",Sb,[v("label",Pb,[Rt(v("input",{type:"checkbox","onUpdate:modelValue":C[0]||(C[0]=N=>s.value=N),class:"mr-2 w-4 h-4 text-blue-600 border-gray-300 rounded focus:ring-blue-500"},null,512),[[jl,s.value]]),v("span",xb,H(j(t)("guideModal.dontShowAgain")),1
88)]),v("button",{onClick:Ie,class:"bg-blue-600 hover:bg-blue-700 text-white font-medium py-2 px-6 rounded-md transition-colors"},H(j(t)("guideModal.iKnow")),1)])])])])):vn("",!0),v("div",Cb,[v("div",Eb,[v("div",Rb,[v("h1",Ab,H(j(t)("home.title")),1),v("form",{onSubmit:Ri(vt,["prevent"]),class:"space-y-6"},[v("div",Ib,[v("label",Lb,H(j(t)("home.fileLabel")),1),v("input",{type:"file",id:"file",onChange:we,accept:".json,.csv,application/json,text/csv",required:"",class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-2 focus:ring-democratic-red focus:border-democratic-red text-black dark:text-black"},null,32)]),v("div",Ob,[v("label",Db,[Ve(H(j(t)("home.apiKeyLabel"))+" ",1),C[17]||(C[17]=v("span",{class:"text-red-500 font-bold"},"*",-1)),v("a",Nb,H(j(t)("home.getApiKeyLink")),1)]),v("div",Mb,[Rt(v("input",{type:o.value?"text":"password",id:"apiKey","onUpdate:modelValue":C[1]||(C[1]=N=>r.value=N),placeholder:j(t)("home.apiKeyPlaceholder"),required:"",class:"w-full px-3 py-2 pr-10 border border-gray-300 rounded-md shadow-sm text-gray-900 bg-white focus:outline-none focus:ring-2 focus:ring-democratic-red focus:border-democratic-red"},null,8,Fb),[[pp,r.value]]),v("button",{type:"button",class:"absolute inset-y-0 right-0 flex items-center px-3 text-gray-500 hover:text-gray-700 focus:outline-none focus:text-democratic-red","aria-label":o.value?j(t)("home.hideApiKey"):j(t)("home.showApiKey"),title:o.value?j(t)("home.hideApiKey"):j(t)("home.showApiKey"),onClick:C[2]||(C[2]=N=>o.value=!o.value)},[o.value?(Ae(),Le("svg",Ub,[...C[18]||(C[18]=[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 3l18 18M10.6 10.6a2 2 0 002.8 2.8M9.9 4.2A10.5 10.5 0 0112 4c5 0 9 4.5 10 8a12.7 12.7 0 01-2.1 3.9M6.6 6.6C4.4 8 2.8 10.1 2 12c1 3.5 5 8 10 8 1.6 0 3.1-.5 4.4-1.2"},null,-1)])])):(Ae(),Le("svg",$b,[...C[19]||(C[19]=[v("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M2 12c1-3.5 5-8 10-8s9 4.5 10 8c-1 3.5-5 8-10 8S3 15.5 2 12z"},null,-1),v("circle",{cx:"12",cy:"12",r:"3","stroke-width":"2"},null,-1)])]))],8,Vb)]),v("div",jb,[v("p",Kb,H(j(t)("home.apiKeyRequired")),1),v("p",Hb,[v("span",Bb,H(j(t)("home.privacyNote")),1)])])]),v("div",Wb,[v("label",qb,[Ve(H(j(t)("home.modelLabel"))+" ",1),C[20]||(C[20]=v("span",{class:"text-red-500 font-bold"},"*",-1))]),Rt(v("input",{type:"text",id:"model","onUpdate:modelValue":C[3]||(C[3]=N=>i.value=N),placeholder:j(t)("home.modelPlaceholder"),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm text-gray-900 bg-white focus:outline-none focus:ring-2 focus:ring-democratic-red focus:border-democratic-red"},null,8,zb),[[is,i.value]]),v("div",Gb,[v("p",Yb,H(j(t)("home.modelNote")),1),v("p",Xb,H(j(t)("home.costNote")),1),v("p",Qb,H(j(t)("home.timeNote")),1),v("p",Jb,[v("a",Zb,H(j(t)("home.modelLinkText")),1)])])]),v("div",ev,[v("label",tv,H(j(t)("home.additionalContextLabel")),1),v("p",nv,H(j(t)("home.additionalContextNote")),1),Rt(v("input",{type:"text",id:"additionalContext","onUpdate:modelValue":C[4]||(C[4]=N=>a.value=N),placeholder:j(t)("home.additionalContextPlaceholder"),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm text-gray-900 bg-white focus:outline-none focus:ring-2 focus:ring-democratic-red focus:border-democratic-red"},null,8,sv),[[is,a.value]])]),v("div",rv,[v("label",ov,H(j(t)("home.outputLangLabel")),1),Rt(v("select",{id:"outputLang","onUpdate:modelValue":C[5]||(C[5]=N=>l.value=N),class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm text-gray-900 bg-white focus:outline-none focus:ring-2 focus:ring-democratic-red focus:border-democratic-red"},[v("option",iv,H(j(t)("home.outputLangOptions.en")),1),v("option",av,H(j(t)("home.outputLangOptions.zh-TW")),1),v("option",lv,H(j(t)("home.outputLangOptions.zh-CN")),1
88),v("option",cv,H(j(t)("home.outputLangOptions.ja")),1),v("option",uv,H(j(t)("home.outputLangOptions.fr")),1),v("option",dv,H(j(t)("home.outputLangOptions.es")),1)],512),[[Kl,l.value]])]),v("div",pv,[v("div",fv,[v("div",null,[v("p",mv,H(j(t)("home.riskWarning")),1)])])]),v("div",hv,[v("label",gv,H(j(t)("home.retryModeLabel")),1),v("div",bv,[v("label",vv,[Rt(v("input",{type:"radio","onUpdate:modelValue":C[6]||(C[6]=N=>m.value=N),value:"strict",onChange:ae,class:"mr-2"},null,544),[[Ns,m.value]]),v("span",yv,H(j(t)("home.retryModeStrict")),1)]),v("label",kv,[Rt(v("input",{type:"radio","onUpdate:modelValue":C[7]||(C[7]=N=>m.value=N),value:"normal",onChange:ae,class:"mr-2"},null,544),[[Ns,m.value]]),v("span",_v,H(j(t)("home.retryModeNormal")),1)]),v("label",wv,[Rt(v("input",{type:"radio","onUpdate:modelValue":C[8]||(C[8]=N=>m.value=N),value:"custom",onChange:ae,class:"mr-2"},null,544),[[Ns,m.value]]),v("span",Tv,H(j(t)("home.retryModeCustom")),1)])]),m.value==="custom"?(Ae(),Le("div",Sv,[v("label",Pv,H(j(t)("home.customRetryCountLabel")),1),Rt(v("input",{type:"number",id:"customRetryCount","onUpdate:modelValue":C[9]||(C[9]=N=>b.value=N),min:"1",max:"10",onInput:ae,class:"w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm text-gray-900 bg-white focus:outline-none focus:ring-2 focus:ring-democratic-red focus:border-democratic-red"},null,544),[[is,b.value]]),v("p",xv,H(j(t)("home.customRetryCountNote")),1)])):vn("",!0)]),v("button",{type:"submit",disabled:u.value||!r.value.trim(),class:"w-full bg-democratic-red hover:bg-red-700 disabled:bg-gray-400 text-white font-medium py-3 px-4 rounded-md transition-colors duration-200 disabled:cursor-not-allowed"},H(u.value?j(t)("home.processing"):j(t)("home.startAnalysis")),9,Cv)],32)]),_.value?(Ae(),Le("div",Ev,[v("h3",Rv,H(j(t)("home.taskStatus")),1),v("div",Av,[v("div",Iv,[v("span",Lv,H(j(t)("home.taskId"))+":",1),Ve(" "+H(I.value.taskId),1)]),v("div",Ov,[v("span",Dv,H(j(t)("home.status"))+":",1),Ve(" "+H(I.value.status),1)]),v("div",Nv,[v("span",Mv,H(j(t)("home.commentsCount"))+":",1),Ve(" "+H(I.value.commentsCount),1)]),v("div",Fv,[v("span",Vv,H(j(t)("home.model"))+":",1),Ve(" "+H(I.value.model),1)])]),v("div",Uv,[C[21]||(C[21]=v("div",{class:"inline-block w-5 h-5 border-2 border-blue-600 border-t-transparent rounded-full animate-spin mr-2"},null,-1)),v("span",$v,H(L.value),1)]),P.value>0?(Ae(),Le("div",jv,[C[22]||(C[22]=v("div",{class:"inline-block w-5 h-5 border-2 border-orange-600 border-t-transparent rounded-full animate-spin mr-2"},null,-1)),v("span",Kv,"🔄 重試第 "+H(P.value)+" 次 (最大 "+H(x.value)+" 次)",1)])):vn("",!0)])):vn("",!0),d.value.length>0?(Ae(),Le("div",Hv,[(Ae(!0),Le(et,null,bl(d.value,(N,Y)=>(Ae(),Le("div",{key:Y,class:Be(["rounded-lg p-4 max-h-96 overflow-y-auto",N.type==="success"?"bg-green-50 border border-green-200 text-green-800":"",N.type==="error"?"bg-red-50 border border-red-200 text-red-800":"",N.type==="info"?"bg-blue-50 border border-blue-200 text-blue-800":"",N.type==="warning"?"bg-yellow-50 border border-yellow-200 text-yellow-800":""])},[N.isHtml?(Ae(),Le("div",{key:0,innerHTML:N.content},null,8,Bv)):(Ae(),Le("div",Wv,H(N.content),1))],2))),128))])):vn("",!0),v("div",qv,[z.value?(Ae(),Le("button",{key:0,onClick:dt,class:"bg-jade-green hover:bg-green-700 text-white font-medium py-2 px-4 rounded-md transition-colors duration-200"},H(j(t)("home.downloadMarkdown")),1)):vn("",!0)])])])],64)}}}),Gv=Vc(zv,[["__scopeId","data-v-1cd07606"]]),Xc=xf({history:of("/"),routes:[{path:"/",name:"home",component:Gv},{path:"/about",name:"about",component:()=>gn(()=>import("./AboutView-DydTxybh.js"),[])},{path:"/privacy",name:"privacy",component:()=>gn(()=>import("./PrivacyView-uB_A5Ekw.js"),__vite__mapDeps([0,1]))},{path:"/maintain",name:"maintain",component:()=>gn(()=>import("./MaintainView-XMgB491Z.js"),[])},{path:"/self-host",name:"self-host",component:()=>gn(()=>import("./SelfHostView-BmGQQkoH.js"),__vite__mapDeps([2,3]))},{path:"/guide/polis",name:"polis-guide",component:()=>gn(()=>import("./PolisGuideView-3LddHktY.js"),__vite__mapDeps([4,5,6]))},{path:"/guide/openrouter",name:"openrouter-guide",component:()=>gn(()=>import("./OpenRouterGuideView-C57piGgm.js"),__vite__mapDeps([7,8,5,6]))},{path:"/guide/sensemaker",name:"sensemaker-guide",component:()=>gn(()=>import("./SenseMakerGuideView-BodYyV-t.js"),__vite__mapDeps([9,8,6]))}]}),Yo=vp(gg);Yo.use(Xc);Yo.use(Mc);
88Xc.afterEach(e=>{const t=Mc.global.t,n=t("home.title"),r={home:n,about:`${t("about.title")} - ${n}`,privacy:`${t("privacy.privacyPolicy")} - ${n}`,maintain:`${t("maintain.pageTitle")} - ${n}`,"self-host":`${t("selfHost.title")} - ${n}`,"polis-guide":`${t("polisGuide.title")} - ${n}`,"openrouter-guide":`${t("openRouterGuide.title")} - ${n}`,"sensemaker-guide":`${t("sensemakerGuide.title")} - ${n}`}[e.name];r&&(document.title=r)});Yo.mount("#app");export{Vc as _,v as a,j as b,Le as c,Xt as d,Ve as e,oe as f,Oe as g,Ae as o,gl as r,H as t,Hn as u,$e as w};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.